📄 ui_director2.lst
字号:
240 //** Arguments :
241 //*
242 //* Returns :
243 //*
244 //* Notes :
245 //*
246 //********************************************************************************
247 void init_dir_buf(void)
248 {
\ 038E C5 PUSH BC
\ 038F D5 PUSH DE
\ 0390 FDE5 PUSH IY
\ 0392 DDE5 PUSH IX
\ 0394 21DCFF LD HL,65500
\ 0397 39 ADD HL,SP
\ 0398 F9 LD SP,HL
249 WORD i, tmp, total;
250 char Backbuf[32];
251 BOOL direxist;
252
253 Initdirbuf(); //清除目录检索表
\ 0399 3E00 LD A,BYTE3 Initdirbuf
\ 039B 210000 LD HL,LWRD Initdirbuf
\ 039E CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
254 tmp = 1;
255
256 FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
\ 03A1 210000 LD HL,0
\ 03A4 E5 PUSH HL
\ 03A5 0E02 LD C,2
\ 03A7 2E06 LD L,6
\ 03A9 39 ADD HL,SP
\ 03AA EB EX DE,HL
\ 03AB CD0000 CALL LWRD FS_Backup
\ 03AE E1 POP HL
257 dir_total_num=count_dir_num();
\ 03AF 3E00 LD A,BYTE3 count_dir_num
\ 03B1 210000 LD HL,LWRD count_dir_num
\ 03B4 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 03B7 224B00 LD (dir_total_num),HL
258 file_total_num=GetFileTotalCur(FALSE);
\ 03BA 1E00 LD E,0
\ 03BC 3E00 LD A,BYTE3 GetFileTotalCur
\ 03BE 210000 LD HL,LWRD GetFileTotalCur
\ 03C1 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 03C4 224D00 LD (file_total_num),HL
259 list_total_num=dir_total_num+file_total_num+1;
\ 03C7 ED4B4B00 LD BC,(dir_total_num)
\ 03CB 09 ADD HL,BC
\ 03CC 23 INC HL
\ 03CD 224F00 LD (list_total_num),HL
260 fselTotal=file_total_num;
\ 03D0 2A4D00 LD HL,(file_total_num)
\ 03D3 220000 LD (fselTotal),HL
261
262 for(i = 1; i <= dir_total_num; i++)
\ 03D6 DD210100 LD IX,1
\ 03DA 210000 LD HL,0
\ 03DD 39 ADD HL,SP
\ 03DE 3601 LD (HL),1
\ 03E0 23 INC HL
\ 03E1 3600 LD (HL),0
\ 03E3 ?0034:
\ 03E3 2B DEC HL
\ 03E4 4E LD C,(HL)
\ 03E5 23 INC HL
\ 03E6 46 LD B,(HL)
\ 03E7 2A4B00 LD HL,(dir_total_num)
\ 03EA A7 AND A
\ 03EB ED42 SBC HL,BC
\ 03ED DAAC04 JP C,?0033
\ 03F0 ?0035:
\ 03F0 ?0038:
263 {
264 while(1)
265 {
266 if(tmp == 1)
\ 03F0 DDE5 PUSH IX
\ 03F2 E1 POP HL
\ 03F3 3E01 LD A,1
\ 03F5 AD XOR L
\ 03F6 B4 OR H
\ 03F7 200D JR NZ,?0041
\ 03F9 ?0040:
267 FS_Dir(file_name, Ui_IgnoreExt, FS_DIR_DIR);
\ 03F9 0E81 LD C,129
\ 03FB C5 PUSH BC
\ 03FC 010000 LD BC,Ui_IgnoreExt
\ 03FF 110000 LD DE,file_name
\ 0402 CD0000 CALL LWRD FS_Dir
\ 0405 E1 POP HL
\ 0406 ?0041:
268 if(tmp > 1)
\ 0406 DDE5 PUSH IX
\ 0408 C1 POP BC
\ 0409 210100 LD HL,1
\ 040C A7 AND A
\ 040D ED42 SBC HL,BC
\ 040F 300D JR NC,?0043
\ 0411 ?0042:
269 FS_Dir(file_name, Ui_IgnoreExt, FS_DIR_DIR_CONT);
\ 0411 0E01 LD C,1
\ 0413 C5 PUSH BC
\ 0414 010000 LD BC,Ui_IgnoreExt
\ 0417 110000 LD DE,file_name
\ 041A CD0000 CALL LWRD FS_Dir
\ 041D E1 POP HL
\ 041E ?0043:
270 tmp++;
271 FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
\ 041E 210000 LD HL,0
\ 0421 E5 PUSH HL
\ 0422 0E02 LD C,2
\ 0424 2E06 LD L,6
\ 0426 39 ADD HL,SP
\ 0427 EB EX DE,HL
\ 0428 CD0000 CALL LWRD FS_Backup
\ 042B E1 POP HL
272 total = GetFileTotal(file_name, TRUE);
\ 042C 0E01 LD C,1
\ 042E 110000 LD DE,file_name
\ 0431 3E00 LD A,BYTE3 GetFileTotal
\ 0433 210000 LD HL,LWRD GetFileTotal
\ 0436 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0439 E5 PUSH HL
\ 043A FDE1 POP IY
273 FS_CD(file_name);
\ 043C 110000 LD DE,file_name
\ 043F CD0000 CALL LWRD FS_CD
274 if (ToDirEntry(file_name,1))
\ 0442 010100 LD BC,1
\ 0445 110000 LD DE,file_name
\ 0448 3E00 LD A,BYTE3 ToDirEntry
\ 044A 210000 LD HL,LWRD ToDirEntry
\ 044D CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0450 2C INC L
\ 0451 2D DEC L
\ 0452 210200 LD HL,2
\ 0455 39 ADD HL,SP
\ 0456 DD23 INC IX
\ 0458 2804 JR Z,?0045
\ 045A ?0044:
275 {
276 direxist=1;
\ 045A 3601 LD (HL),1
277 }
278 else
\ 045C 1802 JR ?0046
\ 045E ?0045:
279 {
280 direxist=0;
\ 045E 3600 LD (HL),0
\ 0460 ?0046:
281 }
282 output8(0x4e,input8(0x4e)|0x8);
\ 0460 DB4E IN A,(78)
\ 0462 CBDF SET 3,A
\ 0464 D34E OUT (78),A
283 FS_CD("\\");
\ 0466 110000 LD DE,?0047
\ 0469 CD0000 CALL LWRD FS_CD
284
285 FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
\ 046C 210000 LD HL,0
\ 046F E5 PUSH HL
\ 0470 0E02 LD C,2
\ 0472 2E06 LD L,6
\ 0474 39 ADD HL,SP
\ 0475 EB EX DE,HL
\ 0476 CD0000 CALL LWRD FS_Restore
\ 0479 E1 POP HL
286 output8(0x4e,input8(0x4e)|0x08); //清WATCH DOG
\ 047A DB4E IN A,(78)
\ 047C CBDF SET 3,A
\ 047E D34E OUT (78),A
287 if((total != 0)||(direxist))
\ 0480 FDE5 PUSH IY
\ 0482 E1 POP HL
\ 0483 7D LD A,L
\ 0484 B4 OR H
\ 0485 2008 JR NZ,?0050
\ 0487 210200 LD HL,2
\ 048A 39 ADD HL,SP
\ 048B B6 OR (HL)
\ 048C CAF003 JP Z,?0035
\ 048F ?0050:
\ 048F ?0051:
\ 048F ?0048:
288 {
289 break;
\ 048F ?0049:
\ 048F ?0037:
290 }
291 }
292 Setdirbuf( tmp - 1 );
\ 048F 21FFFF LD HL,65535
\ 0492 DDE5 PUSH IX
\ 0494 C1 POP BC
\ 0495 09 ADD HL,BC
\ 0496 EB EX DE,HL
\ 0497 3E00 LD A,BYTE3 Setdirbuf
\ 0499 210000 LD HL,LWRD Setdirbuf
\ 049C CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 049F 210000 LD HL,0
\ 04A2 39 ADD HL,SP
\ 04A3 34 INC (HL)
\ 04A4 23 INC HL
\ 04A5 C2E303 JP NZ,?0034
\ 04A8 34 INC (HL)
\ 04A9 C3E303 JP LWRD ?0034
\ 04AC ?0033:
293 }
294 FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
\ 04AC 210000 LD HL,0
\ 04AF E5 PUSH HL
\ 04B0 0E02 LD C,2
\ 04B2 2E06 LD L,6
\ 04B4 39 ADD HL,SP
\ 04B5 EB EX DE,HL
\ 04B6 CD0000 CALL LWRD FS_Restore
\ 04B9 E1 POP HL
295 }
\ 04BA 212400 LD HL,36
\ 04BD 39 ADD HL,SP
\ 04BE F9 LD SP,HL
\ 04BF DDE1 POP IX
\ 04C1 FDE1 POP IY
\ 04C3 D1 POP DE
\ 04C4 C1 POP BC
\ 04C5 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 04C8 get_dir_name:
296
297 /********************************************************************************
298 * Description : 获取第N个有效的目录
299 *
300 * Arguments :
301 *
302 * Returns :
303 *
304 * Notes :
305 *
306 ********************************************************************************
307 */
308 bool get_dir_name(char *file, WORD num)
309 {
\ 04C8 FDE5 PUSH IY
\ 04CA DDE5 PUSH IX
\ 04CC C5 PUSH BC
\ 04CD F5 PUSH AF
\ 04CE D5 PUSH DE
\ 04CF DDE1 POP IX
310
311 WORD m, tmp,total_file;
312 if(num>dir_total_num)
\ 04D1 2A4B00 LD HL,(dir_total_num)
\ 04D4 A7 AND A
\ 04D5 ED42 SBC HL,BC
\ 04D7 3005 JR NC,?0053
\ 04D9 ?0052:
313 return 0;
\ 04D9 2E00 LD L,0
\ 04DB C37605 JP LWRD ?0065
\ 04DE ?0053:
314 if(num == 0) //根目录或目录首
\ 04DE 79 LD A,C
\ 04DF B0 OR B
\ 04E0 2030 JR NZ,?0055
\ 04E2 ?0054:
315 {
316 if(fselDirLayer==0)
\ 04E2 3A0000 LD A,(fselDirLayer)
\ 04E5 B7 OR A
\ 04E6 2015 JR NZ,?0057
\ 04E8 ?0056:
317 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -