|##########| |#MAGIC #|EGFFEDEL |#PROJECT #|"" |#PATHS #|"StdProject" |#FLAGS #|xx---x--x---x-x----------------- |#USERSW #|-------------------------------- |#USERMASK#|-------------------------------- |#SWITCHES#|xx---xxxxx------ |##########| DEFINITION MODULE System; (* $A- *) TYPE SHORTSET = SET OF [0..7]; BITSET = SET OF [0..15]; LONGSET = SET OF [0..31]; BPTR = BCPLPTR TO SHORTINT; STRINGPTR = POINTER TO ARRAY OF CHAR; PROC = PROCEDURE; SysStringPtr= POINTER TO ARRAY OF CHAR; SysWbMsg = HIDDEN; SysTask = HIDDEN; Register = (D0,D1,D2,D3,D4,D5,D6,D7, A0,A1,A2,A3,A4,A5,A6,A7, FP0,FP1,FP2,FP3,FP4,FP5,FP6,FP7); RegSet = SET OF Register; Equation = (smaller,equal,greater); SysInfo = RECORD linkTime : RECORD days, minute, tick : LONGINT; END; initA4 : ANYPTR END; CONST GlobalBase = A4; LibraryBase = A6; StackPtr = A7; GROUP Regs = RegSet,Register,GlobalBase,LibraryBase,StackPtr; VAR CloseProc : PROC; OldGuru : PROC; StartStack : ANYPTR; GuruId : LONGINT; CLIParamPtr : STRINGPTR; CLIParamLen : LONGINT; WBStartupMsg : SysWbMsg; OwnTask : SysTask; GuruPosition : ANYPTR; OldExcept : PROC; OldSigs : LONGSET; CtrlC : BOOLEAN; HeapStart, LastHeap : ANYPTR; HeapSize : LONGINT; HeapStackPtr : RECORD pos : ANYPTR; len : INTEGER END; LowerStack : ANYPTR; OldExceptData : ANYPTR; OldTrapData : ANYPTR; LocalLength : LONGINT; CtrlCFlag : BOOLEAN; OwnLibBase : RECORD succ, pred : ANYPTR; type : SHORTCARD; pri : SHORTINT; name : SysStringPtr; flags : SHORTSET; pad : SHORTCARD; negSize, posSize : CARDINAL; version, revision : CARDINAL; idString : SysStringPtr; sum : LONGINT; openCnt : INTEGER END; SegList : ANYPTR; CloseGuruPos : ANYPTR; CloseGuruId : LONGINT; CallStack : ANYPTR; OwnStack : ANYPTR; LibInstalled : BOOLEAN; GROUP All = SHORTSET,BITSET,LONGSET,BPTR,STRINGPTR,PROC,SysStringPtr, SysWbMsg,SysTask,Register,RegSet,GlobalBase,LibraryBase, StackPtr,CloseProc,OldGuru,StartStack,GuruId,CLIParamPtr, CLIParamLen,WBStartupMsg,OwnTask,GuruPosition,OldExcept, OldSigs,CtrlC,HeapStart,LastHeap,HeapSize,HeapStackPtr, LowerStack; (* Nicht aufrufen, da Rückgabewert nicht stimmt !!! *) PROCEDURE MULU32(x IN D0,y IN D1 : LONGINT):LONGINT; (* 02 *) PROCEDURE MULS32(x IN D0,y IN D1 : LONGINT):LONGINT; (* 03 *) PROCEDURE DIVU32(x IN D0,y IN D1 : LONGINT):LONGINT; (* 04 *) PROCEDURE DIVS32(x IN D0,y IN D1 : LONGINT):LONGINT; (* 05 *) PROCEDURE MODU32(x IN D0,y IN D1 : LONGINT):LONGINT; (* 06 *) PROCEDURE MODS32(x IN D0,y IN D1 : LONGINT):LONGINT; (* 07 *) (* auf keinen Fall aufrufen, sicherer Tod !!! *) PROCEDURE Guru; (* 08 *) (* Nicht aufrufen, da automatisch aufgerufen wird *) PROCEDURE RealToLong(val IN D0 : REAL):LONGREAL; (* 09 *) PROCEDURE LongToReal(high IN D0,low IN D1 : LONGINT):REAL (* 10 *) (* nicht aufrufen, sicherer Tod !!! *) PROCEDURE SignalCtrlC; (* 11 *) (* Bricht das Programm an der aktuellen Position ab, * Rückgabewert ist Err, bei negativem Err wird dieses als * Zeiger auf eine Fehlermeldung gedeutet. * * Besser die Standartproceduren aufrufen !!! *) PROCEDURE HALT(Err IN D0 : LONGINT); (* 12 *) PROCEDURE HALT_CALL(Err IN D0 : LONGINT); (* 13 *) PROCEDURE HALT_CALL_LOCAL(Err IN D0 : LONGINT); (* 14 *) PROCEDURE HALT_CALL_ENTRY(Err IN D0 : LONGINT); (* 15 *) (* Proceduren zur Heapverwaltung, besser nicht aufrufen *) PROCEDURE InitHeap; (* 16 *) PROCEDURE DisposeHeap; (* 17 *) (* Procedure um Heapspeicher zu Allozieren *) (* $P- *) PROCEDURE AllocHeap(Size IN D0 : LONGINT):ANYPTR; (* 18 *) (* Proceduren für die Cardinalität einer Menge, sollten nicht * aufgerufen werden, da sie automatisch aufgerufen werden. *) PROCEDURE ShortCardinal(Set IN D0 : SHORTSET):LONGINT; (* 19 *) PROCEDURE WordCardinal(Set IN D0 : BITSET):LONGINT; (* 20 *) PROCEDURE LongCardinal(Set IN D0 : LONGSET):LONGINT; (* 21 *) PROCEDURE StackCheck(Need IN D0 : INTEGER); (* 22 *) PROCEDURE CheckBreak; (* 23 *) PROCEDURE EndBEGIN; (* 24 *) CONST SystemInfo = SysInfo; (* 25 *) PROCEDURE AddExceptHandler(pos IN A0 : ANYPTR); (* 26 *) PROCEDURE RemExcept; (* 27 *) PROCEDURE RaiseAgain; (* 28 *) PROCEDURE ExceptHandler; (* 29 *) PROCEDURE DeferredMethod; (* 30 *) PROCEDURE PutTagData(tagList IN A0 : ANYPTR; (* 31 *) value IN D0 : LONGINT; tag IN D1 : LONGINT); PROCEDURE GetTagData(tagList IN A0 : ANYPTR; (* 32 *) value IN D0 : LONGINT; tag IN D1 : LONGINT):LONGINT; PROCEDURE IClose; (* 33 *) END System.