📄 sub_function1.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/Nov/107 22:39:16 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_voice\sub_function1.c #
# List file = d:\case_i_d913f\ap\ap_voice\list\sub_function1.lst #
# Object file = d:\case_i_d913f\ap\ap_voice\obj\sub_function1.r01 #
# Command line = -v0 -mb -OD:\case_i_d913f\ap\ap_voice\Obj\ -e -K #
# -w -gA -s9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d913f\ap\ap_voice\List\ -q -t8 #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# d:\case_i_d913f\AP\AP_VOICE\sub_function1.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME sub_function1(17)
\ 0000 RSEG CODE(0)
\ 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_comval
\ 0000 EXTERN g_voice_vars
\ 0000 EXTERN need_restore
\ 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 "DSCDec.h"
17 #include "ap_voice.h"
18 //extern comval_t g_comval;
19 //extern viewpic_vars_t g_voice_vars;
20 extern BYTE g_DiskStateFlag;
21 extern bool need_restore;
22 int StartFileSelector(void);
23 /******************************************************************************
24 ** 名字: 显示输入 id 的资源内容
25 ** 接口: void DisplayErrInfor(int id)
26 ** 描述:
27 ** 输入参数: int id:要显示的资源号
28 ** 输出参数: void
29 ** 使用说明:
30 ********************************************************************************/
31 void DisplayErrInfor(int id)
32 {
\ 0000 C5 PUSH BC
\ 0001 DDE5 PUSH IX
33
34 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:
35
36 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:
37 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
38 }
\ 0026 DDE1 POP IX
\ 0028 C1 POP BC
\ 0029 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 002C InitFileSelector:
39
40
41
42 /******************************************************************************
43 ** 名字: 文件选择器初始化及报错显示
44 ** 接口: int InitFileSelector(void)
45 ** 描述: 把文件选择器初始化到有效的盘上,如找不到,则报错退出
46 ** 输入参数: void
47 ** 输出参数: 0: 没有有效的盘或盘上无文件,初始化失败,要求退出AP
48 1: 已完成初始化文件选择器动作
49 ** 使用说明:
50 ********************************************************************************/
51 int InitFileSelector(void)
52 {
\ 002C C5 PUSH BC
\ 002D D5 PUSH DE
\ 002E F5 PUSH AF
53 int result;
54
55 if (g_voice_vars.location.disk == 'H')
\ 002F 3A0600 LD A,(g_voice_vars+6)
\ 0032 FE48 CP 72
\ 0034 2065 JR NZ,?0006
\ 0036 ?0005:
56 {
57 //检测 sd 卡是否存在
58 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:
59 {//有卡
60 if (FSELInit(FSEL_TYPE_VOICE, 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:
61 {
62 return 1;
63 }
\ 0056 ?0012:
64
65 if (FSELGetErrID() == 0)
\ 0056 CD1401 CALL LWRD ?0196
\ 0059 2C INC L
\ 005A 2D DEC L
\ 005B CA0101 JP Z,?0033
\ 005E ?0013:
66 {
67 return 0;//非法,
68 }
\ 005E ?0014:
69 DisplayErrInfor(CFILEOUT);//显示卡无文件
\ 005E 117502 LD DE,629
\ 0061 CD1F01 CALL LWRD ?0197
\ 0064 ?0008:
70 }
71
72 g_voice_vars.location.disk = 'C';
\ 0064 3E43 LD A,67
\ 0066 320600 LD (g_voice_vars+6),A
73 if ((g_DiskStateFlag & SetDiskOKFlag_def) == 0)
\ 0069 3A0000 LD A,(g_DiskStateFlag)
\ 006C CB7F BIT 7,A
\ 006E CA0101 JP Z,?0033
\ 0071 ?0015:
74 {
75 return 0;
76 }
\ 0071 ?0016:
77
78 if ((g_DiskStateFlag & SetDiskNoFile_def) != 0)
\ 0071 CB77 BIT 6,A
\ 0073 2806 JR Z,?0018
\ 0075 ?0017:
79 {
80 DisplayErrInfor(DFILEOUT);//显示磁盘无文件
\ 0075 117402 LD DE,628
\ 0078 C3FE00 JP LWRD ?0129
81 return 0;
82 }
\ 007B ?0018:
83
84 if (FSELInit(FSEL_TYPE_VOICE, 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:
85 {
86 return 1;
87 }
\ 008A ?0020:
88
89 if (FSELGetErrID() != 0)
\ 008A CD1401 CALL LWRD ?0196
\ 008D 2C INC L
\ 008E 2D DEC L
\ 008F 2870 JR Z,?0033
\ 0091 ?0021:
90 {
91 DisplayErrInfor(DFILEOUT);//显示磁盘无文件
\ 0091 CD1C01 CALL LWRD ?0198
92 g_DiskStateFlag |= SetDiskNoFile_def;//标志磁盘无文件
\ 0094 210000 LD HL,g_DiskStateFlag
\ 0097 CBF6 SET 6,(HL)
93 return 0;//要退出 ap
\ 0099 1866 JR ?0033
94 }
\ 009B ?0022:
95 return 0;
96
97 }
\ 009B ?0006:
98
99 else //g_voice_vars.location.disk == 'C' 或其他
100 {
101 if ((g_DiskStateFlag & SetDiskOKFlag_def) != 0)
\ 009B 3A0000 LD A,(g_DiskStateFlag)
\ 009E CB7F BIT 7,A
\ 00A0 2827 JR Z,?0031
\ 00A2 ?0023:
102 {
103 if ((g_DiskStateFlag & SetDiskNoFile_def) != 0)
\ 00A2 CB77 BIT 6,A
\ 00A4 2805 JR Z,?0026
\ 00A6 ?0025:
104 {
105 DisplayErrInfor(DFILEOUT);//显示磁盘无文件
\ 00A6 CD1C01 CALL LWRD ?0198
106 }
107 else
\ 00A9 181E JR ?0031
\ 00AB ?0026:
108 {
109 if (FSELInit(FSEL_TYPE_VOICE, 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:
110 {
111 return 1;
112 }
\ 00BA ?0029:
113 if (FSELGetErrID() != 0)
\ 00BA CD1401 CALL LWRD ?0196
\ 00BD 2C INC L
\ 00BE 2D DEC L
\ 00BF 2808 JR Z,?0031
\ 00C1 ?0030:
114 {
115 DisplayErrInfor(DFILEOUT);//显示磁盘无文件
\ 00C1 CD1C01 CALL LWRD ?0198
116 g_DiskStateFlag |= SetDiskNoFile_def;//标志磁盘无文件
\ 00C4 210000 LD HL,g_DiskStateFlag
\ 00C7 CBF6 SET 6,(HL)
\ 00C9 ?0031:
\ 00C9 ?0027:
\ 00C9 ?0024:
117 }
118 }
119 }
120
121 //检测 sd 卡是否存在
122 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:
123 {//有卡
124 g_voice_vars.location.disk = 'H';
\ 00D9 3E48 LD A,72
\ 00DB 320600 LD (g_voice_vars+6),A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -