; ; 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, $ ;