📄 bookmarkadd.s01
字号:
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 + -