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 | |||
13 | VAR |
||
14 | |||
8097 | maxcodehac | 15 | hConsoleOutput: INTEGER; |
7983 | leency | 16 | |
17 | |||
8097 | maxcodehac | 18 | PROCEDURE [ccall, "msvcrt.dll", "printf"] printf1 (fmt: INTEGER; x: INTEGER); |
19 | PROCEDURE [ccall, "msvcrt.dll", "printf"] printf2 (fmt: INTEGER; width, x: INTEGER); |
||
20 | PROCEDURE [ccall, "msvcrt.dll", "printf"] printf3 (fmt: INTEGER; width, precision: INTEGER; x: REAL); |
||
7983 | leency | 21 | |
8097 | maxcodehac | 22 | PROCEDURE [windows, "kernel32.dll", ""] |
23 | WriteConsoleW (hConsoleOutput, lpBuffer, nNumberOfCharsToWrite, lpNumberOfCharsWritten, lpReserved: INTEGER); |
||
7983 | leency | 24 | |
8097 | maxcodehac | 25 | PROCEDURE [windows, "kernel32.dll", ""] |
26 | GetStdHandle (nStdHandle: INTEGER): INTEGER; |
||
27 | |||
28 | |||
29 | PROCEDURE Char* (x: CHAR); |
||
7983 | leency | 30 | BEGIN |
8097 | maxcodehac | 31 | printf1(SYSTEM.SADR("%c"), ORD(x)) |
7983 | leency | 32 | END Char; |
33 | |||
34 | |||
8097 | maxcodehac | 35 | PROCEDURE StringW* (s: ARRAY OF WCHAR); |
7983 | leency | 36 | BEGIN |
8097 | maxcodehac | 37 | WriteConsoleW(hConsoleOutput, SYSTEM.ADR(s[0]), LENGTH(s), 0, 0) |
38 | END StringW; |
||
7983 | leency | 39 | |
40 | |||
8097 | maxcodehac | 41 | PROCEDURE String* (s: ARRAY OF CHAR); |
7983 | leency | 42 | BEGIN |
8097 | maxcodehac | 43 | printf2(SYSTEM.SADR("%.*s"), LENGTH(s), SYSTEM.ADR(s[0])) |
44 | END String; |
||
7983 | leency | 45 | |
46 | |||
47 | PROCEDURE Ln*; |
||
48 | BEGIN |
||
8097 | maxcodehac | 49 | printf1(SYSTEM.SADR("%s"), SYSTEM.SADR(CHR(13) + CHR(10))) |
7983 | leency | 50 | END Ln; |
51 | |||
8097 | maxcodehac | 52 | |
53 | PROCEDURE Int* (x, width: INTEGER); |
||
7983 | leency | 54 | BEGIN |
8097 | maxcodehac | 55 | printf2(SYSTEM.SADR("%*d"), width, x) |
56 | END Int; |
||
7983 | leency | 57 | |
58 | |||
8097 | maxcodehac | 59 | PROCEDURE Real* (x: REAL; width: INTEGER); |
7983 | leency | 60 | BEGIN |
8097 | maxcodehac | 61 | printf3(SYSTEM.SADR("%*.*E"), width, MAX(MIN(width - 8, 15), 1), x) |
7983 | leency | 62 | END Real; |
63 | |||
8097 | maxcodehac | 64 | |
65 | PROCEDURE FixReal* (x: REAL; width, precision: INTEGER); |
||
7983 | leency | 66 | BEGIN |
8097 | maxcodehac | 67 | printf3(SYSTEM.SADR("%*.*f"), width, precision, x) |
7983 | leency | 68 | END FixReal; |
69 | |||
8097 | maxcodehac | 70 | |
7983 | leency | 71 | PROCEDURE Open*; |
72 | BEGIN |
||
8097 | maxcodehac | 73 | hConsoleOutput := GetStdHandle(-11) |
7983 | leency | 74 | END Open; |
75 | |||
8097 | maxcodehac | 76 | |
7983 | leency | 77 | END Out. |