searchhandle.s01

来自「MP3 整个 SDK」· S01 代码 · 共 1,070 行 · 第 1/2 页

S01
1,070
字号
	NAME	searchhandle(17)
	RSEG	CODE_1(0)
	RSEG	CSTR(0)
	EXTERN	FMStatus
	EXTERN	Freqtab
	EXTERN	GetBattery
	EXTERN	ResShowPic
	PUBLIC	SearchHandle
	PUBLIC	Search_Show
	PUBLIC	ShowFreqInFM
	EXTERN	ShowStationCount
	EXTERN	Updateflag
	EXTERN	ap_get_message
	EXTERN	ap_handle_hotkey
	EXTERN	fmSendCommand
	EXTERN	g_comval
	EXTERN	itoa_2
	EXTERN	itoa_3
	EXTERN	main_ResShowPic
	EXTERN	radio_param
	PUBLIC	ui_show_FMdata
	EXTERN	ui_show_batt
	PUBLIC	ui_show_data
	PUBLIC	ui_show_volfm
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?US_DIV_L02
	EXTERN	?SL_DIV_L03
	EXTERN	?SL_MOD_L03
	EXTERN	?SL_CMP_L03
	EXTERN	?SL_DIVASG_L03
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?STRCPY_L11
	EXTERN	?STRCAT_L11
	RSEG	CODE_1
ui_show_data:
; 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: SearchHandle.c,v 1.1.1.1 2006/05/22 03:24:00 selina Exp $
; 10.	*******************************************************************************
; 11.	*/
; 12.	
; 13.	#pragma codeseg(CODE_1)
; 14.	
; 15.	#include "ap_radio.h"
; 16.	#include "actos.h"
; 17.	extern    comval_t    g_comval;
; 18.	extern    fm_play_status_t    FMStatus;
; 19.	extern     FMRADIO_param_t radio_param;
; 20.	extern    char Freqtab[10];
; 21.	extern char Updateflag;
; 22.	void    ShowFreqInFM();                        //FM主界面显示
; 23.	bool     Search_Show(FM_direct_t Direct);    //自动搜台时的显示
; 24.	void ui_show_data(char *buf, uchar x, uchar y)     //zxs add for show CH number
; 25.	{
	PUSH	IX
	PUSH	BC
	PUSH	DE
	POP	IX
?0003:
; 26.	    while(1)
; 27.	    {
; 28.	        if(*buf!=0)main_ResShowPic(CHNUM0+*buf-0x30, x, y);
	XOR	A
	OR	(IX+0)
	JR	Z,?0002
?0005:
	LD	HL,8
	ADD	HL,SP
	LD	C,(HL)
	PUSH	BC
	LD	HL,2
	ADD	HL,SP
	LD	C,(HL)
	LD	E,(IX+0)
	LD	D,0
	LD	HL,65521
	CALL	LWRD ?0138
	POP	AF
; 29.	        else
?0006:
; 30.	            break;
?0007:
; 31.	        output8(0x4e,input8(0x4e)|0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 32.	        *buf++;
; 33.	        x+=6;
	LD	HL,0
	ADD	HL,SP
	LD	A,(HL)
	ADD	A,6
	LD	(HL),A
; 34.	    }
; 35.	}
	INC	IX
	JR	?0003
?0002:
	POP	HL
	POP	IX
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0139:
	LD	E,(HL)
	LD	D,0
	LD	HL,193
?0138:
	ADD	HL,DE
	EX	DE,HL
	LD	A,BYTE3 main_ResShowPic
	LD	HL,LWRD main_ResShowPic
	JP	LWRD ?BANK_CALL_DIRECT_L08
ui_show_volfm:
; 36.	
; 37.	
; 38.	void ui_show_volfm(BYTE volume)         //显示音量信息      zxs add for show fm vol
; 39.	{
	PUSH	BC
	PUSH	DE
	PUSH	AF
	PUSH	AF
; 40.	    char temp[3];
; 41.	    itoa_2(volume, temp);
	LD	HL,0
	ADD	HL,SP
	LD	C,L
	LD	B,H
	LD	A,BYTE3 itoa_2
	LD	HL,LWRD itoa_2
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 42.	    main_ResShowPic(TVNUM0+temp[0]-0x30,25,162);
	LD	C,162
	PUSH	BC
	LD	C,25
	LD	HL,2
	ADD	HL,SP
	CALL	LWRD ?0139
	POP	AF
; 43.	    main_ResShowPic(TVNUM0+temp[1]-0x30,25+9,162);
	LD	C,162
	PUSH	BC
	LD	C,34
	LD	HL,3
	ADD	HL,SP
	CALL	LWRD ?0139
	POP	AF
; 44.	}
	POP	HL
	POP	HL
	POP	HL
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
SearchHandle:
; 45.	
; 46.	int    SearchHandle(BYTE Direct)
; 47.	{
	PUSH	BC
	PUSH	IX
	PUSH	DE
	PUSH	AF
; 48.	    int key;
; 49.	    bool need_draw=TRUE;
; 50.	    BYTE    Searchflag=1;
	LD	HL,0
	ADD	HL,SP
	LD	(HL),1
	LD	D,1
?0009:
; 51.	    while(1)
; 52.	    {
; 53.	        if(Direct!=0)
	LD	HL,2
	ADD	HL,SP
	XOR	A
	OR	(HL)
	JP	Z,?0044
?0011:
; 54.	        {
; 55.	            if(Direct==10)            //NEXT搜索处理
	CP	10
	JR	NZ,?0014
?0013:
; 56.	            {
; 57.	                if(((FMStatus.freq+100)>0xa5e0)&&(FMStatus.mode==0))FMStatus.freq=0x53d8;
	LD	HL,(FMStatus+1)
	LD	BC,100
	ADD	HL,BC
	LD	C,L
	LD	B,H
	LD	HL,42464
	AND	A
	SBC	HL,BC
	JR	NC,?0016
	LD	A,(FMStatus+5)
	OR	A
	JR	NZ,?0016
?0018:
?0017:
?0015:
	LD	HL,21464
	JR	?0123
?0016:
; 58.	                else if(((FMStatus.freq+100)>0x5f90)&&(FMStatus.mode==1))FMStatus.freq=0x28e0;
	LD	HL,(FMStatus+1)
	LD	BC,100
	ADD	HL,BC
	LD	C,L
	LD	B,H
	LD	HL,24464
	AND	A
	SBC	HL,BC
	JR	NC,?0021
	LD	A,(FMStatus+5)
	DEC	A
	JR	NZ,?0021
?0023:
?0022:
?0020:
	LD	HL,10464
?0123:
	LD	(FMStatus+1),HL
; 59.	                else
	JR	?0122
?0021:
; 60.	                    FMStatus.freq+=100;
	LD	HL,FMStatus+1
	LD	A,(HL)
	ADD	A,100
	LD	(HL),A
	JR	NC,?0122
	INC	HL
	INC	(HL)
?0122:
?0024:
?0019:
; 61.	                if(Search_Show(UP))return 0;
	PUSH	DE
	LD	E,1
	LD	A,BYTE3 Search_Show
	LD	HL,LWRD Search_Show
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	INC	L
	DEC	L
	POP	DE
	JR	Z,?0044
?0025:
	JR	?0126
; 62.	            }
?0026:
?0014:
; 63.	            else if(Direct==20)            //LAST搜索处理
	CP	20
	JR	NZ,?0029
?0028:
; 64.	            {
; 65.	                if(((FMStatus.freq-100)<0x53d8)&&(FMStatus.mode==0))FMStatus.freq=0xa5e0;
	LD	HL,(FMStatus+1)
	LD	BC,65436
	ADD	HL,BC
	LD	BC,21464
	AND	A
	SBC	HL,BC
	JR	NC,?0031
	LD	A,(FMStatus+5)
	OR	A
	JR	NZ,?0031
?0033:
?0032:
?0030:
	LD	HL,42464
	JR	?0124
?0031:
; 66.	                else if(((FMStatus.freq-100)<0x28e0)&&(FMStatus.mode==1))FMStatus.freq=0x5f90;
	LD	HL,(FMStatus+1)
	LD	BC,65436
	ADD	HL,BC
	LD	BC,10464
	AND	A
	SBC	HL,BC
	JR	NC,?0036
	LD	A,(FMStatus+5)
	DEC	A
	JR	NZ,?0036
?0038:
?0037:
?0035:
	LD	HL,24464
?0124:
	LD	(FMStatus+1),HL
; 67.	                else
	JR	?0039
?0036:
; 68.	                    FMStatus.freq-=100;
	LD	HL,FMStatus+1
	LD	A,(HL)
	ADD	A,156
	LD	(HL),A
	INC	HL
	LD	A,(HL)
	ADC	A,255
	LD	(HL),A
?0039:
?0034:
; 69.	                if(Search_Show(DOWN))return 0;
	PUSH	DE
	LD	E,0
	LD	A,BYTE3 Search_Show
	LD	HL,LWRD Search_Show
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	INC	L
	DEC	L
	POP	DE
	JR	Z,?0044
?0040:
	JR	?0126
; 70.	            }
?0041:
?0029:
; 71.	            else if(Direct==50)
	CP	50
	JR	NZ,?0044
?0043:
; 72.	            {
; 73.	                Direct=0;
; 74.	                return 0;
?0126:
	LD	HL,0
; 75.	            }
	JP	LWRD ?0071
?0044:
?0042:
?0027:
?0012:
; 76.	        }
; 77.	        if(need_draw)                //显示
	LD	HL,0
	ADD	HL,SP
	XOR	A
	OR	(HL)
	JR	Z,?0046
?0045:
; 78.	        {
; 79.	            ShowFreqInFM();
	LD	A,BYTE3 ShowFreqInFM
	LD	HL,LWRD ShowFreqInFM
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 80.	            need_draw=FALSE;
	LD	HL,0
	ADD	HL,SP
	LD	(HL),0
?0046:
; 81.	        }
; 82.	        key=ap_get_message();
	CALL	LWRD ap_get_message
	LD	C,A
	LD	B,0
	PUSH	BC
	POP	IX
; 83.	        switch(key)
	LD	A,29
	XOR	C
	JP	Z,?0009
	LD	A,49
	XOR	C
	JP	Z,?0009
?0048:
; 84.	        {
; 85.	            case AP_MSG_STANDBY:
; 86.	            case AP_KEY_AB | AP_KEY_UP:        //搜索时不响音REC
; 87.	                //do nothing
; 88.	                break;
?0049:
	LD	A,38
	XOR	C
	JR	NZ,?0057
; 89.	            case AP_KEY_NEXT|AP_KEY_UP:        //NEXT搜索时按NEXT键,停止搜索
; 90.	                if(Searchflag==1)
	LD	B,D
	DEC	B
	JR	Z,?0128
?0050:
; 91.	                {
; 92.	                    Searchflag=0;
?0051:
; 93.	                }
; 94.	                else if(Direct==10)
	LD	HL,2
	ADD	HL,SP
	LD	A,(HL)
	CP	10
	JP	NZ,?0009
?0053:
; 95.	                {
; 96.	                    Direct=50;
	LD	(HL),50
; 97.	                   if(FMStatus.volume)
	LD	A,(FMStatus+6)
	OR	A
	JP	Z,?0009
?0055:
; 98.	                    fmSendCommand(MC_MUTE,releaseMUTE);
	JR	?0127
?0056:
?0054:
?0052:
; 99.	                }
; 100.	                break;
?0057:
	LD	A,37
	XOR	C
	JR	NZ,?0065
; 101.	            case AP_KEY_PREV|AP_KEY_UP:        //LAST搜索时按LAST键,停止搜索
; 102.	                if(Searchflag==1)
	LD	B,D
	DEC	B
	JR	NZ,?0059
?0058:
; 103.	                {
; 104.	                    Searchflag=0;
?0128:
	LD	D,0
	JP	LWRD ?0009
?0059:
; 105.	                }
; 106.	                else if(Direct==20)
	LD	HL,2
	ADD	HL,SP
	LD	A,(HL)
	CP	20
	JP	NZ,?0009
?0061:
; 107.	                {
; 108.	                    Direct=50;
	LD	(HL),50
; 109.	                    if(FMStatus.volume)
	LD	A,(FMStatus+6)
	OR	A
	JP	Z,?0009
?0063:
; 110.	                    fmSendCommand(MC_MUTE,releaseMUTE);
?0127:
	PUSH	DE
	CALL	LWRD ?0140
	POP	DE
?0064:
?0062:
?0060:
; 111.	                }
; 112.	                break;
	JP	LWRD ?0009
?0065:
; 113.	            default:                    //热键处理
; 114.	                key=ap_handle_hotkey(key);
	PUSH	DE
	PUSH	IX
	POP	HL
	LD	E,L
	CALL	LWRD ap_handle_hotkey
	LD	C,A
	PUSH	BC
	POP	IX
	POP	DE
; 115.	                if(key == RESULT_REDRAW)need_draw=TRUE;
	LD	A,50
	XOR	C
	JR	NZ,?0067
?0066:
	LD	L,B
	LD	H,B
	ADD	HL,SP
	LD	(HL),1
	JP	LWRD ?0009
?0067:
; 116.	                else if(key!=0)
	PUSH	IX
	POP	HL
	LD	A,L
	OR	H
	JP	Z,?0009
?0069:
; 117.	                {
; 118.	                    return key;
; 119.	                }
?0071:
	POP	AF
	POP	AF
	POP	IX
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0140:
	LD	BC,0
?0141:
	LD	E,12
?0142:
	LD	A,BYTE3 fmSendCommand
	LD	HL,LWRD fmSendCommand
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0070:
?0068:
?0047:
; 120.	        }
; 121.	    }
; 122.	}
Search_Show:
; 123.	
; 124.	
; 125.	bool Search_Show(FM_direct_t Direct)
; 126.	{
	PUSH	BC
	PUSH	IX
	PUSH	DE
	PUSH	AF
; 127.	    bool Search_Flag;
; 128.	    int    i;
; 129.	    FMStatus.stereo_status=1;
	LD	A,1
	LD	(FMStatus+7),A
; 130.	    FMStatus.station=0;
	XOR	A
	LD	(FMStatus+3),A
; 131.	    fmSendCommand(MC_MUTE,SetMUTE);
	LD	BC,1
	CALL	LWRD ?0141
; 132.	    fmSendCommand(MC_SETVOLUME,FMStatus.volume);
	LD	BC,(FMStatus+6)
	LD	B,0
	LD	E,64
	CALL	LWRD ?0142
; 133.	    fmSendCommand(MC_RESTORE,(int)&radio_param);

⌨️ 快捷键说明

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