📄 main.lst
字号:
86
87 FS_FRemove(TIT2FileName); //删除原来列表
\ 00EE 110000 LD DE,?0020
\ 00F1 CD0000 CALL LWRD FS_FRemove
88 FS_FRemove(TPE1FileName); //删除原来列表
\ 00F4 110C00 LD DE,?0021
\ 00F7 CD0000 CALL LWRD FS_FRemove
89 FS_FRemove(TALBFileName); //删除原来列表
\ 00FA 111800 LD DE,?0022
\ 00FD CD0000 CALL LWRD FS_FRemove
90 FS_FRemove(FILENAMELSIT); //删除原来列表
\ 0100 112400 LD DE,?0023
\ 0103 CD0000 CALL LWRD FS_FRemove
\ 0106 ?0025:
91
92 // TIT2FileHandle = FS_FCreate(TIT2FileName); //因为TIT2FileHandle用到IDM LOW, FS_FCreate 会用到IDM LOW 作为buf,所以先创建
93
94 while(FSELGetNext(list_location.filename)) //找到文件
\ 0106 111A00 LD DE,list_location+26
\ 0109 3E00 LD A,BYTE3 fselGetNextFile
\ 010B 210000 LD HL,LWRD fselGetNextFile
\ 010E CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0111 2C INC L
\ 0112 2D DEC L
\ 0113 CACE01 JP Z,?0024
\ 0116 ?0026:
95 {
96 output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
\ 0116 DB4E IN A,(78)
\ 0118 CBDF SET 3,A
\ 011A D34E OUT (78),A
97 fselGetLocation(&list_location);
\ 011C 110000 LD DE,list_location
\ 011F 3E00 LD A,BYTE3 fselGetLocation
\ 0121 210000 LD HL,LWRD fselGetLocation
\ 0124 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
98 MusicType = CheckMusicType(list_location.filename);
\ 0127 111A00 LD DE,list_location+26
\ 012A 3E00 LD A,BYTE3 CheckMusicType
\ 012C 210904 LD HL,LWRD CheckMusicType
\ 012F CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
99 switch (MusicType)
\ 0132 7D LD A,L
\ 0133 FE02 CP 2
\ 0135 3842 JR C,?0032
\ 0137 FE05 CP 5
\ 0139 303E JR NC,?0032
\ 013B ?0028:
100 {
101 case Music_WMA: //WMA 的ID3 信息
102 case Music_WMV:
103 case Music_ASF:
104 if (wmaGetTAGInfo(list_location.filename, &ID3List))
\ 013B 210A00 LD HL,10
\ 013E 39 ADD HL,SP
\ 013F 4D LD C,L
\ 0140 44 LD B,H
\ 0141 111A00 LD DE,list_location+26
\ 0144 3E00 LD A,BYTE3 wmaGetTAGInfo
\ 0146 210000 LD HL,LWRD wmaGetTAGInfo
\ 0149 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 014C 2C INC L
\ 014D 2D DEC L
\ 014E 284A JR Z,?0036
\ 0150 ?0029:
105 {
106 unitochar(g_ID3InfoBuf, 30, (char)param); //WMA Tag(unicode) change to ASCII & GB2312
\ 0150 DD6EFE LD L,(IX-2)
\ 0153 E5 PUSH HL
\ 0154 011E00 LD BC,30
\ 0157 CD5E02 CALL LWRD ?0102
\ 015A F1 POP AF
107 unitochar(&g_ID3InfoBuf[30], 30, (char)param);
\ 015B DD6EFE LD L,(IX-2)
\ 015E E5 PUSH HL
\ 015F 011E00 LD BC,30
\ 0162 112000 LD DE,g_ID3InfoBuf+30
\ 0165 CD6102 CALL LWRD ?0103
\ 0168 F1 POP AF
108 unitochar(&g_ID3InfoBuf[60], 30, (char)param);
\ 0169 DD6EFE LD L,(IX-2)
\ 016C E5 PUSH HL
\ 016D 011E00 LD BC,30
\ 0170 113E00 LD DE,g_ID3InfoBuf+60
\ 0173 CD6102 CALL LWRD ?0103
\ 0176 F1 POP AF
109 }
110 else
\ 0177 1825 JR ?0027
\ 0179 ?0030:
111 {
112 g_ID3InfoBuf[0] = 0x0;
\ 0179 ?0031:
113 }
114 break;
\ 0179 ?0032:
\ 0179 FE01 CP 1
\ 017B 201D JR NZ,?0036
115
116 case Music_MP3:
117 if (mp3GetID3Info(list_location.filename, & ID3List, param))
\ 017D DD6EFE LD L,(IX-2)
\ 0180 DD66FF LD H,(IX-1)
\ 0183 E5 PUSH HL
\ 0184 210C00 LD HL,12
\ 0187 39 ADD HL,SP
\ 0188 4D LD C,L
\ 0189 44 LD B,H
\ 018A 111A00 LD DE,list_location+26
\ 018D 3E00 LD A,BYTE3 mp3GetID3Info
\ 018F 210000 LD HL,LWRD mp3GetID3Info
\ 0192 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0195 F1 POP AF
\ 0196 2C INC L
\ 0197 2D DEC L
\ 0198 2004 JR NZ,?0027
\ 019A ?0033:
118 {
119 // strcpy(g_ID3InfoBuf, & g_ID3InfoBuf[0]);
120 // strcat(g_ID3InfoBuf, " ");
121 // strcat(g_ID3InfoBuf, & g_ID3InfoBuf[30]);
122 // strcat(g_ID3InfoBuf, " ");
123 // strcat(g_ID3InfoBuf, & g_ID3InfoBuf[60]);
124 // strcat(g_ID3InfoBuf, " ");
125 }
126
127 else
\ 019A ?0034:
128 {
129 g_ID3InfoBuf[0] = 0x0;
\ 019A ?0035:
130 }
131 break;
\ 019A ?0036:
132
133 default:
134 g_ID3InfoBuf[0] = 0x0;
\ 019A AF XOR A
\ 019B 320200 LD (g_ID3InfoBuf),A
135 break;
\ 019E ?0027:
136 }
137
138 if(file_num>480) //超出范围 15K 0x7c00-0x7fff IDM low 被文件系统用掉
\ 019E FDE5 PUSH IY
\ 01A0 C1 POP BC
\ 01A1 21E001 LD HL,480
\ 01A4 A7 AND A
\ 01A5 ED42 SBC HL,BC
\ 01A7 3825 JR C,?0024
\ 01A9 ?0037:
139 break;
\ 01A9 ?0038:
140
141 if(g_ID3InfoBuf[0])
\ 01A9 3A0200 LD A,(g_ID3InfoBuf)
\ 01AC B7 OR A
\ 01AD DD6EFE LD L,(IX-2)
\ 01B0 DD66FF LD H,(IX-1)
\ 01B3 E5 PUSH HL
\ 01B4 210000 LD HL,list_location
\ 01B7 E5 PUSH HL
\ 01B8 2804 JR Z,?0040
\ 01BA ?0039:
142 StoreID3toIDM(1,file_num,&list_location,param);
\ 01BA 1E01 LD E,1
\ 01BC 1801 JR ?0099
143 else
\ 01BE ?0040:
144 StoreID3toIDM(0,file_num,&list_location,param);
\ 01BE 5F LD E,A
\ 01BF ?0099:
\ 01BF 3E00 LD A,BYTE3 StoreID3toIDM
\ 01C1 216902 LD HL,LWRD StoreID3toIDM
\ 01C4 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01C7 E1 POP HL
\ 01C8 E1 POP HL
\ 01C9 ?0041:
145 file_num++;
\ 01C9 FD23 INC IY
\ 01CB C30601 JP LWRD ?0025
\ 01CE ?0024:
146 } //while 循环
147 g_file_total=file_num; //记录总的文件个数
\ 01CE FD220000 LD (g_file_total),IY
148 BankSwitch((unsigned long)SortStoreListToFile >> 16); //将排序存文件部分切为主bank
\ 01D2 1E00 LD E,BYTE3 SortStoreListToFile
\ 01D4 CD0000 CALL LWRD BankSwitch
149 if(file_num!=0) //没有文件就不生成列表
\ 01D7 FD7D LD A,IYL
\ 01D9 FDB4 OR IYH
\ 01DB 2811 JR Z,?0043
\ 01DD ?0042:
150 SortStoreListToFile(start_pointer,file_num); //按关键字排序并将排序后的列表写到列表文件
\ 01DD FDE5 PUSH IY
\ 01DF C1 POP BC
\ 01E0 DD5EEC LD E,(IX-20)
\ 01E3 DD56ED LD D,(IX-19)
\ 01E6 3E00 LD A,BYTE3 SortStoreListToFile
\ 01E8 210000 LD HL,LWRD SortStoreListToFile
\ 01EB CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01EE ?0043:
151 if(DiskType =='C') //保存Flash 中列表文件的个数
\ 01EE DD7EE8 LD A,(IX-24)
\ 01F1 FE43 CP 67
\ 01F3 FDE5 PUSH IY
\ 01F5 E1 POP HL
\ 01F6 2008 JR NZ,?0045
\ 01F8 ?0044:
152 file_total_flash = file_num;
\ 01F8 DD75F0 LD (IX-16),L
\ 01FB DD74F1 LD (IX-15),H
153 else
\ 01FE 1806 JR ?0046
\ 0200 ?0045:
154 file_total_card = file_num; //保存插卡中列表文件个数
\ 0200 DD75EE LD (IX-18),L
\ 0203 DD74EF LD (IX-17),H
\ 0206 ?0046:
155
156 if(DiskType =='C' && CardDiskState ==1)
\ 0206 FE43 CP 67
\ 0208 2018 JR NZ,?0048
\ 020A DD46E9 LD B,(IX-23)
\ 020D 05 DEC B
\ 020E 2012 JR NZ,?0048
\ 0210 ?0050:
\ 0210 ?0049:
\ 0210 ?0047:
157 {
158 file_num = 0;
159 DiskType = 'H';
160 start_pointer = (char *)IDMStartAddress; //指针重新赋值
\ 0210 DD70EC LD (IX-20),B
\ 0213 DD36ED40 LD (IX-19),64
\ 0217 FD210000 LD IY,0
\ 021B DD36E848 LD (IX-24),72
161 goto BuildAnotherList;
\ 021F C3AC00 JP LWRD ?0019
\ 0222 ?0048:
162 }
163
164 VMRead(&g_music_list_val, VM_AP_MUSIC,sizeof(g_music_list_val)); //将播放列表数据写到VM
\ 0222 215F00 LD HL,95
\ 0225 E5 PUSH HL
\ 0226 010010 LD BC,4096
\ 0229 112B00 LD DE,g_music_list_val
\ 022C CD0000 CALL LWRD VMRead
\ 022F E1 POP HL
165 g_music_list_val.file_list_total_flash = file_total_flash;
\ 0230 DD6EF0 LD L,(IX-16)
\ 0233 DD66F1 LD H,(IX-15)
\ 0236 228100 LD (g_music_list_val+86),HL
166 g_music_list_val.file_list_total_card = file_total_card;
\ 0239 DD6EEE LD L,(IX-18)
\ 023C DD66EF LD H,(IX-17)
\ 023F 228300 LD (g_music_list_val+88),HL
167 g_music_list_val.file_list_num = 0; //将原来播放序号清0
\ 0242 210000 LD HL,0
\ 0245 228500 LD (g_music_list_val+90),HL
168 VMWrite(& g_music_list_val, VM_AP_MUSIC);
\ 0248 010010 LD BC,4096
\ 024B 112B00 LD DE,g_music_list_val
\ 024E CD0000 CALL LWRD VMWrite
169 /*
170 output8(0x00,IO00Bak);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -