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

📄 sub_function2.s01

📁 炬力方案176*132软件源码,适用于AK1025
💻 S01
📖 第 1 页 / 共 3 页
字号:
	NAME	sub_function2(17)
	RSEG	AP_SUB_FUN2(0)
	RSEG	CSTR(0)
	RSEG	IDATA0(0)
	RSEG	CDATA0(0)
	RSEG	AP_FUN2_CONST(0)
	EXTERN	BankSwitch
	PUBLIC	ChangeVolume
	PUBLIC	CheckMusicType
	PUBLIC	CheckPlayrateLimit
	PUBLIC	CheckReplaygapLimit
	PUBLIC	CheckReplaytimesLimit
	PUBLIC	CheckVolumeLimit
	EXTERN	ClearScreen
	PUBLIC	ClearTimePara
	PUBLIC	ClosePA
	EXTERN	DisablePA
	PUBLIC	DisplayTimeRollback
	EXTERN	EnableDAC
	EXTERN	EnablePA
	PUBLIC	ExtMusicstr
	EXTERN	FS_Backup
	EXTERN	FS_CD
	EXTERN	FS_GetName
	EXTERN	FS_Restore
	EXTERN	GetAPEInfoByNo
	EXTERN	GetDefaultComval
	PUBLIC	GetInformation
	EXTERN	OutPutVolume
	EXTERN	RePlayStatus
	EXTERN	ResShowMultiString
	EXTERN	SetBackgdColor
	EXTERN	SetPenColor
	EXTERN	UpDisplayFlag
	EXTERN	VMRead
	EXTERN	ap_get_message
	EXTERN	ap_message_init
	EXTERN	ap_sleep
	EXTERN	dir_name
	EXTERN	fselGetLocation
	EXTERN	g_OldSecTempBackup
	EXTERN	g_PAOpenFlag
	EXTERN	g_PowerOffFlag
	EXTERN	g_TagInfoBuf
	EXTERN	g_comval
	EXTERN	g_currentMusicType
	EXTERN	g_from_browser
	EXTERN	g_introCNT
	EXTERN	g_introCntMode
	EXTERN	g_lyricflag
	EXTERN	g_music_vars
	EXTERN	g_result
	EXTERN	list
	EXTERN	lyricLoad
	EXTERN	lyricQueryExist
	PUBLIC	make_dirname
	EXTERN	mp3GetID3Info
	EXTERN	musicpSendCommand
	EXTERN	need_draw
	PUBLIC	openDAC
	PUBLIC	openPA
	PUBLIC	read_var
	EXTERN	return_to_play
	EXTERN	speed_callback
	PUBLIC	temp_buffer
	EXTERN	ui_auto_update
	EXTERN	ui_slider
	EXTERN	unitochar
	EXTERN	volume_callback
	EXTERN	wmaGetTAGInfo
	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
	EXTERN	?STRCPY_L11
	EXTERN	?STRCAT_L11
	EXTERN	?MEMSET_L11
	EXTERN	?STRCMP_L11
	RSEG	AP_SUB_FUN2
CheckVolumeLimit:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                ACTOS AP
; 4.	*        This program demostrates how to build an AP
; 5.	*
; 6.	*        (c) Copyright Actions Co,Ld.
; 7.	*
; 8.	*  $Id: sub_function2.c,v 1.1.1.1 2006/05/22 03:24:01 selina Exp $
; 9.	*******************************************************************************
; 10.	*/
; 11.	#include "ap_music.h"
; 12.	
; 13.	extern char g_TagInfoBuf[90];
; 14.	extern SD_FILE* g_Resfp_Sav;
; 15.	extern char return_to_play ; 
; 16.	
; 17.	char temp_buffer[9] = { 0 };
; 18.	void OutPutVolume(int vol);
; 19.	int DealForDRMsong(void);
; 20.	int ui_dialog(dialog_t *dialog,int string_id);
; 21.	BOOL GetAPEInfoByNo(char *filename, ID3Info_t *ID3, BYTE mode);
; 22.	#pragma memory=constseg(AP_FUN2_CONST)
; 23.	const char ExtMusicstr [] [4] =
; 24.	    {
; 25.	        "MP3", "WMA", "ASF", "WMV", "OGG", "APE"
; 26.	    };
; 27.	      
; 28.	#pragma memory=default
; 29.	#pragma codeseg(AP_SUB_FUN2)
; 30.	void CheckVolumeLimit( void )
; 31.	{
	PUSH	BC
; 32.	    if (g_music_vars.volume>31) g_music_vars.volume = 31;
	LD	A,(g_music_vars)
	LD	B,A
	LD	A,31
	SUB	B
	JP	PO,?0129
	XOR	128
?0129:
	JP	P,?0003
?0002:
	LD	A,31
	LD	(g_music_vars),A
?0003:
; 33.	
; 34.	    if (g_music_vars.volume<0) g_music_vars.volume = 0;
	LD	A,(g_music_vars)
	OR	A
	JP	P,?0005
?0004:
	XOR	A
	LD	(g_music_vars),A
?0005:
; 35.	}
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
CheckPlayrateLimit:
; 36.	
; 37.	void CheckPlayrateLimit( void )
; 38.	{
	PUSH	BC
; 39.	    if (g_music_vars.play_rate > 8)
	LD	A,(g_music_vars+3)
	LD	B,A
	LD	A,8
	SUB	B
	JP	PO,?0130
	XOR	128
?0130:
	JP	P,?0007
?0006:
; 40.	    {
; 41.	        g_music_vars.play_rate = 8;
	LD	A,8
	LD	(g_music_vars+3),A
?0007:
; 42.	    }
; 43.	    if (g_music_vars.play_rate < -8)
	LD	A,(g_music_vars+3)
	XOR	128
	CP	120
	JR	NC,?0009
?0008:
; 44.	    {
; 45.	        g_music_vars.play_rate = -8;
	LD	A,248
	LD	(g_music_vars+3),A
?0009:
; 46.	    }
; 47.	}
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
CheckReplaygapLimit:
; 48.	
; 49.	void CheckReplaygapLimit( void )
; 50.	{
	PUSH	BC
; 51.	    if (g_music_vars.replaygap<1)
	LD	A,(g_music_vars+5)
	CP	1
	JR	NC,?0011
?0010:
; 52.	    {
; 53.	        g_music_vars.replaygap = 1;
	LD	A,1
	LD	(g_music_vars+5),A
?0011:
; 54.	    }
; 55.	    if (g_music_vars.replaygap>10)
	LD	B,A
	LD	A,10
	CP	B
	JR	NC,?0013
?0012:
; 56.	    {
; 57.	        g_music_vars.replaygap = 10;
	LD	(g_music_vars+5),A
?0013:
; 58.	    }
; 59.	}
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
CheckReplaytimesLimit:
; 60.	
; 61.	void CheckReplaytimesLimit( void )
; 62.	{
	PUSH	BC
; 63.	    if (g_music_vars.replaytimes<1)
	LD	A,(g_music_vars+4)
	CP	1
	JR	NC,?0015
?0014:
; 64.	    {
; 65.	        g_music_vars.replaytimes = 1;
	LD	A,1
	LD	(g_music_vars+4),A
?0015:
; 66.	    }
; 67.	    if (g_music_vars.replaytimes>10)
	LD	B,A
	LD	A,10
	CP	B
	JR	NC,?0017
?0016:
; 68.	    {
; 69.	        g_music_vars.replaytimes = 10;
	LD	(g_music_vars+4),A
?0017:
; 70.	    }
; 71.	}
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
CheckMusicType:
; 72.	
; 73.	//-------------------------------------
; 74.	/*
; 75.	*             Music_type_t CheckMusicType(char *filename)
; 76.	*
; 77.	* Description : 检测当前是哪种类型的MUSIC文件
; 78.	*
; 79.	* Arguments   : char *filename  文件名
; 80.	*
; 81.	* Returns     : Music_type_t 文件类型
; 82.	*
; 83.	* Notes       :
; 84.	*
; 85.	********************************************************************************
; 86.	*/
; 87.	Music_type_t CheckMusicType( char * filename )
; 88.	{
	PUSH	BC
	PUSH	IX
	PUSH	AF
	PUSH	AF
	PUSH	DE
	POP	IX
; 89.	    BYTE ext[4];
; 90.	    memcpy(ext, filename + 8, 3);
	LD	HL,0
	ADD	HL,SP
	EX	DE,HL
	LD	HL,8
	PUSH	IX
	POP	BC
	ADD	HL,BC
	LD	BC,3
	LDIR
; 91.	    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,?0021
	LD	A,122
	CP	(HL)
	JR	C,?0021
	LD	A,(HL)
	ADD	A,224
	JR	?0022
?0021:
	LD	A,(HL)
?0022:
	LD	(HL),A
; 92.	    ext[1] = (ext[1]>='a' && ext[1]<='z') ? ext[1] - 'a' + 'A' : ext[1];
	INC	HL
	LD	A,(HL)
	CP	97
	JR	C,?0027
	LD	A,122
	CP	(HL)
	JR	C,?0027
	LD	A,(HL)
	ADD	A,224
	JR	?0028
?0027:
	LD	A,(HL)
?0028:
	LD	(HL),A
; 93.	    ext[2] = (ext[2]>='a' && ext[2]<='z') ? ext[2] - 'a' + 'A' : ext[2];
	INC	HL
	LD	A,(HL)
	CP	97
	JR	C,?0033
	LD	A,122
	CP	(HL)
	JR	C,?0033
	LD	A,(HL)
	ADD	A,224
	JR	?0034
?0033:
	LD	A,(HL)
?0034:
	LD	(HL),A
; 94.	    ext[3] = 0;
	INC	HL
	LD	(HL),B
; 95.	
; 96.	    if (strcmp(ext, ExtMusicstr[0]) == 0)
	DEC	HL
	DEC	HL
	DEC	HL
	EX	DE,HL
	LD	HL,ExtMusicstr
	CALL	LWRD ?0146
	JR	NZ,?0037
?0036:
; 97.	    {
; 98.	        return Music_MP3;
	LD	L,1
; 99.	    }
	JR	?0048
?0037:
; 100.	    else if (strcmp(ext, ExtMusicstr[1]) == 0)
	LD	L,C
	LD	H,B
	ADD	HL,SP
	EX	DE,HL
	LD	HL,ExtMusicstr+4
	CALL	LWRD ?0146
	JR	NZ,?0039
?0038:
; 101.	    {
; 102.	        return Music_WMA;
	LD	L,2
; 103.	    }
	JR	?0048
?0039:
; 104.	    else if (strcmp(ext, ExtMusicstr[2]) == 0)
	LD	L,C
	LD	H,B
	ADD	HL,SP
	EX	DE,HL
	LD	HL,ExtMusicstr+8
	CALL	LWRD ?0146
	JR	NZ,?0041
?0040:
; 105.	    {
; 106.	        return Music_ASF;
	LD	L,3
; 107.	    }
	JR	?0048
?0041:
; 108.	    else if (strcmp(ext, ExtMusicstr[3]) == 0)
	LD	L,C
	LD	H,B
	ADD	HL,SP
	EX	DE,HL
	LD	HL,ExtMusicstr+12
	CALL	LWRD ?0146
	JR	NZ,?0043
?0042:
; 109.	    {
; 110.	        return Music_WMV;
	LD	L,4
; 111.	    }
	JR	?0048
?0043:
; 112.	    else if (strcmp(ext, ExtMusicstr[4]) == 0)
	LD	L,C
	LD	H,B
	ADD	HL,SP
	EX	DE,HL
	LD	HL,ExtMusicstr+16
	CALL	LWRD ?0146
	JR	NZ,?0045
?0044:
; 113.	    {
; 114.	        return Music_OGG;
	LD	L,5
; 115.	    }
	JR	?0048
?0045:
; 116.	    else if (strcmp(ext, ExtMusicstr[5]) == 0)
	LD	L,C
	LD	H,B
	ADD	HL,SP
	EX	DE,HL
	LD	HL,ExtMusicstr+20
	CALL	LWRD ?0146
	JR	NZ,?0047
?0046:
; 117.	    {
; 118.	        return Music_APE;
	LD	L,6
; 119.	    }  
	JR	?0048
?0047:
; 120.	    else
; 121.	    {
; 122.	        return Music_NON;
	LD	L,B
; 123.	    }
?0048:
	POP	AF
	POP	AF
	POP	IX
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0146:
	CALL	LWRD ?STRCMP_L11
	LD	A,L
	OR	H
	RET
; 124.	}
make_dirname:
; 125.	
; 126.	/*
; 127.	********************************************************************************
; 128.	*             void read_var(void)
; 129.	*
; 130.	* Description : 读系统变量和ap局部变量
; 131.	*
; 132.	* Arguments   : void
; 133.	*
; 134.	* Returns     : void
; 135.	*
; 136.	* Notes       :
; 137.	*
; 138.	********************************************************************************
; 139.	*/
; 140.	void make_dirname(void)
; 141.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65502
; 142.	    int result;
; 143.	    char Backbuf[32];
; 144.	
; 145.	    fselGetLocation(&g_music_vars.location);
	LD	DE,g_music_vars+7
	LD	A,BYTE3 fselGetLocation
	LD	HL,LWRD fselGetLocation
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 146.	    if(g_music_vars.location.path[0]==':')
	LD	A,(g_music_vars+21)
	CP	58
	JR	NZ,?0050
