рискованно ускорил 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. ă§­ ńŹ ĄăŞ˘ă Ąăâ-¤¨áŞ  ; 2. ă§­ ńŹ ĄăŞ˘ă Ąăâ-¤¨áŞ 
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
CALL BOOTDSK.GET LD A,(BOOTDSK.NUM)
;CALL BOOTDSK.GET
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
; 3. ˘ë§ë˘ ĽŹ ŕĽáŞ ­ ; 3. ˘ë§ë˘ ĽŹ ŕĽáŞ ­
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
@ -44,9 +45,12 @@ SCANDRV:
; ;
LD A,(CORE_BUFFERS.CurrentPath) LD A,(CORE_BUFFERS.CurrentPath)
SUB 'A' 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 CALL CHDIR
JR NC,.exit JR NC,.exit
LD HL,CORE_BUFFERS.CurrentDirectory LD HL,CORE_BUFFERS.CurrentDirectory

View File

@ -29,8 +29,8 @@ KERNEL_PANIC:
LD A,1 LD A,1
OUT (SCREEN_SWITCH),A ; set scr-2 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 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.INC.WHITE) PRINT_LINE_KERNEL_PANIC 18, .press_CAD, .press_CAD.size, +(COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE)
; ;
POP BC POP BC
POP HL POP HL
@ -44,7 +44,7 @@ KERNEL_PANIC:
RST ToBIOS RST ToBIOS
; ;
LD HL,#A000 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 B,A
LD C,BIOS.LP_PRINT_LINE3 LD C,BIOS.LP_PRINT_LINE3
RST ToBIOS RST ToBIOS

View File

@ -1 +1 @@
997 998

View File

@ -302,7 +302,7 @@ Find_Record:
; RST ToBIOS ; RST ToBIOS
; ; ; ;
; LD HL,#A000 ; 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 B,A
; LD C,BIOS.LP_PRINT_LINE3 ; LD C,BIOS.LP_PRINT_LINE3
; RST ToBIOS ; RST ToBIOS

View File

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

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