write protected partition with 64 kb cluster

This commit is contained in:
Anatoliy Belyanskiy 2024-06-26 04:09:40 +10:00
parent 4cebd03a1a
commit 3480195912
13 changed files with 142 additions and 100 deletions

View File

@ -76,6 +76,10 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
;
CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C
; [ ] 26/06/2024
CALL CHECK_64kb_CLUSTER
RET C
;
CALL MASK
RET C
LD A,FAT_ATTR.NoVolID

View File

@ -108,8 +108,10 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23 ;CREATE_FN:
LD (.PATH0),HL
CALL GETWORD
RET C
; LD HL,TMPNAME
; LD DE,MASKARE
; [ ] 26/06/2024
CALL CHECK_64kb_CLUSTER
RET C
;
JP MASK
;
; [x] fixed a bug with incorrect search when there were too many files in the directory 12/03/2024

View File

@ -19,6 +19,10 @@ DEL_FN: ;!TEST
;
.old_EXE: CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C
; [ ] 26/06/2024
CALL CHECK_64kb_CLUSTER
RET C
;
CALL MASK
RET C
;

View File

@ -34,9 +34,11 @@ MKDIR:
;
.START: CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C
;LD HL,TMPNAME ; 8.3 ¨¬ï
;LD DE,MASKARE ; ¡ãä¥à ¨¬¥­¨ 11 ᨬ¢. ä®à¬ â 
CALL MASK ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
; [ ] 26/06/2024
CALL CHECK_64kb_CLUSTER
RET C
;
CALL MASK
RET C
;!TEST optimization à ­¥¥ GETWORD 㦥 § £à㧨« ¤¨à¥ªâ®à¨î
;CALL LOADDIR ; ¯à®ç¨â âì ᯨ᮪ ª â «®£ 

View File

@ -9,77 +9,82 @@
; INPUT: HL - "old_name.ext",#00 without simbols * ?
; DE - "new_name.ext",#00 without simbols * ?
////////////////////////////////////////////////////////////////////////
RENAME: ;!TEST Current Dir ;[x] 15/10/23
; [ ] 10/06/24
IF OLD_DSS_FOR_OLD_EXE
LD A,(EXE_VERSION)
OR A
JR Z,.old_EXE
ENDIF
;
PUSH HL
PUSH DE
CALL DIR_PATH_CHECK.forceCheck
POP DE
POP HL
RET C
;
.old_EXE:
PUSH DE
;LD DE,MASKARE
CALL MASK.name
POP DE
RET C
;!TEST optimization
;LD HL,MASKARE
;LD BC,11
;LD A,"?"
;CPIR
;LD A,DSS_Error.sys.INVALID_NAME
;SCF
CALL CHECK_NAME
;
RET Z
PUSH DE
CALL LOADDIR ; ¯à®ç¨â âì ᯨ᮪ ª â «®£ 
;LD A,#33
LD A,FAT_ATTR.NoSYSnoVolID
CALL SEARCH.Custom ; ¯®¨áª § ¯¨á¨ ¢ ᯨ᪥ ¤¨áª 
POP HL
RET C
;LD DE,MASKARE
CALL MASK.name
RET C
;!TEST optimization
;LD HL,MASKARE
;LD BC,11
;LD A,"?"
;CPIR
;LD A,DSS_Error.sys.INVALID_NAME
;SCF
CALL CHECK_NAME
;
RET Z
PUSH IX
LD A,FAT_ATTR.NoSYSnoVolID
CALL SEARCH.Custom ; ¯®¨áª § ¯¨á¨ ¢ ᯨ᪥ ¤¨áª 
POP IX
LD A,DSS_Error.sys.FILE_EXISTS
CCF
RET C
RENAME: ;!TEST Current Dir ;[x] 15/10/23
; [ ] 10/06/24
IF OLD_DSS_FOR_OLD_EXE
LD A,(EXE_VERSION)
OR A
JR Z,.old_EXE
ENDIF
;
PUSH HL
PUSH DE
CALL DIR_PATH_CHECK.forceCheck
POP DE
POP HL
RET C
;
.old_EXE: ;
; !TODO ¢®âª­ãâì âãâ GETWORD, ç⮡ ¬®¦­® ¡ë«® 㤠«ïâì ¯® ®â­®á¨â¥«ì­ë¬ ¯ãâï¬?
;
; [ ] 26/06/2024
CALL CHECK_64kb_CLUSTER
RET C
;
PUSH DE
CALL MASK.name
POP DE
RET C
;!TEST optimization
;LD HL,MASKARE
;LD BC,11
;LD A,"?"
;CPIR
;LD A,DSS_Error.sys.INVALID_NAME
;SCF
CALL CHECK_NAME
;
RET Z
PUSH DE
CALL LOADDIR ; ¯à®ç¨â âì ᯨ᮪ ª â «®£ 
;LD A,#33
LD A,FAT_ATTR.NoSYSnoVolID
CALL SEARCH.Custom ; ¯®¨áª § ¯¨á¨ ¢ ᯨ᪥ ¤¨áª 
POP HL
RET C
;LD DE,MASKARE
CALL MASK.name
RET C
;!TEST optimization
;LD HL,MASKARE
;LD BC,11
;LD A,"?"
;CPIR
;LD A,DSS_Error.sys.INVALID_NAME
;SCF
CALL CHECK_NAME
;
RET Z
PUSH IX
LD A,FAT_ATTR.NoSYSnoVolID
CALL SEARCH.Custom ; ¯®¨áª § ¯¨á¨ ¢ ᯨ᪥ ¤¨áª 
POP IX
LD A,DSS_Error.sys.FILE_EXISTS
CCF
RET C
SET_PAGE_X DIRPAGE
EX AF,AF'
;
LD HL,MASKARE
LD D,XH
LD E,XL
LD BC,11
LDIR
;
CALL DELETE_LFN_RECORDS ; [ ] 㤠«¥­¨¥ § ¯¨á¨ LFN
;
EX AF,AF'
OUT (SLOT3),A
JP SAVEDIR
;
EX AF,AF'
;
LD HL,MASKARE
LD D,XH
LD E,XL
LD BC,11
LDIR
;
CALL DELETE_LFN_RECORDS ; [ ] 㤠«¥­¨¥ § ¯¨á¨ LFN
;
EX AF,AF'
OUT (SLOT3),A
JP SAVEDIR
; ; ;

View File

@ -30,6 +30,10 @@ RMDIR: ;!TEST Current Dir ;[x] 15/10/23
;
.START: CALL GETWORD
RET C
; [ ] 26/06/2024
CALL CHECK_64kb_CLUSTER
RET C
;
CALL MASK
RET C
;!TEST optimization

View File

@ -10,22 +10,23 @@
; B - ᥪ㭤ë
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
////////////////////////////////////////////////////////////////////////
PUT_D_T:
PUSH AF
CALL MK_TIME ; § ª®¤¨à®¢ âì ¢à¥¬ï/¤ âã
POP AF ; ¤¥áªà¨¯â®à
PUSH DE
PUSH BC
CALL SET_FM
POP BC
POP DE
RET C
; [ ] VFAT
LD (IY + _sFM.FS_REC.TIME),E
LD (IY + _sFM.FS_REC.TIME+1),D
LD (IY + _sFM.FS_REC.DATE),C
LD (IY + _sFM.FS_REC.DATE+1),B
SET 7,(IY + _sFM.ACCESS_MODE) ;R006 ; ãáâ. ¯à¨§­ ª ¨§¬¥­¥­¨ï ä ©« 
AND A
RET
;!FIXIT ­ ¤®? CHECK_64kb_CLUSTER
PUT_D_T: PUSH AF
CALL MK_TIME ; § ª®¤¨à®¢ âì ¢à¥¬ï/¤ âã
POP AF ; ¤¥áªà¨¯â®à
PUSH DE
PUSH BC
CALL SET_FM
POP BC
POP DE
RET C
; [ ] VFAT
LD (IY + _sFM.FS_REC.TIME),E
LD (IY + _sFM.FS_REC.TIME+1),D
LD (IY + _sFM.FS_REC.DATE),C
LD (IY + _sFM.FS_REC.DATE+1),B
SET 7,(IY + _sFM.ACCESS_MODE) ;R006 ; ãáâ. ¯à¨§­ ª ¨§¬¥­¥­¨ï ä ©« 
AND A
RET
;

View File

@ -37,6 +37,10 @@ WRITE: ;!TEST ;!TODO 5/12/23 ; [ ]
LD A,(IY + _sFM.DRIVE)
CALL OPENDSK
JR C,.ERR1
; [ ] 26/06/2024
CALL CHECK_64kb_CLUSTER
RET C
;
CALL GET_OFFSET_IN_SECTORS
;
JP NZ,.WOV1

View File

@ -166,9 +166,10 @@ RST_38_IM1: JP .Handler
POP AF
JR .Portal
;
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
;
;NMI: RETN
;
@ -180,6 +181,7 @@ RST_38_IM1: JP .Handler
NMI_0x66: RETN ;JP NMI ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
;
////////////////////////////////////////////////////////////////////////
;
RST_10: PUSH HL
@ -404,6 +406,19 @@ ADRST10: ;DS 512 ;,0
INCLUDE "Procedures.asm"
INCLUDE "Kernel_Panic.asm"
; [ ] 26/06/2024& read only 64kb cluster ; !TODO cluster 64kb
CHECK_64kb_CLUSTER:
LD HL,(CORE_BUFFERS.FatBuffer.BytesPerCluster)
; CF=0
ADC HL,HL
LD A,DSS_Error.sys.WRITE_PROTECT
RET NZ
CCF
RET
;
;!FIXIT ª ¡ãä¥à ¬
; Œ áᨢ «®£. ­®¬¥à®¢ ¡ ­®ª à áè¨à¥­¨ï DSS
BANKTBL: BLOCK USING_MEMPAGES+1,#FF ; +1 ¤«ï COREPAGE

View File

@ -579,7 +579,8 @@ LOAD_SAVE_DIR_PREPARE:
; ᪮¯¨à®¢ âì § ¯¨áì ¢ ᯨ᮪ ¤¨áª  (ª â «®£ ) de ix iy
; ¨ á¡à®á¨âì ª¥è ª â «®£  ­  ¤¨áª
; ¢å®¤: (HANDBUF) - § ¯¨áì ª â «®£ 
WRT_HND: SET_PAGE_X DIRPAGE
WRT_HND:
SET_PAGE_X DIRPAGE
EX AF,AF'
LD HL,DIRPAGE.buffer
;!TEST 9/11/23 record index

View File

@ -1 +1 @@
993
994

View File

@ -45,7 +45,7 @@ MAIN_MSG:
stN .ECHO_ : DZ "Echo is %1\r\n"
stN .ON_ : DZ "on"
stN .OFF_ : DZ "off"
stN .DIR_2_ : db " %3 File(s)\r %1 byte(s)\r\n"
stN .DIR_2_ : db "\r\n %3 File(s)\r %1 byte(s)\r\n"
DZ " %4 Dir(s)\r %5 byte(s) capacity\r\n"
stN .DIR_4_ : DZ " Free space %5 byte(s)\r\n"
stN .DIR_3_ : DZ "%4 %5 %3 %1 %2 \r\n" ;DATE TIME SIZE FILENAME EXT

View File

@ -1 +1 @@
425
427