sub_function1.lst

来自「MP3 整个 SDK」· LST 代码 · 共 932 行 · 第 1/3 页

LST
932
字号
   \   00DE  4F                LD      C,A
   \   00DF  C5                PUSH    BC
   \   00E0  0E00              LD      C,0
   \   00E2  C5                PUSH    BC
   \   00E3  CD0A01            CALL    LWRD ?0195
   \   00E6  F1                POP     AF
   \   00E7  F1                POP     AF
   \   00E8  2C                INC     L
   \   00E9  2D                DEC     L
   \   00EA  2805              JR      Z,?0037
   \   00EC            ?0036:
    125                      {
    126                          return 1;
   \   00EC            ?0128:
   \   00EC  210100            LD      HL,1
    127                      }
   \   00EF  1813              JR      ?0040
   \   00F1            ?0037:
    128                      result = FSELGetErrID();
   \   00F1  CD1401            CALL    LWRD ?0196
    129                      if (FSELGetErrID() != 0)
   \   00F4  CD1401            CALL    LWRD ?0196
   \   00F7  2C                INC     L
   \   00F8  2D                DEC     L
   \   00F9  2806              JR      Z,?0033
   \   00FB            ?0038:
    130                      {
    131                          DisplayErrInfor(CFILEOUT);//显示卡无文件
   \   00FB  119301            LD      DE,403
   \   00FE            ?0129:
   \   00FE  CD1F01            CALL    LWRD ?0197
    132                          return 0;
    133                      }
   \   0101            ?0039:
    134                      return 0;//非法
    135                  }
   \   0101            ?0033:
    136                  else
    137                  {
    138                      return 0;//没卡退出
   \   0101  210000            LD      HL,0
    139                  }
   \   0104            ?0040:
   \   0104  F1                POP     AF
   \   0105  D1                POP     DE
   \   0106  C1                POP     BC
   \   0107  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   010A            ?0195:
   \   010A  1E03              LD      E,3
   \   010C  3E00              LD      A,BYTE3 fselInit
   \   010E  210000            LD      HL,LWRD fselInit
   \   0111  C30000            JP      LWRD ?BANK_CALL_DIRECT_L08
   \   0114            ?0196:
   \   0114  3E00              LD      A,BYTE3 fselGetErrID
   \   0116  210000            LD      HL,LWRD fselGetErrID
   \   0119  C30000            JP      LWRD ?BANK_CALL_DIRECT_L08
   \   011C            ?0198:
   \   011C  119201            LD      DE,402
   \   011F            ?0197:
   \   011F  3E00              LD      A,BYTE3 DisplayErrInfor
   \   0121  210000            LD      HL,LWRD DisplayErrInfor
   \   0124  C30000            JP      LWRD ?BANK_CALL_DIRECT_L08
    140          
    141              }
    142          
    143          }
   \   0127            UpdateFileSelector:
    144          
    145          
    146          /******************************************************************************
    147          ** 名字:
    148          ** 接口: int UpdateFileSelector(void)
    149          ** 描述: 更新文件选择器
    150          ** 输入参数: void
    151          ** 输出参数:
    152                      0: 更新不成功,要退出AP
    153                      1: 更新成功,已可用
    154          ** 使用说明:
    155          ********************************************************************************/
    156          int UpdateFileSelector(void)
    157          {
   \   0127  C5                PUSH    BC
   \   0128  D5                PUSH    DE
   \   0129  F5                PUSH    AF
    158          
    159              BYTE result;
    160          
    161              output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
   \   012A  DB4E              IN      A,(78)
   \   012C  CBDF              SET     3,A
   \   012E  D34E              OUT     (78),A
    162              BankSwitch((unsigned long)FSELSetLocation >> 16);
   \   0130  0E00              LD      C,BYTE3 fselSetLocation
   \   0132  59                LD      E,C
   \   0133  CD0000            CALL    LWRD BankSwitch
    163          
    164              result = FSELSetLocation(& g_viewpic_vars.location);
   \   0136  110400            LD      DE,g_viewpic_vars+4
   \   0139  79                LD      A,C
   \   013A  210000            LD      HL,LWRD fselSetLocation
   \   013D  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   0140  E5                PUSH    HL
   \   0141  210200            LD      HL,2
   \   0144  39                ADD     HL,SP
   \   0145  C1                POP     BC
   \   0146  71                LD      (HL),C
    165          
    166              if (result == 1)
   \   0147  41                LD      B,C
   \   0148  05                DEC     B
   \   0149  2014              JR      NZ,?0042
   \   014B            ?0041:
    167              {
    168                  if (g_viewpic_vars.location.filename[0] != '\0')
   \   014B  3A1E00            LD      A,(g_viewpic_vars+30)
   \   014E  B7                OR      A
   \   014F  201F              JR      NZ,?0050
   \   0151            ?0043:
    169                  {
    170                      return 1;
    171                  }
   \   0151            ?0044:
    172          
    173                  //找到目录的第一个文件
    174                  if (StartFileSelector() == 0)
   \   0151  3E00              LD      A,BYTE3 StartFileSelector
   \   0153  21C701            LD      HL,LWRD StartFileSelector
   \   0156  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   0159  7D                LD      A,L
   \   015A  B4                OR      H
   \   015B  2013              JR      NZ,?0050
   \   015D            ?0045:
    175                  {
    176                      return 0;
   \   015D  1857              JR      ?0141
    177                  }
   \   015F            ?0046:
    178                      return 1;
    179              }
   \   015F            ?0042:
    180              else if (result == 2) // == 2 表示该目录是空
   \   015F  46                LD      B,(HL)
   \   0160  05                DEC     B
   \   0161  05                DEC     B
   \   0162  2011              JR      NZ,?0048
   \   0164            ?0047:
    181              {
    182                  //找到目录的第一个文件
    183                  if (StartFileSelector() == 0)
   \   0164  3E00              LD      A,BYTE3 StartFileSelector
   \   0166  21C701            LD      HL,LWRD StartFileSelector
   \   0169  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   016C  7D                LD      A,L
   \   016D  B4                OR      H
   \   016E  2846              JR      Z,?0141
   \   0170            ?0049:
    184                  {
    185                      return 0;
    186                  }
   \   0170            ?0050:
    187                  return 1;
   \   0170  210100            LD      HL,1
    188          
    189              }
   \   0173  184C              JR      ?0060
   \   0175            ?0048:
    190          
    191             //ClearTimePara();//时间断点参数从0开始
    192              g_viewpic_vars.location.filename[0] = '\0';//找不到对应文件时要回到目录第一个文件
   \   0175  AF                XOR     A
   \   0176  321E00            LD      (g_viewpic_vars+30),A
    193              output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
   \   0179  DB4E              IN      A,(78)
   \   017B  CBDF              SET     3,A
   \   017D  D34E              OUT     (78),A
    194          
    195              result = FSELSetLocation(& g_viewpic_vars.location);
   \   017F  110400            LD      DE,g_viewpic_vars+4
   \   0182  3E00              LD      A,BYTE3 fselSetLocation
   \   0184  210000            LD      HL,LWRD fselSetLocation
   \   0187  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   018A  E5                PUSH    HL
   \   018B  C1                POP     BC
    196          
    197              if (result != 0)//set 目录
   \   018C  AF                XOR     A
   \   018D  B1                OR      C
   \   018E  280E              JR      Z,?0052
   \   0190            ?0051:
    198              {
    199                  //找到目录的第一个文件
    200                  if (StartFileSelector() == 0)
   \   0190  3E00              LD      A,BYTE3 StartFileSelector
   \   0192  21C701            LD      HL,LWRD StartFileSelector
   \   0195  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   0198  7D                LD      A,L
   \   0199  B4                OR      H
   \   019A  201F              JR      NZ,?0059
   \   019C            ?0053:
    201                  {
    202                      return 0;
   \   019C  1818              JR      ?0141
    203                  }
   \   019E            ?0054:
    204              }
    205          
    206              else
   \   019E            ?0052:
    207              {
    208                  // 初始化文件选择器
    209                  if (InitFileSelector() == 0)
   \   019E  3E00              LD      A,BYTE3 InitFileSelector
   \   01A0  212C00            LD      HL,LWRD InitFileSelector
   \   01A3  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   01A6  7D                LD      A,L
   \   01A7  B4                OR      H
   \   01A8  280C              JR      Z,?0141
   \   01AA            ?0056:
    210                  {
    211                      return 0;
    212                  }
   \   01AA            ?0057:
    213                  //找到目录的第一个文件
    214                  if (StartFileSelector() == 0)
   \   01AA  3E00              LD      A,BYTE3 StartFileSelector
   \   01AC  21C701            LD      HL,LWRD StartFileSelector
   \   01AF  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   01B2  7D                LD      A,L
   \   01B3  B4                OR      H
   \   01B4  2005              JR      NZ,?0059
   \   01B6            ?0058:
    215                  {
    216                      return 0;
   \   01B6            ?0141:
   \   01B6  210000            LD      HL,0
    217                  }
   \   01B9  1806              JR      ?0060
   \   01BB            ?0059:
   \   01BB            ?0055:
    218              }
    219          
    220              output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
   \   01BB  DB4E              IN      A,(78)
   \   01BD  CBDF              SET     3,A
   \   01BF  D34E              OUT     (78),A
    221          }
   \   01C1            ?0060:
   \   01C1  F1                POP     AF
   \   01C2  D1                POP     DE
   \   01C3  C1                POP     BC
   \   01C4  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   01C7            StartFileSelector:
    222          
    223          
    224          
    225          /******************************************************************************
    226          ** 名字:
    227          ** 接口:
    228          ** 描述:
    229          ** 输入参数:
    230          ** 输出参数:
    231          ** 使用说明: //注,这函数是在初始化完文件选择器或set 完目录后调用的
    232          ********************************************************************************/
    233          int StartFileSelector(void)
    234          {
   \   01C7  C5                PUSH    BC
   \   01C8  D5                PUSH    DE
   \   01C9  DDE5              PUSH    IX
    235              int result;
    236          
    237              if (g_viewpic_vars.location.disk == 'C')
   \   01CB  3A0400            LD      A,(g_viewpic_vars+4)
   \   01CE  FE43              CP      67
   \   01D0  111E00            LD      DE,g_viewpic_vars+30
   \   01D3  3E00              LD      A,BYTE3 fselGetNextFile
   \   01D5  210000            LD      HL,LWRD fselGetNextFile
   \   01D8  2072              JR      NZ,?0062
   \   01DA            ?0061:
    238              {
    239                  if (FSELGetNext(g_viewpic_vars.location.filename) != 0)
   \   01DA  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   01DD  2C                INC     L
   \   01DE  2D                DEC     L
   \   01DF  C2AF02            JP      NZ,?0186
   \   01E2            ?0063:
    240                  {
    241                      return 1;
    242                  }
   \   01E2            ?0064:
    243          
    244                  if (FSELGetErrID() == 0)
   \   01E2  CD1401            CALL    LWRD ?0196
   \   01E5  2C                INC     L
   \   01E6  2D                DEC     L
   \   01E7  CAC302            JP      Z,?0106
   \   01EA            ?0065:
    245                  {
    246                      return 0;//非法
    247                  }
   \   01EA            ?0066:
    248                  //再查一次,因为可能这目录前面还有文件
    249                  if (InitFileSelector() == 0)
   \   01EA  3E00              LD      A,BYTE3 InitFileSelector
   \   01EC  212C00            LD      HL,LWRD InitFileSelector
   \   01EF  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   01F2  7D                LD      A,L
   \   01F3  B4                OR      H
   \   01F4  CAC302            JP      Z,?0106
   \   01F7            ?0067:
    250                  {
    251                      return 0;

⌨️ 快捷键说明

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