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