mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
...
This commit is contained in:
parent
0a649252ab
commit
7d98613cb5
@ -82,6 +82,7 @@ CLOSE_FN: LD (.TMP),A
|
|||||||
LDIR
|
LDIR
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||||
CALL SAVEDIR
|
CALL SAVEDIR
|
||||||
.NOTMODF: LD A,(.TMP)
|
.NOTMODF: LD A,(.TMP)
|
||||||
JP RES_FM
|
JP RES_FM
|
||||||
|
|||||||
@ -79,7 +79,7 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23 ;CREATE_FN:
|
|||||||
.loop2: LD (HL),C
|
.loop2: LD (HL),C
|
||||||
INC HL
|
INC HL
|
||||||
DJNZ .loop2
|
DJNZ .loop2
|
||||||
;
|
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||||
CALL WRT_HND
|
CALL WRT_HND
|
||||||
RET C
|
RET C
|
||||||
;CALL SAVEDIR
|
;CALL SAVEDIR
|
||||||
|
|||||||
@ -100,7 +100,7 @@ MKDIR:
|
|||||||
.loop2: LD (HL),C
|
.loop2: LD (HL),C
|
||||||
INC HL
|
INC HL
|
||||||
DJNZ .loop2
|
DJNZ .loop2
|
||||||
;
|
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||||
CALL WRT_HND ; ᪮¯¨à. ®¢ãî § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ )
|
CALL WRT_HND ; ᪮¯¨à. ®¢ãî § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ )
|
||||||
;CALL SAVEDIR ; ¨ á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
;CALL SAVEDIR ; ¨ á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||||||
;
|
;
|
||||||
|
|||||||
@ -81,5 +81,6 @@ RENAME: ;!TEST Current Dir ;[x] 15/10/23
|
|||||||
;
|
;
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||||
JP SAVEDIR
|
JP SAVEDIR
|
||||||
; ; ;
|
; ; ;
|
||||||
143
DSS/FS/FAT.asm
143
DSS/FS/FAT.asm
@ -596,7 +596,7 @@ LOADDIR: ;!TODO optimize
|
|||||||
|
|
||||||
;!TODO FAT procedures
|
;!TODO FAT procedures
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
/*
|
||||||
LOAD_SAVE_DIR_PREPARE:
|
LOAD_SAVE_DIR_PREPARE:
|
||||||
;!TODO optimize
|
;!TODO optimize
|
||||||
XOR A ; FILE MANIPULATOR = 0
|
XOR A ; FILE MANIPULATOR = 0
|
||||||
@ -659,11 +659,19 @@ LOAD_SAVE_DIR_PREPARE:
|
|||||||
EX DE,HL
|
EX DE,HL
|
||||||
EXX
|
EXX
|
||||||
JR NC,.loop
|
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 A,(CORE_BUFFERS.FS_Buffer.SectorsPerCluster)
|
||||||
LD BC,(CORE_BUFFERS.FS_Buffer.BytesPerSector)
|
LD BC,(CORE_BUFFERS.FS_Buffer.BytesPerSector)
|
||||||
;
|
|
||||||
; DE':DE - ª®«-¢® ª« áâ¥à®¢
|
; DE':DE - ª®«-¢® ª« áâ¥à®¢
|
||||||
; A - à §¬¥à ª« áâ¥à ¢ ᥪâ®à å
|
; A - à §¬¥à ª« áâ¥à ¢ ᥪâ®à å
|
||||||
; BC - à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
; BC - à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
||||||
@ -702,6 +710,133 @@ LOAD_SAVE_DIR_PREPARE:
|
|||||||
JR NC,.loop2
|
JR NC,.loop2
|
||||||
; <-- DE*BC*A = DE':DE
|
; <-- DE*BC*A = DE':DE
|
||||||
RET
|
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
|
; ᪮¯¨à®¢ âì § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ ) de ix iy
|
||||||
@ -760,12 +895,14 @@ WRT_HND:
|
|||||||
.SAVEDIR: EXX
|
.SAVEDIR: EXX
|
||||||
PUSH DE
|
PUSH DE
|
||||||
EXX
|
EXX
|
||||||
|
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||||
CALL SAVEDIR
|
CALL SAVEDIR
|
||||||
POP DE
|
POP DE
|
||||||
RET
|
RET
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
; ‘¡à®á¨âì ª¥è ª â «®£ ¤¨áª.
|
; ‘¡à®á¨âì ª¥è ª â «®£ ¤¨áª.
|
||||||
; ¢å®¤: iy=áâàãªâãà ¤¥áªà¨¯â®à
|
; ¢å®¤: iy=áâàãªâãà ¤¥áªà¨¯â®à
|
||||||
|
; [ ] big dir ¯®«ãç âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||||
SAVEDIR: ;!TODO optimize
|
SAVEDIR: ;!TODO optimize
|
||||||
CALL LOAD_SAVE_DIR_PREPARE
|
CALL LOAD_SAVE_DIR_PREPARE
|
||||||
PUSH AF
|
PUSH AF
|
||||||
@ -1368,6 +1505,7 @@ DELETE_REC_FAT: SET_PAGE_X DIRPAGE
|
|||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
|
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||||
JP Z,SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
JP Z,SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||||||
; ¥á«¨ à §¬¥à ä ©« ¥ ®«ì
|
; ¥á«¨ à §¬¥à ä ©« ¥ ®«ì
|
||||||
.loop: ;EX DE,HL ; hl=®¬¥à ª« áâ¥à
|
.loop: ;EX DE,HL ; hl=®¬¥à ª« áâ¥à
|
||||||
@ -1395,6 +1533,7 @@ DELETE_REC_FAT: SET_PAGE_X DIRPAGE
|
|||||||
;EX DE,HL
|
;EX DE,HL
|
||||||
JP NC,.loop
|
JP NC,.loop
|
||||||
CALL WRITE_FAT_TABLE
|
CALL WRITE_FAT_TABLE
|
||||||
|
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||||
JP SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
JP SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||||||
|
|
||||||
; “áâ ®¢¨âì ¯¥à¢ë¬ ¨§¢¥áâë¬ ª« áâ¥à®¬ ¤«ï ¯®¨áª ᢮¡®¤®£®.
|
; “áâ ®¢¨âì ¯¥à¢ë¬ ¨§¢¥áâë¬ ª« áâ¥à®¬ ¤«ï ¯®¨áª ᢮¡®¤®£®.
|
||||||
|
|||||||
@ -80,7 +80,7 @@
|
|||||||
;
|
;
|
||||||
STRUCT _sFS_Buffer
|
STRUCT _sFS_Buffer
|
||||||
.DRIVE: BYTE #FF
|
.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
|
.CacheBlock: WORD #0000
|
||||||
.CacheUpdated: BYTE #00
|
.CacheUpdated: BYTE #00
|
||||||
;.SectorsPerBank: BYTE #00
|
;.SectorsPerBank: BYTE #00
|
||||||
@ -106,11 +106,13 @@
|
|||||||
.BytesPerSector: WORD #0000
|
.BytesPerSector: WORD #0000
|
||||||
.SectorsPerCluster: BYTE #00
|
.SectorsPerCluster: BYTE #00
|
||||||
.FSINFO_Sector: WORD #01
|
.FSINFO_Sector: WORD #01
|
||||||
.BPB_SERIAL_NUMBER: DWORD 0
|
.BPB_SERIAL_NUMBER: DWORD #00000000
|
||||||
.BPB_LABEL: BLOCK 11,' ' ; 11 ¤«ï FAT, 31 ¤«ï CDFS
|
.BPB_LABEL: BLOCK 11,' ' ; 11 ¤«ï FAT, 31 ¤«ï CDFS
|
||||||
.UPD_FSINFO: BYTE 0
|
.UPD_FSINFO: BYTE 0
|
||||||
.FREE_CLUSTERS_COUNT_L: WORD #FFFF
|
.FREE_CLUSTERS_COUNT_L: WORD #FFFF
|
||||||
.FREE_CLUSTERS_COUNT_H: WORD #FFFF
|
.FREE_CLUSTERS_COUNT_H: WORD #FFFF
|
||||||
|
.DIR_BLOCK BYTE #00 ; ª ª®© ¡«®ª ¤¨à¥ªâ®à¨¨ § £à㦥 ¢ ªíè ¤¨à¥ªâ®à¨© DIRPAGE
|
||||||
|
.DIR_BLOCK_CHANGES DWORD #00000000 ; ª ª¨¥ ¨§ ªã᪮¢ ¢ ¡«®ª¥ ªíè DIRPAGE ¨§¬¥¨«¨áì ¤® á®åà ¥¨ï
|
||||||
;.FilesPerSector: BYTE #00 ; ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
|
;.FilesPerSector: BYTE #00 ; ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
|
||||||
;.ClustersPerBank: BYTE #00 ; A - Clusters per bank (16k) (ç¨á«® ª« áâ¥à®¢ ¡«®ª އ“)
|
;.ClustersPerBank: BYTE #00 ; A - Clusters per bank (16k) (ç¨á«® ª« áâ¥à®¢ ¡«®ª އ“)
|
||||||
;.READ_PG: BYTE #00 ;!TODO ¥ ¨á¯®«ì§ãîâáï ¥ª®â®àë¥ § 票ï, ® § ¤ã¬ª ¥¯«®å ï)))
|
;.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