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

📄 ui_stop.s01

📁 MP3 整个 SDK
💻 S01
📖 第 1 页 / 共 2 页
字号:
	NAME	ui_stop(17)
	RSEG	AP_UI_STP(0)
	RSEG	CSTR(0)
	EXTERN	ChangeMusic
	EXTERN	CheckMusicType
	EXTERN	ClearTimePara
	EXTERN	DRV_Install
	EXTERN	GetBattery
	EXTERN	GetInformation
	EXTERN	PlayStatus
	EXTERN	RefreshMainScreen
	EXTERN	SetBackgdColor
	EXTERN	SetContrast
	EXTERN	StandbyScreen
	EXTERN	Totaltime
	EXTERN	UpdateFileSelector
	EXTERN	VMRead
	EXTERN	ap_get_message
	EXTERN	ap_handle_hotkey
	EXTERN	ap_message_init
	EXTERN	ap_sleep
	EXTERN	fselGetLocation
	EXTERN	fselGetNextFile
	EXTERN	fselGetNo
	EXTERN	fselGetPrevFile
	EXTERN	fselGetTotal
	EXTERN	fselSetMode
	EXTERN	g_BatteryType
	EXTERN	g_TagInfoBuf
	EXTERN	g_TagInfoBuf1
	EXTERN	g_amv_vars
	EXTERN	g_changevolume
	EXTERN	g_comval
	EXTERN	g_currentMusicType
	EXTERN	g_langid
	EXTERN	g_menu_active
	EXTERN	g_musicamount
	EXTERN	g_musicsequence
	EXTERN	g_result
	EXTERN	make_dirname
	EXTERN	need_draw
	EXTERN	show_volume
	PUBLIC	time_cmp
	EXTERN	ui_err_msg
	EXTERN	ui_play
	EXTERN	ui_run_realtime
	EXTERN	ui_show_batt
	EXTERN	ui_show_msg
	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_FAST_LEAVE_L08
	RSEG	AP_UI_STP
time_cmp:
; 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.1.1.1 2006/05/22 03:24:02 selina Exp $
; 9.	*******************************************************************************
; 10.	*/
; 11.	#include "ap_amv.h"
; 12.	extern comval_t g_comval; //系统变量,ap不能更改
; 13.	extern bool ActiveDriveOK;
; 14.	extern bool g_menu_active; //为1进入MENU菜单,主要用来丢掉从目录选择时长按mode键返回
; 15.	int ui_stop_loop(void);
; 16.	extern void make_dirname(void);
; 17.	
; 18.	//======================================================================================
; 19.	//RESULT_CURR_UI: 还要处在当前界面
; 20.	//RESULT_UI_STOP: 到UI_STOP界面(因现在就是UI_STOP界面,所以同上)
; 21.	//RESULT_LAST_UI: 到上一级界面
; 22.	//--------------------------------------------------------------------------------------
; 23.	#pragma codeseg(AP_UI_STP)
; 24.	
; 25.	int time_cmp(const AmvFileBreakPntInfor *time1, const time_t *time2)
; 26.	{
	PUSH	IY
	PUSH	IX
	PUSH	DE
	POP	IX
	PUSH	BC
	POP	IY
; 27.	    if(time1->TimeHou == time2->hour)
	LD	A,(BC)
	LD	B,A
	LD	HL,6
	ADD	HL,DE
	LD	A,(HL)
	CP	B
	JR	NZ,?0003
?0002:
; 28.	    {
; 29.	        if(time1->TimeMin == time2->minute)
	LD	A,(IX+5)
	CP	(IY+1)
	JR	NZ,?0005
?0004:
; 30.	        {
; 31.	            if(time1->TimeSec == time2->second)
	LD	A,(IX+4)
	CP	(IY+2)
	JR	NZ,?0007
?0006:
; 32.	            {
; 33.	                return 0;
	LD	HL,0
; 34.	            }
	JR	?0008
?0007:
; 35.	            else
; 36.	            {
; 37.	                return ((int)(time1->TimeSec) - time2->second);
	LD	C,(IY+2)
	LD	B,0
	LD	L,(IX+4)
	JR	?0116
; 38.	            }
?0005:
; 39.	        }
; 40.	        else
; 41.	        {
; 42.	            return ((int)(time1->TimeMin) - time2->minute);
	LD	C,(IY+1)
	LD	B,0
	LD	L,(IX+5)
	JR	?0116
; 43.	        }
?0003:
; 44.	    }
; 45.	    else
; 46.	    {
; 47.	        return ((int)(time1->TimeHou) - time2->hour);
	LD	C,(IY+0)
	LD	B,0
	LD	L,(IX+6)
?0116:
	LD	H,B
	AND	A
	SBC	HL,BC
; 48.	    }
?0008:
	POP	IX
	POP	IY
	JP	LWRD ?BANK_FAST_LEAVE_L08
; 49.	}
ui_stop:
; 50.	
; 51.	int ui_stop(void)
; 52.	{
	PUSH	BC
	PUSH	DE
; 53.	    ap_message_init(NULL);//开始算STANDBY 时间
	CALL	LWRD ?0140
; 54.	    g_menu_active=TRUE;
	LD	A,1
	LD	(g_menu_active),A
?0011:
; 55.	    do
; 56.	    {
; 57.	         if (UpdateFileSelector() == 0)
	LD	A,BYTE3 UpdateFileSelector
	LD	HL,LWRD UpdateFileSelector
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	A,L
	OR	H
	JP	Z,?0119
?0012:
; 58.	         {
; 59.	             return 0;
; 60.	         }
?0013:
; 61.	
; 62.	
; 63.	        g_musicamount = FSELGetTotal(); 
	LD	A,BYTE3 fselGetTotal
	LD	HL,LWRD fselGetTotal
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	A,L
	LD	(g_musicamount),A
; 64.	         if(g_musicamount==0)
	OR	A
	JR	NZ,?0015
?0014:
?0017:
; 65.	        {
; 66.	           // ui_show_msg (MFILEOUT, MFILEOUT, g_comval.langid);
; 67.	            while( ap_get_message() != NULL );//清空消息池,确保DELAY时间准确
	CALL	LWRD ap_get_message
	OR	A
	JR	NZ,?0014
?0018:
?0016:
; 68.	            return  ui_show_msg (DFILEOUT, DFILEOUT, g_langid);
	LD	BC,(g_langid)
	LD	B,A
	PUSH	BC
	LD	BC,402
	LD	E,C
	LD	D,B
	LD	A,BYTE3 ui_show_msg
	LD	HL,LWRD ui_show_msg
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
; 69.	
; 70.	        }
	JP	LWRD ?0022
?0015:
; 71.	
; 72.	        g_musicsequence = FSELGetNo();
	LD	A,BYTE3 fselGetNo
	LD	HL,LWRD fselGetNo
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	A,L
	LD	(g_musicsequence),A
; 73.	        FSELSetMode(FSEL_ALL_REPEATALL);
	LD	E,4
	LD	A,BYTE3 fselSetMode
	LD	HL,LWRD fselSetMode
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 74.	        fselGetLocation(& g_amv_vars.location);         //add by ybfu 2004-12-22 15:26
	CALL	LWRD ?0146
; 75.	        make_dirname();   
	LD	A,BYTE3 make_dirname
	LD	HL,LWRD make_dirname
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 76.	        g_currentMusicType = CheckMusicType(g_amv_vars.location.filename);
	LD	DE,g_amv_vars+31
	LD	A,BYTE3 CheckMusicType
	LD	HL,LWRD CheckMusicType
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	A,L
	LD	(g_currentMusicType),A
; 77.	      
; 78.	         g_result = FSELGetNext(g_amv_vars.location.filename);    
	LD	DE,g_amv_vars+31
	LD	A,BYTE3 fselGetNextFile
	LD	HL,LWRD fselGetNextFile
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	H,0
; 79.	         fselGetLocation(& g_amv_vars.location); 
	CALL	LWRD ?0147
; 80.	         GetInformation(); //取文件信息
	CALL	LWRD ?0142
; 81.	         memcpy(g_TagInfoBuf1, g_TagInfoBuf, 20);
; 82.	         //g_TagInfoBuf1[18]=0;
; 83.	         g_TagInfoBuf1[20]=0;
; 84.	         g_result = FSELGetPrev(g_amv_vars.location.filename); 
	LD	DE,g_amv_vars+31
	LD	A,BYTE3 fselGetPrevFile
	LD	HL,LWRD fselGetPrevFile
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	H,B
; 85.	         fselGetLocation(& g_amv_vars.location);  
	CALL	LWRD ?0147
; 86.	         GetInformation(); //取文件信息   
	CALL	LWRD ?0143
; 87.	         
; 88.	        PlayStatus = StopSta;
	XOR	A
	LD	(PlayStatus),A
; 89.	        need_draw = TRUE;
	LD	A,1
	LD	(need_draw),A
; 90.	        FSELSetMode(g_amv_vars.repeat_mode);
	LD	DE,(g_amv_vars+3)
	LD	A,BYTE3 fselSetMode
	LD	HL,LWRD fselSetMode
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 91.	        g_result = ui_stop_loop();
	LD	A,BYTE3 ui_stop_loop
	LD	HL,LWRD ui_stop_loop
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(g_result),HL
; 92.	
; 93.	    }while( (g_result == RESULT_CURR_UI)
; 94.	                || (g_result == RESULT_UI_STOP)
; 95.	                || (g_result == RESULT_UI_STOP2) );//还保持在ui_stop界面
	LD	A,L
	OR	H
	JP	Z,?0011
	LD	A,102
	XOR	L
	OR	H
	JP	Z,?0011
	LD	A,103
	XOR	L
	OR	H
	JP	Z,?0011
?0009:
; 96.	    if (g_result == RESULT_LAST_UI)
	LD	A,101
	XOR	L
	OR	H
	JR	NZ,?0022
?0021:
; 97.	    {
; 98.	        return NULL;//不带参数回到上一级
?0119:
	LD	HL,0
; 99.	    }
?0022:
; 100.	    return g_result;//带参数回到上一级
; 101.	}
?0023:
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0140:
	LD	DE,0
?0141:
	LD	A,BYTE3 ap_message_init
	LD	HL,LWRD ap_message_init
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0142:
	LD	A,BYTE3 GetInformation
	LD	HL,LWRD GetInformation
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	BC,20
	LD	DE,g_TagInfoBuf1
	LD	HL,g_TagInfoBuf
	LDIR
	XOR	A
	LD	(g_TagInfoBuf1+20),A
	RET
?0144:
	LD	E,4
?0145:
	LD	A,BYTE3 ChangeMusic
	LD	HL,LWRD ChangeMusic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	H,0
	LD	(g_result),HL
?0143:
	LD	A,BYTE3 GetInformation
	LD	HL,LWRD GetInformation
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0147:
	LD	(g_result),HL
?0146:
	LD	DE,g_amv_vars+5
	LD	A,BYTE3 fselGetLocation
	LD	HL,LWRD fselGetLocation
	JP	LWRD ?BANK_CALL_DIRECT_L08
ui_stop_loop:
; 102.	//======================================================================================
; 103.	
; 104.	int ui_stop_loop()
; 105.	{
	PUSH	BC
	PUSH	DE
	PUSH	IX
	PUSH	AF
; 106.	     char key;
; 107.	    int  result;
; 108.	
; 109.	    if(time_cmp(&g_amv_vars.amvfilebreakpoint,
; 110.	                    &Totaltime) > 0)
	LD	BC,Totaltime
	LD	DE,g_amv_vars+46
	LD	A,BYTE3 time_cmp
	LD	HL,LWRD time_cmp
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	C,L
	LD	B,H
	LD	HL,0
	OR	128
	SBC	HL,BC
	JP	PO,?0131
	XOR	H
?0131:
	JP	P,?0025
?0024:
; 111.	    {
; 112.	        ClearTimePara();//时间断点参数从0开始
	LD	A,BYTE3 ClearTimePara
	LD	HL,LWRD ClearTimePara
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0025:
?0027:
; 113.	    }
; 114.	
; 115.	    while (1)
; 116.	    {
; 117.	        if (need_draw)
	LD	A,(need_draw)
	OR	A
	JR	Z,?0030
?0029:
; 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
?0030:
; 121.	        }
; 122.	
; 123.	        key = ap_get_message();
	CALL	LWRD ap_get_message
; 124.	
; 125.	        switch (key)
	LD	E,A
	CALL	LWRD ?C_V_SWITCH_L06
	DEFW	17
	DEFB	3
	DEFB	4
	DEFB	5
	DEFB	6
	DEFB	16
	DEFB	27
	DEFB	28
	DEFB	33
	DEFB	37
	DEFB	38
	DEFB	48
	DEFB	55
	DEFB	67
	DEFB	68
	DEFB	69
	DEFB	70
	DEFB	129
	DEFW	?0106
	DEFW	?0032
	DEFW	?0095
	DEFW	?0085
	DEFW	?0099
	DEFW	?0099
	DEFW	?0103
	DEFW	?0074
	DEFW	?0091
	DEFW	?0081
	DEFW	?0033
	DEFW	?0102
	DEFW	?0102
	DEFW	?0076
	DEFW	?0095
	DEFW	?0085
	DEFW	?0099
	DEFW	?0099
?0032:
; 126.	        {
; 127.	            case AP_KEY_PLAY | AP_KEY_LONG:
; 128.	                return RESULT_STANDBY;
	LD	HL,2
; 129.	                break;
	JP	LWRD ?0112
?0033:
; 130.	
; 131.	            case AP_KEY_PLAY | AP_KEY_UP:
; 132.	                 ui_run_realtime = TRUE;
	LD	A,1
	LD	(ui_run_realtime),A
; 133.	//                g_changevolume=0x00;
; 134.	             {
; 135.	               //comval_t g_comval;
; 136.	               //LightOnOff(1);
; 137.	               VMRead(& g_comval, VM_SYSTEM, sizeof(g_comval));
	LD	HL,32
	PUSH	HL
	LD	BC,512
	LD	DE,g_comval
	CALL	LWRD VMRead

⌨️ 快捷键说明

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