main.s01

来自「MP3 整个 SDK」· S01 代码 · 共 1,338 行 · 第 1/2 页

S01
1,338
字号
; 203.	        }
; 204.	        key=ap_get_message();
	CALL	LWRD ap_get_message
	LD	C,A
	LD	E,C
	LD	B,0
; 205.	        switch(key)
	LD	D,B
	CALL	LWRD ?S_V_SWITCH_L06
	DEFW	12
	DEFW	3
	DEFW	4
	DEFW	28
	DEFW	29
	DEFW	33
	DEFW	37
	DEFW	38
	DEFW	48
	DEFW	67
	DEFW	68
	DEFW	69
	DEFW	70
	DEFW	?0109
	DEFW	?0054
	DEFW	?0055
	DEFW	?0097
	DEFW	?0103
	DEFW	?0058
	DEFW	?0056
	DEFW	?0057
	DEFW	?0096
	DEFW	?0033
	DEFW	?0053
	DEFW	?0097
	DEFW	?0103
?0052:
; 206.	        {
; 207.	            case AP_MSG_STANDBY:
; 208.	                //do nothing
; 209.	                break;
	JP	LWRD ?0033
?0053:
; 210.	            case AP_MSG_RTC:        //2HZ中断到来,屏幕重画,为了电池显示更新
; 211.	              ui_show_batt(GetBattery(),F_comval.BatteryType,1);           //电池电量显示
	LD	C,1
	PUSH	BC
	LD	BC,(g_comval+15)
	CALL	LWRD GetBattery
	LD	E,A
	LD	A,BYTE3 ui_show_batt
	LD	HL,LWRD ui_show_batt
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	HL
; 212.	
; 213.	                break;
	JP	LWRD ?0033
?0054:
; 214.	            case AP_KEY_HOLD|AP_KEY_NEXT:
; 215.	                    FMStatus.freq+=100;
	LD	HL,FMStatus+1
	LD	A,(HL)
	ADD	A,100
	LD	(HL),A
	JR	NC,?0128
	INC	HL
	INC	(HL)
?0128:
; 216.	                    result=SearchHandle(10);
	LD	E,10
	JR	?0133
	LD	HL,LWRD SearchHandle
	JR	?0140
	PUSH	HL
	POP	IY
; 217.	                    break;
	JP	LWRD ?0033
?0055:
; 218.	            case AP_KEY_HOLD|AP_KEY_PREV:
; 219.	                    FMStatus.freq-=100;
	LD	HL,FMStatus+1
	LD	A,(HL)
	ADD	A,156
	LD	(HL),A
	INC	HL
	LD	A,(HL)
	ADC	A,255
	LD	(HL),A
; 220.	                    result=SearchHandle(20);
	LD	E,20
?0133:
	LD	A,BYTE3 SearchHandle
	LD	HL,LWRD SearchHandle
?0140:
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	PUSH	HL
	POP	IY
; 221.	                    break;
	JP	LWRD ?0033
?0056:
; 222.	            case AP_KEY_NEXT|AP_KEY_UP:
; 223.	                    fmSendCommand(MC_STEPGRID,UP);
	LD	C,1
	JR	?0134
	LD	A,BYTE3 fmSendCommand
	JP	LWRD ?0135
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 224.	                    fmSendCommand(MC_GETSTATUS,(int)&FMStatus);
	JP	LWRD ?0154
	LD	E,131
	JP	LWRD ?0143
	LD	HL,LWRD fmSendCommand
	JP	LWRD ?0159
; 225.	                    Updateflag=1;
	LD	A,1
	JP	LWRD ?0156
; 226.	                    need_draw=TRUE;
	JP	LWRD ?0136
; 227.	                    break;
	JP	LWRD ?0033
?0057:
; 228.	            case AP_KEY_PREV|AP_KEY_UP:
; 229.	                  fmSendCommand(MC_STEPGRID,DOWN);
	LD	C,B
?0134:
	LD	E,9
	JP	LWRD ?0141
	JP	LWRD ?0135
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 230.	                  fmSendCommand(MC_GETSTATUS,(int)&FMStatus);
	JP	LWRD ?0154
	LD	E,131
	JP	LWRD ?0143
	LD	HL,LWRD fmSendCommand
	JP	LWRD ?0159
; 231.	                  Updateflag=1;
	LD	A,1
	JP	LWRD ?0156
; 232.	                  need_draw=TRUE;
	JP	LWRD ?0136
; 233.	                    break;
	JP	LWRD ?0033
?0058:
; 234.	
; 235.	            case AP_KEY_MODE|AP_KEY_UP:
; 236.	                g_list.headid = STOPMENU;
	LD	HL,490
	LD	(g_list+6),HL
; 237.	                g_list.active=active;
	LD	BC,(?0026)
	LD	B,D
	LD	(g_list+4),BC
; 238.	                g_list.total=6+2;          //'+1' for FM Record by ccm
	LD	HL,8
	LD	(g_list+2),HL
; 239.	                g_list.strid=string;
	LD	HL,string
	LD	(g_list),HL
; 240.	                //menu.string_id=0;                    //多语言修改
; 241.	                g_list.string_id=F_comval.langid;            //语言标志的选择
	LD	A,(g_comval+12)
	LD	(g_list+8),A
; 242.	                result=ui_popup_list(&g_list, NULL);
	LD	C,B
	PUSH	BC
	PUSH	BC
	LD	DE,g_list
	LD	A,BYTE3 ui_popup_list
	LD	HL,LWRD ui_popup_list
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
	PUSH	HL
	POP	IY
; 243.	                need_draw=TRUE;    
; 244.	                Updateflag=0; 
	XOR	A
	LD	(Updateflag),A
; 245.	                //if(result==RESULT_IGNORE)result=0;    //del by ccm
; 246.	                if(result==RESULT_IGNORE)               //按PLAY键和8s超时返回FM收音界面,不执行当前激活的菜单!
	LD	(IX-4),1
	LD	A,52
	XOR	L
	OR	H
	JR	NZ,?0060
?0059:
; 247.	                {
; 248.	                    result = 0;
	LD	IY,0
; 249.	                    break;
	JP	LWRD ?0033
?0060:
; 250.	                }
; 251.	                if(result!=0) return result;
	LD	A,L
	OR	H
	JR	Z,?0062
?0061:
	JP	LWRD ?0120
	JP	LWRD ?0121
?0062:
; 252.	                active = g_list.active;
	LD	A,(g_list+4)
	LD	(?0026),A
; 253.	                if(g_list.active==0)                        //电台保存
	LD	HL,(g_list+4)
	LD	A,L
	OR	H
	JR	NZ,?0064
?0063:
; 254.	                {
; 255.	                    if(fmSendCommand(MC_SAVESTATION,0)!=FALSE)
	LD	E,11
	CALL	LWRD ?0169
	INC	L
	DEC	L
	JP	Z,?0033
?0065:
; 256.	                    {
; 257.	                        fmSendCommand(MC_BACKUP,(int)&radio_param);
	JR	?0158
	LD	E,68
	JP	LWRD ?0160
	LD	HL,LWRD fmSendCommand
	JP	LWRD ?0150
?0066:
	JP	LWRD ?0033
?0064:
; 258.	                    }
; 259.	                }
; 260.	                //menu.active==2: add for FM record by ccm //电台录音
; 261.	                else if(g_list.active==1)
	LD	A,1
	XOR	L
	OR	H
	JR	NZ,?0069
?0068:
; 262.	                {
; 263.	                    return RESULT_FMREC_NOSTART;
	LD	HL,14
; 264.	                }
	JP	LWRD ?0121
?0069:
; 265.	                else if(g_list.active==2)                //删除单个电台
	LD	A,2
	XOR	L
	OR	H
	JR	NZ,?0071
?0070:
; 266.	                {
; 267.	                    if(fmSendCommand(MC_DELONE,0)!=FALSE)
	LD	E,85
	CALL	LWRD ?0169
	INC	L
	DEC	L
	JP	Z,?0033
?0072:
; 268.	                    {
; 269.	                        fmSendCommand(MC_BACKUP,(int)&radio_param);
	JR	?0158
	LD	E,68
	JP	LWRD ?0160
	LD	HL,LWRD fmSendCommand
	JP	LWRD ?0150
?0073:
	JP	LWRD ?0033
?0071:
; 270.	                    }
; 271.	                }
; 272.	                else if(g_list.active==3)                //删除全部电台
	LD	A,3
	XOR	L
	OR	H
	JR	NZ,?0076
?0075:
; 273.	                {
; 274.	                    fmSendCommand(MC_DELALL,0);
	LD	E,86
	CALL	LWRD ?0169
; 275.	                    fmSendCommand(MC_BACKUP,(int)&radio_param);
?0158:
	LD	BC,radio_param
	LD	E,68
	JP	LWRD ?0160
	LD	HL,LWRD fmSendCommand
	JP	LWRD ?0150
	JP	LWRD ?0033
?0076:
; 276.	                }
; 277.	                else if(g_list.active==4)                //全自动搜台.
	LD	A,4
	XOR	L
	OR	H
	JR	NZ,?0079
?0078:
; 278.	                {
; 279.	                    result=AutoSearchHandle(10);
	LD	E,10
	LD	A,BYTE3 AutoSearchHandle
	LD	HL,LWRD AutoSearchHandle
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	PUSH	HL
	POP	IY
; 280.	                    if(result==RESULT_IGNORE)result=0;
	LD	A,52
	XOR	L
	OR	H
	JR	NZ,?0081
?0080:
	LD	IY,0
?0081:
; 281.	                    if(result!=0)return result;
	PUSH	IY
	POP	HL
	LD	A,L
	OR	H
	JR	Z,?0083
?0082:
	JP	LWRD ?0120
	JP	LWRD ?0121
?0083:
; 282.	                    if(FMStatus.volume)
	LD	A,(FMStatus+6)
	OR	A
	JP	Z,?0162
?0084:
; 283.	                    fmSendCommand(MC_MUTE,releaseMUTE);
	CALL	LWRD ?0170
?0085:
; 284.	                    fmSendCommand(MC_SETVOLUME,FMStatus.volume);
	JP	LWRD ?0162
	LD	B,0
	JP	LWRD ?0166
	JP	LWRD ?0160
	LD	HL,LWRD fmSendCommand
	JP	LWRD ?0150
	JP	LWRD ?0033
?0079:
; 285.	                }
; 286.	                else if(g_list.active==5)                //选择日本频段
	LD	A,5
	XOR	L
	OR	H
	JR	NZ,?0088
?0087:
; 287.	                {
; 288.	                    if(FMStatus.mode==1)
	LD	A,(FMStatus+5)
	DEC	A
	JP	NZ,?0033
?0089:
; 289.	                    {
; 290.	                        memcpy(&FMStatusJP,&FMStatus,sizeof(FMStatus));
	LD	C,8
	LD	DE,FMStatusJP
	LD	HL,FMStatus
	LDIR
; 291.	                        memcpy(&FMStatus,&FMStatusUS,sizeof(FMStatus));
	LD	C,8
	LD	DE,FMStatus
	LD	HL,FMStatusUS
	JR	?0151
; 292.	                        BandSwitch=TRUE;
	LD	(IX-3),1
?0090:
	JP	LWRD ?0033
?0088:
; 293.	                    }
; 294.	                }
; 295.	                else if(g_list.active==6)                //选择欧美频段
	LD	A,6
	XOR	L
	OR	H
	JP	NZ,?0033
?0092:
; 296.	                {
; 297.	                    if(FMStatus.mode==0)
	LD	A,(FMStatus+5)
	OR	A
	JP	NZ,?0033
?0094:
; 298.	                    {
; 299.	                        memcpy(&FMStatusUS,&FMStatus,sizeof(FMStatus));
	LD	C,8
	LD	DE,FMStatusUS
	LD	HL,FMStatus
	LDIR
; 300.	                        memcpy(&FMStatus,&FMStatusJP,sizeof(FMStatus));
	LD	C,8
	LD	DE,FMStatus
	LD	HL,FMStatusJP
?0151:
	LDIR
; 301.	                        BandSwitch=TRUE;
	LD	(IX-3),1
?0095:
?0093:
?0091:
?0086:
?0077:
?0074:
?0067:
; 302.	                    }
; 303.	                }
; 304.	
; 305.	                break;
	JP	LWRD ?0033
?0096:
; 306.	            case AP_KEY_PLAY|AP_KEY_UP:                //跳到电台表的下一个
; 307.	                fmSendCommand(MC_STEP,UP);
	LD	C,1
	LD	E,7
?0141:
	LD	A,BYTE3 fmSendCommand
?0135:
	CALL	LWRD ?0171
; 308.	                fmSendCommand(MC_GETSTATUS,(int)&FMStatus);
?0154:
	LD	BC,FMStatus
	LD	E,131
?0143:
	LD	A,BYTE3 fmSendCommand
	LD	HL,LWRD fmSendCommand
?0159:
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 309.	                Updateflag=1;
	LD	A,1
?0156:
	LD	(Updateflag),A
; 310.	                need_draw=TRUE;
	JP	LWRD ?0136
; 311.	                break;
	JP	LWRD ?0033
?0097:
; 312.	            case AP_KEY_VOLADD:
; 313.	            case AP_KEY_VOLADD | AP_KEY_HOLD:
; 314.	                if (FMStatus.volume ++ <31)
	LD	HL,FMStatus+6
	LD	A,(HL)
	INC	(HL)
	CP	31
	JR	NC,?0099
?0098:
; 315.	                {
; 316.	                  if(volmuteflag)                            //处理fm声音在零级还有输出的情况    zxs change
	LD	A,(volmuteflag)
	OR	A
	JR	Z,?0107
?0100:
; 317.	                  {
; 318.	                    fmSendCommand(MC_MUTE,releaseMUTE);
	LD	C,B
	CALL	LWRD ?0170
; 319.	                    volmuteflag=0;
	XOR	A
	JR	?0167
?0101:
; 320.	                  }
; 321.	
; 322.	                    ui_show_volfm(FMStatus.volume);   //显示音量
	JR	?0107
	LD	A,BYTE3 ui_show_volfm
	JR	?0168
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 323.	                    fmSendCommand(MC_SETVOLUME, FMStatus.volume);
	JR	?0162
	LD	B,0
	JR	?0166
	JR	?0160
	LD	HL,LWRD fmSendCommand
	JR	?0150
; 324.	                }
; 325.	                else
	JP	LWRD ?0033
?0099:
; 326.	                {
; 327.	                    FMStatus.volume = 31;
	LD	A,31
	LD	(FMStatus+6),A
?0102:
; 328.	                }
; 329.	                break;
	JP	LWRD ?0033
?0103:
; 330.	            case AP_KEY_VOLSUB:
; 331.	            case AP_KEY_VOLSUB | AP_KEY_HOLD:
; 332.	
; 333.	               if (FMStatus.volume>0)
	LD	A,(FMStatus+6)
	OR	A
	JP	Z,?0033
?0104:
; 334.	                {
; 335.	
; 336.	                    FMStatus.volume--;
	LD	HL,FMStatus+6
	DEC	(HL)
; 337.	                    if((FMStatus.volume==0))
	LD	A,(FMStatus+6)
	OR	A
	JR	NZ,?0107
?0106:
; 338.	                     {
; 339.	                      fmSendCommand(MC_MUTE,SetMUTE);                    //处理fm声音在零级还有输出的情况    zxs change
	LD	C,1
	CALL	LWRD ?0170
; 340.	                      volmuteflag=1;
	LD	A,1
?0167:
	LD	(volmuteflag),A
?0107:
; 341.	                     }
; 342.	
; 343.	                    ui_show_volfm(FMStatus.volume);   //显示音量
	LD	DE,(FMStatus+6)
	LD	A,BYTE3 ui_show_volfm
?0168:
	LD	HL,LWRD ui_show_volfm
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 344.	                    fmSendCommand(MC_SETVOLUME, FMStatus.volume);
?0162:
	LD	BC,(FMStatus+6)
	LD	B,0
?0166:
	LD	E,64
?0160:
	LD	A,BYTE3 fmSendCommand
	LD	HL,LWRD fmSendCommand
?0150:
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 345.	                }
; 346.	                else
	JP	LWRD ?0033
?0105:
; 347.	                {
; 348.	                    FMStatus.volume = 0;
?0108:
; 349.	
; 350.	                }
; 351.	
; 352.	                break;
	JP	LWRD ?0033
?0109:
; 353.	//           case AP_KEY_AB | AP_KEY_UP:    //进入录音
; 354.	//               return RESULT_FMREC_AB;
; 355.	            default:                                        //热键处理
; 356.	                key=ap_handle_hotkey(key);
	LD	E,C
	CALL	LWRD ap_handle_hotkey
	LD	C,A
; 357.	                if(key == RESULT_REDRAW)need_draw=TRUE;
	LD	A,50
	XOR	C
	JR	NZ,?0111
?0110:
?0136:
	LD	(IX-4),1
	JP	LWRD ?0033
?0111:
; 358.	                else if(key == RESULT_RECORD)  return RESULT_FMREC_START;  //for FM record (press REC) by ccm
	LD	A,9
	XOR	C
	JR	NZ,?0114
?0113:
	LD	HL,13
	JR	?0121
?0114:
; 359.	                else if((key!=0)||(result!=0))
	LD	A,C
	OR	A
	JR	NZ,?0117
	PUSH	IY
	POP	HL
	LD	A,L
	OR	H
	JP	Z,?0033
?0117:
?0118:
?0115:
; 360.	                {
; 361.	                    if(key!=0)return key;
	LD	A,C
	OR	A
	JR	Z,?0120
?0119:
	LD	L,C
	LD	H,B
; 362.	                    else
	JR	?0121
?0120:
; 363.	                        return result;
	PUSH	IY
	POP	HL
; 364.	                }
?0121:
	LD	SP,IX
	POP	IX
	POP	IY
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0116:
?0112:
?0051:
; 365.	        }
; 366.	    }
; 367.	}
	JP	LWRD ?0033
; 368.	
; 369.	
; 370.	
; 371.	
; 372.	
; 373.	
	RSEG	CSTR
?0016:
	DEFB	'ui30.res'
	DEFB	0
?0046:
	DEFB	'  '
	DEFB	0
	RSEG	CONST
string:
	DEFW	346
	DEFW	347
	DEFW	348
	DEFW	349
	DEFW	460
	DEFW	350
	DEFW	351
	DEFW	352
?0025:
	DEFB	'FM'
	DEFB	0
	DEFB	0
	RSEG	UDATA0
TimeCount:
	DEFS	2
radio_param:
	DEFS	4
clrregion:
	DEFS	4
g_list:
	DEFS	9
g_comval:
	DEFS	32
Updateflag:
	DEFS	1
FMStationTab:
	DEFS	80
FMStatus:
	DEFS	8
FMStatusUS:
	DEFS	8
FMStatusJP:
	DEFS	8
fmdataflag:
	DEFS	3
Freqtab:
	DEFS	10
	RSEG	IDATA0
volmuteflag:
	DEFS	1
?0026:
	DEFS	1
	RSEG	CDATA0
	DEFB	0
	DEFB	0
	END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?