📄 music_list_menu.lst
字号:
196 break;
\ 0449 ?0046:
197 }
198 // top_list = active_list/ListDisplayNum)*ListDisplayNum; //计算列表头
199 ui_music_list(active_list,old_list,0);
\ 0449 48 LD C,B
\ 044A C5 PUSH BC
\ 044B CD3605 CALL LWRD ?0094
\ 044E E1 POP HL
200 }
201 else //到列表尾,回到列表头
\ 044F 1808 JR ?0047
\ 0451 ?0044:
202 {
203 active_list = 0;
204 need_draw = 1;
\ 0451 FD210000 LD IY,0
\ 0455 DD36F801 LD (IX-8),1
\ 0459 ?0047:
205 }
206 break;
\ 0459 C30A05 JP LWRD ?0067
\ 045C ?0048:
207
208 case AP_KEY_PREV:
209 case AP_KEY_PREV | AP_KEY_HOLD:
210 if(active_list==0)
\ 045C 7D LD A,L
\ 045D B4 OR H
\ 045E 201B JR NZ,?0050
\ 0460 ?0049:
211 {
212 active_list = g_file_list_total-1; //选中最后一项
\ 0460 21FFFF LD HL,65535
\ 0463 ED4B0000 LD BC,(g_file_list_total)
\ 0467 09 ADD HL,BC
\ 0468 E5 PUSH HL
\ 0469 FDE1 POP IY
213 if(active_list/OneSectorListNum>0)
\ 046B 010700 LD BC,7
\ 046E EB EX DE,HL
\ 046F CD0000 CALL LWRD ?US_DIV_L02
\ 0472 7B LD A,E
\ 0473 B2 OR D
\ 0474 283C JR Z,?0056
\ 0476 ?0051:
214 ReadOneSectorData((active_list/ListDisplayNum)*ListDisplayNum);
\ 0476 CDF800 CALL LWRD ?0081
\ 0479 ?0052:
215 need_draw = 1;
\ 0479 1837 JR ?0056
216 break;
\ 047B ?0050:
217 }
218 else
219 {
220 if((active_list%ListDisplayNum)==0) //是否显示上一屏
\ 047B 010600 LD BC,6
\ 047E FDE5 PUSH IY
\ 0480 D1 POP DE
\ 0481 CD0000 CALL LWRD ?US_MOD_L02
\ 0484 7B LD A,E
\ 0485 B2 OR D
\ 0486 2030 JR NZ,?0054
\ 0488 ?0053:
221 {
222 LastSeekNum = (active_list)/OneSectorListNum;
\ 0488 03 INC BC
\ 0489 FDE5 PUSH IY
\ 048B D1 POP DE
\ 048C CD0000 CALL LWRD ?US_DIV_L02
\ 048F ED533D02 LD (LastSeekNum),DE
223 active_list--;
224 ActiveSeekNum =((active_list/ListDisplayNum)*ListDisplayNum)/OneSectorListNum ;
\ 0493 0B DEC BC
\ 0494 FD2B DEC IY
\ 0496 FDE5 PUSH IY
\ 0498 D1 POP DE
\ 0499 CD9C03 CALL LWRD ?0091
\ 049C EB EX DE,HL
\ 049D 010700 LD BC,7
\ 04A0 CD0000 CALL LWRD ?US_DIV_L02
\ 04A3 ED533B02 LD (ActiveSeekNum),DE
225 if(ActiveSeekNum!=LastSeekNum)
\ 04A7 2A3D02 LD HL,(LastSeekNum)
\ 04AA A7 AND A
\ 04AB ED52 SBC HL,DE
\ 04AD 2803 JR Z,?0056
\ 04AF ?0055:
226 ReadOneSectorData((active_list/ListDisplayNum)*ListDisplayNum);
\ 04AF CDF800 CALL LWRD ?0081
\ 04B2 ?0056:
227 need_draw = 1;
\ 04B2 DD36F801 LD (IX-8),1
228 break;
\ 04B6 1852 JR ?0067
\ 04B8 ?0054:
229 }
230 active_list--;
231 ui_music_list(active_list,old_list,0);
\ 04B8 48 LD C,B
\ 04B9 FD2B DEC IY
\ 04BB 1848 JR ?0074
232 }
233 break;
\ 04BD ?0057:
234
235 case AP_KEY_PLAY | AP_KEY_UP: //取消退出
236 result = RESULT_IGNORE;
237 break;
\ 04BD ?0058:
238
239 case AP_KEY_MODE | AP_KEY_UP: //确认退出
240 case AP_KEY_MODE | AP_KEY_LONG: //确认退出
241 memcpy(&g_music_vars.location, &active_location,OneLocationBYTE);
\ 04BD 012900 LD BC,41
\ 04C0 110700 LD DE,g_music_vars+7
\ 04C3 210002 LD HL,active_location
\ 04C6 EDB0 LDIR
242 g_music_vars.file_list_num = active_list; //记录当前列表序号
\ 04C8 FD225A00 LD (g_music_vars+90),IY
243 result = 0;
\ 04CC AF XOR A
\ 04CD DD77FA LD (IX-6),A
\ 04D0 DD77FB LD (IX-5),A
244 break;
\ 04D3 1835 JR ?0067
\ 04D5 ?0059:
245
246 case AP_MSG_WAIT_TIMEOUT:
247 result = RESULT_IGNORE;
\ 04D5 DD36FA34 LD (IX-6),52
\ 04D9 DD36FB00 LD (IX-5),0
248 break;
\ 04DD 182B JR ?0067
\ 04DF ?0060:
249
250 default:
251 key = ap_handle_hotkey(key);
\ 04DF CD0000 CALL LWRD ap_handle_hotkey
\ 04E2 DD77F9 LD (IX-7),A
252 if(key == RESULT_REDRAW)
\ 04E5 FE32 CP 50
\ 04E7 2006 JR NZ,?0062
\ 04E9 ?0061:
253 need_draw = TRUE;
\ 04E9 DD36F801 LD (IX-8),1
254 else
\ 04ED 180E JR ?0065
\ 04EF ?0062:
255 if(key != 0)
\ 04EF AF XOR A
\ 04F0 DDB6F9 OR (IX-7)
\ 04F3 2808 JR Z,?0065
\ 04F5 ?0064:
256 {
257 result = key;
\ 04F5 DD77FA LD (IX-6),A
\ 04F8 0600 LD B,0
\ 04FA DD70FB LD (IX-5),B
\ 04FD ?0065:
\ 04FD ?0063:
258 }
259 if(ScrollFlag)
\ 04FD 3A0000 LD A,(ScrollFlag)
\ 0500 B7 OR A
\ 0501 2807 JR Z,?0067
\ 0503 ?0066:
260 ui_music_list(active_list,old_list,1); //滚动屏幕
\ 0503 0E01 LD C,1
\ 0505 ?0074:
\ 0505 C5 PUSH BC
\ 0506 CD3605 CALL LWRD ?0094
\ 0509 E1 POP HL
\ 050A ?0067:
\ 050A ?0041:
261 } //switch
262
263 if(result!=RESULT_LIST)
\ 050A 3E69 LD A,105
\ 050C DDAEFA XOR (IX-6)
\ 050F DDB6FB OR (IX-5)
\ 0512 281F JR Z,?0069
\ 0514 ?0068:
264 {
265 output8(0x27,IO27Bak&0xfe);
\ 0514 DD46FE LD B,(IX-2)
\ 0517 CB80 RES 0,B
\ 0519 78 LD A,B
\ 051A D327 OUT (39),A
266 FS_FClose(list_fp);
\ 051C ED5B0000 LD DE,(list_fp)
\ 0520 CD0000 CALL LWRD FS_FClose
267 output8(0x27,IO27Bak);
\ 0523 DD7EFE LD A,(IX-2)
\ 0526 D327 OUT (39),A
268 return result;
\ 0528 DD6EFA LD L,(IX-6)
\ 052B DD66FB LD H,(IX-5)
269 }
\ 052E FDE1 POP IY
\ 0530 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 0533 ?0069:
270 } //while
271 }
\ 0533 C3E803 JP LWRD ?0037
\ 0536 ?0094:
\ 0536 DD4EFC LD C,(IX-4)
\ 0539 DD46FD LD B,(IX-3)
\ 053C ?0093:
\ 053C FDE5 PUSH IY
\ 053E D1 POP DE
\ 053F 3E00 LD A,BYTE3 ui_music_list
\ 0541 217E01 LD HL,LWRD ui_music_list
\ 0544 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0547 ReadOneSectorData:
272
273 void ReadOneSectorData(unsigned int currentlist)
274 {
\ 0547 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 054A FEFF DEFW -2
\ 054C FDE5 PUSH IY
275 BYTE BAKIO27 = input8(0x27);
\ 054E DB27 IN A,(39)
\ 0550 DD77FE LD (IX-2),A
276 unsigned int CurrentSeekNum = currentlist/OneSectorListNum;
\ 0553 CDA603 CALL LWRD ?0092
277 output8(0x27,BAKIO27&0xfe); //关dsp中断,防止内存页冲突
\ 0556 CB87 RES 0,A
\ 0558 D327 OUT (39),A
278 FS_FSeek((long)CurrentSeekNum, SEEK_SET, list_fp);
\ 055A 2A0000 LD HL,(list_fp)
\ 055D E5 PUSH HL
\ 055E 48 LD C,B
\ 055F C5 PUSH BC
\ 0560 CD0000 CALL LWRD FS_FSeek
\ 0563 E1 POP HL
\ 0564 E1 POP HL
279 FS_FRead(ReadListBuffer,1,list_fp);
\ 0565 2A0000 LD HL,(list_fp)
\ 0568 E5 PUSH HL
\ 0569 0E01 LD C,1
\ 056B 110000 LD DE,ReadListBuffer
\ 056E CD0000 CALL LWRD FS_FRead
\ 0571 E1 POP HL
280 output8(0x27,BAKIO27);
\ 0572 DD7EFE LD A,(IX-2)
\ 0575 D327 OUT (39),A
281 }
\ 0577 FDE1 POP IY
\ 0579 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 0000 RSEG APC_MUSIC_LIST
\ 0000 BLANKSTRING:
\ 0000 5B5D2D2D DEFB '[]--'
\ 0000 RSEG APD_MUSIC_LIST
\ 0000 ReadListBuffer:
\ 0200 DEFS 512
\ 0200 active_location:
\ 022B DEFS 43
\ 022B BlankInfor:
\ 023B DEFS 16
\ 023B ActiveSeekNum:
\ 023D DEFS 2
\ 023D LastSeekNum:
\ 023F DEFS 2
\ 023F HeadIDDisplay:
\ 0241 DEFS 2
\ 0241 END
Errors: none
Warnings: none
Code size: 1404
Constant size: 4
Static variable size: Data(577) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -