mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-05 23:22:25 +00:00
Fix Platform initialisation, move common Arg handling code from Platfrom to Modules.
This commit is contained in:
parent
aed9134e99
commit
299b0636ad
9 changed files with 99 additions and 162 deletions
|
|
@ -4,7 +4,7 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
|
|||
31.1.2007 jt synchronized with BlackBox version, in particular PromoteIntConstToLInt added
|
||||
*)
|
||||
|
||||
IMPORT SYSTEM, Texts, Files, Platform, Out, Configuration, VT100, Strings;
|
||||
IMPORT SYSTEM, Texts, Files, Platform, Modules, Out, Configuration, VT100, Strings;
|
||||
|
||||
CONST
|
||||
OptionChar* = "-";
|
||||
|
|
@ -233,7 +233,7 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
|
|||
PROCEDURE OpenPar*(): BOOLEAN; (* prepare for a sequence of translations *)
|
||||
VAR s: ARRAY 256 OF CHAR;
|
||||
BEGIN
|
||||
IF Platform.ArgCount = 1 THEN
|
||||
IF Modules.ArgCount = 1 THEN
|
||||
LogWLn;
|
||||
LogWStr("Oberon-2 compiler v"); LogWStr(Configuration.versionLong); LogW("."); LogWLn;
|
||||
LogWStr("Based on Ofront by J. Templ and Software Templ OEG."); LogWLn;
|
||||
|
|
@ -290,10 +290,10 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
|
|||
Options := {inxchk, typchk, ptrinit, assert}; (* Default options *)
|
||||
|
||||
(* Pick up global option changes from start of command line *)
|
||||
S:=1; s:=""; Platform.GetArg(S, s);
|
||||
S:=1; s:=""; Modules.GetArg(S, s);
|
||||
WHILE s[0] = OptionChar DO
|
||||
ScanOptions(s);
|
||||
INC(S); s:=""; Platform.GetArg(S, s)
|
||||
INC(S); s:=""; Modules.GetArg(S, s)
|
||||
END;
|
||||
|
||||
(* Record global option settings for this command line *)
|
||||
|
|
@ -328,10 +328,10 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
|
|||
BEGIN
|
||||
Options := GlobalOptions; Model:=GlobalModel; Alignment := GlobalAlignment; AddressSize := GlobalAddressSize;
|
||||
|
||||
s:=""; Platform.GetArg(S, s);
|
||||
s:=""; Modules.GetArg(S, s);
|
||||
WHILE s[0] = OptionChar DO
|
||||
ScanOptions(s);
|
||||
INC(S); s:=""; Platform.GetArg(S, s)
|
||||
INC(S); s:=""; Modules.GetArg(S, s)
|
||||
END;
|
||||
|
||||
IF mainlinkstat IN Options THEN INCL(Options, mainprog) END;
|
||||
|
|
@ -369,9 +369,9 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
|
|||
BEGIN
|
||||
done := FALSE;
|
||||
curpos := 0;
|
||||
IF S >= Platform.ArgCount THEN RETURN END ;
|
||||
IF S >= Modules.ArgCount THEN RETURN END ;
|
||||
|
||||
s:=""; Platform.GetArg(S, s);
|
||||
s:=""; Modules.GetArg(S, s);
|
||||
|
||||
NEW(T); Texts.Open(T, s);
|
||||
LogWStr(s); LogWStr(" ");
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ MODULE Args; (* jt, 8.12.94 *)
|
|||
(* command line argument handling for voc (jet backend) *)
|
||||
|
||||
|
||||
IMPORT Platform, SYSTEM;
|
||||
IMPORT Platform, Modules, SYSTEM;
|
||||
|
||||
TYPE
|
||||
ArgPtr = POINTER TO ARRAY 1024 OF CHAR;
|
||||
|
|
@ -14,9 +14,9 @@ MODULE Args; (* jt, 8.12.94 *)
|
|||
argv-: SYSTEM.ADDRESS;
|
||||
|
||||
|
||||
PROCEDURE Get* (n: INTEGER; VAR val: ARRAY OF CHAR); BEGIN Platform.GetArg(n, val) END Get;
|
||||
PROCEDURE GetInt*(n: INTEGER; VAR val: LONGINT); BEGIN Platform.GetIntArg(n, val) END GetInt;
|
||||
PROCEDURE Pos* (s: ARRAY OF CHAR): INTEGER; BEGIN RETURN Platform.ArgPos(s) END Pos;
|
||||
PROCEDURE Get* (n: INTEGER; VAR val: ARRAY OF CHAR); BEGIN Modules.GetArg(n, val) END Get;
|
||||
PROCEDURE GetInt*(n: INTEGER; VAR val: LONGINT); BEGIN Modules.GetIntArg(n, val) END GetInt;
|
||||
PROCEDURE Pos* (s: ARRAY OF CHAR): INTEGER; BEGIN RETURN Modules.ArgPos(s) END Pos;
|
||||
|
||||
PROCEDURE GetEnv*(var: ARRAY OF CHAR; VAR val: ARRAY OF CHAR);
|
||||
BEGIN Platform.GetEnv(var, val) END GetEnv;
|
||||
|
|
@ -26,6 +26,6 @@ BEGIN RETURN Platform.getEnv(var, val) END getEnv;
|
|||
|
||||
|
||||
BEGIN
|
||||
argc := Platform.ArgCount;
|
||||
argv := Platform.ArgVector;
|
||||
argc := Modules.ArgCount;
|
||||
argv := Modules.ArgVector;
|
||||
END Args.
|
||||
|
|
|
|||
|
|
@ -495,8 +495,8 @@ MODULE Heap;
|
|||
END
|
||||
END FINALL;
|
||||
|
||||
PROCEDURE -ExternMainStackFrame "extern ADDRESS Platform_MainStackFrame;";
|
||||
PROCEDURE -PlatformMainStackFrame(): S.ADDRESS "Platform_MainStackFrame";
|
||||
PROCEDURE -ExternMainStackFrame "extern ADDRESS Modules_MainStackFrame;";
|
||||
PROCEDURE -ModulesMainStackFrame(): S.ADDRESS "Modules_MainStackFrame";
|
||||
|
||||
PROCEDURE MarkStack(n: S.ADDRESS; VAR cand: ARRAY OF S.ADDRESS);
|
||||
VAR
|
||||
|
|
@ -510,7 +510,7 @@ MODULE Heap;
|
|||
END ;
|
||||
IF n = 0 THEN
|
||||
nofcand := 0; sp := S.ADR(frame);
|
||||
stack0 := PlatformMainStackFrame();
|
||||
stack0 := ModulesMainStackFrame();
|
||||
(* check for minimum alignment of pointers *)
|
||||
inc := S.ADR(align.p) - S.ADR(align);
|
||||
IF sp > stack0 THEN inc := -inc END ;
|
||||
|
|
@ -572,8 +572,8 @@ MODULE Heap;
|
|||
END RegisterFinalizer;
|
||||
|
||||
|
||||
PROCEDURE -ExternHeapInit "extern void *Heap__init();";
|
||||
PROCEDURE -HeapModuleInit 'Heap__init()';
|
||||
PROCEDURE -ExternHeapInit "extern void *Heap__init();";
|
||||
PROCEDURE -HeapModuleInit 'Heap__init()';
|
||||
|
||||
PROCEDURE InitHeap*;
|
||||
(* InitHeap is called by Platform.init before any module bodies have been
|
||||
|
|
@ -596,7 +596,7 @@ PROCEDURE -HeapModuleInit 'Heap__init()';
|
|||
|
||||
FileCount := 0;
|
||||
modules := NIL;
|
||||
bigBlocks := 0;
|
||||
bigBlocks := 0;
|
||||
fin := NIL;
|
||||
interrupted := FALSE;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ MODULE Modules; (* jt 6.1.96 *)
|
|||
(* access to list of modules and commands, based on ETH Oberon *)
|
||||
|
||||
|
||||
IMPORT SYSTEM, Heap, Platform;
|
||||
IMPORT SYSTEM, Platform, Heap; (* Note, must import Platform before Heap *)
|
||||
|
||||
CONST
|
||||
ModNameLen* = 20;
|
||||
|
|
@ -35,6 +35,66 @@ MODULE Modules; (* jt 6.1.96 *)
|
|||
resMsg*: ARRAY 256 OF CHAR;
|
||||
imported*, importing*: ModuleName;
|
||||
|
||||
MainStackFrame-: SYSTEM.ADDRESS;
|
||||
ArgCount-: INTEGER;
|
||||
ArgVector-: SYSTEM.ADDRESS;
|
||||
|
||||
|
||||
(* Program startup *)
|
||||
|
||||
PROCEDURE -ExternInitHeap "extern void Heap_InitHeap();";
|
||||
PROCEDURE -InitHeap "Heap_InitHeap()";
|
||||
PROCEDURE -ExternInitModulesInit "extern void *Modules__init(void);";
|
||||
PROCEDURE -ModulesInit() "Modules__init()";
|
||||
|
||||
PROCEDURE Init*(argc: SYSTEM.INT32; argvadr: SYSTEM.ADDRESS);
|
||||
(* This start code is called by the __INIT macro generated by the compiler
|
||||
as the C main program. *)
|
||||
TYPE ArgVecPtr = POINTER TO ARRAY 1 OF SYSTEM.ADDRESS;
|
||||
VAR av: ArgVecPtr;
|
||||
BEGIN
|
||||
MainStackFrame := argvadr;
|
||||
ArgCount := SYSTEM.VAL(INTEGER, argc);
|
||||
av := SYSTEM.VAL(ArgVecPtr, argvadr);
|
||||
ArgVector := av[0];
|
||||
|
||||
InitHeap; (* Initailse heap varaibles neded for compiler generated *__inits *)
|
||||
ModulesInit(); (* Our own __init code will run the Platform and Heap __init code. *)
|
||||
END Init;
|
||||
|
||||
|
||||
PROCEDURE GetArg*(n: INTEGER; VAR val: ARRAY OF CHAR);
|
||||
TYPE
|
||||
ArgPtr = POINTER TO ARRAY 1024 OF CHAR;
|
||||
ArgVec = POINTER TO ARRAY 1024 OF ArgPtr;
|
||||
VAR av: ArgVec;
|
||||
BEGIN
|
||||
IF n < ArgCount THEN
|
||||
av := SYSTEM.VAL(ArgVec, ArgVector);
|
||||
COPY(av[n]^, val)
|
||||
END
|
||||
END GetArg;
|
||||
|
||||
PROCEDURE GetIntArg*(n: INTEGER; VAR val: LONGINT);
|
||||
VAR s: ARRAY 64 OF CHAR; k, d, i: LONGINT;
|
||||
BEGIN
|
||||
s := ""; GetArg(n, s); i := 0;
|
||||
IF s[0] = "-" THEN i := 1 END ;
|
||||
k := 0; d := ORD(s[i]) - ORD("0");
|
||||
WHILE (d >= 0 ) & (d <= 9) DO k := k*10 + d; INC(i); d := ORD(s[i]) - ORD("0") END ;
|
||||
IF s[0] = "-" THEN k := -k; DEC(i) END ;
|
||||
IF i > 0 THEN val := k END
|
||||
END GetIntArg;
|
||||
|
||||
PROCEDURE ArgPos*(s: ARRAY OF CHAR): INTEGER;
|
||||
VAR i: INTEGER; arg: ARRAY 256 OF CHAR;
|
||||
BEGIN
|
||||
i := 0; GetArg(i, arg);
|
||||
WHILE (i < ArgCount) & (s # arg) DO INC(i); GetArg(i, arg) END ;
|
||||
RETURN i
|
||||
END ArgPos;
|
||||
|
||||
|
||||
|
||||
PROCEDURE Append(VAR a: ARRAY OF CHAR; b: ARRAY OF CHAR);
|
||||
VAR i, j: INTEGER;
|
||||
|
|
@ -95,7 +155,7 @@ MODULE Modules; (* jt 6.1.96 *)
|
|||
|
||||
PROCEDURE errch(c: CHAR); (* Here we favour simplicity over efficiency, so no buffering. *)
|
||||
VAR e: Platform.ErrorCode;
|
||||
BEGIN e := Platform.Write(1, SYSTEM.ADR(c), 1)
|
||||
BEGIN e := Platform.Write(Platform.StdOut, SYSTEM.ADR(c), 1)
|
||||
END errch;
|
||||
|
||||
PROCEDURE errstring(s: ARRAY OF CHAR);
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ MODULE Oberon;
|
|||
|
||||
(* this version should not have dependency on graphics -- noch *)
|
||||
|
||||
IMPORT Platform, Texts, Out;
|
||||
IMPORT Platform, Modules, Texts, Out;
|
||||
|
||||
TYPE
|
||||
ParList* = POINTER TO ParRec;
|
||||
|
|
@ -38,11 +38,11 @@ PROCEDURE PopulateParams;
|
|||
BEGIN
|
||||
Texts.OpenWriter(W);
|
||||
i := 1; (* skip program name *)
|
||||
WHILE i < Platform.ArgCount DO
|
||||
Platform.GetArg(i, str); Texts.WriteString(W, str); Texts.Write(W, " ");
|
||||
WHILE i < Modules.ArgCount DO
|
||||
Modules.GetArg(i, str); Texts.WriteString(W, str); Texts.Write(W, " ");
|
||||
INC(i)
|
||||
END;
|
||||
Texts.Append (Par^.text, W.buf);
|
||||
Texts.Append(Par^.text, W.buf);
|
||||
END PopulateParams;
|
||||
|
||||
PROCEDURE GetSelection*(VAR text: Texts.Text; VAR beg, end, time: LONGINT);
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ CONST
|
|||
StdErr- = 2;
|
||||
|
||||
TYPE
|
||||
HaltProcedure = PROCEDURE(n: SYSTEM.INT32);
|
||||
SignalHandler = PROCEDURE(signal: SYSTEM.INT32);
|
||||
|
||||
ErrorCode* = INTEGER;
|
||||
|
|
@ -19,21 +18,13 @@ TYPE
|
|||
mtime: LONGINT; (* File modification time, value is system dependent *)
|
||||
END;
|
||||
|
||||
EnvPtr = POINTER TO ARRAY 1024 OF CHAR;
|
||||
ArgPtr = POINTER TO ARRAY 1024 OF CHAR;
|
||||
ArgVec = POINTER TO ARRAY 1024 OF ArgPtr;
|
||||
ArgVecPtr = POINTER TO ARRAY 1 OF SYSTEM.ADDRESS;
|
||||
|
||||
|
||||
VAR
|
||||
LittleEndian-: BOOLEAN;
|
||||
MainStackFrame-: SYSTEM.ADDRESS;
|
||||
PID-: INTEGER; (* Note: Must be updated by Fork implementation *)
|
||||
CWD-: ARRAY 256 OF CHAR;
|
||||
ArgCount-: INTEGER;
|
||||
|
||||
ArgVector-: SYSTEM.ADDRESS;
|
||||
HaltHandler: HaltProcedure;
|
||||
TimeStart: LONGINT;
|
||||
|
||||
SeekSet-: INTEGER;
|
||||
|
|
@ -118,72 +109,24 @@ PROCEDURE OSFree*(address: SYSTEM.ADDRESS); BEGIN free(address) END OSFree;
|
|||
|
||||
|
||||
|
||||
(* Program startup *)
|
||||
|
||||
PROCEDURE -ExternInitHeap "extern void Heap_InitHeap();";
|
||||
PROCEDURE -HeapInitHeap() "Heap_InitHeap()";
|
||||
|
||||
PROCEDURE Init*(argc: SYSTEM.INT32; argvadr: SYSTEM.ADDRESS);
|
||||
VAR av: ArgVecPtr;
|
||||
BEGIN
|
||||
MainStackFrame := argvadr;
|
||||
ArgCount := SYSTEM.VAL(INTEGER, argc);
|
||||
av := SYSTEM.VAL(ArgVecPtr, argvadr);
|
||||
ArgVector := av[0];
|
||||
|
||||
(* This function (Platform.Init) is called at program startup BEFORE any
|
||||
modules have been initalised. In turn we must initialise the heap
|
||||
before module startup (xxx__init) code is run. *)
|
||||
HeapInitHeap();
|
||||
END Init;
|
||||
|
||||
|
||||
|
||||
|
||||
(* Program arguments and environment access *)
|
||||
|
||||
PROCEDURE -getenv(var: ARRAY OF CHAR): EnvPtr "(Platform_EnvPtr)getenv((char*)var)";
|
||||
PROCEDURE -getenv(var: ARRAY OF CHAR): SYSTEM.ADDRESS "getenv((char*)var)";
|
||||
|
||||
PROCEDURE getEnv*(var: ARRAY OF CHAR; VAR val: ARRAY OF CHAR): BOOLEAN;
|
||||
VAR p: EnvPtr;
|
||||
TYPE EnvPtr = POINTER TO ARRAY 1024 OF CHAR;
|
||||
VAR p: EnvPtr;
|
||||
BEGIN
|
||||
p := getenv(var);
|
||||
p := SYSTEM.VAL(EnvPtr, getenv(var));
|
||||
IF p # NIL THEN COPY(p^, val) END;
|
||||
RETURN p # NIL;
|
||||
END getEnv;
|
||||
|
||||
PROCEDURE GetEnv*(var: ARRAY OF CHAR; VAR val: ARRAY OF CHAR);
|
||||
BEGIN
|
||||
IF ~ getEnv(var, val) THEN val[0] := 0X END;
|
||||
IF ~getEnv(var, val) THEN val[0] := 0X END;
|
||||
END GetEnv;
|
||||
|
||||
PROCEDURE GetArg*(n: INTEGER; VAR val: ARRAY OF CHAR);
|
||||
VAR av: ArgVec;
|
||||
BEGIN
|
||||
IF n < ArgCount THEN
|
||||
av := SYSTEM.VAL(ArgVec,ArgVector);
|
||||
COPY(av[n]^, val)
|
||||
END
|
||||
END GetArg;
|
||||
|
||||
PROCEDURE GetIntArg*(n: INTEGER; VAR val: LONGINT);
|
||||
VAR s: ARRAY 64 OF CHAR; k, d, i: LONGINT;
|
||||
BEGIN
|
||||
s := ""; GetArg(n, s); i := 0;
|
||||
IF s[0] = "-" THEN i := 1 END ;
|
||||
k := 0; d := ORD(s[i]) - ORD("0");
|
||||
WHILE (d >= 0 ) & (d <= 9) DO k := k*10 + d; INC(i); d := ORD(s[i]) - ORD("0") END ;
|
||||
IF s[0] = "-" THEN k := -k; DEC(i) END ;
|
||||
IF i > 0 THEN val := k END
|
||||
END GetIntArg;
|
||||
|
||||
PROCEDURE ArgPos*(s: ARRAY OF CHAR): INTEGER;
|
||||
VAR i: INTEGER; arg: ARRAY 256 OF CHAR;
|
||||
BEGIN
|
||||
i := 0; GetArg(i, arg);
|
||||
WHILE (i < ArgCount) & (s # arg) DO INC(i); GetArg(i, arg) END ;
|
||||
RETURN i
|
||||
END ArgPos;
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ IMPORT SYSTEM;
|
|||
|
||||
|
||||
TYPE
|
||||
HaltProcedure = PROCEDURE(n: SYSTEM.INT32);
|
||||
SignalHandler = PROCEDURE(signal: SYSTEM.INT32);
|
||||
|
||||
ErrorCode* = INTEGER;
|
||||
|
|
@ -22,22 +21,10 @@ TYPE
|
|||
mtimelow: LONGINT; (* File modification time, value is system dependent *)
|
||||
END;
|
||||
|
||||
EnvPtr = POINTER TO ARRAY 1024 OF CHAR;
|
||||
ArgPtr = POINTER TO ARRAY 1024 OF CHAR;
|
||||
ArgVec = POINTER TO ARRAY 1024 OF ArgPtr;
|
||||
ArgVecPtr = POINTER TO ARRAY 1 OF SYSTEM.ADDRESS;
|
||||
|
||||
|
||||
VAR
|
||||
LittleEndian-: BOOLEAN;
|
||||
MainStackFrame-: SYSTEM.ADDRESS;
|
||||
HaltCode-: LONGINT;
|
||||
PID-: INTEGER; (* Note: Must be updated by Fork implementation *)
|
||||
CWD-: ARRAY 4096 OF CHAR;
|
||||
ArgCount-: INTEGER;
|
||||
|
||||
ArgVector-: SYSTEM.ADDRESS;
|
||||
HaltHandler: HaltProcedure;
|
||||
TimeStart: LONGINT;
|
||||
|
||||
SeekSet-: INTEGER;
|
||||
|
|
@ -117,29 +104,6 @@ PROCEDURE OSFree*(address: SYSTEM.ADDRESS); BEGIN free(address) END OSFree;
|
|||
|
||||
|
||||
|
||||
(* Program startup *)
|
||||
|
||||
PROCEDURE -ExternInitHeap "extern void Heap_InitHeap();";
|
||||
PROCEDURE -HeapInitHeap() "Heap_InitHeap()";
|
||||
|
||||
PROCEDURE Init*(argc: SYSTEM.INT32; argvadr: SYSTEM.ADDRESS);
|
||||
VAR av: ArgVecPtr;
|
||||
BEGIN
|
||||
MainStackFrame := argvadr;
|
||||
ArgCount := SYSTEM.VAL(INTEGER, argc);
|
||||
av := SYSTEM.VAL(ArgVecPtr, argvadr);
|
||||
ArgVector := av[0];
|
||||
HaltCode := -128;
|
||||
|
||||
(* This function (Platform.Init) is called at program startup BEFORE any
|
||||
modules have been initalised. In turn we must initialise the heap
|
||||
before module startup (xxx__init) code is run. *)
|
||||
HeapInitHeap();
|
||||
END Init;
|
||||
|
||||
|
||||
|
||||
|
||||
(* Program arguments and environmet access *)
|
||||
|
||||
PROCEDURE -getenv(name: ARRAY OF CHAR; VAR buf: ARRAY OF CHAR): INTEGER
|
||||
|
|
@ -164,34 +128,6 @@ BEGIN
|
|||
IF ~getEnv(var, val) THEN val[0] := 0X END;
|
||||
END GetEnv;
|
||||
|
||||
PROCEDURE GetArg*(n: INTEGER; VAR val: ARRAY OF CHAR);
|
||||
VAR av: ArgVec;
|
||||
BEGIN
|
||||
IF n < ArgCount THEN
|
||||
av := SYSTEM.VAL(ArgVec,ArgVector);
|
||||
COPY(av[n]^, val)
|
||||
END
|
||||
END GetArg;
|
||||
|
||||
PROCEDURE GetIntArg*(n: INTEGER; VAR val: LONGINT);
|
||||
VAR s: ARRAY 64 OF CHAR; k, d, i: LONGINT;
|
||||
BEGIN
|
||||
s := ""; GetArg(n, s); i := 0;
|
||||
IF s[0] = "-" THEN i := 1 END ;
|
||||
k := 0; d := ORD(s[i]) - ORD("0");
|
||||
WHILE (d >= 0 ) & (d <= 9) DO k := k*10 + d; INC(i); d := ORD(s[i]) - ORD("0") END ;
|
||||
IF s[0] = "-" THEN k := -k; DEC(i) END ;
|
||||
IF i > 0 THEN val := k END
|
||||
END GetIntArg;
|
||||
|
||||
PROCEDURE ArgPos*(s: ARRAY OF CHAR): INTEGER;
|
||||
VAR i: INTEGER; arg: ARRAY 256 OF CHAR;
|
||||
BEGIN
|
||||
i := 0; GetArg(i, arg);
|
||||
WHILE (i < ArgCount) & (s # arg) DO INC(i); GetArg(i, arg) END ;
|
||||
RETURN i
|
||||
END ArgPos;
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -559,8 +495,6 @@ PROCEDURE -getpid(): INTEGER "(INTEGER)GetCurrentProcessId()";
|
|||
BEGIN
|
||||
TestLittleEndian;
|
||||
|
||||
HaltCode := -128;
|
||||
HaltHandler := NIL;
|
||||
TimeStart := 0; TimeStart := Time();
|
||||
CWD := ""; getCurrentDirectory(CWD);
|
||||
PID := getpid();
|
||||
|
|
|
|||
|
|
@ -258,10 +258,10 @@ extern void Heap_INCREF();
|
|||
|
||||
// Main module initialisation, registration and finalisation
|
||||
|
||||
extern void Platform_Init(INT32 argc, ADDRESS argv);
|
||||
extern void Modules_Init(INT32 argc, ADDRESS argv);
|
||||
extern void Heap_FINALL();
|
||||
|
||||
#define __INIT(argc, argv) static void *m; Platform_Init(argc, (ADDRESS)&argv);
|
||||
#define __INIT(argc, argv) static void *m; Modules_Init(argc, (ADDRESS)&argv);
|
||||
#define __REGMAIN(name, enum) m = Heap_REGMOD((CHAR*)name,enum)
|
||||
#define __FINI Heap_FINALL(); return 0
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ MODULE BrowserCmd; (* RC 29.10.93 *) (* object model 4.12.93, command line ver
|
|||
IMPORT
|
||||
OPM, OPS, OPT, OPV,
|
||||
Texts, Strings, Files, Out,
|
||||
Oberon, Platform, SYSTEM, Configuration;
|
||||
Oberon, Modules, SYSTEM, Configuration;
|
||||
|
||||
CONST
|
||||
OptionChar = "-";
|
||||
|
|
@ -265,13 +265,13 @@ MODULE BrowserCmd; (* RC 29.10.93 *) (* object model 4.12.93, command line ver
|
|||
PROCEDURE ShowDef*;
|
||||
VAR S, vname, name: OPS.Name;
|
||||
BEGIN
|
||||
option := 0X; Platform.GetArg(1, S);
|
||||
IF Platform.ArgCount > 2 THEN
|
||||
IF S[0] = OptionChar THEN option := S[1]; Platform.GetArg(2, S)
|
||||
ELSE Platform.GetArg(2, vname); option := vname[1]
|
||||
option := 0X; Modules.GetArg(1, S);
|
||||
IF Modules.ArgCount > 2 THEN
|
||||
IF S[0] = OptionChar THEN option := S[1]; Modules.GetArg(2, S)
|
||||
ELSE Modules.GetArg(2, vname); option := vname[1]
|
||||
END
|
||||
END;
|
||||
IF Platform.ArgCount >= 2 THEN
|
||||
IF Modules.ArgCount >= 2 THEN
|
||||
Ident(S, name);
|
||||
OPT.Init(name, {}); OPT.SelfName := "AvoidErr154";
|
||||
WModule(name, Oberon.Log);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue