




                  8.   

                 ᭮ ᨭ஭ ᫥⥫쭮 裡
                 ᫥⥫   窨 ७ ணࠬ
                 ᯮ짮  ।  MS-DOS  ணࠬ஢
                 ᫥⥫쭮 
                 ਬ ணࠬ
                 祭


             ᫥⥫   ⥬ MS-DOS ᯥ稢  室  
         譨  .  ᭮  祩 ᫥⥫쭮  
         ࠢ  祭   設    ⮪  ⮢.  (
         ⨢ ࠫ쭮 ,   ஬ ७ 
         । 楫).   ᯮ짮 ᫥⥫ 
           祭  ⥬ "",  ࠢ   ਭ
           ⠭ ⮬᪮ ⥫䮭 裡   ᯮ짮-
          .  ⥬ MS-DOS  㦤  ࠡ  -
         ⥫쭮 ,    ⠫ ⠭⭮ ਥ -
         ⥬.
             ᫥⥫   ⥬ MS-DOS ᯮᮡ ন
         ⠭ ᨭ஭ ।  RS-232C.    ।-
         ⢮ ROM-BIOS, ⠭⭮   ⥬ MS-DOS, MS -DOS ᠬ
           ᥡ  砥    প  ணࠬ஢ ⮢
         RS-232C (ਬ,  뢠  14h),  প  ⢥-
         砥 ॡ ᮪᪮⭮ 裡.  ᫨   
          ᢮ ਪ ணࠬ  䥪⨢    ᫥-
         ⥫쭮 裡,    ⢫   ᫥⥫쭮
           ⭮ ஢.   ⮩  ,   -
         .


                     ᭮ ᨭ஭ ᫥⥫쭮 裡

               । ,   㥬  ।祩  ⮢
            ன⢠  㣮, ਬ,  ᮭ쭮
               ᫥⥫쭮  ਭ.  ᫨  
           ᥬ    ன⢠,     -
              ᫠ ࠧ   .  㤥
         ࠫ쭠  ।.   ࠧ ࠡ⠥ ࠫ 
         ᮭ쭮 , ஬ ⮣,    쬨 -
             㣨 ᨣ ,  뢠騥  
         । .
              㣮 ஭,  ᫨      । ᨣ-
         ,  室 뫠    ᫥⥫쭮,
           .   ⮣,    뫠  ᨭ஭,
         ⠪ ࠧ,     뫠   ࠭  ।
         ६ (᪠,     ᥪ㭤),  ᨭ஭  ᪮-
         ,  ।⥫쭮 । 易⥫쭮.
             ᫥⥫쭠   襢,  祬  ࠫ쭠,  ⠪ 
         ॡ   ।  -    ஭-
          裡. ஬ ⮣ ० ᨭ஭ । 뢠 -
         ⥫쭮 襥 ⢨    ⮣,    -
           ⥫쭮  ᯥ樠쭮  㤮    প

                                      - 8-2 -
         ᨭ஭樨  ।稪  ਥ.
              ࠧ,  ᨭ஭  ᫥⥫쭠   
         ।⥫ 襭   ⮨     -
         㥬  ।. 筮,  ⮬ ० । 
          ८ࠧ뢠      ⮢   㪠-
          ਥ 砫    .   㭪 8-1 -
         ஢ 楯 ᨭ஭ ᫥⥫쭮 裡.
             ।,   㬥 ८ࠧ뢠    ⮪
           㫥,    ,     । १
         । 裡 (ਬ,  ⥫䮭 ).   ᠬ , 㭨-
         ᠫ ᨭ஭ ਥ।稪 (UART),   㢨  ᫥-
         饬 ࠧ,  믮 筮 ⠪  㭪.  筮,   
         ६   室  ० ,  樨 -
         ,    浪,   । ,  -
          .  㣮 ஭,   室  -

                                  
                                    ⠭  
                                     7  6  5  4  3  2  2  1 Ŀ
      ďਭ  ᨬĿ Ŀ
      AB7654310C                      
   -->  Ŀ   Ŀ
   Ĵ  D                        
                               Ĵ
     UART  ਥ              ᪮              
                                     
                                                                Ĵ
     Ŀ                                                      
   Ĵ       Ŀ                                               
                                                   ਭ騩
                         䮭                     
                ſ___________________________Ŀ
                      <--                  
                                               
                                               
                                               
                                                      Ŀ
                                               Ĵ  Ŀ
         Ŀ                                            
                                                                      
            PC                                                        
      Ŀ                                                  
                                                                      
                                                        
                                        
          Ŀ                                 
             7  6  5  4  3  2  2  1                                  
         ď뫠   ᨬĿ  
       Ŀ                   AB7654310C  
              Ŀ     
                             D  
                         -->            
             ᪮       UART  ᫥⥫쭮  PC
                                        

                   .8-1. ᨭ஭ ᫥⥫쭠 .
                 A-⮯; B-⭮; C-砫; D-ᤢ ॣ

                                      - 8-3 -
         ﭨ   ᪮  ,  ,      ⮨    ०
         뤥ন ࢠ.  ࠧ, ᪨   
         ᬠਢ, ᮮ⢥⢥,  MARK  SPACE.
              ᨭ஭  裡  ᫮ ﭨ   MARK
          SPACE 砥 砫 ᨬ (ᬮ 㭮 8-2).   -
          ⮢ ⮬.  ⮢ ⮬ ᫥  -
         ⮢,  ।⠢ ᨬ,  ⥬  ஫ ⭮. -
         ,      室     ﭨ    MARK,  
         ।⠢ ᮡ ⮯   砥  ⥪饣  ᨬ-
         .  ᫮ ⮢, ᯮ㥬  ।⠢ ᨬ, 뢠-
           ᫮  筮 뢠 ࠢ ᥬ    쬨.  -
         ஫   ᯮ  믮 ୮ ஢ન 
         稥 訡.

                  <---------     ࠢ ।
                                            頥 
      ᢮                                   ᢮ ﭨ
             A                                          
      B Ŀ                   Ŀ    
               0   1   2   3   4   5   6   7                
      C                             
               7  8                  
         ⮢                        ⭮⨳    砫 㣮
                                                        ᨬ
                                               ⮯
                      ६ ----->

              .8-2. ।⠢  ᨭ஭  ᫥⥫쭮
                         裡 ଠ 筮 ᨬ
                A-⥫쭮 1 ; B-MARK  1; C-SPACE  0

              ।稪  (  ਥ) 㧭  ⥫쭮 
         ?  ⢨⥫쭮,   ।稪,   ਥ   
         ⥫쭮  ⥪஢ ⮢ 㤥 .  ⥫-
            । ࠬ  ⠪⮢  ᮢ
         ਥ  ।稪. ⬥⨬, ,    ਥ-
           ।稪       ,    -
         , ⮡  뫨 ᨭ஭஢. 롮  
           ᪮ ।  ,   砥 ᫮ -
          ﭨ   ᥪ㭤. 쭮  ⠪⮢ -
          "16-⭠ ᪮ ।  " 砥,    
         ஢  筮    ᯮ -
          .
                筮 ﭨ ,  ஥  -
           ਢ祭  ਥ. ଠ -
               MARK ( 1)  砫 ᨬ ।
         室 SPACE (0). ᫨  室  ﭨ SPACE  -
         祭 ਮ ६ 襬,  祬 ६,  ஥  ⨫
           祭  ⮢ ᨬ,  ⮣  ਬ,  -
           ﭨ  BREAK.     ASCII  ।⠢
         BREAK -  砥,     "㬥ૠ"    த⥫
         ஬⮪ ६,  ⠢ BREAK.



                                      - 8-4 -
                     ஫  ⭮  㦥 訡

               㯮,   ஫ ⭮   -
         㦥  訡.  ਬ,  ᫨ ࠭ ஢ઠ  ⭮,
           ⠭ ⠪ ࠧ,   饥 ᫮  
         ⥪饬  ᫮    (⠪   ᯮ 
         ஢ન  ⭮).   ਥ ⭮  
          ࠢ  ⮬ ஫ ⭮.  ᫨   ࠢ,  
         ਥ ᮮ頥,     訡 ⭮.   -
         ⮪ 㦥 訡 ।⢮ ஢ન  ⭮ -
         砥  ⮬,    ⮫쪮 㦨 訡,  -
            ⢥ .  ਬ,  ⮢  0100
         0001 0 (ASCII A),  । ᥬ ⠬  ஢મ   -
         ,   (᪠,- 㬠  )  0100 01110
         (ASCII G),  ਥ    㦨 訡, ⠪  ஢-
           ⭮ 믮.

                       ᯮ짮 ⠭ RS-232C.

                㯮    ।  ⥫䮭   
         㫥.   ᬮ  ,    ᮭ쭮    ।-
         ⠢塞   㫨 ।⢮ ஢ 殮,  ᨣ,
         ।  ⥫䮭  筮  ⮭ ࠧ筮
         .  ன⢮,  ஥ 室  ன -
         쭮   ।饩      -
          ,   뢠  (/).  
          ८ࠧ뢠 ଠ   ।⠢ "殮/
         殮" ஢ 奬  ⭮,   ⠪   ᨣ
         (ਬ,  ⮭), ।祭  ।  ⥫䮭 -
         .  ⠭, ⠪  RS-232C (뤢 樠樥 -
         ஭ ஬諥,  EIA),  뢠 ⮤  ଠ樥
             (,    ᮮ⢥⢨  ନ 樠樨
         EIA,  " । ,  DCE")   吝  ன
         ᮭ쭮    (  "筠   ࠡ⪨
         ,  DTE").   ࠡ   ०: 㯫-
             㯫᭮.   㯫᭮ ०   -
          । ⮫쪮   ࠢ   ஬⮪  -
         ,         ६        ࠡ    㯫᭮  ०
         ⢫ ᨬ ஭ .  ⠭ RS-232C
         ᯥ稢 ࠢ ⠪ ᨣ,  "--।
         (RTS)"  "- -। (CTS)",    ᯮ-
            न樨  ।  ਥ . ନ
         "஢ ⠭ 裡" ᯮ  ᠭ -
         樨 ਥ  । ᨣ.     㭪 8-3,
         ⠭ RS-232C ᮮ⢥   ᮥ⥫,  ᯮ-
           裡 ᮭ쭮   .
             ᬮ   ,   ᯮ짮   ⢥ ਬ
          ।  (DCE),  㣨 ன⢠,  ⠪  
         ""  ਭ  ᮮ⢥饩 奬,  ⠪  -
          묨  ᮭ ஬  १ ᫥⥫
         .   ࠧ,  ⮩   㯮   ਥ-
           ࠢ ⥯   ᫥⥫쭮 ਭ  ⠪    
         ᫥⥫쭮 "".

                                      - 8-5 -
                                      
                      ⠪  Ŀ   DCE
                Ŀ                             Ŀ  
                     2ďĴ 2   
                    3ďĴ 3     
                     4ćĴ 4   
                    5ĎĴ 5     
                     6ăĴ 6            
                 7Ď騩Ĵ 7Ŀ   ⥫䮭
                    8ĄĴ 8         
                   20ĒĴ20             
                    22RIĴ22              
                    .                              .     Ŀ   
                     .                              .             
            Ĵ      .                              .            
    RS --->                                            
                                            
        Ŀ                                                    
                                                                    
                                                                    
     Ŀ                                            Ŀ
                                                                      
                                                 
        PC                                              
                              .8-3.  RS-232C.
          - 筠  ࠡ⪨ ; RS -  RS-232C;
          - । ;  - ਥ ;  -   ।;
          -   ।;  - ⮢  । ;
          - ⥪ ᨣ ਥ ;  - ନ 
         ⮢;   -   । 


                       ࠢ ⮪   XON/XOFF

                ஢  ⠭  裡  ।⢮
          ᨣ RTS/CTS,   ⨦ ࠢ ⮪ 
         ᯮ짮 ணࠬ ᯥ祭  ਬ  ᯥ樠
         ࠢ騥  ᨬ  ASCII  (Control-Q/Control-S  XON/ XOFF).
         ࠢ ⮪ 室  ⮣,    ।-
         稪    ਥ   ন ᪮ ।  
            ନ஢  ஭  室-
           ⠭   ६,  ॡ㥬  ⮣,  ⮡ ⠢
         ஭ ᬮ  .
             ।,  ਥ    ࠭  㯠-
          ᨬ.  ⮫쪮  ᫥  뢠, -
           ᫠ ᨬ XOFF  ।稪,  ᨣ,  
         ।   ਮ⠭. 筮, ਥ  -
          祭 XOFF  ४ । ᨬ.  ⥬,  
         ਥ ࠡ⠥ ᨬ (᪠,     䠩  ᪥)
           ᢮,  ⮣ 뫠 ᨬ XON,  뢠騩,
          ।   த.   奬 ࠢ ⮪
         ப ਬ   .  設⢮ 吝  ண-
         ࠬ ।⠢  㯫᭮ 裡  ࠢ -
         ⮪, ᭮  ਬ ᨬ XON/XOFF.



                                      - 8-6 -
                 ᫥⥫   窨 ७ ணࠬ

              ᫥⥫쭮   ⥬ MS-DOS ⭠
          ᫥⥫   ᨭ஭ 吝  (-
             㤥 뢠  ᫥⥫ ஬).  
         ᭮  Intel 8259 UART (㭨ᠫ ᨭ஭ ਥ-
         稪),   RS-232C  祭   ,  -
          ᯫ,  ணࠬ ।⢮  ॣ஢.  -
         ய        ॣࠬ १ ࠭ ।
           /뢮.
             ᠫ ᨭ஭  ਥ।稪 Intel 8250 ࠢ-
          ।⢮    쬨⮢ ॣ஢   -
           .   ॣ 㯭 ணࠬ १  -
         .   ⮢  ᫥⥫쭮,  ⮬  筮
             ࢮ .   ⠪ ⥭   
         ᫥⥫쭮 .  ᮭ쭮  IBM PC 
         ᫥⥫ ⠬ COM1  COM2 ᢮   -
          3F8h  2F8h ᮮ⢥⢥. ,  ᫥⥫쭮 -
          COM1  ॣ   3F8h, ᫥騩 3F9h  ⠪ -
         .
              8250   ᥬ 䨧᪨ ॣ஢   뢠 
         浪 ⠭ 砫쭮 , 稭   .
             㭪 8-4,       -
         ,     ,   ਥ  ॣ  
         ॣ ࠭ । (THR),   ᯮ  ࠭-
           ।  ਭ ᨬ.  ⥬ ᫥
         ॣ ࠧ襭 뢠,   ᯮ  ࠧ-
           ஢ 樨 뢠 ᫥⥫  -
         ஬.  ⨩ ॣ, 뢠 ॣ஬ 䨪樨 뢠-
         ,    ᮤন    ᮮ饭     㭨ᠫ쭮     ᨭ஭
         ਥ।稪   筮 뢠.  ⥬ ᫥ -
          ࠢ ,  ᯮ㥬  ⠭ ࠧ
         吝  ࠬ஢,  ⠪   ᫮,  ⢮ ⮯
         ⮢,  ⭮  ᪮ ।  .  ॣ - 
         ॣ ࠢ ,  ᯮ  । -
          ᨣ,  ⠪  DTR (ନ ⮢)  RTS  (  
         ।). ,  ᫥ ॣ, ॣ ﭨ -
           ॣ ﭨ , 뢠 ᮮ⢥⢥ -
            .
               ॣ ਬ ⠪  ⠭  ᪮
         ।    .    ।    । 
         16-⮢ ⥫ ⠪⮢ , ᯮ㥬  ᫥-
         ⥫쭮  (1.8432   設⢥ ⥬ MS -DOS). -
         祭 ⥫   㫥

                                 1,843,200
             ⥫= ------------------------------
                       16  ᪮ ।  

             ⮡ ⠭ ᪮ ।  ,    த-
          ᫥饥:
             1. ⠭  1  稬   ॣ  ࠢ
                  (  뢠 ⮬ 饫 㯠 ⥫ 
                DLAB).
             2. 㧨 訩  訩  ⥫ ᮮ⢥⢥ 
                ਥ   ॣ ࠧ襭 뢠.
             3. ⠭ DLAB  0  ᯥ祭 ଠ쭮 ࠡ 㭨-
                ᠫ쭮 ᨭ஭ ਥ।稪.


                                      - 8-7 -
          A     ਥ /ॣ ࠭ ।
          B     Ŀ
       (COM1-3F8 1.                   2.
       COM2-2F8)

                 ࠧ襭 뢠
          B+1   Ŀ
                 0  0  0  0  3. 4. 5. 6.
                
                ⠭   1  ࠧ襭

                 䨪樨 뢠
          B+2   Ŀ
                 0  0  0  0  0        7.
                
                                    3-⮢ 䨪 뢠
                                     110 = ﭨ 
                                     100 = ਥ 
                                     010 =  । ᢮
                                     000 = ﭨ 
                 ࠢ 
          B+3   Ŀ
                 8.       9.     10.  11.  
                
                      BREAK: 1 ⠭   SPACE
                 ࠢ 
          B+4   Ŀ  a. - OUT2
                 0  0  0 12. a. b. c. d.  b. - OUT1
                  c. - RTS
                                   13.          d. - DTR
                 ﭨ 
          B+5   Ŀ
                 0 14.15.16.17.18.19.20.
                

                 ﭨ            a. - RLSD
          B+6   Ŀ  b. - Delta RLST
                 a. RIDSRCTS b. c. d. e.  c. - Delta RI
                  d. - Delta DSR
             .8-4.   8250 UART.        e. - Delta CTS

             A -    ॣ
             B -  ; 1. -  7 ;  2. -  0 ;
             3. - ﭨ ; 4. - ﭨ  ਥ;
         5. - ॣ ࠭ । ᢮; 6. - ਥ 
         ࠧ襭; 7. - 0 砥,  뢠 ;
         8. -  㯠  饫; 9. - ⭮:  000=,
         001=⭮, 011=⭮; 10. - ᫮ ⮯ ⮢;
         11. -  ᫮: 10-7, 11-8; 12. - ஢ઠ ⭮ 横;
         13. -   1   뢠 /뢮 ᮭ쭮
         ; 14. - । ᢮; 15. - ॣ ࠭ -
          ᢮; 16. - 㦥 BREAK; 17. - 訡 ஢
         ᨭ஭樨; 18. - 訡 ⭮;  19. - 訡 室 
         ࠭; 20. -   ਥ ⮢;

             ਬ  室   ⠭  祭 ᪮-
          ।  .   ,  ᨬ쭮  -

                                      - 8-8 -
          ᪮ ।   1/16  ⠪⮢  ,  
         115,200   ( ⮩ ᪮ । ⥫ ࠢ 1).  
         । ⥪  ⮣,  ⥫     -
         .    ⠭ ᪮ ।     ⠪ -
         짮 뢠 BIOS 14h.  ᬮਬ ਬ BIOS -
           ⮩ .

               ࠢ塞 뢠ﬨ ᫥⥫ /뢮

                ⮤ /뢮   ᫨⥫-
          ⥬:  㯮冷祭  ࠢ塞 뢠ﬨ.  冷-
         祭 ⭮  饩  ஢થ  ﭨ  ॣ
         ன⢠ /뢮  樠樨 ॡ㥬 ࠭樨. 
         㯮冷祭 /뢮 ணࠬ, 訢 ᨬ ,
         ⭮ 뢠 ﭨ ॣ  ன⢥ /뢮-
            ,    ,  ᨬ 㯥  
         (     ,   ணࠬ  ,   "६ -
         ").  ﭨ 㪠뢠,   ⮢  ࠡ
         ᨬ, ணࠬ 뢠   ᮮ⢥饣 ॣ -
         ன⢠ /뢮.  室 ᫥⥫쭮 ",   
            ⮢,  ⥬ " ᯮ  뢥 ᨬ-
           ன⢮ / 뢮.   ࠧ, 쭥襥 -
           ணࠬ  ਮ⠭   襭 믮
         樨 /뢮.
             让 ஡   㯮冷祭 /뢮 १ -
         㭨樮   ,    ᪮  ।  
         300    ணࠬ 㤭 - ᤥ  砥 ᨬ
         ஬  ⮡ࠦ   ࠭.  ᬮਬ ᫥騩 ਬ.
         ।,     ⠥ ᨬ  ᪮ 300   
         ᫥騥 吝 ࠬ:   ᫮ 7 , ஢ઠ  -
            ⮯ ,    ⮢ ⮬, -
           10   ᨬ.     30 ᨬ-
            ᥪ㭤. ᫥ ⥭  ᨬ  ணࠬ  
         1/30 ᥪ㭤  믮 㣨 権. ᫨     
          - ᨬ,   ६   ᭮ 
         㯮冷祭 .   ந,   ᪮  
         9600 ?  ६ ࢠ  ᨬ ᫨誮   -
          ᨬ  ࠭ ᯫ,     ஢
         ᯥ樠 ᨬ  㫨஢ ନ.
              室,  ᭮  ࠢ 뢠ﬨ,  ணࠬ
         ।⠢    뢠  ன⢠  /뢮
         㯠 ।⢥  業ࠫ ,   -
          믮 ᢮ ࠡ,  뢠  ன⢮. 
         ன⢮ ⮢  /뢮,  ᨣ  ⮬ 業-
         ࠫ쭮  ।⢮ .  稢  ᨣ,
         業ࠫ  ࠭ ᢮ ⥪饥 ﭨ  뢠
         ணࠬ  㦨  뢠,   ன ࠭ 
         ⠡ ஢ 뢠.   ணࠬ 믮 
         /뢮,  ⥬ ⠭ ﭨ 設  -
           ࢠ ணࠬ.  뢠 ॣ ᨬ, -
           㭨樮  ᮭ쭮 .  ࣠-
          -    祩    (),    
         ᯮ짮   ணࠬ ࠡ⪨ 뢠,  
          뢠 ᨬ  㭨樮      ࠭
           ᫥饩 㯭 祩   .    -
             뢠  ࠭  ᨬ ࠩ஬
         뢠  । 㯫 ᫥饣 ᨬ.   ᫮

                                      - 8-9 -
          筮   믮  ⪨ ६  -
         ࢠ      㯠騬  ᨬ    ᪮ ।
         9600 .  ५ ⮣ ⮤ 砥  ⮬,  ६ -
         ࠡ⪨  ணࠬ ᨬ, ࠭  ,  -
          祭. 筮,   ९ ,  
         ஡    襭  㢥祭  ࠧ. ᫨
          ᯮᮡ  祭 ,     ९ 
          ᯮ짮 ࠢ ⮪   XON/XOFF.
               㦤   祢,   ࠢ塞
         뢠ﬨ ୠ   ᯮ짮 ࠢ ⮪ 
          XON/XOFF, ।⥫쭥 㯮冷祭 裡.

                       뢠 ᫥⥫쭮 

             ᫥⥫   ᮭ쭮   
         ணࠬ஢  뢠  ࠡ  業ࠫ쭮  
         直  ࠧ  ⮫쪮 ந室    ᮡ⨩ (ᬮ
         㭮 8-5). ᠫ ᨭ஭ ਥ।稪 ᢠ-
          ਮ    ᮡ⨩.  ⠡ 8-1 -
           뢠.
                                                          8-1
                       뢠 ᫥⥫쭮 
         
             ਮ    䨪 뢠
         
                1         ﭨ ਥ  (RLS)
                2         㯭   ਥ (RDA)
                3          ࠭ । ᢮ (THRE)
                4         ﭨ  (MS)
         

                ASCII
             Ŀ        Ŀ
                        ࠧ襭    1 2 3 4  
                                               뢠    Ŀ 
                                                              
                                                                      
                                                                      
                                        䨪        Ŀ 
                                          뢠          
                     ᫥⥫                        
                               Ŀ                 
                                                       
                                                     
                                                      
                                                     Ŀ
                           뢠  8259A        

                  .8-5. 뢠 ᫥⥫쭮 

             ⨥ 襣 ਮ    뢠  "ﭨ
         ਥ  "  (RLS),  ஥ ࠡ뢠 ⥭ ॣ
         ﭨ . 뢠 RLS  ,  ந室 -
           ᫥ ᮡ⨩:

             -   ⪫砥  (᪨ 0)  ਮ ६ 
               ॡ㥬  祭 ᨬ.

                                      - 8-10 -
             -   祭  ⮣,    ⠭ ।騩 (訡
               室  ࠭).
             - 訡  ஢થ  ⭮.
             -  ⠭ ᨬ  祭 ⮢  㦥
               ⮯  (訡 ஢ ᨭ஭樨).

             ⥬ ᫥  뢠  "㯭      ਥ"
         (RDA),  ஥   ⮢ ᨬ    ⥭  
         ਥ ୮ ॣ.     襭 ⥬ -
         뢠 ᨬ  ॣ.
             騩 ਮ   뢠 "ॣ ࠭ -
          ᢮" (THRE).  ᫥   뢠,  
         ,   ॣ, ࠭騩 ᨬ, ।祭  -
          (    ,    ॣ ਥ ),
         ᢮.  뢠  ࠡ뢠     ॣ 
         ⥭  ॣ 䨪樨  뢠.  室  㣮
         ⮤  ⮣ 뢠, ⠪    १ 뢠-
          㭨ᠫ쭮 ᨭ஭ ਥ।稪 ᮮ頥, 
          ।  , ,  ଠ  -
         .
                ਮ    뢠 "ﭨ "
         (MS).   ,  :

             - 砥 (뫠) ᨣ "  ।" (CTS).
             - 뢠  ᢮  ⮢ ⠭  " 
               ⮢" (DSR).
             - 砥  ᨣ,  ⠭騩  " "
               (RI)   1.
             - ।  ᨣ  ७ ( ⮭,    ,
                뢠    ⢥砥), ⠭ 
               "। ᨣ ਥ " (RLSD)  1.

         뢠 ﭨ     襭 ⥭ ॣ
         ﭨ .
              뢠      몫 㠫쭮
         ⠭ ᮮ⢥ ⮢  ॣ  ࠧ襭  뢠-
         .  ᫥⥫쭮-ࠫ쭮   IBM (⠪ 
           ᨭ஭   IBM)    OUT2   ॣ
         ࠢ    ⠭  1  ⮣,  -
          㭨ᠫ쭮 ᨭ஭ ਥ।稪  
         業ࠫ .     뢠,  ᫥-
         ⥫  ᮡࠥ  ᮣ᭮ ਮ  ࠢ -
         뢠  襣  ਮ   ॣ 䨪樨 뢠.
          ४頥 ⢥  ᫥騥 뢠 ࠢ 
         襣 ਮ   ,   ।,  ⥪饥 
         㦥 ணࠬ 㦨  뢠. ணࠬ㥬
         ஫ 뢠 8259A.
               ⥬  MS-DOS  業ࠫ     (ய
         8086) ।⢥  ਭ  뢠,  㯠騥  
          ।,  ⠪  ᫥⥫ . 뢠-
           ᭠砫 㦨 稯 ணࠬ㥬 -
         ஫  뢠  Intel 8259A.  8259A   "ਥ騪"
         業ࠫ쭮 .  ஫ 8259A,    ணࠬ㥬
         ன⢮, ਭ  쬨 ࠧ 뢠   -
         ஢ (஢) 뢠 㠫쭮.  8259A ⢥砥
            ᪨஢  ࠧ襭 뢠  ࠢ-
           業ࠫ쭮   ᫮,    㣮

                                      - 8-11 -
         뢠 襣 ਮ  㦨  饥 ६.
              ஫ 8259A ᢠ ਮ?      㭨-
         ᠫ ᨭ஭ ਥ।稪  ᢮ ⮤ ।
         ਮ⮢ 뢠 ᫥⥫쭮 , 8259A 
         ᢮ 奬 ᢠ ਮ⮢ 뢠. ᫥⥫-
            ⮫쪮     ।, 
          ࠢ 뢠 ஫ 8259A.   ன⢮
         ⪮ ᬮ஢  ᮥ ஢  ࠧ묨 室-
         묨 ன⢠, 묨  室 ன⢠  -
         뢠 (IRQ) ஫ 8259A.  ⮬, 筮   IRQ,
         ᢮ ⭮ 뢠.  㣮 ࠪ⨪, -
           IRQ 뢠,    뢠, ᯮ㥬
          饭  ⤥쭮 뢠.   ᮭ쭮 
         IBM PC   ࠢ 쬨  IRQ.    -
         ,  業ࠫ  ᯮ    ⢥ -
           ⠡,  ⭮  ⠡ ஢ 뢠 (-
             砫 ),   ᮤন  ணࠬ
         ࠡ⪨  뢠.    ஫ 8259A 뢠
         訥 ਮ   IRQ,  ன⢠, ॡ騥
         ᨬ쭮 ,    IRQ.  ࠧ, ⥬-
          ⠩  IRQ0,   IRQ1  ⠪ .
             ᬮ   ,   MS-DOS 3.3 ন  㭨-
         樮 ,  COM1  COM4,  প  砥 祣
         ஬   ࠩࠬ  ⨬  ,    
           ন  ୮    ⮫쪮 㯮冷祭 -
         /뢮.      㥬  ࠢ塞묨 뢠ﬨ
         ᫥⥫ /뢮, ⠫ প ⥬ MS-DOS
         㭨樮 ⮢  ⭮   .
              ᮭ쭮    IBM  PC  ⮫쪮   ,
         COM1  COM2,   ।  IRQ    뢠.
         㣨  ᫥⥫ ,  ⠪  COM3  COM4  
         ᯮ짮  ࠢ塞 뢠ﬨ /뢮 ᫥ -
         ⠭  ஢    ᢠ ஢ IRQ ।⢮ ᮮ-
         饩 ⠭ ६祪.  ⮫쪮 ⠭ ⥭ 
         IRQ, ணࠬ஢ ⮢ COM3  COM4 믮 ⠪  -
         ࠧ,    ⮢ COM1  COM2.  ⮣,   ⮩ 
          㤥 ᬠਢ ⮫쪮  COM1  COM2.
              ᫥⥫ ⠬ COM1  COM2 ᢮  ᮮ⢥-
         ⢥ IRQ4   IRQ3,     뢠 12  11 (-
         ).   稬,   뢠   , ⠪
           㭪樮 맮 DOS (।⢮ ணࠬ 뢠-
          21h)  㭪樮묨 ࠬ 35h  25h    ᯮ-
          ᮮ⢥⢥  祭  ⠭ ஢ 뢠-
         .
                ᪮쪮 ⮢,    室 㯮
         । 砫 ࠧ  ணࠬ஢ ᫥⥫  -
         ⮢   ࠢ塞  뢠ﬨ  /뢮. ய
         8086 ⮬᪨  묨  뢠   ६,
            । ࠢ 㦨饩 ணࠬ ⥪饣
         뢠.  ᬮ  ,  ஫ 8259A  ६ -
          뢠 ন ᫥騥 뢠 ⮣  
         襣 ਮ, 뢠 襣 ਮ   -
          ⢥ত  ਥ, ᫨ ⠭ 䫠 뢠. -
              ࠧ訬 뢠  砫  㦨-
           뢠    ᫥⥫쭮  ,   
          ⥬ 㭪樨,  । 뢠ﬨ  (⠪  
         ⥬ ⠩,    ஫ ᪠),  㦨

                                      - 8-12 -
          .  , ⮬, ᯮ  STI (⠭ 䫠
         뢠)  ४ 뢠  ⮫쪮 㦨 -
         ணࠬ ਬ  ᥡ ࠢ.  ।⠢  
         ⠩,      ஫ ᪠ 뢠 ணࠬ
         㦨 ᫥⥫쭮  ,    㭪樮஢
         㣨 ன⢠.
               ᬮ ᮮ ஫ 8259A  ⮬,  ࠡ⪠
         ᫥⥫쭮 뢠 襭?   㦥  ண-
         ࠬ  ࠢ 8259A  " 뢠" (EIO) -
         । 饭 ࠢ 業ࠫ쭮 .  ᬮ 
         ,    ᯮᮡ ॡ EIO  ࠧ IRQ, 
         奬 ਮ,  ᯮ㥬  ᮭ쭮 , -
         筮 ࠢ ஫ 8259A ,   ⭮  "ᯥ-
         ᪨" EOI ( 20h).   "ᯥ᪨" ⥪  
         ⮣,      ।,  뢠 㦨-
         .    ஫,  㦨 뢠
         襣 ਮ 襭.  ࠧ蠥 㦨 뢠-
          ⮣   襣 IRQ.

                        ணࠬ஢ ஫ 8259A

             ࠢ塞 뢠ﬨ /뢮 ॡ ࠢ쭮  -
          ஫ 8259A.   ⨢ 砥, 뢠, -
         㥬 ᫥⥫ ஬,     ਭ -
         ய஬  8086.   ࠧ,   ᭨ ᭠砫 ,
            ணࠬ஢ 8259A.
                   ᮭ쭮  ,  ஫
         8259A ணࠬ ।⢮      (ॣ஢).
           ᯮ   20h  21h  /뢮 ᮮ⢥-
         ⢥ (㭮 8-6).   ᮬ 21h ᯮ ᪫-
         ⥫쭮  ᪨஢ 뢠.  뢠 ᪨ (..
          ਭ)  ⮬ 砥,  ᫨ ,  ᮮ⢥騩  ᢮
         IRQ  ( ࠢ ,  祬 ᠬ ࠢ  ᢮
         祭 IRQ0),  ⠭   .    
         20h  ᯮ   ࠢ  뢠 ஫
         8259A.    ⬥⨫ ࠭,  ⥬ MS-DOS   -
          20h   .
                                      뢠  CPU Ŀ
                                                          
                                       
                        Ŀ 
              20h                           뢠   
                         EOI=20h
                                       20h                       
            8259A                                          IRQ
                        Ŀ 1=a.        
                          0  0  0  0  3. 4. 5. 6. 0=b.
                                     
           ணࠬ㥬 ஫ 뢠
                                        
                                                    ᫥⥫
                                           COM2: 
                                        COM1: ᮭ쭮
                                                      
               .8-6. ணࠬ㥬 ஫ 뢠 8259A

         a. - ᪨஢ 뢠; b. - ࠧ 뢠;

                                      - 8-13 -

              ⥬  MS-DOS  ࢮ  ᫥⥫쭮    (COM1)
         ᢮  IRQ4 (뢠  12),    ६  ன
         (COM2)  IRQ3 (뢠 11).   㪠뢠 ࠭,  
         COM3  COM4  ࠡ뢠 ⠪   ࠧ,  ।,
             IRQ,  ᢮ ⨬ ⠬  ६ -
          (⮫쪮  COM1  COM2  ࠭  ᢮ 
         IRQ).  ⮬,  ஫ 8259A   ணࠬ஢ 
         祭 뢠   COM1 ⥭   21h  ⭮
          ᮤঠ, ᪨ 㬭  EFh. 뢠 -
          COM1   ᪨஢  ⮫쪮 ७ ।
         ⢨,  ᪨ ᫮  10h,  ᪮ 㬭-
         .   ࠧ, ஫ 8259A   ணࠬ-
             ࠧ襭  뢠   COM1   ᫥饣
         ࠣ ணࠬ

         IN     AL,21H       ; ⥪   뢠
         AND    AL,EFH       ;ࠧ IRQ4
         OUT    21H,AL       ;᭮   ⭮

              뢠    COM1 ᭮ 몫,  8259A 
          ணࠬ஢ ᫥騬 ࠧ

         IN     AL,21H       ; ⥪  뢠
         OR     AL,10H       ; IRQ4
         OUT    21H,AL       ;᭮   ⭮

              ணࠬ஢ ன,  믮塞 뢠
         ᮤঠ ॣ  ᫥饩   ⭮  ᮮ⢥-
           ⮬, ४  ⮣,    -
         蠥 ।⥫쭮 ⠭ ⮢.
             ஬ ࠧ襭   饭 ਥ 뢠,  ஫
         8259A   நନ஢  襭 ࠡ⪨ 筮
         뢠.   㪠뢠 ࠭,   믮 ࠢ
         20h   20h  /뢮 ᫥騬 ࠧ:

         MOV      AL,20H    ;  뢠
         OUT      20H,AL    ;  20 ஫ 8259A


                 ᯮ짮 । MS-DOS  ணࠬ஢
                              ᫥⥫쭮 

             ᫨    祭  ॣ ᫥⥫쭮
         , ணࠬ஢ ᫥⥫쭮  砥  -
          ࠢ ⠭ ॣ஢,  ࠧ襭 뢠  -
          ணࠬ ࠡ⪨ 뢠.   㦥 ᪠    ⮬,
           ணࠬ஢  ஫  뢠.    ⮢ 
         ᬮ७ ⠫ ⠫ ணࠬ஢ ᫥⥫쭮
         .

                       ࠩ, TSR  ⮭ ணࠬ

              ᪮쪮 ᯮᮡ 祭 㯠   ᫥-
         ⥫쭮   ⥬ MS-DOS.    ࠢ ᫥-
         ⥫ ⮬ १ ⠭ ࠩ ன⢠, 믮-
         騩  /뢮 १  .    6   "⠭

                                      - 8-14 -
         ࠩ ன"   ᬠਢ  ⠫  ࠧࠡ⪨  ⠪
         ࠩ.    ⪮ ⠪ 室  প,
         易  㯮  ࠩ १ DOS,  ⮨⢮ , 
           ணࠬ,     襬 ࠩ,    -
         짮.  ᫨  ࠫ  ᯮᮡ,    ᯥ 
         ࠩ  IOCTL ⠪ ࠧ,   吝 ࠬ,
         ⠪  ᪮ ।     ᫮,   -
         ⠭ 맮 DOS IOCTL ( 㭪樨 DOS 44h).
              室  ⠭ ணࠬ TSR (襭
          ⠢ १⭮),   ᯮ   -
          BIOS RS-232C (14h)   ᢮ 㭪樮쭮  -
         祭 ࠢ塞 뢠ﬨ /뢮.  ⮤ ⠪
           ணࠬ   ᫥⥫쭮  ।⢮
         襣  ࠩ  TSR   ६   ⢥ত 室
         ⠭ ॣ  ᯮ짮  㭨樮 㭪-
         権 TSR.  堭 㯠 㤥 ⠪ ,  맮 㭪樨 BIOS
         RS-232C,   ᪮ 襬.
             ⨩ ⮤  砥   ࠧࠡ⪥ ⮭ ணࠬ,
          砥  ᥡ 㦥 ணࠬ ࠡ⪨ 뢠-
           ᫥⥫쭮  .    ⮬ 砥,   ᪥ ⮩
         ਪ ணࠬ,    ⠭ ࠡ稪 뢠
         ᫥⥫쭮       ᫥ ४饭 ࠡ
         ணࠬ.  ᯮᮡ ᮧ  ࣠樨 ᮪᪮-
         ⭮ (9600 ) ᫥⥫쭮 /뢮  
           襣 ⢠ ⪮  ࠢ   㣨-
          ⮤.
             ᨬ   ⮣,   室    롥,  ࠢ
         ᫥⥫ ⮬ ⠭ ⠪ .    㤥 -
           ⠫.

                   ᯮ짮 BIOS  ᫥⥫쭮 裡

             , ⭮, ,   ॠ 䥪⨢ 
         /뢮 १ BIOS.  ᮦ, . BIOS  ।⠢ 䥪-
         ⨢   ࠢ  ᫥⥫  ஬.  
         ணࠬ஢  ᫥⥫쭮    BIOS  㭪
         RS-232C, 㯭 १ 뢠 14h.  ᮦ,  㭪
         ন  ⮫쪮 㯮冷祭 /뢮,     祭
         䥪⨢  ⪮,  ࠭.   , 
         㭪 쭠  ⠭ ⠪ ࠬ஢ 㭨樮
         ,  ᪮ ।  ,  ᫮  ⮯ ,
         ᯮ騩 뢠 14h BIOS.

            ⠭ 㭨樮 ࠬ஢  ᯮ짮 BIOS

               ᯮ짮  ᫥⥫쭮  /뢮  BIOS
           ⮫ 䥪⨢  ࠢ塞 뢠ﬨ 室. 
         ᬮ,   㭨樮 ࠬ (᪮ ।  
         ,  ᫮, ⭮  ⮯ )   ⠭-
           ᯮ짮 㭪権 BIOS RS-232C, 㯭  뢠-
          14h.
             뢠 14h  㫥   ⠭ ࠬ  ᫥-
         ⥫쭮 .     室  DX.    DX
         㪠뢠   COM1,    ६,      㪠뢠  
         COM2. ࠭ 㭨樮 ࠬ ࠢ  ॣ
         AL  㯠 ଠ,   㭪 8-7.  -
         ।  ।  3-⮢  祭,  ⭮ - 2-⮢

                                      - 8-15 -
         祭,  ᫮ ⮯ ⮢ -  ⮬     ᫮  -
         2-⮢ 祭.  ⠡ 8-2  ஢ 祭
          㭨樮 ࠬ. ,  ᪮ ।-
           ࠩ஢  १    COM  ⥬ DOS 3.3  ⨣
         19200 ,    ६,   ROM-BIOS ࠭稢 9600 .
          ⨦ ᪮ ।,   㪠  ⠡ 8-2, 
          ᯮ짮  ணࠬ஢ ᪮ ।-
           㭨ᠫ쭮 ᨭ஭ ਥ।稪,  ᬮ७
         ࠭.
                                   
                 گ।  - a. ᫮ 
                                        
                 Ŀ
                                         
                 
                           ⭮   ⮯-   ᫮
                 Ŀ  Ŀ   Ŀ    Ŀ
                  000  110   00     0  1     10  7  
                 Ĵ  Ĵb.   Ĵ    Ĵ
                  001  150   10     1  2     11  8  
                 Ĵ  Ĵ       
                  010  300   01c.
                 Ĵ  Ĵ
                  011  600   11d.
                 Ĵ  
                  100 1200 
                 Ĵ
                  101 2400 
                 Ĵ
                  110 9600 
                 Ĵ
                  111      
                 
           .8-7. 㭨樮 ࠬ,  㯠  
                    ଠ, ॡ㥬 뢠 14h BIOS

            a.- ⮯ ; b. - ; c. - ⭮; d. - ⭮


                                                          8-2
                      ஢ 祭 㭨樮
                          ࠬ஢  뢠 14h
         
          ࠬ  ᪮ 祭  ஢  祭
         
          -            110                    0
         ।            150                    1
                                 300                    2
                                 600                    3
                                1200                    4
                                2400                    5
                                4800                    6
                                9600                    7
                                             
         ⭮                                 0  2
                              ⭮                1
                               ⭮                 3

                                      - 8-16 -

         ⮯             1                     0
                                  2                     1
                                             
          ᫮              7                     2
                                  8                     3
         

             ⮢ 㯠    ࠬ஢ .  ਬ,
         ᫨  ᯮ  ᮪ ஢,  ⠪    ,  
          १ ᫥騬 ࠧ:

         pckd_commparams = (baudrate << 5) | (parity <<3) |
                           (stopbits << 2) | (wordlength);

          ᯮ짮   ᤢ   ࠧ來 ᪮
         ᫮  몠  .  ६  baudrate,  parity,  stopbits  
         wordlength    ஢묨 祭ﬨ 㭨樮
         ࠬ஢  ᫥  ⠡ 8-2.  ⮫쪮 ࠬ
         ਬ ⠪ ଠ,   뢠 BIOS 뢠 14h. -
         짮 㭪樨 int86  Microsoft   
         ᫥騬 ࠣ⮬ ணࠬ:

         #include <dos.h>
         #define  BIOS_RS232  0x14
                           /*  뢠  㦨 BIOS */
         static union REGS xr, yr;
             .
             .
             .
         xr.h.ah = 0;        /*  㭪樨  맮 BIOS RS-232 */
         xr.h.al = pckd_commparams;             /* 吝 ࠬ */
         xr.x.dx = port_number;  /* 0 砥 COM1, 1 砥 COM2 */
         int86(BIOS_RS232, &xr, &yr);               /* ᤥ 맮 */
             .
             .
             .

              Microsoft C ᨨ 5.0 砥 맮 ணࠬ
         BIOS: 㭪 _bios_serialcomm 㦨 䥩ᮬ  襩  
         ணࠬ  뢠 BIOS 14h.  ਬ,  ᫨    롥
         8-⮢    ᫮,  1 ⮯ ,  ⢨ ஢ન 
         ⭮  ᪮ । 300 ,  筮 맢

         _bios_serialcom(_COM_INIT, COM1, (_COM_CHR8 | _COM_STOP1 |
                                           _COM_NOPARITY | _COM_300) );

         맮 㭪樨 _bios_serialcom

         status = _bios_serialcomm(service_code, port_number, data);

         ਭ  ࠬ,  ࠦ 楫    頥
           ﭨ  ⮣    ⨯   樨 १
         ॡ㥬 樨.  ࠬ service_code ᯮ  -
           ॡ㥬  樨    port_number ਭ 祭 0
         (COM1)  1 (COM2).  祭 data   ॡ㥬  㣨.
         ஡ ᯮ짮 ⮩ 㭪樨   Microsoft C 5.0

                                      - 8-17 -
         Run-time Library Reference.

                     祭  ᫥⥫쭮 

             㣨  ஥ ᢮⢮ BIOS  ,  
         ⠯ ᠬ஢  祭 (POST)  ஢ 稥
         ᫥⥫ ஢ COM1/COM2 ( MS-DOS 3.3 ন-
           COM3  COM4, BIOS ᯮ ⮫쪮 COM1  COM2) , ᫨
         室   㣮,   ࢮ ॣ   
               ,  稭  ᬥ饭  ᥣ
         14h.     ᮭ쭮  20-⮢ 䨧᪨ -
          ࠢ 10h * 16-⮢ ᥣ + 16-⮢ ᬥ饭,   ᫨
          ⥬ MS-DOS   ᫥⥫ , 祭
          COM1,  ⮣ ᫮  䨧᪮ 祩 400h 㤥 ᮤঠ
         3F8h (᫨ ⠪   COM2, ᫥饥 ᫮  祩 402
         h 㤥 ᮤঠ 2F8h).   ࠧ,    
         ᫥⥫쭮   ⮩   BIOS   ᬥ-
          0  ᥣ 40h.  ਬ,   Microsoft C   ⠭-
             ᫥騬 ࠧ:

         #define BIOS_DATA ((short far *)(0x40000L))
         static short comport,    /*     */
                port_number;      /* 0  COM1, 1  COM2 */
            .
            .
            .
         comport = *(BIOS_DATA + port_number);

         if(comport == 0) /* ᫥⥫   ⠭ */
         {
             printf("᫥⥫   ⠭!\n";
             exit(1);
         }

               樠 ६ comport,   㣨  -
          ᫥⥫쭮    㯭 ਡ-
          ᮮ⢥ ᬥ饭   .   몥   -
           ᯮ짮  ४⨢ ९ #define  ⠭
         ᮢ  ॣ஢.  ਬ, ᫨ 樠 comport,
                 ॣࠬ ᫥⥫쭮
            , ।  ᫥騬 ࠧ:

         #define IER (comport + 1) /* ॣ ࠧ襭 뢠 */
         #define IIR (comport + 2) /* । 뢠 */
         #define LCR (comport + 3) /* ॣ ࠢ  */
         #define MCR (comport + 4) /* ॣ ࠢ  */
         #define LSR (comport + 5) /* ॣ ﭨ  */
         #define MSR (comport + 6) /* ॣ ﭨ  */


              ன  ࠢ塞 뢠ﬨ ᫥⥫
                                    /뢮

             ᫥ 祭        BIOS
           ந ᫥⥫   ⠭ ࠡ稪
         뢠 । 砫 ࠢ塞 뢠ﬨ ᫥⥫-
          /뢮.   뢠  IRQ 뢠  ᫥-

                                      - 8-18 -
         ⥫쭮    ⮣,   ᯮ, COM1 
         COM2.  ⮫쪮  稫  뢠,   
          ⥪饣 ࠡ稪  ࠭ .   ࠧ, ᫥
         室  ணࠬ   ⠭ ࢮ砫쭮  -
           뢠. 㭪樨 MS-DOS 35h  25h, ᮮ⢥⢥,
           ⠭ ࠡ稪   ஢  -
         .    ⮩  楫  Microsoft C  ।⠢  ணࠬ
         _dos_getvect  _dos_setvect. ᯮ     த
          ᫥騬 ࠧ:

         short int_number;    /*  뢠  吝  */
         void interrupt far s_inthndlr(void);
                              /* ⠭ ࠡ稪 */
         static void  (interrupt far *old_handler)()
                              /*   ० */
             .
             .
             .
         /*   ० 뢠  ࠭  */
             old_handler = _dos_getvect(int_number);
         /* ⠭  ࠡ稪   s_inthndlr
          *  뢠  ६  ࠡ稪
          */
             _disaple();
             _dos_setvect(int_number, s_inthndlr);
             _enable();

              ਢ ਬ  ।⠢ ࠡ稪    㭪
         ⨯ interrupt,     祢 ᫮, ᮤঠ-
         騬  Microsoft C 5.0.   ᫥饬 ࠧ த஢,
           ࠧ  ਡ interrupt    ࠡ稪
         뢠 ।⢥  Microsoft C 5.0 (Turbo C  1.5  
         ⠪  ).
                 ᯮ짮 㭪権 _disable 
         _enable.    㭪樨 ᮮ⢥ ᥬ  STI
          CLI.   ࠧ,   몫砥 뢠  ६ 室
             ࠡ稪 ᫥⥫ 뢠  㣮.  
         㣮 ஭,  뢠,  㯠饥  ६  ४祭,
          ਢ  ⮬,   ந ᡮ 業ࠫ쭮 -
         , ⠪   뢠   ᮬ -
         饣 ࠡ稪.
             ᫥ ⮣,   ࠡ稪 뢠  ᢮ ,  
          ⠭ 㭨樮 ࠬ  ࠧ ᫥-
         ⥫쭮  ஢ 뢠.   ⠪  ࠧ-
          ᯮ  뢠 ஫஬ 8259A.  ࠧ 
           뢠   ,     8259A  -
           ⮢.          த   ᯮ짮
         Microsoft C 5.0.

         /* ࠧ蠥 ,    */
         short intmask,  int_enable_mask;
             .
             .
             .
         /* 砥 뢠 㭨樮 .
          * ⠭ 8259A
          */

                                      - 8-19 -
             _disable();
         /* ⠭ ॣ ࠢ  ( =  MCR) */
             outp(MCR, MCRALL);
         /* ࠧ蠥  뢠 ᫥⥫쭮 
          * ( = IER)
          */
             outp(IER, IERALL);
         /* 뢠 ॣ ᪨ 뢠 8259A  뢠 
          * ⭮ ᫥ ᪮ 㬭  _int_enable_mask
          */
             intmask = inp(P8259_1) & int_enable_mask;
             outp(P8259_1, intmask);
             _enable();

              ⮩ 窨 ७ ᫥⥫  筥  ࠡ  
         ࠢ塞 뢠ﬨ ०.  ந室騥 ᮡ  
         ࠡ稪 뢠,   ᥩ ᬮਬ.


                   ࠡ⪠ 뢠 ᫥⥫쭮 

              ࠡ稪, s_inthndlr, 㤥 맢  樨 ᫥-
         ⥫ ⮬ 뢠.        ࠧ
         ਥ ⥬ ᫥ 뢠 ⠪ ࠧ, ⮡ 㣨
         ਮ  (⠪  ⠩)  ࠡ뢠  -
         ய஬.
             騩 蠣 - 䨪 筮 稭, 맢襩 -
          뢠 ᫥⥫쭮 .   祭 ଠ-
         樨    ᮤঠ ॣ 䨪樨  뢠-
           (IIR).    ⮫쪮  ।  稭 뢠,  
         믮  ࠡ,   뢠  ࠧ,  饭
         㭨ᠫ쭮 ᨭ஭ ਥ।稪.
               ᫥⥫  ᯮᮡ ஢  뢠-
            ६,    ࠡ뢠 㣮,  室 ஢-
           0 (᫥ 騩 ) IIR   ᫮. ᫨ 
          ࠢ ,    㣮 뢠   ᫥ -
         .   㣮 ஭, ᫨ 祭  ࠢ , -
         । 뢠 .   ⮬ 砥   ࠢ
         ஫ 8259A ᨣ " 뢠"    ࠡ-
         .    ࠧ,  ࠡ稪  ।⠢  ᮡ ᪮
         横,  த ࠡ뢠 ᫥⥫ 뢠
           ,   ४  㯫.  Microsoft C 5.0
         ࠡ稪   ॠ 

         void interrupt far s_inthndlr(void)
         {
             int c;
             register int int_id, intmask;

         /* 뢠 ࠧ  */
             _enable();

             while (TRUE)
             {
         /* ⥭ ॣ 䨪樨 뢠, IRR */
                  int_id = inp(IRR);
                  if (bit0(int_id) == 1)

                                      - 8-20 -
                  {
         /* ᫨  0 ࠢ 1, ⮣ 뢠  㯠. ᫠
          * ᨣ  뢠 ணࠬ㥬 ஫
          * 뢠 8259A  ⥬ .
          */
                      outp(P8259_0, END_OF_INT);
                      return;
                  }
         /* ᫨  뢠 祭 , ࠧ 뢠
          *  "᢮ ॣ ࠭ ।"
          */
                  if (int_id) >= RXDATAREADY)
                                    turnon_int(THEREINT,intmask);

         /* ࠡ 뢠  ᮮ⢥⢨  䨪஬.
          * 騩 ᯨ᮪ ⠢ ᮣ᭮ ⠭ ਮ.
          */
                 switch (int_id)
                 {
                    case MDMSTATUS:  /* ﭨ ⮢  */
                                       .
                                       .
                                       .
                                      break;
                    case TXREGEMPTY:  /* ᫠ ᨬ */
                                       .
                                       .
                                       .
                                      break;
                    case RXDATAREADY: /*  ᨬ */
                                       .
                                       .
                                       .
                                      break;
                    case RLINESTATUS: /*  ﭨ  */
                                       .
                                       .
                                       .
                                      break;
         /* ய, ᫨ 䨪    
          * ᫥ */
                 }
             }
         }

              ,     ᯮ짮  祢  ᫮
         interrupt,饬   Microsoft C 5.0  饬  -
         稪  몥 .   祢 ᫮ ᯮ  ᯥ-
          㭪樨,     ⠭  ⢥ ࠡ-
         稪 뢠 ।  뢠.    ࠭樨
         㭪樨   ਡ⮬ interrupt     -
         砫쭮 饭  ⥪ ॣ஢ AX,  CX,  DX, BX, SP, BP,
         SP,  SI,  DI,  DS  ES. ⥬  ⠭ ॣ DS  ०
         뫪  ᥣ  㪠 㭪樨.  ᫥ ⮩ 砫쭮
         ᫥⥫쭮  ᫥  㭪樨.   祭 
         ᯮ  IRET  筮  RET   室 
         㭪樨.   ਬ  ⨯  ᯮ짮 -

                                      - 8-21 -
          interrupt.    Turbo C ⠪   祢
         ᫮,  饭 ॣ஢  ⥪ ந室  㣮 浪.
                ࠡ稪 뢠  몥 ,  -
          ᮡ ⠪  ।஦,    ᠭ -
         ࠡ稪  몥 ᥬ.  ਬ,    ᯮ짮-
          -  ணࠬ, 뢠 㭪 DOS
         (   ⢫ ।⢮  뢠 21h).
           㭪ﬨ    몥   ணࠬ /뢮
         䠩.   㣮 ஭,  ணࠬ, 室騥  ⥣ਨ
         ணࠬ   㫨஢   ப,   ࠭     㭪樨
         interrupt.

                          । ࠡ稪 뢠

              ࠡ稪 뢠 ᫥⥫쭮  
         ᪮३襥 ࠭ 㯠 ᨬ.  訬 ࠧ 
         ⨣   ᯮ짮 .  ਪ ணࠬ 
         ⠭  ⮣  ᨬ   ᢮  ᪮,  
         ᯮ   - ᨬ,  ⮬   ࠡ⠥
         筮 .  뫠 ᨬ ⠪  ࠢ
         ࠡ稪 뢠 १ 㣮 .
                ஢   ᥡ     ஢ન
         ॣ.    㯠     㣨  ணࠬ,
         뢠 ᨬ,  ਭ     ࠡ뢠 ,
         ⥬ ਭ ᫥騩  ⠪ .  ⠪ ⨯ ⥭
          " 襫 -  襫" (FIFO) .   ⠪ -
          ।.
              㭪 8-8   楯㠫쭠  ॠ  ।.
         ।, ⢥,  砫  .  ॠ쭮 ॠ樨
         ࠧ ।,  ..  ᨬ쭮 ᫠ ᨬ,  ஥ 
          ᮤঠ,  䨪஢.   祩 , -
           ।,  㣮,  ⠪ ࠧ,   ன ᫥
         祩,   頥  ࢮ.   䥪⨢ ᯮ-
          ࠭祭 ࠭⢠, 㯭  ।. 
         ॠ । 뢠 横᪮.


                 Ŀ
                                   
                 Ĵ
                                      
                 Ĵ               Ĵ
                       륳   
                 Ŀ       Ĵ
                       Ŀ   ĳ      
                      
                             
                       室    室
                     .8-8. ᪨  FIFO (।)

                          ઠ । ⨥ 

             ᫥ ⮣,   ਪ ணࠬ ⠥ 㦤
          쭥襬 ᫥⥫쭮 /뢮,  室 ⠭-
             筮 ﭨ. ⠭ 砥  ᥡ
         ⠭   ⮢ ॣ ࠧ襭 뢠   
          몫祭  ᨣ ࠢ .  ⥬  ஫

                                      - 8-22 -
         8259A    ணࠬ஢  ४饭 ਥ -
          ᫥⥫쭮 .   祭,    ᫥-
         ⥫쭮 뢠 室   砫쭮 祭, -
         ஥ 뫮 ࠭  樠樨 /뢮.    
         ॠ  Microsoft C 5.0:

             int intmask;
             .
             .
             .
         /*  뢠  ६ ⪨ */
             _disable();
         /* 砫  ॣ ࠧ襭 뢠  */
             outp(IER,IEROFF);
         /* 몫   ॣ ࠢ  */
             outp(MCR,MCROFF);

         /* ⥬  ᯮ ஫஬ 8259A 뢠
            ᫥⥫쭮  */
             intmask = inp(P8259_1) | int_disable_mask;
             outp(P8259_1, intmask);

         /* ⠭ ࢮ砫  뢠 */
             _dos_setvect(int_number, old_handler);

         /*  ࠧ 뢠 */
             _enable();

                                 ਬ ணࠬ

              ᠫ  ।⢠ ᫥⥫쭮 , 㪠-
         ,  ⢨ 室 믮  ணࠬ஢ 
          楫 ࣠樨 䥪⨢  ࠢ塞  뢠ﬨ  -
         /뢮.  ⠫ ⮫쪮 ꥤ ⤥ ,   ⮣,
         ⮡ ,  ࠧ ᮧ 襭 㭨樮-
           ணࠬ.        ⨭ 8-1,   ᮤন
         ᭮ 㭨樮 ணࠬ,  ᠭ    Microsoft  C
         ᨨ 5.0.
            ⨭ 8-1. 㭨樮 ணࠬ  Microsoft C 5.0
         ------------------------------------------------------------------

         /*
          *  䠩:                 SERIO.C
          * :                       ணࠬ஢
          *                            ᫥⥫쭮   -
          *                             MS-DOS.   ࠧࠡ-
          *                            ⠭  ᮭ쭮 
          *                            IBM PC-AT  ᫥⥫
          *                            ஬  IBM.
          *                            ᯮ짮 樮
          *                            ⥬ DOS 3.1.
          * :                      ઠ,  1988
          * :                      Microsoft C 5.0
          *  :             让 
          * ࠭᫨஢/: CL /AL /Gs serio.c
          */

                                      - 8-23 -
         /*----------------------------------------------------------*/
         #include <stdio.h>
         #include <ctype.h>
         #include <dos.h>
         #include <bios.h>
         #include <conio.h>

         #define  TRUE 1
         #define  FALSE 0
         #define  EOS  '\0'

         #define  CONTROL(x)  (x-0x40)
         #define  ESC_KEY     CONTROL('[')

         /* । 㭨樮 ࠬ */
         #define COM_PARAMS (_COM_CHR8 | _COM_STOP1 | \
                                 _COM_NOPARITY |_COM_1200)


         /* । ࠧ ਥ  ।饣 ஢ */
         #define RXQSIZE 512
         #define TXQSIZE 512

         /* ।  ணࠬ㥬 ஫
          * 뢠 8259A
          */
         #define P8259_0 0x20    /* ॣ ࠢ 뢠 */
         #define P8259_1 0x21    /* ॣ ᪨ 뢠 */
         #define END_OF_INT 0x20 /*  । EIO */

         /* ।  ASCII XON  XOFF */
         #define XON_ASCII   (0x11)
         #define XOFF_ASCII  (0x13)

         /*     BIOS   400h */
         #define BIOS_DATA  ((int far *0(0x400000L))

         /* ᮬ 㭨樮   ⪮ 楫
          * 'comport'.  ६ 樠 ⥭ 
          *   BIOS  ᥣ 040.
          */
         #define IER (comport + 1) /* ॣ ࠧ襭 뢠 */
         #define IIR (comport + 2) /* 䨪 뢠 */
         #define LCR (comport + 3) /* ॣ ࠢ ॣ஬ */
         #define MCR (comport + 4) /* ॣ ࠢ  */
         #define LSR (comport + 5) /* ॣ ﭨ  */
         #define MSR (comport + 6) /* ॣ ﭨ  */

         /*  ࠧ襭 ⤥ 뢠 */
         #define RDAINT  1
         #define THREINT 2
         #define RLSINT  4
         #define MSINT   8


         /* 祭 ॣ ࠢ  */
         #define MCRALL  15  /* (DTR, RTS, OUT1  OUT2 = 1) */

                                      - 8-24 -
         #define MCROFF  0   /*  襭 */

         /* 祭 ॣ ࠧ襭 뢠  
          * 祭/몫祭
          */
         #define IERALL  (RDAINT+THREINT+RLSINT+MSINT)
         #define IEROFF  0

         /* ᪮쪮 ᮪   뢠 */
         #define THEREOFF 0xfd

         /*  䨪 뢠 */
         #define MDMSTATUS   0
         #define TXREGEMPTY  2
         #define RXDATAREADY 4
         #define RLINESTATUS 6

         /*  ࠢ ⮪ XON/XOFF */
         #define XON_RCVD   1
         #define XOFF_RCVD  0
         #define XON_SENT   1
         #define XOFF_SENT  0

         /* 訩  訩 樥  ਣ xon-xoff */
         #define HI_TRIGGER(x)  (3*x/4)
         #define LO_TRIGGER(x)  (x/4)

         /* 㭪 祭 㫥  楫 */
         #define bit0(i)   (i & 0x0001)

         /* ப  祭 뢠, " ࠧ襭
          * 뢠" ண "i",  ⨢ 砥  頥-
          * .  ਬ, 뢠 THRE 頥, ᫨ XOFF -
          * 祭  㤠 ⥬.
          */

         #define turnon_int(i,j) \
                 if(((j=inp(IER))&i)==0)outp(IER,(j|i))

         #define report_error(s)  fprintf(stderr,s)
         typedef struct QTYPE  /*    । */
         {
                int  count;
                int  front;
                int  rear;
                int  mexsize;
                char *data;
         }   QTYPE;

         static char rxbuf[RXQSIZE], txbuf[TXQSIZE];

         static QTYPE rcvq = {0, }-1, -1, RXQSIZE, rxbuf},
                      trmq = {0, }-1, -1, TXQSIZE, txbuf};

         /* ਧ 饣 ﭨ */
         int s_linestatus, s_modemstatus;


                                      - 8-25 -
         static  QTYPE *txq = &trmq, *rxq = &rcvq;
         static  short comport=0,
                       enable_xonxoff = 1,
                       rcvd_xonxoff = XON_RCVD,
                       sent_xonxoff = XON_SENT,
                       send_xon = FALSE,
                       send_xoff = FALSE,
                       int_number = 12;
                       int_enable_mask = 0xef,
                       int_disable_mask = 0x10;

         /* ⨯ 㭪権 */
         int s_sendchar(int);
         int s_rcvchar(void);
         int s_setup(short, unsigned);
         int s_cleanup(void);

         char *q_getfrom( QTYPE *, char *);
         int   q_puton( QTYPE *, char *);

         void interrupt far s_inthndlr(void);

         static void  s_rda(void);
         static void  s_trmty(void);
         static void  (interrupt far *old_handler)();
         /*----------------------------------------------------------*/
         main(int argc, char **argv)
         {
             int ch, port_number = 0;

         /*      ப */
             if(argc > 1) port_number = atoi(argv[1]) - 1;
             printf("\nSERIO -- ᫥⥫ /뢮 \
         c ࠬࠬ 1200,8,N,1 १  COM%d\n", port_number+1);
             printf("\n ...\n");

         /* 砫 ⠭ ᫥⥫  */
             s_setup(port_number, COM_PARAMS);

         /* ᫥騩 ᪮ 横  ନ.
          *  Escape 㦨  饣   .
          */

             while (TRUE)
             {
                  if ((ch = s_rcvchar()) != -1) putch(ch);
                  if ( kbhit() != 0)
                  {
                      ch = getch();
                      if (ch == ESC_KEY)
                      {
                            s_cleanup();
                            return;
                      }

                      else
                          s_sendchar(ch);

                                      - 8-26 -
                  }     /*  ஢ન kbhit() */
             }
         }
         /*---------------------------------------------------------*/
         /* s _ i n t h n d l r
          * ࠡ稪  뢠 ᫥⥫쭮 .
          */
         void interrupt far s_inthndlr(void)
         {
             int c;
             registr int int_id, intmask;

         /*  ࠧ 뢠 */
             _enable();

             while (TRUE)
             {
         /*  ॣ 䨪樨 뢠 , IIR */
                int_id = inp(IIR);
                if (bit0(int_id) == 1)
                {
         /* ᫨  0 - 1,  뢠  . ࠢ ண-
          * ࠬ㥬 ஫ 뢠 ᨣ  " 뢠-
          * "  .
          */
                    outp(P8259_0, END_OF INT);
                    return;
                }
                if (int_id >= RXDATAREADY)
                                turnon_int(THEREINT,intmask);
         /* ࠡ 뢠  ᮮ⢥⢨  䨪஬.
          * 騩 祭 ⠢  ᮮ⢥⢨  ⠭
          * ਮ.
          */


                 switch (int_id)
                 {
                    case MDMSTATUS:    /*  ﭨ  */
                                       s_modemstatus = inp(MSR);
                                       break;
                    case TXREGEMPTY:   s_trmty();
                                       break;
                    case RXDATAREADY:  s_rda();
                                       break;
                    case RLINESTATUS:  /*  ﭨ  */
                                       s_linestatus = inp(LSR);
                                       break;
         /* ய, ᫨ 䨪    
          * ᫥ */
                 }
             }
         }
         /*---------------------------------------------------------*/
         /* s _ r d a
          * ࠡ 뢠 "㯭   ਥ"
          */

                                      - 8-27 -
         static void s_rda(void)
         {
             registr int intmask;
             char c;
         /*   㭨樮  */
             c = inp(comport);
             if(enable_xonxoff) {
                if (c == XON_ASCII) {
                      rcvd_xonxoff = XON_RCVD;
         /*  뢠 THRE, ᫨  몫祭. */
                      turnon_int(THREINT,intmask);
                      return;
                }
                if(c == XOFF_ASCII) {
                      rcvd_xonxoff = XOFF_RCVD;
         /*  뢠 THRE */

                      intmask = inp(IER);
                      if (intmask & THREINT0
                                outp(IER, intmask & THREOFF);
                      return;
                 }
             }
             q_puton(rxq, &c);
         /* ஢,    । (75%) */
             if(enable_xonxoff) {
                if(rxq->count >= HI_TRIGGER(RXQSIZE) &&
                   sent_xonxoff != XOFF_SENT ) {
         /* ⠭ 䫠  ࠢ XOFF */
                   send_xoff = TRUE;
         /*  뢠 THRE ⠪, ⮡ ᫠ XOFF */
                   turnon_int(THREINT,intmask);
               }
            }
         }
         /*---------------------------------------------------------*/
         /* s _ t r m t y
          * ࠡ 뢠 "ॣ ࠭ ।
          * ᢮"
          */
         static void s_trmty(void)
         {
             char c;
             registr int ierval;

             if (send_xoff == TRUE) {
                 outp(comport, XOFF_ASCII);
                 send_off = FALSE;
                 sent_xonxoff = XOFF_SENT;
                 return;
             }
             if (send_xon == TRUE) {
                 outp(comport, XON_ASCII);
                 send_xon = FALSE;

                 sent_xonxoff = XON_SENT;
                 return;

                                      - 8-28 -
             }
         /*  ᨬ  ॣ ࠭ । */
             if( q_getfrom(txq, &c) != NULL){
                 outp(comport, c);
                 return;
             }
         /* 祣 뫠 --  뢠 THRE */
             ierval = inp(IER);
             if (ierval & THREINT) outp(IER, ierval & THREOFF);
         }
         /*---------------------------------------------------------*/
         /* s _ s e t u p
          * ⠭   裡.
          *  1, ᫨ ⠭ 諠 ᯥ譮,  ⨢
          * 砥  0.
          */
         int s_setup(short port_number, unsigned commparams)
         {
             int intmask;

             if (port_number < 0 || port_number > 1)
                 report_error("  !\n");

         /*    ᫥⥫쭮  
          *   BIOS */
             comport = *(BIOS_DATA + port_number);
             if (comport == 0)
             {
                 report_error("BIOS    !\n");
                 return(0);
             }

         /* ⠭ ᪨  ணࠬ㥬 ஫
          * 뢠 8259A.  ࠧ襭 뢠 
          *  ᪠ ᪨ 㬭  ᪮ ॣ

          *  21h.  饭, ᪨ ᫮ 
          * 饭  ᪮ ॣ.  뢠
          * ।  8 + ஢ IRQ 뢠.
          * 㭨樮  1  IRQ 4,  2 
          * IRQ 3.
          */
             if (port_number == 0)
             {
                 int_enable_mask = 0xef;
                 int_disable_mask = 0x10;
                 int_number = 12;

             }
             if (port_number == 1)
             {
                 int_enable_mask = 0xf7;
                 int_disable_mask = 8;
                 int_number = 11;
             }

         /*   ண 뢠  ࠭ . */

                                      - 8-29 -
             old_handler = _dos_getvect(int_number);

         /* ⠭  ࠡ稪   s_inthndlr.
          *  뢠  ᬥ ࠡ稪.
          */
             _disable();
             _dos_setvect(int_number, s_inthndlr);
             _enable();

         /* ⠭ 㭨樮 ࠬ */
             _bios_serialcom(_COM_INIT, port_number, commparams);

         /* 樠஢ 䫠 XON/XOFF */
             rcvd_xonxoff = XON_RCVD;
             if (sent_xonxoff == XOFF_SENT)
                 send_xon = TRUE;

             else
                 send_xon = FALSE;
                 send_xoff = FALSE;

         /*  뢠 㭨樮  
          * ⠭ 8259A.
          */
             _disable();
         /* ⠭ ॣ ࠢ  ( = MCR) */
             outp(MCR, MCRALL);

         /*   뢠 ᫥⥫쭮  */
             outp(IER, IERALL);

         /*  ॣ ᪨ 뢠 8259A   
          * ⭮ ᫥ ᪮ 㬭  _int_enable_mask.
          */
             intmask = inp(P8259_1) & int_enable_mask;
             outp(P8259_1, intmask);

             _enable();

             return(1);
         }
         /*---------------------------------------------------------*/
         /* s _ c l e a n u p
         /*  ᫥ ᥠ 裡.   뢠. */
         int s_cleanup(void)
         {
             int intmask;

         /* 몫 뢠 ᫥⥫쭮  */
             _disable();
         /*   ॣ ࠧ襭 뢠  */
             outp(IER, IEOFF);

         /*    ॣ ࠢ  */
             outp(MCR, MCROFF);

         /* ⥬  ᯮ ஫஬ 8259A

                                      - 8-30 -
          * 뢠 ᫥⥫쭮 .
          */
             intmask = inp(P8259 _1) | int_disable_mask;
             outp(P8259_1, inymask);

         /* ⠭ ࢮ砫  뢠 */
             _dos_setvect(int_number, old_handler);

         /*  ࠧ 뢠 */
             _enable();
         }
         /*---------------------------------------------------------*/
         /* s _ s e n d c h a r
          *  ᨬ  ।  ।.  1, ᫨
          *   浪,  ⨢ 砥  0.
          */
         int s_sendchar(int ch)
         {
             int retval, intmask;
             _disable();
             retval = q_puton(txq, (char *)&ch);
             _enable();
         /*  뢠THRE  ⮬ 砥, ᫨  몫祭
          *   祭 XOFF.
          */
             if (rcvd_xonxoff != XOFF_RCVD)
                 turnon_int(THREINT,intmask);
             return(retval);
         }
         /*---------------------------------------------------------*/
         /* s _ r c v c h a r
          *  ᨬ  ।  ਥ.
          *  1, ᫨ । .
          */

         int s_rcvchar(void)
         {
             int ch, intmask;
         /* ᫨ ࠭  ᫠ ᨣ XOFF,    ࠢ
          * XON.
          */
             if(enable_xonxoff)
             {
             if(rxq->count <= LO_TRIGGER(RXQSIZE) &&
                  sent_xonxoff != XON_SENT )
                  {
                     send_xon = TRUE;
                     turnon_int(THREINT,intmask);
                  }
             }
             _disable();
             if (q_getfrom(rxq, (chr *)&ch) == NULL)
             {
                 _enable();
                 return(-1);
             }
             else

                                      - 8-31 -
             {
             _enable();
             return(ch);
             }
         }
         /*--------------------------------------------------------*/
         /* q _ g e t f r o m
          * ஢ ᫥騩    । 
          * । ⮯.   㪠⥫
          *   .
          */
         char *q_getfrom( QTYPE *queue, char *data)
         {
             char *current;
             current = NULL;

             if(queue->front == -1) return(current);
         /*  ⨢ 砥 ᪠  */
             current = &(queue->data[queue->front]);
             *data = *current;
             queue->count--;
             if(queue->count == 0)
             {
         /* । .  砫,    */

                queue->front = queue->rear = -1;
                return(current);
             }
         /*  砫   ஢  横᪨
          * 室.
          */
             if(queue->front == queue->maxsize-1)
                queue->front = 0;
             else
                queue->front++;
             return(current);
         }
         /*--------------------------------------------------------*/
         /* q _ p u t o n
          *     ।.
          */
         int q_puton(QTYPE *queue, char *data)
         {
         /* 砫 ஢ ⥯  ।.
          * ᫨  ,   0.
          */
             if(queue->count == queue->maxsize) return(0);
         /*  ⨢ 砥 ⠭    ஢
          * ஢  横᪨ 室.
          */
             if(queue->rear == queue->maxsize-1)
                queue->rear = 0;
             else
                queue->rear++;
         /* ࠭ ᨬ  । */
             queue->data[queue->rear] = *data;
             queue->count++;

                                      - 8-32 -
             if(queue->front == -1) queue->front = 0;
             return(1); /* ᯥ譮 ⠢  */
         }
         _____________________________________________________________


                                祭

              ⮩    ᬮ७  ࠪ⨪  ।
         ᫥⥫쭮   ⥬ MS-DOS   ।⠢  ⮤
          ணࠬ஢.  ᮤন  㭨樮
         ணࠬ,  ᠭ  Microsoft C 5.0,  樨 ॠ-
         樨  ⮤  ࠪ⨪. ணࠬ஢ ᫥⥫쭮-
             ࠢ塞  뢠  /뢮  믮
         ᫥騬 ࠧ:

             1.     ࠭ 㭨樮 
                   BIOS  ᥣ 40h   ᬥ饭 0.
             2. ᯮ 㭪 MS-DOS 35h,    ன  -
                ணࠬ 㦨 뢠      뢠,
                ᮮ⢥饣  ,  ࠭ .
             3. ᯮ 㭪 MS-DOS 25h, ⠭   -
                   ᮡ⢥ ணࠬ 㦨 뢠-
                .
             4.   ᯮ짮 㭪樨 BIOS 14h ⠭ 㭨-
                 ࠬ .
             5. ⠭ । ਥ  ।  ᮤঠ 室-
                  室 ᨬ.
             6.   ॣ ࠢ  室 ᨣ
                (ਬ,  DTR - ନ ⮢  RTS -   ।-
                ).
             7.   뢠  (⠭ ⮢  0 
                3  ॣ ࠧ襭 뢠  1).
             8.     OUT2  ॣ ࠢ  
                ࠧ襭 뢠 ᫥⥫쭮 .
             9. ணࠬ஢ ஫ 8259A  ᯮ  -
                뢠  IRQ ⮣  (⥬ ⠭ ᮮ⢥-
                饣  ॣ ᪨ 뢠, 㯭 १ -
                  21h,  0).

              믮   権,  ᫨ 짮⥫ 蠥
         ࢠ ᥠ ࠡ,    맢 ணࠬ  "-
         ". ⪠ 믮 ᫥騬 ࠧ:

             1. 몫 뢠 ᫥⥫쭮 .
             2.   ॣ ࠢ .
             3. ⠭  ணࠬ ࠡ⪨ 뢠.
             4. ᪨஢ 뢠  ⮣ IRQ  8259A.
