usbdisk_2l.lst
来自「MP3 整个 SDK」· LST 代码 · 共 653 行 · 第 1/2 页
LST
653 行
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 28/Dec/106 10:23:50 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d90f\ap\ap_udisk\usbdisk_2l.c #
# List file = d:\case_i_d90f\ap\ap_udisk\.\list\usbdisk_2l.lst #
# Object file = d:\case_i_d90f\ap\ap_udisk\.\obj\usbdisk_2l.r01 #
# ASM file = d:\case_i_d90f\ap\ap_udisk\.\list\usbdisk_2l.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_2l.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME usbdisk_2l(17)
\ 0000 RSEG UDISK_RC(0)
\ 0000 RSEG CSTR(0)
\ 0000 RSEG UDISK_RD(0)
\ 0000 RSEG UDISK_RS(0)
\ 0000 EXTERN AlwaysShowCardDisk
\ 0000 EXTERN BankSwitch
\ 0000 EXTERN DRV_ActiveUD
\ 0000 EXTERN DRV_DetectUD
\ 0000 EXTERN DispBuf
\ 0000 PUBLIC Display
\ 0000 PUBLIC FlashLed
\ 0000 EXTERN GetSysInfo
\ 0000 EXTERN GetSysMsg
\ 0000 EXTERN GetUsbAttribute
\ 0000 EXTERN GetUsbSetupInfo
\ 0000 EXTERN GetUsbVidPid
\ 0000 PUBLIC HoldDispState
\ 0000 PUBLIC IsCardOut
\ 0000 PUBLIC MenuKeyPress
\ 0000 PUBLIC MsgManager
\ 0000 EXTERN ResOpen
\ 0000 EXTERN ResShowPic
\ 0000 EXTERN UD_SDCardWPDetect
\ 0000 EXTERN UDiskGetCardStatus
\ 0000 EXTERN UDiskInit
\ 0000 PUBLIC UDiskInitAll
\ 0000 EXTERN UDiskRun
\ 0000 EXTERN UDiskSetDiskNum
\ 0000 EXTERN UDiskSetWP
\ 0000 EXTERN VMRead
\ 0000 PUBLIC g_comval
\ 0000 EXTERN res_fp
\ 0000 EXTERN sKY_HoldCheck
\ 0000 EXTERN sysinfo
\ 0000 PUBLIC sysinfopt
\ 0000 PUBLIC usbattribute
\ 0000 PUBLIC usbsetupinfo
\ 0000 PUBLIC vidpidstring
\ 0000 PUBLIC wUDiskDisp
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?C_S_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 RSEG UDISK_RC
\ 0000 MsgManager:
1 /*
2 ********************************************************************************
3 * ACTOS
4 * usbdisk
5 *
6 * (c) Copyright 2002-2003, Actions Co,Ld.
7 * All Right Reserved
8 *
9 * File : usbdisk35.c
10 * By : Chliang
11 * Version: v1.00 first version 2003-11-18 11:47
12 ********************************************************************************
13 */
14 #pragma function=non_banked
15
16 #include "Udisk.h"
17
18 #pragma memory=dataseg(UDISK_RD)
19 usbsetupinfo_t usbsetupinfo; //U盘安装信息数据结构
20 ADFU_SysInfo_t *sysinfopt;
21 usbattri_t usbattribute; //U盘属性数据结构
22 vidpid_t vidpidstring; //PID,VID数据结构
23 BYTE MenuKeyPress;
24 BYTE HoldDispState;
25 BYTE IsCardOut; //jpu
26 comval_t g_comval; //全局变量数据结构
27 extern char DisplayIndi;
28 extern char *DispBuf;
29 extern ADFU_SysInfo_t sysinfo;
30 #pragma memory=default
31
32
33 #pragma memory=constseg(UDISK_RS)
34 WORD wUDiskDisp[3]={UDISKRDY,UDISKUPL,UDISKDL};
35 //WORD wADFUDisp[7]={UPG_RDY, UPG_BUSY, UPG_DOWN, UPG_UP, UPG_DONE, UPG_DONE, UPG_FAIL};
36 #pragma memory=default
37
38
39 #pragma codeseg(UDISK_RC)
40 void MsgManager(void)
41 {
\ 0000 D5 PUSH DE
42 char i;
43 if(MenuKeyPress==1) //已收到Menu键,不再收消息,以防非空闲状态下跑该函数把KeyUp收走
\ 0001 3A6600 LD A,(MenuKeyPress)
\ 0004 3D DEC A
\ 0005 2817 JR Z,?0007
\ 0007 ?0002:
\ 0007 ?0003:
44 return;
45 if( (i = GetSysMsg()) == Msg_KeyMenu ) //收到Menu键
\ 0007 CD0000 CALL LWRD GetSysMsg
\ 000A FE10 CP 16
\ 000C 2007 JR NZ,?0005
\ 000E ?0004:
46 {
47 MenuKeyPress=1;
\ 000E 3E01 LD A,1
\ 0010 326600 LD (MenuKeyPress),A
48 return;
49 }
\ 0013 1809 JR ?0007
\ 0015 ?0005:
50 else if ( i == MSG_SD_OUT )
\ 0015 FEB1 CP 177
\ 0017 2005 JR NZ,?0007
\ 0019 ?0006:
51 {
52 IsCardOut = 1;
\ 0019 3E01 LD A,1
\ 001B 326800 LD (IsCardOut),A
53 return;
54 }
\ 001E ?0007:
55 }
\ 001E ?0008:
\ 001E D1 POP DE
\ 001F C9 RET
\ 0020 Display:
56
57
58
59 void Display(char dispIndi)
60 {
\ 0020 C5 PUSH BC
\ 0021 DDE5 PUSH IX
\ 0023 F5 PUSH AF
\ 0024 F5 PUSH AF
\ 0025 DD63 LD IXH,E
61 char disptemp = dispIndi & 0x0f;
\ 0027 7B LD A,E
\ 0028 E60F AND 15
\ 002A 210200 LD HL,2
\ 002D 39 ADD HL,SP
\ 002E 77 LD (HL),A
62 char i,j,k;
63
64 k = input8(0x27);
\ 002F DB27 IN A,(39)
\ 0031 2B DEC HL
\ 0032 77 LD (HL),A
65 output8(0x27,0x0); //显示时不开中断,避免低频跑中断服务(下面代码会降频),降低效率
\ 0033 AF XOR A
\ 0034 D327 OUT (39),A
66
67 i = input8(0x00);
\ 0036 DB00 IN A,(0)
\ 0038 2B DEC HL
\ 0039 77 LD (HL),A
68 output8(0x00,i | 0x01); //显示屏不支持60MHz送屏,降频
\ 003A 47 LD B,A
\ 003B CBC0 SET 0,B
\ 003D 78 LD A,B
\ 003E D300 OUT (0),A
69 for(j=0;j<0x40;j++){}
\ 0040 DD2E00 LD IXL,0
\ 0043 ?0010:
\ 0043 DD7D LD A,IXL
\ 0045 FE40 CP 64
\ 0047 3004 JR NC,?0009
\ 0049 ?0011:
\ 0049 DD2C INC IXL
\ 004B 18F6 JR ?0010
\ 004D ?0009:
70 if(dispIndi<0x10)
\ 004D DD7C LD A,IXH
\ 004F FE10 CP 16
\ 0051 301C JR NC,?0014
\ 0053 ?0013:
71 {
72 if(dispIndi==0x00) //显示任务指示 0:无显示动作 01:上传 02:下传 03:传输结束
\ 0053 DD44 LD B,IXH
\ 0055 04 INC B
\ 0056 05 DEC B
\ 0057 2007 JR NZ,?0016
\ 0059 ?0015:
73 {
74 ResShowPic(UDISKRDY,0,0);
\ 0059 48 LD C,B
\ 005A C5 PUSH BC
\ 005B 11FE00 LD DE,254
\ 005E 1862 JR ?0075
75 goto displayend;
\ 0060 ?0016:
76 }
77 if(dispIndi==0x01)
\ 0060 05 DEC B
\ 0061 2003 JR NZ,?0019
\ 0063 ?0018:
78 {
79 ResShowPic(UDISKBCK,0,0);
\ 0063 48 LD C,B
\ 0064 184C JR ?0077
80 ResShowPic(UDISKUPL, 68, 76);
81 goto displayend;
\ 0066 ?0019:
82 }
83 if(dispIndi==0x02)
\ 0066 DD44 LD B,IXH
\ 0068 05 DEC B
\ 0069 05 DEC B
\ 006A 205A JR NZ,?0023
\ 006C ?0020:
84 {
85 ResShowPic(UDISKBCK,0,0);
\ 006C 48 LD C,B
\ 006D 182F JR ?0078
86 ResShowPic(UDISKDL, 68, 76);
\ 006F ?0021:
87 }
88
89 }
90 else
\ 006F ?0014:
91 {
92
93 switch (disptemp)
\ 006F 210200 LD HL,2
\ 0072 39 ADD HL,SP
\ 0073 5E LD E,(HL)
\ 0074 CD0000 CALL LWRD ?C_S_SWITCH_L06
\ 0077 00 DEFB 0
\ 0078 0700 DEFW 7
\ 007A C600 DEFW ?0023
\ 007C 8A00 DEFW ?0024
\ 007E 9200 DEFW ?0025
\ 0080 9C00 DEFW ?0026
\ 0082 B000 DEFW ?0027
\ 0084 C600 DEFW ?0023
\ 0086 C600 DEFW ?0023
\ 0088 C600 DEFW ?0023
\ 008A ?0024:
94 {
95 case 0:
96 ResShowPic(UPG_RDY,0,0);
\ 008A 0E00 LD C,0
\ 008C C5 PUSH BC
\ 008D 110B00 LD DE,11
\ 0090 1830 JR ?0075
97 break;
\ 0092 ?0025:
98 case 1:
99 ResShowPic(UPG_BUSY,0,30);
\ 0092 0E1E LD C,30
\ 0094 C5 PUSH BC
\ 0095 0E00 LD C,0
\ 0097 110700 LD DE,7
\ 009A 1826 JR ?0075
100 break;
\ 009C ?0026:
101 case 2:
102 ResShowPic(UDISKBCK,0,0);
\ 009C 0E00 LD C,0
\ 009E ?0078:
\ 009E C5 PUSH BC
\ 009F 11FC00 LD DE,252
\ 00A2 CD0000 CALL LWRD ResShowPic
\ 00A5 F1 POP AF
103 ResShowPic(UDISKDL, 68, 76);
\ 00A6 0E4C LD C,76
\ 00A8 C5 PUSH BC
\ 00A9 0E44 LD C,68
\ 00AB 11FD00 LD DE,253
\ 00AE 1812 JR ?0075
104 break;
\ 00B0 ?0027:
105 case 3:
106 ResShowPic(UDISKBCK,0,0);
\ 00B0 0E00 LD C,0
\ 00B2 ?0077:
\ 00B2 C5 PUSH BC
\ 00B3 11FC00 LD DE,252
\ 00B6 CD0000 CALL LWRD ResShowPic
\ 00B9 F1 POP AF
107 ResShowPic(UDISKUPL, 68, 76);
\ 00BA 0E4C LD C,76
\ 00BC C5 PUSH BC
\ 00BD 0E44 LD C,68
\ 00BF 11FF00 LD DE,255
\ 00C2 ?0075:
\ 00C2 CD0000 CALL LWRD ResShowPic
\ 00C5 F1 POP AF
108 break;
\ 00C6 ?0028:
109 case 4:
110 //ResShowPic(UDISKBCK, 0, 0);
111 //ResShowPic(UPG_DONE, 40, 21);
112 break;
\ 00C6 ?0029:
113 case 5:
114 //ResShowPic(UDISKBCK, 0, 0);
115 //ResShowPic(UPG_DONE, 40, 21);
116 break;
\ 00C6 ?0030:
117 case 6:
118 //ResShowPic(UDISKBCK, 0, 0);
119 //ResShowPic(UPG_FAIL, 40, 21);
120 break;
\ 00C6 ?0031:
121 default:
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?