ui_director2.lst
来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 1,325 行 · 第 1/5 页
LST
1,325 行
\ 0390 C30000 JP LWRD ?S_MUL_L02
\ 0393 init_dir_buf:
226
227
228 //********************************************************************************
229 //* Description :建立快速查询表,目录更新时需要重新调用此函数
230 //*
231 //** Arguments :
232 //*
233 //* Returns :
234 //*
235 //* Notes :
236 //*
237 //********************************************************************************
238 void init_dir_buf(void)
239 {
\ 0393 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0396 DAFF DEFW -38
\ 0398 FDE5 PUSH IY
240 WORD i, tmp, total;
241 char Backbuf[32];
242 BOOL direxist;
243
244 Initdirbuf(); //清除目录检索表
\ 039A 3E00 LD A,BYTE3 Initdirbuf
\ 039C 210000 LD HL,LWRD Initdirbuf
\ 039F CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
245 tmp = 1;
246
247 FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
\ 03A2 210000 LD HL,0
\ 03A5 E5 PUSH HL
\ 03A6 0E02 LD C,2
\ 03A8 2E0A LD L,10
\ 03AA 39 ADD HL,SP
\ 03AB EB EX DE,HL
\ 03AC CD0000 CALL LWRD FS_Backup
\ 03AF E1 POP HL
248 dir_total_num=count_dir_num();
\ 03B0 3E00 LD A,BYTE3 count_dir_num
\ 03B2 210000 LD HL,LWRD count_dir_num
\ 03B5 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 03B8 224B00 LD (dir_total_num),HL
249 file_total_num=GetFileTotalCur(FALSE);
\ 03BB 1E00 LD E,0
\ 03BD 3E00 LD A,BYTE3 GetFileTotalCur
\ 03BF 210000 LD HL,LWRD GetFileTotalCur
\ 03C2 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 03C5 224D00 LD (file_total_num),HL
250 list_total_num=dir_total_num+file_total_num+1;
\ 03C8 ED4B4B00 LD BC,(dir_total_num)
\ 03CC 09 ADD HL,BC
\ 03CD 23 INC HL
\ 03CE 224F00 LD (list_total_num),HL
251 fselTotal=file_total_num;
\ 03D1 2A4D00 LD HL,(file_total_num)
\ 03D4 220000 LD (fselTotal),HL
252
253 for(i = 1; i <= dir_total_num; i++)
\ 03D7 FD210100 LD IY,1
\ 03DB DD36DA01 LD (IX-38),1
\ 03DF DD36DB00 LD (IX-37),0
\ 03E3 ?0034:
\ 03E3 DD4EDA LD C,(IX-38)
\ 03E6 DD46DB LD B,(IX-37)
\ 03E9 2A4B00 LD HL,(dir_total_num)
\ 03EC A7 AND A
\ 03ED ED42 SBC HL,BC
\ 03EF DAAD04 JP C,?0033
\ 03F2 ?0035:
\ 03F2 ?0038:
254 {
255 while(1)
256 {
257 if(tmp == 1)
\ 03F2 FDE5 PUSH IY
\ 03F4 E1 POP HL
\ 03F5 3E01 LD A,1
\ 03F7 AD XOR L
\ 03F8 B4 OR H
\ 03F9 200D JR NZ,?0041
\ 03FB ?0040:
258 FS_Dir(file_name, Ui_IgnoreExt, FS_DIR_DIR);
\ 03FB 0E81 LD C,129
\ 03FD C5 PUSH BC
\ 03FE 010000 LD BC,Ui_IgnoreExt
\ 0401 110000 LD DE,file_name
\ 0404 CD0000 CALL LWRD FS_Dir
\ 0407 E1 POP HL
\ 0408 ?0041:
259 if(tmp > 1)
\ 0408 FDE5 PUSH IY
\ 040A C1 POP BC
\ 040B 210100 LD HL,1
\ 040E A7 AND A
\ 040F ED42 SBC HL,BC
\ 0411 300D JR NC,?0043
\ 0413 ?0042:
260 FS_Dir(file_name, Ui_IgnoreExt, FS_DIR_DIR_CONT);
\ 0413 0E01 LD C,1
\ 0415 C5 PUSH BC
\ 0416 010000 LD BC,Ui_IgnoreExt
\ 0419 110000 LD DE,file_name
\ 041C CD0000 CALL LWRD FS_Dir
\ 041F E1 POP HL
\ 0420 ?0043:
261 tmp++;
262 FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
\ 0420 210000 LD HL,0
\ 0423 E5 PUSH HL
\ 0424 0E02 LD C,2
\ 0426 2E0A LD L,10
\ 0428 39 ADD HL,SP
\ 0429 EB EX DE,HL
\ 042A CD0000 CALL LWRD FS_Backup
\ 042D E1 POP HL
263 total = GetFileTotal(file_name, TRUE);
\ 042E 0E01 LD C,1
\ 0430 110000 LD DE,file_name
\ 0433 3E00 LD A,BYTE3 GetFileTotal
\ 0435 210000 LD HL,LWRD GetFileTotal
\ 0438 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 043B DD75DC LD (IX-36),L
\ 043E DD74DD LD (IX-35),H
264 FS_CD(file_name);
\ 0441 110000 LD DE,file_name
\ 0444 CD0000 CALL LWRD FS_CD
265 if (ToDirEntry(file_name,1))
\ 0447 010100 LD BC,1
\ 044A 110000 LD DE,file_name
\ 044D 3E00 LD A,BYTE3 ToDirEntry
\ 044F 210000 LD HL,LWRD ToDirEntry
\ 0452 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0455 2C INC L
\ 0456 2D DEC L
\ 0457 FD23 INC IY
\ 0459 2806 JR Z,?0045
\ 045B ?0044:
266 {
267 direxist=1;
\ 045B DD36DE01 LD (IX-34),1
268 }
269 else
\ 045F 1803 JR ?0046
\ 0461 ?0045:
270 {
271 direxist=0;
\ 0461 DD75DE LD (IX-34),L
\ 0464 ?0046:
272 }
273 output8(0x4e,input8(0x4e)|0x8);
\ 0464 DB4E IN A,(78)
\ 0466 CBDF SET 3,A
\ 0468 D34E OUT (78),A
274 FS_CD("\\");
\ 046A 110000 LD DE,?0047
\ 046D CD0000 CALL LWRD FS_CD
275
276 FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
\ 0470 210000 LD HL,0
\ 0473 E5 PUSH HL
\ 0474 0E02 LD C,2
\ 0476 2E0A LD L,10
\ 0478 39 ADD HL,SP
\ 0479 EB EX DE,HL
\ 047A CD0000 CALL LWRD FS_Restore
\ 047D E1 POP HL
277 output8(0x4e,input8(0x4e)|0x08); //清WATCH DOG
\ 047E DB4E IN A,(78)
\ 0480 CBDF SET 3,A
\ 0482 D34E OUT (78),A
278 if((total != 0)||(direxist))
\ 0484 DD7EDC LD A,(IX-36)
\ 0487 DDB6DD OR (IX-35)
\ 048A 2006 JR NZ,?0037
\ 048C DDB6DE OR (IX-34)
\ 048F CAF203 JP Z,?0035
\ 0492 ?0050:
\ 0492 ?0051:
\ 0492 ?0048:
279 {
280 break;
\ 0492 ?0049:
\ 0492 ?0037:
281 }
282 }
283 Setdirbuf( tmp - 1 );
\ 0492 21FFFF LD HL,65535
\ 0495 FDE5 PUSH IY
\ 0497 C1 POP BC
\ 0498 09 ADD HL,BC
\ 0499 EB EX DE,HL
\ 049A 3E00 LD A,BYTE3 Setdirbuf
\ 049C 210000 LD HL,LWRD Setdirbuf
\ 049F CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 04A2 DD34DA INC (IX-38)
\ 04A5 2003 JR NZ,?0081
\ 04A7 DD34DB INC (IX-37)
\ 04AA ?0081:
\ 04AA C3E303 JP LWRD ?0034
\ 04AD ?0033:
284 }
285 FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
\ 04AD 210000 LD HL,0
\ 04B0 E5 PUSH HL
\ 04B1 0E02 LD C,2
\ 04B3 2E0A LD L,10
\ 04B5 39 ADD HL,SP
\ 04B6 EB EX DE,HL
\ 04B7 CD0000 CALL LWRD FS_Restore
\ 04BA E1 POP HL
286 }
\ 04BB FDE1 POP IY
\ 04BD C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 04C0 get_dir_name:
287
288 /********************************************************************************
289 * Description : 获取第N个有效的目录
290 *
291 * Arguments :
292 *
293 * Returns :
294 *
295 * Notes :
296 *
297 ********************************************************************************
298 */
299 bool get_dir_name(char *file, WORD num)
300 {
\ 04C0 FDE5 PUSH IY
\ 04C2 DDE5 PUSH IX
\ 04C4 C5 PUSH BC
\ 04C5 F5 PUSH AF
\ 04C6 D5 PUSH DE
\ 04C7 DDE1 POP IX
301
302 WORD m, tmp,total_file;
303 if(num>dir_total_num)
\ 04C9 2A4B00 LD HL,(dir_total_num)
\ 04CC A7 AND A
\ 04CD ED42 SBC HL,BC
\ 04CF 3005 JR NC,?0053
\ 04D1 ?0052:
304 return 0;
\ 04D1 2E00 LD L,0
\ 04D3 C36805 JP LWRD ?0065
\ 04D6 ?0053:
305 if(num == 0) //根目录或目录首
\ 04D6 79 LD A,C
\ 04D7 B0 OR B
\ 04D8 2030 JR NZ,?0055
\ 04DA ?0054:
306 {
307 if(fselDirLayer==0)
\ 04DA 3A0000 LD A,(fselDirLayer)
\ 04DD B7 OR A
\ 04DE 2015 JR NZ,?0057
\ 04E0 ?0056:
308 {
309 file[0] = 'R';
\ 04E0 DD360052 LD (IX+0),82
310 file[1] = 'O';
\ 04E4 DD36014F LD (IX+1),79
311 file[2] = 'O';
\ 04E8 DD36024F LD (IX+2),79
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?