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

📄 main.s01

📁 炬力方案176*132软件源码,适用于AK1025
💻 S01
📖 第 1 页 / 共 2 页
字号:
	NAME	main(17)
	RSEG	CODE(0)
	RSEG	CSTR(0)
	RSEG	CONST(0)
	RSEG	UDATA0(0)
	RSEG	IDATA0(0)
	RSEG	CDATA0(0)
	PUBLIC	ActiveDriveOK
	EXTERN	BankSwitch
	EXTERN	ClearScreen
	EXTERN	DRV_ActiveDrive
	EXTERN	DRV_ActiveUD
	EXTERN	DRV_DetectUD
	PUBLIC	File_Type
	EXTERN	GetDefaultComval
	EXTERN	ResClose
	EXTERN	ResOpen
	EXTERN	ResShowMultiString
	EXTERN	SetBackgdColor
	EXTERN	SetPenColor
	EXTERN	VMRead
	EXTERN	VMWrite
	EXTERN	ap_get_message
	EXTERN	ap_message_init
	EXTERN	ap_sleep
	EXTERN	fselGetLocation
	EXTERN	fselInit
	PUBLIC	g_DiskStateFlag
	PUBLIC	g_Resfp_Sav
	PUBLIC	g_browser_vars
	PUBLIC	g_comval
	PUBLIC	g_langid
	PUBLIC	g_menu_active
	PUBLIC	g_result
	PUBLIC	main
	PUBLIC	menu
	PUBLIC	need_draw
	PUBLIC	read_var
	EXTERN	ui_show_a
	EXTERN	ui_show_msg
	EXTERN	ui_stop
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?STRCPY_L11
	EXTERN	?STRCMP_L11
	RSEG	CODE
main:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                        SDK30F_D1
; 4.	*                     music player main sub
; 5.	*
; 6.	*                (c) Copyright 2002, Actions Co,Ld.
; 7.	*                        All Right Reserved
; 8.	*
; 9.	* File: main.c
; 10.	* By  : rcmai
; 11.	* Version: 1> v1.00     first version     2004-3-19 8:28
; 12.	*******************************************************************************
; 13.	* $Id: main.c,v 1.1.1.1 2006/04/21 08:22:43 selina Exp $
; 14.	*******************************************************************************
; 15.	*/
; 16.	#include "ap_browser.h"
; 17.	comval_t g_comval; //系统变量,ap不能更改
; 18.	BYTE g_langid ;//记录系统语言
; 19.	bool g_menu_active; //为1进入MENU菜单,主要用来丢掉从目录选择时长按mode键返回 
; 20.	BYTE g_DiskStateFlag = 0;
; 21.	browser_vars_t g_browser_vars;//本AP的公共变量
; 22.	bool need_draw;
; 23.	function_menu_t menu;
; 24.	SD_FILE* g_Resfp_Sav;
; 25.	bool ActiveDriveOK;//磁盘可用标志
; 26.	int g_result;//表示16位变量
; 27.	
; 28.	char File_Type( char * filename );
; 29.	
; 30.	int main( void )
; 31.	{
	PUSH	BC
	PUSH	DE
	PUSH	IX
	PUSH	AF
	PUSH	AF
; 32.	        int mainresult;
; 33.	        int result;
; 34.	        BYTE status;
; 35.	        output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 36.	        //-------安装ud驱动------------
; 37.	        g_Resfp_Sav = ResOpen("ui30.res");
	LD	DE,?0002
	LD	A,BYTE3 ResOpen
	LD	HL,LWRD ResOpen
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(g_Resfp_Sav),HL
; 38.	        if(!g_Resfp_Sav)
	LD	A,L
	OR	H
	JR	NZ,?0004
?0003:
; 39.	        {
; 40.	               ResClose(g_Resfp_Sav);
	EX	DE,HL
	LD	A,BYTE3 ResClose
	LD	HL,LWRD ResClose
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 41.	               return RESULT_MAIN;
	JP	LWRD ?0081
; 42.	        }
?0004:
; 43.	
; 44.	        DRV_ActiveUD(0,MODE_SLOW);
	LD	C,1
	LD	E,0
	CALL	LWRD DRV_ActiveUD
; 45.	        /* 读入公共变量 */
; 46.	        read_var();
	LD	A,BYTE3 read_var
	LD	HL,LWRD read_var
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 47.	        ActiveDriveOK = DRV_ActiveDrive('C', MODE_SLOW); //04-2-28 16:29
	LD	C,1
	LD	E,67
	CALL	LWRD DRV_ActiveDrive
	LD	(ActiveDriveOK),A
; 48.	        if (!ActiveDriveOK)
	OR	A
	JR	NZ,?0006
?0005:
; 49.	        {
; 50.	            ui_show_msg (MREADERR, MREADERR, g_langid);        //temp ybfu
	LD	BC,(g_langid)
	LD	B,A
	PUSH	BC
	LD	BC,508
	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
?0008:
; 51.	            while( ap_get_message() != NULL );//清空消息池,确保DELAY时间准确
	CALL	LWRD ap_get_message
	OR	A
	JR	NZ,?0008
?0009:
?0007:
; 52.	            ap_sleep(4);
	LD	DE,4
	LD	A,BYTE3 ap_sleep
	LD	HL,LWRD ap_sleep
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 53.	            g_browser_vars.location.disk='H';          //磁盘出错 从卡上读文件  zxs  add
	LD	A,72
	LD	(g_browser_vars+2),A
?0006:
; 54.	        }
; 55.	        g_DiskStateFlag |= SetDiskOKFlag_def;//标志 flash 已格式化
	LD	HL,g_DiskStateFlag
	SET	7,(HL)
; 56.	
; 57.	        if (DRV_DetectUD(1) == 0x20)
	LD	E,1
	CALL	LWRD DRV_DetectUD
	CP	32
	JR	NZ,?0011
?0010:
; 58.	        { //有卡
; 59.	            DRV_ActiveUD(1,MODE_SLOW);
	LD	C,1
	LD	E,C
	CALL	LWRD DRV_ActiveUD
; 60.	            if (!DRV_ActiveDrive('H', MODE_SLOW))
	LD	C,1
	LD	E,72
	CALL	LWRD DRV_ActiveDrive
	OR	A
	JR	NZ,?0013
?0012:
; 61.	            {
; 62.	                ui_show_msg (CREADERR, CREADERR, g_comval.langid);        //temp ybfu
	LD	BC,(g_comval+12)
	LD	B,A
	PUSH	BC
	LD	BC,630
	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
?0015:
; 63.	                while( ap_get_message() != NULL );//清空消息池,确保DELAY时间准确
	CALL	LWRD ap_get_message
	OR	A
	JR	NZ,?0015
?0016:
?0014:
; 64.	                ap_sleep(4);
	LD	DE,4
	LD	A,BYTE3 ap_sleep
	LD	HL,LWRD ap_sleep
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 65.	                g_browser_vars.location.disk='C';      //卡出错从Flash磁盘读文件
	LD	A,67
	LD	(g_browser_vars+2),A
; 66.	                if (!ActiveDriveOK)
	LD	A,(ActiveDriveOK)
	OR	A
	JR	NZ,?0022
?0017:
; 67.	                {
; 68.	                    ResClose(g_Resfp_Sav);
	JR	?0082
; 69.	                    return 0;
; 70.	                }
?0018:
; 71.	            }
; 72.	            else
?0013:
; 73.	             g_DiskStateFlag |= SetCardOKFlag_def;//标志 卡 已格式化
	LD	HL,g_DiskStateFlag
	SET	3,(HL)
?0019:
; 74.	        }
; 75.	        else
	JR	?0022
?0011:
; 76.	        { //没卡
; 77.	            g_browser_vars.location.disk='C';      //卡出错从Flash磁盘读文件
	LD	A,67
	LD	(g_browser_vars+2),A
; 78.	            if (!ActiveDriveOK)
	LD	A,(ActiveDriveOK)
	OR	A
	JR	NZ,?0022
?0021:
; 79.	            {
; 80.	                ResClose(g_Resfp_Sav);
?0082:
	LD	DE,(g_Resfp_Sav)
	LD	A,BYTE3 ResClose
	LD	HL,LWRD ResClose
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 81.	                return 0;
	LD	HL,0
; 82.	            }
	JP	LWRD ?0027
?0022:
?0020:
; 83.	        }
; 84.	
; 85.	        SetPenColor(Color_WHITE_def);
	LD	BC,0
	LD	DE,65535
	CALL	LWRD SetPenColor
; 86.	        SetBackgdColor(Color_BLACK_def);
	LD	BC,0
	LD	E,C
	LD	D,B
	CALL	LWRD SetBackgdColor
; 87.	        //show initializing...
; 88.	        ClearScreen(NULL);
	LD	DE,0
	CALL	LWRD ClearScreen
; 89.	        ResShowMultiString(WAITPASS, g_langid, 255, 56);
	LD	C,56
	PUSH	BC
	LD	C,255
	PUSH	BC
	LD	BC,(g_langid)
	LD	DE,600
	LD	A,BYTE3 ResShowMultiString
	LD	HL,LWRD ResShowMultiString
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
; 90.	        
; 91.	        output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 92.	
; 93.	        //把控件的常驻BANK切入
; 94.	        BankSwitch((unsigned long)ui_show_a >> 16);
	LD	B,0
	LD	E,BYTE3 ui_show_a
	CALL	LWRD BankSwitch
; 95.	        FSELInit(FSEL_TYPE_ALL, FSEL_ALL_REPEATALL, 0,g_browser_vars.location.disk); //初始化当前磁盘的文件系统 
	LD	HL,g_browser_vars+2
	LD	C,(HL)
	PUSH	BC
	LD	C,B
	PUSH	BC
	LD	C,4
	LD	E,6
	LD	A,BYTE3 fselInit
	LD	HL,LWRD fselInit
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
; 96.	        //if (!FSELInit(FSEL_TYPE_AMV, FSEL_ALL_REPEATALL, 0,'C'))
; 97.	        
; 98.	//        if (!FSELInit(FSEL_TYPE_ALL, FSEL_ALL_REPEATALL, 0,'g_browser_vars.location.disk'))
; 99.	//        return DealErrCase();
; 100.	        status=input8(0x05);      //读05寄存器
	IN	A,(5)
	LD	HL,0
	ADD	HL,SP
	LD	(HL),A
; 101.	        mainresult = ui_stop();// =============> 进入界面
	LD	A,BYTE3 ui_stop
	LD	HL,LWRD ui_stop
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	PUSH	HL
	POP	IX
; 102.	     
; 103.	        ap_sleep(4);
	LD	DE,4
	LD	A,BYTE3 ap_sleep
	LD	HL,LWRD ap_sleep
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 104.	
; 105.	        ResClose(g_Resfp_Sav);
	LD	DE,(g_Resfp_Sav)
	LD	A,BYTE3 ResClose
	LD	HL,LWRD ResClose
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 106.	        output8(0x5,status); // 恢复 05 regsiter     解决播放后进U盘提示格式化的问题  zxs add
	LD	HL,0
	ADD	HL,SP
	LD	A,(HL)
	OUT	(5),A
; 107.	        //记录
; 108.	        fselGetLocation(& g_browser_vars.location);
	LD	DE,g_browser_vars+2
	LD	A,BYTE3 fselGetLocation
	LD	HL,LWRD fselGetLocation
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 109.	        result = VMWrite(&g_browser_vars, VM_AP_BROWSER); 
	LD	BC,19456
	LD	DE,g_browser_vars
	CALL	LWRD VMWrite
	LD	B,0
; 110.	        if(mainresult==RESULT_IGNORE)  
	PUSH	IX
	POP	HL
	LD	A,52
	XOR	L
	OR	H
	JR	NZ,?0024
?0023:
; 111.	           return RESULT_MAIN;
?0081:
	LD	HL,10
	JR	?0027
?0024:
; 112.	        else if(mainresult!=0)          
	LD	A,L
	OR	H
	JR	NZ,?0027
?0025:
; 113.	           return  mainresult;
; 114.	        else 
?0026:
; 115.	           return File_Type(g_browser_vars.location.filename);
	LD	DE,g_browser_vars+28
	LD	A,BYTE3 File_Type
	LD	HL,LWRD File_Type
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	H,B
; 116.	}
?0027:
	POP	AF
	POP	AF
	POP	IX
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
File_Type:
; 117.	
; 118.	char File_Type( char * filename )
; 119.	{
	PUSH	BC
	PUSH	IX
	LD	HL,65480
	ADD	HL,SP
	LD	SP,HL
	PUSH	DE
	POP	IX
; 120.	    const char Extstr [] [4] =
; 121.	    {
; 122.	        "MP3", "WMA", "ASF", "WMV", "OGG", "WAV", "ACT", "AMV", "TXT", "BMP", "JPG", "GIF","APE"
; 123.	    };
	LD	HL,4
	ADD	HL,SP
	EX	DE,HL
	LD	HL,?0028
	LD	BC,52
	LDIR
; 124.	
; 125.	    BYTE ext[4];
; 126.	    memcpy(ext, filename + 8, 3);
	LD	L,C
	LD	H,B
	ADD	HL,SP
	EX	DE,HL
	LD	HL,8
	PUSH	IX
	POP	BC
	ADD	HL,BC
	LD	BC,3
	LDIR
; 127.	    
; 128.	    ext[0] = (ext[0]>='a' && ext[0]<='z') ? ext[0] - 'a' + 'A' : ext[0];
	LD	L,C
	LD	H,B
	ADD	HL,SP
	LD	A,(HL)
	CP	97
	JR	C,?0032
	LD	A,122
	CP	(HL)
	JR	C,?0032
	LD	A,(HL)

⌨️ 快捷键说明

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