?? tryplaying.lst
字號:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 23/Feb/109 09:19:55 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d95f\ap\ap_radio\tryplaying.c #
# List file = d:\case_i_d95f\ap\ap_radio\list\tryplaying.lst #
# Object file = d:\case_i_d95f\ap\ap_radio\obj\tryplaying.r01 #
# ASM file = d:\case_i_d95f\ap\ap_radio\list\tryplaying.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\TryPlaying.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME tryplaying(17)
\ 0000 RSEG CODE_2(0)
\ 0000 RSEG CSTR(0)
\ 0000 EXTERN AutoTabNum
\ 0000 EXTERN ClearScreen
\ 0000 EXTERN FMAutoTab
\ 0000 EXTERN FMStatus
\ 0000 EXTERN GetBattery
\ 0000 EXTERN PutS
\ 0000 EXTERN ResShowPic
\ 0000 EXTERN SetTextPos
\ 0000 PUBLIC TryPlayingHandle
\ 0000 EXTERN UpdateScreen
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_handle_hotkey
\ 0000 EXTERN fmSendCommand
\ 0000 EXTERN g_comval
\ 0000 EXTERN m_FMPlaystatus
\ 0000 EXTERN radio_param
\ 0000 EXTERN slider
\ 0000 EXTERN ui_show_batt
\ 0000 EXTERN ui_slider
\ 0000 PUBLIC volume_callback2
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?US_DIV_L02
\ 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 RSEG CODE_2
\ 0000 volume_callback2:
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
12 #pragma codeseg(CODE_2)
13
14 #include "ap_radio.h"
15 #include "actos.h"
16
17 extern slider_t slider;
18 extern comval_t F_comval;
19 extern WORD FMStationTab[40]; // 前20個是US, 后20個是JP.
20 extern fm_play_status_t FMStatus;
21 extern FMRADIO_param_t radio_param;
22 extern fm_play_status_t m_FMPlaystatus;
23
24 extern WORD FMAutoTab[20]; // 全自動收臺,預存臺.
25 extern BYTE AutoTabNum; // 預存臺數.
26
27 void volume_callback2(int Vol) //音量設置的CALLBACK函數
28 {
\ 0000 C5 PUSH BC
\ 0001 DDE5 PUSH IX
\ 0003 D5 PUSH DE
\ 0004 DDE1 POP IX
29 //實時改變音量的值
30 FMStatus.vol_display = Vol;
\ 0006 7B LD A,E
\ 0007 320800 LD (FMStatus+8),A
31 FMStatus.volume = Vol * 31 / g_comval.VolumeMax;
\ 000A ED4B1F00 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 CD0000 CALL LWRD ?SS_DIV_L02
\ 001E 7B LD A,E
\ 001F 320600 LD (FMStatus+6),A
32 fmSendCommand(MC_SETVOLUME, FMStatus.volume);
\ 0022 4F LD C,A
\ 0023 CD3F00 CALL LWRD ?0047
33 if (FMStatus.volume == 0)
\ 0026 3A0600 LD A,(FMStatus+6)
\ 0029 B7 OR A
\ 002A 2005 JR NZ,?0003
\ 002C ?0002:
34 fmSendCommand(MC_MUTE, SetMUTE);
\ 002C 010100 LD BC,1
\ 002F 1803 JR ?0040
35 else
\ 0031 ?0003:
36 fmSendCommand(MC_MUTE, releaseMUTE);
\ 0031 010000 LD BC,0
\ 0034 ?0040:
\ 0034 1E0C LD E,12
\ 0036 CD4300 CALL LWRD ?0048
\ 0039 ?0004:
37 }
\ 0039 DDE1 POP IX
\ 003B C1 POP BC
\ 003C C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 003F ?0047:
\ 003F 0600 LD B,0
\ 0041 1E40 LD E,64
\ 0043 ?0048:
\ 0043 3E00 LD A,BYTE3 fmSendCommand
\ 0045 210000 LD HL,LWRD fmSendCommand
\ 0048 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 004B TryPlayingHandle:
38 /*
39 ********************************************************************************
40 * Description : 試播放5秒鐘
41 *
42 * Arguments :
43 *
44 * Returns : RESULT_RADIO:PLAY和MODE鍵, RESULT_IGNORE:NEXT和LAST鍵
45 其它為熱鍵
46 *
47 * Notes :
48 *
49 ********************************************************************************
50 */
51 int TryPlayingHandle(void)
52 {
\ 004B C5 PUSH BC
\ 004C D5 PUSH DE
\ 004D FDE5 PUSH IY
\ 004F DDE5 PUSH IX
\ 0051 DD210000 LD IX,0
\ 0055 DD39 ADD IX,SP
\ 0057 21F6FF LD HL,65526
\ 005A 39 ADD HL,SP
\ 005B F9 LD SP,HL
53 int key, play_time = 12;
54 int flash_point = 1;
55 bool loop = TRUE;
56 int k, i;
57 if (FMStatus.mode == 0)
\ 005C DD36FC0C LD (IX-4),12
\ 0060 DD36FD00 LD (IX-3),0
\ 0064 DD36FA01 LD (IX-6),1
\ 0068 DD36FB00 LD (IX-5),0
\ 006C DD36FE01 LD (IX-2),1
\ 0070 ?0005:
58 {
59 k = (FMStatus.freq) *100/ 200;
60 }
61 else
\ 0070 ?0006:
62 {
63 k = (FMStatus.freq)*100 / 200;
\ 0070 ED4B0100 LD BC,(FMStatus+1)
\ 0074 116400 LD DE,100
\ 0077 CD0000 CALL LWRD ?S_MUL_L02
\ 007A 01C800 LD BC,200
\ 007D CD0000 CALL LWRD ?US_DIV_L02
\ 0080 DD73F6 LD (IX-10),E
\ 0083 DD72F7 LD (IX-9),D
\ 0086 ?0007:
64 }
65 fmSendCommand(MC_PLAY, 0);
\ 0086 48 LD C,B
\ 0087 1E04 LD E,4
\ 0089 CD4300 CALL LWRD ?0048
66 fmSendCommand(MC_SETVOLUME, FMStatus.volume);
\ 008C ED4B0600 LD BC,(FMStatus+6)
\ 0090 CD3F00 CALL LWRD ?0047
\ 0093 ?0009:
67
68 while (loop)
\ 0093 AF XOR A
\ 0094 DDB6FE OR (IX-2)
\ 0097 CA0302 JP Z,?0008
\ 009A ?0010:
69 {
70 key = ap_get_message();
\ 009A CD0000 CALL LWRD ap_get_message
\ 009D 4F LD C,A
\ 009E 0600 LD B,0
\ 00A0 C5 PUSH BC
\ 00A1 FDE1 POP IY
71 switch (key)
\ 00A3 59 LD E,C
\ 00A4 50 LD D,B
\ 00A5 CD0000 CALL LWRD ?S_V_SWITCH_L06
\ 00A8 0800 DEFW 8
\ 00AA 0300 DEFW 3
\ 00AC 0400 DEFW 4
\ 00AE 1C00 DEFW 28
\ 00B0 1D00 DEFW 29
\ 00B2 2100 DEFW 33
\ 00B4 2500 DEFW 37
\ 00B6 2600 DEFW 38
\ 00B8 2700 DEFW 39
\ 00BA EC01 DEFW ?0029
\ 00BC D200 DEFW ?0014
\ 00BE CC00 DEFW ?0013
\ 00C0 CC00 DEFW ?0013
\ 00C2 D200 DEFW ?0014
\ 00C4 9300 DEFW ?0009
\ 00C6 DB00 DEFW ?0015
\ 00C8 6B01 DEFW ?0028
\ 00CA 6B01 DEFW ?0028
\ 00CC ?0012:
72 {
73 case AP_MSG_STANDBY:
74 //do nothing
75 break;
\ 00CC ?0013:
76 case AP_KEY_NEXT | AP_KEY_UP:
77 case AP_KEY_PREV | AP_KEY_UP: // 停止試播
78 return RESULT_IGNORE;
\ 00CC 213000 LD HL,48
79 case AP_KEY_PLAY | AP_KEY_UP:
\ 00CF C37802 JP LWRD ?0038
\ 00D2 ?0014:
80 case AP_KEY_MODE | AP_KEY_UP: // 保存電臺, 返回播放界面.
81 loop = FALSE;
82 key = RESULT_RADIO;
\ 00D2 DD70FE LD (IX-2),B
\ 00D5 FD210500 LD IY,5
83 break;
\ 00D9 18B8 JR ?0009
\ 00DB ?0015:
84 case AP_MSG_RTC: // 時間記數,閃爍箭頭.
85 ui_show_batt(GetBattery(), g_comval.BatteryType);
\ 00DB ED4B0F00 LD BC,(g_comval+15)
\ 00DF CD0000 CALL LWRD GetBattery
\ 00E2 5F LD E,A
\ 00E3 3E00 LD A,BYTE3 ui_show_batt
\ 00E5 210000 LD HL,LWRD ui_show_batt
\ 00E8 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
86 play_time--;
\ 00EB DD6EFC LD L,(IX-4)
\ 00EE DD66FD LD H,(IX-3)
\ 00F1 2B DEC HL
\ 00F2 DD75FC LD (IX-4),L
\ 00F5 DD74FD LD (IX-3),H
87 if (play_time <= 0)
\ 00F8 4D LD C,L
\ 00F9 44 LD B,H
\ 00FA 210000 LD HL,0
\ 00FD F680 OR 128
\ 00FF ED42 SBC HL,BC
\ 0101 E20501 JP PO,?0041
\ 0104 AC XOR H
\ 0105 ?0041:
\ 0105 FA1001 JP M,?0017
\ 0108 ?0016:
88 {
89 loop = FALSE;
90 key = 0;
\ 0108 DD36FE00 LD (IX-2),0
\ 010C FD210000 LD IY,0
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -