Sprinter-Core/src/bios/exp/FUNC_5x.asm
Anatoliy Belyanskiy 45359335b2 ...
2023-07-29 00:01:29 +10:00

127 lines
2.5 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: ; ????? çâ® §  äã­ªæ¨ï ¨ ªã¤  㪠§ë¢ ¥â IX
IN A,(SLOT3)
PUSH AF
PUSH IY
LD A,SYS_PAGE
OUT (SLOT3),A ; !TODO ᤥ« âì áâàãªâãன
LD (IX+0),#04 ; DB 0 ;LEN ;!HARDCODE
LD (IX+1),#00 ; DB 0 ;FDD COUNT
LD (IX+2),#00 ; DB 0 ;HDD COUNT
LD (IX+3),#00 ; DB 0 ;CDROM COUNT
; ; BLOCK 28,0 ;RESERVED ;!TODO ᤥ« âì RAMDRIVE âãâ?
LD (IX+4),#00 ; END FLAG
;Calculating FDD devices
LD HL,FDD_INI_TABLE.FDD_0
INC (IX+1)
LD B,8
LD A,#FF
.TFD0:
CP (HL)
INC HL
JR NZ,.YYYFD0
DJNZ .TFD0
DEC (IX+1)
.YYYFD0:
LD HL,FDD_INI_TABLE.FDD_1
INC (IX+1)
LD B,8
LD A,#FF
.TFD1:
CP (HL)
INC HL
JR NZ,.YYYFD1
DJNZ .TFD1
DEC (IX+1)
.YYYFD1:
;Calculating IDE devices
LD IY,IDE.INIT_TBL_IDE0
LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
CP #FF
JR Z,.ABSIDE0
CP IDE.Device.HDD
JR NZ,.NOT_HD0
INC (IX+2)
.NOT_HD0:
CP IDE.Device.CDROM
JR NZ,.NOT_CD0
INC (IX+3)
.NOT_CD0:
.ABSIDE0:
LD IY,IDE.INIT_TBL_IDE1
LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
CP #FF
JR Z,.ABSIDE1
CP IDE.Device.HDD
JR NZ,.NOT_HD1
INC (IX+2)
.NOT_HD1:
CP IDE.Device.CDROM
JR NZ,.NOT_CD1
INC (IX+3)
.NOT_CD1:
.ABSIDE1:
LD IY,IDE.INIT_TBL_IDE2
LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
CP #FF
JR Z,.ABSIDE2
CP IDE.Device.HDD
JR NZ,.NOT_HD2
INC (IX+2)
.NOT_HD2:
CP IDE.Device.CDROM
JR NZ,.NOT_CD2
INC (IX+3)
.NOT_CD2:
.ABSIDE2:
LD IY,IDE.INIT_TBL_IDE3
LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
CP #FF
JR Z,.check_exit
CP IDE.Device.HDD
JR NZ,.NOT_HD3
INC (IX+2)
.NOT_HD3:
CP IDE.Device.CDROM
JR NZ,.check_exit
INC (IX+3)
.check_exit:
POP IY
POP AF
OUT (SLOT3),A
XOR A
RET
INCLUDE 'EXTENDED/FDD_DRIVER_2.asm'
INCLUDE 'EXTENDED/RAM_DISK_DRIVER_1.asm'
INCLUDE 'EXTENDED/HDD_DRIVER_6.asm'
INCLUDE 'EXTENDED/CD_DRIVER_0.asm'
;DISPLAY " EXTENDED end addr: ", /A, $
;