main.lst

来自「MP3 整个 SDK」· LST 代码 · 共 1,391 行 · 第 1/5 页

LST
1,391
字号
   \   0057  F9                LD      SP,HL
    141              int result, i;
    142              long tmp;
    143              BOOL status;
    144              char file[12];
    145          
    146              strcpy(g_record_vars.location.path, g_dir_voice);
   \   0058  110E00            LD      DE,g_dir_voice
   \   005B  213800            LD      HL,g_record_vars+24
   \   005E  CD0000            CALL    LWRD ?STRCPY_L11
    147              g_record_vars.location.path[11] = 0x00;
   \   0061  AF                XOR     A
   \   0062  324300            LD      (g_record_vars+35),A
    148              //g_record_vars.location.disk = 'C';
    149              g_record_vars.location.filename[0] = 0;
   \   0065  324400            LD      (g_record_vars+36),A
    150          
    151              FS_CD(FS_CD_ROOT);
   \   0068  110000            LD      DE,?0005
   \   006B  CD0000            CALL    LWRD FS_CD
    152              status = FS_CD(g_dir_record);
   \   006E  110200            LD      DE,g_dir_record
   \   0071  CD0000            CALL    LWRD FS_CD
    153              if(!status)
   \   0074  B7                OR      A
   \   0075  200C              JR      NZ,?0007
   \   0077            ?0006:
    154              {
    155              status = FS_MakeDir(g_dir_record);
   \   0077  110200            LD      DE,g_dir_record
   \   007A  CD0000            CALL    LWRD FS_MakeDir
    156              if(!status)return FALSE;          // 创建目录失败//create directory fail
   \   007D  B7                OR      A
   \   007E  2009              JR      NZ,?0010
   \   0080            ?0008:
   \   0080  C33801            JP      LWRD ?0122
    157              }
   \   0083            ?0009:
    158              else
   \   0083            ?0007:
    159              FS_CD("\\");
   \   0083  110200            LD      DE,?0011
   \   0086  CD0000            CALL    LWRD FS_CD
   \   0089            ?0010:
    160              ASSERT(status);
    161          
    162              i = 1;
    163              status = FS_Dir(file,  g_dir_ext, FS_DIR_DIR);
   \   0089  0E81              LD      C,129
   \   008B  C5                PUSH    BC
   \   008C  011A00            LD      BC,g_dir_ext
   \   008F  210A00            LD      HL,10
   \   0092  39                ADD     HL,SP
   \   0093  EB                EX      DE,HL
   \   0094  CD0000            CALL    LWRD FS_Dir
   \   0097  E1                POP     HL
   \   0098  DD77EC            LD      (IX-20),A
   \   009B  FD210100          LD      IY,1
   \   009F            ?0014:
    164              ASSERT(status);
    165              do
    166              {
    167                    result = memcmp(file, g_dir_record, 8);
   \   009F  010800            LD      BC,8
   \   00A2  69                LD      L,C
   \   00A3  60                LD      H,B
   \   00A4  39                ADD     HL,SP
   \   00A5  EB                EX      DE,HL
   \   00A6  210200            LD      HL,g_dir_record
   \   00A9  CD0000            CALL    LWRD ?MEMCMP_L11
    168                    if(result == 0)break;
   \   00AC  7D                LD      A,L
   \   00AD  B4                OR      H
   \   00AE  2817              JR      Z,?0012
   \   00B0            ?0015:
   \   00B0            ?0016:
    169                    i++;
    170              }
    171              while((status = FS_Dir(file,  g_dir_ext, FS_DIR_DIR_CONT)));
   \   00B0  0E01              LD      C,1
   \   00B2  C5                PUSH    BC
   \   00B3  011A00            LD      BC,g_dir_ext
   \   00B6  210A00            LD      HL,10
   \   00B9  39                ADD     HL,SP
   \   00BA  EB                EX      DE,HL
   \   00BB  CD0000            CALL    LWRD FS_Dir
   \   00BE  E1                POP     HL
   \   00BF  DD77EC            LD      (IX-20),A
   \   00C2  B7                OR      A
   \   00C3  FD23              INC     IY
   \   00C5  20D8              JR      NZ,?0014
   \   00C7            ?0012:
    172              if(!status)
   \   00C7  AF                XOR     A
   \   00C8  DDB6EC            OR      (IX-20)
   \   00CB  286B              JR      Z,?0122
   \   00CD            ?0017:
    173                   return FALSE;
   \   00CD            ?0018:
    174          
    175              g_record_vars.location.DirNo[0] = i;
   \   00CD  FDE5              PUSH    IY
   \   00CF  E1                POP     HL
   \   00D0  7D                LD      A,L
   \   00D1  322B00            LD      (g_record_vars+11),A
    176          
    177              FS_CD(g_dir_record);
   \   00D4  110200            LD      DE,g_dir_record
   \   00D7  CD0000            CALL    LWRD FS_CD
    178              status = FS_CD(g_dir_voice);
   \   00DA  110E00            LD      DE,g_dir_voice
   \   00DD  CD0000            CALL    LWRD FS_CD
    179              if(!status)
   \   00E0  B7                OR      A
   \   00E1  200B              JR      NZ,?0020
   \   00E3            ?0019:
    180              {
    181                  status = FS_MakeDir(g_dir_voice);
   \   00E3  110E00            LD      DE,g_dir_voice
   \   00E6  CD0000            CALL    LWRD FS_MakeDir
    182                  if(!status)return FALSE;          // 创建目录失败
   \   00E9  B7                OR      A
   \   00EA  2008              JR      NZ,?0023
   \   00EC            ?0021:
   \   00EC  184A              JR      ?0122
    183              }
   \   00EE            ?0022:
    184              else
   \   00EE            ?0020:
    185                  FS_CD("\\");
   \   00EE  110200            LD      DE,?0011
   \   00F1  CD0000            CALL    LWRD FS_CD
   \   00F4            ?0023:
    186              ASSERT(status);
    187          
    188              i = 1;
    189              status = FS_Dir(file,  g_dir_ext, FS_DIR_DIR);
   \   00F4  0E81              LD      C,129
   \   00F6  C5                PUSH    BC
   \   00F7  011A00            LD      BC,g_dir_ext
   \   00FA  210A00            LD      HL,10
   \   00FD  39                ADD     HL,SP
   \   00FE  EB                EX      DE,HL
   \   00FF  CD0000            CALL    LWRD FS_Dir
   \   0102  E1                POP     HL
   \   0103  DD77EC            LD      (IX-20),A
   \   0106  FD210100          LD      IY,1
   \   010A            ?0026:
    190              ASSERT(status);
    191              do
    192              {
    193                    result = memcmp(file, g_dir_voice, 8);
   \   010A  010800            LD      BC,8
   \   010D  69                LD      L,C
   \   010E  60                LD      H,B
   \   010F  39                ADD     HL,SP
   \   0110  EB                EX      DE,HL
   \   0111  210E00            LD      HL,g_dir_voice
   \   0114  CD0000            CALL    LWRD ?MEMCMP_L11
    194                    if(result == 0)break;
   \   0117  7D                LD      A,L
   \   0118  B4                OR      H
   \   0119  2817              JR      Z,?0024
   \   011B            ?0027:
   \   011B            ?0028:
    195                    i++;
    196              }
    197              while((status = FS_Dir(file,  g_dir_ext, FS_DIR_DIR_CONT)));
   \   011B  0E01              LD      C,1
   \   011D  C5                PUSH    BC
   \   011E  011A00            LD      BC,g_dir_ext
   \   0121  210A00            LD      HL,10
   \   0124  39                ADD     HL,SP
   \   0125  EB                EX      DE,HL
   \   0126  CD0000            CALL    LWRD FS_Dir
   \   0129  E1                POP     HL
   \   012A  DD77EC            LD      (IX-20),A
   \   012D  B7                OR      A
   \   012E  FD23              INC     IY
   \   0130  20D8              JR      NZ,?0026
   \   0132            ?0024:
    198              if(!status)
   \   0132  AF                XOR     A
   \   0133  DDB6EC            OR      (IX-20)
   \   0136  2004              JR      NZ,?0030
   \   0138            ?0029:
    199                  return FALSE;
   \   0138            ?0122:
   \   0138  2E00              LD      L,0
   \   013A  1824              JR      ?0031
   \   013C            ?0030:
    200          
    201              g_record_vars.location.DirNo[1] = i;
   \   013C  FDE5              PUSH    IY
   \   013E  E1                POP     HL
   \   013F  7D                LD      A,L
   \   0140  322C00            LD      (g_record_vars+12),A
    202              g_record_vars.location.dirLayer = 1;
   \   0143  3E01              LD      A,1
   \   0145  323700            LD      (g_record_vars+23),A
    203              g_record_vars.location.ID3buffer = NULL;
   \   0148  210000            LD      HL,0
   \   014B  225000            LD      (g_record_vars+48),HL
    204              status = FS_CD(g_dir_voice);
   \   014E  110E00            LD      DE,g_dir_voice
   \   0151  CD0000            CALL    LWRD FS_CD
    205              tmp = FS_GetCurDir();
   \   0154  CD0000            CALL    LWRD FS_GetCurDir
    206              g_record_vars.location.ClusterNo = tmp;
   \   0157  223300            LD      (g_record_vars+19),HL
   \   015A  ED433500          LD      (g_record_vars+21),BC
    207              //g_record_vars.location.filename[0] = '\0';
    208          
    209              return TRUE;
   \   015E  2E01              LD      L,1
    210          }
   \   0160            ?0031:
   \   0160  DDF9              LD      SP,IX
   \   0162  DDE1              POP     IX
   \   0164  FDE1              POP     IY
   \   0166  D1                POP     DE
   \   0167  C1                POP     BC
   \   0168  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   016B            make_dirname:
    211          
    212          /*
    213          ********************************************************************************
    214          * Description : 初始化系统设定变量
    215          *
    216          * Arguments   :
    217          *
    218          * Returns     :
    219          *
    220          * Notes       :
    221          *
    222          ********************************************************************************
    223          */
    224          void make_dirname(void)
    225          {
   \   016B  C5                PUSH    BC
   \   016C  D5                PUSH    DE
   \   016D  DDE5              PUSH    IX
   \   016F  21E0FF            LD      HL,65504
   \   0172  39                ADD     HL,SP
   \   0173  F9                LD      SP,HL
    226              int result;
    227              char Backbuf[32];
    228              //fselGetLocation(&g_record_vars.location);
    229              if(g_record_vars.location.path[0]==':')
   \   0174  3A3800            LD      A,(g_record_vars+24)
   \   0177  FE3A              CP      58
   \   0179  200B              JR      NZ,?0033
   \   017B            ?0032:
    230                  {
    231                      strcpy(dir_name,"ROOT");
   \   017B  110400            LD      DE,?0034
   \   017E  210000            LD      HL,dir_name
   \   0181  CD0000            CALL    LWRD ?STRCPY_L11
    232                  }
    233              else
   \   0184  185F              JR      ?0035
   \   0186            ?0033:
    234                  {
    235          
    236                          FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
   \   0186  210000            LD      HL,0
   \   0189  E5                PUSH    HL
   \   018A  0E02              LD      C,2
   \   018C  23                INC     HL
   \   018D  23                INC     HL
   \   018E  39                ADD     HL,SP
   \   018F  EB                EX      DE,HL
   \   0190  CD0000            CALL    LWRD FS_Backup
   \   0193  E1                POP     HL
    237          //        dir_name[0] = ':';
    238          //            FS_CD(dir_name);
    239                      FS_CD("\\");
   \   0194  110200            LD      DE,?0011
   \   0197  CD0000            CALL    LWRD FS_CD

⌨️ 快捷键说明

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