tryplaying.s01

来自「MP3 整个 SDK」· S01 代码 · 共 488 行

S01
488
字号
	NAME	tryplaying(17)
	RSEG	CODE_2(0)
	EXTERN	AutoTabNum
	EXTERN	FMAutoTab
	EXTERN	FMStatus
	EXTERN	ResShowPic
	PUBLIC	TryPlayingHandle
	EXTERN	ap_get_message
	EXTERN	ap_handle_hotkey
	EXTERN	fmSendCommand
	EXTERN	radio_param
	EXTERN	ui_show_volfm
	PUBLIC	volume_callback2
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?US_DIV_L02
	EXTERN	?S_V_SWITCH_L06
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	RSEG	CODE_2
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.	{
	PUSH	BC
	PUSH	DE
; 29.	//实时改变音量的值
; 30.	    fmSendCommand(MC_SETVOLUME,Vol);
	LD	C,E
	LD	B,D
	CALL	LWRD ?0050
; 31.	}
	POP	HL
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0050:
	LD	E,64
?0051:
	LD	A,BYTE3 fmSendCommand
	LD	HL,LWRD fmSendCommand
	JP	LWRD ?BANK_CALL_DIRECT_L08
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.	{
	PUSH	BC
	PUSH	DE
	PUSH	IY
	PUSH	IX
	LD	IX,0
	ADD	IX,SP
	LD	HL,65526
	ADD	HL,SP
	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)
	LD	(IX-4),12
	LD	(IX-3),0
	LD	(IX-6),1
	LD	(IX-5),0
	LD	(IX-2),1
	LD	A,(FMStatus+5)
	OR	A
	LD	HL,(FMStatus+1)
	JR	NZ,?0003
?0002:
; 52.	    {
; 53.	        k = (FMStatus.freq-0x53d8)/127;
	LD	BC,44072
	ADD	HL,BC
	EX	DE,HL
	LD	BC,127
	JR	?0044
; 54.	    }
; 55.	    else
?0003:
; 56.	    {
; 57.	        k=(FMStatus.freq-0x28e0)/105;
	LD	BC,55072
	ADD	HL,BC
	EX	DE,HL
	LD	BC,105
?0044:
	CALL	LWRD ?US_DIV_L02
	LD	(IX-10),E
	LD	(IX-9),D
?0004:
; 58.	    }
; 59.	    fmSendCommand(MC_PLAY,0);
	LD	C,B
	LD	E,4
	CALL	LWRD ?0051
; 60.	    fmSendCommand(MC_SETVOLUME,FMStatus.volume);
?0049:
	LD	BC,(FMStatus+6)
	LD	B,0
	CALL	LWRD ?0050
?0006:
; 61.	
; 62.	    while(loop)
	XOR	A
	OR	(IX-2)
	JP	Z,?0005
