home *** CD-ROM | disk | FTP | other *** search
/ BBS 1 / BBS#1.iso / document / pas60pg.lzh / PG13.MY < prev    next >
Text File  |  1991-02-01  |  39KB  |  851 lines

  1.                              âïÇéÇ 13.
  2.  
  3.                              ÄéàÉïàê.
  4.  
  5.      ÄóÑα½Ñ¿ - φΓ« τáßΓ¿ »α«úαá¼¼δ, ¬«Γ«αδÑ αáºñѽ∩εΓ «íΘπε «í½áßΓ∞
  6. »á¼∩Γ¿. Æ«½∞¬« ΓÑ τáßΓ¿ »α«úαá¼¼δ, ¬«Γ«αδÑ ΓαÑíπεΓß∩ ñ½∩ óδ»«½¡Ñ¡¿∩
  7. ñá¡¡«⌐ Σπ¡¬µ¿¿,  αẼÑΘáεΓß∩ ó »á¼∩Γ¿ ó φΓ« óαѼ∩;  ºáΓѼ «¡¿ ¼«úπΓ
  8. íδΓ∞ »ÑαѬαδΓδ ñαπú¿¼¿ »α«úαἼἿ.
  9.      ÄóÑα½Ñ¿ ¼«úπΓ   º¡áτ¿Γѽ∞¡«   ß«¬αáΓ¿Γ∞   ¬«½¿τÑßΓó«   »á¼∩Γ¿,
  10. ΓαÑíπѼ«Ñ »α¿ óδ»«½¡Ñ¡¿¿ »α«úαá¼¼δ.  é ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿,  éδ ¼«ªÑΓÑ
  11. óδ»«½¡∩Γ∞ »α«úαá¼¼δ,  ¬«Γ«αδÑ  ¡á¼¡«ú«  í«½∞ΦÑ,  τѼ  ñ«ßΓπ»¡á∩   ó
  12. ß¿ßΓѼѠ »á¼∩Γ∞,  »«ß¬«½∞¬π  ó  ¬áªñδ⌐  ¼«¼Ñ¡Γ ó »á¼∩Γ¿ αẼÑΘáÑΓß∩
  13. Γ«½∞¬« τáßΓ∞ »α«úαá¼¼δ.
  14.      Turbo Pascal   π»αáó½∩ÑΓ  «óÑα½Ñ∩¼¿  ¡á  πα«ó¡Ñ  ¼«ñπ½Ñ⌐;  φΓ«
  15. ¡á¿¼Ñ¡∞Φá∩ τáßΓ∞ »α«úαá¼¼δ, ¬«Γ«απε ¼«ª¡« ßñѽáΓ∞ «óÑα½Ñ⌐¡«⌐. è«úñá
  16. «óÑα½Ñ⌐¡á∩   »α«úαἼᠠ ¬«¼»¿½¿απÑΓß∩,   Turbo  Pascal  úÑ¡Ñα¿απÑΓ
  17. «óÑα½Ñ⌐¡δ⌐ Σá⌐½ (ß αáßΦ¿αÑ¡¿Ñ¼ .OVR)  ó  ñ«»«½¡Ñ¡¿Ñ  ¬  óδ»«½¡¿¼«¼π
  18. Σá⌐½π (ß   αáßΦ¿αÑ¡¿Ñ¼   .EXE).   .EXE  Σá⌐½  ß«ñÑαª¿Γ  ßΓáΓ¿τÑ߬πε
  19. (¡Ñ»ÑαѬαδóáѼπε) τáßΓ∞ »α«úαá¼¼δ ¿ .OVR Σá⌐½ ß«ñÑαª¿Γ  óßÑ ¼«ñπ½¿,
  20. ¬«Γ«αδÑ íπñπΓ   »ÑαѬáτ¿óáΓ∞ß∩  ó/¿º  »á¼∩Γ¿  ó«  óαѼ∩  óδ»«½¡Ñ¡¿∩
  21. »α«úαá¼¼δ.
  22.      çᠿ߬½ετÑ¡¿Ñ¼  ¡Ñ߬«½∞¬¿σ »αáó¿½ »α«úαá¼¼¿α«óá¡¿∩, «óÑα½Ñ⌐¡δÑ
  23. ¼«ñπ½¿ ¿ñÑ¡Γ¿τ¡δ ß ¡Ñ«óÑα½Ñ⌐¡δ¼¿ ¼«ñπ½∩¼¿. é ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿, Ñß½¿
  24. éδ ß«í½εñáÑΓÑ φΓ¿ »αáó¿½á,  éá¼ ñáªÑ ¡Ñ ¡πª¡« »ÑαѬ«¼»¿½¿α«óáΓ∞ φΓ¿
  25. ¼«ñπ½¿,  τΓ«íδ  ßñѽáΓ∞  ¿σ  «óÑα½Ñ⌐¡δ¼¿.  ÉÑΦÑ¡¿Ñ,  íπñÑΓ   ¼«ñπ½∞
  26. «óÑα½Ñ⌐¡δ¼ ¿½¿ ¡ÑΓ, »α¿¡¿¼áÑΓ ú½áó¡á∩ »α«úαá¼¼á.
  27.      è«úñá «óÑα½Ñ⌐ ºáúαπªáÑΓß∩ ó »á¼∩Γ∞, «¡ »«¼ÑΘáÑΓß∩ ó «óÑα½Ñ⌐¡δ⌐
  28. íπΣÑα,  ¬«Γ«αδ⌐  αẼÑΘáÑΓß∩  ó  »á¼∩Γ¿  ¼Ñªñπ  ßΓѬ«¼ ¿ ¬πτÑ⌐.  Å«
  29. π¼«½τá¡¿ε,  αẼÑα «óÑα½Ñ⌐¡«ú«  íπΣÑαá  πßΓá¡áó½¿óáÑΓß∩  ¬á¬  ¼«ª¡«
  30. ¼Ñ¡∞ΦÑ,  ¡«  «¡  ¼«ªÑΓ  íδΓ∞  ½Ñú¬«  πóѽ¿τÑ¡  ó« óαѼ∩ óδ»«½¡Ñ¡¿∩,
  31. óδñѽѡ¿Ñ¼ ñ«»«½¡¿Γѽ∞¡«⌐ »á¼∩Γ¿ ¿º  ¬πτ¿.  èᬠ ßÑú¼Ñ¡Γ  ñá¡¡δσ  ¿
  32. ¼¿¡¿¼á½∞¡δ⌐  αẼÑα  ¬πτ¿,  αẼÑα  íπΣÑαá  «óÑα½ÑÑó (»« π¼«½τá¡¿ε)
  33. αáß»αÑñѽ∩ÑΓß∩ »α¿ ºáúαπº¬Ñ .EXE Σá⌐½á.  àß½¿ »á¼∩Γ¿  ¡Ññ«ßΓáΓ«τ¡«,
  34. DOS  óδñáÑΓ  ß««íΘÑ¡¿Ñ  «í  «Φ¿í¬Ñ  (»α«úαἼᠠ߽¿Φ¬«¼  óѽ¿¬á ñ½∩
  35. ºáúαπº¬¿  ó  »á¼∩Γ∞)  ¿½¿  ¿¡ΓÑúα¿α«óá¡¡«⌐  ßαÑñ«⌐   Turbo   Pascal
  36. (¡Ññ«ßΓáΓ«τ¡« »á¼∩Γ¿ ñ½∩ óδ»«½¡Ñ¡¿∩ »α«úαá¼¼δ).
  37.      àßΓ∞ «τÑ¡∞ ó᪡á∩ ó«º¼«ª¡«ßΓ∞ ¼«¡¿Γ«αá «óÑα½ÑÑó  »α¿  ºáúαπº¬Ñ
  38. «óÑα½Ñ⌐¡«ú«  Σá⌐½á  ó  ß½πτáÑ,  ¬«úñá  ó  ß¿ßΓѼѠñ«ßΓáΓ«τ¡δ⌐ «íΩѼ
  39. αáßΦ¿αÑ¡¡«⌐  »á¼∩Γ¿.  ä½∩  φΓ¿σ  µÑ½Ñ⌐  Turbo  Pascal  »«ññÑনóáÑΓ
  40. æ»Ñµ¿Σ¿¬áµ¿ε ÉáßΦ¿αÑ¡¡«⌐    Åá¼∩Γ¿    Σ¿α¼    Lotus/Intel/Microsoft
  41. (Expanded Memory Specification - EMS)  óÑαß¿¿  3.2  ¿  óδΦÑ.  Å«ß½Ñ
  42. ºáúαπº¬¿  ó  EMS,  «óÑα½Ñ⌐¡δ⌐  Σá⌐½ ºá¬αδóáÑΓß∩ ¿ ºáúαπº¬á «óÑα½ÑÑó
  43. óδ»«½¡∩ÑΓß∩ íδßΓαδ¼ ¬«»¿α«ó᡿Ѽ ó »á¼∩Γ¿.
  44.  
  45.  
  46.                          î«¡¿Γ«α «óÑα½ÑÑó.
  47.  
  48.      î«¡¿Γ«α «óÑα½ÑÑó  Turbo  Pascal αÑ὿º«óá¡ ßΓá¡ñáαΓ¡δ¼ ¼«ñπ½Ñ¼
  49. Overlay.  ÆÑσ¡¿¬á π»αáó½Ñ¡¿∩ íπΣÑα«¼, ¿ß»«½∞ºπѼá∩ ¼«ñπ½Ñ¼ Overlay,
  50. óßÑúñá  úáαá¡Γ¿απÑΓ  «»Γ¿¼á½∞¡πε  »α«¿ºó«ñ¿Γѽ∞¡«ßΓ∞  ó  óδñѽѡ¡«⌐
  51. »á¼∩Γ¿.  ìá»α¿¼Ñα,  ¼«¡¿Γ«α  «óÑα½ÑÑó  óßÑúñá  ß«σαá¡∩ÑΓ  ó  íπΣÑαÑ
  52. «óÑα½ÑÑó ¬á¬ ¼«ª¡« í«½∞ΦÑ «óÑα½ÑÑó, ñ½∩ Γ«ú« τΓ«íδ ß«¬αáΓ¿Γ∞ τΓÑ¡¿Ñ
  53. «óÑα½ÑÑó ß ñ¿ß¬á.  Å«ß½Ñ Γ«ú« ¬á¬ «óÑα½Ñ⌐ ºáúαπªÑ¡, ó맮ó ½εí«⌐ Ñú«
  54. »α«úαá¼¼δ   »α«¿ºó«ñ¿Γß∩   ΓᬪѠ íδßΓα«,  ¬á¬  óδº«ó  ¡Ñ«óÑα½Ñ⌐¡δσ
  55. »α«úαá¼¼.  ü«½ÑÑ Γ«ú«,  ¬«úñá ¼«¡¿Γ«απ «óÑα½ÑÑó  ΓαÑíπÑΓß∩  πñ὿Γ∞
  56. «óÑα½Ñ⌐,  τΓ«íδ «ßó«í«ñ¿Γ∞ »á¼∩Γ∞ ñ½∩ ñαπú«ú« «óÑα½Ñ∩,  «¡ »δΓáÑΓß∩
  57. πñ὿Γ∞ ΓÑ «óÑα½Ñ¿,  ¬«Γ«αδÑ ¡Ñá¬Γ¿ó¡δ (¬«Γ«αδÑ ¡Ñ  ¿¼ÑεΓ  á¬Γ¿ó¡δσ
  58. »α«úαá¼¼ ó ñá¡¡«Ñ óαѼ∩).
  59.      ä½∩ αÑ὿ºáµ¿¿  ßó«Ñ⌐  ΓÑσ¡¿¬¿  π»αáó½Ñ¡¿∩  «óÑα½Ñ∩¼¿,   Turbo
  60. Pascal ΓαÑíπÑΓ, τΓ«íδ éδ ß«í½εñ὿ ñóá ó᪡δσ »αáó¿½á »α¿ ¡á»¿ßá¡¿¿
  61. ßó«¿σ »α«úαá¼¼:
  62.      - éßÑ «óÑα½Ñ⌐¡δÑ ¼«ñπ½¿ ñ«½ª¡δ ¿¼ÑΓ∞ ñ¿αÑ¬Γ¿óπ {$O+},  ¬«Γ«αá∩
  63. ºáßΓáó½∩ÑΓ ¬«¼»¿½∩Γ«α   íδΓ∞ πóÑαÑ¡¡δ¼,  τΓ« úÑ¡Ñα¿απѼδ⌐ ¬«ñ ¼«ªÑΓ
  64. íδΓ∞ «óÑα½Ñ⌐¡δ¼.
  65.      - ä½∩  ó맮óá ½εí«⌐ «óÑα½Ñ⌐¡«⌐ »α«µÑñπαδ ¿½¿ Σπ¡¬µ¿¿ éδ ñ«½ª¡δ
  66. úáαá¡Γ¿α«óáΓ∞, τΓ«  óßÑ á¬Γ¿ó¡δÑ  »α«µÑñπαδ  ¿  Σπ¡¬µ¿¿  ¿ß»«½∞ºπεΓ
  67. ñá½∞¡εε ¼«ñѽ∞ ó맮óá (far call).
  68.  
  69.      Äíá »αáó¿½á íπñπΓ «íΩ∩ß¡Ñ¡δ ó αáºñѽѠ "Éáºαáí«Γ¬á  «óÑα½Ñ⌐¡δσ
  70. »α«úαá¼¼". æÑ⌐τáß ºá¼ÑΓ¿¼ Γ«½∞¬«, τΓ« éδ ¼«ªÑΓÑ ½Ñú¬« óδ»«½¡¿Γ∞ φΓ¿
  71. ΓαÑí«óá¡¿∩,  óßΓáó½∩∩  ñ¿αÑ¬Γ¿óπ  ¬«¼»¿½∩Γ«αá  {$O+,F+}  ó   ¡áτὫ
  72. ¬áªñ«ú«  «óÑα½Ñ⌐¡«ú«  ¼«ñπ½∩ ¿ ñ¿αÑ¬Γ¿óπ {$F+} ó ¡áτὫ óßÑσ ñαπú¿σ
  73. ¼«ñπ½Ñ⌐ ¿ ú½áó¡«⌐ »α«úαá¼¼δ.
  74.  
  75.      Åα¿¼Ñτá¡¿Ñ: àß½¿  ñ¿αÑ¬Γ¿óá {$F+} íπñÑΓ »α«»πΘÑ¡á ó «óÑα½Ñ⌐¡«⌐
  76. »α«úαá¼¼Ñ, Γ« »α¿ óδ»«½¡Ñ¡¿¿ »α«úαá¼¼δ ó«º¡¿¬¡πΓ ¡Ñ»αÑñ߬áºπѼδÑ ¿,
  77. 󫺼«ª¡«, ¬áΓáßΓα«Σ¿τÑ߬¿Ñ αѺπ½∞ΓáΓδ.
  78.  
  79.      ä¿αÑ¬Γ¿óá ¬«¼»¿½∩Γ«αá {$O ¿¼∩ ¼«ñπ½∩} ¿ß»«½∞ºπÑΓß∩ ó »α«úαá¼¼Ñ
  80. ñ½∩  π¬áºá¡¿∩,  ¬á¬«⌐ ¼«ñπ½∞ ñ«½ªÑ¡ íδΓ∞ «óÑα½Ñ⌐¡δ¼.  ¥Γá ñ¿αÑ¬Γ¿óá
  81. ñ«½ª¡á íδΓ∞  αẼÑΘÑ¡á  »«ß½Ñ  «»ÑαáΓ«αá  uses  ó  »α«úαá¼¼Ñ,  ¿  ó
  82. «»ÑαáΓ«αÑ  uses  ßΓá¡ñáαΓ¡δ⌐ ¼«ñπ½∞ Äverlay ñ«½ªÑ¡ ßΓ«∩Γ∞ ñ« ½εí«ú«
  83. «óÑα½Ñ⌐¡«ú« ¼«ñπ½∩. Åα¿¼Ñα:
  84.  
  85.    programm Editor;
  86.    {$F+}       {çáñáΓ∞ ñá½∞¡¿⌐ ó맮ó ñ½∩ óßÑσ »α«µÑñπα ¿ Σπ¡¬µ¿⌐}
  87.  
  88.    uses
  89.       Overlay, Crt, EdInOut, EdFormat, EdPrint, EdFind, EdMain;
  90.  
  91.   {$O EdInOut}
  92.   {$O EdFormat}
  93.   {$O EdPrint}
  94.   {$O EdFind}
  95.   {$O EdMain}
  96.  
  97.      Åα¿¼Ñτá¡¿Ñ: è«¼»¿½∩Γ«α óδñáÑΓ ß««íΘÑ¡¿Ñ  «í  «Φ¿í¬Ñ,  Ñß½¿  éδ
  98. »δΓáÑΓÑß∞ ßñѽáΓ∞ «óÑα½Ñ⌐¡δ¼ ¼«ñπ½∞,  ¬«Γ«αδ⌐ ¡Ñ íδ½ «Γ¬«¼»¿½¿α«óá¡
  99. ó ß«ßΓ«∩¡¿¿ {$O+}.  êº ßΓá¡ñáαΓ¡δσ ¼«ñπ½Ñ⌐  ¼«ªÑΓ  íδΓ∞  «óÑα½Ñ⌐¡δ¼
  100. Γ«½∞¬«   ¼«ñπ½∞  Dos;  óßÑ  «ßΓá½∞¡δÑ  ßΓá¡ñáαΓ¡δÑ  ¼«ñπ½¿  System,
  101. Overlay, Graph,  Crt,  Turbo3,  Graph3 ¡Ñ ¼«úπΓ  íδΓ∞  «óÑα½Ñ⌐¡δ¼¿.
  102. èα«¼Ñ Γ«ú«,  »α«úαá¼¼δ,  ß«ñÑαªáΘ¿Ñ «óÑα½Ñ⌐¡δÑ ¼«ñπ½¿,  ñ«½ª¡δ íδΓ∞
  103. «Γ¬«¼»¿½¿α«óá¡δ ¡á  ñ¿ß¬;  ¬«¼»¿½∩Γ«α  óδñáÑΓ   «Φ¿í¬π,   Ñß½¿   éδ
  104. »δΓáÑΓÑß∞ «Γ¬«¼»¿½¿α«óáΓ∞ ΓᬿѠ»α«úαá¼¼δ ó »á¼∩Γ¿.
  105.  
  106.  
  107.                      î«¡¿Γ«α íπΣÑαá «óÑα½ÑÑó.
  108.  
  109.      ÄóÑα½Ñ⌐¡δ⌐ íπΣÑα  Turbo  Pascal  ½πτΦÑ   óßÑú«   «»¿ßáΓ∞   ¬á¬
  110. ¬«½∞µÑó«⌐ íπΣÑα,  ¬«Γ«αδ⌐ ¿¼ÑÑΓ π¬áºáΓѽ∞ ¡á ¡áτὫ ¿ σó«ßΓ íπΣÑαá.
  111. ÄóÑα½Ñ¿ óßÑúñá ºáúαπªáεΓß∩ ß ¡áτá½á íπΣÑαá, óδΓὬ¿óá∩ í«½ÑÑ ßΓáαδÑ
  112. ¬   σó«ßΓπ   íπΣÑαá.   è«úñá  íπΣÑα  ºá»«½¡∩ÑΓß∩  (Γ.Ñ.  ¬«úñá  ¡ÑΓ
  113. ñ«ßΓáΓ«τ¡«ú« ßó«í«ñ¡«ú«  »α«ßΓαá¡ßΓóá  ¼Ñªñπ  ¡áτὫ¼  ¿  σó«ßΓ«¼),
  114. «óÑα½Ñ¿  óδΓὬ¿óáεΓß∩  ß  ¬«¡µá íπΣÑαá,  ñ½∩ Γ«ú« τΓ«íδ «ßó«í«ñ¿Γ∞
  115. »α«ßΓαá¡ßΓó« ñ½∩ ¡«ó«ú« «óÑα½Ñ∩.
  116.      Å«ß¬«½∞¬π «íδτ¡á∩  »á¼∩Γ∞  ¡Ñ  ∩ó½∩ÑΓß∩  µ¿¬½¿τÑ߬«⌐  »« ßó«Ñ⌐
  117. »α¿α«ñÑ,  ñÑ⌐ßΓó¿Γѽ∞¡á∩  αÑ὿ºáµ¿∩   íπΣÑαá   «óÑα½ÑÑó   ó¬½ετáÑΓ
  118. ¡Ñ߬«½∞¬«  í«½∞ΦÑ  Φáú«ó  ñ½∩  Γ«ú«,  τΓ«íδ »αÑñßΓáó¿Γ∞ íπΣÑα óó¿ñÑ
  119. ¬«½∞µá. É¿ß.  13.1 ¿½½εßΓα¿απÑΓ φëà »α«µÑßß.  É¿ßπ¡«¬  »«¬áºδóáÑΓ
  120. ñ¿¡á¼¿¬π »«ñúαπº¬¿ «óÑα½ÑÑó ó »αÑñóáα¿Γѽ∞¡« »πßΓ«⌐ íπΣÑα «óÑα½ÑÑó.
  121. ÄóÑα½Ñ⌐ Ç ºáúαπªáÑΓß∩ »Ñαóδ¼,  ºá ¡¿¼ ºáúαπªáÑΓß∩ é,  ºá ¡¿¼ - æ  ¿
  122. ¡á¬«¡Ñµ  -  D.  ÆѼ¡á∩  «í½áßΓ∞  »«¬áºδóáÑΓ  ßó«í«ñ¡«Ñ »α«ßΓαá¡ßΓó«
  123. íπΣÑαá.
  124.  
  125.                              É¿ß. 13.1
  126.                  çáúαπº¬á ¿ óδΓὬ¿óá¡¿Ñ «óÑα½ÑÑó.
  127.  
  128.                        ÿáú 1                         ÿáú 2
  129.                    ┌────────────┐               ┌────────────┐
  130.                    │ ░░░░░░░░░░ │               │ ░░░░░░░░░░ │
  131.                    │ ░░░░░░░░░░ │               │ ░░░░░░░░░░ │
  132.                    │ ░░░░░░░░░░ │               │ ░░░░░░░░░░ │
  133.                    │ ░░░░░░░░░░ │   â«½«óá ───÷ ├────────────┤
  134.                    │ ░░░░░░░░░░ │               │  ÄóÑα½Ñ⌐ B │
  135.       â«½«óá ────÷ ├────────────┤               ├────────────┤
  136.                    │  ÄóÑα½Ñ⌐ Ç │               │  ÄóÑα½Ñ⌐ Ç │
  137.       òó«ßΓ  ────÷ └────────────┘   òó«ßΓ  ───÷ └────────────┘
  138.  
  139.  
  140.                        ÿáú 3                         ÿáú 4
  141.                    ┌────────────┐               ┌────────────┐
  142.                    │ ░░░░░░░░░░ │               │  ÄóÑα½Ñ⌐ æ │
  143.                    │ ░░░░░░░░░░ │               ├────────────┤
  144.       â«½«óá ────÷ ├────────────┤               │  ÄóÑα½Ñ⌐ é │
  145.                    │  ÄóÑα½Ñ⌐ æ │   òó«ßΓ  ───÷ ├────────────┤
  146.                    ├────────────┤               │ ░░░░░░░░░░ │
  147.                    │  ÄóÑα½Ñ⌐ é │               │ ░░░░░░░░░░ │
  148.                    ├────────────┤   â«½«óá ───÷ ├────────────┤
  149.                    │  ÄóÑα½Ñ⌐ Ç │               │  ÄóÑα½Ñ⌐ D │
  150.       òó«ßΓ  ────÷ └────────────┘               └────────────┘
  151.  
  152.  
  153.      èᬠéδ ¼«ªÑΓÑ ó¿ñÑΓ∞,  ¿¡ΓÑαÑßπεΘ¿Ñ ¡áß ß½πτá¿ »«½πτáεΓß∩  »α¿
  154. »ÑαÑσ«ñÑ  «Γ  Φáúá  3  ¬  Φáúπ  4.  é«-»Ñαóδσ:  π¬áºáΓѽ∞ ¡á ¡áτὫ
  155. »ÑαÑ߬ᬿóáÑΓ  τÑαѺ  ¡¿ª¡εε  úαá¡¿µπ  íπΣÑαá  «óÑα½ÑÑó,  ºáßΓáó½∩∩
  156. ¼«¡¿Γ«α  «óÑα½ÑÑó  ßñó¿úáΓ∞ óßÑ ºáúαπªÑ¡¡δÑ «óÑα½Ñ¿ (¿ π¬áºáΓѽ∞ ¡á
  157. σó«ßΓ) óóÑασ.  ¥Γ«Γ  ßñó¿ú  ¡Ñ«íσ«ñ¿¼  ñ½∩  Γ«ú«,  τΓ«íδ  ß«σαá¡¿Γ∞
  158. ßó«í«ñ¡πε  «í½áßΓ∞,  αáß»«½«ªÑ¡¡πε ¼Ñªñπ π¬áºáΓѽ∩¼¿ ¡á ¡áτὫ ¿ ¡á
  159. σó«ßΓ.  é«-óΓ«αδσ:  ñ½∩ Γ«ú«,  τΓ«íδ ºáúαπº¿Γ∞ «óÑα½Ñ⌐  D,  ¼«¡¿Γ«α
  160. «óÑα½ÑÑó óδΓὬ¿óáÑΓ «óÑα½Ñ⌐ Ç ¿º σó«ßΓá íπΣÑαá.
  161.      ÄóÑα½Ñ⌐ Ç ó φΓ«¼ ß½πτáÑ ∩ó½∩ÑΓß∩ ßá¼δ¼ αá¡¡¿¼  ¿º  ºáúαπªÑ¡¡δσ
  162. «óÑα½ÑÑó, ¿,  ß½Ññ«óáΓѽ∞¡«, ½πτΦ¿¼ óδí«α«¼ ñ½∩ óδΓὬ¿óá¡¿∩, ¬«úñá
  163. φΓ« ¡Ñ«íσ«ñ¿¼«.  î«¡¿Γ«α «óÑα½ÑÑó »α«ñ«½ªáÑΓ óδΓὬ¿óáΓ∞ «óÑα½Ñ¿ ¿º
  164. σó«ßΓá  »«¬á ¡Ñ «ßó«í«ñ¿Γ ¼ÑßΓ« ñ½∩ ¡«ó«ú« «óÑα½Ñ∩ ó ú«½«óÑ íπΣÑαá,
  165. ¿ ¬áªñδ⌐ αáº,  ¬«úñá π¬áºáΓѽ∞ ¡á ¡áτὫ ñ«ßΓ¿úáÑΓ úαá¡¿µδ  íπΣÑαá,
  166. «»Ñαᵿ∩ ßñó¿úá »«óΓ«α∩ÑΓß∩.
  167.      Æᬠαáí«ΓáÑΓ »« π¼«½τá¡¿ε ¼«¡¿Γ«α «óÑα½ÑÑó Turbo  Pascal  6.0.
  168. Äñ¡á¬«,  ¼«¡¿Γ«α  «óÑα½ÑÑó  Turbo  Pascal  ¼«ªÑΓ  αáí«ΓáΓ∞ ó αѪ¿¼Ñ
  169. «»Γ¿¼¿ºáµ¿¿.
  170.      ÅαÑñ»«½«ª¿¼, τΓ«  «óÑα½Ñ⌐  Ç  ß«ñÑαª¿Γ  α∩ñ τáßΓ« ¿ß»«½∞ºπѼδσ
  171. »α«úαá¼¼.  äáªÑ, Ñß½¿ φΓ¿ »α«úαá¼¼δ ¿ß»«½∞ºπεΓß∩ óßÑ óαѼ∩, Ç íπñÑΓ
  172. óßÑúñá óδΓὬ¿óáΓ∞ß∩ ¿º «óÑα½Ñ⌐¡«ú« íπΣÑαá,  ó¡«ó∞ ºáúαπªá∩ß∞ τÑαѺ
  173. ¬«α«Γ¬«Ñ óαѼ∩.  Åα«í½Ñ¼á ºñÑß∞  ºá¬½ετáÑΓß∩  ó  Γ«¼,  τΓ«  ¼«¡¿Γ«α
  174. «óÑα½ÑÑó  ¡¿τÑú« ¡Ñ º¡áÑΓ « τáßΓ«ΓÑ ó맮ó«ó »α«úαá¼¼ ¿º Ç - á º¡áÑΓ
  175. Γ«½∞¬«,  τΓ« ¬«úñá ¿ñÑΓ ó맮ó »α«úαá¼¼δ ¿º Ç,  ¿ Ç ¡ÑΓ ó »á¼∩Γ¿, «¡
  176. ñ«½ªÑ¡ ºáúαπº¿Γ∞ Ç.  Äñ¡« ¿º αÑΦÑ¡¿⌐ φΓ«⌐ »α«í½Ñ¼δ ¼«ªÑΓ ºá¬½ετáΓß∩
  177. ó »αÑαδóá¡¿¿ ¬áªñ«ú« ó맮óá »α«úαá¼¼δ ¿º Ç,  ¿ Γ«úñá  ¬áªñδ⌐  ó맮ó
  178. »ÑαÑñó¿úáÑΓ Ç ó ú«½«óπ «óÑα½Ñ⌐¡«ú« íπΣÑαá, τΓ«íδ «ΓαếΓ∞ Ñú« ¡«óδ⌐
  179. ßΓáΓπß,  ¬á¬  ßἫú«  »«ß½Ññ¡Ñú«  ¿ß»«½∞º«óá¡¡«ú«  «óÑα½Ñ∩.   ÆᬫÑ
  180. »αÑαδóá¡¿Ñ  ó맮ó«ó,  ¬  ß«ªá½Ñ¡¿ε,  «τÑ¡∞ ñ«α«ú« ó ß¼δ߽Ѡ߬«α«ßΓ¿
  181. óδ»«½¡Ñ¡¿∩,  ¿ ó ¡Ñ¬«Γ«αδσ ß½πτá∩σ ¼«ªÑΓ ºá¼Ññ½¿Γ∞  »α«úαá¼¼π  ñáªÑ
  182. í«½∞ΦÑ, τѼ «»Ñαᵿ∩ ºáúαπº¬¿ «óÑα½ÑÑó.
  183.      Turbo Pascal  «íÑß»Ñτ¿óáÑΓ  ¬«¼»α«¼¿ßß¡«Ñ   αÑΦÑ¡¿Ñ,   ¬«Γ«α«Ñ
  184. »αá¬Γ¿τÑ߬¿  ¡Ñ  ñáÑΓ »«ΓÑα¿ »α«¿ºó«ñ¿Γѽ∞¡«ßΓ¿ ¿ ñ«ßΓ¿úáÑΓ óδß«¬«⌐
  185. ßΓѻѡ¿ πß»Ñσá »α¿ «»αÑñѽѡ¿¿ τáßΓ« ¿ß»«½∞ºπѼδσ «óÑα½ÑÑó (¬«Γ«αδÑ
  186. ¡Ñ ñ«½ª¡δ óδΓὬ¿óáΓ∞ß∩): ¬«úñá «óÑα½Ñ⌐ í½¿º«¬ ¬ σó«ßΓπ «óÑα½Ñ⌐¡«ú«
  187. íπΣÑαá,  «¡ »«»áñáÑΓ ¡á "¿ß»δΓá¡¿Ñ".  àß½¿,  ó« óαѼ∩ φΓ«ú« »Ñα¿«ñá
  188. ¿ß»δΓá¡¿∩   »α«¿ßσ«ñ¿Γ   óδº«ó   »α«úαá¼¼δ  ¿º  «óÑα½Ñ∩,  ¿ß»δΓá¡¿Ñ
  189. "«Γ¼Ñ¡∩ÑΓß∩",  «óÑα½Ñ⌐ ¡Ñ íπñÑΓ óδΓ«½¬¡πΓ,  ¬«úñá «¡ ñ«ßΓ¿ú  σó«ßΓá
  190. «óÑα½Ñ⌐¡«ú«  íπΣÑαá.  é¼ÑßΓ« φΓ«ú« «¡ »α«ßΓ« »ÑαÑñó¿úáÑΓß∩ ó ú«½«óπ
  191. íπΣÑαá, Γ.Ñ. »ÑαÑßѬáÑΓ úαá¡¿µπ ¬«½∞µá «óÑα½Ñ⌐¡«ú« íπΣÑαá. æ ñαπú«⌐
  192. ßΓ«α«¡δ,  Ñß½¿ ¡Ñ í佫 ó맮ó«ó ¬ φΓ«¼π «óÑα½Ñε ó« óαѼ∩ Ñú« »Ñα¿«ñá
  193. ¿ß»δΓá¡¿⌐,  τΓ« ú«ó«α¿Γ «  ¡¿º¬«⌐  τáßΓ«ΓÑ  ¿ß»«½∞º«óá¡¿∩,  «óÑα½Ñ⌐
  194. óδΓὬ¿óáÑΓß∩, ¬«úñá ñ«ßΓ¿úáÑΓ σó«ßΓá «óÑα½Ñ⌐¡«ú« íπΣÑαá.
  195.      çáΓαáΓδ ¡á   ßσÑ¼π   ¿ß»δΓá¡¿⌐/«Γ¼Ñ¡δ,   »α¿   ¬«Γ«α«⌐   τáßΓ«
  196. ¿ß»«½∞ºπѼδÑ  «óÑα½Ñ¿ ß«σαá¡∩εΓß∩ ó íπΣÑαÑ «óÑα½ÑÑó,  ºá¬½ετáεΓß∩ ó
  197. »ÑαÑσóáΓδóá¡¿¿ Γ«½∞¬«  «ñ¡«ú«  ó맮óá  ¬áªñδ⌐  αáº,  ¬«úñá  «óÑα½Ñ⌐
  198. »α¿í½¿ªáÑΓß∩ ¬ σó«ßΓπ «óÑα½Ñ⌐¡«ú« íπΣÑαá.
  199.      äóÑ ¡«óδÑ   »α«úαá¼¼δ   ¼«¡¿Γ«αá   «óÑα½ÑÑó   OvrSetRetry    ¿
  200. OvrGetRetry π»αáó½∩εΓ   ¼Ñσá¡¿º¼«¼   ¿ß»δΓá¡¿⌐/«Γ¼Ñ¡δ.  OvrSetRetry
  201. πßΓá¡áó½¿óáÑΓ  αẼÑα  «í½áßΓ¿  ó  íπΣÑαÑ   «óÑα½ÑÑó,   ó   ¬«Γ«α«⌐
  202. »α«¿ßσ«ñ∩Γ  ¿ß»δΓá¡¿∩,  á OvrGetRetry ó«ºóαáΘáÑΓ ΓѬπΘπε πßΓá¡«ó¬π.
  203. àß½¿ «óÑα½Ñ⌐  »«»áñáÑΓ  ó¡πΓα∞  »«ß½Ññ¡¿σ  OvrGetRetry  íá⌐Γ  »ÑαÑñ
  204. σó«ßΓ«¼ íπΣÑαá  «óÑα½ÑÑó,  «¡  áóΓ«¼áΓ¿τÑ߬¿ »«»áñáÑΓ ¡á ¿ß»δΓá¡¿∩.
  205. ïεí«Ñ ßó«í«ñ¡«Ñ »α«ßΓαá¡ßΓó« ó íπΣÑαÑ «óÑα½ÑÑó  αáßß¼áΓα¿óáÑΓß∩ ¬á¬
  206. τáßΓ∞ «í½áßΓ¿ ¿ß»δΓá¡¿⌐.
  207.  
  208.  
  209.                       è«¡ßΓá¡Γδ ¿ »ÑαѼѡ¡δÑ.
  210.  
  211.      ¥Γ«Γ αáºñѽ   ¬αáΓ¬«   «»¿ßδóáÑΓ   ¬«¡ßΓá¡Γδ   ¿   »ÑαѼѡ¡δÑ,
  212. «»αÑñѽѡ¡δѠ󠼫ñπ½Ñ Overlay.
  213.  
  214.  
  215.                             OvrResult.
  216.  
  217.      èáªñá∩ »α«µÑñπαá ¼«ñπ½∩  Overlay  ó«ºóαáΘáÑΓ  ¬«ñ  ó«ºóαáΓá  ó
  218. »ÑαѼѡ¡πε OvrResult.
  219.  
  220.      var OvrResult : Integer;
  221.  
  222.      é«º¼«ª¡δÑ ¬«ñδ  ó«ºóαáΓá  «»αÑñÑ½Ñ¡δ  ¬«¡ßΓá¡ΓἿ,  «»¿ßá¡¡δ¼¿
  223. ¡¿ªÑ. è«ñ ¡«½∞ «º¡áτáÑΓ πß»ÑΦ¡δ⌐ ó«ºóαáΓ.
  224.  
  225.      ÅÑαѼѡ¡á∩ OvrResult »«ñ«í¡á ßΓá¡ñáαΓ¡«⌐ Σπ¡¬µ¿¿  IOResult, ºá
  226. ¿ß¬½ετÑ¡¿Ñ¼  Γ«ú«,  τΓ«  OvrResult  ¡Ñ  πßΓá¡áó½¿óáÑΓß∩  ó ¡«½∞ »α¿
  227. «íαáΘÑ¡¿¿ ¬ ¡Ñ⌐. Å«φΓ«¼π, ¡Ñ ¡πª¡« ¬«»¿α«óáΓ∞ OvrResult ó ½«¬á½∞¡πε
  228. »ÑαѼѡ¡πε »ÑαÑñ ÑÑ »α«óÑᬫ⌐.
  229.  
  230.  
  231.                            OvrTrapCount.
  232.  
  233.      var OvrTrapCount : Word;
  234.  
  235.      èáªñδ⌐ αáº,  ¬«úñá »α«úαἼᠿº «óÑα½Ñ∩ »αÑαδóáÑΓß∩  ¼«¡¿Γ«α«¼
  236. «óÑα½Ñ∩,  ½¿í«  ¿º-ºá  Γ«ú«,  τΓ« «óÑα½Ñ∩ ¡ÑΓ ó »á¼∩Γ¿,  ½¿í« ¿º-ºá
  237. Γ«ú«,  τΓ« «¡ ¡á ¿ß»δΓá¡¿¿,  OvrTrapCount πóѽ¿τ¿óáÑΓß∩.  ìáτá½∞¡«Ñ
  238. º¡áτÑ¡¿Ñ OvrTrapCount ¡«½∞.
  239.  
  240.  
  241.                            OvrLoadCount.
  242.  
  243.      var OvrLoadCount : Word;
  244.  
  245.      èáªñδ⌐ αáº, ¬«úñá «óÑα½Ñ⌐ ºáúαπªáÑΓß∩, »ÑαѼѡ¡á∩ OvrLoadCount
  246. πóѽ¿τ¿óáÑΓß∩ ¡á Ññ¿¡¿µπ. ìáτá½∞¡«Ñ º¡áτÑ¡¿Ñ OvrLoadCount ¡«½∞.
  247.      Åα«óÑᬫ⌐ OvrTrapCount  ¿  OvrLoadCount  (¡á»α¿¼Ñα,   ó   «¬¡Ñ
  248. Watch «Γ½áñτ¿¬á)  »α¿  ¿ñÑ¡Γ¿τ¡«¼  óδ»«½¡Ñ¡¿¿  »α«úαá¼¼,  éδ ¼«ªÑΓÑ
  249. π»αáó½∩Γ∞   ñÑ⌐ßΓó¿Ñ¼   «í½áßΓ¿   ¿ß»δΓá¡¿⌐   αẽ¿τ¡δσ    αẼÑα«ó
  250. (πßΓá¡áó½¿óáÑΓß∩  OvrSetRetry)  ñ½∩ ¡áσ«ªñÑ¡¿∩ «»Γ¿¼á½∞¡«ú« αẼÑαá
  251. éáΦÑ⌐ ¬«¡¬αÑΓ¡«⌐ »α«úαá¼¼δ.
  252.  
  253.  
  254.                            OvrFileMode.
  255.  
  256.      var OvrFileMode : éyte;
  257.  
  258.      ÅÑαѼѡ¡á∩ OvrFileMode   ¿ß»«½∞ºπÑΓß∩   ñ½∩  «»αÑñѽѡ¿∩  ¬«ñá
  259. ñ«ßΓπ»á,  »ÑαÑñáóáѼ«ú« ó DOS,  ¬«úñá «Γ¬αδóáÑΓß∩ Σá⌐½ «óÑα½ÑÑó. Å«
  260. π¼«½τá¡¿ε  OvrFileMode  ¡«½∞,  τΓ« ß««ΓóÑΓßΓóπÑΓ ñ«ßΓπ»π Γ«½∞¬« ñ½∩
  261. τΓÑ¡¿∩. Åα¿ßóá¿ó᡿Ѽ ¡«ó«ú« º¡áτÑ¡¿∩ OvrFileMode ñ« ó맮óá OvrInit
  262. éδ ¼«ªÑΓÑ ¿º¼Ñ¡¿Γ∞ ¬«ñ ñ«ßΓπ»á,  ¡á»α¿¼Ñα ñ½∩ Γ«ú«, τΓ«íδ αáºαÑΦ¿Γ∞
  263. αáß»αÑñѽѡ¡δ⌐ ñ«ßΓπ» ó ßÑΓ¿.  ü«½ÑÑ ñÑΓá½∞¡« ß«  º¡áτÑ¡¿∩¼¿  ¬«ñ«ó
  264. ñ«ßΓπ»á   ¼«ª¡«   «º¡á¬«¼¿Γ∞ß∩   ó   éáΦѼ  æ»αáó«τ¡«¼  απ¬«ó«ñßΓóÑ
  265. »α«úαá¼¼¿ßΓá »« DOS.
  266.  
  267.  
  268.                             OvrReadBuf.
  269.  
  270.      Type OvrReadFunc = Function(OvrSeg : Word) : Integer;
  271.      var OvrReadBuf : OvrReadFunc;
  272.  
  273.      Åα«µÑñπα¡á∩ »ÑαѼѡ¡á∩ OvrReadBuf »«ºó«½∩ÑΓ  éá¼ »ÑαÑσóáΓδóáΓ∞
  274. «»Ñαᵿ¿ ºáúαπº¬¿ «óÑα½ÑÑó,  ¡á»α¿¼Ñα, ñ½∩ «íαáí«Γ¬¿ «Φ¿í«¬ ¿½¿ ñ½∩
  275. »α«óÑન:  »α¿ßπΓßΓóπÑΓ ½¿  ú¿í¬¿⌐  ñ¿ß¬.  è«úñá  ¼«¡¿Γ«α  «óÑα½ÑÑó
  276. τ¿ΓáÑΓ  «óÑα½Ñ⌐,  «¡  óδºδóáÑΓ  Σπ¡¬µ¿ε,  áñαÑß  ¬«Γ«α«⌐ ºá»«¼¡Ñ¡ ó
  277. OvrReadBuf. àß½¿ Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ ¡«½∞, ¼«¡¿Γ«α «óÑα½ÑÑó ßτ¿ΓáÑΓ,
  278. τΓ«  «»Ñαᵿ∩  íδ½á  πß»ÑΦ¡«⌐.  àß½¿  αѺπ½∞ΓáΓ  Σπ¡¬µ¿¿  ¡Ñ  ¡«½∞,
  279. úÑ¡Ñα¿απÑΓß∩  «Φ¿í¬á  óαѼѡ¿  óδ»«½¡Ñ¡¿∩  209.   Åáαá¼ÑΓα   OvrSeg
  280. »«¬áºδóáÑΓ,  τΓ«  «óÑα½Ñ⌐  ºáúαπªÑ¡,  ¡« ¬á¬ éδ πó¿ñ¿ΓÑ »«ºªÑ,  éá¼
  281. ¡¿¬«úñá ¡Ñ »«¡áñ«í¿Γß∩ ñ«ßΓπ» ¬ φΓ«⌐ ¿¡Σ«α¼áµ¿¿.
  282.  
  283.      Åα¿¼Ñτá¡¿Ñ: éδ ¡¿¬«úñá ¡Ñ  ñ«½ª¡δ  óδºδóáΓ∞  ½εíπε  «óÑα½Ñ⌐¡πε
  284. »α«úαá¼¼π  ¿º  éáΦÑ⌐ Σπ¡¬µ¿¿ τΓÑ¡¿∩ «óÑα½Ñ∩.  ¥Γ«Γ ó맮ó »α¿óÑñÑΓ ¬
  285. ¬αáσπ ß¿ßΓѼδ.
  286.  
  287.      ä½∩ Γ«ú«,  τΓ«íδ πßΓá¡«ó¿Γ∞ éáΦπ  ß«íßΓóÑ¡¡πε  Σπ¡¬µ¿ε  τΓÑ¡¿∩
  288. «óÑα½Ñ∩, éδ ñ«½ª¡δ ó¡áτá½Ñ ß«σαá¡¿Γ∞ »αÑñδñπΘÑÑ º¡áτÑ¡¿Ñ OvrReadBuf
  289. ó »ÑαѼѡ¡«⌐ Γ¿»á OvrReadFunc ¿ ºáΓѼ »α¿ßó«¿Γ∞ éáΦπ Σπ¡¬µ¿ε τΓÑ¡¿∩
  290. «óÑα½Ñ∩  OvrReadBuf.  é¡πΓα¿ éáΦÑ⌐ Σπ¡¬µ¿¿ τΓÑ¡¿∩ éδ ñ«½ª¡δ óδºóáΓ∞
  291. ß«σαá¡Ñ¡¡πε  Σπ¡¬µ¿ε  τΓÑ¡¿∩,   τΓ«íδ   »α«¿ºóÑßΓ¿   ñÑ⌐ßΓó¿Γѽ∞¡πε
  292. «»Ñαáµ¿ε  ºáúαπº¬¿.  ïεíδÑ »α«óÑન,  ¬«Γ«αδÑ éδ σ«Γ¿ΓÑ »α«¿ºóÑßΓ¿,
  293. ΓᬿѠ ¬á¬  »α«óÑα¬á  ¡á  ¡á½¿τ¿Ñ  ú¿í¬«ú«   ñ¿ß¬á,   ñ«½ª¡δ   íδΓ∞
  294. »α«¿ºóÑñÑ¡δ  ñ«  ó맮óá ß«σαá¡Ñ¡¡«⌐ Σπ¡¬µ¿¿ τΓÑ¡¿∩ ¿ »α«óÑα¬á ½εíδσ
  295. «Φ¿í«¬ ñ«½ª¡á »α«¿ºó«ñ¿Γ∞ß∩ »«ß½Ñ φΓ«ú« ó맮óá.
  296.      è«ñ ñ½∩  πßΓᡫ󬿠 Σπ¡¬µ¿¿  «óÑα½ÑÑó  ñ«½ªÑ¡ ¡áσ«ñ¿Γ∞ß∩ ßαáºπ
  297. »«ß½Ñ ó맮óá OvrInit ¿ ó φΓ« óαѼ∩ OvrReadBuf íπñÑΓ ß«ñÑαªáΓ∞ áñαÑß
  298. ßΓá¡ñáαΓ¡«⌐ Σπ¡¬µ¿¿ τΓÑ¡¿∩ ñ¿ß¬á.
  299.      àß½¿ éδ Γᬠ ªÑ  óδºδóáÑΓÑ  OvrInitEMS,  «¡á  ¿ß»«½∞ºπÑΓ  éáΦπ
  300. Σπ¡¬µ¿ε τΓÑ¡¿∩ «óÑα½ÑÑó ß ñ¿ß¬á ó EMS-»á¼∩Γ∞,  Ñß½¿ ¡Ñ í佫 «Φ¿í«¬,
  301. «¡á ºá»«¼¿¡áÑΓ áñαÑß ßΓá¡ñáαΓ¡«⌐ Σπ¡¬µ¿¿ τΓÑ¡¿∩ EMS  ó  OvrReadBuf.
  302. àß½¿  éδ  Γᬠ ªÑ  ªÑ½áÑΓÑ  »ÑαѬαδΓ∞  Σπ¡¬µ¿ε  τΓÑ¡¿∩ EMS,  »α«ßΓ«
  303. »«óΓ«α¿ΓÑ »α«µÑßß πßΓᡫ󬿠»«ß½Ñ ó맮óá OvrInitEMS.
  304.      æΓá¡ñáαΓ¡á∩ Σπ¡¬µ¿∩  τΓÑ¡¿∩  ß  ñ¿ß¬á ó«ºóαáΘáÑΓ ¡«½∞ ó ß½πτáÑ
  305. πß»Ñσá ¿ ¬«ñ «Φ¿í¬¿ DOS ó »α«Γ¿ó¡«¼ ß½πτáÑ. Ç¡á½«ú¿τ¡«, ßΓá¡ñáαΓ¡á∩
  306. Σπ¡¬µ¿∩ τΓÑ¡¿∩ EMS ó«ºóαáΘáÑΓ ¡«½∞ ó ß½πτáÑ πß»Ñσá ¿ ¬«ñ «Φ¿í¬¿ EMS
  307. ó »α«Γ¿ó¡«¼ ß½πτáÑ (º¡áτÑ¡¿Ñ ó ñ¿á»áº«¡Ñ $80 -  $FF).  è«ñδ  «Φ¿í«¬
  308. DOS ß¼.  ó αáºñѽѠ"ÄΦ¿í¬¿ óαѼѡ¿ óδ»«½¡Ñ¡¿∩" ó »α¿½«ªÑ¡¿¿ Ç φΓ«ú«
  309. απ¬«ó«ñßΓóá »« Turbo Pascal.  è«ñδ «Φ¿í«¬ EMS ß¼«Γα¿ ó ß»Ñµ¿Σ¿¬áµ¿¿
  310. αáßΦ¿αÑ¡¡«⌐ »á¼∩Γ¿ LOTUS/INTEL/MICROSOFT.
  311.      æ½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ   ¬«ñá   ñѼ«¡ßΓα¿απÑΓ   ¬á¬    »¿ßáΓ∞    ¿
  312. πßΓá¡áó½¿óáΓ∞ Σπ¡¬µ¿ε τΓÑ¡¿∩ «óÑα½Ñ∩.  ì«óá∩ Σπ¡¬µ¿∩ τΓÑ¡¿∩ «óÑα½Ñ∩
  313. »«ßΓ«∩¡¡« óδºδóáÑΓ ß«σαá¡Ñ¡¡πε Σπ¡¬µ¿ε τΓÑ¡¿∩ «óÑα½ÑÑó ñ«  ΓÑσ »«α,
  314. »«¬á  ¡Ñ  ó«º¡¿¬¡ÑΓ  «Φ¿í¬á.  ïεíá∩  «Φ¿í¬á  »ÑαÑñáÑΓß∩ ó »α«µÑñπαδ
  315. DOSError ¿½¿ EMSError (¡Ñ »«¬áºá¡¡δÑ  ºñÑß∞)  Γá¬,  τΓ«  «¡¿  ¼«úπΓ
  316. óδñáΓ∞  «Φ¿í¬π  »«½∞º«óáΓѽε.  çá¼ÑΓ¿¼,  τΓ« »áαá¼ÑΓα OvrSeg Γ«½∞¬«
  317. »ÑαÑñáÑΓß∩ ó ß«σαá¡Ñ¡¡πε Σπ¡¬µ¿ε τΓÑ¡¿∩ «óÑα½ÑÑó ¿ ¡¿¬«úñá »α∩¼« ¡Ñ
  318. π»αáó½∩ÑΓß∩ ¡«ó«⌐ Σπ¡¬µ¿Ñ⌐ τΓÑ¡¿∩ «óÑα½ÑÑó.
  319.  
  320.      uses Overlay;
  321.      var
  322.         SaveOvrRead: OvrReadFunc;
  323.         UsingEMS: Boolean;
  324.  
  325.      function MyOvrRead(OvrSeg: Word): Integer;
  326.      var
  327.         E: Integer;
  328.      begin
  329.         repeat
  330.            E := SaveOvrRead(OvrSeg);
  331.            if E <> 0 then
  332.               if UsingEms then
  333.                  EMSError(E)
  334.               else
  335.                  DOSError(E);
  336.          until E = 0;
  337.          MyOvrRead := 0;
  338.       end;
  339.  
  340.       begin
  341.          OvrInit('MYPROG.OVR);
  342.          SaveOvrRead := OvrReadBuf;   {ßΓá¡ñáαΓ¡á∩ Σπ¡¬µ¿∩
  343.                                        ß«σαá¡Ñ¡¿∩ ñ¿ß¬á}
  344.          OvrReadBuf := MyOvrRead;     {πßΓá¡«ó¬á ßó«Ñ⌐ Σπ¡¬µ¿¿}
  345.          UsingEMS := False;
  346.          OvrInitEMS;
  347.          if (OvrResult = OvrOk) then
  348.          begin
  349.             SaveOvrRead := OvrReadBuf;  {ßΓá¡ñáαΓ¡á∩ Σπ¡¬µ¿∩
  350.                                          ß«σαá¡Ñ¡¿∩ EMS}
  351.             OvrReadBuf := MyOvrRead;    {πßΓá¡«ó¬á ßó«Ñ⌐ Σπ¡¬µ¿¿}
  352.             UsingEMS := True;
  353.          end;
  354.          ...
  355.       end.
  356.  
  357.  
  358.                           è«ñδ ó«ºóαáΓá.
  359.  
  360.      ÄΦ¿í¬¿ ¼«ñπ½∩ Overlay  óδñáεΓß∩  τÑαѺ  »ÑαѼѡ¡πε  OvrResult.
  361.      Ä»αÑñѽѡδ ß½ÑñπεΘ¿Ñ ¬«ñδ:
  362.  
  363.                  Æáí½¿µá 13.1. ç¡áτÑ¡¿∩ OvrResult.
  364. ───────────────────────────────────────────────────────────────────
  365.     è«¡ßΓá¡Γá       ç¡áτÑ¡¿Ñ               Ä»¿ßá¡¿Ñ
  366. ───────────────────────────────────────────────────────────────────
  367.     ovrOK             0          πß»ÑΦ¡«
  368.     ovrError         -1          «Φ¿í¬á ¼«¡¿Γ«αá «óÑα½ÑÑó
  369.     ovrNotFound      -2          Σá⌐½ «óÑα½ÑÑó ¡Ñ ¡á⌐ñÑ¡
  370.     ovrNoMemory      -3          ¡ÑΓ »á¼∩Γ¿ ñ½∩ íπΣÑαá «óÑα½ÑÑó
  371.     ovrIOError       -4          «Φ¿í¬á ó/ó «óÑα½Ñ⌐¡«ú« Σá⌐½á
  372.     ovrNoEMSDriver   -5          ñαá⌐óÑα EMS ¡Ñ πßΓá¡«ó½Ñ¡
  373.     ovrNoEMSMemory   -6          ¡Ññ«ßΓáΓ«τ¡« EMS »á¼∩Γ¿
  374. ───────────────────────────────────────────────────────────────────
  375.  
  376.  
  377.                        Åα«µÑñπαδ ¿ Σπ¡¬µ¿¿.
  378.  
  379.      é ¼«ñπ½Ñ  Overlay  «»αÑñÑ½Ñ¡δ  »α«µÑñπαδ OvrInit,  OvrInitEMS,
  380. OvrSetBuf, OvrClearBuf,   OvrSetRetry    ¿    Σπ¡¬µ¿¿    OvrGetBuf,
  381. OvrGetRetry. çñÑß∞  «¡¿  ¬αáΓ¬« «»¿ßá¡δ.
  382.  
  383.  
  384.                              OvrInit.
  385.  
  386.      procedure OvrInit(FileName : String);
  387.  
  388.      ê¡¿µ¿á½¿º¿απÑΓ ¼«¡¿Γ«α «óÑα½ÑÑó ¿ «Γ¬αδóáÑΓ  «óÑα½Ñ⌐¡δ⌐  Σá⌐½.
  389. àß½¿ »áαá¼ÑΓα  FileName  ¡Ñ  ºáñáÑΓ  πßΓα«⌐ßΓó« ¿½¿ ß»αáó«τ¡¿¬,  Γ«
  390. ¼«¡¿Γ«α «óÑα½ÑÑó ¿ΘÑΓ  Σá⌐½  ó  ΓѬπΘѼ  ß»αáó«τ¡¿¬Ñ,  ß»αáó«τ¡¿¬Ñ,
  391. ß«ñÑαªáΘѼ Σá⌐½  .EXE  (»«ñ  DOS  3.x)  ¿ ó ß»αáó«τ¡¿¬áσ,  ºáñá¡¡δσ
  392. »ÑαѼѡ¡«⌐  ßαÑñδ  DOS  PATH.  é«º¼«ª¡δÑ  ¬«ñδ  «Φ¿í«¬  OvrError  ¿
  393. OvrNotFound.  é ß½πτáÑ «Φ¿í¬¿ ¼«¡¿Γ«α «óÑα½ÑÑó ¡Ñ πßΓá¡áó½¿óáÑΓß∩ ¿
  394. »«»δΓ¬á óδºóáΓ∞ «óÑα½Ñ⌐¡πε »α«úαá¼¼π íπñÑΓ úÑ¡Ñα¿α«óáΓ∞  ¬«ñ «Φ¿í¬¿
  395. óαѼѡ¿ óδ»«½¡Ñ¡¿∩ 208.
  396.  
  397.      Åα¿¼Ñτá¡¿Ñ: Åα«µÑñπαá  OvrInit  ñ«½ª¡á  íδΓ∞  óδºóá¡á ñ« ½εí«⌐
  398. ñαπú«⌐ »α«µÑñπαδ ¼«¡¿Γ«αá «óÑα½ÑÑó.
  399.  
  400.  
  401.                             OvrInitEMS.
  402.  
  403.      procedure OvrInitEMS;
  404.  
  405.      àß½¿ ó«º¼«ª¡«,  ºáúαπªáεΓ «óÑα½Ñ⌐¡δ⌐ Σá⌐½ ó EMS. àß½¿ πß»ÑΦ¡«,
  406. «óÑα½Ñ⌐¡δ⌐ Σá⌐½ ºá¬αδóáÑΓß∩ ¿  óßÑ  »«ß½ÑñπεΘ¿Ñ  ºáúαπº¬¿  «óÑα½ÑÑó
  407. π߬«α∩εΓß∩  ¿º-ºá íδßΓα«⌐ »ÑαÑñáτ¿ ó »á¼∩Γ¿.  é«º¼«ª¡δÑ ¬«ñδ «Φ¿í«¬
  408. OvrError,  OvrIOError,  OvrNoEmsDriver  ¿  OvrNoEmsMemory.  î«¡¿Γ«α
  409. «óÑα½ÑÑó  íπñÑΓ  »α«ñ«½ªáΓ∞  αáí«ΓáΓ∞,  Ñß½¿  OvrInitEMS ó«ºóαáΘáÑΓ
  410. «Φ¿í¬π, ¡« «óÑα½Ñ¿ íπñπΓ τ¿ΓáΓ∞ß∩ ß ñ¿ß¬á.
  411.      Åα¿¼Ñτá¡¿Ñ: êß»«½∞º«óá¡¿Ñ   OvrInitEMS  ñ½∩  αẼÑΘÑ¡¿∩  Σá⌐½á
  412. «óÑα½ÑÑó ó EMS ¡Ñ «Γ¼Ñ¡∩ÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿ ó íπΣÑαÑ «óÑα½ÑÑó. ÄóÑα½Ñ¿
  413. íπñπΓ  ¬«»¿α«óáΓ∞ß∩ ¿º EMS ó "¡«α¼á½∞¡πε" »á¼∩Γ∞ «óÑα½Ñ⌐¡«ú« íπΣÑαá
  414. ñ« Γ«ú«,  ¬á¬ «¡¿ ¼«úπΓ íδΓ∞  óδ»«½¡Ñ¡δ.  Äñ¡á¬«,  »«ß¬«½∞¬π  Γá¬á∩
  415. »ÑαÑñáτá  ó  »á¼∩Γ¿  º¡áτ¿Γѽ∞¡«  íδß  ΓαÑÑ,  τѼ  τΓÑ¡¿Ñ  ß ñ¿ß¬á,
  416. ΓαÑí«óá¡¿Ñ  ¬  πóѽ¿τÑ¡¿ε  αẼÑαá   íπΣÑαá   «óÑα½ÑÑó   ßΓá¡«ó∩Γß∩
  417. º¡áτ¿Γѽ∞¡« ¼Ñ¡∞ΦÑ.
  418.  
  419.  
  420.                             OvrSetBuf.
  421.  
  422.      procedure OvrSetBuf(Size : LongInt);
  423.  
  424.      ôßΓá¡áó½¿óáÑΓ αẼÑα  «óÑα½Ñ⌐¡«ú«  íπΣÑαá.   çáñá¡¡δ⌐   αẼÑα
  425. ñ«½ªÑ¡ íδΓ∞ í«½∞ΦÑ ¿½¿ αáóÑ¡ ¡áτá½∞¡«¼π º¡áτÑ¡¿ε íπΣÑαá «óÑα½ÑÑó, ¿
  426. ¼Ñ¡∞ΦÑ ¿½¿ αáóÑ¡ º¡áτÑ¡¿ε MemAvail »½εß ΓѬπΘ¿⌐  αẼÑα «óÑα½Ñ⌐¡«ú«
  427. íπΣÑαá.  àß½¿ ºáñá¡¡δ⌐ αẼÑα í«½∞ΦÑ τѼ ΓѬπΘ¿⌐, Γ« ¿º ¡áτá½á ¬πτ¿
  428. íπñÑΓ óδñѽѡ«  ñ«»«½¡¿Γѽ∞¡«Ñ  »α«ßΓαá¡ßΓó«  (τΓ«  π¼Ñ¡∞Φ¿Γ αẼÑα
  429. ¬πτ¿).  àß½¿ ªÑ ºáñá¡¡δ⌐ αẼÑα ¼Ñ¡∞ΦÑ ΓѬπΘÑú«,  Γ« ¿º½¿ΦѬ »á¼∩Γ¿
  430. íπñÑΓ ó«ºóαáΘÑ¡ ó ¬πτπ.  OvrSetBuf ΓαÑíπÑΓ, τΓ«íδ ¬πτá íδ½á »πßΓá∩,
  431. Ñß½¿ ªÑ ñ¿¡á¼¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ í뫨 πªÑ αáß»αÑñѽѡδ τÑαѺ New ¿½¿
  432. GetMem,  íπñÑΓ ó«ºóαáΘÑ¡á «Φ¿í¬á. é«º¼«ª¡δÑ ¬«ñδ «Φ¿í«¬ «vrNoMemory
  433. ¿  ovrError.  î«¡¿Γ«α  «óÑα½ÑÑó  íπñÑΓ  »α«ñ«½ªáΓ∞  αáí«ΓáΓ∞   Ñß½¿
  434. OvrSetBuf   ó«ºóαáΘáÑΓ   «Φ¿í¬π,   á   αẼÑα  íπΣÑαá  «óÑα½ÑÑó  ¡Ñ
  435. ¿º¼Ñ¡∩ÑΓß∩.
  436.  
  437.  
  438.                             OvrGetBuf.
  439.  
  440.      function OvrGetBuf : LongInt;
  441.  
  442.      é«ºóαáΘáÑΓ ΓѬπΘ¿⌐ αẼÑα íπΣÑαá «óÑα½ÑÑó. ÅÑαó«¡áτá½∞¡« íπΣÑα
  443. «óÑα½ÑÑó ¿¼ÑÑΓ ¼¿¡¿¼á½∞¡δ⌐ αẼÑα, ß««ΓóÑΓßΓóπ∩ αẼÑαπ ¡á¿í«½∞ΦÑú«
  444. «óÑα½Ñ⌐¡«ú« ¼«ñπ½∩. üπΣÑα Γᬫú« αẼÑαá αáß»αÑñѽ∩ÑΓß∩ »α¿ ºá»π߬Ñ
  445. »α«úαá¼¼δ áóΓ«¼áΓ¿τÑ߬¿.
  446.  
  447.      Åα¿¼Ñτá¡¿Ñ: ¡áτá½∞¡δ⌐  αẼÑα  íπΣÑαá  ¼«ªÑΓ  íδΓ∞ í«½∞ΦÑ 64è,
  448. »«ß¬«½∞¬π ß«ñÑαª¿Γ  ¬«ñ  ¿  ¿¡Σ«α¼áµ¿ε  ¡áßΓα«⌐¬¿  ñ½∩  ¡á¿í«½∞ΦÑú«
  449. ¼«ñπ½∩.
  450.  
  451.  
  452.                            OvrClearBuf.
  453.  
  454.       procedure OvrClearBuf;
  455.  
  456.      Äτ¿ΘáÑΓ íπΣÑα «óÑα½ÑÑó.  éßÑ «óÑα½Ñ⌐¡δÑ ¼«ñπ½¿,  ºáúαπªÑ¡¡δÑ ó
  457. íπΣÑα, óδΓÑß¡∩εΓß∩, τΓ« ºáßΓáó½∩ÑΓ ºáúαπªáΓ∞ »α«úαá¼¼δ, ¡Ñ«íσ«ñ¿¼δÑ
  458. »α¿ »«ß½ÑñπεΘ¿σ  ó맮óáσ  ¿º  «óÑα½Ñ⌐¡«ú«  Σá⌐½á  (¿½¿  EMS).  àß½¿
  459. OvrClearBuf ºá»πΘÑ¡ ¿º «óÑα½Ñ⌐¡«ú« ¼«ñπ½∩,  Γ«  φëà ¼«ñπ½∞  íπñÑΓ
  460. ¡Ñ¼Ññ½Ñ¡¡«  ºáúαπªÑ¡  ß¡«óá,  »«ß½Ñ «¬«¡τá¡¿∩ OvrClearBuf.  î«¡¿Γ«α
  461. «óÑα½ÑÑó ¡¿¬«úñá ¡Ñ ΓαÑíπÑΓ,  τΓ«íδ éδ óδºδó὿  OvrClearBuf,  ¿  ó
  462. ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿,   ¿ß»«½∞º«óá¡¿Ñ  φΓ«⌐  »α«µÑñπαδ  íπñÑΓ  πσπñΦáΓ∞
  463. »α«¿ºó«ñ¿Γѽ∞¡«ßΓ∞   éáΦÑ⌐   »α«úαá¼¼δ,   »«ß¬«½∞¬π   »α¿ó«ñ¿Γ    ¬
  464. »ÑαѺáúαπº¬Ñ   «óÑα½ÑÑó.  OvrClearBuf  ó¬½ετÑ¡á  ¿ß¬½ετ¿Γѽ∞¡«  ñ½∩
  465. ߻ѵ¿á½∞¡δσ µÑ½Ñ⌐, Γᬿσ ¬á¬ óαѼѡ¡«Ñ «ßó«í«ªñÑ¡¿Ñ »á¼∩Γ¿, ºá¡∩Γ«⌐
  466. íπΣÑα«¼ «óÑα½ÑÑó.
  467.  
  468.  
  469.                            OvrSetRetry.
  470.  
  471.      procedure OvrSetRetry(Size : LongInt);
  472.  
  473.      Åα«µÑñπαá OvrSetRetry πßΓá¡áó½¿óáÑΓ αẼÑα «í½áßΓ¿ ¿ß»δΓá¡¿⌐ ó
  474. íπΣÑαÑ «óÑα½ÑÑó.  àß½¿ «óÑα½Ñ⌐  »«»áñáÑΓ  ó¡πΓα∞  Size  íá⌐Γ  »ÑαÑñ
  475. σó«ßΓ«¼  íπΣÑαá  «óÑα½ÑÑó,  «¡ áóΓ«¼áΓ¿τÑ߬¿ ¡áτ¿¡áÑΓ ¿ß»δΓδóáΓ∞ß∩.
  476. ïεí«Ñ ßó«í«ñ¡«Ñ »α«ßΓαá¡ßΓó« ó íπΣÑαÑ «óÑα½ÑÑó  αáßß¼áΓα¿óáÑΓß∩ ¬á¬
  477. τáßΓ∞  «í½áßΓ¿  ¿ß»δΓá¡¿⌐.  ä½∩  ß«ó¼ÑßΓ¿¼«ßΓ¿  ß  αá¡¡¿¼¿ óÑαß¿∩¼¿
  478. ¼«¡¿Γ«αá «óÑα½ÑÑó,  αẼÑα «í½áßΓ¿ ¿ß»δΓá¡¿⌐ »« π¼«½τá¡¿ε - 0,  »α¿
  479. φΓ«¼ ¼Ñσá¡¿º¼ ¿ß»δΓá¡¿⌐/«Γ¼Ñ¡δ «Γ¬½ετáÑΓß∩.
  480.      Åα¿¼Ñα ¿ß»«½∞º«óá¡¿∩ OvrSetRetry:
  481.  
  482.      OvrInit('MYPROG.OVR');
  483.      OvrSetBuf(BuferSize);
  484.      OvrSetRetry(BuferSize div 3);
  485.  
  486.      ìÑ ßπΘÑßΓóπÑΓ    φ¼»¿α¿τÑ߬«⌐    Σ«α¼π½δ    ñ½∩    «»αÑñѽѡ¿∩
  487. «»Γ¿¼á½∞¡«ú«   αẼÑαá  «í½áßΓ¿  ¿ß»δΓá¡¿⌐  -  «ñ¡á¬«  φ¬ß»Ñα¿¼Ñ¡Γδ
  488. »«¬áºδóáεΓ,  τΓ« ½πτΦ¿Ñ αѺπ½∞ΓáΓδ »«½πτáεΓß∩ ó ñ¿á»áº«¡Ñ «Γ 1/3 ñ«
  489. 1/2 αẼÑαá íπΣÑαá «óÑα½ÑÑó.
  490.  
  491.  
  492.                            OvrGetRetry.
  493.  
  494.      function OvrGetRetry : Longint;
  495.  
  496.      öπ¡¬µ¿∩ OvrGetRetry   ó«ºóαáΘáÑΓ   ΓѬπΘ¿⌐   αẼÑα    «í½áßΓ¿
  497. ¿ß»δΓá¡¿⌐ Γ.Ñ. º¡áτÑ¡¿Ñ, ¬«Γ«α«Ñ í佫 πßΓá¡«ó½Ñ¡« »«ß½Ññ¡¿¼ ó맮ó«¼
  498. OvrSetRetry.
  499.  
  500.  
  501.                    æ«ºñá¡¿Ñ «óÑα½Ñ⌐¡δσ »α«úαá¼¼.
  502.  
  503.      ¥Γ«Γ αáºñѽ  ñáÑΓ  ó᪡πε  ¿¡Σ«α¼áµ¿ε  »«  ß«ºñá¡¿ε «óÑα½Ñ⌐¡δσ
  504. »α«úαá¼¼.  ÆΘáΓѽ∞¡« ¿ºπτ¿ΓÑ  Ñú«,  »«ß¬«½∞¬π  ó«»α«ßδ  «íßπªñáѼδÑ
  505. ºñÑß∞  ª¿º¡Ñ¡¡« ¡Ñ«íσ«ñ¿¼δ ñ½∩ ¡áñѪ¡«⌐ αáí«Γδ «óÑα½Ñ⌐¡δσ »α«úαá¼¼.
  506.  
  507.  
  508.                     âÑ¡Ñαᵿ∩ «óÑα½Ñ⌐¡«ú« ¬«ñá.
  509.  
  510.      Turbo Pascal »«ºó«½∩ÑΓ ¼«ñπ½ε íδΓ∞  «óÑα½Ñ⌐¡δ¼,  Ñß½¿  «¡  íδ½
  511. «Γ¬«¼»¿½¿α«óá¡  ß  {$O+}.  é  φΓ«¼  ß½πτáÑ  úÑ¡ÑαáΓ«α  ¬«ñá  ñѽáÑΓ
  512. ߻ѵ¿á½∞¡δÑ »αÑñ«ßë᫪¡«ßΓ¿ »α¿ »ÑαÑñáτÑ  ßΓ᫬«óδσ  ¬«¡ßΓá¡Γ  ¿½¿
  513.  ¬«¡ßΓá¡Γ ¼¡«ªÑßΓó  ¿º  «ñ¡«⌐  «óÑα½Ñ⌐¡«⌐  »α«µÑñπαδ  ¿½¿ Σπ¡¬µ¿⌐ ó
  514. ñαπúπε.  ìá»α¿¼Ñα,  Ñß½¿  UnitA  ß«ñÑαª¿Γ  »α«µÑñπαπ  ß«  ß½ÑñπεΘ¿¼
  515. «»¿ß᡿Ѽ:
  516.  
  517.      procedure WriteStr(S: String);
  518.  
  519. ¿ UnitB ß«ñÑαª¿Γ «»ÑαáΓ«α
  520.  
  521.      WriteStr('Hello world...');
  522.  
  523.      Γ« Turbo  Pascal »«¼ÑΘáÑΓ ßΓ᫬«óπε ¬«¡ßΓá¡Γπ 'Hello world...'
  524. 󠬫ñ«óδ⌐ ßÑú¼Ñ¡Γ UnitB ¿ »ÑαÑñáÑΓ π¬áºáΓѽ∞ ó  »α«µÑñπαπ WriteStr.
  525. Äñ¡á¬«,  Ñß½¿  «íá  ¼«ñπ½∩  «óÑα½Ñ⌐¡δÑ,  Γ«  φΓ« ¡Ñ íπñÑΓ αáí«ΓáΓ∞,
  526. »«ß¬«½∞¬π »α¿ ó맮óÑ WriteStr,  ¼«ñπ½∞ UnitB  ¼«ªÑΓ  íδΓ∞  »ÑαѬαδΓ
  527. ¼«ñπ½Ñ¼  UnitA,  τΓ«  ßñѽáÑΓ  π¬áºáΓѽ∞ ¡ÑóÑα¡δ¼.  ä¿αÑ¬Γ¿óá {$O+}
  528. ¿ß»«½∞ºπÑΓß∩  ñ½∩  ¿ºíѪ᡿∩  Γá¬¿σ  »α«í½Ñ¼;  ¬«úñá  Turbo  Pascal
  529. ¡áσ«ñ¿Γ ó맮ó «ñ¡«ú« ¼«ñπ½∩, «Γ¬«¼»¿½¿α«óá¡¡«ú« ß {$O+}, ¬«¼»¿½∩Γ«α
  530. ñѽáÑΓ ¬«»¿ε óßÑ󠬫¡ßΓá¡Γ ¿º ¬«ñ«ó«ú« ßÑú¼Ñ¡Γá ó«  óαѼѡ¡δ⌐  ßΓѬ
  531. ñ« »ÑαÑñáτ¿ π¬áºáΓѽ∩ ¡á ¡¿σ.
  532.  
  533.      êß»«½∞º«óá¡¿Ñ {$O+} ó ¼«ñπ½Ñ  ¡Ñ  ºáßΓáó½∩ÑΓ  óáß  ñѽáΓ∞  Ñú«
  534. «óÑα½Ñ⌐¡δ¼. ¥Γ« Γ«½∞¬« ºáßΓáó½∩ÑΓ Turbo  Pascal  «íÑß»Ñτ¿Γ∞,  τΓ«íδ
  535. »α¿ ªÑ½á¡¿¿,  ¼«ñπ½∞ ¼«ú íδΓ∞ «óÑα½Ñ⌐¡δ¼.  àß½¿ éδ ß«ºñáÑΓÑ ¼«ñπ½∞,
  536. ¬«Γ«αδ⌐ σ«Γ¿ΓÑ ¿ß»«½∞º«óáΓ∞ ¬á¬ «óÑα½Ñ⌐¡δ⌐  ¿  ¬á¬  ¡Ñ  «óÑα½Ñ⌐¡δ⌐,
  537. ¬«¼»¿½¿απ⌐ΓÑ Ñú« ß {$O+}, τΓ«íδ ¿¼ÑΓ∞ «ñ¡π óÑαß¿ε «ñ¡«ú« ¼«ñπ½∩.
  538.  
  539.  
  540.                       äá½∞¡∩∩ ¼«ñѽ∞ ó맮óá.
  541.  
  542.      èᬠ߬áºá¡« αá¡ÑÑ,  ñ½∩ ó맮óá ½εí«⌐ »α«µÑñπαδ ¿½¿ Σπ¡¬µ¿¿  ¿º
  543. ñαπú«ú«  ¼«ñπ½∩,  éδ  ñ«½ª¡δ  úáαá¡Γ¿α«óáΓ∞,  τΓ«  óßÑ  »α«µÑñπαδ ¿
  544. Σπ¡¬µ¿¿, á¬Γ¿ó¡δÑ ó ñá¡¡δ⌐ ¼«¼Ñ¡Γ, ¿ß»«½∞ºπεΓ ñá½∞¡εε ¼«ñѽ∞ ó맮óá
  545. (FAR call).
  546.      ìá»α¿¼Ñα: ÅπßΓ∞ OvrA - »α«µÑñπαá ó «óÑα½Ñ⌐¡«¼ ¼«ñπ½Ñ ¿ MainB ¿
  547. MainC  -  »α«µÑñπαδ  ó  ú½áó¡«⌐  »α«úαá¼¼Ñ.  àß½¿ ú½áó¡á∩ »α«úαá¼¼á
  548. óδºδóáÑΓ MainC,  ¬«Γ«αá∩ óδºδóáÑΓ MainB,  ¬«Γ«αá∩  ó  ßó«ε  «τÑαÑñ∞
  549. óδºδóáÑΓ OvrA,  Γ« »α¿ ó맮óÑ OvrA,  MainB ¿ MainC á¬Γ¿ó¡δ («¡¿ ÑΘÑ
  550. ¡Ñ  óÑα¡π½¿  π»αáó½Ñ¡¿Ñ  ó  ú½áó¡πε   »α«úαá¼¼π),   Γ.Ñ   ΓαÑíπÑΓß∩
  551. ¿ß»«½∞º«óáΓ∞ ñá½∞¡εε ¼«ñѽ∞ ó맮óá.
  552.      ÄíΩ∩ó½Ñ¡¡δÑ ó ú½áó¡«⌐ »α«úαἼѠMainB  ¿  MainC  »«  π¼«½τá¡¿ε
  553. ¿ß»«½∞ºπεΓ í½¿ª¡εε ¼«ñѽ∞ (NEAR call),  ó ñá¡¡«¼ ß½πτáÑ ñ«½ª¡á íδΓ∞
  554. ¿ß»«½∞º«óá¡á ñ¿αÑ¬Γ¿óá {$F+} ñ½∩ π»αáó½Ñ¡¿∩ ñá½∞¡Ñ⌐  ¼«ñѽ¿ ó맮óá.
  555.      Åα«ßΓÑ⌐Φ¿⌐ ß»«ß«í  πñ«ó½ÑΓó«αÑ¡¿∩  ΓαÑí«óá¡¿∩  ñá½∞¡Ñ⌐  ¼«ñѽ¿
  556. ó맮óá,  φΓ« »«¼ÑßΓ¿Γ∞ ñ¿αÑ¬Γ¿óπ {$F+} ó ¡áτὫ ú½áó¡«⌐ »α«úαá¼¼δ ¿
  557. ¬áªñ«ú« ¼«ñπ½∩.  Ç½∞ΓÑα¡áΓ¿ó¡«, éδ ¼«ªÑΓÑ πßΓá¡«ó¿Γ∞ ñ¿αÑ¬Γ¿óπ $F ó
  558. {$F+}, ¿ß»«½∞ºπ∩ ó ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ ñ¿αÑ¬Γ¿óπ /$F (ñ½∩ ÆÉæ.EXE) ¿½¿
  559. Äptions/Compiler ó «¬¡Ñ Force Far Calls.
  560.      Å« ßαáó¡Ñ¡¿ε ß« ß¼ÑΦá¡¡δ¼¿ ó맮óἿ í½¿ª¡Ñ⌐ ¿  ñá½∞¡Ñ⌐ ¼«ñѽ¿,
  561. éδ íπñÑΓÑ  ñ«»«½¡¿Γѽ∞¡«  ºáΓαáτ¿óáΓ∞:  «ñ¡« ñ«»«½¡¿Γѽ∞¡«Ñ ß½«ó« ó
  562. »á¼∩Γ¿ ßΓѬᠡᠬáªñπε á¬Γ¿ó¡πε  »α«µÑñπαπ  ¿  «ñ¿¡  ñ«»«½¡¿Γѽ∞¡δ⌐
  563. íá⌐Γ ¡á ¬áªñδ⌐ ó맮ó.
  564.  
  565.  
  566.                  ê¡¿µ¿á½¿ºáµ¿∩ ¼«¡¿Γ«αá «óÑα½ÑÑó.
  567.  
  568.      çñÑß∞ »α¿óÑñÑ¡«  ¡Ñ߬«½∞¬«  »α¿¼Ñα«ó,   ¬á¬   ¿¡¿µ¿á½¿º¿α«óáΓ∞
  569. ¼«¡¿Γ«α  «óÑα½ÑÑó.  ê¡¿µ¿á½¿ºáµ¿«¡¡δ⌐  ¬«ñ ñ«½ªÑ¡ ßΓ«∩Γ∞ ñ« »Ñαó«ú«
  570. ó맮óá  ½εí«⌐  «óÑα½Ñ⌐¡«⌐  »α«úαá¼¼δ  ¿  «íδτ¡«  ¡áτ¿¡áÑΓ   ú½áó¡πε
  571. »α«úαá¼¼π.
  572.      æ½ÑñπεΘ¿⌐ »α¿¼Ñα »«¬áºδóáÑΓ ¬á¬ ¼á½« éδ  ñ«½ª¡δ  ßñѽáΓ∞,  ñ½∩
  573. ¿¡¿µ¿á½¿ºáµ¿¿ ¼«¡¿Γ«αá «óÑα½ÑÑó:
  574.  
  575.      begin
  576.         OvrInit('EDITOR.OVR');
  577.      end;
  578.  
  579.      çñÑß∞ ¡ÑΓ  «íαáí«Γ¬¿  «Φ¿í«¬,  ¿  Ñß½¿ ¡Ññ«ßΓáΓ«τ¡« »á¼∩Γ¿ ñ½∩
  580. íπΣÑαá «óÑα½ÑÑó ¿½¿ «óÑα½Ñ⌐¡δ⌐  Σá⌐½  ¡Ñ  ¡á⌐ñÑ¡,  Γ«  »α¿  »«»δΓ¬Ñ
  581. óδºóáΓ∞ «óÑα½Ñ⌐¡πε »α«úαá¼¼π ó«º¡¿¬¡ÑΓ «Φ¿í¬á 208 (¼«¡¿Γ«α «óÑα½ÑÑó
  582. ¡Ñ πßΓá¡«ó½Ñ¡).
  583.      ÉáßΦ¿α¿¼ »αÑñδñπΘ¿⌐ »α¿¼Ñα:
  584.  
  585.      begin
  586.         OvrInit('EDITOR.OVR');
  587.         OvrInitEMS;
  588.      end;
  589.  
  590.      é φΓ«¼ ß½πτáÑ,  Ñß½¿ ñ½∩ íπΣÑαá «óÑα½ÑÑó ñ«ßΓáΓ«τ¡«  »á¼∩Γ¿  ¿
  591. Ñß½¿  íδ½ ¡á⌐ñÑ¡ Σá⌐½ «óÑα½ÑÑó,  ¼«¡¿Γ«α «óÑα½ÑÑó »α«óÑα∩ÑΓ ¡á½¿τ¿Ñ
  592. EMS »á¼∩Γ¿ ¿ Ñß½¿ «¡á ÑßΓ∞, ºáúαπªáÑΓ «óÑα½Ñ⌐¡δ⌐ Σá⌐½ ó EMS.
  593.      èᬠ߬áºá¡«  óδΦÑ,  »Ñαó«¡áτá½∞¡«  íπΣÑα «óÑα½ÑÑó ñѽáÑΓß∩ ¬á¬
  594. ¼«ª¡«  ¼Ñ¡∞ΦÑ,  ¿½¿  Γ«τ¡ÑÑ,  ñ«ßΓáΓ«τ¡«  í«½∞Φ¿¼,  τΓ«íδ   ó¼ÑΘáΓ∞
  595. ¡á¿í«½∞Φ¿⌐  «óÑα½Ñ⌐.  ¥Γ«  ¼«ªÑΓ  íδΓ∞  ¡«α¼á½∞¡δ¼  ñ½∩ í«½∞Φ¿¡ßΓóá
  596. »α«úαá¼¼,  ¡«  »αÑñßΓáó∞ΓÑ   ß¿Γπᵿε,   ¬«úñá   ¬á¬á∩-Γ«   Σπ¡¬µ¿∩
  597. αÑ὿º«óá¡á ñóπ¼∩ ¿½¿ í«½ÑÑ ¼«ñπ½∩¼¿, ¬áªñδ⌐ ¿º ¬«Γ«αδσ «óÑα½Ñ⌐¡δ⌐.
  598. àß½¿ «íΘ¿⌐ αẼÑα φΓ¿σ ¼«ñπ½Ñ⌐ í«½∞ΦÑ τѼ αẼÑα  í«½∞ΦÑú«  ¼«ñπ½∩,
  599. Γ«  »α¿  τáßΓ«¼ «íαáΘÑ¡¿¿ «ñ¡«ú« ¼«ñπ½∩ ¬ ñαπú«¼π íπñÑΓ »α¿ó«ñ¿Γ∞ ¬
  600. º¡áτ¿Γѽ∞¡«¼π «íΩѼπ ßó«»»¿¡úá (»«ñ¬áτ¬¿).
  601.      ÉÑΦÑ¡¿Ñ «τÑó¿ñ¡«  - πóѽ¿τ¿Γ∞ «íΩѼ íπΣÑαá «óÑα½ÑÑó Γá¬, τΓ«íδ
  602. ó ½εí«⌐ ¼«¼Ñ¡Γ í佫 ñ«ßΓáΓ«τ¡« »á¼∩Γ¿ ñ½∩ ß«ñÑαªá¡¿∩ óßÑσ «óÑα½ÑÑó,
  603. ¬«Γ«αδÑ τáßΓ« óδºδóáεΓ ñαπú ñαπúá.
  604.      æ½ÑñπεΘ¿⌐ »α¿¼Ñα  »«¬áºδóáÑΓ   ¿ß»«½∞º«óá¡¿Ñ   OvrSetBuf   ñ½∩
  605. πóѽ¿τÑ¡¿∩ αẼÑαá íπΣÑαá:
  606.  
  607.      const
  608.         OvrMaxSize = 80000;
  609.      begin
  610.         OvrInit('EDITOR.OVR');
  611.         OvrInitEMS;
  612.         OvrSetBuf(OvrMaxSize);
  613.      end;
  614.  
  615.      ìÑ ßπΘÑßΓóπÑΓ «íΘÑ⌐ Σ«α¼π½δ ñ½∩ «»αÑñѽѡ¿∩ ¿ñÑá½∞¡«ú« αẼÑαá
  616. íπΣÑαá  «óÑα½ÑÑó.  Æ«½∞¬«  σ«α«ΦÑÑ  º¡á¡¿Ñ  »α«úαá¼¼δ  ¿  ¡Ñí«½∞Φ«⌐
  617. φ¬ß»Ñα¿¼Ñ¡Γ »«ºó«½∩ÑΓ óδíαáΓ∞ »α¿Ñ¼½Ñ¼«Ñ º¡áτÑ¡¿Ñ.
  618.  
  619.      Åα¿¼Ñτá¡¿Ñ: ¿ß»«½∞º«óá¡¿Ñ OvrInitEMS ñ½∩ »«¼ÑΘÑ¡¿∩ «óÑα½Ñ⌐¡«ú«
  620. Σá⌐½á  ó EMS,  ¡Ñ ß«¬αáΘáÑΓ ΓαÑí«óá¡¿⌐ ¬ íπΣÑαπ «óÑα½ÑÑó.  ÄóÑα½Ñ¿,
  621. »αѪñÑ,  τѼ «¡¿ ¼«úπΓ íδΓ∞ óδ»«½¡Ñ¡δ,  ñ«½ª¡δ íδΓ∞ ß¬«»¿α«óá¡δ  ¿º
  622. EMS  ó  "¡«α¼á½∞¡πε"  »á¼∩Γ∞  íπΣÑαá  «óÑα½ÑÑó.  Äñ¡á¬«,  »«ß¬«½∞¬π
  623. »ÑαÑß佬á ó »á¼∩Γ¿ º¡áτ¿Γѽ∞¡« íδßΓαÑÑ,  τѼ ß ñ¿ß¬á,  ΓαÑí«óá¡¿Ñ ¬
  624. πóѽ¿τÑ¡¿ε αẼÑαá íπΣÑαá «óÑα½ÑÑó ßΓá¡«ó¿Γß∩ ¼Ñ¡∞ΦÑ.
  625.  
  626.      Å«¼¡¿ΓÑ, τΓ« OvrSetBuf πóѽ¿τ¿óáÑΓ  íπΣÑα  «óÑα½ÑÑó,  ß«¬αáΘá∩
  627. ¬πτπ.  æ½Ññ«óáΓѽ∞¡«  ¬πτá  ñ«½ª¡á íδΓ∞ »πßΓ«⌐,  ¿¡áτÑ OvrSetBuf ¡Ñ
  628. íπñÑΓ αáí«ΓáΓ∞.  àß½¿ éδ ¿ß»«½∞ºπÑΓÑ ¼«ñπ½∞ Graph,  éδ ñ«½ª¡δ  íδΓ∞
  629. πóÑαÑ¡δ  ó  Γ«¼,  τΓ«  éδ  óδºó὿  OvrSetBuf  ñ« ó맮óá InitGraph,
  630. ¬«Γ«αδ⌐ αáß»αÑñѽ∩ÑΓ »á¼∩Γ∞ ó ¬πτÑ.
  631.      Åα¿óÑñѼ ñÑΓá½∞¡δ⌐  »α¿¼Ñα  ¿¡¿µ¿á½¿ºáµ¿¿  ¼«¡¿Γ«αá «óÑα½ÑÑó ß
  632. »«½¡«⌐ »α«óÑᬫ⌐ «Φ¿í«¬:
  633.  
  634.      ß«nst
  635.         OvrMaxSize = 80000;
  636.      var
  637.         OvrName: String[79];
  638.         Size: Longint;
  639.      begin
  640.         OvrName := 'EDITOR.OVR';
  641.         repeat
  642.            OvrInit(OvrName);
  643.            if OvrResult = OvrNotFound then
  644.            begin
  645.               WriteLn('OóÑα½Ñ⌐¡δ⌐ Σá⌐½ ¡Ñ ¡á⌐ñÑ¡:', OvrName, '.');
  646.               Write('BóÑñ¿ΓÑ »αáó¿½∞¡«Ñ ¿¼∩ «óÑα½Ñ⌐¡«ú« Σá⌐½á: ');
  647.               ReadLn(OvrName);
  648.            end;
  649.         until OvrResult <> OvrNotFound;
  650.         if OvrResult <> OvrOk then
  651.         begin
  652.            WriteLn('OΦ¿í¬á ¼«¡¿Γ«α«á «óÑα½ÑÑó.');
  653.            Halt(1);
  654.         end;
  655.         OvrInitEMS;
  656.         if OvrResult <> OvrOk then
  657.         begin
  658.            case OvrResult of
  659.               ovrIOError:  Write('OΦ¿í¬á ó/ó «óÑα½Ñ⌐¡«ú« Σá⌐½á');
  660.               ovrNoEMSDriver: Write('EMS ñαá⌐óÑα ¡Ñ πßΓá¡«ó½Ñ¡');
  661.               ovrNoEMSMemory: Write('HÑñ«ßΓáΓ«τ¡« EMS »á¼∩Γ¿');
  662.            end;
  663.            Write('H᪼¿ΓÑ óó«ñ...');
  664.            ReadLn;
  665.         end;
  666.         OvrSetBuf(OvrMaxSize);
  667.      end;
  668.  
  669.      àß½¿ ¿¼∩ «óÑα½Ñ⌐¡«ú« Σá⌐½á ¡Ñ óÑα¡«,  Γ« »«½∞º«óáΓѽε óδñáÑΓß∩
  670. »«ñ߬Ậá ñ½∩ óó«ñá ¬«ααÑ¬Γ¡«ú« ¿¼Ñ¡¿.
  671.      çáΓѼ »α«óÑα∩ÑΓß∩  ¡ÑΓ  ½¿  ñαπú¿σ «Φ¿í«¬ ¿¡¿µ¿á½¿ºáµ¿¿.  àß½¿
  672. «í¡áαπªÑ¡á  «Φ¿í¬á,  »α«úαἼᠠºáóÑαΦáÑΓß∩,  »«ß¬«½∞¬π  «Φ¿í¬¿   ó
  673. OvrInit  ∩ó½∩εΓß∩  ΣáΓá½∞¡δ¼¿  (Ñß½¿ ¿σ »α«¿ú¡«α¿α«óáΓ∞,  ó«º¡¿¬¡ÑΓ
  674. «Φ¿í¬á »α¿ ó맮óÑ »Ñαó«⌐ «óÑα½Ñ⌐¡«⌐ »α«úαá¼¼δ).
  675.      Å«ß½Ñ πß»ÑΦ¡«⌐   ¿¡¿µ¿á½¿ºáµ¿¿,  óδº«ó«¼  OvrInitEMS  ñѽáÑΓß∩
  676. »«»δΓ¬á ºáúαπº¿Γ∞ Σá⌐½ «óÑα½ÑÑó ó EMS Ñß½¿ φΓ« ó«º¼«ª¡«.  é  ß½πτáÑ
  677. «Φ¿í¬¿   óδñáÑΓß∩   ñ¿áú¡«ßΓ¿τÑ߬«Ñ   ß««íΘÑ¡¿Ñ,  ¡«  »α«úαἼᠠ¡Ñ
  678. ºáóÑαΦáÑΓß∩, ó¼ÑßΓ« φΓ«ú« »α«úαá¼¼á íπñÑΓ »α«ñ«½ªáΓ∞ τ¿ΓáΓ∞ «óÑα½Ñ¿
  679. ß ñ¿ß¬á.
  680.      ìᬫ¡Ñµ OvrSetBuf  πßΓá¡áó½¿óáÑΓ  »α¿Ñ¼½Ñ¼δ⌐   αẼÑα   íπΣÑαá
  681. «óÑα½ÑÑó.    ¥Γ«Γ    αẼÑα    «»αÑñѽ∩ÑΓß∩    »πΓѼ    á¡á½¿ºá   ¿
  682. φ¬ß»Ñα¿¼Ñ¡Γ¿α«óá¡¿∩  ß  ¬«¡¬αÑΓ¡«⌐  »α«úαá¼¼«⌐.  ÄΦ¿í¬¿   OvrSetBuf
  683. ¿ú¡«α¿απεΓß∩, σ«Γ∩  OvrResult ¼«ªÑΓ ß«ñÑαªáΓ∞ ¬«ñ -3 (OvrNoMemory).
  684. àß½¿  »á¼∩Γ¿  ¡Ñ  σóáΓ¿½«,  ¼«¡¿Γ«α   «óÑα½ÑÑó   íπñÑΓ   »α«ñ«½ªáΓ∞
  685. ¿ß»«½∞º«óáΓ∞   ¼¿¡¿¼á½∞¡δ⌐   íπΣÑα,   αáß»αÑñѽѡ¡δ⌐   »α¿   ßΓáαΓÑ
  686. »α«úαá¼¼δ.
  687.  
  688.  
  689.            ê¡¿µ¿á½¿ºáµ¿«¡¡á∩ τáßΓ∞ ó «óÑα½Ñ⌐¡δσ ¼«ñπ½∩σ.
  690.  
  691.      èᬠ¿   ßΓáΓ¿τÑ߬¿Ñ  ¼«ñπ½¿,  «óÑα½Ñ⌐¡δÑ  ¼«ñπ½¿  ¼«úπΓ  ¿¼ÑΓ∞
  692. ¿¡¿µ¿á½¿ºáµ¿«¡¡πε τáßΓ∞.  ò«Γ∩  ¿¡¿µ¿á½¿ºáµ¿«¡¡δ⌐  ¬«ñ  «óÑα½Ñ⌐¡«ú«
  693. ¼«ñπ½∩  ¡Ñ  «Γ½¿τáÑΓß∩  «Γ  ¡«α¼á½∞¡«ú«  «óÑα½Ñ⌐¡«ú« ¬«ñá,  ¼«¡¿Γ«α
  694. «óÑα½ÑÑó ñ«½ªÑ¡ íδΓ∞  ¿¡¿µ¿á½¿º¿α«óá¡  »Ñαóδ¼,  Γᬠ τΓ«íδ  «¡  ¼«ú
  695. ºáúαπº¿Γ∞ ¿ óδ»«½¡¿Γ∞ «óÑα½Ñ⌐¡δ⌐ ¼«ñπ½∞.
  696.      é«ºóαáΘá∩ß∞ ¬  »α«úαἼѠ Editor,  »αÑñ»«½«ª¿¼,   τΓ«   ¼«ñπ½¿
  697. EdInOut  ¿ EdMain ¿¼ÑεΓ ¿¡¿µ¿á½¿ºáµ¿«¡¡δ⌐ ¬«ñ.  ¥Γ« ΓαÑíπÑΓ,  τΓ«íδ
  698. OvrInit íδ½ óδºóá¡ ñ« ¿¡¿µ¿á½¿ºáµ¿«¡¡«ú« ¬«ñá  EdInOut.  ä½∩  φΓ«ú«
  699. ÑßΓ∞ Γ«½∞¬« «ñ¿¡ »πΓ∞ - ß«ºñáΓ∞ ñ«»«½¡¿Γѽ∞¡δ⌐ ¡Ñ«óÑα½Ñ⌐¡δ⌐ ¼«ñπ½∞,
  700. ¬«Γ«αδ⌐   ßΓ«¿Γ   ñ«   EdInOut   ¿   óδºδóáÑΓ   OvrInit   ó   ßó«Ñ⌐
  701. ¿¡¿µ¿á½¿ºáµ¿«¡¡«⌐ τáßΓ¿:
  702.  
  703.      unit EdInit;
  704.      interface
  705.      implementation
  706.      uses Overlay;
  707.      const
  708.         OvrMaxSize = 80000;
  709.      begin
  710.         OvrInit('EDITOR.OVR');
  711.         OvrInitEMS;
  712.         OvrSetBuf(OvrMaxSize);
  713.     end.
  714.  
  715.      î«ñπ½∞ EdInit  ñ«½ªÑ¡  ßΓ«∩Γ∞  ó  «»ÑαáΓ«αÑ  uses »α«úαá¼¼δ ñ«
  716. ½εí«ú« «óÑα½Ñ⌐¡«ú« ¼«ñπ½∩:
  717.  
  718.      program Editor;
  719.      {$F+}
  720.      uses Overlay, Crt, Dos, EdInit, EdInOut, EdFormat, EdPrint,
  721.           EdFind, EdMain;
  722.      {$O EdInOut}
  723.      {$O EdFormat}
  724.      {$O EdPrint}
  725.      {$O EdFind}
  726.      {$O EdMain}
  727.  
  728.      ò«Γ∩ ¿¡¿µ¿á½¿ºáµ¿«¡¡á∩  τáßΓ∞  ó «óÑα½Ñ⌐¡δσ ¼«ñπ½∩σ ñ«»πßΓ¿¼á,
  729. ÑÑ ß½ÑñπÑΓ ¿ºíÑúáΓ∞ »« α∩ñπ »α¿τ¿¡.
  730.      é«-»Ñαóδσ, σ«Γ∩  ¿¡¿µ¿á½¿ºáµ¿«¡¡δ⌐ ¬«ñ óδ»«½¡∩ÑΓß∩ Γ«½∞¬« «ñ¿¡
  731. αáº,  «¡ ∩ó½∩ÑΓß∩ τáßΓ∞ε «óÑα½Ñ∩, ¿ ºá¡¿¼áÑΓ »á¼∩Γ∞ íπΣÑαá «óÑα½ÑÑó
  732. »α¿  ºáúαπº¬Ñ  «óÑα½Ñ⌐¡«ú« ¼«ñπ½∩.  é«-óΓ«αδσ,  Ñß½¿ α∩ñ «óÑα½Ñ⌐¡δσ
  733. ¼«ñπ½Ñ⌐ ß«ñÑαª¿Γ ¿¡¿µ¿á½¿ºáµ¿«¡¡πε τáßΓ∞,  ¬áªñδ⌐ ¿º  φΓ¿σ  ¼«ñπ½Ñ⌐
  734. íπñÑΓ τ¿ΓáΓ∞ß∩ ó »á¼∩Γ∞ »α¿ ßΓáαΓÑ »α«úαá¼¼δ.
  735.      â«αáºñ« ½πτΦ¿¼ ∩ó½∩ÑΓß∩ óáα¿á¡Γ,  ¬«úñá óßÑ  ¿¡¿µ¿á½¿ºáµ¿«¡¡δÑ
  736. ¬«ñδ  ß«í¿αáεΓß∩ ó «ñ¿¡ ¿¡¿µ¿á½¿ºáµ¿«¡δ⌐ «óÑα½Ñ⌐¡δ⌐ ¼«ñπ½∞, ¬«Γ«αδ⌐
  737. óδºδóáÑΓß∩ ó ¡áτá½Ñ »α«úαá¼¼δ ¿ í«½ÑÑ ¡¿úñÑ.
  738.  
  739.  
  740.                        ùΓ« ¡Ñ½∞º∩ ó «óÑα½ÑÑ.
  741.  
  742.      ìѬ«Γ«αδÑ ¼«ñπ½¿  ¡Ñ ¼«úπΓ íδΓ∞ «óÑα½Ñ⌐¡δ¼¿.  é τáßΓ¡«ßΓ¿,  ¡Ñ
  743. »δΓá⌐ΓÑß∞ ßñѽáΓ∞ «óÑα½Ñ⌐¡δ¼¿ ß½ÑñπεΘ¿Ñ ¼«ñπ½¿ :
  744.  
  745.      - î«ñπ½¿, ¬«¼»¿½¿α«óá¡¡δÑ ó ß«ßΓ«∩¡¿¿ {$O-}. è«¼»¿½∩Γ«α óδñáßΓ
  746. «Φ¿í¬π,  Ñß½¿ éδ »«»δΓáÑΓÑß∞ ßñѽáΓ∞ «óÑα½Ñ⌐¡δ¼ ¼«ñπ½∞,  ¬«Γ«αδ⌐ ¡Ñ
  747. íδ½ «Γ¬«¼»¿½¿α«óá¡ ó ß«ßΓ«∩¡¿¿ {$O+}. Æᬿ¼¿ ¡Ñ«óÑα½Ñ⌐¡δ¼¿ ¼«ñπ½∩¼¿
  748. ∩ó½∩εΓß∩ System,  Overlay,  Crt, Graph, Turbo3, Graph3. (Åα¿¼Ñτá¡¿Ñ
  749. »ÑαÑó«ñτ¿¬á: î«ñπ½∞ Dos Γ«ªÑ ¡Ñ ¼«ªÑΓ íδΓ∞ «óÑα½Ñ⌐¡δ¼).
  750.  
  751.      - î«ñπ½¿,  ¬«Γ«αδÑ  ß«ñÑαªáΓ  «íαáí«Γτ¿¬¿  »αÑαδóá¡¿⌐.   êº-ºá
  752. ¡ÑαÑÑ¡ΓÑαáíѽ∞¡«⌐ ßΓαπ¬Γπαδ DOS ¼«ñπ½∞, ¬«Γ«αδ⌐ αÑ὿ºπÑΓ interrupt
  753. »α«µÑñπαδ, ¡Ñ  ñ«½ªÑ¡  íδΓ∞  «óÑα½Ñ⌐¡δ¼.  ìá»α¿¼Ñα,  Γᬿ¼  ¼«ñπ½Ñ¼
  754. ∩ó½∩ÑΓß∩ Crt, ¬«Γ«αδ⌐ αÑ὿ºπÑΓ «íαáí«Γτ¿¬ »αÑαδóá¡¿∩ Ctrl-Break.
  755.  
  756.      - çáαÑú¿ßΓα¿α«óá¡¡δÑ    ß    »«¼«Θ∞ε   RegisterBGIdriver   ¿½¿
  757. RegisterBGIfont  BGI   ñαá⌐óÑαδ   ¿½¿   Φα¿ΣΓδ.
  758.  
  759.      î«¡¿Γ«α «óÑα½ÑÑó  ó  Turbo Pascal »«½¡«ßΓ∞ε »«ññÑনóáÑΓ ó맮ó
  760. «óÑα½Ñ⌐¡δσ »α«úαá¼¼ τÑαѺ π¬áºáΓѽ¿ ¡á »α«µÑñπαδ.  Åα¿¼ÑαἿ  Γᬿσ
  761. π¬áºáΓѽÑ⌐ »α«µÑñπα ∩ó½∩εΓß∩: »α«µÑñπαδ óδσ«ñá ¿ ñαá⌐óÑαδ πßΓα«⌐ßΓó
  762. ΓѬßΓ«óδσ Σá⌐½«ó.
  763.      èα«¼Ñ Γ«ú«,  »ÑαÑñáτá  «óÑα½Ñ⌐¡δσ  »α«µÑñπα  ¿   Σπ¡¬µ¿⌐   ¬á¬
  764. »áαá¼ÑΓα«ó  »α«µÑñπα¡«ú«  Γ¿»á ¿ »α¿ßóá¿óá¡¿Ñ «óÑα½Ñ⌐¡δσ »α«µÑñπα ¿
  765. Σπ¡¬µ¿⌐   »ÑαѼѡ¡δ¼   »α«µÑñπα¡«ú«   Γ¿»á   Γᬠ   ªÑ    »«½¡«ßΓ∞ε
  766. »«ññÑনóáÑΓß∩.
  767.  
  768.  
  769.                          ÄΓ½áñ¬á «óÑα½ÑÑó.
  770.  
  771.      ü«½∞Φ¿¡ßΓó« «Γ½áñτ¿¬«ó   »«ññÑনóáεΓ    «τÑ¡∞    «úαá¡¿τÑ¡¡δÑ
  772. ß»«ß«í¡«ßΓ¿ «Γ½áñ¬¿  «óÑα½ÑÑó.  é Turbo Pascal ¿ Turbo Debugger φΓ«
  773. ¡Ñ Γá¬.  ê¡ΓÑúα¿α«óá¡¡δ⌐ «Γ½áñτ¿¬ »«½¡«ßΓ∞ε »«ññÑনóáÑΓ  »«Φáú«ó«Ñ
  774. óδ»«½¡Ñ¡¿Ñ  ¿  Γ«τ¬¿ »αÑαδóá¡¿∩ ó «óÑα½Ñ∩σ.  êß»«½∞ºπ∩ «óÑα½Ñ¿,  óδ
  775. ¼«ªÑΓÑ ½Ñú¬«  αáºαáíáΓδóáΓ∞  ¿  «Γ½áª¿óáΓ∞  «úα«¼¡δÑ  »α«úαá¼¼δ  ¿º
  776. ¿¡ΓÑúα¿α«óá¡¡«⌐ ßαÑñδ Turbo Pascal ¿½¿ Turbo Debugger.
  777.  
  778.  
  779.                    é¡ÑΦ¡¿Ñ »α«úαá¼¼δ ó «óÑα½Ñ∩σ.
  780.  
  781.      ÆᬠªÑ ¬á¬ ¿ «íδτ¡δÑ  »α«µÑñπαδ  ¿  Σπ¡¬µ¿¿  Åá߬á½∩,  ó¡ÑΦ¡¿Ñ
  782. »α«úαá¼¼δ,   ¡á»¿ßá¡¡δÑ   ¡á   ÇßßѼí½ÑαÑ,  ñ«½ª¡δ  ß««ΓóÑΓßΓó«óáΓ∞
  783. «»αÑñѽѡ¡δ¼ »αáó¿½á¼ »α«úαá¼¼¿α«óá¡¿∩,  τΓ«íδ αáí«ΓáΓ∞ ¬«ααÑ¬Γ¡« ß
  784. ¼«¡¿Γ«α«¼ «óÑα½ÑÑó.
  785.      àß½¿ »α«úαἼᠡá ÇßßѼí½ÑαÑ  óδºδóáÑΓ  ½ ε í π ε   «óÑα½Ñ⌐¡πε
  786. »α«µÑñπαπ  ¿½¿ Σπ¡¬µ¿ε,  ÇßßѼí½Ñα¡á∩ »α«úαá¼¼á ñ«½ª¡á ¿ß»«½∞º«óáΓ∞
  787. ñá½∞¡εε  ¼«ñѽ∞  ó맮óá  ¿  ñ«½ª¡á  πßΓá¡áó½¿óáΓ∞  ßΓѬ,  ¿ß»«½∞ºπ∩
  788. αÑú¿ßΓα éÉ.   ìá»α¿¼Ñα,   »αÑñ»«½«ª¿¼,   τΓ«  «óÑα½Ñ⌐¡á∩  »α«µÑñπαá
  789. OtherProc ¡áσ«ñ¿Γß∩ ó ñαπú«¼ ¼«ñπ½Ñ ¿  τΓ«  ÇßßѼí½Ñα¡á∩  »α«úαá¼¼á
  790. ExternProc óδºδóáÑΓ ÑÑ. Æ«úñá ExternProc ñ«½ª¡á íδΓ∞ ñá½∞¡Ñ⌐ ¼«ñѽ¿
  791. (far) ¿ ñ«½ª¡á πßΓá¡áó½¿óáΓ∞ ßΓѬ:
  792.  
  793.      ExternProc      PROC    FAR
  794.  
  795.           push       bp             ; ß«σαá¡¿Γ∞ BP
  796.           mov        bp,sp          ; πßΓá¡«ó¿Γ∞ ßΓѬ
  797.           sub        sp,LocalSize   ; αáß»αÑñѽ¿Γ∞ ½«¬á½∞¡δÑ
  798.                                     ; »ÑαѼѡ¡δÑ
  799.           ...
  800.           call       OtherProc      ; óδºóáΓ∞ ñαπú«⌐ «óÑα½Ñ⌐¡δ⌐
  801.                                     ; ¼«ñπ½∞
  802.           ...
  803.           mov        sp,bp          ; πñ὿Γ∞ ½«¬á½∞¡δÑ
  804.                                     ; »ÑαѼѡ¡δÑ
  805.           pop        bp             ; ó«ßßΓá¡«ó¿Γ∞ BP
  806.           ret        ParamSize      ; ó«ºóαáΓ
  807.  
  808.      ExternProc      ENDP
  809.  
  810.      úñÑ  LocalSize  -  αẼÑα  ½«¬á½∞¡δσ  »ÑαѼѡ¡δσ ¿ ParamSize -
  811. αẼÑα »áαá¼ÑΓα«ó. àß½¿ LocalSize = 0, Γ« ßΓ᫬¿ ß αáß»αÑñѽѡ¿Ñ¼ ¿
  812. πñá½Ñ¡¿Ñ¼ ½«¬á½∞¡δσ »ÑαѼѡ¡δσ ¼«ª¡« «»πßΓ¿Γ∞.
  813.      ¥Γ¿ ΓαÑí«óá¡¿∩  «ßΓá¡πΓß∩  Γᬿ¼¿  ªÑ,  Ñß½¿ ExternProc ñѽáÑΓ
  814. ¡Ñ»α∩¼«⌐ óδº«ó  «óÑα½Ñ⌐¡δσ  »α«µÑñπα  ¿½¿ Σπ¡¬µ¿⌐.  ìá»α¿¼Ñα,  Ñß½¿
  815. OtherProc óδºδóáÑΓ «óÑα½Ñ⌐¡δÑ »α«µÑñπαδ ¿½¿  Σπ¡¬µ¿¿,  ¡«  ßá¼á  ¡Ñ
  816. «óÑα½Ñ⌐¡á∩,  Γ« ExternProc ΓᬪѠñ«½ª¡á ¿ß»«½∞º«óáΓ∞ ñá½∞¡εε ¼«ñѽ∞
  817. ó맮óá ¿ πßΓá¡áó½¿óáΓ∞ ßΓѬ.
  818.      é ß½πτáÑ,  ¬«úñá  ÇßßѼí½Ñα¡á∩ »α«úαἼᠡѠñѽáÑΓ »α∩¼«ú« ¿½¿
  819. ¡Ñ»α∩¼«ú« ó맮óá  «óÑα½Ñ⌐¡«⌐  »α«µÑñπαδ  ¿½¿  Σπ¡¬µ¿¿,  ß»Ñµ¿á½∞¡δσ
  820. ΓαÑí«óá¡¿⌐   ¬   ¡Ñ⌐   ¡Ñ   »αÑñΩ∩ó½∩ÑΓß∩:  ÇßßѼí½Ñα¡á∩  »α«úαá¼¼á
  821. ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ í½¿ª¡εε ¼«ñѽ∞ ó맮óá (near) ¿  ¡Ñ πßΓá¡áó½¿óáÑΓ
  822. ßΓѬ.
  823.      ÄóÑα½Ñ⌐¡á∩ ÇßßѼí½Ñα¡á∩ »α«úαἼᠡѠñ«½ª¡á  ß«ºñáóáΓ∞ »ÑαѼѡ
  824. ¡δÑ ó  ¬«ñ«ó«¼ ßÑú¼Ñ¡ΓÑ,  »«ß¬«½∞¬π ½εíδÑ ¼«ñ¿Σ¿¬áµ¿¿,  ßñѽᡡδÑ ó
  825. «óÑα½Ñ⌐¡«¼ ¬«ñ«ó«¼ ßÑú¼Ñ¡ΓÑ,  íπñπΓ »«ΓÑα∩¡δ,  ¬«úñá «óÑα½Ñ⌐  íπñÑΓ
  826. πñá½Ñ¡. èα«¼Ñ  Γ«ú«,  º¡áτÑ¡¿∩ π¬áºáΓѽÑ⌐ ¡á «íΩѬΓδ, ¡áσ«ñ∩Θ¿Ñß∩ ó
  827. «óÑα½Ñ⌐¡«¼ ¬«ñ«ó«¼ ßÑú¼Ñ¡ΓÑ,  ¼«úπΓ ¿º¼Ñ¡∩Γ∞ß∩ »«ß½Ñ ó맮óá  ñαπú¿σ
  828. «óÑα½ÑÑó, »«ß¬«½∞¬π  ¼«¡¿Γ«α «óÑα½ÑÑó ßó«í«ñ¡« »ÑαѼÑΘáÑΓ ¿ πñá½∩ÑΓ
  829. «óÑα½Ñ⌐¡δÑ ¬«ñ«óδÑ ßÑú¼Ñ¡Γδ.
  830.  
  831.  
  832.                       ÄóÑα½Ñ¿ ó .EXE Σá⌐½áσ.
  833.  
  834.      Turbo Pascal  »αÑñ«ßΓáó½∩ÑΓ ó«º¼«ª¡«ßΓ∞ ß«σαá¡¿Γ∞ éáΦ¿ «óÑα½Ñ¿
  835. 󠬫¡µÑ .EXE Σá⌐½á éáΦÑ⌐ »α¿¬½áñ¡«⌐ »α«úαá¼¼δ,  á  ¡Ñ  ó  «Γñѽ∞¡«¼
  836. .OVR  Σá⌐½Ñ.  ä½∩  »α¿ß«Ññ¿¡Ñ¡¿∩  .OVR  Σá⌐½á  ¬  ¬«¡µπ  .EXE Σá⌐½á
  837. ¿ß»«½∞ºπ⌐ΓÑ ¬«¼á¡ñπ Copy DOS ß «»µ¿Ñ⌐ /b. ìá»α¿¼Ñα
  838.  
  839.      Copy/b MYPROG.EXE + MYPROG.OVR
  840.  
  841.      éδ ñ«½ª¡δ íδΓ∞ πóÑαÑ¡δ,  τΓ« .EXE Σá⌐½ íδ½ «Γ¬«¼»¿½¿α«óá¡  íѺ
  842. «Γ½áñ«τ¡«⌐ ¿¡Σ«α¼áµ¿¿  Turbo Debugger.  ä½∩ φΓ«ú« ó IDE ¡Ñ«íσ«ñ¿¼«,
  843. τΓ«íδ Debug/StandAlone  Debugging  í佫  πßΓá¡«ó½Ñ¡«   ó   Off;   ß
  844. ¬«¼á¡ñ¡«⌐ óÑαß¿Ñ⌐ ¬«¼»¿½∩Γ«αá ¡Ñ ñ«½ª¡á íδΓ∞ π¬áºá¡á «»µ¿∩ /V.
  845.      ä½∩ τΓÑ¡¿∩ «óÑα½ÑÑó ß ¬«¡µá .EXE Σá⌐½á á ¡Ñ ¿º «Γñѽ∞¡«ú« .OVR
  846. Σá⌐½á,  »α«ßΓ«  π¬áª¿ΓÑ  ¿¼∩  .EXE Σá⌐½á ó ó맮óÑ OvrInit.  àß½¿ éδ
  847. αáí«ΓáÑΓÑ »«ñ DOS 3.X,  éδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ßΓá¡ñáαΓ¡πε  Σπ¡¬µ¿ε
  848. ParamStr ñ½∩ »«½πτÑ¡¿∩ ¿¼Ñ¡¿ .EXE Σá⌐½á. ìá»α¿¼Ñα:
  849.  
  850.      OvrInit(ParamStr(0));
  851.