/* Copyright (C) 1991, 1992 by Always Technology Corporation. This module contains information proprietary to Always Technology Corporation, and should be treated as confidential. */ #ifndef __DOSASPI_H__ #define __DOSASPI_H__ #pragma pack (1) // MSC form of pack //#pragma options -a- // Borland packed structures struct ASPISRB { unsigned char Command; volatile unsigned char Status; unsigned char HANumber; unsigned char Flags; unsigned char Reserved[4]; }; typedef struct ASPISRB FAR *REQ_PTR; struct ASPIHAINQUIRY { unsigned char Command; volatile unsigned char Status; unsigned char HANumber; unsigned char Flags; unsigned char Reserved[4]; unsigned char AdapterCount; unsigned char ADSCSIID; char MGRID[16]; char AdapterID[16]; char AdapterParms[16]; }; typedef struct ASPIHAINQUIRY FAR *IO_HA_INQ_PTR; struct ASPIDEVTYPE { unsigned char Command; volatile unsigned char Status; unsigned char HANumber; unsigned char Flags; unsigned char Reserved[4]; unsigned char TargetID; unsigned char TargetLUN; unsigned char Type; }; typedef struct ASPIDEVTYPE FAR *IO_DEV_TYPE_PTR; struct SENSE_RESP { unsigned ErrorCode:7; unsigned ADValid:1; unsigned char SegNum; unsigned Key:4; unsigned Reserved:1; unsigned ILI:1; unsigned EOM:1; unsigned FileMark:1; long Info; unsigned char AddlLen; long CmdInfo; unsigned char AddlCode; unsigned char AddlQual; }; union SCSI_CDB { unsigned char SCSI6[6]; unsigned char SCSI10[10]; unsigned char SCSI12[12]; unsigned char CDB[12]; }; typedef struct SG_LIST_struct FAR *SG_LIST_Ptr; typedef struct SG_LIST_struct SG_LIST; struct SG_LIST_struct { void FAR *Buffer; unsigned long Count; }; union MEM_HANDLE { void FAR *addr; SG_LIST_Ptr sg_list; }; #if !defined(KERNEL) union ASPIRESERVED { char ASPI[34]; }; #endif typedef struct ASPIIOREQ IO_REQ; typedef struct ASPIIOREQ FAR *IO_REQ_PTR; /* Execute I/O Request */ typedef struct ASPIIOREQ FAR *IO_RST_PTR; /* Reset target request */ struct ASPIIOREQ { unsigned char Command; volatile unsigned char Status; unsigned char HANumber; unsigned char Flags; unsigned short SGListLength; unsigned short Reserved; unsigned char TargetID; unsigned char TargetLUN; unsigned long DataCount; unsigned char SenseCount; void far *DataPtr; // Data pointer or mem handle pointer // IO_REQ_PTR NextReq; void far *NextReq; unsigned char CDBLen; unsigned char HAStatus; unsigned char volatile TStatus; void far *post_func; // unsigned long Post; union ASPIRESERVED Misc; union SCSI_CDB CDB; unsigned char SenseData[32]; }; struct ASPIABORT { unsigned char Command; unsigned char Status; unsigned char HANumber; unsigned char Flags; unsigned char Reserved[4]; IO_REQ_PTR ReqPtr; }; typedef struct ASPIABORT FAR *IO_ABORT_PTR; struct ASPIDISKINFO { unsigned char Command; unsigned char Status; unsigned char HANumber; unsigned char Flags; unsigned char Reserved[4]; unsigned char TargetID; unsigned char TargetLUN; unsigned char DriveFlags; unsigned char INT13Drive; unsigned char Heads; /* Logical heads per cylinder */ unsigned char Sectors; /* Logical sectors per track */ unsigned char Reserved2[10]; }; typedef struct ASPIDISKINFO FAR *IO_DISK_PTR; /* Codes for Request.Command */ #define ASPI_ADAPTER_INQUIRY 0x00 /* Ask about ASPI mgr and adapter */ #define ASPI_DEVICE_TYPE 0x01 /* Inquiry on drive */ #define ASPI_EXEC_COMMAND 0x02 /* Perform SCSI command */ #define ASPI_ABORT 0x03 /* Abort request */ #define ASPI_RESET_TARGET 0x04 /* Reset specified target */ #define ASPI_SET_PARMS 0x05 /* Set ASPI parameters */ #define ASPI_DISK_INFO 0x06 /* Get BIOS Int 13 info for drive */ /* Flag bits for Req.Flags: */ #define RF_USESG 0x20 #define RF_DIRECTION 0x18 #define RF_LINKED 0x02 #define RF_POST 0x01 #define RF_DATAAUTO 0x00 #define RF_DATAIN 0x08 #define RF_DATAOUT 0x10 #define RF_NODATA 0x18 /* Status codes for Request.Status */ #define ASPI_REQS_REQINPROGRESS 0x0 #define ASPI_REQS_COMPLETEOK 0x1 #define ASPI_REQS_NOERROR 0x1 #define ASPI_REQS_REQABORTED 0x2 #define ASPI_REQS_ERROR 0x4 #define ASPI_REQS_BADREQ 0x80 #define ASPI_REQS_BADHANUM 0x81 #define ASPI_REQS_NODEV 0x82 /* Status codes for ADStatus */ #define ASPI_HAS_NOERROR 0x0 #define ASPI_HAS_SELTIMEOUT 0x11 #define ASPI_HAS_OVERRUN 0x12 #define ASPI_HAS_BUSFREE 0x13 #define ASPI_HAS_BADPHASE 0x14 /* Status codes for TStatus */ #define ASPI_TS_NOERROR 0x0 #define ASPI_TS_CHECKCOND 0x2 #define ASPI_TS_BUSY 0x8 #define ASPI_TS_RESERVED 0x18 #pragma pack () // MSC default packing //#pragma options -a. // Borland word packing #endif /* __DOSASPI_H__ */