📄 basal_fmradio.lst
字号:
\ 01C4 DD36F800 LD (IX-8),0
\ 01C8 FD210000 LD IY,0
\ 01CC ?0064:
\ 01CC 011480 LD BC,32788
\ 01CF FDE5 PUSH IY
\ 01D1 E1 POP HL
\ 01D2 78 LD A,B
\ 01D3 AC XOR H
\ 01D4 67 LD H,A
\ 01D5 ED42 SBC HL,BC
\ 01D7 D20104 JP NC,?0000
\ 01DA ?0065:
158 {
159 if (m_FMStationTab[i] != 0)
\ 01DA FDE5 PUSH IY
\ 01DC E1 POP HL
\ 01DD 29 ADD HL,HL
\ 01DE 010000 LD BC,m_FMStationTab
\ 01E1 09 ADD HL,BC
\ 01E2 7E LD A,(HL)
\ 01E3 23 INC HL
\ 01E4 B6 OR (HL)
\ 01E5 2803 JR Z,?0068
\ 01E7 ?0067:
160 k++;
\ 01E7 DD34F8 INC (IX-8)
\ 01EA ?0068:
161 if (k == m_FMPlaystatus.station)
\ 01EA 3A2B00 LD A,(m_FMPlaystatus+3)
\ 01ED 47 LD B,A
\ 01EE DD7EF8 LD A,(IX-8)
\ 01F1 B8 CP B
\ 01F2 200B JR NZ,?0070
\ 01F4 ?0069:
162 {
163 m_FMStationTab[i] = m_FMPlaystatus.freq;
\ 01F4 FDE5 PUSH IY
\ 01F6 E1 POP HL
\ 01F7 29 ADD HL,HL
\ 01F8 010000 LD BC,m_FMStationTab
\ 01FB 09 ADD HL,BC
\ 01FC C3F403 JP LWRD ?0138
164 break;
\ 01FF ?0070:
165 }
166 }
167 }
\ 01FF FD23 INC IY
\ 0201 18C9 JR ?0064
\ 0203 ?0063:
\ 0203 ?0062:
168 else if (m_FMPlaystatus.station_count > 19)
\ 0203 3A2C00 LD A,(m_FMPlaystatus+4)
\ 0206 47 LD B,A
\ 0207 3E13 LD A,19
\ 0209 B8 CP B
\ 020A DA4203 JP C,?0128
\ 020D ?0072:
169 return FALSE;
170 else //新的电台频率保存到电台表
\ 020D ?0073:
171 {
172 m_FMPlaystatus.station_count++;
\ 020D 212C00 LD HL,m_FMPlaystatus+4
\ 0210 34 INC (HL)
173 for (i = 0; i < 20; i++)
\ 0211 FD210000 LD IY,0
\ 0215 ?0075:
\ 0215 011480 LD BC,32788
\ 0218 FDE5 PUSH IY
\ 021A E1 POP HL
\ 021B 78 LD A,B
\ 021C AC XOR H
\ 021D 67 LD H,A
\ 021E ED42 SBC HL,BC
\ 0220 D20104 JP NC,?0000
\ 0223 ?0076:
174 {
175 if (m_FMStationTab[i] == 0)
\ 0223 FDE5 PUSH IY
\ 0225 E1 POP HL
\ 0226 29 ADD HL,HL
\ 0227 010000 LD BC,m_FMStationTab
\ 022A 09 ADD HL,BC
\ 022B 7E LD A,(HL)
\ 022C 23 INC HL
\ 022D B6 OR (HL)
\ 022E 2014 JR NZ,?0079
\ 0230 ?0078:
176 {
177 m_FMStationTab[i] = m_FMPlaystatus.freq;
\ 0230 FDE5 PUSH IY
\ 0232 E1 POP HL
\ 0233 29 ADD HL,HL
\ 0234 09 ADD HL,BC
\ 0235 ED4B2900 LD BC,(m_FMPlaystatus+1)
\ 0239 71 LD (HL),C
\ 023A 23 INC HL
\ 023B 70 LD (HL),B
178 m_FMPlaystatus.station = i + 1;
\ 023C FDE5 PUSH IY
\ 023E E1 POP HL
\ 023F 2C INC L
\ 0240 7D LD A,L
\ 0241 C39403 JP LWRD ?0136
179 break;
\ 0244 ?0079:
180 }
181 }
182 }
\ 0244 FD23 INC IY
\ 0246 18CD JR ?0075
\ 0248 ?0074:
\ 0248 ?0071:
183
184 return TRUE;
185 case MC_SETMODE:
\ 0248 ?0080:
186 m_FMPlaystatus.mode = (Station_bank_t) param;
\ 0248 79 LD A,C
\ 0249 322D00 LD (m_FMPlaystatus+5),A
187 break;
\ 024C C30104 JP LWRD ?0000
\ 024F ?0081:
188 case MC_SETVOLUME:
189 BankSwitch(address_24_of(FM_VolumeSet) >> 16);
\ 024F 210000 LD HL,FM_VolumeSet
\ 0252 0E00 LD C,BYTE3 FM_VolumeSet
\ 0254 CD2504 CALL LWRD ?0141
190 FM_VolumeSet((BYTE) param);
\ 0257 DD5EFE LD E,(IX-2)
\ 025A CD0000 CALL LWRD FM_VolumeSet
191 m_FMPlaystatus.volume = (BYTE) param;
\ 025D DD7EFE LD A,(IX-2)
\ 0260 322E00 LD (m_FMPlaystatus+6),A
192 break;
\ 0263 C30104 JP LWRD ?0000
\ 0266 ?0082:
193 case MC_BACKUP:
194 memcpy((void *) (*(WORD *) param), m_FMStationTab, 40);
\ 0266 012800 LD BC,40
\ 0269 DD6EFE LD L,(IX-2)
\ 026C DD66FF LD H,(IX-1)
\ 026F 5E LD E,(HL)
\ 0270 23 INC HL
\ 0271 56 LD D,(HL)
\ 0272 210000 LD HL,m_FMStationTab
\ 0275 EDB0 LDIR
195 memcpy((void *) (*(WORD *) (param + 2)), &m_FMPlaystatus, sizeof(fm_play_status_t));
\ 0277 0E09 LD C,9
\ 0279 DD6EFE LD L,(IX-2)
\ 027C DD66FF LD H,(IX-1)
\ 027F 23 INC HL
\ 0280 23 INC HL
\ 0281 5E LD E,(HL)
\ 0282 23 INC HL
\ 0283 56 LD D,(HL)
\ 0284 C32603 JP LWRD ?0132
196 break;
\ 0287 ?0083:
197
198 case MC_RESTORE:
199 memcpy(m_FMStationTab, (void *) (*(WORD *) param), 40);
\ 0287 012800 LD BC,40
\ 028A 110000 LD DE,m_FMStationTab
\ 028D DD6EFE LD L,(IX-2)
\ 0290 DD66FF LD H,(IX-1)
\ 0293 7E LD A,(HL)
\ 0294 23 INC HL
\ 0295 66 LD H,(HL)
\ 0296 6F LD L,A
\ 0297 EDB0 LDIR
200 memcpy(&m_FMPlaystatus, (void *) (*(WORD *) (param + 2)), sizeof(fm_play_status_t));
\ 0299 0E09 LD C,9
\ 029B 112800 LD DE,m_FMPlaystatus
\ 029E DD6EFE LD L,(IX-2)
\ 02A1 DD66FF LD H,(IX-1)
\ 02A4 23 INC HL
\ 02A5 23 INC HL
\ 02A6 7E LD A,(HL)
\ 02A7 23 INC HL
\ 02A8 66 LD H,(HL)
\ 02A9 6F LD L,A
\ 02AA C33703 JP LWRD ?0121
201 break;
\ 02AD ?0084:
202
203 case MC_GETSTATUS:
204 BankSwitch(address_24_of(FM_GetStatus) >> 16);
\ 02AD 210000 LD HL,FM_GetStatus
\ 02B0 0E00 LD C,BYTE3 FM_GetStatus
\ 02B2 CD2504 CALL LWRD ?0141
205 FM_GetStatus(&d_FMStatus);
\ 02B5 113100 LD DE,d_FMStatus
\ 02B8 CD0000 CALL LWRD FM_GetStatus
206 m_FMPlaystatus.freq=d_FMStatus.FM_CurrentFreq; //rda chenggangdeng
\ 02BB 2A3200 LD HL,(d_FMStatus+1)
\ 02BE 222900 LD (m_FMPlaystatus+1),HL
207 m_FMPlaystatus.stereo_status = d_FMStatus.FM_Stereo_Status;
\ 02C1 3A3100 LD A,(d_FMStatus)
\ 02C4 322F00 LD (m_FMPlaystatus+7),A
208 k=0;
209 //当前电台频率值和电台表中某一频率差距小于150KHZ,此电台和此电台表对应
210 for(i=0;i<20;i++)
\ 02C7 DD36F800 LD (IX-8),0
\ 02CB FD210000 LD IY,0
\ 02CF ?0086:
\ 02CF 011480 LD BC,32788
\ 02D2 FDE5 PUSH IY
\ 02D4 E1 POP HL
\ 02D5 78 LD A,B
\ 02D6 AC XOR H
\ 02D7 67 LD H,A
\ 02D8 ED42 SBC HL,BC
\ 02DA 3041 JR NC,?0085
\ 02DC ?0087:
211 {
212 m_FMPlaystatus.station=0;
\ 02DC AF XOR A
\ 02DD 322B00 LD (m_FMPlaystatus+3),A
213 if(m_FMStationTab[i]!=0)
\ 02E0 FDE5 PUSH IY
\ 02E2 E1 POP HL
\ 02E3 29 ADD HL,HL
\ 02E4 010000 LD BC,m_FMStationTab
\ 02E7 09 ADD HL,BC
\ 02E8 7E LD A,(HL)
\ 02E9 23 INC HL
\ 02EA B6 OR (HL)
\ 02EB 282C JR Z,?0092
\ 02ED ?0089:
214 {
215 k++;
\ 02ED DD34F8 INC (IX-8)
216 if(abs(m_FMPlaystatus.freq-m_FMStationTab[i])<1)
\ 02F0 FDE5 PUSH IY
\ 02F2 E1 POP HL
\ 02F3 29 ADD HL,HL
\ 02F4 09 ADD HL,BC
\ 02F5 4E LD C,(HL)
\ 02F6 23 INC HL
\ 02F7 46 LD B,(HL)
\ 02F8 2A2900 LD HL,(m_FMPlaystatus+1)
\ 02FB A7 AND A
\ 02FC ED42 SBC HL,BC
\ 02FE EB EX DE,HL
\ 02FF 3E00 LD A,BYTE3 abs
\ 0301 210000 LD HL,LWRD abs
\ 0304 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0307 010180 LD BC,32769
\ 030A 78 LD A,B
\ 030B AC XOR H
\ 030C 67 LD H,A
\ 030D ED42 SBC HL,BC
\ 030F 3008 JR NC,?0092
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -