📄 autosearchhandle.s01
字号:
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 + -