ui_play.lst

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

LST
1,122
字号
   \   00BC  AF                XOR     A
   \   00BD  320900            LD      (err_id),A
   \   00C0            ?0151:
   \   00C0  DD36FC01          LD      (IX-4),1
   \   00C4            ?0029:
     83                   
     84            while(1)
     85                {
     86                       if(need_draw)
   \   00C4  DDB6FC            OR      (IX-4)
   \   00C7  CA7E01            JP      Z,?0057
   \   00CA            ?0031:
     87                       {
     88                           SetBackgdColor(Color_BLACK_def);
   \   00CA  CD4202            CALL    LWRD ?0167
     89                           //fselGetByNO(g_viewpic_vars.location.filename, active+1);
     90                           BankSwitch((ulong)address_24_of(PicViewInit) >> 16);
     91                           fp=FS_FOpen(g_viewpic_vars.location.filename,FS_OPEN_NORMAL);
     92                           PictureType=CheckPicType(g_viewpic_vars.location.filename);                 
     93                           ClearScreen(NULL);
     94                           tmp=JpegDec(&Dscinf,PictureType,fp,0);                // decoder the jpeg file                     
   \   00CD  0E00              LD      C,0
   \   00CF  C5                PUSH    BC
   \   00D0  2A0700            LD      HL,(fp)
   \   00D3  E5                PUSH    HL
   \   00D4  ED4B1D00          LD      BC,(PictureType)
   \   00D8  110000            LD      DE,Dscinf
   \   00DB  CD0000            CALL    LWRD JpegDec
   \   00DE  E1                POP     HL
   \   00DF  E1                POP     HL
   \   00E0  DD77FD            LD      (IX-3),A
     95                           FS_FClose(fp);         
   \   00E3  ED5B0700          LD      DE,(fp)
   \   00E7  CD0000            CALL    LWRD FS_FClose
     96                           if(tmp==0)
   \   00EA  AF                XOR     A
   \   00EB  DDB6FD            OR      (IX-3)
   \   00EE  2008              JR      NZ,?0034
   \   00F0            ?0033:
     97                           {
     98                               err_id=1;
   \   00F0  3E01              LD      A,1
   \   00F2  320900            LD      (err_id),A
     99                               return 0;
   \   00F5  C31902            JP      LWRD ?0150
    100                           }
   \   00F8            ?0034:
    101                           need_draw = FALSE;
   \   00F8  DD36FC00          LD      (IX-4),0
    102                           if(tmp==55)                        
   \   00FC  FE37              CP      55
   \   00FE  2033              JR      NZ,?0036
   \   0100            ?0035:
    103                           {
    104                               if(active > 0)active--;
   \   0100  ED4B0000          LD      BC,(active)
   \   0104  210000            LD      HL,0
   \   0107  F680              OR      128
   \   0109  ED42              SBC     HL,BC
   \   010B  E20F01            JP      PO,?0140
   \   010E  AC                XOR     H
   \   010F            ?0140:
   \   010F  F21601            JP      P,?0038
   \   0112            ?0037:
   \   0112  69                LD      L,C
   \   0113  60                LD      H,B
   \   0114  1803              JR      ?0144
    105                               else
   \   0116            ?0038:
    106                                   active = g_file_total - 1;                            
   \   0116  2A0000            LD      HL,(g_file_total)
   \   0119            ?0144:
   \   0119  2B                DEC     HL
   \   011A  220000            LD      (active),HL
   \   011D            ?0039:
    107                               need_draw = TRUE;
    108                               sel_prev(TRUE);
   \   011D  1E01              LD      E,1
   \   011F  3E00              LD      A,BYTE3 sel_prev
   \   0121  210000            LD      HL,LWRD sel_prev
   \   0124  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   0127  DD36FC01          LD      (IX-4),1
   \   012B            ?0041:
    109                               //清除多出的HOLD消息,防止按键停了还跳几曲
    110                               while(ap_get_message() != 0);
   \   012B  CD0000            CALL    LWRD ap_get_message
   \   012E  B7                OR      A
   \   012F  2893              JR      Z,?0029
   \   0131            ?0042:
    111                               continue;
   \   0131  18F8              JR      ?0041
   \   0133            ?0040:
   \   0133            ?0036:
    112                           }
    113                                 
    114                           if(tmp==56)                   
   \   0133  FE38              CP      56
   \   0135  202C              JR      NZ,?0044
   \   0137            ?0043:
    115                           {
    116                               if(active < g_file_total - 1)active++;
   \   0137  ED4B0000          LD      BC,(g_file_total)
   \   013B  0B                DEC     BC
   \   013C  2A0000            LD      HL,(active)
   \   013F  F680              OR      128
   \   0141  ED42              SBC     HL,BC
   \   0143  E24701            JP      PO,?0141
   \   0146  AC                XOR     H
   \   0147            ?0141:
   \   0147  F25001            JP      P,?0046
   \   014A            ?0045:
   \   014A  2A0000            LD      HL,(active)
   \   014D  23                INC     HL
   \   014E  1803              JR      ?0145
    117                               else 
   \   0150            ?0046:
    118                                   active = 0;
   \   0150  210000            LD      HL,0
   \   0153            ?0145:
   \   0153            ?0047:
    119                               need_draw = TRUE;            
    120                               sel_next(TRUE);
   \   0153  CD7102            CALL    LWRD ?0168
   \   0156  DD36FC01          LD      (IX-4),1
   \   015A            ?0049:
    121                                           //清除多出的HOLD消息,防止按键停了还跳几曲
    122                               while(ap_get_message() != 0);
   \   015A  CD0000            CALL    LWRD ap_get_message
   \   015D  B7                OR      A
   \   015E  CAC400            JP      Z,?0029
   \   0161            ?0050:
    123                               continue;
   \   0161  18F7              JR      ?0049
   \   0163            ?0048:
   \   0163            ?0044:
    124                           }
    125                           
    126                           if(tmp==57)return 0;
   \   0163  FE39              CP      57
   \   0165  CA1902            JP      Z,?0150
   \   0168            ?0051:
   \   0168            ?0052:
    127                           
    128                           if(tmp == RESULT_REDRAW) need_draw = TRUE;
   \   0168  FE32              CP      50
   \   016A  2006              JR      NZ,?0054
   \   016C            ?0053:
   \   016C  DD36FC01          LD      (IX-4),1
    129                           else
   \   0170  180C              JR      ?0057
   \   0172            ?0054:
    130                           {
    131                               if(tmp!=1)return tmp;
   \   0172  47                LD      B,A
   \   0173  05                DEC     B
   \   0174  2808              JR      Z,?0057
   \   0176            ?0056:
   \   0176  DD6EFD            LD      L,(IX-3)
   \   0179  2600              LD      H,0
    132                           }
   \   017B  C33702            JP      LWRD ?0083
   \   017E            ?0057:
   \   017E            ?0055:
   \   017E            ?0032:
    133                       }
    134                             
    135                         key=ap_get_message();                               // get the user message
   \   017E  CD7E02            CALL    LWRD ?0169
    136                         switch(key)
   \   0181  CD0000            CALL    LWRD ?S_V_SWITCH_L06
   \   0184  0600              DEFW    6
   \   0186  0500              DEFW    5
   \   0188  0600              DEFW    6
   \   018A  2100              DEFW    33
   \   018C  3700              DEFW    55
   \   018E  4500              DEFW    69
   \   0190  4600              DEFW    70
   \   0192  1E02              DEFW    ?0076
   \   0194  D301              DEFW    ?0066
   \   0196  A001              DEFW    ?0059
   \   0198  FE01              DEFW    ?0074
   \   019A  1902              DEFW    ?0150
   \   019C  D301              DEFW    ?0066
   \   019E  A001              DEFW    ?0059
   \   01A0            ?0059:
    137                         {                
    138                         case AP_KEY_PREV :
    139                         case AP_KEY_PREV | AP_KEY_HOLD:                        
    140                             if(active > 0)active--;
   \   01A0  ED4B0000          LD      BC,(active)
   \   01A4  6A                LD      L,D
   \   01A5  62                LD      H,D
   \   01A6  F680              OR      128
   \   01A8  ED42              SBC     HL,BC
   \   01AA  E2AE01            JP      PO,?0142
   \   01AD  AC                XOR     H
   \   01AE            ?0142:
   \   01AE  F2B501            JP      P,?0061
   \   01B1            ?0060:
   \   01B1  69                LD      L,C
   \   01B2  60                LD      H,B
   \   01B3  1803              JR      ?0146
    141                          else
   \   01B5            ?0061:
    142                              active = g_file_total - 1;                            
   \   01B5  2A0000            LD      HL,(g_file_total)
   \   01B8            ?0146:
   \   01B8  2B                DEC     HL
   \   01B9  220000            LD      (active),HL
   \   01BC            ?0062:
    143                             need_draw = TRUE;
    144                             sel_prev(TRUE);
   \   01BC  1E01              LD      E,1
   \   01BE  3E00              LD      A,BYTE3 sel_prev
   \   01C0  210000            LD      HL,LWRD sel_prev
   \   01C3  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   01C6  DD36FC01          LD      (IX-4),1
   \   01CA            ?0064:
    145                             //清除多出的HOLD消息,防止按键停了还跳几曲
    146                             while(ap_get_message() != 0);
   \   01CA  CD0000            CALL    LWRD ap_get_message
   \   01CD  B7                OR      A
   \   01CE  CAC400            JP      Z,?0029
   \   01D1            ?0065:
    147                                 //need_draw=TRUE;                               // set the decoer flag 
    148                             break;
   \   01D1  18F7              JR      ?0064
   \   01D3            ?0063:
   \   01D3            ?0066:
    149                         case AP_KEY_NEXT :
    150                         case AP_KEY_NEXT | AP_KEY_HOLD:
    151                             if(active < g_file_total - 1)active++;
   \   01D3  ED4B0000          LD      BC,(g_file_total)
   \   01D7  0B                DEC     BC
   \   01D8  2A0000            LD      HL,(active)
   \   01DB  F680              OR      128
   \   01DD  ED42              SBC     HL,BC
   \   01DF  E2E301            JP      PO,?0143
   \   01E2  AC                XOR     H
   \   01E3            ?0143:
   \   01E3  F2EC01            JP      P,?0068
   \   01E6            ?0067:
   \   01E6  2A0000            LD      HL,(active)
   \   01E9  23                INC     HL
   \   01EA  1802              JR      ?0147
    152                          else 
   \   01EC            ?0068:
    153                          active = 0;
   \   01EC  6A                LD      L,D
   \   01ED  62                LD      H,D
   \   01EE            ?0147:
   \   01EE            ?0069:
    154                           need_draw = TRUE;            
    155                              sel_next(TRUE);
   \   01EE  CD7102            CALL    LWRD ?0168
   \   01F1  DD36FC01          LD      (IX-4),1
   \   01F5            ?0071:
    156                              //清除多出的HOLD消息,防止按键停了还跳几曲
    157                              while(ap_get_message() != 0);
   \   01F5  CD0000            CALL    LWRD ap_get_message
   \   01F8  B7                OR      A
   \   01F9  CAC400            JP      Z,?0029
   \   01FC            ?0072:
    158                                 break;
   \   01FC  18F7              JR      ?0071
   \   01FE            ?0070:
   \   01FE            ?0073:
    159                         case AP_KEY_PLAY | AP_KEY_UP:
    160                            return 0;  
    161                                     
    162                         case AP_MSG_SD_OUT:
   \   01FE            ?0074:
    163                           if (g_viewpic_vars.location.disk == 'H')
   \   01FE  3A0400            LD      A,(g_viewpic_vars+4)
   \   0201  FE48              CP      72
   \   0203  2019              JR      NZ,?0076
   \   0205            ?0075:
    164                            {
    165                              g_viewpic_vars.location.disk = 'C';
   \   0205  3E43              LD      A,67
   \   0207  320400            LD      (g_viewpic_vars+4),A

⌨️ 快捷键说明

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