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 ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C RET C
; [ ] 26/06/2024
CALL CHECK_64kb_CLUSTER
RET C
;
CALL MASK CALL MASK
RET C RET C
LD A,FAT_ATTR.NoVolID LD A,FAT_ATTR.NoVolID

View File

@ -108,8 +108,10 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23 ;CREATE_FN:
LD (.PATH0),HL LD (.PATH0),HL
CALL GETWORD CALL GETWORD
RET C RET C
; LD HL,TMPNAME ; [ ] 26/06/2024
; LD DE,MASKARE CALL CHECK_64kb_CLUSTER
RET C
;
JP MASK JP MASK
; ;
; [x] fixed a bug with incorrect search when there were too many files in the directory 12/03/2024 ; [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 ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª .old_EXE: CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C RET C
; [ ] 26/06/2024
CALL CHECK_64kb_CLUSTER
RET C
;
CALL MASK CALL MASK
RET C RET C
; ;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -166,9 +166,10 @@ RST_38_IM1: JP .Handler
POP AF POP AF
JR .Portal JR .Portal
; ;
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
; ;
;NMI: RETN ;NMI: RETN
; ;
@ -180,6 +181,7 @@ RST_38_IM1: JP .Handler
NMI_0x66: RETN ;JP NMI ; NMI_0x66: RETN ;JP NMI ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; ;
////////////////////////////////////////////////////////////////////////
; ;
RST_10: PUSH HL RST_10: PUSH HL
@ -404,6 +406,19 @@ ADRST10: ;DS 512 ;,0
INCLUDE "Procedures.asm" INCLUDE "Procedures.asm"
INCLUDE "Kernel_Panic.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 ª ¡ãä¥à ¬ ;!FIXIT ª ¡ãä¥à ¬
; Œ áᨢ «®£. ­®¬¥à®¢ ¡ ­®ª à áè¨à¥­¨ï DSS ; Œ áᨢ «®£. ­®¬¥à®¢ ¡ ­®ª à áè¨à¥­¨ï DSS
BANKTBL: BLOCK USING_MEMPAGES+1,#FF ; +1 ¤«ï COREPAGE BANKTBL: BLOCK USING_MEMPAGES+1,#FF ; +1 ¤«ï COREPAGE

View File

@ -579,7 +579,8 @@ LOAD_SAVE_DIR_PREPARE:
; ᪮¯¨à®¢ âì § ¯¨áì ¢ ᯨ᮪ ¤¨áª  (ª â «®£ ) de ix iy ; ᪮¯¨à®¢ âì § ¯¨áì ¢ ᯨ᮪ ¤¨áª  (ª â «®£ ) de ix iy
; ¨ á¡à®á¨âì ª¥è ª â «®£  ­  ¤¨áª ; ¨ á¡à®á¨âì ª¥è ª â «®£  ­  ¤¨áª
; ¢å®¤: (HANDBUF) - § ¯¨áì ª â «®£  ; ¢å®¤: (HANDBUF) - § ¯¨áì ª â «®£ 
WRT_HND: SET_PAGE_X DIRPAGE WRT_HND:
SET_PAGE_X DIRPAGE
EX AF,AF' EX AF,AF'
LD HL,DIRPAGE.buffer LD HL,DIRPAGE.buffer
;!TEST 9/11/23 record index ;!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 .ECHO_ : DZ "Echo is %1\r\n"
stN .ON_ : DZ "on" stN .ON_ : DZ "on"
stN .OFF_ : DZ "off" 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" DZ " %4 Dir(s)\r %5 byte(s) capacity\r\n"
stN .DIR_4_ : DZ " Free space %5 byte(s)\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 stN .DIR_3_ : DZ "%4 %5 %3 %1 %2 \r\n" ;DATE TIME SIZE FILENAME EXT

View File

@ -1 +1 @@
425 427