mirror of
https://github.com/AntKrotov/oberon-07-compiler.git
synced 2026-10-05 09:45:47 +00:00
Удаление незначащих пробелов
This commit is contained in:
1 parent
320377a805
commit
9fdceb3a86
35 files changed
+283
-145
No files matched your search
+15
-15
@@ -17,7 +17,7 @@
|
||||
|
||||
MODULE File;
|
||||
|
||||
IMPORT sys := SYSTEM, KOSAPI;
|
||||
IMPORT sys := SYSTEM, KOSAPI;
|
||||
|
||||
|
||||
CONST
|
||||
@@ -47,7 +47,7 @@ TYPE
|
||||
time_modif*, date_modif*,
|
||||
size*, hsize*: INTEGER;
|
||||
name*: FNAME
|
||||
END;
|
||||
END;
|
||||
|
||||
|
||||
PROCEDURE [stdcall] f_68_27 (file_name: INTEGER; VAR size: INTEGER): INTEGER;
|
||||
@@ -67,7 +67,7 @@ BEGIN
|
||||
0C2H, 008H, 000H (* ret 8 *)
|
||||
)
|
||||
RETURN 0
|
||||
END f_68_27;
|
||||
END f_68_27;
|
||||
|
||||
|
||||
PROCEDURE Load* (FName: ARRAY OF CHAR; VAR size: INTEGER): INTEGER;
|
||||
@@ -77,7 +77,7 @@ END Load;
|
||||
|
||||
PROCEDURE GetFileInfo* (FName: ARRAY OF CHAR; VAR Info: rFD): BOOLEAN;
|
||||
VAR
|
||||
res2: INTEGER; fs: rFS;
|
||||
res2: INTEGER; fs: rFS;
|
||||
|
||||
BEGIN
|
||||
fs.subfunc := 5;
|
||||
@@ -88,7 +88,7 @@ BEGIN
|
||||
COPY(FName, fs.name)
|
||||
|
||||
RETURN KOSAPI.sysfunc22(70, sys.ADR(fs), res2) = 0
|
||||
END GetFileInfo;
|
||||
END GetFileInfo;
|
||||
|
||||
|
||||
PROCEDURE Exists* (FName: ARRAY OF CHAR): BOOLEAN;
|
||||
@@ -97,7 +97,7 @@ VAR
|
||||
BEGIN
|
||||
RETURN GetFileInfo(FName, fd) & ~(4 IN BITS(fd.attr))
|
||||
END Exists;
|
||||
|
||||
|
||||
|
||||
PROCEDURE Close* (VAR F: FS);
|
||||
BEGIN
|
||||
@@ -109,9 +109,9 @@ END Close;
|
||||
|
||||
PROCEDURE Open* (FName: ARRAY OF CHAR): FS;
|
||||
VAR
|
||||
F: FS;
|
||||
F: FS;
|
||||
|
||||
BEGIN
|
||||
BEGIN
|
||||
|
||||
IF Exists(FName) THEN
|
||||
NEW(F);
|
||||
@@ -128,7 +128,7 @@ BEGIN
|
||||
END
|
||||
|
||||
RETURN F
|
||||
END Open;
|
||||
END Open;
|
||||
|
||||
|
||||
PROCEDURE Delete* (FName: ARRAY OF CHAR): BOOLEAN;
|
||||
@@ -158,7 +158,7 @@ BEGIN
|
||||
|
||||
RETURN res = 0
|
||||
END Delete;
|
||||
|
||||
|
||||
|
||||
PROCEDURE Seek* (F: FS; Offset, Origin: INTEGER): INTEGER;
|
||||
VAR
|
||||
@@ -202,7 +202,7 @@ BEGIN
|
||||
END
|
||||
|
||||
RETURN res2
|
||||
END Read;
|
||||
END Read;
|
||||
|
||||
|
||||
PROCEDURE Write* (F: FS; Buffer, Count: INTEGER): INTEGER;
|
||||
@@ -225,7 +225,7 @@ BEGIN
|
||||
|
||||
RETURN res2
|
||||
END Write;
|
||||
|
||||
|
||||
|
||||
PROCEDURE Create* (FName: ARRAY OF CHAR): FS;
|
||||
VAR
|
||||
@@ -249,14 +249,14 @@ BEGIN
|
||||
|
||||
RETURN F
|
||||
END Create;
|
||||
|
||||
|
||||
|
||||
PROCEDURE DirExists* (FName: ARRAY OF CHAR): BOOLEAN;
|
||||
VAR
|
||||
fd: rFD;
|
||||
BEGIN
|
||||
RETURN GetFileInfo(FName, fd) & (4 IN BITS(fd.attr))
|
||||
END DirExists;
|
||||
END DirExists;
|
||||
|
||||
|
||||
PROCEDURE CreateDir* (DirName: ARRAY OF CHAR): BOOLEAN;
|
||||
@@ -282,7 +282,7 @@ BEGIN
|
||||
|
||||
RETURN res = 0
|
||||
END CreateDir;
|
||||
|
||||
|
||||
|
||||
PROCEDURE DeleteDir* (DirName: ARRAY OF CHAR): BOOLEAN;
|
||||
VAR
|
||||
|
||||
@@ -167,10 +167,10 @@ END ln;
|
||||
|
||||
|
||||
PROCEDURE [stdcall] log* (base, x: REAL): REAL;
|
||||
BEGIN
|
||||
BEGIN
|
||||
SYSTEM.CODE(
|
||||
0D9H, 0E8H, (* fld1 *)
|
||||
0DDH, 045H, 010H, (* fld qword [ebp + 10h] *)
|
||||
0DDH, 045H, 010H, (* fld qword [ebp + 10h] *)
|
||||
0D9H, 0F1H, (* fyl2x *)
|
||||
0D9H, 0E8H, (* fld1 *)
|
||||
0DDH, 045H, 008H, (* fld qword [ebp + 08h] *)
|
||||
@@ -376,6 +376,6 @@ BEGIN
|
||||
END
|
||||
RETURN res
|
||||
END sgn;
|
||||
|
||||
|
||||
|
||||
END Math.
|
||||
@@ -1,4 +1,4 @@
|
||||
(*
|
||||
(*
|
||||
Copyright 2017 Anton Krotov
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
@@ -24,18 +24,18 @@ CONST
|
||||
|
||||
//net devices types
|
||||
|
||||
LOOPBACK* = 0;
|
||||
ETH* = 1;
|
||||
SLIP* = 2;
|
||||
LOOPBACK* = 0;
|
||||
ETH* = 1;
|
||||
SLIP* = 2;
|
||||
|
||||
//Link status
|
||||
|
||||
LINK_DOWN* = 0;
|
||||
LINK_DOWN* = 0;
|
||||
LINK_UNKNOWN* = 1;
|
||||
LINK_FD* = 2; //full duplex flag
|
||||
LINK_10M* = 4;
|
||||
LINK_100M* = 8;
|
||||
LINK_1G* = 12;
|
||||
LINK_FD* = 2; //full duplex flag
|
||||
LINK_10M* = 4;
|
||||
LINK_100M* = 8;
|
||||
LINK_1G* = 12;
|
||||
|
||||
|
||||
TYPE
|
||||
|
||||
@@ -10,7 +10,7 @@ MODULE RTL;
|
||||
IMPORT SYSTEM, API;
|
||||
|
||||
|
||||
CONST
|
||||
CONST
|
||||
|
||||
bit_depth* = 32;
|
||||
maxint* = 7FFFFFFFH;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
(*
|
||||
(*
|
||||
Copyright 2016 Anton Krotov
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
|
||||
@@ -10,7 +10,7 @@ MODULE RTL;
|
||||
IMPORT SYSTEM, API;
|
||||
|
||||
|
||||
CONST
|
||||
CONST
|
||||
|
||||
bit_depth* = 32;
|
||||
maxint* = 7FFFFFFFH;
|
||||
|
||||
@@ -10,7 +10,7 @@ MODULE RTL;
|
||||
IMPORT SYSTEM, API;
|
||||
|
||||
|
||||
CONST
|
||||
CONST
|
||||
|
||||
bit_depth* = 64;
|
||||
maxint* = 7FFFFFFFFFFFFFFFH;
|
||||
|
||||
@@ -47,8 +47,8 @@ VAR
|
||||
cond := 6
|
||||
ELSE
|
||||
cond := C
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
RETURN cond
|
||||
END ChangeCond;
|
||||
|
||||
|
||||
+13
-13
@@ -17,7 +17,7 @@ CONST
|
||||
|
||||
VAR
|
||||
|
||||
DateTable: ARRAY 120000, 3 OF INTEGER;
|
||||
DateTable: ARRAY 120000, 3 OF INTEGER;
|
||||
MonthsTable: ARRAY 13, 4 OF INTEGER;
|
||||
|
||||
|
||||
@@ -49,16 +49,16 @@ END Encode;
|
||||
PROCEDURE Decode* (Date: REAL; VAR Year, Month, Day, Hour, Min, Sec, MSec: INTEGER): BOOLEAN;
|
||||
VAR
|
||||
res: BOOLEAN;
|
||||
d, t: INTEGER;
|
||||
d, t: INTEGER;
|
||||
L, R, M: INTEGER;
|
||||
|
||||
BEGIN
|
||||
BEGIN
|
||||
res := (Date >= -693593.0) & (Date < 2958466.0);
|
||||
IF res THEN
|
||||
d := FLOOR(Date);
|
||||
t := FLOOR((Date - FLT(d)) * 86400000.0);
|
||||
INC(d, 693593);
|
||||
|
||||
|
||||
L := 0;
|
||||
R := LEN(DateTable) - 1;
|
||||
M := (L + R) DIV 2;
|
||||
@@ -75,7 +75,7 @@ BEGIN
|
||||
R := M
|
||||
END
|
||||
END;
|
||||
|
||||
|
||||
Year := DateTable[L][1];
|
||||
Month := DateTable[L][2];
|
||||
Day := d - DateTable[L][0] + 1;
|
||||
@@ -84,10 +84,10 @@ BEGIN
|
||||
Min := t DIV 60000; t := t MOD 60000;
|
||||
Sec := t DIV 1000;
|
||||
MSec := t MOD 1000
|
||||
END
|
||||
END
|
||||
|
||||
RETURN res
|
||||
END Decode;
|
||||
END Decode;
|
||||
|
||||
|
||||
PROCEDURE Now* (VAR Year, Month, Day, Hour, Min, Sec, MSec: INTEGER);
|
||||
@@ -103,7 +103,7 @@ BEGIN
|
||||
Min := ORD(T.Min);
|
||||
Sec := ORD(T.Sec);
|
||||
MSec := ORD(T.MSec)
|
||||
END Now;
|
||||
END Now;
|
||||
|
||||
|
||||
PROCEDURE NowEncode* (): REAL;
|
||||
@@ -125,7 +125,7 @@ BEGIN
|
||||
Months[1] := 31; Months[2] := 28; Months[3] := 31; Months[4] := 30;
|
||||
Months[5] := 31; Months[6] := 30; Months[7] := 31; Months[8] := 31;
|
||||
Months[9] := 30; Months[10] := 31; Months[11] := 30; Months[12] := 31;
|
||||
|
||||
|
||||
day := 0;
|
||||
year := 1;
|
||||
month := 1;
|
||||
@@ -146,12 +146,12 @@ BEGIN
|
||||
END;
|
||||
INC(i)
|
||||
END;
|
||||
|
||||
|
||||
MonthsTable[1][0] := 0;
|
||||
FOR i := 2 TO 12 DO
|
||||
MonthsTable[i][0] := MonthsTable[i - 1][0] + Months[i - 1]
|
||||
END;
|
||||
|
||||
|
||||
FOR i := 1 TO 12 DO
|
||||
MonthsTable[i][2] := Months[i]
|
||||
END;
|
||||
@@ -160,8 +160,8 @@ BEGIN
|
||||
MonthsTable[1][1] := 0;
|
||||
FOR i := 2 TO 12 DO
|
||||
MonthsTable[i][1] := MonthsTable[i - 1][1] + Months[i - 1]
|
||||
END;
|
||||
|
||||
END;
|
||||
|
||||
FOR i := 1 TO 12 DO
|
||||
MonthsTable[i][3] := Months[i]
|
||||
END
|
||||
|
||||
@@ -116,7 +116,7 @@ BEGIN
|
||||
END
|
||||
|
||||
RETURN res
|
||||
END Load;
|
||||
END Load;
|
||||
|
||||
|
||||
PROCEDURE RemoveDir* (DirName: ARRAY OF CHAR): BOOLEAN;
|
||||
|
||||
@@ -167,10 +167,10 @@ END ln;
|
||||
|
||||
|
||||
PROCEDURE [stdcall] log* (base, x: REAL): REAL;
|
||||
BEGIN
|
||||
BEGIN
|
||||
SYSTEM.CODE(
|
||||
0D9H, 0E8H, (* fld1 *)
|
||||
0DDH, 045H, 010H, (* fld qword [ebp + 10h] *)
|
||||
0DDH, 045H, 010H, (* fld qword [ebp + 10h] *)
|
||||
0D9H, 0F1H, (* fyl2x *)
|
||||
0D9H, 0E8H, (* fld1 *)
|
||||
0DDH, 045H, 008H, (* fld qword [ebp + 08h] *)
|
||||
@@ -376,6 +376,6 @@ BEGIN
|
||||
END
|
||||
RETURN res
|
||||
END sgn;
|
||||
|
||||
|
||||
|
||||
END Math.
|
||||
@@ -10,7 +10,7 @@ MODULE RTL;
|
||||
IMPORT SYSTEM, API;
|
||||
|
||||
|
||||
CONST
|
||||
CONST
|
||||
|
||||
bit_depth* = 32;
|
||||
maxint* = 7FFFFFFFH;
|
||||
|
||||
@@ -1,18 +1,8 @@
|
||||
(*
|
||||
Copyright 2013, 2018, 2019 Anton Krotov
|
||||
BSD 2-Clause License
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
Copyright (c) 2019, Anton Krotov
|
||||
All rights reserved.
|
||||
*)
|
||||
|
||||
MODULE Console;
|
||||
|
||||
@@ -0,0 +1,174 @@
|
||||
(*
|
||||
BSD 2-Clause License
|
||||
|
||||
Copyright (c) 2019, Anton Krotov
|
||||
All rights reserved.
|
||||
*)
|
||||
|
||||
MODULE DateTime;
|
||||
|
||||
IMPORT WINAPI;
|
||||
|
||||
|
||||
CONST
|
||||
|
||||
ERR* = -7.0E5;
|
||||
|
||||
|
||||
VAR
|
||||
|
||||
DateTable: ARRAY 120000, 3 OF INTEGER;
|
||||
MonthsTable: ARRAY 13, 4 OF INTEGER;
|
||||
|
||||
|
||||
PROCEDURE Encode* (Year, Month, Day, Hour, Min, Sec, MSec: INTEGER): REAL;
|
||||
VAR
|
||||
d, bis: INTEGER;
|
||||
res: REAL;
|
||||
|
||||
BEGIN
|
||||
res := ERR;
|
||||
IF (Year >= 1) & (Year <= 9999) & (Month >= 1) & (Month <= 12) &
|
||||
(Day >= 1) & (Day <= 31) & (Hour >= 0) & (Hour <= 23) &
|
||||
(Min >= 0) & (Min <= 59) & (Sec >= 0) & (Sec <= 59) &
|
||||
(MSec >= 0) & (MSec <= 999) THEN
|
||||
|
||||
bis := ORD((Year MOD 4 = 0) & (Year MOD 100 # 0) OR (Year MOD 400 = 0));
|
||||
|
||||
IF Day <= MonthsTable[Month][2 + bis] THEN
|
||||
DEC(Year);
|
||||
d := Year * 365 + (Year DIV 4) - (Year DIV 100) + (Year DIV 400) +
|
||||
MonthsTable[Month][bis] + Day - 693594;
|
||||
res := FLT(d) + FLT(Hour * 3600000 + Min * 60000 + Sec * 1000 + MSec) / 86400000.0
|
||||
END
|
||||
END
|
||||
RETURN res
|
||||
END Encode;
|
||||
|
||||
|
||||
PROCEDURE Decode* (Date: REAL; VAR Year, Month, Day, Hour, Min, Sec, MSec: INTEGER): BOOLEAN;
|
||||
VAR
|
||||
res: BOOLEAN;
|
||||
d, t: INTEGER;
|
||||
L, R, M: INTEGER;
|
||||
|
||||
BEGIN
|
||||
res := (Date >= -693593.0) & (Date < 2958466.0);
|
||||
IF res THEN
|
||||
d := FLOOR(Date);
|
||||
t := FLOOR((Date - FLT(d)) * 86400000.0);
|
||||
INC(d, 693593);
|
||||
|
||||
L := 0;
|
||||
R := LEN(DateTable) - 1;
|
||||
M := (L + R) DIV 2;
|
||||
|
||||
WHILE R - L > 1 DO
|
||||
IF d > DateTable[M][0] THEN
|
||||
L := M;
|
||||
M := (L + R) DIV 2
|
||||
ELSIF d < DateTable[M][0] THEN
|
||||
R := M;
|
||||
M := (L + R) DIV 2
|
||||
ELSE
|
||||
L := M;
|
||||
R := M
|
||||
END
|
||||
END;
|
||||
|
||||
Year := DateTable[L][1];
|
||||
Month := DateTable[L][2];
|
||||
Day := d - DateTable[L][0] + 1;
|
||||
|
||||
Hour := t DIV 3600000; t := t MOD 3600000;
|
||||
Min := t DIV 60000; t := t MOD 60000;
|
||||
Sec := t DIV 1000;
|
||||
MSec := t MOD 1000
|
||||
END
|
||||
|
||||
RETURN res
|
||||
END Decode;
|
||||
|
||||
|
||||
PROCEDURE Now* (VAR Year, Month, Day, Hour, Min, Sec, MSec: INTEGER);
|
||||
VAR
|
||||
T: WINAPI.TSystemTime;
|
||||
|
||||
BEGIN
|
||||
WINAPI.GetLocalTime(T);
|
||||
Year := ORD(T.Year);
|
||||
Month := ORD(T.Month);
|
||||
Day := ORD(T.Day);
|
||||
Hour := ORD(T.Hour);
|
||||
Min := ORD(T.Min);
|
||||
Sec := ORD(T.Sec);
|
||||
MSec := ORD(T.MSec)
|
||||
END Now;
|
||||
|
||||
|
||||
PROCEDURE NowEncode* (): REAL;
|
||||
VAR
|
||||
Year, Month, Day, Hour, Min, Sec, MSec: INTEGER;
|
||||
|
||||
BEGIN
|
||||
Now(Year, Month, Day, Hour, Min, Sec, MSec)
|
||||
RETURN Encode(Year, Month, Day, Hour, Min, Sec, MSec)
|
||||
END NowEncode;
|
||||
|
||||
|
||||
PROCEDURE init;
|
||||
VAR
|
||||
day, year, month, i: INTEGER;
|
||||
Months: ARRAY 13 OF INTEGER;
|
||||
|
||||
BEGIN
|
||||
Months[1] := 31; Months[2] := 28; Months[3] := 31; Months[4] := 30;
|
||||
Months[5] := 31; Months[6] := 30; Months[7] := 31; Months[8] := 31;
|
||||
Months[9] := 30; Months[10] := 31; Months[11] := 30; Months[12] := 31;
|
||||
|
||||
day := 0;
|
||||
year := 1;
|
||||
month := 1;
|
||||
i := 0;
|
||||
|
||||
WHILE year <= 10000 DO
|
||||
DateTable[i][0] := day;
|
||||
DateTable[i][1] := year;
|
||||
DateTable[i][2] := month;
|
||||
INC(day, Months[month]);
|
||||
IF (month = 2) & ((year MOD 4 = 0) & (year MOD 100 # 0) OR (year MOD 400 = 0)) THEN
|
||||
INC(day)
|
||||
END;
|
||||
INC(month);
|
||||
IF month > 12 THEN
|
||||
month := 1;
|
||||
INC(year)
|
||||
END;
|
||||
INC(i)
|
||||
END;
|
||||
|
||||
MonthsTable[1][0] := 0;
|
||||
FOR i := 2 TO 12 DO
|
||||
MonthsTable[i][0] := MonthsTable[i - 1][0] + Months[i - 1]
|
||||
END;
|
||||
|
||||
FOR i := 1 TO 12 DO
|
||||
MonthsTable[i][2] := Months[i]
|
||||
END;
|
||||
|
||||
Months[2] := 29;
|
||||
MonthsTable[1][1] := 0;
|
||||
FOR i := 2 TO 12 DO
|
||||
MonthsTable[i][1] := MonthsTable[i - 1][1] + Months[i - 1]
|
||||
END;
|
||||
|
||||
FOR i := 1 TO 12 DO
|
||||
MonthsTable[i][3] := Months[i]
|
||||
END
|
||||
|
||||
END init;
|
||||
|
||||
|
||||
BEGIN
|
||||
init
|
||||
END DateTime.
|
||||
@@ -48,7 +48,7 @@ PROCEDURE [windows-, "kernel32.dll", "GetStdHandle"]
|
||||
|
||||
PROCEDURE [windows-, "kernel32.dll", "WriteFile"]
|
||||
WriteFile (hFile, Buffer, nNumberOfBytesToRead, lpNumberOfBytesRead: INTEGER; lpOverlapped: POverlapped): INTEGER;
|
||||
|
||||
|
||||
PROCEDURE [windows-, "kernel32.dll", "WriteConsoleW"]
|
||||
WriteConsoleW (hConsoleOutput, lpBuffer, nNumberOfCharsToWrite, lpNumberOfCharsWritten, lpReserved: INTEGER): INTEGER;
|
||||
|
||||
@@ -57,7 +57,7 @@ PROCEDURE Char*(x: CHAR);
|
||||
VAR count: INTEGER;
|
||||
BEGIN
|
||||
WriteFile(hConsoleOutput, sys.ADR(x), 1, sys.ADR(count), NIL)
|
||||
END Char;
|
||||
END Char;
|
||||
|
||||
PROCEDURE StringW*(s: ARRAY OF WCHAR);
|
||||
VAR count: INTEGER;
|
||||
|
||||
@@ -10,7 +10,7 @@ MODULE RTL;
|
||||
IMPORT SYSTEM, API;
|
||||
|
||||
|
||||
CONST
|
||||
CONST
|
||||
|
||||
bit_depth* = 64;
|
||||
maxint* = 7FFFFFFFFFFFFFFFH;
|
||||
|
||||
@@ -1,23 +1,13 @@
|
||||
(*
|
||||
Copyright 2013, 2014, 2017, 2018, 2019 Anton Krotov
|
||||
BSD 2-Clause License
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
Copyright (c) 2019, Anton Krotov
|
||||
All rights reserved.
|
||||
*)
|
||||
|
||||
MODULE WINAPI;
|
||||
|
||||
IMPORT sys := SYSTEM;
|
||||
IMPORT SYSTEM;
|
||||
|
||||
|
||||
CONST
|
||||
@@ -165,5 +155,8 @@ PROCEDURE [windows-, "kernel32.dll", "AllocConsole"]
|
||||
PROCEDURE [windows-, "kernel32.dll", "FreeConsole"]
|
||||
FreeConsole* (): BOOLEAN;
|
||||
|
||||
PROCEDURE [windows-, "kernel32.dll", "GetLocalTime"]
|
||||
GetLocalTime* (T: TSystemTime);
|
||||
|
||||
|
||||
END WINAPI.
|
||||
@@ -1,4 +1,4 @@
|
||||
MODULE Dialogs;
|
||||
MODULE Dialogs;
|
||||
|
||||
IMPORT KOSAPI, sys := SYSTEM, OpenDlg, ColorDlg;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
MODULE HW;
|
||||
MODULE HW;
|
||||
|
||||
IMPORT sys := SYSTEM, KOSAPI;
|
||||
|
||||
|
||||
@@ -10,14 +10,14 @@ BEGIN
|
||||
Out.Char("0")
|
||||
END;
|
||||
Out.Int(n, 0)
|
||||
END OutInt2;
|
||||
END OutInt2;
|
||||
|
||||
|
||||
PROCEDURE OutMonth(n: INTEGER);
|
||||
VAR
|
||||
str: ARRAY 4 OF CHAR;
|
||||
|
||||
BEGIN
|
||||
BEGIN
|
||||
|
||||
CASE n OF
|
||||
| 1: str := "jan"
|
||||
@@ -32,10 +32,10 @@ BEGIN
|
||||
|10: str := "oct"
|
||||
|11: str := "nov"
|
||||
|12: str := "dec"
|
||||
END;
|
||||
END;
|
||||
|
||||
Out.String(str)
|
||||
END OutMonth;
|
||||
END OutMonth;
|
||||
|
||||
|
||||
PROCEDURE main;
|
||||
@@ -52,7 +52,7 @@ BEGIN
|
||||
OutInt2(Hour); Out.Char(":");
|
||||
OutInt2(Min); Out.Char(":");
|
||||
OutInt2(Sec)
|
||||
END main;
|
||||
END main;
|
||||
|
||||
|
||||
BEGIN
|
||||
|
||||
@@ -20,7 +20,7 @@ BEGIN
|
||||
Console.open;
|
||||
|
||||
main;
|
||||
In.Ln;
|
||||
In.Ln;
|
||||
|
||||
Console.exit(TRUE)
|
||||
END HelloRus.
|
||||
@@ -20,7 +20,7 @@ BEGIN
|
||||
Console.open;
|
||||
|
||||
main;
|
||||
In.Ln;
|
||||
In.Ln;
|
||||
|
||||
Console.exit(TRUE)
|
||||
END HelloRus.
|
||||
+2
-2
@@ -176,8 +176,8 @@ BEGIN
|
||||
INC(i)
|
||||
END
|
||||
|
||||
END;
|
||||
|
||||
END;
|
||||
|
||||
value := MACHINE.long(value);
|
||||
|
||||
IF (s[i] = "X") & (n # -1) & (i - n > 4) THEN
|
||||
|
||||
@@ -106,7 +106,7 @@ BEGIN
|
||||
chunk := list.last(BYTECHUNK);
|
||||
|
||||
IF chunk.count = LENOFBYTECHUNK THEN
|
||||
NEW(chunk);
|
||||
NEW(chunk);
|
||||
ERRORS.OutOfMemory(chunk = NIL);
|
||||
chunk.count := 0;
|
||||
LISTS.push(list, chunk)
|
||||
@@ -139,12 +139,12 @@ VAR
|
||||
chunk: BYTECHUNK;
|
||||
|
||||
BEGIN
|
||||
NEW(bytelist);
|
||||
NEW(bytelist);
|
||||
ERRORS.OutOfMemory(bytelist = NIL);
|
||||
list := LISTS.create(bytelist);
|
||||
bytelist.length := 0;
|
||||
|
||||
NEW(chunk);
|
||||
NEW(chunk);
|
||||
ERRORS.OutOfMemory(chunk = NIL);
|
||||
chunk.count := 0;
|
||||
LISTS.push(list, chunk)
|
||||
@@ -215,7 +215,7 @@ BEGIN
|
||||
chunk := list.last(INTCHUNK);
|
||||
|
||||
IF chunk.count = LENOFINTCHUNK THEN
|
||||
NEW(chunk);
|
||||
NEW(chunk);
|
||||
ERRORS.OutOfMemory(chunk = NIL);
|
||||
chunk.count := 0;
|
||||
LISTS.push(list, chunk)
|
||||
@@ -235,12 +235,12 @@ VAR
|
||||
chunk: INTCHUNK;
|
||||
|
||||
BEGIN
|
||||
NEW(intlist);
|
||||
NEW(intlist);
|
||||
ERRORS.OutOfMemory(intlist = NIL);
|
||||
list := LISTS.create(intlist);
|
||||
intlist.length := 0;
|
||||
|
||||
NEW(chunk);
|
||||
NEW(chunk);
|
||||
ERRORS.OutOfMemory(chunk = NIL);
|
||||
chunk.count := 0;
|
||||
LISTS.push(list, chunk)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
All rights reserved.
|
||||
*)
|
||||
|
||||
MODULE COLLECTIONS;
|
||||
MODULE COLLECTIONS;
|
||||
|
||||
IMPORT ERRORS;
|
||||
|
||||
@@ -51,7 +51,7 @@ VAR
|
||||
collection: COLLECTION;
|
||||
|
||||
BEGIN
|
||||
NEW(collection);
|
||||
NEW(collection);
|
||||
ERRORS.OutOfMemory(collection = NIL);
|
||||
collection.last := NIL
|
||||
|
||||
|
||||
+3
-3
@@ -45,7 +45,7 @@ END Int2;
|
||||
PROCEDURE Ln*;
|
||||
BEGIN
|
||||
String(UTILS.eol)
|
||||
END Ln;
|
||||
END Ln;
|
||||
|
||||
|
||||
PROCEDURE StringLn* (s: ARRAY OF CHAR);
|
||||
@@ -56,14 +56,14 @@ END StringLn;
|
||||
|
||||
|
||||
PROCEDURE IntLn* (n: INTEGER);
|
||||
BEGIN
|
||||
BEGIN
|
||||
Int(n);
|
||||
Ln
|
||||
END IntLn;
|
||||
|
||||
|
||||
PROCEDURE Int2Ln* (n: INTEGER);
|
||||
BEGIN
|
||||
BEGIN
|
||||
Int2(n);
|
||||
Ln
|
||||
END Int2Ln;
|
||||
|
||||
+4
-4
@@ -254,9 +254,9 @@ BEGIN
|
||||
END;
|
||||
phdr[header].p_flags := PF_R + PF_W;
|
||||
phdr[header].p_align := 1000H;
|
||||
|
||||
|
||||
offset := offset + phdr[header].p_filesz;
|
||||
VA := LoadAdr + offset + 1000H;
|
||||
VA := LoadAdr + offset + 1000H;
|
||||
|
||||
phdr[text].p_type := 1;
|
||||
phdr[text].p_offset := offset;
|
||||
@@ -268,7 +268,7 @@ BEGIN
|
||||
phdr[text].p_align := 1000H;
|
||||
|
||||
ehdr.e_entry := phdr[text].p_vaddr;
|
||||
|
||||
|
||||
offset := offset + phdr[text].p_filesz;
|
||||
VA := LoadAdr + offset + 2000H;
|
||||
pad := (16 - VA MOD 16) MOD 16;
|
||||
@@ -281,7 +281,7 @@ BEGIN
|
||||
phdr[data].p_memsz := SizeOf.data + pad;
|
||||
phdr[data].p_flags := PF_R + PF_W;
|
||||
phdr[data].p_align := 1000H;
|
||||
|
||||
|
||||
offset := offset + phdr[data].p_filesz;
|
||||
VA := LoadAdr + offset + 3000H;
|
||||
|
||||
|
||||
+1
-1
@@ -137,7 +137,7 @@ BEGIN
|
||||
|118: str := "this flag for Windows only"
|
||||
|119: str := "this flag for Linux only"
|
||||
|120: str := "too many formal parameters"
|
||||
|121: str := "'ccall' expected"
|
||||
|121: str := "'ccall' expected"
|
||||
|122: str := "out of range 0H..0FFFFH"
|
||||
END;
|
||||
C.StringLn(str);
|
||||
|
||||
+3
-3
@@ -197,7 +197,7 @@ BEGIN
|
||||
WR.Write32LE(File, header.sp);
|
||||
WR.Write32LE(File, header.param);
|
||||
WR.Write32LE(File, header.path);
|
||||
|
||||
|
||||
CHL.WriteToFile(File, program.code);
|
||||
WR.Padding(File, FileAlignment);
|
||||
|
||||
@@ -206,8 +206,8 @@ BEGIN
|
||||
|
||||
FOR i := 0 TO ILen - 1 DO
|
||||
WR.Write32LE(File, CHL.GetInt(ImportTable, i))
|
||||
END;
|
||||
|
||||
END;
|
||||
|
||||
CHL.WriteToFile(File, program.import);
|
||||
|
||||
WR.Close(File)
|
||||
|
||||
+4
-4
@@ -566,9 +566,9 @@ BEGIN
|
||||
|CODE.opGLOAD16:
|
||||
reg1 := REG.GetAnyReg(R);
|
||||
GenBinOp(opMOV, SR, mIDX, reg1, mREG, FALSE);
|
||||
Reloc(RBSS, param2)
|
||||
|
||||
|CODE.opVLOAD16:
|
||||
Reloc(RBSS, param2)
|
||||
|
||||
|CODE.opVLOAD16:
|
||||
reg1 := REG.GetAnyReg(R);
|
||||
GenBinOp(opMOV, BP, mIDX, reg1, mREG, FALSE);
|
||||
EmitWord(param2 * 2);
|
||||
@@ -740,7 +740,7 @@ BEGIN
|
||||
|2: GenBinOp(opMOV, reg1, mINDIR, reg2, mIDX, FALSE)
|
||||
END;
|
||||
EmitWord(0)
|
||||
|
||||
|
||||
|CODE.opINC1:
|
||||
UnOp(reg1);
|
||||
GenBinOp(opADD, PC, mINCR, reg1, mIDX, TRUE);
|
||||
|
||||
+6
-6
@@ -12,11 +12,11 @@ IMPORT STRINGS, UTILS;
|
||||
|
||||
CONST
|
||||
|
||||
slash = UTILS.slash;
|
||||
|
||||
slash = UTILS.slash;
|
||||
|
||||
PATHLEN = 2048;
|
||||
|
||||
|
||||
|
||||
|
||||
TYPE
|
||||
|
||||
PATH* = ARRAY PATHLEN OF CHAR;
|
||||
@@ -92,12 +92,12 @@ BEGIN
|
||||
res[i] := 0X
|
||||
END
|
||||
|
||||
END RelPath;
|
||||
END RelPath;
|
||||
|
||||
|
||||
PROCEDURE isRelative* (path: ARRAY OF CHAR): BOOLEAN;
|
||||
RETURN UTILS.isRelative(path)
|
||||
END isRelative;
|
||||
END isRelative;
|
||||
|
||||
|
||||
PROCEDURE GetCurrentDirectory* (VAR path: ARRAY OF CHAR);
|
||||
|
||||
+2
-2
@@ -152,7 +152,7 @@ BEGIN
|
||||
vocabulary.idents := AVL.insert(vocabulary.idents, vocabulary.ident, nodecmp, newnode, node);
|
||||
|
||||
IF newnode THEN
|
||||
NEW(vocabulary.ident);
|
||||
NEW(vocabulary.ident);
|
||||
ERRORS.OutOfMemory(vocabulary.ident = NIL);
|
||||
vocabulary.ident.offset := -1;
|
||||
vocabulary.ident.offsetW := -1
|
||||
@@ -712,7 +712,7 @@ BEGIN
|
||||
enterkw(i, "VAR");
|
||||
enterkw(i, "WHILE");
|
||||
|
||||
NEW(vocabulary.ident);
|
||||
NEW(vocabulary.ident);
|
||||
ERRORS.OutOfMemory(vocabulary.ident = NIL);
|
||||
vocabulary.ident.s := "";
|
||||
vocabulary.ident.offset := -1;
|
||||
|
||||
+2
-2
@@ -261,12 +261,12 @@ BEGIN
|
||||
|
||||
|0E1X..0EFX:
|
||||
u := LSL(ORD(c) - 0E0H, 12);
|
||||
IF i + 1 < srclen THEN
|
||||
IF i + 1 < srclen THEN
|
||||
INC(i);
|
||||
INC(u, ORD(BITS(ORD(src[i])) * {0..5}) * 64)
|
||||
END;
|
||||
IF i + 1 < srclen THEN
|
||||
INC(i);
|
||||
INC(i);
|
||||
INC(u, ORD(BITS(ORD(src[i])) * {0..5}))
|
||||
END
|
||||
(*
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ CONST
|
||||
bit_depth* = HOST.bit_depth;
|
||||
maxint* = HOST.maxint;
|
||||
minint* = HOST.minint;
|
||||
|
||||
|
||||
OS = HOST.OS;
|
||||
|
||||
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
(*
|
||||
BSD 2-Clause License
|
||||
|
||||
Copyright (c) 2019, Anton Krotov
|
||||
All rights reserved.
|
||||
*)
|
||||
|
||||
MODULE VM16;
|
||||
|
||||
IMPORT CODE;
|
||||
|
||||
|
||||
PROCEDURE CodeGen* (code: CODE.CODES; outname: ARRAY OF CHAR);
|
||||
BEGIN
|
||||
|
||||
END CodeGen;
|
||||
|
||||
|
||||
END VM16.
|
||||
Reference in new issue
Block a user