==============================================================================

        Библиотека (Windows)

------------------------------------------------------------------------------
MODULE Out - консольный вывод

        PROCEDURE Open
                открывает консольный вывод

        PROCEDURE Int(x, width: INTEGER)
                вывод целого числа x;
                width - количество знакомест, используемых для вывода

        PROCEDURE Real(x: REAL; width: INTEGER)
                вывод вещественного числа x в плавающем формате;
                width - количество знакомест, используемых для вывода

        PROCEDURE Char(x: CHAR)
                вывод символа x

        PROCEDURE FixReal(x: REAL; width, p: INTEGER)
                вывод вещественного числа x в фиксированном формате;
                width - количество знакомест, используемых для вывода;
                p - количество знаков после десятичной точки

        PROCEDURE Ln
                переход на следующую строку

        PROCEDURE String(s: ARRAY OF CHAR)
                вывод строки s (ASCII)

        PROCEDURE StringW(s: ARRAY OF WCHAR)
                вывод строки s (UTF-16)

------------------------------------------------------------------------------
MODULE In - консольный ввод

        VAR Done: BOOLEAN
                принимает значение TRUE в случае успешного выполнения
                операции ввода и FALSE в противном случае

        PROCEDURE Open
                открывает консольный ввод,
                также присваивает переменной Done значение TRUE

        PROCEDURE Int(VAR x: INTEGER)
                ввод числа типа INTEGER

        PROCEDURE Char(VAR x: CHAR)
                ввод символа

        PROCEDURE Real(VAR x: REAL)
                ввод числа типа REAL

        PROCEDURE String(VAR s: ARRAY OF CHAR)
                ввод строки

        PROCEDURE Ln
                ожидание нажатия ENTER

------------------------------------------------------------------------------
MODULE Console - дополнительные процедуры консольного вывода

        CONST

        Следующие константы определяют цвет консольного вывода

                Black = 0      Blue = 1           Green = 2
                Cyan = 3       Red = 4            Magenta = 5
                Brown = 6      LightGray = 7      DarkGray = 8
                LightBlue = 9  LightGreen = 10    LightCyan = 11
                LightRed = 12  LightMagenta = 13  Yellow = 14
                White = 15

        PROCEDURE Cls
                очистка окна консоли

        PROCEDURE SetColor(FColor, BColor: INTEGER)
                установка цвета консольного вывода: FColor - цвет текста,
                BColor - цвет фона, возможные значения - вышеперечисленные
                константы

        PROCEDURE SetCursor(x, y: INTEGER)
                установка курсора консоли в позицию (x, y)

        PROCEDURE GetCursor(VAR x, y: INTEGER)
                записывает в параметры текущие координаты курсора консоли

        PROCEDURE GetCursorX(): INTEGER
                возвращает текущую x-координату курсора консоли

        PROCEDURE GetCursorY(): INTEGER
                возвращает текущую y-координату курсора консоли

------------------------------------------------------------------------------
MODULE Math - математические функции

        CONST

                pi = 3.141592653589793E+00
                e  = 2.718281828459045E+00

        PROCEDURE IsNan(x: REAL): BOOLEAN
                возвращает TRUE, если x - не число

        PROCEDURE IsInf(x: REAL): BOOLEAN
                возвращает TRUE, если x - бесконечность

        PROCEDURE sqrt(x: REAL): REAL
                квадратный корень x

        PROCEDURE exp(x: REAL): REAL
                экспонента x

        PROCEDURE ln(x: REAL): REAL
                натуральный логарифм x

        PROCEDURE sin(x: REAL): REAL
                синус x

        PROCEDURE cos(x: REAL): REAL
                косинус x

        PROCEDURE tan(x: REAL): REAL
                тангенс x

        PROCEDURE arcsin(x: REAL): REAL
                арксинус x

        PROCEDURE arccos(x: REAL): REAL
                арккосинус x

        PROCEDURE arctan(x: REAL): REAL
                арктангенс x

        PROCEDURE arctan2(y, x: REAL): REAL
                арктангенс y/x

        PROCEDURE power(base, exponent: REAL): REAL
                возведение числа base в степень exponent

        PROCEDURE log(base, x: REAL): REAL
                логарифм x по основанию base

        PROCEDURE sinh(x: REAL): REAL
                гиперболический синус x

        PROCEDURE cosh(x: REAL): REAL
                гиперболический косинус x

        PROCEDURE tanh(x: REAL): REAL
                гиперболический тангенс x

        PROCEDURE arsinh(x: REAL): REAL
                обратный гиперболический синус x

        PROCEDURE arcosh(x: REAL): REAL
                обратный гиперболический косинус x

        PROCEDURE artanh(x: REAL): REAL
                обратный гиперболический тангенс x

        PROCEDURE round(x: REAL): REAL
                округление x до ближайшего целого

        PROCEDURE frac(x: REAL): REAL;
                дробная часть числа x

        PROCEDURE floor(x: REAL): REAL
                наибольшее целое число (представление как REAL),
                не больше x: floor(1.2) = 1.0

        PROCEDURE ceil(x: REAL): REAL
                наименьшее целое число (представление как REAL),
                не меньше x: ceil(1.2) = 2.0

        PROCEDURE sgn(x: REAL): INTEGER
                если x > 0 возвращает 1
                если x < 0 возвращает -1
                если x = 0 возвращает 0

        PROCEDURE fact(n: INTEGER): REAL
                факториал n

------------------------------------------------------------------------------
MODULE File - работа с файловой системой

        CONST

                OPEN_R = 0
                OPEN_W = 1
                OPEN_RW = 2

                SEEK_BEG = 0
                SEEK_CUR = 1
                SEEK_END = 2

        PROCEDURE Create(FName: ARRAY OF CHAR): INTEGER
                создает новый файл с именем FName (полное имя с путем),
                открывет файл для записи и возвращает идентификатор файла
                (целое число), в случае ошибки, возвращает -1

        PROCEDURE Open(FName: ARRAY OF CHAR; Mode: INTEGER): INTEGER
                открывает существующий файл с именем FName (полное имя с
                путем) в режиме Mode = (OPEN_R (только чтение), OPEN_W
                (только запись), OPEN_RW (чтение и запись)), возвращает
                идентификатор файла (целое число), в случае ошибки,
                возвращает -1

        PROCEDURE Read(F, Buffer, Count: INTEGER): INTEGER
                Читает данные из файла в память. F - числовой идентификатор
                файла, Buffer - адрес области памяти, Count - количество байт,
                которое требуется прочитать из файла; возвращает количество
                байт, которое было прочитано из файла

        PROCEDURE Write(F, Buffer, Count: INTEGER): INTEGER
                Записывает данные из памяти в файл. F - числовой идентификатор
                файла, Buffer - адрес области памяти, Count - количество байт,
                которое требуется записать в файл; возвращает количество байт,
                которое было записано в файл

        PROCEDURE Seek(F, Offset, Origin: INTEGER): INTEGER
                устанавливает позицию чтения-записи файла с идентификатором F
                на Offset, относительно Origin = (SEEK_BEG - начало файла,
                SEEK_CUR - текущая позиция, SEEK_END - конец файла),
                возвращает позицию относительно начала файла, например:
                Seek(F, 0, 2) - устанавливает позицию на конец файла и
                возвращает длину файла; при ошибке возвращает -1

        PROCEDURE Close(F: INTEGER)
                закрывает ранее открытый файл с идентификатором F

        PROCEDURE Delete(FName: ARRAY OF CHAR): BOOLEAN
                удаляет файл с именем FName (полное имя с путем),
                возвращает TRUE, если файл успешно удален

        PROCEDURE Exists(FName: ARRAY OF CHAR): BOOLEAN
                возвращает TRUE, если файл с именем FName (полное имя)
                существует

        PROCEDURE Load(FName: ARRAY OF CHAR; VAR Size: INTEGER): INTEGER
                загружает в память существующий файл с именем FName (полное имя с
                путем), возвращает адрес памяти, куда был загружен файл,
                записывает размер файла в параметр Size;
                при ошибке возвращает 0

        PROCEDURE CreateDir(DirName: ARRAY OF CHAR): BOOLEAN
                создает папку с именем DirName, все промежуточные папки
                должны существовать. В случае ошибки, возвращает FALSE

        PROCEDURE RemoveDir(DirName: ARRAY OF CHAR): BOOLEAN
                удаляет пустую папку с именем DirName. В случае ошибки,
                возвращает FALSE

        PROCEDURE ExistsDir(DirName: ARRAY OF CHAR): BOOLEAN
                возвращает TRUE, если папка с именем DirName существует

------------------------------------------------------------------------------
MODULE DateTime - дата, время

        CONST ERR = -7.0E5

        PROCEDURE Now(VAR Year, Month, Day, Hour, Min, Sec, MSec: INTEGER)
                возвращает в параметрах компоненты текущей системной даты и
                времени

        PROCEDURE NowEncode(): REAL;
                возвращает текущую системную дату и
                время (представление REAL)

        PROCEDURE Encode(Year, Month, Day,
            Hour, Min, Sec, MSec: INTEGER): REAL
                возвращает дату, полученную из компонентов
                Year, Month, Day, Hour, Min, Sec, MSec;
                при ошибке возвращает константу ERR = -7.0E5

        PROCEDURE Decode(Date: REAL; VAR Year, Month, Day,
                Hour, Min, Sec, MSec: INTEGER): BOOLEAN
                извлекает компоненты
                Year, Month, Day, Hour, Min, Sec, MSec из даты Date;
                при ошибке возвращает FALSE

------------------------------------------------------------------------------
MODULE Args - параметры программы

        VAR argc: INTEGER
                количество параметров программы, включая имя
                исполняемого файла

        PROCEDURE GetArg(n: INTEGER; VAR s: ARRAY OF CHAR)
                записывает в строку s n-й параметр программы,
                нумерация параметров от 0 до argc - 1,
                нулевой параметр -- имя исполняемого файла

------------------------------------------------------------------------------
MODULE Utils - разное

        PROCEDURE Utf8To16(source: ARRAY OF CHAR;
            VAR dest: ARRAY OF CHAR): INTEGER;
                преобразует символы строки source из кодировки UTF-8 в
                кодировку UTF-16, результат записывает в строку dest,
                возвращает количество 16-битных символов, записанных в dest

        PROCEDURE PutSeed(seed: INTEGER)
                Инициализация генератора случайных чисел целым числом seed

        PROCEDURE Rnd(range: INTEGER): INTEGER
                Целые случайные числа в диапазоне 0 <= x < range

------------------------------------------------------------------------------
MODULE WINAPI - привязки к некоторым API-функциям Windows