📄 main.lst
字号:
\ 01E4 3EFF LD A,255
\ 01E6 DDAEFE XOR (IX-2)
\ 01E9 DDB6FF OR (IX-1)
\ 01EC 2003 JR NZ,?0033
\ 01EE ?0032:
191 need_draw = FALSE;
\ 01EE DD70F2 LD (IX-14),B
\ 01F1 ?0033:
192 //result=0;
193 if (memcmp(fmdataflag, buf, 2) != 0)
\ 01F1 010200 LD BC,2
\ 01F4 11A800 LD DE,fmdataflag
\ 01F7 210600 LD HL,6
\ 01FA 39 ADD HL,SP
\ 01FB CD0000 CALL LWRD ?MEMCMP_L11
\ 01FE 7D LD A,L
\ 01FF B4 OR H
\ 0200 CAA902 JP Z,?0035
\ 0203 ?0034:
194 {
195 for (k = 0; k < 40; k++)
\ 0203 AF XOR A
\ 0204 DD77F6 LD (IX-10),A
\ 0207 DD77F7 LD (IX-9),A
\ 020A ?0037:
\ 020A 012880 LD BC,32808
\ 020D DD6EF6 LD L,(IX-10)
\ 0210 DD66F7 LD H,(IX-9)
\ 0213 78 LD A,B
\ 0214 AC XOR H
\ 0215 67 LD H,A
\ 0216 ED42 SBC HL,BC
\ 0218 3019 JR NC,?0036
\ 021A ?0038:
196 {
197 FMStationTab[k] = 0;
\ 021A DD6EF6 LD L,(IX-10)
\ 021D DD66F7 LD H,(IX-9)
\ 0220 29 ADD HL,HL
\ 0221 013D00 LD BC,FMStationTab
\ 0224 09 ADD HL,BC
\ 0225 AF XOR A
\ 0226 77 LD (HL),A
\ 0227 23 INC HL
\ 0228 77 LD (HL),A
\ 0229 DD34F6 INC (IX-10)
\ 022C 20DC JR NZ,?0037
\ 022E DD34F7 INC (IX-9)
\ 0231 18D7 JR ?0037
\ 0233 ?0036:
198 }
199 memcpy(fmdataflag, buf, 3); //FM BUFFER标志赋初值
\ 0233 010300 LD BC,3
\ 0236 11A800 LD DE,fmdataflag
\ 0239 210600 LD HL,6
\ 023C 39 ADD HL,SP
\ 023D EDB0 LDIR
200 //US和JP暂存区赋初值
201 FMStatusUS.freq=5; //if USBand Freq(x) = (x-87)*10;for example: f(101.2)=(101.2-87)*10=142
\ 023F 210500 LD HL,5
\ 0242 229700 LD (FMStatusUS+1),HL
202 FMStatusUS.mode = 0;
\ 0245 AF XOR A
\ 0246 329B00 LD (FMStatusUS+5),A
203 FMStatusUS.volume = 24;
\ 0249 3E18 LD A,24
\ 024B 329C00 LD (FMStatusUS+6),A
204 FMStatusUS.vol_display = (FMStatusUS.volume * g_comval.VolumeMax) / 31;
\ 024E ED4B3C00 LD BC,(g_comval+31)
\ 0252 44 LD B,H
\ 0253 50 LD D,B
\ 0254 5F LD E,A
\ 0255 CD0000 CALL LWRD ?S_MUL_L02
\ 0258 0E1F LD C,31
\ 025A CD0000 CALL LWRD ?SS_DIV_L02
\ 025D 7B LD A,E
\ 025E 329E00 LD (FMStatusUS+8),A
205 FMStatusUS.station = 0;
\ 0261 AF XOR A
\ 0262 329900 LD (FMStatusUS+3),A
206 FMStatusUS.station_count = 0;
\ 0265 329A00 LD (FMStatusUS+4),A
207 FMStatusUS.stereo_status = 1;
\ 0268 3E01 LD A,1
\ 026A 329D00 LD (FMStatusUS+7),A
208 FMStatusJP.freq=1;
\ 026D 6F LD L,A
\ 026E 22A000 LD (FMStatusJP+1),HL
209 FMStatusJP.mode = 1;
\ 0271 32A400 LD (FMStatusJP+5),A
210 FMStatusJP.volume = 24;
\ 0274 3E18 LD A,24
\ 0276 32A500 LD (FMStatusJP+6),A
211 FMStatusJP.vol_display = (FMStatusJP.volume * g_comval.VolumeMax) / 31;
\ 0279 ED4B3C00 LD BC,(g_comval+31)
\ 027D 44 LD B,H
\ 027E 50 LD D,B
\ 027F 5F LD E,A
\ 0280 CD0000 CALL LWRD ?S_MUL_L02
\ 0283 0E1F LD C,31
\ 0285 CD0000 CALL LWRD ?SS_DIV_L02
\ 0288 7B LD A,E
\ 0289 32A700 LD (FMStatusJP+8),A
212 FMStatusJP.station = 0;
\ 028C AF XOR A
\ 028D 32A200 LD (FMStatusJP+3),A
213 FMStatusJP.station_count = 0;
\ 0290 32A300 LD (FMStatusJP+4),A
214 FMStatusJP.stereo_status = 1;
\ 0293 7D LD A,L
\ 0294 32A600 LD (FMStatusJP+7),A
215 memcpy(&FMStatus, &FMStatusUS, sizeof(FMStatus));
\ 0297 0E09 LD C,9
\ 0299 118D00 LD DE,FMStatus
\ 029C 219600 LD HL,FMStatusUS
\ 029F EDB0 LDIR
216 output8(0x99, input8(0x99) & 0xC0 | 0x18);
\ 02A1 DB99 IN A,(153)
\ 02A3 E6C0 AND 192
\ 02A5 F618 OR 24
\ 02A7 D399 OUT (153),A
\ 02A9 ?0035:
\ 02A9 ?0041:
217 }
218
219 //clear the message pool 清除“初始化...”过程中按下的键!
220 while (ap_get_message() != AP_KEY_NULL)
\ 02A9 CD0000 CALL LWRD ap_get_message
\ 02AC B7 OR A
\ 02AD 20FA JR NZ,?0035
\ 02AF ?0042:
221 {
222 ;
223 }
224
225 while (1)
\ 02AF ?0040:
\ 02AF ?0044:
226 {
227 if (BandSwitch) //初始化
\ 02AF AF XOR A
\ 02B0 DDB6F3 OR (IX-13)
\ 02B3 287E JR Z,?0047
\ 02B5 ?0046:
228 {
229 //initial
230 if (FMStatus.mode == 0)
\ 02B5 3A9200 LD A,(FMStatus+5)
\ 02B8 B7 OR A
\ 02B9 2007 JR NZ,?0049
\ 02BB ?0048:
231 radio_param.param1 = FMStationTab;
\ 02BB 213D00 LD HL,FMStationTab
\ 02BE 1805 JR ?0137
232 else
\ 02C0 1806 JR ?0050
\ 02C2 ?0049:
233 radio_param.param1 = &FMStationTab[20];
\ 02C2 216500 LD HL,FMStationTab+40
\ 02C5 ?0137:
\ 02C5 220200 LD (radio_param),HL
\ 02C8 ?0050:
234 (fm_play_status_t *) radio_param.param2 = &FMStatus;
\ 02C8 218D00 LD HL,FMStatus
\ 02CB 220400 LD (radio_param+2),HL
235
236 fmSendCommand(MC_RESTORE,(int)&radio_param);
\ 02CE 010200 LD BC,radio_param
\ 02D1 1E45 LD E,69
\ 02D3 CD4A00 CALL LWRD ?0167
237 fmSendCommand(MC_SETVOLUME, 0); //reagan vol =0 for mute pa
\ 02D6 010000 LD BC,0
\ 02D9 1E40 LD E,64
\ 02DB CD4A00 CALL LWRD ?0167
238 if(!fmSendCommand(MC_OPEN,SearchLevel)) //硬件错误提示
\ 02DE 010300 LD BC,3
\ 02E1 1E01 LD E,1
\ 02E3 CD4A00 CALL LWRD ?0167
\ 02E6 2C INC L
\ 02E7 2D DEC L
\ 02E8 2036 JR NZ,?0052
\ 02EA ?0051:
239 {
240
241 ClearScreen(NULL);
\ 02EA 5D LD E,L
\ 02EB 55 LD D,L
\ 02EC CD0000 CALL LWRD ClearScreen
242 ResShowMultiString(FMERROR, F_comval.langid, -1, 8);
\ 02EF 0E08 LD C,8
\ 02F1 C5 PUSH BC
\ 02F2 0EFF LD C,255
\ 02F4 C5 PUSH BC
\ 02F5 ED4B2900 LD BC,(g_comval+12)
\ 02F9 119302 LD DE,659
\ 02FC 3E00 LD A,BYTE3 ResShowMultiString
\ 02FE 210000 LD HL,LWRD ResShowMultiString
\ 0301 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0304 F1 POP AF
\ 0305 F1 POP AF
243 //UpdateScreen(NULL);
244
245
246 strcpy(fmdataflag, " ");
\ 0306 110900 LD DE,?0053
\ 0309 21A800 LD HL,fmdataflag
\ 030C CD0000 CALL LWRD ?STRCPY_L11
247 ap_sleep(3);
\ 030F 110300 LD DE,3
\ 0312 3E00 LD A,BYTE3 ap_sleep
\ 0314 210000 LD HL,LWRD ap_sleep
\ 0317 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
248 return RESULT_MAIN;
\ 031A 211900 LD HL,25
249 }
\ 031D C3D806 JP LWRD ?0129
\ 0320 ?0052:
250
251
252 fmSendCommand(MC_PLAY, 0);
\ 0320 010000 LD BC,0
\ 0323 1E04 LD E,4
\ 0325 CD4A00 CALL LWRD ?0167
253
254 fmSendCommand(MC_MUTE, SetMUTE);
\ 0328 CD4500 CALL LWRD ?0169
255
256 //fmSendCommand(MC_SETVOLUME, FMStatus.volume);
257
258 //fmSendCommand(MC_GETSTATUS, (int) &FMStatus);
259
260 BandSwitch = FALSE;
261 FirstWait = TRUE;
\ 032B DD36F300 LD (IX-13),0
\ 032F DD36FC01 LD (IX-4),1
\ 0333 ?0047:
262 }
263
264 if (need_draw) //屏幕重画
\ 0333 AF XOR A
\ 0334 DDB6F2 OR (IX-14)
\ 0337 280C JR Z,?0055
\ 0339 ?0054:
265 {
266 ShowFreqInFM();
\ 0339 3E00 LD A,BYTE3 ShowFreqInFM
\ 033B 210000 LD HL,LWRD ShowFreqInFM
\ 033E CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
267 need_draw = FALSE;
\ 0341 DD36F200 LD (IX-14),0
\ 0345 ?0055:
268 }
269 if (FirstWait) //初次进入AP等待1.5S释放MUTE(静音)
\ 0345 AF XOR A
\ 0346 DDB6FC OR (IX-4)
\ 0349 282E JR Z,?0059
\ 034B ?0056:
270 {
271 FirstWait = FALSE;
272 ap_sleep(3);
\ 034B 110300 LD DE,3
\ 034E 3E00 LD A,BYTE3 ap_sleep
\ 0350 210000 LD HL,LWRD ap_sleep
\ 0353 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
273 //降噪 等FM稳定后打开PA的音量
274 fmSendCommand(MC_SETVOLUME, FMStatus.volume);
\ 0356 ED4B9300 LD BC,(FMStatus+6)
\ 035A 0600 LD B,0
\ 035C 1E40 LD E,64
\ 035E CD4A00 CALL LWRD ?0167
275 fmSendCommand(MC_GETSTATUS, (int) &FMStatus);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -