- bug: FAT не всегда мог записаться на HDD

This commit is contained in:
Anatoliy Belyanskiy 2023-12-02 04:12:32 +10:00
parent 0e38bd4a91
commit 463c6155f5
5 changed files with 33 additions and 11 deletions

View File

@ -2,8 +2,8 @@
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
; A - ATTRIB
; B - MODE
; B = 0 GET ATTRIB
; B = 1 SET ATTRIB
; B = #00 GET ATTRIB
; B = #01 SET ATTRIB
; OUTPUT: A - ATTRIB
////////////////////////////////////////////////////////////////////////
ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
@ -21,7 +21,7 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
DEC B
JP Z,.READ
DEC B
JP Z,.WRITE
JP Z,.WRITE_FN
LD A,DSS_Error.sys.INVALID_FUNCTION
SCF
RET
@ -41,6 +41,8 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
;
RET
;
.WRITE_FN:
AND FAT_ATTR.NoVolID ; [x] 2/12/23 ¢à¥¬¥­­ë© ä¨ªá ¤«ï volume ID
.WRITE: PUSH AF
XOR A
;!TEST ;[x] 16/11/23 optimize get attribute

View File

@ -2,6 +2,8 @@
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
; OUTPUT: A - FM
////////////////////////////////////////////////////////////////////////
CREATE_FN:
AND FAT_ATTR.NoVolID ; [x] 2/12/23 ¢à¥¬¥­­ë© ä¨ªá ¤«ï volume ID
CREATE: ;!TEST Current Dir ;[x] 15/10/23
PUSH HL
CALL DIR_PATH_CHECK
@ -14,6 +16,8 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23
CALL NC,DEL_FN.DELETE ;FILE EXIST RECREAT
JR .DO
;
.NEW_FN:
AND FAT_ATTR.NoVolID ; [x] 2/12/23 ¢à¥¬¥­­ë© ä¨ªá ¤«ï volume ID
.NEW: ;!TEST Current Dir ;[x] 15/10/23
PUSH HL
CALL DIR_PATH_CHECK
@ -78,5 +82,5 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23
JP MASK
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
; OUTPUT: A - FM
CREAT_N EQU CREATE.NEW
CREAT_N EQU CREATE.NEW_FN
;

View File

@ -378,7 +378,7 @@ ADRST10: ;DS 512 ;,0
;...............................................[LOW ADDRESS ]:
; 0 1 2 3 4 5 6 7 8 9 DEC HEX
DB low F_START, low CHNDISK_FN, low CURDISK_FN,low DISKINF, low NOPS, low NOPS, low NOPS, low NOPS, low SCANDRV, low BOOTDSK ; 0 00..09
DB low CREATE, low CREAT_N, low NOPS, low NOPS, low DEL_FN, low NOPS, low RENAME, low OPEN_FN, low CLOSE_FN, low READ ; 1 0A..13
DB low CREATE_FN, low CREAT_N, low NOPS, low NOPS, low DEL_FN, low NOPS, low RENAME, low OPEN_FN, low CLOSE_FN, low READ ; 1 0A..13
DB low WRITE, low MOVE_FP, low ATTRIB, low GET_D_T, low PUT_D_T, low F_FIRST, low F_NEXT, low MKDIR, low RMDIR, low CHDIR_FN ; 2 14..1D
DB low CURRDIR_FN,low NOPS, low NOPS, low SYSTIME, low SETTIME, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 3 1E..27
DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low WAITKEY, low SCANKEY ; 4 28..31
@ -405,7 +405,7 @@ ADRST10: ;DS 512 ;,0
ENDIF
;...............................................[HIGH ADDRESS]:
DB high F_START, high CHNDISK_FN,high CURDISK_FN,high DISKINF,high NOPS, high NOPS, high NOPS, high NOPS, high SCANDRV, high BOOTDSK
DB high CREATE, high CREAT_N, high NOPS, high NOPS, high DEL_FN, high NOPS, high RENAME, high OPEN_FN,high CLOSE_FN,high READ
DB high CREATE_FN, high CREAT_N, high NOPS, high NOPS, high DEL_FN, high NOPS, high RENAME, high OPEN_FN,high CLOSE_FN,high READ
DB high WRITE, high MOVE_FP, high ATTRIB, high GET_D_T,high PUT_D_T,high F_FIRST,high F_NEXT, high MKDIR, high RMDIR, high CHDIR_FN
DB high CURRDIR_FN,high NOPS, high NOPS, high SYSTIME,high SETTIME,high NOPS, high NOPS, high NOPS, high NOPS, high NOPS
DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high WAITKEY, high SCANKEY

View File

@ -37,6 +37,7 @@ INC_FAT PUSH HL
CALL G_CLUST
POP DE
RET C
;
PUSH HL
PUSH HL
EX DE,HL ; hl=­®¬¥à ª« áâ¥à 
@ -46,13 +47,17 @@ INC_FAT PUSH HL
EX DE,HL
POP DE ; ­®¬¥à ª« áâ¥à 
CALL W_T_FAT ; § ¯¨á âì ¢ ª¥è FAT-  ­®¬¥à ª« áâ¥à 
;!FIXIT <­¥â ª®­âà®«ï ®è¨¡ª¨>
;
;
POP HL
LD DE,(FatBuffer.ENDCLUS) ; ­®¬¥à ª« áâ¥à 
CALL W_T_FAT ; § ¯¨á âì ¢ ª¥è FAT-  ­®¬¥à ª« áâ¥à 
;!TEST ;!TODO 2/12/23 [ ] ¡ £ á ¨§¡ëâ®ç­®© § ¯¨áìî WR_FAT?
CALL WR_FAT ; ¯®¤ª«. ¡ ­ªã ª¥è  FAT ¨ § ¯¨á âì ¥£® ­  ¤¨áª
;
AND A
RET
;RX01
;-----------------------------------------------------------
@ -106,6 +111,7 @@ R_F_F16:
LD D,(HL)
POP AF
OUT (SLOT3),A
;!TODO #FFF7 - ª« áâ¥à á ª®áïªç­ë¬¨ ᥪâ®à ¬¨
LD HL,#FFEF ;!HARDCODE
XOR A ; DssErr.sys.NO_ERROR
SBC HL,DE ; ¯à®¢¥àª  ­  á«ã¦. ª« áâ¥àë
@ -193,8 +199,10 @@ W_T_FAT:
EXX
PUSH HL
PUSH AF
LD A,1
LD (FatCache.Update),A
; [x] 2/12/23 FAT ­¥ ¢á¥£¤  ¬®£ § ¯¨á âìáï ­  HDD
;LD A,1
;LD (FatCache.Update),A
;
LD A,(FatBuffer.FAT_TYP)
CP "2" ; fat12
JR Z,W_T_F12
@ -226,6 +234,10 @@ W_T_F16:
POP AF ; ¢®ááâ. ¯®àâ
POP HL
OUT (SLOT3),A
; [x] 2/12/23 FAT ­¥ ¢á¥£¤  ¬®£ § ¯¨á âìáï ­  HDD
LD A,1
LD (FatCache.Update),A
;
XOR A
RET
;
@ -274,6 +286,10 @@ W_T_F12: ;!FIXIT
POP AF
POP HL
OUT (SLOT3),A
; [x] 2/12/23 FAT ­¥ ¢á¥£¤  ¬®£ § ¯¨á âìáï ­  HDD
LD A,1
LD (FatCache.Update),A
;
AND A
RET
;

View File

@ -1 +1 @@
759
769