refactoring

This commit is contained in:
Anatoliy Belyanskiy 2023-07-19 01:18:08 +10:00
parent b87eac0895
commit b6c902f4f7
4 changed files with 297 additions and 125 deletions

View File

@ -150,33 +150,41 @@ DELETE: LD DE,MASKARE
CALL LOADDIR CALL LOADDIR
CALL SEARCH CALL SEARCH
RET C RET C
; ¯®¬¥â¨âì § ¯¨áì ª ª "㤠«¥­­ ï"
DELFILE: DELFILE:
SET_PAGE_X DIRPAGE SET_PAGE_X DIRPAGE
LD (IX+_sFM.NAME),#E5 LD (IX+_sFM.NAME),#E5 ; ¯à¨§­ ª 㤠«¥­¨ï ä ©« 
LD E,(IX+_sFM.ST_CLUSTER) LD E,(IX+_sFM.ST_CLUSTER) ; ü ¯¥à¢®£® ª« áâ¥à 
LD D,(IX+_sFM.ST_CLUSTER+1) LD D,(IX+_sFM.ST_CLUSTER+1)
OUT (SLOT3),A OUT (SLOT3),A
LD A,E LD A,E
OR D OR D
JR Z,SMALDEL JP Z,SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£  ­  ¤¨áª
DEL01 EX DE,HL DEL01 EX DE,HL ; hl=­®¬¥à ª« áâ¥à 
CALL R_F_FAT CALL R_F_FAT ; ¯à®ç¨â âì ¨§ ª¥è  FAT-  ­®¬¥à á«¥¤. ª« áâ¥à 
PUSH DE PUSH DE ; ­®¬¥à á«¥¤. ª« áâ¥à 
PUSH AF PUSH AF
LD DE,#0000 LD DE,#0000 ; ­®¬¥à ª« áâ¥à 
CALL W_T_FAT CALL W_T_FAT ; § ¯¨á âì ¢ ª¥è FAT-  ­®¬¥à ª« áâ¥à 
POP AF POP AF
POP DE POP DE
JP NC,DEL01 JP NC,DEL01
CALL WR_FAT CALL WR_FAT
SMALDEL CALL SAVEDIR JP SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£  ­  ¤¨áª
AND A
RET
;/////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #10. <20>¥à¥¨¬¥­®¢ ­¨¥ ä ©« .
; ƒ«®¡ «ì­ë¥ ᨬ¢®«ë * ¨ ? ¢ ¨¬¥­ å ä ©«®¢ ­¥ ¤®¯ã᪠îâáï.
;
; ¢å®¤: HL - 㪠§ â¥«ì ­  áâ à®¥ ¨¬ï ä ©« 
; DE - 㪠§ â¥«ì ­  ­®¢®¥ ¨¬ï ä ©« 
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
;
; INPUT: HL - "old_name.ext",#00 without simbols * ? ; INPUT: HL - "old_name.ext",#00 without simbols * ?
; DE - "new_name.ext",#00 without simbols * ? ; DE - "new_name.ext",#00 without simbols * ?
;/////////////////////////////////////////////////////////////////////
RENAME PUSH DE RENAME PUSH DE
LD DE,MASKARE LD DE,MASKARE
CALL MASK CALL MASK
@ -190,10 +198,10 @@ RENAME PUSH DE
SCF SCF
RET Z RET Z
PUSH DE PUSH DE
CALL LOADDIR CALL LOADDIR ; ¯à®ç¨â âì ᯨ᮪ ª â «®£ 
;LD A,#33 ;LD A,#33
LD A,FAT_ATTR.NoSYSnoVolID LD A,FAT_ATTR.NoSYSnoVolID
CALL ASEARCH CALL ASEARCH ; ¯®¨áª § ¯¨á¨ ¢ ᯨ᪥ ¤¨áª 
POP HL POP HL
RET C RET C
LD DE,MASKARE LD DE,MASKARE
@ -208,7 +216,7 @@ RENAME PUSH DE
RET Z RET Z
PUSH IX PUSH IX
LD A,FAT_ATTR.NoSYSnoVolID LD A,FAT_ATTR.NoSYSnoVolID
CALL ASEARCH CALL ASEARCH ; ¯®¨áª § ¯¨á¨ ¢ ᯨ᪥ ¤¨áª 
POP IX POP IX
LD A,DSS_Error.sys.FILE_EXISTS LD A,DSS_Error.sys.FILE_EXISTS
CCF CCF
@ -222,14 +230,12 @@ RENAME PUSH DE
LD BC,11 LD BC,11
LDIR LDIR
OUT (SLOT3),A OUT (SLOT3),A
CALL SAVEDIR JP SAVEDIR
AND A
RET
;R02 ;R02
OPENATR: OPENATR:
LD (ACCESS),A LD (ACCESS),A ; à ¡. ï祩ª  (§¤¥áì  âਡãâ § ¯¨á¨)
CALL GETWORD CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C RET C
LD HL,TMPNAME LD HL,TMPNAME
LD DE,MASKARE LD DE,MASKARE
@ -237,10 +243,23 @@ OPENATR:
RET C RET C
LD A,FAT_ATTR.NoVolID LD A,FAT_ATTR.NoVolID
CALL ASEARCH CALL ASEARCH
JR NC,OPENAT JR NC,OPENAT ; ­  ¯®¨áª ᢮¡. ¤¥áªà¨¯â®à 
; § ¯¨áì ­¥ ­ ©¤¥­ 
RET RET
;R02 ;R02
;/////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #11. Žâªàë⨥ ä ©« .
;
; ¢å®¤: HL - 㪠§ â¥«ì ­  ¨¬ï ä ©« 
; A - ०¨¬ ¤®áâ㯠:
; A=0 ç⥭¨¥/§ ¯¨áì
; A=1 ç⥭¨¥
; A=2 § ¯¨áì
; ¢ë室: A - ¤¥áªà¨¯â®à ä ©« , ¥á«¨ CF=0
; ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
;/////////////////////////////////////////////////////////////////////
OPEN_FN: OPEN_FN:
_mSavePath _mSavePath
OPEN: ;R08 OPEN: ;R08
@ -529,6 +548,13 @@ NSEARCH:
JR Z,SEARCH3.error JR Z,SEARCH3.error
JP SEARCH1 JP SEARCH1
;-------------------------------------------------
; <20>®¨áª § ¯¨á¨ ª â «®£  ¢ ᯨ᪥ ª â «®£ 
;
; ¢å®¤: a= âਡãâ § ¯¨á¨
; ¢ë室: de'=¨­¤¥ªá § ¯¨á¨ ¢ ᯨ᪥ ª â «®£ 
; CF - ª â «®£ ­¥ ­ ©¤¥­
;-------------------------------------------------
DSEARCH: DSEARCH:
LD A,FAT_ATTR.DIRECTORY LD A,FAT_ATTR.DIRECTORY
CALL ASEARCH CALL ASEARCH
@ -604,6 +630,10 @@ SEARCH4:
SCF SCF
RET RET
;-------------------------------------------------
; ’¥áâ ­  ¤®¯ãá⨬®¥ ¨¬ï ¨ ­ áâநâìáï ­  ¤¨áª.
; ¢å®¤: hl=áâப  ¨¬¥­¨
;-------------------------------------------------
GETWORD: GETWORD:
LD DE,TMPNAME LD DE,TMPNAME
LD BC,#0DFF LD BC,#0DFF
@ -649,8 +679,8 @@ GETWORD:
POP HL POP HL
JP NC,GETWORD JP NC,GETWORD
RET RET
; <20>ãä¥à ¨¬¥­¨ 8.3 ä®à¬ â 
TMPNAME: DB ' ',#00 ; 12 ŻŕŽĄĽŤŽ˘ ¨ 0 TMPNAME: DZ ' ' ; 12 ¯à®¡¥«®¢ ¨ 0
;!TODO ᤥ« âì ¤«ï ª ¦¤®£® ¤à ©¢  § ¯®¬¨­ ­¨¥ ⥪ã饩 ¤¨à४â®à¨¨, ¯®ª  âãâ § £«ã誠 ;!TODO ᤥ« âì ¤«ï ª ¦¤®£® ¤à ©¢  § ¯®¬¨­ ­¨¥ ⥪ã饩 ¤¨à४â®à¨¨, ¯®ª  âãâ § £«ã誠
; RestoreDIR: ; RestoreDIR:
@ -901,6 +931,12 @@ IT_DIR: LD E,(IX+_sFM.ST_CLUSTER)
RET RET
;/////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #1E. ˆ­ä®à¬ æ¨ï ® ⥪ã饬 ª â «®£¥.
;
; ¢å®¤: HL - ¡ãä¥à ¢ ¯ ¬ï⨠256 ¡ ©â
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
;/////////////////////////////////////////////////////////////////////
CURRDIR: EX DE,HL CURRDIR: EX DE,HL
LD HL,DIRSPEC LD HL,DIRSPEC
CURDIR1 LD A,(HL) CURDIR1 LD A,(HL)
@ -909,58 +945,67 @@ CURDIR1 LD A,(HL)
JR NZ,CURDIR1 JR NZ,CURDIR1
RET RET
;-------------------------------------------------
; <20>à®ç¨â âì ᯨ᮪ ª â «®£ 
;-------------------------------------------------
LOADDIR: LOADDIR:
XOR A XOR A
LD H,A LD H,A
LD L,A LD L,A
LD IX,0 LD IX,0
LD B,A LD B,A ; ®â ­ ç «  ä ©« 
CALL MOVE_FP CALL MOVE_FP
SET_PAGE_X DIRPAGE SET_PAGE_X DIRPAGE
PUSH AF PUSH AF
;!TEST no ldir ;!TEST no ldir
; ®ç¨áâ¨âì ª¥è ª â «®£ 
;LD HL,#C000 ;LD HL,#C000
;LD DE,#C001 ;LD DE,#C001
;LD BC,#3FFF ;LD BC,#3FFF
;LD (HL),L ;LD (HL),L
;LDIR ;LDIR
; ;
LD A,(FatBuffer.DRIVE) LD A,(FatBuffer.DRIVE) ; ­®¬¥à ¤¨áª 
LD (IY+_sFM.DRIVE),A LD (IY+_sFM.DRIVE),A ; á®åà. ¢ ¤¥áªà¨¯â®à
LD D,(IY+_sFM.ST_CLUSTER) LD D,(IY+_sFM.ST_CLUSTER) ; de=­®¬¥à ¯¥à¢®£® ª« áâ¥à 
LD E,(IY+_sFM.ST_CLUSTER+1) LD E,(IY+_sFM.ST_CLUSTER+1)
LD A,D LD A,D
OR E OR E
JP Z,LROTDIR JP Z,LROTDIR ; root ??
LD HL,DIR LD HL,DIR ; ªã¤ 
LD DE,#4000 LD DE,#4000 ; ᪮«ìª®
XOR A XOR A ; ¤¥áªà¨¯â®à
CALL READ CALL READ ; ç⥭¨¥ ¨§ ä ©« 
LD (DIRSIZE),DE LD (DIRSIZE),DE ; ç¨á«® ¯à®ç¨â. ¡ ©â®¢
POP AF POP AF
OUT (SLOT3),A OUT (SLOT3),A
AND A AND A
RET RET
LROTDIR LD HL,(FatBuffer.DIR_FRH) LROTDIR LD HL,(FatBuffer.DIR_FRH) ; áâ. à §àï¤
LD IX,(FatBuffer.DIR_FRL) LD IX,(FatBuffer.DIR_FRL) ; ­®¬¥à «®£. ᥪâ®à 
LD A,(FatBuffer.DIR_S_S) LD A,(FatBuffer.DIR_S_S)
LD B,32 LD B,32 ; !HARDCODE à §¬¥à root-ª â «®£ 
SUB B SUB B
JR NC,RTD1 JR NC,RTD1
ADD A,B ADD A,B
LD B,A LD B,A ; ç¨á«® ᥪâ®à®¢
RTD1 LD A,(FatBuffer.DRIVE) RTD1 LD A,(FatBuffer.DRIVE) ; ­®¬¥à ¤¨áª 
LD DE,DIR LD DE,DIR ; ¡ãä¥à
LD C,Dss.DRV.Read LD C,Dss.DRV.Read ; ç⥭¨¥ ᥪâ®à®¢
RST ToDSS.DRV RST ToDSS.DRV
POP AF POP AF
OUT (SLOT3),A OUT (SLOT3),A
AND A AND A
RET RET
;-------------------------------------------------
; ‘¡à®á¨âì ª¥è ª â «®£  ­  ¤¨áª.
; ¢å®¤: iy=áâàãªâãà  ¤¥áªà¨¯â®à 
;-------------------------------------------------
SAVEDIR XOR A SAVEDIR XOR A
LD HL,0 LD HL,0
LD IX,0 LD IX,0
@ -1003,7 +1048,7 @@ RTD1S LD A,(FatBuffer.DRIVE)
AND A AND A
RET RET
DIRSIZE: WORD 0 DIRSIZE: WORD 0 ; à §¬¥à ᯨ᪠ ª â «®£  size_cash_directory
;!TEST ;!TEST
;BANK: ;BANK:
@ -1017,6 +1062,8 @@ DIRSIZE: WORD 0
; RET ; RET
; ;
; Œ áᨢ «®£. ­®¬¥à®¢ ¡ ­®ª à áè¨à¥­¨ï „Ž‘
BANKTBL: BLOCK USING_MEMPAGES+1,#FF BANKTBL: BLOCK USING_MEMPAGES+1,#FF
;!TODO ;!TODO
@ -1073,11 +1120,20 @@ BANKTBL: BLOCK USING_MEMPAGES+1,#FF
;HANDTA BLOCK 32,0 ;HANDTA BLOCK 32,0
MASKARE: BLOCK 32,0 ;!HARDCODE ŻŽçĽŹă 32? MASKARE: BLOCK 8,0 ; ¨¬ï ä ©« 
BLOCK 3,0 ; à áè.
BLOCK 21,0 ; 11+21=32
;-------------------------------------------------
; <20>८¡à §®¢ âì ¨¬ï 8.3 -> 11 ä®à¬ â
; ¢å®¤: hl = 8.3 ¨¬ï
; de = ¡ãä¥à ¨¬¥­¨ 11 ᨬ¢. ä®à¬ â 
; ¯à¨ ®è¨¡ª¥ CF - ­¥¤®¯. ¨¬ï
;
; HL - MASK "file*.t??" ; HL - MASK "file*.t??"
; DE - 11 bytes filename ; DE - 11 bytes filename
; RET: C=2 FILE WITHOUT EXTENTION ; RET: C=2 FILE WITHOUT EXTENTION
; C=1 FILE WITH EXTENTION ; C=1 FILE WITH EXTENTION
;-------------------------------------------------
MASK PUSH HL MASK PUSH HL
PUSH DE PUSH DE
LD H,D LD H,D
@ -1095,52 +1151,53 @@ MASK PUSH HL
CP '!' CP '!'
MASKB LD A,DSS_Error.sys.INVALID_NAME MASKB LD A,DSS_Error.sys.INVALID_NAME
RET C RET C
LD BC,#0902 LD BC,#0902 ; B - áç¥â稪
MASK1 LD A,(HL) MASK1 LD A,(HL)
CP '!' CP '!'
CCF CCF
RET NC RET NC
CP '"' CP '"'
JR Z,MASK7 JR Z,MASK_ERR
CP '*' CP '*'
JR Z,MASK3 JR Z,MASK3
CP '+' CP '+'
JR Z,MASK7 JR Z,MASK_ERR
CP ',' CP ','
JR Z,MASK7 JR Z,MASK_ERR
CP '.' CP '.'
JR Z,MASK5 JR Z,MASK5
CP '/' CP '/'
JR Z,MASK7 JR Z,MASK_ERR
CP ':' CP ':'
JR Z,MASK7 JR Z,MASK_ERR
CP ';' CP ';'
JR Z,MASK7 JR Z,MASK_ERR
CP '<' CP '<'
JR Z,MASK7 JR Z,MASK_ERR
CP '=' CP '='
JR Z,MASK7 JR Z,MASK_ERR
CP '>' CP '>'
JR Z,MASK7 JR Z,MASK_ERR
CP '[' CP '['
JR Z,MASK7 JR Z,MASK_ERR
CP '\' CP '\'
JR Z,MASK7 JR Z,MASK_ERR
CP ']' CP ']'
JR Z,MASK7 JR Z,MASK_ERR
CP '|' CP '|'
JR Z,MASK7 JR Z,MASK_ERR
; CP 'a' ;????? ; CP 'a' ;?????
; JR C,MASK2 ; JR C,MASK2
; CP '{' ; CP '{'
; JR NC,MASK2 ; JR NC,MASK2
; SUB #20 ; SUB #20
CALL UPPER CALL UPPER ; a..z -> A..Z
MASK2 LD (DE),A MASK2 LD (DE),A
INC HL INC HL
INC DE INC DE
DJNZ MASK1 DJNZ MASK1
MASK7 LD A,DSS_Error.sys.INVALID_NAME MASK_ERR:
LD A,DSS_Error.sys.INVALID_NAME
SCF SCF
RET RET
@ -1177,6 +1234,7 @@ MASK4 LD (DE),A
SCF SCF
RET RET
; a..z -> A..Z
UPPER CP 'a' UPPER CP 'a'
RET C RET C
CP '{' CP '{'
@ -1203,6 +1261,19 @@ HGUPPER CP '
DEC A DEC A
RET RET
;/////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #21. ’¥ªãé ï ¤ â  ¨ ¢à¥¬ï.
;
; ¢å®¤: ­¥â
; ¢ë室: D - ¤¥­ì
; E - ¬¥áïæ
; IX - £®¤
; H - ç á
; L - ¬¨­ãâë
; B - ᥪ㭤ë
; C - ¤¥­ì ­¥¤¥«¨
;/////////////////////////////////////////////////////////////////////
SYSTIME LD C,BIOS.CMOS_TEST SYSTIME LD C,BIOS.CMOS_TEST
RST ToBIOS RST ToBIOS
JP C,NOCMOS JP C,NOCMOS
@ -1284,6 +1355,9 @@ GOODAGE POP AF
AND A AND A
RET RET
; —⥭¨¥ ॣ¨áâ஢ CMOS
; ¢å®¤: d=­®¬¥à ॣ¨áâà 
RCMOS LD C,BIOS.CMOS_RD RCMOS LD C,BIOS.CMOS_RD
RST ToBIOS RST ToBIOS
; INPUT : A - BCD ; INPUT : A - BCD
@ -1322,6 +1396,17 @@ NOCMOS2 LD C,0
AND A AND A
RET RET
;/////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #22. “áâ ­®¢¨âì ⥪ãéãî ¤ âã ¨ ¢à¥¬ï.
;
; ¢å®¤: D - ¤¥­ì
; E - ¬¥áïæ
; IX - £®¤
; H - ç á
; L - ¬¨­ãâë
; B - ᥪ㭤ë
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
;/////////////////////////////////////////////////////////////////////
SETTIME PUSH IX SETTIME PUSH IX
PUSH BC PUSH BC
PUSH HL PUSH HL
@ -1373,7 +1458,9 @@ YR INC A
AND A AND A
RET RET
;!FIXIT ¯¥à¥¤¥« âì ¯® ¤®ª¥ ­  „ «« á ¨ § ¨áì ¢ ï祩ª¨ ç á®¢
; ‡ ¯¨áì ॣ¨áâ஢ CMOS
; ¢å®¤: d=­®¬¥à ॣ¨áâà 
WCMOS CALL HEX2BCD WCMOS CALL HEX2BCD
LD C,BIOS.CMOS_WR LD C,BIOS.CMOS_WR
RST ToBIOS RST ToBIOS
@ -1397,26 +1484,53 @@ H2B INC C
OR B OR B
RET RET
; „ â  ¯®-㬮«ç ­¨î
NC_DAY DW DAY*256+MONTH ;DAY/MONTH NC_DAY DW DAY*256+MONTH ;DAY/MONTH
NC_HOUR DW #0000 ;HOUR/MINUTE NC_HOUR DW #0000 ;HOUR/MINUTE
NC_SEC DW #0001 ;SECOND/WEEKDAY NC_SEC DW #0001 ;SECOND/WEEKDAY
NC_YEAR DW YEAR ;YEAR NC_YEAR DW YEAR ;YEAR
;/////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #17. ˆ­ä®à¬ æ¨ï ® ¤ â¥ ¨ ¢à¥¬¥­¨ ä ©« .
;
; ¢å®¤: A - ¤¥áªà¨¯â®à ä ©« 
; ¢ë室: D - ¤¥­ì
; E - ¬¥áïæ
; IX - £®¤
; H - ç á
; L - ¬¨­ãâë
; B - ᥪ㭤ë
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
;/////////////////////////////////////////////////////////////////////
GET_D_T GET_D_T
CALL SET_FM CALL SET_FM
RET C RET C
LD E,(IY+_sFM.TIME) ; ¢à¥¬ï/¤ âã ¨§ áâàãªâãàë ¤¥áªà.
LD D,(IY+_sFM.TIME+1) LD E,(IY+_sFM.TIME) ; ¢à¥¬ï
LD C,(IY+_sFM.DATE) LD D,(IY+_sFM.TIME+1) ;
LD B,(IY+_sFM.DATE+1) LD C,(IY+_sFM.DATE) ; ¤ â 
CALL RMKTIME LD B,(IY+_sFM.DATE+1) ;
CALL RMKTIME ; à áª®¤¨à®¢ âì ¢à¥¬ï/¤ âã
AND A AND A
RET RET
;/////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #18. ˆ§¬¥­¥­¨¥ ¤ âë ¨ ¢à¥¬¥­¨ ä ©« .
;
; ¢å®¤: A - ¤¥áªà¨¯â®à ä ©« 
; D - ¤¥­ì
; E - ¬¥áïæ
; IX - £®¤
; H - ç á
; L - ¬¨­ãâë
; B - ᥪ㭤ë
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
;/////////////////////////////////////////////////////////////////////
PUT_D_T PUSH AF PUT_D_T PUSH AF
CALL MK_TIME CALL MK_TIME ; § ª®¤¨à®¢ âì ¢à¥¬ï/¤ âã
POP AF POP AF ; ¤¥áªà¨¯â®à
PUSH DE PUSH DE
PUSH BC PUSH BC
CALL SET_FM CALL SET_FM
@ -1427,10 +1541,20 @@ PUT_D_T PUSH AF
LD (IY+_sFM.TIME+1),D LD (IY+_sFM.TIME+1),D
LD (IY+_sFM.DATE),C LD (IY+_sFM.DATE),C
LD (IY+_sFM.DATE+1),B LD (IY+_sFM.DATE+1),B
SET 7,(IY+_sFM.ACCESS_MODE) ;R06 SET 7,(IY+_sFM.ACCESS_MODE) ;R06 ; ãáâ. ¯à¨§­ ª ¨§¬¥­¥­¨ï ä ©« 
AND A AND A
RET RET
;-------------------------------------------------
; ‡ ª®¤¨à®¢ âì ¢à¥¬ï/¤ âã
; ¢å®¤: de - ¤¥­ì/¬¥áïæ
; hl - ç áë/¬¨­ãâë
; b - ᥪ㭤ë
; ix - £®¤
; ¢ë室: de - ¢à¥¬ï
; bc - ¬¥áïæ/¤¥­ì
; ix - £®¤
;
;INPUT: D - DAY; E - MONTH ;INPUT: D - DAY; E - MONTH
; H - HOUR; L - MINUTE ; H - HOUR; L - MINUTE
; B - SECOND (0...59) ; B - SECOND (0...59)
@ -1438,6 +1562,7 @@ PUT_D_T PUSH AF
;OUTPUT: DE - hhhhhmmmmmmsssss h - hour, m - min, s - sec/2 ;OUTPUT: DE - hhhhhmmmmmmsssss h - hour, m - min, s - sec/2
; BC - yyyyyyymmmmddddd y - year, m - month, d - day ; BC - yyyyyyymmmmddddd y - year, m - month, d - day
; (1980-2108) ; (1980-2108)
;-------------------------------------------------
MK_TIME LD A,L MK_TIME LD A,L
RLCA RLCA
RLCA RLCA
@ -1468,6 +1593,16 @@ MK_TIME LD A,L
AND A AND A
RET RET
;-------------------------------------------------
; <20> áª®¤¨à®¢ âì ¢à¥¬ï/¤ âã
; ¢å®¤: de - ¢à¥¬ï
; bc - ¬¥áïæ/¤¥­ì
; ix - £®¤
; ¢ë室: de - ¤¥­ì/¬¥áïæ
; hl - ç áë/¬¨­ãâë
; b - ᥪ㭤ë
; ix - £®¤
;
;INPUT: DE - hhhhhmmmmmmsssss h - hour, m - min, s - sec/2 ;INPUT: DE - hhhhhmmmmmmsssss h - hour, m - min, s - sec/2
; BC - yyyyyyymmmmddddd y - year, m - month, d - day ; BC - yyyyyyymmmmddddd y - year, m - month, d - day
; (1980-2108) ; (1980-2108)
@ -1475,6 +1610,7 @@ MK_TIME LD A,L
; H - HOUR; L - MINUTE ; H - HOUR; L - MINUTE
; B - SECOND (0...59) ; B - SECOND (0...59)
; IX- YEAR (0...65535) ; IX- YEAR (0...65535)
;-------------------------------------------------
RMKTIME EX DE,HL RMKTIME EX DE,HL
LD A,C LD A,C
AND #1F AND #1F
@ -1507,8 +1643,19 @@ RMKTIME EX DE,HL
AND A AND A
RET RET
;/////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #1D. ‘¬¥­  ⥪ã饣® ª â «®£ .
; Œ¥­ï¥â ⥪ã騩 ª â «®£ ¨ ⥪ã騩 ¤¨áª, ¥á«¨ ®­ 㪠§ ­ ¢ ä ©«®¢®©
; ᯥæ¨ä¨ª æ¨¨. …᫨ ¯ãâì ­ ç¨­ ¥âáï á "\" - íâ® ®§­ ç ¥â ¯ãâì ®â
; ª®à­¥¢®£® ª â «®£ , ¨­ ç¥ ®â ⥪ã饣®.
;
; ¢å®¤: HL - 㪠§ â¥«ì ­  ¨¬ï ª â «®£ 
; ¢ë室: ­¥â
;
; INPUT: HL - "C:\DIR\DIR\DIR_NAME[\]",0 ; INPUT: HL - "C:\DIR\DIR\DIR_NAME[\]",0
CHDIR: CALL GETWORD ;/////////////////////////////////////////////////////////////////////
CHDIR: CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C RET C
LD HL,TMPNAME LD HL,TMPNAME
LD A,(HL) LD A,(HL)
@ -1516,51 +1663,59 @@ CHDIR: CALL GETWORD
CALL NZ,OPENDIR CALL NZ,OPENDIR
RET RET
;/////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #1B. ‘®§¤ ­¨¥ ª â «®£ .
;
; ¢å®¤: HL - 㪠§ â¥«ì ­  ¨¬ï ª â «®£ 
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
;
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0 ; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
;/////////////////////////////////////////////////////////////////////
MKDIR: MKDIR:
_mSavePath _mSavePath
CALL GETWORD CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C RET C
LD HL,TMPNAME LD HL,TMPNAME ; 8.3 ¨¬ï
LD DE,MASKARE LD DE,MASKARE ; ¡ãä¥à ¨¬¥­¨ 11 ᨬ¢. ä®à¬ â 
CALL MASK CALL MASK ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
RET C RET C
CALL LOADDIR CALL LOADDIR ; ¯à®ç¨â âì ᯨ᮪ ª â «®£ 
CALL DSEARCH CALL DSEARCH ; ¯®¨áª § ¯¨á¨ ª â «®£  ¢ ᯨ᪥ ¤¨áª 
LD A,DSS_Error.sys.DIR_EXISTS LD A,DSS_Error.sys.DIR_EXISTS
CCF CCF
RET C RET C ; ª â «®£ ­ ©¤¥­
CALL G_CLUST CALL G_CLUST
RET C RET C
PUSH HL PUSH HL
LD DE,(FatBuffer.ENDCLUS) LD DE,(FatBuffer.ENDCLUS) ; ­®¬¥à ª« áâ¥à 
CALL W_T_FAT CALL W_T_FAT ; § ¯¨á âì ¢ ª¥è FAT-  ­®¬¥à ª« áâ¥à 
CALL WR_FAT CALL WR_FAT ; ¯®¤ª«. ¡ ­ªã ª¥è  FAT ¨ § ¯¨á âì ¥£® ­  ¤¨áª
LD HL,MASKARE LD HL,MASKARE
LD DE,HANDBUF LD DE,HANDBUF
LD BC,11 LD BC,11
LDIR LDIR
EX DE,HL EX DE,HL
LD A,#10 LD A,#10 ;  âਡãâ § ¯¨á¨ ª â «®£ 
LD (HL),A LD (HL),A
INC HL INC HL
LD BC,#0A00 LD BC,#0A00 ; b=áç¥â稪
FIHND0 LD (HL),C
.loop1: LD (HL),C
INC HL INC HL
DJNZ FIHND0 DJNZ .loop1
PUSH HL PUSH HL
CALL SYSTIME CALL SYSTIME ; ã§­ âì ⥪. ¤ âã ¨ ¢à¥¬ï
CALL MK_TIME CALL MK_TIME ; § ª®¤¨à®¢ âì ¢à¥¬ï/¤ âã
POP HL POP HL
LD (HL),E LD (HL),E ; de=¢à¥¬ï
INC HL INC HL
LD (HL),D LD (HL),D
INC HL INC HL
LD (HL),C LD (HL),C ; ¤¥­ì
INC HL INC HL
LD (HL),B LD (HL),B ; ¬¥áïæ
INC HL INC HL
POP DE POP DE
PUSH DE PUSH DE
@ -1568,49 +1723,58 @@ FIHND0 LD (HL),C
INC HL INC HL
LD (HL),D LD (HL),D
INC HL INC HL
LD BC,#0400 LD BC,#0400 ; b=áç¥â稪
FIHND2 LD (HL),C
.loop2: LD (HL),C
INC HL INC HL
DJNZ FIHND2 DJNZ .loop2
CALL WRT_HND
CALL SAVEDIR CALL WRT_HND ; ᪮¯¨à. ­®¢ãî § ¯¨áì ¢ ᯨ᮪ ¤¨áª  (ª â «®£ )
LD HL,SECBUF CALL SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£  ­  ¤¨áª
LD (HL),"." LD HL,SECBUF ; ¡ãä¥à
LD B,10 LD (HL),"." ; § ¯¨áì ⥪. ª â «®£ 
MKD02 INC HL LD BC,10*256 + ' ' ; b=áç¥â稪, c=¯à®¡¥«
LD A,' '
LD (HL),A .loop3: INC HL
DJNZ MKD02 LD (HL),C
DJNZ .loop3
INC HL INC HL
LD DE,HANDBUF+11 LD DE,HANDBUF+11 ; ï祩ª   âਡã⮢ ä ©« 
EX DE,HL EX DE,HL
LD BC,21 LD BC,21
LDIR LDIR
EX DE,HL EX DE,HL
LD (HL),"." LD (HL),"." ; § ¯¨áì த¨â. ª â «®£ 
INC HL INC HL
LD (HL),"." LD (HL),"."
LD B,9 LD BC,9*256 + ' ' ; b=áç¥â稪, c=¯à®¡¥«
MKD03 INC HL MKD03 INC HL
LD A,#20 LD (HL),C
LD (HL),A
DJNZ MKD03 DJNZ MKD03
INC HL INC HL
PUSH HL
IF OLD_SET_BANK
PUSH HL
ENDIF
SET_PAGE_X DIRPAGE SET_PAGE_X DIRPAGE
POP HL IF OLD_SET_BANK
POP HL
ENDIF
PUSH AF PUSH AF
LD A,(DIR) LD A,(DIR)
CP "." CP "."
LD DE,DIR+11 LD DE,DIR+11 ;  âਡãâë § ¯¨á¨
JP Z,MKD04 JP Z,MKD04
LD IX,HANDBUF LD IX,HANDBUF
XOR A XOR A
LD (IX+_sFM.ST_CLUSTER),A LD (IX+_sFM.ST_CLUSTER),A
LD (IX+_sFM.ST_CLUSTER+1),A LD (IX+_sFM.ST_CLUSTER+1),A
LD DE,HANDBUF+11 LD DE,HANDBUF+11 ; ï祩ª   âਡã⮢ ä ©« 
MKD04 EX DE,HL MKD04 EX DE,HL
LD BC,HANDBUF.SIZE-11 LD BC,HANDBUF.SIZE-11
LDIR LDIR
@ -1625,10 +1789,10 @@ MKD04 EX DE,HL
LDIR ;!FIXIT ­ã¦­® «¨ â ª ¬­®£® £à®å âì? LDIR ;!FIXIT ­ã¦­® «¨ â ª ¬­®£® £à®å âì?
POP HL POP HL
CALL NSECTOR CALL NSECTOR
LD A,(BootSector.S_P_C) LD A,(BootSector.S_P_C) ; ᥪâ®à®¢ ­  ª« áâ¥à
MKD12 PUSH AF MKD12 PUSH AF
PUSH HL PUSH HL ; áâ. à §àï¤
PUSH IX PUSH IX ; ­®¬¥à «®£. ᥪâ®à 
IN A,(SLOT3) IN A,(SLOT3)
PUSH AF PUSH AF
IN A,(SLOT0) IN A,(SLOT0)
@ -1660,7 +1824,15 @@ MKD11 POP AF
AND A AND A
RET RET
;/////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #1C. “¤ «¥­¨¥ ª â «®£ .
; Œ®¦­® 㤠«¨âì ⮫쪮 ¯ãá⮩ ª â «®£.
;
; ¢å®¤: HL - 㪠§ â¥«ì ­  ¨¬ï ª â «®£ 
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
;
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0 ; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
;/////////////////////////////////////////////////////////////////////
RMDIR: RMDIR:
_mSavePath _mSavePath
CALL GETWORD CALL GETWORD
@ -1707,13 +1879,14 @@ RMD10 LD A,(HL)
JP Z,RMD15 ;DIR EMPTY JP Z,RMD15 ;DIR EMPTY
CP "." CP "."
JR Z,RMD14 JR Z,RMD14
CP #E5 CP #E5 ;!HARDCODE ¡ ©â 㤠«¥­¨ï ä ©« 
JR Z,RMD14 JR Z,RMD14
LD DE,11 LD DE,11 ;!HARDCODE ᬥé. ¤® ¡ ©â   âਡã⮢
ADD HL,DE ADD HL,DE
LD A,(HL) LD A,(HL)
SBC HL,DE SBC HL,DE
BIT 3,A ;BIT 3,A
AND %0000'1000
JP Z,RMD16 ;DIR NOT EMPTY JP Z,RMD16 ;DIR NOT EMPTY
RMD14 LD DE,#0020 RMD14 LD DE,#0020
ADD HL,DE ADD HL,DE
@ -1728,12 +1901,12 @@ RMD14 LD DE,#0020
RMD11 POP AF RMD11 POP AF
DEC A DEC A
JR NZ,RMD12 JR NZ,RMD12
POP HL POP HL ; ­®¬¥à ª« áâ¥à 
CALL R_F_FAT CALL R_F_FAT ; ¯à®ç¨â âì ¨§ ª¥è  FAT-  ­®¬¥à á«¥¤. ª« áâ¥à 
EX DE,HL EX DE,HL ; hl=­®¬¥à á«¥¤. ª« áâ¥à 
JR NC,RMD17 JR NC,RMD17 ; ­¥ ª®­¥æ 楯®çª¨
RMD18 POP IX RMD18 POP IX
JP DELFILE JP DELFILE ; ¯®¬¥â¨âì § ¯¨áì ª ª "㤠«¥­­ ï"
RMD15 POP IX RMD15 POP IX
POP HL POP HL

View File

@ -910,7 +910,7 @@ ADD_DE2: DJNZ ADD_DE1
ADC HL,DE ADC HL,DE
RET RET
; HL:DE / BC => DE:IX HL-OSTATOK (DE:BC.HL) ; HL:DE / C => DE:IX HL-OSTATOK (DE:BC.HL). ‹¥£ª® ¯¥à¥¤¥« âì ¯®¤ HL:DE / A => HL:DE.A
DIV32: LD A,C DIV32: LD A,C
DEC A DEC A
JR Z,.exit JR Z,.exit
@ -926,8 +926,7 @@ DIV32: LD A,C
JR NC,.loop JR NC,.loop
LD A,B LD A,B
; ;
.exit: .exit: LD XH,D
LD XH,D
LD XL,E LD XL,E
EX DE,HL EX DE,HL
LD H,0 LD H,0

View File

@ -1 +1 @@
18 19

View File

@ -17,7 +17,7 @@
DEFINE USING_MEMPAGES 4 DEFINE USING_MEMPAGES 4
DEFINE OLD_SET_BANK 0 DEFINE OLD_SET_BANK 0
;!FIXIT ᤥ« âì ⨯  DIRPAGE EQU 0 + BANKTBL ¨ ã¯à®áâ¨âì BANK ; ͺνθ α―¨αͺ  ͺ β «<EFBFBD>£ 
DIRPAGE EQU 0 DIRPAGE EQU 0
FATPAGE EQU 1 FATPAGE EQU 1
TXTPAGE EQU 2 TXTPAGE EQU 2