tryplaying.lst
来自「MP3 整个 SDK」· LST 代码 · 共 517 行 · 第 1/2 页
LST
517 行
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 25/Dec/106 17:01:38 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d90f\ap\ap_radio\tryplaying.c #
# List file = d:\case_i_d90f\ap\ap_radio\list\tryplaying.lst #
# Object file = d:\case_i_d90f\ap\ap_radio\obj\tryplaying.r01 #
# ASM file = d:\case_i_d90f\ap\ap_radio\list\tryplaying.s01 #
# Command line = -v0 -mb -OD:\case_i_d90f\ap\ap_radio\Obj\ -e -K -w #
# -gA -s9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d90f\ap\ap_radio\List\ -q -t8 #
# -AD:\case_i_d90f\ap\ap_radio\List\ #
# -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\ #
# D:\CASE_I_D90F\AP\AP_RADIO\TryPlaying.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME tryplaying(17)
\ 0000 RSEG CODE_2(0)
\ 0000 EXTERN AutoTabNum
\ 0000 EXTERN FMAutoTab
\ 0000 EXTERN FMStatus
\ 0000 EXTERN ResShowPic
\ 0000 PUBLIC TryPlayingHandle
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_handle_hotkey
\ 0000 EXTERN fmSendCommand
\ 0000 EXTERN radio_param
\ 0000 EXTERN ui_show_volfm
\ 0000 PUBLIC volume_callback2
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?US_DIV_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 * $Id: TryPlaying.c,v 1.1.1.1 2006/05/22 03:24:00 selina Exp $
10 *******************************************************************************
11 */
12
13 #pragma codeseg(CODE_2)
14
15 #include "ap_radio.h"
16 #include "actos.h"
17
18 //extern slider_t slider;
19 extern comval_t F_comval;
20 extern WORD FMStationTab[40]; // 前20个是US, 后20个是JP.
21 extern fm_play_status_t FMStatus;
22 extern FMRADIO_param_t radio_param;
23
24 extern WORD FMAutoTab[20]; // 全自动收台,预存台.
25 extern BYTE AutoTabNum; // 预存台数.
26
27 void volume_callback2(int Vol) //音量设置的CALLBACK函数
28 {
\ 0000 C5 PUSH BC
\ 0001 D5 PUSH DE
29 //实时改变音量的值
30 fmSendCommand(MC_SETVOLUME,Vol);
\ 0002 4B LD C,E
\ 0003 42 LD B,D
\ 0004 CD0C00 CALL LWRD ?0050
31 }
\ 0007 E1 POP HL
\ 0008 C1 POP BC
\ 0009 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 000C ?0050:
\ 000C 1E40 LD E,64
\ 000E ?0051:
\ 000E 3E00 LD A,BYTE3 fmSendCommand
\ 0010 210000 LD HL,LWRD fmSendCommand
\ 0013 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0016 TryPlayingHandle:
32 /*
33 ********************************************************************************
34 * Description : 试播放5秒钟
35 *
36 * Arguments :
37 *
38 * Returns : RESULT_RADIO:PLAY和MODE键, RESULT_IGNORE:NEXT和LAST键
39 其它为热键
40 *
41 * Notes :
42 *
43 ********************************************************************************
44 */
45 int TryPlayingHandle(void)
46 {
\ 0016 C5 PUSH BC
\ 0017 D5 PUSH DE
\ 0018 FDE5 PUSH IY
\ 001A DDE5 PUSH IX
\ 001C DD210000 LD IX,0
\ 0020 DD39 ADD IX,SP
\ 0022 21F6FF LD HL,65526
\ 0025 39 ADD HL,SP
\ 0026 F9 LD SP,HL
47 int key, play_time = 12;
48 int flash_point = 1;
49 bool loop = TRUE;
50 int k,i;
51 if(FMStatus.mode==0)
\ 0027 DD36FC0C LD (IX-4),12
\ 002B DD36FD00 LD (IX-3),0
\ 002F DD36FA01 LD (IX-6),1
\ 0033 DD36FB00 LD (IX-5),0
\ 0037 DD36FE01 LD (IX-2),1
\ 003B 3A0500 LD A,(FMStatus+5)
\ 003E B7 OR A
\ 003F 2A0100 LD HL,(FMStatus+1)
\ 0042 200A JR NZ,?0003
\ 0044 ?0002:
52 {
53 k = (FMStatus.freq-0x53d8)/127;
\ 0044 0128AC LD BC,44072
\ 0047 09 ADD HL,BC
\ 0048 EB EX DE,HL
\ 0049 017F00 LD BC,127
\ 004C 1808 JR ?0044
54 }
55 else
\ 004E ?0003:
56 {
57 k=(FMStatus.freq-0x28e0)/105;
\ 004E 0120D7 LD BC,55072
\ 0051 09 ADD HL,BC
\ 0052 EB EX DE,HL
\ 0053 016900 LD BC,105
\ 0056 ?0044:
\ 0056 CD0000 CALL LWRD ?US_DIV_L02
\ 0059 DD73F6 LD (IX-10),E
\ 005C DD72F7 LD (IX-9),D
\ 005F ?0004:
58 }
59 fmSendCommand(MC_PLAY,0);
\ 005F 48 LD C,B
\ 0060 1E04 LD E,4
\ 0062 CD0E00 CALL LWRD ?0051
60 fmSendCommand(MC_SETVOLUME,FMStatus.volume);
\ 0065 ?0049:
\ 0065 ED4B0600 LD BC,(FMStatus+6)
\ 0069 0600 LD B,0
\ 006B CD0C00 CALL LWRD ?0050
\ 006E ?0006:
61
62 while(loop)
\ 006E AF XOR A
\ 006F DDB6FE OR (IX-2)
\ 0072 CA8001 JP Z,?0005
\ 0075 ?0007:
63 {
64 key=ap_get_message();
\ 0075 CD0000 CALL LWRD ap_get_message
\ 0078 4F LD C,A
\ 0079 0600 LD B,0
\ 007B C5 PUSH BC
\ 007C FDE1 POP IY
65 switch(key)
\ 007E 59 LD E,C
\ 007F 50 LD D,B
\ 0080 CD0000 CALL LWRD ?S_V_SWITCH_L06
\ 0083 0A00 DEFW 10
\ 0085 0300 DEFW 3
\ 0087 0400 DEFW 4
\ 0089 1C00 DEFW 28
\ 008B 1D00 DEFW 29
\ 008D 2100 DEFW 33
\ 008F 2500 DEFW 37
\ 0091 2600 DEFW 38
\ 0093 3000 DEFW 48
\ 0095 4300 DEFW 67
\ 0097 4400 DEFW 68
\ 0099 6A01 DEFW ?0032
\ 009B 3E01 DEFW ?0024
\ 009D 4B01 DEFW ?0028
\ 009F B500 DEFW ?0011
\ 00A1 AF00 DEFW ?0010
\ 00A3 AF00 DEFW ?0010
\ 00A5 B500 DEFW ?0011
\ 00A7 6E00 DEFW ?0006
\ 00A9 BE00 DEFW ?0012
\ 00AB 3E01 DEFW ?0024
\ 00AD 4B01 DEFW ?0028
\ 00AF ?0009:
66 {
67 case AP_MSG_STANDBY:
68 //do nothing
69 break;
\ 00AF ?0010:
70 case AP_KEY_NEXT|AP_KEY_UP:
71 case AP_KEY_PREV|AP_KEY_UP: // 停止试播
72 return RESULT_IGNORE;
\ 00AF 213400 LD HL,52
73 case AP_KEY_PLAY | AP_KEY_UP:
\ 00B2 C3F501 JP LWRD ?0041
\ 00B5 ?0011:
74 case AP_KEY_MODE|AP_KEY_UP: // 保存电台, 返回播放界面.
75 loop = FALSE;
76 key = RESULT_RADIO;
\ 00B5 DD70FE LD (IX-2),B
\ 00B8 FD210700 LD IY,7
77 break;
\ 00BC 18B0 JR ?0006
\ 00BE ?0012:
78 case AP_MSG_RTC: // 时间记数,闪烁箭头.
79 play_time--;
\ 00BE DD6EFC LD L,(IX-4)
\ 00C1 DD66FD LD H,(IX-3)
\ 00C4 2B DEC HL
\ 00C5 DD75FC LD (IX-4),L
\ 00C8 DD74FD LD (IX-3),H
80 if(play_time <= 0)
\ 00CB 4D LD C,L
\ 00CC 44 LD B,H
\ 00CD 6A LD L,D
\ 00CE 62 LD H,D
\ 00CF F680 OR 128
\ 00D1 ED42 SBC HL,BC
\ 00D3 E2D700 JP PO,?0042
\ 00D6 AC XOR H
\ 00D7 ?0042:
\ 00D7 FAE100 JP M,?0014
\ 00DA ?0013:
81 {
82 loop = FALSE;
83 key = 0;
\ 00DA DD72FE LD (IX-2),D
\ 00DD FD210000 LD IY,0
\ 00E1 ?0014:
84 }
85 if(flash_point) // 箭头闪烁
\ 00E1 DD7EFA LD A,(IX-6)
\ 00E4 DDB6FB OR (IX-5)
\ 00E7 3A0500 LD A,(FMStatus+5)
\ 00EA 2835 JR Z,?0016
\ 00EC ?0015:
86 {
87 if(FMStatus.mode==0)
\ 00EC B7 OR A
\ 00ED 0E35 LD C,53
\ 00EF C5 PUSH BC
\ 00F0 DD7EF6 LD A,(IX-10)
\ 00F3 2010 JR NZ,?0018
\ 00F5 ?0017:
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?