ui_stop_menu.s01

来自「炬力方案176*132软件源码,适用于AK1025」· S01 代码 · 共 1,223 行 · 第 1/3 页

S01
1,223
字号
	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	DeleteAllSelSegment
	EXTERN	DisplayErrInfor
	EXTERN	DisplayErrMsg
	EXTERN	MusicEditEndTime
	EXTERN	MusicEditStartTime
	EXTERN	MusicEdit_SelSeg
	EXTERN	NoCardCaseInStopMenu
	PUBLIC	PLFileName
	EXTERN	ResShowMultiString
	EXTERN	ResShowPic
	EXTERN	SetDealCommamd
	PUBLIC	UI_DeleteAllSelSegment
	PUBLIC	UI_InsertRec
	PUBLIC	UI_InsertSeg
	PUBLIC	UI_SongComp
	EXTERN	ap_get_message
	PUBLIC	dir_string
	PUBLIC	dir_string_card
	EXTERN	fselGetLocation
	EXTERN	fselGetNextFile
	EXTERN	fselInit
	EXTERN	fselPlayListExit
	EXTERN	fselSetMode
	EXTERN	g_DiskStateFlag
	EXTERN	g_comval
	EXTERN	g_currentMusicType
	EXTERN	g_file_list_total
	EXTERN	g_music_vars
	EXTERN	list
	EXTERN	m_mp3deOpenparam
	EXTERN	musicpSendCommand
	EXTERN	ui_delete_Music
	EXTERN	ui_directory
	EXTERN	ui_licensinf
	EXTERN	ui_popup_list
	PUBLIC	ui_stop_menu
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?SS_CMP_L02
	EXTERN	?S_S_SWITCH_L06
	EXTERN	?C_V_SWITCH_L06
	EXTERN	?S_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_MNU_STOP
UI_InsertSeg:
; 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.	
; 16.	extern STRU_SelMusicSegment MusicEdit_SelSeg;
; 17.	extern time_t MusicEditStartTime;
; 18.	extern time_t MusicEditEndTime;
; 19.	extern HANDLE m_Mp3deFileHandle;
; 20.	extern Open_param_t* m_mp3deOpenparam;
; 21.	
; 22.	#pragma memory=constseg(APC_UI_MNU_STOP)
; 23.	
; 24.	const char PLFileName[5][12] = {"MYLIST  A3L","ARTIST  A3L","ALBUM   A3L","GENRE   A3L","COMPOSERA3L"
; 25.	};
; 26.	
; 27.	//const WORD dir_string_card[6+9] =
; 28.	const WORD dir_string_card[5] =
; 29.	{
; 30.	    /*MSTOP6, MSTOP7,MSTOP8, MSTOP9, MSTOP10, MSTOP11,*/ MSTOP1, MSTOP2, MSTOP3, MSTOP4, /*10 insseg*//*MPLAY9,*//*insrec*//*MPLAY11,SONGCOM,DELSELLS,*/MSTOP5
; 31.	};
; 32.	
; 33.	//const WORD dir_string[6+8] =
; 34.	const WORD dir_string[4] =
; 35.	{
; 36.	    /*MSTOP6, MSTOP7,MSTOP8, MSTOP9, MSTOP10, MSTOP11,*/ MSTOP1, MSTOP3, MSTOP4, /*9 insseg*//*MPLAY9,*//*insrec*//*MPLAY11,SONGCOM,DELSELLS,*/MSTOP5
; 37.	};
; 38.	
; 39.	#pragma memory=default
; 40.	extern void make_dirname(void);
; 41.	int ui_licensinf(int string_id);
; 42.	int ui_delete_Music( int type );
; 43.	int NoCardCaseInStopMenu(int active);
; 44.	void UI_DeleteAllSelSegment(BYTE lang_id);
; 45.	#pragma codeseg(AP_UI_MNU_STOP)
; 46.	
; 47.	int UI_InsertSeg(void)
; 48.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65534
; 49.	    uchar IMK_Reg;
; 50.	
; 51.	    if(g_currentMusicType!=Music_MP3)
	LD	A,(g_currentMusicType)
	DEC	A
	JR	NZ,?0005
?0002:
; 52.	        return RESULT_IGNORE;
?0003:
; 53.	
; 54.	    IMK_Reg=input8(0x27);
	IN	A,(39)
	LD	(IX-2),A
; 55.	    output8(0x27,0);
	XOR	A
	OUT	(39),A
; 56.	    MusicEdit_SelSeg.StartSec=m_mp3deOpenparam->BreakPTSave->breakPT;
	LD	HL,(m_mp3deOpenparam)
	INC	HL
	INC	HL
	LD	A,(HL)
	INC	HL
	LD	H,(HL)
	LD	L,A
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	INC	HL
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	EX	DE,HL
	LD	(MusicEdit_SelSeg),HL
	LD	(MusicEdit_SelSeg+2),BC
; 57.	    MusicEdit_SelSeg.location=& g_music_vars.location;
	LD	HL,g_music_vars+7
	LD	(MusicEdit_SelSeg+8),HL
; 58.	    MusicEdit_SelSeg.StartTime=&MusicEditStartTime;
	LD	HL,MusicEditStartTime
	LD	(MusicEdit_SelSeg+10),HL
; 59.	    MusicEdit_SelSeg.EndTime=&MusicEditEndTime;
	LD	HL,MusicEditEndTime
	LD	(MusicEdit_SelSeg+12),HL
; 60.	    output8(0x27,IMK_Reg);
	LD	A,(IX-2)
	OUT	(39),A
; 61.	
; 62.	    if(SetDealCommamd(&MusicEdit_SelSeg,MUSICEDIT_CMD_INSSEL,NULL))
	LD	HL,0
	PUSH	HL
	LD	BC,4
	CALL	LWRD ?0133
	POP	AF
	INC	L
	DEC	L
	JR	Z,?0005
?0004:
; 63.	    {
; 64.	        return RESULT_MUSICEDIT;// return to musicedit ap
	LD	HL,15
; 65.	    }
	JR	?0006
?0005:
; 66.	    return RESULT_IGNORE;    
	LD	HL,52
; 67.	}
?0006:
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0133:
	LD	DE,MusicEdit_SelSeg
?0134:
	LD	A,BYTE3 SetDealCommamd
	LD	HL,LWRD SetDealCommamd
	JP	LWRD ?BANK_CALL_DIRECT_L08
UI_InsertRec:
; 68.	
; 69.	int UI_InsertRec(void)
; 70.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65534
; 71.	    uchar IMK_Reg;
; 72.	
; 73.	    if(g_currentMusicType!=Music_MP3)
	LD	A,(g_currentMusicType)
	DEC	A
	JR	NZ,?0010
?0007:
; 74.	        return RESULT_IGNORE;
?0008:
; 75.	
; 76.	    IMK_Reg=input8(0x27);
	IN	A,(39)
	LD	(IX-2),A
; 77.	    output8(0x27,0);
	XOR	A
	OUT	(39),A
; 78.	    MusicEdit_SelSeg.StartSec=m_mp3deOpenparam->BreakPTSave->breakPT;
	LD	HL,(m_mp3deOpenparam)
	INC	HL
	INC	HL
	LD	A,(HL)
	INC	HL
	LD	H,(HL)
	LD	L,A
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	INC	HL
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	EX	DE,HL
	LD	(MusicEdit_SelSeg),HL
	LD	(MusicEdit_SelSeg+2),BC
; 79.	    MusicEdit_SelSeg.location=& g_music_vars.location;
	LD	HL,g_music_vars+7
	LD	(MusicEdit_SelSeg+8),HL
; 80.	    MusicEdit_SelSeg.StartTime=&MusicEditStartTime;
	LD	HL,MusicEditStartTime
	LD	(MusicEdit_SelSeg+10),HL
; 81.	    MusicEdit_SelSeg.EndTime=&MusicEditEndTime;
	LD	HL,MusicEditEndTime
	LD	(MusicEdit_SelSeg+12),HL
; 82.	    output8(0x27,IMK_Reg);
	LD	A,(IX-2)
	OUT	(39),A
; 83.	
; 84.	    if(SetDealCommamd(&MusicEdit_SelSeg,MUSICEDIT_CMD_INSREC,NULL))
	LD	HL,0
	PUSH	HL
	LD	BC,5
	CALL	LWRD ?0133
	POP	AF
	INC	L
	DEC	L
	JR	Z,?0010
?0009:
; 85.	    {
; 86.	        return RESULT_MUSICEDIT;// return to musicedit ap
	LD	HL,15
; 87.	    }
	JR	?0011
?0010:
; 88.	    return RESULT_IGNORE;    
	LD	HL,52
; 89.	}
?0011:
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
UI_SongComp:
; 90.	
; 91.	int UI_SongComp(void)
; 92.	{
	PUSH	BC
	PUSH	DE
	LD	HL,0
	PUSH	HL
	LD	BC,6
	EX	DE,HL
	CALL	LWRD ?0134
	POP	AF
	INC	L
	DEC	L
	JR	Z,?0013
; 93.	    if(SetDealCommamd(NULL,MUSICEDIT_CMD_COMFILE,NULL))
?0012:
; 94.	    {
; 95.	        return RESULT_MUSICEDIT;// return to musicedit ap
	LD	HL,15
; 96.	    }
	JR	?0014
?0013:
; 97.	    return RESULT_IGNORE;    
	LD	HL,52
; 98.	}
?0014:
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
ui_stop_menu:
; 99.	
; 100.	int ui_stop_menu( void )
; 101.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65532
; 102.	    int result;
; 103.	    bool tmpflag = FALSE;
; 104.	    static char StopMenuactive=0;    //保持选中菜单的序号
; 105.	    
; 106.	    ClearScreen(NULL);
	LD	DE,0
	CALL	LWRD ClearScreen
; 107.	        
; 108.	    list.headid = STOPMENU;
	LD	HL,395
	LD	(list+6),HL
; 109.	    if (DRV_DetectUD(1) == 0x20)
	LD	E,H
	CALL	LWRD ?0135
	JR	NZ,?0017
?0016:
; 110.	    {
; 111.	        //有卡时的显示
; 112.	        list.total = sizeof(dir_string_card) / 2;
	LD	HL,5
	LD	(list+2),HL
; 113.	 
; 114.	        list.strid = dir_string_card;
	LD	HL,dir_string_card
	LD	(list),HL
; 115.	    }    
; 116.	    else
	JR	?0020
?0017:
; 117.	    {
; 118.	        //无卡时的显示
; 119.	        list.total = sizeof(dir_string) / 2;
	LD	HL,4
	LD	(list+2),HL
; 120.	        list.strid = dir_string;
	LD	HL,dir_string
	LD	(list),HL
; 121.	        if (StopMenuactive  >= list.total)
	LD	BC,(list+2)
	LD	HL,(?0015)
	LD	H,0
	CALL	LWRD ?SS_CMP_L02
	JR	C,?0020
?0019:
; 122.	        {
; 123.	            StopMenuactive--;
	LD	HL,?0015
	DEC	(HL)
?0020:
?0018:
; 124.	        }
; 125.	    } 
; 126.	    list.string_id = g_comval.langid;    
	LD	A,(g_comval+12)
	LD	(list+8),A
; 127.	    list.active = StopMenuactive;
	LD	BC,(?0015)
	LD	B,0
	LD	(list+4),BC
; 128.	    
; 129.	    CLEAR_WATCHDOG();
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 130.	    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
; 131.	    StopMenuactive = list.active;
	LD	A,(list+4)
	LD	(?0015),A
; 132.	
; 133.	    if (result != 0)
	LD	A,L
	OR	H
	JP	NZ,?0111
?0021:
; 134.	    {
; 135.	        return result;
; 136.	    }
?0022:
; 137.	
; 138.	    //如下加快其他项的退出速度
; 139.	
; 140.	    if (DRV_DetectUD(1) == 0x20)
	CALL	LWRD ?0136
	JR	NZ,?0024
?0023:
; 141.	    {
; 142.	        // 有卡
; 143.	        // DRV_DetectUD() 之后必须加上DRV_ActiveUD(),
; 144.	        // 否则系统无法对卡进行读写操作.
; 145.	            if(g_music_vars.location.disk == 'H')
	LD	A,(g_music_vars+7)
	CP	72
	LD	C,1
	JR	NZ,?0026
?0025:
; 146.	                DRV_ActiveUD(1, MODE_SLOW);
	LD	E,C
	JR	?0109
; 147.	            else
?0026:
; 148.	                DRV_ActiveUD(0, MODE_SLOW);         
	LD	E,B
?0109:
	CALL	LWRD DRV_ActiveUD
?0027:
; 149.	        switch (list.active)

⌨️ 快捷键说明

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