|
|
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.