📄 main.s01
字号:
LD (ui_auto_update),A
; 341. need_draw = TRUE;
LD (IX-14),A
; 342. //if(result==RESULT_IGNORE)result=0; //del by ccm
; 343. if (result == RESULT_IGNORE) //按PLAY键和8s超时返回FM收音界面,不执行当前激活的菜单!
LD A,48
XOR L
OR H
JR NZ,?0075
?0074:
; 344. {
; 345. result = 0;
LD IY,0
; 346. break;
JP LWRD ?0040
?0075:
; 347. }
; 348. if (result != 0)
LD A,L
OR H
JR Z,?0077
?0076:
; 349. return result;
JP LWRD ?0128
JP LWRD ?0129
?0077:
; 350. active = menu.active;
LD A,(menu+2)
LD (?0031),A
; 351. if (menu.active == 0) //电台保存
LD HL,(menu+2)
LD A,L
OR H
JR NZ,?0079
?0078:
; 352. {
; 353. if (fmSendCommand(MC_SAVESTATION, 0) != FALSE)
LD E,11
CALL LWRD ?0167
INC L
DEC L
JP Z,?0040
?0080:
; 354. {
; 355. fmSendCommand(MC_BACKUP, (int) &radio_param);
JR ?0164
LD E,68
JP LWRD ?0153
LD HL,LWRD fmSendCommand
JP LWRD ?0139
?0081:
JP LWRD ?0040
?0079:
; 356. }
; 357. }
; 358. //menu.active==2: add for FM record by ccm //电台录音
; 359. else if (menu.active == 1)
LD A,1
XOR L
OR H
JR NZ,?0084
?0083:
; 360. {
; 361. return RESULT_FMREC_NOSTART;
LD HL,35
; 362. }
JP LWRD ?0129
?0084:
; 363. else if (menu.active == 2) //删除单个电台
LD A,2
XOR L
OR H
JR NZ,?0086
?0085:
; 364. {
; 365. if (fmSendCommand(MC_DELONE, 0) != FALSE)
LD E,85
CALL LWRD ?0167
INC L
DEC L
JR Z,?0088
?0087:
; 366. {
; 367. fmSendCommand(MC_BACKUP, (int) &radio_param);
LD BC,radio_param
LD E,68
CALL LWRD ?0167
?0088:
; 368. }
; 369. /*跳到下一个电台 */
; 370. fmSendCommand(MC_STEP,UP);
LD BC,1
LD E,7
CALL LWRD ?0167
; 371. fmSendCommand(MC_GETSTATUS,(int)&FMStatus);
LD BC,FMStatus
LD E,131
JR ?0153
LD HL,LWRD fmSendCommand
JR ?0139
JP LWRD ?0040
?0086:
; 372. }
; 373. else if (menu.active == 3) //删除全部电台
LD A,3
XOR L
OR H
JR NZ,?0091
?0090:
; 374. {
; 375. fmSendCommand(MC_DELALL, 0);
LD E,86
CALL LWRD ?0167
; 376. fmSendCommand(MC_BACKUP, (int) &radio_param);
?0164:
LD BC,radio_param
LD E,68
JR ?0153
LD HL,LWRD fmSendCommand
JR ?0139
JP LWRD ?0040
?0091:
; 377. }
; 378. else if (menu.active == 4) //全自动搜台.
LD A,4
XOR L
OR H
JR NZ,?0094
?0093:
; 379. {
; 380. result = AutoSearchHandle(10);
LD E,10
LD A,BYTE3 AutoSearchHandle
LD HL,LWRD AutoSearchHandle
CALL LWRD ?BANK_CALL_DIRECT_L08
PUSH HL
POP IY
; 381. if (result == RESULT_IGNORE)
LD A,48
XOR L
OR H
JR NZ,?0096
?0095:
; 382. result = 0;
LD IY,0
?0096:
; 383. if (result != 0)
PUSH IY
POP HL
LD A,L
OR H
JR Z,?0098
?0097:
; 384. return result;
JP LWRD ?0128
JP LWRD ?0129
?0098:
; 385. if(FMStatus.volume)
LD A,(FMStatus+6)
OR A
JR Z,?0100
?0099:
; 386. fmSendCommand(MC_MUTE, releaseMUTE);
CALL LWRD ?0168
?0100:
; 387. fmSendCommand(MC_SETVOLUME, FMStatus.volume);
LD BC,(FMStatus+6)
LD B,0
LD E,64
?0153:
LD A,BYTE3 fmSendCommand
LD HL,LWRD fmSendCommand
?0139:
CALL LWRD ?BANK_CALL_DIRECT_L08
JP LWRD ?0040
?0094:
; 388. }
; 389. else if (menu.active == 5) //选择日本频段
LD A,5
XOR L
OR H
JR NZ,?0103
?0102:
; 390. {
; 391. if (FMStatus.mode == 1)
LD A,(FMStatus+5)
DEC A
JP NZ,?0040
?0104:
; 392. {
; 393. memcpy(&FMStatusJP, &FMStatus, sizeof(FMStatus));
LD C,9
LD DE,FMStatusJP
LD HL,FMStatus
LDIR
; 394. memcpy(&FMStatus, &FMStatusUS, sizeof(FMStatus));
LD C,9
LD DE,FMStatus
LD HL,FMStatusUS
JR ?0159
; 395. BandSwitch = TRUE;
LD (IX-13),1
?0105:
JP LWRD ?0040
?0103:
; 396. }
; 397. }
; 398. else if (menu.active == 6) //选择欧美频段
LD A,6
XOR L
OR H
JP NZ,?0040
?0107:
; 399. {
; 400. if (FMStatus.mode == 0)
LD A,(FMStatus+5)
OR A
JP NZ,?0040
?0109:
; 401. {
; 402. memcpy(&FMStatusUS, &FMStatus, sizeof(FMStatus));
LD C,9
LD DE,FMStatusUS
LD HL,FMStatus
LDIR
; 403. memcpy(&FMStatus, &FMStatusJP, sizeof(FMStatus));
LD C,9
LD DE,FMStatus
LD HL,FMStatusJP
?0159:
LDIR
; 404. BandSwitch = TRUE;
LD (IX-13),1
?0110:
?0108:
?0106:
?0101:
?0092:
?0089:
?0082:
; 405. }
; 406. }
; 407.
; 408. break;
JP LWRD ?0040
?0111:
; 409. case AP_KEY_PLAY | AP_KEY_UP: //跳到电台表的下一个
; 410. fmSendCommand(MC_STEP, UP);
LD C,1
LD E,7
?0154:
LD A,BYTE3 fmSendCommand
?0146:
CALL LWRD ?0170
; 411. fmSendCommand(MC_GETSTATUS, (int) &FMStatus);
?0161:
LD BC,FMStatus
LD E,131
?0156:
LD A,BYTE3 fmSendCommand
LD HL,LWRD fmSendCommand
?0163:
CALL LWRD ?BANK_CALL_DIRECT_L08
; 412. need_draw = TRUE;
JP LWRD ?0147
; 413. break;
JP LWRD ?0040
?0112:
; 414. case AP_KEY_VOLADD:
; 415. case AP_KEY_VOLSUB:
; 416. ClearScreen(NULL);
LD E,B
LD D,B
CALL LWRD ClearScreen
; 417. UpdateScreen(NULL); //刷新
LD E,B
LD D,B
CALL LWRD UpdateScreen
; 418. ResShowPic(VOLUMEBK, 0, 0);
LD C,B
PUSH BC
LD DE,504
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 419. slider.max = g_comval.VolumeMax;
LD BC,(g_comval+31)
LD B,0
LD (slider+2),BC
; 420. slider.min = 0;
LD L,B
LD H,B
LD (slider),HL
; 421. slider.step = 1;
INC HL
LD (slider+6),HL
; 422. FMStatus.volume = FMStatus.vol_display * 31 / g_comval.VolumeMax;
LD BC,(FMStatus+8)
LD B,H
LD DE,31
CALL LWRD ?S_MUL_L02
LD BC,(g_comval+31)
LD B,H
CALL LWRD ?0166
; 423. slider.value = FMStatus.vol_display;
LD BC,(FMStatus+8)
LD B,H
LD (slider+4),BC
; 424. ui_auto_update = FALSE;
XOR A
LD (ui_auto_update),A
; 425. result = ui_slider(&slider, volume_callback); //音量滚动条显示
LD C,BYTE3 volume_callback
PUSH BC
LD HL,LWRD volume_callback
PUSH HL
LD DE,slider
LD A,BYTE3 ui_slider
LD HL,LWRD ui_slider
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
PUSH HL
POP IY
; 426. ui_auto_update = TRUE;
LD A,1
LD (ui_auto_update),A
; 427. need_draw = TRUE;
; 428. m_FMPlaystatus.vol_display = FMStatus.vol_display;
LD A,(FMStatus+8)
LD (m_FMPlaystatus+8),A
; 429. FMStatus.volume = FMStatus.vol_display * 31 / g_comval.VolumeMax;
LD C,A
LD DE,31
CALL LWRD ?S_MUL_L02
LD BC,(g_comval+31)
LD B,0
CALL LWRD ?0166
; 430. fmSendCommand(MC_GETSTATUS, (int) &FMStatus);
LD BC,FMStatus
LD E,131
CALL LWRD ?0167
; 431. if (result == RESULT_IGNORE)
LD (IX-14),1
PUSH IY
POP HL
LD A,48
XOR L
OR H
JR NZ,?0114
?0113:
; 432. result = 0;
LD IY,0
?0114:
; 433. if (result != 0)
PUSH IY
POP HL
LD A,L
OR H
JP Z,?0040
?0115:
; 434. return result;
JR ?0128
; 435. break;
JR ?0129
?0116:
JP LWRD ?0040
?0117:
; 436. default: //热键处理
; 437. key = ap_handle_hotkey(key);
CALL LWRD ap_handle_hotkey
LD C,A
; 438. if (key == RESULT_REDRAW)
LD A,46
XOR C
JR NZ,?0119
?0118:
; 439. need_draw = TRUE;
?0147:
LD (IX-14),1
JP LWRD ?0040
?0119:
; 440. else if (key == RESULT_RECORD)
LD A,51
XOR C
JR NZ,?0122
?0121:
; 441. return RESULT_FMREC_START; //for FM record (press REC) by ccm
LD HL,34
JR ?0129
?0122:
; 442. else if ((key != 0) || (result != 0))
LD A,C
OR A
JR NZ,?0125
PUSH IY
POP HL
LD A,L
OR H
JP Z,?0040
?0125:
?0126:
?0123:
; 443. {
; 444. if (key != 0)
LD A,C
OR A
JR Z,?0128
?0127:
; 445. return key;
LD L,C
LD H,B
; 446. else
JR ?0129
?0128:
; 447. return result;
PUSH IY
POP HL
; 448. }
?0129:
LD SP,IX
JP LWRD ?0165
POP IY
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0124:
?0120:
?0062:
; 449. }
; 450. }
; 451. }
JP LWRD ?0040
; 452.
RSEG CSTR
?0018:
DEFB 'ui30.res'
DEFB 0
?0053:
DEFB ' '
DEFB 0
RSEG CONST
pic_inactive:
DEFW 438
DEFW 284
DEFW 76
DEFW 74
DEFW 9
DEFW 441
DEFW 434
DEFW 145
pic_active:
DEFW 439
DEFW 285
DEFW 77
DEFW 75
DEFW 10
DEFW 442
DEFW 435
DEFW 146
string:
DEFW 606
DEFW 607
DEFW 608
DEFW 609
DEFW 723
DEFW 610
DEFW 611
DEFW 612
?0030:
DEFB 'FM'
DEFB 0
DEFB 0
RSEG UDATA0
TimeCount:
DEFS 2
radio_param:
DEFS 4
slider:
DEFS 8
clrregion:
DEFS 4
menu:
DEFS 11
g_comval:
DEFS 32
FMStationTab:
DEFS 80
FMStatus:
DEFS 9
FMStatusUS:
DEFS 9
FMStatusJP:
DEFS 9
fmdataflag:
DEFS 3
Freqtab:
DEFS 10
RSEG IDATA0
volmuteflag:
DEFS 1
?0031:
DEFS 1
RSEG CDATA0
DEFB 1
DEFB 0
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -