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

        ¨¡«¨®â¥ª  (KolibriOS)

------------------------------------------------------------------------------
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

------------------------------------------------------------------------------
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 ConsoleLib - ®¡¥à⪠ ¡¨¡«¨®â¥ª¨ console.obj

------------------------------------------------------------------------------
MODULE Math - ¬ â¥¬ â¨ç¥áª¨¥ ä㭪樨

        CONST

                pi = 3.141592653589793D+00
                e  = 2.718281828459045D+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 arcsinh(x: REAL): REAL
                ®¡à â­ë© £¨¯¥à¡®«¨ç¥áª¨© ᨭãá x

        PROCEDURE arccosh(x: REAL): REAL
                ®¡à â­ë© £¨¯¥à¡®«¨ç¥áª¨© ª®á¨­ãá x

        PROCEDURE arctanh(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

------------------------------------------------------------------------------
MODULE Debug - ¢ë¢®¤ ­  ¤®áªã ®â« ¤ª¨
        ˆ­â¥àä¥©á ª ª ¬®¤ã«ì Out

        PROCEDURE Open
                ®âªà뢠¥â ¤®áªã ®â« ¤ª¨

------------------------------------------------------------------------------
MODULE File - à ¡®â  á ä ©«®¢®© á¨á⥬®©

        TYPE

                FNAME = ARRAY 520 OF CHAR

                FS = POINTER TO rFS

                rFS = RECORD (* ¨­ä®à¬ æ¨®­­ ï áâàãªâãà  ä ©«  *)
                        subfunc, pos, hpos, bytes, buffer: INTEGER;
                        name: FNAME
                END

                FD = POINTER TO rFD

                rFD = RECORD (* áâàãªâãà  ¡«®ª  ¤ ­­ëå ¢å®¤  ª â «®£  *)
                        attr: INTEGER;
                        ntyp: CHAR;
                        reserved: ARRAY 3 OF CHAR;
                        time_create, date_create,
                        time_access, date_access,
                        time_modif,  date_modif,
                        size, hsize: INTEGER;
                        name: FNAME
                END

        CONST

                SEEK_BEG = 0
                SEEK_CUR = 1
                SEEK_END = 2

        PROCEDURE Load(FName: ARRAY OF CHAR; VAR size: INTEGER): INTEGER;
                ‡ £à㦠¥â ¢ ¯ ¬ïâì ä ©« á ¨¬¥­¥¬ FName, § ¯¨á뢠¥â ¢ ¯ à ¬¥âà
                size à §¬¥à ä ©« , ¢®§¢à é ¥â  ¤à¥á § £à㦥­­®£® ä ©« 
                ¨«¨ 0 (®è¨¡ª ). à¨ ­¥®¡å®¤¨¬®áâ¨, à á¯ ª®¢ë¢ ¥â
                ä ©« (kunpack).

        PROCEDURE GetFileInfo(FName: ARRAY OF CHAR; VAR Info: rFD): BOOLEAN
                ‡ ¯¨á뢠¥â áâàãªâãàã ¡«®ª  ¤ ­­ëå ¢å®¤  ª â «®£  ¤«ï ä ©« 
                ¨«¨ ¯ ¯ª¨ á ¨¬¥­¥¬ FName ¢ ¯ à ¬¥âà Info.
                à¨ ®è¨¡ª¥ ¢®§¢à é ¥â FALSE.

        PROCEDURE Exists(FName: ARRAY OF CHAR): BOOLEAN
                ¢®§¢à é ¥â TRUE, ¥á«¨ ä ©« á ¨¬¥­¥¬ FName áãé¥áâ¢ã¥â

        PROCEDURE Close(VAR F: FS)
                ®á¢®¡®¦¤ ¥â ¯ ¬ïâì, ¢ë¤¥«¥­­ãî ¤«ï ¨­ä®à¬ æ¨®­­®© áâàãªâãàë
                ä ©«  F ¨ ¯à¨á¢ ¨¢ ¥â F §­ ç¥­¨¥ NIL

        PROCEDURE Open(FName: ARRAY OF CHAR): FS
                ¢®§¢à é ¥â 㪠§ â¥«ì ­  ¨­ä®à¬ æ¨®­­ãî áâàãªâãàã ä ©«  á
                ¨¬¥­¥¬ FName, ¯à¨ ®è¨¡ª¥ ¢®§¢à é ¥â NIL

        PROCEDURE Delete(FName: ARRAY OF CHAR): BOOLEAN
                㤠«ï¥â ä ©« á ¨¬¥­¥¬ FName, ¯à¨ ®è¨¡ª¥ ¢®§¢à é ¥â FALSE

        PROCEDURE Seek(F: FS; Offset, Origin: INTEGER): INTEGER
                ãáâ ­ ¢«¨¢ ¥â ¯®§¨æ¨î ç⥭¨ï-§ ¯¨á¨ ä ©«  F ­  Offset,
                ®â­®á¨â¥«ì­® Origin = (SEEK_BEG - ­ ç «® ä ©« ,
                SEEK_CUR - ⥪ãé ï ¯®§¨æ¨ï, SEEK_END - ª®­¥æ ä ©« ),
                ¢®§¢à é ¥â ¯®§¨æ¨î ®â­®á¨â¥«ì­® ­ ç «  ä ©« , ­ ¯à¨¬¥à:
                        Seek(F, 0, SEEK_END)
                ãáâ ­ ¢«¨¢ ¥â ¯®§¨æ¨î ­  ª®­¥æ ä ©«  ¨ ¢®§¢à é ¥â ¤«¨­ã
                ä ©« ; ¯à¨ ®è¨¡ª¥ ¢®§¢à é ¥â -1

        PROCEDURE Read(F: FS; Buffer, Count: INTEGER): INTEGER
                —¨â ¥â ¤ ­­ë¥ ¨§ ä ©«  ¢ ¯ ¬ïâì. F - 㪠§ â¥«ì ­ 
                ¨­ä®à¬ æ¨®­­ãî áâàãªâãàã ä ©« , Buffer -  ¤à¥á ®¡« áâ¨
                ¯ ¬ïâ¨, Count - ª®«¨ç¥á⢮ ¡ ©â, ª®â®à®¥ âॡã¥âáï ¯à®ç¨â âì
                ¨§ ä ©« ; ¢®§¢à é ¥â ª®«¨ç¥á⢮ ¡ ©â, ª®â®à®¥ ¡ë«® ¯à®ç¨â ­®
                ¨ ᮮ⢥âáâ¢ãî騬 ®¡à §®¬ ¨§¬¥­ï¥â ¯®§¨æ¨î ç⥭¨ï/§ ¯¨á¨ ¢
                ¨­ä®à¬ æ¨®­­®© áâàãªâãॠF.

        PROCEDURE Write(F: FS; Buffer, Count: INTEGER): INTEGER
                ‡ ¯¨á뢠¥â ¤ ­­ë¥ ¨§ ¯ ¬ï⨠¢ ä ©«. F - 㪠§ â¥«ì ­ 
                ¨­ä®à¬ æ¨®­­ãî áâàãªâãàã ä ©« , Buffer -  ¤à¥á ®¡« áâ¨
                ¯ ¬ïâ¨, Count - ª®«¨ç¥á⢮ ¡ ©â, ª®â®à®¥ âॡã¥âáï § ¯¨á âì
                ¢ ä ©«; ¢®§¢à é ¥â ª®«¨ç¥á⢮ ¡ ©â, ª®â®à®¥ ¡ë«® § ¯¨á ­® ¨
                ᮮ⢥âáâ¢ãî騬 ®¡à §®¬ ¨§¬¥­ï¥â ¯®§¨æ¨î ç⥭¨ï/§ ¯¨á¨ ¢
                ¨­ä®à¬ æ¨®­­®© áâàãªâãॠF.

        PROCEDURE Create(FName: ARRAY OF CHAR): FS
                ᮧ¤ ¥â ­®¢ë© ä ©« á ¨¬¥­¥¬ FName (¯®«­®¥ ¨¬ï), ¢®§¢à é ¥â
                㪠§ â¥«ì ­  ¨­ä®à¬ æ¨®­­ãî áâàãªâãàã ä ©« ,
                ¯à¨ ®è¨¡ª¥ ¢®§¢à é ¥â NIL

        PROCEDURE CreateDir(DirName: ARRAY OF CHAR): BOOLEAN
                ᮧ¤ ¥â ¯ ¯ªã á ¨¬¥­¥¬ DirName, ¢á¥ ¯à®¬¥¦ãâ®ç­ë¥ ¯ ¯ª¨
                ¤®«¦­ë áãé¥á⢮¢ âì, ¯à¨ ®è¨¡ª¥ ¢®§¢à é ¥â FALSE

        PROCEDURE DeleteDir(DirName: ARRAY OF CHAR): BOOLEAN
                㤠«ï¥â ¯ãáâãî ¯ ¯ªã á ¨¬¥­¥¬ DirName,
                ¯à¨ ®è¨¡ª¥ ¢®§¢à é ¥â FALSE

        PROCEDURE DirExists(DirName: ARRAY OF CHAR): BOOLEAN
                ¢®§¢à é ¥â TRUE, ¥á«¨ ¯ ¯ª  á ¨¬¥­¥¬ DirName áãé¥áâ¢ã¥â

------------------------------------------------------------------------------
MODULE Read - ç⥭¨¥ ®á­®¢­ëå ⨯®¢ ¤ ­­ëå ¨§ ä ©«  F

        à®æ¥¤ãàë ¢®§¢à é îâ TRUE ¢ á«ãç ¥ ãᯥ譮© ®¯¥à æ¨¨ ç⥭¨ï ¨
        ᮮ⢥âáâ¢ãî騬 ®¡à §®¬ ¨§¬¥­ïîâ ¯®§¨æ¨î ç⥭¨ï/§ ¯¨á¨ ¢
        ¨­ä®à¬ æ¨®­­®© áâàãªâãॠF

        PROCEDURE Char(F: File.FS; VAR x: CHAR): BOOLEAN

        PROCEDURE Int(F: File.FS; VAR x: INTEGER): BOOLEAN

        PROCEDURE Real(F: File.FS; VAR x: REAL): BOOLEAN

        PROCEDURE Boolean(F: File.FS; VAR x: BOOLEAN): BOOLEAN

        PROCEDURE Set(F: File.FS; VAR x: SET): BOOLEAN

        PROCEDURE Card16(F: File.FS; VAR x: SYSTEM.CARD16): BOOLEAN

------------------------------------------------------------------------------
MODULE Write - § ¯¨áì ®á­®¢­ëå ⨯®¢ ¤ ­­ëå ¢ ä ©« F

        à®æ¥¤ãàë ¢®§¢à é îâ TRUE ¢ á«ãç ¥ ãᯥ譮© ®¯¥à æ¨¨ § ¯¨á¨ ¨
        ᮮ⢥âáâ¢ãî騬 ®¡à §®¬ ¨§¬¥­ïîâ ¯®§¨æ¨î ç⥭¨ï/§ ¯¨á¨ ¢
        ¨­ä®à¬ æ¨®­­®© áâàãªâãॠF

        PROCEDURE Char(F: File.FS; x: CHAR): BOOLEAN

        PROCEDURE Int(F: File.FS; x: INTEGER): BOOLEAN

        PROCEDURE Real(F: File.FS; x: REAL): BOOLEAN

        PROCEDURE Boolean(F: File.FS; x: BOOLEAN): BOOLEAN

        PROCEDURE Set(F: File.FS; x: SET): BOOLEAN

        PROCEDURE Card16(F: File.FS; x: SYSTEM.CARD16): BOOLEAN

------------------------------------------------------------------------------
MODULE DateTime - ¤ â , ¢à¥¬ï

        CONST ERR = -7.0E5

        PROCEDURE Now(VAR Year, Month, Day, Hour, Min, Sec: INTEGER)
                § ¯¨á뢠¥â ¢ ¯ à ¬¥âàë ª®¬¯®­¥­âë ⥪ã饩 á¨á⥬­®© ¤ âë ¨
                ¢à¥¬¥­¨

        PROCEDURE Encode(Year, Month, Day, Hour, Min, Sec: INTEGER): REAL
                ¢®§¢à é ¥â ¤ âã, ¯®«ã祭­ãî ¨§ ª®¬¯®­¥­â®¢
                Year, Month, Day, Hour, Min, Sec;
                ¯à¨ ®è¨¡ª¥ ¢®§¢à é ¥â ª®­áâ ­âã ERR = -7.0D5

        PROCEDURE Decode(Date: REAL; VAR Year, Month, Day,
                                Hour, Min, Sec: INTEGER): BOOLEAN
                ¨§¢«¥ª ¥â ª®¬¯®­¥­âë
                Year, Month, Day, Hour, Min, Sec ¨§ ¤ âë Date;
                ¯à¨ ®è¨¡ª¥ ¢®§¢à é ¥â FALSE

------------------------------------------------------------------------------
MODULE Args - ¯ à ¬¥âàë ¯à®£à ¬¬ë

        VAR argc: INTEGER
                ª®«¨ç¥á⢮ ¯ à ¬¥â஢ ¯à®£à ¬¬ë, ¢ª«îç ï ¨¬ï
                ¨á¯®«­ï¥¬®£® ä ©« 

        PROCEDURE GetArg(n: INTEGER; VAR s: ARRAY OF CHAR)
                § ¯¨á뢠¥â ¢ áâபã s n-© ¯ à ¬¥âà ¯à®£à ¬¬ë,
                ­ã¬¥à æ¨ï ¯ à ¬¥â஢ ®â 0 ¤® argc - 1,
                ­ã«¥¢®© ¯ à ¬¥âà -- ¨¬ï ¨á¯®«­ï¥¬®£® ä ©« 

------------------------------------------------------------------------------
MODULE KOSAPI

        PROCEDURE sysfunc1(arg1: INTEGER): INTEGER
        PROCEDURE sysfunc2(arg1, arg2: INTEGER): INTEGER
        ...
        PROCEDURE sysfunc7(arg1, arg2, ..., arg7: INTEGER): INTEGER
                Ž¡¥à⪨ ¤«ï ä㭪権 API ï¤à  KolibriOS.
                arg1 .. arg7 ᮮ⢥âáâ¢ãîâ ॣ¨áâà ¬
                        eax, ebx, ecx, edx, esi, edi, ebp;
                ¢®§¢à é îâ §­ ç¥­¨¥ ॣ¨áâà  eax ¯®á«¥ á¨á⥬­®£® ¢ë§®¢ .

        PROCEDURE sysfunc22(arg1, arg2: INTEGER; VAR res2: INTEGER): INTEGER
                Ž¡¥à⪠ ¤«ï ä㭪権 API ï¤à  KolibriOS.
                arg1 - ॣ¨áâà eax, arg2 - ॣ¨áâà ebx,
                res2 - §­ ç¥­¨¥ ॣ¨áâà  ebx ¯®á«¥ á¨á⥬­®£® ¢ë§®¢ ;
                ¢®§¢à é ¥â §­ ç¥­¨¥ ॣ¨áâà  eax ¯®á«¥ á¨á⥬­®£® ¢ë§®¢ .

        PROCEDURE malloc(size: INTEGER): INTEGER
                ‚뤥«ï¥â ¡«®ª ¯ ¬ïâ¨.
                size - à §¬¥à ¡«®ª  ¢ ¡ ©â å,
                ¢®§¢à é ¥â  ¤à¥á ¢ë¤¥«¥­­®£® ¡«®ª 

        PROCEDURE free(ptr: INTEGER): INTEGER
                Žá¢®¡®¦¤ ¥â à ­¥¥ ¢ë¤¥«¥­­ë© ¡«®ª ¯ ¬ïâ¨ á  ¤à¥á®¬ ptr,
                ¢®§¢à é ¥â 0

        PROCEDURE realloc(ptr, size: INTEGER): INTEGER
                ¥à¥à á¯à¥¤¥«ï¥â ¡«®ª ¯ ¬ïâ¨,
                ptr -  ¤à¥á à ­¥¥ ¢ë¤¥«¥­­®£® ¡«®ª ,
                size - ­®¢ë© à §¬¥à,
                ¢®§¢à é ¥â 㪠§ â¥«ì ­  ¯¥à¥à á¯à¥¤¥«¥­­ë© ¡«®ª,
                0 ¯à¨ ®è¨¡ª¥

        PROCEDURE GetCommandLine(): INTEGER
                ‚®§¢à é ¥â  ¤à¥á áâப¨ ¯ à ¬¥â஢

        PROCEDURE GetName(): INTEGER
                ‚®§¢à é ¥â  ¤à¥á áâப¨ á ¨¬¥­¥¬ ¯à®£à ¬¬ë

        PROCEDURE LoadLib(name: ARRAY OF CHAR): INTEGER
                ‡ £à㦠¥â DLL á ¯®«­ë¬ ¨¬¥­¥¬ name. ‚®§¢à é ¥â  ¤à¥á â ¡«¨æë
                íªá¯®àâ . à¨ ®è¨¡ª¥ ¢®§¢à é ¥â 0.

        PROCEDURE GetProcAdr(name: ARRAY OF CHAR; lib: INTEGER): INTEGER
                name - ¨¬ï ¯à®æ¥¤ãàë
                lib -  ¤à¥á â ¡«¨æë íªá¯®àâ  DLL
                ‚®§¢à é ¥â  ¤à¥á ¯à®æ¥¤ãàë. à¨ ®è¨¡ª¥ ¢®§¢à é ¥â 0.

------------------------------------------------------------------------------
MODULE ColorDlg - à ¡®â  á ¤¨ «®£®¬ "Color Dialog"

        TYPE

                Dialog = POINTER TO RECORD (* áâàãªâãà  ¤¨ «®£  *)
                    status: INTEGER   (* á®áâ®ï­¨¥ ¤¨ «®£ :
                                         0 - ¯®«ì§®¢ â¥«ì ­ ¦ « Cancel
                                         1 - ¯®«ì§®¢ â¥«ì ­ ¦ « OK
                                         2 - ¤¨ «®£ ®âªàëâ           *)

                    color:  INTEGER   (* ¢ë¡à ­­ë© 梥â *)
                END

        PROCEDURE Create(draw_window: DRAW_WINDOW): Dialog
                ᮧ¤ âì ¤¨ «®£
                draw_window - ¯à®æ¥¤ãà  ¯¥à¥à¨á®¢ª¨ ®á­®¢­®£® ®ª­ 
                (TYPE DRAW_WINDOW = PROCEDURE);
                ¯à®æ¥¤ãà  ¢®§¢à é ¥â 㪠§ â¥«ì ­  áâàãªâãàã ¤¨ «®£ 

        PROCEDURE Show(cd: Dialog)
                ¯®ª § âì ¤¨ «®£
                cd - 㪠§ â¥«ì ­  áâàãªâãàã ¤¨ «®£ , ª®â®àë© ¡ë« ᮧ¤ ­ à ­¥¥
                ¯à®æ¥¤ãன Create

        PROCEDURE Destroy(VAR cd: Dialog)
                ã­¨ç⮦¨âì ¤¨ «®£
                cd - 㪠§ â¥«ì ­  áâàãªâãàã ¤¨ «®£ 

------------------------------------------------------------------------------
MODULE OpenDlg - à ¡®â  á ¤¨ «®£®¬ "Open Dialog"

        TYPE

                Dialog = POINTER TO RECORD (* áâàãªâãà  ¤¨ «®£  *)
                    status:   INTEGER  (* á®áâ®ï­¨¥ ¤¨ «®£ :
                                          0 - ¯®«ì§®¢ â¥«ì ­ ¦ « Cancel
                                          1 - ¯®«ì§®¢ â¥«ì ­ ¦ « OK
                                          2 - ¤¨ «®£ ®âªàëâ           *)

                    FileName: ARRAY 4096 OF CHAR (* ¨¬ï ¢ë¡à ­­®£® ä ©«  *)
                    FilePath: ARRAY 4096 OF CHAR (* ¯®«­®¥ ¨¬ï ¢ë¡à ­­®£®
                                                    ä ©«                 *)
                END

        PROCEDURE Create(draw_window: DRAW_WINDOW; type: INTEGER; def_path,
                        filter: ARRAY OF CHAR): Dialog
                ᮧ¤ âì ¤¨ «®£
                draw_window - ¯à®æ¥¤ãà  ¯¥à¥à¨á®¢ª¨ ®á­®¢­®£® ®ª­ 
                        (TYPE DRAW_WINDOW = PROCEDURE)
                type -  ⨯ ¤¨ «®£ 
                        0 - ®âªàëâì
                        1 - á®åà ­¨âì
                        2 - ¢ë¡à âì ¯ ¯ªã
                def_path - ¯ãâì ¯® 㬮«ç ­¨î, ¯ ¯ª  def_path ¡ã¤¥â ®âªàëâ 
                        ¯à¨ ¯¥à¢®¬ § ¯ã᪥ ¤¨ «®£ 
                filter - ¢ áâப¥ § ¯¨á ­® ¯¥à¥ç¨á«¥­¨¥ à áè¨à¥­¨© ä ©«®¢,
                        ª®â®àë¥ ¡ã¤ãâ ¯®ª § ­ë ¢ ¤¨ «®£®¢®¬ ®ª­¥, à áè¨à¥­¨ï
                        à §¤¥«ïîâáï ᨬ¢®«®¬ "|", ­ ¯à¨¬¥à: "ASM|TXT|INI"
                ¯à®æ¥¤ãà  ¢®§¢à é ¥â 㪠§ â¥«ì ­  áâàãªâãàã ¤¨ «®£ 

        PROCEDURE Show(od: Dialog; Width, Height: INTEGER)
                ¯®ª § âì ¤¨ «®£
                od - 㪠§ â¥«ì ­  áâàãªâãàã ¤¨ «®£ , ª®â®àë© ¡ë« ᮧ¤ ­ à ­¥¥
                     ¯à®æ¥¤ãன Create
                Width ¨ Height - è¨à¨­  ¨ ¢ëá®â  ¤¨ «®£®¢®£® ®ª­ 

        PROCEDURE Destroy(VAR od: Dialog)
                ã­¨ç⮦¨âì ¤¨ «®£
                od - 㪠§ â¥«ì ­  áâàãªâãàã ¤¨ «®£ 

------------------------------------------------------------------------------
MODULE kfonts - à ¡®â  á kf-èà¨äâ ¬¨

        CONST

                bold            =   1
                italic          =   2
                underline       =   4
                strike_through  =   8
                smoothing       =  16
                bpp32           =  32

        TYPE

                TFont = POINTER TO TFont_desc (* 㪠§ â¥«ì ­  èà¨äâ *)

        PROCEDURE LoadFont(file_name: ARRAY OF CHAR): TFont
                § £à㧨âì èà¨äâ ¨§ ä ©« 
                file_name   ¨¬ï kf-ä ©« 
                १-â:      㪠§ â¥«ì ­  èà¨äâ/NIL (®è¨¡ª )

        PROCEDURE SetSize(Font: TFont; font_size: INTEGER): BOOLEAN
                ãáâ ­®¢¨âì à §¬¥à èà¨äâ 
                Font        㪠§ â¥«ì ­  èà¨äâ
                font_size   à §¬¥à èà¨äâ 
                १-â:      TRUE/FALSE (®è¨¡ª )

        PROCEDURE Enabled(Font: TFont; font_size: INTEGER): BOOLEAN
                ¯à®¢¥à¨âì, ¥áâì «¨ èà¨äâ, § ¤ ­­®£® à §¬¥à 
                Font        㪠§ â¥«ì ­  èà¨äâ
                font_size   à §¬¥à èà¨äâ 
                १-â:      TRUE/FALSE (èà¨äâ  ­¥â)

        PROCEDURE Destroy(VAR Font: TFont)
                ¢ë£à㧨âì èà¨äâ, ®á¢®¡®¤¨âì ¤¨­ ¬¨ç¥áªãî ¯ ¬ïâì
                Font        㪠§ â¥«ì ­  èà¨äâ
                à¨á¢ ¨¢ ¥â ¯¥à¥¬¥­­®© Font §­ ç¥­¨¥ NIL

        PROCEDURE TextHeight(Font: TFont): INTEGER
                ¯®«ãç¨âì ¢ëá®âã áâப¨ ⥪áâ 
                Font        㪠§ â¥«ì ­  èà¨äâ
                १-â:      ¢ëá®â  áâப¨ ⥪áâ  ¢ ¯¨ªá¥«ïå

        PROCEDURE TextWidth(Font: TFont;
                    str, length, params: INTEGER): INTEGER
                ¯®«ãç¨âì è¨à¨­ã áâப¨ ⥪áâ 
                Font        㪠§ â¥«ì ­  èà¨äâ
                str          ¤à¥á áâப¨ ⥪áâ  ¢ ª®¤¨à®¢ª¥ Win-1251
                length      ª®«¨ç¥á⢮ ᨬ¢®«®¢ ¢ áâப¥ ¨«¨ -1, ¥á«¨ áâப 
                            § ¢¥àè ¥âáï ­ã«¥¬
                params      ¯ à ¬¥âàë-ä« £¨ á¬. ­¨¦¥
                १-â:      è¨à¨­  áâப¨ ⥪áâ  ¢ ¯¨ªá¥«ïå

        PROCEDURE TextOut(Font: TFont;
                    canvas, x, y, str, length, color, params: INTEGER)
                ¢ë¢¥á⨠⥪áâ ¢ ¡ãä¥à
                ¤«ï ¢ë¢®¤  ¡ãä¥à  ¢ ®ª­®, ¨á¯®«ì§®¢ âì ä.65 ¨«¨
                ä.7 (¥á«¨ ¡ãä¥à 24-¡¨â­ë©)
                Font        㪠§ â¥«ì ­  èà¨äâ
                canvas       ¤à¥á £à ä¨ç¥áª®£® ¡ãä¥à 
                            áâàãªâãà  ¡ãä¥à :
                              Xsize       dd
                              Ysize       dd
                              picture     rb  Xsize * Ysize * 4 (32 ¡¨â )
                                              ¨«¨ Xsize * Ysize * 3 (24 ¡¨â )
                x, y        ª®®à¤¨­ âë ⥪áâ  ®â­®á¨â¥«ì­® «¥¢®£® ¢¥àå­¥£®
                            㣫  ¡ãä¥à 
                str          ¤à¥á áâப¨ ⥪áâ  ¢ ª®¤¨à®¢ª¥ Win-1251
                length      ª®«¨ç¥á⢮ ᨬ¢®«®¢ ¢ áâப¥ ¨«¨ -1, ¥á«¨ áâப 
                            § ¢¥àè ¥âáï ­ã«¥¬
                color       梥â ⥪áâ  0x00RRGGBB
                params      ¯ à ¬¥âàë-ä« £¨:
                               1   ¦¨à­ë©
                               2   ªãàᨢ
                               4   ¯®¤ç¥àª­ãâë©
                               8   ¯¥à¥ç¥àª­ãâë©
                              16   ¯à¨¬¥­¨âì ᣫ ¦¨¢ ­¨¥
                              32   ¢ë¢®¤ ¢ 32-¡¨â­ë© ¡ãä¥à
                            ¢®§¬®¦­® ¨á¯®«ì§®¢ ­¨¥ ä« £®¢ ¢ «î¡ëå á®ç¥â ­¨ïå
------------------------------------------------------------------------------
MODULE RasterWorks - ®¡¥à⪠ ¡¨¡«¨®â¥ª¨ Rasterworks.obj
------------------------------------------------------------------------------
MODULE libimg - ®¡¥à⪠ ¡¨¡«¨®â¥ª¨ libimg.obj
------------------------------------------------------------------------------