📄 ui_scroll.lst
字号:
119 code = *(int *)str_pt;
\ 00EB 46 LD B,(HL)
\ 00EC 23 INC HL
\ 00ED 66 LD H,(HL)
\ 00EE 68 LD L,B
\ 00EF E5 PUSH HL
\ 00F0 FDE1 POP IY
120 kregion.width = 16 - scroll_cnt;
\ 00F2 3A0000 LD A,(scroll_cnt)
\ 00F5 47 LD B,A
\ 00F6 3E10 LD A,16
\ 00F8 90 SUB B
\ 00F9 DD77F6 LD (IX-10),A
121 tmpstrpt++;
\ 00FC DD34FA INC (IX-6)
\ 00FF 2015 JR NZ,?0031
\ 0101 ?0070:
\ 0101 DD34FB INC (IX-5)
122 }
123 else
\ 0104 1810 JR ?0031
\ 0106 ?0030:
124 {//ASCII
125 code = *str_pt;
\ 0106 4E LD C,(HL)
\ 0107 0600 LD B,0
\ 0109 C5 PUSH BC
\ 010A FDE1 POP IY
126 kregion.width = 8 - scroll_cnt;
\ 010C 3A0000 LD A,(scroll_cnt)
\ 010F 47 LD B,A
\ 0110 3E08 LD A,8
\ 0112 90 SUB B
\ 0113 DD77F6 LD (IX-10),A
\ 0116 ?0031:
\ 0116 ?0028:
\ 0116 ?0022:
127 }
128
129 tmpstrpt++;
\ 0116 DD34FA INC (IX-6)
\ 0119 2003 JR NZ,?0066
\ 011B DD34FB INC (IX-5)
\ 011E ?0066:
130
131 kregion.x = scrollregionx_def;
\ 011E DD36F430 LD (IX-12),48
132 kregion.y = scrollregiony_def;
\ 0122 DD36F52D LD (IX-11),45
133 kregion.height = scrollregionh_def;
\ 0126 DD36F710 LD (IX-9),16
134
135 if(!CharOutRect(code, *(str_pt+1), &kregion, scroll_cnt))
\ 012A 48 LD C,B
\ 012B C5 PUSH BC
\ 012C 210200 LD HL,2
\ 012F 39 ADD HL,SP
\ 0130 E5 PUSH HL
\ 0131 2A0000 LD HL,(str_pt)
\ 0134 23 INC HL
\ 0135 4E LD C,(HL)
\ 0136 0600 LD B,0
\ 0138 FDE5 PUSH IY
\ 013A D1 POP DE
\ 013B CD0000 CALL LWRD CharOutRect
\ 013E E1 POP HL
\ 013F E1 POP HL
\ 0140 B7 OR A
\ 0141 200E JR NZ,?0033
\ 0143 ?0032:
136 {
137 str_pt = tmpstrpt;
\ 0143 DD6EFA LD L,(IX-6)
\ 0146 DD66FB LD H,(IX-5)
\ 0149 220000 LD (str_pt),HL
138 scroll_cnt = 0;
\ 014C 320000 LD (scroll_cnt),A
139 }
140 else
\ 014F 1874 JR ?0034
\ 0151 ?0033:
141 {
142 if(language == 14)
\ 0151 DD7EFE LD A,(IX-2)
\ 0154 FE0E CP 14
\ 0156 2069 JR NZ,?0037
\ 0158 ?0035:
143 {
144 tmpstrpt1 = str_pt;
\ 0158 2A0000 LD HL,(str_pt)
\ 015B DD75F8 LD (IX-8),L
\ 015E DD74F9 LD (IX-7),H
\ 0161 ?0038:
145 while(1)
146 {
147 tmpstrpt1 ++;
\ 0161 DD34F8 INC (IX-8)
\ 0164 2003 JR NZ,?0067
\ 0166 DD34F9 INC (IX-7)
\ 0169 ?0067:
148 if(code == 0xd1 || (code >=0xd4 && code<0xdb) ||(code >=0xe7 && code<0xef))
\ 0169 FDE5 PUSH IY
\ 016B E1 POP HL
\ 016C 3ED1 LD A,209
\ 016E AD XOR L
\ 016F B4 OR H
\ 0170 2831 JR Z,?0047
\ 0172 01D480 LD BC,32980
\ 0175 78 LD A,B
\ 0176 AC XOR H
\ 0177 67 LD H,A
\ 0178 ED42 SBC HL,BC
\ 017A 380D JR C,?0045
\ 017C 01DB80 LD BC,32987
\ 017F FDE5 PUSH IY
\ 0181 E1 POP HL
\ 0182 78 LD A,B
\ 0183 AC XOR H
\ 0184 67 LD H,A
\ 0185 ED42 SBC HL,BC
\ 0187 381A JR C,?0047
\ 0189 ?0045:
\ 0189 ?0044:
\ 0189 01E780 LD BC,32999
\ 018C FDE5 PUSH IY
\ 018E E1 POP HL
\ 018F 78 LD A,B
\ 0190 AC XOR H
\ 0191 67 LD H,A
\ 0192 ED42 SBC HL,BC
\ 0194 382B JR C,?0037
\ 0196 01EF80 LD BC,33007
\ 0199 FDE5 PUSH IY
\ 019B E1 POP HL
\ 019C 78 LD A,B
\ 019D AC XOR H
\ 019E 67 LD H,A
\ 019F ED42 SBC HL,BC
\ 01A1 301E JR NC,?0037
\ 01A3 ?0047:
\ 01A3 ?0046:
\ 01A3 ?0042:
\ 01A3 ?0043:
\ 01A3 ?0040:
149 CharOutRect(*tmpstrpt1, *(tmpstrpt1+1), &kregion, scroll_cnt);
\ 01A3 3A0000 LD A,(scroll_cnt)
\ 01A6 4F LD C,A
\ 01A7 C5 PUSH BC
\ 01A8 210200 LD HL,2
\ 01AB 39 ADD HL,SP
\ 01AC E5 PUSH HL
\ 01AD DD6EF8 LD L,(IX-8)
\ 01B0 DD66F9 LD H,(IX-7)
\ 01B3 23 INC HL
\ 01B4 4E LD C,(HL)
\ 01B5 0600 LD B,0
\ 01B7 50 LD D,B
\ 01B8 2B DEC HL
\ 01B9 5E LD E,(HL)
\ 01BA CD0000 CALL LWRD CharOutRect
\ 01BD E1 POP HL
\ 01BE E1 POP HL
150 else break;
\ 01BF 18A0 JR ?0038
\ 01C1 ?0041:
\ 01C1 ?0048:
151 }
152 }
\ 01C1 ?0037:
\ 01C1 ?0036:
153
154 scroll_cnt++;
\ 01C1 210000 LD HL,scroll_cnt
\ 01C4 34 INC (HL)
\ 01C5 ?0034:
155 }
156
157 SetTextPos(kregion.width+kregion.x, scrollregiony_def);
\ 01C5 0E2D LD C,45
\ 01C7 DD7EF4 LD A,(IX-12)
\ 01CA DD86F6 ADD A,(IX-10)
\ 01CD 5F LD E,A
\ 01CE CD0000 CALL LWRD SetTextPos
158 tmpstrpt1 = PutS(tmpstrpt, -1);
\ 01D1 0EFF LD C,255
\ 01D3 DD5EFA LD E,(IX-6)
\ 01D6 DD56FB LD D,(IX-5)
\ 01D9 CD0000 CALL LWRD PutS
\ 01DC DD75F8 LD (IX-8),L
\ 01DF DD74F9 LD (IX-7),H
159
160 if (GetOutPutErr() == RESULT_PUTCHAR_X_ERR)
\ 01E2 CD0000 CALL LWRD GetOutPutErr
\ 01E5 3D DEC A
\ 01E6 2824 JR Z,?0069
\ 01E8 ?0049:
161 {//x超限
162
163 GetTextPos(&kregion.x, &kregion.y);
164
165 kregion.width = scrollregionw_def+scrollregionx_def - kregion.x;
166 kregion.height = scrollregionh_def;
167
168 code = ReadCode(tmpstrpt1,language);
169
170 //输出最后一个字
171 CharOutRect(code, *(tmpstrpt1+1), &kregion, 0);
172 /*
173 result = CharOutRect(code, *(tmpstrpt1+1), &kregion, 0);
174 if (!result)
175 {
176 ///-return;
177 }
178 */
179 }
180 else
\ 01E8 ?0050:
181 {
182 GetTextPos(&kregion.x, &kregion.y);
\ 01E8 210000 LD HL,0
\ 01EB 39 ADD HL,SP
\ 01EC 010100 LD BC,1
\ 01EF 09 ADD HL,BC
\ 01F0 4D LD C,L
\ 01F1 44 LD B,H
\ 01F2 2B DEC HL
\ 01F3 EB EX DE,HL
\ 01F4 CD0000 CALL LWRD GetTextPos
183 tmpstrpt1 = PutS(strhead_pt, -1);
\ 01F7 0EFF LD C,255
\ 01F9 ED5B0000 LD DE,(strhead_pt)
\ 01FD CD0000 CALL LWRD PutS
\ 0200 DD75F8 LD (IX-8),L
\ 0203 DD74F9 LD (IX-7),H
184 if (GetOutPutErr() == RESULT_PUTCHAR_X_ERR)
\ 0206 CD0000 CALL LWRD GetOutPutErr
\ 0209 3D DEC A
\ 020A 2049 JR NZ,?0053
\ 020C ?0052:
185 {//x超限
186
187 GetTextPos(&kregion.x, &kregion.y);
\ 020C ?0069:
\ 020C 210000 LD HL,0
\ 020F 39 ADD HL,SP
\ 0210 010100 LD BC,1
\ 0213 09 ADD HL,BC
\ 0214 4D LD C,L
\ 0215 44 LD B,H
\ 0216 2B DEC HL
\ 0217 EB EX DE,HL
\ 0218 CD0000 CALL LWRD GetTextPos
188
189 kregion.width = scrollregionw_def+scrollregionx_def - kregion.x;
\ 021B 3EB0 LD A,176
\ 021D DD96F4 SUB (IX-12)
\ 0220 DD77F6 LD (IX-10),A
190 kregion.height = scrollregionh_def;
\ 0223 DD36F710 LD (IX-9),16
191 //汉字和ASCII的不同处理
192
193 code = ReadCode(tmpstrpt1,language);
\ 0227 DD4EFE LD C,(IX-2)
\ 022A DD5EF8 LD E,(IX-8)
\ 022D DD56F9 LD D,(IX-7)
\ 0230 3E00 LD A,BYTE3 ReadCode
\ 0232 214F00 LD HL,LWRD ReadCode
\ 0235 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0238 E5 PUSH HL
\ 0239 FDE1 POP IY
194
195 //输出最后一个字
196 CharOutRect(code, *(tmpstrpt1+1), &kregion, 0);
\ 023B 0E00 LD C,0
\ 023D C5 PUSH BC
\ 023E 210200 LD HL,2
\ 0241 39 ADD HL,SP
\ 0242 E5 PUSH HL
\ 0243 DD6EF8 LD L,(IX-8)
\ 0246 DD66F9 LD H,(IX-7)
\ 0249 23 INC HL
\ 024A 4E LD C,(HL)
\ 024B 0600 LD B,0
\ 024D FDE5 PUSH IY
\ 024F D1 POP DE
\ 0250 CD0000 CALL LWRD CharOutRect
\ 0253 E1 POP HL
\ 0254 E1 POP HL
\ 0255 ?0053:
\ 0255 ?0051:
197 /*
198 result = CharOutRect(code, *(tmpstrpt1+1), &kregion, 0);
199 if (!result)
200 {
201 }
202 */
203 }
204 }
205
206
207
208 }
\ 0255 DDF9 LD SP,IX
\ 0257 DDE1 POP IX
\ 0259 FDE1 POP IY
\ 025B C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 025E END
Errors: none
Warnings: none
Code size: 606
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -