и ещё немного

This commit is contained in:
Anatoliy Belyanskiy 2024-03-26 04:45:27 +10:00
parent bd5919fdc4
commit 69829e359a
3 changed files with 106 additions and 59 deletions

View File

@ -46,8 +46,12 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
;
CALL G_CLUST
RET C
PUSH HL
; [ ] fat32
; [x] fat32
PUSH HL ; ¬« ¤è¨© ­®¬¥à ᥪâ®à 
EXX
PUSH HL ; áâ à訩 ­®¬¥à ᥪâ®à 
EXX
;
CALL WRITE_TO_FAT ; § ¯¨á âì ¢ ª¥è FAT-  ­®¬¥à ª« áâ¥à 
CALL WRITE_FAT_TABLE ; ¯®¤ª«. ¡ ­ªã ª¥è  FAT ¨ § ¯¨á âì ¥£® ­  ¤¨áª
LD HL,MASKARE
@ -55,35 +59,50 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
LD BC,11
LDIR
EX DE,HL
LD A,#10 ;  âਡãâ § ¯¨á¨ ª â «®£ 
LD A,FAT_ATTR.DIRECTORY ;  âਡãâ § ¯¨á¨ ª â «®£ 
; _sFAT_DIRECTORY_RECORD.ATTRIBUT
LD (HL),A
INC HL
LD BC,#0A00 ; b=áç¥â稪
LD BC,#0800 ; b=áç¥â稪
;
.loop1: LD (HL),C
INC HL
DJNZ .loop1
;
PUSH HL
CALL SYSTIME ; ã§­ âì ⥪. ¤ âã ¨ ¢à¥¬ï
CALL MK_TIME ; § ª®¤¨à®¢ âì ¢à¥¬ï/¤ âã
POP HL
LD (HL),E ; de=¢à¥¬ï
INC HL
LD (HL),D
INC HL
LD (HL),C ; ¤¥­ì
INC HL
LD (HL),B ; ¬¥áïæ
INC HL
; _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_H
; [x] fat32 § ¯¨áì áâ à襣® ­®¬¥à  ª« áâ¥à  .FIRST_CLUSTER_H
POP DE
PUSH DE
PUSH DE ; áâ à訩 ­®¬¥à ᥪâ®à 
LD (HL),E
INC HL
LD (HL),D
INC HL
; [ ] fat32 & VFAT
PUSH HL
CALL SYSTIME ; ã§­ âì ⥪. ¤ âã ¨ ¢à¥¬ï
CALL MK_TIME ; § ª®¤¨à®¢ âì ¢à¥¬ï/¤ âã
POP HL
; _sFAT_DIRECTORY_RECORD.TIME
LD (HL),E ; de=¢à¥¬ï
INC HL
LD (HL),D
INC HL
; _sFAT_DIRECTORY_RECORD.DATE
LD (HL),C ; ¤¥­ì
INC HL
LD (HL),B ; ¬¥áïæ
INC HL
; § ¯¨áì ¬« ¤è¥£® ­®¬¥à  ª« áâ¥à  .FIRST_CLUSTER_L
POP BC ; áâ à訩 ­®¬¥à ᥪâ®à 
POP DE ; ¬« ¤è¨© ­®¬¥à ᥪâ®à 
PUSH DE
PUSH BC
; _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L
LD (HL),E
INC HL
LD (HL),D
INC HL
; _sFAT_DIRECTORY_RECORD.F_SIZE
LD BC,#0400 ; b=áç¥â稪
;
.loop2: LD (HL),C
INC HL
DJNZ .loop2
@ -97,9 +116,9 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
.loop3: INC HL
LD (HL),C
DJNZ .loop3
;
; ᪮¯¨à®¢ âì ¡ ©âë 11..31 _sFAT_DIRECTORY_RECORD
INC HL
LD DE,HANDBUF+11 ; ï祩ª   âਡã⮢ ä ©« 
LD DE,HANDBUF+_sFAT_DIRECTORY_RECORD.ATTRIBUT ; ï祩ª   âਡã⮢ ä ©« 
EX DE,HL
LD BC,21
LDIR
@ -118,16 +137,16 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
;
LD A,(DIRPAGE.buffer)
CP "."
LD DE,DIRPAGE.buffer+11 ;  âਡãâë § ¯¨á¨ ;!HARDCODE
LD DE,DIRPAGE.buffer + _sFAT_DIRECTORY_RECORD.ATTRIBUT ;  âਡãâë § ¯¨á¨
JP Z,.MKD04
LD IX,HANDBUF
XOR A
; [ ] fat32
; [ ] fat32 à §®¡à âìáï
LD (IX+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L),A
LD (IX+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1),A
LD DE,HANDBUF + _sFAT_DIRECTORY_RECORD.ATTRIBUT ; ï祩ª   âਡã⮢ ä ©« 
.MKD04: EX DE,HL
LD BC,HANDBUF.SIZE - _sFAT_DIRECTORY_RECORD.ATTRIBUT
LD BC,HANDBUF.SIZE - _sFAT_DIRECTORY_RECORD.ATTRIBUT ; 21
LDIR
POP AF
OUT (SLOT3),A
@ -140,7 +159,9 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
LD BC,512-65 ;!HARDCODE
LDIR
;
POP HL
POP HL ; áâ à訩 ­®¬¥à ᥪâ®à 
EXX
POP HL ; ¬« ¤è¨© ­®¬¥à ᥪâ®à 
CALL CLUSTER_TO_SECTOR
LD A,(CORE_BUFFERS.BootSector.SectorsPerCluster) ; ᥪâ®à®¢ ­  ª« áâ¥à
.MKD12: PUSH AF

View File

@ -22,8 +22,10 @@ R_CLUST: LD HL,#0001
RET
; [x] fat32 ;!TEST
; ­ ©â¨ ¯¥à¢ë© ᢮¡®¤­ë© ª« áâ¥à ;!TODO ¯à®¢¥à¨âì ¯¥à¥¡®à ª« áâ¥à®¢
; [x] fat32 ;!TEST
; ¢ë室: HL - ¬« ¤è¨© ­®¬¥à ᢮¡®¤­®£® ª« áâ¥à 
; HL' - áâ à訩 ­®¬¥à ᢮¡®¤­®£® ª« áâ¥à 
G_CLUST: ;
.low+1: LD HL,#0001
.loop: INC HL ; ­®¬¥à ª« áâ¥à 
@ -31,7 +33,7 @@ G_CLUST: ;
OR H
; [x] fat32
EXX
.high+1: LD HL,0
.high+1: LD HL,#0000
JR NZ,.no_inc
INC HL
.no_inc: EXX
@ -39,7 +41,8 @@ G_CLUST: ;
CALL READ_FROM_FAT ; ¯à®ç¨â âì ¨§ ª¥è  FAT-  ­®¬¥à á«¥¤. ª« áâ¥à 
CP DSS_Error.sys.DISK_FULL
SCF
RET Z ; ®è¨¡ª  ?
RET Z
;
EXX
LD A,D
OR E
@ -51,33 +54,54 @@ G_CLUST: ;
EXX
LD (G_CLUST.high),HL
EXX
; XOR A
RET
; HL - CLUSTER
; [ ] fat32
; <20>ਪ९¨âì ª ¯®á«¥¤­¥¬ã ª« áâ¥àã æ¥¯®çª¨ ­®¢ë© ¯ãá⮩ ª« áâ¥à
; ‚室: HL':HL - ­®¬¥à ª« áâ¥à  ª ª®â®à®¬ã ¯à¨ªà¥¯¨âì ¯ãá⮩
; ‚ë室: HL':HL - ­®¬¥à ª« áâ¥à  ª ª®â®à®¬ã ¯à¨ªà¥¯¨«áï ¯ãá⮩
; DE':DE - ­®¬¥à ¯ãá⮣® ª« áâ¥à 
; [x] fat32 ;!TEST
INC_FAT:
PUSH HL
CALL G_CLUST
POP DE
RET C
PUSH HL ; ⥪ã騩 ª« áâ¥à
EXX
PUSH HL ; ⥪ã騩 ª« áâ¥à
EXX
;
CALL G_CLUST
;
EXX
POP DE ; ⥪ã騩 ª« áâ¥à
EXX
POP DE ; ⥪ã騩 ª« áâ¥à
RET C
; HL':HL - ᢮¡®¤­ë© ª« áâ¥à, DE':DE - ⥪ã騩 ª« áâ¥à
;
PUSH HL
; PUSH HL
; EX DE,HL ; hl=­®¬¥à ª« áâ¥à 
; .loop: CALL READ_FROM_FAT ; ¯à®ç¨â âì ¨§ ª¥è  FAT-  ­®¬¥à á«¥¤. ª« áâ¥à 
; EX DE,HL
; JR NC,.loop ; ­¥ ª®­¥æ 楯®çª¨
EX DE,HL
; POP DE ; ­®¬¥à ª« áâ¥à 
EXX
EX DE,HL
EXX
;
CALL WRITE_TO_FAT.Custom ; § ¯¨á âì ¢ ª¥è FAT-  ­®¬¥à ª« áâ¥à 
;!FIXIT <­¥â ª®­âà®«ï ®è¨¡ª¨>
;
POP HL
PUSH HL
EX DE,HL
EXX
PUSH HL
EX DE,HL
EXX
;
CALL WRITE_TO_FAT ; § ¯¨á âì ¢ ª¥è FAT-  ­®¬¥à ª« áâ¥à 
;!TEST ;!TODO 2/12/23 ; [ ] ¡ £ á ¨§¡ëâ®ç­®© § ¯¨áìî WRITE_FAT_TABLE?
;CALL WRITE_FAT_TABLE ; ¯®¤ª«. ¡ ­ªã ª¥è  FAT ¨ § ¯¨á âì ¥£® ­  ¤¨áª
;
EXX
POP DE
EX DE,HL
EXX
POP DE
EX DE,HL
;
AND A
RET
;RX01
@ -216,10 +240,11 @@ READ_FROM_FAT: CALL CHECK_CLUSTER_IS_SMALLER
; ‡ ¯¨á âì ¢ ª¥è FAT-  ­®¬¥à ª« áâ¥à 
; ¢å®¤: hl = ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à  ¢ ª®â®àë© § ¯¨á âì
; hl' = áâ à襥 á«®¢® ­®¬¥à  ª« áâ¥à  ¢ ª®â®àë© § ¯¨á âì (⮫쪮 ¤«ï fat32)
; .Custom:
; de = ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à  ª®â®à®¥ ¢¯¨á âì
; de' = áâ à襥 á«®¢® ­®¬¥à  ª« áâ¥à  ª®â®à®¥ ¢¯¨á âì (⮫쪮 ¤«ï fat32)
; ¢ë室: â ª®© ¦¥ ª ª ¨ ¢å®¤
; ¢ë室: HL':HL â ª¨¥ ¦¥ ª ª ¨ ­  ¢å®¤¥
; .Custom:
; HL':HL ¨ DE':DE â ª¨¥ ¦¥ ª ª ¨ ­  ¢å®¤¥
;------------------------------------------------------------------------------------------------
; [x] fat32 ;!TEST
WRITE_TO_FAT: LD DE,(FatBuffer.ENDCLUS_LOW) ; ­®¬¥à ª« áâ¥à 
@ -270,7 +295,7 @@ WRITE_TO_FAT: LD DE,(FatBuffer.ENDCLUS_LOW) ;
.FAT12: ;!FIXIT ¯¥à¥¤¥« âì ­  ¯¥à¥¬¥­­ë¥ FAT_CACHE
CALL GET_FAT12_CELL
POP DE ; ¬« ¤è¨© ­®¬¥à ª« áâ¥à  ª®â®àë© ¢¯¨á âì
JR C,.Correct_1 ; ­®¬¥à ­¥çñâ­ë©
JR C,.Correct_1 ; ­®¬¥à ­¥çñâ­ë©
LD (HL),E
INC HL
LD A,(HL)
@ -280,6 +305,7 @@ WRITE_TO_FAT: LD DE,(FatBuffer.ENDCLUS_LOW) ;
JR .exit
;
.Correct_1: ; ¢«¥¢® ­  4 ¡¨âa
PUSH DE
EX DE,HL
ADD HL,HL
ADD HL,HL
@ -293,6 +319,7 @@ WRITE_TO_FAT: LD DE,(FatBuffer.ENDCLUS_LOW) ;
LD (HL),A ; á®åà. ¢ ª¥è¥ FAT- 
INC HL ; ­®¬¥à ª« áâ¥à 
LD (HL),D
POP DE
JR .exit
;
.FAT32: ; [x] fat32 ;!TEST
@ -619,7 +646,6 @@ CLUSTER_TO_SECTOR:
;LD E,A
;
ADC HL,DE
;!TODO   ­ ¤® «¨ ¯à®¢¥àïâì ¯¥à¥¯®«­¥­¨¥ HL:IX?
RET
////////////////////////////////////////////////////////////////////////
@ -868,15 +894,15 @@ BLOK_WR: PUSH BC
JR NC,.next
; end of chain - get new cluster
; [ ] fat32
PUSH HL
EXX
PUSH HL
EXX
; PUSH HL
; EXX
; PUSH HL
; EXX
CALL INC_FAT
EXX
POP HL
EXX
POP HL
; EXX
; POP HL
; EXX
; POP HL
JP C,.Error_6
;
CALL READ_FROM_FAT
@ -957,11 +983,11 @@ BLOK_WR: PUSH BC
PUSH BC
CALL READ_FROM_FAT
JR NC,.WR9
PUSH HL
;PUSH HL
CALL INC_FAT
POP HL
;POP HL
JR C,.ErrorFull
CALL READ_FROM_FAT
;CALL READ_FROM_FAT
.WR9: POP BC
EX DE,HL
PUSH HL

View File

@ -1 +1 @@
955
947