usbdisk.lst

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

LST
479
字号
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       28/Dec/106  10:13:47 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  banked                                              #
#       Source file   =  d:\case_i_d90f\ap\ap_udisk\usbdisk.c                #
#       List file     =  d:\case_i_d90f\ap\ap_udisk\.\list\usbdisk.lst       #
#       Object file   =  d:\case_i_d90f\ap\ap_udisk\.\obj\usbdisk.r01        #
#       ASM file      =  d:\case_i_d90f\ap\ap_udisk\.\list\usbdisk.s01       #
#       Command line  =  -v0 -mb -uu -OD:\case_i_d90f\ap\ap_udisk\.\Obj\ -e  #
#                        -K -w -gA -s9 -RCODE -r0 -DUSB_DISK_USING -DIC3951  #
#                        -LD:\case_i_d90f\ap\ap_udisk\.\List\ -q -t8         #
#                        -AD:\case_i_d90f\ap\ap_udisk\.\List\                #
#                        -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\           #
#                        d:\case_i_d90f\ap\ap_udisk\usbdisk.c                #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    usbdisk(17)
   \   0000                    RSEG    UDISK_RC(0)
   \   0000                    RSEG    UDISK_RD(0)
   \   0000                    EXTERN  ClearScreen
   \   0000                    EXTERN  DRV_ActiveUD
   \   0000                    PUBLIC  DispBuf
   \   0000                    EXTERN  Display
   \   0000                    PUBLIC  DisplayIndi
   \   0000                    EXTERN  IsCardOut
   \   0000                    EXTERN  MenuKeyPress
   \   0000                    EXTERN  MsgManager
   \   0000                    PUBLIC  OldVddVol
   \   0000                    EXTERN  ResClose
   \   0000                    EXTERN  SetContrast
   \   0000                    EXTERN  StandbyScreen
   \   0000                    EXTERN  UDiskExit
   \   0000                    EXTERN  UDiskGetStatus
   \   0000                    EXTERN  UDiskHandle
   \   0000                    EXTERN  UDiskInitAll
   \   0000                    EXTERN  UDiskPullCardOut
   \   0000                    PUBLIC  USBStatus
   \   0000                    EXTERN  g_comval
   \   0000                    PUBLIC  main
   \   0000                    EXTERN  res_fp
   \   0000                    EXTERN  sKY_CloseBacklight
   \   0000                    EXTERN  sKY_OpenBacklight
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?C_V_SWITCH_L06
   \   0000                    EXTERN  ?BANK_FAST_LEAVE_L08
   \   0000                    RSEG    UDISK_RC
   \   0000            main:
      1          /*
      2          ********************************************************************************
      3          *                       ACTOS
      4          *                      usbmain
      5          *
      6          *                (c) Copyright 2002-2003, Actions Co,Ld.
      7          *                        All Right Reserved
      8          *
      9          * File   : main.c
     10          * By     : Chliang
     11          * Version: v1.00     first version     04-1-6 14:33
     12          ********************************************************************************
     13          */
     14          #pragma function=non_banked
     15          
     16          #include "Udisk.h"
     17          
     18          #pragma memory=dataseg(UDISK_RD)
     19          char DisplayIndi,USBStatus;
     20          BYTE OldVddVol;
     21          char *DispBuf;
     22          extern BYTE MenuKeyPress;
     23          extern BYTE IsCardOut;
     24          extern comval_t g_comval;
     25          #pragma memory=default
     26          
     27          
     28          #pragma codeseg(UDISK_RC)
     29          int main(int para)
     30          {
   \   0000  C5                PUSH    BC
   \   0001  DDE5              PUSH    IX
   \   0003  D5                PUSH    DE
     31              char    dispIndibak=0xff;
     32              char    rii=0;
     33          
     34          
     35              //~~~~~~~~~~~~~~~~~~~~~
     36              //init usb disk
     37              //~~~~~~~~~~~~~~~~~~~~~
     38              DisplayIndi=0x00;                       //变量初始化
   \   0004  AF                XOR     A
   \   0005  320000            LD      (DisplayIndi),A
     39          
     40          
     41              if(!UDiskInitAll(para))                     //AP初始化
   \   0008  DD2EFF            LD      IXL,255
   \   000B  CD0000            CALL    LWRD UDiskInitAll
   \   000E  B7                OR      A
   \   000F  CA8601            JP      Z,?0049
   \   0012            ?0002:
     42              {
     43                  return 0;
     44              } 
   \   0012            ?0003:
     45          
     46              for(rii=0;rii<0x7f;rii++)
   \   0012  DD2600            LD      IXH,0
   \   0015            ?0005:
   \   0015  DD7C              LD      A,IXH
   \   0017  FE7F              CP      127
   \   0019  3004              JR      NC,?0004
   \   001B            ?0006:
   \   001B  DD24              INC     IXH
     47              {
     48                  ;   //delay
     49              }    
     50              //~~~~~~~~~~~~~~~~~~~~~
     51              //message loop
     52              //~~~~~~~~~~~~~~~~~~~~~
     53              while(1)
   \   001D  18F6              JR      ?0005
   \   001F            ?0004:
   \   001F            ?0009:
     54              {
     55                          //清watch dog!!
     56                  output8(0x4e,input8(0x4e)|0x08);
   \   001F  DB4E              IN      A,(78)
   \   0021  CBDF              SET     3,A
   \   0023  D34E              OUT     (78),A
     57                  
     58                  MsgManager();                   //消息解释
   \   0025  CD0000            CALL    LWRD MsgManager
     59                   if(IsCardOut == 1)
   \   0028  3A0000            LD      A,(IsCardOut)
   \   002B  3D                DEC     A
   \   002C  2007              JR      NZ,?0012
   \   002E            ?0011:
     60                  {
     61                      UDiskPullCardOut();
   \   002E  CD0000            CALL    LWRD UDiskPullCardOut
     62                      IsCardOut = 0;
   \   0031  AF                XOR     A
   \   0032  320000            LD      (IsCardOut),A
   \   0035            ?0012:
     63                  }
     64                  UDiskHandle();                  //调用状态机执行命令
   \   0035  CD0000            CALL    LWRD UDiskHandle
     65                  
     66                  USBStatus=UDiskGetStatus();
   \   0038  CD0000            CALL    LWRD UDiskGetStatus
   \   003B  320100            LD      (USBStatus),A
     67                  //0:空闲  10h:上传  20h:下传  30h:弹出要求退出  40h:拔线要求退出  50h:切换到韧件升级应用
     68                  //60h:分区处理状态  70h:出错要求退出  80h:进入Suspend状态  90h:退出Suspend状态
     69                  if( (DisplayIndi==0xff) && ( USBStatus !=0x80 ) )
   \   003E  3A0000            LD      A,(DisplayIndi)
   \   0041  3C                INC     A
   \   0042  2016              JR      NZ,?0014
   \   0044  3A0100            LD      A,(USBStatus)
   \   0047  3D                DEC     A
   \   0048  EA5A00            JP      PE,?0014
   \   004B            ?0016:
   \   004B            ?0015:
   \   004B            ?0013:
     70                  {   
     71                     sKY_OpenBacklight();
   \   004B  CD0000            CALL    LWRD sKY_OpenBacklight
     72                     StandbyScreen(1);       //开显示屏
   \   004E  1E01              LD      E,1
   \   0050  CD0000            CALL    LWRD StandbyScreen
     73                     SetContrast(g_comval.DisplayContrast);      //设对比度
   \   0053  ED5B0800          LD      DE,(g_comval+8)
   \   0057  CD0000            CALL    LWRD SetContrast
   \   005A            ?0014:
     74                  }
     75                  if ( (USBStatus==0x30) || (USBStatus==0x40) || (USBStatus==0x50) || (USBStatus==0x70) )
   \   005A  3A0100            LD      A,(USBStatus)
   \   005D  FE30              CP      48
   \   005F  CA4C01            JP      Z,?0008
   \   0062  FE40              CP      64
   \   0064  CA4C01            JP      Z,?0008
   \   0067  FE50              CP      80
   \   0069  CA4C01            JP      Z,?0008
   \   006C  FE70              CP      112
   \   006E  CA4C01            JP      Z,?0008
   \   0071            ?0019:
   \   0071            ?0020:
   \   0071            ?0017:
     76                      break;     
   \   0071            ?0018:
     77                  if((MenuKeyPress==1) && (USBStatus==0))
   \   0071  3A0000            LD      A,(MenuKeyPress)
   \   0074  3D                DEC     A
   \   0075  2007              JR      NZ,?0022
   \   0077  3A0100            LD      A,(USBStatus)
   \   007A  B7                OR      A
   \   007B  CA4C01            JP      Z,?0008
   \   007E            ?0024:
   \   007E            ?0023:
   \   007E            ?0021:
     78                      break;          //0x00             
   \   007E            ?0022:
     79                  switch (USBStatus)
   \   007E  ED5B0100          LD      DE,(USBStatus)
   \   0082  CD0000            CALL    LWRD ?C_V_SWITCH_L06
   \   0085  0B00              DEFW    11
   \   0087  00                DEFB    0
   \   0088  10                DEFB    16
   \   0089  11                DEFB    17
   \   008A  20                DEFB    32
   \   008B  21                DEFB    33
   \   008C  31                DEFB    49
   \   008D  41                DEFB    65
   \   008E  51                DEFB    81
   \   008F  61                DEFB    97
   \   0090  80                DEFB    128
   \   0091  90                DEFB    144
   \   0092  1F00              DEFW    ?0004
   \   0094  3401              DEFW    ?0044
   \   0096  1E01              DEFW    ?0043
   \   0098  BF00              DEFW    ?0032
   \   009A  ED00              DEFW    ?0037
   \   009C  BF00              DEFW    ?0032
   \   009E  BF00              DEFW    ?0032
   \   00A0  BF00              DEFW    ?0032
   \   00A2  0A01              DEFW    ?0040
   \   00A4  BF00              DEFW    ?0032
   \   00A6  B400              DEFW    ?0029
   \   00A8  AA00              DEFW    ?0026
   \   00AA            ?0026:
     80                  {
     81                      case 0:
     82                          
     83                          if(DisplayIndi!=0x00)
   \   00AA  3A0000            LD      A,(DisplayIndi)
   \   00AD  B7                OR      A
   \   00AE  CA1F00            JP      Z,?0004

⌨️ 快捷键说明

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