


                      7.   

                     ப ਨ
                      ७ 
                     䥩 ਪ ணࠬ EMS
                     ᠭ ணࠬ, ᯮ ७ 
                     ⥬ ணࠬ ᯥ祭
                     ⪮ ᮤঠ
                     
                     ணࠬ 䥩  ஢  ਬ ਫ

              祭 ᯥ䨪樨 ७   MS-DOS 4.0  ᤥ-
           ࠢ    ⠭  ⢥ ⮤ 㢥祭
            ⥬  MS-DOS.  ᬮ      饥
         த⢨  ᫮ IBM-ᮢ⨬ ᮭ -
         ஢   DOS,   । ୠ  ணࠬ ந-
         ⥫쭮 뫠 থ ࠭祭,  뢠 -
         ன ⥬    ⥪ன    8088,  ஥묨  
         室 ᮭ  IBM.   ६  
         ⠪ ।,   640,   ﭭ 筨 -
         㤭  짮⥫  ணࠬ⮢ ⥬ MS-DOS. -
         騩  ᨬ  稭   짮⥫, ন
         MS-DOS, ।      640    ⢥ ﭭ
         ९⢨  㬮 ⥭樨 ࠧࠡ뢠  ਬ  -
           ணࠬ ।⢠.
              짮⥫, ॡ騥 ᫮  , ஭ ⠡-
         ,  ᪨ 䥩ᮢ  १ ⨫,   ਬ-
           ।⢠ ६  ࠢ 筮 -
         ⥬  .  ࠡ稪 ⮢ 㤮⢮ ⠪  
          १ ⫠稪,  権 ॠ쭮  ६  
         ஢ । 䥩 짮⥫.  㯯 ।ਭ
         ﭭ ᨫ  ࠭祭  640  । 襭
          㯨 DOS.
               ஬諥 ᮭ ஢ 㯨   -
         饥  ६    㤭⢮  ᮧ ࠡ饣 襭
          ८ ।   MS-DOS  奬 ७ -
         ,  㥬 ७ ,  ᯥ稢 ணࠬ-
          MS-DOS  ᨬ  32 ⠬    640, -
         ন  MS-DOS.    ᮦ,  ७    
         ᯮ짮 ਫﬨ MS-DOS ⮬᪨.  ணࠬ
           ᯥ樠 ࠧ   ᯮ  ਬ-
         .    ᯮ  ਬ   -
         ᪨,    ᮡ ᫮  .   
         ᯥ  ᭮  ,  室    ⮣
         魮 ।⢠  襩 ᮡ⢥  ணࠬ஢.
              ॡ ந⥫쭮  ,   짮-
         ⥫ ।  ணࠬ ᯥ祭,  ࠪ᪨ 
         ணࠬ אַ ࠢ ன ᮭ쭮 
           室 DOS  BIOS  祭 ᨬ㬠   ᥬ-
         ⢠ ᮭ ஢.   ⠪ ணࠬ -  ᫮
            ࠧࠡ稪,    ⮫쪮   ⮭-
         ﬨ  ᮭ쭮     ࠧ 
         ஢ /뢮,  ⠪  ᯥ樠쭮  
         ᯮᮡ  ࠧ   ⠭    -
         ⥬, ᮢ⨬  IBM PC.
               ,  ࠧࠡ稪 ਫ,  ᯮ -

                                      - 7-2 -
         ७ ,       ஡ 㤮-
           ७   祭 ᮪ ந⥫-
               .            ७  
         ᯥ稢  㬥஢묨 ୮ ᨬ묨
         ணࠬ묨 䥩ᠬ,  뫨 ࠧࠡ⠭  ⠢-
          ᭮묨 ந⥫ﬨ ⭮  ணࠬ ᯥ-
          ᮭ쭮 .
                 ணࠬ 䥩ᮢ  Lotus
         /Intel/Microsoft Expanded Memory  Specification  (LIM EMS) - ᯥ-
         䨪 ७    .  饥  -
         ⢮  ᪨  㯭  ⥬  ७ -
          LIM EMS     ࠭祭  DOS.  Windows  2.0  
         Microsoft   DESQView  Quarterdeck Office Systems ᯮ
         ७   祭 ᪮쪨  ਫ-
         .  Lotus 1-2-3   Symphony,  Excel  Microsoft,  AutoCAD
          Autodesk  㣨  ਪ ணࠬ -  -
           ७      ।⠢  짮⥫
         । 襭  ꥬ    ᫮    ॠ쭮
         . PC-DOS  MS-DOS 4.0 ᮤঠ ࠩ,  ন
         ⠭ LIM EMS,    樮  ⥬,    ࠭
         ᨨ  DOS  4.0,  -,   ন 㭪 19h EMS,
         㭪 Get/Set Handle Attribute,    ⠢  -
          ࠩ ᮤঠ 訡. PC-DOS  MS-DOS 4.0 ᯮ -
          LIM EMS 4.0  ਧ樨 ᥪ஢   䠩 (-
         ࠢ塞  ࠬ஬  BUFFERS    䠩  CONFIG.SYS)   ஢ન
         ⮢ ⠫ (  FASTOPEN ।⠢  DOS
         3.3    ᨩ).  ᨨ MS-DOS 4.0, , 
         ᯮ ।⢠ 筮 LIM EMS 4.0    ࠧ.
         (,   ᥩ  , ᥣ   뫠 
          4.0 MS-DOS,  ⠪ 砥  PC-DOS 4.0, ᫨ ᯥ樠-
           㪠 .)
                 ஢ 㡮  ⮤,  室-
             ᯮ짮  ७      ᮡ⢥
         ணࠬ ஥.  ७    , -
         ஭  ।⢮,  㢥稢騬   ணࠬ
          ࠡ⪨  ꥬ ,   ண 㯠  -
         訬    ,  ࠭  ᪥,   ࠧ
           㣨 ணࠬ   㬥襭  DOS, -
           ॡ.
                㤨,   㧭,      ᮭ
              㦤  - ᯥ樠쭮 㤮-
            ⥫쭮   ,  ⮡  뢠,
         ஢   믮 ਫ ७ .   
          ,  ࠧ ணࠬ ᯥ祭 樨
         ७      ᭠   ண ।⢮ 
         ࠧࠡ⪨ ਫ ७ .
               㧭,  ७    ⥪
         ୮  ணࠬ ᯥ祭  ᮭ  -
         ஢,  ᮢ⨬    IBM  PC.   ⠪ 㧭  ᮣ襭 
         ணࠬ஢  ⮪,  室  ⮣, ⮡
         ᯮ짮 ७   ⥫⢠  㣨 ਫ-
         , :
              -  ।,    ᮭ쭮  -
                 ७ , , ᫨ , , ᪮-
                  ⠭.
              -  ࠧ,  ᢮  ࠡ   32 ⠬
                ७  ,     䥩 뢠 67h

                                      - 7-3 -
                 ७ ,  । ᯥ䨪樥
                ७  Lotus/Intel/Microsoft.
              -   ᯫ஢  㭪樮    ᯮ㥬
                ᮢ襭⢮,  祭    ᫥  (4.0)
                LIM EMS.
              -   ஢    ॠ஢    ᫮ 訡,
                頥 ⥬ ७ .

                   뫮 ਠ,  ஡ -
         騥  堭 뢠  ᮣ襭  ᯮ짮-
          ॣ஢, ॡ騥  ਬ 䥩 ணࠬ-
         ஢  LIM  EMS.   ⠪   । ⨯ 
         ,    ਣ  ࠭    ७
         .
               ᫥   ⨢ ᯥ䨪樨 ७ -
           Lotus/Intel/Microsoft  ᮢ襭⢮ ᯥ䨪樨 -
         ७  AST/Qadram/Ashton-Tate (AQA  EEMS).    㢨,
           ࠧ  ࠧ ।⢠  ⠭⮢  
         ᯮᮡ⢮ ८ ࠭祭  DOS   -
          ⨯ ணࠬ,  ࠩ ன, ⨫, -
          १⭮   ᫥  襭,    ᮢ襭⢮
         .      ਢ ᮮࠦ  孨  ᮢ-
         ⨬,  ⭮騥    ᯥ䨪権 ७ -
         ,   প EMS 4.0,  ஥  MS-DOS 4.0,  ⠪,
          ਫ,    ,  ᮢ⨬  砩訬
         ⢮ ॠ権 ७ .
               ⮣,  ⮡    ணࠬ஢ ७
         ,    ᮤন  ணࠬ 䥩 
         ஢,  ᠭ  몥   Microsoft  5.0,  -
           ਫ.  ਬ ⮨   祭,  ࠡ
         ணࠬ      砫   祢  -
         ⮤  ணࠬ஢  LIM EMS,  ।⠢   .
           ᫮ ᯮᮡ, 㥬  ਫ,
             ᥡ ࠧ    ணࠬ  -
         짮 ७   ணࠬ 㦨  뢠-
         .
               稭 ᬮ७ 権 ७    ਨ
           ᮡ⨩  ஬諥 ᮭ ஢, ᮢ⨬
          IBM,  맢  ࠧࠡ  ᯮ짮.

                                   ப ਨ

               1981 .  ⨯ ᮭ   ᮢ 
          64  ᭮ .  쥧 ணࠬ, ࠡ-
         ⠢訥   設,  ⨫ न୮ ⢮  ६
           ॡ뢠  ᫥ ᪮쪨 ⮢,  室 
            ⥫쭮  ।⢠.    -
         쭮   IBM  ,  ஥ 뫮  冷 稭
         , 祬  ।⢥,  । த⥫-
            墠⪥ .
               諮  ,    નᮭ    
          (ࠡ ,  ⮡  ६, 㯭  
         믮) ᯥ稫  IBM PC  ,   뫮   ।-
           .  ஭ ⠡, ⥣஢
         ਫ,    ⮪ १ ⨫ ᤥ ࠭⢮
          IBM PC ⮫    ࠭祭,     ।-
         ⢥.

                                      - 7-4 -
              쭮 襭  ।   . , 
         ய Intel 8088  IBM PC ন  ᭮  -
         ࠭⢮  1  ,  384  ᭮ ࠭⢠  640 
         । 樨 1  १ࢨ஢  ஢ -
         ஢,  ⥬    ᨪ    㫥  BIOS 㣨 
         /뢮.   ਫ PC-DOS     ࠭-
           640  짮⥫᪮ ,    ᥬ⢮ IBM PC
         뫮 ஦.
                 ࠤ樮  襭  ஡    
         ૥.    ᯮ ਫﬨ ᮭ -
         ஢,      ணࠬ  ࠧ -
         騬 ࠧ.  㣨 ⨯ ਫ, ⠪  ஭-
          ⠡,   室 䥪⨢   .  ॡ 
            ⨯ ਫ 뢠  ࠧ -
         ⥭樠쭮  ࠭祭  ࠧ஬  業ࠫ  -
         ,   ࠧࠬ  믮塞 .

                                      LIM EMS

               ⢨   㭨ᠫ쭮   襭   ௮樨   Lotus
         Development,  Intel  Microsoft ꥤ  祭 奬,
         饩 㠫 ਫ ࠡ  । 640,
          뢠 ॠ樥 DOS IBM PC.  뢠-
          ᯥ䨪樥 ७  Lotus/Intel/Microsoft  LIM
         EMS.Intel ந ,  ᮤঠ騥  , Lotus -
         ஢ ᢮ ஭ ⠡  ᯮ짮 ⮩  , 
         Microsoft 㡥,   ᯥ䨪樨  ⢥ ॡ
         ᮢ襭⢮ ,  묨  ࠡ.
              LIM EMS  䠪᪨  ।  ॠ ୮
         ண ⢨  ⪥ ᭮ ࠭⢠:  ४-
         祭   .  ,  奬 ४祭  
         ࠡ  ᯮ짮  ஭  ४⥫  (  ଥ
         ணࠬ  㥬 ⮢ /뢮),   ᪨
          ⮡ࠦ 䨧᪨     -
           ᭮ ࠭⢠.   ⮬ 砥 ୠ ⥬
            襬  ⮢ 䨧᪮  ,  祬
         ᯥ稢 ⥪  ,     
         ६    䨧᪮  ணࠬ 㯭.
               孨᪮  襭  ஡ ࠭⢠ ,  LIM
         EMS      䥪⨢, 祬 奬 ४-
         祭 , ⢮訥   , ᮧ  -
           ய஢ 6502  8080.  ⢨⥫쭮  LIM
         EMS, ⠪  - প ᪮쪨 ஢ 뭪  ஬諥-
          ᮭ ஢  㬥,   -
           ࠧࠡ稪 ணࠬ ᯥ祭   ॡ -
         .   ⥫⢮ - 쬠    ।    饥
         ६,  ᭮ ⠢騪 ணࠬ ᯥ祭, --
         ,  ᪮業஢ ᨫ  த । ᮧ -
          ࠧࠡ稪  業  500  3000 ஢.
               室 ᨨ 4.0 PC-DOS IBM  ⠢  ࠫ쭮  
         ⭮襭  LIM EMS, ࠢ প ਭ OS/2 ࠧࠡ稪-
          ਫ  ⢥  ⮩稢 襭 ஡ -
         .    ६  OS/2 ।⠢ 襭   ப, 
         設⢠ 짮⥫ MS-DOS ⭮⥫쭮   -
           ⢨  ᮢ⨬   让  -
         ᪮ 饣 㤮   ணࠬ  ᯥ祭
         ࠭稢   ਣ  ⢥ 襭.
              ᪮ LIM EMS ࠪ筠,  㯭  ᮢ-
            ᥬ 騬 ⥬, ࠡ騬  ࠢ-
          MS-DOS,  ⠫ ᪨  孨᪨ ᯥ ᯮ-
             ணࠬ DOS  ८  640.  ᪨,
          ஬諥 ⥫   ।,   䥪⨢-
          襭 LIM EMS  ⢨⥫쭮 㤫   ⥬ 
         ᭮ MS-DOS  ᪮쪮     ।襣 -
         ᪮ ॢ.

              LIM EMS  3.2

              ࢠ ப ঠ  LIM EMS  ஬ 3.2 -
          㡫  ᥭ 1985 .    । ⮪ -
         ७ , ᯥ稢訩 騬 ࠧ ஥஢-
           ணࠬ  ਫ            ,
         ४砥  ,  ꥬ  8 .   ᯥ䨪
         砫  ᥡ ।⢠,   﫨 ᪮쪨  ⨢
         ਫ ᯮ짮      ६  
         ﭨ.
              ᮡ     ணࠬ,  ᯮ ७
         , ⢮ ᮡ 룮 ࠧࠡ稪 १
         ணࠬ,   襭   ,   ࠩ , 
          ᯥ.  -,  ⠪ ணࠬ   ࠭  
         ᢮      ७ ,   㬥蠥 ꥬ
         筮    .  -, 䫨⮢  ⠪
          㣨 ணࠬ - ᯮ짮 ७  -
          ,  ⠪  LIM EMS ।  ᮣ襭 
         ணࠬ஢,   ।  ⠪ 䫨-
         ⮢.

                            ନ LIM EMS 3.2

              ᭮ 奬 LIM EMS 3.2 ࠡ⠥ ᫥騬 ࠧ:
              1.   設   ⠭  8    
          ᪮쪨 .  ⫨稥  ࠧ   -
         ⥫       ࠭  16 .  -
         ७    ਫﬨ DOS ।⢥, ⠪
               640  ᭮ ࠭⢠ -
         ᮭ쭮 .
              2.    ⠪ ᮤঠ  ॣ஢ ᮮ⢥-
         ⢨,  ࠢ ணࠬ  ⠭ ⮡ࠦ
         -    16- ࠭   () ७
              16-     64-⭮  
         ᭮ ࠭⢠ ᮭ쭮 , 㥬 -
          ஬. ࠭  ࠧ頥 -  १ࢭ -
         ᭮ ࠭⢥ ᮭ쭮   640   -
          樨 8086/8 - 1  .        ࠭筮  
         뢠  䨧᪮  ࠭楩    ।  ᫮ 0 - 3.
         ࠭  ࠧ , १ ஥ ࠢ쭮 ᠭ
         ணࠬ          ᥩ   
         () ७ .    ᮤন ॣ-
         ஢  ⮡ࠦ   ᯥ祭 㯭 ࠭ -
         ७  ணࠬ 뢠 ࠭ ⮡ࠦ.
              3. ࠢ ⥬ ७ ,   ࠭-
          ⮡ࠦ,  믮 ணࠬ ⮩, 뢠
           ७      (Expanded Memory Manager),
          ⠢ ⮢⥫  ७  .  

                                      - 7-6 -
          ⠪ ,   DOS  BIOS ᯥ稢 ணࠬ 䥩
          ਫ  ன ,  室饩  ,  -
          ७  ᯥ稢 ணࠬ 䥩 -
          ਫ  ⥬ ७ .   ७-
             㦠   ⠪ ,   ࠩ 
         DOS   ६ 㧪  ᮮ頥  ணࠬ १ ணࠬ-
          뢠 67h, ᯮ 堭 । ࠬ஢, ࠢ-
           䥩ᮬ 뢠 21h DOS.
              4.   ணࠬ  ७  ࠧ-
               ᪨ ࠭   ணࠬ. 
         ⠪ ࠧ頥 ࠡ稪 (handle),  ணࠬ ᯮ
          ᫥  ७    ७
         ,   ।  ࠭ ७ ,  -
         묨 㦭 ࠡ.    ⠪  ࠧ  ࠡ稪
         䠩 DOS ᯮ   ᫥ 䠩,  -
          ணࠬ,  ࠡ稪 ७  ᯮ  -
         ஬  ७    ᫥ ⢠ ⨢
         ࠭ ७   ணࠬ.  ଠ  ࠡ稪
         ।,  ᪫祭 ⮣ 䠪,    16-⭮
         稭.   ᪨ ࠭,  易  ࠡ稪,
         뢠 ⭮⥫쭮   祭,   襣,
         祬 ⢮ ࠭, 襭 ணࠬ.
              5.     ७  訢 -
         㦨, ணࠬ ।  ࠭  16  -
         ७  ,      ᯮ짮,  ⥬ 
         樨 ࠡ稪   ᪮ ࠭.
              ਬ砭:   ᨨ  ᯥ䨪樨  ᯮ  ନ
         䨪 (ID) ,   ନ ࠡ稪  뫪 
         ⢮ ࠭ ७ . ࠡ稪 LIM EMS -
          ।,   ணࠬ 㤥 ࠧ ⮫쪮 
         ⢮ ࠭,  ࠧ㬥 ᮮ⢥⢨    
         ணࠬ  䨪ࠬ ᮢ.    ࠪ⨪,  ,
           ணࠬ  訢    ࠭ -
         ७ .   㢨 ,     -
          ணࠬ஢.  ,  䠪,    ணࠬ  
            祬  䨪஬  EMS, 뢠
          짮⥫,   ᪠  ନ.
              6.  ७  LIM EMS 3.2 ⥬ ७-
             ᯥ稢  14  㭪権,  뢠 짮⥫
         (  १ࢭ 㭪樨),   ਫ ᯮ  
         祭  ଠ樨    ࠭ ७   ࠡ 
         .

                    襭 ᯥ䨪 ७ 

              ᪮ ନ஢ ஥ ꥤ  ୮ -
         諥    த 襭 ᯥ䨪樨 ७
         . ⮬  ᨫ, ஥ ন ௮-
         ﬨ AST Research, Quadram  Ashton-Tate 뫠  ᮢ⨬ (
         LIM EMS 3.2) 奬 ७ , 㥬 AQA EEMS.

                             ࠭祭 ࠧ 
              ᭮ ࠭祭  奬  LIM  EMS 3.2  窨 ७ AQA
         砫  ⮦ ࠧ  ࠭筮 , ࠢ 64
         .  १ ⠪ 讥   ७  ணࠬ
            ⮫쪮  4 16-  ࠭栬  ७
           512  (8 ), ন ᯥ䨪-

                                      - 7-7 -
         .  AQA EEMS  ணࠬ ,   ࠩ   
         ⥮ਨ,    ᨬ  64 16- ࠭ ७  
            ६.   (㬠騥  筮
           ᤢ ) 뢠,    ⮬ ,  -
           ⮡ࠦ  ⠢  1 !    -
         ,   ,  ⠬   ஢   BIOS 
         ࠭⢥  640,    DOS  ਫ  ࠭-
         ⢥  640? ⥭    ॣ ⮡ࠦ?
              . ⢨⥫쭮,   ன   EEMS   ,  
         ன  頥 LIM EMS;  AQA EEMS  ࠡ⠥  ⮩ -
         쭮  ᬥ.  LIM EMS 3.2 - ਬ ࢠ⨢  -
          襬 ᫥ 䨫䨨 ஥஢. ਬ, ࠧࠡ-
          ।,   ᮭ    ⮩  襭
         ᪮  (EGA)  ⥢ ⮩, ᮤঠ饩 , -
           ⮫쪮 64  ᯮ㥬  ᭮  ࠭⢠
           640.   ࠭⢮  640 㦥 ⢥म ࠢ
         DOS.    ࠧ,    ࠧࠡ稪  LIM  EMS  3.2  ⠫
         64- ࠭ .
              ࠡ稪 AQA 業   㣮 窨 ७. 
         㦤,   ⠭ ᮭ   CGA  MDA
            ࠭⢮  640  ⮡-
         ,    ࠩ  ,  12 ࠭ EMS ६.   ଠ
         Quarterdeck Office Systems,   㯠 祣  DOS,  ࠧࠡ⠫
         ⥫ , 뢠 DESQView,    ⠬
         ணࠬ    640.  ᫨  DESKView 뫠 ᯮᮡ  -
         ⠢    ⮡ࠦ ࠭  -
         ⥫쭮    ⠬ (᢮),  -
         ⥭樠    ⢥ ᮪ந⥫쭮 筮 ⥬
          IBM PC ᨫ쭮  .
              ଠ AST ࠧࠡ⠫ ,  ᯮᮡ  ⮡ࠦ 
         १  ᭮  ࠭⢮  1  ,  ᭠  ⠪  ࠧ
         DESKView 堭,  室  ண ४祭 
         ணࠬ. ࠪ᪨ ࠭祭, , ९ -
         ⮡ࠦ  ⥩ ᭮ ࠭⢠,  
          BIOS, ᯫ ஬    ᭮ , -
         室  㧪 ⥬.
              奬 EEMS  뭪  ࠭祭 ᯥ宬. -
          ⠭  த த樨,  맢 AST  Quadram,  -
          প  㭪樮 ७ 㣨 ᭮묨 ࠧ-
         ࠡ稪  ணࠬ  ᯥ祭  ᮭ쭮  
         ࠭稫    ⢥   ୠ⨢ ⠭
          LIM EMS. ࠡ稪 뫨 ,  EEMS,  ࠩ -
         ,  ᮢ⨬   LIM EMS,     ,  祢, 
         㬠,   ७,   ।,   -
         , ᫨ ७   ᮡ   ᮢ⨬  
          奬 LIM.

                                    LIM EMS 4.0

               ᨬ    १⮢  뭪  -   LIM
             AQA EEMS -  ਢ⥫쭮.  ᪮
         ਡ      த  Microsoft - Windows 2.0 (
         稭 , ॡ  ࠡ  ,  ᫠), 
           ४      640
          뫠 ਮ  ਢ⥫쭮.    ,
         ࠭⢮   640  뫮  楫,  ᪮ 
         IBM PS/2  ஫஬ ᯫ VGA    ࠭⢮  ,  

                                      - 7-8 -
         ࠩ ,  16- ࠭.
                1987 . 㯯 Lotus/Intel/Microsoft  ᯥ-
         䨪 LIM EMS 4.0.   ᯥ䨪 稫  ᥡ  -
           襭 ᢮⢠ AQA EEMS      ᪮쪮
         ᮡ⢥,    ᬮ७ ஡   
         .  㯯 AQA 稫 ⮫ ᨫ쭮 ⫥ ( ᮬ-
             ।ਭ   墠⪨  뭪),  
         ᪮   ᢮ 㡫筮 প ᯥ䨪樨 4.0.
               1988 . IBM  Microsoft 稫 ࠩ EMS   4.0
         樮 ⥬ PC-DOS  MS-DOS. ࠩ EMS  ࠭ -
           ᮤঠ  訡   孨᪨ ᯥ樠  ।
         ⢨ প  㭪樨 19h EMS,  㭪樨 "祭/-
         ⠭   ਡ  ࠡ稪",     㣨 ⭮襭
         ॠ EMS DOS 4.0 ᮮ⢥ ᯥ䨪樨  LIM  EMS  4.0.
            頥  ᯥ䨪樨 LIM EMS 4.0 ᨬ 
         ⮣,      樮 ⥬ DOS 4.0,  ᪮  
          ⭮襭 ᮯ殮  ⥬ EMS 4.0 筮.
                 1988 .   ᭮ ⭨   MS-DOS -
         ⠭  ᯥ䨪樨 LIM EMS 4.0. 䨪 ⠭ -
         ७  ᭨,  ࠩ ,    㬮 ࠧ-
         ࠡ稪 ணࠬ ᯥ祭,    室
         ᯮ,    -   ᭮  EMS  䠭-
         ⠧஢  ७ﬨ EEMS.
               .  7-1 ,  ࠧ  32  ७
             ।  ࠧ ⥩ 1--
          ᭮ ࠭⢠ ᮭ쭮  IBM.  -
         ᨬ   ᯮ짮  BIOS  ஬ ᯫ ࠭-
         ⢠  640  1024,       12  ࠭    16
         ७   ⮡ࠦ   . ਣ 
         ⮡ࠦ 筠  ( AQA EEMS  LIM EMS  4.0)  
         ਬ ⮫쪮 ७ﬨ 樮 ⥬.
       Ŀ
         ᢮⢠  ᯥ䨪樨  뫨 ⪮ 㬥-
       ஢   1987 .    ᬮ७ ࠭  ᫮
           㭪権 ᨨ 3.2   ᮧ ᯥ-
        4.0 ᮢ⨬      ﬨ.  ᬮ७
       ᯥ䨪 4.0, ᭨  ᢮⢠  ࠭ ᮢ-
       ⨬ 뫠 㡫   1987 .                   
       
              ⢮ 㭪権,  ন ᯥ䨪樥 4.0, 
         -  28 - ᨫ ᫮ 㭪権,  뢠 짮⥫,  -
         㯭  ᯥ䨪樨 3.2. 設⢮   㭪権 
         ᪮쪨 㭪ﬨ.  ࠧ,  । ७
          ⥯  ᪮쪮 ࠧ ,  祬 . 樠 -
           ᯥ䨪樨    LIM EMS 4.0,  譮 ண ᫥
         ⨫ 孨᪮ ࠢ筮 㪮⢠ DOS,  祬 㤢-
           ꥬ  ⭮襭  ᢮ ।⢥ ᨨ 3.2.
                ६     㤥 ।⠢  ⠪  
         ஡⥩, ᪮쪮  ,  樨  -
         ७ ,  쥧 ࠧࠡ稪  㦨,   
            㦨  ⢥   樠쭮 ᯥ䨪-
         樨.       ᯥ䨪樨  ।⢥  
         Intel,   (800) 538-3373      (503) 629-7354
           㣨 .
                 室  祭 EMS   
          祭 㭪権, ᮢ⨬  LIM EMS 3.2,  ⥬  ᬮ-
         ७ 㭪権,   ᯥ䨪樥 4.0.   ᪮ 㢨-

                                      - 7-9 -
         ,  㭪樨,   EMS 4.0,   ,  祬  
         ᮢ⨬묨 ७ﬨ:      㭪樨 ।-
             ᯮᮡ 믮   ࠢ
         ७  ,  祬  ,   뫨   묨
         㭪ﬨ.  ࠧ,    㭪樨 ᨩ 3.2  4.0
         ।⠢ ᮢ⭮.

                 LIM EMS 4.0  ࠢ  LIM EMS 3.2  AQA EEMS

              ᪮    ⠭⮢ ७  -
            뭪,  ࠧࠡ稪,  ॢ -
           ਫ  ᯮ짮 ७ ,   -
         ,    (ᨨ) ᯥ䨪樨  ন    ᢮
         ணࠬ.       ᨨ ᯥ䨪樨 ७ 
         ᯥ稢 㭪,   ணࠬ । -
          ᯥ䨪樨,  ॠ㥬 ஬ ७ ,  
          ணࠬ  㤥     ।  ⮣,    
         㭪権  ७   ਣ  ᯮ짮  
         設.   ᫥饬 ᬮ७ ।⠢ ᮢ⨬  
         孨᪨ 䠪,      ᯥ䨪-
          ७ ,  訬 ࠧ ⢥ 訬 -
         ७  ணࠬ஢  뭮 楫.

                           ࠦ  ᮢ⨬

              ᫨  ॢ  ਫ    ७  -
         , ஥  ᯮ짮 ᠬ  ⠭ -
          ⥬ ७ ,   , ⭮,  訡, -
           ⮫쪮  㭪樨  ७ ,  
         ন ᯥ䨪樥 LIM EMS 3.2.  ,   -
         뢠,    設⢮  ᭮   ७  ⠢騪
         ணࠬ ᯥ祭 쬠 ਫ ᯥ䨪 LIM EMS 4.0
         ᪮  ᫥    .   ⥯ ਭ LIM EMS 4.0
         ࠪ᪨ ࠭    ⢥  ⠭-
          ७ . 騥 䠪 ন  ⢥-
         :
              - 짮⥫  室 㯠   㤮-
           ᯮ짮 ਫ,  ᠭ  ᯥ-
         樨 LIM EMS 4.0.    ७ , ஥-
         ஢  ᯥ䨪樨 LIM  EMS  3.2,    ন
         ᯥ䨪樥 4.0 - ⮢⥫ 室 ⮫쪮  
          ७ ,   ॠ樨 맮 㭪権 4.0.
              - ௮  Intel ᭠ 楢 ᢮ 㯮
          ७  ஬ ७ ,  ন-
         騬 ᯥ䨪 4.0 ᯫ⭮.
              - ࠪ᪨   㤮 ७  (
          ७ ) ন LIM EMS 4.0.
              - ணࠬ த ᮪ ,  ⠪  Windows
         2.0  Microsoft ( ।⠢),  Excel (஭
         ⠡)   DESKView 2.0  Quarterdeck Office Systems (-
         筠 ।) -  ᯮ ।⢠ LIM EMS  4.0.  騥
         ᮢ襭⢮  ஭ ⠡    㣨 ᭮-
           ⠢騪,   ,  ⠪     প
         LIM EMS 4.0.
                ࠧࠡ稪 ᯥ䨪樨 AQA EEMS  ,  
             த  ७    ᮣᮢ뢠 
         ᯥ䨪樥 LIM EMS 4.0, ,  ᫥  ᮢ ண-

                                      - 7-10 -
         ࠬ⠬  ਬ  㭪樨  S    ணࠬ.  ⮬
          Ŀ10000000H(16Mb)      Ŀ
               1                               /         
                                             /           
          /\/\/\/\/\/\/                     /             
           /\/\/\/\/\/\/\                  /               
                                                         
                        /                   
          Ŀ100000H(1Mb)/                     
                2                /                       
          ĴF000H(960Kb)                      
               /\  2a        /                           
          ĴĴE0000H(896Kb)                     
                                           
            3  Ŀ   6                   7    
               \/                                       
          ĴC0000H\                           
                4      (768Kb) \                         
          ĴB0000H    \                       
                4a     (704Kb)     \                     
                        \                   
                                                           
          ĿA0000H(640Kb)    \                
                  \              
               Ŀ  8  \            
             \/   40000H(256Kb)          \          
               5                                \        
           \/\/\/\/\/\/\                     
          \/\/\/\/\/\/\
                       
          0000H(0Kb)

            .7-1. ७   ᭮ ࠭⢮ IBM PC

         1 - ७  (AT, PS/2  ࠬ 80286/80386),
         2 - PC/XT/AT PS/2 ROM-BIOS,
         2a- PC/AT PS/2 ROM-BIOS,
         3 - ROM ⥫ ஢ -뢮,
         4 - EGA/VGA/MDA/CGA ᯫ ,
         4a- EGA/VGA ᯫ ,
         5 -  짮⥫,
         6 - ࠭  LIM EMS,  4  12 16- 䨧᪨
             ࠭,
         7 -  32  ७ ,   0  2048 16-
             ᪨ ࠭,
         8 - ਣ   ⮡ࠦ 筠  ( ᯮ짮
             ⮫쪮 樮 ⥬), 0-24 16- 䨧᪨
             ࠭

         쭥 ஡⥩  EEMS         㤥.
          ࠧࠡ稪  ᠭ ਫ ७ -
          ⠪ ࠧ,  ⮡ ஢   ⢨  ࠩ
           ७  ,  ⠪     ᯥ䨪樨
         ७  ⠭.



                                      - 7-11 -
                              孨᪨ ᮮࠦ
               窨  ७ ࠧࠡ稪 ਫ 襭  ਬ
         㭪権 LIM EMS 4.0  ணࠬ,  ࠭稢 ⮫쪮 㭪-
           LIM EMS 3.2,  砫  룫拉   ।⥭
         ணࠬ.
               ࠢ     ஢,  ⠪    
         믮  ࠧ㬭 ਪ 㭪,  ॡ ७-
          ,   㭪権,  㯭 ⮫쪮  ᯥ-
         樨 LIM EMS 3.2. , ᯮ 㭪樨  ᮪ ஢-
         ,    ᯥ䨪樥  4.0,   㤥 ᯮᮡ ᮪
         ꥬ ,    ਤ   믮  
            ࠡ  ७ .  ⭮, -
          ࠧ    ,   㭪樨 LIM EMS 4.0
           ।  訥      ७ 
         筮   믮   ७    맮-
          㭪樨  ७ .

                             ७ 

               ணࠬ   짮⥫ ᮭ ஢
         뢠 ७  ⮫쪮  ஬   ,  -
               ᯥ樠쭮 ⨯.   ᫨誮 㧪
         ।⠢ 㤠筮,  ᪮   LIM EMS  -
           祣-    㤮,  ᯮ㥬  ॠ樨
         ⥬ ७ .  뫮 ⪮ 㯮  
          ,    ७    -
           类 ᯥ樠쭮 㤮.  ਢ ᭮-
             ᬥ   ᫥ ࠧ  ,
         뢠饬 ᪮쪮 ॠ権 ७ .
               ᨬ    樨  ⥬ ७ 
            ணࠬ ,  㥬 
         ७  ,   ন ணࠬ 䥩,
         । ᯥ䨪樥 ७ ,    ਪ
         ணࠬ  饩  ⥬ ७ .
              ணࠬ  ७    ᠬ  㯠뢠
           ࠩ  ᨬ쭮  ன⢠  DOS,  ।  
         CONFIG.SYS,   㦠  ⨢  DOS    ६
         㧪.  ⫨砥  㣨 ࠩ஢ ன DOS  ⮬,
          ᮮ饭  ਫ  ࠩ஬  ன⢠ 
         ७    室 १ 䠩 ⥬ DOS  
         ⨩, ⨩, ⥭  ᥩ. ॥  ᯮ -
         堭 뢠, 쬠 室  ᯮ㥬 DOS,  ஬ 
         ॣ ।  㭪権,  ࠬ    -
           ।. ᭮ 稭 ⮣,   ७ -
          㯠  ࠩ ன⢠,  砥   ⮬,  ⮡
             㦠  筮 ࠭   㧪,
         ⠪ ⮡ ࠩ ன (ਬ,  ᪨    ன
         窨  )  ᯮ짮 ७ .

                       㭪樨  ७ 

               㤮⢮७  ᯥ䨪樨 LIM EMS 4.0  -
         ७   ॠ뢠 28 ࠧ 뢠 짮-
         ⥫ 㭪権,       㭪権. 讥
         ⢮  㭪権    㭪権,  ।  ᯥ䨪樥,
         ।⠢  ⥫쭮  ९⢨  ࠧ㬭 ᯮ짮
         ७ .

                                      - 7-12 -
               LIM  EMS 4.0  ॡ  ࠧࠡ稪 -
          襣 ஢ 㭪権  ७  .  ०
         祬    筥   堭 ᯮ짮  㭪権 
         ணࠬ  ᥬ  몠 ᮪ ஢,  筥 -
                 ࠧ 㭪権  ७
            ⥣਩:
             ଠ樮        ﭨ    -
                                 ७ ,  ⠪ ⢠ -
                                 ᮢ ७ ,   -
                                    ᯮ ਫﬨ
                                 ᯥ䨪樨 ७ .
             ࠢ 묨  ࠢ ࠧ饭, ᢮, -
                                 ।,  ⮡ࠦ  ࠧ
                                     ७ .
             ࠢ          ࠢ ࠭  ⠭
                                 ⥪⮢ ﭨ ⮡ࠦ -
                                   ७    ࠩࠬ  -
                                 ன   ணࠬ, १묨  -
                                  ᫥ 襭.
             ਥ஢     ࠢ ४祭 ﭨ ⮡-
              樮       ७  
             ⥬             ᪮쪨,६ ࠡ騬 -
                                 ﬨ   ।,  -
                                        Microsoft    Windows    
                                 Quarterdeck DeskView.
             १ࢨ஢   㣨, 騥  , 
                                 뫨 㤠  㬥஢ ᯥ-
                                 䨪樨, 뫠  LIM EMS 3.2.

               ⠡.7-1 ।⠢ 㭪樨 LIM EMS 3.2  4.0, ਭ-
         騥    । ᮢ (⠪  .  ⠡.7.2).
          ⬥,   㭪樨 ⭮   -
         ᠬ  ᫥ , 祬   ⥣ਨ.

                                                          7-1
                             㭪樨 LIM EMS 3.2  4.0
       
                        㭪樨 EMS 3.2          EMS 4.0
       
       ଠ樮륳 (1) ﭨ   (21) ⠫ -
                                                  ࠡ稪
                      (2)  - (25) ᨢ ⮡-
                         筮            ࠦ 䨧᪨
                      (3)  -      ᮢ
                         ࠧ饭 ࠭ 
                      (7)       
                     (12)  -
                         稪              
                     (13) ࠭ -
                         ࠡ稪            
                     (14)  ࠭
                         ࠡ稪          
                                              
       ࠢ    (4) ࠭   (17)⮡ࠦ/ ⮡-
         묨     (5)⮡ࠦ/ ⮡-       ࠭ -
                         ࠭ ࠡ-    ࠡ稪
                        稪                  (18)ࠧ ࠭

                                      - 7-13 -
       
                     (6)᢮ ࠭   (19)/⠭
                                                  ਡ ࠡ稪
                                              (20)/⠭
                                                   ࠡ稪
                                              (22) ⮡ࠦ
                                                  ࠭  ३
                                              (23) ⮡ࠦ
                                                  ࠭  맢
                                              (24)।/
                                                   
                                              
       ࠢ    (8)࠭ ⮡ࠦ-   (16)/⠭
       ⥪⮬        ࠭              筮 ⮡ࠦ
                     (9)⠭ ⮡-      ࠭
                         ࠭        (23) ⮡ࠦ
                     (15)/⠭      ࠭  맢
                        ⮡ࠦ ࠭  (24)।/
                                                   
                                              
       ਥ-                          (26)  
                                          㤮 ७-
       樮                                
       ⥬                                (27) ⠭-
                                                  /ࠡ⠭
                                                  ࠭
                                              (28)  ॣ-
                                                  ஢ ⮡ࠦ
                                              (29)⮢ 
                                                  ७  
                                                  㧪  
                                              (30)/
                                                  㭪樨  -
                                                  樮 ⥬/।
       १ࢨ-    (10)१ࢨ஢      
       ஢      (11)१ࢨ஢      
       

                                                          7-2
                       㭪樨  ७ 
       
        N        室 ॣ     室 ॣ
       
        1  -  AH: 40h ( 㭪樨)  
          ﭨ                                   
        2     AH: 41h ( 㭪樨)  BX -  ᥣ
          ᥣ -                          ࠭筮 
          筮                           
        3  稪 AH: 42h ( 㭪樨)  BX - - ࠧ-
          ࠧ饭                           饭 ࠭
          ࠭                                
        4        AH: 43h ( 㭪樨)  DX - ࠡ稪
          ࠭         BX:  ࠭ 
                           ࠧ饭            
        5 ⮡ࠧ/      AH: 44h ( 㭪樨)  
           ⮡-    AL:  䨧᪮  
           ࠭        ࠭          

                                      - 7-14 -
          ࠡ稪      BX:  ᪮  
                               ࠭          
                           DX: ࠡ稪        
        6 ᢮       AH: 45h ( 㭪樨)  
          ࠭         DX: ࠡ稪        
        7    AH: 46h ( 㭪樨)  AL: 筮-.
                                                  ᨨ  -
                                                  ७ 
        8 ࠭ ⮡-  AH: 47h ( 㭪樨)  
          ࠦ ࠭  DX: ࠡ稪        
        9 ⠭     AH: 48h ( 㭪樨)  
          ⮡ࠦ                            
          ࠭                                
       10 १ࢨ஢                        
       11 १ࢨ஢                        
       12  稪 AH: 4h ( 㭪樨)  BX - - ࠡ-
          ࠡ稪                             稪  ᯮ짮
       13  ࠭- AH: 4h ( 㭪樨)  BX - - ࠭,
           ࠡ稪   DX: ࠡ稪         ࠧ饭  㪠-
                                                   ࠡ稪
       14       AH: 4Dh ( 㭪樨)  BX - - ᯮ-
          ࠭ -   ES:DI: ᨢ ࠭   ࠡ稪
          稪                 ࠡ稪    
       15  ⮡- AX: 400h ( 㭪樨) ᨢ ⮡ࠦ
           ࠭    ES:DI: ᨢ ⮡ࠦ- ࠭ 祭<--
                            ࠭ 祭 ﭨ ⮡ࠦ
                                                   ७
                                                  
          ⠭ ⮡- AX: 401h ( 㭪樨) ﭨ ⮡ࠦ
          ࠦ ࠭  ES:DI: ᨢ ⮡ࠦ-  ७
                            ࠭-筨 <--ᨢ ⮡-
                                                  ࠦ ࠭--
                                                  筨
            - AX: 402h ( 㭪樨) ᨢ ⮡ࠦ
           ⮡ࠦ- ES:DI: ᨢ ⮡ࠦ- ࠭ 祭<--
           ࠭       ࠭ 祭 ﭨ ⮡ࠦ
                           DS:SI: ᨢ ⮡ࠦ-  ७
                            ࠭-筨 
                                                  ﭨ ⮡ࠦ
                                                   ७
                                                  <--ᨢ ⮡-
                                                  ࠦ ࠭--
                                                  筨
       15  ࠧ  AX: 403h ( 㭪樨) AL: - ⮢,
          ᨢ ⮡-                         ॡ㥬  ᨢ
           ࠭                           ⮡ࠦ ࠭-
                                                  筨  ࠭
                                                  祭
       16  - AX: 4F00h ( 㭪樨) ᨢ 筮
           ⮡ࠦ  DS:SI-->ᨢ ⮡-   ⮡ࠦ ࠭
          ࠭          ࠦ ᥣ⮢     祭<---
                           ES:DI-->ᨢ -  ﭨ ⮡-
                            ⮡ࠦ -   -
                            祭         ७ 
                                                 
           -                       
           ⮡ࠦ                        

                                      - 7-15 -
          ᥣ⮢:                             
                                                  
          mappable_seg_count    dw ?               - ⮡ࠦ
                                                   ᥣ.  ࠭
          mappable_seg_addr dw (mappable_seg_count)  ᥣ ⮡-
                            dup (?)                ࠦ ᥣ⮢
                                                    ࠭
          ⠭ -  AX: 4F01h ( 㭪樨) 筮 ﭨ
          筮 ⮡-   DS:SI-->筮 ⮡- ⮡ࠦ 
           ࠭    ࠦ ࠭-- ७ <--
                                             ᨢ 筮
                                                  ⮡ࠦ ࠭-
                                                  筨
           ࠧ  AX: 4F02h ( 㭪樨) AL: - ⮢,
          ᨢ -  BX:- ࠭     室  -
           ⮡ࠦ-   ᨢ 筮      ᨢ
           ࠭      ⮡ࠦ ࠭    筮 ⮡ࠦ-
                                                   ࠭  㪠-
                                                   - 䨧-
                                                   ࠭
       17 ⮡ࠧ/      AH: 50h ( 㭪樨)  
           ⮡-      AL: 00h - 䨧᪠  
          ࠦ ࠭  ࠭,     
           ࠡ-  ᢮ ஬         
          稪            01h - 䨧᪠ -
                           ,  ᮬ
                           ᥣ              
                           DX: ࠡ稪        
                           CX: - ⮢ 
                           ᨢ ⮡ࠦ   
                           ᪨ ࠭   
                           䨧᪨            
                           DS:SI-->ᨢ ⮡-
                            ᪨ ࠭
                            䨧᪨          
           -                       
           ⮡ࠦ                         
          ᪨ -                       
            䨧᪨                       
          log_page_number   dw ?                    .࠭
          phys_page_number  dw ?                    䨧.࠭
                                                     ᥣ, 
                                                  ᨬ  -
                                                  ,   AL
       18 ࠧ  AH:51h ( 㭪樨)    BX:  ࠭,
          ࠭        DX: ࠡ稪          ࠧ頥  -
                          BX:  ࠭,     ⪨ ᫥ ࠧ-
                                饭
                          ࠡ稪 ᫥ -  
                          ࠧ饭           
       19   - AX:5200h( 㭪樨)   AL: 0 - ࠡ稪
           ࠡ- DX: ࠡ稪          稢
                                                1 - 稢
          ⠭ -  AX:5201h( 㭪樨)   
          ਡ  -   DX: ࠡ稪         
          稪         BL:   ਡ    
                          ࠡ稪            

                                      - 7-16 -
                          00h, 稢        
                          01h, 稢      
           -   AX:5202h( 㭪樨)   AL: 0 - -
                                          ন-
          ਡ⠬                               
                                                  1 - ন
       20      AX:5300h( 㭪樨)   ਥ  
          ࠡ稪     DX:ࠡ稪           ࠡ稪<--
                          S:DI-->8-ᨬ    ࠡ稪
                          -ਥ    
                          ࠡ稪            
                                                 
          ⠭   AX:5301h( 㭪樨)   -筨 
          ࠡ稪     DX:ࠡ稪           ࠡ稪-->
                          DS:SI-->8-ᨬ    ࠡ稪
                          -筨    
                          ࠡ稪            
       21  -  AX:5400h( 㭪樨)   AL:- ⮢ 
           ࠡ稪 ES:DI-->ᨢ ⠫-  ᨢ ⠫ -
                           ࠡ稪          稪
          ⠫ ࠡ稪:                    
          handle_value     dw ?                    ⨢ ࠡ稪
          handle_name      db 8 dup (?)             ࠡ稪
           -  AX:5401h( 㭪樨)   DX: ࠡ稪  㪠-
           -   DS:SI-->8-ᨬ     
          稪          ᪠      
                          ࠡ稪            
           饥  AX:5402h( 㭪樨)   BX:饥 -
          - ࠡ-                         ࠡ稪, -
          稪                                   দ -
                                                  ஬ ७ 
       22  ⮡-  AH:55h ( 㭪樨)    
          ࠦ ࠭ AL:0 - 䨧᪨      
           ३       ࠭, । 
                          䨧᪨ ࠬ   
                          ࠭                
                          1 - 䨧᪨ ࠭
                          । ᮬ   
                          ᥣ               
                          DX: ࠡ稪         
                          DS:SI--> ⮡-
                            室       
           ⮡-                        
          ࠦ  室                      
          target_address   dd ?                    窠 室 楫
                                                 
          log_phys_map_len db ?                    - ⮢ 
                                                    ⮡ࠦ
                                                  ࠭-->
                                                  ᨢ ⮡ࠦ
                                                  ᪨ ࠭
                                                   䨧᪨,  
                                                  㭪樨 17
          log_phys_map_ptr  dd ?                   
       23  ⮡- AH:56h ( 㭪樨)    
           ࠭  AL:0 - 䨧᪨       1 - 䨧᪨ ࠭-
          맢         ࠭, ।  , । -

                                      - 7-17 -
                          䨧᪨ ࠬ    ᮬ ᥣ
                          ࠭                 DX: ࠡ稪
                                                  DS:SI-->
                                                  ⮡ࠦ  맮
           ⮡࠳                       
            맮                         
          target_address   dd ?                    -->
                                                  室 楫
         new_page_map_len   db ?                    - ࠭ 
                                                  ⮡ࠦ ᫥
                                                  㤠 맮
                                                  -->  㭪樨 17
         new_page_map_ptr   dd ?                   
         old_page_map_len   db ?                    - ࠭ 
                                                  ⮡ࠦ ᫥
                                                  㤠 
                                                  -->  㭪樨 17
         old_page_map_ptr   dd ?                   
          १ࢨ஢  dw 4 dup (?)            १ࢨ஢ 
                                                    ७-
                                                   
                                                 
           ࠧ AX:5602h( 㭪樨)   BX:-  -
          ࠭⢠                            ࠭⢠ ⥪,
          ⥪ ⮡ࠦ-                         ॡ㥬 㭪樥:
           ࠭                              ⮡ࠦ
                                                  ࠭  맢
       24 । - AX:5700h( 㭪樨)   
               DS:SI-->ਯ - 
                           筨/ਥ- 
                                             
           -    AX:5701h( 㭪樨)   
               DS:SI-->ਯ - 
                           筨/ਥ- 
                                             
          ਯ -                         
           筨-                         
          /ਥ                           
          region_length    dd ?                    - ⮢ 
                                                  /
        source_memory_type  db ?                    筠 : 0
          source_handle    dw ?                    筠 : 0
                                                  ७ :
                                                  ࠡ稪 筨
        source_init_offset  dw ?                    筠 :
                                                  砫쭮 ᬥ饭 
                                                  ᥣ 筨
                                                  ७ :
                                                  砫쭮 ᬥ饭 
                                                  ࠭ 筨
        source_page_seg     dw ?                    筠 :
                                                  砫 ᥣ
                                                  筨
                                                  ७ :
                                                  砫쭠 ᪠
                                                  ࠭ 筨
        dest_memory_type    db ?                    筠 : 0

                                      - 7-18 -
                                                   ७ :1
            dest_handle   dw ?                    筠 : 0
                                                  ७ :
                                                  ࠡ稪 ਥ
          dest_init_offset  dw ?                    筠 : -
                                                  砫쭮 ᬥ饭 
                                                  ᥣ ਥ
                                                  ७ :
                                                  砫쭮 ᬥ饭 
                                                  ࠭ ਥ
          dest_seg_page     dw ?                    筠 : -
                                                  砫 ᥣ -
                                                  
                                                  ७ :
                                                  砫쭠 ᪠
                                                  ࠭ ਥ
       25  ᨢ AX:5800h( 㭪樨)   CX: - ⮢
          ⮡ࠦ    ES:DI-->ᨢ ⮡-     ᨢ ⮡ࠦ-
          䨧᪨      ࠦ 䨧᪨      䨧᪨ -
          ᮢ         ᮢ                 ᮢ
          ᨢ ⮡-  (ᨢ, ஢- 
           䨧-   浪 -  
           ᮢ     ⠭ ᥣ⮢)       
         phys_page_segment  dw ?                     ᥣ ⮡-
                                                  ࠦ ࠭,
                                                  ᮮ⢥饩 -
                                                   䨧᪮
                                                  ࠭
         phys_page_number   dw ?                   
           稪AX:5801( 㭪樨)    CX: - ⮢
          ⮢ -                         ᨢ ⮡ࠦ-
           䨧᪨                            䨧᪨ -
          ᮢ                                 ᮢ
                                                 
       26  ᨢ AX:5900( 㭪樨)    ᨢ 䨣樨
          䨣樨    ES:DI-->ᨢ -   㤮<---
          㤮    樨 㤮     㤮
          ᨢ 䨣-                        
          樨 㤮                      
          raw_page_size    dw ?                    室 ࠧ
                                                  ࠭  
         alternate_reg_sets dw ?                    - ୠ⨢-
                                                   ஢ ॣ-
                                                  ஢ ⮡ࠦ
          save_area_size   dw ?                    - ⮢  -
                                                   ࠭
                                                  ⥪(⠪ -
                                                  頥 㭪. 15)
          DMA_reg_sets     dw ?                    - ஢ -
                                                  ஢, ஥ -
                                                    -
                                                   
                                                  0: ࠡ  
                                                  ⠭ LIM
         DMA_channel_op     dw ?                    0: ࠡ  
                                                  ⠭ LIM
                                                  1: ⮫쪮 1  

                                      - 7-19 -
           稪AX:5902h( 㭪樨)   BX: - ࠧ-
          ࠧ饭                           饭 室
          室 ࠭                        ࠭
                                                  DX: 饥 -
                                                  室 ࠭
       27       AH:5h ( 㭪樨)    DX: ࠡ稪
          ⠭/    AL:00h-ࠧ       室/⠭-
          室 ࠭-⠭ ࠭     ࠭
                        01h-ࠧ 室-  
                           ࠭           
                          BX: ࠭  ࠧ-
                          饭                
       28  -AX:500h( 㭪樨)   ᫨ BL<>0<--⨢-
          ⨢                            ୠ⨢
          ॣ஢ ⮡-                          ॣ஢
          ࠦ                                 ⮡ࠦ
                                                  ᫨ BL=0-ES:DI<--
                                                   ࠭
                                                  ⥪ ॣ஢
                                                  ⮡ࠦ
          ⠭ - AX:501h( 㭪樨)   
          ୠ⨢ - BL:00h                 
           ॣ஢   ES:DI--> - 
          ⮡ࠦ      ⥪ ॣ-
                          ஢ ⮡ࠦ        
                          <>00h-- ୠ- 
                          ⨢ ஢  ॣ-
                          ஢ ⮡ࠦ        
           ࠧ AX:502h( 㭪樨)   DX: - ⮢ 
           -                           ࠭
           ୠ-                         ⥪ ॣ஢
          ⨢ ⮡-                         ⮡ࠦ
                                            
           - AX:503h( 㭪樨)   BL:0 -  㯭
          ୠ⨢ -                         ୠ⨢ -
           ॣ஢                           ஢ ॣ஢ ⮡-
          ⮡ࠦ                             ࠦ
                                                  <>0 - - ࠧ-
                                                  饭 ୠ⨢-
                                                   ஢ ॣ-
                                                  ஢ ⮡ࠦ
          ᢮ - AX:504h( 㭪樨)   
          ୠ⨢ - BL: - ୠ⨢-
           ॣ஢    ஢ ॣ஢  
          ⮡ࠦ     ⮡ࠦ            
                                                 
           -  AX:505h( 㭪樨)   BL:0 -  ॣ-
           ॣ஢                           ஢   ন-
                                               
                                                  <>0 - - ࠧ-
                                                  饭 ஢
                                                  ॣ஢ 
             AX:506h( 㭪樨)   
          ୠ⨢  BL:  ॣ-
           ॣ஢ ஢                 
          ⮡ࠦ     DL:      
          몫  AX:507h( 㭪樨)   

                                      - 7-20 -
          ୠ⨢  BL:  ॣ-
           ॣ஢ ஢                 
          ⮡ࠦ                            
          ᢮ -  AX:508h( 㭪樨)   
           ॣ஢   BL:  ॣ-
                       ஢                 
       29 ⮢   AH:5h ( 㭪樨)    
           㧪                           
                                           
       30    AX:5D00h( 㭪樨)   BX,CX:  㯠
          㭪権 OS/E    BX,CX:  㯠     (頥 ⮫-
                          (ॡ騩       ࢮ 맮)
                          맮 ᫥ ࢮ) 
          몫  AX:5D01h( 㭪樨)   BX,CX:  㯠
          㭪権 OS/E    BX,CX:  㯠     (頥 ⮫-
                          (ॡ騩       ࢮ 맮)
                          맮 ᫥ ࢮ) 
            AX:5D02h( 㭪樨)   
          㯠         BX,CX:  㯠    
                          (頥    
                          맮 祭   
                          몫祭  㭪-
                          権 OS/E               
       


                      樨  ७ 

              室   ७    ࠧࠡ⠭ ମ
         Intel  ᯥ祭 ணࠬ 䥩   ⠬  ,
           ⠢  ᯥ䨪樨 ७  LIM.
         㣨 ⠢騪    ७  ,  
         﫨   ⠬ ७   ᮡ⢥ ⮢-
         . , ॠ樨  ७   ࠭-
         祭    ଥ ணࠬ ࠩ  ᯥ樠쭮 ⨯ 
         .
               ।饬 ᬮ७  ७  ⬥-
         砫,   ᯥ䨪 ७  LIM ( ࠩ 
         ᫥  ᨨ 3.2)  魮    . ᪮쪮
         ࠧࠡ稪 ணࠬ ᯥ祭 竨  䠪  த-
          ᮧ  ७ ,   ॡ -
          ᯥ樠쭮 㤮 ७ .  -
          ७ ,    筮 뫠   -
            ७ ,  ७ -
          ⥬ ᢮  / 筮        
         ७ ,  騥   ⥬, ᮢ-
           PC/AT.
               ⥬,  ᮢ⨬  PC/AT  PS/2,    -
           ய Intel 80386,  ᤥ  ᮧ
          ७   㣮  ⨯,    ᯮ
         ᮢ襭⢮  ࠢ ,  
          80386.  ଠ COMPAQ  饥 ६ 砥    
         ᢮  Deskpro 386  ७ , 騩
          ⮩ , 㥬 CEMM.
                 ६    ਠ  ७ 
         ॠ ᯥ䨪 ७  LIM,   ⨯  ⠪
         ࠪਧ ஬ ⥫ ⮨, ந⥫쭮

                                      - 7-21 -
            ᯥ祭 ᮢ⨬,      
           ࠧࠡ稪 ਫ ᯥ䨪樨 ७ . 
         ॡ  ᮮࠦ ࠧࠡ⪨  ணࠬ஢,  -
               ᯮᮡ 襣 ணࠬ ᯥ祭
         ࠢ쭮 㭪樮஢    ਥ  ந⥫쭮  
         ࠧ ⥬ ७ .  ᫨ ⮨ ࠧࠡ⪨
           䠪஬,  ਬ,   ।  ⭮-
         ⥫쭮  ண ணࠬ  ७  
          ᮧ, ஢  믮 ணࠬ,  -
           ७    ⥭ ஢   -
         .
               ᫥  ࠧ  뢠   ⮨⢠ 
         ⪨, 易   ⨯ ॠ樨 ७ -
         ,  ⭮襭  ᮢ⨬, ந⥫쭮  ⮨.

           㤮   ணࠬ  ᯥ祭  ७ 

               ᨬ   ஡⥩ 樨 
          ७   ࠢ ᪨ ४祭
             אַ 㥬  १  ॣ஢ ⮡-
         ࠦ  .  ⮡ࠦ ॠ ᫥⥫-
          ⮢ /뢮,  -   ࠭⢥  /뢮
         .   ন騩   ७ 
          䨣஢  ⠭  ᯮᮡ  -
           ᭮  ࠭⢠ /뢮  ᮢ  640
         ࠬ   /뢮,  ⠪  BIOS.
                                    ⮨⢠
               -  ⮡ࠦ ࠭  ७    
         ࠭    ᯥ䨪樨 ७   ਬ୮ 100
         ᥪ㭤.
              ப 㯭 - 㯭   ⥬  設 -
         ⥪ன PC, PC/AT  Microchannel.
                                    ⪨
              ண -  ७  讣 ꥬ  -
          ⮫쪮, ᪮쪮 楫 .
              ࠭⢮ - ॡ     設    
         .
              ⨬ -    ᯥ䨪樨 ७ -
           㤥 ࠡ   ୮ ⥬.  짮⥫
         ᮪ந⥫ PC/AT   ,  ⮡ -
         㯠  ᯥ䨪樨 ७ ,  ᯮᮡ ࠡ
          ᪮ 設  ⥬.

                      ணࠬ ᯥ祭 80386

               ᯮ짮 㤮 ࠢ ,  -
         饥   ய 80386,   ⠭  -
          ० 8086,  騬  80386. ⠫ ࠡ ࠢ
          80386  ० 㠫쭮 8086 ᫨誮 ᫮   -
         ᭥ .  筮 ᪠,   墠⠥  믮
         㭪権 ⮡ࠦ, 㦨 ॣࠬ ⮡ࠦ ࠭
          ᫮  ७ .
                                    ⮨⢠
               -  ⮡ࠦ ࠭  믮  ᪮쪮
         ᥪ㭤.
              ண - ।,    㦥  設 80386 
         訬 ⢮ ७ .

                                      - 7-22 -
                                    ⪨
              ண -  ।,        設  
         80386      讣 ꥬ ७ .  -
         ⨬  - 㣮 ணࠬ ᯥ祭,  ᯮ饥 -
         饭 ० 80386,  ⠪    ।  
         "⥫ DOS",   䫨⮢  ᯮ짮 -
         ஬ ७   ।  饭  ०,  ⠪  
         ࠭ ०  㠫 ० 8086. ஢ 
         ७  80386  䠪᪨  ⠭    
         ணࠬ ᯥ祭,     㤥 ਬ,  
          ⢥ ᯮᮡ, ࠭騬 ᯥ.

                          쪮 ணࠬ ᯥ祭

                  8086   ७    㫨
           ᯥ䨪樨  ७    ⥬ ᢮ 
          ஬ ࠭,  ᯮ  筮 ,    
           ⪨  ᪮.      80286  ७ 
         (ᮢ⨬  PC/AT   50  60 PS/2)   ७
           㫨஢ ७  ⥬ ᢮ -
          ᯥ䨪樨 ७   ७    
         ஬  ࠭ ᯥ䨪樨 ७   筮 .
                                    ⮨⢠
              ண -  ७  ॡ ⮫쪮  -
         ,  筮  稨   㤮.
                                    ⪨
              ந⥫쭮 - ७   筮   -
         ७  ⭮   ⪨  ⭨ ࠧ  ६,
         祬  ⮡ࠦ ࠭  饩  ७  -
         .  ⪮ ᪠ ॡ  ⭨   ࠧ  -
         .  ᫨ , 祬   -  , ॡ -
         ୮   ࠧ  ६.   㤨⥫쭮, 
          । ਫ  ᯥ䨪樨  ७-
          ,   ॡ ந⥫쭮  ७-
          ,  ⠪  ࠭ ⥪  ᪨  ࠭
          ᫥饣 ୮ 맮  ᢮ TSR    
          .
                                   ⨬
               饩  (    ⨯  80386)  ᪠
         ࠭  ᯥ䨪樨  ७   ⮡ࠦ -
         ,  祬   䨧 ࠭ ᯥ䨪樨 ७ -
                ६,   ⮤, 㥬
         ᮢ饭  ( 㤥 ᬮ७ ஡    -
         ).  ᪮   ࠭ ,   "⮡-
         "   ࠧ  ᭮  ࠭⢠, ਫ,
            ᮢ饭 ,    ࠡ  -
          ⨯  ७ .   ࠪ⨪  設⢮
         ਫ,    ᯮ ᯥ䨪 ७ ,
            ᮢ饭  ࠡ.

                      IBM PS/2 80286  㢥祭 
              ⪮ 㬥஢  ।⢮  樨 㢥祭 
         IBM 80286   50  60 PS/2 ᯥ稢    ॣ஢
         㡠樨, 㯭 १ ।⢮ 롮 ணࠬ㥬 -
         樨 ⥪ 設 ப, ஥   ணࠬ-
         ஢,   ⮣ ⮡ ࠡ  ॣࠬ ⮡ࠦ 
         饩  ७ .

                                      - 7-23 -
              祢,   ॣ  㡠樨  뫨  ஥஢,
         ⮡  ணࠬ ᠬ஢  祭 ⠭
           BIOS ८⮡ࠦ  ⪠訥 䨧᪨  -
           訥   ( ⮡ࠦ 訥   -
         ࠭⢮, ⠢襥 ᫥ ⮣   ), ⠪ ⮡ -
         設  ࠡ,   ᫥ ⪠   ᪮쪨  
         .
                ⮡ࠦ   㢥祭  
         ࠭⢮    640   ।⠢ ⮡ࠦ 筮
         , ࠧ蠥 ᮢ襭⢮ ᯥ䨪樥 ७
          AQA  ᯥ䨪樥 ७  LIM 4.0.   ᮦ-
         ,  楫  ,  饩    
          50  60 PS/2,    ⮬ ⪫祭.
                                    ⮨⢠
              ண - ࠧ㬥,    㦥   50 
         60 IBM PS/2  樥 㢥祭 ७    IBM.  㣨
           㢥祭    PS/2  ন   -
         ন ।⢮ 㡠樨.
              ந⥫쭮 -  ७ , ᠭ
          짮 ⨬ ॣࠬ,   筮 ⠪ ࠡ  
         ᫮  ७ .
                                    ⪨
              ண -  ࠧ㬥,        PS/2  樥
         㢥祭 ७  IBM.

          䥩 ਪ ணࠬ ᯥ䨪樨 ७ 

              த ।  饣 ᬮ७    㭪-
         権  ७ ,  ⥯   ᭨, 
         뤠  ७    ७ -
           襩 ணࠬ  ᥬ  몥 ᮪ ஢ 
           ⢥  ७     .

                 ணࠬ஢  몥 ᥬ ᯥ䨪樨
                                ७ 

              ணࠬ  몥  ᥬ,  ਢ訥    䥩
         ⥬  맮 DOS,  ,    ७ 
         ।⠢ ࠪ᪨  :
              1.    㭪樨  ॡ饩 㭪樨 ᯥ䨪-
         樨 ७   ॣ AH.
              2.   㣨  㬥,  室   ࠭
         㭪樨, /    ,  । ᯥ-
         樥 ७  LIM.
              3. । ࠢ   ७    ⥬
         뤠 ணࠬ 뢠 67h.
              4.  ७  頥  ࠢ  ண-
         ࠬ,  뤠襩 ,  १뢠  㭪樨, 饭 
         ॣ AH  蠣,  ﭨ  襭 樨. 
         ﭨ 00h ᨣ  ᯥ譮 襭 㭪樨; 
         㣮 祭 뢠,    ७   -
         ⮫    -  ஡,   믮 ࠭
         㭪.  祭  訡     ᫥    
         ⮩ .


                                      - 7-24 -
                                䫨 뢠

              ணࠬ  ,   뢠 67h  १ࢨ-
         ஢ "樠쭮"  ᯥ䨪樨 ७  LIM; -
          㣨 㯭  த ணࠬ  ⠪  ᯮ  .
         䫨  ᯮ짮 ⮣ 뢠  稢 ࠧ-
         ࠡ稪  짮⥫ ணࠬ  ᯥ祭 ᯥ䨪樨
         ७ ,   ਫ,  ஥ ࠡ⠥  
         設,  ⠥ ࠡ  㣮  筮  䨣樥
         㤮.     뢠 67h,  ⮡  ᮢ⭮
         ࠧ﫮 , 祬  ணࠬ,   ७-
             ணࠬ  믮 ⮣.  ,  ᫨
          ७  ᯮᮡ ࠧ ᯮ짮 -
         뢠 67h  㣨 ணࠬ ᯥ祭,    -
         ஢ ⮤ 㦥 ⢨  ७-
             ࠡ,  ᫨ 㣮 ࠡ稪 뢠
         ⠭  楯 । ࠡ稪 뢠   ७-
          .
              ᪮ ਬ 뢠 67h ஥   ᯥ䨪
         ७  LIM,   ਫ, ᠭ  ᯮ-
          ७ ,  뢠  ஬ ७
           ⥬  뤠  ⮣ 뢠.  ࠧ, 䫨
         - 뢠 67h  ஬ ७   㣨-
           ணࠬ      ࠧ襭 ⮫쪮,  ᫨ ணࠬ
         ᯥ祭,   ⭮饥  ᯥ䨪樨  ७  ,
           ४䨣஢  ஢,  ⮡ ᯮ짮-
          㣮  뢠.

                               모 ᮪ ஢

                   砥    ⥬묨 맮 DOS,   
         ⠭⭮ 䥩  몠 ᮪ ஢, ⠪ 
         , ᪠    AH  ᯥ䨪樥 ७  LIM.
         , ࠧࠡ稪,     ७ -
           ਫ,  ᠭ  몠 ᮪ ஢, 筮
          ᪮쪮 ᯮᮡ ୠ⨢.    த  㯭
         ᪮쪮  ⥪  㭪権 ᯥ䨪樨 ७  
          ࠧ 몮.     몮  ⥬
          ணࠬ  㭪ﬨ,  ᯥ稢 騥
         ।⢠  㯠  ॣࠬ ய   뤠  ண-
         ࠬ 뢠. ஬ ⮣, 모 ᮪ ஢  ⠪-
          ᯥ稢 - ᯮᮡ  । 㤠  㪠-
         ⥫ (ॣ ᥣ  ᬥ饭)   樨  
         , ।   ७ .
              ணࠬ, 騥  ᥬ 808,   -
         뢠 ணࠬ  ᮣ襭ﬨ  । ࠬ஢  -
          ᮪ ஢,  ,   ᫮ ᮧ  ணࠬ
         ᮯ殮  ᯥ䨪樨 ७ . ਬ ⠪ -
         , ᠭ  몥   Microsoft  5.0,  ਢ-
                㣨 ணࠬ.

                             ࠡ⪠ ᫮ 訡

               ணࠬ, 騩   ணࠬ
         ᯥ祭,   ,  ਤ ࠡ뢠 
         騥 訡.  䨪 ७  LIM 4.0 -
         । 36 ࠧ ᫮ 訡,      

                                      - 7-25 -
          ७ , ⠪    ,  ᨣ-
           ᯥ譮 襭 㭪樨. ⨭ 7-1 ᮤন ।-
            訡 ᯥ䨪樨 ७  LIM 4.0, 
          ⠡. 7-3 ᫥  ﭨ 訡.
               ७   頥 ⠫஢ 
         ﭨ 襭  ॣ AH      -
             뢠.   ⭮襭  㦥 
         ᮮ饭  訡 䥩 ணࠬ஢ ᯥ䨪樨 -
         ७   ᫥⥫   ᫮,  祬 DOS.
          㦥  ᮮ饭 ᫮  訡,  ᫥襣  
         맮 DOS,  ணࠬ  ஠஢ ॣ  䫠
         ७  ⥬ 뤠 㣮 ⥬  맮    饭
         ⠫஢  訡.
                                                          7-3
                   ﭨ ᯥ䨪樨 ७ 
                             Lotus/Intel/Microsoft 4.0
         
                                   ᠭ
         
         00H  㭪 訫  訡
         80H ⪠ ணࠬ ᯥ祭 ࠩ  ७
             
         81H ࠩ  ७   㦨  
             ⪠
         82H ࠩ  ७   (祣 㣮 
             ந諮)
         83H H ᪠ 㪠 ࠡ稪
         84H  㭪樨 ।
         85H  騩   㯭 ࠡ稪
         86H ந諠 訡 ⠭ ⥪ ⮡ࠦ
         87H   筮 饣 ᫠ ࠭
         88H   筮 ᫠ ࠧ饭 ࠭
         89H     ᪨ ࠭  㭪樨, ᮢ⨬
              LIM 3.2
         8AH ᪠ ࠭   㪠 ࠡ稪
         8BH ᪠ ࠭  
         8CH ९  ࠭ ⥪ ॣ஢ ⮡ࠦ-
             
         8DH  ⥪ ⥪ ॣ஢ ⮡ࠦ  㦥    ⥪,
             易  㪠 ࠡ稪
         8EH  ⥪ ⥪ ॣ஢ ⮡ࠦ  ⥪, 易-
               㪠 ࠡ稪
         8FH 뫠 襭 । 㭪
         90H  ਡ  ।
         91H ⥬  ন ࠧ蠥 (࣮ᨬ)
         92H   ।   ந諠 筠 १ -
             筨
         93H   ७  ᫨誮   㪠 -
             ࠡ稪
         94H  筮  ७  ४뢠
         95H 饭  । ᪮ ࠭ ॢ室  -
             ᪮ ࠭
         96H   ॢ蠥 ।  1 
         97H  ७  筨  ਥ   
               ࠡ稪  ४뢠
         98H H।/ন  ⨯  筨  -
             

                                      - 7-26 -
         9AH   ୠ⨢   ॣ஢ ⮡ࠦ  -
             
         9BH  ୠ⨢  ॣ஢  ⮡ࠦ/ ᯮ-
             
         9CH H ন ୠ⨢  ॣ஢ ⮡ࠦ
             /
         9DH   ୠ⨢   ॣ஢ ⮡ࠦ/ 
             ।,  ࠧ饭   ⥪騬
         9EH ९    ন
         9FH  ९    
         A0H H     祭 ࠡ稪, ᮮ⢥饥
             㪠  ࠡ稪
         A1H ࠡ稪  㪠  㦥 
         A2H ⪠ 室  砫 1-⭮  ᭮ ࠭⢠
              ६ ।  
         A3H ন      짮⥫,  ।  
             㭪樨 ᪠  ᫥
         A4H 樮 ⥬  ᪠ 饭  㭪樨
         

                               ⨭ 7-1.EMMERR.H
         ------------------------------------------------------------------

         /*

         த:        ;
         :        2.00
         :  emmerr.h
         ঠ: ।  訡 ᯥ䨪樨 ७ -
                         LIM 4.0
         뫪: ᯥ䨪 ७  LIM  4.0 .5-10
         */

        #defineFRSTEMERR  0x80  /* ࢮ 訡  ७
                                                           */
        #defineLASTEMERR  0xA4  /* ᫥ 訡  -
                                                          ७ */

        #defineFUNCCOC    0x00  /*㪠. 㭪 訫  訡*/
        #defineEMDRVSWF   0x80  /*⪠  ணࠬ  ᯥ祭 ࠩ
                                              ७ */
        #defineEMDRVHWF   0x81  /*ࠩ  ७ 
                                             㦨  ⪠*/
        #defineEMDRVBSY   0x82  /*ࠩ  ७ 
                                       (祣 㣮  ந諮)*/
        #defineHANDLNFD   0x83  /* ᪠ 㪠 ࠡ稪 */
        #defineFUNCCUND   0x84  /* 㭪樨 । */
        #defineHANDLINS   0x85  /* 騩   㯭 -
                                                                稪*/
        #defineMAPCXPRO   0x86  /*ந諠 訡 ⠭ ⥪
                                                              ⮡ࠦ*/
        #defineTOTPGINS   0x87  /*    筮   饣
                                                           ᫠  ࠭*/
        #defineUNAPGINS   0x88  /*   筮 ᫠
                                                    ࠧ饭 ࠭*/
        #defineLPAGE2SM   0x89  /*    ᪨ ࠭ 
                                          㭪樨,  ᮢ⨬  LIM 3.2*/

                                      - 7-27 -
        #defineLPAGERNG   0x8A  /*᪠ ࠭   㪠-
                                                       ࠡ稪*/
        #definePPAGE2BG   0x8B  /*䨧᪠ ࠭  */
        #defineMRCSAFUL   0x8C  /*९  ࠭ ⥪
                                                   ॣ஢  ⮡ࠦ*/
        #defineMRCSTDUP   0x8D  /*  ⥪  ⥪ ॣ஢ ⮡ࠦ
                                㦥  ⥪, 易    㪠
                                                             ࠡ稪*/
        #defineMRCSTNFD   0x8E  /* ⥪ ⥪ ॣ஢ ⮡ࠦ
                                 ⥪, 易  㪠 -
                                                               ࠡ稪*/
        #defineSFUNCUND   0x8F  /*뫠 襭 ।. 㭪*/
        #defineATTRBUND   0x90  /*⨯ ਡ  ।*/
        #defineNVSTGUNS   0x91  /*⥬   ন ࠧ蠥
                                                    (࣮ᨬ)*/
        #defineMREGNOVW   0x92  /* ।  ந諠
                                           筠 १ 筨*/
        #defineMREGN2SM   0x93  /* ७  ᫨誮 
                                   㪠 ࠡ稪*/
        #defineMREGNOVL   0x94  /* 筮  ७  -
                                                           ४뢠*/
        #defineLPGOF2BG   0x95  /*ᬥ饭   । ᪮ ࠭
                                 ॢ室  ᪮ ࠭*/
        #defineMREGN2BG   0x96  /*  ॢ蠥 ।  1*/
        #defineMREGNDUP   0x97  /* ७  筨 
                                ਥ      ࠡ稪 
                                                            ४뢠*/
        #defineMREGNUND   0x98  /*।/ন  ⨯
                                              筨  ਥ*/
        #defineAMRSNFD    0x9A  /*㪠 ୠ⨢  ॣ஢
                                                ⮡ࠦ  */
        #defineAMDRSINS   0x9B  /* ୠ⨢  ॣ஢ ⮡-
                                                 ࠦ/ ᯮ*/
        #defineAMDRSUNS   0x9C  /* ন ୠ⨢ 
                                                ॣ஢ ⮡ࠦ/*/
        #defineAMDRSUND   0x9D  /*㪠 ୠ⨢  ॣ஢
                                ⮡ࠦ/  ।,   ࠧ饭
                                                       ⥪騬*/
        #defineDDMACUNS   0x9E  /*९    -*/
        #defineDDMACNFD   0x9F  /*㪠 ९    -
                                                                 */
        #defineHNDVLNFD   0xA0  /*    祭 ࠡ-
                                , ᮮ⢥饥  㪠   -
                                                                ࠡ稪*/
        #defineHNDNMDUP   0xA1  /*ࠡ稪  㪠  㦥 -
                                                                     */
        #defineMREGNWRP   0xA2  /*⪠ 室  砫 1-⭮
                                ᭮ ࠭⢠  ६ ।-
                                                             */
        #defineUSRDSFMT   0xA3  /*ᮤন   짮⥫,
                                ।  㭪樨  ᪠   -
                                                                ᫥*/
        #defineOPSYSACC   0xA4  /*樮 ⥬  ᪠ -
                                                              㭪樨*/
         -------------------------------------------------------------------



                                      - 7-28 -
         ᪮  ஢ઠ    稥  訡,  㦥  ஬
         ७   -     ஢ ॣ AH 
          ᫥  맮,  ᥣ  뢠  ࠧ஢뢠騬
         ⠫   ୮ ᪮ ணࠬ ᯥ祭,
         ஥  㤮㦨 த .   ᥡ  (  
         짮⥫)   ⫠  ᠭ  ⪠-
          ।⢮ ஢ન  訡 ᫥  맮  -
          ७ .
               ணࠬ  ᫮ 訡, 饭 ஬
         ७ ,    த 訡     
         ணࠬ ᯮᮡ  ᫮,   ᯥ䨪 -
         ७  LIM 뫠   "⠭".   -
         ਬ, ணࠬ  ᤥ 祭 , 稢  -
          ७   "⪠    ७
         ",    ᮮ饭  ஡ 짮⥫  ঠ
          ⥫쭮 ᯮ짮 㦨    -
         ७ .
              , ,  ணࠬ    ᯮᮡ
         ⠭   ᫮ ⠪,   "筮 㯭
         ࠭ ᯥ䨪樨 ७ ", , ⥬ ᯮ-
           ᪮  䠩  ⢥ ६  ࠭
          ,      ७ .
              㣨 ᫮ ⠪,   "᪠ ࠭  -
         ", 筮 뢠,    訡 ஥஢ 
         ணࠬ஢    ਫ  ᯥ䨪樨 ७ .
           ணࠬ ࠡ⪨ 訡 ᯥ䨪樨 ७-
           ⠪,  ⮡  ᮮ頫 祩  襩 ணࠬ, 
          ᫮ 訡,  ।⥫쭮 ⠪ ࠧ, 
         易  室 .

            ᠭ ணࠬ,   ७ 

               ணࠬ,   ७ , -
          ᮡ । ⮪.   ணࠬ   -
          ᫥騥 蠣  ⮬ 浪,   ᫥:
              1. 㦨 稥  ७ .
              2. ।,    稨 筮  襣 -
          ⢮ ࠭ ७ .
              3.   砫  ࠭.
              4.  ࠭ ७ .
              5. ⮡ࠧ ࠭ ७    ࠭.
              6. 뢠,  뢠  믮   ७
         .
              7.  ࠭ ७     -
         ७  । 襭 襣 ਫ.

                  騥 㪮騥 㪠  ணࠬ஢

              ࠪ⨪ ७       ७
           뢠 ⭮⥫쭮 讥 ⢮ ࠭祭
          ணࠬ,   ᯮ. 騥 㪮騥 㪠-
          ⭮  ᥬ ணࠬ,    ७
         :

              * ணࠬ,  ᯮ騥 ᮢ饭 ,  ࠭-
         ஢,  ⥬ ७  ন . -
            ,    ᪠ ࠭ ७-

                                      - 7-29 -
           ⮡ࠦ ,  祬     䨧  ࠭
          ࠭.   ॠ  ७ , -
          ᯮ   ⮡ࠦ  ࠭,  䥪  
         ᯮᮡ  砥  ⮬,   16-⭠ ࠭ ७
          㤥  ,  祬   16-⭮  -
         ᭮  ࠭⢠  .   ७ ,
         ᠭ  ⨭  ᯥ䨪樨 ७ , -
         ୮ ࠭筮 堭 80386  樨 ७ -
          80286 IBM PS/2 -   ন  ᯮᮡ. ,
          ணࠬ  ᯥ䨪樨 ७ ,  -
           ⮡ࠦ ࠭ ⥬ ஢  -
           ,   믮 ᮢ饭 .
               ணࠬ  믮 ᫥ ஢   ⮣,
         ⮡ । ন   ७  ᮢ-
         饭 :
              1. ⮡ࠧ     ࠭,   ࠩ  
          䨧᪨.
              2.      䨧᪨ ࠭.
              3. ᫨ ,  ᠭ  䨧 ࠭  蠣 2,
         ⠪     㣨 䨧᪨ ࠭,    뫠
         ⮡ࠦ ᪠ ࠭, ⮣ ॠ  -
         ७  ন ᮢ饭 .
               .  7-2    ᮢ饭  .  ᪮
         ⢥  ᪠  ࠭ ⮡ࠦ    
         䨧᪨ ࠭  ।  ࠭,    ,
         室饬  ᬥ饭 2132  ᪮ ࠭,  -
           䨧᪨ ᠬ CC00:2132  D400:2132.

              * ਫ    ࠧ饭  ࠭  -
          ७    ।  襭  ணࠬ.  
         ணࠬ    ࠡ稪 ७ ,
         ࠧ饭 襩 ணࠬ,  ।  ଠ  ଠ-
          襭.
           砫 ᥣ     N 䨧᪮
           䨧᪮ ࠭     ࠭
                        CC00H    Ŀ        
                                           \    ᬥ饭 2132 
                                    0        \  ᪮ ࠭
                        D000H    Ĵ      \Ŀ
                                         \    /        Ŀ  
                                    1      \/          123.45  
                        D400H    Ĵ/  \           
                                              /\
                                    2       /
                        D800H    Ĵ/
                                        
                                    3       ⥭/: 䨧᪨
                                      CC00:2132 
                                              D400:2132  뫠
                                                   
                                                ७ 

             . 7-2. 饭   -   ᪠ ࠭,
                     ⮡ࠦ  祬   䨧 ࠭

              ⪠    ࠭   ७ 
           맢  ⪠   ᫥騥  ७ 

                                      - 7-30 -
         ᫥⢨ 墠⪨ ࠭  ࠡ稪. ,  
         室   訡  ਩ 襭 襩 ணࠬ ᢮-
          ७  ⠪,     ଠ쭮 -
         .

              * ⮡ࠦ   ⮫쪮   ,   
         ணࠬ ࠧ⨫  DOS.  㭪 ।/  -
         ⥩,   ᯥ䨪樨 ७  LIM 4.0, ᤥ
          ᢮     ᭮ ࠭⢠, ࠢ-
         塞 DOS.  । ᢮    ᭮ ࠭-
         ⢮ DOS  ணࠬ  ࠧ   DOS,  ⠪   -
          ७   ࠢ 筮 .  ⪠ 
         ᮡ ⮣ ࠢ, ⭮, ਢ  ᪠  
          ⥬.

              *   ,   ன ।  맮
         㭪樨  ७  ,      室  
         ⮡ࠦ .  ᪫祭 㭪権 " ⮡ࠦ
         ࠭  ३"  " ⮡ࠦ ࠭    맢",
           뫨 ᯥ樠쭮 ࠧࠡ⠭  প 믮 -
          ꥪ⮢  ७ ,  ,  -
          ।  ७ ,   室
          ,     ⮡ࠦ. ਬ, 
         ணࠬ      ࠭ ⥪ ⮡-
         ࠦ  ७ .

              *  ࠧ頩 ⥪ ணࠬ  ७ . ᫨ 
         ᯮ  ७     ࠭  믮 ,
          ⥪  ࠧ   筮  (⮡ࠦ)  .
         ᫨  ணࠬ  㦨  뢠  砥 ࠢ 
         ணࠬ,  ⥪ ன 室  ७  ,  ⥭
             ⥪,   ⠫ ⮡ࠦ, ਢ
           ⪠.

           ਬ ७      १  ணࠬ

              ࠩ ன DOS  ணࠬ, 騥 १⭮ 
         襭,   믮 ⥫ ॡ  ⮣,
         ⮡ 짮 ७   襭 㣨 ண-
         ࠬ. ᬮ७ ⥫ ॡ  짮 -
         ७   ⠪ ணࠬ 㤥 ⫮,     -
         稬 ⢥ 모  ⮤ ணࠬ஢,  ਬ塞 
         ࠢ ७    ணࠬ DOS.

                 㦥   ७ 

               ᯥ䨪樨 ७   LIM  㬥  
         ᯮᮡ,   ਬ  㦥  -
         ७ : ⮤ ⮣ ࠡ稪  ⮤ 祭 -
           뢠.   ⠭ ணࠬ DOS,   ⮤  
         롥 -  ।⥭.  ⮤ ⮣ ࠡ稪
         ।⠢  ;  ⮤  祭    뢠 㤥
         ।⠢  ࠧ,  뢠饬 ᯮ짮 ७ -
           १묨 ணࠬ.

                            ⮤ ⮣ ࠡ稪
               㦥     ७   -

                                      - 7-31 -
          ⮤ ⮣ ࠡ稪 ᯮ  ⥬ -
           䠩 DOS,    ⢨ ࠩ ன⢠
          ७  ,  砥  ⢨,  -
         ।  ᯮᮡ 㦨   뢠 67h.
         ⮤  ᫥騬 ࠧ:
              1. 믮 맮 ⮣ ࠡ稪 DOS (㭪 DOS-
         3Dh), ।騩  ⮫쪮  ⥭ (० 0)   -
           㯠  EMMXXXX0.   -  ࠩ ᨬ쭮 ன⢠
          ७ ,     ⠭    ६
         ࢨ筮 㧪, ᫨  ࠩ ன⢠  -
         ७   䠩 CONFIG.SYS 뫮 㪠 DEVICE=.
              2. ᫨  맮  ⮣ ࠡ稪  믮  
          "   䠩   㯠",      
         ,  ७  . 맮 ⮣ -
         ࠡ稪  ⠪  믮, ᫨  ࠡ稪 䠩
         DOS  ᯮ । ⮬ .   ।饭 ⮣
          ணࠬ  믮    ७  
            㣮 䠩.
              3. ᫨ 맮 ⮣ ࠡ稪 蠥 ᯥ譮, 
         뢠,   䠩  ன⢮   
         ७ .   ⮣, ⮡ ⠭, ⭮  -
         ࠡ稪, 饭  蠣 1,  ன  䠩, 뤠
         맮 "ࠢ /뢮  ன" (IOCTL)  -  㭪
         DOS  44h -  㭪樥 " ଠ  ன⢥" (-
          AL=00h)  ࠡ稪 䠩, 饭  蠣 1.
              4. ᫨ ࠡ稪 ਭ ன,  7 ॣ DL
         㤥 ࠢ 1,   뢠  ⢨  ७-
          .  ᫨  7 ࠢ 0,  ࠡ稪 易  䠩, ⠪
            ,  ७  .
              5. ᫨  ࠡ稪  뫠  ன⢮,  뤠 맮
         IOCTL    㭪樥  "  室  ﭨ"   (ॣ
         AL=07h)   ࠡ稪,  ⮣ ⮡ । ⮢-
           ७  ࠡ뢠   -
          ७ .
              6. ᫨   ७  ⮢ ࠡ뢠  -
          㦨 ७ ,  맮 IOCTL -
          祭 0FFh  ॣ AL.   ⨢ 砥  -
         ७    ᯮᮡ  ࠡ뢠  
          㦨 ७ .
              7. ᫨ 砫  ࠡ稪 DOS ⨣ 楫,  -
         ன    맮  ࠡ稪 (㭪 DOS 3h).
           ࠡ稪    㦥,  ᪮ 쭥襥 饭
          ஬ ७   訬 ਫ  ந-
           १ 䥩 뢠 67h   ᯮ 䠩 -
         ⥬ DOS.

                 ஢ઠ ᨨ ᯥ䨪樨 ७ ,
                   ন ஬ ७ 

              ᫨  ७    ⮢ 㦨-
          , 뤠 㭪 7 " ",  ⮣ ⮡
         㤮⮢,     ७ ,  -
           ணࠬ ᮮ頥,  ন   ᯥ䨪樨
         ७  ,    ॡ 襩 ணࠬ.  
         㭪 頥 ᫮  筮-筮     
         ॣ AL.  訥   ᫠ 뢠 ᭮ 
         ᨨ.  訥    ஡  ⮣ ᫠  

                                      - 7-32 -
         ᯮ짮  ⠢騪    祭 ᮢ襭⢮
          ४樨 訡   ஢ ७ . -
         ⥫쭮,  襩  ணࠬ  ஢ન ᨨ  ᫥ -
            ࠬ.    ⥣ 砥  
         믮 ࠢ  "  ࠢ".
               砥 MS-DOS 4.0 짮⥫   ⠭  ࠩ-
           쥩  ஭    樨 ⪮  ࠩ,
         ᯥ稢   ࠭ ᪠ 樮 ⥬, -
         ⮬ 筮  믮  ஢  MS-DOS 4.0  ,
          ࠩ  ᯥ䨪樨  ७    .  
         ⢨⥫쭮, ࠩ MS-DOS 4.0   ⠭, ,
         ,   ࠢ 㤮.   ⢥ ⮣  ,
         맮 㭪 1, " ﭨ", ⨢ 祭 40h 
         ॣ AH  맢 뢠 67h; ᫨   ணࠬ
         ᯥ祭 ࠡ ᮢ⭮, 㭪  祭  
         AH;  ᫨ ,    㫥 祭.    㫥
         祭 㪠뢠  ⪠,  祭 80h  81h 㪠뢠 
         ⪠ 㤮, ⨯  ᮮ⢥⢨ ࠩ஢.  ⮬
         砥  ⮡ࠧ 짮⥫ ᮮ饭  ⮬,   ࠩ 
          ࠡ ࠢ쭮. ᫨  ਫ  ࠡ-
         ᮡ  ᯥ䨪樨 ७  MS-DOS 4.0, -
         ,   ࠭ ᨨ MS-DOS 4.0   ন  㭪  19h,
         "/⠭   ਡ ࠡ稪",  ᯥ䨪樨 -
         ७  LIM.

                 । 㯭 ꥬ ७ 

               ⮣   ணࠬ ᬮ  짮  ७
         ,      ࠧ    ७
         .  蠣   ࠢ 砥  ।
          筮 ⢠ ࠭  㤮⢮७ ॡ-
          襩 ணࠬ ⥬ 뤠 㭪樨 3 ᯥ䨪樨  -
         ७    "  稪  ᫠ ࠧ饭 ࠭".
          㭪 頥 饥 ⢮  16-  ࠭,
         ࠢ塞 ஬ ७ ,  ⠪ ᫮ ࠭,
         㯭 襩 ணࠬ.

                           饭 ७ 

               ᨬ  ᪮  襩  ணࠬ 
           롨,  ࠧ   ७ ,  
         㤥 室 ६,    ⤥   
         ࠧ饭,  ॡ ६ 믮 ணࠬ -
         .   ਠ  ᥣ 室, ᫨ ⢮ ࠭
           祭  ६ 믮  ⥫쭮.  ன
         ਠ  㬥⥭, ᫨ ,  ॡ ७
           ணࠬ     뢠 ⢥  ६ -
           ணࠬ.   ਠ ⠪  楫ᮮࠧ, -
         ᪮ ⠥    ७  ,  㯭  㣨
         ணࠬ,   믮 ࠫ쭮. ਬ, 
         ୠ ணࠬ ஭ ⠡ ⠭ 㯭
         ꥬ ७   ࠧ頥 1/8 ⮣ ꥬ  ࠧ,
          ॡ ⥫쭠 . 筮,  㣮
           ஭ ⠡,   ࠧ頥 楫 -
         ࠧ饭  ७ ,   稭  믮,
          ⠢ 祣 㣨 ணࠬ,   ᫥⢨ 
         뢠 ᠬ ⮩ ணࠬ.
               ᯥ䨪樨 ७  LIM  3.2  ᯥ稢
         ⮫쪮    㭪 ࠧ饭 ७ :  "
         ࠭", 㭪 4 ᯥ䨪樨 ७ .  -
           ࠧ饭 頥 ⤥ ࠡ稪,  ᫥-
          ᯮ짮  뫪  ࠭, ⭮騥  ⮬ -
         ⭮  ࠧ饭.   ⢮   ࠭,   易    ⨬
         ࠡ稪,  䨪஢  ⮣ ,    ࠭  뫨
         ࠧ饭,   ⮣,     ७
         .   ࠭祭 ९ ᪮ ࠧ饭  
         ᢮  ७ ,  ⠪    -
          ७  ⮫쪮   ࠭, ਭ-
         騥 ⭮ ࠡ稪.
               ࠭祭 뫮   ᯥ䨪樨 ७ -
          LIM 4.0   㭪樨 "ࠧ ࠭", 㭪
         18 ᯥ䨪樨 ७ .   㢥稢 
         㬥 ⢮ ࠭,  易  ࠡ稪,   
          ᫥ ࠧ饭.   㭪  ᭨   ஡,
         易   ᪨ ࠢ ࠬ   
         ᯥ䨪樨 ७ ,  ᪮  ᪨  ࠭
            ᪫ ⮫쪮  .  ਬ, ᫨
           ⥫ ᢮    ࠭  ࠡ稪,
           ண 뫨 ࠧ饭  ᪨ ࠭,   -
           ᢮ ⠪ ᪨ ࠭  ⢥⮩  -
         .  㭪 ⠪    ࠭, -
           ࠡ稪,   ७   
         ᠬ ࠡ稪 ⥬ 㪠  稪 ࠭, ࠢ-
          .
               ⮣,  ⮡  㦤 ࠧ饭 ७
         ,  ᬮਬ  室 ࠭,   ᯥ䨪-
         樨  ७   LIM 4.0.  室 ࠭ - ᪨
         ࠭,    ⢮  ⠭⭮  ࠧ
         ࠭  ᯥ䨪樨  ७  - 16 - 뫨 
          ᯥ祭 ⥫쭮  㤮   ணࠬ-
           ᯥ祭  ७  ,  ᯮᮡ  ন
         訥 ࠧ ࠭.  ਬ,   ७ ,
         騩   Intel 80386,    ন ࠧ-
          室 ࠭, ࠢ 4, ᯥ稢 騬 -
           ᠭ  ணࠬ  ᯥ祭  ᯮᮡ ࠢ
         ७    䥪⨢,  祬 뫮    
         ࠧ ࠭  16.   ७  ᯥ-
         樨 ७  4.0, ᠭ  প -
            ᯥ䨪樨 ७ ,  ন  -
         室 ࠭ ਢ ࠧ  -  ࠧ  室  ࠭
         祭 ࠧ ⠭⭮ ࠭.
              室 ࠭ ࠧ   㭪樨 27, 㭪-
         樨 1,  " 室 ࠭",  ᯥ䨪樨 ७
         .   㭪樨 27 ᯥ䨪樨 ७  ⠪  
         㭪 0,  " ⠭ ࠭",  ᯥ-
         稢    㭪樨 " ࠭" ᯥ-
         䨪樨 ७  LIM 3.2   ७:   -
          ࠧ  ࠭  ࠡ稪.  ७
         ⠪    㭪樨 1.

                            ७ 

               筮      Intel 8086 ( ०
         ॠ ᮢ) । ன 16-⮢ : -

                                      - 7-34 -
          ᥣ,   㥬 ᥫ஬,  祭 ᬥ饭
          .
              ନ஢         ७ 
         ᪮쪮  ᫮.   砫,    ७-
            ᪨ ᮬ   ⥩:   -
         ࠡ稪,   ᪮ ࠭  ⮢ ᬥ饭  -
           ᪮  ࠭.  ஬  ⮣,   ⫨稥  
           筮 ,  ண ⠥ ﭭ 
          ࠧ饭,  䨧᪨     ७-
            , ⠪     ⥪饣 -
          ⮡ࠦ ⥬ ७ .
               ࠪ⨪   ࠭ ᫥    
         ७  ஭ ஡: ࠢ ᪨
         ᠬ  ࠢ 䨧᪨ ᠬ.

                          ࠢ ᪨ ᠬ

              䨪 ७  LIM । ࠡ稪 
         16-⮢ 稭 (   ন ᨬ 255 -
         稪)    ᪮ ࠭  14-⮢ ᫮ (-
         ᪨ ࠭ 㬥  0  2047).  㡠  ꥪ⮢
           ᪮ ࠭   ⭮襭   -
         ७ ,     ⮩ ࠧࠡ稪 ਫ-
          ७ .  ᮡ,   ⨯ ᫥
         ࠭  ७     ᫥ ࠢ?
              騩 ⮤  ࠭  ᫥    ७
           饭    ॡ  襩 ணࠬ
         ᯥ稢   16-⮢  ६   - ࠡ稪,
          ࠭  ⮢ ᬥ饭  ࠭.   
         室    ਬ ७   ਣ
            ,   ⭮⥫쭮   
         ࠢ  㪠⥫ﬨ,  ਬ塞묨  饭  .  
         ᫠ ࠭ 4-⮢     ७ ,
         ᫨   ⮬ ॡ 6-⮢ 㪠⥫  㯠  .
                䠪஬   ᬮ७    ᪮
             ,     ॢ ࠭ 
         ७ .  ঠ 吝 ᯨ᪠,  饣  
         ⮢ ६      ।,
         ᫨  ࠧ頥  ७ .  쭮 ᫮ 奬
         ࠢ    ॡ   ⮣,  ⮡ 䥪⨢
         㯫 ᢮  ࠭⢮    ࠡ뢠  ९,
          ࠧ ᯨ᪠ ॢ ࠧ ᪮ ࠭.
               ⢨⥫쭮, 䥪⨢ ᯮᮡ ࠢ ७-
             ᮢ襭  ⮤ ঠ 䠩
           樨, ਬ塞 ⥬ ࠢ  -
         .   ஡  ஡ ࠢ -
         ⠬  ६ ࠧ (,  ᨢ  ..)  -
         祭  ⢥  ஢  䨪஢  ࠧ (16- 
         砥 ᯥ䨪樨 ७ ). 㤨⥫쭮,  -
          ணࠬ    ᮭ ஢,  ᮢ-
         ⨬  IBM PC,   २⢠  室⢠ ⥬
         ࠭  ᮢ 䠩 ,   楫 䠩,   ७
         ,     稨.
              ॡ   ⥫ ᨫ  ᯮ짮 -
         ७   ⢥  ।⢠  ࠢ    饣
         祭   ணࠬ.  ,    䥪⨢ -
         짮 ७       ࠭-

                                      - 7-35 -
             ᯥ樠 室.  ਬ ਫ,
         ᫥     뢠,  ⭮⥫쭮
         ᫮  ⮤  ࠢ  ७   
         ࠡ⪨  ࠢ ᪮ . ᫥騥 ࠧ-
              饭 ⠫쭮 ᬮ७ ᪮쪨
         㭪権,    ᯥ䨪樨 ७  LIM  4.0,
          ⥫쭮 ᮪ ᨫ  ணࠬ஢, -
           ࠡ    묨  ७ .

                          ࠢ 䨧᪨ ᠬ

               ᯥ䨪樨  ७   LIM 3.2 䨧᪨ 
            ᪮ ࠭,       
         ⮡ࠦ    䨧 ࠭,    ⭮襭 
          64-⭮  ࠭.   ᥣ  ⮣  
         ࠭ 砥 ।⢮ 㭪樨 2  "  ᥣ-
           ࠭",  ᯥ䨪樨 ७ .  ࠧ-
           ࠭  ࠧ ⠭⭮ ᪮ ࠭ 
          䨧᪨ ࠭,  ஭㬥஢  0   3,  
           㪠뢠  맮 㭪樨 ᯥ䨪樨 ७ -
         .   ࠭  ᬥ묨   -  -
          ᫥饩  16 , 祬  ।饩.
              䨪 ७  LIM 4.0,     ᥡ
          ,  ᬥ, ஢ ࠭ ᮢ襭⢮-
          ᯥ䨪樨 ७  AQA,   ᫥ 䨧-
         ᪮        ᫮  ᨬ
          襩 窨 ७.     㭪樨 2 ᯥ䨪樨 LIM
         4.0    ७      ⥯ ᯥ 
         ணࠬ ⠡楩 ஢ 䨧᪨ ࠭   ᮢ  ᥣ-
         ⮢, ᮮ⢥  䨧᪮ ࠭.
              㭪 25, 㭪 1, "  ⮢ ᮢ
         䨧᪮ ࠭",  ᯥ䨪樨 ७  頥
         ⢮ ⮡ࠦ 䨧᪨ ࠭, ন -
         ஬ ७ .  ᯮ  㭪  ।-
          ࠧ ᨢ,  ண । 㭪樨 25, -
         㭪樨 0,  " ᨢ  ⮡ࠦ  䨧᪨  ᮢ",
         ᯥ䨪樨  ७ ,     ᨢ
         ᠬ ᥣ⮢  饬 浪  ࠬ ᮮ⢥-
          ࠭.
                 ६   ᯥ䨪樨 ७  LIM 4.0 
         ॡ   ७  ᯥ稢   -
          ⠭ 䨧᪨ ࠭, ।  ᯥ䨪樨
         3.2,    ७      ᯥ稢     36
         16- 䨧᪨ ࠭.  12 ࠭  ࠧ 
         ࠭⢥  768  960 (⭠   0000
           F0000)      24 ࠭  ࠧ  256  640
         (⭠   40000  A0000).
                 ࠭  640    ਫ-
          ᯥ䨪樨 ७ .   ⮡ࠦ 
          640,    ᯥ䨪 뫠   ⮡ࠦ
          ,  ।祭  ࠧࠡ稪 ७ -
         樮 ⥬, ⠪  Windows 2.0  Microsoft.
              ⢮ 䨧᪨ ࠭   ࠭  640 
             ᨬ  ᪫ ࠭⢠   -
         ⭮ 設.   ࠧ ⨯    -
         ⢥    ࠭⢠    ᢮ ᯫ ஢.
          ⨯ ஢ -뢮,   ⥢   -

                                      - 7-36 -
          ஫,  ᮤঠ ७  BIOS,  -
           ᭮ ࠭⢥  C0000  F0000.
              ணࠬ     筮 ࠧ  ࠭
         ᯥ䨪樨 ७   ᭮  ࠭⢠  DOS,
           640,  ⮬   設⢠ ஢,  ᮢ⨬ 
         IBM PC,    640  960.  ணࠬ -
          ᯥ䨪樨 ७   짮 २-
             ७   ⮡ࠦ 64
             ࠭⢮  640.
              ᭮  - 騥 ।   -
           ࠢ  ࠭.  騥 ਫ-
          ᯥ䨪樨 ७   ⠪ 饭, -
              ࠢ    ࠭,  筮  ᯥ稢
         㤮 ᯥ䨪樨 ७  ,    ⮣  ⮡
         ࠭  ࠭⢮    㪠⥫ ७ 
           饭 ᫥ ᮢ  ७ .  -
         ,   ࠭, ᯥ稢  ணࠬ묨 ॠﬨ
          ७ ,    ⠪  ࠢ-
         ,     ࠭  ᯥ䨪樨 ७ .
          ⮣ ⮡  訬 ਫ ᯮ짮   -
         ⥬    ணࠬ묨 ࠬ ७ , 
         ਢ  騥 饭,      ᫥
           ணࠬ஢:
              1. ᪮    ᯥ䨪樨  ७   
         ᯥ稢  ࠭,  ஢  16- ࠭,
         ⮫쪮 訩   ᥣ  祭  ନ஢-
          䨧᪮ .  १  ணࠬ  -
          訩  ᥣ  ࠭, ,   㤥
         ࠢ .  ᯥ䨪樨 ७  LIM  㪠뢠,
          䨧᪨ ࠭  ࠢ      ࠭,
          ᮪, 祬 ࠭ ࠣ.
              2.  ਫ ᯥ䨪樨 ७   -
          ᫥  ७ ,  ,   
         ࠭ 室  640 ,         ,
         祬  ᠬ ਫ.   ࠭,  ᯥ稢 ண-
         ࠬ ஬ ७     稭 ⮬
         饭.

                        ⥭   ७ 

                 ६  ᯥ䨪 ७  LIM 4.0 -
           ७  ࠢ  32 ⠬ -
         , ꥬ, 㯭 襩 ணࠬ     -
          ࠭祭 ᫮ 䨧᪨ ࠭,    
         ࠭.
              । ⥭     ७  -
            ᤥ 㯭  ணࠬ ᪠ ࠭,  
         ன   ࠧ饭,  ⥬ ⮡ࠦ ᪮ -
           䨧 ࠭   ࠭. ⮡ࠦ ࠭ -
          ⢨⥫쭮  楢  ࠢ    ᯥ䨪樨
         ७ ;  設⢠ ਫ,  -
          ७ ,  -   ᯮ㥬 㭪
          ७ .
               ᯥ䨪樨 ७  LIM 3.2      楫
         ᯥ祭  㭪  5, "⮡ࠧ/ ⮡ࠦ ࠭
         ࠡ稪". ⥬ ঠ  ࠡ稪,    ᪮
         ࠭      䨧᪮ ࠭  ᪠ ࠭

                                      - 7-37 -
         ⮡ࠦ   䨧.  -1  0FFFFH  ⢥
          ᪮ ࠭    ࠭,  -
          ⮡ࠦ  㪠 䨧, 㯭 ணࠬ.
         筮,  ᮤন ࠭,  ⠫ ⮡ࠦ -
          ࠧ,       ᭮ ᤥ 㯭 -
         騥 ⮡ࠦ ⮩ ᪮ ࠭  䨧.
              㭪 17, "⮡ࠧ/ ⮡ࠦ ࠭ 
         ࠡ稪",  ᯥ䨪樨  ७  LIM 4.0 
          ⪨   ।⢠ ⮡ࠦ ࠭.    -
         饭   㭪  ⮡ࠧ   ⮡ࠦ
         ᪨ ࠭  ⠪ ᫮ ࠭,  ஥  ন
          ७ .  ணࠬ,   ⮡ࠦ
          ࠭  ࠧ,  ⨣   ᮪ ந-
         ⥫쭮  -  ᮪饭  䨪஢  室,
         易   맮  ७ .
                 砥 㭪樨 5, 㪠  ᪮ ࠭-
         ,  ࠢ -1 (0FFFFH) ⠢      ࠭,
         ⮡ࠦ   㪠 䨧 ࠭,  ⮡-
         .

                       ᯮᮡ  䨧᪨ ࠭

              砫쭮 ᬮ७ 䨧᪨ ࠭  裡   ᯥ-
         䨪樥  ७   LIM 3.2 ⠭,   䨧᪨
         ࠭ । 浪 ஬ ( 0  3   ᯥ䨪-
         樨 ७  LIM 3.2).  ᯥ䨪樨 ७ -
          LIM 4.0 ᯥ稢 ⥫ ᯮᮡ   䨧-
           ࠭:  䠪᪨  ᮬ  ᥣ  砫  䨧᪮
         ࠭.  ਬ, ᫨   ࠭, 饭 㭪-
         樥 "   ࠭",   ࠢ CC00h,  -
         ᪠ ࠭  ।  ࠭    ।
         ᢮ 浪 ஬,  2,  ᮬ ᥣ, D400h. 
          ᥣ  ᫥ ⥬ ਡ ਦ ࠧ  -
         ᪮ ࠭ ( ࠣ)     ࠭.
               㭪樨 ᯥ䨪樨 ७  LIM 4.0, -
         騥  䨧᪨ ࠭   ⢥  ࠬ஢,  
         㪠  䨧᪨  ࠭  浪묨  ࠬ  ᠬ
         ᥣ⮢.   롨  㤮  襩 ணࠬ-
           ⮤ ⥬   㭪樨  ॣ AL  㭪権
         ᯥ䨪樨 ७  4.0,  ਭ  -
         ᪨ ࠭.  㭪樨 00h 뢠,  祭 -
         ᪨ ࠭ । 浪묨 ࠬ 䨧᪨ -
         ,    ६   㭪樨 01h 뢠,   祭
         䨧᪨ ࠭  ᮮ⢥騬 ᠬ ᥣ⮢.
               뫮  ᠭ    ।饬  ࠧ,  ४⭠
         뫪  ࠬ 䨧᪨ ࠭    ᠬ ᥣ⮢
         砥      ७  ।⢮ 㭪樨
         25, " ᨢ 䨧᪨ ᮢ".
               ᪠  ࠭  ⮡ࠦ    䨧,  
         ணࠬ  ⥬ ᮢ       ⮩  ࠭
         㤠 㪠⥫.몮 ,  ⮫-
          ⠪ 뢠 ணࠬ  ,    ন
         ᯮ짮 32-⮢ (㤠)   㪠⥫    㥬
         ⮢ .  ⢨ ⠪ প  -
           ᯥ稢  ணࠬ,    
           ந쭮 ᥣ      ᬥ饭    
           ⢥ 64-⭮ ᥣ  ணࠬ.  

                                      - 7-38 -
           ⮣,      䥩  ணࠬ  
         몥 ᥬ  祭 ⮣  १.
               . 7-3  ᪠ 䨣 ७
          384,   ᯮ  ணࠬ, ஭
         ⠡楩  ணࠬ ਧ樨 ਭ.   -
           ᪨  ⭮襭  ணࠬ,  ࠡ稪,
         ᪨ ࠭栬  䨧᪨ ࠭栬,  :
              *  ( ) ᨬ ணࠬ    짮
         ७  ६   ﭨ.
              *   ணࠬ     ࠡ稪 ᯥ-
         䨪樨 ७ , ࠧ饭  , - 䮭 -
           ਬ   ࠡ稪.
              * ᫥⥫쭮  ஭㬥஢  ᪨  ࠭  
         室 ⮡ࠦ  ᫥⥫  䨧᪨  ࠭  -
         ⨢ ਮ⭠ ணࠬ  ᪨ ࠭ 6, 7, 2
          1, ⮡ࠦ  䨧᪨ ࠭ 0-3.

              㭪 "।/   " (24), 
         뫠    ᯥ䨪樨 ७   LIM 4.0
         ᯥ稢  뢠騥 ।⢠  ࠢ ।
         ⥩ ,    1,   ७  
         筮  .   㭪 ⠪  । 
          ,   㪠  室  ।-
          ७  ,    室  筮
         .
              㭪 ।  (00h)    ᮤন  -
         -筨  -ਥ.  ᫨ 㪠  ४-
         ,   ७  롨ࠥ  ⠪  ࠢ
         ।,  ⮡ -ਥ 砫 ० -
           筨.   -筨 ४뢠-
           楫     祭 樨 ।,  
         ७    ﭨ,  㪠뢠騩    
         ( ᥣ  ॣ AH).
              㭪  (01h)  ⠬   -
         :        ७  
               ⫨稥  㭪樨 ।  㭪    
         ࠧ蠥  ४뢠 ⥩.
               ⮩  㭪権   ,    樨
         ।     ⥪ ⥪饣 ⮡ࠦ.
          ᪨ ࠭,    ணࠬ   ⮡-
            ࠭,    㭪樥 25, ⠪  
         襩 ணࠬ  室 ࠭  ⥪ ⮡ࠦ
         । ਬ  㭪樨.
              㭪 "।/     "   
         ணࠬ   ᪮쪨 ⮬⥫ ணࠬ ࠡ,  -
           ࠢ ७ ,   뫨 
         䠪⮬      ࠭   ᯥ䨪樨 ७ 
         LIM.   ,  ஫஢  ﭨ, 頥-
           㭪樥.   13 ࠧ 訡,  -
            祭 樨 ।  .

                   ७   ணࠬ

               ᯥ䨪樨 ७  LIM 3.2      -
         頫  ணࠬ  ࠧ   ७ -
         .  ணࠬ ॡ ⮫쪮  ࠡ稪    -
         ᪮   ࠭   ,        ⥫  .

                                      - 7-39 -
         ᪮ ணࠬ       apriori,    ࠡ稪
                                                  384Kb ७
                                         B   C           
         Ŀ                   Ŀ   Ŀ Ŀ
                   ĳ 1 0   Ĵ
             A                       Ĵ 1   Ĵ  24
                                         2   Ĵ
                               3   Ĵ   
                                           4   Ĵ
     砫                             5   Ĵ   
     ᥣ                               6   Ĵ
     䨧᪮                            7   Ĵ   
     ࠭    D   B  C              Ĵ   Ĵ
         CC00H  Ŀ           ĳ 2 0   Ĵ   
                 0 2 6Ŀ      Ĵ 1Ŀ Ĵ
         D000H  Ĵ            ĳ 2  Ĵ   
                 1 2 7Ŀ          3  Ĵ
         D400H  Ĵ             4  Ĵ   
                 2 2 2ĳĳĳĳ  5  Ĵ
         D800H  Ĵ    ĳĳĳ 6  Ĵ   
                 3 2 1Ŀ ĳĳĳ 7  Ĵ
                               8  Ĵ   
               ࠭               9  Ĵ
                                     Ĵ  Ĵ
                                  ĳ 3 0  Ĵ   
                                      Ĵ 1  Ĵ
         Ŀ                     2  Ĵ   
                                        3  Ĵ
             E           Ĵ 16Kb
                                              Ĵ
                 

          .7-3. ⠫ ᭨ ७   ਮ⭮
         䮭 砬.  騩  ⨢ ਮ⭠ 

         A - ணࠬ ਧ樨 ਭ (䮭 ),   -
             ࠡ稪 1  3;
         B - ࠡ稪;
         C -  ᪮ ࠭;
         D -  䨧᪮ ࠭;
         E - ஭ ⠡ (ਮ⭠ ),  
             ࠡ稪 2  筮 .

         ()   㤥 ࠧ饭    ஬ ७ , 
         ணࠬ,  ࠧࠡ⠭ ⠪, ⮡ ࠧ   ७-
           ,    ⮢  ।⢠  ।
         ஢ ࠡ稪  ६ 믮.
               ᯥ䨪樨  ७  LIM 4.0 ࠧ 
          ७  ᤥ    ⥬ ᯥ-
             뢠   ࠡ稪 8-ᨬ쭮 .
          প  ᯮᮡ 뫨   㭪樨  -
           ७  :  "/⠭  ࠡ稪"
         (㭪 20)  " ⠫ ࠡ稪" (㭪 21).
              㭪 00h 㭪樨 20, "  ࠡ稪", -
         頥 8-ᨬ쭮 ,  易    ࠡ稪,  ।
         㭪樨.  㭪 01h, "⠭  ࠡ稪", 뢠
         8-ᨬ  ப  㪠 ஬ ࠡ稪.   -

                                      - 7-40 -
          ࠭祭  ᨬ, ᯮ㥬  ନ஢ ,
           8 ᨬ   騬  (      ப
         ASCII,  饩  ⮬  "" - ﬨ).  ࠡ稪 
          ਮ ,  饥  8 ⮢  㫥  (
         ""  ASCII,  ᫨   ।⥫쭥).   ࠡ稪
         ⠭  ""  樠樨  ७
         ,  ࠡ稪 ࠧ頥    ࠡ稪 ᢮-
         .     ࠡ稪   ६, 
            㫨.  ⢥ ࠭祭 ⮨  ⮬,  
         ࠧ蠥  ࠡ稪   .
               ७  ᯥ稢 㭪 21,  "-
          ⠫ ࠡ稪",  । ⮣,  ࠡ稪
         易      ᯥ祭 ⠡  -
         稪,  易     ⨢ ࠡ稪. 㭪
         00h, " ⠫ ࠡ稪", 頥  ⠡  -
          , ।⠢ 짮⥫. ᪮ ᯥ䨪-
          ন  255 ࠡ稪,  8-⮢  ࠡ稪
          2-⮢ 祭 ࠡ稪,  楫 ⠡  -
           2550 ⮢.  ᪮ ᫮ ࠡ稪, ন-
          ஬ ७ ,    祭   -
           㭪樨 02h,  " 饥 ⢮ ࠡ稪".
           ᫮  10, 砥 ࠧ , 室 
         ࠭ ⠫ ࠡ稪.  㭪 01h, "᪠ -
          ࠡ稪", ᯥ稢  ணࠬ  ࠡ稪,
         易   ,  室 ᬮ ᥣ -
         ⠫ ࠡ稪   ,  易   -
         ஬ ࠡ稪.

                       믮   ७ 

              ᥣ 뫮  ᯮ짮  ᯥ䨪樨 -
         ७  LIM  ࠭  믮 ᯮ塞 , 
           ᥣ    뫮  .  -,  ᨬ ࠧ 
         64     ࠭  ᯥ䨪権   4.0 ࠭稢 ࠧ
         ૥,      ⨢      ६.
           ࠧࠡ稪 室 ࠧࠡ뢠  -
          뢠,     筮  믮
         , 室騩  ७ .
               ᯥ䨪樨 ७  LIM 4.0  ⥭樠 
         祭    ஡.      ন
           ࠭,  訥 64,    ७ ,
         ᠭ  ,  ࠧࠡ⠭  ᯥ䨪樨 3.2, -
         ,    ᬮ  ᯥ稢 訥 ࠧ  ࠭.  
         ᯮᮡ⢮ ⮡ࠦ  뢠  ꥪ⮢   -
         ७  뫨    㭪樨, " ⮡-
          ࠭  ३" (22)  " ⮡ࠦ  ࠭  
         맢".
              " ⮡ࠦ ࠭  ३" ⮡ࠦ  
           ᪨ ࠭ ( ᨬ쭮 ⢠ 䨧᪨
         ࠭,  ন ஬ ७  )    
         ࠭  । ࠢ 㪠 楫 .  ⫨-
         稥   㣮 㭪樨  ७    
         㭪   頥 ࠢ ,  ᫥饩  
         "int 67h" (஬ 砥,   ७  -
         㦨  訡  । 室  楫 ).  ணࠬ,
          砥 ࠢ  १ 믮   㭪-
         樨  ⢥砥   ⠭ ᮡ⢥ 뢠  室.

                                      - 7-41 -
          楫   砥  ࠢ,  ᮤন  ॣ஢
           䫠  ⠪,    뫨,   뫮
         뤠 뢠  ७  .    ࠧ,
         ணࠬ   । ࠬ 楫 ணࠬ  ॣ-
         .  ⥪ ⮡ࠦ,  ⢮訩 । 맮  
         㭪樨  ࠭.
              㭪 " ⮡ࠦ  ࠭    맢"  
           㤠  CALL 8086.  筮 㭪樨 "-
          ⮡ࠦ ࠭   ३"    㭪  ⮡ࠦ
               ᪨ ࠭ ( ᨬ쭮 ⢠
         䨧᪨ ࠭,  ন ஬ ७ -
         )   ࠭  । ࠢ 楫 . ࠭-
         ,  ⮡ࠦ । ⥬,   ந室 ।  ࠢ
         뢠  ⮡ࠦ ࠭.  ⫨稥  㭪樨 "-
          ⮡ࠦ ࠭  ३" 楫  ணࠬ 頥
         ࠢ  ७  (  ,  ணࠬ-
         ,  뤠 " ⮡ࠦ ࠭  맢") ⥬
         믮    㤠   RETURN.   
         ७   砥 ࠢ  楫  ணࠬ-
         , ⢮  ࠭,  뢠    ⮡ࠦ ࠭,
         ⮡ࠦ   ࠭   ७   -
         頥 ࠢ 室 뢠襩 ணࠬ.  ন  -
             ண ⮡ࠦ ࠭  뢠襩 ணࠬ.
          뢠襩 ணࠬ ࠭  祭 .  -
         ন ॣ஢  室  楫 ணࠬ  ⥬  ,
          뫮  ६ 뤠 뢠  ७ 
         뢠襩 ணࠬ.
               㭪  ᯮᮡ  ন    맮  -
         ணࠬ,   諨 ।⢮ " ⮡ࠦ -
           맢",  ᠬ ᯮ짮  㭪.  ࠭-
          ⥪   ஢ 맮  ७ 
         ᯮ  ⥪  뢠饩 ணࠬ.  ⢮ ⮢ ⥪,
         室   ७   믮  -
         ,  砥 ⥬ ਬ 㭪樨 02,  " ࠧ
         ࠭⢠ ⥪ ⮡ࠦ ࠭", 㭪樨 " ⮡-
          ࠭  맢".

                          ᢮ ७ 

              騬 ࠧ  ᪮஢ ணࠬ । -
         襭 뢠 䠩  ᢮  ,  뫠
         ࠧ饭  DOS.   ࠧ,  ७ -
         ,  ࠧ饭 襩 ணࠬ,    
         ७  । 襭 ணࠬ.
              ᪮  ࠡ⠥ ᨬ  樮  ⥬, 
          ७   ᯮᮡ ।,   
         ணࠬ 訫.  ᫨  ணࠬ   ᢮  
          ࠭ ७ ,    ࠧ頫 । -
         室,  ᫥ ணࠬ,  ⠥ 짮 -
         ७ ,   ,  ७  ,
             ७    ᯮ.
              ᫨   ॢ  ࠢ ਫ  ᯮ짮-
          ७ ,  襩 ணࠬ 㤥 筮
            ७  । ଠ묨
         襭ﬨ.   ᮢ襭 饭    ᥡ
            ⪨ ᮢ ७   ࠩ ४-
          ணࠬ (Break = Control-C),  ࠩ ᪮ 訡 

                                      - 7-42 -
         ࠩ      .  ० ᥣ ࠡ⪠  ᫮
         ॡ ⥫쭮 ꥬ ணࠬ஢  몥  ᥬ-
         ,  ᯮᮡ ࠧ" 孨᪮ ࠢ筮 㪮-
         ⢮  DOS (DOS Technical Reference Manual)". ࠢ, 
           த 몮 ᮪ ஢,    5.0 
         Microsoft  ࡮-᪠ 4.0  ࡮-C  Borland,  뫨 -
           ।⢠  ࠡ⪨  ᫮  ᠬ 몠 ᮪
         ஢.   ணࠬ⮢, 騬 ⨬ த⠬  -
         ᠭ  ਫ ᯥ䨪樨 ७ ,    -
         㬭 ᭮ ⮫뢠 楤 ଠ 襭.

                         ⥬ ணࠬ ᯥ祭

               ।⠢    㭪権 㤮⢮ 㦤
         ࠢ  ७    (१) ணࠬ
         DOS.   । DOS १⭠ (transient) ⭮   ணࠬ-
         ,  믮  ᪠ DOS ,  뢠
           㣮  ⠪    ணࠬ  ।⢮  ਬ 㭪樨
         DOS EXEC.  ,   ⠪ ணࠬ, 頥
         樮 ⥬,  ணࠬ 蠥,   ண-
         ࠬ  ୮ 㦠   । ⥬,   
          .
               㯮 ࠭,  ࠩ ன, ணࠬ -
          뢠  ணࠬ,  騥   ᫥ -
         襭,    ७ ,  -
         ⥫쭮 ⢥⢥ ⭮⥫쭮 짮  .    
         ணࠬ ।  १, ⠪     -
           ᫥ 室     ࠧ,  ,  ᫥⥫쭮, 
            ୮    - ,  믮-
          㣠 ணࠬ.

                  ࠢ १  १ ணࠬ

              ⭮  १⭮    ⢨⥫쭮-
              ᮬ  ᯮ짮 ७ -
         . ⢥ ࠧ ⮨  ⮬,  १ ண-
         ࠬ   믮   ᨭ஭,              
         짮⥫.  DOS ࠢ 室  ணࠬ, ⠪ 
         ﭨ 設  樮 ⥬ - ࠢ塞  -
          ࠢ塞묨 騬 ࠧ.
              ணࠬ 㦨  뢠  (  ஥   
         ࠩ ன⢠   ணࠬ,  騥    -
         襭)  ࠢ ᨭ஭, ⪫  
         ᮡ.  DOS  ࠥ  ஫  室  믮塞
            ணࠬ  ணࠬ  㦨 뢠.
          ࠧ,  ⤥쭠 ணࠬ 㦨 뢠 ⢥-
         砥  ࠭ ﭨ  ।    
         ⠭  室  ﭨ  ।  ⮬ ࠢ
         ࢠ ணࠬ.    ७  ⠪  
         ﭨ,   ஥  뫠   ⥪. ணࠬ
         㦨 뢠,  ᯮ騥 ७ , 
         ࠭    ⥪ । ⥬,    ,   
         ⠭  । 室.
              ⭠   㭪権 ᯥ䨪樨 ७ 
         4.0 饭 ॡ १ ணࠬ, 樮 -
         ⥬  ࠡ ।. ஬ ⮣,  㭪樨, ॡ騥  -
             ⠭  ⥪   ७ 

                                      - 7-43 -
         ᯥ䨪樨 ७  4.0, ⠪ 뫨  ᪮쪮
         㭪権, ᯥ樠쭮 ࠧࠡ⠭  ᯥ祭 ᮢ⭮ -
           樮묨 ⥬   묨 ।
         (OS/E  몥 ᯥ䨪樨 ७ )  ஬ -
         ७ .     뫠     ண-
         ࠬ ᯥ祭 樮 ⥬   । -
         짮  ।⢠,        祭      
         ࠧࠡ⪨  ᯥ䨪樨 ७ ,  ⠪ 
         堭 ண ४祭   ࠧ蠥 .
               訬    ७ ,  ।⠢
              ,   ⥯   ᬠਢ  
         ᫮  ।⢠  ᯥ䨪樨  ७  LIM,  
         ন १  ணࠬ    ணࠬ  ᯥ祭,
         ਥ஢ ⥬.

                 㦥   ७ 

              ࠩࠬ ன,    㦠  ⮣,   DOS
          樠஢,    뤠 맮 䠩-
          ⥬ DOS.  設⢮ 맮 DOS ⠪  ࠧ-
         襭묨  १ ணࠬ,    ࠡ뢠 ᯥ-
           ࠧ  ஡ ⢨ ୮ 室 DOS.  
         ࠧ, ⮤ ⮣ ࠡ稪, ।⠢ ࠭  -
           ,     室騬 ।⢮   ணࠬ,
         ⮡  稥 ७ .
              ୠ⨢ ⮤,    ਬ  ண-
         ࠬ - ⮤ 祭  뢠.  ⮤ ࠡ-
          ᫥騬 ࠧ:
              1. 뤠 㭪 DOS " "  (뢠  21h,
         㭪  35h)  祭  ணࠬ 뢠 -
          ७  (67h).
              2.   ७    室   ࠩ
         ᨬ쭮 ன⢠ DOS,  ண  ன⢠ -
             㫥 ᬥ饭  ᥣ,  頥  ॣ
         ES,  ।騬 蠣.   ࠩ஢ ᨬ ன 
         8-ᨬ쭮   ன⢠, ࠧ饥  ᬥ饭 0Ah
           ன⢠,  ஥ DOS ᯮ  㪠 -
         ன⢠,  맮 䠩 ⥬ 뫠  . ࠢ-
           ன⢠  ᬥ饭 0Ah  ᥣ,  饭  -
           ES  蠣 1,   ப "EMMXXXX0." (ᯮ,   
           ன⢠ 뫠 뫪  맮 , ᯮ짮
             ⮤ ⮣ ࠡ稪.) ᫨ ப ᮢ,
          ७  .

                               ࠢ ⥪⮬

              ᫨  㦥 ᠫ  ணࠬ  㦨  뢠  
         ࠩ஢  ன  ணࠬ,   ᫥ 襭 
         ,   㦥  ᮬ ,   ⠪ ணࠬ  
         ࠭ ᮤন  ॣ ,  ஥ -
           ணࠬ,  室   ⠭  -
          । 室.   ࠭ ﭨ 
         (ॣ, 㪠⥫   ᫮ 䫠 ⠢  -
         )  ⠪  ਬ   ७ -
         .
               魮, ﭨ   ७   -
         ⥪ - ᮤন ॣ஢ ⮡ࠦ (   樨). 

                                      - 7-44 -
         ணࠬ   ࠭ ⥪  ७ 
         । 맮  㭪樨,       ,    -
         ⠭ 室 ⥪ । ।祩 ࠢ.
               ᯥ䨪樨 ७  LIM 3.2  ।ᬮ७ 
          㭪権   楫.    ᯮ짮
          㭪権 8/9,  㥬 "࠭  ⮡ࠦ  ࠭"  
         "⠭  ⮡ࠦ ࠭".  ࢠ     
         ࠡ稪   ࠭ ⥪騩 ⥪  ७  -
          ७  ;  襩 ணࠬ  
         ॡ.  ᫥ 㭪    ⠪   -
         稪   ⠭  ⥪,  ࠭   ⮣
         ࠡ稪  ७  ࠭   ७-
          .    ᫮ 짮,    㭪権 
          ࠭祭,     ४樨   
         ਬ   ணࠬ.
              ࢮ ࠭祭 砥  ⮬,     -
         稪 ᯥ稢 ᨬ쭠  ࠭,  -
           ७   ন  ࠭-
             ࠡ稪.  ⮨  ⮬, 
          ணࠬ ⠥   ॥ࠡ쭮,  ᫨  
           ࠭  ⠭ ⥪  ७-
           ᯮ  㭪樨,  ᪮  ࠭
           ࠡ稪  ᮯ஢ ⠭ 
         ⮣  ࠡ稪,  । ⥬   ⮡ࠦ  ࠭  
             ࠭    ⮣  ࠡ稪.    
         ࠭祭 ⮨  ⮬,   㭪樨 ࠭  ⠭-
          ⥪  䨧᪨ ࠭, ।  ᯥ-
         䨪樨 ७  LIM 3.2.
               ८   ࠭祭  ᯥ䨪樨 ७
          LIM 3.2  㭪 15  "/⠭ ⮡ࠦ-
           ࠭".   ⫨稥 㭪権 8  9,  ࠭  -
         ⠭ ⥪  ७   ७
         ,    㭪  ࠭  ⠭ ⥪ 
         ,  ᯥ稢 뢠饩 ணࠬ.  㭪   00h
         "  ⮡ࠦ  ࠭",    ⥪ 
         ७    짮⥫,  㪠뢠 ॣࠬ
         ES:DI. 㭪 01h  "⠭ ⮡ࠦ ࠭"  㦠-
          ⥪  ७     짮⥫,
         㪠뢠 ॣࠬ DS:SI. 㭪 02h  "  ⠭-
          ⮡ࠦ ࠭"   ,  ࠧ㬥  -
         , ࠭ ⥪  ७   ,
         㪠뢠 ES:DI,  㦠  ⥪  , 㪠뢠-
          DS:SI.  ᫥   饭  ࠧ ,
         室  祭 ࠭ ⥪.  砩 
           ७     㭪樨 03h  "-
          ࠧ ᨢ ⮡ࠦ ࠭". ଠ  ࠭-
           ⥪    ७ ॠ樨  -
         ७    ।祭    襩  ணࠬ.
           ।,      ।  ॣ஢
         ⮡ࠦ ࠭   ࠭,      -
           ।,    ᪨  ࠭ 뫨 ⮡ࠦ 
          䨧 ࠭.
              ᪮ ᯥ䨪  ७  LIM 4.0 ন-
           36 䨧᪨ ࠭,       ࠭  
         ⠭   ⥪  ⢥ ॢ ,
             64-⭮  ࠭ ᯥ䨪樨  -
         ७  LIM 3.2.   ᮪饭   뫠 ।-

                                      - 7-45 -
          㭪 16  "/⠭ 筮 ⮡ࠦ -
         ".  ணࠬ    ࠭ ⥪ ⮫쪮  
         䨧᪨ ࠭,    㤥 ,  筮 ᯮ-
         ᮡ ணࠬ  몥 ᥬ ࠭ ⮫쪮  -
         ,     ணࠬ 㦨  뢠-
         .  㭪  00h    " 筮 ⮡ࠦ ࠭"
         ࠭    ॣ஢ ⮡ࠦ ࠭   ,
         ⠢塞 짮⥫. 㭪 01h  "⠭ 筮
         ⮡ࠦ ࠭"   ⠭     ⠪  -
         ஢.  㭪  02h   "  ࠧ   ࠭
         ⮡ࠦ ࠭"   頥 ࠧ  ࠭, -
         㥬   ࠭ ⥪,  饣  㪠 -
         ⢠ 䨧᪨ ࠭.

                                ४祭 

               প ४祭      -
         ७   뫠   ᯥ䨪樨 ७ 
         LIM 4.0. ᠭ  㭪権 ।祭  ᯮ짮-
          樮묨 ⥬  樮묨 । ⠪, 
         DESQView  Quarterdeck   Windows    Microsoft,    
           ᯮ짮 ⨯묨 ਪ묨 ணࠬ ᯥ-
         樨 ७ .  ⠫, 騥 ᯮ짮-
           㭪権,  室  ࠬ  ,   ஥
         㦤  楫  ॠ樨 楫ᮮࠧ.
              㭪樨 樮  ।  ᯮᮡ ᯮ짮 २-
         ⢠ ᮢ襭⢮    ।  ᯥ䨪樨
         ७ .    ।, ஥   祭
             ᯥ䨪樨 ७  ,  -  -
         ⢮  ஢ ॣ஢ ⮡ࠦ.  ⨬ 㤥 ᯥ稢
         ࠪ᪨  ४祭 ⥪    -
           砬 ⥬ 祭 ࠧ ஢ ॣ஢ ⮡ࠦ-
            ⥪.    ।⢮, 㥬  "
         ॣ஢  ",   樮 ⥬ -
         ४ ,   㣠   襭 ।
          . প  ஢ ॣ஢ ⮡ࠦ  -
          ।  祭   㭪権 㭪樨 28   "-
           ॣ஢ ⮡ࠦ".
              ணࠬ ᯥ祭 樮 ।   ।,
             ন  -
         ஬ ७ ,  ⥬ 뤠 㭪樨 26 " -
            ७ ".  頥 -
           ୠ⨢   ஢   ॣ஢   ⮡ࠦ,   ஢
         ॣ஢     ᯮᮡ  ७ -
          㦨,   믮 .     頥
         ࠧ  室  ࠭,  ন ஬ ७
         .
              , ᮤঠ  ᥡ  ।⢠,  ⮫쪮 稭
           뭪.  ⮡  믮 ࠧࠡ -
         筮 ணࠬ ᯥ祭  ⮣,   
          ⠭  㯭,   ᯥ䨪樨 ७ -
          LIM 4.0 ᯥ祭 ணࠬ  ୠ⨢ -
         ஢ ॣ஢ ⮡ࠦ ⥬ ࠭   ⠭  -
         ⥩ ࠭ ⥪,  ᯥ稢 
         ஬  室  .

                                      - 7-46 -
                               ࠧ蠥 

               㭪樨,    ᯥ䨪樨 ७  
         LIM 4.0, ন ࠭ ७   祭 -
         १᪠  .  ணࠬ ᯥ祭, ஥ ⮡ࠦ
             ⮡ࠦ    (  640) 
         墠뢠  ᫮,  騥  १   (-
         뢠 19h BIOS),  뤠 㭪 29  "⮢ 
         ७   १᪠  ".   ७
            ᮮ⢥騬 㤮 ᬮ ࠭ ᮤন-
          ⮡ࠦ 筮 ,  ⠪     ⥪騩  ⥪
         ⮡ࠦ  ६ १᪠  .  ७
              ॠ  , ᪮
            奬 ॣ樨 ⥬ ,  -
           ६ १᪠  .
              㭪 19  "/⠭  ਡ ࠡ稪"  -
          ਫ ।,  ন   ७-
            ࠭ ᮤন ࠭ ࠡ稪
          祭 १᪠  . ᫨ , ਫ  -
         ,  ⮡    ७    ࠭ ࠭
         㪠 ࠡ稪  ६ १᪠   ⥬ -
          ਡ ࠡ稪  ࠧ蠥,  ࠧ訫   -
          ७  ᢮ ࠡ稪     -
         ন   易  ࠭    ६  १᪠    
         (ࠧ蠥 ࠡ稪).  㬮砭   ࠡ稪 -
          ਡ ⠭  ࠧ蠥.

                                ࠢ 㯮

               ᮡ  㭪権 樮 । -
          ,         㭪-
           ७ ,  ਥ஢  樮-
          ⥬,    ணࠬ, ஬ ᠬ ᥡ. 㭪  30
         "/   㭪権 樮 ।"  
         筮  ஢ 㭪樨 26,  28   30  ।
         ⥬,    । ࠢ ਪ ணࠬ ᯥ-
         祭  ࠧ஢   ᮡ⢥ 㦤.

                                祭

                ⨯ ਫ  ७    ।
         ࠪ᪮ ணࠬ 襭  640-⭮ ࠭祭 PC
         DOS.   ᮢ६ ।  ணࠬ  䥩
           ਫ  堭 ࠢ ,  ४砥
         ,   ᯥ䨪 ७  LIM 4.0.  
         ணࠬ 䥩 ॠ  ७ ,  -
          筮 㦠  ࠩ ᨬ쭮  ன⢠  DOS
           ६ 㧪.  ⥬ ७   ந 
          ᫮ 㤮  ᯥ䨪樨  ७  ,
         堭 ࠭  80386 Intel  ॣࠬ ⮡ࠦ-
            ⨯  ७   PS/2    ⥬
         ७     ணࠬ묨.
              ਫ 뤠  㭪権    ७
          १ 堭 ணࠬ 뢠 67h,  室 -
           䥩ᮬ 뢠 21h DOS.  ࠬ । १
         ॣ /  ,  १  , 堭,
          ⢥  ணࠬ⮢  몥 ᥬ. -

                                      - 7-47 -
         ,  ᠭ  몠 ᮪ ஢, ⠪  -
           ७ ,  ᫨  모 ᯥ稢 ᯮᮡ
         뤠  ணࠬ 뢠,  ࠡ⪨ ॣ஢  
         । 㤠 㪠⥫   ꥪ⮢  .
              䨪 ७   LIM 3.2 । 8--
          ७ ᭮ ࠭⢮,  ࠧ⮥    16-
         ࠭.  64  ⮣ ࠭⢠   㯭 -
         ६ १ 64-  ࠭,  ࠧ饭  ࠭-
         ⢥   640.  ।   14 㭪権 ⭮-
         ⥫쭮  ஢,    ਬ  㯠 
         ࠡ⪨  ꥪ⮢    ७ .   14
         㭪権   ࠧ   㯯:  ଠ樮,  -
         ࠢ 묨  ࠢ ⥪⮬.
              䨪 ७  LIM 4.0 -  ,  ᮢ-
         ⨬ ,  ᯥ䨪樨 3.2,  ஥ ᥩ 砥 
           MS-DOS ᨨ 4.0.   ᮤন ᪮쪮 ।,  -
           ᮢ襭⢮ ᯥ䨪樨 ७ 
         AQA,    ࠭,  訩 64,  ᯮᮡ ন-
           ⮡ࠦ     640.   ⠪  
         㭪権,  ࠧࠡ⠭, ⮡ ।⢥ ন -
         ஥ ४祭  묨 樮묨 ।. -
         䨪 4.0 㢥稢 ᭮ ࠭⢮ ७ -
            32   ।  㭪権  ᮪ ஢,
         祬 ,  뫨   ᯥ䨪樨 3.2.
              짮 ७       १,
         ⠪  १ ਫ.  ਫ  -
          㭪ﬨ ࠢ ⥪⮬  ࠭  -
          ⥪  ७ ,  ⠪    ⠪
         ணࠬ  ࠭ ﭨ   室   -
         ⠭  ﭨ  室.
              㭪樨 প 樮 ⥬ ᯥ䨪樨 4.0 ᯮ-
         ᮡ 짮 २⢠  ᮢ襭⢮ 
         ।,       ࠧࠡ⪠ ७
         .   ⠪ ।  ⢮ ஢ ⮡-
          ࠭, ஥  筮 樮 ।
           ४ ⥪ ⥬ 祭   -
         ஢  ⮡ࠦ .  㣮 ।⢮ - ࠧ蠥 -
          -  ᮤন  ७    ࠭  
         ६  १᪠   .  ,  ᯥ稢騥 
         প   㭪権, ⮫쪮 ⥯   த.

                                    

              Duncan, Ray.  "Lotus/Intel/Microsoft Expanded Memory",  Byte,
         11, no.11, 1986 (樠쭮  IBM).
                ணࠬ   ᯥ䨪樨 ७  -
          LIM 3.2.   ਬ -  ணࠬ RAMDISK,   ன
         ᯮ ७ .

              Hansen, Marion,  and  John  Driscoll.  "LIM   EMS   4.0:   A
         definition for the Next Generation of Expanded Memory", MSJ3, no.
         1, Jan.88.
              ᠭ ।,   ᯥ䨪樨 ७ -
          LIM 4.0. ਬ ணࠬ    몥 ᥬ  뢠
         襭 ⮤  ࠭ ࠭,  ࠧ  
         ணࠬ  믮   ७ .


                                      - 7-48 -
              Hansen, Marion,  Bill Krueger,  and Nick Stueklen. "Expanded
         Memory:  Writing  Programs  That  Break the 640K Barrier",  MSJ2,
         no.1, Mar.87.
              ᠭ ᯥ䨪樨  ७   LIM 3.2.  ਬ
         ணࠬ    몥 ᥬ 뢠,  믮 -
          ࠭  ᯮ   ७ .

              Lefor, John  A.,  and  Karen  Lund.  "Reaching into Expanded
         Memory", PCTJ5, no.5, May 86.
              ᬮ७ ᯥ䨪樨  ७  LIM 3.2  -
         襭⢮ ᯥ䨪樨 ७  AQA,  ਥ-
           ਫ. ਬ 祭 ணࠬ,  -
          ࠬ  ७      ᯥ뢠    
         ७ .

              Lotus/Intel/Microsoft. "Lotus/Intel/Microsoft       Expanded
         Memory Specification,  Version 4.0",  Document number  300275-05,
         Oct 87.
               ᯥ䨪 ᠬ ᫥ ᨨ ᯥ䨪樨 -
         ७  .  砥  ਬ  ணࠬ  ࡮-᪠ 
         몥 ᥬ.

              Mirecki, Ted.  "Expandable Memory", PCTJ4 no.2, Feb 86.
              ᠭ ᯥ䨪樨  ७   LIM 3.2  ᮢ-
         襭⢮ ᯥ䨪樨 ७  AQA.   
         ७   Intel  AST.

              Yao, Paul.  "EMS  Support  Improves  Microsoft  Windows  2.0
         Application Performance", MSJ3, no.1, Jan 88.
              孨᪮ ᬮ७  ᯮᮡ,    ஬    ணࠬ
         Windows 2.0 ᯮ ᯥ䨪 ७   LIM 4.0
          ঠ  ࠫ쭮 ࠡ ਫ.



                                      - 7-49 -

             ணࠬ ᮯ殮   ஢  ਬ ਫ

              ᫨   믮 ᢮ 祭,    
          襥 ।⠢ ⮣,  ࠡ⠥ ७ ,
             ணࠬ DOS  ᯮ짮  ⥫쭮
             .     ਬ ⥭-
         樠 ७   襬 ᮡ⢥ ணࠬ ᯥ-
           ⥬  ᭠  뢠騬 ஬ ⨭  몥 
          Microsoft  5.0.  ⠪ ।⠢ ਬ ਫ
         ᯥ䨪樨 ७ ,  ஬ ᯮ 
           ᫮ 㭪権 ७ .  ⠡ 7-4 ⪮
         ᫥ ⨭,       .

                                                          7-4
                       ணࠬ ᮯ殮   ஢
         
        - 䠩                       ঠ
        ⨭          
         
         7-2EMMCONST.Hᯥ稢 #defines    ⠭ -
                       ७ 
         7-3EMMTYPES.Hন typdefs (। ⨯)   
                      , ।  㭪ﬨ ᮯ殮
                      ᯥ䨪樨 ७     ਪ묨
                      ணࠬ ᯥ䨪樨 ७ 
         7-4EMMERMSG.C ᨢ ᨬ ப,ᯥ稢  -
                        ⥪⮢  ᠭ   㫥
                       ﭨ 㭪樨 ᯥ䨪樨 ७
                      
         7-5EMMFUNC.C 뢠 ⥪ 㭪権 ᯥ䨪樨  -
                      ७ . ᫨  । , 
                      㭪 ᯥ䨪樨 ७  -
                      頥   ﭨ 㭪樨 ᯥ䨪樨 -
                      ७   楫
         7-6EMMFUNC.H ন  ⨯  㭪権    㭪樨 
                      EMMFUNC..  ᫨      ন
                      ⨯ 㭪権,  ।  ᯥ䨪樨
                      몠  ANSI (   5    Microsoft),
                      祭  䠩   ਫ 㤥
                      ࠭஢,  ⨯ 㬥⮢, 㪠 
                        ணࠬ  ᮣ  ⨯ ࠬ-
                      ஢,  맢묨 㭪ﬨ.
         7-7EMMEXIST.Hন ணࠬ ஢  ७-
                       .  ⮤ "⮣ ࠡ稪"  -
                       㭪樥 emm_exists (ப 25).  -
                      ⮤ "祭  뢠" ஢
                       ७  믮 㭪樥
                      emm_exists2 (ப 113).
         7-8SNAPSHOT.Cᯥ稢  ணࠬ,    १⭮
                      ᫥ 襭,  ࠭ ⥪饥 -
                      ন  ࠭  ᯫ    ७
                         ࠧ,      
                      PrtScr.  ணࠬ  ࠭ ⮫-
                       ࠧ ࠭, ᪮쪮 ७  
                      襩 ⥬.
         7-9PLAYBACK.Cᯥ稢 ணࠬ  ஢ ࠧ -
                      ࠭, ࠭ ணࠬ SNAPSHOT  -
                      ७ ,  ⠭ 室 䠩 DOS.
                      ࠭ ࠦ ணࠬ 

                                      - 7-50 -
                       墠뢠  ﭭ,  ਬ,  ⥬
                      ७ࠢ  ⠭⭮  室  䠩
                      PLAYBACK  ᪮ 䠩.
        7-10BEEP.ASM  ⨫   㪠 訬 ⮭  -
                        PC.
         

                                ਬ ਫ

              ਬ ਫ  ⮨     ணࠬ:  SNAPSHOT.C 
         PLAYBACK.C. SNAPSHOT.C - ணࠬ,    १-
          ᫥ 襭,  ࠭ ࠧ ⥪⮢ ࠭ 
         ७    ⥬  墠  뢠    ࠭
         (int 5).   뢠 뤠 直 ࠧ,  
          PrtScr  Print Screen.  SNAPSHOT ⠪ ந 
            ७ ,  ᮤন  -
         ᪮ ࠭  ᬥ饭      ࠧ ࠭,
         ࠭  ७ .  PLAYBACK  뢠 -
           ,     ⥪⮢ ࠭ 
         ७   ⠭ 室 䠩 DOS.   .  7-4
          ᯮ짮 ७    ⠭ 裡
           ᨬ묨 ணࠬ.
               ⮣ ⮡ த஢    ᫮
          ७ ,   뫨 ।⠢   -
         ,   ਫ  室     ᫮,
         祬    ணࠬ । ஢  ࢮ ஥
         ਫ ७ .  ࠡ稪,   
         ணࠬ, 騬 १묨  襭,  ணࠬ-
         ஢ ࠩ஢ 뢠  । DOS,   ᮡ
         ⥫    㤭,   ਭ         
         SNAPSHOT.C,  ॡ  ⠭, ࠢ  -
          ᠬ ணࠬ.
                 ६  ணࠬ SNAPSHOT -  ⮫쪮  ᫮-
         ,  易  DOS, ᯮ짮 ४祭 ⥪  -
          㭪権 ᯥ䨪樨 ७   LIM  4.0  ।
         業  ਬ  祭  ᯥ䨪樨 ७ ,
           ᥣ   㪮⢠   ணࠬ-
          ᯥ䨪樨 ७ . 祢 ।⢠ ᯥ-
         樨 ७ ,  ᯮ짮  SNAPSHOT,   
         ᥡ:
              *  ७   ணࠬ   
         ।⢠ " ࠡ稪" (㭪 20 ᯥ䨪樨 -
         ७ ).
              * ४祭   ⥪      "/⠭
         ⮡ࠦ ࠭" (㭪 15 ᯥ䨪樨  ७  -
         ).
              * ६饭    筮  ७  -
               㭪樨  "।/  "
         (㭪 18 ᯥ䨪樨 ७ ).
              * ᪮    ᪨ ࠭  ࠭ ࠧ-
         饭   ࠡ稪 ᯥ䨪樨 ७   
         㭪樨 ࠧ饭 ࠭ (㭪 18 ᯥ䨪樨 ७-
          ).
              ਬ砭:  믮  ணࠬ   -
         ७   ন ᯥ䨪 ७ 
         LIM 4.0.


                                      - 7-51 -
                       ᪮쪮 ᮮࠦ  ஢

              ᪨ ⢨   ࠭ ࠭ ⮡ࠦ
          ७   ਢ.  ⢥  맮  㭪樨
         ᯥ䨪樨 ७  "।/  -
         "  ப 175 SNAPSHOT.C 筮   ஢  ᥣ
         ࠧ  ࠭     ७ .    
         ந室  ࠡ稪 뢠, 㭪 " ⮡-
         ࠦ ࠭"  ப 110 ॡ  ࠭ ⥪
          SNAPSHOT.EXE ("᫥ 襭   ")
          Ŀ
           Ŀ 
           inst_isr(室  ⨨ PrtScr) 
            1.࠭ ﭨ emm        
            2. ࠧ ࠭          
               ७            
            3.  ࠧ -    
              ࠭  ७       Ŀ
            4.⠭ ﭨ emm     
               
           Ŀ    
           main                                 
            1.稭,蠥  ᮮ-        
              頥 ﭨ ணࠬ          
               
             
                                                      ७ 
                               SNAPSHOT             
                               Ŀ
                                   ࠧ ࠭ࠧ ࠭
                             0   ࠭     1           2      
                               Ĵ
                                 ࠧ ࠭   . . .       . . .   
                             1        3                             
                               Ĵ
                                                                      
                             2                                        
                               Ĵ
                                                                       
                             3                                         
                               Ĵ
                                                                       
                             4                                         
                               Ĵ
                                                                       
                             5                                         
                               
                                                    
          PLAYBACK.EXE                              
          Ŀ       
          1.㦨 ७        
          2. 䨪 ࠡ稪        
          3.⮡ࠦ   ࠭            
          4.⮡ࠦ   ࠧ -  
            ࠭    ⠭  
            室 䠩                  
          
              . 7-4. ਬ ਫ  - SNAPSHOT/PLAYBACK

                                      - 7-52 -
         ⮡ࠦ ᯥ䨪樨 ७ .  㭪 "⠭
         ⮡ࠦ  ࠭"    ப 120 ⠭ ⮡ࠦ
         ࠭ ᯥ䨪樨 ७ ,  ஥   -
         । 室  ࠩ 뢠.
              㭪 "⠭  ࠡ稪"  ப 372 SNAPSHOT.
         C  뢠    ASCII "SNAPSHOT"  ࠡ稪 ᯥ-
         樨 ७ ,    ணࠬ ࠧ饭 
         ࠭  ࠭.  ⥬    ࠡ稪   ணࠬ
         PLAYBACK  ।      
         ७  ,    ⢨⥫쭮  ࠡ稪,
         祭 ண      ࠧ,    
         SNAPSHOT.



                             ⨭ 7-2. EMMCONST.H
        ------------------------------------------------------------------
        /*
        騥 ⠭ ᯥ䨪樨 ७ 
        */

        #define EMM_INT             0x67        /*ணࠬ 뢠
                                                    ७ */
        #define HANDLE_NAME_LENGTH  8           /*-    -
                                                  ࠡ稪*/
        #define PAGE_FRAMES         4           /*ᨬ쭮 - -
                                                  ᪨ ࠭*/
        #define PAGE_SIZE           16384       /*- ⮢  ࠭
                                         ᯥ䨪樨 ७ */
        #define EMM_DEVICE          "EMMXXXX0"  /* ࠩ ன⢠
                                             ७ */
        #define MAX_HANDLE          255         /*ᨬ쭮 - -
                                    稪  ७ */
        /*
        ⠭   ﭨ ᯥ䨪樨 ७ 
        */

        #define FRSTEMERR           0x80        /* ࢮ 訡 -
                                                ७ */
        #define LASTEMERR           0xA4        /* ᫥. 訡 -
                                                ७ */
        #define FUNCCOK             0x00        /*㪠 㭪 -
                                                訫  訡*/
        #define EMDRVSWF            0x80        /*ணࠬ 訡 ࠩ-
                                          ७ */
        #define EMDRVHWF            0x81        /*ࠩ  -
                                           ७  㦨 訡
                                                       */
        #define EMDRVBSY            0x82        /*ࠩ  -
                                                 ७       
                                                 (㣨  ⠫)*/
        #define HANDLNFD            0x83        /*  㪠 -
                                                  稪*/
        #define FUNCCUND            0x84        /* 㭪樨 ।*/
        #define HANDLINS            0x85        /* 㯭 ࠡ-
                                                           */
        #define MAPCXPRO            0x86        /*ந諠 訡 -

                                      - 7-53 -
                                           ⥪ ⮡ࠦ*/
        #define TOTPGINS            0x87        /* 墠⠥ ࠭ 
                                                  */
        #define UNAPGINS            0x88        /* 墠⠥ ࠧ饭
                                                  ࠭  */
        #define LPAGE2SM            0x89        /* ᪨ ࠭
                                           襭   㭪樨,  ᮢ-
                                          ⨬   ᯥ䨪樥 -
                                          ७  LIM 3.2*/
        #define LPAGERNG            0x8A        /*᪠ ࠭ 
                                         㪠 ࠡ稪*/
        #define PPAGE2BG            0x8B        /*䨧᪠ ࠭ 
                                                      */
        #define MRCSAFUL            0x8C        /* ࠭ -
                                             ⥪ ॣ஢ ⮡ࠦ
                                             */
        #define MRCSTDUP            0x8D        /* ⥪ ⥪ ॣ-
                                        ஢ ⮡ࠦ   㦥    -
                                       ⥪, 易  㪠 -
                                       稪*/
        #define MRCSTNFD            0x8E        /* ⥪ ⥪ ॣ-
                                        ஢ ⮡ࠦ     ⥪,
                                         易  㪠  ࠡ-
                                         稪*/
        #define SFUNCUND           0x8F        /*뫠 襭 ।-
                                                   㭪*/
        #define ATTRBUND            0x90      /*⨯ ਡ ।*/
        #define NVSTGUNS            0x91      /*⥬  ন -
                                                        ࠧ蠥*/
        #define MREGNOVW            0x92      /* ६ । 
                                 ந諠 筠 १ 筨*/
        #define MRFGN2SM            0x93      /* ᯥ䨪樨 -
                                           ७   ᫨誮  
                                                 㪠 ࠡ-
                                                */
        #define MREGNOVL            0x94      /* 筮  
                                         ७  ४-
                                                            뢠*/
        #define LPGOF2BG            0x95      /*ᬥ饭  ᪮
                                        ࠭ ॢ蠥  ࠧ  -
                                                 ᪮ ࠭*/
        #define MREGN2BG            0x96      /*  ॢ室
                                                ।  1 */
        #define MREGNDUP            0x97      /*-筨  -
                                        ਥ ७  
                                            ࠡ稪  ४-
                                        
                                                      */
        #define MREGNUND            0x98      /*।/ন-
                                         ⨯   -筨  
                                                    ਥ*/
        #define AMRSNFD             0x9A      /*㪠 ୠ⨢
                                         ॣ஢  */
        #define AMDRSINS            0x9B      /* ୠ⨢ 
                                        ॣ஢ ⮡ࠦ/ */
        #define AMDRSUNS            0x9C      /*ୠ⨢  -
                                        ஢ ⮡ࠦ/    -

                                      - 7-54 -
                                                            ন*/
        #define AMDRSUND            0x9D      /*㪠 ୠ⨢
                                         ॣ஢   ⮡ࠦ/
                                         ।,  ࠧ饭  -
                                         ⥪騬 ஬*/

        #define DDMACUNS            0x9E      /*祭   
                                                ন*/
        #define DDMACNFD            0x9F      /*祭 㪠 -
                                            */
        #define HNDVLNFD            0xA0      /*  祭, ᮮ-
                                        饥 㪠   -
                                                               ࠡ稪*
                                                               /
        #define HNDNMDUP            0xA1      /*ࠡ稪  㪠
                                                  㦥 */
        #define MREGNWRP            0xA2      /*⪠ 横᪮ -
                                        室 1-⭮ ᭮ -
                                        ࠭⢠  ६ । 
                                                         */
        #define USRDSFMT            0xA3      /*ᮤন  -
                                         짮⥫,      ।
                                        㭪樨 ᪠  ᫥
                                        */
        #define OPSYSACC            0xA4      /*樮 ⥬ -
                                        頥    㭪樨*/
        ------------------------------------------------------------------


                             ⨭ 7-3. EMMTYPES.H
        ------------------------------------------------------------------
        /*
        , ᯮ㥬  裡  ஬ ७ 
        */

        #define PCONTEXT            unsigned char
        #define PMAP                unsigned char

        typedef struct handle_page { /*  ࠭  ࠡ稪*/
                unsigned int emm_handle; /*ࠧ饭 ࠡ稪
                                       ७ */
                unsigned int pages_alloc_to_handle; /*᪨ ࠭
                                               ਭ騥 ࠡ稪*/
        } HANDLE_PAGE;

        typedef struct ppmap { /*  筮 ⥪*/
                unsigned int seg_cnt; /*⢮ ⮡ࠦ ᥣ-
                                     ⮢, ஥ ॡ */
                unsigned int seg_addr[PAGE_FRAMES];  /* ⮡ࠦ-
                               ᥣ,  ॡ */
        } PPMAP;


        typedef struct  log_to_phys  { /* ⮡ࠦ ᪨
                                                  䨧᪨ ࠭*/

                unsigned int log_page_no;  /* ᪮  ࠭*/

                                      - 7-55 -
                unsigned int phys_page_no; /*  ࠭/
                                                  ⮡ࠦ ᥣ*/
        } LOG_TO_PHYS;

        typedef struct handle_names { /* ᨢ  ࠡ稪*/
                   unsigned int   handle_value;   /*ࠡ稪*/
                    char handle_name[HANDLE_NAME_LENGTH]; /*, 易
                                                            ࠡ稪*/
        } HANDLE_NAMES;

        typedef struct  map_phys_page  { /*⮡ࠦ ⮡ࠦ ᥣ-
                                            䨧. ࠭
                                         */
                unsigned int phys_page_segment;  /*  ᥣ  䨧-
                                                                 .
                                                                 ࠭-
                                                                 */
                unsigned int phys_page_number; /* 䨧. ࠭*/
        } MAP_PHYS_PAGE;

        typedef struct  hardware_info  { /*   
                                          ᯥ䨪樨 ७ 
                                          */
              unsigned int raw_page_size; /*-   . ࠭*/
              unsigned int alt_reg_sets; /*- ୠ⨢ -
                                          ஢ ॣ஢ ⮡ࠦ*/
                 unsigned int ctx_savearea_size;  /*-   
                                                    ࠭ ⥪*/
                 unsigned int dma_reg_sets;  /*-  ஢  ॣ-஢
                                                */
                 unsigned  int  dma_chan_op;  /*0:  ࠡ   
                                                ⠭. LIM,
                                                1: ⮫쪮   */
        } HARDWARE_INFO;

        #define CONV_MEM           0        /*筠 */
        #define EXP_MEM            1        /*७ */

        typedef struct mregn { /*ਯ  */

          unsigned char memory_type;       /*CONV_MEM / EXP_MEM*/

          unsignedint handle;       /*CONV_MEM: 0, EXP_MEM: ࠡ稪*/

          unsigned int inutial_offset; /*CONV_MEM: 0 -65535,
                                        EXP_MEM:  0  -   16383*/
          unsigned int initial_seg_page;  /*CONV_MEM:  ᥣ,
                                            EXP_MEM:  ࠭*/
        } MREGN;

        typedef struct move_xchg { /*  ।/*/
           long region_length;    /*0 - 1 */
           MREGN source;          /*ਯ -筨*/
           MREGN dest;            /*ਯ  -ਥ*/
        } MOVE_XCHG;
        -------------------------------------------------------------------


                                      - 7-56 -
                             ⨭ 7-4. EMMERMSG.C
        ------------------------------------------------------------------
        /*
        : emmermsg.c
        ঠ: ᮮ饭    訡    訡 ᯥ䨪樨
                    ७  LIM 4.0
        뫪: Lotus(r)/Intel(r)/Microsoft(r)  ᯥ䨪  ७
                    ,  4.0, .5-10
        */
        char *emmermsg[] = {
         "EMM driver  software  failure",                            ;  1
         "EMM  driver detected hardware failure",                    ;  2
         "EMM driver busy (doesn't happened any more)",              ;  3
         "Cannot  find  the  specified  handle",                     ;  4
         "The function  code  is  undefined",                        ;  5
         "No handles are currently available",                       ;  6
         "A  mapping  context  restoration  error  has occured",     ;  7
         "Insufficient  total  pages  for  request",                 ;  8
         "Insufficient  unallocated  pages  for  request",           ;  9
         "Zero logical pages have been requested from LIM 3.2
          compatible function",                                      ; 10
         "Logical page   out  of  range  for  specified  handle",    ; 11
         "Physical page out of range",                               ; 12
         "Mapping register  context save  area  is  full",           ; 13
         "Mapping  register context stack already has a context      ;
          associated with the specified handle",                     ; 14
         "Mapping register context stack does not have a  context    ;
          associated with the specified handle",                     ; 15
         "Undefined subfunction was  requested",                     ; 16
         "The  attribute type   is  undefined",                      ; 17
         "The  system  does  not  support nonvolatility",            ; 18
         "Partial source overwrite occured during move  region",     ; 19
         "Expanded  memory  region is too big for specified  handle",; 20
         "Conventional memory region and expanded memory region
         overlap",                                                   ; 21
         "Offset within a logical page exceeds the length of
          logical page",                                             ; 22
         "Region length   exceeds  1-Mbyte  limit",                  ; 23
         "Source  and destination expanded memory regions have the
          same handle and overlap",                                  ; 24
         "Undefined/unsupported memory source and destination types",; 25
         "Error code 0x99 is not used",                              ; 26
         "Specified alternate  map register  set  does  not  exist", ; 27
         "All alternate map/DMA register sets are in use",           ; 28
         "Alternate  map/DMA  register sets  are  not  supporte",    ; 29
         "Specified alternate map/DMA register set is not defined,
          not allocated, or is the current one",                     ; 30
         "Dedicated DMA  channels  are  not   supported",            ; 31
         "The specified  dedicated  DMA  channel does not exist",    ; 32
         "No corresponding handle value could be found for the
          specified handle name",                                    ; 33
         "A handle  with  the  specified  name  already  exists",    ; 34
         "Attempt to wrap around 1-Mbyte address space during
          move or exchange",                                         ; 35
         "The contents  of  the  user data structure passed to the
          function were corrupt or meaningless",                     ; 36
         "The operating system denied access to the function"        ; 37

                                      - 7-57 -
             };
        -------------------------------------------------------------------

        1 - ணࠬ 訡 ࠩ  ७ , 2 -
        ࠩ  ७  㦨 訡  -
        , 3 - ࠩ  ७   (㣨  -
        ⠫),  4 -   㪠 ࠡ稪, 5 -  㭪樨 -
        ।,  6 -  㯭 ࠡ稪,  7 - ந諠 訡
        ⠭ ⥪ ⮡ࠦ,  8 -  墠⠥ ࠭ 
        ,  9 -  墠⠥ ࠧ饭 ࠭   ,  10  -
          ᪨ ࠭  襭  㭪樨,  ᮢ⨬ 
        ᯥ䨪樥 ७  LIM 3.2, 11 - ᪠ ࠭-
           㪠 ࠡ稪,  12 -䨧᪠ ࠭
         ,  13 -  ࠭ ⥪ ॣ஢ ⮡-
        ࠦ  ,  14 -  ⥪ ⥪ ॣ஢ ⮡ࠦ 㦥
         ⥪,  易  㪠 ࠡ稪,  15 -  ⥪
        ⥪ ॣ஢ ⮡ࠦ  ⥪,  易  㪠-
         ࠡ稪,  16 - 뫠 襭 । 㭪-
        , 17 - ⨯ ਡ ।, 18 - ⥬  ন
        ࠧ頥,  19 -  ६ ।  ந諠 -
        筠 १ 筨,  20 -  ᯥ䨪樨 ७-
          ᫨誮   㪠 ࠡ稪,  21  -  -
          筮    ७  ४뢠,
        22 - ᬥ饭  ᪮ ࠭ ॢ蠥  ࠧ  -
        ᪮ ࠭, 23 -   ॢ室 ।  1 ,
        24 - -筨  -ਥ ७  
            ࠡ稪  ४뢠, 25 - ।/-
        ন ⨯ -筨  ਥ, 26 -  訡
        099  ᯮ, 27 - 㪠 ୠ⨢  ॣ-
        ஢  , 28 -  ୠ⨢  ॣ஢ ⮡-
        ࠦ/ ,  29 - ୠ⨢  ॣ஢ ⮡-
        /  ন,  30 - 㪠 ୠ⨢ 
        ॣ஢ ⮡ࠦ/  ।,   ࠧ饭  
        ⥪騬 ஬, 31 -祭    ন, 32
        - 祭 㪠    ,  33 -  
        祭,  ᮮ⢥饥 㪠  ࠡ稪, 34 - -
        ࠡ稪   㪠  㦥 ,  35 - ⪠ 横-
        ᪮ 室 1-⭮ ᭮ ࠭⢠  ६  -
        ।      ,   36   -   ᮤন    
        짮⥫,   ।  㭪樨  ᪠    ᫥,
        37 - 樮 ⥬ 頥    㭪樨


                              ⨭ 7-5. EMMFUNC.C
        ------------------------------------------------------------------
        #include <dos.h>
        #include "emmconst.h"
        #include "emmtypes.h"
        #pragma check_stack(off)
        #define CONTINUE_COL 32    /* த- ᮮ-  訡*/
        static union REGS inregs, outregs;
        static struct SREGS segregs;
        static unt result;
        void ShowEMMErr(errcode, lineno, filename)
        unsigned int errcode;
        unsigned int lineno;
        char *filename;

                                      - 7-58 -


        {
             unsigned int ec, func, len, line;
             char *bp, *lp, *cp;
             extern char *emmermsg[];

             ec = errcode & 0x00FF;
             func = inregs.x.ax;
             printf("EMM error detected at line (%d) in source file(%s)\n",
                     lineno, filename);
             if (ec < FRSTEMER || ec > LASTEMER)
                printf("EMM Function (%04X) Error(%02X): Unknown Error
                   Code!\n", func, ec);
             else {
                printf("EMM Function (%04X) Error(%02X): ", func, ec);
                lp = emmermsg[ec-FRSTEMERR];
                line = 0;
                while (*lp) {
                   for (cp = lp, len = 80 - CONTINUE_COL; *cp && len;
                      cp++, len --)
                         if (*cp == ' ')
                            bp = cp;
                   if (*cp)
                      *bp++ = '\0';
                   if (line++)
                      printf("                                      ");
                   printf("%s\n", lp);
                   lp = (*cp) ? bp : cp;
                }
            }
        }

        EMGGetStatus() /* 稥 ࠡ饣  ७-
                               */
        {
             inregs.h.ah = 0x40;      /*㭪 " ﭨ" ᯥ-
                                        䨪樨 ७ */
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs)>>8;
             return(result);
        }

        EMSGetFrameAddr(pfa)          /*頥 㤠  
                                   ࠭  ७ */
        char far **pfa;
        {
             inregs.h.ah = 0x41;      /*㭪 "  
                                   ࠭" ᯥ䨪樨 ७ -
                                                         */
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs)>>8;
             if (!result) {
                FP_SEG(*pfa) = outregs.x.bx;
                FP_OFF(*pfa) = 0;
             }
             return(result);
        }


                                      - 7-59 -
        EMSGetPageCnt(una, tot)       /*頥 -   ࠧ-
                                   饭 ࠭ ᯥ䨪樨 ७
                                                               */
        unsigned int *una, *tot;
        {
             inregs.h.ah = 0x42;      /*㭪 " - ࠧ-
                                   饭 ࠭" ᯥ䨪樨 ७-
                                                    */
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs)>>8;
             if (!result) {
                        *una = outregs.x.bx;
                        *tot = outregs.x.dx;
             }
             return(result);
        }

        EMSAllocatePages(handle, pages)   /*ࠧ頥 ࠡ稪  'pages'
                                                     ᪨ ࠭*/
        unsigned int *handle, pages;
        {
             inregs.h.ah = 0x43;      /*㭪 " ࠭"
                                        ᯥ䨪樨 ७ */

             inregs.x.bx = pages;     /*- ᪨ ࠭ 
                                               ࠧ饭*/
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs)>>8;
             if (!result)             /*㭪 訫 ᯥ譮*/
                 *handle = outregs.x.dx;    /*ࠡ稪   
                                          ७   ࠡ 
                                            ⨬ ࠭栬*/
             return(result);
        }

        EMSMapHandlePage(handle, page, frame)   /*⮡ࠦ 
                                        ࠭ <handle, page>  ''*/
        unsigned int handle, page, frame;
        {
             inregs.h.ah = 0x44;      /*㭪 "⮡ࠧ/ ⮡-
                          ࠦ ࠭ ᯥ䨪樨 ७ */
             inregs.h.al = frame & 0x00ff;  /* 楫 ࠭*/
             inregs.x.bx = page;     /* ᪮ ࠭,  
                                               ⮡ࠦ*/
             inregs.x.dx = handle;   /*ࠡ稪, ஬ ਭ
                                            ᪠ ࠭*/
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs)>>8;
             return(result);
        }

        EMSDeallocatePages(handle)   /*᢮ ࠡ稪   
                                                      ࠭*/
        unsigned int handle;
        {
             inregs.h.ah = 0x45;      /*㭪 "᢮ ࠭"
                                        ᯥ䨪樨 ७ */
             inregs.x.dx = handle;    /*ࠡ稪, 祭  ᢮-
                                     ७ */
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs)>>8;

                                      - 7-60 -
             return(result);
        }

        EMSGetVersion(emsver)   /*頥  ᨨ ணࠬ
                               ᯥ祭  ७ */
        char *emsver;
        {
             inregs.h.ah = 0x46;      /*㭪 " "
                                        ᯥ䨪樨 ७ */
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs);
             if (!(result & 0xFF00)) {    /*㭪 訫 ᯥ譮*/
                 emsver[0] = ((result & 0x00F0) >> 4) + '0';
                 emsver[1] = '.';
                 emsver[2] = (result & 0x000F) + '0';
                 emsver[3] = '\0';
             }
             return(result >> 8);
        }

        EMSSavePageMap(handle)   /*࠭ ⥪  ७
                                     ࠭ ⥪
                                    ७ */
        unsigned int handle;
        {
             inregs.h.ah = 0x47;  /*㭪 "࠭ ⮡ࠦ ࠭"
                                          ᯥ䨪樨 ७ */
             inregs.x.dx = handle;    /*ࠡ稪,  ண 믮-
                                                ࠭*/
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs)>>8;
             return(result);
        }

        EMSRestorePageMap(handle)   /*⠭ ⥪ 
                                     ७    ࠭-
                                ⥪  ७ */
        unsigned int handle;
        {
             inregs.h.ah = 0x48;  /*㭪 "⠭ ⮡ࠦ -
                                     " ᯥ䨪樨 ७ */
             inregs.x.dx = handle;    /* ⥪, 㤠 믮-
                                                ⠭*/
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs)>>8;
             return(result);
        }

        EMSGetHandleCnt(hcnt)   /*頥 -  ࠡ稪
                                                     (1 - 255*/
        unsigned int *hnt;
        {
             inregs.h.ah = 0x4B;      /*㭪 " - ࠡ-
                                  稪 ᯥ䨪樨 ७ */
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs)>>8;
             if (!result)    {        /*㭪 訫 ᯥ譮*/
                 *hcnt = outregs.x.bx;
             }
             return(result);
        }

                                      - 7-61 -

        EMSGetHandlePages(handle, pages)   /*頥 - ࠭,
                                            ࠧ饭  ࠡ稪*/
        unsigned int handle, *pages;
        {
             inregs.h.ah = 0x4;      /*㭪 " ࠭ ࠡ-
                                    稪" ᯥ䨪樨 ७ */
             inregs.x.dx = handle;    /*ࠡ稪, ஬, ,
                                               ਭ ࠭*/
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs)>>8;
             if (!result)             /*㭪 訫 ᯥ譮*/
                 *pages = outregs.x.bx;
             return(result);
        }

        EMSGetAllHandlePages(hp, hpcnt)     /*頥 - ࠭,
                                            ࠧ饭 ᥬ ࠡ稪*/
        HANDLE_PAGE *hp;
        unsigned int *hpcnt;
        {
             segread(&segregs);           /*  ॣ ᥣ⮢*/
             inregs.h.ah = 0x4D;      /*㭪 " ࠭  
                            ࠡ稪" ᯥ䨪樨 ७ */
             segregs.es = segregs.ds;     /*ᥣ ᨢ HANDLE_PAGE*/
             inregs.x.di = (unsigned int) hp;   /*ᬥ饭 ᨢ HANDLE_
                                                               PAGE*/
             result = (unsigned int) int86x(EMM_INT, &inregs, &outregs,
                             &segregs) >> 8;
             if (!result)             /*㭪 訫 ᯥ譮*/
                 *hpcnt = outregs.x.bx;
             return(result);
        }

        EMSGetPageMap(map)   /*砥 ⥪  ७ -
                           ࠭ ⥪ 짮⥫*/
        PMAP *map;
        {
             segread(&segregs);           /*  ॣ ᥣ⮢*/
             segregs.es = segregs.ds;     /*ᯮ짮 es = ds*/
             inregs.x.ax = 0x4E00;    /*㭪 " ⮡ࠦ -
                                     " ᯥ䨪樨 ७ */
             inregs.x.di = (unsigned int) map;  /*㪠⥫  ᨢ ⮡-
                                                            ࠦ*/
             result = (unsigned int) int86x(EMM_INT, &inregs, &outregs,
                       &segregs) >> 8;
             return(result);
        }

        EMSSetPageMap(map)   /*⠭ ⥪  ७
                         ࠭ ⥪ 짮⥫*/
        PMAP *map;
        {
             segread(&segregs);           /*  ॣ ᥣ⮢*/
             inregs.x.ax = 0x4E01;  /*㭪 "⠭ ⮡ࠦ -
                                     " ᯥ䨪樨 ७ */
             inregs.x.si = (unsigned int) map;  /*㪠⥫  ᨢ ⮡-
                                                            ࠦ*/

                                      - 7-62 -
             result = (unsigned int) int86x(EMM_INT, &inregs, &outregs,
                       &segregs) >> 8;
             return(result);
        }

        EMSGetSetPageMap(srcmap, destmap)    /*࠭ ⥪ 
                           ७   destmap  ⥬ ⠭
                          ⥪  ७   srcmap*/
        PMAP *srcmap, *destmap;
        {
             segread(&segregs);           /*  ॣ ᥣ⮢*/
             segregs.es = segregs.ds;     /* ⮡ࠦ  ds*/
             inregs.x.ax = 0x4E02;  /*㭪 "  ⠭ ⮡-
                         ࠦ ࠭" ᯥ䨪樨 ७ */
             inregs.x.si = (unsigned int) srcmap;  /*㪠⥫  ᨢ
                                                  ⮡ࠦ-筨*/
             inregs.x.di = (unsigned int) destmap;  /*㪠⥫  ᨢ
                                                  ⮡ࠦ-ਥ*/
             result = (unsigned int) int86x(EMM_INT, &inregs, &outregs,
                       &segregs) >> 8;
             return(result);
        }

        EMSGetPageMapeSize(size)   /*砥 ࠧ  ࠭
                                            ⥪ 짮⥫*/
        unsigned int *size;
        {
             inregs.x.ax = 0x4E03;    /*㭪 " ࠧ ⮡ࠦ-
                             ࠭" ᯥ䨪樨 ७ */
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs);
             if (!(result) & 0xFF00))      /*㭪 訫 ᯥ譮*/
                 *size = outregs.h.al;
             return(result >> 8);
        }

        EMSGetPPageMap(pmap, savearea)   /*砥  ⥪ -
                                   ७    -
                                        ࠭ 짮⥫*/
        PPMAP *pmap;
        PCONTEXT *savearea;
        {
             segread(&segregs);           /*  ॣ ᥣ⮢*/
             segregs.es = segregs.ds;     /*ᯮ es = ds*/
             inregs.x.ax = 0x4F00;  /*㭪 " 筮 ⮡-
                            ࠭" ᯥ䨪樨 ७ */
             inregs.x.si = (unsigned int) pmap;  /*   ⨬*/
             inregs.x.di = (unsigned int) savearea; /*㪠⥫  ᨢ
                                                              ⮡ࠦ*/
             result = (unsigned int) int86x(EMM_INT, &inregs, &outregs,
                        &segregs) >> 8;
             return(result);
        }

        EMSSetPPageMap(savearea)    /*⠭  ⥪ -
                                   ७   
                                        ࠭ 짮⥫*/
        PCONTEXT *savearea;

                                      - 7-63 -
        {
             segread(&segregs);           /*  ॣ ᥣ⮢*/
             inregs.x.ax = 0x4F01;  /*㭪 "⠭ 筮 ⮡-
                            ࠭" ᯥ䨪樨 ७ */
             inregs.x.si = (unsigned int) savearea; /*,   -
                                                      ⨬ ⠭*/
             result = (unsigned int) int86x(EMM_INT, &inregs, &outregs,
                       &segregs) >> 8;
             return(result);
        }

        EMSGetPPageMapeSize(count,size)   /*砥 ࠧ , -
                                             室  ࠭*/
        unsigned int count,*size;
        {
             inregs.x.ax =0x4F02;    /*㭪 " ࠧ 筮-
                                           ⮡ࠦ ࠭" ᯥ-
                                                 樨 ७ */
             inregs.x.bx = count;    /*- ஢  ࠭*/
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs);
             if (!(result) & 0xFF00))      /*㭪 訫 ᯥ譮*/
                 *size = outregs.h.al;
             return(result >> 8);
        }

        EMSMapMultPages(handle, map, method, count)   /*⮡ࠦ count
                                             ࠭  map  handle*/
        unsigned int handle;     /*ࠡ稪,  ண ⮡ࠦ
                                                            ࠭*/
        LOG_TO_PHYS *map;        /*⮡ࠦ ᪨ ࠭  䨧-
                                                             ᪨*/
        unsigned int method;     /*ᯮ   ࠭ 
                                       ⮡ࠦ ᥣ⮢*/
        unsigned int count;      /*- ⮢  ⮡ࠦ*/
        {
             segread(&segregs);           /*  ॣ ᥣ⮢*/
             inregs.h.ah =0x50;      /*㭪 "⮡ࠧ  ࠭
                             ࠡ稪" ᯥ䨪樨 ७ */
             inregs.h.al = (unsigned char) method;
             inregs.x.cx = count;    /*- ࠭  ⮡ࠦ*/
             inregs.x.dx = handle;   /*ࠡ稪, ஬  ࠭
                                                     ਭ*/
             inregs.x.si = (unsigned int) map; /*࠭  ⮡ࠦ*/
             result = (unsigned int) int86x(EMM_INT, &inregs, &outregs,
                       &segregs) >> 8;
             return(result);
        }

        EMSReallocPages(handle, pages)   /* ࠧ饭 handle 
                                             pages*/
        unsigned int handle, *pages;
        {
             inregs.h.ah =0x51;      /*㭪 "ࠧ ࠭"
                                          ᯥ䨪樨 ७ */
             inregs.x.bx = *pages;   /*- ᪨ ࠭, ஥
                                                   㤥 ᫥ 믮*/
             inregs.x.dx = handle;   /*ࠡ稪,  ண ࠧ-

                                      - 7-64 -
                                                   頥 ࠭*/
           result = (unsigned int) int86(EMM_INT, &inregs, &outregs) >> 8;
             if (!result)                   /*㭪 訫 ᯥ譮*/
                 *pages = outregs.x.bx;     /* - ࠭*/
             return(result);
        }

        EMSGetHandleAttr(handle, attr)   /*砥 ਡ ࠡ稪*/
        unsigned int handle, *attr;
        {
             inregs.x.ax =0x5200;      /*㭪 " ਡ -
                                  稪 ᯥ䨪樨 ७ */
             inregs.x.dx = handle;
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs);
             if (!(result & 0xFF00))        /*㭪 訫 ᯥ譮*/
                 *attr = outregs.h.al;      /*ਡ*/
             return(result >> 8);
        }

        EMSSetHandleAttr(handle, attr)   /*⠭ ਡ ࠡ-
                                                                 稪*/
        unsigned int handle, attr;
        {
             inregs.x.ax =0x5201;      /*㭪 "⠭ ਡ -
                                ࠡ稪 ᯥ䨪樨 ७ */
             inregs.x.dx = handle;
             inregs.h.bl = attr & 0x00FF;
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs)>> 8;
             return(result);
        }
        EMSGetAttrCap(cap)               /*  ਡ*/
        unsigned int *cap;
        {
             inregs.x.ax =0x5202;      /*㭪 "  -
                                  ਡ ᯥ䨪樨 ७ */
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs);
             if (!(result & 0xFF00))     /*ᯥ */
                   *cap = outregs.h.al;
             return(result >> 8);
        }
        EMSGetHandleName(handle, name)  /*砥  ࠡ稪 handle*/
        unsigned int handle;    /*ࠡ稪,  ண 砥 */
        char *name;               /*  祭  ࠡ稪*/
        {
             segread(&segregs);           /*  ॣ ᥣ⮢*/
             inregs.x.ax =0x5300;    /*㭪 "  ࠡ稪"*/
             segregs.es = segregs.ds;
             inregs.x.di = (unsigned int) name;
             inregs.x.dx = handle;
             result = (unsigned int) int86x(EMM_INT, &inregs, &outregs,
                       &segregs) >> 8;
             return(result);
        }

        EMSSetHandleName(handle, name)  /*⠭  ࠡ稪
                                                                  handle*/
        unsigned int handle;     /*ࠡ稪,  ண ⠭. */

                                      - 7-65 -
        char *name;               /*   ࠡ稪*/
        {
             segread(&segregs);           /*  ॣ ᥣ⮢*/
             inregs.x.ax =0x5301;    /*㭪 "⠭  ࠡ."*/
             inregs.x.si = (unsigned int) name;
             inregs.x.dx = handle;
             result = (unsigned int) int86x(EMM_INT, &inregs, &outregs,
                       &segregs) >> 8;
             return(result);
        }


        EMSGetHandleDir(hnt, hn_cnt)  /*砥  ⠫ ࠡ稪
                                                                  handle*/
        HANDLE_NAMES *hnt;       /*㪠⥫  ⠡  ࠡ稪*/
        unsigned int *hn_cnt;    /*饭 - ⮢*/
        {
             segread(&segregs);           /*  ॣ ᥣ⮢*/
             inregs.x.ax =0x5400;    /*㭪 " ⠫ ࠡ-
                                      " ᯥ䨪樨 ७ */
             inregs.x.di = (unsigned int) hnt;
             segregs.es = segregs.ds;
             result = (unsigned int) int86x(EMM_INT, &inregs, &outregs,
                            &segregs);
             if (!(result & 0xFF00))        /*㭪 訫 ᯥ譮*/
                *hn_cnt = outregs.h.al;     /* - 祭
                                                         ࠡ稪*/
             return(result >> 8);
        }

        EMSSearhHandleName(name, handle)  /*   ࠡ稪*/
        char *name;                       /*, ஥ 㦭 ᪠*/
        unsigned int *handle;            /*頥  ࠡ稪*/
        {
             segread(&segregs);           /*  ॣ ᥣ⮢*/
             inregs.x.ax =0x5401;    /*㭪 "  ࠡ-
                                      " ᯥ䨪樨 ७ */
             inregs.x.si = (unsigned int) name;
             result = (unsigned int) int86x(EMM_INT, &inregs, &outregs,
                            &segregs) >> 8;
             if (!result)                   /*㭪 訫 ᯥ譮*/
                *handle = outregs.x.dx;    /* 祭 ࠡ稪*/
             return(result);
        }

        EMSGetTotalHandles(handle_count)  /* 饥 -  ࠡ-
                                                                    稪*/
        unsigned int *handle_count;
        {
             inregs.x.ax =0x5402;       /*㭪 " 饥 -
                            ࠡ稪" ᯥ䨪樨 ७ */
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs) >>8;
             if (!result)
                *handle_count = outregs.x.bx;
             return(result);
        }


                                      - 7-66 -
        EMSMoveRegion(rp)                          /*। */
        MOVE_XCHG *rp;                 /*㪠⥫  ਯ */
        {
             segread(&segregs);           /*  ॣ ᥣ⮢*/
             inregs.x.ax =0x5700;           /*㭪 "। "
                                          ᯥ䨪樨 ७ */
             inregs.x.si = (unsigned int) rp;
             result = (unsigned int) int86x(EMM_INT, &inregs, &outregs,
                            &segregs) >> 8;
             return(result);
        }

        EMSExchangeRegion(rp)                         /* */
        MOVE_XCHG *rp;                 /*㪠⥫  ਯ */
        {
             segread(&segregs);           /*  ॣ ᥣ⮢*/
             inregs.x.ax =0x5701;              /*㭪 " "
                                          ᯥ䨪樨 ७ */
             inregs.x.si = (unsigned int) rp;
             result = (unsigned int) int86x(EMM_INT, &inregs, &outregs,
                            &segregs) >> 8;
             return(result);
        }

        EMSGetMapAddrArray(mpaa, mpa_cnt)   /* ᨢ ⮡ࠦ
                                               䨧᪨ ᮢ*/
        MAP_PHYS_PAGE *mpaa;           /*㪠⥫  ᨢ ⮡ࠦ
                                               䨧᪨ ᮢ*/
        unsigned int *mpa_cnt;         /*- 饭 ⮢*/
        {
             segread(&segregs);           /*  ॣ ᥣ⮢*/
             inregs.x.ax =0x5800;              /*㭪 " ᨢ
                                         ⮡ࠦ 䨧᪨ ᮢ"*/
             inregs.x.di = (unsigned int) mpaa;
             segregs.es = segregs.ds;
             result = (unsigned int) int86x(EMM_INT, &inregs, &outregs,
                            &segregs) >> 8;
             if (!result) >> 8);            /*㭪 訫 ᯥ譮*/
                *mpa_cnt = outregs.x.cx;    /* - ⮡ࠦ
                                                  䨧᪨ ࠭*/
             return(result);
        }

        EMSGetMapAddrCount(mpa_cnt)   /* - ⮡ࠦ
                                               䨧᪨ ᮢ*/
        unsigned int *mpa_cnt;         /*- ⮡ࠦ 䨧᪨
                                                             ࠭*/
        {
             inregs.x.ax =0x5801;              /*㭪 " -
                                         ⮡ࠦ 䨧᪨ ᮢ"*/
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs) >>8;
             if (!result)                   /*㭪 訫 ᯥ譮*/
                *mpa_cnt = outregs.x.cx;    /* - ⮡ࠦ
                                                  䨧᪨ ࠭*/
             return(result);
        }


                                      - 7-67 -
        EMSGetHardwareInfo(hwp)            /* ଠ  -
                                  ᯥ䨪樨 ७ */
        HARDWARE_INFO *hwp;            /*㪠⥫    -
                                         ଠ樨  㤮*/
        {
             segread(&segregs);           /*  ॣ ᥣ⮢*/
             inregs.x.ax =0x5900;      /*㭪 " ଠ  
                             㤮 ᯥ䨪樨 ७ */
             inregs.x.di = (unsigned int) hwp;
             segregs.es = segregs.ds;
             result = (unsigned int) int86x(EMM_INT, &inregs, &outregs,
                            &segregs) >> 8;
             return(result);
        }

        EMSGetRawPageCount(rpg_cnt, urpg_cnt)  /* - 室
                                                                  ࠭*/
        unsigned int *rpg_cnt;                  /*- 室 ࠭*/
        unsigned int *urpg_cnt;   /*- ࠧ饭 室 ࠭*/
        {
             inregs.x.ax =0x5901;      /*㭪 " - 室
                                  ࠭ ᯥ䨪樨 ७ */
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs) >>8;
             if (!result)   {               /*㭪 訫 ᯥ譮*/
                *rpg_cnt = outregs.x.dx;  /*饥 - 室 ࠭*/
                *urpg_cnt = outregs.x.bx; /*- ࠧ饭 室
                                                            ࠭*/
             }
             return(result);
        }

        EMSAllocateStdPages(handle, pages)  /*ࠧ頥 ࠡ稪  'pag-
                                             es' ⠭ ࠭*/
        unsigned int handle, *pages;
        {
             inregs.x.ax =0x5A00;    /*㭪 " ⠭
                               ࠭" ᯥ䨪樨 ७ */
             inregs.x.bx = pages;    /*- ᪨ ࠭  ࠧ-
                                                         饭*/
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs) >> 8;
             if (!result)                  /*㭪 訫 ᯥ譮*/
                *handle = outregs.x.dx;  /*ࠡ稪  ७
                                   ਬ  ⨬ ࠭栬*/
             return(result);
        }

        EMSAllocateRawPages(handle, pages)  /*ࠧ頥 ࠡ稪  'pag-
                                                     es' 室 ࠭*/
        unsigned int handle, *pages;
        {
             inregs.x.ax =0x5A01;    /*㭪 " 室 -
                                   " ᯥ䨪樨 ७ */
             inregs.x.bx = pages;    /*- ᪨ ࠭  ࠧ-
                                                         饭*/
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs) >> 8;
             if (!result)                  /*㭪 訫 ᯥ譮*/
                *handle = outregs.x.dx;  /*ࠡ稪  ७

                                      - 7-68 -
                                   ਬ  ⨬ ࠭栬*/
             return(result);
        }

        EMSGetAltMapRegSet(set,pmap)  /*砥 ୠ⨢  -
                      ஢ ⮡ࠦ ᯥ䨪樨 ७ */
        unsigned int *set;            /*⥪騩 ୠ⨢  -
                                                   ஢ ⮡ࠦ*/
        PMAP far **pmap;              /*㪠⥫  㪠⥫  -
                                                       ࠭ ⥪*/
        {
             inregs.x.ax =0x5B00;    /*㭪 " ୠ⨢ -
                                                ॣ஢ ⮡ࠦ"*/
             segread(&segregs);

             result = (unsigned int) int86x(EMM_INT, &inregs, &outregs,
                        &segregs) >> 8;
             if (!result)    {
                *set = outregs.h.bi;             /*⥪騩 ⨢ */
                if (*set == 0)   {     /*䠫訢 ୠ⨢  -
                                                         ஢*/
                   FP_OFF(*pmap) = outregs.x.di;   /*ᬥ饭  -
                                         ⥪ 樮 । (OS)*/
                   FP_SEG(*pmap) = segregs.es;     /*ᥣ   -
                                         ⥪ 樮 । (OS)*/
                }
             }
             return(result);
        }

        EMSSetAltMapRegSet(set,pmap)  /*⠭ ୠ⨢ 
                    ॣ஢ ⮡ࠦ ᯥ䨪樨 ७ */
        unsigned int set;             /* ୠ⨢  -
                                                   ஢ ⮡ࠦ*/
        PMAP *pmap;              /*㪠⥫  ࠭ ⥪*/
        {
             segread(&segregs);           /*  ॣ ᥣ⮢*/
             inregs.x.ax =0x5B01;  /*㭪 "⠭ ୠ⨢ -
                                                ॣ஢ ⮡ࠦ"*/
             inregs.h.bl = set & 0x00FF;
                if (set == 0)   {     /*䠫訢 ୠ⨢  -
                                                         ஢*/
                   inregs.x.di = (unsigned int) pmap;
                   segregs.es = segregs.ds;
                }
             result = (unsigned int) int86x(EMM_INT, &inregs, &outregs,
                        &segregs) >> 8;
             if (!result)
       }

        EMSGetAltMapArraySize(size)  /*砥 ࠧ ᨢ ࠭
                                              ୠ⨢ ⮡ࠦ*/
        unsigned int size;             /*- ⮡ࠦ 䨧᪨
                                                   ࠭*/
        {
             inregs.x.ax =0x5B02;  /*㭪 " ࠧ ᨢ -
                                    ࠭ ୠ⨢ ⮡ࠦ"*/

                                      - 7-69 -
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs) >>8;
             if (!result)                  /*ᯥ*/
                *size = outregs.x.dx;             /*ࠧ ᨢ*/
             return(result);
        }

        EMSAllocAltMapRegSet(set)  /*ࠧ頥 ୠ⨢  ॣ-
                                                      ஢ ⮡ࠦ*/
        unsigned int *set;             /*, ࠧ饭 */
        {
             inregs.x.ax =0x5B03;  /*㭪 " ୠ⨢
                                     ॣ஢ ⮡ࠦ"*/
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs) >>8;
             if (!result)                  /*ᯥ*/
                *set = outregs.h.bl;          /* ࠧ饭 */
             return(result);
        }

        EMSDeallocAltMapRegSet(set)  /*᢮ ୠ⨢  -
                                                      ஢ ⮡ࠦ*/
        unsigned int set;             /*, ᢮ */
        {
             inregs.x.ax =0x5B04;  /*㭪 "᢮ ୠ⨢
                                             ॣ஢ ⮡ࠦ"*/
             inregs.h.bl = set & 0x00FF;
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs) >>8;
             return(result);
        }
        EMSAllocDMARegSet(set)           /*ࠧ頥  ॣ஢ */
        unsigned int *set;                  /*, ࠧ頥 */
        {
             inregs.x.ax =0x5B05;  /*㭪 "    ॣ஢
                                    " ᯥ䨪樨 ७ */
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs) >>8;
             if (!result)                  /*ᯥ*/
                *set = outregs.h.bl;          /* ࠧ饭 */
             return(result);
        }

        EMSEnableDMARegSet(set, channel) /*ࠧ蠥  ॣ஢ */
        unsigned int set;                 /*, ࠧ蠥 */
        unsigned int channel;             /*    뢠-*/
                                               ॣ஬ ⮡ࠦ*/
        {
             inregs.x.ax =0x5B06;       /*㭪 "    ॣ-
                                ஢ " ᯥ䨪樨 ७ */
             inregs.h.bl = set & 0x00FF;
             inregs.h.dl = channel & 0x00FF;
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs) >>8;
             return(result);
        }

        EMSDisableDMARegSet(set)         /*頥  ॣ஢ */
        unsigned int set;                 /* 頥 */
        {
             inregs.x.ax =0x5B07;    /*㭪 "    ॣ஢
                                     " ᯥ䨪樨 ७ */

                                      - 7-70 -
             inregs.h.bl = set & 0x00FF;
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs) >>8;
             return(result);
        }

        EMSDDeallocDMARegSet(set)    /*᢮  ॣ஢ */
        unsigned int set;                 /* ᢮ */
        {
             inregs.x.ax =0x5B08;   /*㭪 "᢮    ॣ஢
                                     " ᯥ䨪樨 ७ */
             inregs.h.bl = set & 0x00FF;
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs) >>8;
             return(result);
        }

        EMSPrepareForWarmboot()     /*⠢ 㤮 ᯥ-
                      樨 ७   ணࠬ १*/
        {
             inregs.h.ah =0x5C;     /*㭪 "⮢  ணࠬ
                             १" ᯥ䨪樨 ७ */
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs) >>8;
             return(result);
        }

        EMSEnableOSFunc(key)         /*ࠧ  㭪権 樮
                                                                    ।*/
        long *key;      /* 㯠  樮 । -  
                                    ࠢ 0,  ਬ  ࠧ*/
        {
             inregs.x.ax =0x5D00;   /*㭪 "  㭪権 -
                         樮 ।" ᯥ䨪樨 ७ */
             if (*key !=0)   {
                 inregs.x.bx = FP_OFF(*key);
                 inregs.x.cx = FP_SEG(*key);
        }
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs) >>8;
                if (!result)   {
                   FP_OFF(*key) = outregs.x.bx;
                   FP_SEG(*key) = outregs.x.cx;
                }
             }
             return(result);
        }

        EMSDisableOSFunc(key)         /*  㭪権 樮
                                                                    ।*/
        long *key;      /* 㯠  樮 । -  
                                    ࠢ 0,  ਬ  ࠧ*/
        {
             inregs.x.ax =0x5D01;   /*㭪 "  㭪権 -
                         樮 ।" ᯥ䨪樨 ७ */
             if (*key !=0)   {
                 inregs.x.bx = FP_OFF(*key);
                 inregs.x.cx = FP_SEG(*key);
        }
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs) >>8;


                                      - 7-71 -
                if (!result)   {
                   FP_OFF(*key) = outregs.x.bx;
                   FP_SEG(*key) = outregs.x.cx;
                }
             }
             return(result);
        }

        EMSReturnAccessKey(key)    /*頥  㯠  樮
                                       ।  ७ */
        long *key;                    /* 㯠  樮 ।*/
        {
             inregs.x.ax =0x5D02;      /*㭪 "  㯠 
                      樮 ।" ᯥ䨪樨 ७ */
                 inregs.x.bx = FP_OFF(key);
                 inregs.x.cx = FP_SEG(key);
             result = (unsigned int) int86(EMM_INT, &inregs, &outregs) >>8;
             return(result);
        }
        ------------------------------------------------------------------

                              ⨭ 7-6. EMMFUNC.H
        ------------------------------------------------------------------
        extern void ShowEMMErr(unsigned int errcode,unsigned int lineno,
                   char *filename);
        extern int EMSGetStatus(void);
        extern int EMSGetFrameAddr(char far * *pfa);
        extern int EMSGetPageCnt(unsigned int *una,unsigned int *tot);
        extern int EMSAllocatePages(unsigned int *handle,unsigned int pages);
        extern int EMSMapHandlePage(unsigned int handle,unsigned int page,
                   unsigned int frame);
        extern int EMSDeallocatePages(unsigned int handle);
        extern int EMSGetVersion(char *emsver);
        extern int EMSSavePageMap(unsigned int handle);
        extern int EMSRestorePageMap(unsigned int handle);
        extern int EMSGetHandleCnt(unsigned int *hcnt);
        extern int EMSGetHandlePages(unsigned int handle,unsigned int
                   *pages);

        extern int EMSGetAllHandlePages(struct handle_page *hp,unsigned int
                   *hpcnt);
        extern int EMSGetPageMap(unsigned int *map);
        extern int EMSSetPageMap(unsigned int *map);
        extern int EMSGetSetPageMap(unsigned int *srcmap,unsigned int
                   *destmap);
        extern int EMSGetPPageMapSize(unsigned int *size);
        extern int EMSGetPPageMap(struct ppmap *pmap,unsigned char
                   *savearea);
        extern int EMSSetPPageMap(unsigned char *savearea);
        extern int EMSGetPPageMapSize(unsigned int count,unsigned int
                   *size);
        extern int EMSMapMultPages(unsigned int handle,struct log_to_phys
                   *map,unsigned int method,unsigned int count);
        extern int EMSReallocaPages(unsigned int handle,unsigned int
                   *pages);
        extern int EMSGetHandleAttr(unsigned int handle,unsigned int
                   *attr);

                                      - 7-72 -
        extern int EMSSetHandleAttr(unsigned int handle,unsigned int
                    attr);
        extern int EMSGetAttrCap(unsigned int *cap);
        extern int EMSGetHandleName(unsigned int handle,char *name);
        extern int EMSSetHandleName(unsigned int handle,char *name);
        extern int EMSGetHandleDir(struct handle_names *hnt,unsigned int
                   *hn_cnt);
        extern int EMSSearchHandleName(char *name,unsigned int *handle);
        extern int EMSGetTotalHandles(unsigned int *handle_count);
        extern int EMSMoveRegion(struct move_xchg *rp);
        extern int EMSExchangeRegion(struct move_xchg *rp);
        extern int EMSGetMapAddrArray(struct map_phys_page *mpaa,unsigned
                   int *mpa_cnt);
        extern int EMSGetMapAddrCount(unsigned int *mpa_cnt);
        extern int EMSGetHardwareInfo(struct hardware_info *hwp);
        extern int EMSGetRawPageCount(unsigned int *rpg_cnt,unsigned int
                   *urpg_cnt);
        extern int EMSAllocateStdPages(unsigned int *handle,unsigned int
                   pages);
        extern int EMSAllocateRawPages(unsigned int *handle,unsigned int
                   pages);
        extern int EMSGetAltMapRegSet(unsigned int *set,unsigned char far
                   * *pmap);
        extern int EMSSetAltMapRegSet(unsigned int set,unsigned char
                   *pmap);
        extern int EMSGetAltMapArraySize(unsigned int *size);
        extern int EMSAllocAltMapRegSet(unsigned int *set);
        extern int EMSDeallocAltMapRegSet(unsigned int set);
        extern int EMSAllocDMARegSet(unsigned int *set);
        extern int EMSEnableDMARegSet(unsigned int set,unsigned int
                   channel);
        extern int EMSDisableDMARegSet(unsigned int set);
        extern int EMSDeallocDMARegSet(unsigned int set);
        extern int EMSPrepareForWarmboot(void);
        extern int EMSEnableOSFunc(long *key);
        extern int EMSDisableOSFunc(long *key);
        extern int EMSReturnAccessKey(long key);
        -------------------------------------------------------------------


                    ⨭ 7-7. EMMEXIST.C
        ------------------------------------------------------------------
        #include <stdlib.h>
        #include <fcntl.h>
        #include <dos.h>
        #include <errno.h>
        #include "emmconst"

        #define DOS_INT           0x21     /*ᯥ 㭪権 DOS*/
        #define DOS_IOCTL         0x44     /*㭪 IOCTL DOS*/
        #define IOCTL_GETINFO     0x00     /*㭪 " ଠ-
                                                   ன⢥" IOCTL*/
        #define IOCTL_OUTSTAT     0x07     /*㭪 " ﭨ
                                                        뢮" IOCTL*/
        #define READY_OUTPUT      0xFF     /*ன⢮ ⮢  뢮*/
        #define IS_DEVICE         0x0080   /*ࠡ稪 ਭ ன-
                                                                    */

                                      - 7-73 -
        static char device_name[9] = EMM_DEVICE;

             /*
             ஫ 稥 ७    ⮤
             "⮣ ࠡ稪". ⠭ emm_present  '1',
             ᫨ ७  ,  '0' - ᫨ .
             㭪 頥 '0', ᫨   訫 ᯥ-
             .  ⨢ 砥 頥  訡 DOS 맮
             㭪樨 DOS,   믮  ६  
             ७ .
             */

        emm_exists(emm_present)
        int *emm_present;               /*㪠⥫   
                                              ७ */
        {
             int return_code;            /*  樨  䠩*/
             int handle;                 /*ࠡ稪 䠩*/
             unsigned int dev_attr;       /*ਡ ࠩ ன⢠*/
             unsigned int dev_status;     /*室 ﭨ ன⢠*/

             if (_dos_open(device_name, O_RDONLY, &handle))  {
                                                /* 㤠  䠩*/
                if (errno == ENOENT)  {              /*䠩  */
                   return_code = 0;             /* ,   
                                                               */
                   *emm_present = 0;          /* ७ 
                                                  । */
                } else
                   return_code = errno;       /*  訫
                                                               ᯥ譮*/
             } else
                if (!(return_code = ioctl_getattr(handle, &dev_attr))) {
                                                       /*祭 ਡ*/
                   if (!(return_code = ioctl_outstat(handle, &dev_status)))
                                            /*祭 室 ﭨ*/
                                  /* ७  -
                                    , ᫨ ࠡ稪 ਭ ன-
                                               ⮢  뢮*/
                *emm_present = ((dev_status == READY_OUTPUT) && (dev_attr
                                           & IS_DEVICE)) ? 1 : 0;
                close(handle);             /*뢠 ࠡ稪 䠩*/
             }
             return(return_code);
        }

             /*
             砥 ᫮ ਡ⮢ DOS  ⮣ p稪,
             易   䠩  ன⢮. 頥 0,
             ᫨ 㭪 訫 ᯥ譮,  ⨢ 砥 -
             頥  訡 DOS
             */

        ioctl_getattr(handle, attrib)
        int handle;                /* p稪 䠩/ன⢠*/
        unsigned int *attrib; /* -> 饭 ଠ  ன⢥*/
        {

                                      - 7-74 -
             int rc;
             union REGS regs;
             regs.h.ah = DOS_IOCTL;  /*ࠢ /뢮  DOS  
                                                                ன*/
             regs.h.al = IOCTL_GETINFO;  /* ଠ  ன-
                                                                     ⢥*/
             regs.x.bx = handle;
             int86(DOS_INT, &regs, &regs);            /*맮 㭪樨 DOS*/
             if (!regs.x.cflag)  {             /*᫨  ந諮 訡*/
                *attrib = regs.x.dx;               /* ਡ
                                                         䠩/ன⢠*/
                rc = 0;                     /*㭪 믮 ᯥ譮*/
             } else
                rc = regs.x.ax;             /*頥  訡*/
             return(rc);
        }

             /*
             砥 室 ﭨ 䠩  ன⢠. -
             饭 ﭨ 0 砥,  ன⢮ ⮢ 
             뢮; ﭨ 0xFF00 砥,  ன⢮ ⮢
              뢮. 頥 0, ᫨ 㭪 訫 -
             譮.  ⨢ 砥 頥  訡 DOS.
             */

        ioctl_outstat(handle, status)
        int handle;                /* p稪 䠩/ன⢠*/
        unsigned int *status;                /* -> ᫮ ﭨ 뢮*/
        {
             int rc;
             union REGS regs;
             regs.h.ah = DOS_IOCTL;  /*ࠢ /뢮  DOS  
                                                                ன*/
             regs.h.al = IOCTL_OUTSTAT;       /* ﭨ 뢮*/
             regs.x.bx = handle;
             int86(DOS_INT, &regs, &regs);            /*맮 㭪樨 DOS*/
             if (!regs.x.cflag)  {             /*᫨  ந諮 訡*/
                *status = regs.h.al;               /*頥 ﭨ
                                                                   뢮*/
                rc = 0;                     /*㭪 믮 ᯥ譮*/
             } else
                rc = regs.x.ax;             /*頥  訡*/
             return(rc);
        }

             /*
             ஢ 稥 pp    ⮤
             " ". ⠭ emm_present  '1', ᫨
             ७  , '0' - ᫨ . 
             㭪 ᥣ 頥 '0'.
             */

        emm_exists2(emm_present)
        int *emm_present;
        {
             int len;
             char far *device_name;        /*㪠⥫   ᨬ쭮

                                      - 7-75 -
                                                               ன⢠*/
             char *np;
             unsigned int get_int_seg();

             FP_SEG(dev_name) = get_int_seg(EMM_INT);   /*ᥣ ࠩ
                                  ன⢠ p pp */

             FP_OFF(dev_name) = 10;      /*ᬥ饭  ࠩ ᨬ-
                                                           ன⢠*/

             /*㢨, 室   p pp 
                        ᬥ饭 10  ᥣ EMM_INT*/

             for (len  = 8, np = device_name; len && *dev_name++ == *np++;
                                                               len--);

             *emm_present = (len) ? 0 : 1;       /*᫨  ᨬ ᮢ-
                               p pp  */
             return(0);                      /*ᥣ 蠥 ᯥ譮*/
        }

             /*
             頥  ᥣ  뢠 "intno"
             */

        unsigned int get_int_seg(intno)
        int intno;
        {
             union REGS regs;
             struct SREGS segregs;

             regs.h.al = (unsigned char) intno;
             regs.h.ah = 0x35;            /*㭪 " " DOS*/
             intdosx(&regs, &regs, &segregs);
             return((unsigned) segregs.es);
        }
        -------------------------------------------------------------------

                    ⨭ 7-8. SNAPSHOT.C
        -------------------------------------------------------------------
             /*
                : SNAPSHOT.C
                祭:   ⨫,  १⭮   ᫥
                              襭,  ࠭ ࠧ ⥪⮢
                              ࠭  pp .
             */

        #include <stdio.h>
        #include <stdlib.h>
        #include <signal.h>
        #include <dos.h>
        #include <bios.h>

        #include "emmconst.h"    /*⠭ p pp */
        #include "emmtypes.h" /*  p pp -
                                                                     */
        #include "emmerr.h"    /* 訡 p pp */

                                      - 7-76 -
        #include "emmfunc.h"  /*  㭪権  p pp
                                                                   */

        #define PRTSC_INT          5           /*뢠  ࠭*/
        #define HANDLE_NAME        "SNAPSHOT"  /* p稪 pp-
                                                                */
        #define MAX_SCR            500         /*ᨬ쭮 - -
                                                           塞 ࠭*/
        #define MDA_SEG            0xB000      /*ᥣ  
                                                     ஬ ᯫ*/
        #define CGA_SEG            0xB800      /*ᥣ  
                                            梥⭮ ᪮ ᯫ*/
        #define SCR_ROWS           25          /*। 25 ப -
                                              楤  ।*/
                                               /*䠪᪮ - ப
                                                   */

        #pragma pack(1)         /* , ஢  ⠬*/

        #define DisplayError(rc)      ShowEMMErr(rc, __LINE__, __FILE__)

        typedef struct bios_video_data  {     /*  BIOS*/
             unsigned char   crt_mode;         /*० ᯫ*/
             unsigned int    crt_cols;         /*-   ࠭*/
             unsigned int    crt_len;          /*  ॣ樨 
                                                                   */
             unsigned int    crt_start;        /*砫   
                                                           ॣ樨*/
             unsigned int    cursor_pos[8];    /*   8
                                                           ࠭*/
             unsigned int    cursor_mode;      /*⥪ ⠭ ०
                                                                */
             unsigned char   active_page;      /*⥪ ⮡ࠦ -
                                                                    */
             unsigned int    addr_6845;        /*  ⨢ 
                                                            ⮡ࠦ*/
             unsigned char   crt_mode_set;     /*⥪ ⠭ ॣ
                                                                     38*/
             unsigned char   crt_palette;      /*⥪ ⠭ 
                                                - 梥⭠ */
        } BIOS_VIDEO_DATA;

        typedef struct scr  {                  /*ਯ  ࠭*/
             unsigned int scr_page;            /*砫쭠 ࠭ p-
                                                p   ࠭*/
             unsigned int    scr_offset;       /*砫쭮 ᬥ饭 -
                                                ७   ࠭*/
             unsigned int    scr_width;        /*-   ࠭*/
             unsigned int    scr_len;          /* ࠭  */
        } SCR;

        typedef struct scr_index {           /*᭠  ࠭*/
             void (interrupt far *scr_int5)(); /*㪠⥫   ணࠬ-
                                                㦨 뢠*/
             unsigned int    scr_count;        /*- ࠭, ࠭-
                                                  ⥪騩 */
             unsigned int scr_max;            /*ᨬ쭮 - ࠭

                                      - 7-77 -
                                                          ࠭*/
        } SCR_INDEX;

             /*
                      
             */

        void (interrupt far *old_int5)();   /*   ࠭*/
        PMAP *emm_save;                     /*㪠⥫   ࠭-
                               ⥪ p pp */
        unsigned int emm_tpages,            /*饥 - ࠭ p-
                                                            p */
                         emm_apages,        /*㯭 - ࠭
                                                      pp */
                         emm_handle,        /*p稪 pp -
                                                                       */
                         emm_pages,         /*- ࠭, ਭ
                                                              p稪*/
                         isr_status,        /*0: isr ᫥ 楯,
                                            <>0: isr ᫥ 㦨*/
                         terminate_flag;    /*1:   ணࠬ*/
        char   far       *page_frame;     /*㤠 ->  ஢ */
        SCR_INDEX        far *ip;          /*㤠 ->   ࠭*/
        SCR              far *sp;      /*㤠 ->  ਯ ࠭*/

        BIOS_VIDEO_DATA far *vp = (BIOS_VIDEO_DATA far *) 0x00400049L;
                                       /*㤠 ->    -
                                                               BIOS*/
        MOVE_XCHG mcb;                 /* ।/
                                                         ⥩*/

        #pragma check_stack(off)
                                           /*頥, ᫨ "control-c"*/
        void break_handler(sig_type)
        int sig_type;
        {
             signal(SIGINT, SIG_IGN);      /*頥 "control-c"  ६
                                                              ࠩ*/
             cleanup;
             exit(0);
        }

             /*
                   ࠩ 뢠  뢠  ࠭
                    ⠫ ᭨ 筮  
                   pp 
             */
        void interrupt cdecl far int5_isr(es,ds,di,si,bp,sp,bx,dx,cx,ax,ip,
                                                          cs,flags)
        unsigned  es,ds,di,si,bp,sp,bx,dx,cx,ax,ip,cs,flags;
        {
             static int rc = 0;             /*᫥ ᫥ 
                                                               */
             int status;
             if (!isr_status)               /*᫨ 㦨 뢠
                                             ⨢஢, 楯 
                                          ।饬 ࠩ 뢠*/

                                      - 7-78 -
                _chain_intr(old_int5);
             if (rc == 0)  {            /*த ⮫쪮, ᫨ ࠭ 
                                                          뫮 訡*/
                rc = EMSGetPageMap(emm_save);

                if (rc == 0)  {               /*⥪ ࠭ ᯥ譮*/

                                                  /*ᤥ ᭨ ࠭*/
                   rc = dump_screen();
                          /*⠭ ⥪ ।饣 ⮡ࠦ*/

                   if (status = EMSSetPageMap(emm_save))
                      rc = status;                  /*  訡*/
                }
             }
             /*᫨ ந諠 - 訡,  */

             if (rc)
                Beep(32000);
        }

        dump_screen()
        {
        int rc;
        unsigned int overflow, new_offset, scr_size;

                 /*⮡ࠧ   ࠭  ᪮ ࠭
                            0  䨧 ࠭ 0*/

             if (rc = EMSMapHandlePage(emm_handle, 0, 0))
                return(rc);                                       /*⪠*/

             /*㡥,   諨   ⮢*/

             if (ip->scr_count >= ip->scr_max)
                return(1);                         /*९ */

             /*᫨ ࠭ ९ ࠭, ࠧ   
                                      ⥫ ࠭*/

             scr_size = vp->crt_cols * SCR_ROWS * 2;      /*- ⮢ 
                                                                   ࠭*/
             new_offset = sp->scr_offset + scr_size;      /* ᬥ饭
                                                        ࠭*/

             if (new_offset  > PAGE_SIZE) {  /*࠭ ९ ࠭*/

                overflow = new_offset - PAGE_SIZE;   /*稭 ९-
                                                              ࠭*/
                emm_pages += (overflow / PAGE_SIZE);  /*- 室
                                                   ⥫ ࠭*/
                new_offset = overflow % PAGE_SIZE;   /*ࠧ 筮
                                                                ࠣ*/
                if (new_offset)          /*ਡ ࠭  ,*/
                   emm_pages++;                         /*᫨ 室*/

                if (rc = EMSReallocPages(emm_handle, &emm_pages))

                                      - 7-79 -
                   return(rc);                                   /*⪠*/
             }

             /*᭨, ⮡ࠦ騩 ࠭  ७ */

             mcb.region_length = (long) scr_size;  /*- ⮢  -
             mcb.source.memory_type =  CONV_MEM;    筮 */
             mcb.source.handle      = 0;  /* p稪  -*/
             mcb.source.initial_offset = vp->crt_start;  /*砫쭮 ᬥ-
                                                         饭 ࠭*/
             mcb.source.initial_seg_page = (vp->crt_mode == 7) ? MDA_SEG :
                                                                   CGA_SEG;
                  /*ࠡ⠥ ⮫쪮  梥/஬ ⥪⮬*/
             mcb.dest.memory_type        = EXP_MEM;       /*  -
                                                          ७ */
             mcb.dest.handle             = emm_handle;    /*।⥫쭮
                                                 ࠧ饭 p稪*/
             mcb.dest.initial_offset = sp->scr_offset; /*᫥饥 -
                                                     㯭 ᬥ饭*/
             mcb.dest.initial_seg_page = sp->scr_page;  /* ⥪饩 -
                                                                    */

             if (rc = EMSMoveRegion(&mcb))  /*㭪 "। 
                                 " ᯥ䨪樨 pp */
                return(rc);                                     /*⪠*/

             Beep(1000);       /*뤠 ⪨ 㪮 ᨣ - ᯥ*/

             /*   ࠭ ("। " 
                               蠥 ⥪ ⮡ࠦ*/

             ip->scr_count++;  /*㬥襭 - ࠭ ࠭*/
             sp->scr_len = src_size; /* - ⮢  ࠭*/
             sp->scr_width = vp->crt_cols;/* -  
                                            ப*/
             sp++;               /*㪠  ᫥騩  */
             sp->scr_len = 0;       /*    ࠭,*/
             sp->scr_width = 0;      /*⮬ 㫥   ਭ*/
             sp->scr_page = emm_pages -1;     /* ࠭   ᫥-
                                                 ࠧ饭 ࠭,*/
             sp->scr_offset = new_offset;     /*।⢥ ᫥ 
                                                       ।騬 ࠭*/
             return(rc);                                       /*ᯥ*/
        }

             /*᢮ ७ , ᫨ ࠧ饭*/

        cleanup()
        {
             int rc;
             /*஢  , ⠪  맮   
                             訡筮 楤*/
             if (emm_handle != -1)
                rc = EMSDeallocatePages(emm_handle);
        }

        #pragma check_stack(on)

                                      - 7-80 -

        main(argc, argv)
        int argc;
        char *argv[];
        {
             int emm_present, rc;
             unsigned int far *pseg_top;
             char emm_ver[4];

             get_opts(argc, argv);     /* ४⥫ 
                                                                ப*/
             emm_handle = -1;          /* ࠧ饭 p稪
                                             pp */
             /*⠭ ࠩ "Control-C" (뢠)*/

             signal(SIGINT, break_handler);

             /*஢ઠ  pp */

             if (rc = emm_exists(emm_present))   {     /* 
                                   p pp   襫*/
                printf("snapshot: EMM presence test failed, rc: %d", rc);
                exit(2);
             }

             if (!emm_present)   {   /* pp */
                printf("snapshot: No expanded memory is present");
                exit(1);
             }

             /*  ᯥ䨪樨 pp , 
                     ন p pp */

             if (rc = EMSGetVersion(emm_ver))   {
                DisplayError(rc);
                exit(1);
             }

             /*㡥,   -  ࠩ ,  4.0*/

             if (*emm_ver < '4') {    /*ॡ ᯥ䨪 pp
                                                   LIM 4.0  */
                printf("snapshot: Unsupported EMM version detected: %s,
                   LIM EMS 4.0 or greater is required", emm_ver);
                exit(1);
             }

             /* 㪠⥫   ࠭ ᯥ䨪樨 pp
                               */

             if (rc = EMSGetFrameAddr(&page_frame))   {
                DisplayError(rc);
                exit(1);
             }

             /* p稪 ᯥ䨪樨 pp , 
                          ᮤন  ࠭*/

                                      - 7-81 -

             rc = EMSSearchHandleName(HANDLE_NAME, &emm_handle);

             /*訡, ᫨   , ⫨  'ଠ쭮'
                         'p稪  '*/

             if (rc != 0 && rc != HNDVLNFD)   {
                DisplayError(rc);
                exit(1);
             }

             /*    १⭮, ⠭ ணࠬ,
              ᫥ 襭 १⭮,    ⥪饥
                                ﭨ*/

             if (terminate_flag)  {    /*짮⥫ ᨫ 襭*/

                if (rc == 0)      /*p稪  訬  ,*/
                     terminate();        /*⮬   ᥡ*/
                else  {          /*p稪  , ⮬  -
                                                   */
                printf("snapshot: can't terminate - not installed");
                exit(1);
                }

             } else  {           /* ⠭  뤠 ﭨ*/
                /* ᫨ ࠡ稪,  HANDLE_NAME, 㦥 -*/
                /*, ⮫쪮 ᮮ,  ᪮쪮  ᯥ䨪樨   */
                /*p   騩   ࠧ饭,  */
                /* ࠭ ࠭  .  ⨢ 砥, -*/
                /* ணࠬ 㦨 뢠  뢠*/
                /*  ᤥ  ணࠬ १⭮*/

                   if (rc == 0) /*p稪  訬  㦥 -*/
                      show_status(); /*,⮬ ⮫쪮  -
                                                                      */
                   else  {          /*p稪  ,*/
                      install();    /*⮬ ࠧ p稪  -
                                    ணࠬ ࠡ⪨ 뢠*/

                           /*   १⭮*/

                      FP_SEG(pseg_top) = _psp; /* ࠣ ணࠬ-
                                                 室  psp+2 */
                      FP_OFF(pseg_top) = 2;

                      printf("snapshot: TSR installing at segment [%04X],
                       size %u paragraphs\n", _psp, *pseg_top  - _psp);

                      _dos_keep(0, *pseg_top - _psp);  /*- ࠣ䮢
                                                             ணࠬ*/
                   }
             }
        }

             /*⮡ࠧ 䨪 p稪, - ᪨*/
             /*࠭, ࠧ饭  ,  - ࠭, -*/

                                      - 7-82 -
             /*     pp */

        show_status()
        {
             int rc;
             unsigned int alloc_pages, screens;

             /*। - ࠭, ࠧ饭   p-*/
                       /*稪 p pp */

             if (rc = EMSGetHandlePages(emm_handle, &alloc_pages))  {
                DisplayError(rc);
                cleanup();
                exit(1);
             }

             /*⮡ࠧ   ࠭, ᮤঠ 
               ࠭,  㫥 䨧 ࠭*/

             if (rc = EMSMapHandlePage(emm_handle, 0, 0))  {
                DisplayError(rc);
                cleanup();
                exit(1);
             }

             /* 㥬    ᮢ ࠭
                 pp */

             ip = (SCR_INDEX far *) page_frame;

             /* ⥪饥 ﭨ*/

                  printf("snapshot: status - EMS handle (%d); EMS
                     pages (%d); screens (%d)\n", emm_handle, alloc_pages,
                         ip->scr_count);

             /* ⮡ࠦ ࠭ ᮢ ࠭*/

             if (rc = EMSMapHandlePage(emm_handle, -1, 0))  {
                DisplayError(rc);
                cleanup();
                exit(1);
             }
        }

             /* p稪 ᯥ䨪樨 pp   -*/
             /* ࠭楩  p pp    */
             /*, ⠪ ⮡ 㣨 ணࠬ  */
             /* . 樠஢    -*/
             /*,  㤥 ࠧ饭  砫 ࢮ ࠭ ᯥ-*/
             /*䨪樨 pp . ⥬  ⠢ ணࠬ*/
             /*㦨 뢠  뢠  ࠭, ⠪*/
             /*⮡ ࠧ ࠭ ࠭﫨  pp , */
             /* 짮⥫   PrtScr.*/

        install()


                                      - 7-83 -
        {
             int rc, context_bytes;

             /*ࠧ  ࠭  砫*/

             emm_pages = 1;

             if (rc = EMSAllocatePages(&emm_handle, emm_pages))   {
                DisplayError(rc);
                exit(1);
             }

             /* p稪 , ⠪ ⮡ 㣨 ணࠬ  */
                                   /*    */
             if (rc = EMSSeyHandleName(emm_handle, HANDLE_NAME))  {
                DisplayError(rc);
                cleanup();
                exit(1);
             }
             printf("snapshot: allocated expanded memory handle # %d with
                     name '%s'\n", emm_handle, HANDLE_NAME);

             /* 樠஢   ࠭ ᮢ ࠭,*/
             /*     ᪮ ࠭ 0 */

             if (rc = EMSMapHandlePage(emm_handle, 0, 0))  {
                DisplayError(rc);
                cleanup();
                exit(1);
             }

             /* 㥬    ᮢ ࠭
                 pp */

             ip = (SCR_INDEX far *) page_frame;

             /* 樠஢    */

             ip->scr_count = 0;           /*-  ࠭ ࠭*/
             ip->scr_max = MAX_SCR;       /*ᨬ쭮 -  ࠭-
                                                               ࠭*/
             ip->scr_int5 = int5_isr;     /*㪠⥫   ணࠬ
                                    㦨 뢠  ࠭*/
             sp = ip->scr_idx;             /* ->   */
             sp->scr_page = sizeof(*ip) / PAGE_SIZE;  /*࠭ 稭*/
             sp->scr_offset = sizeof(*ip) % PAGE_SIZE;
                                                      /*ࠧ  ᮬ*/
             sp->scr_len = 0;                         /*砫 */
             sp->scr_width = 0;

             /* ⮡ࠦ ࠭ ᮢ ࠭*/

             if (rc = EMSMapHandlePage(emm_handle, -1, 0))  {
                DisplayError(rc);
                cleanup();
                exit(1);
             }

                                      - 7-84 -

             /*ࠧ  ࠭ ⥪ pp ,
               ᯮ㥬 ࠩ஬ 뢠  ࠭*/

             if (rc = EMSGetPageMapSize(&context_bytes))  {
                DisplayError(rc);
                cleanup();
                exit(1);
             }

             if ((emm_save = (PMAP *) malloc(context_bytes)) == NULL)   {
                printf("snapshot: Couldn't allocate %d bytes for context
                     save area", context_bytes);
                cleanup();
                exit(1);
             }

             /*⠭ p稪 뢠  墠뢠 ᮢ
                                     ࠭*/

             old_int5 = _dos_getvect(PRTSC_INT);   /*࠭  -
                                                      뢠*/
             _dos_setvect(PRTSC_INT, int5_isr);    /*⠭  -
                                                      뢠*/
        printf("snapshot: print screen interrupt handler is installed\n");

        isr_status = 1;
        /*   ࠩ 㦨 뢠*/
        printf("snapshot: print screen interrupt handler is activated\n");
             }

             /*  ணࠬ, १ ᫥ 襭,  
                         짮⥫ */

        terminate()
        {
            int rc;
            unsigned int tsr_psp;         /*䨪 ணࠬ ᥣ
                            ⨢ ணࠬ, १⭮  襭*/

            unsigned int far *envptr;     /*㪠⥫ । ணࠬ, -
                                             ⭮  襭*/

            void (interrupt far *our_int5)(); /* ⠭ ண-
                                        ࠬ, १⭮  襭*/

             /* ਮ⠭ ࠡ 뢠  ࠭ */

             isr_status = 0;
             printf("snapshot: print screen interrupt handler
                        deactivated\n");

             /* ⮡ࠦ  ࠭, ᮤঠ  ࠭ */

             if (rc = EMSMapHandlePage(emm_handle, 0, 0))  {
                DisplayError(rc);
                cleanup();

                                      - 7-85 -
                exit(1);
             }

             /* 㥬    ᮢ -*/
             /*  pp , ⠪ ⮡     -*/
             /* ணࠬ 㦨 뢠,   ⠭-*/
             /*,   ணࠬ ⮢*/

             ip = (SCR_INDEX far *) page_frame;
             our_int5 = ip->scr_int5;          /*  
                                        ணࠬ 㦨 뢠*/

             /* ᢮ pp  */

             cleanup();
             printf("snapshot: expanded memory handle %d deallocated\n",
                        emm_handle);

             /* ᫨  㣮 ࠩ  ࠭   ⠭-*/
             /* । , ⪫ ணࠬ 㦨 뢠-*/
             /*   ⠭ ணࠬ*/

             if (_dos_getvect(PRTSC_INT) == our_int5)  {  /* ணࠬ
                                         㦨 뢠 - ࢠ*/

                /*⠭   뢠  ࠭ */

                _dos_setvect(PRTSC_INT, old_int5);
                printf("snapshot: old print screen interrupt handler
                           restored\n");

                /* ᢮ ப । ணࠬ, १⭮  -
                   襭,  ணࠬ ᥣ*/

                tsr_psr = FP_SEG(our_int5) - 16;  /*PSP 稭  1666
                                              ࠣ䮢  ᥣ */
                printf("snapshot: deallocating TSR at segment [%04X]\n",
                           tsr_psp);

                FP_SEG(envptr) = tsr_psp;    /*㪠⥫ । -  ᬥ-
                                                                 */
                FP_OFF(envptr) = 0x2C;       /* 2Ch  䨪 ᥣ -
                                                              ࠬ*/
                _dos_freemem(*envptr);       /*᢮ ப ।*/
                _dos_freemem(tsr_psp);       /*᢮ ணࠬ ᥣ-
                                                          */

             } else  /* ணࠬ 㦨 뢠  
                       ࢮ  楯,  ᭨ ணࠬ, १
                                ᫥ 襭*/
                printf("snapshot: cannot deallocate TSR - print screen ISR
                           is not first in chain\n");
        }
             /*  ப ४砥   /L,   */
             /*'L' - 䨪 ४⥫   ᨬ. -*/
             /*頥  ࢮ   ᨢ 㪠⥫, */
             /*᫥饬  ४⥫ﬨ*/

                                      - 7-86 -

        get_opts(cnt, ptr)
        int cnt;
        char *ptr;
        {
             int argc;

             terminate_flag = 0;          /* 䫠 襭*/

             arc = 1;
             while (*++ptr)[0] == '/'  {
                switch(*ptr)[1])  {

                   case '?'               /* ⮡ࠦ  ᯮ-
                                             ४⥫*/
                      printf("snapshot: saves text screen images to
                                expanded memory\n");
                      printf("usage: snapshot [/X]\n");
                      printf("   /X - terminates snapshot");
                      exit(0);
                      break;

                   case 'x':                 /*蠥 */
                   case 'X':

                      terminate_flag = 1;
                      break;
                   default:                  /* ४⥫*/
                      printf("'%c' is an unknown option\n", (*ptr)[1]));
                      break;
                }
                argc++;
             }
             return(argc);
        }
        -------------------------------------------------------------------







                             ⨭ 7-9. PLAYBACK.C
        -------------------------------------------------------------------
            /*
                 : PLAYBACK.C
                 祭: ᯥ⪠ ࠧ ⥪⮢ ࠭, -
                   pp  ணࠬ SNAPSHOT,  ⠭-
                  室 䠩 DOS.
            */

        #include <stdio.h>
        #include <stdlib.h>
        #include <signal.h>
        #include <dos.h>
        #include <bios.h>

                                      - 7-87 -

        #include "emmconst.h"    /*⠭ p pp */
        #include "emmtypes.h"    /*  p pp
                                                                 */
        #include "emmerr.h"    /* 訡 p pp */
        #include "emmfunc.h"     /* 㭪権 p pp
                                                                 */
        #define DisplayError(rc)  ShowEMMErr(rc, __LINE__, __FILE__)

        #define HANDLE_NAME       "SNAPSHOT"  /* p稪 pp
                                                                  /*
        #define MAX_SCR           500         /*ᨬ쭮 - -
                                                        塞 ࠭*/
        #define SCR_COLS          80          /*। 80 ,
                                                 ४஢*/
        #pragma pack(1)                       /*   ⮢
                                                         ࠢ*/

        typedef struct scr {              /*ਯ  ࠭*/
             unsigned int   scr_page;     /*࠭ pp  
                                                        砫쭮 ࠭*/
             unsigned int   scr_offset;   /*ᬥ饭 pp  
                                                        砫쭮 ࠭*/
             unsigned int   scr_width;    /*-   ࠭*/

             unsigned int   scr_len;      /* ࠭  */
        } SCR;

        typedef struct scr_index {          /*᭠  ࠭*/
             void (interrupt far *scr_int5)(); /*㪠⥫   ணࠬ-
                                                㦨 뢠*/
             unsigned int   scr_count;         /*⥪饥 - ࠭
                                                                ࠭*/
             unsigned int   scr_max;           /*ᨬ쭮 - -
                                                     ࠭*/
             SCR            scr_idx[MAX_SCR];  /*ᨢ ᮢ ࠭*/
        } SCR_INDEX;

             /*
                      
             */

        unsigned int  emm_handle,    /*p稪 pp */
                        emm_pages;   /*- ࠭, ਭ
                                                      p稪*/
        char far       *page_frame;  /*㤠 ->   ࠭
                                   ᯥ䨪樨 pp */
        SCR_INDEX      far *ip;      /*㤠 ->   ࠭*/
        SCR            far *sp;      /*㤠 ->  ਯ -
                                                             ࠭*/

        MOVE_XCHG mcb;     /* "।/ */

        main()
        {
             unsigned int   scan_code;
             int emm_present, rc, current_screen;

                                      - 7-88 -
             char emm_ver[4];

             /*  pp */

             if (rc = emm_exists(&emm_present))   {
                    /*  p pp   襫*/
                 printf("replay: EMM presence test failed, rc: %d", rc);
                 exit(2);
             }

             if (!emm_present)   {
                    /* pp   */
                 printf("replay: No expanded memory is present");
                 exit(1);
             }

             /*  ᯥ䨪樨 pp ,ন-
                   p pp */

             if (rc = EMSGetVersion(emm_ver))   {
                DisplayError(rc);
                 exit(1);
             }

             /* 㡥,     4.0 */

             if (*emm_ver < '4')  {    /*ॡ ᯥ䨪 pp
                                        LIM   4.0*/
                 printf("replay: Unsupported EMM version detected: %s,
                    LIM EMS 4.0 or greater is required", emm_ver);
                 exit(1);
             }

             /*  㪠⥫   ࠭ ᯥ䨪樨  pp-
                             */

             if (rc = EMSGetFrameAddr(&page_frame))   {
                DisplayError(rc);
                 exit(1);
             }
             /*  p稪, ᮤঠ饣  ࠭ */

             if (rc = EMSSearchHandleName(HANDLE_NAME, &emm_handle))   {
                DisplayError(rc);
                 exit(1);
             }

             /* ⮡ࠧ  ࠭, ᮤঠ  ࠭ */

             if (rc = EMSMapHandlePage(emm_handle, 0, 0))   {
                DisplayError(rc);
                 exit(1);
             }

             /*  㥬    ᮢ
                      ࠭ */


                                      - 7-89 -
             ip = (SCR_INDEX far *) page_frame;
             sp = ip->scr_idx;      /*㪠    ࠭*/

             if (ip->scr_count == 0)
                printf("replay: no screens have been saved");
             else
                /*
                   ᯥ뢠   ࠭  ⠭
                   뢮
                */
             for (current_screen = 0; current_screen < ip->scr_count;
                  current_screen++)  {
                rc = print_screen(sp++);

             if (rc)  {             /*ந諠 訡 pp */
                   DisplayError(rc);
                    exit(1);
                }
             }

             /*  ⮡ࠦ ࠭ ᮢ ࠭ */

             if (rc = EMSMapHandlePage(emm_handle, -1, 0))   {
                DisplayError(rc);
                 exit(1);
             }
        }

             /*
                   㤠 㪠⥫  ਯ ࠭, -
                   pp ,   ᨬ -
                  ࠧ ࠭  ⠭ 室 䠩 DOS
             */

        print_screen(sp)
        SCR far *sp;               /*㤠 ->  ਯ ࠭*/
        {
             int rc, lpages, line, rows;
             char *line_buf[SCR_COLS+1];
             int far *bp;
             struct SREGS segregs;

             /* ᫨, ᪮쪮 䨧᪨ ࠭ 㦭 ⮡ࠧ */

             lpages = 1;           /*  ࠩ ,  ࠭ */
             if (sp->scr_offset + sp->scr_len > PAGE_SIZE)
                  lpages++;

             /* ⮡ࠧ  ࠭ (࠭),  ᮤঠ
             ࠧ ࠭,  䨧᪨ ࠭, 稭騥  䨧᪮
                                  ࠭ 1 */

             for (i = 0; i < lpages; i++)
                if (rc = EMSMapHandlePage(emm_handle, i + sp->scr_page,
                                              i + 1))
                   return(rc)                          /* 㤠 */


                                      - 7-90 -
             /*  㥬  䨧 ࠭ 1 */

             bp = (int far *) page_frame;          /*   
                                                                 ࠭*/
             FP_SEG(bp) += (PAGE_SIZE / 16);       /*- ࠣ䮢 
                                 ࠭ ᯥ䨪樨 pp */
             FP_OFF(bp) = sp->scr_offset;

             rows = sp->scr_len / sp->scr_width / 2;  /*᫥ -
                                                          ப  ࠭*/
             putchar('[bs]014');                  /*  ࠭*/

             /* 뢠  ᨬ  ࠧ ࠭  ⠭
                                       室 */

             for (line = 0; line < rows; line++) {
                i = sp->scr_width;
                while (i--)
                   putchar(*bp++ & 0xFF);
                putchar('[bs]n');           /* 뢮  ப ᫥
                                                     ப */
             }
             return(rc);
        }
        -------------------------------------------------------------------


                              ⨭ 7-10. BEEP.ASM
        -------------------------------------------------------------------
             TITLE   Beep
        _TEXT           SEGMENT         BYTE PUBLIC 'CODE'
        _TEXT           ENDS
        _DATA           SEGMENT  WORD PUBLIC 'DATA'
        _DATA           ENDS
        CONST    SEGMENT          WORD PUBLIC 'CONST'
        CONST    ENDS
        _BSS            SEGMENT  WORD PUBLIC 'BSS'
        _BSS            ENDS
        DGROUP  GROUP    CONST, _BSS,       _DATA
                ASSUME   CS:_TEXT, DS:DGROUP, SS:DGROUP, ES:DGROUP
        _TEXT           SEGMENT
        timer   equ     40h
        port_b          equ      61h
        ;-----   訬   ७ ஬⥫ 
        ;       ⥫쭮 㪠 ࠢ  楫 㬥⮬.
        ;
                PUBLIC  _Beep
                PUBLIC  _Beep
        _Beep   PROC    NEAR
                push    bp
                mov     bp,sp
                mov     al,10110110B   ; ⪨  (
        ;                                )
                out     timer+3,al     ;,   孨- ᠭ
                mov     ax,533H
                out     timer+2,al
                mov     al,ah

                                      - 7-91 -
                out     timer+2,al
                in      al,port_b
                mov     ah,al
                or      al,03
                out     port_b,al
                mov     cx,[bp+4]
                mov     bl,1
        beep0:  loop    beep0
                dec     bl
                jnz     beep0
                mov     al,ah
                out     port_b,al
                pop     bp
                ret
        _Beep           ENDP
        _TEXT           ENDS
                END
        -------------------------------------------------------------------
