📄 bookmarkadd.s01
字号:
DEC L
JR Z,?0050
?0021:
; 108. return FALSE;
?0022:
; 109.
; 110. bNewBookMark=FALSE;
LD (IX-4),0
; 111. if(!GetBMkInforA(curfile,&FileBKSecNo))
LD HL,2
ADD HL,SP
CALL LWRD ?0065
INC L
DEC L
JR NZ,?0024
?0023:
; 112. {
; 113. AddBMkInfor(curfile);
LD E,(IX+4)
LD D,(IX+5)
LD A,BYTE3 AddBMkInfor
LD HL,LWRD AddBMkInfor
CALL LWRD ?BANK_CALL_DIRECT_L08
; 114. bNewBookMark=TRUE;
LD (IX-4),1
?0024:
; 115. }
; 116.
; 117. if(!FS_FSeek(FileBKSecNo,FS_SEEK_FFROMSTART,hBmkFileA))
LD HL,(hBmkFileA)
PUSH HL
LD C,0
PUSH BC
CALL LWRD ?0066
POP HL
POP HL
OR A
JR NZ,?0026
?0025:
; 118. {
; 119. FS_FClose(hBmkFileA);
CALL LWRD ?0068
; 120. output8(0x27,BmkIMKA_Reg);
; 121. return FALSE;
?0050:
LD L,0
; 122. }
JR ?0033
?0026:
; 123. FS_FRead(BMKFileDataBuffA,1,hBmkFileA);
LD HL,(hBmkFileA)
PUSH HL
CALL LWRD ?0063
POP HL
; 124.
; 125. if(bNewBookMark)
XOR A
OR (IX-4)
JR Z,?0028
?0027:
; 126. {
; 127. pMusicBookMarkFileA->CurRecordNO=0;
LD HL,0
LD (BMKFileDataBuffA),HL
; 128. pMusicBookMarkFileA->RecordCount=0;
LD (BMKFileDataBuffA+2),HL
?0028:
; 129. }
; 130. memcpy(&(pMusicBookMarkFileA->MusicBreakPoint[pMusicBookMarkFileA->CurRecordNO]),breakpt,sizeof(STRU_MusicBreakPoint));
LD DE,30
LD BC,(BMKFileDataBuffA)
CALL LWRD ?S_MUL_L02
LD HL,BMKFileDataBuffA
ADD HL,DE
LD BC,4
ADD HL,BC
EX DE,HL
LD L,(IX+2)
LD H,(IX+3)
LD C,30
LDIR
; 131.
; 132. (pMusicBookMarkFileA->CurRecordNO)++;
LD HL,(BMKFileDataBuffA)
INC HL
LD (BMKFileDataBuffA),HL
; 133. if(pMusicBookMarkFileA->CurRecordNO>=MUSICBOOKMARK_MAX)
LD BC,32780
LD HL,(BMKFileDataBuffA)
LD A,B
XOR H
LD H,A
SBC HL,BC
JR C,?0030
?0029:
; 134. pMusicBookMarkFileA->CurRecordNO=0;
LD HL,0
LD (BMKFileDataBuffA),HL
?0030:
; 135.
; 136. if(pMusicBookMarkFileA->RecordCount<MUSICBOOKMARK_MAX)
LD HL,(BMKFileDataBuffA+2)
LD A,B
XOR H
LD H,A
SBC HL,BC
JR NC,?0032
?0031:
; 137. (pMusicBookMarkFileA->RecordCount)++;
LD HL,(BMKFileDataBuffA+2)
INC HL
LD (BMKFileDataBuffA+2),HL
?0032:
; 138.
; 139. FS_FSeek(FileBKSecNo,FS_SEEK_FFROMSTART,hBmkFileA);
LD HL,(hBmkFileA)
PUSH HL
LD C,0
PUSH BC
CALL LWRD ?0066
POP HL
POP HL
; 140. FS_FWrite(BMKFileDataBuffA,1,hBmkFileA);
LD HL,(hBmkFileA)
PUSH HL
CALL LWRD ?0064
POP HL
; 141. FS_FClose(hBmkFileA);
CALL LWRD ?0067
; 142. output8(0x27,BmkIMKA_Reg);
; 143.
; 144. return TRUE;
; 145. }
?0033:
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0065:
LD C,L
LD B,H
LD E,(IX+4)
LD D,(IX+5)
LD A,BYTE3 GetBMkInforA
LD HL,LWRD GetBMkInforA
JP LWRD ?BANK_CALL_DIRECT_L08
?0066:
LD E,(IX-2)
LD D,(IX-1)
LD A,D
RLCA
SBC A,A
LD C,A
LD B,C
JP LWRD FS_FSeek
?0067:
LD DE,(hBmkFileA)
CALL LWRD FS_FClose
LD A,(BmkIMKA_Reg)
OUT (39),A
LD L,1
RET
?0068:
LD DE,(hBmkFileA)
CALL LWRD FS_FClose
LD A,(BmkIMKA_Reg)
OUT (39),A
RET
GetBookMark:
; 146.
; 147. /****************************************************************
; 148. *Description: get the Bookmark from BOOKMARK.BMK file by current file
; 149. *Arguments:
; 150. * breakpt:bookmark record
; 151. * curfile:current file
; 152. * Returns:
; 153. * TRUE: Successful,
; 154. * FALSE: Fail.
; 155. * Notes:
; 156. ****************************************************************/
; 157. BOOL GetBookMark(STRU_MusicBookMark *bookmark,file_location_t *curfile)
; 158. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65534
; 159. int FileBKSecNo;
; 160.
; 161. if(!ReadBookMarkHeardA())
LD A,BYTE3 ReadBookMarkHeardA
LD HL,LWRD ReadBookMarkHeardA
CALL LWRD ?BANK_CALL_DIRECT_L08
INC L
DEC L
JR Z,?0053
?0034:
; 162. return FALSE;
?0035:
; 163.
; 164. if(!GetBMkInforA(curfile,&FileBKSecNo))
LD HL,0
ADD HL,SP
CALL LWRD ?0065
INC L
DEC L
JR Z,?0054
?0036:
; 165. {
; 166. FS_FClose(hBmkFileA);
; 167. output8(0x27,BmkIMKA_Reg);
; 168. return FALSE;
; 169. }
?0037:
; 170.
; 171. if(!FS_FSeek(FileBKSecNo,FS_SEEK_FFROMSTART,hBmkFileA))
LD HL,(hBmkFileA)
PUSH HL
LD C,0
PUSH BC
CALL LWRD ?0066
POP HL
POP HL
OR A
JR NZ,?0039
?0038:
; 172. {
; 173. FS_FClose(hBmkFileA);
?0054:
CALL LWRD ?0068
; 174. output8(0x27,BmkIMKA_Reg);
; 175. return FALSE;
?0053:
LD L,0
; 176. }
JR ?0040
?0039:
; 177. FS_FRead(BMKFileDataBuffA,1,hBmkFileA);
LD HL,(hBmkFileA)
PUSH HL
CALL LWRD ?0063
POP HL
; 178. FS_FClose(hBmkFileA);
CALL LWRD ?0068
; 179. output8(0x27,BmkIMKA_Reg);
; 180.
; 181. memcpy(bookmark,BMKFileDataBuffA,sizeof(STRU_MusicBookMark));
LD BC,366
LD E,(IX+2)
LD D,(IX+3)
LD HL,BMKFileDataBuffA
LDIR
; 182.
; 183. return TRUE;
LD L,1
; 184.
; 185. }
?0040:
JP LWRD ?BANK_LEAVE_DIRECT_L08
CreateBookMarkFile:
; 186.
; 187. BOOL CreateBookMarkFile()
; 188. {
PUSH BC
PUSH DE
PUSH IX
PUSH AF
PUSH AF
; 189. int SecCount;
; 190. long CurDirBak;
; 191.
; 192. BmkIMKA_Reg=input8(0x27);
; 193. output8(0x27,0);
; 194.
; 195. CurDirBak=FS_GetCurDir();
CALL LWRD ?0061
PUSH HL
LD HL,2
ADD HL,SP
POP DE
LD (HL),E
INC HL
LD (HL),D
INC HL
LD (HL),C
INC HL
LD (HL),B
; 196. FS_CD(sBmkRootA);
CALL LWRD ?0062
; 197.
; 198. hBmkFileA=FS_FOpen(sBmkFileNameA,FS_OPEN_NORMAL);
; 199. if(hBmkFileA!=NULL)
LD A,L
OR H
JR Z,?0042
?0041:
; 200. {
; 201. FS_FClose(hBmkFileA);
EX DE,HL
CALL LWRD FS_FClose
; 202. FS_SetCurDir(CurDirBak);
LD HL,0
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD C,(HL)
INC HL
LD B,(HL)
CALL LWRD FS_SetCurDir
; 203. output8(0x27,BmkIMKA_Reg);
JR ?0060
; 204. return FALSE;
; 205. }
?0042:
; 206.
; 207. FS_FRemove(sBmkFileNameA); //zhangxs add
LD DE,sBmkFileNameA
CALL LWRD FS_FRemove
; 208. hBmkFileA=FS_FCreate(sBmkFileNameA);
LD DE,sBmkFileNameA
CALL LWRD FS_FCreate
LD (hBmkFileA),HL
; 209. FS_SetCurDir(CurDirBak);
LD HL,0
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD C,(HL)
INC HL
LD B,(HL)
CALL LWRD FS_SetCurDir
; 210. if(hBmkFileA==NULL)
LD HL,(hBmkFileA)
LD A,L
OR H
JR NZ,?0044
?0043:
; 211. {
; 212. output8(0x27,BmkIMKA_Reg);
?0060:
LD A,(BmkIMKA_Reg)
OUT (39),A
; 213. return FALSE;
LD L,0
; 214. }
JR ?0049
?0044:
; 215. memset(BMKFileDataBuffA,0,sizeof(BMKFileDataBuffA));
LD BC,512
LD DE,BMKFileDataBuffA
LD L,C
CALL LWRD ?MEMSET_L11
; 216.
; 217. for(SecCount=0;SecCount<(FILEBOOKMARK_MAX+1);SecCount++)
LD IX,0
?0046:
LD BC,32784
PUSH IX
POP HL
LD A,B
XOR H
LD H,A
SBC HL,BC
JR NC,?0045
?0047:
; 218. FS_FWrite(BMKFileDataBuffA,1,hBmkFileA);
LD HL,(hBmkFileA)
PUSH HL
CALL LWRD ?0064
POP HL
INC IX
JR ?0046
?0045:
; 219.
; 220. FS_FClose(hBmkFileA);
CALL LWRD ?0067
; 221. output8(0x27,BmkIMKA_Reg);
; 222. return TRUE;
; 223. }
?0049:
POP AF
POP AF
POP IX
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
; 224.
RSEG COM_MUSICBOOKMARKA_C
sBmkFileNameA:
DEFB 'BOOKMARKBMK'
DEFB 0
sBmkRootA:
DEFB ': '
DEFB 0
RSEG COM_MUSICBOOKMARKA_D
hBmkFileA:
DEFS 2
BmkIMKA_Reg:
DEFS 1
BMKFileDataBuffA:
DEFS 512
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -