ui_scroll_string.lst
来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 628 行 · 第 1/2 页
LST
628 行
112 sregion.height = scroll->height;
\ 013D FD4603 LD B,(IY+3)
\ 0140 DD70F9 LD (IX-7),B
113
114 //向左移step列
115 RegionCopy(&sregion, &tregion);
\ 0143 210C00 LD HL,12
\ 0146 39 ADD HL,SP
\ 0147 4D LD C,L
\ 0148 44 LD B,H
\ 0149 210800 LD HL,8
\ 014C 39 ADD HL,SP
\ 014D EB EX DE,HL
\ 014E CD0000 CALL LWRD RegionCopy
\ 0151 ?0016:
116
117
118
119 test:
120 if (*str_pt == '\0')
\ 0151 2A0000 LD HL,(str_pt)
\ 0154 AF XOR A
\ 0155 B6 OR (HL)
\ 0156 200C JR NZ,?0018
\ 0158 ?0017:
121 {
122 tmpstrpt = str_pt = strhead_pt;
\ 0158 2A0000 LD HL,(strhead_pt)
\ 015B 220000 LD (str_pt),HL
\ 015E DD75F0 LD (IX-16),L
\ 0161 DD74F1 LD (IX-15),H
\ 0164 ?0018:
123 }
124
125 //汉字和ASCII的不同处理
126 if ((*str_pt >= FirstSectionCode)&&(language!=1))
\ 0164 7E LD A,(HL)
\ 0165 FEA1 CP 161
\ 0167 3819 JR C,?0020
\ 0169 DD4604 LD B,(IX+4)
\ 016C 05 DEC B
\ 016D 2813 JR Z,?0020
\ 016F ?0022:
\ 016F ?0021:
\ 016F ?0019:
127 {//汉字
128 code = *(int *)str_pt;
\ 016F 46 LD B,(HL)
\ 0170 DD70FE LD (IX-2),B
\ 0173 23 INC HL
\ 0174 66 LD H,(HL)
\ 0175 DD74FF LD (IX-1),H
129 tmpstrpt++;
\ 0178 DD34F0 INC (IX-16)
\ 017B 200E JR NZ,?0023
\ 017D DD34F1 INC (IX-15)
130 }
131 else
\ 0180 1809 JR ?0023
\ 0182 ?0020:
132 {//ASCII
133 code = *str_pt;
\ 0182 4E LD C,(HL)
\ 0183 DD71FE LD (IX-2),C
\ 0186 0600 LD B,0
\ 0188 DD70FF LD (IX-1),B
\ 018B ?0023:
134 }
135 tmpstrpt++;
\ 018B DD34F0 INC (IX-16)
\ 018E 2003 JR NZ,?0053
\ 0190 DD34F1 INC (IX-15)
\ 0193 ?0053:
136
137 if (!CharOutRect(code, *(str_pt+1), &kregion, scroll_cnt))
\ 0193 3A0000 LD A,(scroll_cnt)
\ 0196 4F LD C,A
\ 0197 C5 PUSH BC
\ 0198 210600 LD HL,6
\ 019B 39 ADD HL,SP
\ 019C E5 PUSH HL
\ 019D 2A0000 LD HL,(str_pt)
\ 01A0 23 INC HL
\ 01A1 4E LD C,(HL)
\ 01A2 0600 LD B,0
\ 01A4 DD5EFE LD E,(IX-2)
\ 01A7 DD56FF LD D,(IX-1)
\ 01AA CD0000 CALL LWRD CharOutRect
\ 01AD E1 POP HL
\ 01AE E1 POP HL
\ 01AF B7 OR A
\ 01B0 200E JR NZ,?0025
\ 01B2 ?0024:
138 {
139 //strhead_pt = str_pt;
140 str_pt = tmpstrpt;
\ 01B2 DD6EF0 LD L,(IX-16)
\ 01B5 DD66F1 LD H,(IX-15)
\ 01B8 220000 LD (str_pt),HL
141 scroll_cnt = 0;
\ 01BB 320000 LD (scroll_cnt),A
142 goto test;
\ 01BE 1891 JR ?0016
\ 01C0 ?0025:
143 }
144 scroll_cnt += step;//未支持负数
\ 01C0 3A0000 LD A,(scroll_cnt)
\ 01C3 DD8602 ADD A,(IX+2)
\ 01C6 320000 LD (scroll_cnt),A
145
146 }
\ 01C9 FDE1 POP IY
\ 01CB C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 01CE CountString:
147
148 int CountString(char *str,char language,region_t *scroll) //统计字数
149 {
\ 01CE CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 01D1 0000 DEFW 0
\ 01D3 FDE5 PUSH IY
150 int n=0;
151 int m=0;
\ 01D5 110000 LD DE,0
\ 01D8 FD210000 LD IY,0
\ 01DC ?0027:
152 while(*str!=0)
\ 01DC DD6E02 LD L,(IX+2)
\ 01DF DD6603 LD H,(IX+3)
\ 01E2 AF XOR A
\ 01E3 B6 OR (HL)
\ 01E4 2841 JR Z,?0026
\ 01E6 ?0028:
153 {
154 if((*str >= FirstSectionCode)&&(language!=1))
\ 01E6 7E LD A,(HL)
\ 01E7 FEA1 CP 161
\ 01E9 3824 JR C,?0030
\ 01EB DD4604 LD B,(IX+4)
\ 01EE 05 DEC B
\ 01EF 281E JR Z,?0030
\ 01F1 ?0032:
\ 01F1 ?0031:
\ 01F1 ?0029:
155 {
156 if(m+16 > scroll->width)break;
\ 01F1 211000 LD HL,16
\ 01F4 CD2D02 CALL LWRD ?0064
\ 01F7 382E JR C,?0026
\ 01F9 ?0033:
\ 01F9 ?0034:
157 *str++;
\ 01F9 DD3402 INC (IX+2)
\ 01FC 2003 JR NZ,?0054
\ 01FE DD3403 INC (IX+3)
\ 0201 ?0054:
158 *str++;
\ 0201 DD3402 INC (IX+2)
\ 0204 2003 JR NZ,?0055
\ 0206 DD3403 INC (IX+3)
\ 0209 ?0055:
159 n++;
\ 0209 13 INC DE
160 m=m+16;
\ 020A 011000 LD BC,16
\ 020D 1814 JR ?0057
161 }
162 else
\ 020F ?0030:
163 {
164 if(m+8>scroll->width)break;
\ 020F 210800 LD HL,8
\ 0212 CD2D02 CALL LWRD ?0064
\ 0215 3810 JR C,?0026
\ 0217 ?0036:
\ 0217 ?0037:
165 *str++;
\ 0217 DD3402 INC (IX+2)
\ 021A 2003 JR NZ,?0056
\ 021C DD3403 INC (IX+3)
\ 021F ?0056:
166 n++;
\ 021F 13 INC DE
167 m=m+8;
\ 0220 010800 LD BC,8
\ 0223 ?0057:
\ 0223 FD09 ADD IY,BC
\ 0225 ?0035:
\ 0225 18B5 JR ?0027
\ 0227 ?0026:
168 }
169 }
170 return n;
\ 0227 EB EX DE,HL
171 }
\ 0228 FDE1 POP IY
\ 022A C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 022D ?0064:
\ 022D FDE5 PUSH IY
\ 022F C1 POP BC
\ 0230 09 ADD HL,BC
\ 0231 4D LD C,L
\ 0232 44 LD B,H
\ 0233 DD6E0A LD L,(IX+10)
\ 0236 DD660B LD H,(IX+11)
\ 0239 23 INC HL
\ 023A 23 INC HL
\ 023B 6E LD L,(HL)
\ 023C 2600 LD H,0
\ 023E C30000 JP LWRD ?SS_CMP_L02
\ 0241 Count_Byte:
172
173 BYTE Count_Byte(char *str,char language) //统计字数 zxs added 2007.03.26
174 {
\ 0241 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0244 FEFF DEFW 65534
\ 0246 DD5E02 LD E,(IX+2)
\ 0249 DD5603 LD D,(IX+3)
175 BYTE n=0;
176 BYTE m=0;
\ 024C DD36FF00 LD (IX-1),0
\ 0250 DD36FE00 LD (IX-2),0
\ 0254 ?0039:
177 while(*str!=0)
\ 0254 6B LD L,E
\ 0255 62 LD H,D
\ 0256 AF XOR A
\ 0257 B6 OR (HL)
\ 0258 284B JR Z,?0038
\ 025A ?0040:
178 {
179 if((*str >= FirstSectionCode)&&(language!=1))
\ 025A 7E LD A,(HL)
\ 025B FEA1 CP 161
\ 025D 3825 JR C,?0042
\ 025F DD4604 LD B,(IX+4)
\ 0262 05 DEC B
\ 0263 281F JR Z,?0042
\ 0265 ?0044:
\ 0265 ?0043:
\ 0265 ?0041:
180 {
181 if(m+16 > DISPLAYWIDTH)break;
\ 0265 DD4EFE LD C,(IX-2)
\ 0268 0600 LD B,0
\ 026A 211000 LD HL,16
\ 026D 09 ADD HL,BC
\ 026E 4D LD C,L
\ 026F 44 LD B,H
\ 0270 218000 LD HL,128
\ 0273 CD0000 CALL LWRD ?SS_CMP_L02
\ 0276 382D JR C,?0038
\ 0278 ?0045:
\ 0278 ?0046:
182 *str++;
\ 0278 13 INC DE
183 *str++;
\ 0279 13 INC DE
184 n++;
\ 027A DD34FF INC (IX-1)
185 m=m+16;
\ 027D DD7EFE LD A,(IX-2)
\ 0280 C610 ADD A,16
\ 0282 181C JR ?0061
186 }
187 else
\ 0284 ?0042:
188 {
189 if(m+8>DISPLAYWIDTH)break;
\ 0284 DD4EFE LD C,(IX-2)
\ 0287 0600 LD B,0
\ 0289 210800 LD HL,8
\ 028C 09 ADD HL,BC
\ 028D 4D LD C,L
\ 028E 44 LD B,H
\ 028F 218000 LD HL,128
\ 0292 CD0000 CALL LWRD ?SS_CMP_L02
\ 0295 380E JR C,?0038
\ 0297 ?0048:
\ 0297 ?0049:
190 *str++;
\ 0297 13 INC DE
191 n++;
\ 0298 DD34FF INC (IX-1)
192 m=m+8;
\ 029B DD7EFE LD A,(IX-2)
\ 029E C608 ADD A,8
\ 02A0 ?0061:
\ 02A0 DD77FE LD (IX-2),A
\ 02A3 ?0047:
\ 02A3 18AF JR ?0039
\ 02A5 ?0038:
193 }
194 }
195 return n;
\ 02A5 DD6EFF LD L,(IX-1)
196 }
\ 02A8 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
197
\ 0000 RSEG UDATA0
\ 0000 region_scroll:
\ 0004 DEFS 4
\ 0004 scroll_buf:
\ 0024 DEFS 32
\ 0024 ScrollFlag:
\ 0025 DEFS 1
\ 0025 END
Errors: none
Warnings: none
Code size: 683
Constant size: 0
Static variable size: Data(37) Iram(0)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?