| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- IMPLEMENTATION MODULE Console ;
- FROM SYSTEM IMPORT ADR ;
- FROM StdChans IMPORT StdOutChan ;
- FROM IOChan IMPORT ChanId, TextWrite ;
- FROM RealStr IMPORT RealToStr ;
- FROM Strings IMPORT Length ;
- VAR
- outChan : ChanId ;
- inited : BOOLEAN ;
- PROCEDURE Out () : ChanId ;
- BEGIN
- IF NOT inited THEN
- outChan := StdOutChan () ;
- inited := TRUE ;
- END ;
- RETURN outChan ;
- END Out ;
- PROCEDURE WriteChar (c: CHAR) ;
- BEGIN
- TextWrite (Out (), ADR (c), 1) ;
- END WriteChar ;
- PROCEDURE WriteString (s: ARRAY OF CHAR) ;
- BEGIN
- TextWrite (Out (), ADR (s), HIGH (s) + 1) ;
- END WriteString ;
- PROCEDURE WriteN (p: ADDRESS; n: CARDINAL) ;
- BEGIN
- TextWrite (Out (), p, n) ;
- END WriteN ;
- PROCEDURE WriteLn ;
- VAR nl: CHAR ;
- BEGIN
- nl := 12C ; (* LF *)
- TextWrite (Out (), ADR (nl), 1) ;
- END WriteLn ;
- PROCEDURE WriteLongCard (u: LONGCARD) ;
- VAR tmp : ARRAY [0..31] OF CHAR ; n, i: CARDINAL ;
- BEGIN
- n := 0 ;
- REPEAT
- tmp [n] := CHR (ORD ('0') + VAL (CARDINAL, u MOD 10)) ;
- u := u DIV 10 ;
- INC (n) ;
- UNTIL u = 0 ;
- i := n ;
- WHILE i > 0 DO
- DEC (i) ;
- WriteChar (tmp [i]) ;
- END ;
- END WriteLongCard ;
- PROCEDURE WriteLongInt (l: LONGINT) ;
- VAR u: LONGCARD ;
- BEGIN
- IF l < 0 THEN
- WriteChar ('-') ;
- u := VAL (LONGCARD, l) ;
- u := 0 - u ;
- WriteLongCard (u) ;
- ELSE
- WriteLongCard (VAL (LONGCARD, l)) ;
- END ;
- END WriteLongInt ;
- PROCEDURE WriteInt (i: INTEGER) ;
- BEGIN
- WriteLongInt (VAL (LONGINT, i)) ;
- END WriteInt ;
- PROCEDURE WriteBool (b: BOOLEAN) ;
- BEGIN
- IF b THEN
- WriteString ("TRUE") ;
- ELSE
- WriteString ("FALSE") ;
- END ;
- END WriteBool ;
- PROCEDURE WriteReal (r: REAL) ;
- VAR buf : ARRAY [0..63] OF CHAR ; n: CARDINAL ;
- BEGIN
- RealToStr (r, buf) ;
- n := Length (buf) ;
- TextWrite (Out (), ADR (buf), n) ;
- END WriteReal ;
- PROCEDURE Fatal (msg: ARRAY OF CHAR) ;
- BEGIN
- WriteString (msg) ;
- WriteLn ;
- HALT (1) ;
- END Fatal ;
- END Console.
|