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

📄 sub_playstatuskey.s01

📁 MP3 整个 SDK
💻 S01
📖 第 1 页 / 共 3 页
字号:
	NAME	sub_playstatuskey(17)
	RSEG	CODE(0)
	EXTERN	ChangeMusic
	EXTERN	ChangeVolume
	EXTERN	DRV_DetectUD
	PUBLIC	DealKeyForPlayStatus
	EXTERN	DealMusicFileEnd
	PUBLIC	DealPlayKey
	PUBLIC	Deal_Error_Playing
	EXTERN	DisplayErrMsg
	EXTERN	DisplayTimeRollback
	PUBLIC	ErrReport
	EXTERN	FadeOut
	EXTERN	GetBattery
	EXTERN	GetInformation
	EXTERN	OutPutVolume
	EXTERN	PlayStatus
	PUBLIC	PrevMusicInPlay
	EXTERN	RePlayStatus
	PUBLIC	ToNextMusic
	EXTERN	UpDisplayFlag
	EXTERN	VMRead
	EXTERN	ap_get_message
	EXTERN	ap_handle_hotkey
	EXTERN	ap_message_init
	EXTERN	fselGetLocation
	EXTERN	fselGetNextFile
	EXTERN	fselGetPrevFile
	EXTERN	fselSetMode
	EXTERN	g_ABMinTimeCNT
	EXTERN	g_AVSetFlag
	EXTERN	g_FCexitflag
	EXTERN	g_Openparam
	EXTERN	g_PowerOffFlag
	EXTERN	g_ReplayTimeCNT
	EXTERN	g_TagInfoBuf
	EXTERN	g_TagInfoBuf1
	EXTERN	g_comval
	EXTERN	g_lyricflag
	EXTERN	g_music_vars
	EXTERN	g_result
	EXTERN	ifSelBuffToltalTimeFlag
	EXTERN	main_ResShowPic
	EXTERN	musicpSendCommand
	EXTERN	need_draw
	PUBLIC	play_key_next
	PUBLIC	play_key_prev
	EXTERN	return_to_play
	EXTERN	ui_EQ_menu
	EXTERN	ui_auto_update
	EXTERN	ui_follow_compare
	EXTERN	ui_loop_menu
	EXTERN	ui_lyric
	EXTERN	ui_play_menu
	EXTERN	ui_run_realtime
	EXTERN	ui_show_batt
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?C_S_SWITCH_L06
	EXTERN	?C_V_SWITCH_L06
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_LEAVE_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?ENT_AUTO_DIRECT_L09
	RSEG	CODE
DealKeyForPlayStatus:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                ACTOS AP
; 4.	*        This program demostrates how to build an AP
; 5.	*
; 6.	*        (c) Copyright Actions Co,Ld.
; 7.	*
; 8.	*  $Id: sub_playstatuskey.c,v 1.1.1.1 2006/05/22 03:24:01 selina Exp $
; 9.	*******************************************************************************
; 10.	*/
; 11.	
; 12.	#include "ap_music.h"
; 13.	
; 14.	
; 15.	extern bool g_FCexitflag;
; 16.	extern char return_to_play;
; 17.	void ui_show_vol(BYTE volume);
; 18.	void OutPutVolume(int vol);
; 19.	void ErrReport(Play_status_t status);
; 20.	extern bool DisplayTimeRollback(void);
; 21.	
; 22.	/*
; 23.	********************************************************************************
; 24.	* Description :  处理在播放状态下对按键的判断处理(因为ui_play.c空间太紧张了)
; 25.	*
; 26.	* input : 键值 key
; 27.	*
; 28.	* output: 返回值 == 0: 正常返回
; 29.	*                != 0: 不是正常返回(如热键)
; 30.	* Notes       :
; 31.	********************************************************************************
; 32.	*/
; 33.	
; 34.	int DealKeyForPlayStatus(char key)
; 35.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65524
	PUSH	IY
; 36.	
; 37.	    int g_result_bak;
; 38.	    music_play_status_t status_buf;
; 39.	    switch (key)
	LD	E,(IX+2)
	CALL	LWRD ?C_V_SWITCH_L06
	DEFW	14
	DEFB	2
	DEFB	3
	DEFB	4
	DEFB	18
	DEFB	27
	DEFB	29
	DEFB	33
	DEFB	37
	DEFB	38
	DEFB	48
	DEFB	49
	DEFB	133
	DEFB	134
	DEFB	144
	DEFW	?0066
	DEFW	?0047
	DEFW	?0004
	DEFW	?0007
	DEFW	?0029
	DEFW	?0033
	DEFW	?0028
	DEFW	?0024
	DEFW	?0054
	DEFW	?0002
	DEFW	?0065
	DEFW	?0010
	DEFW	?0055
	DEFW	?0055
	DEFW	?0017
?0003:
; 40.	    {
; 41.	        case AP_MSG_STANDBY:
; 42.	            break;
?0004:
; 43.	
; 44.	        case AP_KEY_NEXT | AP_KEY_LONG: //快进
; 45.	
; 46.	            ui_run_realtime=TRUE;
	LD	A,1
	LD	(ui_run_realtime),A
; 47.	            //if (g_music_vars.location.disk == 'C')
; 48.	            {
; 49.	                //只有在"C"盘时才能快进退
; 50.	                if (RePlayStatus == NormalPlay)
	LD	A,(RePlayStatus)
	OR	A
	JR	NZ,?0006
?0005:
; 51.	                {
; 52.	                    PlayStatus = FFPlaySta;
	LD	A,3
	LD	(PlayStatus),A
; 53.	                    musicpSendCommand(MC_STEP, 4);
	LD	BC,4
	LD	E,7
	CALL	LWRD ?0221
?0006:
; 54.	                }
; 55.	            }
; 56.	            break;
	JP	LWRD ?0002
?0007:
; 57.	
; 58.	        case AP_KEY_PREV | AP_KEY_LONG: //快退
; 59.	             ui_run_realtime=TRUE;
	LD	A,1
	LD	(ui_run_realtime),A
; 60.	            //if (g_music_vars.location.disk == 'C')
; 61.	            {
; 62.	                //只有在"C"盘时才能快进退
; 63.	                if (RePlayStatus == NormalPlay)
	LD	A,(RePlayStatus)
	OR	A
	JR	NZ,?0009
?0008:
; 64.	                {
; 65.	                    PlayStatus = FBPlaySta;
	LD	A,4
	LD	(PlayStatus),A
; 66.	                    musicpSendCommand(MC_STEP, -4);
	LD	BC,65532
	LD	E,7
	CALL	LWRD ?0221
?0009:
; 67.	                }
; 68.	
; 69.	            }
; 70.	            break;
	JP	LWRD ?0002
?0010:
; 71.	
; 72.	        case AP_KEY_EQ:
; 73.	            if (RePlayStatus == NormalPlay)
	LD	A,(RePlayStatus)
	OR	A
	JR	NZ,?0012
?0011:
; 74.	            {
; 75.	                g_result = ui_EQ_menu();
	LD	A,BYTE3 ui_EQ_menu
	LD	HL,LWRD ui_EQ_menu
	CALL	LWRD ?0225
; 76.	
; 77.	                if (g_result == RESULT_RECORD )//响应AB键
	JR	Z,?0163
?0013:
; 78.	                {
; 79.	                    SetFullInterface();
; 80.	                    return play_key_next(AP_KEY_AB | AP_KEY_UP);
; 81.	                }
?0014:
; 82.	                else
; 83.	                {
; 84.	                    if (g_result != 0)
	LD	A,L
	OR	H
	JR	NZ,?0165
?0015:
; 85.	                    {
; 86.	                        return g_result;
; 87.	                    }
?0016:
; 88.	                }
; 89.	
; 90.	                SetFullInterface();
	LD	(ui_auto_update),A
	LD	HL,UpDisplayFlag
	LD	A,(HL)
	OR	193
	LD	(HL),A
	INC	HL
	LD	(HL),255
; 91.	                return_to_play = 1;
	LD	A,1
	LD	(return_to_play),A
; 92.	                need_draw = TRUE;
	LD	(need_draw),A
?0012:
; 93.	            }
; 94.	            break;
	JP	LWRD ?0002
?0017:
; 95.	
; 96.	        case AP_KEY_LOOP:
; 97.	            if (RePlayStatus == NormalPlay)
	LD	A,(RePlayStatus)
	OR	A
	JR	NZ,?0019
?0018:
; 98.	            {
; 99.	                g_result = ui_loop_menu();
	LD	A,BYTE3 ui_loop_menu
	LD	HL,LWRD ui_loop_menu
	CALL	LWRD ?0225
; 100.	
; 101.	                if (g_result == RESULT_RECORD )//不响应AB键
	JR	NZ,?0021
?0020:
; 102.	                {
; 103.	                    SetFullInterface();
?0163:
	XOR	A
	LD	(ui_auto_update),A
	LD	HL,UpDisplayFlag
	LD	A,(HL)
	OR	193
	LD	(HL),A
	INC	HL
	LD	(HL),255
; 104.	                    return play_key_next(AP_KEY_AB | AP_KEY_UP);
	JR	?0164
; 105.	                }
?0021:
; 106.	                else
; 107.	                {
; 108.	                    if (g_result != 0)
	LD	A,L
	OR	H
	JR	Z,?0023
?0022:
; 109.	                    {
; 110.	                        return g_result;
?0165:
	JR	?0030
; 111.	                    }
?0023:
; 112.	                }
; 113.	
; 114.	                SetFullInterface();
	LD	(ui_auto_update),A
	LD	HL,UpDisplayFlag
	LD	A,(HL)
	OR	193
	LD	(HL),A
	INC	HL
	LD	(HL),255
; 115.	                return_to_play=1;
	LD	A,1
	LD	(return_to_play),A
; 116.	                need_draw = TRUE;
	LD	(need_draw),A
?0019:
; 117.	            }
; 118.	            break;
	JP	LWRD ?0002
?0024:
; 119.	
; 120.	        case AP_KEY_PREV | AP_KEY_UP:
; 121.	            ui_run_realtime=FALSE;
	XOR	A
	LD	(ui_run_realtime),A
; 122.	            g_result = play_key_prev(key);
	LD	D,A
	LD	A,BYTE3 play_key_prev
	LD	HL,LWRD play_key_prev
	CALL	LWRD ?0226
?0026:
; 123.	            while(ap_get_message()!=NULL);    //clear rtc message.
	CALL	LWRD ap_get_message
	OR	A
	JR	Z,?0030
?0027:
	JR	?0026
?0025:
; 124.	            return g_result;
; 125.	
; 126.	
; 127.	        case AP_KEY_NEXT | AP_KEY_UP:
?0028:
; 128.	             ui_run_realtime=FALSE;
	XOR	A
	LD	(ui_run_realtime),A
?0029:
; 129.	        case AP_KEY_AB   | AP_KEY_UP: //定AB
; 130.	            g_result = play_key_next(key);
	LD	D,0
	CALL	LWRD ?0227
?0031:
; 131.	            while(ap_get_message()!=NULL);    //clear rtc message.
	CALL	LWRD ap_get_message
	OR	A
	JR	NZ,?0031
?0032:
?0030:
; 132.	            return g_result;
	JP	LWRD ?0174
; 133.	
; 134.	        case AP_KEY_MODE | AP_KEY_UP: //短按 MODE +
?0033:
; 135.	            if (RePlayStatus == NormalPlay)
	LD	A,(RePlayStatus)
	OR	A
	JP	NZ,?0035
?0034:
; 136.	            {
; 137.	                BYTE Reg4eBak=input8(0x4e);
	IN	A,(78)
	LD	(IX-2),A
; 138.	                output8(0x4e,0x22);            //zxs add
	LD	A,34
	OUT	(78),A
; 139.	                g_result = ui_play_menu(); //播放菜单
	LD	A,BYTE3 ui_play_menu
	LD	HL,LWRD ui_play_menu
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(g_result),HL
; 140.	                output8(0x4e,Reg4eBak);            //zxs add
	LD	A,(IX-2)
	OUT	(78),A
; 141.	                if (g_result == RESULT_RECORD )//不响应AB键
	LD	A,9
	XOR	L
	OR	H
	JR	NZ,?0037
?0036:
; 142.	                {
; 143.	
; 144.	                    SetFullInterface();
	LD	(ui_auto_update),A
	LD	HL,UpDisplayFlag
	LD	A,(HL)
	OR	193
	LD	(HL),A
	INC	HL
	LD	(HL),255
; 145.	                    UpDisplayFlag = UpDisplayFlag &clr_musicbitrate;
	LD	HL,UpDisplayFlag
	INC	HL
	RES	5,(HL)
; 146.	                    return play_key_next(AP_KEY_AB | AP_KEY_UP);
?0164:
	LD	DE,49
	LD	A,BYTE3 play_key_next
	LD	HL,LWRD play_key_next
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 147.	                }
	JP	LWRD ?0072
?0037:
; 148.	                else
; 149.	                {
; 150.	/////////////////////////////////////////////////////////////////////////////////////
; 151.	                  g_result_bak=g_result;
	LD	IY,(g_result)
; 152.	                   musicpSendCommand(MC_GETSTATUS, (int)(& status_buf));
	LD	HL,4
	ADD	HL,SP
	LD	C,L
	LD	B,H
	LD	E,131
	CALL	LWRD ?0221
; 153.	                   if (status_buf.status == PLAYING_REACH_END)
	LD	A,(IX-10)
	CP	6
	JR	NZ,?0041
?0038:
; 154.	                    {
; 155.	
; 156.	                       g_result=DealMusicFileEnd(0); 
	LD	E,0
	LD	A,BYTE3 DealMusicFileEnd
	LD	HL,LWRD DealMusicFileEnd
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(g_result),HL
; 157.	                       if ( g_result != NULL )
	LD	A,L
	OR	H
	JR	Z,?0041
?0040:
; 158.	                        {
; 159.	                          if(g_result_bak)         //g_result_bak !=0,返回其消息
	PUSH	IY
	POP	HL
	LD	A,L
	OR	H
	JR	Z,?0170
?0042:
; 160.	                            return g_result_bak;  
; 161.	                          else
	JP	LWRD ?0072
?0043:
; 162.	                            return g_result;  
; 163.	                        } 
?0041:
?0039:
; 164.	                    }
; 165.	                    g_result=g_result_bak;
	PUSH	IY
	POP	HL
	LD	(g_result),HL
; 166.	//////////////////////////////////////////////////////////////////////////////////////解决DRM在菜单中长按mode重启问题
; 167.	                    if (g_result != 0)
	LD	A,L
	OR	H
	JR	Z,?0045
?0044:
; 168.	                    {
; 169.	                        return g_result;
?0170:
	JP	LWRD ?0174
; 170.	                    }
?0045:
; 171.	                }
; 172.	                SetFullInterface();
	LD	(ui_auto_update),A
	LD	HL,UpDisplayFlag
	LD	A,(HL)
	OR	193
	LD	(HL),A
	INC	HL
	LD	(HL),255
; 173.	
; 174.	            }
; 175.	            else
	JR	?0046
?0035:
; 176.	            {
; 177.	                musicpSendCommand(MC_SETA_B, ClrABPoint); //clear SET_A_B
	CALL	LWRD ?0222
; 178.	                RePlayStatus = NormalPlay;
	XOR	A
	LD	(RePlayStatus),A
; 179.	                //main_ResShowPic(BBCK2,0,0);
; 180.	                UpDisplayFlag = UpDisplayFlag | up_musicbitrate;
	LD	HL,UpDisplayFlag
	INC	HL
	SET	5,(HL)
; 181.	                g_FCexitflag = FALSE;
	LD	(g_FCexitflag),A
?0046:
; 182.	            }
; 183.	            return_to_play=1;
	LD	A,1
	LD	(return_to_play),A
; 184.	            need_draw = TRUE;
	JP	LWRD ?0175
; 185.	            break;
?0047:
; 186.	
; 187.	        case AP_KEY_MODE | AP_KEY_LONG://长按MODE 进入歌词显示界面
; 188.	
; 189.	        #ifdef OPT_Sup_LRC_fun//支持歌词显示功能
; 190.	
; 191.	            if (!g_lyricflag)
	LD	A,(g_lyricflag)
	OR	A
	JR	Z,?0172
?0048:
; 192.	            {
; 193.	                return RESULT_MAIN; //没歌词就不进入
; 194.	            }
?0049:
; 195.	            if (RePlayStatus != NormalPlay)
	LD	A,(RePlayStatus)
	OR	A
	JR	Z,?0051
?0050:
; 196.	            {
; 197.	                return RESULT_MAIN;
?0172:
	LD	HL,10
; 198.	            }
	JP	LWRD ?0072
?0051:
; 199.	            g_result = ui_lyric();
	LD	A,BYTE3 ui_lyric
	LD	HL,LWRD ui_lyric
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(g_result),HL
; 200.	            return_to_play=1;
	LD	A,1
	LD	(return_to_play),A
; 201.	             //恢复背光时间
; 202.	           VMRead(& g_comval, VM_SYSTEM, sizeof(g_comval));
	LD	BC,32
	PUSH	BC
	LD	BC,512
	LD	DE,g_comval
	CALL	LWRD VMRead
	POP	HL
; 203.	           ap_message_init(& g_comval);
	LD	DE,g_comval
	LD	A,BYTE3 ap_message_init
	LD	HL,LWRD ap_message_init
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 204.	            if( g_result == 0 ) //如果是热键,不要清屏.
	LD	HL,(g_result)
	LD	A,L
	OR	H
	JR	NZ,?0174
?0052:
; 205.	            {
; 206.	                SetFullInterface();
	LD	(ui_auto_update),A
	LD	HL,UpDisplayFlag
	LD	A,(HL)
	OR	193
	LD	(HL),A
	INC	HL
	LD	(HL),255
; 207.	                need_draw = TRUE;
	LD	A,1
	LD	(need_draw),A
?0053:
; 208.	            }

⌨️ 快捷键说明

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