📄 main.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 23/Feb/109 09:18:22 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d95f\ap\ap_radio\main.c #
# List file = d:\case_i_d95f\ap\ap_radio\list\main.lst #
# Object file = d:\case_i_d95f\ap\ap_radio\obj\main.r01 #
# ASM file = d:\case_i_d95f\ap\ap_radio\list\main.s01 #
# Command line = -v0 -mb -OD:\case_i_d95f\ap\ap_radio\Obj\ -e -K -w #
# -gA -s9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d95f\ap\ap_radio\List\ -q -t8 #
# -AD:\case_i_d95f\ap\ap_radio\List\ #
# -Id:\sdk_i_95f\inc\ -Id:\case_i_d95f\inc\ #
# d:\case_i_d95f\ap\ap_radio\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 AutoSearchHandle
\ 0000 EXTERN ClearScreen
\ 0000 EXTERN DRV_ActiveUD
\ 0000 PUBLIC FMStationTab
\ 0000 PUBLIC FMStatus
\ 0000 PUBLIC FMStatusJP
\ 0000 PUBLIC FMStatusUS
\ 0000 PUBLIC FMdeal
\ 0000 PUBLIC Freqtab
\ 0000 EXTERN GetBattery
\ 0000 EXTERN GetDefaultComval
\ 0000 EXTERN ResClose
\ 0000 EXTERN ResOpen
\ 0000 EXTERN ResShowMultiString
\ 0000 EXTERN ResShowPic
\ 0000 EXTERN SearchHandle
\ 0000 EXTERN ShowFreqInFM
\ 0000 PUBLIC TimeCount
\ 0000 EXTERN UpdateScreen
\ 0000 EXTERN VMRead
\ 0000 EXTERN VMWrite
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_handle_hotkey
\ 0000 EXTERN ap_message_init
\ 0000 EXTERN ap_sleep
\ 0000 PUBLIC clrregion
\ 0000 EXTERN fmSendCommand
\ 0000 PUBLIC fmdataflag
\ 0000 PUBLIC g_comval
\ 0000 EXTERN m_FMPlaystatus
\ 0000 PUBLIC main
\ 0000 PUBLIC menu
\ 0000 PUBLIC pic_active
\ 0000 PUBLIC pic_inactive
\ 0000 PUBLIC radio_param
\ 0000 EXTERN res_fp
\ 0000 PUBLIC slider
\ 0000 PUBLIC string
\ 0000 EXTERN ui_auto_update
\ 0000 EXTERN ui_function_menu
\ 0000 EXTERN ui_show_batt
\ 0000 EXTERN ui_slider
\ 0000 PUBLIC volmuteflag
\ 0000 PUBLIC volume_callback
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?SS_DIV_L02
\ 0000 EXTERN ?S_MUL_L02
\ 0000 EXTERN ?S_V_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 EXTERN ?STRCPY_L11
\ 0000 EXTERN ?MEMCMP_L11
\ 0000 RSEG CODE
\ 0000 volume_callback:
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 *******************************************************************************
10 */
11 #include "ap_radio.h"
12 //#include "mem.h"
13 #include "actos.h"
14
15 #define OpenFMPower1() output8(0xc0,(input8(0xc0)|0x01)) //enable output a0
16 #define OpenFMPower2() output8(0xc1,(input8(0xc1)&0xfe)) //disable a0 input
17 #define OpenFMPower3() output8(0xc2,input8(0xc2)&0xfe)
18 #define CloseFMPower1() output8(0xc2,((input8(0xc2)|0x01))) //disable output a0
19 #define CloseFMPower2() output8(0xc2,((input8(0xc2)|0x01)))
20
21 extern fm_play_status_t m_FMPlaystatus;
22
23 int TimeCount;
24 FMRADIO_param_t radio_param;
25 slider_t slider;
26 region_t clrregion;
27 function_menu_t menu; //菜单结构体
28 comval_t F_comval;
29 //电台频率对照表(注:频率范围87M-108M(US)或76M-90M(Japan),以K为精度要三位数,但由于最高位都是1,所以就可不记录,只记中低位就可以了).
30 WORD FMStationTab[40];
31 fm_play_status_t FMStatus; //当前电台信息,8 bytes
32 fm_play_status_t FMStatusUS; //US电台信息暂存,8 bytes
33 fm_play_status_t FMStatusJP; //Japan电台信息暂存,8bytes
34 char fmdataflag[3]; //第一次进FM标志,3 bytes
35 char Freqtab[10];
36
37 //WORD SearchFreq;
38 //WORD SetFreq;
39
40 const int pic_inactive[] =
41 { RA_SAVE, MICIN, DELL, DELALL, AUTOSEL, RA_US, RA_JP, EXIT }; //MICIN: for FM record by ccm
42 const int pic_active[] =
43 { RA_SAVEA, MICINA, DELLA, DELALLA, AUTOSELA, RA_USA, RA_JPA, EXITA };//MICINA:for FM record by ccm
44 const int string[] =
45 { FMENU1, FMENU15, FMENU2, FMENU3, FMENU16, FMENU4, FMENU5, FMENU6 }; //FMENU15:电台录音 by ccm
46 //函数定义
47 int SearchHandle(BYTE Direct); //自动搜索处理,Direct=10,NEXT,=20,LAST
48 int AutoSearchHandle(BYTE Direct);
49 int FMdeal(int test); //FM应用的处理
50 void ShowFreqInFM(void); //FM主界面显示
51 bool Search_Show(FM_direct_t Direct); //自动搜台时的显示
52 bool volmuteflag = 1; //静音标志
53 void volume_callback(int Vol) //音量设置的CALLBACK函数
54 {
\ 0000 C5 PUSH BC
\ 0001 DDE5 PUSH IX
\ 0003 D5 PUSH DE
\ 0004 DDE1 POP IX
55 //实时改变音量的值
56 FMStatus.vol_display = Vol;
\ 0006 7B LD A,E
\ 0007 329500 LD (FMStatus+8),A
57 FMStatus.volume = Vol * 31 / g_comval.VolumeMax;
\ 000A ED4B3C00 LD BC,(g_comval+31)
\ 000E 0600 LD B,0
\ 0010 C5 PUSH BC
\ 0011 111F00 LD DE,31
\ 0014 DDE5 PUSH IX
\ 0016 C1 POP BC
\ 0017 CD0000 CALL LWRD ?S_MUL_L02
\ 001A C1 POP BC
\ 001B CD3D00 CALL LWRD ?0166
58 fmSendCommand(MC_SETVOLUME, FMStatus.volume);
\ 001E 4F LD C,A
\ 001F 0600 LD B,0
\ 0021 1E40 LD E,64
\ 0023 CD4A00 CALL LWRD ?0167
59
60 if (FMStatus.volume == 0)
\ 0026 3A9300 LD A,(FMStatus+6)
\ 0029 B7 OR A
\ 002A 2005 JR NZ,?0003
\ 002C ?0002:
61 fmSendCommand(MC_MUTE, SetMUTE);
\ 002C 010100 LD BC,1
\ 002F 1803 JR ?0131
62 else
\ 0031 ?0003:
63 fmSendCommand(MC_MUTE, releaseMUTE);
\ 0031 010000 LD BC,0
\ 0034 ?0131:
\ 0034 CD4800 CALL LWRD ?0168
\ 0037 ?0004:
64
65
66
67 }
\ 0037 DDE1 POP IX
\ 0039 C1 POP BC
\ 003A C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 003D ?0166:
\ 003D CD0000 CALL LWRD ?SS_DIV_L02
\ 0040 7B LD A,E
\ 0041 329300 LD (FMStatus+6),A
\ 0044 C9 RET
\ 0045 ?0169:
\ 0045 010100 LD BC,1
\ 0048 ?0168:
\ 0048 1E0C LD E,12
\ 004A ?0167:
\ 004A 3E00 LD A,BYTE3 fmSendCommand
\ 004C ?0170:
\ 004C 210000 LD HL,LWRD fmSendCommand
\ 004F C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0052 main:
68 #if 0
69 //对第一进FM进行降噪
70 void volume_init()
71 {
72 uchar i,j;
73 for(i=0;i<FMStatus.volume;i++)
74 {
75 fmSendCommand(MC_SETVOLUME, i);
76 output8(WATCHDOG, input8(WATCHDOG) | 0x8);
77 for(j=0;j<100;j++);
78 }
79 }
80 #endif
81
82 #define OpenFM()
83 int main(int param)
84 {
\ 0052 C5 PUSH BC
\ 0053 FDE5 PUSH IY
\ 0055 DDE5 PUSH IX
\ 0057 D5 PUSH DE
\ 0058 F5 PUSH AF
\ 0059 F5 PUSH AF
\ 005A F5 PUSH AF
\ 005B F5 PUSH AF
85 int result;
86
87 //Open VCCOUT for FM Module. by ccm
88 int i, j;
89 char buffer_f3;
90
91 OpenFMPower1();
\ 005C DBC0 IN A,(192)
\ 005E CBC7 SET 0,A
\ 0060 D3C0 OUT (192),A
92 OpenFMPower2();
\ 0062 DBC1 IN A,(193)
\ 0064 CB87 RES 0,A
\ 0066 D3C1 OUT (193),A
93 OpenFMPower3();
\ 0068 DBC2 IN A,(194)
\ 006A CB87 RES 0,A
\ 006C D3C2 OUT (194),A
94 if (param == 0xfe)
\ 006E 3EFE LD A,254
\ 0070 AB XOR E
\ 0071 B2 OR D
\ 0072 201D JR NZ,?0006
\ 0074 ?0005:
95 {
96
97 fmSendCommand(MC_MUTE, SetMUTE);
\ 0074 CD4500 CALL LWRD ?0169
98 fmSendCommand(MC_CLOSE, 0);
\ 0077 010000 LD BC,0
\ 007A 1E02 LD E,2
\ 007C CD4A00 CALL LWRD ?0167
99 CloseFMPower2();
\ 007F DBC2 IN A,(194)
\ 0081 CBC7 SET 0,A
\ 0083 D3C2 OUT (194),A
100 CloseFMPower1();
\ 0085 DBC2 IN A,(194)
\ 0087 CBC7 SET 0,A
\ 0089 D3C2 OUT (194),A
101
102 return 0;
\ 008B 210000 LD HL,0
103 }
\ 008E C3A701 JP LWRD ?0029
\ 0091 ?0006:
104
105
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -