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

View File

@ -910,7 +910,7 @@ ADD_DE2: DJNZ ADD_DE1
ADC HL,DE
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
DEC A
JR Z,.exit
@ -926,8 +926,7 @@ DIV32: LD A,C
JR NC,.loop
LD A,B
;
.exit:
LD XH,D
.exit: LD XH,D
LD XL,E
EX DE,HL
LD H,0

View File

@ -1 +1 @@
18
19

View File

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