musicedit_sel.s01
来自「炬力方案176*132软件源码,适用于AK1025」· S01 代码 · 共 808 行 · 第 1/2 页
S01
808 行
; 93. BOOL SetDealCommamd(STRU_SelMusicSegment *CurSeg,int Cmd,int CmdPara)
; 94. {
PUSH IY
PUSH IX
PUSH BC
PUSH AF
PUSH DE
POP IX
; 95. HANDLE temphfile;
; 96. uchar IMK_Reg;
; 97.
; 98. IMK_Reg=input8(0x27);
IN A,(39)
LD HL,0
ADD HL,SP
; 99. output8(0x27,0);
; 100.
; 101. CurDirBackup=FS_GetCurDir();
CALL LWRD ?0032
; 102. FS_CD(sSelRootDir);
; 103.
; 104. temphfile=FS_FOpen(sMusicEditIniFileName,FS_OPEN_NORMAL);
; 105. if(temphfile==NULL)
JR NZ,?0014
?0013:
; 106. {
; 107. FS_SetCurDir(CurDirBackup);
CALL LWRD ?0033
; 108. FS_FClose(temphfile);
; 109. output8(0x27,IMK_Reg);
ADD HL,SP
; 110. DisplayErrInfor(NOSLFILE);
CALL LWRD ?0034
; 111. return FALSE;
LD L,0
; 112. }
JP LWRD ?0017
?0014:
; 113. FS_FRead(FileDataBuff,1,temphfile);
PUSH IY
CALL LWRD ?0035
POP HL
; 114.
; 115. pMusicEditIniFile->EditCommand=Cmd;
LD HL,2
ADD HL,SP
LD B,(HL)
INC HL
LD H,(HL)
LD L,B
LD (FileDataBuff),HL
; 116. pMusicEditIniFile->EditCmdPara=CmdPara;
LD HL,12
ADD HL,SP
LD B,(HL)
INC HL
LD H,(HL)
LD L,B
LD (FileDataBuff+2),HL
; 117. if(CurSeg!=NULL)
PUSH IX
POP HL
LD A,L
OR H
JR Z,?0016
?0015:
; 118. {
; 119. pMusicEditIniFile->CurMusicEditSeg.StartSec=CurSeg->StartSec;
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD C,(HL)
INC HL
LD B,(HL)
EX DE,HL
LD (FileDataBuff+25),HL
LD (FileDataBuff+27),BC
; 120. pMusicEditIniFile->CurMusicEditSeg.EndSec=CurSeg->EndSec;
LD C,(IX+6)
LD B,(IX+7)
LD L,(IX+4)
LD H,(IX+5)
LD (FileDataBuff+29),HL
LD (FileDataBuff+31),BC
; 121. pMusicEditIniFile->CurMusicEditSeg.bSelected=TRUE;
LD A,1
LD (FileDataBuff+39),A
; 122. pMusicEditIniFile->CurMusicEditSeg.Disk=CurSeg->location->disk;
LD L,(IX+8)
LD H,(IX+9)
LD A,(HL)
LD (FileDataBuff+8),A
; 123. pMusicEditIniFile->CurMusicEditSeg.ClusterNo=CurSeg->location->ClusterNo;
LD L,(IX+8)
LD H,(IX+9)
LD BC,9
ADD HL,BC
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD C,(HL)
INC HL
LD B,(HL)
EX DE,HL
LD (FileDataBuff+9),HL
LD (FileDataBuff+11),BC
; 124. memcpy(&(pMusicEditIniFile->CurMusicEditSeg.FileName),CurSeg->location->filename,12);
LD BC,12
LD DE,FileDataBuff+13
LD L,(IX+8)
LD H,(IX+9)
LD C,26
ADD HL,BC
LD C,12
LDIR
; 125. memcpy(&(pMusicEditIniFile->CurMusicEditSeg.StartTime),CurSeg->StartTime,sizeof(time_t));
LD C,3
LD DE,FileDataBuff+33
LD L,(IX+10)
LD H,(IX+11)
LDIR
; 126. memcpy(&(pMusicEditIniFile->CurMusicEditSeg.EndTime),CurSeg->EndTime,sizeof(time_t));
LD C,3
LD DE,FileDataBuff+36
LD L,(IX+12)
LD H,(IX+13)
LDIR
?0016:
; 127. }
; 128. FS_FWrite(FileDataBuff,1,temphfile);
PUSH IY
LD C,1
LD DE,FileDataBuff
CALL LWRD FS_FWrite
POP HL
; 129. FS_FClose(temphfile);
CALL LWRD ?0036
; 130. FS_SetCurDir(CurDirBackup);
; 131.
; 132. output8(0x27,IMK_Reg);
ADD HL,SP
LD A,(HL)
OUT (39),A
; 133.
; 134. return TRUE;
LD L,1
; 135. }
?0017:
POP AF
POP AF
POP IX
POP IY
JP LWRD ?BANK_FAST_LEAVE_L08
DeleteAllSelSegment:
; 136.
; 137. /****************************************************************
; 138. *Description: delete the edit ini file
; 139. * Returns:
; 140. * TRUE: Successful,
; 141. * FALSE: Fail.
; 142. * Notes:
; 143. ****************************************************************/
; 144. BOOL DeleteAllSelSegment()
; 145. {
PUSH BC
PUSH DE
PUSH IX
PUSH AF
; 146. HANDLE temphfile;
; 147. uchar IMK_Reg;
; 148.
; 149. IMK_Reg=input8(0x27);
IN A,(39)
LD HL,0
ADD HL,SP
LD (HL),A
; 150. output8(0x27,0);
; 151.
; 152. CurDirBackup=FS_GetCurDir();
; 153. FS_CD(sSelRootDir);
CALL LWRD ?0037
; 154.
; 155. temphfile=FS_FOpen(sMusicEditIniFileName,FS_OPEN_NORMAL);
PUSH HL
POP IX
; 156. if(temphfile==NULL)
LD A,L
OR H
JR Z,?0029
?0018:
; 157. {
; 158. FS_SetCurDir(CurDirBackup);
; 159. FS_FClose(temphfile);
; 160. output8(0x27,IMK_Reg);
; 161. DisplayErrInfor(NOSLFILE);
; 162. return FALSE;
; 163. }
?0019:
; 164. FS_FRead(FileDataBuff,1,temphfile);
PUSH IX
CALL LWRD ?0035
POP HL
; 165. if (pMusicEditIniFile->SelSegmemtCount==0)
LD HL,(FileDataBuff+4)
LD A,L
OR H
JR NZ,?0021
?0020:
; 166. {
; 167. FS_SetCurDir(CurDirBackup);
?0029:
LD BC,(CurDirBackup+2)
LD DE,(CurDirBackup)
CALL LWRD FS_SetCurDir
; 168. FS_FClose(temphfile);
PUSH IX
POP DE
CALL LWRD FS_FClose
; 169. output8(0x27,IMK_Reg);
LD HL,0
ADD HL,SP
; 170. DisplayErrInfor(NOSLFILE);
CALL LWRD ?0034
; 171. return FALSE;
LD L,0
; 172. }
JR ?0022
?0021:
; 173. // if(temphfile!=NULL)
; 174. {
; 175. //FS_FRemove(sMusicEditIniFileName);
; 176. memset(FileDataBuff,0,sizeof(FileDataBuff));
LD BC,512
LD DE,FileDataBuff
LD L,C
CALL LWRD ?MEMSET_L11
; 177. FS_FWrite(FileDataBuff,1,temphfile);
PUSH IX
LD C,1
CALL LWRD FS_FWrite
POP HL
; 178. }
; 179.
; 180. FS_SetCurDir(CurDirBackup);
LD BC,(CurDirBackup+2)
LD DE,(CurDirBackup)
CALL LWRD FS_SetCurDir
; 181. FS_FClose(temphfile);
PUSH IX
POP DE
CALL LWRD FS_FClose
; 182. output8(0x27,IMK_Reg);
LD HL,0
ADD HL,SP
LD A,(HL)
OUT (39),A
; 183.
; 184. return TRUE;
LD L,1
; 185. }
?0022:
POP AF
POP IX
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0037:
XOR A
OUT (39),A
CALL LWRD FS_GetCurDir
LD (CurDirBackup),HL
LD (CurDirBackup+2),BC
LD DE,sSelRootDir
CALL LWRD FS_CD
LD C,0
LD DE,sMusicEditIniFileName
CALL LWRD FS_FOpen
RET
CreateMEIniFile:
; 186.
; 187. /****************************************************************
; 188. *Description: save selected segment information to music edit INI file
; 189. *Arguments:
; 190. * SelSeg:the segment have been saved
; 191. * Returns:
; 192. * TRUE: Successful,
; 193. * FALSE: Fail.
; 194. * Notes:
; 195. ****************************************************************/
; 196. BOOL CreateMEIniFile()
; 197. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65532
; 198. HANDLE temphfile;
; 199. uchar IMK_Reg;
; 200.
; 201. IMK_Reg=input8(0x27);
IN A,(39)
LD (IX-2),A
; 202. output8(0x27,0);
; 203.
; 204. CurDirBackup=FS_GetCurDir();
; 205. FS_CD(sSelRootDir);
CALL LWRD ?0037
; 206.
; 207. temphfile=FS_FOpen(sMusicEditIniFileName,FS_OPEN_NORMAL);
; 208. if(temphfile!=NULL)
LD A,L
OR H
JR Z,?0024
?0023:
; 209. {
; 210. FS_FClose(temphfile);
LD E,L
LD D,H
CALL LWRD FS_FClose
; 211. FS_SetCurDir(CurDirBackup);
LD BC,(CurDirBackup+2)
LD DE,(CurDirBackup)
CALL LWRD FS_SetCurDir
; 212. output8(0x27,IMK_Reg);
JR ?0030
; 213. return FALSE;
; 214. }
?0024:
; 215.
; 216. FS_FRemove(sMusicEditIniFileName); //文件存在但大小为0情况删除文件,防止创建文件不成功
LD DE,sMusicEditIniFileName
CALL LWRD FS_FRemove
; 217. temphfile=FS_FCreate(sMusicEditIniFileName);
LD DE,sMusicEditIniFileName
CALL LWRD FS_FCreate
LD (IX-4),L
LD (IX-3),H
; 218. if(temphfile==NULL)
LD A,L
OR H
JR NZ,?0026
?0025:
; 219. {
; 220. FS_SetCurDir(CurDirBackup);
LD BC,(CurDirBackup+2)
LD DE,(CurDirBackup)
CALL LWRD FS_SetCurDir
; 221. FS_FClose(temphfile);
LD E,(IX-4)
LD D,(IX-3)
CALL LWRD FS_FClose
; 222. output8(0x27,IMK_Reg);
?0030:
LD A,(IX-2)
OUT (39),A
; 223. return FALSE;
LD L,0
; 224. }
JR ?0027
?0026:
; 225. memset(FileDataBuff,0,sizeof(FileDataBuff));
LD BC,512
LD DE,FileDataBuff
LD L,C
CALL LWRD ?MEMSET_L11
; 226.
; 227. FS_FWrite(FileDataBuff,1,temphfile);
LD L,(IX-4)
PUSH HL
LD C,1
CALL LWRD FS_FWrite
POP HL
; 228. FS_FClose(temphfile);
LD E,(IX-4)
LD D,(IX-3)
CALL LWRD FS_FClose
; 229.
; 230. FS_SetCurDir(CurDirBackup);
LD BC,(CurDirBackup+2)
LD DE,(CurDirBackup)
CALL LWRD FS_SetCurDir
; 231. output8(0x27,IMK_Reg);
LD A,(IX-2)
OUT (39),A
; 232.
; 233. return TRUE;
LD L,1
; 234. }
?0027:
JP LWRD ?BANK_LEAVE_DIRECT_L08
; 235.
RSEG COM_MUSICEDIT_SEL_C
sMusicEditIniFileName:
DEFB 'MUSICEDTINI'
DEFB 0
sSelRootDir:
DEFB ': '
DEFB 0
RSEG COM_MUSICEDIT_SEL_D
FileDataBuff:
DEFS 512
CurDirBackup:
DEFS 4
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?