add boot from ATAPI

This commit is contained in:
Tolik 2025-02-15 01:58:14 +10:00
parent 1cb8ee9e78
commit 65a2957424
5 changed files with 193 additions and 190 deletions

@ -1 +1 @@
Subproject commit 237dd36651b4af124f12d3f1eaee3688467f8fa3 Subproject commit 831b2da8a66ee3bd78a7c73ef3592609e5f02902

View File

@ -3,8 +3,7 @@
; ‚室: A - ­®¬¥à ãáâனá⢠, C - DriveType ; ‚室: A - ­®¬¥à ãáâனá⢠, C - DriveType
; ‚ë室: A - MediaParameters, C - DriveType ; ‚ë室: A - MediaParameters, C - DriveType
; ­¥ ¯®àâ¨â L ; ­¥ ¯®àâ¨â L
SELECT_DRIVE: SELECT_DRIVE: AND #0F
AND #0F
LD IY,IDE.INIT_TBL_IDE0 LD IY,IDE.INIT_TBL_IDE0
JR Z,.channel JR Z,.channel
DEC A DEC A
@ -17,13 +16,9 @@ SELECT_DRIVE:
DEC A DEC A
LD IY,IDE.INIT_TBL_IDE3 LD IY,IDE.INIT_TBL_IDE3
; ;
JR Z,.channel JR NZ,.error
LD A,BIOS.Error.BadNumber
SCF
RET
; ;
.channel: .channel: EXX
EXX
IN A,(SLOT3) IN A,(SLOT3)
PUSH AF PUSH AF
LD A,SYS_PAGE LD A,SYS_PAGE
@ -59,10 +54,9 @@ SELECT_DRIVE:
EXX EXX
RET RET
; ;
; NODRIVE: .error: LD A,BIOS.Error.BadNumber
; LD A,BIOS.Error.BadDrvNumber SCF
; SCF RET
; RET
;======================================================================= ;=======================================================================

View File

@ -457,9 +457,9 @@ IDESPEC: IN A,(SLOT3)
CP BIOS.Error.ATAPI.UnitAttention CP BIOS.Error.ATAPI.UnitAttention
JR Z,IDESPEC.END JR Z,IDESPEC.END
; ;
CP BIOS.Error.ATAPI.NotReady ;CP BIOS.Error.ATAPI.NotReady
SCF ;SCF
JR NZ,.set_sector ; «î¡ ï ­¥¯®­ïâ­ ï ®è¨¡ª  - ­¥â ­®á¨â¥«ï ;JR NZ,.set_sector ; «î¡ ï ­¥¯®­ïâ­ ï ®è¨¡ª  - ­¥â ­®á¨â¥«ï
HALT HALT
DJNZ .get_error_loop DJNZ .get_error_loop
; ;

View File

@ -74,7 +74,8 @@
;FDD EQU #03 ;FDD EQU #03
;!FIXIT ­®à¬ «ì­® ¯à®¯¨á âì ;!FIXIT ­®à¬ «ì­® ¯à®¯¨á âì
TEMP EQU #7E00 ; !HARDCODE TEMP EQU #7800 ; !HARDCODE
OS_LOAD.SectorSizeAddr EQU TEMP-2
IDENTIFY_DEVICE_BUFFER _ATA_IDENTIFY_DEVICE_DATA = TEMP IDENTIFY_DEVICE_BUFFER _ATA_IDENTIFY_DEVICE_DATA = TEMP
MEMMAP2 EQU TEMP ; ¤®«¦­® ¡ëâì ¢ë஢­¥­® ¯® ALIGN 256 MEMMAP2 EQU TEMP ; ¤®«¦­® ¡ëâì ¢ë஢­¥­® ¯® ALIGN 256
TPOINTD EQU TEMP - SYS_PAGE.RAMD_KEYS.NUM; - SYS_PAGE.Sp_RAMD_KEYS.NUM ; [x] 4/11/2023 TPOINTD EQU TEMP - SYS_PAGE.RAMD_KEYS.NUM; - SYS_PAGE.Sp_RAMD_KEYS.NUM ; [x] 4/11/2023
@ -1059,9 +1060,8 @@ PrepareToBOOT: ;CALL INT_ON
; Error ; Error
SCF SCF
RET RET
;
FDSTART: FDSTART: PUSH BC
PUSH BC
PUSH BC PUSH BC
LD A,msgStrings.bootFdd LD A,msgStrings.bootFdd
CALL POSTMSG CALL POSTMSG
@ -1070,8 +1070,10 @@ FDSTART:
POP BC POP BC
RET C RET C
JP OS_LOAD JP OS_LOAD
;!TODO ;
CDSTART: CDSTART: LD A,B ; [ ] 15/02/2025 boot from ATAPI
OR DRIVE_CODES.SPRINTER.ATAPI
LD B,A
PUSH BC PUSH BC
LD A,msgStrings.bootCd LD A,msgStrings.bootCd
CALL POSTMSG CALL POSTMSG
@ -1080,12 +1082,15 @@ CDSTART:
CALL PRINT_CHANEL CALL PRINT_CHANEL
; ;
POP BC POP BC
SET 6,B PUSH BC
SCF CALL OS_LOAD
RET POP BC
RET NC
RDSTART: LD HL,2048 ;!HARDCODE sector size
LD A,msgStrings.bootRamDrv LD IX,#0011
JR OS_LOAD.CD
;
RDSTART: LD A,msgStrings.bootRamDrv
CALL POSTMSG CALL POSTMSG
LD B,DRIVE_CODES.SPRINTER.RAM ; 6 - ⨯ ¤à ©¢  RAM-DRV, 0 - ­®¬¥à ¤à ©¢  LD B,DRIVE_CODES.SPRINTER.RAM ; 6 - ⨯ ¤à ©¢  RAM-DRV, 0 - ­®¬¥à ¤à ©¢ 
.loop: PUSH BC .loop: PUSH BC
@ -1098,8 +1103,7 @@ RDSTART:
RET RET
HDSTART: HDSTART: IN A,(SLOT3)
IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
@ -1132,21 +1136,23 @@ HDSTART:
POP AF POP AF
PUSH AF PUSH AF
CALL PRINT_CHANEL CALL PRINT_CHANEL
;
POP BC POP BC
POP AF POP AF
CP #FF CP #FF
SCF SCF
RET Z RET Z
OS_LOAD: ;
LD HL,#0000 OS_LOAD: LD HL,512 ;!HARDCODE
LD IX,#0001 LD IX,#0001
.CD: LD (.SectorSizeAddr),HL
LD HL,#0000
LD DE,TEMP LD DE,TEMP
LD A,B LD A,B
LD BC,1*256 + BIOS.DRV_READ LD BC,1*256 + BIOS.DRV_READ
PUSH AF PUSH AF
RST ToBIOS_18 RST ToBIOS_18
;
POP BC POP BC
RET C RET C
LD A,B LD A,B
@ -1165,26 +1171,29 @@ OS_LOAD:
PUSH AF PUSH AF
LD A,msgStrings.bootOk LD A,msgStrings.bootOk
LD E,COLORS.CGA.INK.LGREEN LD E,COLORS.CGA.INK.LGREEN
;CALL POSTMSG
CALL POSTMSC CALL POSTMSC
CALL ScreenPOS.CRLF CALL ScreenPOS.CRLF
POP AF POP AF ; 䨧¨ç¥áª¨© ­®¬¥à ¤¨áª 
POP HL POP HL
; JP MOVE0 .MOVE0: DI
MOVE0: DI
IM 1 IM 1
LD HL,MOVE1 LD HL,MOVE1
LD DE,#7C00 ; !HARDCODE LD DE,OS_LOAD.SectorSizeAddr - MOVE1.length ; !HARDCODE
LD BC,MOVE1.length LD BC,MOVE1.length
LDIR LDIR
JP #7C00 JP OS_LOAD.SectorSizeAddr - MOVE1.length
MOVE1: LD SP,#7FFF ; !HARDCODE ;
MOVE1: LD HL,#8000 ; !HARDCODE
LD SP,HL
EX DE,HL
LD HL,TEMP LD HL,TEMP
LD DE,#8000 ; !HARDCODE LD BC,(OS_LOAD.SectorSizeAddr)
LD BC,#0200 ; !HARDCODE
LDIR LDIR
JP #8000+SYSID.length ;#800C ; !HARDCODE JP #8000+SYSID.length ;#800C ; !HARDCODE
;
.length EQU $-MOVE1 .length EQU $-MOVE1
SYSID: DZ "Starting..." SYSID: DZ "Starting..."
.length EQU $-SYSID .length EQU $-SYSID