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

📄 main.s01

📁 MP3 整个 SDK
💻 S01
字号:
	NAME	main(17)
	RSEG	CODE(0)
	RSEG	CSTR(0)
	RSEG	UDATA0(0)
	RSEG	IDATA0(0)
	RSEG	CDATA0(0)
	PUBLIC	ActiveDriveOK
	EXTERN	AmvDecSetCMD
	EXTERN	BankSwitch
	EXTERN	ClearScreen
	PUBLIC	Current_time
	EXTERN	DRV_ActiveDrive
	EXTERN	DRV_ActiveUD
	EXTERN	DRV_DetectUD
	EXTERN	DealErrCase
	EXTERN	DisableDAC
	EXTERN	DisablePA
	EXTERN	InitFileSelector
	PUBLIC	PlayStatus
	EXTERN	ResClose
	EXTERN	ResOpen
	EXTERN	ResShowMultiString
	EXTERN	SetBackgdColor
	EXTERN	SetPenColor
	PUBLIC	Total_time
	PUBLIC	Totaltime
	EXTERN	VMWrite
	EXTERN	ap_get_message
	EXTERN	ap_sleep
	EXTERN	fselGetLocation
	EXTERN	fselInit
	PUBLIC	g_2HZFlag
	PUBLIC	g_2HZ_CNT
	PUBLIC	g_BatteryType
	PUBLIC	g_DiskStateFlag
	PUBLIC	g_FadeInStatusFlag
	PUBLIC	g_FadeInStepFlag
	PUBLIC	g_PAOpenFlag
	PUBLIC	g_Resfp_Sav
	PUBLIC	g_TagInfoBuf
	PUBLIC	g_TagInfoBuf1
	PUBLIC	g_amv_vars
	PUBLIC	g_changevolume
	PUBLIC	g_comval
	PUBLIC	g_currentMusicType
	PUBLIC	g_introCNT
	PUBLIC	g_introCntMode
	PUBLIC	g_langid
	PUBLIC	g_menu_active
	PUBLIC	g_musicamount
	PUBLIC	g_musicsequence
	PUBLIC	g_result
	PUBLIC	main
	PUBLIC	menu
	PUBLIC	need_draw
	EXTERN	openDAC
	EXTERN	read_var
	PUBLIC	slider
	PUBLIC	temp_buffer
	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
	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.2 2006/07/14 06:43:08 tangwh Exp $
; 14.	*******************************************************************************
; 15.	*/
; 16.	#include "ap_amv.h"
; 17.	
; 18.	
; 19.	
; 20.	comval_t g_comval; //系统变量,ap不能更改
; 21.	BYTE g_langid ;//记录系统语言
; 22.	BYTE g_BatteryType;//记录电池类型
; 23.	bool g_menu_active; //为1进入MENU菜单,主要用来丢掉从目录选择时长按mode键返回
; 24.	amv_vars_t g_amv_vars;//本AP的公共变量
; 25.	char g_TagInfoBuf[66];//用于放TAG信息的BUF
; 26.	char g_TagInfoBuf1[21];    //下一首信息
; 27.	char temp_buffer[9];
; 28.	bool ActiveDriveOK;//磁盘可用标志
; 29.	BYTE g_DiskStateFlag = 0;
; 30.	time_t Totaltime;
; 31.	
; 32.	BYTE g_introCNT;
; 33.	bool g_introCntMode;
; 34.	
; 35.	bool need_draw;
; 36.	
; 37.	function_menu_t menu;
; 38.	slider_t slider;
; 39.	Play_status_t PlayStatus = StopSta;        //停止状态
; 40.	
; 41.	Music_type_t g_currentMusicType;//标志当前音乐的类型(mp3/wma/asf/wmv)
; 42.	BYTE g_musicamount;//当前目录歌曲总数
; 43.	BYTE g_musicsequence;//当前歌曲序号
; 44.	
; 45.	//BYTE testTimer_Sav;//test
; 46.	SD_FILE* g_Resfp_Sav;
; 47.	
; 48.	WORD g_2HZ_CNT;//2hz 中断计数器(0.5秒加一)
; 49.	bool g_2HZFlag = TRUE;//2HZ中断到标志
; 50.	
; 51.	char g_FadeInStatusFlag = 1;//处在淡入状标志 true 表示在淡入中。
; 52.	bool g_FadeInStepFlag = TRUE;//
; 53.	bool g_PAOpenFlag = FALSE; //标志PA的开关状态
; 54.	//bool g_CardInFlag = FALSE;//卡是否插上,为真时表示插上,可用
; 55.	
; 56.	//---如下两变量只用作临时变量,主要目的是节省指令及
; 57.	//    省代码空间,因为局部变量较费代码及指令时间
; 58.	int g_result;//表示16位变量
; 59.	int Total_time;
; 60.	int Current_time;
; 61.	BYTE g_changevolume=0;
; 62.	
; 63.	int main( void )
; 64.	{
	PUSH	BC
	PUSH	DE
	PUSH	IX
	PUSH	AF
	PUSH	AF
; 65.	        int mainresult;
; 66.	        int result;
; 67.	        BYTE status;
; 68.	
; 69.	        g_DiskStateFlag = 0;
	XOR	A
	LD	(g_DiskStateFlag),A
; 70.	
; 71.	        //-------安装ud驱动------------
; 72.	        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
; 73.	
; 74.	        DRV_ActiveUD(0,MODE_SLOW);
	LD	C,1
	LD	E,0
	CALL	LWRD DRV_ActiveUD
; 75.	        /* 读入公共变量 */
; 76.	        read_var();
	LD	A,BYTE3 read_var
	LD	HL,LWRD read_var
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 77.	
; 78.	        ActiveDriveOK = DRV_ActiveDrive('C', MODE_SLOW); //04-2-28 16:29
	LD	C,1
	LD	E,67
	CALL	LWRD DRV_ActiveDrive
	LD	(ActiveDriveOK),A
; 79.	        if (!ActiveDriveOK)
	OR	A
	JR	NZ,?0004
?0003:
; 80.	        {
; 81.	            ui_show_msg (MREADERR, MREADERR, g_langid);        //temp ybfu
	LD	BC,(g_langid)
	LD	B,A
	PUSH	BC
	LD	BC,393
	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
?0006:
; 82.	            while( ap_get_message() != NULL );//清空消息池,确保DELAY时间准确
	CALL	LWRD ap_get_message
	OR	A
	JR	NZ,?0006
?0007:
?0005:
; 83.	            ap_sleep(4);
	LD	DE,4
	LD	A,BYTE3 ap_sleep
	LD	HL,LWRD ap_sleep
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 84.	            g_amv_vars.location.disk='H';          //磁盘出错 从卡上读文件  zxs  add
	LD	A,72
	LD	(g_amv_vars+5),A
?0004:
; 85.	        }
; 86.	        g_DiskStateFlag |= SetDiskOKFlag_def;//标志 flash 已格式化
	LD	HL,g_DiskStateFlag
	SET	7,(HL)
; 87.	
; 88.	        if (DRV_DetectUD(1) == 0x20)
	LD	E,1
	CALL	LWRD DRV_DetectUD
	CP	32
	JR	NZ,?0009
?0008:
; 89.	        { //有卡
; 90.	            DRV_ActiveUD(1,MODE_SLOW);
	LD	C,1
	LD	E,C
	CALL	LWRD DRV_ActiveUD
; 91.	            if (!DRV_ActiveDrive('H', MODE_SLOW))
	LD	C,1
	LD	E,72
	CALL	LWRD DRV_ActiveDrive
	OR	A
	LD	HL,g_DiskStateFlag
	JR	NZ,?0011
?0010:
; 92.	            {
; 93.	                g_DiskStateFlag=g_DiskStateFlag&ClrCardOKFlag_def;
	RES	3,(HL)
; 94.	                ui_show_msg (CREADERR, CREADERR, g_langid);        //temp ybfu
	LD	BC,(g_langid)
	LD	B,A
	PUSH	BC
	LD	BC,404
	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
?0013:
; 95.	                while( ap_get_message() != NULL );//清空消息池,确保DELAY时间准确
	CALL	LWRD ap_get_message
	OR	A
	JR	NZ,?0013
?0014:
?0012:
; 96.	                ap_sleep(4);
	LD	DE,4
	LD	A,BYTE3 ap_sleep
	LD	HL,LWRD ap_sleep
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 97.	                g_amv_vars.location.disk='C';      //卡出错从Flash磁盘读文件
	LD	A,67
	LD	(g_amv_vars+5),A
; 98.	                if (!ActiveDriveOK)
	LD	A,(ActiveDriveOK)
	OR	A
	JR	NZ,?0020
?0015:
; 99.	                {
; 100.	                    ResClose(g_Resfp_Sav);
	JR	?0027
; 101.	                    return 0;
; 102.	                }
?0016:
; 103.	            }
; 104.	           else
?0011:
; 105.	           g_DiskStateFlag |= SetCardOKFlag_def;//标志Card 已格式化
	SET	3,(HL)
?0017:
; 106.	        }
; 107.	        else
	JR	?0020
?0009:
; 108.	        { //没卡
; 109.	            g_amv_vars.location.disk='C';      //卡出错从Flash磁盘读文件
	LD	A,67
	LD	(g_amv_vars+5),A
; 110.	            if (!ActiveDriveOK)
	LD	A,(ActiveDriveOK)
	OR	A
	JR	NZ,?0020
?0019:
; 111.	            {
; 112.	                ResClose(g_Resfp_Sav);
?0027:
	LD	DE,(g_Resfp_Sav)
	LD	A,BYTE3 ResClose
	LD	HL,LWRD ResClose
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 113.	                return 0;
	LD	HL,0
; 114.	            }
	JP	LWRD ?0025
?0020:
?0018:
; 115.	        }
; 116.	
; 117.	
; 118.	        SetPenColor(Color_WHITE_def);
	LD	BC,0
	LD	DE,65535
	CALL	LWRD SetPenColor
; 119.	        SetBackgdColor(Color_BLACK_def);
	LD	BC,0
	LD	E,C
	LD	D,B
	CALL	LWRD SetBackgdColor
; 120.	
; 121.	        //show initializing...
; 122.	        ClearScreen(NULL);
	LD	DE,0
	CALL	LWRD ClearScreen
; 123.	        ResShowMultiString(WAITPASS, g_langid, 255, 80);
	LD	C,80
	PUSH	BC
	LD	C,255
	PUSH	BC
	LD	BC,(g_langid)
	LD	DE,437
	LD	A,BYTE3 ResShowMultiString
	LD	HL,LWRD ResShowMultiString
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
; 124.	
; 125.	        output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 126.	
; 127.	        g_musicsequence = 0x00;
	XOR	A
	LD	(g_musicsequence),A
; 128.	        g_musicamount = 0x00;
	LD	(g_musicamount),A
; 129.	
; 130.	
; 131.	        //把控件的常驻BANK切入
; 132.	        BankSwitch((unsigned long)ui_show_a >> 16);
	LD	B,A
	LD	E,BYTE3 ui_show_a
	CALL	LWRD BankSwitch
; 133.	        //set amv module and codec bank as real bank
; 134.	        BankSwitch((unsigned long)AmvDecSetCMD >> 16);
	LD	E,BYTE3 AmvDecSetCMD
	CALL	LWRD BankSwitch
; 135.	        if (!FSELInit(FSEL_TYPE_AMV, FSEL_ALL_REPEATALL,FSEL_TYPE_COMMONDIR, g_amv_vars.location.disk))
	LD	HL,g_amv_vars+5
	LD	C,(HL)
	PUSH	BC
	LD	C,B
	PUSH	BC
	LD	C,4
	LD	E,5
	LD	A,BYTE3 fselInit
	LD	HL,LWRD fselInit
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
	INC	L
	DEC	L
	JR	NZ,?0022
?0021:
; 136.	        return DealErrCase();
	LD	A,BYTE3 DealErrCase
	LD	HL,LWRD DealErrCase
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	H,0
	JR	?0025
?0022:
; 137.	        status=input8(0x05);      //读05寄存器
	IN	A,(5)
	LD	HL,0
	ADD	HL,SP
	LD	(HL),A
; 138.	        openDAC();
	LD	A,BYTE3 openDAC
	LD	HL,LWRD openDAC
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 139.	
; 140.	        //由于特殊情况,这个开PA的动作放在开始播放时做
; 141.	        //openPA();
; 142.	         mainresult = InitFileSelector();
	LD	A,BYTE3 InitFileSelector
	LD	HL,LWRD InitFileSelector
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	PUSH	HL
	POP	IX
; 143.	         if(mainresult!=0)
	LD	A,L
	OR	H
	JR	Z,?0024
?0023:
; 144.	          {
; 145.	          mainresult = ui_stop();// =============> 进入界面
	LD	A,BYTE3 ui_stop
	LD	HL,LWRD ui_stop
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	PUSH	HL
	POP	IX
?0024:
; 146.	         }                        
; 147.	        
; 148.	        ap_sleep(1);
	LD	DE,1
	LD	A,BYTE3 ap_sleep
	LD	HL,LWRD ap_sleep
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 149.	        DisablePA();
	CALL	LWRD DisablePA
; 150.	        DisableDAC();
	CALL	LWRD DisableDAC
; 151.	
; 152.	        ResClose(g_Resfp_Sav);
	LD	DE,(g_Resfp_Sav)
	LD	A,BYTE3 ResClose
	LD	HL,LWRD ResClose
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 153.	        output8(0x5,status); // 恢复 05 regsiter     解决播放后进U盘提示格式化的问题  zxs add
	LD	HL,0
	ADD	HL,SP
	LD	A,(HL)
	OUT	(5),A
; 154.	        //记录
; 155.	        fselGetLocation(& g_amv_vars.location);
	LD	DE,g_amv_vars+5
	LD	A,BYTE3 fselGetLocation
	LD	HL,LWRD fselGetLocation
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 156.	        result = VMWrite(&g_amv_vars, VM_AP_AMV);
	LD	BC,18432
	LD	DE,g_amv_vars
	CALL	LWRD VMWrite
; 157.	               
; 158.	        
; 159.	 ////////////////////////////     zxs add for card
; 160.	    output8(0x2f,input8(0x2f)|0x04);       //CE3 change to GIOA3
	IN	A,(47)
	SET	2,A
	OUT	(47),A
; 161.	    output8(0xee,input8(0xee)&0xf7);
	IN	A,(238)
	RES	3,A
	OUT	(238),A
; 162.	    output8(0xf7,input8(0xf7)|0x01);      // PowerOff
	IN	A,(247)
	SET	0,A
	OUT	(247),A
; 163.	////////////////////////////     zxs add for card
; 164.	        return mainresult;
	PUSH	IX
	POP	HL
; 165.	}
?0025:
	POP	AF
	POP	AF
	POP	IX
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
; 166.	
	RSEG	CSTR
?0002:
	DEFB	'ui30.res'
	DEFB	0
	RSEG	UDATA0
g_comval:
	DEFS	32
g_langid:
	DEFS	1
g_BatteryType:
	DEFS	1
g_menu_active:
	DEFS	1
g_amv_vars:
	DEFS	54
g_TagInfoBuf:
	DEFS	66
g_TagInfoBuf1:
	DEFS	21
temp_buffer:
	DEFS	9
ActiveDriveOK:
	DEFS	1
Totaltime:
	DEFS	3
g_introCNT:
	DEFS	1
g_introCntMode:
	DEFS	1
need_draw:
	DEFS	1
menu:
	DEFS	10
slider:
	DEFS	11
g_currentMusicType:
	DEFS	1
g_musicamount:
	DEFS	1
g_musicsequence:
	DEFS	1
g_Resfp_Sav:
	DEFS	2
g_2HZ_CNT:
	DEFS	2
g_result:
	DEFS	2
Total_time:
	DEFS	2
Current_time:
	DEFS	2
	RSEG	IDATA0
g_DiskStateFlag:
	DEFS	1
PlayStatus:
	DEFS	1
g_2HZFlag:
	DEFS	1
g_FadeInStatusFlag:
	DEFS	1
g_FadeInStepFlag:
	DEFS	1
g_PAOpenFlag:
	DEFS	1
g_changevolume:
	DEFS	1
	RSEG	CDATA0
	DEFB	0
	DEFB	0
	DEFB	1
	DEFB	1
	DEFB	1
	DEFB	0
	DEFB	0
	END

⌨️ 快捷键说明

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