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

📄 ui_stop.s01

📁 MP3 整个 SDK
💻 S01
📖 第 1 页 / 共 2 页
字号:
	NAME	ui_stop(17)
	RSEG	AP_UI_STP(0)
	RSEG	UDATA0(0)
	RSEG	IDATA0(0)
	RSEG	CDATA0(0)
	EXTERN	BackupCurrentTime
	PUBLIC	CaltimeFlag
	EXTERN	ChangeMusic
	EXTERN	CheckMusicType
	EXTERN	DisplayErrMsg
	EXTERN	DisplayTimeRollback
	EXTERN	ErrReport
	EXTERN	FadeOut
	EXTERN	GetInformation
	EXTERN	PlayStatus
	EXTERN	RefreshMainScreen
	EXTERN	UpDisplayFlag
	EXTERN	UpdateFileSelector
	PUBLIC	WaitForCaltimeCNT
	EXTERN	ap_get_message
	EXTERN	ap_handle_hotkey
	EXTERN	ap_message_init
	EXTERN	fselGetLocation
	EXTERN	fselGetNextFile
	EXTERN	fselGetNo
	EXTERN	fselGetPrevFile
	EXTERN	fselGetTotal
	EXTERN	fselSetMode
	EXTERN	g_FCexitflag
	EXTERN	g_OldSecTempBackup
	EXTERN	g_Openparam
	EXTERN	g_PowerOffFlag
	EXTERN	g_ScrollFlag
	EXTERN	g_TagInfoBuf
	EXTERN	g_TagInfoBuf1
	EXTERN	g_comval
	EXTERN	g_currentMusicType
	EXTERN	g_introCNT
	EXTERN	g_introCntMode
	EXTERN	g_music_vars
	EXTERN	g_musicamount
	EXTERN	g_musicsequence
	EXTERN	g_result
	EXTERN	ifSelBuffToltalTimeFlag
	EXTERN	make_dirname
	EXTERN	musicpSendCommand
	EXTERN	need_draw
	EXTERN	slider
	PUBLIC	testram
	EXTERN	ui_auto_update
	EXTERN	ui_play
	EXTERN	ui_slider
	PUBLIC	ui_stop
	PUBLIC	ui_stop_loop
	EXTERN	ui_stop_menu
	EXTERN	?CLZ80B_4_04_L00
	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	AP_UI_STP
