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

📄 ui_stop_menu.s01

📁 MP3 整个 SDK
💻 S01
📖 第 1 页 / 共 2 页
字号:
	NAME	ui_stop_menu(17)
	RSEG	AP_UI_MNU_STOP(0)
	RSEG	IDATA0(0)
	RSEG	CDATA0(0)
	RSEG	APC_UI_MNU_STOP(0)
	EXTERN	BankSwitch
	EXTERN	ClearScreen
	EXTERN	ClearTimePara
	EXTERN	DRV_ActiveUD
	EXTERN	DRV_DetectUD
	EXTERN	DisplayErrInfor
	EXTERN	DisplayErrMsg
	EXTERN	NoCardCaseInStopMenu
	PUBLIC	PLFileName
	PUBLIC	dir_string
	PUBLIC	dir_string_card
	EXTERN	fselGetLocation
	EXTERN	fselGetNextFile
	EXTERN	fselInit
	EXTERN	fselPlayListEnt
	EXTERN	fselSetLocation
	EXTERN	fselSetMode
	EXTERN	g_DiskStateFlag
	EXTERN	g_comval
	EXTERN	g_music_vars
	EXTERN	list
	EXTERN	musicpSendCommand
	EXTERN	ui_delete_Music
	EXTERN	ui_directory
	EXTERN	ui_licensinf
	EXTERN	ui_playlist
	EXTERN	ui_popup_list
	PUBLIC	ui_stop_menu
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?SS_CMP_L02
	EXTERN	?S_S_SWITCH_L06
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_LEAVE_DIRECT_L08
	EXTERN	?ENT_AUTO_DIRECT_L09
	RSEG	AP_UI_MNU_STOP
ui_stop_menu:
; 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_menu.c,v 1.2 2006/07/14 06:46:20 tangwh Exp $
; 9.	*******************************************************************************
; 10.	*/
; 11.	#include "ap_music.h"
; 12.	            
; 13.	             
; 14.	extern int test_cow1; 
; 15.	#pragma memory=constseg(APC_UI_MNU_STOP)
; 16.	
; 17.	const char PLFileName[5][12] = {"MYLIST  A3L","ARTIST  A3L","ALBUM   A3L","GENRE   A3L","COMPOSERA3L"
; 18.	}; 
; 19.	
; 20.	 
; 21.	
; 22.	const WORD dir_string_card[6+5] =
; 23.	{
; 24.	    MSTOP6, MSTOP7,MSTOP8, MSTOP9, MSTOP10, MSTOP11, MSTOP1, MSTOP2, MSTOP3, MSTOP4, MSTOP5
; 25.	};
; 26.	
; 27.	 
; 28.	const WORD dir_string[6+4] =
; 29.	{
; 30.	    MSTOP6, MSTOP7,MSTOP8, MSTOP9, MSTOP10, MSTOP11, MSTOP1, MSTOP3, MSTOP4, MSTOP5
; 31.	};
; 32.	
; 33.	#pragma memory=default
; 34.	extern void make_dirname(void);
; 35.	int ui_licensinf(int string_id);
; 36.	int ui_delete_Music( int type );
; 37.	int NoCardCaseInStopMenu(int active);
; 38.	
; 39.	#pragma codeseg(AP_UI_MNU_STOP)
; 40.	
; 41.	int ui_stop_menu( void )
; 42.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65532
; 43.	    int result;
; 44.	    bool tmpflag = FALSE;
; 45.	    static char StopMenuactive=0;    //保持选中菜单的序号
; 46.	    
; 47.	    ClearScreen(NULL);
	LD	DE,0
	CALL	LWRD ClearScreen
; 48.	        
; 49.	    list.headid = STOPMENU;
	LD	HL,490
	LD	(list+6),HL
; 50.	    if (DRV_DetectUD(1) == 0x20)
	LD	E,H
	CALL	LWRD ?0102
	JR	NZ,?0004
?0003:
; 51.	    {
; 52.	        //有卡时的显示
; 53.	        list.total = sizeof(dir_string_card) / 2;
	LD	HL,11
	LD	(list+2),HL
; 54.	 
; 55.	        list.strid = dir_string_card;
	LD	HL,dir_string_card
	LD	(list),HL
; 56.	    }    
; 57.	    else
	JR	?0007
?0004:
; 58.	    {
; 59.	        //无卡时的显示
; 60.	        list.total = sizeof(dir_string) / 2;
	LD	HL,10
	LD	(list+2),HL
; 61.	        list.strid = dir_string;
	LD	HL,dir_string
	LD	(list),HL
; 62.	        if (StopMenuactive  >= list.total)
	LD	BC,(list+2)
	LD	HL,(?0002)
	LD	H,0
	CALL	LWRD ?SS_CMP_L02
	JR	C,?0007
?0006:
; 63.	        {
; 64.	            StopMenuactive--;
	LD	HL,?0002
	DEC	(HL)
?0007:
?0005:
; 65.	        }
; 66.	    } 
; 67.	    list.string_id = g_comval.langid;    
	LD	A,(g_comval+12)
	LD	(list+8),A
; 68.	    list.active = StopMenuactive;
	LD	BC,(?0002)
	LD	B,0
	LD	(list+4),BC
; 69.	    
; 70.	    CLEAR_WATCHDOG();
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 71.	    result = ui_popup_list(&list, NULL);
	LD	C,B
	PUSH	BC
	PUSH	BC
	LD	DE,list
	LD	A,BYTE3 ui_popup_list
	LD	HL,LWRD ui_popup_list
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
	LD	(IX-4),L
	LD	(IX-3),H
; 72.	    StopMenuactive = list.active;
	LD	A,(list+4)
	LD	(?0002),A
; 73.	
; 74.	    if (result != 0)
	LD	A,L
	OR	H
	JP	NZ,?0095
?0008:
; 75.	    {
; 76.	        return result;
; 77.	    }
?0009:
; 78.	
; 79.	    //如下加快其他项的退出速度
; 80.	
; 81.	    if (DRV_DetectUD(1) == 0x20)
	CALL	LWRD ?0103
	JR	NZ,?0011
?0010:
; 82.	    {
; 83.	        // 有卡
; 84.	        // DRV_DetectUD() 之后必须加上DRV_ActiveUD(),
; 85.	        // 否则系统无法对卡进行读写操作.
; 86.	            if(g_music_vars.location.disk == 'H')
	LD	A,(g_music_vars+7)
	CP	72
	LD	C,1
	JR	NZ,?0013
?0012:
; 87.	                DRV_ActiveUD(1, MODE_SLOW);
	LD	E,C
	JR	?0093
; 88.	            else
?0013:
; 89.	                DRV_ActiveUD(0, MODE_SLOW);         
	LD	E,B
?0093:
	CALL	LWRD DRV_ActiveUD
?0014:
; 90.	        switch (list.active)
	LD	BC,(list+4)
	LD	A,5
	XOR	C
	OR	B
	JR	Z,?0100
?0016:
; 91.	        {
; 92.	        case 5://licens informations
; 93.	            ui_licensinf(g_comval.langid);
; 94.	            return RESULT_IGNORE;    
; 95.	        
; 96.	        case 10://exit
?0017:
	LD	A,10
	XOR	C
	OR	B
	JR	NZ,?0019
; 97.	            return RESULT_IGNORE;
	JR	?0099
; 98.	        }            
?0015:
; 99.	    }
; 100.	    else
?0011:
; 101.	    {
; 102.	        //无卡
; 103.	        switch (list.active)
	LD	BC,(list+4)
	LD	A,5
	XOR	C
	OR	B
	JR	NZ,?0021
?0020:
; 104.	        {
; 105.	        case 5://licens informations
; 106.	            ui_licensinf(g_comval.langid);    
?0100:
	LD	DE,(g_comval+12)
	LD	D,A
	LD	A,BYTE3 ui_licensinf
	LD	HL,LWRD ui_licensinf
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 107.	            return RESULT_IGNORE;
	JR	?0099
; 108.	        
; 109.	        case 9://exit
?0021:
	LD	A,9
	XOR	C
	OR	B
	JR	Z,?0099
; 110.	            return RESULT_IGNORE;
; 111.	        }            
?0019:
?0018:
; 112.	    }        
; 113.	
; 114.	    
; 115.	    BankSwitch((unsigned long)FSELInit >> 16);
	LD	B,0
	LD	E,BYTE3 fselInit
	LD	C,B
	CALL	LWRD BankSwitch
; 116.	    fselGetLocation(& g_music_vars.location);
	CALL	LWRD ?0104
; 117.	        
; 118.	    if (g_music_vars.location.disk == 'H')
	LD	A,(g_music_vars+7)
	CP	72
	JR	NZ,?0025
?0022:
; 119.	        //&& (menu.active != 0) )
; 120.	    {
; 121.	        //因为在控件 ui_function_menu 中不好检测卡拔出,所以这里再测一次
; 122.	        if (DRV_DetectUD(1) != 0x20)        
	CALL	LWRD ?0103
	JR	Z,?0025
?0024:
; 123.	        {
; 124.	            DisplayErrMsg(CARDPULL);//显示卡拔出
	CALL	LWRD ?0105
; 125.	            g_music_vars.location.disk = 'C';
	LD	A,67
	LD	(g_music_vars+7),A
; 126.	            //return RESULT_SD_OUT;
; 127.	            return RESULT_IGNORE;
?0099:
	LD	HL,52
; 128.	        }
	JP	LWRD ?0089
?0025:
?0023:
; 129.	    }
; 130.	    
; 131.	    musicpSendCommand(MC_CLOSE, NULL);
	LD	E,2
	LD	A,BYTE3 musicpSendCommand
	LD	HL,LWRD musicpSendCommand
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 132.	
; 133.	    if (list.active < 5)
	LD	HL,(list+4)
	LD	BC,32773
	LD	A,B
	XOR	H
	LD	H,A
	SBC	HL,BC
	JP	NC,?0027
?0026:
; 134.	    {
; 135.	        //前面调用PLAYLIST控件选中对应的PLAYLIST                                    
; 136.	        if (g_music_vars.fselmod == FSEL_TYPE_COMMONDIR)
	LD	A,(g_music_vars+79)
	OR	A
	JP	NZ,?0029
?0028:
; 137.	        {    
; 138.	            //dir -> playlist
; 139.	            FSELInit(FSEL_TYPE_MUSIC, FSEL_ALL_REPEATALL, FSEL_TYPE_PLAYLIST, g_music_vars.location.disk);//初始化playlist
	LD	HL,g_music_vars+7
	LD	C,(HL)
	PUSH	BC
	LD	C,1
	PUSH	BC
	LD	C,4
	LD	E,A
	CALL	LWRD ?0106
	POP	AF
	POP	AF
; 140.	            g_music_vars.fselmod = FSEL_TYPE_PLAYLIST;
	LD	A,1
	LD	(g_music_vars+79),A
; 141.	            if (!fselPlayListEnt(PLFileName[list.active]))
	LD	HL,(list+4)
	ADD	HL,HL
	ADD	HL,HL
	LD	C,L
	LD	B,H
	ADD	HL,HL
	ADD	HL,BC
	LD	BC,PLFileName
	ADD	HL,BC
	EX	DE,HL
	LD	A,BYTE3 fselPlayListEnt
	LD	HL,LWRD fselPlayListEnt
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	INC	L
	DEC	L
	JR	NZ,?0031
?0030:
?0032:
; 142.	            {
; 143.	listenterr:
; 144.	                //不能进入PLAYLIST的情况
; 145.	                FSELInit(FSEL_TYPE_MUSIC, FSEL_ALL_REPEATALL, FSEL_TYPE_COMMONDIR,g_music_vars.location.disk);//初始化文件选择器
	LD	HL,g_music_vars+7
	LD	C,(HL)
	PUSH	BC
	LD	C,0
	PUSH	BC
	CALL	LWRD ?0107
	POP	AF
	POP	AF
; 146.	                FSELGetNext(g_music_vars.location.filename);
	LD	DE,g_music_vars+33
	LD	A,BYTE3 fselGetNextFile
	LD	HL,LWRD fselGetNextFile
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 147.	                g_music_vars.fselmod = FSEL_TYPE_COMMONDIR;
	XOR	A
	LD	(g_music_vars+79),A
; 148.	                result = RESULT_IGNORE;
	LD	(IX-4),52
	LD	(IX-3),A
; 149.	            } 
; 150.	            else
	JR	?0035
?0031:
; 151.	            {
; 152.	                //有PLAYLIST的情况
; 153.	                if (fselGetLocation(&g_music_vars.location))                                 
	CALL	LWRD ?0104
	INC	L
	DEC	L
	JR	Z,?0035
?0034:
; 154.	                {                    
; 155.	                    result = ui_playlist(&g_music_vars.location, DIRECTORY_MUSIC,
; 156.	                                     g_comval.langid);  
	LD	HL,g_comval+12
	LD	C,(HL)
	PUSH	BC
	CALL	LWRD ?0108
	POP	AF
	LD	(IX-4),L
	LD	(IX-3),H
; 157.	                    output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 158.	                    if (result == RESULT_IGNORE)
	LD	A,52
	XOR	L
	OR	H
	JR	Z,?0030
?0036:
; 159.	                    {
; 160.	                        goto listenterr;
?0037:
; 161.	                    }
; 162.	                    else
; 163.	                    {
; 164.	                        FSELGetNext(g_music_vars.location.filename);
	LD	DE,g_music_vars+33
	LD	A,BYTE3 fselGetNextFile
	LD	HL,LWRD fselGetNextFile
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0035:
?0033:
; 165.	                    }
; 166.	                }
; 167.	            }    
; 168.	
; 169.	 
; 170.	        }
; 171.	        
; 172.	        else
	JP	LWRD ?0052
?0029:
; 173.	        {            
; 174.	            bool tmpflag = FALSE;
	LD	(IX-1),0
; 175.	            //从 playlist -> playlist                        
; 176.	            if (list.active != g_music_vars.play_listmod)
	LD	BC,(g_music_vars+78)
	LD	B,0
	LD	HL,(list+4)
	AND	A
	SBC	HL,BC
	JR	Z,?0040
?0039:
; 177.	            {
; 178.	                if (!fselPlayListEnt(PLFileName[list.active]))
	LD	HL,(list+4)
	ADD	HL,HL
	ADD	HL,HL
	LD	C,L
	LD	B,H
	ADD	HL,HL
	ADD	HL,BC
	LD	BC,PLFileName
	ADD	HL,BC
	EX	DE,HL
	LD	A,BYTE3 fselPlayListEnt
	LD	HL,LWRD fselPlayListEnt
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	INC	L
	DEC	L
	JR	NZ,?0042
?0041:
?0043:
; 179.	                {
; 180.	listenterr1:                    
; 181.	                    //不能进入PLAYLIST的情况
; 182.	                    FSELInit(FSEL_TYPE_MUSIC, FSEL_ALL_REPEATALL, FSEL_TYPE_COMMONDIR,g_music_vars.location.disk);//初始化文件选择器
	LD	HL,g_music_vars+7
	LD	C,(HL)
	PUSH	BC
	LD	C,0
	PUSH	BC
	CALL	LWRD ?0107
	POP	AF
	POP	AF

⌨️ 快捷键说明

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