📄 sub_function3.lst
字号:
283 g_music_vars.location.disk = 'H';
\ 02BC 3E48 LD A,72
\ 02BE 320700 LD (g_music_vars+7),A
284 if (FSELInit(FSEL_TYPE_MUSIC, FSEL_ALL_SEQUENCE, g_music_vars.fselmod, 'H'))
\ 02C1 4F LD C,A
\ 02C2 C5 PUSH BC
\ 02C3 215100 LD HL,g_music_vars+81
\ 02C6 4E LD C,(HL)
\ 02C7 C5 PUSH BC
\ 02C8 CD8901 CALL LWRD ?0205
\ 02CB F1 POP AF
\ 02CC F1 POP AF
\ 02CD 2C INC L
\ 02CE 2D DEC L
\ 02CF 2805 JR Z,?0088
\ 02D1 ?0085:
285 {
286 if (FSELGetNext(g_music_vars.location.filename) != 0)
\ 02D1 CD3C02 CALL LWRD ?0204
\ 02D4 2033 JR NZ,?0172
\ 02D6 ?0087:
287 {
288 return 1;
289 }
\ 02D6 ?0088:
\ 02D6 ?0086:
290 }
291 result = FSELGetErrID();
\ 02D6 CD9401 CALL LWRD ?0206
292 if (FSELGetErrID() != 0)
\ 02D9 CD9401 CALL LWRD ?0206
\ 02DC 2C INC L
\ 02DD 2D DEC L
\ 02DE 2805 JR Z,?0090
\ 02E0 ?0089:
293 {
294 DisplayErrInfor(CFILEOUT);//显示卡无文件
\ 02E0 117502 LD DE,629
\ 02E3 1851 JR ?0177
295 return 0;
296 }
\ 02E5 ?0090:
297 return 0;//非法
\ 02E5 1879 JR ?0114
298 }
\ 02E7 ?0082:
299 else
300 {
301 g_music_vars.location.disk = 'C';
\ 02E7 3E43 LD A,67
\ 02E9 320700 LD (g_music_vars+7),A
302 return 0;//没卡退出
\ 02EC 1872 JR ?0114
303 }
304 }
305 return 0;
306 }
\ 02EE ?0065:
307 else //g_music_vars.location.disk == 'H'
308 {
309 if (FSELGetNext(g_music_vars.location.filename) != 0)
\ 02EE CD4402 CALL LWRD ?0203
\ 02F1 2016 JR NZ,?0172
\ 02F3 ?0091:
310 {
311 return 1;//找到文件
312 }
\ 02F3 ?0092:
313
314 if (FSELGetErrID() == 0)
\ 02F3 CD9401 CALL LWRD ?0206
\ 02F6 2C INC L
\ 02F7 2D DEC L
\ 02F8 2866 JR Z,?0114
\ 02FA ?0093:
315 {
316 return 0;//非法
317 }
\ 02FA ?0094:
318
319 //再查一次,因为可能这目录前面还有文件(虽然后面已无文件)
320 if (InitFileSelector() == 0)
\ 02FA 3E00 LD A,BYTE3 InitFileSelector
\ 02FC 21A200 LD HL,LWRD InitFileSelector
\ 02FF CD4F02 CALL LWRD ?0211
\ 0302 285C JR Z,?0114
\ 0304 ?0095:
321 {
322 return 0;
323 }
\ 0304 ?0096:
324
325 if (FSELGetNext(g_music_vars.location.filename) != 0)
\ 0304 CD3C02 CALL LWRD ?0204
\ 0307 2802 JR Z,?0098
\ 0309 ?0097:
326 {
327 return 1;//找到文件
\ 0309 ?0172:
\ 0309 1846 JR ?0173
328 }
\ 030B ?0098:
329
330 if (FSELGetErrID() == 0)
\ 030B CD9401 CALL LWRD ?0206
\ 030E 2C INC L
\ 030F 2D DEC L
\ 0310 284E JR Z,?0114
\ 0312 ?0099:
331 {
332 return 0;//非法
333 }
\ 0312 ?0100:
334
335 if (g_music_vars.location.disk == 'C')
\ 0312 3A0700 LD A,(g_music_vars+7)
\ 0315 FE43 CP 67
\ 0317 281A JR Z,?0178
\ 0319 ?0101:
336 {
337 DisplayErrInfor(DFILEOUT);//显示磁盘无文件
338 return 0; //因为前面已从 'H' 查到 'C' 了,已查完,未找到文件
339 }
\ 0319 ?0102:
340
341 if((g_DiskStateFlag & SetCardOKFlag_def)!=0)
\ 0319 3A0000 LD A,(g_DiskStateFlag)
\ 031C CB5F BIT 3,A
\ 031E 2803 JR Z,?0104
\ 0320 ?0103:
342 DisplayErrInfor(CFILEOUT);//显示卡无文件
\ 0320 CDAD01 CALL LWRD ?0208
\ 0323 ?0104:
343
344 g_music_vars.location.disk = 'C';
\ 0323 3E43 LD A,67
\ 0325 320700 LD (g_music_vars+7),A
345 if ((g_DiskStateFlag & SetDiskOKFlag_def) == 0)
\ 0328 3A0000 LD A,(g_DiskStateFlag)
\ 032B CB7F BIT 7,A
\ 032D 2831 JR Z,?0114
\ 032F ?0105:
346 {
347 return 0;
348 }
\ 032F ?0106:
349
350 if ((g_DiskStateFlag & SetDiskNoFile_def) != 0)
\ 032F CB77 BIT 6,A
\ 0331 2808 JR Z,?0108
\ 0333 ?0107:
351 {
352 DisplayErrInfor(DFILEOUT);//显示磁盘无文件
\ 0333 ?0178:
\ 0333 117402 LD DE,628
\ 0336 ?0177:
\ 0336 CDB001 CALL LWRD ?0209
353 return 0;
\ 0339 1825 JR ?0114
354 }
\ 033B ?0108:
355
356 if (FSELInit(FSEL_TYPE_MUSIC, FSEL_ALL_SEQUENCE, g_music_vars.fselmod, 'C'))
\ 033B 0E43 LD C,67
\ 033D C5 PUSH BC
\ 033E 215100 LD HL,g_music_vars+81
\ 0341 4E LD C,(HL)
\ 0342 C5 PUSH BC
\ 0343 CD8901 CALL LWRD ?0205
\ 0346 F1 POP AF
\ 0347 F1 POP AF
\ 0348 2C INC L
\ 0349 2D DEC L
\ 034A 280A JR Z,?0112
\ 034C ?0109:
357 {
358 if (FSELGetNext(g_music_vars.location.filename) != 0)
\ 034C CD3C02 CALL LWRD ?0204
\ 034F 2805 JR Z,?0112
\ 0351 ?0111:
359 {
360 return 1;//找到文件
\ 0351 ?0173:
\ 0351 210100 LD HL,1
361 }
\ 0354 180D JR ?0115
\ 0356 ?0112:
\ 0356 ?0110:
362 }
363 result = FSELGetErrID();
\ 0356 CD9401 CALL LWRD ?0206
364
365 if (result != 0)
\ 0359 7D LD A,L
\ 035A B7 OR A
\ 035B 2803 JR Z,?0114
\ 035D ?0113:
366 {
367 DisplayErrInfor(DFILEOUT);//显示磁盘无文件
\ 035D CD9C01 CALL LWRD ?0207
368 g_DiskStateFlag |= SetDiskNoFile_def;//标志磁盘无文件
369 return 0;//
370 }
\ 0360 ?0114:
371 return 0;
\ 0360 210000 LD HL,0
372 }
\ 0363 ?0115:
\ 0363 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
373 }
374
375
376 /*
377 // error information defines in file selector
378 #define FSEL_ERR_OUTOF 1
379 #define FSEL_ERR_EMPTY 2
380 #define FSEL_ERR_SETDIR 3
381 #define FSEL_ERR_SETFILE 4
382 #define FSEL_ERR_EXCEPTION 5
383
384
385 #define FSEL_ERR_FS 20
386 #define FSEL_ERR_FAIL 21
387 #define FSEL_ERR_DISK 22
388 #define FSEL_ERR_PLAYLIST 23
389 */
390
391 /*
392 //error information display
393 1) 磁盘错 : 在 main.c 中已报
394 2) 卡错 : 在 main.c 中已报
395
396 3) 磁盘无文件
397 4) 卡无文件
398
399 5) 空间满 :在 ui_follow.c 文件中已报
400 7) 目录已满 :在 ui_follow.c 文件中已报
401
402 6) 电量不足!:
403 8) 格式错误
404 9) 卡已拔出
405
406 */
\ 0366 END
Errors: none
Warnings: none
Code size: 870
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -