mirror of
https://github.com/elliotnunn/supermario.git
synced 2025-02-20 10:28:57 +00:00
380 lines
9.9 KiB
OpenEdge ABL
380 lines
9.9 KiB
OpenEdge ABL
{
|
|
Created: Sunday, January 6, 1991 at 10:51 PM
|
|
OSUtils.p
|
|
Pascal Interface to the Macintosh Libraries
|
|
|
|
Copyright Apple Computer, Inc. 1985-1990
|
|
All rights reserved
|
|
}
|
|
|
|
|
|
{$IFC UNDEFINED UsingIncludes}
|
|
{$SETC UsingIncludes := 0}
|
|
{$ENDC}
|
|
|
|
{$IFC NOT UsingIncludes}
|
|
UNIT OSUtils;
|
|
INTERFACE
|
|
{$ENDC}
|
|
|
|
{$IFC UNDEFINED UsingOSUtils}
|
|
{$SETC UsingOSUtils := 1}
|
|
|
|
{$I+}
|
|
{$SETC OSUtilsIncludes := UsingIncludes}
|
|
{$SETC UsingIncludes := 1}
|
|
{$IFC UNDEFINED UsingTypes}
|
|
{$I $$Shell(PInterfaces)Types.p}
|
|
{$ENDC}
|
|
{$SETC UsingIncludes := OSUtilsIncludes}
|
|
|
|
CONST
|
|
useFree = 0;
|
|
useATalk = 1;
|
|
useAsync = 2;
|
|
useExtClk = 3; {Externally clocked}
|
|
useMIDI = 4;
|
|
|
|
{*** Environs Equates ***}
|
|
curSysEnvVers = 2; {Updated to equal latest SysEnvirons version}
|
|
|
|
{ Machine Types }
|
|
envMac = -1;
|
|
envXL = -2;
|
|
envMachUnknown = 0;
|
|
env512KE = 1;
|
|
envMacPlus = 2;
|
|
envSE = 3;
|
|
envMacII = 4;
|
|
envMacIIx = 5;
|
|
envMacIIcx = 6;
|
|
envSE30 = 7;
|
|
envPortable = 8;
|
|
envMacIIci = 9;
|
|
envMacIIfx = 11;
|
|
|
|
{ CPU types }
|
|
envCPUUnknown = 0;
|
|
env68000 = 1;
|
|
env68010 = 2;
|
|
env68020 = 3;
|
|
env68030 = 4;
|
|
env68040 = 5;
|
|
|
|
{ Keyboard types }
|
|
envUnknownKbd = 0;
|
|
envMacKbd = 1;
|
|
envMacAndPad = 2;
|
|
envMacPlusKbd = 3;
|
|
envAExtendKbd = 4;
|
|
envStandADBKbd = 5;
|
|
envPrtblADBKbd = 6;
|
|
envPrtblISOKbd = 7;
|
|
envStdISOADBKbd = 8;
|
|
envExtISOADBKbd = 9;
|
|
false32b = 0; {24 bit addressing error}
|
|
true32b = 1; {32 bit addressing error}
|
|
|
|
{ result types for RelString Call }
|
|
sortsBefore = -1; {first string < second string}
|
|
sortsEqual = 0; {first string = second string}
|
|
sortsAfter = 1; {first string > second string}
|
|
|
|
TYPE
|
|
QTypes = (dummyType,vType,ioQType,drvQType,evType,fsQType,sIQType,dtQType);
|
|
|
|
TrapType = (OSTrap,ToolTrap);
|
|
|
|
ParamBlkType = (IOParam,FileParam,VolumeParam,CntrlParam,SlotDevParam,MultiDevParam,
|
|
AccessParam,ObjParam,CopyParam,WDParam,FIDParam,CSParam,ForeignPrivParam);
|
|
|
|
|
|
SysPPtr = ^SysParmType;
|
|
SysParmType = PACKED RECORD
|
|
valid: Byte;
|
|
aTalkA: Byte;
|
|
aTalkB: Byte;
|
|
config: Byte;
|
|
portA: INTEGER;
|
|
portB: INTEGER;
|
|
alarm: LONGINT;
|
|
font: INTEGER;
|
|
kbdPrint: INTEGER;
|
|
volClik: INTEGER;
|
|
misc: INTEGER;
|
|
END;
|
|
|
|
{QElemPtr = ^QElem;}
|
|
|
|
QElemPtr = ^QElem;
|
|
|
|
FInfo = RECORD
|
|
fdType: OSType; {the type of the file}
|
|
fdCreator: OSType; {file's creator}
|
|
fdFlags: INTEGER; {flags ex. hasbundle,invisible,locked, etc.}
|
|
fdLocation: Point; {file's location in folder}
|
|
fdFldr: INTEGER; {folder containing file}
|
|
END;
|
|
|
|
VCB = RECORD
|
|
qLink: QElemPtr;
|
|
qType: INTEGER;
|
|
vcbFlags: INTEGER;
|
|
vcbSigWord: INTEGER;
|
|
vcbCrDate: LONGINT;
|
|
vcbLsMod: LONGINT;
|
|
vcbAtrb: INTEGER;
|
|
vcbNmFls: INTEGER;
|
|
vcbVBMSt: INTEGER;
|
|
vcbAllocPtr: INTEGER;
|
|
vcbNmAlBlks: INTEGER;
|
|
vcbAlBlkSiz: LONGINT;
|
|
vcbClpSiz: LONGINT;
|
|
vcbAlBlSt: INTEGER;
|
|
vcbNxtCNID: LONGINT;
|
|
vcbFreeBks: INTEGER;
|
|
vcbVN: Str27;
|
|
vcbDrvNum: INTEGER;
|
|
vcbDRefNum: INTEGER;
|
|
vcbFSID: INTEGER;
|
|
vcbVRefNum: INTEGER;
|
|
vcbMAdr: Ptr;
|
|
vcbBufAdr: Ptr;
|
|
vcbMLen: INTEGER;
|
|
vcbDirIndex: INTEGER;
|
|
vcbDirBlk: INTEGER;
|
|
vcbVolBkUp: LONGINT;
|
|
vcbVSeqNum: INTEGER;
|
|
vcbWrCnt: LONGINT;
|
|
vcbXTClpSiz: LONGINT;
|
|
vcbCTClpSiz: LONGINT;
|
|
vcbNmRtDirs: INTEGER;
|
|
vcbFilCnt: LONGINT;
|
|
vcbDirCnt: LONGINT;
|
|
vcbFndrInfo: ARRAY [1..8] OF LONGINT;
|
|
vcbVCSize: INTEGER;
|
|
vcbVBMCSiz: INTEGER;
|
|
vcbCtlCSiz: INTEGER;
|
|
vcbXTAlBlks: INTEGER;
|
|
vcbCTAlBlks: INTEGER;
|
|
vcbXTRef: INTEGER;
|
|
vcbCTRef: INTEGER;
|
|
vcbCtlBuf: Ptr;
|
|
vcbDirIDM: LONGINT;
|
|
vcbOffsM: INTEGER;
|
|
END;
|
|
|
|
DrvQElPtr = ^DrvQEl;
|
|
DrvQEl = RECORD
|
|
qLink: QElemPtr;
|
|
qType: INTEGER;
|
|
dQDrive: INTEGER;
|
|
dQRefNum: INTEGER;
|
|
dQFSID: INTEGER;
|
|
dQDrvSz: INTEGER;
|
|
dQDrvSz2: INTEGER;
|
|
END;
|
|
|
|
ParmBlkPtr = ^ParamBlockRec;
|
|
ParamBlockRec = RECORD
|
|
qLink: QElemPtr;
|
|
qType: INTEGER;
|
|
ioTrap: INTEGER;
|
|
ioCmdAddr: Ptr;
|
|
ioCompletion: ProcPtr;
|
|
ioResult: OSErr;
|
|
ioNamePtr: StringPtr;
|
|
ioVRefNum: INTEGER;
|
|
CASE ParamBlkType OF
|
|
IOParam:
|
|
(ioRefNum: INTEGER;
|
|
ioVersNum: SignedByte;
|
|
ioPermssn: SignedByte;
|
|
ioMisc: Ptr;
|
|
ioBuffer: Ptr;
|
|
ioReqCount: LONGINT;
|
|
ioActCount: LONGINT;
|
|
ioPosMode: INTEGER;
|
|
ioPosOffset: LONGINT);
|
|
FileParam:
|
|
(ioFRefNum: INTEGER;
|
|
ioFVersNum: SignedByte;
|
|
filler1: SignedByte;
|
|
ioFDirIndex: INTEGER;
|
|
ioFlAttrib: SignedByte;
|
|
ioFlVersNum: SignedByte;
|
|
ioFlFndrInfo: FInfo;
|
|
ioFlNum: LONGINT;
|
|
ioFlStBlk: INTEGER;
|
|
ioFlLgLen: LONGINT;
|
|
ioFlPyLen: LONGINT;
|
|
ioFlRStBlk: INTEGER;
|
|
ioFlRLgLen: LONGINT;
|
|
ioFlRPyLen: LONGINT;
|
|
ioFlCrDat: LONGINT;
|
|
ioFlMdDat: LONGINT);
|
|
VolumeParam:
|
|
(filler2: LONGINT;
|
|
ioVolIndex: INTEGER;
|
|
ioVCrDate: LONGINT;
|
|
ioVLsBkUp: LONGINT;
|
|
ioVAtrb: INTEGER;
|
|
ioVNmFls: INTEGER;
|
|
ioVDirSt: INTEGER;
|
|
ioVBlLn: INTEGER;
|
|
ioVNmAlBlks: INTEGER;
|
|
ioVAlBlkSiz: LONGINT;
|
|
ioVClpSiz: LONGINT;
|
|
ioAlBlSt: INTEGER;
|
|
ioVNxtFNum: LONGINT;
|
|
ioVFrBlk: INTEGER);
|
|
CntrlParam:
|
|
(ioCRefNum: INTEGER;
|
|
csCode: INTEGER;
|
|
csParam: ARRAY [0..10] OF INTEGER);
|
|
SlotDevParam:
|
|
(filler3: LONGINT;
|
|
ioMix: Ptr;
|
|
ioFlags: INTEGER;
|
|
ioSlot: SignedByte;
|
|
ioID: SignedByte);
|
|
MultiDevParam:
|
|
(filler4: LONGINT;
|
|
ioMMix: Ptr;
|
|
ioMFlags: INTEGER;
|
|
ioSEBlkPtr: Ptr);
|
|
END;
|
|
|
|
EvQElPtr = ^EvQEl;
|
|
EvQEl = RECORD
|
|
qLink: QElemPtr;
|
|
qType: INTEGER;
|
|
evtQWhat: INTEGER; {this part is identical to the EventRecord as...}
|
|
evtQMessage: LONGINT; {defined in ToolIntf}
|
|
evtQWhen: LONGINT;
|
|
evtQWhere: Point;
|
|
evtQModifiers: INTEGER;
|
|
END;
|
|
|
|
VBLTask = RECORD
|
|
qLink: QElemPtr;
|
|
qType: INTEGER;
|
|
vblAddr: ProcPtr;
|
|
vblCount: INTEGER;
|
|
vblPhase: INTEGER;
|
|
END;
|
|
|
|
DeferredTask = RECORD
|
|
qLink: QElemPtr; {next queue entry}
|
|
qType: INTEGER; {queue type}
|
|
dtFlags: INTEGER; {reserved}
|
|
dtAddr: ProcPtr; {pointer to task}
|
|
dtParm: LONGINT; {optional parameter}
|
|
dtReserved: LONGINT; {reserved--should be 0}
|
|
END;
|
|
|
|
QElem = RECORD
|
|
CASE QTypes OF
|
|
dtQType:
|
|
(dtQElem: DeferredTask); {deferred}
|
|
vType:
|
|
(vblQElem: VBLTask); {vertical blanking}
|
|
ioQType:
|
|
(ioQElem: ParamBlockRec); {I/O parameter block}
|
|
drvQType:
|
|
(drvQElem: DrvQEl); {drive}
|
|
evType:
|
|
(evQElem: EvQEl); {event}
|
|
fsQType:
|
|
(vcbQElem: VCB); {volume control block}
|
|
END;
|
|
|
|
QHdrPtr = ^QHdr;
|
|
QHdr = RECORD
|
|
qFlags: INTEGER;
|
|
qHead: QElemPtr;
|
|
qTail: QElemPtr;
|
|
END;
|
|
|
|
DateTimeRec = RECORD
|
|
year: INTEGER;
|
|
month: INTEGER;
|
|
day: INTEGER;
|
|
hour: INTEGER;
|
|
minute: INTEGER;
|
|
second: INTEGER;
|
|
dayOfWeek: INTEGER;
|
|
END;
|
|
|
|
SysEnvRec = RECORD
|
|
environsVersion: INTEGER;
|
|
machineType: INTEGER;
|
|
systemVersion: INTEGER;
|
|
processor: INTEGER;
|
|
hasFPU: BOOLEAN;
|
|
hasColorQD: BOOLEAN;
|
|
keyBoardType: INTEGER;
|
|
atDrvrVersNum: INTEGER;
|
|
sysVRefNum: INTEGER;
|
|
END;
|
|
|
|
|
|
FUNCTION GetSysPPtr: SysPPtr;
|
|
INLINE $2EBC,$0000,$01F8;
|
|
PROCEDURE SysBeep(duration: INTEGER);
|
|
INLINE $A9C8;
|
|
FUNCTION KeyTrans(transData: Ptr;keycode: INTEGER;VAR state: LONGINT): LONGINT;
|
|
INLINE $A9C3;
|
|
FUNCTION DTInstall(dtTaskPtr: QElemPtr): OSErr;
|
|
FUNCTION GetMMUMode: SignedByte;
|
|
PROCEDURE SwapMMUMode(VAR mode: SignedByte);
|
|
FUNCTION SysEnvirons(versionRequested: INTEGER;VAR theWorld: SysEnvRec): OSErr;
|
|
FUNCTION ReadDateTime(VAR time: LONGINT): OSErr;
|
|
PROCEDURE GetDateTime(VAR secs: LONGINT);
|
|
FUNCTION SetDateTime(time: LONGINT): OSErr;
|
|
PROCEDURE SetTime(d: DateTimeRec);
|
|
PROCEDURE GetTime(VAR d: DateTimeRec);
|
|
PROCEDURE Date2Secs(d: DateTimeRec;VAR secs: LONGINT);
|
|
PROCEDURE Secs2Date(secs: LONGINT;VAR d: DateTimeRec);
|
|
PROCEDURE Delay(numTicks: LONGINT;VAR finalTicks: LONGINT);
|
|
FUNCTION GetTrapAddress(trapNum: INTEGER): LONGINT;
|
|
PROCEDURE SetTrapAddress(trapAddr: LONGINT;trapNum: INTEGER);
|
|
FUNCTION NGetTrapAddress(trapNum: INTEGER;tTyp: TrapType): LONGINT;
|
|
PROCEDURE NSetTrapAddress(trapAddr: LONGINT;trapNum: INTEGER;tTyp: TrapType);
|
|
FUNCTION GetOSTrapAddress(trapNum: INTEGER): LONGINT;
|
|
PROCEDURE SetOSTrapAddress(trapAddr: LONGINT;trapNum: INTEGER);
|
|
FUNCTION GetToolTrapAddress(trapNum: INTEGER): LONGINT;
|
|
PROCEDURE SetToolTrapAddress(trapAddr: LONGINT;trapNum: INTEGER);
|
|
FUNCTION GetToolboxTrapAddress(trapNum: INTEGER): LONGINT;
|
|
PROCEDURE SetToolboxTrapAddress(trapAddr: LONGINT;trapNum: INTEGER);
|
|
FUNCTION WriteParam: OSErr;
|
|
FUNCTION EqualString(str1: Str255;str2: Str255;caseSens: BOOLEAN;diacSens: BOOLEAN): BOOLEAN;
|
|
PROCEDURE UprString(VAR theString: Str255;diacSens: BOOLEAN);
|
|
PROCEDURE Enqueue(qElement: QElemPtr;qHeader: QHdrPtr);
|
|
FUNCTION Dequeue(qElement: QElemPtr;qHeader: QHdrPtr): OSErr;
|
|
FUNCTION SetCurrentA5: LONGINT;
|
|
INLINE $2E8D,$2A78,$0904;
|
|
FUNCTION SetA5(newA5: LONGINT): LONGINT;
|
|
INLINE $2F4D,$0004,$2A5F;
|
|
PROCEDURE Environs(VAR rom: INTEGER;VAR machine: INTEGER);
|
|
FUNCTION RelString(str1: Str255;str2: Str255;caseSens: BOOLEAN;diacSens: BOOLEAN): INTEGER;
|
|
FUNCTION HandToHand(VAR theHndl: Handle): OSErr;
|
|
FUNCTION PtrToXHand(srcPtr: Ptr;dstHndl: Handle;size: LONGINT): OSErr;
|
|
FUNCTION PtrToHand(srcPtr: Ptr;VAR dstHndl: Handle;size: LONGINT): OSErr;
|
|
FUNCTION HandAndHand(hand1: Handle;hand2: Handle): OSErr;
|
|
FUNCTION PtrAndHand(ptr1: Ptr;hand2: Handle;size: LONGINT): OSErr;
|
|
FUNCTION InitUtil: OSErr;
|
|
INLINE $A03F,$3E80;
|
|
FUNCTION SwapInstructionCache(cacheEnable: BOOLEAN): BOOLEAN;
|
|
PROCEDURE FlushInstructionCache;
|
|
FUNCTION SwapDataCache(cacheEnable: BOOLEAN): BOOLEAN;
|
|
PROCEDURE FlushDataCache;
|
|
|
|
|
|
{$ENDC} { UsingOSUtils }
|
|
|
|
{$IFC NOT UsingIncludes}
|
|
END.
|
|
{$ENDC}
|
|
|