ui_stop:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                ACTOS AP
; 4.	*        This program demostrates how to build an AP
; 5.	*
; 6.	*        (c) Copyright Actions Co,Ld.
; 7.	*
; 8.	*  $Id: ui_stop.c,v 1.2 2006/07/14 06:46:20 tangwh Exp $
; 9.	*******************************************************************************
; 10.	*/
; 11.	#include "ap_music.h"
; 12.	char testram = 0;
; 13.	
; 14.	char WaitForCaltimeCNT;//在停止状态下先不计时,到无按键动作一定时间后再开始计时
; 15.	                        // 这样可以提高在停止状态时按next 跳歌的速度.
; 16.	bool CaltimeFlag;       //true: 不用再算时间
; 17.	extern void make_dirname(void);                        //false: 未算时间
; 18.	
; 19.	extern bool g_FCexitflag;
; 20.	
; 21.	int ui_stop_loop(void);
; 22.	int DealForDRMsong(void);
; 23.	void ttest(void);
; 24.	bool DisplayTimeRollback(void);
; 25.	
; 26.	#pragma codeseg(AP_UI_STP)
; 27.	//======================================================================================
; 28.	//RESULT_CURR_UI: 还要处在当前界面
; 29.	//RESULT_UI_STOP: 到UI_STOP界面(因现在就是UI_STOP界面,所以同上)
; 30.	//RESULT_LAST_UI: 到上一级界面
; 31.	//--------------------------------------------------------------------------------------
; 32.	int ui_stop(void)
; 33.	{
	PUSH	BC
	PUSH	DE
; 34.	    int result;
; 35.	    ap_message_init(NULL);//开始算STANDBY 时间
	CALL	LWRD ?0136
?0004:
; 36.	
; 37.	    do
; 38.	    {
; 39.	        if (UpdateFileSelector() == 0)
	LD	A,BYTE3 UpdateFileSelector
	LD	HL,LWRD UpdateFileSelector
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	A,L
	OR	H
	JP	Z,?0111
?0005:
; 40.	         {
; 41.	             return 0;
; 42.	         }
?0006:
; 43.	
; 44.	        g_musicamount = FSELGetTotal();
	LD	A,BYTE3 fselGetTotal
	LD	HL,LWRD fselGetTotal
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(g_musicamount),HL
; 45.	        g_musicsequence = FSELGetNo();
	LD	A,BYTE3 fselGetNo
	LD	HL,LWRD fselGetNo
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(g_musicsequence),HL
; 46.	        FSELSetMode(g_music_vars.repeat_mode);
	CALL	LWRD ?0142
; 47.	         make_dirname();
	LD	A,BYTE3 make_dirname
	LD	HL,LWRD make_dirname
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 48.	        g_currentMusicType = CheckMusicType(g_music_vars.location.filename);
	LD	DE,g_music_vars+33
	LD	A,BYTE3 CheckMusicType
	LD	HL,LWRD CheckMusicType
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	A,L
	LD	(g_currentMusicType),A
; 49.	
; 50.	        //TEST_UIST =0x73;
; 51.	    FSELSetMode( FSEL_ALL_REPEATALL );
; 52.	    FSELGetNext(g_music_vars.location.filename);
; 53.	    fselGetLocation(& g_music_vars.location);
; 54.	    GetInformation();
	CALL	LWRD ?0139
; 55.	    memcpy(g_TagInfoBuf1,g_TagInfoBuf,20);
	LD	BC,20
	LD	DE,g_TagInfoBuf1
	LD	HL,g_TagInfoBuf
	LDIR
; 56.	    FSELGetPrev(g_music_vars.location.filename);
	LD	DE,g_music_vars+33
	LD	A,BYTE3 fselGetPrevFile
	LD	HL,LWRD fselGetPrevFile
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 57.	    fselGetLocation(& g_music_vars.location);
	LD	DE,g_music_vars+7
	LD	A,BYTE3 fselGetLocation
	LD	HL,LWRD fselGetLocation
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 58.	    FSELSetMode(g_music_vars.repeat_mode);
	CALL	LWRD ?0142
; 59.	    GetInformation(); //取文件信息
	CALL	LWRD ?0140
; 60.	        musicpSendCommand( MC_OPEN,  (int)& g_Openparam );
	LD	BC,g_Openparam
	LD	E,1
	CALL	LWRD ?0143
; 61.	        musicpSendCommand(MC_LOAD, NULL);//04-4-23 9:32
	LD	BC,0
	LD	E,3
	CALL	LWRD ?0143
; 62.	        SetFullInterface();
	XOR	A
	LD	(ui_auto_update),A
	LD	HL,UpDisplayFlag
	LD	A,(HL)
	OR	193
	LD	(HL),A
	INC	HL
	LD	(HL),255
; 63.	        if(PlayStatus==PauseSta)                             //add  by zxs for not refresh background when pause
	LD	A,(PlayStatus)
	DEC	A
	JR	NZ,?0008
?0007:
; 64.	         {
; 65.	          UpDisplayFlag=UpDisplayFlag & clr_musicBackGDPic;
	LD	HL,UpDisplayFlag
	RES	0,(HL)
; 66.	          UpDisplayFlag=UpDisplayFlag & clr_musiccurrenttime; 
	INC	HL
	RES	1,(HL)
; 67.	          UpDisplayFlag=UpDisplayFlag & clr_musicbitrate; 
	LD	HL,UpDisplayFlag
	INC	HL
	RES	5,(HL)
; 68.	         }
; 69.	        else
	JR	?0009
?0008:
; 70.	           PlayStatus = StopSta;
	XOR	A
	LD	(PlayStatus),A
?0009:
; 71.	        need_draw = TRUE;
	LD	A,1
	LD	(need_draw),A
; 72.	         musicpSendCommand(MC_CALTIME, NULL);                      //zxs add
	LD	BC,0
	CALL	LWRD ?0144
; 73.	         CaltimeFlag=TRUE;
	LD	A,1
	LD	(CaltimeFlag),A
; 74.	        g_result = ui_stop_loop();
	LD	A,BYTE3 ui_stop_loop
	LD	HL,LWRD ui_stop_loop
	CALL	LWRD ?0138
; 75.	    }while( (g_result == RESULT_CURR_UI)
; 76.	                || (g_result == RESULT_UI_STOP)
; 77.	                || (g_result == RESULT_UI_STOP2) );//还保持在ui_stop界面
	LD	A,L
	OR	H
	JP	Z,?0004
	LD	A,102
	XOR	L
	OR	H
	JP	Z,?0004
	LD	A,103
	XOR	L
	OR	H
	JP	Z,?0004
?0002:
; 78.	    if (g_result == RESULT_LAST_UI)
	LD	A,101
	XOR	L
	OR	H
	JR	NZ,?0013
?0012:
; 79.	    {
; 80.	        return NULL;//不带参数回到上一级
?0111:
	LD	HL,0
; 81.	    }
?0013:
; 82.	    return g_result;//带参数回到上一级
; 83.	}
?0014:
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0136:
	LD	DE,0
	LD	A,BYTE3 ap_message_init
	LD	HL,LWRD ap_message_init
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0137:
	LD	BC,20
	LD	DE,g_TagInfoBuf1
	LD	HL,g_TagInfoBuf
	LDIR
	LD	DE,g_music_vars+33
	LD	A,BYTE3 fselGetPrevFile
	LD	HL,LWRD fselGetPrevFile
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	DE,g_music_vars+7
	LD	A,BYTE3 fselGetLocation
	LD	HL,LWRD fselGetLocation
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	DE,(g_music_vars+1)
	LD	A,BYTE3 fselSetMode
	LD	HL,LWRD fselSetMode
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	A,BYTE3 GetInformation
	LD	HL,LWRD GetInformation
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	BC,g_Openparam
	LD	E,1
	LD	A,BYTE3 musicpSendCommand
	LD	HL,LWRD musicpSendCommand
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	BC,0
	LD	E,3
	LD	A,BYTE3 musicpSendCommand
	LD	HL,LWRD musicpSendCommand
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	H,0
	LD	(g_result),HL
	XOR	A
	LD	(CaltimeFlag),A
	LD	(WaitForCaltimeCNT),A
	LD	(ui_auto_update),A
	LD	HL,UpDisplayFlag
	LD	A,(HL)
	OR	193
	LD	(HL),A
	INC	HL
	LD	(HL),255
	LD	HL,UpDisplayFlag
	RES	0,(HL)
	LD	A,1
	LD	(need_draw),A
	RET
