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 + -
显示快捷键?