Oberon10.Scn.Fnt8FoldElemsNew8+8K8 Oberon10b.Scn.Fnt88 8Z8  8L8 8j8 88 8%8 8%88+8 MODULE Console; IMPORT SYSTEM, Unix; VAR OutputDebugString*: PROCEDURE (s: LONGINT); disabled: BOOLEAN; PROCEDURE OutString (s: LONGINT);  VAR res: LONGINT; len: INTEGER; c: CHAR; BEGIN len := 0; SYSTEM.GET(s + len, c); WHILE c # 0X DO INC(len); SYSTEM.GET(s + len, c) END; res := Unix.Write(2, s, len) END OutString;  PROCEDURE Output (VAR s: ARRAY OF CHAR);  BEGIN IF ~disabled THEN OutputDebugString(SYSTEM.ADR(s)) END END Output;  PROCEDURE Str* (s: ARRAY OF CHAR);  BEGIN Output(s) END Str;  PROCEDURE Ln*;  VAR s: ARRAY 3 OF CHAR; BEGIN s[0] := 0DX; s[1] := 0AX; s[2] := 0X; Output(s) END Ln;  PROCEDURE Ch* (ch: CHAR);  VAR s: ARRAY 2 OF CHAR; BEGIN s[0] := ch; s[1] := 0X; Output(s) END Ch;  PROCEDURE Int* (i: LONGINT);  VAR s: ARRAY 20 OF CHAR; i1, k: LONGINT; BEGIN IF i = MIN(LONGINT) THEN s := "2147483648"; k := 10 ELSE i1 := ABS(i); s[0] := CHR(i1 MOD 10 + ORD("0")); i1 := i1 DIV 10; k := 1; WHILE i1 > 0 DO s[k] := CHR(i1 MOD 10 + ORD("0")); i1 := i1 DIV 10; INC(k) END END ; IF i < 0 THEN s[k] := "-"; INC(k) END ; WHILE k > 0 DO DEC(k); Ch(s[k]) END END Int;  PROCEDURE Hex* (i: LONGINT);  VAR k, n: LONGINT; BEGIN k := - 28; WHILE k <= 0 DO n := ASH(i, k) MOD 16; IF n <= 9 THEN Ch(CHR(ORD("0") + n)) ELSE Ch(CHR(ORD("A") - 10 + n)) END ; INC(k, 4) END END Hex;  PROCEDURE Enable*;  BEGIN disabled := FALSE END Enable;  PROCEDURE Disable*;  BEGIN disabled := TRUE END Disable;  BEGIN Enable; OutputDebugString := OutString;  END Console.