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 + -
显示快捷键?