рискованно ускорил RAM DRIVE

This commit is contained in:
Tolik 2024-08-18 01:35:09 +10:00
parent 4dedfec9e9
commit d89a2b049f
6 changed files with 206 additions and 218 deletions

View File

@ -16,7 +16,8 @@ SCANDRV:
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
; 2. ă§­ ńŹ ĄăŞ˘ă Ąăâ-¤¨áŞ 
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
CALL BOOTDSK.GET
LD A,(BOOTDSK.NUM)
;CALL BOOTDSK.GET
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
; 3. ˘ë§ë˘ ĽŹ ŕĽáŞ ­
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
@ -44,9 +45,12 @@ SCANDRV:
;
LD A,(CORE_BUFFERS.CurrentPath)
SUB 'A'
CALL OPENDSK
CALL OPENDSK.open
JR NC,.disk_norm
LD A,(BOOTDSK.NUM)
CALL OPENDSK.open
;
LD HL,CORE_BUFFERS.CurrentDirectory
.disk_norm: LD HL,CORE_BUFFERS.CurrentDirectory
CALL CHDIR
JR NC,.exit
LD HL,CORE_BUFFERS.CurrentDirectory

View File

@ -29,8 +29,8 @@ KERNEL_PANIC:
LD A,1
OUT (SCREEN_SWITCH),A ; set scr-2
;
PRINT_LINE_KERNEL_PANIC 13, .kernel_panic, .kernel_panic.size, +(COLORS.CGA.FLASH + COLORS.CGA.PAPER.BLUE + COLORS.CGA.INC.RED)
PRINT_LINE_KERNEL_PANIC 18, .press_CAD, .press_CAD.size, +(COLORS.CGA.PAPER.BLUE + COLORS.CGA.INC.WHITE)
PRINT_LINE_KERNEL_PANIC 13, .kernel_panic, .kernel_panic.size, +(COLORS.CGA.FLASH + COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.RED)
PRINT_LINE_KERNEL_PANIC 18, .press_CAD, .press_CAD.size, +(COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE)
;
POP BC
POP HL
@ -44,7 +44,7 @@ KERNEL_PANIC:
RST ToBIOS
;
LD HL,#A000
LD DE,0*256 + COLORS.CGA.PAPER.BLUE + COLORS.CGA.INC.WHITE
LD DE,0*256 + COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE
LD B,A
LD C,BIOS.LP_PRINT_LINE3
RST ToBIOS

View File

@ -1 +1 @@
997
998

View File

@ -302,7 +302,7 @@ Find_Record:
; RST ToBIOS
; ;
; LD HL,#A000
; LD DE,0*256 + COLORS.CGA.FLASH + COLORS.CGA.PAPER.BLUE + COLORS.CGA.INC.WHITE
; LD DE,0*256 + COLORS.CGA.FLASH + COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE
; LD B,A
; LD C,BIOS.LP_PRINT_LINE3
; RST ToBIOS

View File

