⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ui_directory_fun.lst

📁 MP3 整个 SDK
💻 LST
📖 第 1 页 / 共 2 页
字号:
    119          } 
   \   0112            ?0029:
   \   0112  FDE1              POP     IY
   \   0114  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
   \   0117            GetActiveDirFrom:
    120          
    121          //********************************************************************************
    122          //* Description :输入目录序号DirNo,输出为此目录在list表中的位置 
    123          //*        n 最大值为999   
    124          //** Arguments   :
    125          //*
    126          //* Returns     : 当前目录在文件/目录列表中的序号
    127          //*
    128          //* Notes       :  
    129          //*        
    130          //********************************************************************************
    131          WORD GetActiveDirFrom(WORD n)        
    132          {
   \   0117  CD0000            CALL    LWRD ?ENT_AUTO_DIRECT_L09
   \   011A  FAFF              DEFW    -6
   \   011C  FDE5              PUSH    IY
    133              WORD h=0,k=0;
    134              BYTE m,i,j;
    135              BYTE needbreak=0; 
    136              byte status; 
    137          
    138              if(n>999)    
   \   011E  FD210000          LD      IY,0
   \   0122  110000            LD      DE,0
   \   0125  DD36FD00          LD      (IX-3),0
   \   0129  DD4E02            LD      C,(IX+2)
   \   012C  DD4603            LD      B,(IX+3)
   \   012F  21E703            LD      HL,999
   \   0132  A7                AND     A
   \   0133  ED42              SBC     HL,BC
   \   0135  380D              JR      C,?0066
   \   0137            ?0030:
    139                  return 0;
   \   0137            ?0031:
    140              status = input8(0x05);
   \   0137  DB05              IN      A,(5)
   \   0139  DD77FE            LD      (IX-2),A
    141              output8(0x05, 0xf6);        
   \   013C  3EF6              LD      A,246
   \   013E  D305              OUT     (5),A
    142              
    143              if(n==0)
   \   0140  79                LD      A,C
   \   0141  B0                OR      B
   \   0142  2005              JR      NZ,?0033
   \   0144            ?0032:
    144                  return 0;
   \   0144            ?0066:
   \   0144  210000            LD      HL,0
   \   0147  1873              JR      ?0052
   \   0149            ?0033:
    145              for(i=0;i<125;i++)
   \   0149  DD36FA00          LD      (IX-6),0
   \   014D            ?0035:
   \   014D  DD7EFA            LD      A,(IX-6)
   \   0150  FE7D              CP      125
   \   0152  3060              JR      NC,?0034
   \   0154            ?0036:
    146              {
    147                  k++;
   \   0154  13                INC     DE
    148                  m=dirbuf[i];
   \   0155  4F                LD      C,A
   \   0156  0600              LD      B,0
   \   0158  210000            LD      HL,dirbuf
   \   015B  09                ADD     HL,BC
   \   015C  46                LD      B,(HL)
   \   015D  DD70FB            LD      (IX-5),B
    149                  if((m&1)==1)h++;
   \   0160  CB40              BIT     0,B
   \   0162  2802              JR      Z,?0039
   \   0164            ?0038:
   \   0164  FD23              INC     IY
   \   0166            ?0039:
    150                  if((k-1)==n)
   \   0166  21FFFF            LD      HL,65535
   \   0169  19                ADD     HL,DE
   \   016A  DD4E02            LD      C,(IX+2)
   \   016D  DD4603            LD      B,(IX+3)
   \   0170  A7                AND     A
   \   0171  ED42              SBC     HL,BC
   \   0173  283F              JR      Z,?0034
   \   0175            ?0040:
    151                  break;
   \   0175            ?0041:
    152                  for(j=0;j<7;j++)
   \   0175  DD36FC00          LD      (IX-4),0
   \   0179            ?0043:
   \   0179  DD7EFC            LD      A,(IX-4)
   \   017C  FE07              CP      7
   \   017E  3029              JR      NC,?0042
   \   0180            ?0044:
    153                  {
    154                      k++;
   \   0180  13                INC     DE
    155                      m=m/2;
   \   0181  210300            LD      HL,3
   \   0184  39                ADD     HL,SP
   \   0185  0602              LD      B,2
   \   0187  7E                LD      A,(HL)
   \   0188  CD0000            CALL    LWRD ?UC_DIV_L01
   \   018B  77                LD      (HL),A
    156                      if((m&1)==1)h++;
   \   018C  CB47              BIT     0,A
   \   018E  2802              JR      Z,?0047
   \   0190            ?0046:
   \   0190  FD23              INC     IY
   \   0192            ?0047:
    157                      if((k-1)==n)
   \   0192  21FFFF            LD      HL,65535
   \   0195  19                ADD     HL,DE
   \   0196  DD4603            LD      B,(IX+3)
   \   0199  A7                AND     A
   \   019A  ED42              SBC     HL,BC
   \   019C  2006              JR      NZ,?0049
   \   019E            ?0048:
    158                      {
    159                  needbreak=1;
   \   019E  DD36FD01          LD      (IX-3),1
    160                  break;
   \   01A2  1805              JR      ?0042
   \   01A4            ?0049:
   \   01A4  DD34FC            INC     (IX-4)
   \   01A7  18D0              JR      ?0043
   \   01A9            ?0042:
    161                      }
    162          
    163                  }
    164                  if(needbreak)
   \   01A9  AF                XOR     A
   \   01AA  DDB6FD            OR      (IX-3)
   \   01AD  2005              JR      NZ,?0034
   \   01AF            ?0050:
    165                      break;
   \   01AF            ?0051:
   \   01AF  DD34FA            INC     (IX-6)
   \   01B2  1899              JR      ?0035
   \   01B4            ?0034:
    166              }
    167              
    168              output8(0x05, status); 
   \   01B4  DD7EFE            LD      A,(IX-2)
   \   01B7  D305              OUT     (5),A
    169              return h;                       
   \   01B9  FDE5              PUSH    IY
   \   01BB  E1                POP     HL
    170          } 
   \   01BC            ?0052:
   \   01BC  FDE1              POP     IY
   \   01BE  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
   \   01C1            count_dir_num:
    171            
    172          /*
    173          ********************************************************************************
    174          * Description : 当前目录下,有效的子目录的总数
    175          *
    176          * Arguments   :
    177          *
    178          * Returns     : 子目录总数
    179          *
    180          * Notes       :  
    181          *        
    182          ********************************************************************************
    183          */
    184          WORD count_dir_num(void)
    185          { 
   \   01C1  C5                PUSH    BC
   \   01C2  D5                PUSH    DE
   \   01C3  FDE5              PUSH    IY
   \   01C5  DDE5              PUSH    IX
   \   01C7  21F2FF            LD      HL,65522
   \   01CA  39                ADD     HL,SP
   \   01CB  F9                LD      SP,HL
    186              WORD tmp,wtemp,total,direxist;
    187              char strDir[12];    
    188              tmp = 0; 
    189              wtemp = 1;
   \   01CC  DD210000          LD      IX,0
   \   01D0  FD210100          LD      IY,1
   \   01D4            ?0054:
    190              while(1) 
    191              {
    192                  if (! ToDirEntry(strDir, wtemp))
   \   01D4  FDE5              PUSH    IY
   \   01D6  C1                POP     BC
   \   01D7  210200            LD      HL,2
   \   01DA  39                ADD     HL,SP
   \   01DB  EB                EX      DE,HL
   \   01DC  3E00              LD      A,BYTE3 ToDirEntry
   \   01DE  210000            LD      HL,LWRD ToDirEntry
   \   01E1  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   01E4  2C                INC     L
   \   01E5  2D                DEC     L
   \   01E6  2013              JR      NZ,?0057
   \   01E8            ?0056:
    193                  {
    194                      return tmp;
   \   01E8  DDE5              PUSH    IX
   \   01EA  E1                POP     HL
    195                  }
   \   01EB  EB                EX      DE,HL
   \   01EC  210E00            LD      HL,14
   \   01EF  39                ADD     HL,SP
   \   01F0  F9                LD      SP,HL
   \   01F1  EB                EX      DE,HL
   \   01F2  DDE1              POP     IX
   \   01F4  FDE1              POP     IY
   \   01F6  D1                POP     DE
   \   01F7  C1                POP     BC
   \   01F8  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   01FB            ?0057:
    196                  else
    197                  {
    198                      // 只检查文件夹是否有效
    199                      total = GetFileTotal(strDir, TRUE);
   \   01FB  210000            LD      HL,0
   \   01FE  39                ADD     HL,SP
   \   01FF  E5                PUSH    HL
   \   0200  0E01              LD      C,1
   \   0202  23                INC     HL
   \   0203  23                INC     HL
   \   0204  EB                EX      DE,HL
   \   0205  3E00              LD      A,BYTE3 GetFileTotal
   \   0207  210000            LD      HL,LWRD GetFileTotal
   \   020A  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   020D  4D                LD      C,L
   \   020E  44                LD      B,H
   \   020F  E1                POP     HL
   \   0210  71                LD      (HL),C
   \   0211  23                INC     HL
   \   0212  70                LD      (HL),B
    200                      FS_CD(strDir);
   \   0213  210200            LD      HL,2
   \   0216  39                ADD     HL,SP
   \   0217  EB                EX      DE,HL
   \   0218  CD0000            CALL    LWRD FS_CD
    201                      if (ToDirEntry(strDir,1))
   \   021B  010100            LD      BC,1
   \   021E  210200            LD      HL,2
   \   0221  39                ADD     HL,SP
   \   0222  EB                EX      DE,HL
   \   0223  3E00              LD      A,BYTE3 ToDirEntry
   \   0225  210000            LD      HL,LWRD ToDirEntry
   \   0228  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   022B  2C                INC     L
   \   022C  2D                DEC     L
   \   022D  2805              JR      Z,?0059
   \   022F            ?0058:
    202                      {
    203                              direxist=1;
   \   022F  110100            LD      DE,1
    204                      }
    205                      else
   \   0232  1803              JR      ?0060
   \   0234            ?0059:
    206                      {
    207                          direxist=0;
   \   0234  110000            LD      DE,0
   \   0237            ?0060:
    208                      }        
    209                      output8(0x4e,input8(0x4e)|0x8);
   \   0237  DB4E              IN      A,(78)
   \   0239  CBDF              SET     3,A
   \   023B  D34E              OUT     (78),A
    210                  
    211                      FS_CD("\\"); 
   \   023D  D5                PUSH    DE
   \   023E  110000            LD      DE,?0061
   \   0241  CD0000            CALL    LWRD FS_CD
   \   0244  D1                POP     DE
    212                  }
    213                  output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08); 
   \   0245  DB4E              IN      A,(78)
   \   0247  CBDF              SET     3,A
   \   0249  D34E              OUT     (78),A
    214                  if((total != 0)||direxist)
   \   024B  210000            LD      HL,0
   \   024E  39                ADD     HL,SP
   \   024F  7E                LD      A,(HL)
   \   0250  23                INC     HL
   \   0251  B6                OR      (HL)
   \   0252  2004              JR      NZ,?0064
   \   0254  7B                LD      A,E
   \   0255  B2                OR      D
   \   0256  2802              JR      Z,?0063
   \   0258            ?0064:
   \   0258            ?0065:
   \   0258            ?0062:
    215                      tmp++;
   \   0258  DD23              INC     IX
   \   025A            ?0063:
    216          
    217                  wtemp ++;
    218               }
    219          }
   \   025A  FD23              INC     IY
   \   025C  C3D401            JP      LWRD ?0054
    220          
    221           
   \   0000                    RSEG    CSTR
   \   0000            ?0061:
   \   0000  5C00              DEFB    92,0
   \   0002                    END

Errors: none
Warnings: none
Code size: 607
Constant size: 2
Static variable size: Data(0) Iram(0)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -