File: hd_io.h

package info (click to toggle)
sbm 3.7.1-2
  • links: PTS
  • area: main
  • in suites: woody
  • size: 1,060 kB
  • ctags: 1,590
  • sloc: asm: 11,940; ansic: 2,870; makefile: 531
file content (166 lines) | stat: -rw-r--r-- 5,163 bytes parent folder | download | duplicates (4)
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)