⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 autosearchhandle.s01

📁 MP3 整个 SDK
💻 S01
📖 第 1 页 / 共 2 页
字号:
	NAME	autosearchhandle(17)
	RSEG	CODE_2(0)
	RSEG	CSTR(0)
	RSEG	UDATA0(0)
	PUBLIC	AutoSearchHandle
	PUBLIC	AutoTabNum
	PUBLIC	CleanStationCount
	PUBLIC	FMAutoTab
	EXTERN	FMStatus
	EXTERN	Freqtab
	EXTERN	GetBattery
	EXTERN	ResShowPic
	PUBLIC	RestartSearch
	PUBLIC	Search_Show2
	PUBLIC	ShowFreqInFM2
	PUBLIC	ShowStationCount
	EXTERN	TryPlayingHandle
	EXTERN	Updateflag
	EXTERN	ap_get_message
	EXTERN	ap_handle_hotkey
	EXTERN	fmSendCommand
	EXTERN	g_comval
	EXTERN	itoa_2
	EXTERN	itoa_3
	EXTERN	radio_param
	EXTERN	ui_show_FMdata
	EXTERN	ui_show_batt
	EXTERN	ui_show_data
	EXTERN	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_2
ShowStationCount:
; 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: AutoSearchHandle.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.	extern    char Freqtab[10];
; 24.	extern    char  Updateflag;
; 25.	WORD    FMAutoTab[20];        // 全自动收台,预存台.
; 26.	BYTE    AutoTabNum;        // 预存台数.
; 27.	
; 28.	extern int    TryPlayingHandle(void);
; 29.	/*
; 30.	********************************************************************************
; 31.	* Description : 显示电台号.
; 32.	*
; 33.	* Arguments   :
; 34.	*
; 35.	* Returns     :
; 36.	*
; 37.	* Notes       :
; 38.	*
; 39.	********************************************************************************
; 40.	*/
; 41.	void ShowStationCount(int count)
; 42.	{
	PUSH	BC
	PUSH	DE
	PUSH	AF
	PUSH	AF
; 43.	
; 44.	   
; 45.	     char FMTab[3];
; 46.	     ResShowPic(FMCH,95,8);
	LD	C,8
	PUSH	BC
	CALL	LWRD ?0173
	POP	AF
; 47.	     itoa_2(count,FMTab);
	LD	HL,0
	ADD	HL,SP
	LD	C,L
	LD	B,H
	LD	HL,4
	ADD	HL,SP
	LD	E,(HL)
	LD	A,BYTE3 itoa_2
	LD	HL,LWRD itoa_2
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 48.	     ui_show_data(FMTab,114,8);
	LD	C,8
	PUSH	BC
	LD	C,114
	LD	HL,2
	ADD	HL,SP
	EX	DE,HL
	LD	A,BYTE3 ui_show_data
	LD	HL,LWRD ui_show_data
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	HL
; 49.	   
; 50.	
; 51.	}
	POP	HL
	POP	HL
	POP	HL
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0173:
	LD	C,95
	LD	DE,52