?0138:
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(g_result),HL
	RET
?0141:
	LD	A,BYTE3 ChangeMusic
	LD	HL,LWRD ChangeMusic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	H,0
	LD	(g_result),HL
?0139:
	LD	E,4
	LD	A,BYTE3 fselSetMode
	LD	HL,LWRD fselSetMode
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	DE,g_music_vars+33
	LD	A,BYTE3 fselGetNextFile
	LD	HL,LWRD fselGetNextFile
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	DE,g_music_vars+7
	LD	A,BYTE3 fselGetLocation
	LD	HL,LWRD fselGetLocation
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0140:
	LD	A,BYTE3 GetInformation
	LD	HL,LWRD GetInformation
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0142:
	LD	DE,(g_music_vars+1)
	LD	A,BYTE3 fselSetMode
	LD	HL,LWRD fselSetMode
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0145:
	LD	C,A
	LD	B,A
?0144:
	LD	E,19
?0143:
	LD	A,BYTE3 musicpSendCommand
	LD	HL,LWRD musicpSendCommand
	JP	LWRD ?BANK_CALL_DIRECT_L08
ui_stop_loop:
; 84.	//======================================================================================
; 85.	
; 86.	int ui_stop_loop()
; 87.	//int ui_stop()
; 88.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65520
	PUSH	IY
; 89.	    mp3_play_status_t status_buf;
; 90.	    char key;
; 91.	    char modekeystore = NULL;
	LD	(IX-7),0
?0016:
; 92.	    int result;
; 93.	    char i;
; 94.	
; 95.	
; 96.	    while(1)
; 97.	    {
; 98.	        //清空消息池
; 99.	        result = ap_get_message();
	CALL	LWRD ap_get_message
	LD	C,A
	LD	B,0
	PUSH	BC
	POP	IY
; 100.	        if (result == NULL)
	LD	A,C
	OR	A
	JR	Z,?0015
?0018:
; 101.	        {
; 102.	            break;
?0019:
; 103.	        }
; 104.	        if (result == AP_MSG_STANDBY)
	PUSH	IY
	POP	HL
	LD	A,29
	XOR	L
	OR	H
	JR	NZ,?0016
?0020:
; 105.	        {
; 106.	            //碰到 standby 消息时要优先处理,否则会漏掉 standby 消息
; 107.	            return RESULT_STANDBY;
	JR	?0031
; 108.	        }
?0021:
; 109.	    }
; 110.	
; 111.	
; 112.	    while (1)
?0015:
?0023:
; 113.	    {
; 114.	
; 115.	
; 116.	        key = ap_get_message();
	CALL	LWRD ap_get_message
	LD	(IX-8),A
; 117.	        if (need_draw)
	LD	A,(need_draw)
	OR	A
	JR	Z,?0026
?0025:
; 118.	        {
; 119.	            RefreshMainScreen();
	LD	A,BYTE3 RefreshMainScreen
	LD	HL,LWRD RefreshMainScreen
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 120.	            need_draw = FALSE;
	XOR	A
	LD	(need_draw),A
?0026:
; 121.	        }
; 122.	
; 123.	        switch (key)
	LD	E,(IX-8)
	CALL	LWRD ?C_V_SWITCH_L06
	DEFW	16
	DEFB	3
	DEFB	4
	DEFB	5
	DEFB	6
	DEFB	16
	DEFB	28
	DEFB	33
	DEFB	37
	DEFB	38
	DEFB	48
	DEFB	50
	DEFB	55
	DEFB	56
	DEFB	69
	DEFB	70
	DEFB	129
	DEFW	?0097
	DEFW	?0031
	DEFW	?0086
	DEFW	?0078
	DEFW	?0027
	DEFW	?0093
	DEFW	?0027
	DEFW	?0067
	DEFW	?0082
	DEFW	?0074
	DEFW	?0032
	DEFW	?0028
	DEFW	?0066
	DEFW	?0086
	DEFW	?0078
	DEFW	?0090
	DEFW	?0090
?0028:
; 124.	        {
; 125.	            case AP_MSG_RTC:
; 126.	                if (!CaltimeFlag)
	LD	A,(CaltimeFlag)
	OR	A
	JR	NZ,?0030
?0029:
; 127.	                {
; 128.	                    WaitForCaltimeCNT++;
	LD	HL,WaitForCaltimeCNT
	INC	(HL)
?0030:
; 129.	                }
; 130.	                break;
	JP	LWRD ?0027
?0031:
; 131.	
; 132.	            case AP_KEY_PLAY | AP_KEY_LONG:
; 133.	                return RESULT_STANDBY;
	LD	HL,2
; 134.	                break;
	JP	LWRD ?0109
?0032:
?0034:
; 135.	
; 136.	            case AP_KEY_PLAY | AP_KEY_UP:
; 137.	                 while(ap_get_message()!=NULL);    //clear rtc message.
	CALL	LWRD ap_get_message
	OR	A
	JR	NZ,?0032
?0035:
?0033:
; 138.	                if (CaltimeFlag || ifSelBuffToltalTimeFlag)
	LD	A,(CaltimeFlag)
	OR	A
	JR	NZ,?0038
	LD	A,(ifSelBuffToltalTimeFlag)
	OR	A
	JR	Z,?0041
?0038:
?0039:
?0036:
; 139.	                {
; 140.	                    musicpSendCommand(MC_GETSTATUS, (int)(& status_buf));
	LD	HL,2
	ADD	HL,SP
	LD	C,L
	LD	B,H
	LD	E,131
	CALL	LWRD ?0143
; 141.	                    if (status_buf.status == PLAYING_ERROR)
	LD	A,(IX-16)
	CP	12
	JR	NZ,?0041
?0040:
; 142.	                    {
; 143.	                        g_music_vars.BreakPTDisTime.hour = 0;
	XOR	A
	LD	(g_music_vars+75),A
; 144.	                        g_music_vars.BreakPTDisTime.minute = 0;
	LD	(g_music_vars+76),A
; 145.	                        g_music_vars.BreakPTDisTime.second = 0;
	LD	(g_music_vars+77),A
?0041:
?0037:
; 146.	                    }
; 147.	                }
; 148.	
; 149.	                musicpSendCommand(MC_RESTORE, NULL);
	LD	BC,0
	LD	E,69
	CALL	LWRD ?0143
; 150.	
; 151.	                musicpSendCommand(MC_SETPOWERCOUNT, 5); //set power out level count=2^4=16
	LD	BC,5
	LD	E,89
	CALL	LWRD ?0143
; 152.	
; 153.	                if (g_music_vars.MusicOpenMod == Nor_open)
	LD	A,(g_music_vars+6)
	OR	A
	JR	NZ,?0043
?0042:
; 154.	                {
; 155.	                    StartIntro(TRUE);
	LD	A,1
	JR	?0112
; 156.	                }
; 157.	                else

⌨️ 快捷键说明

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