Sprinter-BIOS/bios/exp/FUNC_5x.asm
2026-05-19 19:46:03 +10:00

96 lines
1.8 KiB
NASM

;
; It's disk drive BIOS extender for functions 5xh.
;---------------------------------------------------------------
;Version! Description
;---------------------------------------------------------------
; 2.32 ! Removed `DI' Disabled Interupt instruction in HDRIVER6
; ! function load sectors.
; ! Fixed bug waiting slave device in AUTOIDE.
;
;INT_ADRESS EQU #C124
;INT_PAGE EQU #C126
;INT_ID EQU #C127
;BIOS EQU #3FD0
; DS #3FD0,#FF
DRV_VERSION:
LD HL,0
LD BC,0
LD DE,Disk_subsystem_ver_hex
AND A
RET
;
;
DRV_LIST:
IN A,(SLOT3)
PUSH AF
PUSH IY
LD A,SYS_PAGE
OUT (SLOT3),A ; !TODO ᤥ« âì áâàãªâãன
XOR A
LD (IX+0),#04 ; DB 0 ;LEN ;!HARDCODE
LD (IX+1),#02 ; DB 0 ;FDD COUNT
LD (IX+2),A ; DB 0 ;HDD COUNT
LD (IX+3),A ; DB 0 ;CDROM COUNT
; ; BLOCK 13,0 ;RESERVED ;!TODO ᤥ« âì RAMDRIVE âãâ?
LD (IX+4),A ; END FLAG
DEC A
;Calculating FDD devices
; A=#FF
; LD HL,SYS_PAGE.FDD_TABLE
; CALL .CHECK_FDD
; LD HL,SYS_PAGE.FDD_1_TABLE
; CALL .CHECK_FDD
; A=#FF
;Calculating IDE devices IDE TYPE 1-HDD, 2-CD-ROM
LD IY,IDE.INIT_TBL_IDE0
LD DE,IDE.HDD_INIT_TABLE
LD B,4 ; !HARDCODE ª®«-¢® IDE ãáâனáâ¢
.CHECK_IDE:
LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
CP #FF
JR Z,.NEXT_IDE
CP IDE.Device.HDD
JR NZ,.NOT_HDD
INC (IX+2)
.NOT_HDD:
CP IDE.Device.ATAPI
JR NZ,.NEXT_IDE
INC (IX+3)
.NEXT_IDE:
ADD IY,DE
DJNZ .CHECK_IDE
;
.check_exit:
POP IY
POP AF
OUT (SLOT3),A
XOR A
RET
;
; A=#FF
; .CHECK_FDD:
; INC (IX+1)
; LD B,8
; .TFD0: CP (HL)
; INC HL
; RET NZ
; DJNZ .TFD0
; DEC (IX+1)
; RET
; ;
INCLUDE 'EXTENDED/FDD_DRIVER.asm'
INCLUDE 'EXTENDED/RAM_DISK_DRIVER.asm'
INCLUDE 'EXTENDED/IDE/ATA_DRV.asm'
INCLUDE 'EXTENDED/IDE/ATAPI_DRV.asm'
INCLUDE 'EXTENDED/SHARED.asm'
;DISPLAY " EXTENDED end addr: ", /A, $
;