ðCOberon10.Scn.FntOberon10i.Scn.Fnt € MODULE Console; (* rc 17.7.91 *) (*---------------------------------------------------------* * Copyright (c) 1990-1996 ETH Z…rich. All Rights Reserved. * Oberon is a trademark of Institut f…r Computersysteme, ETH Z…rich. *---------------------------------------------------------*) IMPORT Unix, S := SYSTEM; VAR buf: ARRAY 256 OF CHAR; enable: BOOLEAN; PROCEDURE Ch*(ch: CHAR); VAR res : LONGINT; BEGIN IF enable THEN buf[0] := ch; res := Unix.Write(1, S.ADR(buf), 1) END; END Ch; PROCEDURE Str*(s: ARRAY OF CHAR); VAR i, res: LONGINT; ch: CHAR; BEGIN IF enable THEN i := 0; LOOP ch := s[i]; IF ch = 0X THEN EXIT END ; buf[i] := ch; INC(i) END ; res := Unix.Write(1, S.ADR(buf), i) END; END Str; PROCEDURE Int*(n: LONGINT); VAR i, j, res: LONGINT; BEGIN IF enable THEN IF n = MIN(LONGINT) THEN buf := "-2147483648"; i := 11 ELSIF n = 0 THEN buf[0] := "0"; i := 1 ELSE i := 0; IF n < 0 THEN n := -n; buf[0] := "-"; i := 1 END ; j := 16; WHILE n > 0 DO DEC(j); buf[j] := CHR(n MOD 10 + 48); n := n DIV 10 END ; WHILE j < 16 DO buf[i] := buf[j]; INC(i); INC(j) END END ; res := Unix.Write(1, S.ADR(buf), i) END END Int; PROCEDURE Hex*(i: LONGINT; n: INTEGER); VAR a: ARRAY 8 OF CHAR; j, dig: INTEGER; BEGIN IF enable THEN j := 0; WHILE j < 8 DO dig := SHORT(i MOD 16); i := i DIV 16; IF dig > 9 THEN INC(dig, ORD("A") - ORD("9") - 1) END ; a[j] := CHR(dig + ORD("0")); INC(j) END ; WHILE n > 0 DO DEC(n); Ch(a[n]) END END; END Hex; PROCEDURE Ln*; BEGIN IF enable THEN Ch(0AX) END; END Ln; BEGIN enable := TRUE; END Console.