?0049:
; 147.	        {
; 148.	            strcpy(dir_name,"ROOT");
	LD	DE,?0051
	LD	HL,dir_name
	CALL	LWRD ?STRCPY_L11
; 149.	        }
; 150.	    else
	JR	?0052
?0050:
; 151.	        {
; 152.	
; 153.	        FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
	LD	HL,0
	PUSH	HL
	LD	C,2
	LD	L,4
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD FS_Backup
	POP	HL
; 154.	
; 155.	            FS_CD("\\");
	LD	DE,?0053
	CALL	LWRD FS_CD
; 156.	        memcpy(dir_name, g_music_vars.location.path, 12);
	LD	BC,12
	LD	DE,dir_name
	LD	HL,g_music_vars+21
	LDIR
; 157.	            result = FS_GetName(dir_name, 14); //取出长名
	LD	C,14
	LD	DE,dir_name
	CALL	LWRD FS_GetName
	LD	B,0
; 158.	            if (result != 0)
	OR	A
	JR	Z,?0055
?0054:
; 159.	            {
; 160.	                unitochar(dir_name, sizeof(dir_name), g_comval.langid);
	LD	HL,g_comval+12
	LD	C,(HL)
	PUSH	BC
	LD	C,30
	LD	DE,dir_name
	CALL	LWRD ?0148
	POP	AF
; 161.	            }
; 162.	            else
	JR	?0056
?0055:
; 163.	            {
; 164.	                memcpy(dir_name, g_music_vars.location.path, 12);
	LD	C,12
	LD	DE,dir_name
	LD	HL,g_music_vars+21
	LDIR
; 165.	                dir_name[8]=0;
	LD	(dir_name+8),A
; 166.	                dir_name[9]=0;
	LD	(dir_name+9),A
?0056:
; 167.	            }
; 168.	            FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
	LD	HL,0
	PUSH	HL
	LD	C,2
	LD	L,4
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD FS_Restore
	POP	HL
?0052:
; 169.	        }
; 170.	
; 171.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0149:
	LD	DE,g_TagInfoBuf
?0148:
	LD	A,BYTE3 unitochar
	LD	HL,LWRD unitochar
	JP	LWRD ?BANK_CALL_DIRECT_L08
read_var:
; 172.	void read_var( void )
; 173.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65476
; 174.	    int result;
; 175.	    kval_t kval;
; 176.	    browser_vars_t temp_browser_vars;
; 177.	
; 178.	    //读出是否刚上电,如是,则要重调时间。
; 179.	    VMRead(& kval, VM_KERNEL, sizeof(kval_t));
	LD	HL,11
	PUSH	HL
	LD	C,H
	LD	B,H
	LD	L,4
	ADD	HL,SP

⌨️ 快捷键说明

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