?0007:
; 63.	    {
; 64.	        key=ap_get_message();
	CALL	LWRD ap_get_message
	LD	C,A
	LD	B,0
	PUSH	BC
	POP	IY
; 65.	        switch(key)
	LD	E,C
	LD	D,B
	CALL	LWRD ?S_V_SWITCH_L06
	DEFW	10
	DEFW	3
	DEFW	4
	DEFW	28
	DEFW	29
	DEFW	33
	DEFW	37
	DEFW	38
	DEFW	48
	DEFW	67
	DEFW	68
	DEFW	?0032
	DEFW	?0024
	DEFW	?0028
	DEFW	?0011
	DEFW	?0010
	DEFW	?0010
	DEFW	?0011
	DEFW	?0006
	DEFW	?0012
	DEFW	?0024
	DEFW	?0028
?0009:
; 66.	        {
; 67.	            case AP_MSG_STANDBY:
; 68.	                //do nothing
; 69.	                break;
?0010:
; 70.	            case AP_KEY_NEXT|AP_KEY_UP:
; 71.	            case AP_KEY_PREV|AP_KEY_UP:        // 停止试播
; 72.	                return RESULT_IGNORE;
	LD	HL,52
; 73.	            case AP_KEY_PLAY | AP_KEY_UP:
	JP	LWRD ?0041
?0011:
; 74.	            case AP_KEY_MODE|AP_KEY_UP:        // 保存电台, 返回播放界面.
; 75.	                loop = FALSE;
; 76.	                key = RESULT_RADIO;
	LD	(IX-2),B
	LD	IY,7
; 77.	                break;
	JR	?0006
?0012:
; 78.	            case AP_MSG_RTC:            // 时间记数,闪烁箭头.
; 79.	                play_time--;
	LD	L,(IX-4)
	LD	H,(IX-3)
	DEC	HL
	LD	(IX-4),L
	LD	(IX-3),H
; 80.	                if(play_time <= 0)
	LD	C,L
	LD	B,H
	LD	L,D
	LD	H,D
	OR	128
	SBC	HL,BC
	JP	PO,?0042
	XOR	H
?0042:
	JP	M,?0014
?0013:
; 81.	                {
; 82.	                    loop = FALSE;
; 83.	                    key = 0;
	LD	(IX-2),D
	LD	IY,0
?0014:
; 84.	                }
; 85.	                if(flash_point)         // 箭头闪烁
	LD	A,(IX-6)
	OR	(IX-5)
	LD	A,(FMStatus+5)
	JR	Z,?0016
?0015:
; 86.	                {
; 87.	                    if(FMStatus.mode==0)
	OR	A
	LD	C,53
	PUSH	BC
	LD	A,(IX-10)
	JR	NZ,?0018
?0017:
; 88.	                    {
; 89.	                        ResShowPic(SLIDPTR,25+k,53);           //显示箭头
	ADD	A,25
	CALL	LWRD ?0052
	POP	AF
; 90.	                        ResShowPic(FMBARBG,0,47);                    //显示US频率条
	LD	C,47
	PUSH	BC
	LD	C,0
	LD	DE,51
	JR	?0045
; 91.	                    }
; 92.	                    else
?0018:
; 93.	                    {
; 94.	                       ResShowPic(SLIDPTR,40+k,53);            //显示箭头
	ADD	A,40
	CALL	LWRD ?0052
	POP	AF
; 95.	                       ResShowPic(FMJPBAR,0,47);                    //显示JP频率条
	LD	C,47
	PUSH	BC
	LD	C,0
	LD	DE,55
?0045:
	CALL	LWRD ?0053
	POP	AF
?0019:
; 96.	                    }
; 97.	                    flash_point = 0;
	XOR	A
	LD	(IX-6),A
	LD	(IX-5),A
; 98.	                }
; 99.	                else                           // 清除箭头
	JP	LWRD ?0006
?0016:
; 100.	                {
; 101.	
; 102.	                    if(FMStatus.mode==0)
	OR	A
	LD	C,47
	PUSH	BC
	JR	NZ,?0022
?0021:
; 103.	                    {
; 104.	                       ResShowPic(FMBARBG,0,47);
	LD	C,A
	LD	E,51
	JR	?0046
; 105.	                    }
; 106.	                    else
?0022:
; 107.	                    {
; 108.	                       ResShowPic(FMJPBAR,0,47);
	LD	C,D
	LD	E,55
?0046:
	CALL	LWRD ?0053
	POP	AF
?0023:
; 109.	                    }
; 110.	
; 111.	                    flash_point = 1;
	LD	(IX-6),1
	LD	(IX-5),0
?0020:
; 112.	
; 113.	                }
; 114.	           //     UpdateScreen(NULL);
; 115.	                break;
	JP	LWRD ?0006
?0024:
; 116.	            case AP_KEY_VOLADD:
; 117.	            case AP_KEY_VOLADD | AP_KEY_HOLD:
; 118.	             if (FMStatus.volume ++ <31)
	LD	HL,FMStatus+6
	LD	A,(HL)
	INC	(HL)
	CP	31
	JR	C,?0048
?0025:
; 119.	                {
; 120.	                    ui_show_volfm(FMStatus.volume);   //显示音量
; 121.	                    fmSendCommand(MC_SETVOLUME, FMStatus.volume);
; 122.	                }
; 123.	                else
?0026:
; 124.	                {
; 125.	                    FMStatus.volume = 31;
	LD	A,31
	JR	?0047
?0027:
; 126.	                }
; 127.	                break;
?0028:
; 128.	
; 129.	                           // 音量调节.  zxs==
; 130.	            case AP_KEY_VOLSUB:
; 131.	            case AP_KEY_VOLSUB | AP_KEY_HOLD:
; 132.	            if (FMStatus.volume-- > 0)
	LD	HL,FMStatus+6
	LD	B,(HL)
	DEC	(HL)
	INC	B
	DEC	B
	JR	Z,?0030
?0029:
; 133.	                {
; 134.	                    ui_show_volfm(FMStatus.volume);   //显示音量
?0048:
	LD	DE,(FMStatus+6)
	LD	A,BYTE3 ui_show_volfm
	LD	HL,LWRD ui_show_volfm
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 135.	                    fmSendCommand(MC_SETVOLUME, FMStatus.volume);
	JP	LWRD ?0049
; 136.	                }
; 137.	                else
?0030:
; 138.	                {
; 139.	                    FMStatus.volume = 0;
	XOR	A
?0047:
	LD	(FMStatus+6),A
?0031:
; 140.	                }
; 141.	                break;
	JP	LWRD ?0006
?0032:
; 142.	
; 143.	 
; 144.	            default:                    //热键处理
; 145.	                key=ap_handle_hotkey(key);
	PUSH	IY
	POP	HL
	LD	E,L
	CALL	LWRD ap_handle_hotkey
	LD	C,A
	PUSH	BC
	POP	IY
; 146.	                if(key!=0)
	LD	A,C
	OR	A
	JP	Z,?0006
?0033:
; 147.	                {
; 148.	                    loop = FALSE;
	LD	(IX-2),B
?0034:
?0008:
	JP	LWRD ?0006
?0005:
; 149.	                }
; 150.	        }
; 151.	    }
; 152.	     //fmSendCommand(MC_MUTE,SetMUTE);
; 153.	     fmSendCommand(MC_GETFREQ, (int)&k); // 保存电台
	LD	L,A
	LD	H,A
	ADD	HL,SP
	LD	C,L
	LD	B,H
	LD	E,17
	CALL	LWRD ?0051
