Subversion Repositories Kolibri OS

Rev

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