/* $Revision Header *** Header built automatically - do not edit! *********** * * (C) Copyright 1992 by Torsten Jürgeleit * * Name .....: hardblocks.h * Created ..: Wednesday 19-Feb-92 09:25:36 * Revision .: 2 * * Date Author Comment * ========= ==================== ==================== * 10-Apr-92 Torsten Jürgeleit Add structure for standard * hardblock header * 17-Mar-92 Torsten Jürgeleit New error codes HBERR_NO_DEVICE * and HBERR_NO_HOST_ID * 19-Feb-92 Torsten Jürgeleit Created this file! * **************************************************************************** * * Defines, structures, prototypes and pragmas for hardblocks functions * * $Revision Header ********************************************************/ #ifndef LIBRARIES_HARDBLOCKS_H #define LIBRARIES_HARDBLOCKS_H /* Includes */ #ifndef EXEC_TYPES_H #include #endif /* EXEC_TYPES_H */ #ifndef DEVICES_HARDBLOCKS_H #include #endif /* DEVICES_HARDBLOCKS_H */ #ifndef DEVICES_SCSIDISK_H #include #endif /* DEVICES_SCSIDISK_H */ #ifndef LIBRARIES_DOSEXTENS_H #include #endif LIBRARIES_DOSEXTENS_H /* Defines for hardblocks */ #define HardBlocksName "hardblocks.library" #define HardBlocksVersion 1L #define HB_NULL 0xffffffff /* Standard hardblock header structure (common to most hardblocks) */ struct HardBlockHeader { ULONG hbh_ID; /* 4 character identifier */ ULONG hbh_SummedLongs; /* size of block in longwords */ ULONG hbh_ChkSum; /* block checksum (longword sum to zero) */ ULONG hbh_HostID; /* SCSI Target ID of host */ ULONG hbh_Next; /* block number of next block */ }; /* Custom hardblock structure used for BadBlock and LoadSeg lists */ struct DataBlock { ULONG db_ID; /* 4 character identifier */ ULONG db_BlockLongs; /* size of block in longwords */ ULONG db_ChkSum; /* block checksum (longword sum to zero) */ ULONG db_HostID; /* SCSI Target ID of host */ ULONG db_Data[1]; /* first longword of data */ }; /* Error codes */ #define HBERR_INVALID_PARAMETERS 1 #define HBERR_OUT_OF_MEM 2 #define HBERR_NO_DEVICE 3 /* selected device don't exist */ #define HBERR_NO_BOARD 4 /* selected board from unit num don't exist */ #define HBERR_NO_HOST_ID 5 /* can't find target id of controller for rdb_HostID */ #define HBERR_DEVICE_OPEN_FAILED 6 /* selected device unit don't exist or isn't ready */ #define HBERR_DEVICE_READ_FAILED 7 #define HBERR_DEVICE_WRITE_FAILED 8 #define HBERR_NO_HD_SCSI_CMD 9 #define HBERR_SELF_UNIT 10 /* cannot issue SCSI command to self */ #define HBERR_DMA 11 /* DMA error */ #define HBERR_PHASE 12 /* illegal or unexpected SCSI phase */ #define HBERR_PARITY 13 /* SCSI parity error */ #define HBERR_SELECT_TIMEOUT 14 /* Select timed out */ #define HBERR_BAD_STATUS 15 /* status and/or sense error */ #define HBERR_INQUIRY_FAILED 16 #define HBERR_MODE_SENSE_FAILED 17 #define HBERR_SCSI_CMD_FAILED 18 #define HBERR_UNIT_NOT_READY 19 #define HBERR_NO_DIRECT_ACCESS 20 #define HBERR_INVALID_BLOCK_SIZE 21 /* wrong rdb_BlockBytes */ #define HBERR_INVALID_HARDBLOCKS_AREA 22 /* incorrect rdb_RDBBlocksLo/Hi */ #define HBERR_HARDBLOCKS_AREA_TOO_SMALL 23 /* reserved area (rdb_RDBBlocksLo/Hi) too small for hardblocks */ #define HBERR_INVALID_BLOCK_NUM 24 /* block num greater than num of last logical block of device unit */ #define HBERR_INVALID_BLOCK_PTR 25 /* odd aligned ptr to block in memory */ #define HBERR_UNKNOWN_ID 26 /* block with unsupported id */ #define HBERR_INVALID_ID 27 #define HBERR_INVALID_SUMMED_LONGS 28 #define HBERR_INVALID_CHECKSUM 29 #define HBERR_NO_RIGIDDISK 30 #define HBERR_INVALID_RIGIDDISK 31 #define HBERR_INVALID_BADBLOCK 32 #define HBERR_INVALID_PARTITION 33 #define HBERR_INVALID_FILESYSHEADER 34 #define HBERR_MISSING_FILESYSTEM 35 #define HBERR_INVALID_FILESYSTEM 36 #define HBERR_INVALID_DRIVEINIT 37 #define HBERR_INVALID_LOADSEG 38 #define HBERR_BREAK_ABORT 39 /* function was terminated by */ #define HBERR_FILE_OPEN_FAILED 40 #define HBERR_FILE_SEEK_FAILED 41 #define HBERR_FILE_READ_FAILED 42 #define HBERR_FILE_WRITE_FAILED 43 /* Prototypes */ USHORT LoadHardBlocks(struct RigidDiskBlock *rdb, BYTE *device, ULONG unit); USHORT SaveHardBlocks(struct RigidDiskBlock *rdb, BYTE *device, ULONG unit); USHORT RestoreHardBlocks(struct RigidDiskBlock *rdb, BYTE *file); USHORT BackupHardBlocks(struct RigidDiskBlock *rdb, BYTE *file); USHORT PrintHardBlocks(struct RigidDiskBlock *rdb, BPTR fh); USHORT FreeHardBlocks(struct RigidDiskBlock *rdb); USHORT RemoveHardBlocks(BYTE *device, ULONG unit); USHORT InitRigidDiskBlock(struct RigidDiskBlock *rdb, BYTE *device, ULONG unit); USHORT LastHardBlockNum(struct RigidDiskBlock *rdb); /* Pragmas for Manx and Lattice */ #ifndef __NO_PRAGMAS #ifdef AZTEC_C #pragma amicall(HardBlocksBase, 0x1e, LoadHardBlocks(a0,a1,d0)) #pragma amicall(HardBlocksBase, 0x24, SaveHardBlocks(a0,a1,d0)) #pragma amicall(HardBlocksBase, 0x2a, RestoreHardBlocks(a0,a1)) #pragma amicall(HardBlocksBase, 0x30, BackupHardBlocks(a0,a1)) #pragma amicall(HardBlocksBase, 0x36, PrintHardBlocks(a0,a1)) #pragma amicall(HardBlocksBase, 0x3c, FreeHardBlocks(a0)) #pragma amicall(HardBlocksBase, 0x42, RemoveHardBlocks(a0,d0)) #pragma amicall(HardBlocksBase, 0x48, InitRigidDiskBlock(a0,a1,d0)) #pragma amicall(HardBlocksBase, 0x4e, LastHardBlockNum(a0)) #else /* AZTEC_C */ #pragma libcall HardBlocksBase LoadHardBlocks 1e 9803 #pragma libcall HardBlocksBase SaveHardBlocks 24 9803 #pragma libcall HardBlocksBase RestoreHardBlocks 2a 9802 #pragma libcall HardBlocksBase BackupHardBlocks 30 9802 #pragma libcall HardBlocksBase PrintHardBlocks 36 9802 #pragma libcall HardBlocksBase FreeHardBlocks 3c 801 #pragma libcall HardBlocksBase RemoveHardBlocks 42 802 #pragma libcall HardBlocksBase InitRigidDiskBlock 48 9803 #pragma libcall HardBlocksBase LastHardBlockNum 4e 801 #endif /* AZTEC_C */ #endif /* __NO_PRAGMAS */ #endif /* LIBRARIES_HARDBLOCKS_H */