main.lst
来自「MP3 整个 SDK」· LST 代码 · 共 1,391 行 · 第 1/5 页
LST
1,391 行
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 28/Dec/106 17:17:02 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d90f\ap\ap_main\main.c #
# List file = d:\case_i_d90f\ap\ap_main\list\main.lst #
# Object file = d:\case_i_d90f\ap\ap_main\release\obj\main.r01 #
# Command line = -v0 -mb -OD:\case_i_d90f\ap\ap_main\release\Obj\ #
# -e -K -w -gA -s9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d90f\ap\ap_main\List\ -q -t8 -X #
# -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\ #
# d:\case_i_d90f\AP\AP_MAIN\main.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME main(17)
\ 0000 RSEG CODE(0)
\ 0000 RSEG CSTR(0)
\ 0000 RSEG CONST(0)
\ 0000 RSEG UDATA0(0)
\ 0000 RSEG IDATA0(0)
\ 0000 RSEG CDATA0(0)
\ 0000 EXTERN ClearScreen
\ 0000 EXTERN DRV_DetectUD
\ 0000 EXTERN DRV_Install
\ 0000 PUBLIC DisplayDelay
\ 0000 EXTERN ExecAP
\ 0000 EXTERN GetDefaultComval
\ 0000 EXTERN GetSysMsg
\ 0000 EXTERN GetUsbCableStatus
\ 0000 EXTERN ResClose
\ 0000 EXTERN ResOpen
\ 0000 EXTERN ResShowMultiString
\ 0000 EXTERN ResShowPic
\ 0000 EXTERN SetBackgdColor
\ 0000 EXTERN SetContrast
\ 0000 EXTERN SetPenColor
\ 0000 EXTERN SetTextOutMode
\ 0000 EXTERN StandbyScreen
\ 0000 EXTERN SuppCardFlag
\ 0000 EXTERN UpdateScreen
\ 0000 EXTERN VMRead
\ 0000 EXTERN VMWrite
\ 0000 PUBLIC active_id
\ 0000 PUBLIC active_id_bottom
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_handle_hotkey
\ 0000 PUBLIC ap_id
\ 0000 PUBLIC ap_id_nofm
\ 0000 EXTERN ap_message_init
\ 0000 PUBLIC charge_flag
\ 0000 PUBLIC delay1
\ 0000 EXTERN draw_logo
\ 0000 PUBLIC g_comval
\ 0000 PUBLIC main
\ 0000 PUBLIC name
\ 0000 PUBLIC read_var
\ 0000 EXTERN res_fp
\ 0000 EXTERN sKY_CloseBacklight
\ 0000 EXTERN sKY_OpenBacklight
\ 0000 PUBLIC sec_staff
\ 0000 PUBLIC sec_tester
\ 0000 PUBLIC standby_flag
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?C_S_SWITCH_L06
\ 0000 EXTERN ?C_V_SWITCH_L06
\ 0000 EXTERN ?S_V_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 RSEG CODE
\ 0000 read_var:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * main ap of sdk 3.0
5 *
6 * (c) Copyright, Actions Co,Ld.
7 * All Right Reserved
8 *
9 * $Id: main.c,v 1.2 2006/06/26 01:13:37 tangwh Exp $
10 *******************************************************************************
11 */
12 #include "actos.h"
13 #include "ap_common.h"
14 #include "pdmodule.h"
15
16 //#define CAMERA SYSTEM
17 //#define CAMERAA SYSTEMA
18 #define MAIN_ITEMCOUNT 8
19 //#define CHGVDD
20
21 //用户测试时定义这两个常量
22 //#define MAIN_DEBUG
23 //#define YOUR_AP_NAME "ap_voice.AP"
24
25 //#define MY_TEST //for m-record.ap test by ccm
26
27 #ifdef MY_TEST
28 #define MY_DUMP(string, value) \
29 do{ \
30 char dump_buf[6]; \
31 dump_buf[0] = ','; \
32 SetTextPos(0, 16); \
33 PutS((string), -1); \
34 itoa4((value), &dump_buf[1]); \
35 dump_buf[5] = '>'; \
36 PutS(dump_buf, 6); \
37 UpdateScreen(NULL); \
38 while( ap_get_message() != (AP_KEY_EQ| AP_KEY_UP)) {;} \
39 }while(0)
40 #else
41 #define MY_DUMP(string, value)
42 #endif
43
44 //进入录音, 但不自动开始
45 #define RESULT_REC_NOSTART RESULT_USER1
46
47 //进入设定, 关标停留在ADFU
48 #define RESULT_SYSTEM_ADFU (RESULT_USER1+1)
49
50 void draw_logo(BOOL wait_key_up);
51 void draw_staff(void);
52 void DisplayDelay();
53 //global
54 comval_t g_comval;
55 BYTE charge_flag;
56 BYTE standby_flag=0;
57 extern unsigned char SuppCardFlag;
58 const BYTE sec_tester[] =
59 {
60 AP_KEY_PLAY | AP_KEY_UP,
61 AP_KEY_PLAY | AP_KEY_UP,
62 AP_KEY_PLAY | AP_KEY_UP,
63 AP_KEY_PLAY | AP_KEY_UP,
64 AP_KEY_PLAY | AP_KEY_UP,
65 };
66 const BYTE sec_staff[] =
67 {
68 AP_KEY_VOLADD | AP_KEY_UP,
69 AP_KEY_VOLADD | AP_KEY_UP,
70 AP_KEY_VOLADD | AP_KEY_UP,
71 AP_KEY_VOLADD | AP_KEY_UP,
72 AP_KEY_PLAY | AP_KEY_UP
73 };
74
75 //pic ids
76 //const WORD inactive_id[MAIN_ITEMCOUNT] = {MUSIC, RECORD, VOICE, FM, SYSTEM};
77 const WORD active_id[MAIN_ITEMCOUNT] = {MUSIC1,MOVIE1,RECORD1,
78 PLAY1,RADIO1,PIC1,TEXT1,SETTING1};
79 //const WORD inactive_id_nofm[MAIN_ITEMCOUNT-1] = {MUSIC, RECORD, VOICE, SYSTEM};
80 const WORD active_id_bottom[MAIN_ITEMCOUNT] = {MUSQ,MOVQ,RECQ,
81 PLAQ,RADQ,PICQ,TEXQ,SETQ};
82 const WORD name[MAIN_ITEMCOUNT]={MUSIC,MOVIE,RECORD,PLAY,RADIO,PICTURE,TEXT,SYSTEM};
83
84
85
86 //ap id
87 const WORD ap_id[MAIN_ITEMCOUNT]={RESULT_MUSIC,RESULT_MOVIE, RESULT_REC_NOSTART,
88 RESULT_VOICE, RESULT_RADIO, RESULT_VIEW,RESULT_READER, RESULT_SYSTEM};
89
90 const WORD ap_id_nofm[MAIN_ITEMCOUNT-1]={RESULT_MUSIC,RESULT_MOVIE,RESULT_REC_NOSTART,
91 RESULT_VOICE, RESULT_VIEW,RESULT_READER, RESULT_SYSTEM};
92
93
94
95
96
97 #ifdef MAIN_DEBUG
98 char lan_id=0; //for test, language id
99 function_menu_t menu;
100 slider_t slider;
101 // progress_t progress;
102
103 void test(void);
104 #endif /* MAIN_DEBUG*/
105 /*
106 ********************************************************************************
107 * Description : 初始化系统设置变量
108 *
109 * Arguments :
110 *
111 * Returns :
112 *
113 * Notes :
114 *
115 ********************************************************************************
116 */
117 void read_var(void)
118 {
\ 0000 C5 PUSH BC
\ 0001 D5 PUSH DE
\ 0002 F5 PUSH AF
119 BOOL result;
120
121 //read comval
122 result = VMRead(&g_comval, VM_SYSTEM, sizeof(g_comval));
\ 0003 212000 LD HL,32
\ 0006 E5 PUSH HL
\ 0007 010002 LD BC,512
\ 000A 110000 LD DE,g_comval
\ 000D CD0000 CALL LWRD VMRead
\ 0010 E1 POP HL
123 ASSERT(result);
124
125 //check if valid
126 if(g_comval.magic != MAGIC_COMVAL)
\ 0011 21ADDE LD HL,57005
\ 0014 ED4B0000 LD BC,(g_comval)
\ 0018 A7 AND A
\ 0019 ED42 SBC HL,BC
\ 001B 2819 JR Z,?0003
\ 001D ?0002:
127 {
128 DUMP_STRING("comval init-ed!");
129
130 //COMVAL_INIT(g_comval);
131 GetDefaultComval(&g_comval);
\ 001D 110000 LD DE,g_comval
\ 0020 CD0000 CALL LWRD GetDefaultComval
132 g_comval.BatteryType = BATT_TYPE_LITHIUM;
\ 0023 3E02 LD A,2
\ 0025 320F00 LD (g_comval+15),A
133 g_comval.Lightmode=1;
\ 0028 3E01 LD A,1
\ 002A 321600 LD (g_comval+22),A
134 // g_comval.chargeflag=0;
135 //write to vm
136 result = VMWrite(&g_comval, VM_SYSTEM);
\ 002D 010002 LD BC,512
\ 0030 110000 LD DE,g_comval
\ 0033 CD0000 CALL LWRD VMWrite
\ 0036 ?0003:
137 ASSERT(result);
138
139 }
140
141 SuppCardFlag=1; //此变量初始化为1,支持插卡; 为0,不支持插卡 ,可在方案中选择
\ 0036 3E01 LD A,1
\ 0038 320000 LD (SuppCardFlag),A
142 //init ap message
143 ap_message_init(&g_comval);
\ 003B 110000 LD DE,g_comval
\ 003E 3E00 LD A,BYTE3 ap_message_init
\ 0040 210000 LD HL,LWRD ap_message_init
\ 0043 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
144 //sKY_SetBLightColor(g_comval.BLightColor); //设置背光颜色。for s2 by ccm
145
146 //set contrast just in main ap
147 SetContrast(g_comval.DisplayContrast);
\ 0046 ED5B0800 LD DE,(g_comval+8)
\ 004A CD0000 CALL LWRD SetContrast
148 }
\ 004D E1 POP HL
\ 004E D1 POP DE
\ 004F C1 POP BC
\ 0050 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0053 delay1:
149
150 void delay1(void)
151 {
\ 0053 C5 PUSH BC
\ 0054 D5 PUSH DE
152 unsigned int i;
153 for(i=0;i<10000;i++) {;}
\ 0055 110000 LD DE,0
\ 0058 ?0005:
\ 0058 011027 LD BC,10000
\ 005B 6B LD L,E
\ 005C 62 LD H,D
\ 005D A7 AND A
\ 005E ED42 SBC HL,BC
\ 0060 3003 JR NC,?0004
\ 0062 ?0006:
\ 0062 13 INC DE
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?