📄 ui_playlist3.lst
字号:
96 */
97 void HoriScroll_PlayList(signed char step,char language,region_t *scroll)
98 {
\ 00F7 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 00FA F0FF DEFW 65520
\ 00FC FDE5 PUSH IY
\ 00FE DD6E0A LD L,(IX+10)
\ 0101 DD660B LD H,(IX+11)
\ 0104 E5 PUSH HL
\ 0105 FDE1 POP IY
99 int code;
100 char *tmpstrpt;
101 region_t tregion;
102 region_t sregion;
103 region_t kregion;//余下部分区域
104
105 tmpstrpt = str_pt;
\ 0107 2A0000 LD HL,(str_pt)
\ 010A DD75F0 LD (IX-16),L
\ 010D DD74F1 LD (IX-15),H
106
107 //余下部分区域
108 kregion.x = scroll->x+scroll->width-step;
\ 0110 FD7E02 LD A,(IY+2)
\ 0113 FD8600 ADD A,(IY+0)
\ 0116 DD9602 SUB (IX+2)
\ 0119 DD77F2 LD (IX-14),A
109 kregion.y = scroll->y;
\ 011C FD4601 LD B,(IY+1)
\ 011F DD70F3 LD (IX-13),B
110 kregion.width = step;
\ 0122 DD4602 LD B,(IX+2)
\ 0125 DD70F4 LD (IX-12),B
111 kregion.height = scroll->height;
\ 0128 FD4603 LD B,(IY+3)
\ 012B DD70F5 LD (IX-11),B
112
113 //设定移动的源,目标区域
114 sregion.x = scroll->x+step;//暂时未考虑为负数的情况
\ 012E FD7E00 LD A,(IY+0)
\ 0131 DD8602 ADD A,(IX+2)
\ 0134 DD77F6 LD (IX-10),A
115 tregion.x = scroll->x;
\ 0137 FD4600 LD B,(IY+0)
\ 013A DD70FA LD (IX-6),B
116 tregion.y = sregion.y = scroll->y;
\ 013D FD4601 LD B,(IY+1)
\ 0140 DD70F7 LD (IX-9),B
\ 0143 DD70FB LD (IX-5),B
117 sregion.width = scroll->width-step;
\ 0146 FD7E02 LD A,(IY+2)
\ 0149 DD9602 SUB (IX+2)
\ 014C DD77F8 LD (IX-8),A
118 sregion.height = scroll->height;
\ 014F FD4603 LD B,(IY+3)
\ 0152 DD70F9 LD (IX-7),B
119
120 //向左移step列
121 RegionCopy(&sregion, &tregion);
\ 0155 210C00 LD HL,12
\ 0158 39 ADD HL,SP
\ 0159 4D LD C,L
\ 015A 44 LD B,H
\ 015B 210800 LD HL,8
\ 015E 39 ADD HL,SP
\ 015F EB EX DE,HL
\ 0160 CD0000 CALL LWRD RegionCopy
\ 0163 ?0016:
122
123
124
125 test:
126 if (*str_pt == '\0')
\ 0163 2A0000 LD HL,(str_pt)
\ 0166 AF XOR A
\ 0167 B6 OR (HL)
\ 0168 200C JR NZ,?0018
\ 016A ?0017:
127 {
128 tmpstrpt = str_pt = strhead_pt;
\ 016A 2A0000 LD HL,(strhead_pt)
\ 016D 220000 LD (str_pt),HL
\ 0170 DD75F0 LD (IX-16),L
\ 0173 DD74F1 LD (IX-15),H
\ 0176 ?0018:
129 }
130
131 //汉字和ASCII的不同处理
132 if ((*str_pt >= FirstSectionCode)&&(language!=1))
\ 0176 7E LD A,(HL)
\ 0177 FEA1 CP 161
\ 0179 3819 JR C,?0020
\ 017B DD4604 LD B,(IX+4)
\ 017E 05 DEC B
\ 017F 2813 JR Z,?0020
\ 0181 ?0022:
\ 0181 ?0021:
\ 0181 ?0019:
133 {//汉字
134 code = *(int *)str_pt;
\ 0181 46 LD B,(HL)
\ 0182 DD70FE LD (IX-2),B
\ 0185 23 INC HL
\ 0186 66 LD H,(HL)
\ 0187 DD74FF LD (IX-1),H
135 tmpstrpt++;
\ 018A DD34F0 INC (IX-16)
\ 018D 200E JR NZ,?0023
\ 018F DD34F1 INC (IX-15)
136 }
137 else
\ 0192 1809 JR ?0023
\ 0194 ?0020:
138 {//ASCII
139 code = *str_pt;
\ 0194 4E LD C,(HL)
\ 0195 DD71FE LD (IX-2),C
\ 0198 0600 LD B,0
\ 019A DD70FF LD (IX-1),B
\ 019D ?0023:
140 }
141 tmpstrpt++;
\ 019D DD34F0 INC (IX-16)
\ 01A0 2003 JR NZ,?0041
\ 01A2 DD34F1 INC (IX-15)
\ 01A5 ?0041:
142
143 if (!CharOutRect(code, *(str_pt+1), &kregion, scroll_cnt))
\ 01A5 3A0000 LD A,(scroll_cnt)
\ 01A8 4F LD C,A
\ 01A9 C5 PUSH BC
\ 01AA 210600 LD HL,6
\ 01AD 39 ADD HL,SP
\ 01AE E5 PUSH HL
\ 01AF 2A0000 LD HL,(str_pt)
\ 01B2 23 INC HL
\ 01B3 4E LD C,(HL)
\ 01B4 0600 LD B,0
\ 01B6 DD5EFE LD E,(IX-2)
\ 01B9 DD56FF LD D,(IX-1)
\ 01BC CD0000 CALL LWRD CharOutRect
\ 01BF E1 POP HL
\ 01C0 E1 POP HL
\ 01C1 B7 OR A
\ 01C2 200E JR NZ,?0025
\ 01C4 ?0024:
144 {
145 //strhead_pt = str_pt;
146 str_pt = tmpstrpt;
\ 01C4 DD6EF0 LD L,(IX-16)
\ 01C7 DD66F1 LD H,(IX-15)
\ 01CA 220000 LD (str_pt),HL
147 scroll_cnt = 0;
\ 01CD 320000 LD (scroll_cnt),A
148 goto test;
\ 01D0 1891 JR ?0016
\ 01D2 ?0025:
149 }
150 scroll_cnt += step;//未支持负数
\ 01D2 3A0000 LD A,(scroll_cnt)
\ 01D5 DD8602 ADD A,(IX+2)
\ 01D8 320000 LD (scroll_cnt),A
151
152 }
\ 01DB FDE1 POP IY
\ 01DD C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 01E0 Count_playlist:
153
154 int Count_playlist(char *str,char language,region_t *scroll) //统计字数
155 {
\ 01E0 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 01E3 0000 DEFW 0
\ 01E5 FDE5 PUSH IY
156 int n=0;
157 int m=0;
\ 01E7 110000 LD DE,0
\ 01EA FD210000 LD IY,0
\ 01EE ?0027:
158 while(*str!=0)
\ 01EE DD6E02 LD L,(IX+2)
\ 01F1 DD6603 LD H,(IX+3)
\ 01F4 AF XOR A
\ 01F5 B6 OR (HL)
\ 01F6 2841 JR Z,?0026
\ 01F8 ?0028:
159 {
160 if((*str >= FirstSectionCode)&&(language!=1))
\ 01F8 7E LD A,(HL)
\ 01F9 FEA1 CP 161
\ 01FB 3824 JR C,?0030
\ 01FD DD4604 LD B,(IX+4)
\ 0200 05 DEC B
\ 0201 281E JR Z,?0030
\ 0203 ?0032:
\ 0203 ?0031:
\ 0203 ?0029:
161 {
162 if(m+16>scroll->width)break;
\ 0203 211000 LD HL,16
\ 0206 CD3F02 CALL LWRD ?0050
\ 0209 382E JR C,?0026
\ 020B ?0033:
\ 020B ?0034:
163 *str++;
\ 020B DD3402 INC (IX+2)
\ 020E 2003 JR NZ,?0042
\ 0210 DD3403 INC (IX+3)
\ 0213 ?0042:
164 *str++;
\ 0213 DD3402 INC (IX+2)
\ 0216 2003 JR NZ,?0043
\ 0218 DD3403 INC (IX+3)
\ 021B ?0043:
165 n++;
\ 021B 13 INC DE
166 m=m+16;
\ 021C 011000 LD BC,16
\ 021F 1814 JR ?0045
167 }
168 else //采用大字体8*16
\ 0221 ?0030:
169 {
170 if(m+8>scroll->width)break;
\ 0221 210800 LD HL,8
\ 0224 CD3F02 CALL LWRD ?0050
\ 0227 3810 JR C,?0026
\ 0229 ?0036:
\ 0229 ?0037:
171 *str++;
\ 0229 DD3402 INC (IX+2)
\ 022C 2003 JR NZ,?0044
\ 022E DD3403 INC (IX+3)
\ 0231 ?0044:
172 n++;
\ 0231 13 INC DE
173 m=m+8;
\ 0232 010800 LD BC,8
\ 0235 ?0045:
\ 0235 FD09 ADD IY,BC
\ 0237 ?0035:
\ 0237 18B5 JR ?0027
\ 0239 ?0026:
174 }
175 }
176 return n;
\ 0239 EB EX DE,HL
177 }
\ 023A FDE1 POP IY
\ 023C C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 023F ?0050:
\ 023F FDE5 PUSH IY
\ 0241 C1 POP BC
\ 0242 09 ADD HL,BC
\ 0243 4D LD C,L
\ 0244 44 LD B,H
\ 0245 DD6E0A LD L,(IX+10)
\ 0248 DD660B LD H,(IX+11)
\ 024B 23 INC HL
\ 024C 23 INC HL
\ 024D 6E LD L,(HL)
\ 024E 2600 LD H,0
\ 0250 C30000 JP LWRD ?SS_CMP_L02
178
\ 0253 END
Errors: none
Warnings: none
Code size: 595
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -