📄 ui_playlist3.lst
字号:
\ 00E5 DD6E0A LD L,(IX+10)
\ 00E8 DD660B LD H,(IX+11)
\ 00EB E5 PUSH HL
\ 00EC FDE1 POP IY
98 int code;
99 char *tmpstrpt;
100 region_t tregion;
101 region_t sregion;
102 region_t kregion;//余下部分区域
103
104 tmpstrpt = str_pt;
\ 00EE 2A0000 LD HL,(str_pt)
\ 00F1 DD75F0 LD (IX-16),L
\ 00F4 DD74F1 LD (IX-15),H
105
106 //余下部分区域
107 kregion.x = scroll->x+scroll->width-step;
\ 00F7 FD7E02 LD A,(IY+2)
\ 00FA FD8600 ADD A,(IY+0)
\ 00FD DD9602 SUB (IX+2)
\ 0100 DD77F2 LD (IX-14),A
108 kregion.y = scroll->y;
\ 0103 FD4601 LD B,(IY+1)
\ 0106 DD70F3 LD (IX-13),B
109 kregion.width = step;
\ 0109 DD4602 LD B,(IX+2)
\ 010C DD70F4 LD (IX-12),B
110 kregion.height = scroll->height;
\ 010F FD4603 LD B,(IY+3)
\ 0112 DD70F5 LD (IX-11),B
111
112 //设定移动的源,目标区域
113 sregion.x = scroll->x+step;//暂时未考虑为负数的情况
\ 0115 FD7E00 LD A,(IY+0)
\ 0118 DD8602 ADD A,(IX+2)
\ 011B DD77F6 LD (IX-10),A
114 tregion.x = scroll->x;
\ 011E FD4600 LD B,(IY+0)
\ 0121 DD70FA LD (IX-6),B
115 tregion.y = sregion.y = scroll->y;
\ 0124 FD4601 LD B,(IY+1)
\ 0127 DD70F7 LD (IX-9),B
\ 012A DD70FB LD (IX-5),B
116 sregion.width = scroll->width-step;
\ 012D FD7E02 LD A,(IY+2)
\ 0130 DD9602 SUB (IX+2)
\ 0133 DD77F8 LD (IX-8),A
117 sregion.height = scroll->height;
\ 0136 FD4603 LD B,(IY+3)
\ 0139 DD70F9 LD (IX-7),B
118
119 //向左移step列
120 RegionCopy(&sregion, &tregion);
\ 013C 210C00 LD HL,12
\ 013F 39 ADD HL,SP
\ 0140 4D LD C,L
\ 0141 44 LD B,H
\ 0142 210800 LD HL,8
\ 0145 39 ADD HL,SP
\ 0146 EB EX DE,HL
\ 0147 CD0000 CALL LWRD RegionCopy
\ 014A ?0016:
121
122
123
124 test:
125 if (*str_pt == '\0')
\ 014A 2A0000 LD HL,(str_pt)
\ 014D AF XOR A
\ 014E B6 OR (HL)
\ 014F 200C JR NZ,?0018
\ 0151 ?0017:
126 {
127 tmpstrpt = str_pt = strhead_pt;
\ 0151 2A0000 LD HL,(strhead_pt)
\ 0154 220000 LD (str_pt),HL
\ 0157 DD75F0 LD (IX-16),L
\ 015A DD74F1 LD (IX-15),H
\ 015D ?0018:
128 }
129
130 //汉字和ASCII的不同处理
131 if ((*str_pt >= FirstSectionCode)&&(language!=1))
\ 015D 7E LD A,(HL)
\ 015E FEA1 CP 161
\ 0160 3819 JR C,?0020
\ 0162 DD4604 LD B,(IX+4)
\ 0165 05 DEC B
\ 0166 2813 JR Z,?0020
\ 0168 ?0022:
\ 0168 ?0021:
\ 0168 ?0019:
132 {//汉字
133 code = *(int *)str_pt;
\ 0168 46 LD B,(HL)
\ 0169 DD70FE LD (IX-2),B
\ 016C 23 INC HL
\ 016D 66 LD H,(HL)
\ 016E DD74FF LD (IX-1),H
134 tmpstrpt++;
\ 0171 DD34F0 INC (IX-16)
\ 0174 200E JR NZ,?0023
\ 0176 DD34F1 INC (IX-15)
135 }
136 else
\ 0179 1809 JR ?0023
\ 017B ?0020:
137 {//ASCII
138 code = *str_pt;
\ 017B 4E LD C,(HL)
\ 017C DD71FE LD (IX-2),C
\ 017F 0600 LD B,0
\ 0181 DD70FF LD (IX-1),B
\ 0184 ?0023:
139 }
140 tmpstrpt++;
\ 0184 DD34F0 INC (IX-16)
\ 0187 2003 JR NZ,?0041
\ 0189 DD34F1 INC (IX-15)
\ 018C ?0041:
141
142 if (!CharOutRect(code, &kregion, scroll_cnt))
\ 018C 3A0000 LD A,(scroll_cnt)
\ 018F 4F LD C,A
\ 0190 C5 PUSH BC
\ 0191 210600 LD HL,6
\ 0194 39 ADD HL,SP
\ 0195 4D LD C,L
\ 0196 44 LD B,H
\ 0197 DD5EFE LD E,(IX-2)
\ 019A DD56FF LD D,(IX-1)
\ 019D CD0000 CALL LWRD CharOutRect
\ 01A0 E1 POP HL
\ 01A1 B7 OR A
\ 01A2 200E JR NZ,?0025
\ 01A4 ?0024:
143 {
144 //strhead_pt = str_pt;
145 str_pt = tmpstrpt;
\ 01A4 DD6EF0 LD L,(IX-16)
\ 01A7 DD66F1 LD H,(IX-15)
\ 01AA 220000 LD (str_pt),HL
146 scroll_cnt = 0;
\ 01AD 320000 LD (scroll_cnt),A
147 goto test;
\ 01B0 1898 JR ?0016
\ 01B2 ?0025:
148 }
149 scroll_cnt += step;//未支持负数
\ 01B2 3A0000 LD A,(scroll_cnt)
\ 01B5 DD8602 ADD A,(IX+2)
\ 01B8 320000 LD (scroll_cnt),A
150
151 }
\ 01BB FDE1 POP IY
\ 01BD C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 01C0 Count_playlist:
152
153 int Count_playlist(char *str,char language,region_t *scroll) //统计字数
154 {
\ 01C0 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 01C3 0000 DEFW 0
\ 01C5 FDE5 PUSH IY
155 int n=0;
156 int m=0;
\ 01C7 110000 LD DE,0
\ 01CA FD210000 LD IY,0
\ 01CE ?0027:
157 while(*str!=0)
\ 01CE DD6E02 LD L,(IX+2)
\ 01D1 DD6603 LD H,(IX+3)
\ 01D4 AF XOR A
\ 01D5 B6 OR (HL)
\ 01D6 2841 JR Z,?0026
\ 01D8 ?0028:
158 {
159 if((*str >= FirstSectionCode)&&(language!=1))
\ 01D8 7E LD A,(HL)
\ 01D9 FEA1 CP 161
\ 01DB 3824 JR C,?0030
\ 01DD DD4604 LD B,(IX+4)
\ 01E0 05 DEC B
\ 01E1 281E JR Z,?0030
\ 01E3 ?0032:
\ 01E3 ?0031:
\ 01E3 ?0029:
160 {
161 if(m+16>scroll->width)break;
\ 01E3 211000 LD HL,16
\ 01E6 CD1F02 CALL LWRD ?0049
\ 01E9 382E JR C,?0026
\ 01EB ?0033:
\ 01EB ?0034:
162 *str++;
\ 01EB DD3402 INC (IX+2)
\ 01EE 2003 JR NZ,?0042
\ 01F0 DD3403 INC (IX+3)
\ 01F3 ?0042:
163 *str++;
\ 01F3 DD3402 INC (IX+2)
\ 01F6 2003 JR NZ,?0043
\ 01F8 DD3403 INC (IX+3)
\ 01FB ?0043:
164 n++;
\ 01FB 13 INC DE
165 m=m+16;
\ 01FC 011000 LD BC,16
\ 01FF 1814 JR ?0045
166 }
167 else //采用大字体8*16
\ 0201 ?0030:
168 {
169 if(m+8>scroll->width)break;
\ 0201 210800 LD HL,8
\ 0204 CD1F02 CALL LWRD ?0049
\ 0207 3810 JR C,?0026
\ 0209 ?0036:
\ 0209 ?0037:
170 *str++;
\ 0209 DD3402 INC (IX+2)
\ 020C 2003 JR NZ,?0044
\ 020E DD3403 INC (IX+3)
\ 0211 ?0044:
171 n++;
\ 0211 13 INC DE
172 m=m+8;
\ 0212 010800 LD BC,8
\ 0215 ?0045:
\ 0215 FD09 ADD IY,BC
\ 0217 ?0035:
\ 0217 18B5 JR ?0027
\ 0219 ?0026:
173 }
174 }
175 return n;
\ 0219 EB EX DE,HL
176 }
\ 021A FDE1 POP IY
\ 021C C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 021F ?0049:
\ 021F FDE5 PUSH IY
\ 0221 C1 POP BC
\ 0222 09 ADD HL,BC
\ 0223 4D LD C,L
\ 0224 44 LD B,H
\ 0225 DD6E0A LD L,(IX+10)
\ 0228 DD660B LD H,(IX+11)
\ 022B 23 INC HL
\ 022C 23 INC HL
\ 022D 6E LD L,(HL)
\ 022E 2600 LD H,0
\ 0230 C30000 JP LWRD ?SS_CMP_L02
177
\ 0233 END
Errors: none
Warnings: none
Code size: 563
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -