mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
no bugs. отключил пока ускорялку фат - глючит
This commit is contained in:
parent
0af59044c8
commit
34e1fc6773
190
BOOT/DSSBOOT.ASM
190
BOOT/DSSBOOT.ASM
@ -87,15 +87,37 @@ GOOD_DRIVE: LD DE,#8200 ;!HARDCODE
|
|||||||
LD DE,(FSIZE0)
|
LD DE,(FSIZE0)
|
||||||
LD HL,#4000
|
LD HL,#4000
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
RLA
|
JR NC,.set_no_size
|
||||||
.set_size: LD (BIG_SHELL),A
|
.set_size: LD A,#FF
|
||||||
;
|
.set_no_size: LD (BIG_CORE),A
|
||||||
|
OR A
|
||||||
|
PUSH AF
|
||||||
|
; § £à㧪
|
||||||
LD HL,(FCLUSTR)
|
LD HL,(FCLUSTR)
|
||||||
LD DE,#C000
|
LD DE,#C000
|
||||||
CALL FLOAD ; § £à㧪
|
CALL LOAD_CORE
|
||||||
|
; [ ] § £à㧪 system.dos ¡®«ìè¥ #4000 ¡ ©â®¢
|
||||||
|
EX AF,AF'
|
||||||
DI
|
POP AF
|
||||||
|
JR Z,.no_big_core
|
||||||
|
EX AF,AF'
|
||||||
|
JR C,.no_big_core
|
||||||
|
;
|
||||||
|
IN A,(SLOT1)
|
||||||
|
LD (BANKDOS),A
|
||||||
|
LD A,SUBLOAD_SIZE
|
||||||
|
LD (LOAD_CORE.max_sectors),A
|
||||||
|
LD (BIG_CORE),A ; ⥯¥àì íâ® áçñâ稪 ®áâ ¢è¨åáï ᥪâ®à®¢
|
||||||
|
;
|
||||||
|
LD A,(BOOT.SectorsPerCluster)
|
||||||
|
CP #20 + 1 ; !HARDCODE ª®«-¢® § £à㦠¥¬ëå ᥪâ®à®¢
|
||||||
|
JP NC,INC_SECTOR_NUM
|
||||||
|
CALL C,R_F_FAT ; next cluster in chain
|
||||||
|
EX DE,HL
|
||||||
|
LD DE,#C000
|
||||||
|
CALL NC,LOAD_CORE
|
||||||
|
.no_big_core: ;
|
||||||
|
RUN_CORE: DI
|
||||||
XOR A
|
XOR A
|
||||||
OUT (SYS_PORT.OFF),A
|
OUT (SYS_PORT.OFF),A
|
||||||
;
|
;
|
||||||
@ -171,6 +193,21 @@ XFAIL: CALL DOSMESS
|
|||||||
.halt: JR .halt
|
.halt: JR .halt
|
||||||
;
|
;
|
||||||
|
|
||||||
|
;
|
||||||
|
INC_SECTOR_NUM: PUSH DE
|
||||||
|
CALL NSECTOR
|
||||||
|
LD DE,#20 ;!HARDCODE ª®«¨ç¥á⢮ ¯à®ç¨â ëå ᥪâ®à®¢
|
||||||
|
ADD IX,DE
|
||||||
|
JR NC,.no_inc
|
||||||
|
INC HL
|
||||||
|
.no_inc: ;
|
||||||
|
POP DE
|
||||||
|
CALL .set_stack
|
||||||
|
JP RUN_CORE
|
||||||
|
.set_stack: PUSH HL
|
||||||
|
JP LOAD_CORE.subload
|
||||||
|
;
|
||||||
|
|
||||||
;
|
;
|
||||||
PART_TB: PUSH BC
|
PART_TB: PUSH BC
|
||||||
LD HL,(BOOT+510)
|
LD HL,(BOOT+510)
|
||||||
@ -439,6 +476,53 @@ SEARCH: LD C,17 ;HANDELS PER SECTOR 512/32 + 1
|
|||||||
; ; HL - CLUSTER
|
; ; HL - CLUSTER
|
||||||
; ; DE - ADDRESS
|
; ; DE - ADDRESS
|
||||||
; ;!TODO ᤥ« âì âãâ ®¯à¥¤¥«¥¨¥ à §¬¥à SYSTEM.DOS ¨ ¢®§¬®¦®áâì § £à㧨âì ¡®«ìè¥ 1 áâà ¨æë
|
; ;!TODO ᤥ« âì âãâ ®¯à¥¤¥«¥¨¥ à §¬¥à SYSTEM.DOS ¨ ¢®§¬®¦®áâì § £à㧨âì ¡®«ìè¥ 1 áâà ¨æë
|
||||||
|
LOAD_CORE: LD (READMEM),DE
|
||||||
|
.loop: PUSH HL
|
||||||
|
CALL NSECTOR
|
||||||
|
LD DE,(READMEM)
|
||||||
|
LD A,(BOOT.SectorsPerCluster)
|
||||||
|
.max_sectors+1: CP #20
|
||||||
|
JR C,.SMALL_CLUSTER
|
||||||
|
;
|
||||||
|
.subload: LD A,(.max_sectors)
|
||||||
|
LD B,A
|
||||||
|
LD C,BIOS.DRV_READ_LONG
|
||||||
|
LD A,(BANKDOS)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,(DRIVE)
|
||||||
|
RST ToBIOS_18
|
||||||
|
POP HL
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
.SMALL_CLUSTER: LD B,A
|
||||||
|
LD C,BIOS.DRV_READ_LONG
|
||||||
|
LD A,(BANKDOS)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,(DRIVE)
|
||||||
|
RST ToBIOS_18
|
||||||
|
;
|
||||||
|
LD HL,(READMEM)
|
||||||
|
LD DE,(CLU_LEN)
|
||||||
|
ADD HL,DE
|
||||||
|
LD (READMEM),HL
|
||||||
|
POP HL
|
||||||
|
CCF
|
||||||
|
RET NC
|
||||||
|
; [ ] § £à㧪 system.dos ¡®«ìè¥ #4000 ¡ ©â®¢
|
||||||
|
LD A,(BIG_CORE)
|
||||||
|
DEC A
|
||||||
|
LD (BIG_CORE),A
|
||||||
|
RET Z
|
||||||
|
;
|
||||||
|
CALL R_F_FAT
|
||||||
|
RET C
|
||||||
|
EX DE,HL
|
||||||
|
JP .loop
|
||||||
|
|
||||||
|
; HL - CLUSTER
|
||||||
|
; DE - ADDRESS
|
||||||
|
;!TODO ᤥ« âì âãâ ®¯à¥¤¥«¥¨¥ à §¬¥à SYSTEM.DOS ¨ ¢®§¬®¦®áâì § £à㧨âì ¡®«ìè¥ 1 áâà ¨æë
|
||||||
; FLOAD: LD (READMEM),DE
|
; FLOAD: LD (READMEM),DE
|
||||||
; .LD_FILE: PUSH HL ; system.dos first cluster
|
; .LD_FILE: PUSH HL ; system.dos first cluster
|
||||||
; CALL NSECTOR ; Cluster to Sector
|
; CALL NSECTOR ; Cluster to Sector
|
||||||
@ -476,7 +560,6 @@ SEARCH: LD C,17 ;HANDELS PER SECTOR 512/32 + 1
|
|||||||
; JR .set_drv
|
; JR .set_drv
|
||||||
; ;
|
; ;
|
||||||
; .SMALL_CLUSTER: LD B,A
|
; .SMALL_CLUSTER: LD B,A
|
||||||
; ;LD C,BIOS.DRV_READ_LONG
|
|
||||||
; LD A,(BANKDOS)
|
; LD A,(BANKDOS)
|
||||||
; EX AF,AF'
|
; EX AF,AF'
|
||||||
; LD A,(DRIVE)
|
; LD A,(DRIVE)
|
||||||
@ -511,92 +594,15 @@ SEARCH: LD C,17 ;HANDELS PER SECTOR 512/32 + 1
|
|||||||
; LD (BANKDOS),A
|
; LD (BANKDOS),A
|
||||||
; LD HL,#C000
|
; LD HL,#C000
|
||||||
; LD (READMEM),HL
|
; LD (READMEM),HL
|
||||||
|
; LD A,(BOOT.SectorsPerCluster)
|
||||||
|
; SUB SUBLOAD_SIZE + 1
|
||||||
|
; CCF
|
||||||
|
; RET NC
|
||||||
|
; LD A,SUBLOAD_SIZE
|
||||||
|
; LD (BOOT.SectorsPerCluster),A
|
||||||
; AND A
|
; AND A
|
||||||
; RET
|
; RET
|
||||||
|
|
||||||
; HL - CLUSTER
|
|
||||||
; DE - ADDRESS
|
|
||||||
;!TODO ᤥ« âì âãâ ®¯à¥¤¥«¥¨¥ à §¬¥à SYSTEM.DOS ¨ ¢®§¬®¦®áâì § £à㧨âì ¡®«ìè¥ 1 áâà ¨æë
|
|
||||||
FLOAD: LD (READMEM),DE
|
|
||||||
.LD_FILE: PUSH HL ; system.dos first cluster
|
|
||||||
CALL NSECTOR ; Cluster to Sector
|
|
||||||
LD DE,(READMEM)
|
|
||||||
LD A,(BOOT.SectorsPerCluster)
|
|
||||||
CP #20 + 1 ; !HARDCODE ª®«-¢® § £à㦠¥¬ëå ᥪâ®à®¢
|
|
||||||
LD C,BIOS.DRV_READ_LONG
|
|
||||||
JR C,.SMALL_CLUSTER
|
|
||||||
LD A,(BANKDOS)
|
|
||||||
EX AF,AF'
|
|
||||||
;LD BC,#20*256 + BIOS.DRV_READ_LONG
|
|
||||||
LD B,#20 ; !HARDCODE ª®«-¢® § £à㦠¥¬ëå ᥪâ®à®¢
|
|
||||||
.set_drv: LD A,(DRIVE)
|
|
||||||
RST ToBIOS_18
|
|
||||||
JP C,GOOD_DRIVE.NoShell
|
|
||||||
POP HL
|
|
||||||
; [ ] § £à㧪 system.dos ¡®«ìè¥ #4000 ¡ ©â®¢
|
|
||||||
;AND A
|
|
||||||
;RET
|
|
||||||
LD A,(BIG_SHELL)
|
|
||||||
OR A
|
|
||||||
RET Z
|
|
||||||
;
|
|
||||||
XOR A
|
|
||||||
LD (BIG_SHELL),A
|
|
||||||
PUSH HL
|
|
||||||
CALL NSECTOR
|
|
||||||
LD DE,#20 ; !HARDCODE ª®«-¢® ¯à®ç¨â ëå ᥪâ®à®¢
|
|
||||||
AND A
|
|
||||||
ADD IX,DE
|
|
||||||
JR NC,.no_inc_hl
|
|
||||||
INC HL
|
|
||||||
.no_inc_hl: LD BC,SUBLOAD_SIZE*256 + BIOS.DRV_READ ; !HARDCODE ª®«-¢® „ާ £à㦠¥¬ëå ᥪâ®à®¢
|
|
||||||
LD DE,#4000
|
|
||||||
JR .set_drv
|
|
||||||
;
|
|
||||||
.SMALL_CLUSTER: LD B,A
|
|
||||||
LD A,(BANKDOS)
|
|
||||||
EX AF,AF'
|
|
||||||
LD A,(DRIVE)
|
|
||||||
RST ToBIOS_18
|
|
||||||
JP C,GOOD_DRIVE.NoShell
|
|
||||||
;
|
|
||||||
LD HL,(READMEM)
|
|
||||||
LD DE,(CLU_LEN)
|
|
||||||
ADD HL,DE
|
|
||||||
LD (READMEM),HL
|
|
||||||
; [ ] § £à㧪 system.dos ¡®«ìè¥ #4000 ¡ ©â®¢
|
|
||||||
;POP HL
|
|
||||||
;RET C
|
|
||||||
CALL C,.more_than_1
|
|
||||||
POP HL
|
|
||||||
RET C
|
|
||||||
;
|
|
||||||
CALL R_F_FAT ; next cluster in chain
|
|
||||||
RET C
|
|
||||||
EX DE,HL
|
|
||||||
JP .LD_FILE
|
|
||||||
; [ ] § £à㧪 system.dos ¡®«ìè¥ #4000 ¡ ©â®¢
|
|
||||||
.more_than_1: LD A,(BIG_SHELL)
|
|
||||||
OR A
|
|
||||||
SCF
|
|
||||||
RET Z
|
|
||||||
IN A,(SLOT1)
|
|
||||||
LD HL,BANKDOS
|
|
||||||
CP (HL)
|
|
||||||
CCF
|
|
||||||
RET Z
|
|
||||||
LD (BANKDOS),A
|
|
||||||
LD HL,#C000
|
|
||||||
LD (READMEM),HL
|
|
||||||
LD A,(BOOT.SectorsPerCluster)
|
|
||||||
SUB SUBLOAD_SIZE + 1
|
|
||||||
CCF
|
|
||||||
RET NC
|
|
||||||
LD A,SUBLOAD_SIZE
|
|
||||||
LD (BOOT.SectorsPerCluster),A
|
|
||||||
AND A
|
|
||||||
RET
|
|
||||||
|
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -906,7 +912,7 @@ DISKH EQU VALUE+48
|
|||||||
DISKL EQU VALUE+50
|
DISKL EQU VALUE+50
|
||||||
READMEM EQU VALUE+52
|
READMEM EQU VALUE+52
|
||||||
;SHEL_FM EQU VALUE+54
|
;SHEL_FM EQU VALUE+54
|
||||||
BIG_SHELL EQU VALUE+54
|
BIG_CORE EQU VALUE+54
|
||||||
BANKDOS EQU VALUE+55
|
BANKDOS EQU VALUE+55
|
||||||
; EQU VALUE+56
|
; EQU VALUE+56
|
||||||
|
|
||||||
|
|||||||
@ -28,8 +28,8 @@ DELETE_REC_FAT: SET_PAGE_X DIRPAGE
|
|||||||
EXX
|
EXX
|
||||||
LD E,(IX+FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L) ; ü ¯¥à¢®£® ª« áâ¥à
|
LD E,(IX+FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L) ; ü ¯¥à¢®£® ª« áâ¥à
|
||||||
LD D,(IX+FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1)
|
LD D,(IX+FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1)
|
||||||
OR D
|
|
||||||
OR E
|
OR E
|
||||||
|
OR D
|
||||||
;
|
;
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
@ -327,7 +327,14 @@ READ_FROM_FAT: CALL CHECK_CLUSTER_IS_SMALLER
|
|||||||
; ‚室: HL - <20>®¬¥à ¯¥à¢®© ï祩ª¨ ª« áâ¥à ¢ ¡«®ª¥ ä â
|
; ‚室: HL - <20>®¬¥à ¯¥à¢®© ï祩ª¨ ª« áâ¥à ¢ ¡«®ª¥ ä â
|
||||||
; <20>®àâ¨âì ⮫쪮 HL ¨ A
|
; <20>®àâ¨âì ⮫쪮 HL ¨ A
|
||||||
SET_FAT32_CACHE_BLOCK_CHANGED_REGION:
|
SET_FAT32_CACHE_BLOCK_CHANGED_REGION:
|
||||||
LD A,H
|
DEC HL
|
||||||
|
LD A,(CORE_BUFFERS.FatBuffer.FAT_TYPE)
|
||||||
|
CP FAT_TYPE.x16 + 1
|
||||||
|
JR C,.start
|
||||||
|
DEC HL
|
||||||
|
DEC HL
|
||||||
|
;
|
||||||
|
.start: LD A,H
|
||||||
AND #38
|
AND #38
|
||||||
LD HL,#0108
|
LD HL,#0108
|
||||||
JR Z,.set_region
|
JR Z,.set_region
|
||||||
@ -391,6 +398,7 @@ WRITE_TO_FAT: LD DE,(CORE_BUFFERS.FatBuffer.END_CHAIN_CLUSTER_L) ;
|
|||||||
SET_PAGE_X FATPAGE
|
SET_PAGE_X FATPAGE
|
||||||
EXX
|
EXX
|
||||||
PUSH HL
|
PUSH HL
|
||||||
|
AND A
|
||||||
PUSH AF
|
PUSH AF
|
||||||
PUSH DE ; ¬« ¤è¨© ®¬¥à ª« áâ¥à ª®â®àë© ¢¯¨á âì
|
PUSH DE ; ¬« ¤è¨© ®¬¥à ª« áâ¥à ª®â®àë© ¢¯¨á âì
|
||||||
; [x] 2/12/23 FAT ¥ ¢á¥£¤ ¬®£ § ¯¨á âìáï HDD
|
; [x] 2/12/23 FAT ¥ ¢á¥£¤ ¬®£ § ¯¨á âìáï HDD
|
||||||
@ -407,17 +415,21 @@ WRITE_TO_FAT: LD DE,(CORE_BUFFERS.FatBuffer.END_CHAIN_CLUSTER_L) ;
|
|||||||
LD (HL),E ; á®åà. ¢ ª¥è¥ FAT-
|
LD (HL),E ; á®åà. ¢ ª¥è¥ FAT-
|
||||||
INC HL ; ®¬¥à ª« áâ¥à
|
INC HL ; ®¬¥à ª« áâ¥à
|
||||||
LD (HL),D
|
LD (HL),D
|
||||||
;
|
.exit: ;
|
||||||
.exit: ; [ ] ã᪮२¥ à ¡®âë á ªí襬 FAT
|
IF FAST_FAT_CASHE
|
||||||
|
; [ ] ã᪮२¥ à ¡®âë á ªí襬 FAT
|
||||||
CALL SET_FAT32_CACHE_BLOCK_CHANGED_REGION
|
CALL SET_FAT32_CACHE_BLOCK_CHANGED_REGION
|
||||||
;
|
;
|
||||||
|
ENDIF
|
||||||
POP AF ; ¢®ááâ. ¯®àâ
|
POP AF ; ¢®ááâ. ¯®àâ
|
||||||
POP HL
|
POP HL
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
IFN FAST_FAT_CASHE
|
||||||
; [x] 2/12/23 FAT ¥ ¢á¥£¤ ¬®£ § ¯¨á âìáï HDD
|
; [x] 2/12/23 FAT ¥ ¢á¥£¤ ¬®£ § ¯¨á âìáï HDD
|
||||||
;XOR A
|
LD A,#FF
|
||||||
;INC A
|
LD (CORE_BUFFERS.FatBuffer.CacheUpdated),A
|
||||||
;LD (CORE_BUFFERS.FatBuffer.CacheUpdated),A
|
;
|
||||||
|
ENDIF
|
||||||
; CF = 0
|
; CF = 0
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
@ -672,13 +684,17 @@ WRITE_FAT_TABLE:
|
|||||||
LD XL,E
|
LD XL,E
|
||||||
; HL:IX - ᬥ饨¥ ¢ãâà¨ à §¤¥« ç «® 㦮£® ¡«®ª FAT
|
; HL:IX - ᬥ饨¥ ¢ãâà¨ à §¤¥« ç «® 㦮£® ¡«®ª FAT
|
||||||
LD A,(CORE_BUFFERS.FatBuffer.CacheUpdated)
|
LD A,(CORE_BUFFERS.FatBuffer.CacheUpdated)
|
||||||
|
IF FAST_FAT_CASHE
|
||||||
CP #FF
|
CP #FF
|
||||||
JR NZ,.SAVE_NOT_ALL_BLOCK
|
JR NZ,.SAVE_NOT_ALL_BLOCK
|
||||||
|
ENDIF
|
||||||
;
|
;
|
||||||
LD DE,FATPAGE.cache ; ®âªã¤
|
LD DE,FATPAGE.cache ; ®âªã¤
|
||||||
LD A,(CORE_BUFFERS.FatBuffer.DRIVE) ; ®¬¥à ¤¨áª
|
LD A,(CORE_BUFFERS.FatBuffer.DRIVE) ; ®¬¥à ¤¨áª
|
||||||
LD C,Dss.DRV.Write
|
LD C,Dss.DRV.Write
|
||||||
JP ToDSS.DRV
|
JP ToDSS.DRV
|
||||||
|
;
|
||||||
|
IF FAST_FAT_CASHE
|
||||||
.SAVE_NOT_ALL_BLOCK:
|
.SAVE_NOT_ALL_BLOCK:
|
||||||
; A = CORE_BUFFERS.FatBuffer.CacheUpdated
|
; A = CORE_BUFFERS.FatBuffer.CacheUpdated
|
||||||
; HL:IX - ᬥ饨¥ ¢ãâà¨ à §¤¥« ç «® 㦮£® ¡«®ª FAT
|
; HL:IX - ᬥ饨¥ ¢ãâà¨ à §¤¥« ç «® 㦮£® ¡«®ª FAT
|
||||||
@ -735,6 +751,7 @@ WRITE_FAT_TABLE:
|
|||||||
POP AF
|
POP AF
|
||||||
DJNZ .region_loop
|
DJNZ .region_loop
|
||||||
RET
|
RET
|
||||||
|
ENDIF
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
;
|
;
|
||||||
;[x] fat32 ;!TEST
|
;[x] fat32 ;!TEST
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
959
|
972
|
||||||
@ -29,6 +29,7 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
DEFINE USE_FSINFO_FAT32 1 ; ¥¤®¤¥« ®. € 㦮 «¨?
|
DEFINE USE_FSINFO_FAT32 1 ; ¥¤®¤¥« ®. € 㦮 «¨?
|
||||||
DEFINE CHANGE_FREE_CLU_AFTER_DEL 1
|
DEFINE CHANGE_FREE_CLU_AFTER_DEL 1
|
||||||
|
DEFINE FAST_FAT_CASHE 0 ; !FIXIT ¡ £¨ ¯à¨ áâ¨à ¨¨
|
||||||
|
|
||||||
SERVICE_SECTORS:
|
SERVICE_SECTORS:
|
||||||
.FAT12 EQU #0FEF
|
.FAT12 EQU #0FEF
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user