Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1.         Š®¬¯¨«ïâ®à ï§ëª  ¯à®£à ¬¬¨à®¢ ­¨ï Oberon-07/11 ¤«ï i386
  2.                 Windows/Linux/KolibriOS.
  3. ------------------------------------------------------------------------------
  4.  
  5.         ‘®áâ ¢ ¯à®£à ¬¬ë
  6.  
  7. 1.      Compiler.kex (KolibriOS) - ¨á¯®«­ï¥¬ë© ä ©« ª®¬¯¨«ïâ®à .
  8.         ‚室 - ⥪áâ®¢ë¥ ä ©«ë ¬®¤ã«¥© á à áè¨à¥­¨¥¬ ".ob07", ª®¤¨à®¢ª  ANSI
  9.         ¨«¨ UTF-8 á BOM-ᨣ­ âãன.
  10.         ‚ë室 - ¨á¯®«­ï¥¬ë© ä ©« ä®à¬ â  PE, ELF ¨«¨ MENUET01/MS COFF.
  11.          à ¬¥âàë:
  12.         1) ¨¬ï £« ¢­®£® ¬®¤ã«ï
  13.         2) ⨯ ¯à¨«®¦¥­¨ï ¨ ¯« âä®à¬ 
  14.                 "con" - Windows console
  15.                 "gui" - Windows GUI
  16.                 "dll" - Windows DLL
  17.                 "elf" - Linux
  18.                 "kos" - KolibriOS
  19.                 "obj" - KolibriOS DLL
  20.         3) à §¬¥à áâíª  ¢ ¬¥£ ¡ ©â å, ­¥®¡ï§ â¥«ì­ë© ¯ à ¬¥âà, ¯® 㬮«ç ­¨î -
  21.         1 Œ¡, ¤«ï ELF ¨£­®à¨àã¥âáï. …᫨ 2-© ¯ à ¬¥âà = "obj" (KolibriOS DLL),
  22.         â® 3-© ¯ à ¬¥âà § ¤ ¥âáï è¥áâ­ ¤æ â¨à¨ç­ë¬ ç¨á«®¬
  23.         (0x00000001 .. 0xffffffff) ¨ ®¯à¥¤¥«ï¥â ¢¥àá¨î ¯à®£à ¬¬ë,
  24.         ¯® 㬮«ç ­¨î - 0x00010000 (v1.0).
  25.          ¯à¨¬¥à:
  26.                 "C:\oberon-07\example.ob07" con 1
  27.                 "C:\oberon-07\example.ob07" obj 0x00020005 (* v2.5 *)
  28.         ‚ á«ãç ¥ ãᯥ譮© ª®¬¯¨«ï樨, ª®¬¯¨«ïâ®à ¯¥à¥¤ ¥â ª®¤ § ¢¥à襭¨ï 0,
  29.         ¨­ ç¥ 1. à¨ à ¡®â¥ ª®¬¯¨«ïâ®à  ¢ KolibriOS, ª®¤ § ¢¥à襭¨ï ­¥
  30.         ¯¥à¥¤ ¥âáï. ‘®®¡é¥­¨ï ª®¬¯¨«ïâ®à  ¢ë¢®¤ïâáï ­  ª®­á®«ì (Windows,
  31.         KolibriOS), ¢ â¥à¬¨­ « (Linux).
  32. 2.       ¯ª  Lib - ¡¨¡«¨®â¥ª  ¬®¤ã«¥©
  33. 3.       ¯ª  Source - ¨á室­ë© ª®¤ ª®¬¯¨«ïâ®à 
  34.  
  35. ------------------------------------------------------------------------------
  36.         Žâ«¨ç¨ï ®â ®à¨£¨­ « 
  37.  
  38. 1.       áè¨à¥­ ¯á¥¢¤®¬®¤ã«ì SYSTEM
  39. 2.       §à¥è¥­ ᨬ¢®« "_" ¢ ¨¤¥­â¨ä¨ª â®à å
  40. 3.      „®¡ ¢«¥­ë á¨á⥬­ë¥ ä« £¨
  41. 4.      Ž¯¥à â®à CASE ॠ«¨§®¢ ­ ¢ ᮮ⢥âá⢨¨ á ᨭ⠪á¨á®¬ ¨ ᥬ ­â¨ª®©
  42.         ¤ ­­®£® ®¯¥à â®à  ¢ ï§ëª¥ Oberon (Revision 1.10.90)
  43. 5.       áè¨à¥­ ­ ¡®à áâ ­¤ àâ­ëå ¯à®æ¥¤ãà
  44. 6.      ‘¥¬ ­â¨ª  ®åà ­ë/¯à®¢¥àª¨ ⨯  ãâ®ç­¥­  ¤«ï ­ã«¥¢®£® 㪠§ â¥«ï
  45. 7.      ‘¥¬ ­â¨ª  DIV ¨ MOD ãâ®ç­¥­  ¤«ï ®âà¨æ â¥«ì­ëå ç¨á¥«
  46. 8.      „®¡ ¢«¥­ë ®¤­®áâà®ç­ë¥ ª®¬¬¥­â à¨¨ (­ ç¨­ îâáï á ¯ àë ᨬ¢®«®¢ "//")
  47. 9.       §à¥è¥­ íªá¯®àâ ¯¥à¥¬¥­­ëå ⨯®¢ ARRAY ¨ RECORD (⮫쪮 ¤«ï ç⥭¨ï)
  48.  
  49. ------------------------------------------------------------------------------
  50.         Žá®¡¥­­®á⨠ॠ«¨§ æ¨¨
  51.  
  52. 1.      Žá­®¢­ë¥ ⨯ë
  53.  
  54.           ’¨¯              „¨ ¯ §®­ §­ ç¥­¨©                §¬¥à, ¡ ©â
  55.  
  56.         INTEGER       -2147483648 .. 2147483647                 4
  57.         REAL          1.40E-45 .. 3.34E+38                      4
  58.         LONGREAL      4.94E-324 .. 1.70E+308                    8
  59.         CHAR          ᨬ¢®« ASCII (0X .. 0FFX)                 1
  60.         BOOLEAN       FALSE, TRUE                               1
  61.         SET           ¬­®¦¥á⢮ ¨§ 楫ëå ç¨á¥« {0 .. 31}        4
  62.  
  63. 2.      Œ ªá¨¬ «ì­ ï ¤«¨­  ¨¤¥­â¨ä¨ª â®à®¢ - 255 ᨬ¢®«®¢
  64. 3.      Œ ªá¨¬ «ì­ ï ¤«¨­  áâப®¢ëå ª®­áâ ­â - 255 ᨬ¢®«®¢
  65. 4.      Œ ªá¨¬ «ì­ ï ¤«¨­  áâப ¨á室­®£® ª®¤  - 511 ᨬ¢®«®¢
  66. 5.      Œ ªá¨¬ «ì­ ï à §¬¥à­®áâì ®âªàëâëå ¬ áᨢ®¢ - 5
  67. 6.      Œ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ ®¡ê¥­­ëå ⨯®¢-§ ¯¨á¥© - 2047
  68. 7.      à®æ¥¤ãà  NEW § ¯®«­ï¥â ­ã«ï¬¨ ¢ë¤¥«¥­­ë© ¡«®ª ¯ ¬ïâ¨
  69. 8.      ƒ«®¡ «ì­ë¥ ¨ «®ª «ì­ë¥ ¯¥à¥¬¥­­ë¥ ¨­¨æ¨ «¨§¨àãîâáï ­ã«ï¬¨
  70. 9.      ‚ ®â«¨ç¨¥ ®â ¬­®£¨å Oberon-ॠ«¨§ æ¨©, á¡®à騪 ¬ãá®à  ¨ ¤¨­ ¬¨ç¥áª ï
  71.         ¬®¤ã«ì­®áâì ®âáãâáâ¢ãîâ
  72.  
  73. ------------------------------------------------------------------------------
  74.         á¥¢¤®¬®¤ã«ì SYSTEM
  75.  
  76.   á¥¢¤®¬®¤ã«ì SYSTEM ᮤ¥à¦¨â ­¨§ª®ã஢­¥¢ë¥ ¨ ­¥¡¥§®¯ á­ë¥ ¯à®æ¥¤ãàë,
  77. ®è¨¡ª¨ ¯à¨ ¨á¯®«ì§®¢ ­¨¨ ¯à®æ¥¤ãà ¯á¥¢¤®¬®¤ã«ï SYSTEM ¬®£ã⠯ਢ¥á⨠ª
  78. ¯®¢à¥¦¤¥­¨î ¤ ­­ëå ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï ¨  ¢ à¨©­®¬ã § ¢¥à襭¨î ¯à®£à ¬¬ë.
  79.  
  80.         PROCEDURE ADR(v: «î¡®© ⨯): INTEGER
  81.                 v - ¯¥à¥¬¥­­ ï, ¯à®æ¥¤ãà  ¨«¨ áâப®¢ ï ª®­áâ ­â ;
  82.                 ¢®§¢à é ¥â  ¤à¥á v
  83.  
  84.         PROCEDURE SIZE(T): INTEGER
  85.                 ¢®§¢à é ¥â à §¬¥à ⨯  T
  86.  
  87.         PROCEDURE TYPEID(T): INTEGER
  88.                 T - ⨯-§ ¯¨áì ¨«¨ ⨯-㪠§ â¥«ì,
  89.                 ¢®§¢à é ¥â ­®¬¥à ⨯  ¢ â ¡«¨æ¥ ⨯®¢-§ ¯¨á¥©
  90.  
  91.         PROCEDURE INF(T): T
  92.                 T - REAL ¨«¨ LONGREAL,
  93.                 ¢®§¢à é ¥â ᯥ樠«ì­®¥ ¢¥é¥á⢥­­®¥ §­ ç¥­¨¥ "¡¥áª®­¥ç­®áâì"
  94.  
  95.         PROCEDURE GET(a: INTEGER;
  96.                         VAR v: «î¡®© ®á­®¢­®© ⨯, PROCEDURE, POINTER)
  97.                 v :=  ¬ïâì[a]
  98.  
  99.         PROCEDURE PUT(a: INTEGER; x: «î¡®© ®á­®¢­®© ⨯, PROCEDURE, POINTER)
  100.                  ¬ïâì[a] := x
  101.  
  102.         PROCEDURE MOVE(Source, Dest, n: INTEGER)
  103.                 Š®¯¨àã¥â n ¡ ©â ¯ ¬ï⨠¨§ Source ¢ Dest,
  104.                 ®¡« á⨠Source ¨ Dest ­¥ ¤®«¦­ë ¯¥à¥ªà뢠âìáï
  105.  
  106.         PROCEDURE CODE(s: ARRAY OF CHAR)
  107.                 ‚áâ ¢ª  ¬ è¨­­®£® ª®¤ 
  108.                 s - áâப®¢ ï ª®­áâ ­â  è¥áâ­ ¤æ â¨à¨ç­ëå æ¨äà
  109.                 ª®«¨ç¥á⢮ æ¨äà ¤®«¦­® ¡ëâì ç¥â­ë¬
  110.                 ­ ¯à¨¬¥à: SYSTEM.CODE("B801000000") (* mov eax, 1 *)
  111.  
  112.   ’ ª¦¥ ¢ ¬®¤ã«¥ SYSTEM ®¯à¥¤¥«¥­ ⨯ CARD16 (2 ¡ ©â ). „«ï ⨯  CARD16 ­¥
  113. ¤®¯ã᪠îâáï ­¨ª ª¨¥ ï¢­ë¥ ®¯¥à æ¨¨, §  ¨áª«î祭¨¥¬ ¯à¨á¢ ¨¢ ­¨ï.
  114. à¥®¡à §®¢ ­¨ï CARD16 -> INTEGER ¨ INTEGER -> CARD16 ¬®£ãâ ¡ëâì ॠ«¨§®¢ ­ë
  115. â ª:
  116.  
  117.         PROCEDURE Card16ToInt(w: SYSTEM.CARD16): INTEGER;
  118.         VAR i: INTEGER;
  119.         BEGIN
  120.           SYSTEM.PUT(SYSTEM.ADR(i), w)
  121.           RETURN i
  122.         END Card16ToInt;
  123.  
  124.         PROCEDURE IntToCard16(i: INTEGER): SYSTEM.CARD16;
  125.         VAR w: SYSTEM.CARD16;
  126.         BEGIN
  127.           SYSTEM.GET(SYSTEM.ADR(i), w)
  128.           RETURN w
  129.         END IntToCard16;
  130.  
  131.   ”㭪樨 ¯á¥¢¤®¬®¤ã«ï SYSTEM ­¥«ì§ï ¨á¯®«ì§®¢ âì ¢ ª®­áâ ­â­ëå ¢ëà ¦¥­¨ïå.
  132.  
  133. ------------------------------------------------------------------------------
  134.         ‘¨á⥬­ë¥ ä« £¨
  135.  
  136.   à¨ ®¡ê¥­¨¨ ¯à®æ¥¤ãà­ëå ⨯®¢ ¨ £«®¡ «ì­ëå ¯à®æ¥¤ãà, ¯®á«¥ ª«î祢®£®
  137. á«®¢  PROCEDURE ¬®¦¥â ¡ëâì 㪠§ ­ ä« £ ᮣ« è¥­¨ï ¢ë§®¢ : [stdcall], [cdecl]
  138. ¨«¨ [winapi].  ¯à¨¬¥à:
  139.  
  140.         PROCEDURE [cdecl] MyProc(x, y, z: INTEGER): INTEGER;
  141.  
  142.   …᫨ 㪠§ ­ ä« £ [winapi], â® ¯à¨­¨¬ ¥âáï ᮣ« è¥­¨¥ stdcall ¨
  143. ¯à®æ¥¤ãàã-äã­ªæ¨î ¬®¦­® ¢ë§¢ âì ª ª ᮡá⢥­­® ¯à®æ¥¤ãàã, ¢­¥ ¢ëà ¦¥­¨ï.
  144. ”« £ [winapi] ¤®áâ㯥­ ⮫쪮 ¤«ï ¯« âä®à¬ë Windows.
  145.   à¨ ®¡ê¥­¨¨ ⨯®¢-§ ¯¨á¥©, ¯®á«¥ ª«î祢®£® á«®¢  RECORD ¬®¦¥â ¡ëâì
  146. 㪠§ ­ ä« £ [noalign] ¨«¨ [union]. ”« £ [noalign] ®§­ ç ¥â ®âáãâá⢨¥
  147. ¢ëà ¢­¨¢ ­¨ï ¯®«¥© § ¯¨á¨,   ä« £ [union] ®§­ ç ¥â, ç⮠ᬥ饭¨ï ¢á¥å ¯®«¥©
  148. § ¯¨á¨ à ¢­ë ­ã«î, ¯à¨ í⮬ à §¬¥à § ¯¨á¨ à ¢¥­ à §¬¥àã ­ ¨¡®«ì襣® ¯®«ï.
  149. ‡ ¯¨á¨ RECORD [union] ... END ᮮ⢥âáâ¢ãîâ ®¡ê¥¤¨­¥­¨ï¬ (union) ¢ ï§ëª¥ C.
  150. ‡ ¯¨á¨ á á¨á⥬­ë¬¨ ä« £ ¬¨ ­¥ ¬®£ãâ ¨¬¥âì ¡ §®¢®£® ⨯  ¨ ­¥ ¬®£ãâ ¡ëâì
  151. ¡ §®¢ë¬¨ ⨯ ¬¨ ¤«ï ¤àã£¨å § ¯¨á¥©.
  152.   „«ï ¨á¯®«ì§®¢ ­¨ï á¨á⥬­ëå ä« £®¢, âॡã¥âáï ¨¬¯®àâ¨à®¢ âì SYSTEM.
  153.  
  154. ------------------------------------------------------------------------------
  155.         Ž¯¥à â®à CASE
  156.  
  157.   ‘¨­â ªá¨á ®¯¥à â®à  CASE:
  158.  
  159.         CaseStatement =
  160.                 CASE Expression OF ‘ase {"|" ‘ase}
  161.                         [ELSE StatementSequence] END.
  162.         Case = [CaseLabelList ":" StatementSequence].
  163.         CaseLabelList = CaseLabels {"," CaseLabels}.
  164.         CaseLabels = ConstExpression [".." ConstExpression].
  165.  
  166.    ¯à¨¬¥à:
  167.  
  168.         CASE x OF
  169.         |-1:    DoSomething1
  170.         | 1:    DoSomething2
  171.         | 0:    DoSomething3
  172.         ELSE
  173.                 DoSomething4
  174.         END
  175.  
  176.   ‚ ¬¥âª å ¢ à¨ ­â®¢ ¬®¦­® ¨á¯®«ì§®¢ âì ª®­áâ ­â­ë¥ ¢ëà ¦¥­¨ï, ¢¥âª  ELSE
  177. ­¥®¡ï§ â¥«ì­ . …᫨ ­¥ ¢ë¯®«­¥­ ­¨ ®¤¨­ ¢ à¨ ­â ¨ ELSE ®âáãâáâ¢ã¥â, â®
  178. ¯à®£à ¬¬  ¯à¥à뢠¥âáï á ®è¨¡ª®© ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï.
  179.  
  180. ------------------------------------------------------------------------------
  181.         à®¢¥àª  ¨ ®åà ­  ⨯  ­ã«¥¢®£® 㪠§ â¥«ï
  182.  
  183.   Žà¨£¨­ «ì­®¥ á®®¡é¥­¨¥ ® ï§ëª¥ ­¥ ®¯à¥¤¥«ï¥â ¯®¢¥¤¥­¨¥ ¯à®£à ¬¬ë ¯à¨
  184. ¢ë¯®«­¥­¨¨ ®åà ­ë p(T) ¨ ¯à®¢¥àª¨ ⨯  p IS T ¯à¨ p = NIL. ‚® ¬­®£¨å
  185. Oberon-ॠ«¨§ æ¨ïå ¢ë¯®«­¥­¨¥ â ª®© ®¯¥à æ¨¨ ¯à¨¢®¤¨â ª ®è¨¡ª¥ ¢à¥¬¥­¨
  186. ¢ë¯®«­¥­¨ï. ‚ ¤ ­­®© ॠ«¨§ æ¨¨ ®åà ­  ⨯  ­ã«¥¢®£® 㪠§ â¥«ï ­¥ ¯à¨¢®¤¨â ª
  187. ®è¨¡ª¥,   ¯à®¢¥àª  ⨯  ¤ ¥â १ã«ìâ â FALSE. ‚ à拉 á«ãç ¥¢ íâ® ¯®§¢®«ï¥â
  188. §­ ç¨â¥«ì­® ᮪à â¨âì ç áâ®â㠯ਬ¥­¥­¨ï ®åà ­ë ⨯ .
  189.  
  190. ------------------------------------------------------------------------------
  191.         „®¯®«­¨â¥«ì­ë¥ áâ ­¤ àâ­ë¥ ¯à®æ¥¤ãàë
  192.  
  193.         DISPOSE(VAR v: «î¡®©_㪠§ â¥«ì)
  194.                 Žá¢®¡®¦¤ ¥â ¯ ¬ïâì, ¢ë¤¥«¥­­ãî ¯à®æ¥¤ãன NEW ¤«ï
  195.                 ¤¨­ ¬¨ç¥áª®© ¯¥à¥¬¥­­®© v^, ¨ ¯à¨á¢ ¨¢ ¥â ¯¥à¥¬¥­­®© v
  196.                 §­ ç¥­¨¥ NIL.
  197.  
  198.         LSR(x, n: INTEGER): INTEGER
  199.                 ‹®£¨ç¥áª¨© ᤢ¨£ x ­  n ¡¨â ¢¯à ¢®.
  200.  
  201.         BITS(x: INTEGER): SET
  202.                 ˆ­â¥à¯à¥â¨àã¥â x ª ª §­ ç¥­¨¥ ⨯  SET.
  203.                 ‚믮«­ï¥âáï ­  íâ ¯¥ ª®¬¯¨«ï樨.
  204.  
  205.         LENGTH(s: ARRAY OF CHAR): INTEGER
  206.                 „«¨­  0X-§ ¢¥à襭­®© áâப¨ s, ¡¥§ ãç¥â  ᨬ¢®«  0X.
  207.                 …᫨ ᨬ¢®« 0X ®âáãâáâ¢ã¥â, äã­ªæ¨ï ¢®§¢à é ¥â ¤«¨­ã
  208.                 ¬ áᨢ  s.
  209.  
  210. ------------------------------------------------------------------------------
  211.         DIV ¨ MOD
  212.  
  213.          x         y      x DIV y   x MOD y
  214.  
  215.          5         3         1         2
  216.         -5         3        -2         1
  217.          5        -3        -2        -1
  218.         -5        -3         1        -2
  219.  
  220. ------------------------------------------------------------------------------
  221.         ‘ªàëâë¥ ¯ à ¬¥âàë ¯à®æ¥¤ãà
  222.  
  223.   ¥ª®â®àë¥ ¯à®æ¥¤ãàë ¬®£ãâ ¨¬¥âì áªàëâë¥ ¯ à ¬¥âàë, ®­¨ ®âáãâáâ¢ãîâ ¢ ᯨ᪥
  224. ä®à¬ «ì­ëå ¯ à ¬¥â஢, ­® ãç¨â뢠îâáï ª®¬¯¨«ïâ®à®¬ ¯à¨ âà ­á«ï樨 ¢ë§®¢®¢.
  225. â® ¢®§¬®¦­® ¢ á«¥¤ãîé¨å á«ãç ïå:
  226.  
  227. 1.      à®æ¥¤ãà  ¨¬¥¥â ä®à¬ «ì­ë© ¯ à ¬¥âà ®âªàëâë© ¬ áᨢ:
  228.                 PROCEDURE Proc(x: ARRAY OF ARRAY OF LONGREAL);
  229.         ‚맮¢ â࠭᫨àã¥âáï â ª:
  230.                 Proc(SYSTEM.ADR(x), LEN(x), LEN(x[0])
  231. 2.      à®æ¥¤ãà  ¨¬¥¥â ä®à¬ «ì­ë© ¯ à ¬¥âà-¯¥à¥¬¥­­ãî ⨯  RECORD:
  232.                 PROCEDURE Proc(VAR x: Rec);
  233.         ‚맮¢ â࠭᫨àã¥âáï â ª:
  234.                 Proc(SYSTEM.TYPEID(Rec), SYSTEM.ADR(x))
  235. 3.      à®æ¥¤ãà  ï¢«ï¥âáï ¢«®¦¥­­®©, £«ã¡¨­  ¢«®¦¥­¨ï k,
  236.         ¤«ï £«®¡ «ì­ëå ¯à®æ¥¤ãà k = 0:
  237.                 PROCEDURE Proc(p1, ..., pn);
  238.         ‚맮¢ â࠭᫨àã¥âáï â ª:
  239.                 Proc(base(k - 1), base(k - 2), ..., base(0), p1, ..., pn),
  240.         £¤¥ base(m) -  ¤à¥á ¡ §ë ª ¤à  áâíª  ®å¢ â뢠î饩 ¯à®æ¥¤ãàë £«ã¡¨­ë
  241.         ¢«®¦¥­¨ï m (¨á¯®«ì§ã¥âáï ¤«ï ¤®áâ㯠 ª «®ª «ì­ë¬ ¯¥à¥¬¥­­ë¬
  242.         ®å¢ â뢠î饩 ¯à®æ¥¤ãàë)
  243.  
  244. ------------------------------------------------------------------------------
  245.         Œ®¤ã«ì RTL
  246.  
  247.   ‚ᥠ¯à®£à ¬¬ë ­¥ï¢­® ¨á¯®«ì§ãîâ ¬®¤ã«ì RTL. Š®¬¯¨«ïâ®à â࠭᫨àã¥â
  248. ­¥ª®â®àë¥ ®¯¥à æ¨¨ (¯à®¢¥àª  ¨ ®åà ­  ⨯ , áà ¢­¥­¨¥ áâப, á®®¡é¥­¨ï ®¡
  249. ®è¨¡ª å ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï ¨ ¤à.) ª ª ¢ë§®¢ë ¯à®æ¥¤ãà í⮣® ¬®¤ã«ï. ¥
  250. á«¥¤ã¥â ® ¢ë§ë¢ âì í⨠¯à®æ¥¤ãàë, §  ¨áª«î祭¨¥¬ ¯à®æ¥¤ãàë SetClose:
  251.  
  252.         PROCEDURE SetClose(proc: PROC), £¤¥ TYPE PROC = PROCEDURE
  253.  
  254. SetClose ­ §­ ç ¥â ¯à®æ¥¤ãàã proc (¡¥§ ¯ à ¬¥â஢) ¢ë§ë¢ ¥¬®© ¯à¨ ¢ë£à㧪¥
  255. dll-¡¨¡«¨®â¥ª¨ (Windows), ¥á«¨ ¯à¨«®¦¥­¨¥ ª®¬¯¨«¨àã¥âáï ª ª Windows DLL. „«ï
  256. ¯à®ç¨å ⨯®¢ ¯à¨«®¦¥­¨© ¨ ¯« âä®à¬ ¢ë§®¢ ¯à®æ¥¤ãàë SetClose ­¥ ¢«¨ï¥â ­ 
  257. ¯®¢¥¤¥­¨¥ ¯à®£à ¬¬ë.
  258.   ‘®®¡é¥­¨ï ®¡ ®è¨¡ª å ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï ¢ë¢®¤ïâáï ¢ ¤¨ «®£®¢ëå ®ª­ å
  259. (Windows), ¢ â¥à¬¨­ « (Linux), ­  ¤®áªã ®â« ¤ª¨ (KolibriOS).
  260.  
  261. ------------------------------------------------------------------------------
  262.         Œ®¤ã«ì API
  263.  
  264.   ‘ãé¥áâ¢ãîâ âਠॠ«¨§ æ¨¨ ¬®¤ã«ï API: ¤«ï Windows, Linux ¨ KolibriOS. Š ª ¨
  265. ¬®¤ã«ì RTL, ¬®¤ã«ì API ­¥ ¯à¥¤­ §­ ç¥­ ¤«ï ¯àאַ£® ¨á¯®«ì§®¢ ­¨ï. Ž­
  266. ®¡¥á¯¥ç¨¢ ¥â ªà®áᯫ âä®à¬¥­­®áâì ª®¬¯¨«ïâ®à .
  267.  
  268. ------------------------------------------------------------------------------
  269.         ƒ¥­¥à æ¨ï ¨á¯®«­ï¥¬ëå ä ©«®¢ DLL
  270.  
  271.    §à¥è ¥âáï íªá¯®àâ¨à®¢ âì ⮫쪮 ¯à®æ¥¤ãàë. „«ï í⮣®, ¯à®æ¥¤ãà  ¤®«¦­ 
  272. ­ å®¤¨âìáï ¢ £« ¢­®¬ ¬®¤ã«¥ ¯à®£à ¬¬ë, ¨ ¥¥ ¨¬ï ¤®«¦­® ¡ëâì ®â¬¥ç¥­® ᨬ¢®«®¬
  273. íªá¯®àâ  ("*"). KolibriOS DLL ¢á¥£¤  íªá¯®àâ¨àãîâ ¨¤¥­â¨ä¨ª â®àë "version"
  274. (¢¥àá¨ï ¯à®£à ¬¬ë) ¨ "lib_init" -  ¤à¥á ¯à®æ¥¤ãàë ¨­¨æ¨ «¨§ æ¨¨ DLL:
  275.  
  276.         PROCEDURE [stdcall] lib_init(): INTEGER
  277.  
  278. â  ¯à®æ¥¤ãà  ¤®«¦­  ¡ëâì ¢ë§¢ ­  ¯¥à¥¤ ¨á¯®«ì§®¢ ­¨¥¬ DLL.
  279. à®æ¥¤ãà  ¢á¥£¤  ¢®§¢à é ¥â 1.
  280.   ‚ ­ áâ®ï饥 ¢à¥¬ï £¥­¥à æ¨ï DLL ¤«ï Linux ­¥ ॠ«¨§®¢ ­ .
  281.  
  282. ==============================================================================
  283. ==============================================================================
  284.  
  285.         ¨¡«¨®â¥ª  (KolibriOS)
  286.  
  287. ------------------------------------------------------------------------------
  288. MODULE Out - ª®­á®«ì­ë© ¢ë¢®¤
  289.  
  290.         PROCEDURE Open
  291.                 ä®à¬ «ì­® ®âªà뢠¥â ª®­á®«ì­ë© ¢ë¢®¤
  292.  
  293.         PROCEDURE Int(x, width: INTEGER)
  294.                 ¢ë¢®¤ 楫®£® ç¨á«  x;
  295.                 width - ª®«¨ç¥á⢮ §­ ª®¬¥áâ, ¨á¯®«ì§ã¥¬ëå ¤«ï ¢ë¢®¤ 
  296.  
  297.         PROCEDURE Real(x: LONGREAL; width: INTEGER)
  298.                 ¢ë¢®¤ ¢¥é¥á⢥­­®£® ç¨á«  x ¢ ¯« ¢ î饬 ä®à¬ â¥;
  299.                 width - ª®«¨ç¥á⢮ §­ ª®¬¥áâ, ¨á¯®«ì§ã¥¬ëå ¤«ï ¢ë¢®¤ 
  300.  
  301.         PROCEDURE Char(x: CHAR)
  302.                 ¢ë¢®¤ ᨬ¢®«  x
  303.  
  304.         PROCEDURE FixReal(x: LONGREAL; width, p: INTEGER)
  305.                 ¢ë¢®¤ ¢¥é¥á⢥­­®£® ç¨á«  x ¢ 䨪á¨à®¢ ­­®¬ ä®à¬ â¥;
  306.                 width - ª®«¨ç¥á⢮ §­ ª®¬¥áâ, ¨á¯®«ì§ã¥¬ëå ¤«ï ¢ë¢®¤ ;
  307.                 p - ª®«¨ç¥á⢮ §­ ª®¢ ¯®á«¥ ¤¥áïâ¨ç­®© â®çª¨
  308.  
  309.         PROCEDURE Ln
  310.                 ¯¥à¥å®¤ ­  á«¥¤ãîéãî áâபã
  311.  
  312.         PROCEDURE String(s: ARRAY OF CHAR)
  313.                 ¢ë¢®¤ áâப¨ s
  314.  
  315. ------------------------------------------------------------------------------
  316. MODULE In - ª®­á®«ì­ë© ¢¢®¤
  317.  
  318.         VAR Done: BOOLEAN
  319.                 ¯à¨­¨¬ ¥â §­ ç¥­¨¥ TRUE ¢ á«ãç ¥ ãᯥ譮£® ¢ë¯®«­¥­¨ï
  320.                 ®¯¥à æ¨¨ ¢¢®¤ , ¨­ ç¥ FALSE
  321.  
  322.         PROCEDURE Open
  323.                 ä®à¬ «ì­® ®âªà뢠¥â ª®­á®«ì­ë© ¢¢®¤,
  324.                 â ª¦¥ ¯à¨á¢ ¨¢ ¥â ¯¥à¥¬¥­­®© Done §­ ç¥­¨¥ TRUE
  325.  
  326.         PROCEDURE Int(VAR x: INTEGER)
  327.                 ¢¢®¤ ç¨á«  ⨯  INTEGER
  328.  
  329.         PROCEDURE Char(VAR x: CHAR)
  330.                 ¢¢®¤ ᨬ¢®« 
  331.  
  332.         PROCEDURE Real(VAR x: REAL)
  333.                 ¢¢®¤ ç¨á«  ⨯  REAL
  334.  
  335.         PROCEDURE LongReal(VAR x: LONGREAL)
  336.                 ¢¢®¤ ç¨á«  ⨯  LONGREAL
  337.  
  338.         PROCEDURE String(VAR s: ARRAY OF CHAR)
  339.                 ¢¢®¤ áâப¨
  340.  
  341.         PROCEDURE Ln
  342.                 ®¦¨¤ ­¨¥ ­ ¦ â¨ï ENTER
  343.  
  344. ------------------------------------------------------------------------------
  345. MODULE Console - ¤®¯®«­¨â¥«ì­ë¥ ¯à®æ¥¤ãàë ª®­á®«ì­®£® ¢ë¢®¤ 
  346.  
  347.         CONST
  348.  
  349.         ‘«¥¤ãî騥 ª®­áâ ­âë ®¯à¥¤¥«ïîâ 梥⠪®­á®«ì­®£® ¢ë¢®¤ 
  350.  
  351.                 Black = 0      Blue = 1           Green = 2
  352.                 Cyan = 3       Red = 4            Magenta = 5
  353.                 Brown = 6      LightGray = 7      DarkGray = 8
  354.                 LightBlue = 9  LightGreen = 10    LightCyan = 11
  355.                 LightRed = 12  LightMagenta = 13  Yellow = 14
  356.                 White = 15
  357.  
  358.         PROCEDURE Cls
  359.                 ®ç¨á⪠ ®ª­  ª®­á®«¨
  360.  
  361.         PROCEDURE SetColor(FColor, BColor: INTEGER)
  362.                 ãáâ ­®¢ª  æ¢¥â  ª®­á®«ì­®£® ¢ë¢®¤ : FColor - 梥â ⥪áâ ,
  363.                 BColor - 梥â ä®­ , ¢®§¬®¦­ë¥ §­ ç¥­¨ï - ¢ë襯¥à¥ç¨á«¥­­ë¥
  364.                 ª®­áâ ­âë
  365.  
  366.         PROCEDURE SetCursor(x, y: INTEGER)
  367.                 ãáâ ­®¢ª  ªãàá®à  ª®­á®«¨ ¢ ¯®§¨æ¨î (x, y)
  368.  
  369.         PROCEDURE GetCursor(VAR x, y: INTEGER)
  370.                 § ¯¨á뢠¥â ¢ ¯ à ¬¥âàë ⥪ã騥 ª®®à¤¨­ âë ªãàá®à  ª®­á®«¨
  371.  
  372.         PROCEDURE GetCursorX(): INTEGER
  373.                 ¢®§¢à é ¥â ⥪ãéãî x-ª®®à¤¨­ âã ªãàá®à  ª®­á®«¨
  374.  
  375.         PROCEDURE GetCursorY(): INTEGER
  376.                 ¢®§¢à é ¥â ⥪ãéãî y-ª®®à¤¨­ âã ªãàá®à  ª®­á®«¨
  377.  
  378. ------------------------------------------------------------------------------
  379. MODULE ConsoleLib - ®¡¥à⪠ ¡¨¡«¨®â¥ª¨ console.obj
  380.  
  381. ------------------------------------------------------------------------------
  382. MODULE Math - ¬ â¥¬ â¨ç¥áª¨¥ ä㭪樨
  383.  
  384.         CONST
  385.  
  386.                 pi = 3.141592653589793D+00
  387.                 e  = 2.718281828459045D+00
  388.  
  389.         VAR
  390.  
  391.                 Inf, nInf: LONGREAL
  392.                         ¯®«®¦¨â¥«ì­ ï ¨ ®âà¨æ â¥«ì­ ï ¡¥áª®­¥ç­®áâì
  393.  
  394.         PROCEDURE IsNan(x: LONGREAL): BOOLEAN
  395.                 ¢®§¢à é ¥â TRUE, ¥á«¨ x - ­¥ ç¨á«®
  396.  
  397.         PROCEDURE IsInf(x: LONGREAL): BOOLEAN
  398.                 ¢®§¢à é ¥â TRUE, ¥á«¨ x - ¡¥áª®­¥ç­®áâì
  399.  
  400.         PROCEDURE sqrt(x: LONGREAL): LONGREAL
  401.                 ª¢ ¤à â­ë© ª®à¥­ì x
  402.  
  403.         PROCEDURE exp(x: LONGREAL): LONGREAL
  404.                 íªá¯®­¥­â  x
  405.  
  406.         PROCEDURE ln(x: LONGREAL): LONGREAL
  407.                 ­ âãà «ì­ë© «®£ à¨ä¬ x
  408.  
  409.         PROCEDURE sin(x: LONGREAL): LONGREAL
  410.                 ᨭãá x
  411.  
  412.         PROCEDURE cos(x: LONGREAL): LONGREAL
  413.                 ª®á¨­ãá x
  414.  
  415.         PROCEDURE tan(x: LONGREAL): LONGREAL
  416.                 â ­£¥­á x
  417.  
  418.         PROCEDURE arcsin(x: LONGREAL): LONGREAL
  419.                  àªá¨­ãá x
  420.  
  421.         PROCEDURE arccos(x: LONGREAL): LONGREAL
  422.                  àªª®á¨­ãá x
  423.  
  424.         PROCEDURE arctan(x: LONGREAL): LONGREAL
  425.                  àªâ ­£¥­á x
  426.  
  427.         PROCEDURE arctan2(y, x: LONGREAL): LONGREAL
  428.                  àªâ ­£¥­á y/x
  429.  
  430.         PROCEDURE power(base, exponent: LONGREAL): LONGREAL
  431.                 ¢®§¢¥¤¥­¨¥ ç¨á«  base ¢ á⥯¥­ì exponent
  432.  
  433.         PROCEDURE log(base, x: LONGREAL): LONGREAL
  434.                 «®£ à¨ä¬ x ¯® ®á­®¢ ­¨î base
  435.  
  436.         PROCEDURE sinh(x: LONGREAL): LONGREAL
  437.                 £¨¯¥à¡®«¨ç¥áª¨© ᨭãá x
  438.  
  439.         PROCEDURE cosh(x: LONGREAL): LONGREAL
  440.                 £¨¯¥à¡®«¨ç¥áª¨© ª®á¨­ãá x
  441.  
  442.         PROCEDURE tanh(x: LONGREAL): LONGREAL
  443.                 £¨¯¥à¡®«¨ç¥áª¨© â ­£¥­á x
  444.  
  445.         PROCEDURE arcsinh(x: LONGREAL): LONGREAL
  446.                 ®¡à â­ë© £¨¯¥à¡®«¨ç¥áª¨© ᨭãá x
  447.  
  448.         PROCEDURE arccosh(x: LONGREAL): LONGREAL
  449.                 ®¡à â­ë© £¨¯¥à¡®«¨ç¥áª¨© ª®á¨­ãá x
  450.  
  451.         PROCEDURE arctanh(x: LONGREAL): LONGREAL
  452.                 ®¡à â­ë© £¨¯¥à¡®«¨ç¥áª¨© â ­£¥­á x
  453.  
  454.         PROCEDURE round(x: LONGREAL): LONGREAL
  455.                 ®ªà㣫¥­¨¥ x ¤® ¡«¨¦ ©è¥£® 楫®£®
  456.  
  457.         PROCEDURE frac(x: LONGREAL): LONGREAL;
  458.                 ¤à®¡­ ï ç áâì ç¨á«  x
  459.  
  460.         PROCEDURE floor(x: LONGREAL): LONGREAL
  461.                 ­ ¨¡®«ì襥 楫®¥ ç¨á«® (¯à¥¤áâ ¢«¥­¨¥ ª ª LONGREAL),
  462.                 ­¥ ¡®«ìè¥ x: floor(1.2) = 1.0
  463.  
  464.         PROCEDURE ceil(x: LONGREAL): LONGREAL
  465.                 ­ ¨¬¥­ì襥 楫®¥ ç¨á«® (¯à¥¤áâ ¢«¥­¨¥ ª ª LONGREAL),
  466.                 ­¥ ¬¥­ìè¥ x: ceil(1.2) = 2.0
  467.  
  468.         PROCEDURE sgn(x: LONGREAL): INTEGER
  469.                 ¥á«¨ x > 0 ¢®§¢à é ¥â 1
  470.                 ¥á«¨ x < 0 ¢®§¢à é ¥â -1
  471.                 ¥á«¨ x = 0 ¢®§¢à é ¥â 0
  472.  
  473. ------------------------------------------------------------------------------
  474. MODULE Debug - ¢ë¢®¤ ­  ¤®áªã ®â« ¤ª¨
  475.         ˆ­â¥àä¥©á ª ª ¬®¤ã«ì Out
  476.  
  477.         PROCEDURE Open
  478.                 ®âªà뢠¥â ¤®áªã ®â« ¤ª¨
  479.  
  480. ------------------------------------------------------------------------------
  481. MODULE File - à ¡®â  á ä ©«®¢®© á¨á⥬®©
  482.  
  483.         TYPE
  484.  
  485.                 FNAME = ARRAY 520 OF CHAR
  486.  
  487.                 FS = POINTER TO rFS
  488.  
  489.                 rFS = RECORD (* ¨­ä®à¬ æ¨®­­ ï áâàãªâãà  ä ©«  *)
  490.                         subfunc, pos, hpos, bytes, buffer: INTEGER;
  491.                         name: FNAME
  492.                 END
  493.  
  494.                 FD = POINTER TO rFD
  495.  
  496.                 rFD = RECORD (* áâàãªâãà  ¡«®ª  ¤ ­­ëå ¢å®¤  ª â «®£  *)
  497.                         attr: INTEGER;
  498.                         ntyp: CHAR;
  499.                         reserved: ARRAY 3 OF CHAR;
  500.                         time_create, date_create,
  501.                         time_access, date_access,
  502.                         time_modif,  date_modif,
  503.                         size, hsize: INTEGER;
  504.                         name: FNAME
  505.                 END
  506.  
  507.         CONST
  508.  
  509.                 SEEK_BEG = 0
  510.                 SEEK_CUR = 1
  511.                 SEEK_END = 2
  512.  
  513.         PROCEDURE Load(FName: ARRAY OF CHAR; VAR size: INTEGER): INTEGER;
  514.                 ‡ £à㦠¥â ¢ ¯ ¬ïâì ä ©« á ¨¬¥­¥¬ FName, § ¯¨á뢠¥â ¢ ¯ à ¬¥âà
  515.                 size à §¬¥à ä ©« , ¢®§¢à é ¥â  ¤à¥á § £à㦥­­®£® ä ©« 
  516.                 ¨«¨ 0 (®è¨¡ª ). à¨ ­¥®¡å®¤¨¬®áâ¨, à á¯ ª®¢ë¢ ¥â
  517.                 ä ©« (kunpack).
  518.  
  519.         PROCEDURE GetFileInfo(FName: ARRAY OF CHAR; VAR Info: rFD): BOOLEAN
  520.                 ‡ ¯¨á뢠¥â áâàãªâãàã ¡«®ª  ¤ ­­ëå ¢å®¤  ª â «®£  ¤«ï ä ©« 
  521.                 ¨«¨ ¯ ¯ª¨ á ¨¬¥­¥¬ FName ¢ ¯ à ¬¥âà Info.
  522.                 à¨ ®è¨¡ª¥ ¢®§¢à é ¥â FALSE.
  523.  
  524.         PROCEDURE Exists(FName: ARRAY OF CHAR): BOOLEAN
  525.                 ¢®§¢à é ¥â TRUE, ¥á«¨ ä ©« á ¨¬¥­¥¬ FName áãé¥áâ¢ã¥â
  526.  
  527.         PROCEDURE Close(VAR F: FS)
  528.                 ®á¢®¡®¦¤ ¥â ¯ ¬ïâì, ¢ë¤¥«¥­­ãî ¤«ï ¨­ä®à¬ æ¨®­­®© áâàãªâãàë
  529.                 ä ©«  F ¨ ¯à¨á¢ ¨¢ ¥â F §­ ç¥­¨¥ NIL
  530.  
  531.         PROCEDURE Open(FName: ARRAY OF CHAR): FS
  532.                 ¢®§¢à é ¥â 㪠§ â¥«ì ­  ¨­ä®à¬ æ¨®­­ãî áâàãªâãàã ä ©«  á
  533.                 ¨¬¥­¥¬ FName, ¯à¨ ®è¨¡ª¥ ¢®§¢à é ¥â NIL
  534.  
  535.         PROCEDURE Delete(FName: ARRAY OF CHAR): BOOLEAN
  536.                 㤠«ï¥â ä ©« á ¨¬¥­¥¬ FName, ¯à¨ ®è¨¡ª¥ ¢®§¢à é ¥â FALSE
  537.  
  538.         PROCEDURE Seek(F: FS; Offset, Origin: INTEGER): INTEGER
  539.                 ãáâ ­ ¢«¨¢ ¥â ¯®§¨æ¨î ç⥭¨ï-§ ¯¨á¨ ä ©«  F ­  Offset,
  540.                 ®â­®á¨â¥«ì­® Origin = (SEEK_BEG - ­ ç «® ä ©« ,
  541.                 SEEK_CUR - ⥪ãé ï ¯®§¨æ¨ï, SEEK_END - ª®­¥æ ä ©« ),
  542.                 ¢®§¢à é ¥â ¯®§¨æ¨î ®â­®á¨â¥«ì­® ­ ç «  ä ©« , ­ ¯à¨¬¥à:
  543.                         Seek(F, 0, SEEK_END)
  544.                 ãáâ ­ ¢«¨¢ ¥â ¯®§¨æ¨î ­  ª®­¥æ ä ©«  ¨ ¢®§¢à é ¥â ¤«¨­ã
  545.                 ä ©« ; ¯à¨ ®è¨¡ª¥ ¢®§¢à é ¥â -1
  546.  
  547.         PROCEDURE Read(F: FS; Buffer, Count: INTEGER): INTEGER
  548.                 —¨â ¥â ¤ ­­ë¥ ¨§ ä ©«  ¢ ¯ ¬ïâì. F - 㪠§ â¥«ì ­ 
  549.                 ¨­ä®à¬ æ¨®­­ãî áâàãªâãàã ä ©« , Buffer -  ¤à¥á ®¡« áâ¨
  550.                 ¯ ¬ïâ¨, Count - ª®«¨ç¥á⢮ ¡ ©â, ª®â®à®¥ âॡã¥âáï ¯à®ç¨â âì
  551.                 ¨§ ä ©« ; ¢®§¢à é ¥â ª®«¨ç¥á⢮ ¡ ©â, ª®â®à®¥ ¡ë«® ¯à®ç¨â ­®
  552.                 ¨ ᮮ⢥âáâ¢ãî騬 ®¡à §®¬ ¨§¬¥­ï¥â ¯®§¨æ¨î ç⥭¨ï/§ ¯¨á¨ ¢
  553.                 ¨­ä®à¬ æ¨®­­®© áâàãªâãॠF.
  554.  
  555.         PROCEDURE Write(F: FS; Buffer, Count: INTEGER): INTEGER
  556.                 ‡ ¯¨á뢠¥â ¤ ­­ë¥ ¨§ ¯ ¬ï⨠¢ ä ©«. F - 㪠§ â¥«ì ­ 
  557.                 ¨­ä®à¬ æ¨®­­ãî áâàãªâãàã ä ©« , Buffer -  ¤à¥á ®¡« áâ¨
  558.                 ¯ ¬ïâ¨, Count - ª®«¨ç¥á⢮ ¡ ©â, ª®â®à®¥ âॡã¥âáï § ¯¨á âì
  559.                 ¢ ä ©«; ¢®§¢à é ¥â ª®«¨ç¥á⢮ ¡ ©â, ª®â®à®¥ ¡ë«® § ¯¨á ­® ¨
  560.                 ᮮ⢥âáâ¢ãî騬 ®¡à §®¬ ¨§¬¥­ï¥â ¯®§¨æ¨î ç⥭¨ï/§ ¯¨á¨ ¢
  561.                 ¨­ä®à¬ æ¨®­­®© áâàãªâãॠF.
  562.  
  563.         PROCEDURE Create(FName: ARRAY OF CHAR): FS
  564.                 ᮧ¤ ¥â ­®¢ë© ä ©« á ¨¬¥­¥¬ FName (¯®«­®¥ ¨¬ï), ¢®§¢à é ¥â
  565.                 㪠§ â¥«ì ­  ¨­ä®à¬ æ¨®­­ãî áâàãªâãàã ä ©« ,
  566.                 ¯à¨ ®è¨¡ª¥ ¢®§¢à é ¥â NIL
  567.  
  568.         PROCEDURE CreateDir(DirName: ARRAY OF CHAR): BOOLEAN
  569.                 ᮧ¤ ¥â ¯ ¯ªã á ¨¬¥­¥¬ DirName, ¢á¥ ¯à®¬¥¦ãâ®ç­ë¥ ¯ ¯ª¨
  570.                 ¤®«¦­ë áãé¥á⢮¢ âì, ¯à¨ ®è¨¡ª¥ ¢®§¢à é ¥â FALSE
  571.  
  572.         PROCEDURE DeleteDir(DirName: ARRAY OF CHAR): BOOLEAN
  573.                 㤠«ï¥â ¯ãáâãî ¯ ¯ªã á ¨¬¥­¥¬ DirName,
  574.                 ¯à¨ ®è¨¡ª¥ ¢®§¢à é ¥â FALSE
  575.  
  576.         PROCEDURE DirExists(DirName: ARRAY OF CHAR): BOOLEAN
  577.                 ¢®§¢à é ¥â TRUE, ¥á«¨ ¯ ¯ª  á ¨¬¥­¥¬ DirName áãé¥áâ¢ã¥â
  578.  
  579. ------------------------------------------------------------------------------
  580. MODULE Read - ç⥭¨¥ ®á­®¢­ëå ⨯®¢ ¤ ­­ëå ¨§ ä ©«  F
  581.  
  582.         à®æ¥¤ãàë ¢®§¢à é îâ TRUE ¢ á«ãç ¥ ãᯥ譮© ®¯¥à æ¨¨ ç⥭¨ï ¨
  583.         ᮮ⢥âáâ¢ãî騬 ®¡à §®¬ ¨§¬¥­ïîâ ¯®§¨æ¨î ç⥭¨ï/§ ¯¨á¨ ¢
  584.         ¨­ä®à¬ æ¨®­­®© áâàãªâãॠF
  585.  
  586.         PROCEDURE Char(F: File.FS; VAR x: CHAR): BOOLEAN
  587.  
  588.         PROCEDURE Int(F: File.FS; VAR x: INTEGER): BOOLEAN
  589.  
  590.         PROCEDURE Real(F: File.FS; VAR x: REAL): BOOLEAN
  591.  
  592.         PROCEDURE LongReal(F: File.FS; VAR x: LONGREAL): BOOLEAN
  593.  
  594.         PROCEDURE Boolean(F: File.FS; VAR x: BOOLEAN): BOOLEAN
  595.  
  596.         PROCEDURE Set(F: File.FS; VAR x: SET): BOOLEAN
  597.  
  598.         PROCEDURE Card16(F: File.FS; VAR x: SYSTEM.CARD16): BOOLEAN
  599.  
  600. ------------------------------------------------------------------------------
  601. MODULE Write - § ¯¨áì ®á­®¢­ëå ⨯®¢ ¤ ­­ëå ¢ ä ©« F
  602.  
  603.         à®æ¥¤ãàë ¢®§¢à é îâ TRUE ¢ á«ãç ¥ ãᯥ譮© ®¯¥à æ¨¨ § ¯¨á¨ ¨
  604.         ᮮ⢥âáâ¢ãî騬 ®¡à §®¬ ¨§¬¥­ïîâ ¯®§¨æ¨î ç⥭¨ï/§ ¯¨á¨ ¢
  605.         ¨­ä®à¬ æ¨®­­®© áâàãªâãॠF
  606.  
  607.         PROCEDURE Char(F: File.FS; x: CHAR): BOOLEAN
  608.  
  609.         PROCEDURE Int(F: File.FS; x: INTEGER): BOOLEAN
  610.  
  611.         PROCEDURE Real(F: File.FS; x: REAL): BOOLEAN
  612.  
  613.         PROCEDURE LongReal(F: File.FS; x: LONGREAL): BOOLEAN
  614.  
  615.         PROCEDURE Boolean(F: File.FS; x: BOOLEAN): BOOLEAN
  616.  
  617.         PROCEDURE Set(F: File.FS; x: SET): BOOLEAN
  618.  
  619.         PROCEDURE Card16(F: File.FS; x: SYSTEM.CARD16): BOOLEAN
  620.  
  621. ------------------------------------------------------------------------------
  622. MODULE DateTime - ¤ â , ¢à¥¬ï
  623.  
  624.         CONST ERR = -7.0D5
  625.  
  626.         PROCEDURE Now(VAR Year, Month, Day, Hour, Min, Sec: INTEGER)
  627.                 § ¯¨á뢠¥â ¢ ¯ à ¬¥âàë ª®¬¯®­¥­âë ⥪ã饩 á¨á⥬­®© ¤ âë ¨
  628.                 ¢à¥¬¥­¨
  629.  
  630.         PROCEDURE Encode(Year, Month, Day, Hour, Min, Sec: INTEGER): LONGREAL
  631.                 ¢®§¢à é ¥â ¤ âã, ¯®«ã祭­ãî ¨§ ª®¬¯®­¥­â®¢
  632.                 Year, Month, Day, Hour, Min, Sec;
  633.                 ¯à¨ ®è¨¡ª¥ ¢®§¢à é ¥â ª®­áâ ­âã ERR = -7.0D5
  634.  
  635.         PROCEDURE Decode(Date: LONGREAL; VAR Year, Month, Day,
  636.                                 Hour, Min, Sec: INTEGER): BOOLEAN
  637.                 ¨§¢«¥ª ¥â ª®¬¯®­¥­âë
  638.                 Year, Month, Day, Hour, Min, Sec ¨§ ¤ âë Date;
  639.                 ¯à¨ ®è¨¡ª¥ ¢®§¢à é ¥â FALSE
  640.  
  641. ------------------------------------------------------------------------------
  642. MODULE Args - ¯ à ¬¥âàë ¯à®£à ¬¬ë
  643.  
  644.         VAR argc: INTEGER
  645.                 ª®«¨ç¥á⢮ ¯ à ¬¥â஢ ¯à®£à ¬¬ë, ¢ª«îç ï ¨¬ï
  646.                 ¨á¯®«­ï¥¬®£® ä ©« 
  647.  
  648.         PROCEDURE GetArg(n: INTEGER; VAR s: ARRAY OF CHAR)
  649.                 § ¯¨á뢠¥â ¢ áâபã s n-© ¯ à ¬¥âà ¯à®£à ¬¬ë,
  650.                 ­ã¬¥à æ¨ï ¯ à ¬¥â஢ ®â 0 ¤® argc - 1,
  651.                 ­ã«¥¢®© ¯ à ¬¥âà -- ¨¬ï ¨á¯®«­ï¥¬®£® ä ©« 
  652.  
  653. ------------------------------------------------------------------------------
  654. MODULE KOSAPI
  655.  
  656.         PROCEDURE sysfunc1(arg1: INTEGER): INTEGER
  657.         PROCEDURE sysfunc2(arg1, arg2: INTEGER): INTEGER
  658.         ...
  659.         PROCEDURE sysfunc7(arg1, arg2, ..., arg7: INTEGER): INTEGER
  660.                 Ž¡¥à⪨ ¤«ï ä㭪権 API ï¤à  KolibriOS.
  661.                 arg1 .. arg7 ᮮ⢥âáâ¢ãîâ ॣ¨áâà ¬
  662.                         eax, ebx, ecx, edx, esi, edi, ebp;
  663.                 ¢®§¢à é îâ §­ ç¥­¨¥ ॣ¨áâà  eax ¯®á«¥ á¨á⥬­®£® ¢ë§®¢ .
  664.  
  665.         PROCEDURE sysfunc22(arg1, arg2: INTEGER; VAR res2: INTEGER): INTEGER
  666.                 Ž¡¥à⪠ ¤«ï ä㭪権 API ï¤à  KolibriOS.
  667.                 arg1 - ॣ¨áâà eax, arg2 - ॣ¨áâà ebx,
  668.                 res2 - §­ ç¥­¨¥ ॣ¨áâà  ebx ¯®á«¥ á¨á⥬­®£® ¢ë§®¢ ;
  669.                 ¢®§¢à é ¥â §­ ç¥­¨¥ ॣ¨áâà  eax ¯®á«¥ á¨á⥬­®£® ¢ë§®¢ .
  670.  
  671.         PROCEDURE malloc(size: INTEGER): INTEGER
  672.                 ‚뤥«ï¥â ¡«®ª ¯ ¬ïâ¨.
  673.                 size - à §¬¥à ¡«®ª  ¢ ¡ ©â å,
  674.                 ¢®§¢à é ¥â  ¤à¥á ¢ë¤¥«¥­­®£® ¡«®ª 
  675.  
  676.         PROCEDURE free(ptr: INTEGER): INTEGER
  677.                 Žá¢®¡®¦¤ ¥â à ­¥¥ ¢ë¤¥«¥­­ë© ¡«®ª ¯ ¬ïâ¨ á  ¤à¥á®¬ ptr,
  678.                 ¢®§¢à é ¥â 0
  679.  
  680.         PROCEDURE realloc(ptr, size: INTEGER): INTEGER
  681.                 ¥à¥à á¯à¥¤¥«ï¥â ¡«®ª ¯ ¬ïâ¨,
  682.                 ptr -  ¤à¥á à ­¥¥ ¢ë¤¥«¥­­®£® ¡«®ª ,
  683.                 size - ­®¢ë© à §¬¥à,
  684.                 ¢®§¢à é ¥â 㪠§ â¥«ì ­  ¯¥à¥à á¯à¥¤¥«¥­­ë© ¡«®ª,
  685.                 0 ¯à¨ ®è¨¡ª¥
  686.  
  687.         PROCEDURE GetCommandLine(): INTEGER
  688.                 ‚®§¢à é ¥â  ¤à¥á áâப¨ ¯ à ¬¥â஢
  689.  
  690.         PROCEDURE GetName(): INTEGER
  691.                 ‚®§¢à é ¥â  ¤à¥á áâப¨ á ¨¬¥­¥¬ ¯à®£à ¬¬ë
  692.  
  693.         PROCEDURE LoadLib(name: ARRAY OF CHAR): INTEGER
  694.                 ‡ £à㦠¥â DLL á ¯®«­ë¬ ¨¬¥­¥¬ name. ‚®§¢à é ¥â  ¤à¥á â ¡«¨æë
  695.                 íªá¯®àâ . à¨ ®è¨¡ª¥ ¢®§¢à é ¥â 0.
  696.  
  697.         PROCEDURE GetProcAdr(name: ARRAY OF CHAR; lib: INTEGER): INTEGER
  698.                 name - ¨¬ï ¯à®æ¥¤ãàë
  699.                 lib -  ¤à¥á â ¡«¨æë íªá¯®àâ  DLL
  700.                 ‚®§¢à é ¥â  ¤à¥á ¯à®æ¥¤ãàë. à¨ ®è¨¡ª¥ ¢®§¢à é ¥â 0.
  701.  
  702. ------------------------------------------------------------------------------
  703. MODULE ColorDlg - à ¡®â  á ¤¨ «®£®¬ "Color Dialog"
  704.  
  705.         TYPE
  706.  
  707.                 Dialog = POINTER TO RECORD (* áâàãªâãà  ¤¨ «®£  *)
  708.                     status: INTEGER   (* á®áâ®ï­¨¥ ¤¨ «®£ :
  709.                                          0 - ¯®«ì§®¢ â¥«ì ­ ¦ « Cancel
  710.                                          1 - ¯®«ì§®¢ â¥«ì ­ ¦ « OK
  711.                                          2 - ¤¨ «®£ ®âªàëâ           *)
  712.  
  713.                     color:  INTEGER   (* ¢ë¡à ­­ë© 梥â *)
  714.                 END
  715.  
  716.         PROCEDURE Create(draw_window: DRAW_WINDOW): Dialog
  717.                 ᮧ¤ âì ¤¨ «®£
  718.                 draw_window - ¯à®æ¥¤ãà  ¯¥à¥à¨á®¢ª¨ ®á­®¢­®£® ®ª­ 
  719.                 (TYPE DRAW_WINDOW = PROCEDURE);
  720.                 ¯à®æ¥¤ãà  ¢®§¢à é ¥â 㪠§ â¥«ì ­  áâàãªâãàã ¤¨ «®£ 
  721.  
  722.         PROCEDURE Show(cd: Dialog)
  723.                 ¯®ª § âì ¤¨ «®£
  724.                 cd - 㪠§ â¥«ì ­  áâàãªâãàã ¤¨ «®£ , ª®â®àë© ¡ë« ᮧ¤ ­ à ­¥¥
  725.                 ¯à®æ¥¤ãன Create
  726.  
  727.         PROCEDURE Destroy(VAR cd: Dialog)
  728.                 ã­¨ç⮦¨âì ¤¨ «®£
  729.                 cd - 㪠§ â¥«ì ­  áâàãªâãàã ¤¨ «®£ 
  730.  
  731. ------------------------------------------------------------------------------
  732. MODULE OpenDlg - à ¡®â  á ¤¨ «®£®¬ "Open Dialog"
  733.  
  734.         TYPE
  735.  
  736.                 Dialog = POINTER TO RECORD (* áâàãªâãà  ¤¨ «®£  *)
  737.                     status:   INTEGER  (* á®áâ®ï­¨¥ ¤¨ «®£ :
  738.                                           0 - ¯®«ì§®¢ â¥«ì ­ ¦ « Cancel
  739.                                           1 - ¯®«ì§®¢ â¥«ì ­ ¦ « OK
  740.                                           2 - ¤¨ «®£ ®âªàëâ           *)
  741.  
  742.                     FileName: ARRAY 4096 OF CHAR (* ¨¬ï ¢ë¡à ­­®£® ä ©«  *)
  743.                     FilePath: ARRAY 4096 OF CHAR (* ¯®«­®¥ ¨¬ï ¢ë¡à ­­®£®
  744.                                                     ä ©«                 *)
  745.                 END
  746.  
  747.         PROCEDURE Create(draw_window: DRAW_WINDOW; type: INTEGER; def_path,
  748.                         filter: ARRAY OF CHAR): Dialog
  749.                 ᮧ¤ âì ¤¨ «®£
  750.                 draw_window - ¯à®æ¥¤ãà  ¯¥à¥à¨á®¢ª¨ ®á­®¢­®£® ®ª­ 
  751.                         (TYPE DRAW_WINDOW = PROCEDURE)
  752.                 type -  ⨯ ¤¨ «®£ 
  753.                         0 - ®âªàëâì
  754.                         1 - á®åà ­¨âì
  755.                         2 - ¢ë¡à âì ¯ ¯ªã
  756.                 def_path - ¯ãâì ¯® 㬮«ç ­¨î, ¯ ¯ª  def_path ¡ã¤¥â ®âªàëâ 
  757.                         ¯à¨ ¯¥à¢®¬ § ¯ã᪥ ¤¨ «®£ 
  758.                 filter - ¢ áâப¥ § ¯¨á ­® ¯¥à¥ç¨á«¥­¨¥ à áè¨à¥­¨© ä ©«®¢,
  759.                         ª®â®àë¥ ¡ã¤ãâ ¯®ª § ­ë ¢ ¤¨ «®£®¢®¬ ®ª­¥, à áè¨à¥­¨ï
  760.                         à §¤¥«ïîâáï ᨬ¢®«®¬ "|", ­ ¯à¨¬¥à: "ASM|TXT|INI"
  761.                 ¯à®æ¥¤ãà  ¢®§¢à é ¥â 㪠§ â¥«ì ­  áâàãªâãàã ¤¨ «®£ 
  762.  
  763.         PROCEDURE Show(od: Dialog; Width, Height: INTEGER)
  764.                 ¯®ª § âì ¤¨ «®£
  765.                 od - 㪠§ â¥«ì ­  áâàãªâãàã ¤¨ «®£ , ª®â®àë© ¡ë« ᮧ¤ ­ à ­¥¥
  766.                      ¯à®æ¥¤ãன Create
  767.                 Width ¨ Height - è¨à¨­  ¨ ¢ëá®â  ¤¨ «®£®¢®£® ®ª­ 
  768.  
  769.         PROCEDURE Destroy(VAR od: Dialog)
  770.                 ã­¨ç⮦¨âì ¤¨ «®£
  771.                 od - 㪠§ â¥«ì ­  áâàãªâãàã ¤¨ «®£ 
  772.  
  773. ------------------------------------------------------------------------------
  774. MODULE kfonts - à ¡®â  á kf-èà¨äâ ¬¨
  775.  
  776.         CONST
  777.  
  778.                 bold            =   1
  779.                 italic          =   2
  780.                 underline       =   4
  781.                 strike_through  =   8
  782.                 smoothing       =  16
  783.                 bpp32           =  32
  784.  
  785.         TYPE
  786.  
  787.                 TFont = POINTER TO TFont_desc (* 㪠§ â¥«ì ­  èà¨äâ *)
  788.  
  789.         PROCEDURE LoadFont(file_name: ARRAY OF CHAR): TFont
  790.                 § £à㧨âì èà¨äâ ¨§ ä ©« 
  791.                 file_name   ¨¬ï kf-ä ©« 
  792.                 १-â:      㪠§ â¥«ì ­  èà¨äâ/NIL (®è¨¡ª )
  793.  
  794.         PROCEDURE SetSize(Font: TFont; font_size: INTEGER): BOOLEAN
  795.                 ãáâ ­®¢¨âì à §¬¥à èà¨äâ 
  796.                 Font        㪠§ â¥«ì ­  èà¨äâ
  797.                 font_size   à §¬¥à èà¨äâ 
  798.                 १-â:      TRUE/FALSE (®è¨¡ª )
  799.  
  800.         PROCEDURE Enabled(Font: TFont; font_size: INTEGER): BOOLEAN
  801.                 ¯à®¢¥à¨âì, ¥áâì «¨ èà¨äâ, § ¤ ­­®£® à §¬¥à 
  802.                 Font        㪠§ â¥«ì ­  èà¨äâ
  803.                 font_size   à §¬¥à èà¨äâ 
  804.                 १-â:      TRUE/FALSE (èà¨äâ  ­¥â)
  805.  
  806.         PROCEDURE Destroy(VAR Font: TFont)
  807.                 ¢ë£à㧨âì èà¨äâ, ®á¢®¡®¤¨âì ¤¨­ ¬¨ç¥áªãî ¯ ¬ïâì
  808.                 Font        㪠§ â¥«ì ­  èà¨äâ
  809.                 à¨á¢ ¨¢ ¥â ¯¥à¥¬¥­­®© Font §­ ç¥­¨¥ NIL
  810.  
  811.         PROCEDURE TextHeight(Font: TFont): INTEGER
  812.                 ¯®«ãç¨âì ¢ëá®âã áâப¨ ⥪áâ 
  813.                 Font        㪠§ â¥«ì ­  èà¨äâ
  814.                 १-â:      ¢ëá®â  áâப¨ ⥪áâ  ¢ ¯¨ªá¥«ïå
  815.  
  816.         PROCEDURE TextWidth(Font: TFont;
  817.                     str, length, params: INTEGER): INTEGER
  818.                 ¯®«ãç¨âì è¨à¨­ã áâப¨ ⥪áâ 
  819.                 Font        㪠§ â¥«ì ­  èà¨äâ
  820.                 str          ¤à¥á áâப¨ ⥪áâ  ¢ ª®¤¨à®¢ª¥ Win-1251
  821.                 length      ª®«¨ç¥á⢮ ᨬ¢®«®¢ ¢ áâப¥ ¨«¨ -1, ¥á«¨ áâப 
  822.                             § ¢¥àè ¥âáï ­ã«¥¬
  823.                 params      ¯ à ¬¥âàë-ä« £¨ á¬. ­¨¦¥
  824.                 १-â:      è¨à¨­  áâப¨ ⥪áâ  ¢ ¯¨ªá¥«ïå
  825.  
  826.         PROCEDURE TextOut(Font: TFont;
  827.                     canvas, x, y, str, length, color, params: INTEGER)
  828.                 ¢ë¢¥á⨠⥪áâ ¢ ¡ãä¥à
  829.                 ¤«ï ¢ë¢®¤  ¡ãä¥à  ¢ ®ª­®, ¨á¯®«ì§®¢ âì ä.65 ¨«¨
  830.                 ä.7 (¥á«¨ ¡ãä¥à 24-¡¨â­ë©)
  831.                 Font        㪠§ â¥«ì ­  èà¨äâ
  832.                 canvas       ¤à¥á £à ä¨ç¥áª®£® ¡ãä¥à 
  833.                             áâàãªâãà  ¡ãä¥à :
  834.                               Xsize       dd
  835.                               Ysize       dd
  836.                               picture     rb  Xsize * Ysize * 4 (32 ¡¨â )
  837.                                               ¨«¨ Xsize * Ysize * 3 (24 ¡¨â )
  838.                 x, y        ª®®à¤¨­ âë ⥪áâ  ®â­®á¨â¥«ì­® «¥¢®£® ¢¥àå­¥£®
  839.                             㣫  ¡ãä¥à 
  840.                 str          ¤à¥á áâப¨ ⥪áâ  ¢ ª®¤¨à®¢ª¥ Win-1251
  841.                 length      ª®«¨ç¥á⢮ ᨬ¢®«®¢ ¢ áâப¥ ¨«¨ -1, ¥á«¨ áâப 
  842.                             § ¢¥àè ¥âáï ­ã«¥¬
  843.                 color       梥â ⥪áâ  0x00RRGGBB
  844.                 params      ¯ à ¬¥âàë-ä« £¨:
  845.                                1   ¦¨à­ë©
  846.                                2   ªãàᨢ
  847.                                4   ¯®¤ç¥àª­ãâë©
  848.                                8   ¯¥à¥ç¥àª­ãâë©
  849.                               16   ¯à¨¬¥­¨âì ᣫ ¦¨¢ ­¨¥
  850.                               32   ¢ë¢®¤ ¢ 32-¡¨â­ë© ¡ãä¥à
  851.                             ¢®§¬®¦­® ¨á¯®«ì§®¢ ­¨¥ ä« £®¢ ¢ «î¡ëå á®ç¥â ­¨ïå
  852. ------------------------------------------------------------------------------
  853. MODULE RasterWorks - ®¡¥à⪠ ¡¨¡«¨®â¥ª¨ Rasterworks.obj
  854. ------------------------------------------------------------------------------
  855. MODULE libimg - ®¡¥à⪠ ¡¨¡«¨®â¥ª¨ libimg.obj
  856. ------------------------------------------------------------------------------