Rev 7983 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
7983 | leency | 1 | (* |
8097 | maxcodehac | 2 | BSD 2-Clause License |
7983 | leency | 3 | |
8097 | maxcodehac | 4 | Copyright (c) 2020, Anton Krotov |
5 | All rights reserved. |
||
7983 | leency | 6 | *) |
7 | |||
8 | MODULE Out; |
||
9 | |||
8097 | maxcodehac | 10 | IMPORT SYSTEM; |
7983 | leency | 11 | |
12 | |||
8097 | maxcodehac | 13 | VAR |
7983 | leency | 14 | |
8097 | maxcodehac | 15 | hConsoleOutput: INTEGER; |
7983 | leency | 16 | |
8097 | maxcodehac | 17 | PROCEDURE [windows, "msvcrt.dll", "printf"] printf1 (fmt: INTEGER; x: INTEGER); |
18 | PROCEDURE [windows, "msvcrt.dll", "printf"] printf2 (fmt: INTEGER; width, x: INTEGER); |
||
19 | PROCEDURE [windows, "msvcrt.dll", "printf"] printf3 (fmt: INTEGER; width, precision, x: INTEGER); |
||
7983 | leency | 20 | |
8097 | maxcodehac | 21 | PROCEDURE [windows, "kernel32.dll", ""] |
22 | WriteConsoleW (hConsoleOutput, lpBuffer, nNumberOfCharsToWrite, lpNumberOfCharsWritten, lpReserved: INTEGER); |
||
7983 | leency | 23 | |
8097 | maxcodehac | 24 | PROCEDURE [windows, "kernel32.dll", ""] |
7983 | leency | 25 | GetStdHandle (nStdHandle: INTEGER): INTEGER; |
26 | |||
27 | |||
8097 | maxcodehac | 28 | PROCEDURE Char* (x: CHAR); |
7983 | leency | 29 | BEGIN |
8097 | maxcodehac | 30 | printf1(SYSTEM.SADR("%c"), ORD(x)) |
7983 | leency | 31 | END Char; |
32 | |||
8097 | maxcodehac | 33 | |
34 | PROCEDURE StringW* (s: ARRAY OF WCHAR); |
||
7983 | leency | 35 | BEGIN |
8097 | maxcodehac | 36 | WriteConsoleW(hConsoleOutput, SYSTEM.ADR(s[0]), LENGTH(s), 0, 0) |
7983 | leency | 37 | END StringW; |
38 | |||
8097 | maxcodehac | 39 | |
40 | PROCEDURE String* (s: ARRAY OF CHAR); |
||
7983 | leency | 41 | BEGIN |
8097 | maxcodehac | 42 | printf2(SYSTEM.SADR("%.*s"), LENGTH(s), SYSTEM.ADR(s[0])) |
7983 | leency | 43 | END String; |
44 | |||
45 | |||
8097 | maxcodehac | 46 | PROCEDURE Ln*; |
7983 | leency | 47 | BEGIN |
8097 | maxcodehac | 48 | printf1(SYSTEM.SADR("%s"), SYSTEM.SADR(CHR(13) + CHR(10))) |
49 | END Ln; |
||
7983 | leency | 50 | |
51 | |||
8097 | maxcodehac | 52 | PROCEDURE Int* (x, width: INTEGER); |
7983 | leency | 53 | BEGIN |
8097 | maxcodehac | 54 | printf2(SYSTEM.SADR("%*lld"), width, x) |
7983 | leency | 55 | END Int; |
56 | |||
57 | |||
8097 | maxcodehac | 58 | PROCEDURE intval (x: REAL): INTEGER; |
59 | VAR |
||
60 | i: INTEGER; |
||
7983 | leency | 61 | |
62 | BEGIN |
||
8097 | maxcodehac | 63 | SYSTEM.GET(SYSTEM.ADR(x), i) |
64 | RETURN i |
||
65 | END intval; |
||
7983 | leency | 66 | |
67 | |||
8097 | maxcodehac | 68 | PROCEDURE Real* (x: REAL; width: INTEGER); |
7983 | leency | 69 | BEGIN |
8097 | maxcodehac | 70 | printf3(SYSTEM.SADR("%*.*E"), width, MAX(MIN(width - 8, 15), 1), intval(x)) |
7983 | leency | 71 | END Real; |
72 | |||
8097 | maxcodehac | 73 | |
74 | PROCEDURE FixReal* (x: REAL; width, precision: INTEGER); |
||
7983 | leency | 75 | BEGIN |
8097 | maxcodehac | 76 | printf3(SYSTEM.SADR("%*.*f"), width, precision, intval(x)) |
7983 | leency | 77 | END FixReal; |
78 | |||
8097 | maxcodehac | 79 | |
7983 | leency | 80 | PROCEDURE Open*; |
81 | BEGIN |
||
82 | hConsoleOutput := GetStdHandle(-11) |
||
83 | END Open; |
||
84 | |||
8097 | maxcodehac | 85 | |
7983 | leency | 86 | END Out. |