sys7.1-doc-wip/Interfaces/PInterfaces/SCSI.p
2019-07-27 22:37:48 +08:00

141 lines
4.2 KiB
OpenEdge ABL

{
Created: Saturday, July 27, 1991 at 11:38 PM
SCSI.p
Pascal Interface to the Macintosh Libraries
Copyright Apple Computer, Inc. 1986-1991
All rights reserved
This file is used in these builds: Mac32 BigBang Sys606
Change History (most recent first):
<4> 7/31/91 JL Updated Copyright.
<3> 1/27/91 LN Checked in Database generate file from DSG.
<2> 10/3/90 JAL Added Inline Code.
To Do:
}
{$IFC UNDEFINED UsingIncludes}
{$SETC UsingIncludes := 0}
{$ENDC}
{$IFC NOT UsingIncludes}
UNIT SCSI;
INTERFACE
{$ENDC}
{$IFC UNDEFINED UsingSCSI}
{$SETC UsingSCSI := 1}
{$I+}
{$SETC SCSIIncludes := UsingIncludes}
{$SETC UsingIncludes := 1}
{$IFC UNDEFINED UsingTypes}
{$I $$Shell(PInterfaces)Types.p}
{$ENDC}
{$SETC UsingIncludes := SCSIIncludes}
CONST
scInc = 1;
scNoInc = 2;
scAdd = 3;
scMove = 4;
scLoop = 5;
scNop = 6;
scStop = 7;
scComp = 8;
scCommErr = 2; {communications error, operation timeout}
scArbNBErr = 3; {arbitration timeout waiting for not BSY}
scBadParmsErr = 4; {bad parameter or TIB opcode}
scPhaseErr = 5; {SCSI bus not in correct phase for attempted operation}
scCompareErr = 6; {data compare error}
scMgrBusyErr = 7; {SCSI Manager busy }
scSequenceErr = 8; {attempted operation is out of sequence}
scBusTOErr = 9; {CPU bus timeout}
scComplPhaseErr = 10; {SCSI bus wasn't in Status phase}
sbSIGWord = $4552;
pMapSIG = $504D;
TYPE
Block0 = PACKED RECORD
sbSig: INTEGER; {unique value for SCSI block 0}
sbBlkSize: INTEGER; {block size of device}
sbBlkCount: LONGINT; {number of blocks on device}
sbDevType: INTEGER; {device type}
sbDevId: INTEGER; {device id}
sbData: LONGINT; {not used}
sbDrvrCount: INTEGER; {driver descriptor count}
ddBlock: LONGINT; {1st driver's starting block}
ddSize: INTEGER; {size of 1st driver (512-byte blks)}
ddType: INTEGER; {system type (1 for Mac+)}
ddPad: ARRAY [0..242] OF INTEGER; {ARRAY[0..242] OF INTEGER; not used}
END;
Partition = PACKED RECORD
pmSig: INTEGER; {unique value for map entry blk}
pmSigPad: INTEGER; {currently unused}
pmMapBlkCnt: LONGINT; {# of blks in partition map}
pmPyPartStart: LONGINT; {physical start blk of partition}
pmPartBlkCnt: LONGINT; {# of blks in this partition}
pmPartName: PACKED ARRAY [0..31] OF CHAR; {ASCII partition name}
pmParType: PACKED ARRAY [0..31] OF CHAR; {ASCII partition type}
pmLgDataStart: LONGINT; {log. # of partition's 1st data blk}
pmDataCnt: LONGINT; {# of blks in partition's data area}
pmPartStatus: LONGINT; {bit field for partition status}
pmLgBootStart: LONGINT; {log. blk of partition's boot code}
pmBootSize: LONGINT; {number of bytes in boot code}
pmBootAddr: LONGINT; {memory load address of boot code}
pmBootAddr2: LONGINT; {currently unused}
pmBootEntry: LONGINT; {entry point of boot code}
pmBootEntry2: LONGINT; {currently unused}
pmBootCksum: LONGINT; {checksum of boot code}
pmProcessor: PACKED ARRAY [0..15] OF CHAR; {ASCII for the processor type}
pmPad: ARRAY [0..187] OF INTEGER; {512 bytes long currently unused}
END;
SCSIInstr = RECORD
scOpcode: INTEGER;
scParam1: LONGINT;
scParam2: LONGINT;
END;
FUNCTION SCSIReset: OSErr;
INLINE $4267,$A815;
FUNCTION SCSIGet: OSErr;
INLINE $3F3C,$0001,$A815;
FUNCTION SCSISelect(targetID: INTEGER): OSErr;
INLINE $3F3C,$0002,$A815;
FUNCTION SCSICmd(buffer: Ptr;count: INTEGER): OSErr;
INLINE $3F3C,$0003,$A815;
FUNCTION SCSIRead(tibPtr: Ptr): OSErr;
INLINE $3F3C,$0005,$A815;
FUNCTION SCSIRBlind(tibPtr: Ptr): OSErr;
INLINE $3F3C,$0008,$A815;
FUNCTION SCSIWrite(tibPtr: Ptr): OSErr;
INLINE $3F3C,$0006,$A815;
FUNCTION SCSIWBlind(tibPtr: Ptr): OSErr;
INLINE $3F3C,$0009,$A815;
FUNCTION SCSIComplete(VAR stat: INTEGER;VAR message: INTEGER;wait: LONGINT): OSErr;
INLINE $3F3C,$0004,$A815;
FUNCTION SCSIStat: INTEGER;
INLINE $3F3C,$000A,$A815;
FUNCTION SCSISelAtn(targetID: INTEGER): OSErr;
INLINE $3F3C,$000B,$A815;
FUNCTION SCSIMsgIn(VAR message: INTEGER): OSErr;
INLINE $3F3C,$000C,$A815;
FUNCTION SCSIMsgOut(message: INTEGER): OSErr;
INLINE $3F3C,$000D,$A815;
{$ENDC} { UsingSCSI }
{$IFC NOT UsingIncludes}
END.
{$ENDC}