mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21: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 HL,#4000
|
||||
SBC HL,DE
|
||||
RLA
|
||||
.set_size: LD (BIG_SHELL),A
|
||||
;
|
||||
JR NC,.set_no_size
|
||||
.set_size: LD A,#FF
|
||||
.set_no_size: LD (BIG_CORE),A
|
||||
OR A
|
||||
PUSH AF
|
||||
; § £à㧪
|
||||
LD HL,(FCLUSTR)
|
||||
LD DE,#C000
|
||||
CALL FLOAD ; § £à㧪
|
||||
|
||||
|
||||
DI
|
||||
CALL LOAD_CORE
|
||||
; [ ] § £à㧪 system.dos ¡®«ìè¥ #4000 ¡ ©â®¢
|
||||
EX AF,AF'
|
||||
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
|
||||
OUT (SYS_PORT.OFF),A
|
||||
;
|
||||
@ -171,6 +193,21 @@ XFAIL: CALL DOSMESS
|
||||
.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
|
||||
LD HL,(BOOT+510)
|
||||
@ -439,6 +476,53 @@ SEARCH: LD C,17 ;HANDELS PER SECTOR 512/32 + 1
|
||||
; ; HL - CLUSTER
|
||||
; ; DE - ADDRESS
|
||||
; ;!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
|
||||
; .LD_FILE: PUSH HL ; system.dos first cluster
|
||||
; CALL NSECTOR ; Cluster to Sector
|
||||
@ -476,7 +560,6 @@ SEARCH: LD C,17 ;HANDELS PER SECTOR 512/32 + 1
|
||||
; JR .set_drv
|
||||
; ;
|
||||
; .SMALL_CLUSTER: LD B,A
|
||||
; ;LD C,BIOS.DRV_READ_LONG
|
||||
; LD A,(BANKDOS)
|
||||
; EX AF,AF'
|
||||
; LD A,(DRIVE)
|
||||
@ -511,92 +594,15 @@ SEARCH: LD C,17 ;HANDELS PER SECTOR 512/32 + 1
|
||||
; 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
|
||||
|
||||
; 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
|
||||
READMEM EQU VALUE+52
|
||||
;SHEL_FM EQU VALUE+54
|
||||
BIG_SHELL EQU VALUE+54
|
||||
BIG_CORE EQU VALUE+54
|
||||
BANKDOS EQU VALUE+55
|
||||
; EQU VALUE+56
|
||||
|
||||
|
||||
@ -28,8 +28,8 @@ DELETE_REC_FAT: SET_PAGE_X DIRPAGE
|
||||
EXX
|
||||
LD E,(IX+FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L) ; ü ¯¥à¢®£® ª« áâ¥à
|
||||
LD D,(IX+FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1)
|
||||
OR D
|
||||
OR E
|
||||
OR D
|
||||
;
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
@ -327,7 +327,14 @@ READ_FROM_FAT: CALL CHECK_CLUSTER_IS_SMALLER
|
||||
; ‚室: HL - <20>®¬¥à ¯¥à¢®© ï祩ª¨ ª« áâ¥à ¢ ¡«®ª¥ ä â
|
||||
; <20>®àâ¨âì ⮫쪮 HL ¨ A
|
||||
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
|
||||
LD HL,#0108
|
||||
JR Z,.set_region
|
||||
@ -391,6 +398,7 @@ WRITE_TO_FAT: LD DE,(CORE_BUFFERS.FatBuffer.END_CHAIN_CLUSTER_L) ;
|
||||
SET_PAGE_X FATPAGE
|
||||
EXX
|
||||
PUSH HL
|
||||
AND A
|
||||
PUSH AF
|
||||
PUSH DE ; ¬« ¤è¨© ®¬¥à ª« áâ¥à ª®â®àë© ¢¯¨á âì
|
||||
; [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-
|
||||
INC HL ; ®¬¥à ª« áâ¥à
|
||||
LD (HL),D
|
||||
;
|
||||
.exit: ; [ ] ã᪮२¥ à ¡®âë á ªí襬 FAT
|
||||
.exit: ;
|
||||
IF FAST_FAT_CASHE
|
||||
; [ ] ã᪮२¥ à ¡®âë á ªí襬 FAT
|
||||
CALL SET_FAT32_CACHE_BLOCK_CHANGED_REGION
|
||||
;
|
||||
ENDIF
|
||||
POP AF ; ¢®ááâ. ¯®àâ
|
||||
POP HL
|
||||
OUT (SLOT3),A
|
||||
IFN FAST_FAT_CASHE
|
||||
; [x] 2/12/23 FAT ¥ ¢á¥£¤ ¬®£ § ¯¨á âìáï HDD
|
||||
;XOR A
|
||||
;INC A
|
||||
;LD (CORE_BUFFERS.FatBuffer.CacheUpdated),A
|
||||
LD A,#FF
|
||||
LD (CORE_BUFFERS.FatBuffer.CacheUpdated),A
|
||||
;
|
||||
ENDIF
|
||||
; CF = 0
|
||||
RET
|
||||
;
|
||||
@ -672,13 +684,17 @@ WRITE_FAT_TABLE:
|
||||
LD XL,E
|
||||
; HL:IX - ᬥ饨¥ ¢ãâà¨ à §¤¥« ç «® 㦮£® ¡«®ª FAT
|
||||
LD A,(CORE_BUFFERS.FatBuffer.CacheUpdated)
|
||||
IF FAST_FAT_CASHE
|
||||
CP #FF
|
||||
JR NZ,.SAVE_NOT_ALL_BLOCK
|
||||
ENDIF
|
||||
;
|
||||
LD DE,FATPAGE.cache ; ®âªã¤
|
||||
LD A,(CORE_BUFFERS.FatBuffer.DRIVE) ; ®¬¥à ¤¨áª
|
||||
LD C,Dss.DRV.Write
|
||||
JP ToDSS.DRV
|
||||
;
|
||||
IF FAST_FAT_CASHE
|
||||
.SAVE_NOT_ALL_BLOCK:
|
||||
; A = CORE_BUFFERS.FatBuffer.CacheUpdated
|
||||
; HL:IX - ᬥ饨¥ ¢ãâà¨ à §¤¥« ç «® 㦮£® ¡«®ª FAT
|
||||
@ -735,6 +751,7 @@ WRITE_FAT_TABLE:
|
||||
POP AF
|
||||
DJNZ .region_loop
|
||||
RET
|
||||
ENDIF
|
||||
;-----------------------------------------------------------------------
|
||||
;
|
||||
;[x] fat32 ;!TEST
|
||||
|
||||
@ -1 +1 @@
|
||||
959
|
||||
972
|
||||
@ -29,6 +29,7 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
DEFINE USE_FSINFO_FAT32 1 ; ¥¤®¤¥« ®. € 㦮 «¨?
|
||||
DEFINE CHANGE_FREE_CLU_AFTER_DEL 1
|
||||
DEFINE FAST_FAT_CASHE 0 ; !FIXIT ¡ £¨ ¯à¨ áâ¨à ¨¨
|
||||
|
||||
SERVICE_SECTORS:
|
||||
.FAT12 EQU #0FEF
|
||||
|
||||
Loading…
Reference in New Issue
Block a user