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

📄 bookmarkadd.s01

📁 炬力方案176*132软件源码,适用于AK1025
💻 S01
📖 第 1 页 / 共 2 页
字号:
	NAME	bookmarkadd(17)
	RSEG	COM_MUSICBOOKMARKA(0)
	RSEG	COM_MUSICBOOKMARKA_C(0)
	RSEG	COM_MUSICBOOKMARKA_D(0)
	PUBLIC	AddBMkInfor
	PUBLIC	AddBookMarkItem
	PUBLIC	BMKFileDataBuffA
	PUBLIC	BmkIMKA_Reg
	PUBLIC	CreateBookMarkFile
	EXTERN	FS_CD
	EXTERN	FS_FClose
	EXTERN	FS_FCreate
	EXTERN	FS_FOpen
	EXTERN	FS_FRead
	EXTERN	FS_FRemove
	EXTERN	FS_FSeek
	EXTERN	FS_FWrite
	EXTERN	FS_GetCurDir
	EXTERN	FS_SetCurDir
	PUBLIC	GetBMkInforA
	PUBLIC	GetBookMark
	PUBLIC	ReadBookMarkHeardA
	PUBLIC	hBmkFileA
	PUBLIC	sBmkFileNameA
	PUBLIC	sBmkRootA
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?S_MUL_L02
	EXTERN	?SS_CMP_L02
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_LEAVE_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?ENT_PARM_DIRECT_L09
	EXTERN	?ENT_AUTO_DIRECT_L09
	EXTERN	?MEMSET_L11
	EXTERN	?STRCMP_L11
	RSEG	COM_MUSICBOOKMARKA
ReadBookMarkHeardA:
; 1.	/*******************************************************************************
; 2.	*                ACTOS AP
; 3.	*        ADPCM player basal module implementation 
; 4.	*        (c) Copyright Actions Co,Ld.                             
; 5.	*
; 6.	*        2007.3  by mzh
; 7.	*******************************************************************************/
; 8.	
; 9.	#include "actos.h"
; 10.	#include "ap_common.h"
; 11.	#include <MusicBookMark.h>
; 12.	
; 13.	#define pMusicBookMarkFileA ((STRU_MusicBookMark*)BMKFileDataBuffA)
; 14.	#define pBookMarkHeardA ((STRU_BookMarkHeard*)BMKFileDataBuffA)
; 15.	
; 16.	#pragma memory=constseg(COM_MUSICBOOKMARKA_C)
; 17.	const char sBmkFileNameA[]="BOOKMARKBMK";
; 18.	const char sBmkRootA[]=": ";
; 19.	#pragma memory=default
; 20.	
; 21.	#pragma memory=dataseg(COM_MUSICBOOKMARKA_D)
; 22.	HANDLE hBmkFileA;
; 23.	uchar BmkIMKA_Reg;
; 24.	char BMKFileDataBuffA[512];
; 25.	#pragma memory=default
; 26.	
; 27.	#pragma codeseg(COM_MUSICBOOKMARKA)
; 28.	
; 29.	BOOL ReadBookMarkHeardA()
; 30.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65532
; 31.	        long CurDirBak;
; 32.	
; 33.	    BmkIMKA_Reg=input8(0x27);
; 34.	    output8(0x27,0);
; 35.	
; 36.	        CurDirBak=FS_GetCurDir();
	CALL	LWRD ?0061
	LD	(IX-4),L
	LD	(IX-3),H
	LD	(IX-2),C
	LD	(IX-1),B
; 37.	    FS_CD(sBmkRootA);
	CALL	LWRD ?0062
; 38.	
; 39.	    hBmkFileA=FS_FOpen(sBmkFileNameA,FS_OPEN_NORMAL);
; 40.	    FS_SetCurDir(CurDirBak);
	LD	C,(IX-2)
	LD	B,(IX-1)
	LD	E,(IX-4)
	LD	D,(IX-3)
	CALL	LWRD FS_SetCurDir
; 41.	    if(hBmkFileA==NULL)
	LD	HL,(hBmkFileA)
	LD	A,L
	OR	H
	JR	NZ,?0003
?0002:
; 42.	    {
; 43.	            output8(0x27,BmkIMKA_Reg);
	LD	A,(BmkIMKA_Reg)
	OUT	(39),A
; 44.	            return FALSE;
	LD	L,0
; 45.	    }       
	JR	?0004
?0003:
; 46.	    FS_FRead(BMKFileDataBuffA,1,hBmkFileA);
	PUSH	HL
	CALL	LWRD ?0063
	POP	HL
; 47.	        return TRUE;
	LD	L,1
; 48.	}
?0004:
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0061:
	IN	A,(39)
	LD	(BmkIMKA_Reg),A
	XOR	A
	OUT	(39),A
	JP	LWRD FS_GetCurDir
?0062:
	LD	DE,sBmkRootA
	CALL	LWRD FS_CD
	LD	C,0
	LD	DE,sBmkFileNameA
	CALL	LWRD FS_FOpen
	LD	(hBmkFileA),HL
	RET
?0063:
	LD	C,1
	LD	DE,BMKFileDataBuffA
	JP	LWRD FS_FRead
GetBMkInforA:
; 49.	
; 50.	BOOL GetBMkInforA(file_location_t *curfile, int *FileBKSecNo)
; 51.	{
	PUSH	IY
	PUSH	IX
	PUSH	BC
	PUSH	DE
	POP	IY
; 52.	    int CurRecNo;
; 53.	
; 54.	        if(pBookMarkHeardA->RecordCount>FILEBOOKMARK_MAX)
	LD	BC,(BMKFileDataBuffA+2)
	LD	HL,15
	CALL	LWRD ?SS_CMP_L02
	JR	NC,?0006
?0005:
; 55.	                pBookMarkHeardA->RecordCount=0;
	LD	L,H
	LD	(BMKFileDataBuffA+2),HL
?0006:
; 56.	        if(pBookMarkHeardA->CurRecordNO>=FILEBOOKMARK_MAX)
	LD	BC,32783
	LD	HL,(BMKFileDataBuffA)
	LD	A,B
	XOR	H
	LD	H,A
	SBC	HL,BC
	JR	C,?0008
?0007:
; 57.	                pBookMarkHeardA->CurRecordNO=0;
	LD	HL,0
	LD	(BMKFileDataBuffA),HL
?0008:
; 58.	
; 59.	    CurRecNo=0;
	LD	IX,0
?0010:
; 60.	    while(CurRecNo<pBookMarkHeardA->RecordCount)
	LD	BC,(BMKFileDataBuffA+2)
	PUSH	IX
	POP	HL
	CALL	LWRD ?SS_CMP_L02
	JR	NC,?0009
?0011:
; 61.	    {
; 62.	        
; 63.	        if(pBookMarkHeardA->BMkInfor[CurRecNo].ClusterNo==curfile->ClusterNo)
	ADD	HL,HL
	ADD	HL,HL
	ADD	HL,HL
	ADD	HL,HL
	LD	BC,BMKFileDataBuffA
	ADD	HL,BC
	LD	BC,4
	ADD	HL,BC
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	INC	HL
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	LD	L,C
	LD	H,B
	LD	C,(IY+9)
	LD	B,(IY+10)
	AND	A
	SBC	HL,BC
	JR	NZ,?0015
	EX	DE,HL
	LD	C,(IY+11)
	LD	B,(IY+12)
	SBC	HL,BC
	JR	NZ,?0015
?0012:
; 64.	        {
; 65.	            if(strcmp(pBookMarkHeardA->BMkInfor[CurRecNo].FileName,curfile->filename)==0)
	PUSH	IX
	POP	HL
	ADD	HL,HL
	ADD	HL,HL
	ADD	HL,HL
	ADD	HL,HL
	LD	BC,BMKFileDataBuffA
	ADD	HL,BC
	LD	BC,8
	ADD	HL,BC
	EX	DE,HL
	LD	HL,26
	PUSH	IY
	POP	BC
	ADD	HL,BC
	CALL	LWRD ?STRCMP_L11
	LD	A,L
	OR	H
	JR	NZ,?0015
?0014:
; 66.	                        {
; 67.	                *FileBKSecNo=CurRecNo+1;
	PUSH	IX
	POP	HL
	INC	HL
	PUSH	HL
	LD	HL,2
	ADD	HL,SP
	LD	A,(HL)
	INC	HL
	LD	H,(HL)
	LD	L,A
	POP	BC
	LD	(HL),C
	INC	HL
	LD	(HL),B
; 68.	                return TRUE;                    // have record 
	LD	L,1
; 69.	            }
	JR	?0016
?0015:
?0013:
; 70.	        }
; 71.	        CurRecNo++;
	INC	IX
	JR	?0010
?0009:
; 72.	    }
; 73.	    *FileBKSecNo=pBookMarkHeardA->CurRecordNO+1;
	LD	HL,(BMKFileDataBuffA)
	INC	HL
	PUSH	HL
	LD	HL,2
	ADD	HL,SP
	LD	A,(HL)
	INC	HL
	LD	H,(HL)
	LD	L,A
	POP	BC
	LD	(HL),C
	INC	HL
	LD	(HL),B
; 74.	    return FALSE;
	LD	L,0
; 75.	}
?0016:
	POP	AF
	POP	IX
	POP	IY
	JP	LWRD ?BANK_FAST_LEAVE_L08
AddBMkInfor:
; 76.	
; 77.	void AddBMkInfor(file_location_t *curfile)
; 78.	{
	PUSH	BC
	PUSH	IX
	PUSH	DE
	POP	IX
; 79.	    pBookMarkHeardA->BMkInfor[pBookMarkHeardA->CurRecordNO].ClusterNo=curfile->ClusterNo;
	LD	HL,(BMKFileDataBuffA)
	ADD	HL,HL
	ADD	HL,HL
	ADD	HL,HL
	ADD	HL,HL
	LD	BC,BMKFileDataBuffA
	ADD	HL,BC
	LD	BC,4
	ADD	HL,BC
	PUSH	HL
	LD	HL,9
	ADD	HL,DE
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	INC	HL
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	POP	HL
	LD	(HL),E
	INC	HL
	LD	(HL),D
	INC	HL
	LD	(HL),C
	INC	HL
	LD	(HL),B
; 80.	    memcpy(&(pBookMarkHeardA->BMkInfor[pBookMarkHeardA->CurRecordNO].FileName),curfile->filename,12);
	LD	HL,(BMKFileDataBuffA)
	ADD	HL,HL
	ADD	HL,HL
	ADD	HL,HL
	ADD	HL,HL
	LD	DE,BMKFileDataBuffA
	ADD	HL,DE
	LD	DE,8
	ADD	HL,DE
	EX	DE,HL
	LD	L,26
	PUSH	IX
	POP	BC
	ADD	HL,BC
	LD	BC,12
	LDIR
; 81.	
; 82.	    pBookMarkHeardA->CurRecordNO++;
	LD	HL,(BMKFileDataBuffA)
	INC	HL
	LD	(BMKFileDataBuffA),HL
; 83.	    if(pBookMarkHeardA->CurRecordNO==FILEBOOKMARK_MAX)
	LD	HL,(BMKFileDataBuffA)
	LD	A,15
	XOR	L
	OR	H
	JR	NZ,?0018
?0017:
; 84.	        pBookMarkHeardA->CurRecordNO=0;
	LD	(BMKFileDataBuffA),BC
?0018:
; 85.	
; 86.	    if(pBookMarkHeardA->RecordCount<FILEBOOKMARK_MAX)
	LD	HL,(BMKFileDataBuffA+2)
	LD	BC,32783
	LD	A,B
	XOR	H
	LD	H,A
	SBC	HL,BC
	JR	NC,?0020
?0019:
; 87.	        pBookMarkHeardA->RecordCount++;
	LD	HL,(BMKFileDataBuffA+2)
	INC	HL
	LD	(BMKFileDataBuffA+2),HL
?0020:
; 88.	
; 89.	    FS_FWrite(BMKFileDataBuffA,1,hBmkFileA);
	LD	HL,(hBmkFileA)
	PUSH	HL
	CALL	LWRD ?0064
	POP	HL
; 90.	}
	POP	IX
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0064:
	LD	C,1
	LD	DE,BMKFileDataBuffA
	JP	LWRD FS_FWrite
AddBookMarkItem:
; 91.	
; 92.	/****************************************************************
; 93.	*Description: save bookmark information to BOOKMARK.BMK file
; 94.	*Arguments:
; 95.	*            breakpt:bookmark record
; 96.	*                         curfile:current file
; 97.	* Returns:
; 98.	*            TRUE: Successful,
; 99.	*            FALSE: Fail.
; 100.	* Notes:
; 101.	****************************************************************/
; 102.	BOOL AddBookMarkItem(STRU_MusicBreakPoint *breakpt,file_location_t *curfile)
; 103.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65532
; 104.	    int FileBKSecNo;
; 105.	        BOOL bNewBookMark;
; 106.	
; 107.	        if(!ReadBookMarkHeardA())
	LD	A,BYTE3 ReadBookMarkHeardA
	LD	HL,LWRD ReadBookMarkHeardA
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	INC	L

⌨️ 快捷键说明

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