; 154.	     FMAutoTab[AutoTabNum] = k;
	LD	HL,(AutoTabNum)
	LD	H,0
	ADD	HL,HL
	LD	BC,FMAutoTab
	ADD	HL,BC
	LD	C,(IX-10)
	LD	(HL),C
	LD	B,(IX-9)
	INC	HL
	LD	(HL),B
; 155.	     AutoTabNum++;
	LD	HL,AutoTabNum
	INC	(HL)
; 156.	     for(i = AutoTabNum;i < 20;i++)
	LD	BC,(AutoTabNum)
	LD	B,0
	LD	(IX-8),C
	LD	(IX-7),B
?0036:
	LD	BC,32788
	LD	L,(IX-8)
	LD	H,(IX-7)
	LD	A,B
	XOR	H
	LD	H,A
	SBC	HL,BC
	JR	NC,?0035
?0037:
; 157.	     {
; 158.	        if(radio_param.param1[i] == k)    // 删除重复的电台.
	LD	L,(IX-8)
	LD	H,(IX-7)
	ADD	HL,HL
	LD	BC,(radio_param)
	ADD	HL,BC
	LD	B,(HL)
	INC	HL
	LD	H,(HL)
	LD	L,B
	LD	C,(IX-10)
	LD	B,(IX-9)
	AND	A
	SBC	HL,BC
	JR	NZ,?0040
?0039:
; 159.	        {
; 160.	            radio_param.param1[i] =0;
	LD	L,(IX-8)
	LD	H,(IX-7)
	ADD	HL,HL
	LD	BC,(radio_param)
	ADD	HL,BC
	XOR	A
	LD	(HL),A
	INC	HL
	LD	(HL),A
?0040:
	INC	(IX-8)
	JR	NZ,?0036
	INC	(IX-7)
	JR	?0036
?0035:
; 161.	          //  FMStatus.station_count--;
; 162.	         }
; 163.	     }
; 164.	     return key;
	PUSH	IY
	POP	HL
; 165.	}
?0041:
	LD	SP,IX
	POP	IX
	POP	IY
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0052:
	LD	C,A
	LD	E,220
?0053:
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	JP	LWRD ?BANK_CALL_DIRECT_L08
	END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?