📄 sub_function3.lst
字号:
\ 01DA B7 OR A
\ 01DB 2013 JR NZ,?0053
\ 01DD ?0046:
174 {
175 return 1;
176 }
\ 01DD ?0047:
177
178 //找到目录的第一个文件
179 if (StartFileSelector() == 0)
\ 01DD CD4502 CALL LWRD ?0210
\ 01E0 200E JR NZ,?0053
\ 01E2 ?0048:
180 {
181 return 0;
\ 01E2 1846 JR ?0145
182 }
\ 01E4 ?0049:
183 return 1;
184 }
\ 01E4 ?0045:
185 else if (result == 2) // == 2 表示该目录是空
\ 01E4 DD46FE LD B,(IX-2)
\ 01E7 05 DEC B
\ 01E8 05 DEC B
\ 01E9 200A JR NZ,?0051
\ 01EB ?0050:
186 {
187 //找到目录的第一个文件
188 if (StartFileSelector() == 0)
\ 01EB CD4502 CALL LWRD ?0210
\ 01EE 283A JR Z,?0145
\ 01F0 ?0052:
189 {
190 return 0;
191 }
\ 01F0 ?0053:
192 return 1;
\ 01F0 210100 LD HL,1
193
194 }
\ 01F3 183F JR ?0063
\ 01F5 ?0051:
195
196 ClearTimePara();//时间断点参数从0开始
\ 01F5 3E00 LD A,BYTE3 ClearTimePara
\ 01F7 210000 LD HL,LWRD ClearTimePara
\ 01FA CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
197 g_music_vars.location.filename[0] = '\0';//找不到对应文件时要回到目录第一个文件
\ 01FD AF XOR A
\ 01FE 322100 LD (g_music_vars+33),A
198 output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
\ 0201 DB4E IN A,(78)
\ 0203 CBDF SET 3,A
\ 0205 D34E OUT (78),A
199
200 result = FSELSetLocation(& g_music_vars.location);
\ 0207 110700 LD DE,g_music_vars+7
\ 020A 3E00 LD A,BYTE3 fselSetLocation
\ 020C 210000 LD HL,LWRD fselSetLocation
\ 020F CD3F02 CALL LWRD ?0203
201
202 if (result != 0)//set 目录
\ 0212 2807 JR Z,?0055
\ 0214 ?0054:
203 {
204 //找到目录的第一个文件
205 if (StartFileSelector() == 0)
\ 0214 CD4502 CALL LWRD ?0210
\ 0217 2015 JR NZ,?0062
\ 0219 ?0056:
206 {
207 return 0;
\ 0219 180F JR ?0145
208 }
\ 021B ?0057:
209 }
210
211 else
\ 021B ?0055:
212 {
213 // 初始化文件选择器
214 if (InitFileSelector() == 0)
\ 021B 3E00 LD A,BYTE3 InitFileSelector
\ 021D 219D00 LD HL,LWRD InitFileSelector
\ 0220 CD4A02 CALL LWRD ?0211
\ 0223 2805 JR Z,?0145
\ 0225 ?0059:
215 {
216 return 0;
217 }
\ 0225 ?0060:
218 //找到目录的第一个文件
219 if (StartFileSelector() == 0)
\ 0225 CD4502 CALL LWRD ?0210
\ 0228 2004 JR NZ,?0062
\ 022A ?0061:
220 {
221 return 0;
\ 022A ?0145:
\ 022A 69 LD L,C
\ 022B 61 LD H,C
222 }
\ 022C 1806 JR ?0063
\ 022E ?0062:
\ 022E ?0058:
223 }
224
225 output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
\ 022E DB4E IN A,(78)
\ 0230 CBDF SET 3,A
\ 0232 D34E OUT (78),A
226 }
\ 0234 ?0063:
\ 0234 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 0237 ?0204:
\ 0237 112100 LD DE,g_music_vars+33
\ 023A 3E00 LD A,BYTE3 fselGetNextFile
\ 023C 210000 LD HL,LWRD fselGetNextFile
\ 023F ?0203:
\ 023F CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0242 2C INC L
\ 0243 2D DEC L
\ 0244 C9 RET
\ 0245 ?0210:
\ 0245 3E00 LD A,BYTE3 StartFileSelector
\ 0247 215002 LD HL,LWRD StartFileSelector
\ 024A ?0211:
\ 024A CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 024D 7D LD A,L
\ 024E B4 OR H
\ 024F C9 RET
\ 0250 StartFileSelector:
227
228
229
230 /******************************************************************************
231 ** 名字:
232 ** 接口:
233 ** 描述:
234 ** 输入参数:
235 ** 输出参数:
236 ** 使用说明: //注,这函数是在初始化完文件选择器或set 完目录后调用的
237 ********************************************************************************/
238 int StartFileSelector(void)
239 {
\ 0250 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0253 FEFF DEFW 65534
240 int result;
241
242 if (g_music_vars.location.disk == 'C')
\ 0255 3A0700 LD A,(g_music_vars+7)
\ 0258 FE43 CP 67
\ 025A 112100 LD DE,g_music_vars+33
\ 025D 3E00 LD A,BYTE3 fselGetNextFile
\ 025F 210000 LD HL,LWRD fselGetNextFile
\ 0262 C2E902 JP NZ,?0065
\ 0265 ?0064:
243 {
244 if (FSELGetNext(g_music_vars.location.filename) != 0)
\ 0265 CD3F02 CALL LWRD ?0203
\ 0268 2018 JR NZ,?0169
\ 026A ?0066:
245 {
246 return 1;
247 }
\ 026A ?0067:
248
249 if (FSELGetErrID() == 0)
\ 026A CD8F01 CALL LWRD ?0206
\ 026D 2C INC L
\ 026E 2D DEC L
\ 026F CA5B03 JP Z,?0114
\ 0272 ?0068:
250 {
251 return 0;//非法
252 }
\ 0272 ?0069:
253 //再查一次,因为可能这目录前面还有文件
254 if (InitFileSelector() == 0)
\ 0272 3E00 LD A,BYTE3 InitFileSelector
\ 0274 219D00 LD HL,LWRD InitFileSelector
\ 0277 CD4A02 CALL LWRD ?0211
\ 027A CA5B03 JP Z,?0114
\ 027D ?0070:
255 {
256 return 0;
257 }
\ 027D ?0071:
258 if (FSELGetNext(g_music_vars.location.filename) != 0)
\ 027D CD3702 CALL LWRD ?0204
\ 0280 2803 JR Z,?0073
\ 0282 ?0072:
259 {
260 return 1;
\ 0282 ?0169:
\ 0282 C34C03 JP LWRD ?0173
261 }
\ 0285 ?0073:
262
263 if (FSELGetErrID() == 0)
\ 0285 CD8F01 CALL LWRD ?0206
\ 0288 2C INC L
\ 0289 2D DEC L
\ 028A CA5B03 JP Z,?0114
\ 028D ?0074:
264 {
265 return 0;//非法
266 }
\ 028D ?0075:
267
268 if (g_music_vars.location.disk == 'H')
\ 028D 3A0700 LD A,(g_music_vars+7)
\ 0290 FE48 CP 72
\ 0292 200D JR NZ,?0077
\ 0294 ?0076:
269 {
270 if((g_DiskStateFlag & SetCardOKFlag_def)!=0)
\ 0294 3A0000 LD A,(g_DiskStateFlag)
\ 0297 CB5F BIT 3,A
\ 0299 2803 JR Z,?0079
\ 029B ?0078:
271 DisplayErrInfor(CFILEOUT);//显示卡无文件
\ 029B CDA801 CALL LWRD ?0208
272 else
\ 029E ?0079:
273 g_music_vars.location.disk=='C';
\ 029E ?0080:
274 return 0; //因为前面已从 'C' 查到 'H' 了,已查完,未找到文件
\ 029E C35B03 JP LWRD ?0114
275 }
\ 02A1 ?0077:
276 else //还在 'C'
277 {
278 DisplayErrInfor(DFILEOUT);//显示磁盘无文件
\ 02A1 119201 LD DE,402
\ 02A4 CDAB01 CALL LWRD ?0209
279
280 //检测 sd 卡是否存在
281 if ((DRV_DetectUD(1) == 0x20)&&((g_DiskStateFlag & SetCardOKFlag_def)!=0))
\ 02A7 1E01 LD E,1
\ 02A9 CD0000 CALL LWRD DRV_DetectUD
\ 02AC FE20 CP 32
\ 02AE 2032 JR NZ,?0082
\ 02B0 3A0000 LD A,(g_DiskStateFlag)
\ 02B3 CB5F BIT 3,A
\ 02B5 282B JR Z,?0082
\ 02B7 ?0084:
\ 02B7 ?0083:
\ 02B7 ?0081:
282 {//有卡
283 g_music_vars.location.disk = 'H';
\ 02B7 3E48 LD A,72
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -