searchhandle.s01

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

S01
1,070
字号
	LD	BC,radio_param
	LD	E,69
	CALL	LWRD ?0142
; 134.	    Search_Flag=fmSendCommand(MC_SEARCH,Direct);
	LD	HL,2
	ADD	HL,SP
	LD	C,(HL)
	LD	B,0
	LD	E,10
	CALL	LWRD ?0142
	PUSH	HL
	LD	HL,2
	ADD	HL,SP
	POP	BC
	LD	(HL),C
; 135.	    if(Search_Flag)                //搜台成功后,MUTE释放
	XOR	A
	OR	C
	JR	Z,?0073
?0072:
; 136.	    {
; 137.	         if(FMStatus.volume)
	LD	A,(FMStatus+6)
	OR	A
	JR	Z,?0075
?0074:
; 138.	        fmSendCommand(MC_MUTE,releaseMUTE);
	CALL	LWRD ?0140
?0075:
; 139.	        fmSendCommand(MC_GETSTATUS,(int)&FMStatus);
	LD	BC,FMStatus
	LD	E,131
	CALL	LWRD ?0142
?0073:
; 140.	    }
; 141.	    Updateflag=1;
	LD	A,1
	LD	(Updateflag),A
; 142.	    ShowFreqInFM();
	LD	A,BYTE3 ShowFreqInFM
	LD	HL,LWRD ShowFreqInFM
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 143.	    for(i=0;i<0x3999;i++)
	LD	IX,0
?0077:
	LD	BC,47513
	PUSH	IX
	POP	HL
	LD	A,128
	XOR	H
	LD	H,A
	SBC	HL,BC
	JR	NC,?0076
?0078:
	INC	IX
	JR	?0077
?0076:
; 144.	    {
; 145.	    }
; 146.	    return     Search_Flag;
	LD	HL,0
	ADD	HL,SP
	LD	L,(HL)
; 147.	}
	JP	LWRD ?0071
ui_show_FMdata:
; 148.	
; 149.	void ui_show_FMdata(char *buf, uchar x, uchar y)
; 150.	{
	PUSH	IX
	PUSH	BC
	PUSH	DE
	POP	IX
?0081:
; 151.	    while(1)
; 152.	    {
; 153.	        if(*buf!=0)main_ResShowPic(FMNUM0+*buf-0x30, x, y);
	XOR	A
	OR	(IX+0)
	JR	Z,?0080
?0083:
	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,9
	CALL	LWRD ?0138
	POP	AF
; 154.	        else
?0084:
; 155.	            break;
?0085:
; 156.	        output8(0x4e,input8(0x4e)|0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 157.	        *buf++;
; 158.	        x+=25;
	LD	HL,0
	ADD	HL,SP
	LD	A,(HL)
	ADD	A,25
	LD	(HL),A
; 159.	    }
; 160.	}
	INC	IX
	JR	?0081
?0080:
	POP	HL
	POP	IX
	JP	LWRD ?BANK_FAST_LEAVE_L08
ShowFreqInFM:
; 161.	
; 162.	
; 163.	void ShowFreqInFM()
; 164.	{
	PUSH	BC
	PUSH	DE
	PUSH	IY
	PUSH	IX
	LD	IX,0
	ADD	IX,SP
	LD	HL,65526
	ADD	HL,SP
	LD	SP,HL
; 165.	    char buf[4];
; 166.	    long i;
; 167.	    int k,h;
; 168.	    char FMTab[5];
; 169.	    
; 170.	    //频率换算及转换成ASCII码
; 171.	    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-10),L
	LD	(IX-9),H
	LD	(IX-8),C
	LD	(IX-7),B
; 172.	    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,?0087
?0086:
; 173.	    {
; 174.	        i=i/100+1;
	PUSH	HL
	PUSH	DE
	LD	C,(IX-8)
	LD	B,(IX-7)
	LD	L,(IX-10)
	LD	H,(IX-9)
	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-10),L
	LD	(IX-9),H
	LD	(IX-8),C
	LD	(IX-7),B
; 175.	    }
; 176.	    else
	JR	?0088
?0087:
; 177.	        i=i/100;
	ADD	HL,SP
	CALL	LWRD ?SL_DIVASG_L03
?0088:
; 178.	    k=i/10;
	LD	HL,0
	PUSH	HL
	LD	L,10
	PUSH	HL
	LD	C,(IX-8)
	LD	B,(IX-7)
	LD	L,(IX-10)
	LD	H,(IX-9)
	CALL	LWRD ?SL_DIV_L03
	PUSH	HL
	POP	IY
; 179.	    h=(i%10)*10;
	LD	BC,0
	PUSH	BC
	LD	C,10
	PUSH	BC
	LD	C,(IX-8)
	LD	B,(IX-7)
	LD	L,(IX-10)
	LD	H,(IX-9)
	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
; 180.	    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,?0090
?0089:
	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
; 181.	    else
	JR	?0091
?0090:
; 182.	        *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
?0091:
; 183.	        strcpy(Freqtab,buf);
	LD	HL,4
	ADD	HL,SP
	EX	DE,HL
	LD	HL,Freqtab
	CALL	LWRD ?STRCPY_L11
; 184.	        strcat(Freqtab,":");
	LD	DE,?0092
	LD	HL,Freqtab
	CALL	LWRD ?STRCAT_L11
