|
|
1.1 root 1: #ifndef _amiga_rdb_h
2: #define _amiga_rdb_h
3:
4: #define ULONG u_long
5: #define LONG long
6: #define UBYTE u_char
7:
8: /* definitions for the Amiga RigidDiskBlock layout, which always starts in
9: cylinder 0 of a medium. Taken from page 254f of the RKM: Devices */
10:
11: struct RigidDiskBlock {
12: ULONG rdb_ID; /* 4 character identifier */
13: ULONG rdb_SummedLongs; /* size of this checksummed structure */
14: LONG rdb_ChkSum; /* block checksum (longword sum to zero) */
15: ULONG rdb_HostID; /* SCSI Target ID of host */
16: ULONG rdb_BlockBytes; /* size of disk blocks */
17: ULONG rdb_Flags; /* see below for defines */
18: /* block list heads */
19: ULONG rdb_BadBlockList; /* optional bad block list */
20: ULONG rdb_PartitionList; /* optional first partition block */
21: ULONG rdb_FileSysHeaderList; /* optional file system header block */
22: ULONG rdb_DriveInit; /* optional drive-specific init code */
23: /* DriveInit(lun,rdb,ior): "C" stk & d0/a0/a1 */
24: ULONG rdb_Reserved1[6]; /* set to $ffffffff */
25: /* physical drive characteristics */
26: ULONG rdb_Cylinders; /* number of drive cylinders */
27: ULONG rdb_Sectors; /* sectors per track */
28: ULONG rdb_Heads; /* number of drive heads */
29: ULONG rdb_Interleave; /* interleave */
30: ULONG rdb_Park; /* landing zone cylinder */
31: ULONG rdb_Reserved2[3];
32: ULONG rdb_WritePreComp; /* starting cylinder: write precompensation */
33: ULONG rdb_ReducedWrite; /* starting cylinder: reduced write current */
34: ULONG rdb_StepRate; /* drive step rate */
35: ULONG rdb_Reserved3[5];
36: /* logical drive characteristics */
37: ULONG rdb_RDBBlocksLo; /* low block of range reserved for hardblocks */
38: ULONG rdb_RDBBlocksHi; /* high block of range for these hardblocks */
39: ULONG rdb_LoCylinder; /* low cylinder of partitionable disk area */
40: ULONG rdb_HiCylinder; /* high cylinder of partitionable data area */
41: ULONG rdb_CylBlocks; /* number of blocks available per cylinder */
42: ULONG rdb_AutoParkSeconds; /* zero for no auto park */
43: ULONG rdb_HighRDSKBlock; /* highest block used by RDSK */
44: /* (not including replacement bad blocks) */
45: ULONG rdb_Reserved4;
46: /* drive identification */
47: char rdb_DiskVendor[8];
48: char rdb_DiskProduct[16];
49: char rdb_DiskRevision[4];
50: char rdb_ControllerVendor[8];
51: char rdb_ControllerProduct[16];
52: char rdb_ControllerRevision[4];
53: ULONG rdb_Reserved5[10];
54: };
55:
56: #define IDNAME_RIGIDDISK 0x5244534B /* 'RDSK' */
57:
58: #define RDB_LOCATION_LIMIT 16
59:
60: #define RDBFB_LAST 0 /* no disks exist to be configured after */
61: #define RDBFF_LAST 0x01L /* this one on this controller */
62: #define RDBFB_LASTLUN 1 /* no LUNs exist to be configured greater */
63: #define RDBFF_LASTLUN 0x02L /* than this one at this SCSI Target ID */
64: #define RDBFB_LASTTID 2 /* no Target IDs exist to be configured */
65: #define RDBFF_LASTTID 0x04L /* greater than this one on this SCSI bus */
66: #define RDBFB_NORESELECT 3 /* don't bother trying to perform reselection */
67: #define RDBFF_NORESELECT 0x08L /* when talking to this drive */
68: #define RDBFB_DISKID 4 /* rdb_Disk... identification valid */
69: #define RDBFF_DISKID 0x10L
70: #define RDBFB_CTRLRID 5 /* rdb_Controller... identification valid */
71: #define RDBFF_CTRLRID 0x20L
72: /* added 7/20/89 by commodore: */
73: #define RDBFB_SYNCH 6 /* drive supports scsi synchronous mode */
74: #define RDBFF_SYNCH 0x40L /* CAN BE DANGEROUS TO USE IF IT DOESN'T! */
75:
76: struct PartitionBlock {
77: ULONG pb_ID; /* 4 character identifier */
78: ULONG pb_SummedLongs; /* size of this checksummed structure */
79: LONG pb_ChkSum; /* block checksum (longword sum to zero) */
80: ULONG pb_HostID; /* SCSI Target ID of host */
81: ULONG pb_Next; /* block number of the next PartitionBlock */
82: ULONG pb_Flags; /* see below for defines */
83: ULONG pb_Reserved1[2];
84: ULONG pb_DevFlags; /* preferred flags for OpenDevice */
85: UBYTE pb_DriveName[32]; /* preferred DOS device name: BSTR form */
86: /* (not used if this name is in use) */
87: ULONG pb_Reserved2[15]; /* filler to 32 longwords */
88: ULONG pb_Environment[17]; /* environment vector for this partition */
89: ULONG pb_EReserved[15]; /* reserved for future environment vector */
90: };
91:
92: #define IDNAME_PARTITION 0x50415254 /* 'PART' */
93:
94: #define PBFB_BOOTABLE 0 /* this partition is intended to be bootable */
95: #define PBFF_BOOTABLE 1L /* (expected directories and files exist) */
96: #define PBFB_NOMOUNT 1 /* do not mount this partition (e.g. manually */
97: #define PBFF_NOMOUNT 2L /* mounted, but space reserved here) */
98:
99: /* this is from <dos/filehandler.h>
100:
101: #define DE_TABLESIZE 0 /* minimum value is 11 (includes NumBuffers) */
102: #define DE_SIZEBLOCK 1 /* in longwords: standard value is 128 */
103: #define DE_SECORG 2 /* not used; must be 0 */
104: #define DE_NUMHEADS 3 /* # of heads (surfaces). drive specific */
105: #define DE_SECSPERBLK 4 /* not used; must be 1 */
106: #define DE_BLKSPERTRACK 5 /* blocks per track. drive specific */
107: #define DE_RESERVEDBLKS 6 /* unavailable blocks at start. usually 2 */
108: #define DE_PREFAC 7 /* not used; must be 0 */
109: #define DE_INTERLEAVE 8 /* usually 0 */
110: #define DE_LOWCYL 9 /* starting cylinder. typically 0 */
111: #define DE_UPPERCYL 10 /* max cylinder. drive specific */
112: #define DE_NUMBUFFERS 11 /* starting # of buffers. typically 5 */
113: #define DE_MEMBUFTYPE 12 /* type of mem to allocate for buffers. */
114: #define DE_BUFMEMTYPE 12 /* same as above, better name
115: * 1 is public, 3 is chip, 5 is fast */
116: #define DE_MAXTRANSFER 13 /* Max number bytes to transfer at a time */
117: #define DE_MASK 14 /* Address Mask to block out certain memory */
118: #define DE_BOOTPRI 15 /* Boot priority for autoboot */
119: #define DE_DOSTYPE 16 /* ASCII (HEX) string showing filesystem type;
120: * 0X444F5300 is old filesystem,
121: * 0X444F5301 is fast file system */
122: #define DE_BAUD 17 /* Baud rate for serial handler */
123: #define DE_CONTROL 18 /* Control word for handler/filesystem */
124: #define DE_BOOTBLOCKS 19 /* Number of blocks containing boot code */
125:
126:
127: /* NEW ! BSD PARTITION TYPES.
128:
129: These are chosen to more or less resemble the original BSD partition
130: layout, but they don't come too close (we're much more flexible!)
131:
132: there's
133: - a root-partition
134: - a swap-partition
135: - user-partitions
136:
137: This gives the following layout for the 8 BSD partitions A-H:
138:
139: A: root (first one found with DOSTYPE_BSD_ROOT)
140: B: swap (first one found with DOSTYPE_BSD_SWAP)
141: C: whole disk (the traditional way to nuke your whole harddisk...)
142: D-H: user (DOSTYPE_BSD_D TO DOSTYPE_BSD_H) */
143:
144: #define DOSTYPE_BSD_ROOT 'BSDR'
145: #define DOSTYPE_BSD_SWAP 'BSDS'
146: #define DOSTYPE_BSD_D 'BSDD'
147: #define DOSTYPE_BSD_E 'BSDE'
148: #define DOSTYPE_BSD_F 'BSDF'
149: #define DOSTYPE_BSD_G 'BSDG'
150: #define DOSTYPE_BSD_H 'BSDH'
151:
152: #endif _amiga_rdb_h
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.