|
|
1.1 root 1: /* (-lgl
2: * COHERENT Version 3.2.1
3: * Copyright (c) 1982, 1991 by Mark Williams Company.
4: * All rights reserved. May not be copied without permission.
5: -lgl) */
6:
7: #ifndef ABIOS_H
8: #define ABIOS_H ABIOS_H
9:
10: /* These point to the proper offset in the function transfer tables */
11: #define START_P 0
12: #define INTERRUPT_P 4
13: #define TIME_OUT_P 8
14:
15: /*
16: * Initialization structures.
17: */
18:
19: typedef struct a_sys_parm_struct {
20: long common_start_fptr; /* Far ptr to Start Routine Entry */
21: long common_interrupt_fptr;/* Far ptr to Interrupt Routine Entry*/
22: long common_timeout_fptr; /* Far ptr to TIme Out Routine Entry */
23: int stack; /* Amount of stack required by ABIOS */
24: long reserved[4];
25: int num_entries; /* Number of ABIOS extensions */
26: } a_sys_parm;
27:
28: typedef struct a_init_table_struct {
29: int deviceid; /* This will always be 02h for the HD */
30: int num_logicalids; /* The number of HDs with the same id */
31: int db_length; /* Length of dev block for this dev */
32: long initdev_fptr; /* Far ptr to init dev routine entry */
33: int rb_length; /* Length of request blk for this dev */
34: int ftt_length; /* Length of function transfer table */
35: int dp_length; /* Required Length of the data ptr */
36: /* fields in the Common Data Area */
37: char secdevice_id; /* Level of hw that ABIOS supports */
38: char revision; /* DD revsion that ABIOS supports */
39: int reserved[3];
40: } a_init_table;
41:
42:
43: /*
44: * Floppy Disk Structures
45: */
46:
47: typedef struct f3vals1_struct { /* Read device Parameters */
48: int sectors_track;
49: int sector_size;
50: int device_control;
51: int drive_type;
52: long reserved; /* Init to 0 */
53: long motor_off; /* Time to delay before turning motor off */
54: long motor_on;
55: int reserved1;
56: int cylinders;
57: int reserved2;
58: char heads;
59: char retries;
60: char fill_byte; /* Fill byte for formats */
61: long head_settle;
62: char gap_rwv; /* Gap length for read/write/verify */
63: char gap_format; /* Gap length for format */
64: char dlength; /* Data length */
65: char reserved3[6];
66: char status; /* Disk controller status byte */
67: } f3vals1;
68:
69: typedef struct f5vals1_struct { /* Reset/Initialize Floppy Disk */
70: int reserved; /* Init to 0 */
71: } f5vals1;
72:
73: typedef struct f8vals1_struct { /* Read/write floppy disk */
74: int reserved; /* Init to 0 */
75: long dummy;
76: long reserved1; /* Init to 0 */
77: long dptr; /* 32 bit data pointer */
78: int reserved2; /* Init to 0 */
79: long wait_time; /* Time to wait */
80: int sectors_read; /* Before the call - Number of sectors
81: * to read. After the call completes -
82: * number of sectors read. */
83: int cylinder; /* Cylinder number 0 based */
84: int dummy1;
85: char head; /* Head number */
86: char dummy2[6];
87: int sector; /* Sector number */
88: } f8vals1;
89:
90: typedef struct fbvals1_struct { /* Verify floppy disk */
91: char dummy[6];
92: long reserved1; /* Init to 0 */
93: int reserved2; /* Init to 0 */
94: long rb_address; /* Relative block address */
95: long reserved3; /* Init to 0 */
96: long wait_time; /* Time to wait */
97: int blocks_verify; /* Before the call - Number of blocks
98: * to verify.After the call completes
99: * - number of blocks verified. */
100: char caching; /* 0-caching is ok, 1-do not cache */
101: int soft_error;
102: } fbvals1;
103:
104: typedef struct ffvals1_struct { /* Turn disk motor off */
105: int reserved; /* Init to 0 */
106: } ffvals1;
107:
108: typedef struct request_block_struct_fl {
109: int length; /* Request block length */
110: int logical_id; /* Logical Id of the device */
111: int unit; /* Which Hard disk: 0 - 1st etc */
112: int function; /* Function number to execute */
113: long reserved; /* Init to 0 */
114: int ret_code; /* Value returned by the function */
115: int time_out;
116: union
117: {
118: f3vals1 f3;
119: f5vals1 f5;
120: f8vals1 f8;
121: fbvals1 fb;
122: ffvals1 ff;
123: char padding[0x41]; /* To make the Requset Block
124: at least 0x51 bytes long */
125: } vars;
126: } request_block_fl;
127:
128:
129: /*
130: * Hard Disk Structures
131: */
132:
133: typedef struct f3vals2_struct { /* Read device Parameters */
134: int sectors_track;
135: int sector_size;
136: int device_control;
137: int drive_type;
138: long cylinders;
139: char heads;
140: char retries;
141: long block_addresses;
142: long reserved; /* Init to 0 */
143: long reserved1;
144: int max_blocks;
145: } f3vals2;
146:
147: typedef struct f5vals2_struct { /* Reset/Initialize Fixed Disk */
148: int reserved; /* Init to 0 */
149: char dummy[22];
150: long wait_time;
151: } f5vals2;
152:
153: typedef struct f8vals2_struct { /* Read/Write fixed disk */
154: int reserved; /* Init to 0 */
155: long dummy;
156: long reserved1; /* Init to 0 */
157: long dptr; /* 32 bit data pointer */
158: int reserved2; /* Init to 0 */
159: long rb_address; /* Relative block address */
160: long reserved3; /* Init to 0 */
161: long wait_time; /* Time to wait */
162: int blocks_read; /* Before the call - Number of blocks
163: * to read. After the call completes
164: * - number of blocks read. */
165: char caching; /* 0-caching is ok, 1-do not cache */
166: int soft_error;
167: } f8vals2;
168:
169: typedef struct fbvals2_struct { /* Verify fixed disk */
170: char dummy[6];
171: long reserved1; /* Init to 0 */
172: int reserved2; /* Init to 0 */
173: long rb_address; /* Relative block address */
174: long reserved3; /* Init to 0 */
175: long wait_time; /* Time to wait */
176: int blocks_verify; /* Before the call - Number of blocks
177: * to verify.After the call completes
178: * - number of blocks verified. */
179: char caching; /* 0-caching is ok, 1-do not cache */
180: int soft_error;
181: } fbvals2;
182:
183: typedef struct request_block_struct_hd {
184: int length; /* Request block length */
185: int logical_id; /* Logical Id of the device */
186: int unit; /* Which Hard disk: 0 - 1st etc */
187: int function; /* Function number to execute */
188: long reserved; /* Init to 0 */
189: int ret_code; /* Value returned by the function */
190: int time_out;
191: union
192: {
193: f3vals2 f3;
194: f5vals2 f5;
195: f8vals2 f8;
196: fbvals2 fb;
197: char padding[0x72]; /* To make the Requset Block
198: 0x80 bytes long */
199: } vars;
200: } request_block_hd;
201:
202: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.