main.lst
来自「MP3 整个 SDK」· LST 代码 · 共 1,352 行 · 第 1/5 页
LST
1,352 行
156 FMStatusJP.stereo_status=1;
\ 023C 3E01 LD A,1
\ 023E 329B00 LD (FMStatusJP+7),A
157 memcpy(&FMStatus,&FMStatusUS,sizeof(FMStatus));
\ 0241 0E08 LD C,8
\ 0243 118400 LD DE,FMStatus
\ 0246 218C00 LD HL,FMStatusUS
\ 0249 EDB0 LDIR
\ 024B ?0028:
\ 024B ?0034:
158 }
159
160 //clear the message pool 清除“初始化...”过程中按下的键!
161 while(ap_get_message() != AP_KEY_NULL){;}
\ 024B CD0000 CALL LWRD ap_get_message
\ 024E B7 OR A
\ 024F 20FA JR NZ,?0028
\ 0251 ?0035:
162
163 while(1)
\ 0251 ?0033:
\ 0251 ?0037:
164 {
165 if(BandSwitch) //初始化
\ 0251 AF XOR A
\ 0252 DDB6FD OR (IX-3)
\ 0255 CAE402 JP Z,?0040
\ 0258 ?0039:
166 {
167 //initial
168 if(FMStatus.mode==0)radio_param.param1=FMStationTab;
\ 0258 3A8900 LD A,(FMStatus+5)
\ 025B B7 OR A
\ 025C 2007 JR NZ,?0042
\ 025E ?0041:
\ 025E 213400 LD HL,FMStationTab
\ 0261 1805 JR ?0129
169 else
\ 0263 1806 JR ?0043
\ 0265 ?0042:
170 radio_param.param1=&FMStationTab[20];
\ 0265 215C00 LD HL,FMStationTab+40
\ 0268 ?0129:
\ 0268 220200 LD (radio_param),HL
\ 026B ?0043:
171 (fm_play_status_t *)radio_param.param2=&FMStatus;
\ 026B 218400 LD HL,FMStatus
\ 026E 220400 LD (radio_param+2),HL
172
173 if(!fmSendCommand(MC_OPEN,SearchLevel)) //硬件错误提示
\ 0271 010500 LD BC,5
\ 0274 1E01 LD E,1
\ 0276 CD1000 CALL LWRD ?0169
\ 0279 2C INC L
\ 027A 2D DEC L
\ 027B 2036 JR NZ,?0045
\ 027D ?0044:
174 {
175 ClearScreen(NULL);
\ 027D 5D LD E,L
\ 027E 55 LD D,L
\ 027F CD0000 CALL LWRD ClearScreen
176 ResShowMultiString(FMERROR,F_comval.langid,-1,8);
\ 0282 0E08 LD C,8
\ 0284 C5 PUSH BC
\ 0285 0EFF LD C,255
\ 0287 C5 PUSH BC
\ 0288 ED4B1F00 LD BC,(g_comval+12)
\ 028C 118F01 LD DE,399
\ 028F 3E00 LD A,BYTE3 ResShowMultiString
\ 0291 210000 LD HL,LWRD ResShowMultiString
\ 0294 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0297 F1 POP AF
\ 0298 F1 POP AF
177 //UpdateScreen(NULL);
178 strcpy(fmdataflag," ");
\ 0299 110900 LD DE,?0046
\ 029C 219C00 LD HL,fmdataflag
\ 029F CD0000 CALL LWRD ?STRCPY_L11
179 ap_sleep(3);
\ 02A2 110300 LD DE,3
\ 02A5 3E00 LD A,BYTE3 ap_sleep
\ 02A7 210000 LD HL,LWRD ap_sleep
\ 02AA CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
180 return RESULT_MAIN;
\ 02AD 210A00 LD HL,10
181 }
\ 02B0 C30C06 JP LWRD ?0121
\ 02B3 ?0045:
182 fmSendCommand(MC_MUTE,SetMUTE);
\ 02B3 010100 LD BC,1
\ 02B6 CD0E00 CALL LWRD ?0170
183 fmSendCommand(MC_RESTORE,(int)&radio_param);
\ 02B9 010200 LD BC,radio_param
\ 02BC 1E45 LD E,69
\ 02BE CD1000 CALL LWRD ?0169
184 fmSendCommand(MC_PLAY,0);
\ 02C1 010000 LD BC,0
\ 02C4 1E04 LD E,4
\ 02C6 CD1000 CALL LWRD ?0169
185 fmSendCommand(MC_SETVOLUME,FMStatus.volume);
\ 02C9 ED4B8A00 LD BC,(FMStatus+6)
\ 02CD 0600 LD B,0
\ 02CF 1E40 LD E,64
\ 02D1 CD1000 CALL LWRD ?0169
186
187 fmSendCommand(MC_GETSTATUS,(int)&FMStatus);
\ 02D4 018400 LD BC,FMStatus
\ 02D7 1E83 LD E,131
\ 02D9 CD1000 CALL LWRD ?0169
188 BandSwitch=FALSE;
189 FirstWait=TRUE;
\ 02DC DD36FD00 LD (IX-3),0
\ 02E0 DD36FE01 LD (IX-2),1
\ 02E4 ?0040:
190 }
191
192 if(need_draw) //屏幕重画
\ 02E4 AF XOR A
\ 02E5 DDB6FC OR (IX-4)
\ 02E8 280C JR Z,?0048
\ 02EA ?0047:
193 {
194 ShowFreqInFM();
\ 02EA 3E00 LD A,BYTE3 ShowFreqInFM
\ 02EC 210000 LD HL,LWRD ShowFreqInFM
\ 02EF CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
195 need_draw=FALSE;
\ 02F2 DD36FC00 LD (IX-4),0
\ 02F6 ?0048:
196 }
197 if(FirstWait) //初次进入AP等待1.5S释放MUTE(静音)
\ 02F6 AF XOR A
\ 02F7 DDB6FE OR (IX-2)
\ 02FA 2815 JR Z,?0050
\ 02FC ?0049:
198 {
199 FirstWait=FALSE;
200 ap_sleep(3);
\ 02FC 110300 LD DE,3
\ 02FF 3E00 LD A,BYTE3 ap_sleep
\ 0301 210000 LD HL,LWRD ap_sleep
\ 0304 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
201 // if(FMStatus.volume)
202 fmSendCommand(MC_MUTE,releaseMUTE);
\ 0307 010000 LD BC,0
\ 030A CD0E00 CALL LWRD ?0170
\ 030D DD36FE00 LD (IX-2),0
\ 0311 ?0050:
203 }
204 key=ap_get_message();
\ 0311 CD0000 CALL LWRD ap_get_message
\ 0314 4F LD C,A
\ 0315 59 LD E,C
\ 0316 0600 LD B,0
205 switch(key)
\ 0318 50 LD D,B
\ 0319 CD0000 CALL LWRD ?S_V_SWITCH_L06
\ 031C 0C00 DEFW 12
\ 031E 0300 DEFW 3
\ 0320 0400 DEFW 4
\ 0322 1C00 DEFW 28
\ 0324 1D00 DEFW 29
\ 0326 2100 DEFW 33
\ 0328 2500 DEFW 37
\ 032A 2600 DEFW 38
\ 032C 3000 DEFW 48
\ 032E 4300 DEFW 67
\ 0330 4400 DEFW 68
\ 0332 4500 DEFW 69
\ 0334 4600 DEFW 70
\ 0336 DA05 DEFW ?0109
\ 0338 6A03 DEFW ?0054
\ 033A 8403 DEFW ?0055
\ 033C 6605 DEFW ?0097
\ 033E 9D05 DEFW ?0103
\ 0340 EA03 DEFW ?0058
\ 0342 A003 DEFW ?0056
\ 0344 C503 DEFW ?0057
\ 0346 4505 DEFW ?0096
\ 0348 5102 DEFW ?0033
\ 034A 5303 DEFW ?0053
\ 034C 6605 DEFW ?0097
\ 034E 9D05 DEFW ?0103
\ 0350 ?0052:
206 {
207 case AP_MSG_STANDBY:
208 //do nothing
209 break;
\ 0350 C35102 JP LWRD ?0033
\ 0353 ?0053:
210 case AP_MSG_RTC: //2HZ中断到来,屏幕重画,为了电池显示更新
211 ui_show_batt(GetBattery(),F_comval.BatteryType,1); //电池电量显示
\ 0353 0E01 LD C,1
\ 0355 C5 PUSH BC
\ 0356 ED4B2200 LD BC,(g_comval+15)
\ 035A CD0000 CALL LWRD GetBattery
\ 035D 5F LD E,A
\ 035E 3E00 LD A,BYTE3 ui_show_batt
\ 0360 210000 LD HL,LWRD ui_show_batt
\ 0363 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0366 E1 POP HL
212
213 break;
\ 0367 C35102 JP LWRD ?0033
\ 036A ?0054:
214 case AP_KEY_HOLD|AP_KEY_NEXT:
215 FMStatus.freq+=100;
\ 036A 218500 LD HL,FMStatus+1
\ 036D 7E LD A,(HL)
\ 036E C664 ADD A,100
\ 0370 77 LD (HL),A
\ 0371 3002 JR NC,?0128
\ 0373 23 INC HL
\ 0374 34 INC (HL)
\ 0375 ?0128:
216 result=SearchHandle(10);
\ 0375 1E0A LD E,10
\ 0377 1819 JR ?0133
\ 0379 210000 LD HL,LWRD SearchHandle
\ 037C 1819 JR ?0140
\ 037E E5 PUSH HL
\ 037F FDE1 POP IY
217 break;
\ 0381 C35102 JP LWRD ?0033
\ 0384 ?0055:
218 case AP_KEY_HOLD|AP_KEY_PREV:
219 FMStatus.freq-=100;
\ 0384 218500 LD HL,FMStatus+1
\ 0387 7E LD A,(HL)
\ 0388 C69C ADD A,156
\ 038A 77 LD (HL),A
\ 038B 23 INC HL
\ 038C 7E LD A,(HL)
\ 038D CEFF ADC A,255
\ 038F 77 LD (HL),A
220 result=SearchHandle(20);
\ 0390 1E14 LD E,20
\ 0392 ?0133:
\ 0392 3E00 LD A,BYTE3 SearchHandle
\ 0394 210000 LD HL,LWRD SearchHandle
\ 0397 ?0140:
\ 0397 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 039A E5 PUSH HL
\ 039B FDE1 POP IY
221 break;
\ 039D C35102 JP LWRD ?0033
\ 03A0 ?0056:
222 case AP_KEY_NEXT|AP_KEY_UP:
223 fmSendCommand(MC_STEPGRID,UP);
\ 03A0 0E01 LD C,1
\ 03A2 1822 JR ?0134
\ 03A4 3E00 LD A,BYTE3 fmSendCommand
\ 03A6 C34B05 JP LWRD ?0135
\ 03A9 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
224 fmSendCommand(MC_GETSTATUS,(int)&FMStatus);
\ 03AC C34E05 JP LWRD ?0154
\ 03AF 1E83 LD E,131
\ 03B1 C35305 JP LWRD ?0143
\ 03B4 210000 LD HL,LWRD fmSendCommand
\ 03B7 C35805 JP LWRD ?0159
225 Updateflag=1;
\ 03BA 3E01 LD A,1
\ 03BC C35D05 JP LWRD ?0156
226 need_draw=TRUE;
\ 03BF C3E405 JP LWRD ?0136
227 break;
\ 03C2 C35102 JP LWRD ?0033
\ 03C5 ?0057:
228 case AP_KEY_PREV|AP_KEY_UP:
229 fmSendCommand(MC_STEPGRID,DOWN);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?