usbdisk_2l.lst

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

LST
653
字号
    122                          break;
   \   00C6            ?0023:
   \   00C6            ?0022:
   \   00C6            ?0017:
    123                  }
    124              }  
    125              
    126          displayend:
    127              if(HoldDispState==1)
   \   00C6  3A6700            LD      A,(HoldDispState)
   \   00C9  3D                DEC     A
   \   00CA  200C              JR      NZ,?0033
   \   00CC            ?0032:
    128              {
    129                 ResShowPic(UDLOCK_S, 65, 49);
   \   00CC  0E31              LD      C,49
   \   00CE  C5                PUSH    BC
   \   00CF  0E41              LD      C,65
   \   00D1  110800            LD      DE,8
   \   00D4  CD0000            CALL    LWRD ResShowPic
   \   00D7  F1                POP     AF
   \   00D8            ?0033:
    130              }
    131          
    132              if (!((input8(0xfd)&0x10)==0x10)) 
   \   00D8  DBFD              IN      A,(253)
   \   00DA  CB67              BIT     4,A
   \   00DC  2012              JR      NZ,?0037
   \   00DE            ?0034:
    133              {
    134                  if(((input8(0xfd)&0x20)==0x20))
   \   00DE  DBFD              IN      A,(253)
   \   00E0  CB6F              BIT     5,A
   \   00E2  280C              JR      Z,?0037
   \   00E4            ?0036:
    135                  ResShowPic(CARDLOCK,25,30);
   \   00E4  0E1E              LD      C,30
   \   00E6  C5                PUSH    BC
   \   00E7  0E19              LD      C,25
   \   00E9  112000            LD      DE,32
   \   00EC  CD0000            CALL    LWRD ResShowPic
   \   00EF  F1                POP     AF
   \   00F0            ?0037:
   \   00F0            ?0035:
    136              }  
    137              output8(0x00,i);        //升回频率
   \   00F0  210000            LD      HL,0
   \   00F3  39                ADD     HL,SP
   \   00F4  7E                LD      A,(HL)
   \   00F5  D300              OUT     (0),A
    138              for(j=0;j<0x40;j++){}
   \   00F7  DD2E00            LD      IXL,0
   \   00FA            ?0039:
   \   00FA  DD7D              LD      A,IXL
   \   00FC  FE40              CP      64
   \   00FE  3004              JR      NC,?0038
   \   0100            ?0040:
   \   0100  DD2C              INC     IXL
   \   0102  18F6              JR      ?0039
   \   0104            ?0038:
    139              output8(0x27,k);      //恢复中断
   \   0104  210100            LD      HL,1
   \   0107  39                ADD     HL,SP
   \   0108  7E                LD      A,(HL)
   \   0109  D327              OUT     (39),A
    140          }
   \   010B  E1                POP     HL
   \   010C  E1                POP     HL
   \   010D  DDE1              POP     IX
   \   010F  C1                POP     BC
   \   0110  C9                RET
   \   0111            UDiskInitAll:
    141          
    142          
    143          bool UDiskInitAll(int para)
    144          {
   \   0111  C5                PUSH    BC
   \   0112  D5                PUSH    DE
    145              int i;
    146          
    147              //安装ud驱动
    148              if(DRV_DetectUD(0x00) == 0xff)
   \   0113  1E00              LD      E,0
   \   0115  CD0000            CALL    LWRD DRV_DetectUD
   \   0118  3C                INC     A
   \   0119  CA4102            JP      Z,?0056
   \   011C            ?0042:
    149                      return 0;
    150              else
   \   011C            ?0043:
    151                  DRV_ActiveUD(0x00,MODE_FAST);       //快速模式ud驱动
   \   011C  0E00              LD      C,0
   \   011E  59                LD      E,C
   \   011F  CD0000            CALL    LWRD DRV_ActiveUD
    152          
    153              res_fp = ResOpen("ui30.res");
   \   0122  110000            LD      DE,?0044
   \   0125  CD0000            CALL    LWRD ResOpen
   \   0128  220000            LD      (res_fp),HL
    154           
    155          
    156                      ResShowPic(UDISKRDY,0,0);                  //显示空闲画面
   \   012B  0E00              LD      C,0
   \   012D  C5                PUSH    BC
   \   012E  11FE00            LD      DE,254
   \   0131  CD0000            CALL    LWRD ResShowPic
   \   0134  F1                POP     AF
    157              GetUsbSetupInfo(&usbsetupinfo);
   \   0135  110000            LD      DE,usbsetupinfo
   \   0138  CD0000            CALL    LWRD GetUsbSetupInfo
    158              GetUsbAttribute(&usbattribute);
   \   013B  114200            LD      DE,usbattribute
   \   013E  CD0000            CALL    LWRD GetUsbAttribute
    159              GetUsbVidPid(&vidpidstring);
   \   0141  116200            LD      DE,vidpidstring
   \   0144  CD0000            CALL    LWRD GetUsbVidPid
    160          
    161                  //read comval
    162              VMRead(&g_comval, VM_SYSTEM, sizeof(g_comval));     //读VRAM
   \   0147  212000            LD      HL,32
   \   014A  E5                PUSH    HL
   \   014B  010002            LD      BC,512
   \   014E  116900            LD      DE,g_comval
   \   0151  CD0000            CALL    LWRD VMRead
   \   0154  E1                POP     HL
    163                  //check if valid
    164              if(g_comval.magic != MAGIC_COMVAL)      //取联机模式设定
   \   0155  21ADDE            LD      HL,57005
   \   0158  ED4B6900          LD      BC,(g_comval)
   \   015C  A7                AND     A
   \   015D  ED42              SBC     HL,BC
   \   015F  2840              JR      Z,?0046
   \   0161            ?0045:
   \   0161            ?0049:
    165                     COMVAL_INIT(g_comval);
   \   0161  3E0B              LD      A,11
   \   0163  327100            LD      (g_comval+8),A
   \   0166  AF                XOR     A
   \   0167  327500            LD      (g_comval+12),A
   \   016A  3E03              LD      A,3
   \   016C  327200            LD      (g_comval+9),A
   \   016F  21ADDE            LD      HL,57005
   \   0172  226900            LD      (g_comval),HL
   \   0175  AF                XOR     A
   \   0176  327600            LD      (g_comval+13),A
   \   0179  327400            LD      (g_comval+11),A
   \   017C  3E1E              LD      A,30
   \   017E  327300            LD      (g_comval+10),A
   \   0181  AF                XOR     A
   \   0182  327700            LD      (g_comval+14),A
   \   0185  4F                LD      C,A
   \   0186  47                LD      B,A
   \   0187  ED436B00          LD      (g_comval+2),BC
   \   018B  ED436D00          LD      (g_comval+4),BC
   \   018F  327800            LD      (g_comval+15),A
   \   0192  327900            LD      (g_comval+16),A
   \   0195  327A00            LD      (g_comval+17),A
   \   0198  3E04              LD      A,4
   \   019A  327B00            LD      (g_comval+18),A
   \   019D  AF                XOR     A
   \   019E  327C00            LD      (g_comval+19),A
   \   01A1            ?0046:
    166          
    167              //==================================================================================
    168              //**********************以下函数调用次序不能改动***************************************
    169              //==================================================================================
    170          
    171              DispBuf=(char *)DISPLAY_BUFFER_ADDR;
   \   01A1  210058            LD      HL,22528
   \   01A4  220000            LD      (DispBuf),HL
    172          
    173              UDiskSetDiskNum(g_comval.OnlineMode);   //设置联机模式
   \   01A7  ED5B7700          LD      DE,(g_comval+14)
   \   01AB  3E00              LD      A,BYTE3 UDiskSetDiskNum
   \   01AD  210000            LD      HL,LWRD UDiskSetDiskNum
   \   01B0  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
    174              
    175              AlwaysShowCardDisk(1);                  //设置是否显示多盘符   
   \   01B3  1E01              LD      E,1
   \   01B5  3E00              LD      A,BYTE3 AlwaysShowCardDisk
   \   01B7  210000            LD      HL,LWRD AlwaysShowCardDisk
   \   01BA  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
    176          
    177              UDiskInit((void *)FlashLed,&usbsetupinfo,&usbattribute,&vidpidstring);  //U盘初始终化,输入参数:callback函数,属性...
   \   01BD  216200            LD      HL,vidpidstring
   \   01C0  E5                PUSH    HL
   \   01C1  214200            LD      HL,usbattribute
   \   01C4  E5                PUSH    HL
   \   01C5  010000            LD      BC,usbsetupinfo
   \   01C8  114402            LD      DE,FlashLed
   \   01CB  3E00              LD      A,BYTE3 UDiskInit
   \   01CD  210000            LD      HL,LWRD UDiskInit
   \   01D0  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   01D3  F1                POP     AF
   \   01D4  F1                POP     AF
    178          
    179              if(sKY_HoldCheck())                     //HOLD表示需要写保护
   \   01D5  CD0000            CALL    LWRD sKY_HoldCheck
   \   01D8  B7                OR      A
   \   01D9  281B              JR      Z,?0051
   \   01DB            ?0050:
    180              {
    181                  UDiskSetWP('C');
   \   01DB  1E43              LD      E,67
   \   01DD  3E00              LD      A,BYTE3 UDiskSetWP
   \   01DF  210000            LD      HL,LWRD UDiskSetWP
   \   01E2  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
    182                  HoldDispState=1;
   \   01E5  3E01              LD      A,1
   \   01E7  326700            LD      (HoldDispState),A
    183                          ResShowPic(UDLOCK_S, 68, 132);
   \   01EA  0E84              LD      C,132
   \   01EC  C5                PUSH    BC
   \   01ED  0E44              LD      C,68
   \   01EF  110800            LD      DE,8
   \   01F2  CD0000            CALL    LWRD ResShowPic
   \   01F5  F1                POP     AF
   \   01F6            ?0051:
    184              }
    185              if (UDiskGetCardStatus())            //UDiskGetCardStatus返回值:1:有卡或初始化失败  0:没卡
   \   01F6  3E00              LD      A,BYTE3 UDiskGetCardStatus
   \   01F8  210000            LD      HL,LWRD UDiskGetCardStatus
   \   01FB  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   01FE  2C                INC     L
   \   01FF  2D                DEC     L
   \   0200  2822              JR      Z,?0055
   \   0202            ?0052:
    186              { //有卡
    187                  if(UD_SDCardWPDetect())                       //卡是否写保护
   \   0202  3E00              LD      A,BYTE3 UD_SDCardWPDetect
   \   0204  210000            LD      HL,LWRD UD_SDCardWPDetect
   \   0207  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   020A  7D                LD      A,L
   \   020B  B4                OR      H
   \   020C  2816              JR      Z,?0055
   \   020E            ?0054:
    188                  {
    189                      UDiskSetWP('H');
   \   020E  1E48              LD      E,72
   \   0210  3E00              LD      A,BYTE3 UDiskSetWP
   \   0212  210000            LD      HL,LWRD UDiskSetWP
   \   0215  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
    190                      //HoldDispState=1;
    191                          ResShowPic(CARDLOCK,22,38);
   \   0218  0E26              LD      C,38
   \   021A  C5                PUSH    BC
   \   021B  0E16              LD      C,22
   \   021D  112000            LD      DE,32
   \   0220  CD0000            CALL    LWRD ResShowPic
   \   0223  F1                POP     AF
   \   0224            ?0055:
   \   0224            ?0053:
    192                  }
    193              }
    194          
    195          
    196              sysinfopt=&sysinfo;
   \   0224  210000            LD      HL,sysinfo
   \   0227  224000            LD      (sysinfopt),HL
    197              GetSysInfo(sysinfopt);          //取得ADFU UPD的信息头
   \   022A  EB                EX      DE,HL
   \   022B  CD0000            CALL    LWRD GetSysInfo
    198              BankSwitch( (unsigned long)UDiskRun >>16 );
   \   022E  210000            LD      HL,0
   \   0231  5D                LD      E,L
   \   0232  CD0000            CALL    LWRD BankSwitch
    199              UDiskRun(para);                             //启动USB引擎
   \   0235  210000            LD      HL,0
   \   0238  39                ADD     HL,SP
   \   0239  5E                LD      E,(HL)
   \   023A  23                INC     HL
   \   023B  56                LD      D,(HL)
   \   023C  CD0000            CALL    LWRD UDiskRun
    200          
    201              return 1;
   \   023F  3E01              LD      A,1
    202          }
   \   0241            ?0056:
   \   0241  E1                POP     HL
   \   0242  C1                POP     BC
   \   0243  C9                RET
   \   0244            FlashLed:
    203          
    204          
    205          void FlashLed(void)
    206          {
    207          }
   \   0244  C9                RET
    208          
    209          #pragma memory=default
   \   0000                    RSEG    CSTR
   \   0000            ?0044:
   \   0000  75693330          DEFB    'ui30.res'
   \   0004  2E726573
   \   0008  00                DEFB    0
   \   0000                    RSEG    UDISK_RD
   \   0000            usbsetupinfo:
   \   0040                    DEFS    64
   \   0040            sysinfopt:
   \   0042                    DEFS    2
   \   0042            usbattribute:
   \   0062                    DEFS    32
   \   0062            vidpidstring:
   \   0066                    DEFS    4
   \   0066            MenuKeyPress:
   \   0067                    DEFS    1
   \   0067            HoldDispState:
   \   0068                    DEFS    1
   \   0068            IsCardOut:
   \   0069                    DEFS    1
   \   0069            g_comval:
   \   0089                    DEFS    32
   \   0000                    RSEG    UDISK_RS
   \   0000            wUDiskDisp:
   \   0000  FE00              DEFW    254
   \   0002  FF00              DEFW    255
   \   0004  FD00              DEFW    253
   \   0006                    END

Errors: none
Warnings: none
Code size: 581
Constant size: 15
Static variable size: Data(137) Iram(0)

⌨️ 快捷键说明

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