home *** CD-ROM | disk | FTP | other *** search
- {
- ════════════════════════════════════════════════════════════════════════════
-
- Visionix SCSI Abstraction Library (VSAL)
- Copyright 1991,92,93 Visionix
- ALL RIGHTS RESERVED
-
- ────────────────────────────────────────────────────────────────────────────
-
- Revision history in reverse chronological order:
-
- Initials Date Comment
- ──────── ──────── ────────────────────────────────────────────────────────
-
- lpg 03/16/93 Added Source Documentation
-
- mep 02/11/93 Cleaned up code for beta release
-
- jrt 02/08/93 Sync with beta 0.12 release
-
- jrt 11/21/92 Sync with beta 0.0.8
-
- jrt 09/01/92 First logged revision.
-
- ════════════════════════════════════════════════════════════════════════════
- }
-
- Unit VSAL;
-
-
- Uses
-
- DOS,
- VTypes,
- VGen,
- ASPILow,
- HM;
-
- {────────────────────────────────────────────────────────────────────────────}
-
- Const
-
- cSalMethodHACMAN = 1;
- cSalMethodASPI = 2;
- cSalMethodSDLP = 3;
- cSalMethodCAM = 4;
- CSalMethodINT4B = 5;
-
- cSalMethodSySUI = 14;
-
- cSalGetPaddedName = 1;
-
- cSalDevNameIncType = 1;
- cSalDevNameIncInq = 2;
-
- cSalDevNameIncAll = 3;
-
- sSalDone = $0000;
-
- sSalGenFail = $FFFF;
-
-
- (*
-
- 0 ----- 0=NO I/O; 1=read, 2=write, 3=Target driven
- 1 ---/
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
-
- *)
-
- cSalxsNoIO = $0000;
- cSalxsRead = $0001;
- cSalxsWrite = $0002;
- cSalxsTDIO = $0003;
-
- sSalxsOK = $0100;
- sSalxsCheckDev = $0200;
- sSalxsBadIODir = $0300;
- sSalxsBadIOtmd = $0400;
- sSalxsBadIOhmd = $0500;
- sSalxsBadIOtld = $0600;
- sSalxsBadIOhld = $0700;
-
- sSalxsGenFail = $FF00;
-
- Type
-
- TCDB = Array[1..16] of BYTE;
-
- TError = WORD;
-
- TBusMapEntry = RECORD
-
- Method : BYTE;
- MainBus : BYTE;
- SubBus : BYTE;
-
- END;
-
- TSalInstance = RECORD
-
- Method : WORD;
-
- NumBus : BYTE;
-
- BusMap : Array[0..15] of TBusMapEntry;
-
- END;
-
- PSalInstance = ^TSalInstance;
-
- TSalHandle = PSalInstance;
-
- {------------------}
- { SAl General Caps }
- {------------------}
-
- TSalCaps = RECORD
-
- a : BYTE;
-
- END;
-
- PSalCaps = ^TSalCaps;
-
- {------------------------}
- { Method specific caps }
- {------------------------}
-
- TSalMethodCaps = RECORD
-
- b : BYTE;
-
- END;
-
- PSalMethodCaps = ^TSalMethodCaps;
-
- {────────────────────────────────────────────────────────────────────────────}
-
- {----------------------}
- { Init and informative }
- {----------------------}
-
- Procedure SAL_GetCaps( SalCaps : PSalCaps );
-
- Function SAL_CheckForMethod( Method : BYTE ) : BOOLEAN;
-
- Function SAL_Open( Flags : BYTE;
- MethodListStr : STRING ) :TSalHandle;
-
- Procedure SAL_Close( Handle : TSalHandle );
-
- Procedure SAL_GetMethodCaps( Handle : TSalHandle;
- SalMethodCaps : PSalMethodCaps );
-
- Function SAL_GetNumBus( Handle : TSalHandle ) :BYTE;
-
- {--------------------}
- { SAL ASCII Name Get }
- {--------------------}
-
- Function SAL_GetMethodName( Handle : TSalHandle;
- Flags : WORD ):ST80;
-
- Function SAL_GetBusName( Handle : TSalHandle;
- Flags : WORD;
- Bus : BYTE ) :ST80;
-
- Function SAL_GetDevName( Handle : TSalHandle;
- Flags : WORD;
- Bus : BYTE;
- Target : BYTE;
- Lun : BYTE ) :ST80;
-
- {--------------}
- { SAL SCSI I/O }
- {--------------}
-
- Function SAL_ExecSCSI( Handle : TSalHandle;
- Flags : WORD;
- Bus : BYTE;
- Target : BYTE;
- Lun : BYTE;
- CDBSize : BYTE;
- CDB : PCDB;
- IOSize : LONGINT;
- IOBuff : POINTER;
- ReqSenSize : LONGINT;
- ReqSenBuff : POINTER ) :TError;
-
- (*
- Function SAL_PostSCSI( Handle : TSalHandle;
- Flags : WORD;
- Bus : BYTE;
- Target : BYTE;
- Lun : BYTE;
- CDBSize : BYTE;
- CDB : PCDB;
- IOSize : LONGINT;
- IOBuff : POINTER;
- ReqSenSize : LONGINT;
- ReqSenBuff : POINTER;
- PostProc : POINTER ) :TError;
- *)
-
- Function SAL_ResetSCSIBus( Handle : TSalHandle;
- Flags : WORD;
- Bus : BYTE ) :TError;
-
- Function SAL_ResetSCSIDev( Handle : TSalHandle;
- Flags : WORD;
- Bus : BYTE ) :TError;
-
- {-----------------}
- { SAL CDB Loading }
- {-----------------}
-
- Procedure SAL_CDB6Load( CDB : PCDB;
- b1 : BYTE;
- b2 : BYTE;
- b3 : BYTE;
- b4 : BYTE;
- b5 : BYTE;
- b6 : BYTE );
-
- Procedure SAL_CDB10Load( CDB : PCDB;
- b1 : BYTE;
- b2 : BYTE;
- b3 : BYTE;
- b4 : BYTE;
- b5 : BYTE;
- b6 : BYTE;
- b7 : BYTE;
- b8 : BYTE;
- b9 : BYTE;
- b10 : BYTE );
-
- {────────────────────────────────────────────────────────────────────────────}
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Procedure SAL_GetCaps( SalCaps : PSalCaps );
-
- [PARAMETERS]
-
- SalCaps Pointer to ?
-
- [RETURNS]
-
- (None)
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function SAL_CheckForMethod( Method : BYTE ) : BOOLEAN;
-
- [PARAMETERS]
-
- Method ?
-
- [RETURNS]
-
- Whether the Method was ...
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function SAL_Open( Flags : BYTE;
- MethodListStr : STRING ) :TSalHandle;
-
- [PARAMETERS]
-
- Flags ?
- MethodListStr ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Procedure SAL_Close( Handle : TSalHandle );
-
- [PARAMETERS]
-
- Handle ?
-
- [RETURNS]
-
- (None)
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Procedure SAL_GetMethodCaps( Handle : TSalHandle;
- SalMethodCaps : PSalMethodCaps );
-
- [PARAMETERS]
-
- Handle ?
- SalMethodCaps Pointer to ?
-
- [RETURNS]
-
- (None)
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function SAL_GetNumBus( Handle : TSalHandle ) :BYTE;
-
- [PARAMETERS]
-
- Handle ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function SAL_GetMethodName( Handle : TSalHandle;
- Flags : WORD ):ST80;
-
- [PARAMETERS]
-
- Handle ?
- Flags ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function SAL_GetBusName( Handle : TSalHandle;
- Flags : WORD;
- Bus : BYTE ) :ST80;
-
- [PARAMETERS]
-
- Handle ?
- Flags ?
- Bus ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function SAL_GetDevName( Handle : TSalHandle;
- Flags : WORD;
- Bus : BYTE;
- Target : BYTE;
- Lun : BYTE ) :ST80;
-
- [PARAMETERS]
-
- Handle ?
- Flags ?
- Bus ?
- Target ?
- Lun ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function SAL_ExecSCSI( Handle : TSalHandle;
- Flags : WORD;
- Bus : BYTE;
- Target : BYTE;
- Lun : BYTE;
- CDBSize : BYTE;
- CDB : PCDB;
- IOSize : LONGINT;
- IOBuff : POINTER;
- ReqSenSize : LONGINT;
- ReqSenBuff : POINTER ) :TError;
-
- [PARAMETERS]
-
- Handle ?
- Flags ?
- Bus Device Host Adapter Number
- Target Device Target ID
- Lun Device Logical Unit Number
- CDBSize Number of Bytes in CDB
- CDB Pointer to CDB Data
- IOSize Number of Bytes to IO
- IOBuff Pointer to IO Data Buffer
- ReqSenSize Size of Request Sense Buffer
- ReqSenBuff Pointer to Request Sense Buffer
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function SAL_ResetSCSIBus( Handle : TSalHandle;
- Flags : WORD;
- Bus : BYTE ) :TError;
-
- [PARAMETERS]
-
- Handle ?
- Flags ?
- Bus ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function SAL_ResetSCSIDev( Handle : TSalHandle;
- Flags : WORD;
- Bus : BYTE ) :TError;
-
- [PARAMETERS]
-
- Handle ?
- Flags ?
- Bug ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Procedure SAL_CDB6Load( CDB : PCDB;
- b1 : BYTE;
- b2 : BYTE;
- b3 : BYTE;
- b4 : BYTE;
- b5 : BYTE;
- b6 : BYTE );
-
- [PARAMETERS]
-
- CDB Pointer to CDB Array
- b1 1st CDB Byte
- b2 2nd CDB Byte
- b3 3rd CDB Byte
- b4 4th CDB Byte
- b5 5th CDB Byte
- b6 6th CDB Byte
-
- [RETURNS]
-
- (None)
-
- [DESCRIPTION]
-
- Loads the CDB with the Parameter Bytes.
-
- [SEE-ALSO]
-
- SAL_CDB10Load
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Procedure SAL_CDB10Load( CDB : PCDB;
- b1 : BYTE;
- b2 : BYTE;
- b3 : BYTE;
- b4 : BYTE;
- b5 : BYTE;
- b6 : BYTE;
- b7 : BYTE;
- b8 : BYTE;
- b9 : BYTE;
- b10 : BYTE );
-
- [PARAMETERS]
-
- CDB Pointer to CDB Array
- b1 1st CDB Byte
- b2 2nd CDB Byte
- b3 3rd CDB Byte
- b4 4th CDB Byte
- b5 5th CDB Byte
- b6 6th CDB Byte
- b7 7th CDB Byte
- b8 8th CDB Byte
- b9 9th CDB Byte
- b10 10th CDB Byte
-
- [RETURNS]
-
- (None)
-
- [DESCRIPTION]
-
- Loads the CDB with the Parameter Bytes.
-
- [SEE-ALSO]
-
- SAL_CDB6Load
-
- [EXAMPLE]
-
-