ui_directory_rec.lst

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

LST
1,106
字号
   \   021F            ?0123:
   \   021F  21FFFF            LD      HL,65535
   \   0222  ED4B0000          LD      BC,(list_total_num)
   \   0226  09                ADD     HL,BC
   \   0227  E5                PUSH    HL
   \   0228  FDE1              POP     IY
   \   022A            ?0054:
    185                                      DecodeOnePage(top,bottom,type,string_id);
   \   022A  DD6E08            LD      L,(IX+8)
   \   022D  E5                PUSH    HL
   \   022E  DD6EFE            LD      L,(IX-2)
   \   0231  E5                PUSH    HL
   \   0232  CD2204            CALL    LWRD ?0124
   \   0235  E1                POP     HL
   \   0236  E1                POP     HL
    186                                      ShowDirectory(top,bottom,list_active,list_active,string_id,DiskFlag);
   \   0237  DD6EF8            LD      L,(IX-8)
   \   023A  E5                PUSH    HL
   \   023B  DD6E08            LD      L,(IX+8)
   \   023E  E5                PUSH    HL
   \   023F  3A0000            LD      A,(list_active)
   \   0242  4F                LD      C,A
   \   0243  C5                PUSH    BC
   \   0244            ?0118:
   \   0244  4F                LD      C,A
   \   0245  C5                PUSH    BC
   \   0246  CD3304            CALL    LWRD ?0125
   \   0249  E1                POP     HL
   \   024A  E1                POP     HL
   \   024B  E1                POP     HL
   \   024C  E1                POP     HL
   \   024D            ?0052:
   \   024D            ?0056:
    187                              }
    188                          while(ap_get_message() != 0);
   \   024D  CD0000            CALL    LWRD ap_get_message
   \   0250  B7                OR      A
   \   0251  CAFF00            JP      Z,?0023
   \   0254            ?0057:
    189                          break;
   \   0254  18F7              JR      ?0052
   \   0256            ?0055:
   \   0256            ?0058:
   \   0256            ?0060:
    190          
    191          
    192                      case AP_KEY_PREV | AP_KEY_UP:
    193                          while(ap_get_message() != 0);
   \   0256  CD0000            CALL    LWRD ap_get_message
   \   0259  B7                OR      A
   \   025A  CAFF00            JP      Z,?0023
   \   025D            ?0061:
    194                          break;
   \   025D  18F7              JR      ?0058
   \   025F            ?0059:
   \   025F            ?0062:
    195          
    196                      case AP_KEY_PLAY | AP_KEY_UP:
    197                              fselSetLocationC(location);
    198                          return RESULT_IGNORE;
    199                      break;
   \   025F            ?0063:
    200          
    201                      case AP_KEY_MODE | AP_KEY_LONG:
    202                              key = RESULT_NULL;
   \   025F  DD36F900          LD      (IX-7),0
   \   0263            ?0064:
    203          LongTime:
    204                              output8(0x4e,input8(0x4e) | 0x08);
    205                              TransOneRecord(&temp_record,(OnePageRecord+list_active%GroupDefine));
   \   0263  CD9104            CALL    LWRD ?0128
    206                              fselDirLayer=temp_record.dirlayer;        //目录层次 0--根目录
    207                              fselDirNo[fselDirLayer]=temp_record.dirno[fselDirLayer];                //目录序号
   \   0266  C5                PUSH    BC
   \   0267  0600              LD      B,0
   \   0269  210000            LD      HL,fselDirNo
   \   026C  09                ADD     HL,BC
   \   026D  C1                POP     BC
   \   026E  70                LD      (HL),B
    208                              fselFileNo=0;//temp_record.fileno;        //文件序号
   \   026F  210000            LD      HL,0
   \   0272  220000            LD      (fselFileNo),HL
    209                             fselExtNo=temp_record.fselExtNo;
   \   0275  3A0C00            LD      A,(temp_record+12)
   \   0278  320000            LD      (fselExtNo),A
    210          
    211                              if(temp_record.name[0] == '\\')    //当前所处子目录首,需要返回父目录
   \   027B  3A0D00            LD      A,(temp_record+13)
   \   027E  FE5C              CP      92
   \   0280  2019              JR      NZ,?0066
   \   0282            ?0065:
    212                              {
    213                                          if(fselDirLayer==0)
   \   0282  3A0000            LD      A,(fselDirLayer)
   \   0285  B7                OR      A
   \   0286  2009              JR      NZ,?0068
   \   0288            ?0067:
    214                                              fselDirNo[fselDirLayer] = 0;
   \   0288  4F                LD      C,A
   \   0289  41                LD      B,C
   \   028A  210000            LD      HL,fselDirNo
   \   028D  09                ADD     HL,BC
   \   028E  70                LD      (HL),B
    215                                          else
   \   028F  1804              JR      ?0069
   \   0291            ?0068:
    216                                              fselDirLayer--;
   \   0291  210000            LD      HL,fselDirLayer
   \   0294  35                DEC     (HL)
   \   0295            ?0069:
    217                              key=RESULT_NULL;
   \   0295  DD36F900          LD      (IX-7),0
    218                              }
    219                              else    //当前所处可能是子目录或文件,需要分别处理
   \   0299  1815              JR      ?0075
   \   029B            ?0066:
    220                              {
    221                                  if(temp_record.filetype==TYPE_DIR)
   \   029B  3A0000            LD      A,(temp_record)
   \   029E  B7                OR      A
   \   029F  200F              JR      NZ,?0075
   \   02A1            ?0071:
    222                                  {
    223                                          if (fselDirLayer <= 7)
   \   02A1  3A0000            LD      A,(fselDirLayer)
   \   02A4  47                LD      B,A
   \   02A5  3E07              LD      A,7
   \   02A7  B8                CP      B
   \   02A8  3806              JR      C,?0075
   \   02AA            ?0073:
    224                                          {
    225                                              if(FS_CD(temp_record.name))
   \   02AA  110D00            LD      DE,temp_record+13
   \   02AD  CD0000            CALL    LWRD FS_CD
   \   02B0            ?0075:
   \   02B0            ?0076:
   \   02B0            ?0074:
    226                                              {
    227                                              }
    228                                          }
    229                                  }
    230                                  else
   \   02B0            ?0072:
   \   02B0            ?0077:
   \   02B0            ?0070:
    231                                  {
    232                                  }
    233                              }
    234                             fselGetLocation(location);    //更新location
   \   02B0  DD5EFC            LD      E,(IX-4)
   \   02B3  DD56FD            LD      D,(IX-3)
   \   02B6  3E00              LD      A,BYTE3 fselGetLocation
   \   02B8  210000            LD      HL,LWRD fselGetLocation
   \   02BB  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
    235                                return key;
   \   02BE  DD6EF9            LD      L,(IX-7)
   \   02C1  2600              LD      H,0
    236                      case AP_KEY_MODE | AP_KEY_UP:
   \   02C3  C30F04            JP      LWRD ?0112
   \   02C6            ?0078:
    237                              output8(0x4e,input8(0x4e) | 0x08);
    238                              TransOneRecord(&temp_record,(OnePageRecord+list_active%GroupDefine));
   \   02C6  CD9104            CALL    LWRD ?0128
    239                              fselDirLayer=temp_record.dirlayer;        //目录层次 0--根目录
    240                              fselDirNo[fselDirLayer]=temp_record.dirno[fselDirLayer];                //目录序号
   \   02C9  C5                PUSH    BC
   \   02CA  0600              LD      B,0
   \   02CC  210000            LD      HL,fselDirNo
   \   02CF  09                ADD     HL,BC
   \   02D0  C1                POP     BC
   \   02D1  70                LD      (HL),B
    241                              fselFileNo=temp_record.fileno;        //文件序号
   \   02D2  2A0900            LD      HL,(temp_record+9)
   \   02D5  220000            LD      (fselFileNo),HL
    242                              fselExtNo=temp_record.fselExtNo;
   \   02D8  3A0C00            LD      A,(temp_record+12)
   \   02DB  320000            LD      (fselExtNo),A
    243          
    244                              if(temp_record.name[0] == '\\')    //当前所处子目录首,需要返回父目录
   \   02DE  3A0D00            LD      A,(temp_record+13)
   \   02E1  FE5C              CP      92
   \   02E3  2041              JR      NZ,?0080
   \   02E5            ?0079:
    245                              {
    246                                      if ( FS_CD("\\"))
   \   02E5  110200            LD      DE,?0083
   \   02E8  CD0000            CALL    LWRD FS_CD
   \   02EB  B7                OR      A
   \   02EC  CAAD03            JP      Z,?0098
   \   02EF            ?0081:
    247                                      {
    248                                          fselDirLayer--;
   \   02EF  210000            LD      HL,fselDirLayer
   \   02F2  35                DEC     (HL)
    249                                          init_dir_buf();
   \   02F3  3E00              LD      A,BYTE3 init_dir_buf
   \   02F5  210000            LD      HL,LWRD init_dir_buf
   \   02F8  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
    250          
    251                                          list_active=temp_record.dirno[fselDirLayer];
   \   02FB  210100            LD      HL,temp_record+1
   \   02FE  ED4B0000          LD      BC,(fselDirLayer)
   \   0302  0600              LD      B,0
   \   0304  09                ADD     HL,BC
   \   0305  4E                LD      C,(HL)
   \   0306  ED430000          LD      (list_active),BC
    252                                          cur_group=list_active/GroupDefine;
   \   030A  0E06              LD      C,6
   \   030C  ED5B0000          LD      DE,(list_active)
   \   0310  CD7604            CALL    LWRD ?0127
    253                                          top=(list_active/GroupDefine)*GroupDefine; ; //顶的序号
    254                                          bottom=top+GroupDefine-1;                  //底的序号
    255                                          if(bottom>(list_total_num-1))
   \   0313  21FFFF            LD      HL,65535
   \   0316  ED4B0000          LD      BC,(list_total_num)
   \   031A  09                ADD     HL,BC
   \   031B  FDE5              PUSH    IY
   \   031D  C1                POP     BC
   \   031E  A7                AND     A
   \   031F  ED42              SBC     HL,BC
   \   0321  D2AD03            JP      NC,?0098
   \   0324            ?0084:
    256                                              bottom=list_total_num-1;
   \   0324  185A              JR      ?0121
   \   0326            ?0085:
    257          
    258                                      }
    259                                      else
   \   0326            ?0082:
   \   0326            ?0086:
    260                                      {
    261                                      }
    262                              }
    263                              else    //当前所处可能是子目录或文件,需要分别处理
   \   0326            ?0080:
    264                              {
    265                                  if(temp_record.filetype==TYPE_DIR)
   \   0326  3A0000            LD      A,(temp_record)
   \   0329  B7                OR      A
   \   032A  3A0000            LD      A,(fselDirLayer)
   \   032D  205E              JR      NZ,?0089
   \   032F            ?0088:
    266                                  {
    267                                          if (fselDirLayer >= 7)         //需实验看看是7还是8?
   \   032F  FE07              CP      7
   \   0331  D2FF00            JP      NC,?0023
   \   0334            ?0090:
    268                                          {
    269                                              break;
   \   0334            ?0091:
    270                                          }
    271                                          if (fselDirNo[fselDirLayer] > 0)
   \   0334  4F                LD      C,A
   \   0335  0600              LD      B,0
   \   0337  210000            LD      HL,fselDirNo
   \   033A  09                ADD     HL,BC
   \   033B  7E                LD      A,(HL)
   \   033C  B7                OR      A
   \   033D  286E              JR      Z,?0098
   \   033F            ?0092:
    272                                          {
    273          
    274                                          if(FS_CD(temp_record.name))
   \   033F  110D00            LD      DE,temp_record+13
   \   0342  CD0000            CALL    LWRD FS_CD
   \   0345  B7                OR      A
   \   0346  2865              JR      Z,?0098
   \   0348            ?0094:
    275                                          {
    276          
    277                                          fselDirLayer++;
   \   0348  210000            LD      HL,fselDirLayer
   \   034B  34                INC     (HL)
    278                                          fselDirNo[fselDirLayer] = 0;
   \   034C  ED4B0000          LD      BC,(fselDirLayer)
   \   0350  0600              LD      B,0
   \   0352  210000            LD      HL,fselDirNo

⌨️ 快捷键说明

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