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

📄 sub_function3.s01

📁 MP3 整个 SDK
💻 S01
📖 第 1 页 / 共 2 页
字号:
	NAME	sub_function3(17)
	RSEG	CODE(0)
	EXTERN	BankSwitch
	EXTERN	ClearTimePara
	EXTERN	DRV_DetectUD
	PUBLIC	DisplayErrInfor
	PUBLIC	InitFileSelector
	PUBLIC	StartFileSelector
	PUBLIC	UpdateFileSelector
	EXTERN	ap_get_message
	EXTERN	ap_sleep
	EXTERN	fselGetErrID
	EXTERN	fselGetNextFile
	EXTERN	fselInit
	EXTERN	fselSetLocation
	EXTERN	g_DiskStateFlag
	EXTERN	g_amv_vars
	EXTERN	g_comval
	EXTERN	ui_show_msg
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	RSEG	CODE
DisplayErrInfor:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                ACTOS AP
; 4.	*        A short description of this file
; 5.	*
; 6.	*        (c) Copyright, Actions Co,Ld.
; 7.	*             All Right Reserved
; 8.	*
; 9.	*  #Id#
; 10.	*******************************************************************************
; 11.	*/
; 12.	#include "actos.h"
; 13.	#include  "enhanced.h"
; 14.	#include "ap_common.h"
; 15.	#include  "display.h"
; 16.	#include "ap_amv.h"
; 17.	//extern comval_t g_comval;
; 18.	//extern viewpic_vars_t g_amv_vars;
; 19.	extern BYTE g_DiskStateFlag;
; 20.	int StartFileSelector(void);
; 21.	/******************************************************************************
; 22.	** 名字: 显示输入 id 的资源内容
; 23.	** 接口: void DisplayErrInfor(int id)
; 24.	** 描述:
; 25.	** 输入参数: int id:要显示的资源号
; 26.	** 输出参数: void
; 27.	** 使用说明:
; 28.	********************************************************************************/
; 29.	void DisplayErrInfor(int id)
; 30.	{
	PUSH	BC
	PUSH	IX
; 31.	
; 32.	    ui_show_msg(id,id,g_comval.langid);
	LD	BC,(g_comval+12)
	LD	B,0
	PUSH	BC
	LD	C,E
	LD	B,D
	LD	A,BYTE3 ui_show_msg
	LD	HL,LWRD ui_show_msg
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
?0003:
; 33.	
; 34.	    while( ap_get_message() != NULL );//清空消息池,确保DELAY时间准确
	CALL	LWRD ap_get_message
	OR	A
	JR	NZ,?0003
?0004:
?0002:
; 35.	    ap_sleep(4);
	LD	DE,4
	LD	A,BYTE3 ap_sleep
	LD	HL,LWRD ap_sleep
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 36.	}
	POP	IX
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
InitFileSelector:
; 37.	
; 38.	
; 39.	
; 40.	/******************************************************************************
; 41.	** 名字:  文件选择器初始化及报错显示
; 42.	** 接口:  int InitFileSelector(void)
; 43.	** 描述:  把文件选择器初始化到有效的盘上,如找不到,则报错退出
; 44.	** 输入参数: void
; 45.	** 输出参数: 0: 没有有效的盘或盘上无文件,初始化失败,要求退出AP
; 46.	             1: 已完成初始化文件选择器动作
; 47.	** 使用说明:
; 48.	********************************************************************************/
; 49.	int InitFileSelector(void)
; 50.	{
	PUSH	BC
	PUSH	DE
	PUSH	AF
; 51.	    int result;
; 52.	
; 53.	    if (g_amv_vars.location.disk == 'H')
	LD	A,(g_amv_vars+5)
	CP	72
	JR	NZ,?0006
?0005:
; 54.	    {
; 55.	        //检测 sd 卡是否存在
; 56.	        if ((DRV_DetectUD(1) == 0x20)&&((g_DiskStateFlag & SetCardOKFlag_def)!=0))
	LD	E,1
	CALL	LWRD DRV_DetectUD
	CP	32
	JR	NZ,?0008
	LD	A,(g_DiskStateFlag)
	BIT	3,A
	JR	Z,?0008
?0010:
?0009:
?0007:
; 57.	        {//有卡
; 58.	            if (FSELInit(FSEL_TYPE_AMV, FSEL_ALL_SEQUENCE, FSEL_TYPE_COMMONDIR, 'H'))
	LD	C,72
	PUSH	BC
	LD	C,0
	PUSH	BC
	CALL	LWRD ?0195
	POP	AF
	POP	AF
	INC	L
	DEC	L
	JP	NZ,?0128
?0011:
; 59.	            {
; 60.	                return 1;
; 61.	            }
?0012:
; 62.	
; 63.	            if (FSELGetErrID() == 0)
	CALL	LWRD ?0196
	INC	L
	DEC	L
	JP	Z,?0033
?0013:
; 64.	            {
; 65.	                return 0;//非法,
; 66.	            }
?0014:
; 67.	            DisplayErrInfor(CFILEOUT);//显示卡无文件
	LD	DE,403
	CALL	LWRD ?0197
?0008:
; 68.	        }
; 69.	
; 70.	        g_amv_vars.location.disk = 'C';
	LD	A,67
	LD	(g_amv_vars+5),A
; 71.	        if ((g_DiskStateFlag & SetDiskOKFlag_def) == 0)
	LD	A,(g_DiskStateFlag)
	BIT	7,A
	JP	Z,?0033
?0015:
; 72.	        {
; 73.	            return 0;
; 74.	        }
?0016:
; 75.	
; 76.	        if ((g_DiskStateFlag & SetDiskNoFile_def) != 0)
	BIT	6,A
	JR	Z,?0018
?0017:
; 77.	        {
; 78.	            DisplayErrInfor(DFILEOUT);//显示磁盘无文件
	LD	DE,402
	JP	LWRD ?0129
; 79.	            return 0;
; 80.	        }
?0018:
; 81.	
; 82.	        if (FSELInit(FSEL_TYPE_AMV, FSEL_ALL_SEQUENCE,  FSEL_TYPE_COMMONDIR, 'C'))
	LD	C,67
	PUSH	BC
	LD	C,0
	PUSH	BC
	CALL	LWRD ?0195
	POP	AF
	POP	AF
	INC	L
	DEC	L
	JR	NZ,?0128
?0019:
; 83.	        {
; 84.	            return 1;
; 85.	        }
?0020:
; 86.	
; 87.	        if (FSELGetErrID() != 0)
	CALL	LWRD ?0196
	INC	L
	DEC	L
	JR	Z,?0033
?0021:
; 88.	        {
; 89.	            DisplayErrInfor(DFILEOUT);//显示磁盘无文件
	CALL	LWRD ?0198
; 90.	            g_DiskStateFlag |= SetDiskNoFile_def;//标志磁盘无文件
	LD	HL,g_DiskStateFlag
	SET	6,(HL)
; 91.	            return 0;//要退出 ap
	JR	?0033
; 92.	        }
?0022:
; 93.	        return 0;
; 94.	
; 95.	    }
?0006:
; 96.	
; 97.	    else //g_amv_vars.location.disk == 'C' 或其他
; 98.	    {
; 99.	        if ((g_DiskStateFlag & SetDiskOKFlag_def) != 0)
	LD	A,(g_DiskStateFlag)
	BIT	7,A
	JR	Z,?0031
?0023:
; 100.	        {
; 101.	            if ((g_DiskStateFlag & SetDiskNoFile_def) != 0)
	BIT	6,A
	JR	Z,?0026
?0025:
; 102.	            {
; 103.	                DisplayErrInfor(DFILEOUT);//显示磁盘无文件
	CALL	LWRD ?0198
; 104.	            }
; 105.	            else
	JR	?0031
?0026:
; 106.	            {
; 107.	                if (FSELInit(FSEL_TYPE_AMV, FSEL_ALL_SEQUENCE,  FSEL_TYPE_COMMONDIR, 'C'))
	LD	C,67
	PUSH	BC
	LD	C,0
	PUSH	BC
	CALL	LWRD ?0195
	POP	AF
	POP	AF
	INC	L
	DEC	L
	JR	NZ,?0128
?0028:
; 108.	                {
; 109.	                    return 1;
; 110.	                }
?0029:
; 111.	                if (FSELGetErrID() != 0)
	CALL	LWRD ?0196
	INC	L
	DEC	L
	JR	Z,?0031
?0030:
; 112.	                {
; 113.	                    DisplayErrInfor(DFILEOUT);//显示磁盘无文件
	CALL	LWRD ?0198
; 114.	                    g_DiskStateFlag |= SetDiskNoFile_def;//标志磁盘无文件
	LD	HL,g_DiskStateFlag
	SET	6,(HL)
?0031:
?0027:
?0024:
; 115.	                }
; 116.	            }
; 117.	        }
; 118.	
; 119.	        //检测 sd 卡是否存在
; 120.	        if ((DRV_DetectUD(1) == 0x20)&&((g_DiskStateFlag & SetCardOKFlag_def)!=0)) 
	LD	E,1
	CALL	LWRD DRV_DetectUD
	CP	32
	JR	NZ,?0033
	LD	A,(g_DiskStateFlag)
	BIT	3,A
	JR	Z,?0033
?0035:
?0034:
?0032:
; 121.	        {//有卡
; 122.	            g_amv_vars.location.disk = 'H';
	LD	A,72
	LD	(g_amv_vars+5),A
; 123.	            if (FSELInit(FSEL_TYPE_AMV, FSEL_ALL_SEQUENCE,  FSEL_TYPE_COMMONDIR, 'H'))
	LD	C,A
	PUSH	BC
	LD	C,0
	PUSH	BC
	CALL	LWRD ?0195
	POP	AF
	POP	AF
	INC	L
	DEC	L
	JR	Z,?0037
?0036:
; 124.	            {
; 125.	                return 1;
?0128:
	LD	HL,1
; 126.	            }
	JR	?0040
?0037:
; 127.	            result = FSELGetErrID();
	CALL	LWRD ?0196
; 128.	            if (FSELGetErrID() != 0)
	CALL	LWRD ?0196
	INC	L
	DEC	L
	JR	Z,?0033
?0038:
; 129.	            {
; 130.	                DisplayErrInfor(CFILEOUT);//显示卡无文件
	LD	DE,403
?0129:
	CALL	LWRD ?0197
; 131.	                return 0;
; 132.	            }
?0039:
; 133.	            return 0;//非法
; 134.	        }
?0033:
; 135.	        else
; 136.	        {
; 137.	            return 0;//没卡退出
	LD	HL,0
; 138.	        }
?0040:
	POP	AF
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0195:
	LD	E,5
	LD	A,BYTE3 fselInit
	LD	HL,LWRD fselInit
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0196:
	LD	A,BYTE3 fselGetErrID
	LD	HL,LWRD fselGetErrID
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0198:
	LD	DE,402
?0197:
	LD	A,BYTE3 DisplayErrInfor
	LD	HL,LWRD DisplayErrInfor
	JP	LWRD ?BANK_CALL_DIRECT_L08
; 139.	
; 140.	    }
; 141.	
; 142.	}
UpdateFileSelector:
; 143.	
; 144.	
; 145.	/******************************************************************************
; 146.	** 名字:
; 147.	** 接口: int UpdateFileSelector(void)
; 148.	** 描述: 更新文件选择器
; 149.	** 输入参数: void
; 150.	** 输出参数:
; 151.	            0: 更新不成功,要退出AP
; 152.	            1: 更新成功,已可用
; 153.	** 使用说明:
; 154.	********************************************************************************/
; 155.	int UpdateFileSelector(void)
; 156.	{
	PUSH	BC
	PUSH	DE
	PUSH	AF
; 157.	
; 158.	    BYTE result;
; 159.	
; 160.	    output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 161.	    BankSwitch((unsigned long)FSELSetLocation >> 16);
	LD	C,BYTE3 fselSetLocation
	LD	E,C
	CALL	LWRD BankSwitch
; 162.	
; 163.	    result = FSELSetLocation(& g_amv_vars.location);
	LD	DE,g_amv_vars+5
	LD	A,C
	LD	HL,LWRD fselSetLocation
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	PUSH	HL
	LD	HL,2
	ADD	HL,SP
	POP	BC
	LD	(HL),C
; 164.	
; 165.	    if (result == 1)
	LD	B,C
	DEC	B
	JR	NZ,?0042
?0041:
; 166.	    {
; 167.	        if (g_amv_vars.location.filename[0] != '\0')
	LD	A,(g_amv_vars+31)
	OR	A
	JR	NZ,?0050
?0043:
; 168.	        {
; 169.	            return 1;
; 170.	        }
?0044:
; 171.	
; 172.	        //找到目录的第一个文件
; 173.	        if (StartFileSelector() == 0)
	LD	A,BYTE3 StartFileSelector
	LD	HL,LWRD StartFileSelector
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	A,L
	OR	H
	JR	NZ,?0050
?0045:
; 174.	        {
; 175.	            return 0;
	JR	?0141
; 176.	        }
?0046:
; 177.	            return 1;
; 178.	    }
?0042:
; 179.	    else if (result == 2) // == 2 表示该目录是空
	LD	B,(HL)
	DEC	B
	DEC	B
	JR	NZ,?0048
?0047:
; 180.	    {
; 181.	        //找到目录的第一个文件
; 182.	        if (StartFileSelector() == 0)
	LD	A,BYTE3 StartFileSelector
	LD	HL,LWRD StartFileSelector
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	A,L
	OR	H
	JR	Z,?0141
?0049:
; 183.	        {
; 184.	            return 0;
; 185.	        }
?0050:
; 186.	        return 1;
	LD	HL,1
; 187.	

⌨️ 快捷键说明

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