; 185.	    *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
; 186.	        buf[1]='\0';
	LD	(IX-5),0
; 187.	    strcat(Freqtab,buf);
	LD	HL,4
	ADD	HL,SP
	EX	DE,HL
	LD	HL,Freqtab
	CALL	LWRD ?STRCAT_L11
; 188.	    if(FMStatus.mode==0)
	LD	A,(FMStatus+5)
	OR	A
	LD	HL,(FMStatus+1)
	JR	NZ,?0094
?0093:
; 189.	    {
; 190.	        k=(FMStatus.freq-0x53d8)/127;
	LD	BC,44072
	ADD	HL,BC
	EX	DE,HL
	LD	BC,127
	JR	?0129
; 191.	    }
; 192.	    else
?0094:
; 193.	    {
; 194.	        k=(FMStatus.freq-0x28e0)/105;
	LD	BC,55072
	ADD	HL,BC
	EX	DE,HL
	LD	BC,105
?0129:
	CALL	LWRD ?US_DIV_L02
	PUSH	DE
	POP	IY
?0095:
; 195.	    }
; 196.	    //SetTextPos((128-6*6)/2,24);
; 197.	    //PutS(Freqtab,-1);                        //显示电台频率
; 198.	   if(Updateflag==0)
	LD	A,(Updateflag)
	OR	A
	JR	NZ,?0097
?0096:
; 199.	   {
; 200.	       //ResShowPic(FMHEAD,0,108);       
; 201.	       if(FMStatus.mode==0)
	LD	A,(FMStatus+5)
	OR	A
	LD	C,B
	PUSH	BC
	JR	NZ,?0099
?0098:
; 202.	       {
; 203.	           ResShowPic(FMUSBCK,0,0);
	LD	DE,71
	JR	?0130
; 204.	
; 205.	       }
; 206.	       else
?0099:
; 207.	       {
; 208.	           ResShowPic(FMJPBCK,0,0);
	LD	DE,56
?0130:
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
?0100:
; 209.	       }
; 210.	       ResShowPic(FMVOL,3,160);
	LD	C,160
	PUSH	BC
	LD	C,3
	LD	DE,72
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
; 211.	       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
?0097:
; 212.	    }//if(upflag)
; 213.	
; 214.	//    UpdateScreen(NULL);    
; 215.	    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
; 216.	    if((FMStatus.station_count>0)&&(FMStatus.station>0))        //显示电台号
	LD	A,(FMStatus+4)
	OR	A
	JR	Z,?0102
	LD	A,(FMStatus+3)
	OR	A
	JR	Z,?0102
?0104:
?0103:
?0101:
; 217.	    {
; 218.	         ShowStationCount(FMStatus.station);
	LD	E,A
	LD	D,0
	LD	A,BYTE3 ShowStationCount
	LD	HL,LWRD ShowStationCount
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 219.	    }
; 220.	    else
	JR	?0105
?0102:
; 221.	        ResShowPic(FMCHBG,95,8);
	LD	C,8
	PUSH	BC
	LD	C,95
	LD	DE,53
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
?0105:
; 222.	    
; 223.	    ResShowPic(FMNUMBG,90,100);
	LD	C,100
	PUSH	BC
	LD	C,90
	LD	DE,68
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
; 224.	    if(FMStatus.mode==0)
	LD	A,(FMStatus+5)
	OR	A
	LD	C,47
	PUSH	BC
	JR	NZ,?0107
?0106:
; 225.	    {
; 226.	        ResShowPic(FMBARBG,0,47);
	LD	C,A
	LD	DE,51
	JR	?0131
; 227.	    }
; 228.	    else
?0107:
; 229.	    {
; 230.	        ResShowPic(FMJPBAR,0,47);
	LD	C,0
	LD	DE,55
?0131:
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
?0108:
; 231.	    }
; 232.	        
; 233.	    if(FMStatus.stereo_status==0)
	LD	A,(FMStatus+7)
	OR	A
	JR	NZ,?0110
?0109:
; 234.	    {
; 235.	        ResShowPic(FMSTEREO,104,162);        //显示立体声
	LD	C,162
	PUSH	BC
	LD	C,104
	LD	DE,70
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
?0110:
; 236.	    }
; 237.	       
; 238.	    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
; 239.	    
; 240.	    if(FMStatus.mode==0)
	LD	A,(FMStatus+5)
	OR	A
	LD	C,53
	PUSH	BC
	PUSH	IY
	POP	HL
	LD	A,L
	JR	NZ,?0112
?0111:
; 241.	    {
; 242.	        ResShowPic(SLIDPTR,25+k,53);            //显示箭头
	ADD	A,25
	JR	?0132
; 243.	    }
; 244.	    else
?0112:
; 245.	    {
; 246.	        ResShowPic(SLIDPTR,40+k,53);            //显示箭头
	ADD	A,40
?0132:
	LD	C,A
	LD	DE,220
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
?0113:
; 247.	    }
; 248.	    Updateflag=0;
	XOR	A
	LD	(Updateflag),A
; 249.	    output8(0x4e,input8(0x4e)|0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 250.	}
	LD	SP,IX
	POP	IX
	POP	IY
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
; 251.	
; 252.	
; 253.	
; 254.	
; 255.	
	RSEG	CSTR
?0092:
	DEFB	':'
	DEFB	0
	END

⌨️ 快捷键说明

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