@ -204,77 +204,77 @@
; parser
RMDRIVE:
INC C
DEC C
JP Z,INIT_RD ; 0
DEC C
JR Z,RESET_RD ; 1
DEC C
JR Z,STATUS_RD ; 2
DEC C
JR Z,CHEK_RD ; 3
DEC C
JR Z,GBPB_RD ; 4
DEC C
JR Z,READ_RD ; 5
DEC C
JR Z,WRITE_RD ; 6
DEC C
JR Z,REMOV_RD ; 7
DEC C
JP Z,IOCTL_RD ; 8
DEC C
JP Z,.error ; 9 RESR_H
DEC C
JP Z,LREAD_RD ; 10
DEC C
JP Z,LWRITE_RD ; 11
RMDRIVE: INC C
DEC C
JP Z,INIT_RD ; 0
DEC C
JR Z,RESET_RD ; 1
DEC C
JR Z,STATUS_RD ; 2
DEC C
JR Z,CHEK_RD ; 3
DEC C
JR Z,GBPB_RD ; 4
DEC C
JR Z,READ_RD ; 5
DEC C
JR Z,WRITE_RD ; 6
DEC C
JR Z,REMOV_RD ; 7
DEC C
JP Z,IOCTL_RD ; 8
DEC C
JP Z,.error ; 9 RESR_H
DEC C
JP Z,LREAD_RD ; 10
DEC C
JP Z,LWRITE_RD ; 11
.error:
LD A,DSS_Error.drv.INVALID_COMMAND
SCF
RET
LD A,DSS_Error.drv.INVALID_COMMAND
SCF
RET
REMOV_RD:
RESET_RD:
STATUS_RD:
XOR A
RET
STATUS_RD: XOR A
RET
;!FIXIT ᤥ« âì ¢ SYS_PAGE ¤«ï à ¬¤¨áª®¢ ¯¥à¥¬¥­­ë¥ ¨ ¡à âì ®ââ㤠 §­ ç¥­¨¥
CHEK_RD LD A,#FF
AND A
RET
;!FIXIT ª ª-â® ®¯à¥¤¥«ïâì ᬥ­ã RMD?
; [x] 18/08/2024 ¯®ª  ­¥¬­®£® ª®áâë«ì­® ¨ ®¯ á­®
CHEK_RD: ;LD A,#FF
;AND A
XOR A
;
RET
;DE - ADDRESS
GBPB_RD:
LD IX,0
LD HL,0
LD B,#01
GBPB_RD: LD IX,0
LD HL,0
LD B,#01
;JP READ_RD
;READ SECTORS
; HL:IX - SECTOR
; DE - ADDRESS
; B - COUNT
; A - DRIVE
READ_RD:
PUSH BC
CALL GET_RAMDRV_NUM
POP BC
LD C,BIOS.DRV_READ
JP ToBIOS
; RST ToBIOS
; XOR A
; RET
READ_RD: PUSH BC
CALL GET_RAMDRV_NUM
POP BC
LD C,BIOS.DRV_READ
JP ToBIOS
; RST ToBIOS
; XOR A
; RET
LREAD_RD:
PUSH BC
CALL GET_RAMDRV_NUM
POP BC
LD C,BIOS.DRV_READ_LONG
JP ToBIOS
; RST ToBIOS
; XOR A
; RET
PUSH BC
CALL GET_RAMDRV_NUM
POP BC
LD C,BIOS.DRV_READ_LONG
JP ToBIOS
; RST ToBIOS
; XOR A
; RET
;WRITE SECTORS
; HL:IX - SECTOR
@ -282,24 +282,24 @@ LREAD_RD:
; B - COUNT
; A - DRIVE
WRITE_RD:
PUSH BC
CALL GET_RAMDRV_NUM
POP BC
LD C,BIOS.DRV_WRITE
JP ToBIOS
; RST ToBIOS
; XOR A
; RET
PUSH BC
CALL GET_RAMDRV_NUM
POP BC
LD C,BIOS.DRV_WRITE
JP ToBIOS
; RST ToBIOS
; XOR A
; RET
LWRITE_RD:
PUSH BC
CALL GET_RAMDRV_NUM
POP BC
LD C,BIOS.DRV_WRITE_LONG
JP ToBIOS
; RST ToBIOS
; XOR A
; RET
PUSH BC
CALL GET_RAMDRV_NUM
POP BC
LD C,BIOS.DRV_WRITE_LONG
JP ToBIOS
; RST ToBIOS
; XOR A
; RET
;
;;
@ -360,51 +360,49 @@ LWRITE_RD:
;S_P_P DB #00
INIT_RD:
; .SectorSize EQU 512 ;!HARDCODE
; LD HL,.SectorSize
; LD A,#80
; LD HL,.SectorSize
; LD A,#80
; .loop: SRL A
; RR H
; JR NC,.loop
; LD (S_P_P),A
; RR H
; JR NC,.loop
; LD (S_P_P),A
LD BC,0*256 + BIOS.GET_RAMD_ST ; <20>®«ã祭¨¥ ¨¤¥­â¨ä¨ª â®à  ¡«®ª , ­ §­ ç¥­­®£® ­  RAM-Disk
LD DE,RAMDTBL
.initLoop:
PUSH BC
LD A,B
PUSH DE
RST ToBIOS
POP DE
OR A
JR Z,.noDRV
;
INC DE
LD (DE),A
DEC DE
;
POP BC
LD A,B
LD (DE),A
INC DE
INC DE
;
JP 1F
;
.noDRV: POP BC
1: INC B
LD A,RAMDTBL.Size / RAMDTBL.TBL_Entry
CP B
JR NZ,.initLoop
LD BC,0*256+BIOS.GET_RAMD_ST ; <20>®«ã祭¨¥ ¨¤¥­â¨ä¨ª â®à  ¡«®ª , ­ §­ ç¥­­®£® ­  RAM-Disk
LD DE,RAMDTBL
.initLoop: PUSH BC
LD A,B
PUSH DE
RST ToBIOS
POP DE
OR A
JR Z,.noDRV
;
INC DE
LD (DE),A
DEC DE
;
POP BC
LD A,B
LD (DE),A
INC DE
INC DE
JP .skip_pop
;
.noDRV: POP BC
.skip_pop: INC B
LD A,RAMDTBL.Size/RAMDTBL.TBL_Entry
CP B
JR NZ,.initLoop
LD HL,RAMDTBL ;!FIXIT LD HL,-RAMDTBL
EX DE,HL
AND A ;!FIXIT ----
SBC HL,DE ;!FIXIT ADD HL,DE
SRL L
LD A,L
; LD HL,ENDDRVR
AND A
RET
LD HL,RAMDTBL ;!FIXIT LD HL,-RAMDTBL
EX DE,HL
AND A ;!FIXIT ----
SBC HL,DE ;!FIXIT ADD HL,DE
SRL L
LD A,L
; LD HL,ENDDRVR
AND A
RET
;----------------------------------------------------------------------;!TEST
;;;
;;
@ -428,32 +426,30 @@ INIT_RD:
; 81 - WRITE TRACK
; 82 - FORMAT TRACK
IOCTL_RD:
BIT 7,B
JR NZ,.O_CTL_F
INC B
DEC B
JP Z,.RGETPRM
; DEC B
; JP Z,FRDTRAC
; DEC B
; JP Z,FCHTRAC
LD A,DSS_Error.drv.INVALID_COMMAND
SCF
RET
BIT 7,B
JR NZ,.O_CTL_F
INC B
DEC B
JP Z,.RGETPRM
;DEC B
;JP Z,FRDTRAC
;DEC B
;JP Z,FCHTRAC
LD A,DSS_Error.drv.INVALID_COMMAND
SCF
RET
.O_CTL_F:
; RES 7,B
; INC B
; DEC B
; JP Z,.RSETPRM
; DEC B
; JP Z,FWRTRAC
; DEC B
; JP Z,FFRTRAC
LD A,DSS_Error.drv.INVALID_COMMAND
SCF
RET
.O_CTL_F: ;RES 7,B
;INC B
;DEC B
;JP Z,.RSETPRM
;DEC B
;JP Z,FWRTRAC
;DEC B
;JP Z,FFRTRAC
LD A,DSS_Error.drv.INVALID_COMMAND
SCF
RET
; C - PARTITION RECORD NUMBER IN DRIVE MBR must be 0 here ;[x] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£®
; HL:DE - SECTORS ON LOGICAL DISK
@ -467,83 +463,71 @@ IOCTL_RD:
; D5 - "1" RESERVED
; D6 - ADDRESSING MODE LBA/CHS
; D7 - "1" RESERVED
.RGETPRM:
EX DE,HL
LD BC,#55AA
AND A
SBC HL,BC
LD L,A
LD A,DSS_Error.drv.GENERAL_FAILURE
SCF
RET NZ
.RGETPRM: EX DE,HL
LD BC,#55AA
AND A
SBC HL,BC
LD L,A
LD A,DSS_Error.drv.GENERAL_FAILURE
SCF
RET NZ
;
EX AF,AF'
LD A,L
CALL GET_RAMDRV_NUM
PUSH AF
PUSH AF
EX AF,AF'
EX AF,AF'
LD A,L
CALL GET_RAMDRV_NUM
PUSH AF
PUSH AF
EX AF,AF'
POP AF
LD C,BIOS.DRV_GET_PAR
RST ToBIOS
POP AF
LD C,BIOS.DRV_GET_PAR
RST ToBIOS
PUSH HL ;ç¨á«® £®«®¢®ª, ç¨á«® ᥪâ®à®¢ (­  楫¨­¤à)
PUSH DE ;ª®«¨ç¥á⢮ 樫¨­¤à®¢
EXX
POP HL ;ª®«¨ç¥á⢮ 樫¨­¤à®¢
POP BC ;ç¨á«® ᥪâ®à®¢ (­  楫¨­¤à)
LD D,0
LD E,B ;ç¨á«® £®«®¢®ª
LD B,D
EXX
PUSH HL ;ç¨á«® £®«®¢®ª, ç¨á«® ᥪâ®à®¢ (­  楫¨­¤à)
PUSH DE ;ª®«¨ç¥á⢮ 樫¨­¤à®¢
EXX
POP HL ;ª®«¨ç¥á⢮ 樫¨­¤à®¢
POP BC ;ç¨á«® ᥪâ®à®¢ (­  楫¨­¤à)
LD D,0
LD E,B ;ç¨á«® £®«®¢®ª
LD B,D
EXX
LD A,L
LD A,L
RRA
JR C,.end
.loopShift: SLA E
RL D
RRA
JR NC,.loopShift
;
.end: EX AF,AF'
POP AF
EX AF,AF'
XOR A
LD L,A
LD H,L
LD C,A ;[x] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£®
LD A,%10100000
RET
RRA
JR C,.end
.loopShift:
SLA E
RL D
RRA
JR NC,.loopShift
;
.end: EX AF,AF'
POP AF
EX AF,AF'
XOR A
LD L,A
LD H,L
LD C,A ;[x] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£®
LD A,%10100000
RET
; !TODO
; !FIXIT
; .RSETPRM:
; AND A
; RET
GET_RAMDRV_NUM:
LD BC,RAMDTBL
.skip_tbl:
ADD A,A
ADD A,C
LD C,A
LD A,0
ADC A,B
LD B,A
;INC BC
LD A,(BC)
OR #60 ;!HARDCODE ᤥ« âì ­®¬¥à  à §­ëå ãáâனá⢠ç¥à¥§ ¬¥âª¨
RET
;
;
;TEST_DB_DEL_ME: DB 'Make here more than one page to load test'
;
; .RSETPRM: AND A
; RET
GET_RAMDRV_NUM: LD BC,RAMDTBL
.skip_tbl: ADD A,A
ADD A,C
LD C,A
LD A,0
ADC A,B
LD B,A
;INC BC
LD A,(BC)
OR #60 ;!HARDCODE ᤥ« âì ­®¬¥à  à §­ëå ãáâனá⢠ç¥à¥§ ¬¥âª¨
RET
;
;ENDDRVR EQU $
;

@ -1 +1 @@
Subproject commit eebde92dd60cdf33588e34a7248413ec107edfe0
Subproject commit e73e9f8d4f4e72de4f6b54abaec159684fdcebe1