1 #ifndef DEVICES_HARDBLOCKS_H
    2 #define DEVICES_HARDBLOCKS_H
    3 
    4 /*
    5 	hardblocks include (V45)
    6 
    7 	Copyright © 2002 The MorphOS Development Team, All Rights Reserved.
    8 */
    9 
   10 #ifndef EXEC_TYPES_H
   11 #include <exec/types.h>
   12 #endif /* EXEC_TYPES_H */
   13 
   14 #pragma pack(2)
   15 
   16 
   17 struct RigidDiskBlock
   18 {
   19 	ULONG rdb_ID;
   20 	ULONG rdb_SummedLongs;
   21 	LONG  rdb_ChkSum;
   22 	ULONG rdb_HostID;
   23 	ULONG rdb_BlockBytes;
   24 	ULONG rdb_Flags;
   25 
   26 	ULONG rdb_BadBlockList;
   27 	ULONG rdb_PartitionList;
   28 	ULONG rdb_FileSysHeaderList;
   29 	ULONG rdb_DriveInit;
   30 	ULONG rdb_Reserved1[6];
   31 
   32 	ULONG rdb_Cylinders;
   33 	ULONG rdb_Sectors;
   34 	ULONG rdb_Heads;
   35 	ULONG rdb_Interleave;
   36 	ULONG rdb_Park;
   37 	ULONG rdb_Reserved2[3];
   38 	ULONG rdb_WritePreComp;
   39 	ULONG rdb_ReducedWrite;
   40 	ULONG rdb_StepRate;
   41 	ULONG rdb_Reserved3[5];
   42 
   43 	ULONG rdb_RDBBlocksLo;
   44 	ULONG rdb_RDBBlocksHi;
   45 	ULONG rdb_LoCylinder;
   46 	ULONG rdb_HiCylinder;
   47 	ULONG rdb_CylBlocks;
   48 	ULONG rdb_AutoParkSeconds;
   49 	ULONG rdb_HighRDSKBlock;
   50 	ULONG rdb_Reserved4;
   51 
   52 	char  rdb_DiskVendor[8];
   53 	char  rdb_DiskProduct[16];
   54 	char  rdb_DiskRevision[4];
   55 	char  rdb_ControllerVendor[8];
   56 	char  rdb_ControllerProduct[16];
   57 	char  rdb_ControllerRevision[4];
   58 
   59 	/*** V44 ***/
   60 
   61 	char  rdb_DriveInitName[40];
   62 };
   63 
   64 #define IDNAME_RIGIDDISK  0x5244534B
   65 
   66 
   67 #define RDB_LOCATION_LIMIT  16
   68 
   69 
   70 #define RDBFB_LAST        0
   71 #define RDBFF_LAST        (1<<RDBFB_LAST)
   72 #define RDBFB_LASTLUN     1
   73 #define RDBFF_LASTLUN     (1<<RDBFB_LASTLUN)
   74 #define RDBFB_LASTTID     2
   75 #define RDBFF_LASTTID     (1<<RDBFB_LASTID)
   76 #define RDBFB_NORESELECT  3
   77 #define RDBFF_NORESELECT  (1<<RDBFB_NORESELECT)
   78 #define RDBFB_DISKID      4
   79 #define RDBFF_DISKID      (1<<RDBFB_DISKID)
   80 #define RDBFB_CTRLRID     5
   81 #define RDBFF_CTRLRID     (1<<RDBFB_CTRLRID)
   82 #define RDBFB_SYNCH       6
   83 #define RDBFF_SYNCH       (1<<RDBFB_SYNCH)
   84 
   85 
   86 struct BadBlockEntry
   87 {
   88 	ULONG bbe_BadBlock;
   89 	ULONG bbe_GoodBlock;
   90 };
   91 
   92 struct BadBlockBlock
   93 {
   94 	ULONG                bbb_ID;
   95 	ULONG                bbb_SummedLongs;
   96 	LONG                 bbb_ChkSum;
   97 	ULONG                bbb_HostID;
   98 	ULONG                bbb_Next;
   99 	ULONG                bbb_Reserved;
  100 	struct BadBlockEntry bbb_BlockPairs[61];
  101 };
  102 
  103 #define IDNAME_BADBLOCK  0x42414442
  104 
  105 
  106 struct PartitionBlock
  107 {
  108 	ULONG pb_ID;
  109 	ULONG pb_SummedLongs;
  110 	LONG  pb_ChkSum;
  111 	ULONG pb_HostID;
  112 	ULONG pb_Next;
  113 	ULONG pb_Flags;
  114 	ULONG pb_Reserved1[2];
  115 	ULONG pb_DevFlags;
  116 	UBYTE pb_DriveName[32];
  117 	ULONG pb_Reserved2[15];
  118 	ULONG pb_Environment[20];
  119 	ULONG pb_EReserved[12];
  120 };
  121 
  122 #define IDNAME_PARTITION  0x50415254
  123 
  124 
  125 #define PBFB_BOOTABLE  0
  126 #define PBFF_BOOTABLE  (1<<PBFB_BOOTABLE)
  127 #define PBFB_NOMOUNT   1
  128 #define PBFF_NOMOUNT   (1<<PBFB_NOMOUNT)
  129 
  130 
  131 struct FileSysHeaderBlock
  132 {
  133 	ULONG fhb_ID;
  134 	ULONG fhb_SummedLongs;
  135 	LONG  fhb_ChkSum;
  136 	ULONG fhb_HostID;
  137 	ULONG fhb_Next;
  138 	ULONG fhb_Flags;
  139 	ULONG fhb_Reserved1[2];
  140 	ULONG fhb_DosType;
  141 	ULONG fhb_Version;
  142 	ULONG fhb_PatchFlags;
  143 	ULONG fhb_Type;
  144 	ULONG fhb_Task;
  145 	ULONG fhb_Lock;
  146 	ULONG fhb_Handler;
  147 	ULONG fhb_StackSize;
  148 	LONG  fhb_Priority;
  149 	LONG  fhb_Startup;
  150 	LONG  fhb_SegListBlocks;
  151 	LONG  fhb_GlobalVec;
  152 	ULONG fhb_Reserved2[23];
  153 
  154 	/*** V44 ***/
  155 
  156 	char  fhb_FileSysName[84];
  157 };
  158 
  159 #define IDNAME_FILESYSHEADER  0x46534844
  160 
  161 
  162 struct LoadSegBlock
  163 {
  164 	ULONG lsb_ID;
  165 	ULONG lsb_SummedLongs;
  166 	LONG  lsb_ChkSum;
  167 	ULONG lsb_HostID;
  168 	ULONG lsb_Next;
  169 	ULONG lsb_LoadData[123];
  170 };
  171 
  172 #define IDNAME_LOADSEG  0x4C534547
  173 
  174 /*** V 50 ***/
  175 struct NewLoadSegBlock {
  176 	ULONG   nsb_ID;
  177 	ULONG   nsb_SummedLongs;
  178 	LONG    nsb_ChkSum;
  179 	ULONG   nsb_HostID;
  180 
  181 	ULONG   nsb_DataSize;
  182 	ULONG   nsb_DataChkSum;
  183 	ULONG   nsb_DataSector;
  184 
  185 	ULONG   nsb_Pad[121];
  186 };
  187 
  188 #define	IDNAME_NEWLOADSEG		0x4E534547	/* 'NSEG' */
  189 
  190 
  191 #pragma pack()
  192 
  193 #endif /* DEVICES_HARDBLOCKS_H */