1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
|
; hd_io.h
;
; header file for hd_io.asm
;
; Copyright (C) 2000, Suzhe. See file COPYING and CREDITS for details.
;
%define DRVFLAG_DRIVEOK 0x0001 ;
%define DRVFLAG_CHSVALID 0x0002 ; used in driveinfo structure
%define DRVFLAG_REMOVABLE 0x0004 ; and bootrecord structure
%define DRVFLAG_EXTOK 0x0008 ;
%define DRVFLAG_ISCDROM 0x0010 ; 0000,0000,0001,0000B
%define DRVFLAG_MASK 0x0015 ; 0000,0000,0001,0101B
%define INT13H_EXT_INSTCHECK 0x41
%define INT13H_EXT_READ 0x42
%define INT13H_EXT_WRITE 0x43
%define INT13H_EXT_GETINFO 0x48
%define INT13H_EXT_LOCK 0x45
%define INT13H_RESET 0X00
%define INT13H_READ 0X02
%define INT13H_WRITE 0X03
%define INT13H_GETINFO 0X08
%define INT13H_GETTYPE 0x15
%define EXT_SUBSET_FIXED 0x01
%define EXT_SUBSET_REMOVABLE 0x02
%define EXT_SUBSET_EDD 0x04
%define DRV_TYPE_FIXED 0x03
%define MIN_HD_ID 0X80
%define EXTPARAM_SIZE 0x42
%define MAX_CYLS 1023
; Structure for calling int 13h ext Read / Write functions
struc struc_int13ext
.pack_size : resb 1 ; ==16 size of struct Int13ExtData
.reserved : resb 1 ; ==0
.blk_count : resb 1 ; number of blocks to transfer <= 127
.reserved1 : resb 1 ; ==0
.buf_addr_off : resw 1 ; address of transfer buffer(segment:offset)
.buf_addr_seg : resw 1
.blk_num_low1 : resw 1 ; starting absolute block number
.blk_num_low2 : resw 1
.blk_num_high1: resw 1
.blk_num_high2: resw 1
.end_of_struc
endstruc
; structure for calling int 13h ext get drive parameters functions (0x48)
struc struc_extparam
.pack_size : resw 1
.flags : resw 1
.cylinders : resd 1
.heads : resd 1 ; <= 255
.sectors : resd 1 ; <= 63
.total_sectors : resd 2
.bytes_per_sect : resw 1
.dpte_addr : resd 1 ; device parameter table extension
.dpi_key : resw 1 ; 0xBEDD - Key, indicates presence
; of Device Path Information
.dpi_length : resb 1 ; Length of Device Path Information
; including the key. = 36
.reserved1 : resb 1
.reserved2 : resw 1
.host_bus_type : resb 4 ; Host bus type, 4 bytes
; PCI PCI Local Bus
; ISA Legacy 16 bit fixed bus
.interface_type : resb 8 ; Interface type, 8 bytes
; ATA ATA/ATAPI-4 compliant device using ATA commands
; ATAPI ATA/ATAPI-4 compliant device using ATAPI commands
; SCSI SCSI compliant device
; USB USB Mass Storage compliant device
; 1394 1394 Mass Storage device
; FIBRE Fibre Channel
.interface_path : resq 1
.device_path : resq 1
.reserved3 : resb 1
.checksum : resb 1
.end_of_struc
endstruc
; Device parameter table extension
%define SIZE_OF_DPTE struc_dpte.end_of_struc
struc struc_dpte
.base_io : resw 1
.ctrl_io : resw 1
.flags : resb 1
.vender_spec : resb 1
.irq : resb 1
.blk_count : resb 1
.dma : resb 1
.pio : resb 1
.bios_spec : resw 1
.reserved : resw 1
.revision : resb 1
.checksum : resb 1
.end_of_struc
endstruc
;Return cdrom boot catalog command packet
%define SIZE_OF_CDBC_CMD struc_cdbc_cmd.end_of_struc
struc struc_cdbc_cmd
.pack_size : resb 1
.sector_count : resb 1
.buf_addr_off : resw 1
.buf_addr_seg : resw 1
.begnning_sect : resw 1
.end_of_struc
endstruc
;CD Emulation Specification Packet
%define SIZE_OF_CDEMU_SPEC struc_cdemu_spec.end_of_struc
struc struc_cdemu_spec
.pack_size : resb 1
.media_type : resb 1
.emu_drvid : resb 1
.controller_id : resb 1
.image_lba : resd 1
.device_spec : resw 1
.user_bufseg : resw 1
.load_seg : resw 1
.sect_count : resw 1
.cylinders : resb 1
.sectors : resb 1
.heads : resb 1
.end_of_struc
endstruc
;Structure of boot catalog entry
%define SIZE_OF_BOOT_CATALOG struc_boot_catalog.end_of_struc
struc struc_boot_catalog
.indicator : resb 1
.media_type : resb 1
.load_seg : resw 1
.sys_type : resb 1
.reserved : resb 1
.sect_count : resw 1
.load_rba : resd 1
.reserved1 : resb 20
.end_of_struc
endstruc
; structure for record drive informations
struc struc_driveinfo
.id : resb 1
.flags : resb 1
.cylinders : resw 1
.heads : resw 1
.sectors : resw 1
.sector_size : resw 1
.end_of_struc
endstruc
%define SIZE_OF_DRIVEINFO (struc_driveinfo.end_of_struc)
%define SIZE_OF_EXTPARAM (struc_extparam.end_of_struc)
%define SIZE_OF_INT13EXT (struc_int13ext.end_of_struc)
|