📄 sub_function3.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 25/Dec/106 16:59:15 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d90f\ap\ap_amv\sub_function3.c #
# List file = d:\case_i_d90f\ap\ap_amv\list\sub_function3.lst #
# Object file = d:\case_i_d90f\ap\ap_amv\obj\sub_function3.r01 #
# ASM file = d:\case_i_d90f\ap\ap_amv\list\sub_function3.s01 #
# Command line = -v0 -mb -OD:\case_i_d90f\ap\ap_amv\Obj\ -e -K -w #
# -gA -s9 -RCODE -r0 -DNAPDEBUG -DAMV_JPG_TXT #
# -LD:\case_i_d90f\ap\ap_amv\List\ -q -t8 #
# -AD:\case_i_d90f\ap\ap_amv\List\ #
# -ND:\case_i_d90f\ap\ap_amv\List\ -X #
# -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\ #
# D:\CASE_I_D90F\AP\AP_AMV\sub_function3.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME sub_function3(17)
\ 0000 RSEG CODE(0)
\ 0000 EXTERN BankSwitch
\ 0000 EXTERN ClearTimePara
\ 0000 EXTERN DRV_DetectUD
\ 0000 PUBLIC DisplayErrInfor
\ 0000 PUBLIC InitFileSelector
\ 0000 PUBLIC StartFileSelector
\ 0000 PUBLIC UpdateFileSelector
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_sleep
\ 0000 EXTERN fselGetErrID
\ 0000 EXTERN fselGetNextFile
\ 0000 EXTERN fselInit
\ 0000 EXTERN fselSetLocation
\ 0000 EXTERN g_DiskStateFlag
\ 0000 EXTERN g_amv_vars
\ 0000 EXTERN g_comval
\ 0000 EXTERN ui_show_msg
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 RSEG CODE
\ 0000 DisplayErrInfor:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * A short description of this file
5 *
6 * (c) Copyright, Actions Co,Ld.
7 * All Right Reserved
8 *
9 * #Id#
10 *******************************************************************************
11 */
12 #include "actos.h"
13 #include "enhanced.h"
14 #include "ap_common.h"
15 #include "display.h"
16 #include "ap_amv.h"
17 //extern comval_t g_comval;
18 //extern viewpic_vars_t g_amv_vars;
19 extern BYTE g_DiskStateFlag;
20 int StartFileSelector(void);
21 /******************************************************************************
22 ** 名字: 显示输入 id 的资源内容
23 ** 接口: void DisplayErrInfor(int id)
24 ** 描述:
25 ** 输入参数: int id:要显示的资源号
26 ** 输出参数: void
27 ** 使用说明:
28 ********************************************************************************/
29 void DisplayErrInfor(int id)
30 {
\ 0000 C5 PUSH BC
\ 0001 DDE5 PUSH IX
31
32 ui_show_msg(id,id,g_comval.langid);
\ 0003 ED4B0C00 LD BC,(g_comval+12)
\ 0007 0600 LD B,0
\ 0009 C5 PUSH BC
\ 000A 4B LD C,E
\ 000B 42 LD B,D
\ 000C 3E00 LD A,BYTE3 ui_show_msg
\ 000E 210000 LD HL,LWRD ui_show_msg
\ 0011 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0014 F1 POP AF
\ 0015 ?0003:
33
34 while( ap_get_message() != NULL );//清空消息池,确保DELAY时间准确
\ 0015 CD0000 CALL LWRD ap_get_message
\ 0018 B7 OR A
\ 0019 20FA JR NZ,?0003
\ 001B ?0004:
\ 001B ?0002:
35 ap_sleep(4);
\ 001B 110400 LD DE,4
\ 001E 3E00 LD A,BYTE3 ap_sleep
\ 0020 210000 LD HL,LWRD ap_sleep
\ 0023 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
36 }
\ 0026 DDE1 POP IX
\ 0028 C1 POP BC
\ 0029 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 002C InitFileSelector:
37
38
39
40 /******************************************************************************
41 ** 名字: 文件选择器初始化及报错显示
42 ** 接口: int InitFileSelector(void)
43 ** 描述: 把文件选择器初始化到有效的盘上,如找不到,则报错退出
44 ** 输入参数: void
45 ** 输出参数: 0: 没有有效的盘或盘上无文件,初始化失败,要求退出AP
46 1: 已完成初始化文件选择器动作
47 ** 使用说明:
48 ********************************************************************************/
49 int InitFileSelector(void)
50 {
\ 002C C5 PUSH BC
\ 002D D5 PUSH DE
\ 002E F5 PUSH AF
51 int result;
52
53 if (g_amv_vars.location.disk == 'H')
\ 002F 3A0500 LD A,(g_amv_vars+5)
\ 0032 FE48 CP 72
\ 0034 2065 JR NZ,?0006
\ 0036 ?0005:
54 {
55 //检测 sd 卡是否存在
56 if ((DRV_DetectUD(1) == 0x20)&&((g_DiskStateFlag & SetCardOKFlag_def)!=0))
\ 0036 1E01 LD E,1
\ 0038 CD0000 CALL LWRD DRV_DetectUD
\ 003B FE20 CP 32
\ 003D 2025 JR NZ,?0008
\ 003F 3A0000 LD A,(g_DiskStateFlag)
\ 0042 CB5F BIT 3,A
\ 0044 281E JR Z,?0008
\ 0046 ?0010:
\ 0046 ?0009:
\ 0046 ?0007:
57 {//有卡
58 if (FSELInit(FSEL_TYPE_AMV, FSEL_ALL_SEQUENCE, FSEL_TYPE_COMMONDIR, 'H'))
\ 0046 0E48 LD C,72
\ 0048 C5 PUSH BC
\ 0049 0E00 LD C,0
\ 004B C5 PUSH BC
\ 004C CD0A01 CALL LWRD ?0195
\ 004F F1 POP AF
\ 0050 F1 POP AF
\ 0051 2C INC L
\ 0052 2D DEC L
\ 0053 C2EC00 JP NZ,?0128
\ 0056 ?0011:
59 {
60 return 1;
61 }
\ 0056 ?0012:
62
63 if (FSELGetErrID() == 0)
\ 0056 CD1401 CALL LWRD ?0196
\ 0059 2C INC L
\ 005A 2D DEC L
\ 005B CA0101 JP Z,?0033
\ 005E ?0013:
64 {
65 return 0;//非法,
66 }
\ 005E ?0014:
67 DisplayErrInfor(CFILEOUT);//显示卡无文件
\ 005E 119301 LD DE,403
\ 0061 CD1F01 CALL LWRD ?0197
\ 0064 ?0008:
68 }
69
70 g_amv_vars.location.disk = 'C';
\ 0064 3E43 LD A,67
\ 0066 320500 LD (g_amv_vars+5),A
71 if ((g_DiskStateFlag & SetDiskOKFlag_def) == 0)
\ 0069 3A0000 LD A,(g_DiskStateFlag)
\ 006C CB7F BIT 7,A
\ 006E CA0101 JP Z,?0033
\ 0071 ?0015:
72 {
73 return 0;
74 }
\ 0071 ?0016:
75
76 if ((g_DiskStateFlag & SetDiskNoFile_def) != 0)
\ 0071 CB77 BIT 6,A
\ 0073 2806 JR Z,?0018
\ 0075 ?0017:
77 {
78 DisplayErrInfor(DFILEOUT);//显示磁盘无文件
\ 0075 119201 LD DE,402
\ 0078 C3FE00 JP LWRD ?0129
79 return 0;
80 }
\ 007B ?0018:
81
82 if (FSELInit(FSEL_TYPE_AMV, FSEL_ALL_SEQUENCE, FSEL_TYPE_COMMONDIR, 'C'))
\ 007B 0E43 LD C,67
\ 007D C5 PUSH BC
\ 007E 0E00 LD C,0
\ 0080 C5 PUSH BC
\ 0081 CD0A01 CALL LWRD ?0195
\ 0084 F1 POP AF
\ 0085 F1 POP AF
\ 0086 2C INC L
\ 0087 2D DEC L
\ 0088 2062 JR NZ,?0128
\ 008A ?0019:
83 {
84 return 1;
85 }
\ 008A ?0020:
86
87 if (FSELGetErrID() != 0)
\ 008A CD1401 CALL LWRD ?0196
\ 008D 2C INC L
\ 008E 2D DEC L
\ 008F 2870 JR Z,?0033
\ 0091 ?0021:
88 {
89 DisplayErrInfor(DFILEOUT);//显示磁盘无文件
\ 0091 CD1C01 CALL LWRD ?0198
90 g_DiskStateFlag |= SetDiskNoFile_def;//标志磁盘无文件
\ 0094 210000 LD HL,g_DiskStateFlag
\ 0097 CBF6 SET 6,(HL)
91 return 0;//要退出 ap
\ 0099 1866 JR ?0033
92 }
\ 009B ?0022:
93 return 0;
94
95 }
\ 009B ?0006:
96
97 else //g_amv_vars.location.disk == 'C' 或其他
98 {
99 if ((g_DiskStateFlag & SetDiskOKFlag_def) != 0)
\ 009B 3A0000 LD A,(g_DiskStateFlag)
\ 009E CB7F BIT 7,A
\ 00A0 2827 JR Z,?0031
\ 00A2 ?0023:
100 {
101 if ((g_DiskStateFlag & SetDiskNoFile_def) != 0)
\ 00A2 CB77 BIT 6,A
\ 00A4 2805 JR Z,?0026
\ 00A6 ?0025:
102 {
103 DisplayErrInfor(DFILEOUT);//显示磁盘无文件
\ 00A6 CD1C01 CALL LWRD ?0198
104 }
105 else
\ 00A9 181E JR ?0031
\ 00AB ?0026:
106 {
107 if (FSELInit(FSEL_TYPE_AMV, FSEL_ALL_SEQUENCE, FSEL_TYPE_COMMONDIR, 'C'))
\ 00AB 0E43 LD C,67
\ 00AD C5 PUSH BC
\ 00AE 0E00 LD C,0
\ 00B0 C5 PUSH BC
\ 00B1 CD0A01 CALL LWRD ?0195
\ 00B4 F1 POP AF
\ 00B5 F1 POP AF
\ 00B6 2C INC L
\ 00B7 2D DEC L
\ 00B8 2032 JR NZ,?0128
\ 00BA ?0028:
108 {
109 return 1;
110 }
\ 00BA ?0029:
111 if (FSELGetErrID() != 0)
\ 00BA CD1401 CALL LWRD ?0196
\ 00BD 2C INC L
\ 00BE 2D DEC L
\ 00BF 2808 JR Z,?0031
\ 00C1 ?0030:
112 {
113 DisplayErrInfor(DFILEOUT);//显示磁盘无文件
\ 00C1 CD1C01 CALL LWRD ?0198
114 g_DiskStateFlag |= SetDiskNoFile_def;//标志磁盘无文件
\ 00C4 210000 LD HL,g_DiskStateFlag
\ 00C7 CBF6 SET 6,(HL)
\ 00C9 ?0031:
\ 00C9 ?0027:
\ 00C9 ?0024:
115 }
116 }
117 }
118
119 //检测 sd 卡是否存在
120 if ((DRV_DetectUD(1) == 0x20)&&((g_DiskStateFlag & SetCardOKFlag_def)!=0))
\ 00C9 1E01 LD E,1
\ 00CB CD0000 CALL LWRD DRV_DetectUD
\ 00CE FE20 CP 32
\ 00D0 202F JR NZ,?0033
\ 00D2 3A0000 LD A,(g_DiskStateFlag)
\ 00D5 CB5F BIT 3,A
\ 00D7 2828 JR Z,?0033
\ 00D9 ?0035:
\ 00D9 ?0034:
\ 00D9 ?0032:
121 {//有卡
122 g_amv_vars.location.disk = 'H';
\ 00D9 3E48 LD A,72
\ 00DB 320500 LD (g_amv_vars+5),A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -