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

📄 sub_function3.s01

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

⌨️ 快捷键说明

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