?0174:
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	JP	LWRD ?BANK_CALL_DIRECT_L08
CleanStationCount:
; 52.	/*
; 53.	********************************************************************************
; 54.	* Description : 清除电台号
; 55.	*
; 56.	* Arguments   :
; 57.	*
; 58.	* Returns     :
; 59.	*
; 60.	* Notes       :
; 61.	*
; 62.	********************************************************************************
; 63.	*/
; 64.	void CleanStationCount(void)
; 65.	{
	PUSH	BC
	PUSH	DE
; 66.	    ResShowPic(FMCHBG,95,8);
	LD	C,8
	PUSH	BC
	LD	C,95
	LD	DE,53
	CALL	LWRD ?0174
	POP	AF
; 67.	}
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
ShowFreqInFM2:
; 68.	
; 69.	/*
; 70.	********************************************************************************
; 71.	* Description : 显示全自动搜台界面
; 72.	*
; 73.	* Arguments   :
; 74.	*
; 75.	* Returns     :
; 76.	*
; 77.	* Notes       :
; 78.	*
; 79.	********************************************************************************
; 80.	*/
; 81.	void ShowFreqInFM2()
; 82.	{
	PUSH	BC
	PUSH	DE
	PUSH	IY
	PUSH	IX
	LD	IX,0
	ADD	IX,SP
	LD	HL,65520
	ADD	HL,SP
	LD	SP,HL
; 83.	   // char buf[4]={"FM"};
; 84.	    char  buf[4];
; 85.	    long i;
; 86.	    int k,h;
; 87.	    char FMTab[5];
; 88.	
; 89.	    i=0x10000+FMStatus.freq;
	LD	HL,(FMStatus+1)
	LD	BC,0
	PUSH	BC
	PUSH	HL
	LD	L,C
	LD	H,B
	POP	BC
	ADD	HL,BC
	EX	DE,HL
	LD	HL,1
	POP	BC
	ADC	HL,BC
	LD	C,L
	LD	B,H
	EX	DE,HL
	LD	(IX-16),L
	LD	(IX-15),H
	LD	(IX-14),C
	LD	(IX-13),B
; 90.	    if((i%100)>49)
	LD	DE,0
	PUSH	DE
	LD	E,100
	PUSH	DE
	CALL	LWRD ?SL_MOD_L03
	PUSH	BC
	PUSH	HL
	LD	C,D
	LD	B,D
	LD	HL,49
	CALL	LWRD ?SL_CMP_L03
	LD	L,C
	LD	H,B
	JR	NC,?0003
?0002:
; 91.	    {
; 92.	        i=i/100+1;
	PUSH	HL
	PUSH	DE
	LD	C,(IX-14)
	LD	B,(IX-13)
	LD	L,(IX-16)
	LD	H,(IX-15)
	CALL	LWRD ?SL_DIV_L03
	PUSH	BC
	PUSH	HL
	LD	HL,1
	POP	BC
	ADD	HL,BC
	EX	DE,HL
	LD	L,H
	POP	BC
	ADC	HL,BC
	LD	C,L
	LD	B,H
	EX	DE,HL
	LD	(IX-16),L
	LD	(IX-15),H
	LD	(IX-14),C
	LD	(IX-13),B
; 93.	    }
; 94.	    else
	JR	?0004
?0003:
; 95.	        i=i/100;
	ADD	HL,SP
	CALL	LWRD ?SL_DIVASG_L03
?0004:
; 96.	    k=i/10;
	LD	HL,0
	PUSH	HL
	LD	L,10
	PUSH	HL
	LD	C,(IX-14)
	LD	B,(IX-13)
	LD	L,(IX-16)
	LD	H,(IX-15)
	CALL	LWRD ?SL_DIV_L03
	PUSH	HL
	POP	IY
; 97.	    h=(i%10)*10;
	LD	BC,0
	PUSH	BC
	LD	C,10
	PUSH	BC
	LD	C,(IX-14)
	LD	B,(IX-13)
	LD	L,(IX-16)
	LD	H,(IX-15)
	CALL	LWRD ?SL_MOD_L03
	ADD	HL,HL
	LD	C,L
	LD	B,H
	ADD	HL,HL
	ADD	HL,HL
	ADD	HL,BC
	LD	(IX-2),L
; 98.	    if(k<100)*itoa_2(k,buf);
	LD	BC,32868
	PUSH	IY
	POP	HL
	LD	A,B
	XOR	H
	LD	H,A
	SBC	HL,BC
	LD	HL,4
	JR	NC,?0006
?0005:
	ADD	HL,SP
	LD	C,L
	LD	B,H
	PUSH	IY
	POP	HL
	LD	E,L
	LD	A,BYTE3 itoa_2
	LD	HL,LWRD itoa_2
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 99.	    else
	JR	?0007
?0006:
; 100.	        *itoa_3(k,buf);
	ADD	HL,SP
	LD	C,L
	LD	B,H
	PUSH	IY
	POP	DE
	LD	A,BYTE3 itoa_3
	LD	HL,LWRD itoa_3
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0007:
; 101.	        strcpy(Freqtab,buf);
	LD	HL,4
	ADD	HL,SP
	EX	DE,HL
	LD	HL,Freqtab
	CALL	LWRD ?STRCPY_L11
; 102.	        strcat(Freqtab,":");
	LD	DE,?0008
	LD	HL,Freqtab
	CALL	LWRD ?STRCAT_L11
; 103.	//    strcat(Freqtab,buf);
; 104.	    //strcat(Freqtab,".");
; 105.	    *itoa_2(h,buf);
	LD	HL,4
	ADD	HL,SP
	LD	C,L
	LD	B,H
	LD	E,(IX-2)
	LD	A,BYTE3 itoa_2
	LD	HL,LWRD itoa_2
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 106.	        buf[1]='\0';
	LD	(IX-11),0
; 107.	    //buf[1]=' ';
; 108.	   // buf[2]=0;
; 109.	    strcat(Freqtab,buf);
	LD	HL,4
	ADD	HL,SP
	EX	DE,HL
	LD	HL,Freqtab
	CALL	LWRD ?STRCAT_L11
; 110.	    if(FMStatus.mode==0)
	LD	A,(FMStatus+5)
	OR	A
	LD	HL,(FMStatus+1)
	JR	NZ,?0010
?0009:
; 111.	    {
; 112.	        k=(FMStatus.freq-0x53d8)/127;
	LD	BC,44072
	ADD	HL,BC
	EX	DE,HL
	LD	BC,127
	JR	?0150
; 113.	    }
; 114.	    else
?0010:
; 115.	    {
; 116.	        k=(FMStatus.freq-0x28e0)/105;
	LD	BC,55072
	ADD	HL,BC
	EX	DE,HL
	LD	BC,105
?0150:
	CALL	LWRD ?US_DIV_L02
	PUSH	DE
	POP	IY
?0011:
; 117.	    }
; 118.	
; 119.	//    ResShowPic(FMHEAD,0,107);          //显示界面头部 zxs add
; 120.	   if(Updateflag==0)
	LD	A,(Updateflag)
	OR	A
	JR	NZ,?0016
?0012:
; 121.	   {    
; 122.	    if(FMStatus.mode==0)
	LD	A,(FMStatus+5)
	OR	A
	LD	C,B
	PUSH	BC
	JR	NZ,?0015
?0014:
; 123.	    {
; 124.	      ResShowPic(FMUSBCK,0,0);
	LD	DE,71
	JR	?0151
; 125.	     //   ResShowPic(DWNARROW,11-5+k,32);            //显示箭头
; 126.	     //  ResShowPic(FQBAR,0,40);                    //显示US频率条
; 127.	    }
; 128.	    else
?0015:
; 129.	    {
; 130.	        ResShowPic(FMJPBCK,0,0);
	LD	DE,56
?0151:
	CALL	LWRD ?0174
	POP	AF
?0016:
?0013:
; 131.	//        ResShowPic(DWNARROW,30-6+k,32);            //显示箭头
; 132.	//        ResShowPic(FQBAR2,0,40);                    //显示JP频率条
; 133.	    }
; 134.	    }
; 135.	    ResShowPic(FMVOL,3,160);
	LD	C,160
	PUSH	BC
	LD	C,3
	LD	DE,72
	CALL	LWRD ?0174
	POP	AF
; 136.	    ui_show_volfm(FMStatus.volume);   //显示音量
	LD	DE,(FMStatus+6)
	LD	A,BYTE3 ui_show_volfm
	LD	HL,LWRD ui_show_volfm
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 137.	    ui_show_batt(GetBattery(),F_comval.BatteryType,1);    //电池电量显示
	LD	C,1
	PUSH	BC
	LD	BC,(g_comval+15)
	CALL	LWRD GetBattery
	LD	E,A
	LD	D,0
	LD	A,BYTE3 ui_show_batt
	LD	HL,LWRD ui_show_batt
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	HL
; 138.	
; 139.	//    UpdateScreen(NULL);                             //刷新
; 140.	    if((FMStatus.station_count>0)&&(FMStatus.station>0))        //显示电台号
	LD	A,(FMStatus+4)
	OR	A
	JR	Z,?0018
	LD	A,(FMStatus+3)
	OR	A
	JR	Z,?0018
?0020:
?0019:
?0017:
; 141.	    {
; 142.	        ResShowPic(FMCH,95,8);
	LD	C,8
	PUSH	BC
	CALL	LWRD ?0173
	POP	AF
; 143.	        itoa_2(FMStatus.station,buf);
	LD	HL,4
	ADD	HL,SP
	LD	C,L
	LD	B,H
	LD	DE,(FMStatus+3)
	LD	A,BYTE3 itoa_2
	LD	HL,LWRD itoa_2
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 144.	        strcpy(FMTab,buf);
	LD	HL,4
	ADD	HL,SP
	EX	DE,HL
	LD	HL,8
	ADD	HL,SP
	CALL	LWRD ?STRCPY_L11
; 145.	        ui_show_data(FMTab,114,8);
	LD	C,8
	PUSH	BC
	LD	C,114
	LD	HL,10
	ADD	HL,SP
	EX	DE,HL
	LD	A,BYTE3 ui_show_data
	LD	HL,LWRD ui_show_data
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	HL
; 146.	    }
; 147.	    else
	JR	?0021
?0018:
; 148.	        ResShowPic(FMCHBG,95,8);
	LD	C,8
	PUSH	BC
	LD	C,95
	LD	DE,53
	CALL	LWRD ?0174
	POP	AF
?0021:
; 149.	    ResShowPic(FMNUMBG,90,100);
	LD	C,100
	PUSH	BC
	LD	C,90
	LD	DE,68
	CALL	LWRD ?0174
	POP	AF
; 150.	    if(FMStatus.mode==0)
	LD	A,(FMStatus+5)
	OR	A
	LD	C,47
	PUSH	BC
	JR	NZ,?0023
?0022:
; 151.	    {
; 152.	        ResShowPic(FMBARBG,0,47);
	LD	C,A
	LD	DE,51
	JR	?0152
; 153.	    }
; 154.	    else
?0023:
; 155.	    {
; 156.	        ResShowPic(FMJPBAR,0,47);
	LD	C,0
	LD	DE,55
?0152:
	CALL	LWRD ?0174
	POP	AF
?0024:
; 157.	    }
; 158.	
; 159.	    if(FMStatus.stereo_status==0)
	LD	A,(FMStatus+7)
	OR	A
	JR	NZ,?0026
?0025:
; 160.	    {
; 161.	        ResShowPic(FMSTEREO,104,162);        //显示立体声
	LD	C,162
	PUSH	BC
	LD	C,104
	LD	DE,70
	CALL	LWRD ?0174
	POP	AF
?0026:
; 162.	    }
; 163.	
; 164.	    ui_show_FMdata(Freqtab,90,100);
	LD	C,100
	PUSH	BC
	LD	C,90
	LD	DE,Freqtab
	LD	A,BYTE3 ui_show_FMdata
	LD	HL,LWRD ui_show_FMdata
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	HL
; 165.	
; 166.	    if(FMStatus.mode==0)
	LD	A,(FMStatus+5)
	OR	A
	LD	C,53
	PUSH	BC
	PUSH	IY
	POP	HL
	LD	A,L
	JR	NZ,?0028
?0027:
; 167.	    {
; 168.	        ResShowPic(SLIDPTR,25+k,53);            //显示箭头
	ADD	A,25
	JR	?0153
; 169.	    }
; 170.	    else
?0028:
; 171.	    {
; 172.	        ResShowPic(SLIDPTR,40+k,53);            //显示箭头
	ADD	A,40
?0153:
	LD	C,A
	LD	DE,220
	CALL	LWRD ?0174
	POP	AF
?0029:
; 173.	    }
; 174.	    Updateflag=1;
	LD	A,1
	LD	(Updateflag),A
; 175.	    output8(0x4e,input8(0x4e)|0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 176.	}
	LD	SP,IX
	POP	IX
	POP	IY
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
Search_Show2:
; 177.	
; 178.	
; 179.	/*
; 180.	********************************************************************************
; 181.	* Description : 搜索下一个在电台表中没有的新电台.
; 182.	*
; 183.	* Arguments   : Direct,Next或Last搜索.
; 184.	*
; 185.	* Returns     : TRUE:搜到下一个新电台,FALSE:没有搜到.
; 186.	*
; 187.	* Notes       :
; 188.	*
; 189.	********************************************************************************
; 190.	*/
; 191.	bool Search_Show2(FM_direct_t Direct)
; 192.	{
	PUSH	BC
	PUSH	IY
	PUSH	IX
	LD	IX,0
	ADD	IX,SP
	PUSH	DE
	PUSH	AF
	PUSH	AF
; 193.	    bool Search_Flag;
; 194.	    int    i;
; 195.	    WORD temp;
; 196.	
; 197.	    FMStatus.stereo_status = 1;
	LD	A,1
	LD	(FMStatus+7),A
; 198.	    FMStatus.station=0;
	XOR	A
	LD	(FMStatus+3),A
; 199.	    fmSendCommand(MC_MUTE,SetMUTE);
	LD	BC,1
	LD	E,12
	CALL	LWRD ?0175
; 200.	    fmSendCommand(MC_SETVOLUME,FMStatus.volume);
	CALL	LWRD ?0176
; 201.	    fmSendCommand(MC_RESTORE,(int)&radio_param);
	LD	BC,radio_param
	LD	E,69
	CALL	LWRD ?0175
; 202.	    Search_Flag=fmSendCommand(MC_SEARCH,Direct);
	LD	C,(IX-2)
	LD	B,0
	LD	E,10
	CALL	LWRD ?0175
	LD	(IX-6),L
; 203.	    if(Search_Flag)                //搜台成功后,MUTE释放
	INC	L
	DEC	L
	JR	Z,?0039
?0030:
; 204.	    {
; 205.	        fmSendCommand(MC_GETFREQ,(int)&temp);
	LD	HL,2
	ADD	HL,SP
	LD	C,L
	LD	B,H
	LD	E,17
	CALL	LWRD ?0175
; 206.	        for(i=0; i<AutoTabNum; i++)     // 检查是否在电台表中
	LD	IY,0
?0033:
	LD	BC,(AutoTabNum)
	LD	B,0
	PUSH	IY
	POP	HL
	OR	128
	SBC	HL,BC
	JP	PO,?0158
	XOR	H
?0158:
	JP	P,?0032
?0034:
; 207.	        {
; 208.	            if( FMAutoTab[i] == temp)
	PUSH	IY
	POP	HL
	ADD	HL,HL
	LD	BC,FMAutoTab
	ADD	HL,BC
	LD	B,(HL)
	INC	HL
	LD	H,(HL)
	LD	L,B
	LD	C,(IX-4)
	LD	B,(IX-3)
	AND	A
	SBC	HL,BC
	JR	NZ,?0037
?0036:
; 209.	            {
; 210.	                Search_Flag = FALSE;
	LD	(IX-6),0
; 211.	                break;
	JR	?0032
?0037:
	INC	IY
	JR	?0033
?0032:
; 212.	            }
; 213.	        }
; 214.	        if(Search_Flag)
	XOR	A
	OR	(IX-6)
	JR	Z,?0039
?0038:
; 215.	        {
; 216.	               if(FMStatus.volume)
	LD	A,(FMStatus+6)
	OR	A
	JR	Z,?0041
?0040:
; 217.	            fmSendCommand(MC_MUTE,releaseMUTE);
	LD	BC,0
	LD	E,12
	CALL	LWRD ?0175
?0041:
; 218.	            fmSendCommand(MC_GETSTATUS,(int)&FMStatus);
	LD	BC,FMStatus
	LD	E,131
	CALL	LWRD ?0175
?0039:
?0031:
; 219.	        }
; 220.	    }
; 221.	    ShowFreqInFM2();
	LD	A,BYTE3 ShowFreqInFM2
	LD	HL,LWRD ShowFreqInFM2
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 222.	    for(i=0;i<0x3999;i++)
	LD	IY,0

⌨️ 快捷键说明

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