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

View File

@ -2,6 +2,8 @@
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00 ; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
; OUTPUT: A - FM ; OUTPUT: A - FM
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
CREATE_FN:
AND FAT_ATTR.NoVolID ; [x] 2/12/23 ¢à¥¬¥­­ë© ä¨ªá ¤«ï volume ID
CREATE: ;!TEST Current Dir ;[x] 15/10/23 CREATE: ;!TEST Current Dir ;[x] 15/10/23
PUSH HL PUSH HL
CALL DIR_PATH_CHECK CALL DIR_PATH_CHECK
@ -14,6 +16,8 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23
CALL NC,DEL_FN.DELETE ;FILE EXIST RECREAT CALL NC,DEL_FN.DELETE ;FILE EXIST RECREAT
JR .DO JR .DO
; ;
.NEW_FN:
AND FAT_ATTR.NoVolID ; [x] 2/12/23 ¢à¥¬¥­­ë© ä¨ªá ¤«ï volume ID
.NEW: ;!TEST Current Dir ;[x] 15/10/23 .NEW: ;!TEST Current Dir ;[x] 15/10/23
PUSH HL PUSH HL
CALL DIR_PATH_CHECK CALL DIR_PATH_CHECK
@ -78,5 +82,5 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23
JP MASK JP MASK
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00 ; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
; OUTPUT: A - FM ; 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 ]: ;...............................................[LOW ADDRESS ]:
; 0 1 2 3 4 5 6 7 8 9 DEC HEX ; 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 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 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 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 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 ENDIF
;...............................................[HIGH ADDRESS]: ;...............................................[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 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 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 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 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 CALL G_CLUST
POP DE POP DE
RET C RET C
;
PUSH HL PUSH HL
PUSH HL PUSH HL
EX DE,HL ; hl=­®¬¥à ª« áâ¥à  EX DE,HL ; hl=­®¬¥à ª« áâ¥à 
@ -46,13 +47,17 @@ INC_FAT PUSH HL
EX DE,HL EX DE,HL
POP DE ; ­®¬¥à ª« áâ¥à  POP DE ; ­®¬¥à ª« áâ¥à 
CALL W_T_FAT ; § ¯¨á âì ¢ ª¥è FAT-  ­®¬¥à ª« áâ¥à  CALL W_T_FAT ; § ¯¨á âì ¢ ª¥è FAT-  ­®¬¥à ª« áâ¥à 
;!FIXIT <­¥â ª®­âà®«ï ®è¨¡ª¨>
;
;
POP HL POP HL
LD DE,(FatBuffer.ENDCLUS) ; ­®¬¥à ª« áâ¥à  LD DE,(FatBuffer.ENDCLUS) ; ­®¬¥à ª« áâ¥à 
CALL W_T_FAT ; § ¯¨á âì ¢ ª¥è FAT-  ­®¬¥à ª« áâ¥à  CALL W_T_FAT ; § ¯¨á âì ¢ ª¥è FAT-  ­®¬¥à ª« áâ¥à 
CALL WR_FAT ; ¯®¤ª«. ¡ ­ªã ª¥è  FAT ¨ § ¯¨á âì ¥£® ­  ¤¨áª ;!TEST ;!TODO 2/12/23 [ ] ¡ £ á ¨§¡ëâ®ç­®© § ¯¨áìî WR_FAT?
CALL WR_FAT ; ¯®¤ª«. ¡ ­ªã ª¥è  FAT ¨ § ¯¨á âì ¥£® ­  ¤¨áª
;
AND A AND A
RET RET
;RX01 ;RX01
;----------------------------------------------------------- ;-----------------------------------------------------------
@ -106,6 +111,7 @@ R_F_F16:
LD D,(HL) LD D,(HL)
POP AF POP AF
OUT (SLOT3),A OUT (SLOT3),A
;!TODO #FFF7 - ª« áâ¥à á ª®áïªç­ë¬¨ ᥪâ®à ¬¨
LD HL,#FFEF ;!HARDCODE LD HL,#FFEF ;!HARDCODE
XOR A ; DssErr.sys.NO_ERROR XOR A ; DssErr.sys.NO_ERROR
SBC HL,DE ; ¯à®¢¥àª  ­  á«ã¦. ª« áâ¥àë SBC HL,DE ; ¯à®¢¥àª  ­  á«ã¦. ª« áâ¥àë
@ -193,8 +199,10 @@ W_T_FAT:
EXX EXX
PUSH HL PUSH HL
PUSH AF PUSH AF
LD A,1 ; [x] 2/12/23 FAT ­¥ ¢á¥£¤  ¬®£ § ¯¨á âìáï ­  HDD
LD (FatCache.Update),A ;LD A,1
;LD (FatCache.Update),A
;
LD A,(FatBuffer.FAT_TYP) LD A,(FatBuffer.FAT_TYP)
CP "2" ; fat12 CP "2" ; fat12
JR Z,W_T_F12 JR Z,W_T_F12
@ -226,6 +234,10 @@ W_T_F16:
POP AF ; ¢®ááâ. ¯®àâ POP AF ; ¢®ááâ. ¯®àâ
POP HL POP HL
OUT (SLOT3),A OUT (SLOT3),A
; [x] 2/12/23 FAT ­¥ ¢á¥£¤  ¬®£ § ¯¨á âìáï ­  HDD
LD A,1
LD (FatCache.Update),A
;
XOR A XOR A
RET RET
; ;
@ -274,6 +286,10 @@ W_T_F12: ;!FIXIT
POP AF POP AF
POP HL POP HL
OUT (SLOT3),A OUT (SLOT3),A
; [x] 2/12/23 FAT ­¥ ¢á¥£¤  ¬®£ § ¯¨á âìáï ­  HDD
LD A,1
LD (FatCache.Update),A
;
AND A AND A
RET RET
; ;

View File

@ -1 +1 @@
759 769