musicedit_sel.s01
来自「炬力方案176*132软件源码,适用于AK1025」· S01 代码 · 共 808 行 · 第 1/2 页
S01
808 行
NAME musicedit_sel(17)
RSEG COM_MUSICEDIT_SEL(0)
RSEG COM_MUSICEDIT_SEL_C(0)
RSEG COM_MUSICEDIT_SEL_D(0)
PUBLIC CreateMEIniFile
PUBLIC CurDirBackup
PUBLIC DeleteAllSelSegment
EXTERN DisplayErrInfor
EXTERN FS_CD
EXTERN FS_FClose
EXTERN FS_FCreate
EXTERN FS_FOpen
EXTERN FS_FRead
EXTERN FS_FRemove
EXTERN FS_FWrite
EXTERN FS_GetCurDir
EXTERN FS_SetCurDir
PUBLIC FileDataBuff
PUBLIC SaveSelSegment
PUBLIC SetDealCommamd
PUBLIC sMusicEditIniFileName
PUBLIC sSelRootDir
EXTERN ?CLZ80B_4_04_L00
EXTERN ?SS_CMP_L02
EXTERN ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_LEAVE_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
EXTERN ?ENT_AUTO_DIRECT_L09
EXTERN ?MEMSET_L11
RSEG COM_MUSICEDIT_SEL
SaveSelSegment:
; 1. #include <MusicEdit.h>
; 2. #include "ap_music.h"
; 3.
; 4. #define pMusicEditIniFile ((STRU_MusicEditIniFile*)FileDataBuff)
; 5.
; 6. #pragma memory=constseg(COM_MUSICEDIT_SEL_C)
; 7. const char sMusicEditIniFileName[]="MUSICEDTINI";
; 8. const char sSelRootDir[]=": ";
; 9. #pragma memory=default
; 10.
; 11. #pragma memory=dataseg(COM_MUSICEDIT_SEL_D)
; 12. char FileDataBuff[512];
; 13. long CurDirBackup;
; 14. #pragma memory=default
; 15.
; 16. #pragma codeseg(COM_MUSICEDIT_SEL)
; 17.
; 18. /****************************************************************
; 19. *Description: save selected segment information to music edit INI file
; 20. *Arguments:
; 21. * SelSeg:the segment have been saved
; 22. * Returns:
; 23. * TRUE: Successful,
; 24. * FALSE: Fail.
; 25. * Notes:
; 26. ****************************************************************/
; 27. BOOL SaveSelSegment(STRU_SelMusicSegment *SelSeg)
; 28. {
PUSH BC
PUSH IY
PUSH IX
PUSH AF
PUSH DE
POP IX
; 29. HANDLE temphfile;
; 30. uchar IMK_Reg;
; 31.
; 32. IMK_Reg=input8(0x27);
IN A,(39)
LD HL,0
ADD HL,SP
; 33. output8(0x27,0);
; 34.
; 35. CurDirBackup=FS_GetCurDir();
CALL LWRD ?0032
; 36. FS_CD(sSelRootDir);
; 37.
; 38. temphfile=FS_FOpen(sMusicEditIniFileName,FS_OPEN_NORMAL);
; 39. if(temphfile==NULL)
JR NZ,?0003
?0002:
; 40. {
; 41. FS_SetCurDir(CurDirBackup);
CALL LWRD ?0033
; 42. FS_FClose(temphfile);
; 43. output8(0x27,IMK_Reg);
ADD HL,SP
; 44. DisplayErrInfor(NOSLFILE);
CALL LWRD ?0034
; 45. return FALSE;
LD L,0
; 46. }
JP LWRD ?0012
?0003:
; 47.
; 48. FS_FRead(FileDataBuff,1,temphfile);
PUSH IY
CALL LWRD ?0035
POP HL
; 49.
; 50. if((pMusicEditIniFile->CurSelSegmemtNO>=MUSICEDIT_MAXSELSEG)||(pMusicEditIniFile->SelSegmemtCount>MUSICEDIT_MAXSELSEG))
LD HL,(FileDataBuff+6)
LD BC,32780
LD A,B
XOR H
LD H,A
SBC HL,BC
JR NC,?0006
LD BC,(FileDataBuff+4)
LD HL,12
CALL LWRD ?SS_CMP_L02
JR NC,?0005
?0006:
?0007:
?0004:
; 51. {
; 52. pMusicEditIniFile->CurSelSegmemtNO=0;
LD HL,0
LD (FileDataBuff+6),HL
; 53. pMusicEditIniFile->SelSegmemtCount=0;
LD (FileDataBuff+4),HL
?0005:
; 54. }
; 55.
; 56. pMusicEditIniFile->SelMusicEditSeg[pMusicEditIniFile->CurSelSegmemtNO].StartSec=SelSeg->StartSec;
LD HL,(FileDataBuff+6)
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD BC,FileDataBuff
ADD HL,BC
LD BC,57
ADD HL,BC
PUSH HL
PUSH IX
POP HL
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
; 57. pMusicEditIniFile->SelMusicEditSeg[pMusicEditIniFile->CurSelSegmemtNO].EndSec=SelSeg->EndSec;
LD HL,(FileDataBuff+6)
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD BC,FileDataBuff
ADD HL,BC
LD BC,61
ADD HL,BC
LD C,(IX+6)
LD B,(IX+7)
LD E,(IX+4)
LD (HL),E
LD D,(IX+5)
INC HL
LD (HL),D
INC HL
LD (HL),C
INC HL
LD (HL),B
; 58. pMusicEditIniFile->SelMusicEditSeg[pMusicEditIniFile->CurSelSegmemtNO].bSelected=TRUE;
LD HL,(FileDataBuff+6)
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD BC,FileDataBuff
ADD HL,BC
LD BC,71
ADD HL,BC
LD (HL),1
; 59. pMusicEditIniFile->SelMusicEditSeg[pMusicEditIniFile->CurSelSegmemtNO].Disk=SelSeg->location->disk;
LD HL,(FileDataBuff+6)
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD BC,FileDataBuff
ADD HL,BC
LD BC,40
ADD HL,BC
PUSH HL
LD L,(IX+8)
LD H,(IX+9)
LD B,(HL)
POP HL
LD (HL),B
; 60. pMusicEditIniFile->SelMusicEditSeg[pMusicEditIniFile->CurSelSegmemtNO].ClusterNo=SelSeg->location->ClusterNo;
LD HL,(FileDataBuff+6)
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD BC,FileDataBuff
ADD HL,BC
LD BC,41
ADD HL,BC
PUSH HL
LD L,(IX+8)
LD H,(IX+9)
LD C,9
ADD HL,BC
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
; 61. memcpy(&(pMusicEditIniFile->SelMusicEditSeg[pMusicEditIniFile->CurSelSegmemtNO].FileName),SelSeg->location->filename,12);
LD BC,12
LD HL,(FileDataBuff+6)
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD DE,FileDataBuff
ADD HL,DE
LD DE,45
ADD HL,DE
EX DE,HL
LD L,(IX+8)
LD H,(IX+9)
LD C,26
ADD HL,BC
LD C,12
LDIR
; 62. memcpy(&(pMusicEditIniFile->SelMusicEditSeg[pMusicEditIniFile->CurSelSegmemtNO].StartTime),SelSeg->StartTime,sizeof(time_t));
LD C,3
LD HL,(FileDataBuff+6)
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD DE,FileDataBuff
ADD HL,DE
LD DE,65
ADD HL,DE
EX DE,HL
LD L,(IX+10)
LD H,(IX+11)
LDIR
; 63. memcpy(&(pMusicEditIniFile->SelMusicEditSeg[pMusicEditIniFile->CurSelSegmemtNO].EndTime),SelSeg->EndTime,sizeof(time_t));
LD C,3
LD HL,(FileDataBuff+6)
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD DE,FileDataBuff
ADD HL,DE
LD DE,68
ADD HL,DE
EX DE,HL
LD L,(IX+12)
LD H,(IX+13)
LDIR
; 64.
; 65. (pMusicEditIniFile->CurSelSegmemtNO)++;
LD HL,(FileDataBuff+6)
INC HL
LD (FileDataBuff+6),HL
; 66. if(pMusicEditIniFile->CurSelSegmemtNO>=MUSICEDIT_MAXSELSEG)
LD HL,(FileDataBuff+6)
LD BC,32780
LD A,B
XOR H
LD H,A
SBC HL,BC
JR C,?0009
?0008:
; 67. pMusicEditIniFile->CurSelSegmemtNO=0;
LD HL,0
LD (FileDataBuff+6),HL
?0009:
; 68.
; 69. if(pMusicEditIniFile->SelSegmemtCount<MUSICEDIT_MAXSELSEG)
LD HL,(FileDataBuff+4)
LD A,B
XOR H
LD H,A
SBC HL,BC
JR NC,?0011
?0010:
; 70. (pMusicEditIniFile->SelSegmemtCount)++;
LD HL,(FileDataBuff+4)
INC HL
LD (FileDataBuff+4),HL
?0011:
; 71.
; 72. FS_FWrite(FileDataBuff,1,temphfile);
PUSH IY
LD C,1
LD DE,FileDataBuff
CALL LWRD FS_FWrite
POP HL
; 73. FS_FClose(temphfile);
CALL LWRD ?0036
; 74.
; 75. FS_SetCurDir(CurDirBackup);
; 76.
; 77. output8(0x27,IMK_Reg);
ADD HL,SP
LD A,(HL)
OUT (39),A
; 78.
; 79. return TRUE;
LD L,1
; 80. }
?0012:
POP AF
POP IX
POP IY
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0032:
LD (HL),A
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
PUSH HL
POP IY
LD A,L
OR H
RET
?0033:
LD BC,(CurDirBackup+2)
LD DE,(CurDirBackup)
CALL LWRD FS_SetCurDir
PUSH IY
POP DE
CALL LWRD FS_FClose
LD HL,0
RET
?0034:
LD A,(HL)
OUT (39),A
LD DE,398
LD A,BYTE3 DisplayErrInfor
LD HL,LWRD DisplayErrInfor
JP LWRD ?BANK_CALL_DIRECT_L08
?0035:
LD C,1
LD DE,FileDataBuff
JP LWRD FS_FRead
?0036:
PUSH IY
POP DE
CALL LWRD FS_FClose
LD BC,(CurDirBackup+2)
LD DE,(CurDirBackup)
CALL LWRD FS_SetCurDir
LD HL,0
RET
SetDealCommamd:
; 81.
; 82. /****************************************************************
; 83. *Description: save the current edit file information and command
; 84. *Arguments:
; 85. * CurSeg:current edit file
; 86. * Cmd:command
; 87. * CmdPara:command parameter
; 88. * Returns:
; 89. * TRUE: Successful,
; 90. * FALSE: Fail.
; 91. * Notes:
; 92. ****************************************************************/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?