MODULE Builtins; (** AUTHOR "fof"; PURPOSE "Built-in functions for the Active Oberon Compiler"; *) IMPORT SYSTEM; VAR kernelModule-: ARRAY 32 OF ADDRESS; modules-: LONGINT; PROCEDURE InsertModule*(a: ADDRESS): BOOLEAN; BEGIN kernelModule[modules] := a; INC(modules); RETURN TRUE END InsertModule; (* compare strings, returns 0 if strings are equal, returns +1 if left is lexicographic greater than right, returns -1 if left is lexicographics smaller than right traps if src or destination is not 0X terminated and comparison is not finished *) PROCEDURE CompareString*(CONST left,right: ARRAY OF CHAR): SHORTINT; VAR i: LONGINT; res: SHORTINT; l,r: CHAR; BEGIN i := 0; res := 0; LOOP l := left[i]; (* index check included *) r := right[i]; (* index check included *) IF (res = 0) THEN IF (l > r) THEN res := 1; EXIT ELSIF (l