⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.s01

📁 5807收音机模块用于炬力平台
💻 S01
📖 第 1 页 / 共 3 页
字号:
	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 + -