127 lines
2.5 KiB
NASM
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, $
|
|
; |