📄 music_list_menu.lst
字号:
\ 0114 CD0000 CALL LWRD ?S_MUL_L02
\ 0117 210000 LD HL,ReadListBuffer
\ 011A 19 ADD HL,DE
\ 011B EB EX DE,HL
\ 011C 3E00 LD A,BYTE3 ScrollString
\ 011E 210000 LD HL,LWRD ScrollString
\ 0121 C9 RET
\ 0122 ?0084:
\ 0122 0E04 LD C,4
\ 0124 112B02 LD DE,BlankInfor
\ 0127 210000 LD HL,BLANKSTRING
\ 012A EDB0 LDIR
\ 012C 213800 LD HL,ReadListBuffer+56
\ 012F DD4EFE LD C,(IX-2)
\ 0132 ?0083:
\ 0132 114700 LD DE,71
\ 0135 CD0000 CALL LWRD ?S_MUL_L02
\ 0138 19 ADD HL,DE
\ 0139 112F02 LD DE,BlankInfor+4
\ 013C 0E0C LD C,12
\ 013E EDB0 LDIR
\ 0140 C9 RET
\ 0141 ?0085:
\ 0141 0600 LD B,0
\ 0143 114700 LD DE,71
\ 0146 ?0086:
\ 0146 CD0000 CALL LWRD ?S_MUL_L02
\ 0149 210000 LD HL,ReadListBuffer
\ 014C 19 ADD HL,DE
\ 014D 7E LD A,(HL)
\ 014E B7 OR A
\ 014F C9 RET
\ 0150 ?0087:
\ 0150 0E0D LD C,13
\ 0152 11C600 LD DE,198
\ 0155 ?0088:
\ 0155 3E00 LD A,BYTE3 ResShowPic
\ 0157 210000 LD HL,LWRD ResShowPic
\ 015A C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 015D ?0089:
\ 015D 110000 LD DE,scroll_buf
\ 0160 3E00 LD A,BYTE3 ScrollString
\ 0162 210000 LD HL,LWRD ScrollString
\ 0165 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0168 ?0090:
\ 0168 210000 LD HL,menu_pos_list
\ 016B 09 ADD HL,BC
\ 016C 7E LD A,(HL)
\ 016D C6FE ADD A,254
\ 016F 4F LD C,A
\ 0170 1E20 LD E,32
\ 0172 CD0000 CALL LWRD SetTextPos
\ 0175 0EFF LD C,255
\ 0177 112B02 LD DE,BlankInfor
\ 017A CD0000 CALL LWRD PutS
\ 017D C9 RET
\ 017E ui_music_list:
68
69 void ui_music_list(unsigned int active,unsigned int old_active,bool scroll_flag)
70 {
\ 017E CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0181 F8FF DEFW 65528
\ 0183 FDE5 PUSH IY
71 BYTE i;
72 unsigned int top_list,bottom_list;
73 BYTE last_list,buf_num;
74 region_scroll.x=30;
\ 0185 3E1E LD A,30
\ 0187 320000 LD (region_scroll),A
75 region_scroll.width=162;
\ 018A 3EA2 LD A,162
\ 018C 320200 LD (region_scroll+2),A
76 region_scroll.height=16;
\ 018F 3E10 LD A,16
\ 0191 320300 LD (region_scroll+3),A
77 SetTextOutMode(1);
\ 0194 1E01 LD E,1
\ 0196 CD0000 CALL LWRD SetTextOutMode
78 if(scroll_flag)
\ 0199 AF XOR A
\ 019A DDB60A OR (IX+10)
\ 019D 2826 JR Z,?0011
\ 019F ?0010:
79 {
80 SetTextOutMode(0);
\ 019F 1E00 LD E,0
\ 01A1 CD0000 CALL LWRD SetTextOutMode
81 SetBackgdColor(Color_BULE_Scroll_def);
\ 01A4 010000 LD BC,0
\ 01A7 111F00 LD DE,31
\ 01AA CD0000 CALL LWRD SetBackgdColor
82 ScrollString(scroll_buf, FALSE,g_comval.langid,®ion_scroll);
\ 01AD 210000 LD HL,region_scroll
\ 01B0 E5 PUSH HL
\ 01B1 210C00 LD HL,g_comval+12
\ 01B4 4E LD C,(HL)
\ 01B5 C5 PUSH BC
\ 01B6 0E00 LD C,0
\ 01B8 CD5D01 CALL LWRD ?0089
\ 01BB E1 POP HL
\ 01BC E1 POP HL
83 SetTextOutMode(1);
\ 01BD 1E01 LD E,1
\ 01BF CD0000 CALL LWRD SetTextOutMode
84 }
85 else
\ 01C2 C39703 JP LWRD ?0018
\ 01C5 ?0011:
86 {
87 ActiveSeekNum = active/OneSectorListNum; //当前选中列表文件所在的扇区
\ 01C5 CDA603 CALL LWRD ?0092
\ 01C8 ED533B02 LD (ActiveSeekNum),DE
88 if(old_active!=active)
\ 01CC DD6E02 LD L,(IX+2)
\ 01CF DD6603 LD H,(IX+3)
\ 01D2 DD4E04 LD C,(IX+4)
\ 01D5 DD4605 LD B,(IX+5)
\ 01D8 ED42 SBC HL,BC
\ 01DA 010600 LD BC,6
\ 01DD CA8F02 JP Z,?0014
\ 01E0 ?0013:
89 {
90 //清除旧的活动列表项
91 BYTE pos_num = old_active%ListDisplayNum;
\ 01E0 DD5E04 LD E,(IX+4)
\ 01E3 DD5605 LD D,(IX+5)
\ 01E6 CD0000 CALL LWRD ?US_MOD_L02
\ 01E9 DD73FF LD (IX-1),E
92 ResShowPic(menulist_bck_pic[pos_num],menu_bck_x_def,menu_pos_list[pos_num]-4); //分段刷新背景
\ 01EC 50 LD D,B
\ 01ED 210000 LD HL,menu_pos_list
\ 01F0 19 ADD HL,DE
\ 01F1 7E LD A,(HL)
\ 01F2 C6FC ADD A,252
\ 01F4 4F LD C,A
\ 01F5 C5 PUSH BC
\ 01F6 0E09 LD C,9
\ 01F8 6B LD L,E
\ 01F9 60 LD H,B
\ 01FA 29 ADD HL,HL
\ 01FB 110000 LD DE,menulist_bck_pic
\ 01FE 19 ADD HL,DE
\ 01FF 5E LD E,(HL)
\ 0200 23 INC HL
\ 0201 56 LD D,(HL)
\ 0202 CD5501 CALL LWRD ?0088
\ 0205 F1 POP AF
93 ResShowPic(MFILE, explorer_pic_x_def, menu_pos_list[pos_num]-1);
\ 0206 DD4EFF LD C,(IX-1)
\ 0209 0600 LD B,0
\ 020B 210000 LD HL,menu_pos_list
\ 020E 09 ADD HL,BC
\ 020F 7E LD A,(HL)
\ 0210 C6FF ADD A,255
\ 0212 4F LD C,A
\ 0213 C5 PUSH BC
\ 0214 CD5001 CALL LWRD ?0087
\ 0217 F1 POP AF
94 ResShowPic(DHT,194,8);
\ 0218 0E08 LD C,8
\ 021A C5 PUSH BC
\ 021B 0EC2 LD C,194
\ 021D 112600 LD DE,38
\ 0220 CD5501 CALL LWRD ?0088
\ 0223 F1 POP AF
95 SetTextPos(explorer_str_x_def, menu_pos_list[pos_num]-2);
\ 0224 DD4EFF LD C,(IX-1)
\ 0227 0600 LD B,0
\ 0229 210000 LD HL,menu_pos_list
\ 022C 09 ADD HL,BC
\ 022D 7E LD A,(HL)
\ 022E C6FE ADD A,254
\ 0230 4F LD C,A
\ 0231 1E20 LD E,32
\ 0233 CD0000 CALL LWRD SetTextPos
96 buf_num = old_active%OneSectorListNum; //
\ 0236 010700 LD BC,7
\ 0239 DD5E04 LD E,(IX+4)
\ 023C DD5605 LD D,(IX+5)
\ 023F CD0000 CALL LWRD ?US_MOD_L02
\ 0242 DD73FE LD (IX-2),E
97 if(ReadListBuffer[buf_num*ListPerByte]!=0)
\ 0245 50 LD D,B
\ 0246 0E47 LD C,71
\ 0248 CD4601 CALL LWRD ?0086
\ 024B 2824 JR Z,?0016
\ 024D ?0015:
98 {
99 region_scroll.y = menu_pos_list[pos_num]-2;
\ 024D DD4EFF LD C,(IX-1)
\ 0250 210000 LD HL,menu_pos_list
\ 0253 09 ADD HL,BC
\ 0254 7E LD A,(HL)
\ 0255 C6FE ADD A,254
\ 0257 320100 LD (region_scroll+1),A
100 ScrollString(&ReadListBuffer[buf_num*ListPerByte],TRUE,g_comval.langid,®ion_scroll);
\ 025A 210000 LD HL,region_scroll
\ 025D E5 PUSH HL
\ 025E 210C00 LD HL,g_comval+12
\ 0261 4E LD C,(HL)
\ 0262 C5 PUSH BC
\ 0263 0E01 LD C,1
\ 0265 C5 PUSH BC
\ 0266 CD0E01 CALL LWRD ?0082
\ 0269 C1 POP BC
\ 026A CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 026D E1 POP HL
\ 026E E1 POP HL
101 }
102 else
\ 026F 180B JR ?0017
\ 0271 ?0016:
103 {
104 memcpy(BlankInfor,BLANKSTRING,4);
105 memcpy(&BlankInfor[4],&ReadListBuffer[buf_num*ListPerByte+56],12); //取短名
\ 0271 CD2201 CALL LWRD ?0084
106 PutS(BlankInfor,-1);
\ 0274 0EFF LD C,255
\ 0276 112B02 LD DE,BlankInfor
\ 0279 CD0000 CALL LWRD PutS
\ 027C ?0017:
107 }
108 //显示当前活动项
109 LastSeekNum = old_active/OneSectorListNum; //旧的活动列表文件所在的扇区
\ 027C 010700 LD BC,7
\ 027F DD5E04 LD E,(IX+4)
\ 0282 DD5605 LD D,(IX+5)
\ 0285 CD0000 CALL LWRD ?US_DIV_L02
\ 0288 ED533D02 LD (LastSeekNum),DE
110 show_active_musiclist(active);
\ 028C C38903 JP LWRD ?0022
111 }
112 else
\ 028F ?0014:
113 {
114 top_list = (active/ListDisplayNum)*ListDisplayNum;
\ 028F DD5E02 LD E,(IX+2)
\ 0292 DD5603 LD D,(IX+3)
\ 0295 CD9C03 CALL LWRD ?0091
\ 0298 E5 PUSH HL
\ 0299 FDE1 POP IY
115 if(top_list+ListDisplayNum > g_file_list_total)
\ 029B 010600 LD BC,6
\ 029E 09 ADD HL,BC
\ 029F 4D LD C,L
\ 02A0 44 LD B,H
\ 02A1 2A0000 LD HL,(g_file_list_total)
\ 02A4 A7 AND A
\ 02A5 ED42 SBC HL,BC
\ 02A7 3009 JR NC,?0020
\ 02A9 ?0019:
116 bottom_list = g_file_list_total-1;
\ 02A9 21FFFF LD HL,65535
\ 02AC ED4B0000 LD BC,(g_file_list_total)
\ 02B0 1806 JR ?0072
117 else
\ 02B2 ?0020:
118 bottom_list = top_list + ListDisplayNum-1 ; //尾项
\ 02B2 210500 LD HL,5
\ 02B5 FDE5 PUSH IY
\ 02B7 C1 POP BC
\ 02B8 ?0072:
\ 02B8 09 ADD HL,BC
\ 02B9 ?0021:
119 last_list = bottom_list%ListDisplayNum;
\ 02B9 010600 LD BC,6
\ 02BC 5D LD E,L
\ 02BD 54 LD D,H
\ 02BE CD0000 CALL LWRD ?US_MOD_L02
\ 02C1 DD73FD LD (IX-3),E
120 LastSeekNum = bottom_list/OneSectorListNum; //最后一项列表文件所在的扇区
\ 02C4 03 INC BC
\ 02C5 5D LD E,L
\ 02C6 54 LD D,H
\ 02C7 CD0000 CALL LWRD ?US_DIV_L02
\ 02CA ED533D02 LD (LastSeekNum),DE
121 ResShowPic(MENUTWO,0,0); //显示背景画面
\ 02CE 48 LD C,B
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -