home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / Pascal / Samples / MINIRES.ARJ / MINIRES.DOC next >
Encoding:
Text File  |  1992-02-25  |  15.7 KB  |  424 lines

  1.  
  2.                                               ÿÑσ«óµ«ó Ç½Ñ¬ßá¡ñα
  3.  
  4.  
  5.                ô¼Ñ¡∞ΦÑ¡¿Ñ αẼÑαá αѺ¿ñÑ¡Γ¡δσ »α«úαá¼¼,
  6.                  ¡á»¿ßá¡¡δσ ¡á Turbo-Pascal 6.0.
  7.  
  8.  
  9.   è«úñá ¬Γ«-½¿í« ú«ó«α¿Γ, τΓ« αѺ¿ñÑ¡Γ¡δÑ »α«úαá¼¼δ ß½ÑñπÑΓ »¿ßáΓ∞  ¡á
  10. áßßѼí½ÑαÑ, ∩ íѺπß½«ó¡« ß«ú½áΦáεß∞. è«¡Ñτ¡«,  ∩ºδ¬  áßßѼí½Ñαá  ½πτΦÑ
  11. óßÑú«  ß«ºñá¡  ñ½∩  ¡á»¿ßá¡¿∩   ¼á½Ñ¡∞¬¿σ   αѺ¿ñÑ¡Γ¡δσ   πΓ¿½¿Γ,   ¡«
  12. »«»α«íπ⌐ΓÑ ßñѽáΓ∞ ¡á ¡Ñ¼ τΓ«-Γ« óα«ñÑ DISKMON  ¿º  Norton  Utilities.
  13. Åα«úαá¼¼á DISKMON ¿¼ÑÑΓ αẼÑα «¬«½« 70 èí, ¿ß»«½∞ºπÑΓ ¼«Θ¡πε  «¬«¡¡πε
  14. í¿í½¿«ΓѬπ ¿, »«ß½Ñ Γ«ú« ¬á¬ éδ óδíÑαÑΓÑ ¡πª¡δÑ αѪ¿¼δ  ºáΘ¿Γδ  ñ¿ß¬á,
  15. «ßΓáó½∩ÑΓ ó »á¼∩Γ¿ αѺ¿ñÑ¡Γ αẼÑα«¼ 8.5 ¬¿½«íá⌐Γ, ¬«Γ«αδ⌐  ß«íßΓóÑ¡¡«
  16. ¿ ºáΘ¿ΘáÑΓ ñ¿ß¬. Æᬠ¡ÑπªÑ½¿ αáñ¿ φΓ¿σ 8.5 èí  ¡πª¡«  ¡áí¿αáΓ∞  70  èí
  17. »α«úαá¼¼δ ¡á áßßѼí½ÑαÑ? ÆÑ»Ñα∞ πªÑ ¼«ª¡« ß¬áºáΓ∞: ¡ÑΓ, ¡Ñ ¡πª¡«!
  18.   æ½Ññπ∩ αѬ«¼Ñ¡ñᵿ∩¼ ¿º ñá¡¡«⌐ ßΓáΓ∞¿ éδ Γ«ªÑ  ß¼«ªÑΓÑ  ¿ß»«½∞º«óáΓ∞
  19. ¿ ¿¡ΓÑαΣÑ⌐ß¡δÑ í¿í½¿«ΓѬ¿, ¿  »α«τ¿Ñ  πñ«í¡δÑ  ¼«ñπ½¿,  ¡á»¿ßá¡¡δÑ  ¡á
  20. Turbo-Pascal 6.0, á »« «¬«¡τá¡¿¿ αáí«Γδ »α«úαá¼¼δ «ßΓáó½∩Γ∞  ó  »á¼∩Γ¿
  21. ¬«¼»∞εΓÑαá ¡Ñí«½∞Φ«Ñ αѺ¿ñÑ¡Γ¡«Ñ Γѽ«, ¡Ñ ß«ñÑαªáΘÑÑ  ¡¿τÑú«  ½¿Φ¡Ñú«.
  22. ê óßÑ φΓ« ¡Ñ »«ΓαÑíπÑΓ «Γ éáß º¡á¡¿∩ áßßѼí½Ñαá!
  23.  
  24.   êΓá¬, ß¡áτá½á «ΓóÑΓ¿¼ ¡á ¬½ετÑó«⌐ ó«»α«ß:
  25.  
  26.  
  27.                       1. ùΓ« ñѽáΓ∞.
  28.  
  29.  Éáßß¼«Γα¿¼ ßΓαπ¬Γπαπ »α«úαá¼¼δ ¡á ∩ºδ¬Ñ Turbo-Pascal:
  30.                                                 
  31.                éÑαΦ¿¡á »á¼∩Γ¿ DOS (640 èí)      
  32.        ┌───────────────────────────────────────┐
  33.        │           æó«í«ñ¡á∩ »á¼∩Γ∞            │
  34.        ├───────────────────────────────────────┤
  35.        │             Heap (èπτá)               │
  36.        ├───────────────────────────────────────┤
  37.        │            üπΣÑα «óÑα½Ñ∩              │
  38.        ├───────────────────────────────────────┤
  39.        │               æΓѬ                    │
  40.        ├───────────────────────────────────────┤ <- SSeg:0000
  41.        │        â½«íá½∞¡δÑ »ÑαѼѡ¡δÑ          │
  42.        │        Æ¿»¿º«óá¡¡δÑ ¬«¡ßΓá¡Γδ         │
  43.        ├───────────────────────────────────────┤ <- DSeg:0000
  44.        │      æÑú¼Ñ¡Γ ¬«ñá ¼«ñπ½∩ SYSTEM       │
  45.        ├───────────────────────────────────────┤
  46.        │      æÑú¼Ñ¡Γ ¬«ñá »Ñαó«ú« ¼«ñπ½∩      │
  47.        ├───────────────────────────────────────┤
  48.                        ...                      
  49.                                                 
  50.        ├───────────────────────────────────────┤    
  51.        │      æÑú¼Ñ¡Γ ¬«ñá »«ß½Ññ¡Ñú«          │
  52.        │      ¼«ñπ½∩                           │
  53.        ├───────────────────────────────────────┤
  54.        │      æÑú¼Ñ¡Γ ¬«ñá ú«½«ó¡«⌐            │
  55.        │      »α«úαá¼¼δ                        │
  56.        ├───────────────────────────────────────┤
  57.        │      Program segment prefix (PSP)     │
  58.        └───────────────────────────────────────┘ <- PrefixSeg
  59.  
  60.         
  61.  êº α¿ßπ¡¬á ó¿ñ¡«,  τΓ«  »α«ΘÑ  óßÑú«  ¿ºíáó¿Γ∞ß∩  «Γ  "½¿Φ¡Ñú«"  ¬«ñá
  62. ß½ÑñπεΘ¿¼ «íαẫ¼:
  63.  
  64.       - »«¼ÑßΓ¿Γ∞ ó ¡áτὫ ú«½«ó¡«ú« ¼«ñπ½∩ Γπ αѺ¿ñÑ¡Γ¡πε  »α«µÑñπαπ,
  65. ¬«Γ«αá∩ «ßΓá¡ÑΓß∩ ó »á¼∩Γ¿ »«ß½Ñ ºáóÑαΦÑ¡¿∩ αáí«Γδ »α«úαá¼¼δ;
  66.  
  67.       - ßαáºπ ºá ¡Ñ⌐ »«¼ÑßΓ¿Γ∞ ßÑú¼Ñ¡Γ ñá¡¡δσ;
  68.  
  69.       - ¼¿¡¿¼¿º¿α«óáΓ∞ αẼÑα ßÑú¼Ñ¡Γá ñá¡¡δσ, Γᬠ ¬á¬  ñ½∩  »α«ßΓ«Γδ
  70. «¡ íÑαÑΓß∩ óÑß∞;
  71.  
  72.       - ¡Ñ ¿ß»«½∞º«óáΓ∞ ó  αѺ¿ñÑ¡Γ¡«⌐  τáßΓ¿  »α«úαá¼¼δ  ñ¿¡á¼¿τÑ߬¿Ñ
  73. »ÑαѼѡ¡δÑ  (Γᬠ ¬á¬  óÑß∞  Heap  ó¼ÑßΓÑ  ß  Ñú« ¼«¡¿Γ«α«¼   ¼δ  Γ«ªÑ
  74. óδíαáßδóáѼ);
  75.  
  76.       - π¬áºáΓ∞ ¡«óδ⌐ αẼÑα αѺ¿ñÑ¡Γ¡«⌐  τáßΓ¿  »α«úαá¼¼δ:  «¡  αáóÑ¡
  77. αẼÑαπ αѺ¿ñÑ¡Γ¡«⌐ »α«µÑñπαδ+αẼÑαπ ßÑú¼Ñ¡Γá ñá¡¡δσ;
  78.  
  79.       - »«ß¬«½∞¬π º¡áτÑ¡¿Ñ áñαÑßá ßÑú¼Ñ¡Γá  ñá¡¡δσ  ¿º¼Ñ¡¿½«ß∞,  ¡πª¡«
  80. ¬á¬-Γ« ¡áπτ¿Γ∞ß∩ »«½πτáΓ∞  ñ«ßΓπ»  ¬  ñá¡¡δ¼  »α¿  ó맮óÑ  αѺ¿ñÑ¡Γ¡«⌐
  81. »α«µÑñπαδ.
  82.  
  83.  é αѺπ½∞ΓáΓÑ ¿º ¡áα¿ß«óá¡¡«⌐ óδΦÑ ¬áαΓ¿¡¬¿ »«½πτ¿Γß∩:
  84.  
  85.                éÑαΦ¿¡á »á¼∩Γ¿ DOS (640 èí)
  86.        ┌───────────────────────────────────────┐
  87.        │           æó«í«ñ¡á∩ »á¼∩Γ∞            │
  88.        ├───────────────────────────────────────┤    <──────────────┐α
  89.        │        â½«íá½∞¡δÑ »ÑαѼѡ¡δÑ          │                   │Ñ
  90.        │        Æ¿»¿º«óá¡¡δÑ ¬«¡ßΓá¡Γδ         │                   │º
  91.        ├───────────────────────────────────────┤ <- NewDSeg:0000   │¿
  92.        │      æÑú¼Ñ¡Γ ¬«ñá ú«½«ó¡«⌐            │                   │ñ
  93.        │      »α«úαá¼¼δ (¡Ñ µÑ½¿¬«¼)           │                   │Ñ
  94.        ├───────────────────────────────────────┤                   │¡
  95.        │      Program segment prefix (PSP)     │                   │Γ
  96.        └───────────────────────────────────────┘ <- PrefixSeg  <───┘
  97.  
  98.  
  99.  ê¼Ñ¡¡« φΓ« ¿ íπñÑΓ ΓѼ ¼¿¡¿¼á½∞¡δ¼ αѺ¿ñÑ¡Γ«¼, ¬«Γ«αδ⌐ ¼«ª¡« ßñѽáΓ∞
  100. ¿º »α«úαá¼¼δ ¡á Turbo-Pascal.
  101.  Ç ΓÑ»Ñα∞, »«ß½Ñ ¼¡«ú««íÑΘáεΘ¿σ »α«Ñ¬Γ«ó, ¡Ñ úαÑσ ¿ ß»α«ß¿Γ∞:
  102.  
  103.  
  104.  
  105.                       2. èᬠφΓ« ßñѽáΓ∞.
  106.  
  107.   Äß¡«ó¡πε τáßΓ∞ ºáí«Γ ó«º∞¼ÑΓ ¡á ßÑí∩ »α«µÑñπαá Keep. èᬠéδ  º¡áÑΓÑ,
  108. 󠼫ñπ½Ñ DOS ¿¼ÑÑΓß∩ ßΓá¡ñáαΓ¡á∩  »α«µÑñπαá  Keep,  ¬«Γ«αá∩  ºáóÑαΦáÑΓ
  109. »α«úαá¼¼π, ñѽá∩ ÑÑ αѺ¿ñÑ¡Γ¡«⌐. îδ ¡á»¿ΦѼ ßó«ε,  ¬«Γ«αá∩  ñѽáÑΓ  Γ«
  110. ªÑ, ¡« ÑΘÑ ¿ π¼Ñ¡∞ΦáÑΓ αẼÑα αѺ¿ñÑ¡Γ¡«⌐ τáßΓ¿ ñ« ¼¿¡¿¼π¼á.
  111.   Äñ¡á¬« ¬«Ñ-τΓ« »α¿ñÑΓß∩ ñѽáΓ∞ ßἿ¼, ΓᬠτΓ« ñáóá⌐ΓÑ  «ßΓáó¿¼  Keep
  112. ¡á»«ß½Ññ«¬.
  113.   Ç »«¬á αáßß¼«Γα¿¼ »« »π¡¬Γá¼, « τѼ ºáí«Γ¿¼ß∩ ¼δ:
  114. ___________________________________
  115.  
  116.      1. Å«¼ÑßΓ¿Γ∞ ó ¡áτὫ ú«½«ó¡«ú« ¼«ñπ½∩ Γπ αѺ¿ñÑ¡Γ¡πε  »α«µÑñπαπ,
  117. ¬«Γ«αá∩ «ßΓá¡ÑΓß∩ ó »á¼∩Γ¿ »«ß½Ñ ºáóÑαΦÑ¡¿∩ αáí«Γδ »α«úαá¼¼δ:
  118.  
  119.  ¥Γ« ßἫѠ»α«ßΓ«Ñ.  ÅπßΓ∞  αѺ¿ñÑ¡Γ¡á∩  »α«µÑñπαá  ¡áºδóáÑΓß∩  MyRes,
  120. Γ«úñá ¡πª¡δ⌐ αѺπ½∞ΓáΓ íπñÑΓ »«½πτÑ¡ Γá¬:
  121.  
  122. program MiniResident;
  123.  
  124. uses DOS,CRT;          (* ô¬áºδóáÑΓÑ ¿ß»«½∞ºπѼδÑ ¼«ñπ½¿,
  125.                           ¬á¬ «íδτ¡« *)
  126.  
  127. TYPE  ...              (* Ä»¿ßá¡¿Ñ Γ¿»«ó ñá¡¡δσ          *)
  128. VAR   ...              (* Ä»¿ßá¡¿Ñ ú½«íá½∞¡δσ »ÑαѼѡ¡δσ *)
  129. CONST ...              (* Ä»¿ßá¡¿Ñ ¬«¡ßΓá¡Γ              *)
  130.  
  131. procedure MyRes; interrupt;
  132.  
  133.                        (* æá¼á∩ »Ñαóá∩ »α«µÑñπαá ¿º »α«µÑñπα ¿ Σπ¡¬µ¿⌐
  134.                           ú«½«ó¡«ú« ¼«ñπ½∩ »α«úαá¼¼δ      *)
  135.  
  136. ...                    (* Æѽ« »α«µÑñπαδ                  *)
  137.  
  138. end;{MyRes}            (* è«¡Ñµ »α«µÑñπαδ                 *)
  139.  
  140. procedure ...          (* ÄßΓá½∞¡δÑ »α«µÑñπαδ ¿ Σπ¡¬µ¿¿ ú«½«ó¡«ú«
  141.                           ¼«ñπ½∩                          *)
  142.  
  143. ___________________________________
  144.  
  145.       2. æαáºπ ºá ¡Ñ⌐ »«¼ÑßΓ¿Γ∞ ßÑú¼Ñ¡Γ ñá¡¡δσ:
  146.  
  147.  ¥Γ¿¼ ºá⌐¼ÑΓß∩ »α«µÑñπαá Keep. Ä¡á ñ«½ª¡á íδΓ∞  »«ß½Ññ¡Ñ⌐  »«  »«α∩ñ¬π
  148. ¿º »α«µÑñπα ¿ Σπ¡¬µ¿⌐, ¬«Γ«αδÑ »«»áñπΓ ó αѺ¿ñÑ¡Γ¡πε τáßΓ∞  »α«úαá¼¼δ.
  149. æαáºπ  ºá  ß«í«⌐  Keep  »«¼ÑßΓ¿Γ  ñá¡¡δÑ,  »α«»¿ßáó  ¿σ  »«óÑασ   Γѽá
  150. «ßΓá½∞¡δσ »α«µÑñπα ¿ Σπ¡¬µ¿⌐, ó αѺ¿ñÑ¡ΓÑ ¡Ñ ¿ß»«½∞ºπѼδσ.
  151.  
  152.  æá¼á »α«µÑñπαá ñ«½ª¡á íδΓ∞ ºá»¿ßá¡á Γá¬:
  153.  
  154.  
  155. procedure DummyProc; forward;
  156.  
  157. procedure Keep( Num : word );
  158.  
  159.  ...                          (* Æѽ« »α«µÑñπαδ Keep *)
  160.  
  161. end;{Keep}
  162.  
  163. procedure DummyProc;
  164. begin
  165. end;{DummyProc}
  166.  
  167.  ç¡á∩ ¼ÑßΓ«»«½«ªÑ¡¿Ñ »α«µÑñπαδ DummyProc »α«µÑñπαá  Keep  íπñÑΓ  Γ«τ¡«
  168. º¡áΓ∞,  úñÑ  ºáóÑαΦáÑΓß∩  αѺ¿ñÑ¡Γ¡á∩   τáßΓ∞   ¬«ñ«ó   »α«úαá¼¼δ,   ¿
  169. »ÑαѼÑßΓ¿Γ Γπñá ßÑú¼Ñ¡Γ ñá¡¡δσ.
  170.  
  171.  Æѽ«  »α«µÑñπαδ  Keep  íπñÑΓ  ¡á»¿ßá¡«  τπΓ∞  »«ºªÑ,  Γᬠ  ¬á¬   «¡á
  172. «ñ¡«óαѼѡ¡« óδ»«½¡¿Γ ¿ ¡Ñ¬«Γ«αδÑ ñαπú¿Ñ ¡Ñ«íσ«ñ¿¼δÑ ñÑ⌐ßΓó¿∩.
  173.  
  174. ___________________________________
  175.  
  176.      3. î¿¡¿¼¿º¿α«óáΓ∞ αẼÑα ßÑú¼Ñ¡Γá ñá¡¡δσ, Γᬠ ¬á¬  ñ½∩  »α«ßΓ«Γδ
  177. «¡ íÑαÑΓß∩ óÑß∞:
  178.  
  179.    ä½∩  π¼Ñ¡∞ΦÑ¡¿∩  αẼÑαá  ßÑú¼Ñ¡Γá  ñá¡¡δσ  ¡Ñ«íσ«ñ¿¼«  ßóÑßΓ¿   ñ«
  180. ¼¿¡¿¼π¼á ¬«½¿τÑßΓó« ú½«íá½∞¡δσ  »ÑαѼѡ¡δσ  ¿  Γ¿»¿º«óá¡¡δσ  ¬«¡ßΓá¡Γ,
  181. «ßΓáó¿ó »« ó«º¼«ª¡«ßΓ¿ ½¿Φ∞ ΓÑ, ¬«Γ«αδÑ éδ ¿ß»«½∞ºπÑΓÑ  ó  αѺ¿ñÑ¡Γ¡«⌐
  182. τáßΓ¿ »α«úαá¼¼δ. Äß«íÑ¡¡« φΓ« ¬áßáÑΓß∩ ¼áßß¿ó«ó. ìá»α¿¼Ñα:
  183.  
  184. TYPE  BigArr = ARRAY[1..4096] OF WORD;
  185.  
  186. (*        ìÑ αѬ«¼Ñ¡ñπÑΓß∩                      ÉѬ«¼Ñ¡ñπÑΓß∩   *)
  187.  
  188.  
  189.                                         TYPE  PBigArr = ^BigArr;
  190. VAR                                    VAR
  191.    BM : BigArr;                           BM : PBigArr;
  192.  
  193. BEGIN                                  BEGIN
  194.                                           GetMem(BM,SizeOf(BigArr));
  195.    BM[ 1 ] := 24;                         BM^[ 1 ] := 24;
  196.  
  197. ___________________________________
  198.  
  199.      4. ìÑ ¿ß»«½∞º«óáΓ∞ ó  αѺ¿ñÑ¡Γ¡«⌐  τáßΓ¿  »α«úαá¼¼δ  ñ¿¡á¼¿τÑ߬¿Ñ
  200. »ÑαѼѡ¡δÑ  (Γᬠ ¬á¬  óÑß∞  Heap  ó¼ÑßΓÑ  ß  Ñú« ¼«¡¿Γ«α«¼   ¼δ  Γ«ªÑ
  201. óδíαáßδóáѼ).
  202.  
  203.   àß½¿ éáΦá αѺ¿ñÑ¡Γ¡á∩ »α«µÑñπαá ¿ß»«½∞ºπÑΓ ¬á¬«⌐-½¿í« íπΣÑα,  Γ«  «¡
  204. ¡Ñ ñ«½ªÑ¡ íδΓ∞ π¬áºáΓѽѼ, ¬«Γ«αδ⌐ »«½πτ¿½  »á¼∩Γ∞  ß  »«¼«Θ∞ε  GetMem
  205. ¿½¿ New.
  206.   æ½Ññ«óáΓѽ∞¡«, óßÑ  ßΓαπ¬Γπαδ  ¿  ¼áßß¿óδ  ñ½∩  αѺ¿ñÑ¡Γ¡«⌐  πΓ¿½¿Γδ
  207. ¡Ñ«íσ«ñ¿¼« «»¿ßáΓ∞ ¬á¬ ú½«íá½∞¡δÑ  »ÑαѼѡ¡δÑ,  ¿½¿  ¬á¬  Γ¿»¿º«óá¡¡δÑ
  208. ¬«¡ßΓá¡Γδ. Ä¡¿ íπñπΓ »«¼ÑΘÑ¡δ ó ßÑú¼Ñ¡Γ ñá¡¡δσ.
  209.  
  210. ___________________________________
  211.  
  212.      5. ô¬áºáΓ∞ ¡«óδ⌐ αẼÑα αѺ¿ñÑ¡Γ¡«⌐  τáßΓ¿  »α«úαá¼¼δ:  «¡  αáóÑ¡
  213. αẼÑαπ αѺ¿ñÑ¡Γ¡«⌐ »α«µÑñπαδ+αẼÑαπ ßÑú¼Ñ¡Γá ñá¡¡δσ.
  214.  
  215.   ¥Γπ αáí«Γπ ó ¼«ñπ½Ñ DOS óδ»«½¡∩ÑΓ »α«µÑñπαá Keep.  é«Γ  ¿  ÑÑ  óαѼ∩
  216. »α¿Φ½«. àß½¿ éδ  ¡Ñ  «ß«í«  αáºí¿αáÑΓÑß∞  ó  áßßѼí½ÑαÑ  ¿  ó¡πΓαÑ¡¡¿σ
  217. ßΓαπ¬Γπαáσ Turbo-Pascal, Γ« ó«ß»α¿¼¿ΓÑ  Keep  ¬á¬  ñá¡¡«ßΓ∞  ¿  »α«ßΓ«
  218. óßΓáó∞ΓÑ ÑÑ ó ßó«ε »α«úαá¼¼π.
  219.  
  220.  
  221. procedure DummyProc; external;
  222.  
  223. procedure Keep( ExitCode : byte );
  224. (* æñó¿ú ßÑú¼Ñ¡Γá ñá¡¡δσ ó»½«Γ¡πε ¬ ¬«ñ«ó«¼π ßÑú¼Ñ¡Γπ.
  225.    é αѺπ½∞ΓáΓÑ πª¿¼áÑΓß∩ EXE - Σá⌐½ ¡á߬«½∞¬« ó«º¼«ª¡«. *)
  226.  
  227. VAR
  228.    ResidSize: word; (* αẼÑα αѺ¿ñÑ¡Γ¡«⌐ τáßΓ¿ »α«úαá¼¼δ ó »áαáúαáΣáσ *)
  229.    NewDS    : word; (* º¡áτÑ¡¿Ñ ßÑú¼Ñ¡Γá ¡«ó«ú« DS - ßÑú¼Ñ¡Γá ñá¡¡δσ  *)
  230.    DataSize : word; (* αẼÑα ßÑú¼Ñ¡Γá ñá¡¡δσ ó »áαáúαáΣáσ            *)
  231.  
  232.  
  233. begin
  234.   NewDS := (CSeg + Ofs(DummyProc) DIV 16) +1; (* ì«óδ⌐ ßÑú¼Ñ¡Γ ñá¡¡δσ
  235.                                               ¡áτ¿¡áÑΓß∩ ßαáºπ »«ß½Ñ
  236.                                               »α«µÑñπαδ Keep *)
  237.   DataSize := SSeg-DSeg;
  238.   ResidSize:= NewDS-PrefixSeg+DataSize;
  239.  
  240.   asm      (* çừ¼¡¿¼ º¡áτÑ¡¿Ñ áñαÑßá ¡«ó«ú« ßÑú¼Ñ¡Γá ñá¡¡δσ *)
  241.      mov ax,NewDS
  242.      mov cs : word ptr [BufferDS], ax
  243.   end;
  244.  
  245.   move( MEM[ DSeg:0 ], MEM[ NewDS:0 ], (SSeg-DSeg)*16);
  246.         (* move ßñó¿úáÑΓ ßÑú¼Ñ¡Γ ñá¡¡δσ ó»α¿Γδ¬
  247.            ¬ ¬«ñá¼ αѺ¿ñÑ¡Γ¡«⌐ τáßΓ¿ »α«úαá¼¼δ *)
  248.  
  249.   ASM                             (* æΓá¡«ó¿¼ß∩ αѺ¿ñÑ¡Γ«¼ *)
  250.     mov ax,[SYSTEM.PREFIXSEG]
  251.     mov es,ax
  252.     mov es,es:[02CH]              (* æ¡áτá½á «ßó«í«ªπ Environment block *)
  253.     mov ah,49H
  254.     int 21H
  255.  
  256.     mov dx,ResidSize              (* ôßΓá¡«ó¿¼ αẼÑα αѺ¿ñÑ¡Γ¡«⌐ τáßΓ¿ *)
  257.     mov ah,31H
  258.     mov al,ExitCode               (* ÆÑ»Ñα∞ - TSR ß ¬«ñ«¼ ó«ºóαáΓá ExitCode *)
  259.     int 21H
  260.   END;
  261.  
  262. end;{Keep}
  263.  
  264. procedure DummyProc;
  265. begin
  266. end;{DummyProc}
  267.  
  268.  
  269.   ä½∩ «»δΓ¡δσ »«½∞º«óáΓѽÑ⌐ ß««íΘπ, τΓ« »α«µÑñπαá Keep:
  270.  
  271. - πßΓá¡áó½¿óáÑΓ αẼÑα αѺ¿ñÑ¡Γ¡«⌐  τáßΓ¿  »α«úαá¼¼δ,  αáó¡δ⌐  αẼÑαπ
  272. ¬«ñá «Γ ¡áτá½á »α«úαá¼¼δ ñ« ¬«¡µá »α«µÑñπαδ  Keep  +  αẼÑα  ßÑú¼Ñ¡Γá
  273. ñá¡¡δσ;
  274.  
  275. - «ßó«í«ªñáÑΓ  DOS  Environment  block,  «Γ¬πñá  íÑαπΓ  ßó«Ñ  º¡áτÑ¡¿Ñ
  276. Σπ¡¬µ¿¿ ParamCount, ParamStr, EnvCount, GetEnv  ¿  EnvStr.  ¥Γ«Γ  í½«¬
  277. αáß»«½«ªÑ¡ «Γñѽ∞¡« «Γ «ßΓá½∞¡«⌐  »α«úαá¼¼δ,  «íδτ¡«  ¡¿ªÑ  ÑÑ.  Å«ß½Ñ
  278. ºáúαπº¬¿ ß½ÑñπεΘÑ⌐ »α«úαá¼¼δ ÑÑ DOS Environment block »«τΓ¿  ¡áóÑα¡∩¬á
  279. íπñÑΓ  αẼÑΘÑ¡  ó  φΓ«¼   ßó«í«ñ¡«¼   ¼ÑßΓÑ,   á   º¡áτ¿Γ   »«½πτ¿Γß∩
  280. ñ«»«½¡¿Γѽ∞¡δ⌐ óδ¿úαδΦ ó «»ÑαáΓ¿ó¡«⌐ »á¼∩Γ¿.
  281.  
  282. ___________________________________
  283.  
  284.       6. Å«ß¬«½∞¬π º¡áτÑ¡¿Ñ áñαÑßá ßÑú¼Ñ¡Γá ñá¡¡δσ  ¿º¼Ñ¡¿½«ß∞,  ¡πª¡«
  285. ¬á¬-Γ« ¡áπτ¿Γ∞ß∩ »«½πτáΓ∞  ñ«ßΓπ»  ¬  ñá¡¡δ¼  »α¿  ó맮óÑ  αѺ¿ñÑ¡Γ¡«⌐
  286. »α«µÑñπαδ.
  287.  
  288.   é¡¿¼áΓѽ∞¡δ⌐   τ¿ΓáΓѽ∞,   º¡áεΘ¿⌐   áßßѼí½Ñα,   ¼«ªÑΓ    ß»α«ß¿Γ∞:
  289. "Å«ú«ñ¿ΓÑ, á τΓ« ΓᬫѠBufferDS ó »α«µÑñπαÑ Keep ¿ úñÑ «¡ «»¿ßá¡?".
  290.   äÑ⌐ßΓó¿Γѽ∞¡«, ¡πª¡« «»¿ßáΓ∞ φΓπ  »ÑαѼѡ¡πε,  τΓ«íδ  ¬«¼»¿½∩Γ«α  ¡Ñ
  291. "απúá½ß∩". ¥Γá »ÑαѼѡ¡á∩ ß«ñÑαª¿Γ ¡«óδ⌐  áñαÑß  ßÑú¼Ñ¡Γá  ñá¡¡δσ.  ì«
  292. τΓ«íδ πº¡áΓ∞ º¡áτÑ¡¿Ñ ½εí«⌐ »ÑαѼѡ¡«⌐,  ¡πª¡«  º¡áΓ∞  áñαÑß  ßÑú¼Ñ¡Γá
  293. ñá¡¡δσ. æ½Ññ«óáΓѽ∞¡«,  ñ½∩  »«½πτÑ¡¿∩  º¡áτÑ¡¿∩  »ÑαѼѡ¡«⌐  BufferDS
  294. ¡πª¡« º¡áΓ∞ φΓ« º¡áτÑ¡¿Ñ ºáαá¡ÑÑ! çἬ¡πΓδ⌐ ¬απú?
  295.   ìÑΓ, ÑßΓ∞ óδσ«ñ ¿ ¿º ¡Ñú«. Å«¼ÑßΓ¿¼ »ÑαѼѡ¡πε  BufferDS  ó  ¬«ñ«óδ⌐
  296. ßÑú¼Ñ¡Γ.  ä½∩  »α«úαá¼¼¿ßΓ«ó  ¡á  áßßѼí½ÑαÑ  σαá¡Ñ¡¿Ñ  »ÑαѼѡ¡δσ   ó
  297. ¬«ñ«ó«¼ ßÑú¼Ñ¡ΓÑ ñѽ« «íδτ¡«Ñ, ¡« Turbo-Pascal Γᬠ»α«ßΓ« ßñѽáΓ∞  φΓ«
  298. ¡Ñ »«ºó«½¿Γ. Å«⌐ñѼ ¡á  σ¿Γα«ßΓ∞:  «»¿ΦѼ  BufferDS  ¬á¬  »α«µÑñπαπ  ß
  299. »πßΓδ¼ Γѽ«¼, á ºá¡¿¼áѼ«Ñ Ñε ¼ÑßΓ« ¿ß»«½∞ºπѼ ñ½∩  σαá¡Ñ¡¿∩  º¡áτÑ¡¿∩
  300. "»ÑαѼѡ¡«⌐" BufferDS, Γ« ÑßΓ∞ ¡«ó«ú« áñαÑßá ßÑú¼Ñ¡Γá ñá¡¡δσ.
  301.   Å«ß¬«½∞¬π BufferDS  »α¿ú«ñ¿Γß∩  ¿  ó  αѺ¿ñÑ¡Γ¡«⌐  τáßΓ¿  »α«úαá¼¼δ,
  302. «»¿ΦѼ Ñú« »ÑαÑñ MyRes.
  303.  
  304.  
  305. procedure BufferDS;
  306. begin
  307. end;{BufferDS}
  308.  
  309. procedure MyRes; interrupt;
  310.  
  311. ...
  312.  
  313.   ÆÑ»Ñα∞ π ¡áß ÑßΓ∞  óßÑ,  τΓ«  ¡πª¡«.  ÄßΓὫß∞  π¬áºáΓ∞  αѺ¿ñÑ¡Γ¡«⌐
  314. »α«µÑñπαÑ ¡«ó«Ñ º¡áτÑ¡¿Ñ ßÑú¼Ñ¡Γá ñá¡¡δσ. ¥Γ« ¡πª¡«  ßñѽáΓ∞  ó  ßἫ¼
  315. ¡áτá½Ñ »α«µÑñπαδ ß »«¼«Θ∞ε áßßѼí½Ñα¡δσ «»ÑαáΓ«α«ó:
  316.  
  317. procedure MyRes;interrupt;
  318. begin
  319.  ASM
  320.      mov ax, cs : word ptr [BufferDS]
  321.      mov ds,ax
  322.  END;
  323.  
  324.   ...
  325.  
  326.  
  327.  
  328.                       3. Ç τѼ »½áΓ¿Γ∞?
  329.  
  330.  
  331.  êºóÑßΓ¡«,  τΓ«  ¡¿τÑú«  ºáñáα«¼  ¡Ñ  íδóáÑΓ.  Æá¬,  Ñß½¿  ó¡¿¼áΓѽ∞¡«
  332. »«ß¼«ΓαÑΓ∞ ¡á á½ú«α¿Γ¼ "óδíαáßδóá¡¿∩ ½¿Φ¡Ñú« ¬«ñá",  Γ«  ßΓá¡ÑΓ  ∩ß¡«,
  333. τΓ« ¿ óÑß∞ ¬«ñ ¼«ñπ½∩ SYSTEM Γ«ªÑ íπñÑΓ óδíα«ΦÑ¡, Γ«  ÑßΓ∞  ¡Ññ«ßΓπ»Ñ¡
  334. ó αѺ¿ñÑ¡Γ¡«⌐ πΓ¿½¿ΓÑ. Ç óÑñ∞ ßαÑñ¿ »α«τÑú« SYSTEM ß«ñÑαª¿Γ  »α«µÑñπαδ
  335. ¿ Σπ¡¬µ¿¿  αáí«Γδ  ß«  ßΓα«¬á¼¿,  Γα¿ú«¡«¼ÑΓα¿ε,  úÑ¡ÑαáΓ«α  ß½πτá⌐¡δσ
  336. τ¿ßѽ, ParamCount, ParamStr, UpCase, Move ¿ FillChar.  Å«ΓÑα¿  óßÑ  ªÑ
  337. ¡Ñ ß½¿Φ¬«¼ óѽ¿¬¿, Γᬠ¬á¬ »α«µÑñπαδ ¿ Σπ¡¬µ¿¿ DEC,  INC,  Addr,  Seg,
  338. Ofs, SizeOf ¿ »α«τ¿Ñ á¡á½«ú¿τ¡δÑ  ¿¼  ¡á  ßἫ¼  ñѽѠ αáºó«αáτ¿óáεΓß∩
  339. ¬«¼»¿½∩Γ«α«¼  ó   áßßѼí½Ñα¡δÑ   ¬«¼á¡ñδ   ¿,   ß½Ññ«óáΓѽ∞¡«,   ¼«úπΓ
  340. ¿ß»«½∞º«óáΓ∞ß∩ íѺ «úαá¡¿τÑ¡¿⌐.
  341.  ÄßΓá½∞¡«Ñ, τΓ« »«¡áñ«í¿Γß∩, »α¿ñÑΓß∩ ¡á»¿ßáΓ∞ ßἫ¼π ¿ »«¼ÑßΓ¿Γ∞  óßÑ
  342. »ÑαÑñ »α«µÑñπα«⌐ Keep ó ú«½«ó¡«¼ ¼«ñπ½Ñ.
  343.  Éáºπ¼ÑÑΓß∩, "Σπ¡¬µ¿Ñ⌐" DSeg Γ«ªÑ  »«½∞º«óáΓ∞ß∩  ¡Ñ½∞º∩,  Γᬠ ¬á¬  ¡á
  344. ßἫ¼ ñѽѠφΓ« ¬«¡ßΓá¡Γá,  ¬«Γ«αá∩  ß«ñÑαª¿Γ  ßΓáα«Ñ  º¡áτÑ¡¿Ñ  áñαÑßá
  345. ¬«ñ«ó«ú« ßÑú¼Ñ¡Γá.
  346.  àßΓ∞ ÑΘÑ «ñ¡« Γ«¡¬«Ñ ¼ÑßΓ«.  Turbo-Pascal  «ßπΘÑßΓó½∩ÑΓ  »α¿ßóá¿óá¡¿Ñ
  347. ßΓαπ¬Γπα  ¿  ßΓ᫬  ß  »«¼«Θ∞ε  »α«µÑñπαδ  Move  ¿º   ¼«ñπ½∩   SYSTEM.
  348. æ½Ññ«óáΓѽ∞¡«, ΓᬫѠ »α¿ßóá¿óá¡¿Ñ  ¡Ññ«»πßΓ¿¼«  ó  αѺ¿ñÑ¡Γ¡«⌐  τáßΓ¿
  349. »α«úαá¼¼δ ¿ Ñú« ß½ÑñπÑΓ ºá¼Ñ¡¿Γ∞ ¡á ó맮ó »α«µÑñπαδ  Move,  ¡á»¿ßá¡¡«⌐
  350. éἿ:
  351.  
  352. Type BigRecord = record
  353.                     A1 : word;
  354.                     S1 : string;
  355.                   ...
  356.                  end;{BigRecord}
  357. Var
  358.    SourceRec,DestRec : BigRecord;
  359.  
  360.  ...
  361.  
  362. procedure Move( VAR Source, Dest; Count : word );
  363. (* ä½∩ Γ«ú«, τΓ«íδ ¡Ñ ¿ß»«½∞º«óáΓ∞ move ¿º ¼«ñπ½∩ SYSTEM *)
  364.  
  365. TYPE
  366.    Bytes = array[1..MaxInt] of byte;
  367. VAR
  368.    I : word;
  369. begin
  370.  
  371.    FOR I := 1 TO Count DO Bytes(Dest)[I] := Bytes(Source)[I];
  372.  
  373. end;{Move}
  374.  
  375. procedure MyRes; interrupt;
  376. begin
  377.  ASM
  378.      mov ax, cs : word ptr [BufferDS]
  379.      mov ds,ax
  380.  END;
  381.  
  382. (* SourceRec := DestRec; {Æᬠó αѺ¿ñÑ¡Γ¡«⌐ πΓ¿½¿ΓÑ ñѽáΓ∞ ¡Ñ½∞º∩!} *)
  383.  
  384.    Move( SourceRec,DestRec, SizeOf( BigRecord ) ); {ìπª¡« ñѽáΓ∞ Γ«½∞¬« Γá¬}
  385.  
  386.  ...
  387.  
  388. end;{MyRes}
  389.  
  390.  
  391.  
  392.  
  393.                       4. Å«ß½Ñß½«ó¿Ñ.
  394.  
  395.  
  396.  éßÑ ªÑ áóΓ«α ¡Ñ¼¡«ú« ßσ¿Γα¿½ - º¡á¡¿Ñ  áßßѼí½Ñαá  ªÑ½áΓѽ∞¡«?  ê¡áτÑ
  397. ¬á¬ αẫíαáΓ∞ß∩ ó Ñú« á½ú«α¿Γ¼Ñ?
  398.  ìÑΓ, ¼«ª¡« ¿ íѺ áßßѼí½Ñαá. è  ßΓáΓ∞Ñ  »α¿½áúáÑΓß∩  ñѼ«¡ßΓαᵿ«¡¡á∩
  399. »α«úαá¼¼á,  ó  ¬«Γ«α«⌐  »«¬áºá¡«  ¿ß»«½∞º«óá¡¿Ñ  óßÑσ  «»¿ßá¡¡δσ  óδΦÑ
  400. Γα嬫ó, á ΓᬪѠñá¡δ ΓѬßΓδ ¡á¿í«½ÑÑ τáßΓ« π»«ΓαÑí¿¼δσ »α«µÑñπα  Move,
  401. Sound ¿ NoSound ñ½∩ ¿ß»«½∞º«óá¡¿∩ ¿σ  ó¼ÑßΓ«  á¡á½«ú¿τ¡δσ  ¿º  ¼«ñπ½Ñ⌐
  402. SYSTEM ¿ CRT. üÑα¿ΓÑ φΓπ  »α«úαá¼¼π  ¿  ¿ß»«½∞ºπ⌐ΓÑ/¼«ñ¿Σ¿µ¿απ⌐ΓÑ  íѺ
  403. «úαá¡¿τÑ¡¿⌐. ìáñÑεß∞, ó αѺπ½∞ΓáΓÑ éáΦ¿ αѺ¿ñÑ¡Γ¡δÑ »α«úαá¼¼δ  ºá¼ÑΓ¡«
  404. »«σπñÑεΓ.
  405.  
  406.  ìπ á ¡á»«ß½Ññ«¬ - Γαáñ¿µ¿«¡¡δÑ  í½áú«ñáα¡«ßΓ¿.  æ»áß¿í«  ºá  Γ«,  τΓ«
  407. ñ«τ¿Γ὿  ßΓáΓ∞ε  ñ«  ¬«¡µá,  ñó«⌐¡«Ñ  ß»áß¿í«  Ñß½¿  ¿ß»«½∞ºπÑΓÑ  ¼«⌐
  408. á½ú«α¿Γ¼ ó ßó«¿σ »α«úαá¼¼áσ ¿ óÑασ í½áú«ñáα¡«ßΓ¿  -  Ñß½¿  ñáñ¿ΓÑ  ¼¡Ñ
  409. º¡áΓ∞, τΓ« «¡ éá¼ »α¿ú«ñ¿½ß∩.
  410.  
  411.  æΓáΓ∞∩ ¡á»¿ßá¡á  áóΓ«α«¼  á¡Γ¿ó¿απß¡«ú«  »á¬ÑΓá  é¿απß¡δ⌐  ï«¬áΓ«α  ¿
  412. ¡Ñ߬«½∞¬¿σ »α«úαá¼¼«¬ ºáΘ¿Γδ Σá⌐½«ó «Γ ºáαáªÑ¡¿∩, á ñ¿ß¬«ó  «Γ  »«ατ¿.
  413. é φΓ¿σ »α«úαá¼¼¬áσ ∩ ¿ß»«½∞º«óá½ «»¿ßá¡¡δÑ óδΦÑ ¿ñÑ¿.
  414.  
  415.  ùΓ«íδ ßó∩ºáΓ∞ß∩  ß«  ¼¡«⌐,  óδ߬áºáΓ∞  ßó«¿  ºá¼Ñτá¡¿∩  ¿  »«ªÑ½á¡¿∩,
  416. »«½πτ¿Γ∞  ßóѪπε  óÑαß¿ε  ï«¬áΓ«αá  ¿  Ñú«  πΓ¿½¿Γ,  ºó«¡¿ΓÑ  »«  Γѽ.
  417.  
  418.                  (8-044) 266-70-28 (αáí«τ¿⌐ ΓѽÑΣ«¡)
  419.  
  420. ¿½¿ »¿Φ¿ΓÑ »« áñαÑßπ:
  421.  
  422.             252142 è¿Ñó-142, π½. æѼáΦ¬«, ñ. 10, ¬ó. 16
  423.                         ÿÑσ«óµ«óπ Ç½Ñ¬ßá¡ñαπ ïεñó¿ú«ó¿τπ
  424.