📄 ui_director2.lst
字号:
\ 038A C30000 JP LWRD ?S_MUL_L02
\ 038D init_dir_buf:
235
236
237 //********************************************************************************
238 //* Description :建立快速查询表,目录更新时需要重新调用此函数
239 //*
240 //** Arguments :
241 //*
242 //* Returns :
243 //*
244 //* Notes :
245 //*
246 //********************************************************************************
247 void init_dir_buf(void)
248 {
\ 038D CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0390 DAFF DEFW -38
\ 0392 FDE5 PUSH IY
249 WORD i, tmp, total;
250 char Backbuf[32];
251 BOOL direxist;
252
253 Initdirbuf(); //清除目录检索表
\ 0394 3E00 LD A,BYTE3 Initdirbuf
\ 0396 210000 LD HL,LWRD Initdirbuf
\ 0399 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
254 tmp = 1;
255
256 FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
\ 039C 210000 LD HL,0
\ 039F E5 PUSH HL
\ 03A0 0E02 LD C,2
\ 03A2 2E0A LD L,10
\ 03A4 39 ADD HL,SP
\ 03A5 EB EX DE,HL
\ 03A6 CD0000 CALL LWRD FS_Backup
\ 03A9 E1 POP HL
257 dir_total_num=count_dir_num();
\ 03AA 3E00 LD A,BYTE3 count_dir_num
\ 03AC 210000 LD HL,LWRD count_dir_num
\ 03AF CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 03B2 224B00 LD (dir_total_num),HL
258 file_total_num=GetFileTotalCur(FALSE);
\ 03B5 1E00 LD E,0
\ 03B7 3E00 LD A,BYTE3 GetFileTotalCur
\ 03B9 210000 LD HL,LWRD GetFileTotalCur
\ 03BC CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 03BF 224D00 LD (file_total_num),HL
259 list_total_num=dir_total_num+file_total_num+1;
\ 03C2 ED4B4B00 LD BC,(dir_total_num)
\ 03C6 09 ADD HL,BC
\ 03C7 23 INC HL
\ 03C8 224F00 LD (list_total_num),HL
260 fselTotal=file_total_num;
\ 03CB 2A4D00 LD HL,(file_total_num)
\ 03CE 220000 LD (fselTotal),HL
261
262 for(i = 1; i <= dir_total_num; i++)
\ 03D1 FD210100 LD IY,1
\ 03D5 DD36DA01 LD (IX-38),1
\ 03D9 DD36DB00 LD (IX-37),0
\ 03DD ?0034:
\ 03DD DD4EDA LD C,(IX-38)
\ 03E0 DD46DB LD B,(IX-37)
\ 03E3 2A4B00 LD HL,(dir_total_num)
\ 03E6 A7 AND A
\ 03E7 ED42 SBC HL,BC
\ 03E9 DAA704 JP C,?0033
\ 03EC ?0035:
\ 03EC ?0038:
263 {
264 while(1)
265 {
266 if(tmp == 1)
\ 03EC FDE5 PUSH IY
\ 03EE E1 POP HL
\ 03EF 3E01 LD A,1
\ 03F1 AD XOR L
\ 03F2 B4 OR H
\ 03F3 200D JR NZ,?0041
\ 03F5 ?0040:
267 FS_Dir(file_name, Ui_IgnoreExt, FS_DIR_DIR);
\ 03F5 0E81 LD C,129
\ 03F7 C5 PUSH BC
\ 03F8 010000 LD BC,Ui_IgnoreExt
\ 03FB 110000 LD DE,file_name
\ 03FE CD0000 CALL LWRD FS_Dir
\ 0401 E1 POP HL
\ 0402 ?0041:
268 if(tmp > 1)
\ 0402 FDE5 PUSH IY
\ 0404 C1 POP BC
\ 0405 210100 LD HL,1
\ 0408 A7 AND A
\ 0409 ED42 SBC HL,BC
\ 040B 300D JR NC,?0043
\ 040D ?0042:
269 FS_Dir(file_name, Ui_IgnoreExt, FS_DIR_DIR_CONT);
\ 040D 0E01 LD C,1
\ 040F C5 PUSH BC
\ 0410 010000 LD BC,Ui_IgnoreExt
\ 0413 110000 LD DE,file_name
\ 0416 CD0000 CALL LWRD FS_Dir
\ 0419 E1 POP HL
\ 041A ?0043:
270 tmp++;
271 FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
\ 041A 210000 LD HL,0
\ 041D E5 PUSH HL
\ 041E 0E02 LD C,2
\ 0420 2E0A LD L,10
\ 0422 39 ADD HL,SP
\ 0423 EB EX DE,HL
\ 0424 CD0000 CALL LWRD FS_Backup
\ 0427 E1 POP HL
272 total = GetFileTotal(file_name, TRUE);
\ 0428 0E01 LD C,1
\ 042A 110000 LD DE,file_name
\ 042D 3E00 LD A,BYTE3 GetFileTotal
\ 042F 210000 LD HL,LWRD GetFileTotal
\ 0432 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0435 DD75DC LD (IX-36),L
\ 0438 DD74DD LD (IX-35),H
273 FS_CD(file_name);
\ 043B 110000 LD DE,file_name
\ 043E CD0000 CALL LWRD FS_CD
274 if (ToDirEntry(file_name,1))
\ 0441 010100 LD BC,1
\ 0444 110000 LD DE,file_name
\ 0447 3E00 LD A,BYTE3 ToDirEntry
\ 0449 210000 LD HL,LWRD ToDirEntry
\ 044C CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 044F 2C INC L
\ 0450 2D DEC L
\ 0451 FD23 INC IY
\ 0453 2806 JR Z,?0045
\ 0455 ?0044:
275 {
276 direxist=1;
\ 0455 DD36DE01 LD (IX-34),1
277 }
278 else
\ 0459 1803 JR ?0046
\ 045B ?0045:
279 {
280 direxist=0;
\ 045B DD75DE LD (IX-34),L
\ 045E ?0046:
281 }
282 output8(0x4e,input8(0x4e)|0x8);
\ 045E DB4E IN A,(78)
\ 0460 CBDF SET 3,A
\ 0462 D34E OUT (78),A
283 FS_CD("\\");
\ 0464 110000 LD DE,?0047
\ 0467 CD0000 CALL LWRD FS_CD
284
285 FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
\ 046A 210000 LD HL,0
\ 046D E5 PUSH HL
\ 046E 0E02 LD C,2
\ 0470 2E0A LD L,10
\ 0472 39 ADD HL,SP
\ 0473 EB EX DE,HL
\ 0474 CD0000 CALL LWRD FS_Restore
\ 0477 E1 POP HL
286 output8(0x4e,input8(0x4e)|0x08); //清WATCH DOG
\ 0478 DB4E IN A,(78)
\ 047A CBDF SET 3,A
\ 047C D34E OUT (78),A
287 if((total != 0)||(direxist))
\ 047E DD7EDC LD A,(IX-36)
\ 0481 DDB6DD OR (IX-35)
\ 0484 2006 JR NZ,?0037
\ 0486 DDB6DE OR (IX-34)
\ 0489 CAEC03 JP Z,?0035
\ 048C ?0050:
\ 048C ?0051:
\ 048C ?0048:
288 {
289 break;
\ 048C ?0049:
\ 048C ?0037:
290 }
291 }
292 Setdirbuf( tmp - 1 );
\ 048C 21FFFF LD HL,65535
\ 048F FDE5 PUSH IY
\ 0491 C1 POP BC
\ 0492 09 ADD HL,BC
\ 0493 EB EX DE,HL
\ 0494 3E00 LD A,BYTE3 Setdirbuf
\ 0496 210000 LD HL,LWRD Setdirbuf
\ 0499 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 049C DD34DA INC (IX-38)
\ 049F 2003 JR NZ,?0080
\ 04A1 DD34DB INC (IX-37)
\ 04A4 ?0080:
\ 04A4 C3DD03 JP LWRD ?0034
\ 04A7 ?0033:
293 }
294 FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
\ 04A7 210000 LD HL,0
\ 04AA E5 PUSH HL
\ 04AB 0E02 LD C,2
\ 04AD 2E0A LD L,10
\ 04AF 39 ADD HL,SP
\ 04B0 EB EX DE,HL
\ 04B1 CD0000 CALL LWRD FS_Restore
\ 04B4 E1 POP HL
295 }
\ 04B5 FDE1 POP IY
\ 04B7 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 04BA 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 {
\ 04BA FDE5 PUSH IY
\ 04BC DDE5 PUSH IX
\ 04BE C5 PUSH BC
\ 04BF F5 PUSH AF
\ 04C0 D5 PUSH DE
\ 04C1 DDE1 POP IX
310
311 WORD m, tmp,total_file;
312 if(num>dir_total_num)
\ 04C3 2A4B00 LD HL,(dir_total_num)
\ 04C6 A7 AND A
\ 04C7 ED42 SBC HL,BC
\ 04C9 3005 JR NC,?0053
\ 04CB ?0052:
313 return 0;
\ 04CB 2E00 LD L,0
\ 04CD C36205 JP LWRD ?0065
\ 04D0 ?0053:
314 if(num == 0) //根目录或目录首
\ 04D0 79 LD A,C
\ 04D1 B0 OR B
\ 04D2 2030 JR NZ,?0055
\ 04D4 ?0054:
315 {
316 if(fselDirLayer==0)
\ 04D4 3A0000 LD A,(fselDirLayer)
\ 04D7 B7 OR A
\ 04D8 2015 JR NZ,?0057
\ 04DA ?0056:
317 {
318 file[0] = 'R';
\ 04DA DD360052 LD (IX+0),82
319 file[1] = 'O';
\ 04DE DD36014F LD (IX+1),79
320 file[2] = 'O';
\ 04E2 DD36024F LD (IX+2),79
321 file[3] = 'T';
\ 04E6 DD360354 LD (IX+3),84
322 file[4] = 0;
\ 04EA DD7704 LD (IX+4),A
323 }
324 else
\ 04ED 1808 JR ?0058
\ 04EF ?0057:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -