mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
...
This commit is contained in:
parent
0a649252ab
commit
7d98613cb5
@ -82,6 +82,7 @@ CLOSE_FN: LD (.TMP),A
|
||||
LDIR
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||
CALL SAVEDIR
|
||||
.NOTMODF: LD A,(.TMP)
|
||||
JP RES_FM
|
||||
|
||||
@ -79,7 +79,7 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23 ;CREATE_FN:
|
||||
.loop2: LD (HL),C
|
||||
INC HL
|
||||
DJNZ .loop2
|
||||
;
|
||||
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||
CALL WRT_HND
|
||||
RET C
|
||||
;CALL SAVEDIR
|
||||
|
||||
@ -100,7 +100,7 @@ MKDIR:
|
||||
.loop2: LD (HL),C
|
||||
INC HL
|
||||
DJNZ .loop2
|
||||
;
|
||||
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||
CALL WRT_HND ; ᪮¯¨à. ®¢ãî § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ )
|
||||
;CALL SAVEDIR ; ¨ á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||||
;
|
||||
|
||||
@ -81,5 +81,6 @@ RENAME: ;!TEST Current Dir ;[x] 15/10/23
|
||||
;
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||
JP SAVEDIR
|
||||
; ; ;
|
||||
145
DSS/FS/FAT.asm
145
DSS/FS/FAT.asm
@ -596,7 +596,7 @@ LOADDIR: ;!TODO optimize
|
||||
|
||||
;!TODO FAT procedures
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
/*
|
||||
LOAD_SAVE_DIR_PREPARE:
|
||||
;!TODO optimize
|
||||
XOR A ; FILE MANIPULATOR = 0
|
||||
@ -659,11 +659,19 @@ LOAD_SAVE_DIR_PREPARE:
|
||||
EX DE,HL
|
||||
EXX
|
||||
JR NC,.loop
|
||||
; DE - à §¬¥à ¤¨à¥ªâ®à¨¨ ¢ ª« áâ¥à å
|
||||
;
|
||||
; DE - à §¬¥à ¤¨à¥ªâ®à¨¨ ¢ ª« áâ¥à å
|
||||
;!FIXIT ¬®¦® ®¯â¨¬¨§ãâì ª®«-¢® ᤢ¨£®¢
|
||||
;0001 0000 0000 0000 max ª®«-¢® ª« áâ¥à®¢
|
||||
; ¯à¨¬¥à
|
||||
;0000 0000 0000 0111 Clusters
|
||||
; 0100 0000 SectorsPerCluster
|
||||
;0000 0010 0000 0000 BytesPerSector
|
||||
; D' E' D E
|
||||
;0000 0000 0000 0011 1000 0000 0000 0000
|
||||
;
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.SectorsPerCluster)
|
||||
LD BC,(CORE_BUFFERS.FS_Buffer.BytesPerSector)
|
||||
;
|
||||
; DE':DE - ª®«-¢® ª« áâ¥à®¢
|
||||
; A - à §¬¥à ª« áâ¥à ¢ ᥪâ®à å
|
||||
; BC - à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
||||
@ -702,6 +710,133 @@ LOAD_SAVE_DIR_PREPARE:
|
||||
JR NC,.loop2
|
||||
; <-- DE*BC*A = DE':DE
|
||||
RET
|
||||
*/
|
||||
; ‚室:
|
||||
; ID § ¯¨á¨, ª®â®àë© ¤®«¦¥ ¯®¯ áâì ¢ Š<>˜
|
||||
LOAD_SAVE_DIR_PREPARE:
|
||||
;!TODO optimize
|
||||
XOR A ; FILE MANIPULATOR = 0
|
||||
LD H,A
|
||||
LD L,A
|
||||
LD IX,0
|
||||
LD B,A ; ®â ç « ä ©«
|
||||
CALL MOVE_FP
|
||||
|
||||
SET_PAGE_X DIRPAGE
|
||||
AND A
|
||||
PUSH AF
|
||||
;
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
||||
LD (CORE_BUFFERS.FM_BUF.DRIVE),A
|
||||
;;;;;;;;
|
||||
;LD A,(IY+_sFM.FS_REC.FIRST_CLUSTER_L)
|
||||
;OR (IY+_sFM.FS_REC.FIRST_CLUSTER_L+1)
|
||||
;OR (IY+_sFM.FS_REC.FIRST_CLUSTER_H)
|
||||
;OR (IY+_sFM.FS_REC.FIRST_CLUSTER_H+1)
|
||||
;
|
||||
XOR A
|
||||
LD D,#40
|
||||
LD E,A
|
||||
LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L)
|
||||
EXX
|
||||
LD D,A
|
||||
LD E,A
|
||||
LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H)
|
||||
OR H
|
||||
OR L
|
||||
EXX
|
||||
OR H
|
||||
OR L
|
||||
;;;;;;;;
|
||||
PUSH AF
|
||||
CALL NZ,.CalcDirSize
|
||||
;
|
||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.F_SIZE),DE
|
||||
EXX
|
||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.F_SIZE + 2),DE
|
||||
POP AF
|
||||
EX AF,AF'
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
.CalcDirSize: ; calc dir size in clusters
|
||||
LD DE,0
|
||||
;LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L)
|
||||
;EXX
|
||||
; LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H)
|
||||
.loop: ; ;
|
||||
;EXX
|
||||
INC DE ; <20> ¤¥¥¬áï âãâ â®, ç⮠ᯥæ¨ä¨ª æ¨ï ¢ë¯®«ï¥âáï ¨ ¯¥à¥¯®«¥¨ï ¥ ¡ã¤¥â
|
||||
PUSH DE
|
||||
CALL READ_FROM_FAT
|
||||
EX DE,HL
|
||||
POP DE
|
||||
EXX
|
||||
EX DE,HL
|
||||
EXX
|
||||
JR NC,.loop
|
||||
;
|
||||
; DE - à §¬¥à ¤¨à¥ªâ®à¨¨ ¢ ª« áâ¥à å
|
||||
;!FIXIT ¬®¦® ®¯â¨¬¨§ãâì ª®«-¢® ᤢ¨£®¢
|
||||
;0001 0000 0000 0000 max ª®«-¢® ª« áâ¥à®¢
|
||||
; ¯à¨¬¥à
|
||||
;0000 0000 0000 0111 Clusters
|
||||
; 0100 0000 SectorsPerCluster
|
||||
;0000 0010 0000 0000 BytesPerSector
|
||||
; D' E' D E
|
||||
;0000 0000 0000 0011 1000 0000 0000 0000
|
||||
;
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.SectorsPerCluster)
|
||||
LD BC,(CORE_BUFFERS.FS_Buffer.BytesPerSector)
|
||||
; DE':DE - ª®«-¢® ª« áâ¥à®¢
|
||||
; A - à §¬¥à ª« áâ¥à ¢ ᥪâ®à å
|
||||
; BC - à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
||||
; --> DE*BC*A = DE':DE ¤«ï ®â¢¥â å¢ â¨â, ¯®å®¤ã, 4å ॣ¨áâ஢
|
||||
EXX
|
||||
LD DE,0
|
||||
EXX
|
||||
SRL B
|
||||
RR C
|
||||
RRCA
|
||||
JR C,.loop2
|
||||
;
|
||||
.loop1: ;
|
||||
SLA E
|
||||
RL D
|
||||
EXX
|
||||
RL E
|
||||
RL D
|
||||
;RL C
|
||||
EXX
|
||||
;
|
||||
RRCA
|
||||
JR NC,.loop1
|
||||
;
|
||||
.loop2: ;
|
||||
SLA E
|
||||
RL D
|
||||
EXX
|
||||
RL E
|
||||
RL D
|
||||
;RL C
|
||||
EXX
|
||||
;
|
||||
SRL B
|
||||
RR C
|
||||
JR NC,.loop2
|
||||
; <-- DE*BC*A = DE':DE
|
||||
RET
|
||||
|
||||
/* 4 3 2 1
|
||||
#FFFF<<5 = #1FFFE0 = 0000 0000 0001 1111 1111 1111 1110 0000
|
||||
|
||||
#FFFF ®¬¥à § ¯¨á¨
|
||||
#1FFFE0 ᬥ饨¥ § ¯¨áì ¢ ä ©«¥ ¤¨à¥ªâ®à¨¨
|
||||
#1FFFE0 & #1FC000 ᬥ饨¥ ã¦ë© ¡«®ª ¯® #4000 ¡ ©â®¢
|
||||
#1FFFE0 & #3FFF €¤à¥á 㦮© ¯®§¨æ¨¨ ¢ ªíè
|
||||
(#1FFFE0 & #1FC000)<<2 ¤¢¨£ ¥¬ ¡ ©â 2 ¨ 3 ç⮡ ¯®«ãç¨âì ®¬¥à ¡«®ª
|
||||
*/
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
; ᪮¯¨à®¢ âì § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ ) de ix iy
|
||||
@ -760,12 +895,14 @@ WRT_HND:
|
||||
.SAVEDIR: EXX
|
||||
PUSH DE
|
||||
EXX
|
||||
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||
CALL SAVEDIR
|
||||
POP DE
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
; ‘¡à®á¨âì ª¥è ª â «®£ ¤¨áª.
|
||||
; ¢å®¤: iy=áâàãªâãà ¤¥áªà¨¯â®à
|
||||
; [ ] big dir ¯®«ãç âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||
SAVEDIR: ;!TODO optimize
|
||||
CALL LOAD_SAVE_DIR_PREPARE
|
||||
PUSH AF
|
||||
@ -1368,6 +1505,7 @@ DELETE_REC_FAT: SET_PAGE_X DIRPAGE
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
EX AF,AF'
|
||||
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||
JP Z,SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||||
; ¥á«¨ à §¬¥à ä ©« ¥ ®«ì
|
||||
.loop: ;EX DE,HL ; hl=®¬¥à ª« áâ¥à
|
||||
@ -1395,6 +1533,7 @@ DELETE_REC_FAT: SET_PAGE_X DIRPAGE
|
||||
;EX DE,HL
|
||||
JP NC,.loop
|
||||
CALL WRITE_FAT_TABLE
|
||||
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||
JP SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||||
|
||||
; “áâ ®¢¨âì ¯¥à¢ë¬ ¨§¢¥áâë¬ ª« áâ¥à®¬ ¤«ï ¯®¨áª ᢮¡®¤®£®.
|
||||
|
||||
@ -80,7 +80,7 @@
|
||||
;
|
||||
STRUCT _sFS_Buffer
|
||||
.DRIVE: BYTE #FF
|
||||
.FAT_TYPE: BYTE #00 ; TYPE FAT (12 - 12bit, 16 - 16bit, 32 - 32bit) ; fat32
|
||||
.FAT_TYPE: BYTE #00 ; TYPE FAT (12 - 12bit, 16 - 16bit, 32 - 32bit)
|
||||
.CacheBlock: WORD #0000
|
||||
.CacheUpdated: BYTE #00
|
||||
;.SectorsPerBank: BYTE #00
|
||||
@ -106,11 +106,13 @@
|
||||
.BytesPerSector: WORD #0000
|
||||
.SectorsPerCluster: BYTE #00
|
||||
.FSINFO_Sector: WORD #01
|
||||
.BPB_SERIAL_NUMBER: DWORD 0
|
||||
.BPB_SERIAL_NUMBER: DWORD #00000000
|
||||
.BPB_LABEL: BLOCK 11,' ' ; 11 ¤«ï FAT, 31 ¤«ï CDFS
|
||||
.UPD_FSINFO: BYTE 0
|
||||
.FREE_CLUSTERS_COUNT_L: WORD #FFFF
|
||||
.FREE_CLUSTERS_COUNT_H: WORD #FFFF
|
||||
.DIR_BLOCK BYTE #00 ; ª ª®© ¡«®ª ¤¨à¥ªâ®à¨¨ § £à㦥 ¢ ªíè ¤¨à¥ªâ®à¨© DIRPAGE
|
||||
.DIR_BLOCK_CHANGES DWORD #00000000 ; ª ª¨¥ ¨§ ªã᪮¢ ¢ ¡«®ª¥ ªíè DIRPAGE ¨§¬¥¨«¨áì ¤® á®åà ¥¨ï
|
||||
;.FilesPerSector: BYTE #00 ; ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
|
||||
;.ClustersPerBank: BYTE #00 ; A - Clusters per bank (16k) (ç¨á«® ª« áâ¥à®¢ ¡«®ª އ“)
|
||||
;.READ_PG: BYTE #00 ;!TODO ¥ ¨á¯®«ì§ãîâáï ¥ª®â®àë¥ § 票ï, ® § ¤ã¬ª ¥¯«®å ï)))
|
||||
|
||||
6
DSS/ToDo.txt
Normal file
6
DSS/ToDo.txt
Normal file
@ -0,0 +1,6 @@
|
||||
<EFBFBD>® ¯®«ë¬ ¤¨à¥ªâ®à¨ï¬.
|
||||
;[ ] <20>¥à¥¬¥ ï DIR_BLOCK ¯®ª §ë¢ îé ï ª ª®© ¡«®ª ¤¨à¥ªâ®à¨¨ ¢ ªíè.
|
||||
;[ ] <20>¥à¥¬¥ ï DIR_BLOCK_CHANGED ¯®ª §ë¢ îé ï ª ª®© ¨§ ªã᪮¢ ¢ ¡«®ª¥ ªíè ¨§¬¥¨«áï ¤® á®åà ¥¨ï. Š ª ¢ FAT.
|
||||
;[ ] <20>à®æ¥¤ãàë ¬¥ïî騥 ¤ ë¥ ¢ ªíè ¤¨à¥ªâ®à¨¨ ¤®«¦ë ¬¥ïâì DIR_BLOCK_CHANGED.
|
||||
;[ ] <20>¥à¥¤ ¢ âì ¢ LOADDIR ã¦ë© ¡«®ª ¤«ï § £à㧪¨ ¢ ªíè (¨«¨ ®¬¥à 㦮© § ¯¨á¨ ª â «®£ ).
|
||||
;[ ] LOAD_SAVE_DIR_PREPARE ¯®å®¤ã, ¯¥à¥¤¥« âì ª å¥à ¬ ¢¬¥á⥠á LOADDIR ¨ SAVEDIR
|
||||
Loading…
Reference in New Issue
Block a user