Subversion Repositories Kolibri OS

Rev

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