📄 basal_fmradio.lst
字号:
\ 0311 ?0091:
217 {
218 m_FMPlaystatus.station=k;
\ 0311 DD7EF8 LD A,(IX-8)
\ 0314 322B00 LD (m_FMPlaystatus+3),A
219 break;
\ 0317 1804 JR ?0085
\ 0319 ?0092:
\ 0319 ?0090:
\ 0319 FD23 INC IY
\ 031B 18B2 JR ?0086
\ 031D ?0085:
220 }
221 }
222 }
223 memcpy((fm_play_status_t *) param, &m_FMPlaystatus, sizeof(fm_play_status_t));
\ 031D 010900 LD BC,9
\ 0320 DD5EFE LD E,(IX-2)
\ 0323 DD56FF LD D,(IX-1)
\ 0326 ?0132:
\ 0326 212800 LD HL,m_FMPlaystatus
\ 0329 180C JR ?0121
224 break;
\ 032B ?0093:
225 case MC_GETTABLE:
226 memcpy((WORD *) param, &m_FMStationTab[0], 20);
\ 032B 011400 LD BC,20
\ 032E DD5EFE LD E,(IX-2)
\ 0331 DD56FF LD D,(IX-1)
\ 0334 210000 LD HL,m_FMStationTab
\ 0337 ?0121:
\ 0337 EDB0 LDIR
227 break;
\ 0339 C30104 JP LWRD ?0000
\ 033C ?0094:
228 case MC_DELONE:
229 if (m_FMPlaystatus.station == 0)
\ 033C 3A2B00 LD A,(m_FMPlaystatus+3)
\ 033F B7 OR A
\ 0340 2005 JR NZ,?0096
\ 0342 ?0095:
230 return FALSE;
\ 0342 ?0128:
\ 0342 2E00 LD L,0
\ 0344 C30304 JP LWRD ?0114
\ 0347 ?0096:
231 //m_FMStationTab[m_FMPlaystatus.station-1]=0;
232 for (k = m_FMPlaystatus.station; k < m_FMPlaystatus.station_count + 1; k++)
\ 0347 DD77F8 LD (IX-8),A
\ 034A ?0098:
\ 034A ED4B2C00 LD BC,(m_FMPlaystatus+4)
\ 034E 0600 LD B,0
\ 0350 03 INC BC
\ 0351 DD6EF8 LD L,(IX-8)
\ 0354 2600 LD H,0
\ 0356 F680 OR 128
\ 0358 ED42 SBC HL,BC
\ 035A E25E03 JP PO,?0115
\ 035D AC XOR H
\ 035E ?0115:
\ 035E F28203 JP P,?0097
\ 0361 ?0099:
233 {
234 m_FMStationTab[k - 1] = m_FMStationTab[k];
\ 0361 DD6EF8 LD L,(IX-8)
\ 0364 2600 LD H,0
\ 0366 29 ADD HL,HL
\ 0367 01FEFF LD BC,m_FMStationTab-2
\ 036A 09 ADD HL,BC
\ 036B E5 PUSH HL
\ 036C DD6EF8 LD L,(IX-8)
\ 036F 2600 LD H,0
\ 0371 29 ADD HL,HL
\ 0372 010000 LD BC,m_FMStationTab
\ 0375 09 ADD HL,BC
\ 0376 4E LD C,(HL)
\ 0377 23 INC HL
\ 0378 46 LD B,(HL)
\ 0379 E1 POP HL
\ 037A 71 LD (HL),C
\ 037B 23 INC HL
\ 037C 70 LD (HL),B
\ 037D DD34F8 INC (IX-8)
\ 0380 18C8 JR ?0098
\ 0382 ?0097:
235 }
236 m_FMStationTab[m_FMPlaystatus.station_count - 1] = 0;
\ 0382 2A2C00 LD HL,(m_FMPlaystatus+4)
\ 0385 2600 LD H,0
\ 0387 29 ADD HL,HL
\ 0388 01FEFF LD BC,m_FMStationTab-2
\ 038B 09 ADD HL,BC
\ 038C AF XOR A
\ 038D 77 LD (HL),A
\ 038E 23 INC HL
\ 038F 77 LD (HL),A
237 m_FMPlaystatus.station_count--;
\ 0390 212C00 LD HL,m_FMPlaystatus+4
\ 0393 35 DEC (HL)
238 m_FMPlaystatus.station = 0;
\ 0394 ?0136:
\ 0394 322B00 LD (m_FMPlaystatus+3),A
239 return TRUE;
\ 0397 1868 JR ?0000
240 case MC_DELALL:
\ 0399 ?0101:
241 for (i = 0; i < 20; i++)
\ 0399 FD210000 LD IY,0
\ 039D ?0103:
\ 039D 011480 LD BC,32788
\ 03A0 FDE5 PUSH IY
\ 03A2 E1 POP HL
\ 03A3 78 LD A,B
\ 03A4 AC XOR H
\ 03A5 67 LD H,A
\ 03A6 ED42 SBC HL,BC
\ 03A8 3010 JR NC,?0102
\ 03AA ?0104:
242 {
243 m_FMStationTab[i] = 0;
\ 03AA FDE5 PUSH IY
\ 03AC E1 POP HL
\ 03AD 29 ADD HL,HL
\ 03AE 010000 LD BC,m_FMStationTab
\ 03B1 09 ADD HL,BC
\ 03B2 AF XOR A
\ 03B3 77 LD (HL),A
\ 03B4 23 INC HL
\ 03B5 77 LD (HL),A
\ 03B6 FD23 INC IY
\ 03B8 18E3 JR ?0103
\ 03BA ?0102:
244 }
245 m_FMPlaystatus.station = 0;
\ 03BA AF XOR A
\ 03BB 322B00 LD (m_FMPlaystatus+3),A
246 m_FMPlaystatus.station_count = 0;
\ 03BE 322C00 LD (m_FMPlaystatus+4),A
247 break;
\ 03C1 183E JR ?0000
\ 03C3 ?0106:
248 case MC_MUTE: //静音
249 BankSwitch(address_24_of(FM_MUTE) >> 16);
\ 03C3 210000 LD HL,FM_MUTE
\ 03C6 0E00 LD C,BYTE3 FM_MUTE
\ 03C8 CD2504 CALL LWRD ?0141
\ 03CB ?0108:
250 while (!(k = FM_MUTE(param)))
\ 03CB DD5EFE LD E,(IX-2)
\ 03CE CD0000 CALL LWRD FM_MUTE
\ 03D1 B7 OR A
\ 03D2 202D JR NZ,?0000
\ 03D4 ?0109:
251 {
252 output8(0x4e, input8(0x4e) | 0x8);
\ 03D4 DB4E IN A,(78)
\ 03D6 CBDF SET 3,A
\ 03D8 D34E OUT (78),A
253 FM_GetStatus(&d_FMStatus);
\ 03DA 113100 LD DE,d_FMStatus
\ 03DD CD0000 CALL LWRD FM_GetStatus
254 }
255
256 break;
\ 03E0 18E9 JR ?0108
\ 03E2 ?0107:
\ 03E2 ?0110:
257 case MC_CLOSE:
258 BankSwitch(address_24_of(FM_Standby) >> 16);
\ 03E2 210000 LD HL,FM_Standby
\ 03E5 0E00 LD C,BYTE3 FM_Standby
\ 03E7 CD2504 CALL LWRD ?0141
259 FM_Exit(); //防止退出FM菜单,POP声
\ 03EA CD0000 CALL LWRD FM_Exit
260 FM_Standby();
\ 03ED CD0000 CALL LWRD FM_Standby
261 // FM_Exit();
262 break;
\ 03F0 180F JR ?0000
\ 03F2 ?0111:
263 case MC_GETFREQ:
264 *(uint *) param = m_FMPlaystatus.freq;
\ 03F2 69 LD L,C
\ 03F3 60 LD H,B
\ 03F4 ?0138:
\ 03F4 ED4B2900 LD BC,(m_FMPlaystatus+1)
\ 03F8 71 LD (HL),C
\ 03F9 23 INC HL
\ 03FA 70 LD (HL),B
265 break;
\ 03FB 1804 JR ?0000
\ 03FD ?0112:
266 case MC_SETFREQ:
267 m_FMPlaystatus.freq = param;
\ 03FD ED432900 LD (m_FMPlaystatus+1),BC
268 break;
\ 0401 ?0113:
269 default:
270 break;
\ 0401 ?0000:
271 }
272
273 return TRUE;
\ 0401 2E01 LD L,1
274 }
\ 0403 ?0114:
\ 0403 DDF9 LD SP,IX
\ 0405 DDE1 POP IX
\ 0407 FDE1 POP IY
\ 0409 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 040C ?0140:
\ 040C 0600 LD B,0
\ 040E 3E10 LD A,16
\ 0410 CD0000 CALL LWRD ?SL_RSH_L03
\ 0413 5D LD E,L
\ 0414 CD0000 CALL LWRD BankSwitch
\ 0417 2A2900 LD HL,(m_FMPlaystatus+1)
\ 041A 29 ADD HL,HL
\ 041B 29 ADD HL,HL
\ 041C 29 ADD HL,HL
\ 041D 29 ADD HL,HL
\ 041E 29 ADD HL,HL
\ 041F 29 ADD HL,HL
\ 0420 011000 LD BC,16
\ 0423 09 ADD HL,BC
\ 0424 C9 RET
\ 0425 ?0141:
\ 0425 0600 LD B,0
\ 0427 3E10 LD A,16
\ 0429 CD0000 CALL LWRD ?SL_RSH_L03
\ 042C 5D LD E,L
\ 042D CD0000 CALL LWRD BankSwitch
\ 0430 C9 RET
275
\ 0000 RSEG RCODE
\ 0000 m_FMStationTab:
\ 0028 DEFS 40
\ 0028 m_FMPlaystatus:
\ 0031 DEFS 9
\ 0031 d_FMStatus:
\ 0034 DEFS 3
\ 0034 disable_hosc:
\ 0035 DEFS 1
\ 0035 END
Errors: none
Warnings: none
Code size: 1073
Constant size: 0
Static variable size: Data(53) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -