mirror of
https://github.com/elliotnunn/supermario.git
synced 2025-02-20 10:28:57 +00:00
130 lines
4.8 KiB
OpenEdge ABL
130 lines
4.8 KiB
OpenEdge ABL
{
|
|
Created: Sunday, January 6, 1991 at 11:14 PM
|
|
SCSI.p
|
|
Pascal Interface to the Macintosh Libraries
|
|
|
|
Copyright Apple Computer, Inc. 1986-1990
|
|
All rights reserved
|
|
}
|
|
|
|
|
|
{$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}
|
|
|