📄 ui_director_rec2.lst
字号:
\ 03BD F9 LD SP,HL
\ 03BE D1 POP DE
\ 03BF C1 POP BC
\ 03C0 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 03C3 get_dir_name:
274
275 /********************************************************************************
276 * Description : 获取第N个有效的目录
277 *
278 * Arguments :
279 *
280 * Returns :
281 *
282 * Notes :
283 *
284 ********************************************************************************
285 */
286 bool get_dir_name(char *file, WORD num)
287 {
\ 03C3 FDE5 PUSH IY
\ 03C5 DDE5 PUSH IX
\ 03C7 C5 PUSH BC
\ 03C8 F5 PUSH AF
\ 03C9 D5 PUSH DE
\ 03CA DDE1 POP IX
288
289 WORD m, tmp,total_file;
290 if(num>dir_total_num)
\ 03CC 2A4B00 LD HL,(dir_total_num)
\ 03CF A7 AND A
\ 03D0 ED42 SBC HL,BC
\ 03D2 3005 JR NC,?0039
\ 03D4 ?0038:
291 return 0;
\ 03D4 2E00 LD L,0
\ 03D6 C36204 JP LWRD ?0051
\ 03D9 ?0039:
292 if(num == 0) //根目录或目录首
\ 03D9 79 LD A,C
\ 03DA B0 OR B
\ 03DB 2030 JR NZ,?0041
\ 03DD ?0040:
293 {
294 if(fselDirLayer==0)
\ 03DD 3A0000 LD A,(fselDirLayer)
\ 03E0 B7 OR A
\ 03E1 2015 JR NZ,?0043
\ 03E3 ?0042:
295 {
296 file[0] = 'R';
\ 03E3 DD360052 LD (IX+0),82
297 file[1] = 'O';
\ 03E7 DD36014F LD (IX+1),79
298 file[2] = 'O';
\ 03EB DD36024F LD (IX+2),79
299 file[3] = 'T';
\ 03EF DD360354 LD (IX+3),84
300 file[4] = 0;
\ 03F3 DD7704 LD (IX+4),A
301 }
302 else
\ 03F6 1808 JR ?0044
\ 03F8 ?0043:
303 {
304 file[0] = '\\';
\ 03F8 DD36005C LD (IX+0),92
305 file[1] = 0;
\ 03FC DD360100 LD (IX+1),0
\ 0400 ?0044:
306 }
307 fselDirNo[fselDirLayer]=0;
\ 0400 ED4B0000 LD BC,(fselDirLayer)
\ 0404 0600 LD B,0
\ 0406 210000 LD HL,fselDirNo
\ 0409 09 ADD HL,BC
\ 040A 70 LD (HL),B
308 return 1;
\ 040B 1853 JR ?0047
309
310 }
\ 040D ?0041:
311 else
312 {
313 tmp=num;
314 fselDirNo[fselDirLayer]=tmp;
\ 040D ED4B0000 LD BC,(fselDirLayer)
\ 0411 0600 LD B,0
\ 0413 210000 LD HL,fselDirNo
\ 0416 09 ADD HL,BC
\ 0417 E5 PUSH HL
\ 0418 210400 LD HL,4
\ 041B 39 ADD HL,SP
\ 041C 46 LD B,(HL)
\ 041D E1 POP HL
\ 041E 70 LD (HL),B
315
316 if(tmp > 0)
\ 041F 210000 LD HL,0
\ 0422 39 ADD HL,SP
\ 0423 E5 PUSH HL
\ 0424 23 INC HL
\ 0425 23 INC HL
\ 0426 48 LD C,B
\ 0427 23 INC HL
\ 0428 46 LD B,(HL)
\ 0429 E1 POP HL
\ 042A 71 LD (HL),C
\ 042B 23 INC HL
\ 042C 70 LD (HL),B
\ 042D 79 LD A,C
\ 042E B0 OR B
\ 042F 282F JR Z,?0047
\ 0431 ?0045:
317 {
318 FS_Dir(file, Ui_IgnoreExt, FS_DIR_DIR);
\ 0431 0E81 LD C,129
\ 0433 C5 PUSH BC
\ 0434 010000 LD BC,Ui_IgnoreExt
\ 0437 CD0000 CALL LWRD FS_Dir
\ 043A E1 POP HL
319 for(m = 2; m <= tmp; m++)
\ 043B FD210200 LD IY,2
\ 043F ?0048:
\ 043F FDE5 PUSH IY
\ 0441 C1 POP BC
\ 0442 210000 LD HL,0
\ 0445 39 ADD HL,SP
\ 0446 56 LD D,(HL)
\ 0447 23 INC HL
\ 0448 66 LD H,(HL)
\ 0449 6A LD L,D
\ 044A A7 AND A
\ 044B ED42 SBC HL,BC
\ 044D 3811 JR C,?0047
\ 044F ?0049:
320 FS_Dir(file, Ui_IgnoreExt, FS_DIR_DIR_CONT);
\ 044F 0E01 LD C,1
\ 0451 C5 PUSH BC
\ 0452 010000 LD BC,Ui_IgnoreExt
\ 0455 DDE5 PUSH IX
\ 0457 D1 POP DE
\ 0458 CD0000 CALL LWRD FS_Dir
\ 045B E1 POP HL
321 }
\ 045C FD23 INC IY
\ 045E 18DF JR ?0048
\ 0460 ?0047:
\ 0460 ?0046:
322 return 1;
\ 0460 2E01 LD L,1
323 }
\ 0462 ?0051:
\ 0462 F1 POP AF
\ 0463 F1 POP AF
\ 0464 DDE1 POP IX
\ 0466 FDE1 POP IY
\ 0468 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
324 }
\ 046B DecodeOnePage:
325
326 /********************************************************************************
327 * Description : decode onepage file record .
328 *
329 * Arguments :
330 * top:first record
331 * bottom:last record
332 * type : show file kind
333 * string_id: language type
334 * Returns :
335 *
336 **type= DIRECTORY_MUSIC/DIRECTORY_VOICE/...
337 *
338 ********************************************************************************/
339 void DecodeOnePage(WORD top,WORD bottom,BYTE type, BYTE string_id)
340 {
\ 046B FDE5 PUSH IY
\ 046D DDE5 PUSH IX
\ 046F DD210000 LD IX,0
\ 0473 DD39 ADD IX,SP
\ 0475 C5 PUSH BC
\ 0476 D5 PUSH DE
\ 0477 21CEFF LD HL,65486
\ 047A 39 ADD HL,SP
\ 047B F9 LD SP,HL
341 WORD i,NameNum,temp;
342 char Longnamebuf[50];
343 for(i = top; i <= bottom; i++)
\ 047C D5 PUSH DE
\ 047D FDE1 POP IY
\ 047F ?0053:
\ 047F FDE5 PUSH IY
\ 0481 C1 POP BC
\ 0482 DD6EFE LD L,(IX-2)
\ 0485 DD66FF LD H,(IX-1)
\ 0488 A7 AND A
\ 0489 ED42 SBC HL,BC
\ 048B 3854 JR C,?0052
\ 048D ?0054:
344 {
345 {
346 get_dir_name(file_name, i );
\ 048D 110000 LD DE,file_name
\ 0490 3E00 LD A,BYTE3 get_dir_name
\ 0492 21C303 LD HL,LWRD get_dir_name
\ 0495 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
347 temp_record.filetype= TYPE_DIR;
\ 0498 AF XOR A
\ 0499 320000 LD (temp_record),A
348 }
349 GetLongNameAndSave(file_name,Longnamebuf,string_id); //保存长,短名字到 temp_record
\ 049C DD6E0A LD L,(IX+10)
\ 049F E5 PUSH HL
\ 04A0 210200 LD HL,2
\ 04A3 39 ADD HL,SP
\ 04A4 4D LD C,L
\ 04A5 44 LD B,H
\ 04A6 110000 LD DE,file_name
\ 04A9 3E00 LD A,BYTE3 GetLongNameAndSave
\ 04AB 213F00 LD HL,LWRD GetLongNameAndSave
\ 04AE CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 04B1 E1 POP HL
350 SaveOtherPara(); //保存其他目录结构相关参数到 temp_record
\ 04B2 3E00 LD A,BYTE3 SaveOtherPara
\ 04B4 21A800 LD HL,LWRD SaveOtherPara
\ 04B7 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
351
352 TransOneRecord(OnePageRecord+i-top,&temp_record); //将temp_record的记录数据保存到idm中
\ 04BA DD5EFC LD E,(IX-4)
\ 04BD DD56FD LD D,(IX-3)
\ 04C0 FDE5 PUSH IY
\ 04C2 E1 POP HL
\ 04C3 A7 AND A
\ 04C4 ED52 SBC HL,DE
\ 04C6 EB EX DE,HL
\ 04C7 014B00 LD BC,75
\ 04CA CD0000 CALL LWRD ?S_MUL_L02
\ 04CD 210000 LD HL,OnePageRecord
\ 04D0 19 ADD HL,DE
\ 04D1 EB EX DE,HL
\ 04D2 3E00 LD A,BYTE3 TransOneRecord
\ 04D4 21CC00 LD HL,LWRD TransOneRecord
\ 04D7 010000 LD BC,temp_record
\ 04DA CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
353 }
354 }
\ 04DD FD23 INC IY
\ 04DF 189E JR ?0053
\ 04E1 ?0052:
\ 04E1 DDF9 LD SP,IX
\ 04E3 DDE1 POP IX
\ 04E5 FDE1 POP IY
\ 04E7 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0000 RSEG CONST
\ 0000 menu_pos:
\ 0000 16 DEFB 22
\ 0001 28 DEFB '('
\ 0002 3A DEFB ':'
\ 0003 4C DEFB 'L'
\ 0004 5E DEFB '^'
\ 0005 70 DEFB 'p'
\ 0000 RSEG DEC_COM_FSL_D
\ 0000 temp_record:
\ 004B DEFS 75
\ 004B dir_total_num:
\ 004D DEFS 2
\ 004D file_total_num:
\ 004F DEFS 2
\ 004F list_total_num:
\ 0051 DEFS 2
\ 0051 list_active:
\ 0053 DEFS 2
\ 0053 cur_group:
\ 0055 DEFS 2
\ 0000 RSEG IDM_COM_FSL_D
\ 0000 OnePageRecord:
\ 01C2 DEFS 450
\ 01C2 dirbuf:
\ 023F DEFS 125
\ 0000 RSEG DEC_COM_FSL_R
\ 0000 Ui_IgnoreExt:
\ 0000 2A2020 DEFB '* '
\ 0003 00 DEFB 0
\ 0004 END
Errors: none
Warnings: none
Code size: 1258
Constant size: 10
Static variable size: Data(660) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -