
                  3.    

                  MS-DOS
                  MS-DOS
                  ணࠬ
                 㭪 4Bh - 㧪  믮 ணࠬ
                 ४祭 ⥪  ४祭 ⥪
                   १  ⨢ 
                 REMOVE - ਬ ⥣஢ ணࠬ
                 祭

               ।饩    뫨 祭 ।⢠ ᮧ ணࠬ
         MS-DOS   ࠧ    ஢.   ᬮਬ
          ணࠬ MS-DOS   । MS-DOS.   ⮬   
           ᭥  ⥬,  뫠  ।騥
         , ⭮ 㤥  : 䨪 ணࠬ-
          ᥣ,  ࠡ  ।  MS-DOS,   堭,
         ᯮ㥬  㧪 ணࠬ MS-DOS.  祭  
         堭  ⠭ ணࠬ,   १묨 - ⥬,
         ࠧ   4  㦤 襭  ⠢  -
           १  ணࠬ  (TSR  -  terminate and stay resident
         programs).

                                    MS-DOS

              ⮩ ᯮᮡ  ।  㭪樮஢ MS-DOS
         ⮨  ᬮ७ ଠ  MS-DOS,  ।-
          ᢮ ࠭祭    믮塞    -
           ᮡ 楫.  ᬮ  ⢨  ।-
          MS-DOS  ⤥ ଠ⠬  ,  ஬  ୮
         ⠭⮢  ""   ᫥⥫쭮 ਭ⨥ ᯥ稢-
           ଠ⮬  -䠪.

                          ଠ 䨧᪮  MS-DOS

             MS-DOS 뫠 ࠧࠡ⠭  ன 業ࠫ쭮 
         (CPU) 8086/8088,   ᮢ 㬬  ꥬ
         1 . 筮 ᯮ짮  ࠧ饭 ⮩  
          .3-1.  10 ᥣ⮢ ("᪮"  64 ) ⮩ -
          ⭮   짮⥫.   ,  ꥬ  640
         ,    ன ᯮ ᠬ MS-DOS  ਪ ணࠬ
         짮⥫.  ⠢訥  6  ᥣ⮢,  ⠢騥     㬬
         384 , 뢠  ⥬   १ࢨ  -
         짮 ROM-BIOS (ﭭ 饥  ன⢮  ()-
           ⥬  -뢮)     裡  㣨 ⠬ 
         ⥬.  ⨬,  .3-1 ⥫쭮 頥 ᯮ짮
         ⥬  .  ⢨⥫쭮,   ⨯ ,
          ᯮ       楫,  , 㤥
         ᬠਢ ⮫쪮  奬.

                         塞  ७ 

               MS-DOS 뫨 ࠧࠡ⠭   業ࠫ
         . ࠫ  80286  80386,   -
           塞 । 㥬 ,  
         ⥬ ࠧ  .  짠  ⮣,  MS-
         DOS   ᪮쪮- ⮢  ⮩ ⥫쭮 ?
                           
                                      - 3-2 -
                         ᯮ짮 
                    FFFFF .------------------------------------------
                          |      ⥬       |     ^       ^
                    F0000 |-------------------------|     |       |
                          |  ᯮ ⥬  |     |       |
                    E0000 |-------------------------| 384    |
                          |  ᯮ ⥬  |  .  |
                    D0000 |-------------------------|     |       |
                          |  (Video RAM) |     |       |
                    C0000 |-------------------------|     |       |
                          |       䨪 EGA       |     V       |
                    A0000 |-------------------------|-------      |
                          |       짮⥫      |     ^       |
                    90000 |-------------------------|     |       |
                          |       짮⥫      |     |       |
                    80000 |-------------------------|     |    1 
                          |       짮⥫      |     |       |
                          |-------------------------|     |       |
                          |       짮⥫      |     |       |
                    60000 |-------------------------| 640    |
                          |       짮⥫      |      |
                    50000 |-------------------------|짮⥫ |
                          |       짮⥫      |     |       |
                    40000 |-------------------------|     |       |
                          |       짮⥫      |     |       |
                    30000 |-------------------------|     |       |
                          |       짮⥫      |     |       |
                    20000 |-------------------------|     |       |
                          |       짮⥫      |     |       |
                    10000 |-------------------------|     |       |
                          |  ᯮ ⥬  |     V       V
                    00000  ------------------------------------------
            .3-1. ⠭ ଠ  IBM PC/XT/AT  MS-DOS

             ।⢥ ,    設⢥ 砥  -
         ⥫쭠  "७  " (᪮  ࠥ 
         ࠭  1 )    ᯮ짮    ᥢ
            饬 ,  㣮 ⨯ ⥫쭮  MS-
         DOS,  뢠 "塞 " (⮬,   "-
         " ᭮ । MS-DOS  640 ).
              MS-DOS ᨨ 3.3   ࠭ ᨩ த -
           㯭   ࠧ.  ࢠ  ᯥ䨪
         塞    뫠  ࠧࠡ⠭ ᮢ⭮ ଠ "",
         "⥫"  ""  뢠 LIM  EMS  ᨨ  3.2  (Limit
         Expanded Memory Specification - ।쭠 ᯥ䨪 -
          ).  ᪮쪮     "⮭-",  "ਬ"  
         ""  ࠧࠡ⠫  襭  ⠭  AQA  EEMS (the Enhanced
         Expanded Memory Specification - 襭 ᯥ䨪 -
          ).  "", "⥫"  "" ᮥ -
         訥 ஭ AQA EEMS  LIM EMS ᨨ 4.0.  ⥬ EMS -
               ( ᮥ⥫쭮     ७) 
           襭    EMM  (the   Enhanced   Memory
         Manager)  -  ⠭ ࠩ ன⢠.   ⠭
         㭪権 EMS १ࢨ 뢠 MS-DOS  ஬ 67h. MS-DOS
         ᨨ 4.0  ,    樮 ⥬,  ন
         ⠭ LIM  EMS  ᨨ  4.0.    । 
         ந⥫  ந⥫ .  ணࠬ  ᯥ祭
         EMS  MS-DOS  ᨨ 4.0 ⮨  ⠭ ࠩ -
         ன⢠,  , 䠪᪨,  ࠩ ன⢠ EMS  ᮢ-
         ⨬ ᮥ  ।,    

                                      - 3-3 -
         ਬ塞 樮 ⥬.
             塞     १⮬     ।
         MS-DOS ⮩稢 ࠤ権 ᯮ짮  ࠭筮    
          樨 .    ⮬ 室 让 ࠧ -
         ,    ᭮ ࠭⢠ , "⮡-
         " 묨 ﬨ   쪨 ࠧ ,  -
         騥  ᭮ ࠭⢠ .     ६  
               ᮢ 让 ࠧ  ।-
         ⢥,        ⭮ , -
          롮 ࠭  .
              ᯥ䨪樨 塞  MS-DOS  EMS   -
         ᪠    ⮡ࠦ    16-  ࠧ 
         MS-DOS, 뢠 ࠭栬. ⢥饥 16-⭮ -
         ᭮  ࠭⢮    MS-DOS 뢠 ࠭ ३-
         . ⢮ ন ࠭ ३  ࠧ饭 
           ⥬ MS-DOS   ᨬ  ⨯  -
         㥬 塞 ,  饩 䨣樨 -
         .
              7 饭   EMS,  뢠饩 ⮤ -
         㯠,  ⠭ EMS  .    㦤    ਧ
         ⢮  EMS,    㤥塞    讣  .
         ०  ᥣ  㤥 ᮢ,   ᠬ MS-DOS ᯮ
         ,    筮 ⬥,   EMS  
         ⮡ࠦ   ⠭⭮ ᭮ ࠭⢮   ⮣,
         ⮡  㯭  MS-DOS.  ( ᮮࠦ  ⮬, 
         ᫥騥  ᨨ  MS-DOS   ᯮ짮  EMS -
         ।⢥, ॠ쭮 ८ ࠭  640 ).

                        ᯮ짮  MS-DOS

              ⮬   ⠭,   ⥪饬 ⠭ 䠪-
         ᪨  MS-DOS  640    ᯮ짮  ᠬ
          ਪ묨 ணࠬ 짮⥫.   ⨯ ⥬ MS-DOS
            㤥 । ⠪,     .  3-2.
         ᬠਢ .3-2,  ,  設⢮ ਢ
         ᮢ 㪠 ਡ⥫쭮    ᨨ MS-DOS,  䨧-
         ᪮ 䨣樨 ⥬  権, 㪠뢠 짮⥫ﬨ 
         䠩 䨣樨 ⥬ CONFIG.SYS  AUTOEXEC.BAT.  ஬ -
         , ࠧ ᥣ⮢, 㪠  . 3-2,    -
         ⠡,    ᮮ⢥⢨   ⭮⥫쭮 樥 ࠧ
         ⮢.
              .3-2   ᪮쪮 ⥩,   ॡ ᭥-
         .  ⨬,  ࢠ  COMMAND.COM   奬
           .  㦥     COMMAND.COM?  ,  
         COMMAND.COM 㦠   ⤥ .  , ࠧ-
         饭  ࠩ஢ ன, ࠭   ﭭ 
         뢠 १⭮ .   ⢥砥  ४⭮
         襭  ணࠬ ࠡ⪨   訡 ணࠬ 짮-
         ⥫,    १ 襭 ࠡ ணࠬ.
           ࠧ   "஦饩 ணࠬ"  믮塞
         ணࠬ 짮⥫.  㣮 ࠧ COMMAND.COM, ࠧ饭 
         孥  奬 ,  ,  ᯥ稢
         䥩 짮⥫  MS-DOS.   뢠 १-
         ,  ⮬   ।⠢ ⮫쪮 ⮣,   믮-
          ணࠬ 짮⥫,   ணࠬ 짮⥫ -
         ⠥ 㧨  ணࠬ.


                                      - 3-4 -
                         ᯮ짮 
                     0000 .-----------------------------------------
          設 -|      COMMAND.COM      |      ^      ^
           짮⥫  |-----------------------|      |      |
                           |                       |      |      |
                           | १⭠  |ᯮ |
                           |       ணࠬ       | ணࠬ |
                           |                       |      |      |
                           |-----------------------|      |      |
                           |  ணࠬ |      V      |
                           |---------------------------------    |
                           |      COMMAND.COM      |          
                           |-----------------------|       짮⥫
                           |   ࠩ ன  |        (ᨬ
                           |-----------------------|         640 )
                           |       MS-DOS    |             |
             10000 - 14000 |-----------------------|             |
                           |                       |             |
                           |       MS-DOS      |             |
                           |                       |             |
             08000 - 0A000 |-----------------------|             |
                           |     䥩 BIOS    |             |
                     00040 |-----------------------|             |
                           |    뢠  |             V
                     00000  -----------------------------------------

               .3-2. ᯮ짮  짮⥫ MS/PC-DOS

         १⭠   ࠡ뢠 ७  MS-DOS (DIR,
         COPY,  SET  .)  ᮤন 稪 ணࠬ.   ᯮ
           㧪  ணࠬ   饭  COMMAND.COM ( ⢥
          譨 )    ணࠬ 짮⥫.  -
           ⮩  㤥 ,   ணࠬ  ᯮ-
             㧪 㣨 ணࠬ   ४-
          ணࠬ.
              .3-2,  祭  " ணࠬ",  -
         ন १ ணࠬ,  蠥  ⠢塞  
         (TSR),  ⠪ , ਬ, ணࠬ "Borland's Sidekick". -
         饭 ,    .3-2, ਬ  TSR, -
         㦠  䠩 AUTOEXEC.BAT,  ।⢥  樠-
         樨 ⥬.   4 ணࠬ TSR ᬠਢ  -
         ஡.
              "ࠩ ன" ⭮  ⠭ ࠩ-
         ࠬ ன,  ..  ⥬ ࠩࠬ,  㪠뢠  -
           DEVICE =  䠩 CONFIG.SYS.  ⠭ ࠩ-
          ன  ।⮬ ᬮ७   6. ࠩ
         ன, 砥  㬮砭  ਬ塞  ⥬, -
           ࠧ "䥩 BIOS",    ᯮ  ६
         㧪  樠樨 ⥬ MS-DOS.
             " MS-DOS" -  ࠧ MS-DOS,   ࠡ뢠 ࠧ-
           㭪樨  MS-DOS,  ⠪, ਬ,  㭪 뢠
         21h.  ࠧ  "⮬"  ணࠬ 짮⥫
          COMMAND.COM  ࠧ묨 ࠩࠬ ன,   ⠪ -
         묨 ।⢠.
              " 뢠" ᮤন  ᠭ  256  ஢
         뢠 ⥬.
             ⠢  -  "१⭠     ணࠬ"

                                      - 3-5 -
         (TPA). ( TPA 室   ६  樮  ⥬
         CP/M  -  த⥫쭨 MS-DOS).   ,  㤠 㦠
         ணࠬ 짮⥫,  ன   㤥  .
              ஬  ᫥ .3-2  ᮢᥬ 筮 ࠦ ⢨-
         ⥫ .    ,   ,  ᢮
         ᮡ⢥  ,, ,  ,  
            .3-2,    ᢮ ⤥  . -
         ᬮਬ ᭠砫   ஡,   ⮤  MS-DOS
          ࣠樨 ᢮ ᮡ⢥ ⥩ TPA.

                               窨  MS-DOS

             ࠢ  MS-DOS 稭    㧪  MS-DOS.
            MS-DOS  ᢮,   ।, -
             ࠢ  (MCB - memory control block). 
          ࠢ,    .3-3,    ⨯  
         ࠧ      ணࠬ ( ),   
         .
              ⨯  ࠢ   楯窠 ,
         ⨯  ண   4Dh,     楯窨 - ⨯ 5Ah.  
          ࠭  ࢮ   MCB.
             騥         MCB  ᫮,  ஥
            .  祭   㪠뢠,
           ।  ᢮.  ᫨   㫥-
         ,   ,     ।.    ᫮  ᮤন
         䨪    (PID - process identifier). PID
           짮⥫ 砥    ᥣ, ⮣
           ᥣ ணࠬ 䨪 (PSP - program segment prefix)
          .
             ⢥     MCB  ᫮, ஥ ᮤ-
          ࠧ  ,  ᫥饣  ⨬ .   ࠧ
         ࠦ    ࠣ (  16 )   砥 ࠧ
         ᠬ  MCB. ⠢訥 11 ⮢ MCB  ।.
             ᬮ  ,   ᯨ᮪  ࠢ  -
           楯窥 । ,   MCB,   ᠬ ,
           । ,  MCB ⮫쪮 㪠뢠  ।
          .  ୥,    MCB ।⢥ ᫥  
          । ,    ࠢ.  ᫨ MCB  ᮮ⢥-
         騩     ᫥  楯窥,    -
         ।⢥ ᫥ 㣮 MCB   .
             稭   MCB,   ᥣ ᫥饣 MCB   -
         窥  砥  ⥬ ᫮ ࠧ ( ࠣ) ⥪饣
           ⥪騬 ᮬ ᥣ MCB,   1.   ⮬  ᯮᮡ
            ᬮ७  楯窠 MCB,   ⮫쪮  אַ -
         ࠢ. 稭   MCB,  ।  ।-
         饣 MCB.  ⥬  㧭,   室  ?
             㭪 MS-DOS  ஬ 52h (뢠  int  21h)  
         㬥㥬 㭪樥,   頥 㪠⥫  ᯨ-
         ᮪ ७ 祭 MS-DOS.  ⥫  頥    
         ES:BX.   ࠧ । ⨬ ᯨ᪮  ᫮, 㪠뢠 祭
         ES:[BX - 2], 室  ࢮ MCB.  ⮩ 砫쭮 窨
           ।  楯窠 MCB.
              ᯮᮡ  ᯮ짮  ணࠬ SHOWMEM (⮡ࠧ -
         ), ਢ  ⨭ 3-1.


                                      - 3-6 -
                            
                      000:0.---------------------------------------.
                            | 4D |  0008  |  1600  |                |
                      0A01:0|---------------------------------------|
                            |                                       |
                            | । , 楬 - |
                            |         ண  MS-DOS          |
                      2001:0|---------------------------------------|
                            | 4D |  2013  |  0010  |                |
                      2002:0|---------------------------------------|
                            |                                       |
                            | । , 楬 - |
                            |       ண   2013      |
                      2012:0|---------------------------------------|
                            | 4D |  2013  |  0500  |                |
                      2013:0|---------------------------------------|
                            |                                       |
                            | । , 楬 - |
                            |       ண   2013      |
                      2513:0|---------------------------------------|
                            | 5A |  0000  |  7AEC  |                |
                      2514:0|---------------------------------------|
                            |                                       |
                            |  C  ( - MS-DOS).  |
                            |ন ⮪  孥  |
                            |                                       |
                      9FFF:F ---------------------------------------
                     . 3-3.  ࠢ  MS-DOS

         ⨭ 3-1 ᮤন  室 䠩 SHOWMEM.ASM, ⠪  -
           䠩  PCP.INC  (  ᬮਬ ᪮쪮 ஡).
         .3-4 ࠦ १ ࠡ ணࠬ SHOWMEM.  ண-
         ࠬ  ShowMCBInfo   ணࠬ SHOWMEM.ASM ⮡ࠦ ᮤন
          MCB. 楤 main ᮤন   ࠧ饭 砫쭮
          , ᫥ ⪨ show_mem, ᫨⥫ 樨  宦-
          ᫥饣   楯窥.  ⥫    ண-
         ࠬ ShowMCBOwner  ᮢᥬ   ᫠.    ᯮ-
           ⮡ࠦ  ,     -
         ,    ᫥ ࠧ.
             ᬮॢ .3-4,  ᢮ ᪮쪮  -
         ⮢.   ⭮,  㢨,    ணࠬ 㧨 
           १ ணࠬ: RETRIEVE (⠭), MODE
         (०)  SWITCH (४⥫).  .3-4  ⠪ 㢨,
          ணࠬ SHOWMEM  祭 让 뤥   
          - 555 !  ஬ ⮣,   ⠪ 㢨,  
         㦥 ணࠬ   ।     -
         .   ᫥ ⥫⢮    ᭨.


                                      - 3-7 -
         1   SM-ShowMem, Version 1.00  c  Copyright 1988

         2   MCB    Size   Owner  Command Line
             -----------------------------------------------------------
             0A01   08D7   0008   DOS
             12D9   00D3   12DA   [ SHELL ]
             13AD   0003   0000   [ available ]
             13B1   0032   12DA   [ SHELL ]
             13E4   0004   13EA   c:\bin\RETRIEVE.COM
             13E9   00A9   13EA   c:\bin\RETRIEVE.COM
             1493   000F   14A4   S:\MODE.COM\*
             14A3   0017   14A4   S:\MODE.COM\*
             14BB   0010   14CD   c:\ws2000\SWITCH.COM
             14CC   0018   14CD   c:\ws2000\SWITCH.COM
             14E5   0011   14F8   c:\GUIDE\EXAMPLES\SHOWMEM.EXE
             14F7   8B08   14F8   c:\GUIDE\EXAMPLES\SHOWMEM.EXE

             <<<------------- End of Memory Block List ------------->>> 3

             . 3-4. ਬ ⮡ࠦ १⮢ ࠡ ணࠬ
                                     SHOWMEM:

         1 -  ணࠬ   - ShowMem,   1.00,  ᪮
         ࠢ 1988;  2 -  ࠢ ,  ࠧ, , -
          ப; 3 -  ᯨ᪠  .

         ⨭ 3-1. SHOWMEM - ணࠬ ⮡ࠦ   MS-DOS
         ----------------------------------------------------------------

                                  SHOWMEM.ASM
         PAGE    60,132
         ; **** SHOWMEM *************************************************
         ; ShowMem - ⮡ࠦ  ࠢ , ।-
         ;            MS-DOS
         ;  䠩 ᮧ ணࠬ SM.EXE
         ;
         ;*****    *******************************
         ;
         INCLUDE stdmac.inc
         INCLUDE psp.inc
         ;
         BlocMCB EQU 4Dh                     ; ⨯ 楯筮 MCB
         LastMCB EQU 5Ah                     ; ⨯ ᫥ MCB
         FreeMCB EQU 0000h                   ;  ᢮ MCB
         ;
         NameSig EQU 0001h                   ; ᨣ  
         ;
         ; ****   DGROUP () ********************
         ;
         _DATA   SEGMENT BYTE PUBLIC 'DATA'
         _DATA   ENDS
         ;
         STACK   SEGMENT PARA STACK
                 dw      1024 dup (?)        ; ⥪ 2 
         STACK   ENDS
         ;
         DGROUP  GROUP   _DATA, STACK

                                      - 3-8 -
         ;
         ;****     ********************************
         ;
         _DATA   SEGMENT BYTE PUBLIC 'DATA'
         ;
         ; ⮢ ᮮ饭  ⮡ࠦ ଠ  :
         ;
         ; "MCB     Size    Owner    Coommand Line"
         ; "------------------------------------------------------------"
         ; "xxxx    xxxx    xxxx     cccccccc..."
         ; "<<<--------------- End of Memory Block List ------------->>>"
         ;
         $Title  db  CR,LF
                 db  'SM-ShowMem, Version 1.00,  c  Copyright 1988'
                 db  CR,LF,CR,LF
                 db  'MCB    Size   Owner   Command Linr'
                 db  '--------------------------------------------'
                 db  '----------------'
                 db  CR,LF,'$'
         $Space  db  '   $'
         $Free   db  '[ available ]$'
         $DOS    db  'DOS$'
         $shell  db  '[ SHELL ]$'
         $MCBad  db  CR,LF
                 db  '********** Error in MCB Chains : Aborting List'
                 db  ' **********'
         $End    db  CR,LF
                 db  '<<< ************ End of Memory Block List'
                 db  ' ------------ >>>'
         $Crlf   db  CR,LF,'$'
         ;
         ;  
         mcb     STRUC               ;   ࠢ 
                 TypeMCB  db     ?   ; ⨯ 
                 OwnerMCB dw     ?   ;  
                 SizeMCB  dw     ?   ; ࠧ 
         mcb     ENDS
         ;
         _DATA   ENDS
         ;
         ; ****  稭  ணࠬ **************************
         ;
         _TEXT   SEGMENT byte public 'code'
                 ASSUME  cs:_TEXT, ds:DGROUP, es:DGROUP, ss:DGROUP
         ;
                 EXTRN   bin2hex:NEAR ; ⭠筮 ⮡ࠦ
         main    PROC    FAR
                 mov     ax,DGROUP    ; ⠭ ᥣ 
                 mov     ds,ax
         ;
         ; ⮡ࠦ   ᯨ᪠  
                 @DisStr $Title
         ;
         ; 宦 砫 ।  
                 mov     ah,52h       ; 祭 ࠬ஢ DOS
                 int     21h          ;  㪠⥫  ES:BX
                 sub     bx,2         ; 㪠뢠  1-  MCB

                                      - 3-9 -
                 mov     ax,word ptr es:[bx] ; 祭 砫쭮 
                 mov     es,ax
                 xor     di,di        ; ⪠ 
                 cmp     byte ptr es:[di].TypeMCB,BlocMCB
                 jne     bad_chain    ; 室, ᫨  砫 楯窨
         ;
         ;   宦  ⮡ࠦ   
         show_mem:
                 call    ShowMCBInfo  ;  ᮤন MCB
                 cmp     byte ptr es:[di].TypeMCB,LastMCB
                 je      done         ; 室, ᫨  楯窨
                 mov     ax,es        ; ᫥ ᫥饣 
                 add     ax,es:[di].SizeMCB ;  ࠧ 
                 inc     ax           ;  1  ᥡ
                 mov     es,ax        ; 砫  
                 cmp     byte ptr es:[di].TypeMCB,LastMCB
                 je      show_mem     ; த, ᫨ ࠢ ⨯
                 cmp     byte ptr es:[di].TypeMCB,BlocMCB
                 je      show_mem     ; த, ᫨ ࠢ ⨯
         ;
         bad_chain:                   ; 訡  MCB "chains"
                 @DisStr $MCBad       ; 饥 ᮮ饭
                 @DisStr $Crlf
                 mov     al,1         ; 襭  訡
                 @ExitToDOS           ; 襭 ணࠬ
         ;
         done:   @DisStr $End         ; 饥 ᮮ饭
                 @DisStr $Crlf
                 mov     al,0         ; ଠ쭮 襭
                 @ExitToDOS           ; 襭 ணࠬ
         ;
         main    ENDP
         ;
         ; **** ShowMCBInfo *********************************************
         ; ShowMCBInfo ⮡ࠦ , 㥬   ES:DI 
         ;  ࠢ  MS-DOS. ଠ ⮡ࠦ 
         ; .
         ;
         ShowMCBInfo PROC    NEAR
                 mov     ch,04        ; ⮡ࠦ ᫮ 
                 mov     ax,es        ;  MCB
                 call    bin2hex
                 @DisStr $Space
                 mov     ax,es:[DI].SizeMCB ; 易 
                 call    bin2hex
                 @DisStr $Space
                 mov     ax,es:[DI].OwnerMCB ; 
                 push    ax           ; ࠭ 
                 call    bin2hex
                 @DisStr $Space
                 pop     ax
                 cmp     ax,FreeMCB   ;  ᢮?
                 je      is_free      ; , 믮   
                 call    ShowMCBOwner ; , ⮡ࠦ 
                 jmp     Info_Exit
         ;

                                      - 3-10 -
         is_free:
                 @DisStr $Free        ; ⬥   ᢮
         Info_exit:
                 @DisStr $Crlf
                 ret
         ShowMCBInfo ENDP
         ;
         ; **** ShowMCBOwner ********************************************
         ; ShowMCBOwner   ⮡ࠦ  MCB DOS 
         ; ᮮ⢥饩 ப ।. ES:DI 㪠뢠  ⨬
         ; MCB  㫥  .
         ;
         ShowMCBOwner PROC   NEAR
                 push    es           ; ࠭  MCB
                 push    di           ; ࠭  ਡન
         ;
         ; 祭 PID ( PSP),   ⨬  
                 mov     ax,es:[di].OwnerMCB ;  PSP 
                 mov     es,ax
               cmp     es:[di].PSPExitInt,PSPSignature ; ⨬ PSP?
                 je      Owner_PID    ; ,   PID
         ;
         ;  PSP    ஬ DOS
         Owner_DOS:
                 @DisStr $DOS         ;  MS-DOS
                 jmp     Owner_Exit   ;  믮
         ;
         ; 祭 ᥣ ।   PSP
         Owner_PID:
                 mov     ax,es:[di].PSPEnvironment ; , . .।
                 push    ax           ; ࠭ ᥣ ।
         ;
         ; 祭 ࠧ ᥣ ।
                 dec     ax           ; MCB ।
                 mov     es,ax
                 mov     cx,es:[di].SizeMCB ; 祭 ࠧ ।
                 shl     cx,1               ; ८ࠧ ࠣ䮢
                 shl     cx,1               ;  
                 shl     cx,1
                 shl     cx,1
         ;
         ; த ᪠    ES:DI,  CX
         ;  ६ । 蠥 㫥 ⮬.
         ; ᮪ ६ 蠥 㣨 㫥 ⮬
                 cld                  ;  ।
                 pop     es           ; ⠭ ।
                 xor     al,al        ;  祭
         search:
                 repne   scasb        ;   ASCIIZ
                 jne     Owner_DOS    ; ⠭, ᫨ 室  ࠭
                 scasb                ;  ᯨ᪠ ப
                 jne     search       ; த, ᫨ 
         ;
         ; ஢ઠ  "", த饩 () 
                 mov     si,di        ; ।  SI
                 push    ds           ; ࠭ ᥣ ப
                 push    es           ; । ES  DS
                 pop     ds

                                      - 3-11 -
                 lodsw                ; ⥭ ।饣 ᫮
                 cmp     al,NameSig   ; ஢ઠ ⢨⥫쭮 
                 je      show_name    ;  ⨬
         ;
         ;  ⢨⥫쭮      SHELL
                 pop     ds
                 @DisStr $Shell       ;    shell
                 jmp     Owner_Exit
         ; ES:DI 㪠뢠  ⨬ (0 襭)  
         show_name:
                 lodsb                ; ⥭ ᨬ,
                 cmp     al,0         ; ६ ஢ઠ
                 je      Owner_POP    ; 砭, 
                 @DisStr al           ; ⮡ࠦ
                 loop    show_name
         Owner_Pop:
                 pop     ds
         Owner_Exit:
                 pop     di
                 pop     es
                 ret
         ShowMCBOwner ENDP
         ; *****   :   **************************
         ;
         _TEXT   ENDS
                 END     main
                                      ; PSP.INC
         ;***************************************************************
         ;    PSP
         ;***************************************************************
         ;
         PSPSignature   EQU   020cdh  ; ᫮, 稭饥  PSP
         ;
         ProgramSegmentPrefix STRUC
         PSPExitInt     dw    ?       ; 뢠 室 int 20h
         PSPMemTot      dw    ?       ; 設 
         PSPResvr1      db    ?
         PSODOSCall     db    5 dup (?) ; 맮 MS-DOS
         PSPTerminate   db    ?       ;  襭
         PSPControlC    dd    ?       ;  control-C
         PSPCritical    dd    ?       ;  ᪮ 訡
         PSPParent      dw    ?       ;  PSP
         PSPHandleTable db   20 dup (?);⠡ ⥫  㬮砭
         PSPEnvironment dw    ?       ;  ।
         PSPStack       dd    ?       ; 砫 祭 ⥪
         PSPHandleSize  dw    ?       ; ࠧ ⠡ ⥫
         PSPHandlePntr  dd    ?       ;  ⠡ ⥫
         PSPResvr2      db   24 dup (?)
         PSPDOSInt      db    3 dup (?) ; 뢠 21h  
         PSPResvr3      db    9 dup (?)
         PSPFCB1        db   16 dup (?) ;  ࠢ 䠩
         PSPFCB2        db   16 dup (?) ;  ࠢ 䠩
         PSPResvr4      db    4 dup (?)
         PSPCommandLen  db    1       ;   ப
         PSPCommandBuf  db  127 dup (?) ; ⥪  ப
         ProgramSegmentPrefix ENDS
         ________________________________________________________________

                                      - 3-12 -

                          樮 । ணࠬ

              㧪  ணࠬ   MS-DOS ᥣ ᮥ 
         砫 ணࠬ  樮 । (   "।"),
              .  .3-4   
          让 ,   ᮮ⭮    ணࠬ.
          । ணࠬ ᮤন ᮡ⢥  樮 -
          MS-DOS.  । MS-DOS  ।⠢ ᮡ ,    ன
             PATH    (),   COMSPEC   (ᯥ䨪   䠩
         COMMAND.COM)  PROMPT (ਣ襭)    묨 ६묨,
         砥묨   SET (⠭). 饩 ମ ६
         । :  NAME = ப .  ଠ  ।  ਢ  
         ਬ,   .3-5.
              .3-5    ,        ।
         ।⠢ ᮡ ப   ASCII  (American  Standard  Code
         for  Information  Interchange  - ਪ᪨ ⠭  
          ଠ樥),  蠥 㫥 ⮬.  ( ⠭
         ମ ""  ASCIIZ).   ᯨ᮪ ⮢ -
         稢     㫥 ⮬,    .3-5  -
         ⢥ ᥤ쬮 .  , ।騥 ⮬ થ
         " ᯨ᪠", ⮡ࠦ 直 ࠧ  ᯮ짮 
         SET.     ᥡ ।⠢   ,  ᫥騥  ᫥
         થ " ᯨ᪠"?
             㬥㥬  MS-DOS ᨨ 3    ᫥
         ᨩ  ⮨  ⮬,   直 ࠧ  ᪥   -
          COMMAND.COM  ।⢥,    ⢥   㭪
         EXEC (믮),    頥   । .
          .3-5 ᫥   ।   " ᯮ㥬"
           ⨬ 㬥㥬  .   
         । ᫮ 0001h.   ᮤন ᮡ⢥      
              ଠ ASCIIZ.   .3-5  㢨-
         ,    । ⭮   SHOWMEM.
                ⮢,   ।⠢  .3-5,  
         騩 ࠧ  ।.  ⫨稥  ᭮ । MS-DOS, 祩
         ࠧ  ࠢ   ࠬ,  ⠭ 
         䠩 CONFIG.SYS,  ࠧ  ।    ।  
         ६  㧪  ணࠬ  ⥬ 饭   ⮫쪮 ⥪饩
          ।.
             ࠢ  ਬ ⮡ࠦ SHOWMEM  .3-4 800-
         ࠧ । DOS (ன      "SHELL")    ।
         RETRIEVE   SHOWMEM  64  272 , ᮮ⢥⢥. ᬮ 
         ,   DOS  १ࢨ஢ 800 ,  㧪 RETRIEVE
         ।  䠩 AUTOEXEC.BAT । ᮤন ,  祬 64 .
         ᫥ 襭 䠩 AUTOEXEC.BAT ⠭ PATH  PROMPT  -
          㣨 ६, ।  㢥 ਡ⥫-
           200 .
               稭 祭 ᮡ⢥  । 
         ᮬ    ᮧ.  ࢠ -  㬥襭 ⭮
         ⮣,   㤥 ᯮ祭 ।   - -
          ॡ, ᫨   - 䠩 COMMAND.COM. 
         易  ⥬,   -  ࠢ ।, -
         । ஦ ,  ,  ᢮ ।, 
         - ࠢ  ஦  . 
         ⮩ ⥬  ୥ ᭮,  㤥 ᬠਢ 㧪 
         믮 ணࠬ.   ⠪ ୥    襭  
         讣 ࠧ   SHOWMEM.     ஡.

                                      - 3-13 -
         .------------------------------.
         | COMSPEC = C:\COMMAND.COM\* | 0 |
         |----------------------------------------------.
         | INCLUDE = C:\msc\*include;c:\masm\*include\* | 0 |
         |-----------------------------------------------
         | LIB = c:\msc\*lib | 0 |
         |-----------------------
         | ECHO = OFF | 0 |
         |-------------------.
         | PROMPT = $p$g | 0 |
         |-------------------------------------------------------------.
         |PATH = C:\DOS;C:\BIN;C:\BAT;C:\UTILS;C:\MASM\*;C:\WIN;C:\WS| 0 |
         |--------------------------------------------------------------
         | 0 |
         |-------.
         | 0001h |
         |-----------------------------------.
         | C:\GUIDE\EXAMPLES|SHOWMEM.EXE | 0 |
         |------------------------------------
         |  ᯮ㥬  |
         |                  |
         |/\/\/\/\/\/\/\/\/\|

                                .3-5.  ।

           ୥   ᫥    ᭮  ᢥ  
         ᬠਢ ᠬ.

                                   MS-DOS

              砫    ᠭ ⮣,   ࠭⢮ -
          ⥬ MS-DOS ଠ  ࠧ  MS-DOS,  BIOS  
         ⥬ 㭪権  ।.  ⥬  ,   ࠧ-
         ,  ࠢ塞 MS-DOS, ࣠  ࠧ , -
           १    ணࠬ   TPA (transient program
         area).  ⠪ 㢨,  TPA ࠢ ।⢮ ᯮ짮-
             ࠢ ,      砥
           :   ।  ,   㤥 뢠
         " ".     ३    
          ᬮ ⤥ ,   砥  ᥡ -
          MS-DOS.

                             ⥪  MS-DOS

             .2-3    2   ।⠢  ७ -
           MS-DOS  ᮢ ⨯ .EXE   .COM.    
          ꥤ   ⥬,   㦥 稫,  ।⠢ 
           ⠫쭮 ࠧ  MS-DOS.    ।-
         ⠢   . 3-6.
              .3-6     ⠫,      室
         ᬮ.    筥  ᥣ ணࠬ 䨪  PSP
         (program segment prefix).

                            ணࠬ 䨪

              ணࠬ 䨪 (PSP),    2, -
            ஬ ᫥ "ࠥ㣮 "  MS-DOS.

                                      - 3-14 -
          ᥣ PSP ᯥ稢 䨪   㦨 
         ⢥  䨪    .  ⠭
         ᥣ  砫   PSP ⠪ 㦨  ⢥  "-
         "  讣 ⢠ 業 ଠ樨.
               㬥 PSP ।⠢   ।⠢: 
         ᪮ ࠦ  .3-7;  ஡ ᠭ  ⠡-
          3-1 ,  ,  ᠭ  ஠ᥬ MASM
         STRUC  PSP.INC, ਢ  ⨭ 3-1. 㭮  -
          ண ࠧ饭 ଠ樨, ⠡ ᯥ稢 㡨-
          ଠ樨,  ⨭ 뢠 ᬥ饭, 室  -
         짮  ணࠬ 짮⥫.
                 .3-7  ⠡ 3-1 뢠 
         ଠ樨,     ணࠬ.  , -
           PSP ॡ ࠧ 襣 ᭥.

             .COM                .EXE

         |\/\/\/\/\/\/\/\/\/|                        |\/\/\/\/\/\/\/\/\/|
         |COMMAND  ।-|    ।騩      |COMMAND  ।-|
         |  饩 ணࠬ |                        |  饩 ணࠬ |
          ------------------                          ------------------
         .------------------.                        .------------------.
         ||  4D/PSP/size/  ||        MCB ।       ||  4D/PSP/size/  ||
         ||----------------||                        ||----------------||
         ||   = ப  ||        ।       ||   = ப  ||
          ------------------                          ------------------
         .------------------.                        .------------------.
         ||  5A/PSP/size/  ||       MCB      ||  4D/PSP/size/  ||
         ||----------------||                        ||----------------||
         ||  PSP ணࠬ ||            ||  PSP ணࠬ ||
         || - - - - - - - -||                        || - - - - - - - -||
         ||  ணࠬ  ||                        ||  ணࠬ  ||
         ||         ||                        || - - - - - - - -||
         || - - - - - - - -||                        || ⥪  ||
         ||                ||                         ------------------
         ||                ||                        .------------------.
         ||" ᥡ,  -||          ᢮ MCB |   5A/0000/size/  |
         ||       "     ||                        |------------------|
         ||                ||                        |                  |
         || - - - - - - - -||                        |                  |
         ||     ⥪       ||                        |   㯭    |
         ||----------------||                        |   ᯮ짮  |
         || 㯭  ||  ᯮ㥬  |                  |
         ||  ᯮ짮 ||                        |                  |
         |/\/\/\/\/\/\/\/\/\|                        |/\/\/\/\/\/\/\/\/\|

                               孨  
           -------
          ||     || - , ।塞/ ᮬ
           -------

                    .3-6. ⥪  MS-DOS  

                                襭 PSP

              3-1  뢠   " 襭",  ࠭ 
           0Ah  15h PSP.  㦥 﫮 ,  :

                                      - 3-15 -
          襭  ணࠬ,    室     
         Control-Break   室  ᪮ 訡 롨 
         ⢨⥫ ஢ 뢠, ࠧ頥  int 22h,int 23h
          int 24h. ⮡ ⢮   ⥬  ६ -
         樨 襭 (⠪ , ਬ, 室  ७ -
         뢠 CONTROL-BREAK/CONTROL-C)  ணࠬ ॡ 
         ᭮  뢠.   ᤥ, ᯮ  -
         祭    ᮢ 㭪樨 "⠭ " (Set
         Vector -  25h)  " " (Get Vector -  35h).

                            ⥫ 䠩 PSP

              ࠡ⪮  䠩   ᥣ ணࠬ 䨪 易
          "㬥㥬" :  ⠡ ⥫, 㪠-
         ⥫ ⥫  稪 ⥫.   㢨 ⮬,   -
           ⭮⥫묨.
              ⠡  ⥫ ᮤন 㪠⥫   ⠡,
         ਭ  ᪮쪮   , ࠧ ன  -
          ⥫.   ⮢  ⮩ ⠡  -
         ஬ ⥫,         䠩  
         ன⢠.

                                                          3-1
                     ন ᥣ ணࠬ 䨪
         ________________________________________________________________
         ⭠|
         -----------------|                  ন
         ᬥ饭| ࠧ |
         ________|________|______________________________________________
            00   |    2   | 뢠 int 20h. ন  -
                 |        | 뢠 int 20h ( CD 20 - ⭠-
                 |        |  祭). ॢ襥 ᯮ짮.
                 |        | ணࠬ  襭  ᯮ-
                 |        |  㭪 4Ch, 뢠 int 21h.
         ________|________|______________________________________________
            02   |    2   | 設 . ন  ᥣ, ᫥-
                 |        | 饣   ணࠬ.   
                 |        |  ன  DOS (⠪  000) 
                 |        |  ᫥饣 㯭  ࠢ
                 |        | .
         ________|________|______________________________________________
            04   |    1   | १ࢨ஢.
         ________|________|______________________________________________
            05   |    5   |  맮 ᯥ 㭪権 MS-DOS. -
                 |        | ন  室  ᯥ 㭪権
                 |        | MS-DOS  ᯮ짮  ணࠬ ⨯
                 |        | CP/M. ॢ襥 ᯮ짮. ணࠬ
                 |        |   맮 MS-DOS ᯮ짮 -
                 |        | 뢠 int 21h.
         ________|________|______________________________________________
            06   |    2   | 㯭 .  ᬥ饭  -
                 |        |  ⠪ ᮤন ⢮ ⮢, -
                 |        | 㯭   ᥣ ணࠬ.
         ________|________|______________________________________________
            0A   |    4   |  襭 ணࠬ.   -
                 |        | 뢠 int 22h (IP,CS),  ஬ ।-

                                      - 3-16 -
         ________________________________________________________________
         ⭠|
         -----------------|                  ন
         ᬥ饭| ࠧ |
         ________|________|______________________________________________
                 |        |  ࠢ,   Control-Break
                 |        |  Control-C.
         ________|________|______________________________________________
            0E   |    4   |  室 Control-Break.   -
                 |        | 뢠 int 23h (IP,CS),  ஬ ।-
                 |        |  ࠢ,   Control-Break
                 |        |  Control-C.
            12   |    4   |  室  ᪮ 訡.  -
                 |        |  뢠 int 24h (IP,CS),  ஬
                 |        | । ࠢ,   ६ -
                 |        | ⪨ 㦨 ᪠ 訡.
         ________|________|______________________________________________
            16   |    2   | 䨪 ணࠬ ᥣ . 
                 |        | ᥣ  ᥣ ணࠬ -
                 |        |  .  ᮢ,   -
                 |        | ,   ⥪饣 PSP.
         ________|________|______________________________________________
            18   |   14   |  ⥫ 䠩. ন 20 -
                 |        |  ⮢ "ࠡ⪨" (஢)  ⠡-
                 |        |  䠩 ⥬. 묨 5   :
                 |        | STDIN, STDOUT, STDERR, AUXIO  LSTOUT. 
                 |        | ⥪   ஡ ᭥.
         ________|________|______________________________________________
            2C   |    2   |  ।.  ᥣ  । -
                 |        | .
         ________|________|______________________________________________
            2E   |    4   |  ४⥫ ⥪. ᯮ 
                 |        | ࠭ ⥪ ᥣ   㪠-
                 |        | ⥫ (SS:SP),   믮 -
                 |        | 樨  ⥪ MS-DOS.
         ________|________|______________________________________________
            32   |    2   | 稪 ⥫. ᨬ쭮 ⢮
                 |        | ⮢, ᪠  ⠡ ⥫
                 |        | 䠩.  㬮砭 ਭ 祭 20.
         ________|________|______________________________________________
            34   |    4   |  ⠡ ⥫. 㪠⥫ 
                 |        | ⠡ ⥫ 䠩. 㬮砭  ⥪-
                 |        | 饬 PSP ਭ 祭 ᬥ饭 18 (-
                 |        | ⭠筮 祭).
          _______|_______________________________________________________
            38   |   18   | १ࢨ஢.
         ________|________|______________________________________________
            50   |    3   | 뢠 ᯥ 㭪権. ন 
                 |        |  뢠 int 21h 맮 ᯥ -
                 |        | 権 MS-DOS, ᫥饣  室 far RET.
         ________|________|______________________________________________
            53   |    2   | १ࢨ஢.
         ________|________|______________________________________________
            55   |    7   | ७  ࠢ 䠩.  -
                 |        | ७   #1 ࠢ 䠩. -
                 |        | ॢ襥 ᯮ짮. ணࠬ  -
                 |        | 짮  ⥫ 䠩.  -
                 |        | 祭  ஡ ଠ樨  FCB (File

                                      - 3-17 -
         ________________________________________________________________
         ⭠|
         -----------------|                  ন
         ᬥ饭| ࠧ |
         ________|________|______________________________________________
                 |        | control block -  ࠢ 䠩) -
                 |        |   㪮⢠  MS-DOS).
         ________|________|______________________________________________
            5C   |   10   |  ࠢ 䠩  1. ন -
                 |        |   FCB #1. ॢ襥 ᯮ짮-
                 |        |    १  ਢ  ࠧ-
                 |        |  FCB #2    ப. 
                 |        |  䠩  ন.  ⮣
                 |        | ணࠬ  ᯮ짮 ⥫   䠩-
                 |        | .  祭  ஡ ଠ樨
                 |        |  FCB,   㪮⢠  MS-DOS.
         ________|________|______________________________________________
            6C   |   10   |  ࠢ 䠩  2. ন -
                 |        |   FCB #2. ॢ襥 ᯮ짮-
                 |        |    १  ਢ  ࠧ-
                 |        |  ࠬ஢  ப.  -
                 |        |  ணࠬ  ᯮ짮 ⥫
                 |        | 䠩.  祭  ஡ -
                 |        | 樨  FCB,   㪮⢠ 
                 |        | MS-DOS.
         ________|________|______________________________________________
            7C   |    4   | १ࢨ஢.
         ________|________|______________________________________________
             80  |   80   | ᪮  ।, 砥 
                 |        | 㬮砭. ४뢠  ᯮ짮
                 |        | ப ⥪  ப.
         ________|________|______________________________________________
            80   |    1   |   ப.  ⥪⮢ -
                 |        | ,  뫠 ࠭ ᫥  
                 |        | ணࠬ,   ७祭 ᨬ-
                 |        |   ࠬ.
         ________|________|______________________________________________
            81   |   7F   |   ப. ⮢ ப, -
                 |        |  뫠  ᫥   ணࠬ.
                 |        |  ७祭 (<  >)   ᮮ⢥-
                 |        | 騥  䠩  ⮩   -
                 |        | , .. ७祭 ஧筮  ਪ-
                 |        |  ணࠬ.
         ________|________|______________________________________________

             ⥫ ࠭ ᢮     ⠡  䠩
         ⥬. ᯮ㥬   ⠡  ⭠-
          祭 0FF.   ࠡ⮪  ⠡  ⥫
         䠩 १ࢨ஢  ⠭묨 ன⢠:  STDIN (⠭-
          ),  STDOUT (⠭  뢮),  STDERR  (⠭⭠
         訡),  AUXIO (ᯮ⥫ -뢮)  LSTOUT (⠭
         뢮  )  뢠  ᪥ .  
         뢠  ࢮ砫쭮 㫥 祭.
             .3-8 뢠  ﭨ ⠡ ⥫  䠩, ਭ-
         ⮩  㬮砭,  ࠧ   ᫥ ᯥ譮  䠩 myfile
         ( 䠩).    ⥫   䠩, ਭ  㬮砭,
          ⨡⮢  ⠡楩,   ࠧ饭  PSP  ᬥ-
          18 (⭠筮 祭).        

                                      - 3-18 -

          ⠡ ⥫    ᪥ .  裡    ⥬,
              ࠡ⮪  १ࢨ஢  ⠭묨 -
         ன⢠, ⠥ ⮫쪮 15 ࠡ⮪, 㯭  䠩 
         㣨 ன.
         .00h-----------02h-------------------05h-----------------------.
         |int 20h      |設   | 00 |  맮 MS-DOS     |
          -------------|0Ah----------------------0Eh--------------------|
                       | 襭        | 室 Ctrl-Break|
                       |12h---------------------|16h--------------------
                       |..  . 訡|PSP |
         .18h-------------------------------------------------|
         | ⥫ 䠩                             |
         |----------------------------------------------------|
         | ⥫ 䠩 (த)               |
         |-------------------------------2Ch-----2Eh--------------------.
         | ⥫ 䠩()|।  |砫  ⥪  |
          --------------32h-------------|34h----------------------------
                       |稪 . |⥫ ⠡..|
         .38h-------------------------------------------------|
         |१ࢨ஢  ( 40 )          |
          ----------------------------------------------------

         .50h-----------------53h----------55h----------------.
         |㭪 int 21h    |१.   |७ FCB     |
         |----------------------------5Ch---------------------|
         |७ FCB(த)| ࠢ- 䠩 #1 |
         |----------------------------------------------------|
         | ࠢ 䠩 #1 (த)             |
         |----------------------------6Ch---------------------|
         | ࠢ 䠩 #1  | ࠢ- 䠩 #2 |
         |----------------------------------------------------|
         | ࠢ 䠩 #2 (த)             |
         |----------------------------7Ch---------------------|
         | ࠢ 䠩 #2  |१ࢨ஢ .  |
         |80Ch-81Ch-------------------------------------------|
         |. |  ( 127 )                 |
          ----------------------------------------------------

                              .3-7.  PSP

              .3-8 祭 ⥫, 頥  ᯥ譮 -
          㭪樨 OPEN,  ࠢ 0005, ஥ 砥,  䠩 
           myfile 祭 ⮩  (室)  ⠡  -
           䠩 .   饭 ⮩ 室 ᮤন 祭
         03,  ஥ 砥,   䠩 myfile   祭  ⢥
         室    ⠡ 䠩 ⥬.  .3-8 ⠪  -
         짮     ⥫   楫    祭
             ⮣  室  ⥬ ⠡ 䠩 ᪮쪨
         ࠡ⮪.  ᨬ쭮 ⢮ 室    ⥬  ⠡
         䠩 ⠭   । FILES =  䠩 -
         䨣樨 ⥬ CONFIG.SYS.


                                      - 3-19 -
             .34h----------------------------.       .--------------.
             | ⥫ ⠡ ⥫   |       | ⥫ AX |
             | PS Segment:0018 (⭠.)   |       |  OPEN = 0005 |
              -------------------------------         --------------
                           |                               |
                            -------------------------------
                                                   |
                0     1      2      3      4     5 v     6     7
            .-------------------------------------------------------.
            |18h   |      |      |      |      |.⥫.䠩 |
            | STDIN|STDOUT|STDERR| AUXIO|LSTOUT|myfile|( ᯮ.)|
            |  01  |  01  |  01  |  00  |  02  |  03  |  FF  |  FF  |
             -------------------------------------------------------
               |      |      |      |      |      |
               |-------------       |      |      |
               |. 䠩 ⥬|      |      |
               |  .--------------.  |      |      |
               |  |  AUX      0  |<-       |      |
               |  |--------------|         |      |
                ->|  CON      1  |         |      |
                  |--------------|         |      |
                  |  PRN      2  |<--------       |
                  |--------------|                |
                  |  MYFILE   3  |<---------------
                  |--------------|
                  | ᯮ.4  |
                   --------------

                      .3-8.  ⥫ 䠩 PSP

              設⢥ 権 짮⥫   室
          ᢥ   ன⢠,  ,    
         樨,    .
             ࢠ  ,   ணࠬ 짮⥫ -
           ⥫,  祬        ६.
            㬮砭 ⠡ ⥫ 䠩 ন ⮫-
          20 ⥫  .. 5 ⥫ 㦥 ᢮,  ࠪ-
             ⠪   ।㣠.    ,  ⮡
           ࠭祭,  ணࠬ  ⠭  ᢮  ᮡ-
         ⢥  ७  ⠡ ⥫ 䠩,    
         ࠣ ணࠬ  ⨭ 3-2.
              ன  樨 ⨭ 3-2 ।,    ண-
         ࠬ ᯮ짮 ࠧ饭  ⠡ , ஬ ⮣,  ।-
         ,   ⠡ 뫠 ।⥫쭮 㦥   0FF
         ( ᯮ㥬  ⥫).  ணࠬ ᭠砫  ।
         祩  PSP,  ᯮ  㭪  62h.   PSP 室 ࠧ 
         祩 饩 ⠡ ⥫ 䠩,     ⠡
            ⠡.    ⠡   ࠧ -
         ࠭  ᮮ⢥  PSP   蠥.
             㣮 , ।⠢塞 ⨬ 堭, -
           ,   ணࠬ ⥯ ࠢ ७祭  
         뢮 ணࠬ.  MS-DOS ७祭 믮  -
          ࠩ, 易   ன⢮.  ᯮ-
         ᮡ  ࠡ⠥  ७祭   뢮, 믮塞
          묨, ࠡ뢠묨 맮   뢮 (⠪ 
         㭪 09h "⮡ࠧ ப").
             ⨭ 3-3    ன⢮ stdout (⠭

                                      - 3-20 -
         뢮) ७砥    䠩  ன⢮ myfile ( 䠩).
         ணࠬ ᭠砫 뢠  myfile  ࠭ ⥫. -
         ⥬  砥  PSP   PSP 砥  ⠡ -
         ⥫.  ᯮ myfile  ⢥   ⠡  ⥫,
         ணࠬ 砥  ⠡ 䠩 ⥬ myfile  -
            ,  祭  stdout (⠭  뢮),
         믮 ७祭.  ⠢  ணࠬ "稢-
         "   稢 ࠡ ⨥ ⥫ myfile.

             ⨭ 3-2. ࠣ ணࠬ  ४祭 ⠡
                                 ⥫ 䠩
         ----------------------------------------------------------------

         ;  ⨭ । ⠡ ⥫ 䠩, 祭
         ;  㬮砭,  ,  ன 㪠뢠  ES:DI.
         ;   ⠡ ࠧ㬥  CX. ࠧ㬥
         ; MS-DOS ᨨ 3.xx ( 㭪樨 "Get PSP Address" - 
         ;  PSP).  AX  BX  ࠭.
         ;
                push    ds       ; ࠭ DS
                push    si       ; ࠭ SI
                push    di       ; ࠭ ᬥ饭  ⠡
                push    cx       ; ࠭ ࠧ  ⠡
                mov     ah,62h   ; 祭 PSP
                int     21h      ;  PSP  BX
                mov     ds,bx    ;  PSP
         ;
         ; 祭 ࠧ   ⥪饩 ⠡
                mov     bx,032h  ;  ࠧ ⠡
                mov     cx,[bx]  ; 祭 ࠧ ⠡
                push    ds       ; ࠭  PSP
                lds     si,[bx]2 ; 祭  ⥪饩 ⠡
         ; ஢ ன ⠡  DS:DI     ES:DI
                cld              ; 뫪  אַ ࠢ
                rep     movsb    ; 뫪 ⠡   
         ;
         ; ⠭ ࠧ    ⠡  
         ; PSP
                pop     ds       ; ⠭  PSP
                pop     cx       ; ⠭ ࠧ  ⠡
                pop     di       ; ⠭ ᬥ饭  ⠡
                mov     [bx]2,di ;  ᬥ饭  ⠡
                mov     [bx]4,es ;  ᥣ  ⠡
                mov     [bx],cx  ;  ࠧ  ⠡
                pop     si       ; ⠭ ࢮ砫쭮 SI
                pop     ds       ; ⠭ ࢮ砫쭮 DS
         ----------------------------------------------------------------

                ⨭ 3-3. ࠣ ணࠬ  ७祭
                                   StdOut  䠩
         ----------------------------------------------------------------

         ;  ⨭ 뢠 ⥫ 䠩  ன⢠ 
         ;  "myfile"   ⥫ StdOut  
         ; ⥫. 室 ࠧ㬥  DS  ES, 㪠뢠 
         ; ᥣ . ६ ᫥  ।
         ; ।묨:
         ;
         StdOut  equ    1         ;   ⥫ StdOut

                                     - 3-21 -
         Handle  dw     ?         ;  ६ ⥫
         Outhand db     ?         ; ६ ⥫ StdOut
         MyFile  db     'filename.ext',0
         ;
         ; ⨥ ⥫  䠩/ன⢠, 室饣 
         ; myfile
                 lea    dx,MyFile ; 
                 mov    al,2      ;  ⥭/
                 mov    ah,03dh   ; 㭪 OPEN - 
                 int    21h
                 jc     OpenError
                 mov    Handle,ax ; ࠭ ⥫
         ;
         ; । ⥫ 䠩/ன⢠  ⥫ StdOut.
                 push   es        ; ࠭ ES
                 mov    ah,62h    ; 祭 PSP
                 int    21h
                 mov    es,bx     ; ES 㪠뢠  PSP
                 les    bx,es:[bx].PSPHandlePntr
         ;
         ; ES:BX ⥯ 㪠뢠  ⠡ ⥫ 䠩
                 mov    al,es:[bx].StdOut ; ⥭ ⥫ StdOut 
                 mov    Outhand,al        ; ࠭
                 mov    di,Handle         ; ⠭  ⥫
                 mov    al,es:[bx+di]     ; 뢠 室 ⥫
                 mov    es:[bx].StdOut,al ; -  ⥫ StdOut
                 pop    es
         ;
         ; ⠭ ࢮ砫쭮 ⥫ StdOut
                 push   es        ; ࠭ ES
                 mov    ah,62h    ; 祭 PSP
                 int    21h
                 mov    es,bx     ; ES 㪠뢠  PSP
                 les    bx,es:[bx].PSPHandlePntr
         ;
         ; ES:BX 㪠뢠 ⥯  ⠡ ⥫ 䠩
                 mov    al,Outhand ; 뢠 ⥫ StdOut
                 mov    es:[bx].StdOut,al ;  ⥫ StdOut
                 pop    es
         ;
         ; ⨥ ७祭 䠩
                 mov    bx,Handle ; ⥫  䠩  ன⢠
                 mov    ah,03eh   ; 㭪 CLOSE - 
                 int    21h
         ----------------------------------------------------------------


                       SHOWMEM  㪠⥫  । PSP

             㣨  祭,  ࠭塞  PSP,  
         ᥣ  । .   頫  ⮬ 室 
         裡  ⥬,   ॡ ᫥饣 ࠧ᭥,  ⠪ 
         ⥯    ଠ樥,  室  
         ᥩ ணࠬ SHOWMEM,  ணࠬ ShowMCBOwner, :
             -  砫  ࠢ , ᯮ -
          int 52h;
             - ᯮ     MCB    ⢥  
         PSP;
             - ஢ PSP ⥬ ஢ન   ⮢   -
          int 20h;
             - ᫨ 楬 MCB  PSP,    ।.
         ᫨  PSP      楬,    楬   
         MS-DOS;
             -      ᥣ ।  祭 MCB
         ।,     ࠧ ।;
             - ஢ ।  稥  ,   ᨣ-
            ப ASCIIZ;
             - ஢  짮⥫  稥  ᨣ 0001.
         ᫨ ᨣ  0001  ,   ⠩ ᫥饥 .  ᫨
         ᨣ 0001 ,        COMMAND.COM
            ᮬ;
             - ᫨ ⥪騩 MCB   ᫥,    ᫥-
         騩 MCB ⥬  ࠧ  ( 1)   MCB;
             -  믮  ண 蠣.
             ணࠬ SHOWMEM  ७  裡,  -
         騥  DOS  뢠   ३   -
         ࠢ   PSP,    ।  ⭮  MCB ।, -
          室 .

                          㭪樨  㫨஢ PSP

             MS-DOS ᮤন 㭪樨,  ⭮騥 ।⢥   -
         䨪 ணࠬ ᥣ.   㭪樨 ᫥  ⠡. 3-2.
           㭪権,     ⠭ PSP,  ⥪騩
         PSP । MS-DOS   ணࠬ ᥣ, 믮塞
           ६.
             ਬ, ।,  믮 ணࠬ MYPROG, -
           砥  ࠢ  ⠭  ணࠬ (TSR,  ᫨
         㣮)  뤠 맮 㭪樨 GET PSP ( PSP -  㭪 
           62h).    ⮬  砥  MS-DOS 頥 祭 PSP 
         ࢠ ணࠬ MYPROG.  ந室 ⮬,  ᫥ -
             ணࠬ  १⭮    믮 㭪 Keep
         Process (࠭ )    ⠢ १⭮,
           ஥ ६ 㤥  ⨢.  MS-DOS ⠥
         ᫥ 㦥 ணࠬ ⥪饩 ⨢ ணࠬ.
             ᫨ , ⮡ TSR    ᢮ ᮡ⢥ PSP,
            ⮣   ᯮ짮 㬥஢ 㭪
         SET PSP (⠭ PSP - 㭪   50h).   TSR -
              ࠧ,    ࠭ 祭 ᢮ PSP.
         ⥬ ,   TSR     ࠢ,  PSP  ࢠ
         ணࠬ   ।   㭪樨 62h (GET PSP--
          PSP).   祭   ࠭   ⨢஢
         ᮡ⢥  PSP  TSR   㭪樨 50h (SET PSP - ⠭
         PSP).  ᫥ 믮 TSR,   ⠭ ࢮ砫-
          PSP   㭪樨 SET PSP (⠭ PSP).

                                      - 3-23 -
                                                          3-2
           㭪樨 뢠 int 21h  ᥣ ணࠬ 䨪
         ________________________________________________________________
                 |
          㭪|                      祭
         ________|_______________________________________________________
           26h   |   PSP. ॢ襥 ᯮ짮
         ________|_______________________________________________________
           50h   | ⠭ ⥪饣 PSP. 㬥஢. BX ᮤ-
                 |   ᥣ ⢨⥫쭮 PSP.  㭪
                 | ⠢  PSP (BX)  ⨢ PSP 
                 | MS-DOS. ᫥⥫ 饭  MS-DOS, 뫠-
                 |    PSP, ⠪  ⠡ ⥫ 䠩,
                 |  ᯮ짮  PSP.
         ________|_______________________________________________________
           51h   |  ᥣ PSP. 㬥஢. 頥
                 |  ⥪饣 ᥣ PSP  ॣ BX.  ⮦
                 | ᠬ,   㭪 62h,   ⠪ 㯭  
                 |  ࠭  MS-DOS 3.00.   맮
                 |  TSR.  ⮩ 㭪樨 ४ ᯮ짮
                 | 㭪 62h.
         ________|_______________________________________________________
           55h   |   PSP. 㬥஢. 㭪 
                 | 筠 㭪樨 26h. DX ᮤন  ᥣ -
                 |  PSP. ,  㭪 㤥 ⠪ ⠭-
                 |     PSP   ᥣ -
                 | 饣 PSP. ..  㬥஢ 㭪  -
                 |  ⮫쪮  㧪  ணࠬ,  
                 |  ४ ᯮ짮 㭪 EXEC (믮-
                 | )   4Bh.
         ________|_______________________________________________________
           62h   |  ⥪騩 PSP. MS-DOS ᨨ 3.00  ᫥騥
                 | ᨨ. 頥  ᥣ ⥪饣 PSP  -
                 |  BX.
         ________|_______________________________________________________


                   ᮢ MS-DOS: .EXE  ࠢ  .COM

              ⭮,  MS-DOS 䠩 ᯮ ணࠬ  
           ਠ: 䠩 ⨯ .COM  䠩 ⨯ .EXE. 㭪 2-3
         (   2)    3-6    ࠧ  ⨬
          ⨯ 䠩.   MS-DOS ࠧ      㣨
         ଠ.
              䠩 .EXE -    ⢨⥫쭮 "⢥" ०
         䠩  MS-DOS. ।⢠ 몮 ணࠬ஢  ⥬ MS-DOS
         ।祭  ࠡ  ⨬ ⨯  䠩.    䠩  .COM
         ࢮ砫쭮   ᮧ  ᮢ⨬  ᠬ -
          ⥬ CP/M,    ⨯  宦  묨騩.    
         ᥣ  ᨨ MS-DOS 䠩 ⨯ .COM  饭 㧪
         ࠧ 䠩 ⨯ .EXE.  ன  䠩 ⨯
         .EXE  砥  㬮砭 ଠ⮬.COM.   १-
          ⠪ 饭 䠩 ⨯ .COM 㦠  ࠧ  -
         ॥,  ࠧ稥 ᪮⥩ ਢ쭮  ᮢ६ 設.
             ᫥ ࠧ  ஠ᥬ MASM     
           ⮬,  ⮡ ,  ⨯ 䠩 ᥬ. 
         ६   騪  LINK  㦨,  䠩 ଠ
         .COM   ⥪ ᥣ,    ⮬ 騪  -
          ࠦ ᢮ 㤮⢨.  ,  믮 㭪

                                      - 3-24 -
         EXE2BIN   ८ࠧ  䠩  ⨯ .EXE  䠩 ⨯ .COM,
         ࠧ  䠩 稭 㦨.
              ꥪ 䠩,  ࠡ뢠 ஠ᥬ஬ MASM, 
         䠩 ⨯ .EXE,  ᮧ 騪 LINK,  ᮤঠ
         ࠨ (६⨬) 뫪 ᥣ.   䠩 ᮤঠ
         ⠡,    ᯨ᪨,   ணࠬ  
         뫪  ணࠬ   ᥣ   .   裡 
         ⥬,    ᥣ  ணࠬ 㤥   ⮣,  
           㦥  ,   㦠 ணࠬ .EXE,  MS-DOS
          - ࠧ  祩  ணࠬ,   -
          뫪 ⮣ ᥣ,   祭  㪠  -
         騩 ᥣ.    뢠 relocating  (ன).
         ।  ᬮ७ 믮 ன ᬮਬ 祬  -
          ⫨砥  㧪 䠩 ⨯ .COM.
              EXE2BIN  믮  ८ࠧ  䠩  ⨯ .EXE 
         䠩 ⨯ .COM,   ᬠਢ 䠩 ⨯ .EXE  宦
           뫮  ᥣ.  ᫨  室  뫪  ᥣ-
           ணࠬ,    뫪  㣮    ᥣ-
         ,   ࠡ뢠 ᮮ饭  訡,  㪠뢠饥  ,
          䠩    ८ࠧ. ஬ ⮣, EXE2BIN 믮-
           ஢  ⮣,  ⮡  ணࠬ 稭   100h
         ⭮⥫쭮  ᥣ. ᫨   ᫮ 㤮⢮-
         ,   EXE2BIN 㤠  䠩  ࠨ ଠ 
         ࠡ뢠 䠩 ⨯ .COM.   ⨬  ଠ⠬
         ணࠬ ⪮   ⠡ 3-3.

                                                          3-3
                         ଠ⠬ .COM  .EXE
         ________________________________________________________________
                                        |                |
                   ਡ             |    ⨯ .COM    |   ⨯ .EXE
         _______________________________|________________|_______________
         ⢮ ⨬ ᥣ⮢|쪮 1        |᪮쪮 ᥣ-
                                        |                |⮢
         _______________________________|________________|_______________
         뫪  ᥣ             |             |뫪 ᪠-
                                        |                |
         _______________________________|________________|_______________
         ⥪ ᥣ               | 㪠뢠  |  -
                                        |                |।
         _______________________________|________________|_______________
         砫 ணࠬ        |ORG  100h      |ORG  ॡ-
                                        |                |
         _______________________________|________________|_______________
          ணࠬ               | 64   |  -
                                        |                | ࠧ
         _______________________________|________________|_______________
          PSP 室            |  ॣ- | ॣ ES
                                        |             | DS
         _______________________________|________________|_______________
          砫쭮 ।  |       | 
                                        |                | 
         _______________________________|________________|_______________



                                      - 3-25 -
                             㧪 䠩 ⨯ .COM

             砫 蠣,  ।ਭ    㧪   믮
         ணࠬ 䠩 ⨯ .COM,    蠣,  ।ਭ
           㧪  ணࠬ 䠩 ⨯ .EXE.   ⠭ "-
         ⥪"  MS-DOS ᭠砫 樠  ।,  롨-
          ଠ   ⥪饩 । ⥬ (砩, ਭ
          㬮砭),   ।, 㪠뢠 ஦騬 ᮬ.
             ᫥ ⠭  ।,  MS-DOS  ।   
         ணࠬ.   ணࠬ ⨯ .COM      
         ⠢ . 쭮 ॡ㥬 ࠧ ࠢ ࠧ 䠩-
          ணࠬ ⨯.COM    PSP.  ᫥ 祭 
           MS-DOS  த  ந ᥣ  ணࠬ 䨪
          ணࠬ  砫  .   ⮩  窥  ᯮ㥬
          㧪 ⭮ ⫨砥  ⮣,  ᯮ
          ணࠬ ⨯ .EXE.
              ⨯  .COM ⠥   ।⢥  PSP 
         ᬥ饭 100 (⭠筮 祭)        
         ன.  ॣ ᥣ 樠   ᥣ-
          PSP, 㪠⥫ 樨 ⠭  100 (⭠-
         筮 祭),   㪠⥫ ⥪ ⠭  祭
         0FFFE (⭠筮 祭)  ,  ᫨   
         64  , 㯭 . (쭮 祭 㪠-
         ⥫ ⥪ ࠢ 0100 - ⭠筮  祭).  ࠢ
         頥    ணࠬ .COM 稭 믮.
              ணࠬ .COM  ⭮   㭪樮-
           -  쭮  ⥪,  ᯥ稢 MS-DOS.  ᫨
         ணࠬ 믮  ᫨誮 쪮 ⥪,   १-
              ਢ   ⥪   ࠧ ணࠬ 
         ,   ६  ਢ  ⠫쭮 砭 ணࠬ-
         . ᫨ ணࠬ .COM ॡ ⥪,  쭮 ࠧ
          256 ⮢,   ணࠬ   ந  ᢮  
         ⥪      ࠧ  ணࠬ  ⥬ १ࢨ஢ 襣
         ࠭⢠    ணࠬ. (,  MS-DOS 
         㧪  ணࠬ  ⨯ .COM ⮬᪨   ⥪ 
          256  ).   ᯮᮡ   ⪥    
         ॡ㥬  ⥪    MS-DOS 㧨 ணࠬ.

                        ଠ ணࠬ 䠩 ⨯ .EXE

              ⫨稥   ணࠬ 䠩 ⨯ .COM,   ᮤন
         ⮫쪮 ࠧ ணࠬ, 䠩 ணࠬ ⨯ .EXE  ᮤঠ
           室 ଠ  ன 뫮 ७ ᥣ-
         .     裡  ⥬,   ணࠬ ⨯ .EXE  -
         饭   ᢮ ᮡ ⥪  ᮡ 砫 , ணࠬ-
          䠩 ⨯ .EXE  ᮤঠ ଠ  稪  
         楫 饩 樠樨 ணࠬ.
              ணࠬ ⨯ .EXE ⮨    ࠧ: 
         䠩 .EXE, ⠡ ன  ࠧ ணࠬ.  䠩
         .EXE   ⠡ 3-4.      -
         稢 砫쭮 ﭨ ࠧ ணࠬ. : MinAlloc (-
         쭮 ।), MaxAlloc (ᨬ쭮 ।) 
         砫 祭 SS:SP  CS:IP.  㣨 : ࠨ
           ᬥ饭 ⠡ ன  稪  -
         稢   ⠡ ன .
                ⠡ ன  稪 ࠧ-

                                      - 3-26 -
          뫪    ᥣ   ࠧ ணࠬ.  
          ᮤন 㪠⥫    (ᥣ    ᬥ饭)  
         뫪 ᥣ  ࠧ 㧪. ⥫ ᠬ ᥣ
          ⭮⥫  ⭮襭  砫 ࠧ 㧪.

                                                          3-4
                       ணࠬ 䠩 ⨯ .EXE
         ________________________________________________________________
          ⭠-|
          -|
           ᬥ-|                     ন
           饭  |
         _________|______________________________________________________
             00   |. થ ⨯ 䠩 ணࠬ .EXE: 4D5H
                  |(⭠筮 祭)
         _________|______________________________________________________
             02   |⮪. ⢮ ⮢  ᫥ ࠭ 䠩
                  |(ࠧ ࠧ 㧪  512 )
         _________|______________________________________________________
             04   |࠭. ⢮ 512- ࠭  䠩,
                  | .
         _________|______________________________________________________
             06   | ன. ⢮ ⮢  ⠡
                  |ன.
         _________|______________________________________________________
             08   | .    16-⮢ -
                  |ࠣ.
         _________|______________________________________________________
             0A   |쭮 । (MinAlloc). 쭮 -
                  |⢮ ࠣ䮢 , ॡ㥬 ᫥ 
                  |ணࠬ.
         _________|______________________________________________________
             0C   |ᨬ쭮 । (MaxAlloc). ᨬ쭮
                  |⢮ ࠣ䮢 ,  ॡ㥬  ᫥  
                  |ணࠬ.
         _________|______________________________________________________
             0E   |⥪ ᥣ. 砫쭮 祭  ⥪
                  |ᥣ (⭮⥫쭮 砫 ࠧ 㧪 ணࠬ-
                  |.
         _________|______________________________________________________
             10   |⥫ ⥪. 砫쭮 祭 㪠⥫ ⥪.
         _________|______________________________________________________
             12   |஫쭠 㬬. 筮  ஫쭮
                  |㬬 ணࠬ 䠩.
         _________|______________________________________________________
             14   |⥫ 樨. 砫쭮 祭 㪠⥫
                  |樨.
         _________|______________________________________________________
             16   | ᥣ. 砫쭮 祭  ᥣ
                  |(⭮⥫쭮 砫 ࠧ 㧪 ணࠬ).
         _________|______________________________________________________
             18   |饭 ⠡ ன. ⭮⥫쭮 ᬥ饭
                  |⮢  砫 ணࠬ 䠩  ⠡ ன-
                  |.
         _________|______________________________________________________
             1A   | ४.  ४, ᣥ஢
                  |騪 LINK.
         _________|______________________________________________________

                                      - 3-27 -
         ணࠬ.  ६ ன 砫쭠 뫪 ᥣ, -
          ࠧ 㧪,   祭 ⢨⥫ -
         祭 ᥣ.     ᬮਬ  ஡ ⮫쪮
         ᫥ ⮣,   ࠧ६  让 ᯥ 䠩 .EXE  -  -
         砫 祭 ।.

                      砫쭮 ।  .EXE

              ਬ,  ।⠢   ,  ⠫ ᠬ ᮡ
         ࠧ㬥騬,   MS-DOS  㧪 ணࠬ   -
           ⠢   ⮩ ணࠬ.  ,   ਬ
         SHOUMEM,    .  3-4,  ணࠬ SHOWMEM 祭
         ᫥  訩  .    뫮 ᬮ७
           2,   ன  ணࠬ, ਢ  ⨭ 2 -12
          2-13, 뫠 ᯮ짮 㭪 䨪樨  ।
          (㭪 4Ah).       㣨 ᯮᮡ -
          ᢮   ணࠬ ⨯ .EXE.  . 3-6 뢠
         ணࠬ ⨯ .EXE,   让  㯭 ,
           ᫥  ⠡ 3-3   ⮬,   ࠧ 
         砫쭮 । ணࠬ .EXE    .  
          砥?
              䠩 ⨯ .EXE ᮤন  ,   -
         ࠢ   ।⠢  ணࠬ   㧪.
         ⨬  ⠬  MinAlloc - 쭮  ।-
           ( ᬥ饭 0Ah)  MaxAlloc - ᨬ쭮  -
           ( ᬥ饭 0h).   MinAlloc ᮮ頥 -
         稪  ⮬,   ꥬ    (  16-⮢  ࠣ)
           ணࠬ  믮,  ..  ᪮쪮  ⮢ -
          ணࠬ  ᠬ .  MaxAlloc,  㣮 -
         ஭,  ᮮ頥 稪 ⢮ ࠣ䮢 ,  ஥
         ணࠬ ॡ ।  .
             騪 MS-DOS  筮  ⠭  祭  
         MaxAlloc  0FFFFh,  㪠뢠饥  ,  ணࠬ  
         1  . .. MS-DOS      ,
           뤥 ணࠬ  ⠢ .  , ᫨ 
           㪠 祭  MaxAlloc,  ࠢ 祭 
         MinAlloc,   ணࠬ 稫  ॡ㥬  ,  ⠢-
           뫠  㯭  ।.  ⮣ 
          祭  ᯮᮡ.
            모 ணࠬ஢  "",  MASM, -
         ⠢  ⨫⮩,  뢠 EXEMOD.  ⨫  
         ᯮ짮  ⮡ࠦ  䨪樨    ணࠬ
         ⨯ .EXE. .3-9 뢠,  室 믮 ᯮ짮-
          ⨫ EXEMOD  祭   ⥬ 䨪樨  -
         ࠬ MaxAlloc.  㤨, 㢨,   ਬ 祭
         ࠬ MaxAlloc   祭 1,     ᬮ७
         .3-10  ,    ᠬ  믮 䨪
         ࠧ ,  ॡ㥬  ணࠬ SHOWMEM,   믮-
            ᢮   .  ஢  ࠧ  ணࠬ
         SHOWMEM   祭 宦  ࠧ ணࠬ ⨯ .EXE, ਢ-
           .3-6,  ᢮ .

               C> exemod c:\guide\examples\showmem.exe

                                      - 3-28 -
         1     Microsoft R EXE File Header Utility Version 4.02
         2     Copyright c Microsoft Corp 1985-1987. All rights reserved.

               c:\guide\examples\showmem.exe       (hex)         (dec)

         3     EXE size (bytes)                        CC5          3269
         4     Minimum Load size (bytes)               AC5          2757
         5     Overlay number                            0             0
         6     Initial CS:IP                     0093:0000
         7     Initial SS:SP                     0013:0800          2048
         8     Minimum allocation (para)                 0             0
         9     Maximum allocation (para)              FFFF         65535
         10    Header size (para)                       20            32
         11    Relocation table offset                  1E            30
         12    Relocations entries                       1             1

              C> exemod c:\guide\examples\showmem.exe /max 1

         9    Maximum allocation (para)              FFFF         65535

                       .3-9. ᯮ짮 ⨫ EXEMOD
                          ணࠬ 䠩 ⨯ .EXE:
         1 -  4.02 ⨫  䠩 ⨯ EXE    "-
         ";  2  -  ᪮ ࠢ  " ௮" 1985-
         1987 .   ࠢ १ࢨ஢; 3 - ࠧ EXE ( ); 4
         -  ࠧ  㧪 ( );  5 -  ४-
         ; 6 - 砫쭮 祭 CS:IP; 7- 砫쭮 祭 SS:SP; 8
         - 쭮 ।; 9 - ᨬ쭮 ।; 10 -
         ࠧ ; 11 - ᬥ饭 ⠡ ன; 12 - -
          ࠨ ⮢.

             ,  祭 MinAlloc  MaxAlloc ࠢ ,   㤨-
         .  ᫨   ,  ⢨⥫ ࠧ -
           ।  ணࠬ 㤥 ࠢ ࠧ ᠬ ண-
         ࠬ,   ⥫쭮 ࠭⢮   ।. 1
         SM-ShowMem,  Version  1.00  c  Copyright  1988  2  MCB Size Owner
         Command Line
             ------------------------------------------------------------
             0A01   08D7   0008   DOS
             12D9   00D3   12DA   [ SHELL ]
             13AD   0003   0000   [ available ]
             13B1   0032   12DA   [ SHELL ]
             13E4   0004   13EA   c:\bin\RETRIEVE.COM
             13E9   00A9   13EA   c:\bin\RETEIEVE.COM
             1493   000F   14A4   s:\MODE.COM\*
             14A3   0017   14A4   s:\MODE.COM\*
             14BB   0010   14CD   c:\ws2000\SWITCH.COM
             14CC   0018   14CD   c:\ws2000\SWITCH.COM
             14E5   0011   14F8   c:\GUIDE\EXAMPLES\SHOWMEM.EXE
             14F7   00D1   14F8   c:\GUIDE\EXAMPLES\SHOWMEM.EXE
             15C9   8A36   0000   [ available ]
             <<<------------- End of Memory Block List ------------->>> 3
          .3-10. ਬ ⮡ࠦ  SHOWMEM  ࠬ஬ MaxAlloc,
                        ࠢ 祭 ࠬ MinAlloc:
         1 - ணࠬ   - ShowMem,    1.00,  ᪮
         ࠢ 1988;  2 -  ࠢ ,  ࠧ, , -
          ப; 3 -  ᯨ᪠  .


                                      - 3-29 -
              ᯮᮡ  室 । ࠧ  ணࠬ
         䠩 .EXE,    뢠 ࠧ EXEMOD  ᮧ -
          䠩.  ,  ᮧ 䠩 .EXE  㣮 ᯮ-
         ᮡ ࠢ ࠬ஬ MaxAlloc - ᯮᮡ ᯮ짮  ४-
         ⥫ "/CPARMAXALLOC:nnn" (᮪饭: "/CP:nnn") 騪
         LINK,   nnn - 祭 ࠬ MaxAlloc, ࠦ  ࠣ-
         .  ਬ, ணࠬ SHOWMEM   ࠧ  -
         祭 ࠬ ᨬ쭮 ।, ࠢ 1, ⥬ -
         짮 ᫥饩 :

                      C> link /cp:1 showmem,,,stdlib.lib;


                          稪  .EXE MS-DOS

                  ⠢ , 室騥  ணࠬ-
          䠩 ⨯ .EXE,     ᬮ७ 㧪  -
          ணࠬ ⨯ .EXE. ,   ᮢ ⨯ .COM,
          蠣 ⮨  ⠭ ⥪ , 稭  -
          ।.
             ᫥ ⠭ ।   ⥬ ⠡,    ⠡-
           ,   ࠡ  뢠  ணࠬ-
          䠩 .EXE. ᯮ 祭 MinAlloc  MaxAlloc  ࠧ
         ࠧ  ணࠬ  (  ࠧ  ࠭    ࠧ ),
         MS-DOS । ॡ㥬 ࠧ       ।
         .  ᫨ 祭 ࠬ MaxAlloc ࠢ 0FFFFh,    ⮬
         㤥 ।  .
             ᫥ ।  ,    砫    
         ᮧ  PSP (ᥣ  ணࠬ 䨪).  PSP  ணࠬ
         ⨯ .EXE  ⫨砥  ணࠬ ⨯ .COM. ⥬ MS-DOS -
          ࠧ  ணࠬ   ।⢥  PSP,  뢠
         ⠡  ன    த  ࠨ  ࠧ  ணࠬ.
         .3-11 뢠,    ⠡ ன 뫠 
         ࠧ ணࠬ.   ᫠  㭪  䬥᪨ ⢨
         믮  ⭠筮 ⥬ ᫥.
              蠣  ன  ᫥  砫
         ᥣ.   ᮬ ॠ쭮 ,  ᮮ⢥-
            砫 ࠧ ணࠬ  䠩.   .3-11 
           ࠧ饭   ᥣ,  ࠢ 1000.  PSP
          100 ⮢  10 ᥣ⮢.   砫 ணࠬ
         ᥣ   ࠢ ⮣ ᥣ 1010:0000,    -
         ,  ஬ 稪  ࠧ ணࠬ.
             ᫥ 㧪 ࠧ ணࠬ  稪    
          ந  뫪 ᥣ.  騪 LINK -
         稭 ந ࠧ ணࠬ,  ᯮ । -
          ᥣ 0000.   ᠬ , ணࠬ 㦠  ᥣ-
          1010,  ⠪    뫪 ᥣ 室 
         1010. 稪  室   뫪 ⥬ ᯮ짮 ⠡-
          ன,  ᮤন 㪠⥫   뫪 ᥣ-
           ணࠬ.
             .3-11 ᮤন  뫪  祭 ᥣ⮢.  ᫥-
           ன   (far) 맮, ࠧ饭 
         0003:1234. ⢨⥫쭠 뫪 ᥣ 室   ⢥⮬
          ⮬  ⮩ 樨   0003:1237.

                                      - 3-30 -

                     ணࠬ 䠩
                        ⨯ .EXE
                     ---------------   砫 CS:IP    =  0000:0010
                    | ண-|  砫 ᥣ  = +1010
                    |ࠬ 䠩 |                       ----------
                     ---------------   ⢨⥫
                                       祭           =  1010:0010
                     ---------------     |
          |  - |    |    
              |     ன     |    |       
            砫  | 0003:1237 --------.|   ---------------  1000:0000
           ᥣ | 0005:ABCE -------.||  | 䨪 ண- |
             1010    ---------------   |||  | ࠬ ᥣ- |
                                       |||  |          |
         0000:0000   ---------------   |||  |---------------| 1010:0000
                    |ࠧ ணࠬ|  |||  |ࠧ ணࠬ|
                    |               |  |||  |               |
         0000:0010  | START         |  || ->| START         | 1010:0010
         0003:1234  | CALL 0005:ABCD|  | -->| CALL 1015:ABCD| 1013:1234
         0005:ABCD  | MOV  AX,0007  |   --->| MOV  AX,1017  | 1015:ABCD
         0007:0000  | Data Segment  |       | Data Segment  | 1017:0000
                     ---------------         ---------------

           .3-11.  ன  㧪 ணࠬ ⨯ .EXE

         ,       ⭮⥫   㫥
          ᥣ,     ⢨⥫쭮 ࠧ  ணࠬ  
         .    宦  ⢨⥫쭮 뫪 ᥣ  
         㪠⥫ ⠡ ன ᠬ        
          砫 ᥣ. ⢨⥫쭠 뫪  ᥣ 
         ᮬ 1013:1237.
             , 㪠뢠  ,  㢥稢 ⥬    
         砫 ᥣ.  맮  far  ()  ᥣ 0005 ⥯
         ⠭ 맮 far  ᥣ 1015 - ⢨⥫쭮 ࠧ饭
         ணࠬ.
             ᫥ 襭  ன,  ॣ ES  DS  -
            ᥣ PSP,   ॣ CS:IP  SS:SP -
         樠 祭ﬨ,  묨   ணࠬ 䠩
         ⨯ .EXE.   ॣ CS  SS 㢥稢      砫
         ᥣ  ࠧ  ணࠬ.  ਬ,   .3-11  砫
         (START) 0000:0010  ᬥ饭 ⢨⥫쭮  -
          ᥣ 1010,   ନ஢ ⢨⥫ 祭 CS:IP
         1010:0010, ᯮ㥬  ᪥ ணࠬ.

                                    ४

                 ਤ  ணࠬ,   -
           ᫨誮  让,  ⮡  ࠧ  ⢥  
          .    ந,     ᯮᮡ
         믮  ⠪ ணࠬ  ᮧ ४⨩ (૥
         -overlays).  ४⨥  ࠧ ணࠬ,  ஬ 
         㦭  ६ 室  .  㦠   ⮣-
         ,    室,  ᫥ ⮣,   ⠭ 㦭,
         ࠭⢮ ,  ,   ᯮ짮 -
          㣨 ४⨥.  ⮪ ணࠬ,      
          饭  ४⨥,  뢠 ୥ (root).   
         ணࠬ    ७,  ..     ४⨨
           㧪   ।  ணࠬ.  ४-
         ,   殢,  ⮫쪮 ⠥묨.

                                     - 3-31 -
             ४   祭 묨 ꥪ⠬,  MS-DOS -
         ন  筮 䥪⨢.    祭  㭪樨
         EXEC (믮)  㧪 ४⨩  .   ।
         ᬮ७ ⮩ 樨,  室 ⬥,    騪
         LINK MS-DOS   ᮧ ४  ⮬-
          ࠢ !
             ࠢ ᯮ짮  ࠢ ४ﬨ  MS-DOS -
         . ૥ (४뢠) 㫨   ᮤঠ -
             ᪨  ,   ﭭ  ⨬.
         㣮 ࠢ 砥  ⮬,   ४⨥   -
          ⮫쪮   맮 far ()  ,   -
          ४. ४⨥  맢 ७ १ 맮 near
         ().
             ᮡ ᮧ ४ (૥) 祭 :   맮
          LINK,  ꥪ 䠩,  ⠢騥 ४⨥,  
           㣫 ᪮.   ,    . -
             ப ᮧ ணࠬ 䠩,  ᯮ騩
          ४:

         C> link root + (init + read) + (work) + (save + exit) ,myprog ;

              ਬ ᯮ   ணࠬ  ⥭  -
            樠樨 ணࠬ,  㣮   -
         ⪨      ணࠬ  ࠭  ࠡ-
         ⠭      室.  ᪮     権 
         믮 ६,    믮  ४⨨,
         , ⠪ ࠧ, 蠥 ஡ ᪮ .

                                ணࠬ

               ⨯  ᯮ짮 樮 ⥬ MS-DOS ।-
         ⠢ ᮡ 樮 ⥬   祩.    -
           ६   믮 ⮫쪮  ணࠬ.  -
         ᪨ ,  MS-DOS       ६  ন
         ᪮쪮 ணࠬ  .  ⢨⥫쭮,   -
          ६ 믮 ⮫쪮  ணࠬ, ⮬  
          믮     ६ ⮫쪮  -
         ,  ணࠬ   ᪮䨣஢ ⠪ ࠧ,
           ᮧ     ६ 믮.   -
         ᪮쪮 ணࠬ  ᮧ  ⥬  㧪 ணࠬ   
          MS-DOS  ⥬  ࠢ  MS-DOS   㤠
         ணࠬ   .  ᪮ ணࠬ    
          ࠢ 樮 ⥬,  ணࠬ 뢠
         १⭮.    蠣   믮 १⭮ ணࠬ
          ⠭ ணࠬ  .    ⥩ ⨯
         १ ணࠬ  ⥪ ᯮ饩 ⥬ (RTL
         - run-time library),   ᯮ짮  ⢥ ࢮ-
          ਬ.

                      ᠭ ⥪ ᯮ饩 ⥬

              ⠪ ⥪ ᯮ饩 ⥬?  ⭮, -
         ⥪ ।⠢  ᥡ ᮡ࠭  ணࠬ,  -
            맢  ணࠬ. 設⢮ ⥪ -

                                      - 3-32 -
          ᪮묨 (।஢묨) ⥪,  -
          ॡ㥬 ணࠬ    ணࠬ  䠩  (.EXE
           .COM)  ६ . ..    ணࠬ-
          䠩, ணࠬ ᪮  ⥪  㦠
            ணࠬ  㧪 ணࠬ 䠩.  RTL -
         ।⢥    ணࠬ,   砥  ६
         믮.  RTL   㦥 室  ,    
          ᥭ  ,    室, ,   砥
         RTL    ᠬ ணࠬ 䠩.
             RTL ।⢥  ꥤ  ணࠬ,  ⠪  
         ணࠬ 믮  맮? ணࠬ  - ࠧ
         ⠢  ⭮  樮  ⥬,    RTL  
         প ,    ண 訢 ⥪.
            믮 १ 맮, ७ 뢠, -
         ⥫ 樨  뢠,  騥   -
          ।  樮  ⥬.    ।  樮
         ⥬  MS-DOS/8086  室騬 ᯮᮡ  ᯮᮡ
         饭 १ 뢠.
             祬  ᯮ ⥪ RTL,  ᫨  ॡ -
         ⥫  ᨫ:  ।⥫쭮  㧪,  맮     ..?
         -,  ⥪ RTL  ᯮ  ࠧࠡ⪥ -
           ணࠬ,   讥 ⢮ ணࠬ, -
         ⭮ ᯮ 騥 ணࠬ   ᯥ祭 -
           ᠬ   짮⥫ ⤥쭮 몠 ணࠬ஢-
         .   ᯮ짮 ⥪ RTL,  ࠧࠡ稪  室
         ࠭ ⮫쪮   ⥪,  ⮣, ⮡ 
         ணࠬ ᮤঠ ⠪ .  䥩  ணࠬ
           RTL ⠥ ,  ணࠬ  RTL  
          䨪樨  ४ ணࠬ,   뢠.
         ⮬  RTL  룫拉  ७ 樮 ⥬,
         ..   ᯥ稢 ⠪ ।⢠,   室 ࠧ-
         稪,         ন  樮  ⥬.
         -,  ⥪ RTL  ⥫  २⢠  
         㬥襭  ᪮   ᪮७ ६ 㧪 ணࠬ-
         , .. RTL  㦠   ணࠬ  ⤥쭮.

               㧪 १ ணࠬ   ப

              MS-DOS   ᪮쪮 ᯮᮡ,     -
         짮  㧪 ࠧ ணࠬ  .   
         ᯮᮡ  ࠥ   㧪 ணࠬ   ப
          ணࠬ  砫쭮  㧪    ஢,  ।
         ணࠬ      ᮫⭮    ᪥  䨪஢
         祩 .    ᯮᮡ  ᯮᮡ ᯮ-
          稪  ப MS-DOS,  ।⠢騩 ᮡ
         ⮩   믮 ணࠬ.    ணࠬ,
         ⠪   ,  ਬ,  RTL,  㦠    
         㣮 ணࠬ.  ,  ᫥ ⮣,  १⭠ ணࠬ
         㦥  砫 믮 ।⢮ ।  樠-
         樨,    蠥  ᯮ짮  ᯥ樠쭮  室:
         㭪樨   31h ("࠭ ")    뢠
         27h (",   ⠢ १⭮"). 㥬 -
         ன  ᯮ짮 㭪樨   31h  뢠 21h,
            ⨭ 3-4.
             㭪   31h   ࠬ:  易⥫ -
         ࠬ  , ᯮ㥬  㪠 ﭨ  -

                                      - 3-33 -
         室  ணࠬ,  易⥫ ࠬ, ।⠢騩 -
          祭 ࠧ    ࠣ,  ஥ ⠥
         ।  ᮬ.  맮 㭪樨 MS-DOS १ࢨ-
          襭 ⢮ ,  稭   PSP (ᥣ
         ணࠬ 䨪).  ந室  ⠪    맮-
           㭪樨 "஢  । "  ᮬ
         PSP   ॡ㥬  ࠧ஬.   砥 㭪樨 "࠭ "
         MS-DOS ,   ,  ࠧ ண   -
         , 稭   PSP, ⠪  ࠬ  ॡ.

              ⨭ 3-4. 㭪   31h - "࠭ "
         ----------------------------------------------------------------

                                  ; ᯮ㥬 ⨯ .COM

         program    segment
                    ORG     0
         seg_org    equ     $
                    ORG     0100h
         start:
                    ...

                    mov     dx,(offset last_byte - seg_org + 15) shr 4
                    mov     ah,31h          ; ࠭ 
                    int     21h             ; 맮 MS-DOS
                    ...
         last_byte:
         program    ends
                    end     start
                                  ; ᯮ㥬 ⨯ .EXE
                    ...

                    mov     ax,es           ; 祭  PSP
                    mov     dx,seg end_addr ; 祭  .ᥣ.
                    sub     dx,ax           ; 祭 ࠧ ண-
                    mov     ah,31h          ; ࠭ 
                    int     21h             ; 맮 MS-DOS
                    ...
         program    ends
         end_addr   segment
         end_addr   ends
                    end     start
         ----------------------------------------------------------------

               2  ।⠢    ᫥ ࠧ
         ணࠬ    ࠣ.       ᯮ짮 
         㭪樥 "࠭ " ⠪    㭪樥  "-
           । ".  ᯮ짮   
         १ ணࠬ,   ᮮ⢥饥 ࠢ, 
             ⨭ 3-4.  ⨬,    㭪 "࠭
         "   ॡ  PSP, ணࠬ ⨯ .EXE 室
         ࠭    PSP  室  楫 ᫥ ࠧ ண-
         ࠬ.
             ..  १ࢨ  砫 PSP,  १ ண-
         ࠬ   㦠       (-
         ,   ⥬   ᯮ짮   ४⥫  /high  騪
         MS-LINK).  ᫨ ணࠬ 㦠     ,
           ⠭ 饭  襭 १⭮ ணࠬ-
         , .. ࠭塞   ࠧ頥  砫  -
         .  ணࠬ ᠬ 㤥 ࠧ  ࠭⢠ १-
         㥬  .    ணࠬ   ⠭   ⠪   ࠧ
         饭,  MS-DOS  㧨    ᠬ  
          ணࠬ  १  䠩 COMMAND.COM, -
          १ ணࠬ.
                砥, ४⥫ /high 騪 MS-LINK -
         ࠣ ⮫쪮 ணࠬ ⨯ .EXE.    ண-
         ࠬ  EXE2BIN   䠩  .COM 㤠 થ "㧪 ᮪",
         MS-DOS 㤥 㦠 ணࠬ  砫 PSP.
             㣨 ᯮᮡ ⮫樨 १ ணࠬ  -
         뢠  "  ⠢ १⭮" int 27h,  ⠢
          ࠭ ᨩ MS-DOS.  ᮡ ᯮ짮 뢠 int 27h
           ⪮,   ᢮   ᯮ짮 ⮣
         ᯮᮡ.  ⫨稥  㭪樨 "࠭ " (Keep Process),
         뢠  int  27h   ॡ    (
         ᮬ PSP),   ॡ    ॣ CS.  쪮  䠩
         ⨯  .COM   PSP  ॣ  ணࠬ ᥣ, -
         㤭 ᯮ짮 ⮩ 㭪樨   ணࠬ  ⨯.EXE.  (
         믮  ॣ CS   믮 ணࠬ?) ஬
         ⮣,  ࠬ ࠧ 㪠뢠  ,      ࠣ,
          ࠭稢 ࠧ ணࠬ,    ࠭
          64  (ᨬ ࠧ ணࠬ ⨯ .COM). ⢥-
           ⮨⢮ ⮩ 㭪樨  ,    ⢥ -
            ᯮ짮  ८ࠧ ᬥ饭 ᫥-
          ,   :

         ...
         mov        dx,offset last_byte  ; 祭 ⢠ ⮢
         int        27h           ; 襭  ⠢ १⭮
         ...
         last_byte:
         program    ends
                    end   start

             ଠ "" ४    ࠧࠡ뢠
             ୨஢  ணࠬ ८ࠧ
          뢠  㭪   31h.  믮 ८ࠧ-
            ஢ ࠬ ࠧ (Size)  ⮢ 
         ࠣ.

                  १ ணࠬ १ 뢠

              १  믮  ணࠬ,     ⨭
         3-4,   ⥬ 㤥  ⠭  १⭠  ணࠬ.
         ᫥  ࠧ饭 易⥫쭮  ணࠬ  室 
         .   祭 ⮩ ணࠬ  RTL 室 ।
          ७  ᤥ  㯭  㣨 ணࠬ.
             RTL  ᮤঠ    㭪    ᤥ    맮
         MS-DOS (ਬ, 뢠 int 21h),  ⥪ 뢠
         ⮫쪮 ⥪饩 믮饩 ணࠬ.  ࠭祭 ।-
         祭  ।饭 諥 ୮ 맮 MS-DOS,
          ਢ  ᡮ ⥬.   ணࠬ, 
          ⨭ 3-5, ᮤন ਬ 䥩  RTL,  
         ন  ⤥ 㭪権   祭 宦  ࠡ稪
         뢠 MS-DOS int 21h.

                                     - 3-35 -
                ⨭ 3-5,  ਬ   
         ७ ⥬  室 ணࠬ   -
         প ணࠬ ࠢ,  祭 ࠢ  ⠡, -
         ࠧ -뢮, , , 饩   ᪮쪨
         ணࠬ.   ⠫    ਬ  孨᪨
         ਥ,  ᬮ७   2,  ⠪  ᯮ짮 -
         ஢ ⥪,    訡  .. ᫨  ணࠬ -
             প 讣 ⢠ 㭪権,   
            ⠡楩 室,   
         ࠩ ᪮ 饣 ன⢠  ந쭮 롮-
          RDISK   6.
             ⥪ MACRO, 㯮  ணࠬ EXRTL, ᮤন -
          ,    1,  ⠪  dis_chr ⮡-
         ࠧ  ᨬ)   dis_str (⮡ࠧ ப),  ।⠢ 
         㬥 "Technical Reference Manual.  @DosCall" (ࠢ筮 -
         ⢮  孨᪮ 㦨.  맮 DOS),  , 筮
         ,   뢠 int 21h.

                        ⨭ 3-5. ਬ ⠭  RTL
                 (ணࠬ  EXRTL - Example Run-Time Library)
         ----------------------------------------------------------------

         ;====== RTL.ASM -  䠩 ࠡ뢠 䠩 ⨯ .COM ======
         V_NUM   EQU     40h            ;  RTL ᯮ  40h
         ;
         INCLUDE STDMAC.INC             ; 祭 䠩 ஡⥪
         ;======    ==============================
         ;
         frame   STRUC      ; 奬  ⥪ 뢠饩 ணࠬ
         old_bp  dw      ?              ;  㪠⥫ 
         ret_IP  dw      ?              ;   (IP)
         ret_CS  dw      ?              ;   (CS)
         flags   dw      ?              ; 䫠 뢠饩 ணࠬ
         funct   dw      ?              ;  믮塞 㭪樨
         frame   ENDS
         ;
         code_seg SEGMENT
                 ASSUME cs:code_seg
                 ASSUME ds:code_seg
         main    PROC    FAR
                 ORG     0
         seg_org EQU     $
                 ORG     2Ch
         env_adr LABEL   WORD           ; ᬥ饭 ।  PSP
                 ORG     0100h
         start:  jmp     install
         entry:  push    bp             ; ࠭ 㪠⥫ 
                 mov     bp,sp          ; 祭  ⥪
                 push    ds             ; ࠭ ᥣ 
                 push    ax             ; ࠭ ॣ
                 push    bx
                 mov     ax,cs          ; ⠭ ᥣ 
                 mov     ds,ax
                 mov     ax,[bp].flags  ; । 䫠 뢠.-
                 sahf                   ;  AX    䫠
                 clc                    ; ⪠ ७ ( 訡)

                                      - 3-36 -
                 pushf                  ;  ࠭  䫠
                 mov     bx,[bp].funct  ; 祭  㭪樨
                 @Case   bl,<1,2>,<f1,f2>
                 popf                   ; 祭  䫠
                 stc                    ; ⠭ ७-.㭪
                 pushf                  ; ࠭  䫠
                 jmp     short exit
         f1:     @DisStr f1msg
                 jmp     short exit
         f2:     @DisStr f2msg
         exit:   pop     ax             ; 뫪 䫠 ⭮  ⥪
                 mov     [bp].flags,ax  ;           १ AX
                 pop     bx             ; ⠭ ॣ஢
                 pop     ax
                 pop     ds             ; ⠭ ᥣ 
                 pop     bp             ; ⠭ 㪠⥫ 
                 iret                   ;   뢠
         main    ENDP
         ;
         f1msg   db      'Function # 1 performed',CR,LF,'$'
         f2msg   db      'Function # 2 performed',CR,LF,'$'
         lst_byt:                       ; ᫥   ࠭
         ;
         ;  ணࠬ ⠭.
         ;
         ;  ᭥ 稭 㤠  । ᬮ ࠧ
         ; " ࠢ "
         ;
         ;   । - DS 㪠뢠  ⥪騩 ᥣ
         ; ⠭ ES  㪠   ।
         ;
         install:
                 mov     es,env_adr     ; 祭  ।
                 mov     ah,49h      ; ᢮ । 
                 @DosCall               ; 맮 MS-DOS
                 jnc     setvect        ; 室, ᫨ 訡 
                 @DisStr fail49         ; ଠ  訡
                 mov     ah,4Ch         ; 襭 
                 @DosCall               ; ਩ 襭  訡
         ;
         ; ⠭  - DS 㪠뢠  ⥪騩 ᥣ
         setvect:
                 mov     dx,offset entry ; 祭 窨 室 RTL
                 mov     al,V_NUM       ; ⠭  
                 mov     ah,25h         ; ⠭ 
                 @DosCall               ; 맮 MS-DOS
         ;
         ; 襭  ⠢   १⭮ ணࠬ
                 mov     dx,(offset lst_byt - seg_org + 15) shr 4
                 mov     ah,31h         ; ࠭ 
                 @DosCall               ; 맮 MS-DOS
         ;
         fail49  db      'Failed to Free Environment Block',CR,LF'$'
         code_seg ENDS
                 END     start
         ----------------------------------------------------------------


                                      - 3-37 -
             ᮡ ணࠬ EXRTL ⮨  ⮬,    믮-
          㭪樨 Keep Process ("࠭ ")   -
           쭮 ⥪.    뫮  ਢ  ⠫-
          訡 ணࠬ EXRTL,  ⮬  ணࠬ  ⥪  ⠭
          饭  ꥪ⮬ ࠧ襭.  ,  ⮣ 
         ந室,  ⮬  ணࠬ EXRTL   ⮭
         ணࠬ,   뢠 㣨 ணࠬ,   ᢮
          ⥪.  ணࠬ EXRTL 믮  ᢮ 樨,
         ᯮ ⥪ 뢠饩 ணࠬ.
             ᫥ ᠭ RTL, 室 ᯥ  ।⢠
          ᯮ짮.  裡  ⥬,    ࠡ 
         ।,   MS-DOS 㧨 楤  ,  -
           ⥪   樨 CALL  ணࠬ,  饩 -
         ⢨   RTL.   ⮣ ᥬ⢮ ய஢ 8086
         ।⠢  襭  ଥ ஢ 뢠.  -
           뢠    窥  樨  ⥪   
         ணࠬ  ⢨    ⥬ ᯮ짮 -
         樨 INT.
             ⢮ ய஢  8086  ন  256  ஢
         뢠,   ,   ࠩ , 64 ( 00h  39h) -
         ࢨ    ⥬  MS-DOS.   ᯨ᮪
         ஢ 뢠,  ᯮ㥬  ମ  "⥫",  ⠭⠬
           "",    ⥬ -뢮 (BIOS - Basic Input
         Output System)  ""  MS-DOS ਢ  ⠡  3-5.  -
         ⠫    뢠 ᯮ 㣨 ⮢⥫ﬨ.
         筮    ᮪ ࠬ   묨
          ᯮ짮,    ⢥न ⮫쪮 ஢-
         .   襬 砥 ࠭  40h, ⮬    ᯮ-
          ⥬  ࠧ蠥.
           ____________________________________________________________
          |                                                            |
          |                                             |
          |                                                            |
          |     ⥬  ᯮ짮  뢠,   |
          |    ⫨騥  ।    MS-DOS.  । -   |
          |    짮      ஢  㪮⢮   |
          |    ⥬.    १    㦥 ᯮ㥬   |
          |          ந  ⪠ ⥬ !      |
          |____________________________________________________________|



                                                          3-5
               뢠 ⠭⮢  "", ,
                          ।, BIOS  MS-DOS
         ________________________________________________________________
                       |            |
           뢠  | । |            ᯮ짮
         (..) |            |
         ______________|____________|____________________________________
         Int 0         |   ⥫    | 뢠 - 訡  
                       |            | 
         Int 1         |   ⥫    | 뢠 "᫥" 
                       |            | 蠣
         Int 2         |   ⥫    | ᪨㥬 뢠 
                       |            | ।
         Int 3         |   ⥫    | 뢠 ஫쭮 窨

                                      - 3-38 -
         ________________________________________________________________
                       |            |
           뢠  | । |            ᯮ짮
         (..) |            |
         ______________|____________|____________________________________
         Int 4         |   ⥫    | 뢠 - ९ 
                       |            | 㬭
         Int 5         |   ⥫    | ᪫⥫쭠  "࠭
                       |            | 80x86"
                       |   BIOS     | 㭪  ࠭
         Int 6         |   ⥫    | ᪫⥫쭠  "।-
                       |            |   樨"
         Int 7         |   ⥫    | ᪫⥫쭠  " -
                       |            | 樨 ESC"
         Int 8 / IRQ 0 |         |  ।⢠ ⥬ ⠩-
                       |            | 
         Int 9 / IRQ 1 |         |  ।⢠ 
         Int A / IRQ 2 |    - XT | ᭮   ।
         Int A / IRQ 2 |    - AT | IRQ 8 - IRQ F
         Int B / IRQ 3 |         |  ।⢠ ᫥⥫-
                       |            |   2
         Int C / IRQ 4 |         |  ।⢠ ᫥⥫-
                       |            |   1
         Int D / IRQ 5 |    - XT |  ।⢠ 䨪஢
                       |            | ᪠
         Int D / IRQ 5 |    - AT | ࠫ  2
         Int E / IRQ 6 |         |  ।⢠ ᪮ -
                       |            | ஫
         Int F / IRQ 7 |         |  ।⢠ ࠫ쭮
                       |            |  1
         Int 10        |   BIOS     | 㦨   ࠭
         Int 11        |   BIOS     | ᮪  뢠
         Int 12        |   BIOS     |   
         Int 13        |   BIOS     | 㦨 ᪮ -뢮
         Int 14        |   BIOS     | 㦨 ᫥⥫쭮
                       |            | -뢮
         Int 15        |   BIOS     | 㦨 ⭮  
                       |            | ७ 㦨
         Int 16        |   BIOS     | 㦨 -뢮 -
                       |            | 
         Int 17        |   BIOS     | 㦨 -뢮 ਭ
         Int 18        |   BIOS     | 稪 ᨪ
         Int 19        |   BIOS     | ணࠬ 砫쭮 㧪 (-
                       |            | 砫 稪)
         Int 1A        |   BIOS     | 㦨 ⥬ ⠩ 
                       |            | ᮢ
         Int 1B        |   BIOS     |  Control-Break 
                       |            | ( Int 9)
         Int 1C        |   BIOS     |  ⠩ 짮⥫
                       |            | ( Int 08)
         Int 1D - 1F   |   ⥫    | १ࢨ஢
         Int 20        |   MS-DOS   | 㭪 襭 ன (OLD)
                       |            | ணࠬ
         Int 21        |   MS-DOS   | 맮 㭪樨 MS-DOS
         Int 22        |   MS-DOS   |  襭 ணࠬ
         Int 23        |   MS-DOS   |  室 Control-C

                                      - 3-39 -
         ________________________________________________________________
                       |            |
           뢠  | । |            ᯮ짮
         (..) |            |
         ______________|____________|____________________________________
         Int 24        |   MS-DOS   |  ਩ 襭 -
                       |            | ⠫쭮 訡
         Int 25        |   MS-DOS   | 㭪 ⥭  ᮫⭮ -
                       |            |   ᪥
         Int 26        |   MS-DOS   | 㭪   ᮫⭮ -
                       |            |   ᪥
         Int 27        |   MS-DOS   | 㭪 "  ⠢
                       |            | १⭮"
         Int 28        |   MS-DOS   |  /⮩ DOS (-
                       |            | ࢨ஢)
         Int 29        |   MS-DOS   |  뢮 ᮫ (१ࢨ-
                       |            | )
         Int 2A        |   MS-DOS   | 䥩 MS-NET (१ࢨ஢)
         Int 2B - 2D   |   MS-DOS   | १ࢨ஢  MS-DOS (IRET)
         Int 2E        |   MS-DOS   |  "믮" (१ࢨ-
                       |            | )
         Int 2F        |   MS-DOS   | ࠢ ਭ஬ MS-DOS -
                       |            | ᨨ 3
         Int 30 - 3E   |   MS-DOS   | १ࢨ஢  MS-DOS
         Int 3F        |   MS-DOS   | ࠢ ૥ -
                       |            | 
         Int 4A        |   BIOS     |  ॠ쭮 ६ ( int 70)
         Int 67        |   EMS 4.0  | 䨪 塞 
         *Int 70/IRQ 8 |         |  ।⢠ ᮢ ॠ쭮
                       |            | ६
         *Int 71/IRQ 9 |         | 뢠  । IRQ 2
         *Int 72/IRQ A |         | १ࢨ஢ 
                       |            | ।⢠
         *Int 73/IRQ B |         | १ࢨ஢ 
                       |            | ।⢠
         *Int 74/IRQ C |         | १ࢨ஢ 
                       |            | ।⢠
         *Int 75/IRQ D |         |  ।⢠ ᮯ
         *Int 76/IRQ E |         |  ।⢠ 䨪஢
                       |            | ᪠
         *Int 77/IRQ F |         | १ࢨ஢ 
                       |            | ।⢠
         ______________|____________|____________________________________
         * - ⮫쪮 設 ⨯ AT
              MS-DOS  뢠   ⠭  ।-
         ⢮ ᯮ짮 㭪樨 MS-DOS   25h "⠭ 
         뢠".  ⠭ 祭 :  ॣ AL -
            ,     㧪    
          ॣ஢ DS:DX (ᥣ:ᬥ饭).   裡  ⥬,    
         ணࠬ ⨯  .COM  ॣ  DS ⠭    ᠬ
         祭,   ॣ CS,  ᮤন ॣ DS 㦥 
         ࠢ   맮.  ⥬ 㦠 ⠢訥 ॣ 
          맮   ᫥饣 ணࠬ :
             mov       dx,offset entry    ; 祭 窨 室 RTL
             mov       al,v_num           ; ⠭  
             mov       ah,25h             ; ⠭  뢠
             doscall                      ; 맮 MS-DOS

                                      - 3-40 -
             ᫥ ⮣,    ணࠬ EXRTL ⠭     
         ⢫    뢠, ⠭  ⠡-
          ஢ 뢠,  RTL ⮢  ᯮ짮.   -
          ணࠬ ᯮ  40h  ࠢ  ।-
             ணࠬ  EXRTL.  ணࠬ  RTL_TEST,   
         ⨭ 3-6,     ਬ஢ ணࠬ,  -
         饩   ⮩ ⤥쭮 RTL.
             䥩  ணࠬ  EXRTL    RTL_TEST  
         ᯥ稢 १ ⥪.  ணࠬ RTL_TEST 頥  ⥪
          㭪樨  믮  int 40h.  ⨬,    奬
         ⥪    RTL  ⫨砥   ⠪ 䥩  樨 CALL
         (맮),   ஬ 뢠 頥 䫠   ⥪,    ⠪
         ᥣ   ᬥ饭.
             । ࠢ        ᥪﬨ      
         .3-12.    int  40h । ࠢ १ ⠡
         ஢ 뢠    ணࠬ  EXRTL.  ⥬  ணࠬ
         EXRTL  롨ࠥ    㭪樨   ⥪,  ᯮ  ᠭ
          ⥪. ணࠬ EXRTL  ࠢ쭮 
         㭪樨 ,  ᫨  ࠢ, । ࠢ  ᮮ⢥-
         饬 ࠩ 㭪樨 ⥬ ᯮ짮  case. ᫥ -
           㭪樨 ணࠬ EXRTL 頥 ࠢ  -
         ணࠬ RTL_TEST  樨 IRET (Return  from  Interrupt  -
           뢠).
             ⥪  frame (ᬮ ⨭ 3-5) ⠪ ᯥ-
           ணࠬ  EXRTL    䫠 뢠饩 ணࠬ,
          ࠭  ⥪  冷    ஬.  ⥬  ஢
         䫠   ⥪  ᢮ ᮡ⢥ ॣ 䫠 ணࠬ
         EXRTL   祭  ७;  ⥬,  । -
         ,     ᪮஢ 䫠 ⭮  ⥪ ( 
         祭 䫠 ७).   樨    ணࠬ
         EXRTL ᯮ짮 䫠 ७  ᨣ樨 ᫮ 訡-
           뢠饩 ணࠬ,  ᯮ  IRET  -
         ⠭ 䫠  ⥪.

                     ⨭ 3-6. 믮 ணࠬ  RTL
         ----------------------------------------------------------------
         ;====== RTL_TEST.ASM -  䠩 ࠡ뢠 .COM 䠩 ========
         V_NUM   EQU     40h          ;  RTL ᯮ  40h
         INCLUDE STDMAC.INC           ; 祭 䠩 ஡⥪
         ;======    ===============================
         code_seg SEGMENT
                 ASSUME cs:code_seg
                 ASSUME ds:code_seg
         main    PROC    FAR
                 ORG     0100h
         start:  mov     cx,3         ; 砫  ࠢ쭮 祭
         loop:   push    cx           ;  㭪樨
                 int     V_NUM        ; 맮 RTL
                 pop     cx           ; ⪠ ࠬ 
                 jnc     nxt          ; 室, ᫨ 訡 
                 @DisStr caserr       ;  訡
         nxt:    dec     cx
                 jge     loop         ; 横 १ 0
                 mov     ah,4Ch       ; 襭 
                 @DosCall
         caserr  db      'Case Error - Illegal Function Code',CR,LF,'$'
         main    ENDP
         code_seg ENDS
                 END     start

                                      - 3-41 -

             ᫥ , ᪮쪮   ᯮ짮 ண-
         ࠬ EXRTL 樮 ⥬ MS-DOS,   砥 ࠢ-
          ।⢥  㣮 ணࠬ?   㣨 १-
          ணࠬ,  ।⠢    ᫥  ࠧ  ⮩
         ,   ந室  ⠪.   ணࠬ  ࠢ
         १ 뢠  ।  뢠 MS-DOS.

                       .----------------------.
                            |/\/\/\/\/\/\/\/\/\/\/\|  ஢
                             /\/\/\/\/\/\/\/\/\/\/\  ᥬ⢠ -
                            |                      |  8086
                            |----------------------|<---------------.
                   0000:0100|     IP  CS RTL    |--------------. |
                            |----------------------|              | |
                             \/\/\/\/\/\/\/\/\/\/\/               | |
                            |\/\/\/\/\/\/\/\/\/\/\/|              | |
                            |----------------------|<-------------  |
                            |      RTL      | ⠭  |
                             \/\/\/\/\/\/\/\/\/\/\/       RTL       |
                            |\/\/\/\/\/\/\/\/\/\/\/|                |
                 .----------|         IRET         |                |
                 |          |----------------------|                |
                 |           \/\/\/\/\/\/\/\/\/\/\/                 |
                 |          |\/\/\/\/\/\/\/\/\/\/\/| ணࠬ      |
                 |          |----------------------|짮⥫    |
                 |          |/\/\/\/\/\/\/\/\/\/\/\|                |
                 |           /\/\/\/\/\/\/\/\/\/\/\                 |
                  --------->|       Int 40h        |----------------
                            |/\/\/\/\/\/\/\/\/\/\/\|
                             /\/\/\/\/\/\/\/\/\/\/\
                            |----------------------|
                            |/\/\/\/\/\/\/\/\/\/\/\|
                             /\/\/\/\/\/\/\/\/\/\/\
                            |                      |
                             ----------------------

             . 3-12.   ⥪ ᯮ饩 ⥬ (RTL)

                ।, ⠭  १ ணࠬ?

                 ।,  ⥪ ᯮ饩 -
          (RTL)   㦥   ,   ⮫쪮  ᫥  ⮣
          ⮢ ணࠬ,   ᯮ.  
         ⥫⢠ RTL  ᥣ 室  .   -
               RTL,  稪 ᭠砫  ।
         㦥  㦥 RTL  ,   㦠  ⮫쪮 ⮣, ᫨
            .   ᯮᮡ । 
         RTL  ,     ᯮ짮 ।⥫쭮
         祭  뢠  㯠  RTL.
               ᯮᮡ - ⥭ ᮤন    뢠  -
         ।⢮ 㭪樨      35h "  뢠" 
         । 砫쭮  ணࠬ 㦨  뢠-
           (ISR  - Interrupt service routine).  騩 蠣 ⮨ 
         ⮬,  ⮡   ॣ DS  SI 砫  ⠭-
          饩 ணࠬ.  ⥬ 믮 
         CMPS (ࠢ ப)  ࠢ  ண  ⢠ -
         ⮢ ( ॣ CS)  ᥪ権 ணࠬ. ᫨ १ ࠢ-
          ⥫,  ணࠬ 㦥 ।⠢  . -
          ࠢ  ந諮,   ணࠬ  뫠 ⠭ 
         .  䥪⨢ ⮣ ᯮᮡ  㯠, ᫨  RTL
         ( १  ணࠬ)  稭   -
         ᫥⥫쭮 権.  ,  ,  䥪⨢  
         ᨫ쭮  ,  ᫨  १ ணࠬ  ᮤ-
           ,    ⨭ 3-7,     㭨-
         쭮   १ ணࠬ.
             ன ᯮᮡ ஢ન  RTL   १⭮  ண-
         ࠬ  ,  ॡ, ⮡  ᯮ㥬  -
          (  ⥬   40h     0FFh)  뫨
         ⠭  ⭮ ﭨ.   ﭨ   
         孥,    (0000:0000  FFFF:FFFF),  -
         ᮬ 樨 IRET.  MS-DOS ᨨ 2.0    28h ᥣ
         㪠뢠  祩 樨 IRET,      ࠭!
           襭  ࠡ⪨   襭  뢠-
             樠樨  ᯮ㥬 ஢ 뢠 
         㪠   ணࠬ  (ᬮ    6  "⠭
         ࠩ  ன")  ⠭ ࠩ ᥢ-ன-
         ⢠.  ࠩ  ⥬ ᮤঠ  IRET,  
         訡,  뤠  ᮫,   ,   ॡ.  
         ﭭ ।     ﭭ 㪠
          ࠩ 襭 뢠 (ਬ,   40h) ண-
         ࠬ ⠭    ࠢ      
         १⭮ ணࠬ,  ⮡ 㡥  ⮬, 뫠  㦥 -
         ⭠ ணࠬ ⠭  .





               ⨭ 3-7. 䨪 室 ப ணࠬ
         ----------------------------------------------------------------

         enter: jmp start                ; 室  
                 db '< ணࠬ>' ;    -
                 ...     ...             ;  
         start:  <砫 ணࠬ >
                 ...     ...
         ----------------------------------------------------------------

                     १ ணࠬ  

              ணࠬ 稫 ᯮ짮 RTL,    १-
         ⭠ ணࠬ   㦭,    室-
           ⠭ ,   뫠 ।  ⮩
         ணࠬ.      ᯮᮡ  㤠  १⭮
         ணࠬ  १㧪 ⥬.    -
           ,  ॡ ⥬,   ⥬
           । .  ,   祭 ⥫ 蠣 
          १ࢨ஢    権.
              ணࠬ  १㧪 ⥬ 室 -
            ᫥  蠣:
             1. ⪫祭 ணࠬ.
             2. ⠭ .
              蠣  ⮨  ⠭  㫥 ﭨ ,

                                      - 3-43 -
         㪠뢠饣  ணࠬ.  㫥 ﭨ   ⥭-
         樠  짮⥫  砥,   ணࠬ  -
         㯭. ᫨ १⭠ ணࠬ 뫠 ᯮ  ⪥
           ("")    ࠭ 饣 ,   
           ⠭ ⠪, ⮡  㪠뢠  ࢮ砫
         祩.   ணࠬ  ⠭ , ᫨
         祭  ண  ࠭ -  १⭮  -
         ணࠬ,  ணࠬ ⠭   .   -
          ࠭    ᫥饣  ⠭  -
           ⨭ ணࠬ INIT28 (⨭ 3-12)  REMOVE
         (⨭ 3-13).
             ᫨  १⭮ ணࠬ  ࠢ    
         ᢮  ᮡ⢥ 뢠  । (   ଥ
         ""),  । 㤠 १⭮ ணࠬ 室-
          ᯥ   뢠  ⮣ -
         ன⢠.      ⠡  ⠢   ⠪,
           .

                                                  
                                                       .----------------.
         AX:4B00 (.)<---㭪  |       ...      |
                                                       |----------------|
         BX:⥫   䠩  ASCIIZ ---------->|  䠩/ |
                                                       |  㫥   |
         DX:⥫   ࠬ --------.      |----------------|
                                                |      |       ...      |
           ENVIRONMENT () | \/\/\/\/\/\/\/\/ xxxx:0000 .--------
         ---------. |
                   | ASCIIZ string 1 |<----.    |
                   | ASCIIZ string 2 |     |    |
                   |       ...       |     |    |         
                   | ASCIIZ string N |     |    |      .----------------.
                   |  㫥    |     |    |      |        ...     |
                    -----------------      |     ----->|----------------|
                                            -----------|envir.seg  0 |
                                                       |----------------|
         ⮢   ப <------------|DWORD:㪠뢠 |
                                                       |      ⥪     |
                                                       |----------------|
         File Control Block 1:load @ 5Ch  <------------|DWORD:㪠뢠 |
         (FCB1- ࠢ 䠩 1:㧪 @ 5Ch)| FCB 1          |
                                                       |----------------|
         File Control  Block  2:load @ 6Ch <-----------|DWORD:㪠뢠 |
         (FCB2- ࠢ 䠩 2:㧪 @ 6Ch)| FCB 2          |
                                                       |----------------|
         砭:  㪠⥫ DWORD ࠭ ,  | OFFSET  (ᬥ-|        砭:  㪠⥫ DWORD ࠭    | OFFSET  (ᬥ-
                    ᫥饥  ᫥ SEGMENT (ᥣ-     |  )          |                   ),  ᫥饥  ᫥ \/\/\/\/\/\/\/\/ SEGMENT (ᥣ-
                    )                              \/\/\/\/\/\/\/\/                    )

              .3-13.  ࠬ஢   㭪樨  4Bh  (AL=0)  -
                                EXECUTE (믮)

             ᫥ ⮣,  १⭠ ணࠬ  RTL  ⪫-
         祭, 室 믮 ன 蠣, 騩  ⠭-
           .    ⠭    MS-DOS ।⢮
         㭪樨  ஬ 49h "᢮ ।  ". MS-DOS
         ࠧ筮,  ⭮    ⠭   ண-

                                     - 3-44 -
         ࠬ,  ⠪  ᫨  砫     १⭮
         ணࠬ,      ᢮  ⠭.
         ⠭ ணࠬ  筮  ।    ,
         ⠪     権  ᯥ祭  㭪樨 맮-
          ணࠬ  ᮮ饭   饭  㤠 ᠬ  -
         .   ணࠬ,     ⠭ ।⢮
         ᯮ짮 ஢ 뢠,   楫 ஢ 
         㤠 ᠬ ᥡ,    । ன  -
         .
             ᫨ ⭮,   ᥣ  뢠 ண-
         ࠬ   ᥣ    ணࠬ  ,  
         㣨 ᯮᮡ  ᠭ ணࠬ ⥭ ,  -
         ।    ᥣ  ,   ஢-
          MS-DOS  ᢮ .
                    ᯮᮡ  ࠡ⠥, ⠪
          MS-DOS   ⠭  . ஡ ᪮॥ -
          ⭮  ७ ஡ MS-DOS, ⠪   -
         ⭮  ।⠢  믮  ⨢稢
         ॡ.

                   㭪 4Bh - 㧪  믮 ணࠬ

              ணࠬ  RTL 祭  樨  -
           室  䠩 짮⥫   䠩,   
         砥 ணࠬ   㧨   ணࠬ 
         ,    ᯮ짮   ⢥ ૥ (४뢠-
         ) ணࠬ,         ⠭  १⭮
         ணࠬ.   砥, ࢮ砫쭠 ணࠬ 뢠
         ஦饩 (parent),  㣠 ணࠬ ஦ (child).
             MS-DOS  ⠪ 砥 ᯥ稢 㭪 㧪   -
           ணࠬ    4Bh.   㭪  믮 
            ०.   ०  -  믮  ணࠬ  -
         ।祭   㧪 ணࠬ 䠩    믮-
          ⮩ ணࠬ.  ஦ ணࠬ 믮  ࠢ-
           ஭ ஦饩 ணࠬ.  ० 롨ࠥ -
         ⥬  ⠭  ॣ  AL    㫥  祭    ⠭
         ᮮ⢥ 祭   ࠬ஢. ࠬ, ॡ㥬
           믮 㭪樨 4Bh,    .3-13,   ਬ -
         㧪    믮  ணࠬ ᮤন  ணࠬ LOAD (-
         㧪),   ⨭ 3-8.  ஡⥪, 㯮
          ணࠬ LOAD,   ⠪ ,   ᯮ짮  ண-
         ࠬ EXRTL (ᬮ ⨭ 3-5).

             ⨭ 3-8. 㧪 ணࠬ   㭪樨 MS-DOS
                                   4Bh (AL = 0)
         ----------------------------------------------------------------

         ;======LOAD.ASM -  䠩 ࠡ뢠 䠩 ⨯ .COM ========
         ; LOAD   㧪  믮 㣮 ணࠬ.
         ; LOAD 뢠 ⥬  ᫥饩 ଠ樨:
         ;      "LOAD < 䠩> < 㬥 ணࠬ>
         ;  LOAD   䠩,  ⠪   䠩  -
         ; ⠬   ⮫쪮  ᨬ "஡".  䠩
         ;   ७.
         ;
         NEWPROG EQU     82h  ;   㧪  ப  PSP
         NEWSTR  EQU     81h  ;  ப  PSP (஡ 20h)
         NEWLEN  EQU     80h  ;    ப

                                     - 3-45 -
         ;
         INCLUDE STDMAC.INC      ; 祭 ᠭ ஡⥪
         ;======   =====================================
         ;
         code_seg SEGMENT
                 ASSUME  cs:code_seg
                 ASSUME  ds:code_seg
                 ORG     0
         SEG_ORG EQU     $
         main    PROC    FAR
         start:
                 mov     sp,offset TOP_STK ; ⠭ 設 ⥪
         ;
         ; ࠬ᪨ ࠧ  ப  ᪠  
         ; ஡. ८ࠧ  ணࠬ  ப ASCIIZ.
         ;
                 mov     bx,0              ; ⪠ BX
                 mov     bl,NEWLEN[bx]     ; 祭  .ப
                 or      bl,bl             ; ஢ઠ  ப
                 jnz     cmd_ok
                 @DisStr bad_cmd           ; 訡   ப
                 jmp     exit
         cmd_ok:
                 dec     bx                ; ⠭ 1  ஡
                 mov     cx,bx             ; ஢   稪
                 mov     di,NEWPROG        ;   (1-  ஡)
                 mov     al,' '            ;  祭 (஡)
                 repne   scasb             ;  ७ 䠩
                 pushf                     ; ࠭ १ ᪠
                 sub     bx,cx             ; 祭 ⠢襣 -
                 popf                      ;   १⮢ ᪠
                 jz      set_zb            ; 㫥 䫠 => ࠬ
                                           ; ( ஡)
                 inc     bx                ; 㫥 䫠 ࠧ㬥-
                                           ;   ப
         set_zb:                           ; ८ࠧ 
                                           ; ப  ASCIIZ
                 mov     byte ptr NEWSTR[bx],0
                 mov     cmd_buf,cl        ; ⠭  ப -
                                           ; 
                 cmp     cl,0              ; ⨣  ப?
                 jle     free_mem          ;  ࠬ஢ 
         ;
         ; ਥ ⪠ ப  ।   ⥪⮢  -
         ;  ப  뢠 ணࠬ
         ;
                 inc     cl                ; । CR
                 mov     si,di             ; । 室 
                 mov     di,offset cmd_txt ;  ⠭  -
                                           ; 祭
                 rep     movsb             ; । ⪠ ப
                 add     cmd_buf,1         ; 㢥祭 ⢠ ஡.
         ;
         ; ᢮ ⥬   稪  뢠
         ; ணࠬ. 饭  ।  室
         ; 㬠.

                                      - 3-46 -
         ;
         free_mem:
                 mov     bx,(offset LST_BYT - SEG_ORG + 15) shr 4
                 mov     ah,04Ah           ; ES ᮤন  PSP
                 @DosCall                  ; 䨪 ।. 
                 jnc     modify_ok
                 push    ax                ; (饭  ⥪  訡-
                                           ; )
                 @DisStr fail4A            ; ᮮ饭  訡 
                                           ; 襭, ᫨ ᡮ
                 jmp     error
         ;
         ; ⠭  ࠬ஢  ॣ஢ ࠬ஢ 
         ; 맮 㭪樨 㧪  믮 ணࠬ.
         modify_ok:
                 mov     ax,cs             ; ⠭  ࠬ஢
                 mov     p1,ax             ; ᥣ⮢   ᥣ
                 mov     p2,ax
                 mov     p3,ax
                 mov     dx,offset NEWPROG
                 mov     bx,offset param_block
                 mov     spoint,sp         ; ࠭ 㪠⥫ ⥪
                 mov     ax,4B00h          ; 㭪 㧪  믮-
                                           ;  ணࠬ
                 @DosCall
         ;
         ; ⠭ ॣ஢ ᥣ  㪠⥫ ⥪ ᫥
         ; 맮.
         ;
                 mov     cx,cs             ; 㡫஢ CS   ᥣ.
                 mov     ss,cx          ; ᭠砫 ⠭ ⥪
                 mov     sp,cs:spoint   ; ⠭ 㪠⥫ ⥪
                 mov     ds,cx
                 mov     es,cx
                 jnc     exit      ; 室  ணࠬ, ᫨  
                 push    ax                ; ࠭  訡
                 @DisStr fail4B            ; 뢮 訡, ᫨ ᡮ
         ;
         ; ࠬ᪨ ࠧ  訡, 頥 ⥬
         ;  ⮡ࠦ ᮮ⢥饣 ⥪ ᮮ饭
         ;
         error:
                 pop     ax        ; ⭮ 祭  訡
         @Case   ax,<+,2,7,8,9,10h,11h>,<em1,em2,em7,em8,em9,em10,em11>
                 mov     dx,offset err0    ; 宩  訡 - ࠢ
                 jmp     merge
         em1:    mov     dx,offset err1    ; ࠢ쭠 㭪
                 jmp     merge
         em2:    mov     dx,offset err2    ; 䠩  
                 jmp     merge
         em7:    mov     dx,offset err7    ;  ७
                 jmp     merge
         em8:    mov     dx,offset err8    ; 筮 
                 jmp     merge
         em9:    mov     dx,offset err9    ; ࠢ  
                 jmp     merge
         em10:   mov     dx,offset err10   ; ࠢ쭠 ।

                                      - 3-47 -
                 jmp     merge
         em11:   mov     dx,offset err11 ; ࠢ ଠ 䠩 .EXE
                 jmp     merge
         merge:  mov     ah,09h            ; ⮡ࠦ ப
                 @DosCall
         exit:   mov     ax,04C00h         ; 襭  砭
                 @DosCall
         main    ENDP
         ;
         bad_cmd db      'Error in Command Line',CR,LF,'$'
         ; 訡   ப
         fail4A  db      'Failed to Modify Allocated Memory Blocks'
                 db      CR,LF,'$'
         ; ᡮ  䨪樨  । 
         fail4B  db      'Failed to Load Program Overlay',CR,LF,'$'
         ; ᡮ  㧪 ணࠬ ૥
         err0    db      '>>> UNKNOWN ERROR CODE <<<',CR,LF,'$'
         ;   訡
         err1    db      '>>> invalid function <<<',CR,LF,'$'
         ; ࠢ쭠 㭪
         err2    db      '>>> file not found <<<',CR,LF,'$'
         ; 䠩  
         err7    db      '>>> memory arena trashed <<<',CR,LF,'$'
         ;  ७
         err8    db      '>>> not enough memory <<<',CR,LF,'$'
         ; 筮 
         err9    db      '>>> invalid memory block <<<',CR,LF,'$'
         ; ࠢ  
         err10   db      '>>> bad environment <<<',CR,LF,'$'
         ; ࠢ쭠 ।
         err11   db      '>>> bad .EXE file format <<<',CR,LF,'$'
         ; ࠢ ଠ 䠩 .EXE
         ;
         spoint  dw      ?                 ;   㪠⥫ ⥪
         param_block     label word
                 dw      0    ; ᯮ㥬 । ஦饩 ணࠬ
                 dw      offset cmd_buf
         p1      dw      ?                 ; ᥣ  ப
                 dw      5Ch               ; ᥣ FCB #1  ᬥ饭
         p2      dw      ?
                 dw      6Ch               ; ᥣ FCB #2  ᬥ饭
         p3      dw      ?
         cmd_buf db      ?                 ;   ப
                 db      ' '               ; ᥣ । ஡
         cmd_txt db      80 dup (?)        ; 80 ᨬ
         ;
         ; ᠭ 쭮 ⥪
         EVEN                              ; ᫮ ࠢ ⥪
         stack   db      32 dup ('stack   ') ;  ⥪
         TOP_STK EQU     $-2           ; ⠭  設 ⥪
         LST_BYT EQU     $                 ; ᫥   ணࠬ
         ;
         code_seg ENDS
                 END     start
         ----------------------------------------------------------------

             ன ०  뢠  Load  Overlay (㧪 ૥

                                      - 3-48 -
         ணࠬ).   ⮬ ० 㦠 ணࠬ 䠩, ०
         Load Overlay  믮 맮 ணࠬ.   ⮣ ࠢ-
          ࠧ  頥  뢠 ணࠬ.   ० -
         ࠥ ⥬ ⠭  ॣ AL 祭,  ࠢ 3. 
         ࠬ஢  ⮣ ०   . 3-14.
               ०  㭪樮஢  ।  믮  㭪樨
         㧪  믮 ணࠬ  砫쭮 । -
         뢠饩 ணࠬ   ਢ  室  ﭨ 
         ᢮ ࠭⢠ . MS-DOS 㦠 ணࠬ, -
          ணࠬ 稪 䠩 COMMAND.COM,   -
          १⭮  䠩 COMMAND.COM.  ணࠬ 稪
             ᠬ ᥡ  ᪠ । ⥬,   ᬮ
         㧨  ணࠬ 짮⥫  ૥ ணࠬ.  (
         ⠪ ।,    ⥬  ⮩ 㭪樨   ࠡ-
          , ᮤঠ騩 䠩 COMMAND.COM).

                                                  
                                                       .----------------.
         AX:4B03(.) <------ 㭪 Load Overlay  |       ...      |
                                                       |----------------|
         BX:㪠⥫   䠩   ASCIIZ ----->|  䠩/ |
                                                       |  㫥   |
         DX: 㪠⥫   ࠬ஢ ------.      |----------------|
                                                |      |       ...      |
                                                |       \/\/\/\/\/\/\/\/
                                                |
                              |         
         0000:0000 .----------------.           |      .----------------.
                   |⥬  - |           |      |                |
                   |஦ ண- |           |      |       ...      |
                   |    ࠬ       |           |      |                |
                   |      ...       |            ----->|----------------|
                   |                |                  | 㧮- |
         xxxx:0000 |----------------|<-----------------| ᥣ   |
                   | ணࠬ |                  |----------------|
                   |      ...       |                  | ன|
                   |----------------|                  |----------------|
                   |                |                  |                |
                    \/\/\/\/\/\/\/\/                    \/\/\/\/\/\/\/\/

               .3-14.  ࠬ஢  㭪樨 4Bh (al = 3) -
                   LOAD OVERLAY (㧪 ૥ ணࠬ)

              㧪 ૥  ᯮ ணࠬ   -
         ⢥ ⫨稥. ૥ ணࠬ 㦠  ࠢ-
          ஦饩 ணࠬ  ,  ।  ஦饩
         ணࠬ,  ⠥  ஦饩 ணࠬ. ணࠬ
         䠩, ।祭  믮 (㭪 4Bh  ॣ஬ AL
         = 0),  㦠  , 롨ࠥ ⥬ MS-DOS,  -
         ᬠਢ  ⤥쭠 ணࠬ.

           㧪  믮 ணࠬ १ MS-DOS ( 4Bh  AL=0)

              ᯮ짮 㭪樨 㧪   믮 MS-DOS  -
             ⮫쪮 筮 ⢠ ᢮   -
         㧪  ணࠬ  稪  䠩  COMMAND.COM,     ⠪
         筮  ⢮  ᢮      ࠧ饭 

                                     - 3-49 -
         ணࠬ.   ᯮ ⠪  ᮧ    -
         砫쭮 ।  ணࠬ.  ᯮ,    -
         砫쭮 । ஦饩 ணࠬ   ⠭-
           筮 訬  ।࠭ ⥪饩 ணࠬ,  
         १  樮 ⥬ MS-DOS   㧪 
         ணࠬ.  ஬  ⮣,  設⢮ १ ணࠬ 
         RTL ᠭ  ଠ ⨯ .COM.  ணࠬ ⨯ .COM -
          ⥬ MS-DOS ⠭ ⥪  砫 襣 -
          㯭   饬 ᥣ,    ᯮ  
         ணࠬ ,   ⥪. ᫨ 設 ⥪  ࠨ-
           ᥣ,     饭  64  ஦-
         饩 ணࠬ.  ᫨  ⥪ ࠨ  ᥣ,  
         ,  室  ⥪, 㤥 ﭮ (ਬ,  -
           MS-DOS).  筮,    MS-DOS  ⥪  㦥,  ᫨
         ᯮ 㭪   4Ch.

                  ᫥⢮  ࠢ ஦ ணࠬ

              ᫨ ஦ ணࠬ ⮭,  ஦ ண-
         ࠬ      ⥯ ⢨   ஦
         ணࠬ.   ⢨ 믮  १  ᫥⢮,  ..
          ஦饣  ⢮ - -
            ஦   ⠫쭮 ⥬.
              . 3-13   ,  ஦騩  ਬ
         ஦    ப,  । (  -
           ஦饣 ,  ᫨   㪠  맮 EXEC) 
          ࠢ 䠩.  ஬ ⮣,   㦠-
         ,   ⮬᪨ ᫥ 設⢮ ᥣ⮢ ணࠬ
         䨪 ᢮ ணࠬ,   ⠡ ⥫ 䠩  -
         ஦饩 ணࠬ.   㫨஢ ⨬ ⠬ ஦-
          ணࠬ ࠢ ६ ࢨ묨 ⠬, ࠢ-
         騬  ணࠬ:     ப,   ⠡楩 ⥫
         䠩    ।.
              묨  ப:  ।   ஦ -
         ,  ᯮ㥬  ਣ襭 ⥬   -
         .   ࢮ 砥  ப ⠭ ⢥⢥
         ஦饣   ⠭  ७祭 -  -
         ,  筮 ࠡ뢠 䠩 COMMAND.COM.  ..  ஦
          ᫥ ⠡ ⥫ 䠩 ஦饣  -
         ,   ஦騩    ७ /-
          ஦  .    祭 ⥫,
         ࠭    ன⢠  ⠭⭮     뢮 stdin 
         stdout ஦饣 ,  ஦騩    ।-
         騥  stdin,  stdout, ⠪   㣨 ⨬ -
         ன⢠ ஦ . ஦騩   
         ,  ᯮ  孨᪨ ਥ,    ⨭ 3-3 (
         ࠧ " ⥫ 䠩 PSP"),  ⥬ ᯮ짮
         㭪権 MS-DOS  㫨஢ 䠩  ன⢠. (
          ⠪ 㭪権,     ᯮ짮   -
         ࠡ⪨,  㭪 MS-DOS   46h "ᯮ짮 㡫-
          ⥫"- 뢠 int 21h).
             ⨬,   ࠡ⪠      祭    -
         ⢠  ᫥.    ⨨  䠩  ன⢠ 
           㪠  ० OPEN () ( 㭪 MS-DOS  
         3Dh " 䠩  ன⢮" - 뢠 int 21h),  ⮬
          7 ० OPEN  ⮬ ᫥.  ⠭ -
             0  (ਭ  㬮砭), ࠡ⪠    

                                     - 3-50 -
         ᫥㥬  - ஦ ᮬ. ᫨   -
         ⠭  1  맮 㭪樨 OPEN,  頥  ࠡ⪠
         㤥 ᢮  ᫥.
              㣮 ᯮᮡ,  ஬ ஦騩  -
          ࠢ ⥬ ⮡ࠦ ஦ .  -
             ࠬ஢  㧪    믮  
         㪠⥫   । ஦ .  ᫨ 㪠⥫ 
          ࠬ஢ 㧪  믮 ࠢ ,    ஦-
           㡫 । ஦饣 . ᫨ 
          ࠢ ,   ⢥ । ஦  㦠-
           ।, 㪠뢠 ⨬ 㪠⥫.
                砥  ?  砥,   
         ணࠬ ᪠  ।  ⤥ ⮢  ⥬ -
         짮  祭  ⠭ ࠬ஢  ६  믮-
          ணࠬ.     ⠢   । -
         ⥬      SET  (⠭)    ࠢ  ⢨ﬨ
         ணࠬ,   ⠥    ᢮  ।. 
          ஦騩     ।,   ⥬  ᠬ
         ஦騩     ஦ -
         , 饣  .
             믮騩   ⢫   ᢮ -
          । ।⢮ 㪠⥫,  ࠭饣   ᬥ饭  2h  
         PSP.  ⥫ ᯮ  ⢥  ᥣ  㫥
         ᬥ饭, 㪠뢠騬  砫 . ᫨   ।-
            ॣ 譥 ᥣ   ॣ ,   ண-
         ࠬ  믮  ப  宦 ॡ㥬 -
         ஢.    ⮬    ஦,  ⮬   
          PSP.
             ଠ, ᮤঠ  PSP,  ⢨⥫쭠   䠩
         ⨯ .COM,  ⠪   䠩 ⨯ .EXE,    ⨯ 䠩  
          ᯮ짮  㭪樥 㧪  믮 ணࠬ.

                      믮  MS-DOS  㭪樥 4Bh

                ਫ  㭪樨  㧪  믮 
         㧪 䠩 COMMAND.COM.  ᫨ ਭ  ,    䠩
         COMMAND.COM  뤠  १  ப ⥪-
          ,   㢨,   ணࠬ 짮⥫ -
           뢠  ஥   MS-DOS.  ஬ ⮣,  
         ப, । 䠩 COMMAND.COM,  ᮤঠ ७-
         祭,    䨫.  ଠ ⥪ ,  ᯮ㥬
          ⮬ ᯮᮡ,   ⠪ ,  ᯮ  砫쭮
           ப,    ᪫祭  ⮣,     맮 䠩
         COMMAND.COM  ணࠬ,  ⥪   稭  ᨬ-
          /c.
             㧪  ணࠬ 䠩  (COMMAND.COM    ਪ
         ணࠬ)  믮 ⮫쪮  ணࠬ 䠩  -
          ᮪䥪⨢ ᯮᮡ  믮  ணࠬ.  ,
         ᫥  ਭ         ந⥫-
         , ⨣  ᯮ짮 ⮣ ᯮᮡ.

                                ।०

             堭 㭪樨 㧪  믮 ணࠬ   ᨨ 2.0
         MS-DOS    쥧  孨᪨ ⮪.   믮
         㭪樨 "嫠"  ॣ ᥣ⮢ ( ᪫祭 -
          ᥣ), ࠧ蠥 㪠⥫ ⥪  ࠧ蠥 -

                                     - 3-51 -
         設⢮  ॣ஢.  ᫨  㭪 ᯮ    
         ᨥ MS-DOS ᨨ 2.0 (.. 2.00  2.10),  । 맮-
          㭪樨 室 ࠭   㪠⥫ ⥪  
         騥  ॣ,  室    쭥襣 ᯮ짮;  
         ⠭   ॣ ᥣ⮢,  㪠⥫ ⥪  
         室  騥 ॣ ᫥ 믮 㭪樨.  ਬ -
         ᫥⥫쭮 ணࠬ ,  ।祭  믮-
             ⢨   ணࠬ 䠩 ⨯ .COM,   
         ⨭ 3-9.
              ணࠬ  䠩 ⨯ .EXE  ⠭ -
         騥 祭 ᥣ   祭,  ⠭  騪
         LINK (ਬ,  mov ss,stack),   , ࠧ頥 
         ணࠬ ᥣ.   ⥪ 室   ⮬,
          ᫥⥫쭮 ⠭ ⥪ ᥣ  㪠-
         ⥫ ⥪   ⠪,   ᭠砫 㪠뢠  㪠⥫
         ⥪,  ⥬ ⥪ ᥣ.
             稭  ᨨ MS-DOS 3.0,   ⮪ ࠭. 㭪-
          㧪  믮 ணࠬ 頥  ॣ "-
         ஭묨".

         ⨭ 3-9. ⠭ 室 ⮢  믮
                      㭪樨 㧪  믮 ணࠬ  ண-
                      ࠬ 䠩 ⨯ .COM  MS-DOS ᨨ 2.XX
        -----------------------------------------------------------------
             ...
             <⠭ ࠬ஢ 뢠饩 ணࠬ>
             ...
             mov    spoint,sp   ; ࠭ 㪠⥫ ⥪  
             mov    ax,4B00h    ; 㭪 㧪  믮 -
             int    21h         ; 맮 MS-DOS
         ; ॣ  , ᫨ ந ᡮ  㧪 --
         ; ⠭  믮
             jc     error       ; 室  訡
             mov    ax,cs       ; 祭 饣 ᥣ
             mov    ds,cx       ;  ᥣ 
             mov    es,cx       ;  譥 ᥣ
             mov    ss,ax       ;   ⥪ ᥣ
             mov    sp,spoint   ; ⥪ ⥯ ୮ ஢
             ...
             <⠭  ॣ஢>
             ...
         ----------------------------------------------------------------


           㧪 ணࠬ ૥ (४) ।⢮ MS-DOS
                            ( 㭪樨 4Bh  AL = 3)

              믮   ணࠬ  㣮  
         ᠬ  ஬ ⨦,    ⮬   -
          ⮪,  騩  ⮬,  ᫥ 믮 -
         뢠 ணࠬ ந室  襭.  ,    
          ࠧࠡ稪 ணࠬ  뢠  ணࠬ 
         믮  㭪権,     ⮬  ⥫쭮  
             ⥯  ࠢ  ஦ ணࠬ,  
          ⥯ 裡  ஦ ணࠬ,    -
           ⭮ 맮 ஦ ணࠬ   -
          १㧪.   砥  㭪樨 4Bh MS-DOS ।-
         ⠢  Load Overlay (㧪 ૥).

                                     - 3-52 -
               ⫨稩 㭪樨 㧪 ૥  㭪樨 㧪
           믮 ணࠬ  ,    㧪 ૥
         ணࠬ ஦ ணࠬ  ।祭   䨪樨
         ࠬ஢ ஦ ணࠬ.    ⮬,  -
         ஦  ஦ ணࠬ,  ᠬ ,  -
            ⮩  ணࠬ.  ,  믮 㭪 㧪
         ணࠬ ૥,   㧪 ⥫쭮  ணࠬ
          (/  ணࠬ)  .
             㣨 ⫨稥 㧪 ૥  㧪  믮 -
           ,   㧪 ૥  ॡ    -
         .  㧪 ૥  ।  ।   砫-
          ।,   㭪 㧪  믮 ணࠬ.
         㭪 㧪 ૥  㦠  訢  䠩  
         ,  ࠨ 祭 ᥣ⮢ ணࠬ  ᮮ⢥⢨ 
         ࠬࠬ,  ᯥ稢묨  맮 㭪樨 (  
         .3-14).  祭  ணࠬ      믮 
         ணࠬ,    믮  ⤥쭠 ணࠬ.
             ᫨ ૥  蠥 ।⢮   㭪権 -
         襭 MS-DOS,   蠥  ૥  ஦  ணࠬ.
         ᫨  室 ᯮ 㭪 31h  㭪 27h ("-
           ⠢ १⭮"),     砫쭮
         ।  ஦饩 ணࠬ,   ஦ ணࠬ
         ⠥  .  ஦ ணࠬ  ⠭  १⭮
         ⮫쪮  ⮣,    襭   筮
         訬,  騬  ஦  ஦  ணࠬ.  ᫨
         믮   㭪権 襭 ணࠬ,   ணࠬ
         㤠  .
             .3-14 뢠,    䠪 ன,  㪠뢠 
          㭪樨 㧪 ૥,     㧪
         ૥.  䠪 ன ᯮ 䨪 ᬥ-
          뫮  㦠 ணࠬ. ᫨ ૥ 㦠
          ଠ .COM,   䠪 ன    㦠-
          ૥    ⠭  㫥 祭.
              ணࠬ 䠩 ⨯ .EXE 䠪 ன 
          祭 뫮 ᥣ⮢,    䠩 㧪.
           㧪  設⢠ ૥ ணࠬ ⨯ .EXE (
         筮 ࢮ砫쭮   㬮砭  0000:0000)  䠪  ன
            ⠭    ᠬ 祭,     -
         㧪.

                ணࠬ ૥  ஦饩 ணࠬ

             ᫥ 㧪 ணࠬ  ૥   ஦  ணࠬ
           ⢨   .    ஦ ணࠬ
          ,  ஬  㦥 ணࠬ ૥,  
         㯠  ૥   뤠  CALL  
         室 JMP.    ૥  樨 CALL ४-
           ⮩ 稭,   ૥ ⥬ ᬮ   -
         ஦ ணࠬ ⥬ ᯮ짮 樨 RET, 祬 -
             ஦ ணࠬ  樨 JMP.
         ᫨   ࠢ  ஦ ணࠬ    㦭,
          ।⥫쭥 ᯮ짮 樨 JMP.  ૥,  -
          砥, ᮤন 맮 㭪樨 襭 ணࠬ.
              ᯮᮡ 㯠  ૥ (  樨  CALL, 
           樨 JMP)   뫪  far (). ணࠬ-
          , 㦠  ૥,   ⭮⥫  ⭮-
         襭  ᮡ⢥  ᥣ      ᯮ 

                                     - 3-53 -
         ⮬  ᠬ ᥣ,   ஦ ணࠬ (  
          㦥    ᠬ ⮪ ).  ஬ ⮣,   -
          㭪樨  "㧨 ૥"  ந  PSP.   
           ⥫쭠 ଠ,  頥    -
         稪, ணࠬ      ૥ 䠩 -
         , 稭 筮  㪠  㧪.
             ᬮਬ ⥩訩 砩 : ૥, 㦠  䠩
         ଠ .COM.  䠩 ଠ .COM  砫 100 (⭠-
         筮 祭). ..   䠩 稭   100
         ⭮⥫쭮  ᥣ⮢.   뫪, ᮤঠ騥  ணࠬ,
          ⭮⥫묨  ⮬ . .. 䠩 .COM 㦠-
          אַ   㧪,  ४⭮ ᯮ짮 
         㧪  ⢥ 祭 ᥣ  ૥. .3-15 -
         뢠,   ᫨  㧪 ᯮ   ⢥  
         ᥣ,    祭  ᬥ饭  ணࠬ  ᬥ 
         100 (⭠筮 祭).  ࠢ  ᥣ  
         ᯮ짮      㧪   10 (⭠筮
         祭),   ६頥 ᬥ饭 ணࠬ    100
         (⭠筮 祭).
              ணࠬ 䠩 ଠ .EXE  㣨 ஡-
         .    䠩 ଠ .EXE 㦠  믮,  MS-DOS
         樠 ணࠬ  ⥪ ᥣ    㪠  
         騩  ᥣ  㪠⥫ 樨  㪠  
          ணࠬ.   䠩 ଠ  .EXE  㦠  
         ૥, MS-DOS  ᯥ稢  祭.  ⮣ ஦-
          ணࠬ 㧭, 㤠  ணࠬ?

                              /\/\/\/\/\/\/\/\/\/\/\/\
                             | 訥   |     
                             |-----------------------|<---    
                             |            ^          |   Segment:CS_RUN
                             |            |          |   CS_LOAD:10(hex)
                             |         100 (hex)     |
                             |            |          |
                |            V          |     
         Segment:CS_LOAD---->|-----------------------|<---
                             |ணࠬ  ૥| CS_LOAD:0000(hex)
                             |          ...          | CS_RUN: 0100(hex)
                             |-----------------------|
                             |      ૥    |
                             |          ...          |
                             |-----------------------|
                             | 訥   |
                             |/\/\/\/\/\/\/\/\/\/\/\/

              .3-15.   ᥣ   㧪
                                 ૥ ଠ .COM

                䠩  ଠ .EXE  㫥 砫,   
          CALL  JMP ᯮ짮   室   -
         㧪?  㤥   ⮣,   ᠭ ணࠬ.  
         䠩 ⨯ .EXE, ᮧ   室 䠩, -
         騪 LINK  MS-DOS 㦠 ᥣ    ⮬  ᠬ -

                                      - 3-54 -
         浪,  ஬    室 ணࠬ!  騬  -
         浪    ।  ᥣ⮢  ᫥騩:  ⥪
         ᥣ,  ⥬ ᥣ ,  ⥬ ணࠬ  ᥣ.  (
         稭  樨  뫮 ।  ணࠬ ᥣ).  
          맮 ணࠬ ଠ .EXE   樨  CALL  
            㧪,  ணࠬ ᥣ    ᥣ-
         ⮬  䠩 .ASM,  窠 室   ࢮ 樥
          ணࠬ ᥣ. ஠ᥬ MASM  騪 LINK 
           ⨬  ஡,        MASM
             室  ᯮ짮 ४⨢ 饭
          ࠧ襭 뫮 ।.
             ⨭ 3-10  뢠    ᫥⥫-
          㧪   맮,    ᯮ  㭪  㧪
         ૥  䠩 ଠ .COM.  ᫥⥫쭮  ணࠬ
         ଠ .EXE .  㦭 ६饭   㧪  -
         ᠬ  믮.  ।,   ॣ ᥣ⮢
          ஦饩 ணࠬ 㦥 樠஢   㦥 뫠  -
           㭪  䨪樨  ।   ᢮
         筮 ࠭⢠  稪 䠩 COMMAND.COM.

               ⨭ 3-10. 㧪    ணࠬ ⨯ .COM
                            㭪樨 4Bh (AL = 3)
         -----------------------------------------------------------------

                 ...                               ...
         ; ।   ૥
                 mov   ah,48h         ; 㭪 । 
                 mov   bx,1000h       ; । ᥣ  64 
                 int   21h            ; 맮 MS-DOS
                 jc    error          ; 室, ᫨ ந諠 訡
                 mov   params,ax      ; ࠭  
         ; 㧪 ૥
                 mov   dx,offset params ;    ࠬ஢
                 mov   bx,offset filename ;    䠩  ASCIIZ
                 mov   ax,4B03h       ; 㭪 㧪 ૥
                 int   21h            ; 맮 MS-DOS
                 jc    error          ; 室, ᫨ ந諠 訡
         ; 맮 ૥
                 mov   ax,params      ; 祭  㧪
                 sub   ax,10h         ; ࠭   믮
                 mov   run_seg,ax     ;  ࠭ 
                 push  ds             ; ࠭ ᥣ 
                 call  dword ptr run_adr ; 맮 ૥
         ; ᢮ ,  ᯮ짮  ૥
                 pop   ds             ; ⠭ ᥣ 
                 mov   ah,49h         ; 㭪 ᢮ 
                 mov   as,params      ; 祭   
                 int   21h            ; 맮 MS-DOS
                 jc    error          ; 室, ᫨ ந諠 訡
                 ...                               ...
         params  dw    ?              ;  㧪
                 dw    0              ; 祭 ன
         run_adr dw    0100h          ;  㪠⥫ 樨
         run_seg dw    ?              ;  祭  ᥣ
         -----------------------------------------------------------------


                                      - 3-55 -
             ਬ  ணࠬ ।   ࠧ饭 ணࠬ-
            ૥.   १ࢨ    ⠪,  
         ᫨  ૥ । ,  砥  .
         ⨢, ૥  । ,   㦥 -
         ,   १  ᠬ  ᥡ.  ⢨⥫쭮   १ࢨ㥬
         ࠭⢮     ⠭  䠪᪮ ࠧ-
          ૥.
             ૥   ⠪ ,  室  믮-
          ணࠬ.   ࠧ ਠ  ᯮ짮  㭪樨
         㧪  ૥  ᫥      ,   MS-DOS 祣 
         ।ਭ  ।饭 㧪 ૥  孥 
         ⥪饣  믮 ணࠬ   㣮  , 
         ᠬ ⥬!   ⤥ ணࠬ   ⠪ 
         ,  ਬ  ४,   ⮣ 室-
          ᫥  ⥬, ⮡     砩.



                           㧪 १ ணࠬ

              ணࠬ  ⥪ ᯮ饩 ⥬ RTL
           ⠭   㣮 ணࠬ  㦠 ।⢮
         㭪樨 㧪  믮 ணࠬ,  ⠪    ண-
         ࠬ  ᢮ ᮡ⢥  .    뢠-
          (஦) ணࠬ 砥 ࠢ ᫥  ⮣,  
         樠஢   ᥪ १⭮ ணࠬ 믮 -
          "  ⠢ १⭮".
             ᫨ 뫠  㦥 ⮭ १⭠ ணࠬ,  
         ஦ ணࠬ 蠥,  ⠢ १ ண-
         ࠬ    .  ਢ  ࠧ ᢮ -
           "᪨",   樮 ⥬ MS-DOS    -
           ᫥騥 ணࠬ  १ ணࠬ.  ᫨
         뫠  㦥 RTL,   ஦ ணࠬ 뫠  ⮢ 
         맮  RTL,      室.   襭 ஦
         ணࠬ   ⠢ RTL    ᫥-
         饣 ᯮ짮  㤠  ⥬    -
           室 ﭨ  ᢮   .
               㭪 㧪  믮 ணࠬ  ନ-
          뢠 ணࠬ   㧪  १⭮  -
         ணࠬ     裡  ⥬,        ।
         ⭮  ஦ ணࠬ  ⢥ , १ࢨ-
            室 ணࠬ (ᬮ 㭪   31h "-
           ⠢ १⭮"),    । 祩 㤠-
               ஦ ணࠬ   
         ⠪⨪, 㦤  ।饬 ⥪.

             樠 砩: ⥪ ᯮ饩 ⥬ (RTL)
                              ६ ࠡ

                ⥩,    ॠ
          ।⠢묨 㭪ﬨ,   ६ ࠡ -
         ⥪  ᯮ饩 ⥬ (RTL).  ணࠬ  ६
         ࠡ RTL  १묨 ⮫쪮 ⮣,   -
         ,   ⠫쭮 ६ ᯮ  ᪥.  
         ॠ  ⥬  ⠭    RTL 筮 ⠪,
          뢠  ⮩ . ,     ᮤঠ

                                      - 3-56 -
         ணࠬ   믮 㭪権 ⥪; ..   
         ᮤঠ ணࠬ ᢮ ⥪,  ⠫  ᪥
          㣮 䠩. ᫥⥫쭮 ᮡ⨩, ந室   -
            ணࠬ      ६ ࠡ RTL,   
         -奬 3-1.
                   ____________________
                  |      㧪      |
                  |          |
                  |____________________|
                             |
            .--------------->|<---------------------------.
            |      __________V_________                   |
            |     |                    |                  |
            |     |    ਥ    |                  |
            |     |____________________|                  |
            |                |                            |
            |                |                            |
            |               / \                           |
            |              /-\                          |
            |             /\               __________|__________
            |            /᢮-\           | ᢮ -|
            |           |   |----------->|       |
            |            \ /             |_____________________|
            |             \RTL ?/
            |              \   /
            |               \ /
            |             |
            |                V
            |               / \
            |              /   \
            |             /     \                ____________________
            |            /  RTL  \           |। |
            |           |⠭- |------------>|   㧪 RTL  |
            |            \  ?/              |____________________|
            |             \     /                          |
            |              \   /                           |
            |               \ /                            |
            |                |                             |
            |              |<----------------------------
            |      __________V_________
            |     |                    |
             -----| 㭪 믮 |
                  |____________________|

            -奬 3-1. ᫥⥫쭮 㧪 RTL  
                                  ६ ࠡ

                ணࠬ ⥪ 㯭 (१ 뢠-
         ),    ணࠬ 㦠 䠩 ⥪ 
         , ᯮ 㭪 4Bh (AL=3) "㧨 ૥"  "-
         ࠥ"   ᢮ ᮡ⢥ .  ⥬ 뢠 ॡ㥬
         ணࠬ ⥪  믮 訢 㭪樨. -
           ,    ணࠬ ⥪ -
           ᮤঠ  IRET    뢠 ணࠬ-
         .  ⮣  ⥪ 㯥 맮 ᥩ ᫥⥫-
              ६  㧪,  ᪮ RTL ⠫
         १⭮  .
                ணࠬ 蠥  ॡ ࠭⢮
          RTL,   ।   室 RTL    ᢮
         ,  ।  RTL. ᪮   
          㧪 ணࠬ ⥪ ᫥  㧪,    -
         
                                     - 3-57 -
                 ,  ᢮
           뢠 ஡. ᫥ ⮣ 믮 ॢ 
          ⭮   "窨"   ᫥饣
         맮.

                    ४祭 ⥪  ४祭 ⥪

              裡  ⥬,  設⢮ ⥬, 㦤  ⮩ ,
         ⭮      ⤥묨 ணࠬ  ⤥묨
         ⥪,   ४祭 㦨  ண  .
         ४祭 ⥪,  室   ⥪  㣮 -
             让  ⥬,  뢠  ४祭   ⥪
         (context switching).
             ᫨ ⮡ࠧ ᥣ,     믮  ணࠬ,
           ⥪,   㢨,    ⥫⢠
         뢠 室   ⥪  ணࠬ.  ਬࠬ
         ⮣    㦨 맮 १ ணࠬ,  뢠
         ⥪ RTL  ᯮ騥  ⨯ ૥  ᮯண-
         ࠬ. (ணࠬ  ୮ 楩 ணࠬ, -
          ᯮ  ᠭ ᪨ ࠫ  ⢨  
         뢠  ணࠬ.   ⫨稥  ணࠬ, -
          맮 ᮯணࠬ   믮  窨  ᫥-
           .  ணࠬ  ।⠢ ᮡ  ᯥ樠쭮
         ૥,    痢 ஦-஦ ண-
         ࠬ).   ⮬ 砥,   ணࠬ 砥 ࠢ-
         ,    ⠭  믮 ᢮ ᮡ⢥  ᥣ-
          ,  譨 ᥣ  ᥣ ⥪.  ६ 祭
         ࠢ  㣮 ணࠬ 猪 ⭮ ⮫쪮  , 
           ணࠬ ᥣ  㪠⥫ 樨 ⠭  -
         騥 祭.  ⨬  ⨭ 3-9. ᫥ 맮 㭪樨
         㧪  믮 ணࠬ ⥪ 뢠饩 ணࠬ 
         襭    ⨭  뢠    ⠭  ⥪
         ணࠬ. ਬ, ਢ  ⨭ 3-9, ᪮쪮 㤠祭
         ⥬,   ࠭ ⥪ ।饩 ணࠬ,   -
         १뢠 .
              祭 ࠢ,  ᫨  室  ࠭ 楫
          ॣ஢,   ᯮᮡ 믮 ⮣ -
          ᯮᮡ, 騩  ⮬, ⮡ ᭠砫 ⠭ 
         ⥪ ணࠬ  ⥬      ॣ.  ᪮
         祭 ⥪ ᥣ  㪠⥫ ⥪    -
         ࠭  ⥪ 뢠饩 ணࠬ  ( 裡  ⢨ ᯮ-
         ᮡ 祭  ⭮)  ᪮      -
            ⥪ (   ⠭),  ࠬ ⥪
          ࠭  .  ᫨   ᪫祭  
             ᥣ ணࠬ   ,   ࠭-
            ⥪  ᥣ    㪠⥫  ⥪  ⠭
          ⥪ ᥣ  㪠⥫ ⥪    ᯮ짮-
          ᫥⥫쭮 ணࠬ ,    ⨭-
          3-11.



                                      - 3-58 -
             ⨭ 3-11. ४祭 ⥪  ணࠬ ⨯ .EXE
         ----------------------------------------------------------------
         enter:   mov   cs:old_stk_seg,ss  ; ࠭ 祭 ண
                  mov   cs:old_stk_ptr,sp  ; ⥪
                  mov   ss,cs:new_stk_seg  ; 㧪 祭 
                  mov   sp,cs:new_stk_ptr  ; ⥪
                  push  ds        ; ॣ ⥪ ᥣ
                  push  es
                  push  ax        ; 砫   ⥪  ॣ஢
                  ...
                  push  bp
                  push  si
                  push  di
                  ...
         body:<⥫ ணࠬ>    ;  稭 ⥫ ணࠬ
                  ...
                  pop   di        ; 砫 ⠭  ॣ஢
                  pop   si
                  pop   bp
                  ...
                  pop   ax
                  pop   es        ; ⠭ ॣ஢ ᥣ
                  mov   ss,cs:old_stk_seg  ; ⠭  -
                  mov   sp,cs:old_stk_ptr  ; 祭 ⥪
                  jmp   exit               ; 室  
         old_stk_seg    dw   ?    ; ⥪ ᥣ 뢠饩 ணࠬ
         old_str_ptr    dw   ?    ; 㪠⥫ ⥪ 뢠饩 ணࠬ
         ; ⥪ ᥣ ணࠬ
         new_stk_seg    dw   segment stack
         ; 㪠⥫ ⥪ ணࠬ
         new_stk_ptr    dw   top_of_stack
         exit:                             ;  室
                  ret             ;   뢠 ணࠬ
         ----------------------------------------------------------------
             ணࠬ   ⨭ 3-11    -
           ⥪ ᥣ  㪠⥫ ⥪,  㦥 ࠧ饭 
         .  १ ணࠬ  ணࠬ RTL  
          믮    樠樨. 騥 -
         祭      ணࠬ  ⨯  .EXE  樮  ⥬
         MS-DOS 頥   ன.
              裡  ⥬,  ணࠬ ⨯ .COM   ᮤঠ
         祭 ᥣ,   ணࠬ ॡ 㣮 ᯮᮡ -
         ४祭 ⥪.   祭  設 ⥪  -
           뢠 ஡,  ᪫祭  砫 ᥣ.
         .. ணࠬ ⨯ .COM  ᢮ 楫 ᮢ⭮ ᯮ
             ᥣ,  祭 ⥪ ᥣ  
         祭  ॣ  ணࠬ ᥣ.  , ᥬ-
         ⢮ ய஢ 8086  ন 뫪  ॣ
         ᥣ   ॣ ᥣ,  ⮬ 祭   -
          ᢥ ⥬.  裡  ⢨ ॣ,   ஬
          뫮  ࠭ 祭,  祭 । १ -
         ,  ᯮ    ᥣ.  ॠ樨 ⮣ ᯮᮡ
         稭 ணࠬ  ᫥饩 樨:

          mov   cs:new_stk_seg,cs   ; 祭  ⥪ ᥣ

             ᫨ 室,   ४祭 ⥪  ணࠬ -

                                      - 3-59 -
          ࠧࠡ  , ᮤঠ ॡ㥬 ணࠬ -
         .     砥  ணࠬ      室  ⥫
         ணࠬ,  ன  ணࠬ     室    ⥫
         ணࠬ.     ᮮ⢥⢮  ६
         ⥪   ,  ன , ஬ ⮣,  -
           設 ⥪ top_of_stack  ࠬ  -
           । dw  㪠⥫  ⥪  new_stk_ptr.  
              室  RET.    -
         짮    室    権 JMP 
         IRET, ⠪    樨 RET.
              䠩 ⨯ .EXE ன     ⠪  ਭ
          ࠬ  ⥪ ᥣ.  ਬ ᠭ  -
         ᮢ  䠩 ⨯ .COM ᮤন  ⨭  3-12 (INIT28),
         ਢ   ⮩ .

                 ⥫ ᮮࠦ  ४祭 ⥪

              ४祭 ⥪, , ,  樨 -
          ᥣ⮬ ணࠬ 梨  뢠.   
         ⥪ ᥣ,    㪠⥫ ⥪, ,  
         ,   ந 뢠.  ᥬ⢥ ய-
         ஢  8086   ।頥 ⥬  㪠⥫ ⥪
         ࠧ  ᫥ 樨,   㦠 ⥪  ᥣ.
            ஢ ᥬ⢠ ய஢ 8086 -
          ॣ ᥣ (   樨 MOV   樨
         POP),  뢠 ন   ,   㤥 믮-
          ᫥ .  ᮡ  -
           ॣ ⥪ ᥣ  ॣ 㪠⥫ -
         .  ⠪  ,  祬  ⫠稪  DEBUG  ய᪠
              ᫥  樨  MOV  ॣ
         ᥣ. ⫠稪 DEBUG 믮 ணࠬ   蠣 ०
          ⠭ 䫠 뢠,   -
          #1,  ᫥饥 ᫥ 設⢠ 権.  ..  -
          樨,  ᫥饩  樥 ᫠ (MOV) 
         ॣ ᥣ,  뢠 ,   ⫠稪 DEBUG 
         砥 ࠢ   ,   믮  樨,
         ᫥騥  樥 MOV.
                    ᥣ 㦭   
         室    ४祭 ⥪,  㥬  ⨭
         3-11.   ॣ        ⥪ 뢠饩
         ணࠬ  ࠧ,   ॣࠬ ᯮ짮   ண-
         ࠬ ,   ࠩ , ।  祭  ॣ
         ⥪.  ணࠬ  ᠬ       ⮬,
           ⥪饣 ⥪ ࠭  ⤥쭮 ணࠬ.
             ᫨ ४祭 ⥪ ᯮ  ᮯணࠬ, 
          ணࠬ  稢  ࠭ ⥪ 㣮
         ணࠬ.     譥,  ⮬  ⮫쪮  -
         ணࠬ 室 ࠭ ⥪ 㣮  ணࠬ, 
           ⢨⥫쭮    ।.  ணࠬ,  ᯮ 
         ,   ⢫ 室 ⮫쪮 १ 㭪  -
          4Ch " ணࠬ" ⠪, ⮡ MS-DOS ᬮ ࠢ쭮
          ணࠬ, ᨬ  ﭨ ⥪.
             ᫨ ࠬ ।   ணࠬ    -
          ணࠬ ন ᢮ ᮡ⢥ ⥪,   㯠
          ࠬࠬ  ⥪  ᯮ짮 ॣ BP.  -
          ணࠬ  室   祭 ⥪ ᥣ
         뢠饩 ணࠬ  ᫠      ॣ஢  ᥣ-

                                      - 3-60 -
          DS    ES  믮    ⭮⥫쭮 ⮣
         ॣ. ࠬ ⥬      ⥪  뢠饩
         ணࠬ,   ᫨ 뢠 ணࠬ ᯮ ᢮ ᮡ-
         ⢥ ⥪.

                   १  ⨢ 

                MS-DOS ᠬ ॠ   १⭠
         ணࠬ. ﭨ ᭮  .3-15,   㢨 奬 -
           ⨯筮 MS-DOS ᨨ 2.0  .  (⨬,    
         ᯮ 易⥫쭮  ਬ  ᨩ MS-DOS,   祬
          3.1).   MS-DOS,  ᪫祭 १⭮ -
          䠩  COMMAND.COM,  ᯮ    ⨢  
         ६. ணࠬ 짮⥫ ⢫   MS-DOS  -
         ।⢮ 뢠    室  뢠,  筮 ⠪,
          믮﫨 १ ணࠬ 짮⥫.
             ⤥   樮  ⥬    騬 
          ⥬ MS-DOS  ᮢ⨬    ⥬  ࠧ
         ஢ ᨩ. 㣨  ⥬  㭨묨  -
          ஢ ᨩ  ⤥  ।, ࠡ-
           ࠢ MS-DOS.  . 室騥 
         MS-DOS,   ਡ,  易   ⮬,   
         ⠡ 3-6.   ⮢     ᨨ  
         ᨨ,   㭪樨 ⮢ .  ,  室騥 
         ⠢ ⮣   , ਢ  㪮⢥ 짮-
         ⥫    ⮩   ᨨ MS-DOS.  ⨬,   
         䠩   "묨" 䠩,    ᢥ稢  
         ⨭ ⠫.  ,  䠩  ᯮ   -
         .
                                                          3-6
                       樮 ⥬ MS-DOS
         ________________________________________________________________
                              |                 |
                      |     ਡ    |        㭪
         _____________________|_________________|________________________
         COMMAND.COM          |  ᮢ⨬    |  
         _____________________|_________________|________________________
         IBMDOS.COM  㣮|  ᮢ⨬    | 㦨 ⥬
         _____________________|_________________|________________________
         IBMBIO.COM  㣮|  ᨬ  | 䥩 ROM-BIOS 
                              |  ⥬        | BIOS
         _____________________|_________________|________________________
         ROM-BIOS             |  ᨬ  | BIOS, 㥬 
                              |  ⥬        | ROM (᪮쪮)
         _____________________|_________________|________________________


                     ROM-BIOS  ࠢ  㦠 BIOS

               ᭮  ࠧ稩,    -
           樮 ⥬ MS-DOS ࠧ ᯮ. 
         ࠧ 祭 ⢥   ,    믮, 
            믮   ⮢,  㭪樮  १-
         ⭮  ⨢ .    ⠪ ⥩ ࠧ-
         稩 ନ  ᨬ  ⮣,   ࢮ砫쭮 ᯮ-
          BIOS (Basic Input/Output System -  ⥬ 
         /뢮)    । ⥬  ROM (read-only memory

                                      - 3-61 -
         - ﭭ 饥 ன⢮ - )   䠩, 
           㦥  ᪠. ⢨  ୠ⨢ -
         ਠ⮢ ᯮ ⮨  ⮬,  BIOS, ᯮ  ,
         ᯥ稢  ।  ⮩ ⤥쭮 設,   -
           㦠 BIOS  㯭    ணࠬ.  (
         ⫨稥   ⥬ CP/M,  ⠢騪 樮 ⥬ MS-DOS
          ᯥ稢 짮⥫ 室묨  ⨭  㦠
         BIOS).
              ⮩ 樨 砥  ⮬,  MS-DOS  
         ॥ࠡ쭮 (୮-室)!  ..,  ᫨ ᠭ  १-
         ⭠ ணࠬ,   ࠢ 뢠ﬨ, 
         頥 ""   뢠 MS-DOS,    ணࠬ
             뢠 MS-DOS!  ⭮ MS-DOS ন ⮫쪮
           ஢ ७ ,    ⪠ ୮
         室 ਢ   ⪠ ⥬.  .. MS-DOS  
         ॥ࠡ쭮,      ᯮ짮    믮
         /뢮  প 㭪権  १ ணࠬ,  -
         ࠢ塞 뢠ﬨ.   ࠭祭     ⮣,
           ଠ ""  ७  MS-DOS,  
         ன,  ,  㤥 ᯥ祭 ᯮᮡ ࠡ⪨ ⠪ ᮡ-
         ⨩.      ணࠬ, 騥  १ -
         ணࠬ, ,  ⭮, 뢠  ROM-BIOS  
         ᢮ ᮡ⢥ ணࠬ ࠩ஢.   樨 ਢ 
         १  ७ᨬ ணࠬ ,       
          業   ।⠢塞 .
             ᫨ BIOS,   ᠬ ,  㦠  ᪠  ६  -
         砫쭮 㧪 ⥬,    猪  ᯥ祭 -
         䥩  묨 ।⢠ 짮⥫    ᢮
         ᮡ⢥ ணࠬ.  ⫨稥  裡  묨 ண-
         ࠬ  MS-DOS,   ᯮ  뢠,  MS-DOS
         頥  BIOS ।⢮ 権 CALL  JMP. MS-DOS  -
          ⠭⭮ ⠡ 室  BIOS  (⨯  ⥬  CP/M),
            ᯮ짮 ਪ ணࠬ⮬, ⠪ 
           ,    BIOS, 㥬  ROM, ࠧ
         業,  祬   १ ணࠬ  㯠  -
          ।⢠.

                   뢠  ࠢ  ⥬  ᮬ

               ࠧ稩 ନ  ᨬ    ⮣,
             ।⢠ ࠢ塞묨   뢠-
           ࠢ    .  "ࠢ塞    
         뢠" 砥,   㢥 BIOS  ᮡ, -
           ந,  ⥬ ᯮ  뢠  
         ।. "ࠢ   " 砥,   -
           ⭮  訢,    訢  
         ।⢠  ஢ન ஢ ᮡ⨩.  ⥬, ࠢ塞
         뢠ﬨ, ᯥ稢     訥  㤮⢠
          ⠭  ⨯ १ ணࠬ.
               ᮡ ࠧࠡ稪 ⥬,  ࠢ塞 -
         ﬨ,   ᯮ짮  ⮫쪮    뢠
          ।    ࠢ १묨 ணࠬ.
             ਢ  祭  ᯮᮡ  뢮  ଠ樨,
           ਢ  ⭮ "謠".   ,  -
           ⥪,   "嫠" ⥪ ⥬, MS-DOS
         ᠬ 筮 ⢨⥫쭠  ⢨ 뢠.  , 
         ⭮襭 BIOS ⠪ 饭 ⨬.  BIOS  -

                                      - 3-62 -
            뢠 ,   ࠩ ,   뢠-
         ,      뢠    BIOS.  ᫨  ந室
         뢠  ⢨⥫쭮  ६  BIOS,  ,  -
         ,   ⥭    ᪮ ⥫,   ண-
         ࠬ 㦨   㭪樮஢ BIOS,  -
          ਢ  ᡮ  ᠭ ᥩ ⥬.

                      ᥭ ""   뢠

              ணࠬ ⨢     -
         砥:   樨    뢠  ।
         (ࠢ ᮡﬨ),     ""  -
          ⥬ (ࠢ 墠⮬).   ⠪ -
           ᯮᮡ,   窠 ""      
         뢠  ।. ᫨ ᯮ㥬 ⥬  -
         ন 뢠  ।,  ᫥ ᯮ짮
         ᯮᮡ "".
              㯠 ( 묨 ᫮ﬨ)    १  -
         ணࠬ       ᯮ짮   뢠   
         ।,    ᯮ㥬 樮 ⥬ MS-DOS.   
         ,   ணࠬ  ⢫ 맮 MS-DOS,   -
         ⥬ 䫨⮢  ந. ᫨  ।⢠ -
          㯭   १⭮ ணࠬ,      
         ஢,        ६     㯭 
         ।,   ஦  ⠭ ⭮ ।-
         ⢠      室  ﭨ.  ਬ஬ 쭮 ﭨ
         ணࠬ ࠢ 뢠ﬨ  ணࠬ ࠭-
            ॣ஢ ⥪饣 믮 ணࠬ  १ࢨ-
          ࠧ ,   ந室 譥 뢠. -
          ணࠬ   ⫠ ணࠬ ॠ쭮 ६.
         ,  ᫨ ᯮ㥬 뢠 ⠪ ᯮ  -
         ,  ணࠬ  ਭ   ࠢ -
         墠⮬,  ⮬   १⭠  ணࠬ  ⠭  
         "⮩".
             ᮡ ""  ᯮᮡ ⠢ १  -
         ணࠬ   筮 ᯮ ⥬   窥 ⠪,  ⮡
             ⢫ १ १ ணࠬ.
         ਬ஬ ⠢ "", 뢠饩 ⭮ 뢠, -
          ⠭ १⭮ ணࠬ  ࠢ  -
         ன.   ⮣  뢠    
          १⭮ ணࠬ.  祭 ।饣  -
             祭 樨 室 far
         (),  ᯮ  室  ணࠬ १-
         ⭮ .   ந室 뢠 , 稭-
          믮 १⭮ ணࠬ. ᫥ 襭 -
         ⪨ 뢠,  १⭠  ணࠬ । ࠢ
         ࠩ . ᫨ १⭠ ணࠬ ⢨⥫쭮
         ᯮ     ,   
         த ࠩ ,  १⭠ ணࠬ -
          ᠬ 㦨   뢠,  ⥬   -
         뢠 ணࠬ  樨 IRET.    १-
          ணࠬ  ࠭ ⥪ ࢠ ணࠬ.
             㣨 묨 窠 ⠢ "",    -
           ᯮ짮  뢠  ।,  
         ⠢ ""       ஢  뢠  ணࠬ
         ᯥ祭    室.  ⠢ ""  MS-DOS -
         १  뢠 ணࠬ ᯥ祭 筮   -
          ⮬,    樮 ⥬ MS-DOS  -

                                      - 3-63 -
          ᯮ ⠡ 室.  ஬ ⮣,  裡 
         ⥬,     ⠭ 䥩  MS-DOS  -
         䥩ᮬ  BIOS,  ⠢ ""  MS-DOS  BIOS  筮
         㤭⥫쭠. ᯮ짮  뢠 ணࠬ ᯥ-
          ⠥ ஡.
                    ⠢ ""   뢠
         MS-DOS  뢠  int 28h. , -, ᯮ-
         ⥫쭮 뢠, ᯮ㥬   MS-DOS.   ⠪ 
          祪 ⠢  "",    ࠭  -
         . ⭠ ணࠬ, ⠢  ⢥  ""
          ⮩ 窥,      뢠 ࠩ 㭪権 MS-DOS, ..
          ਢ  ᡮ ⥬. ⭠ ணࠬ ⠪ -
           ᯮ짮  ᢮  ᮡ⢥ ⥪  ।饭
          饣 ⥪  ॣ஢.  ⨭ 3-12 -
           ணࠬ  ,  室  ⠭  १⭮
         ணࠬ  뢠  int 28h  প  ⮩ १⭮
         ணࠬ.

           ⨭ 3-12. ணࠬ INIT28 - ⠢ ""  
                                뢠 ⥬
         ----------------------------------------------------------------

         ; ==== INIT28 -  䠩 ࠡ뢠 ணࠬ ଠ .COM ==
         ; ==== ⠭ १⭮ ணࠬ ⥬ ⠢ ========
         ; ==== ""  뢠 int 28h ==========================
         PAGE    60,132
         ; ==== ⢥ ⠭ 뢠 ======================
         VECT_NUM EQU    28h          ;    ⠭
         OFF     EQU     0h           ; ணࠬ ⨢
         ON      EQU     0FFFFh       ; ணࠬ ⨢
         ;
         INCLUDE STDMAC.INC          ; 祭 ᠭ ஡⥪
         ; ====    ===============================
         init28  SEGMENT
                 ASSUME  cs:init28
                 ASSUME  ds:init28
                 ORG     0
         SEG_ORG EQU     $
                 ORG     0100h
         main    PROC    FAR
         start:  jmp     init         ; ய  "ண "
         old_v   dd      ? ; ࠭⢮   ண 
         entry:  jmp     first        ; ய "䨪樨"
                 db      'TEST ROUTINE'
         first:  @SwapNewStack     ;   ४祭   ⥪
                 cmp     go_switch,ON ; ஢ઠ ᫨  ⨢
                 jne     bypass       ;  - த  室
                 mov     go_switch,OFF ;  - ⠭ ४⥫
                                       ; ⨢
         ;
         ;  <      >
         ;
                 mov     go_switch,ON ; ⠭ ﭨ ⨢
         bypass: @SwapOLDStack    ; ⠭ ⥪ ( 祭 )
                 jmp     cs:exit  ; 室  - - -
         exit            dd     ?
         go_switch       dw     ?

                                      - 3-64 -
                         db     32 dup ('stack   ')
         TOS             EQU    $
         LAST_BYTE       EQU    $
         ;
         ; =====   -     =========
         ;
         init:   mov     go_switch,OFF ; ।० ⨢樨
                 mov     ah,35h        ; 祭  
                 mov     al,VECT_NUM
                 @DosCall
                 mov     word ptr exit,bx ; ࠭ 㪠⥫ IP 
                                          ; 室
                 mov     word ptr exit+2,es ; ࠭ 㪠⥫ CS 
                                            ; 室
                 mov     word ptr old_v,bx  ; ࠭ 㪠⥫ IP 
                                            ; 㤠
                 mov     word ptr old_v+2,es ; ࠭ 㪠⥫ CS
                                             ;  㤠
                 mov     ah,25h         ; ⠭  㪠⥫
                 mov     al,VECT_NUM
                 mov     dx,offset entry ; ⠭ 㪠⥫ IP
                                         ; ... (CS  DS 筮)
                 @DosCall
                 mov     go_switch,ON
                 mov     dx,9offset LAST_BYTE - SEG_ORG + 15) shr 4
                 mov     ah,31h   ;   ⠢ १⭮
                 @DosCall
         ;
         main    ENDP
         init28  ENDS
                 END     start
         ----------------------------------------------------------------

             㣨   窨 ⠢ ""   ⨯ -
         ⭮ ணࠬ  ,  ன   뢠-
         .  ਬ,  ணࠬ  ਧ樨  - print spooler
         routine ( ⠥ 䠩  ६ 믮 㣨 ண-
         ࠬ)   ⮫쪮  뢠 뢠  ⨢樨 -
          ᨬ  ਭ,  ⠪  뢠  -
              MS-DOS,  ஥  ᯮ  ਭ,  ⠪,  ⮡  
          䫨.  .3-16 뢠 뢠 ਧ樨
          int 28h  ⨢樨 ᠬ ᥡ  뢠 int 21h 
         ࠭ ᠬ ᥡ  䫨⮢  㯥  ਭ.


                                      - 3-65 -
                                  ---------------
                뢠       |     ...       |   ஢ -
            ---------------------| Int 21 IP/CS  |<---------------------
           |    뢠       |     ...       |  ⢠ ய-|
           |  -------------------| Int 28 IP/CS  |<-----    ஢ 8086  |
           | |                   |     ...       |      |               |
           | |                    ---------------       |譨 맮  |
           | |                    ---------------       |   Int 28h     |
           | |            ------>|    MS-DOS     |------     MS-DOS     |
           | |           |       |     ...       |                      |
           | |   --------|-------|   Int 21  |<-----------------    |
           | |  |        |       |     ...       |                  |   |
           | |  |         -------|   Int 28  |<-------   |   |
           | |  |                 ---------------        |         |   |
           | |  |                 ---------------        | MS-DOS   |   |
           |  --|--------------->| ணࠬ  |       |  -  |   |
           |    |                |  ਧ樨  |       | 뢠  |   |
           |    |                |     ...       |       | Int 21h  |   |
           |    |                |     |-------           |   |
           |    |                |     ...       |                  |   |
           |    |                |---------------|। Int 21h  |   |
            ----|--------------->|஢ઠ Int 21|------------------    |
                |                 ---------------                       |
                |                 ---------------                       |
                |                |   ணࠬ   |                      |
                |                |  짮⥫ |                      |
                |                |     ...       |                      |
                 --------------->| Int 21h |----------------------------
             Int 21      |     ...       |
            ணࠬ 짮-   ---------------
                   ⥫

            .3-16. ᯮ짮 ஢ 뢠 ணࠬ
                                ਧ樨 

                ᯮ짮  ஢ 뢠  ॠ樨
         ண  ࠫ,   "室"  믮-
           ணࠬ, ⢫饩 ।⢥   -
          ।⢠. ਬ,  ᫨  ᯥ祭  -
         ⥩ ⠭  뢠      ᫨
         㣠 ணࠬ  室      ⮣ -
         ⢫ ⥭    ।,   १⭠ ண-
         ࠬ  砥 ࠢ.  䥪   ந,
         ᫨ ⠭ ᪮쪮 १ ணࠬ,  ⮬ 
          ணࠬ   MS-DOS  믮 /뢮-
         . ਬ, ᫨  ணࠬ ਧ樨   १-
           ணࠬ ⠭   ᮤন  -
         ᯫ,   ⨢஢    ⮦ ६,  ந
         䫨.   ஡  ⠪      ⠭
             稨  ᪨  १ ணࠬ.  
         짮⥫  ⮫쪮  ᯮᮡ  ᥡ  - 
         ⠭  ⮫쪮    ணࠬ   ஢ન 䫨⮢.

                    REMOVE - ਬ ⥣஢ ணࠬ

             ணࠬ 㤠 REMOVE (ᬮ ⨭ 3-13) ।-
           㤠 ⠭ १⭮ ணࠬ  
           ਬ,     INIT28 (ᬮ ⨭ 3-12).  ணࠬ
         REMOVE ⠥  ஢  १  ணࠬ  ⥬

                                      - 3-66 -
         ஢ ⮢,  ᫥  窮 室,   ⮡ࠦ 4
         ,  । 窥 室,   ।饣 -
         .  ஬ ⮣,  ணࠬ REMOVE ।,  १⭠
         ணࠬ ।⠢  ଠ .COM,  ⠥ ࠧ -
          PSP   ।.   ଠ ணࠬ REMOVE -
         ⠢ 짮⥫  ਭ 襭  ⮬,  㤠 -
          ணࠬ, ⠢   뢠,  .

            ⨭ 3-13. REMOVE - 㤠 १⭮ ணࠬ,
                    ⠢  ⢥ ""  
                                    뢠
         ----------------------------------------------------------------
         PAGE    60,132
         ;===== REMOVE -  䠩  ணࠬ ⨯ .COM =======
         ;=====  १⭮ ணࠬ, ⠢  - ====
         ;============ ⢥ ""   뢠 =============
         ;(Interrupt Service Routine (ISR) -  ணࠬ 㦨-
         ;  뢠))
         OLD_IP  EQU    -4         ;   IP  ISR
         OLD_CS  EQU    -2         ;   CS  ISR
         ID      EQU    0          ;  1-   ISR
         IRETOP  EQU    0CFh       ;  樨 IRET
         ;
         ;=====    =============================
         ;
         INCLUDE STDMAC.INC        ; 祭 ம।
         ;
         remove  SEGMENT
                 ASSUME cs:remove
                 ASSUME ds:remove
         ; । 室 ᮢ  ᥣ ணࠬ
         ; 䨪 (PSP)
                 ORG    2Ch
         env_adr LABEL  WORD       ;  㪠⥫ ।
                 ORG    80h
         cmd_len db     ?          ;   ப
         new_len db     ?          ;  ப ਧ ⥭
         cmd_buf db     ?          ; ப  ப
         ;=====    ================================
                 ORG    0100h
         main    PROC   FAR
         start:
                 mov    ch,byte ptr [cmd_len]
                 cmp    ch,0       ; 㬥 ᯥ祭 ?
                 jnz    have_cmd
         ; 㬥  ᯥ祭 - ਣ襭 짮⥫  㪠
         get_cmd:
                 @DisStr request   ; ਣ襭   
                 mov    byte ptr [cmd_len],80
                 mov    dx,offset cmd_len
                 mov    ah,0Ah     ; 믮 ਧ ⥭ 
                 @DosCall          ;   ப
                 @DisChr LF        ;  ப
                 mov    ch,new_len ; 祭 ࠧ  ⥪
                 cmp    ch,0       ; ᬮ, ⢥⨫  짮⥫?
                 jz     abort      ; ᫨ ,  । 室
                 inc    ch         ; ⠭ ⢥  ਢ 

                                      - 3-67 -
                                   ; ᮮ⢥⢨
         have_cmd:
                 cmp    ch,3       ; ஢ઠ  ࠢ쭮 # ᨬ
                 je     ok_cmd
                 @DisStr bad_cmd   ; ᫨ 訡,  ४ 䫠
         abort:  jmp    finis
         ok_cmd: mov    bx,offset cmd_buf
                 mov    ch,2       ; ࠬ᪨ ࠧ 2 ᨬ
                 call   get_hex    ; ८ࠧ #    .
                 jc     abort      ; 室, ᫨ 訡 ८ࠧ
                 mov    vec_num,al ; ࠭  
                 mov    ah,35h    ; 祭 㪠⥫   MS-DOS
                 @DosCall
                 mov    vec_ip,bx  ; ࠭ IP 
                 mov    al,vec_num ; ⠭  
                 call   show_vector ; ⮡ࠦ ᮤন 
                 @DisStr askresv
                 call   yesno
                 jc     no_restore ;   ⠭ 
         ;
         ;      
                 mov    bx,vec_ip  ; 祭  ணࠬ
                 mov    dx,es:OLD_IP[bx] ; 祭 IP ண 
                 mov    cx,es:OLD_CS[bx] ; 祭 CS ண 
                 mov    al,vec_num ; 祭  
                 push   ds         ; ࠭ ⥪饣 DS
                 mov    ds,cx      ; ⠭ 祭 
                 mov    ah,25h     ; ⠭  
                 @DosCall
                 pop    ds         ; ⠭ ᥣ 
         ;
         ; ⮡ࠦ  ।  뤠 ਣ襭  㤠.
         ;  । 㤥 ⢨⥫, ᫨  ணࠬ ⨯ .COM
         no_restore:
                 @DisStr askremb   ; ⮡ࠦ  ।
                 mov    ax,es:env_adr ; 祭  ।
                 mov    ch,4
                 call   bin2hex   ; ⮡ࠦ  ᥣ ।
                 @DisStr ip0
                 call   yesno
                 jc     no_env     ; 室 㤠 ।
         ;
         ;   
                 push   es    ; ࠭ ᥣ  ணࠬ
                 mov    cx,es:env_adr ; 祭  ।
                 mov    es,cx      ;  ⮢  㤠
                 call   rem_mem    ; ⪠ 㤠 
                 pop    es  ; ⠭   ணࠬ
         ;
         ; ⮡ࠦ  ᥣ  ணࠬ  뤠
         ; ਣ襭   㤠
         no_env:
                 @DisStr askremm   ; ⮡ࠦ   
                 mov    ax,es      ;   
                 mov    ch,4
                 call   bin2hex
                 @DisStr ip0

                                      - 3-68 -
                 call   yesno
                 jc     finis     ;   㤠  
         ;
         ;      
                 call   rem_mem    ; ⪠ 㤠 
         ;
         finis:  mov    ax,4C00h   ; 襭 ணࠬ
                 @DosCall
         ;
         vec_num db     ?         ;     
         vec_ip  dw     ?          ;    IP 
         ;  㤠塞 
         request db     'Vector number to remove: $'
         ; ਩ 襭 - 訡   ப
         bad_cmd db     'Command Line format error - aborting',CR,LF,'$'
         ; ⠭   ண ?
         askresv db     'Restore Vector from Old? $'
         ;   ।
         askremb db     'Remove Environment Block: $'
         ;    ணࠬ
         askremm db     'Remove Main Program Block: $'
         ip0     db     ':0000 $'
         ;
         main    ENDP
         ;
         ; == REM_MEM ᯮ 㭪 49 (.) MS-DOS  ⪨ =
         ; ======= ।  , 㥬 ES =======
         ;
         rem_mem PROC   NEAR
                 push   ax         ; ࠭ ॣ஢
                 push   cx         ;    ᯮ㥬
                 push   dx         ; @DisStr   @Dischr
                 mov    ah,49h     ; ᢮ । 
                 @DosCall
                 jnc    free_ok ;  訡 - 뤠 ᮮ饭  ᯥ
                 push   ax         ; ࠭  訡
                 @DisStr fail      ; ନ஢  ᡮ
                 pop    ax         ;  뤠  訡
                 mov    ch,4       ; ( 4 )
                 call   bin2hex
                 @DisChr CR
                 @DisChr LF
                 jmp    rem_exit
         free_ok:
                 @DisStr pass
         rem_exit:
                 pop    dx         ; ⠭ ॣ஢
                 pop    cx
                 pop    ax
                 ret
         ; ᯥ譮 ᢮ । 
         pass    db     'Successful Free Allocated Memory',CR,LF,'$'
         ;   ᢮ ।  -  訡
         fail    db     'Failed to Free Allocated Memory - Error Code: $'
         rem_mem ENDP
         ;
         ; ===== YESNO ਣ蠥 짮⥫ ⢥  Y,  N. =

                                      - 3-69 -
         ; ===== ᫨  Y (),  YESNO 頥  ७ ==
         ; ===== (NC). ᫨  N ()  <RET>,  YESNO - =
         ; ===== 頥  ७ᮬ (CY). =================================
         yesno   PROC   NEAR
                 push   ax
                 push   dx
                 @DisStr prompt    ; ਣ襭 짮⥫  
         retry:  mov    ah,08h     ; 祭 ⢥ (no echo -  )
                 @DosCall
                 @Case  al,<'y','Y','n','N',CR>,<yes,yes,no,no,no>
                 @DisChr 07h       ; ࠢ ⢥ - 㤮
                 jmp    retry      ;    ⢥
         no:     @DisStr 'N'
                 stc
                 jmp    yn_exit
         yes:    @DisChr 'Y'
                 clc               ; ⪠ ७
         yn_exit:
                 @DisChr CR
                 @DisChr LF
                 pop    dx
                 pop    ax
                 ret
         prompt  db     ' (Y/N): $',
         yesno   ENDP
         ;
         ; ===== SHOW_VECTOR ⮡ࠦ ᮤন ⬥祭 祥 =====
         ; =====  ES:BX  ⭠筮 ଠ   ଠ ASCII. =
         ; =====    ᯮ  ⮡ࠦ , ===
         ; =====   ⠪ 뢠 AL  ⭠筮 ଠ =
         ; =====   ,   ନ 짮⥫, ᫨ ===
         ; =====  樨 IRET ⬥祭  . =================
         ; ===== SHOW_VECTOR ⠪ ⮡ࠦ  ᫮, ࠧ饭 ====
         ; ===== । ᮬ   CS:IP,  砥 ᫨ =========
         ; ===== 짮⥫  ⠬  ண   ====
         ; ===== ⠭. =============================================
         ;
         show_vector    PROC NEAR
                 push   cx         ; ࠭ ॣ஢,
                 push   dx         ;     ᯮ㥬
                 push   ax         ; @DisChr  @DisStr
                 @DisStr vmsg1     ; 砫 ⮡ࠦ ᮮ饭
                 pop    ax         ; ⠭ 祭 AL
                 push   ax
                 mov    ah,al
                 mov    ch,2       ; ⮡ࠦ  ⭠. 
                 call   bin2hex
                 @DisStr vmsg2     ;  ⥭樠쭮  -
                 mov    ax,es:OLD_CS[bx] ; 祭 . 祭 CS
                 mov    ch,4
                 call   bin2hex    ; ⮡ࠦ  ண CS
                 @DisChr ':'
                 mov    ax,es:OLD_IP[bx] ; 祭 . 祭 CS
                 call   bin2hex    ; ⮡ࠦ  ண CS
                 cmp    byte ptr es:ID[bx],IRETOP
                 jne    noiret     ;   IRET?
                 @DisStr vmsg3

                                      - 3-70 -
         noiret: @DisChr CR
                 @DisChr LF
                 mov    cl,16      ;  16 ⮢
                 call   dump       ;  ⭠.  ASCII 祭
                 pop    ax
                 pop    dx
                 pop    cx
                 ret
         vmsg1   db     'Vector # $'
         vmsg2   db     '  Old Vector: $'
         vmsg3   db     'IRET$'
         show_vector    ENDP
         ;
         ; ===== DUMP ⮡ࠦ ᮤন 祥, ⬥祭   =
         ; ===== ES:BX,  ⭠筮 ଠ   ଠ ASCII. ==
         ; ===== ন CL # ⮡ࠦ ⮢. ===================
         dump    PROC   NEAR
                 push   ax         ; ࠭ ॣ஢,
                 push   dx         ;     ᯮ㥬
                 push   bx         ; @DisChr  @DisStr
                 push   cx
                 @DisStr dmsg1     ; 砫 ⮡ࠦ ᮮ饭
                 mov    ch,2       ; 2 ⭠   
         h_dump: mov    ah,es:[bx] ; 祭 
                 jnc    bx         ; ᫥騩 
                 call   bin2hex
                 @DisChr ' '
                 dec    cl         ; 稪 横 - 1
                 jnz    h_dump     ; ७,  稪  ⠭ 0
                 @DisStr dmsg2     ; ᫥騩 ࠧ
                 pop    cx         ; ⠭ 祭
                 pop    bx         ;     BX ()
                 push   bx         ;        
                 push   cx         ;     CX (稪)
         t_dump: mov    al,es:[bx] ; 祭 
                 jnc    bx         ; ᫥騩 
                 cmp    al,' '     ; ஢ઠ   
                 jb     no_prnt    ; ? < 
                 cmp    al,7Eh     ; DEL  , 
                 ja     no_print
                 @DisChr al        ;  - 믮 ⠪ ...
                 jmp    nxt_txt
         no_prnt:
                 @DisChr '.'       ; ᯮ "."  .
         nxt_txt:
                 dec    cl         ; 稪 横 - 1
                 jnz    t_dump     ; ७,  稪  ⠭ 0
         ; 믮  ⠭  室
                 @DisChr CR
                 @DisChr LF
                 pop    cx         ; ⠭ ॣ஢
                 pop    bx
                 pop    dx
                 pop    ax
                 ret
         dmsg1   db     'HEX: $'
         dmsg2   db     ' ASCII: $'

                                      - 3-71 -
         dump    ENDP
         ;
         ; ===== GET_HEX ⢫ ࠬ᪨ ࠧ , =====
         ; ===== 㪠  BX, 頥 ⢮  AX. =========
         ; ===== #   ࠬ᪮ ࠧ ᮤন  CH, ====
         ; =====  BX 㢥稢  # ࠡ⠭ . =============
         ;
         get_hex PROC   NEAR
                 push   dx         ; ࠭ ॣ DX
                 push   cx         ; ࠭ ॣ CX
                 mov    ax,0       ; ⪠ 㫨㥬 #
                 mov    dh,0       ; ⪠ 孥 ࠡ祩 
                 mov    cl,4       ; ⠭ ᤢ 稪
         nxt_digit:
                 mov    dl,[bx]    ; 祭 ᨬ
                 sub    dl,'0'
                 jb     bad_digit  ; ? < '0' - ࠢ쭮
                 cmp    dl,0Ah
                 jb     ok_digit   ;  '0'  '9' - 
                 sub    dl,'A'-'0'
                 jb     bad_digit  ; '9' < ? < 'A' - ࠢ쭮
                 add    dl,0Ah
                 cmp    dl,10h
                 jb     ok_digit   ;  'A'  'F' - 
                 sub    dl,'a'-'A'-0Ah
                 jb     bad_digit  ; 'F' < ? < 'a' - ࠢ쭮
                 add    dl,0Ah
                 cmp    al,10h
                 jae    bad_digit  ; 'f' < ? - ࠢ쭮
         ok_digit:
                 add    ax,dx      ; 㫨஢   AX
                 inc    bx         ; ᫥ 
                 dec    ch
                 jnz    more_digit ;    㫨஢?
                 clc               ; 訡  - ⪠ CY
                 pop    cx
                 pop    dx
                 ret
         more_digit:
                 shl    ax,cl      ; ⨥   ᫥饩 
                 jmp    nxt_digit  ; 横  ᫥饩 
         bad_digit:
                 @DisStr digit_error ; ନ஢  訡 
                 stc               ; 訡 - ⠭ ७
                 pop    cx
                 pop    dx
                 ret
         ;  ஢ ⭠ 
         digit_error db 'A two-digit hex number was expected',CR,LF,'$'
         get_hex ENDP
         ;
         ; ===== BIN2HEX ⮡ࠦ 祭, ᮤঠ饥  AX  =====
         ; ===== ⭠ #.   . CH ᮤন =
         ; ===== #   ⮡ࠦ, 롨ࠥ ᫥ ࠢ  AX.=
         ; ===== (AH ⮡ࠦ, ᫨ CH ࠢ 2). ====================
         ;
         bin2hex PROC   NEAR

                                      - 3-72 -
                 push   ax         ; ࠭  ॣ஢
                 push   bx
                 push   cx
                 push   dx
                 mov    cl,4       ; ⠭ 稪 ।
                 mov    bx,ax      ; ஢ AX  ࠡ
         ; 砫 横 DIGIT ()  ࠡ⪨   
         moredig:
                 rol    bx,cl      ; ८ࠧ .-⭠.
                 mov    al,bl
                 and    al,0Fh
                 add    al,90h
                 daa
                 adc    al,40h
                 daa
         ; ⮡ࠦ   ஢ઠ  ᫥騥  - -
         ; , ᫨ 
                 @DisChr al
                 dec    ch
                 jnz    moredig
                 pop    dx
                 pop    cx
                 pop    bx
                 pop    ax
                 ret
         bin2hex ENDP
         ;
         remove  ENDS
                 END    start
         ----------------------------------------------------------------


              ᥪ, ⮡ࠦ ᮤন 㥬 ࠧ饭 
          ,    ࠭  ॢ饭    ணࠬ.
          ணࠬ   ᯮ짮  ⮡ࠦ ᮤন-
            뢠    ணࠬ  -
         .
             ணࠬ REMOVE 㦨 ਬ஬   ⥬, 㦤
          ⮩ ,    樨 ४㥬 -
          ⠭  㤠.

                                    祭

             ਠ, ।⠢  ⮩ ,  ᠥ   -
          ⥬.  ⥫쭮  頭 ਠ  ࠢ
         ணࠬ       ⠪ 祭  ਠ 
         ࣠樨 ணࠬ,  ⠪     ᮤন  ண-
         ࠬ MS-DOS. 뫮  ⢮ ਬ஢ ᯮᮡ  㭪樮-
          ஠ᥬ (MASM) MS-DOS.
             ᬮ  ,    ਠ,  ᥣ -
             ,  ,    -
            ⮣,    ⮩ .   ⥬-
           ਪ ணࠬ⮢ ᮡ   ਠ
          PSP  ࣠樨 ணࠬ  .
