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 + -
显示快捷键?