ui_userlist.lst
来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 1,141 行 · 第 1/4 页
LST
1,141 行
\ 025F 2819 JR Z,?0050
\ 0261 ?0049:
177 {
178 Process_onePage(&CurOffset,direct,last_list);
\ 0261 DD6EFE LD L,(IX-2)
\ 0264 E5 PUSH HL
\ 0265 DD4EFB LD C,(IX-5)
\ 0268 210C00 LD HL,12
\ 026B 39 ADD HL,SP
\ 026C EB EX DE,HL
\ 026D 3E00 LD A,BYTE3 Process_onePage
\ 026F 213201 LD HL,LWRD Process_onePage
\ 0272 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0275 E1 POP HL
179 need_read= FALSE;
\ 0276 DD36F900 LD (IX-7),0
\ 027A ?0050:
180 }
181 if(need_draw)
\ 027A AF XOR A
\ 027B DDB6F5 OR (IX-11)
\ 027E 2820 JR Z,?0052
\ 0280 ?0051:
182 {
183 ui_viewlist(old_active,new_active,list_num,type,0);
\ 0280 0E00 LD C,0
\ 0282 C5 PUSH BC
\ 0283 DD6E04 LD L,(IX+4)
\ 0286 E5 PUSH HL
\ 0287 DD6EF8 LD L,(IX-8)
\ 028A E5 PUSH HL
\ 028B DD4EF4 LD C,(IX-12)
\ 028E DD5EF6 LD E,(IX-10)
\ 0291 3E00 LD A,BYTE3 ui_viewlist
\ 0293 210000 LD HL,LWRD ui_viewlist
\ 0296 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0299 E1 POP HL
\ 029A E1 POP HL
\ 029B E1 POP HL
184 need_draw = FALSE;
\ 029C DD36F500 LD (IX-11),0
\ 02A0 ?0052:
185 }
186 //handle msg
187 key = ap_get_message();
\ 02A0 CD0000 CALL LWRD ap_get_message
188 old_active = new_active;
\ 02A3 DD46F4 LD B,(IX-12)
\ 02A6 DD70F6 LD (IX-10),B
189 switch(key)
\ 02A9 5F LD E,A
\ 02AA CD0000 CALL LWRD ?C_V_SWITCH_L06
\ 02AD 0700 DEFW 7
\ 02AF 05 DEFB 5
\ 02B0 06 DEFB 6
\ 02B1 1E DEFB 30
\ 02B2 21 DEFB 33
\ 02B3 30 DEFB 48
\ 02B4 45 DEFB 69
\ 02B5 46 DEFB 70
\ 02B6 9E04 DEFW ?0086
\ 02B8 C602 DEFW ?0054
\ 02BA 3C03 DEFW ?0060
\ 02BC BB03 DEFW ?0067
\ 02BE 9604 DEFW ?0085
\ 02C0 9604 DEFW ?0085
\ 02C2 C602 DEFW ?0054
\ 02C4 3C03 DEFW ?0060
\ 02C6 ?0054:
190 {
191
192 case AP_KEY_NEXT:
193 case AP_KEY_NEXT | AP_KEY_HOLD:
194 if(g_list_count<vTotal-1)
\ 02C6 21FFFF LD HL,65535
\ 02C9 ED4BC602 LD BC,(vTotal)
\ 02CD 09 ADD HL,BC
\ 02CE 4D LD C,L
\ 02CF 44 LD B,H
\ 02D0 FDE5 PUSH IY
\ 02D2 E1 POP HL
\ 02D3 A7 AND A
\ 02D4 ED42 SBC HL,BC
\ 02D6 303A JR NC,?0056
\ 02D8 ?0055:
195 {
196 g_list_count++;
197 new_active++;
\ 02D8 DD34F4 INC (IX-12)
198 need_draw = TRUE;
\ 02DB DD36F501 LD (IX-11),1
199 if(new_active%MENU_GROUP==0)
\ 02DF 0606 LD B,6
\ 02E1 DD7EF4 LD A,(IX-12)
\ 02E4 CD0000 CALL LWRD ?UC_MOD_L01
\ 02E7 B7 OR A
\ 02E8 FD23 INC IY
\ 02EA 204D JR NZ,?0059
\ 02EC ?0057:
200 {
201 need_read = TRUE;
202 new_active =0;
203 old_active = 0;
204 direct =0;
205 memcpy(&CurOffset,disbuff+28+30*(MENU_GROUP-1),2);
\ 02EC 010200 LD BC,2
\ 02EF 210A00 LD HL,10
\ 02F2 39 ADD HL,SP
\ 02F3 EB EX DE,HL
\ 02F4 21B202 LD HL,disbuff+178
\ 02F7 EDB0 LDIR
206 list_num =vTotal-g_list_count;
\ 02F9 FDE5 PUSH IY
\ 02FB E1 POP HL
\ 02FC 3AC602 LD A,(vTotal)
\ 02FF 95 SUB L
\ 0300 DD77F8 LD (IX-8),A
\ 0303 DD36F901 LD (IX-7),1
\ 0307 DD70F4 LD (IX-12),B
\ 030A DD70F6 LD (IX-10),B
\ 030D DD70FB LD (IX-5),B
\ 0310 ?0058:
207 }
208 }
209 else //最后一项回到头部
\ 0310 1827 JR ?0059
\ 0312 ?0056:
210 {
211 need_draw = TRUE;
212 need_read = TRUE;
213 new_active =0;
214 old_active = 0;
215 direct =0;
216 g_list_count = 0;
217
218 CurOffset = vFirstOffset;
\ 0312 2AC202 LD HL,(vFirstOffset)
\ 0315 DD75FC LD (IX-4),L
\ 0318 DD74FD LD (IX-3),H
219 list_num = vTotal;
\ 031B 3AC602 LD A,(vTotal)
\ 031E DD77F8 LD (IX-8),A
\ 0321 DD36F501 LD (IX-11),1
\ 0325 DD36F901 LD (IX-7),1
\ 0329 DD36F400 LD (IX-12),0
\ 032D DD36F600 LD (IX-10),0
\ 0331 DD36FB00 LD (IX-5),0
\ 0335 FD210000 LD IY,0
\ 0339 ?0059:
220 }
221
222 break;
\ 0339 C35B02 JP LWRD ?0047
\ 033C ?0060:
223 case AP_KEY_PREV:
224 case AP_KEY_PREV | AP_KEY_HOLD :
225 if(g_list_count>0)
\ 033C FDE5 PUSH IY
\ 033E E1 POP HL
\ 033F 7D LD A,L
\ 0340 B4 OR H
\ 0341 2836 JR Z,?0062
\ 0343 ?0061:
226 {
227 g_list_count--;
228 last_list = 0;
229 need_draw = TRUE;
230 if(new_active==0)
\ 0343 DD36FE00 LD (IX-2),0
\ 0347 DD36F501 LD (IX-11),1
\ 034B AF XOR A
\ 034C B0 OR B
\ 034D FD2B DEC IY
\ 034F 2023 JR NZ,?0064
\ 0351 ?0063:
231 {
232 need_read = TRUE;
233 new_active = MENU_GROUP-1;
234 old_active = MENU_GROUP-1;
235 direct =1;
236 memcpy(&CurOffset,disbuff+26,2);
\ 0351 0E02 LD C,2
\ 0353 210A00 LD HL,10
\ 0356 39 ADD HL,SP
\ 0357 EB EX DE,HL
\ 0358 211A02 LD HL,disbuff+26
\ 035B EDB0 LDIR
237 list_num = MENU_GROUP;
\ 035D DD36F901 LD (IX-7),1
\ 0361 DD36F405 LD (IX-12),5
\ 0365 DD36F605 LD (IX-10),5
\ 0369 DD36FB01 LD (IX-5),1
\ 036D DD36F806 LD (IX-8),6
238 break;
\ 0371 C35B02 JP LWRD ?0047
\ 0374 ?0064:
239 }
240 new_active--;
\ 0374 DD35F4 DEC (IX-12)
241 }
242 else //从第一项跳到最后一项
\ 0377 183F JR ?0065
\ 0379 ?0062:
243 {
244 need_draw = TRUE;
245 need_read = TRUE;
246 new_active = (vTotal-1)%MENU_GROUP; //最后一项的编号
\ 0379 21FFFF LD HL,65535
\ 037C ED4BC602 LD BC,(vTotal)
\ 0380 09 ADD HL,BC
\ 0381 EB EX DE,HL
\ 0382 010600 LD BC,6
\ 0385 CD0000 CALL LWRD ?US_MOD_L02
\ 0388 DD73F4 LD (IX-12),E
247 old_active = new_active;
248 last_list = new_active+1; //最后一项的位置
\ 038B 1C INC E
\ 038C DD73FE LD (IX-2),E
249 direct =1;
250 // vsave_offset = 0xffff;
251 list_num = new_active+1;
\ 038F DD73F8 LD (IX-8),E
252 g_list_count = vTotal-1;
\ 0392 21FFFF LD HL,65535
\ 0395 ED4BC602 LD BC,(vTotal)
\ 0399 09 ADD HL,BC
\ 039A E5 PUSH HL
\ 039B FDE1 POP IY
253 CurOffset = vLastOffset; //最后一项的偏移
\ 039D 2AC402 LD HL,(vLastOffset)
\ 03A0 DD75FC LD (IX-4),L
\ 03A3 DD74FD LD (IX-3),H
\ 03A6 DD46F4 LD B,(IX-12)
\ 03A9 DD70F6 LD (IX-10),B
\ 03AC DD36F501 LD (IX-11),1
\ 03B0 DD36F901 LD (IX-7),1
\ 03B4 DD36FB01 LD (IX-5),1
\ 03B8 ?0065:
254 }
255 break;
\ 03B8 C35B02 JP LWRD ?0047
\ 03BB ?0066:
256 case AP_KEY_PLAY | AP_KEY_UP:
257
258 output8(0x27,00);
259 FS_FClose(fpview);
260 output8(0x27,IO27);
261 return RESULT_IGNORE;
262 case AP_KEY_MODE | AP_KEY_UP:
\ 03BB ?0067:
263
264 if(type==0)
\ 03BB AF XOR A
\ 03BC DDB604 OR (IX+4)
\ 03BF 2017 JR NZ,?0069
\ 03C1 ?0068:
265 {
266 output8(0x27,00);
267 FS_FClose(fpview);
\ 03C1 CDE504 CALL LWRD ?0107
268 output8(0x27,IO27);
269 location->PL_Cur = g_list_count+1;
\ 03C4 212900 LD HL,41
\ 03C7 DD4E02 LD C,(IX+2)
\ 03CA DD4603 LD B,(IX+3)
\ 03CD 09 ADD HL,BC
\ 03CE FDE5 PUSH IY
\ 03D0 C1 POP BC
\ 03D1 03 INC BC
\ 03D2 71 LD (HL),C
\ 03D3 23 INC HL
\ 03D4 70 LD (HL),B
270 return RESULT_NULL;
\ 03D5 C39104 JP LWRD ?0080
271 }
\ 03D8 ?0069:
272 else
273 {
274 output8(0x27,00);
275 FS_FClose(fpview);
\ 03D8 CDE404 CALL LWRD ?0108
276 output8(0x27,IO27);
277 if(new_active>0) //从双向链表被删除项的前驱的直接后继找当前的offset
\ 03DB AF XOR A
\ 03DC B0 OR B
\ 03DD 280F JR Z,?0071
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?