home *** CD-ROM | disk | FTP | other *** search
/ For Beginners & Professional Hackers / cd.iso / docum / c.doc / 02.prn < prev    next >
Encoding:
Text File  |  1990-12-06  |  88.9 KB  |  3,001 lines

  1.                                âïÇéÇ 2                         -- 1 --
  2.                                -------
  3.  
  4.                            éæÅï¢éÇ₧Öêà ÄèìÇ
  5.      -----------------------------------------------------------------
  6.  
  7.           éß»½δóáεΘ¿Ñ «¬¡á   ¼«úπΓ   »α¿ñáΓ∞   óáΦÑ⌐   »α«úαἼѠ  Γ«Γ
  8.      »α«ΣÑßß¿«¡á½∞¡δ⌐ ó¿ñ,  ¬«Γ«αδ⌐ ¡Ñ ¼«ªÑΓ  íδΓ∞  ñ«ßΓ¿ú¡πΓ  ñαπú¿¼¿
  9.      ßαÑñßΓóἿ.  éß»½δóáεΘ¿Ñ  «¬¡á ß«ºñáεΓ ó»ÑτáΓ½Ñ¡¿Ñ,  τΓ« óδ,  ¬á¬
  10.      »α«úαá¼¼¿ßΓ,  ó  ß«óÑαΦÑ¡ßΓóÑ  ó½áñÑÑΓÑ  φ¬αá¡«¼.   Ç   Γᬠ  ¬á¬
  11.      »«½∞º«óáΓѽ∞  «íδτ¡«  ßπñ¿Γ  «  »α«úαἼѠ»« ÑÑ »«½∞º«óáΓѽ∞߬«¼π
  12.      ¿¡ΓÑαΣÑ⌐ßπ, Γ« φΓ« »«½«ª¿Γѽ∞¡«Ñ ó»ÑτáΓ½Ñ¡¿Ñ αáß»α«ßΓαá¡¿Γß∩ ¿ ¡á
  13.      óßε »α«úαá¼¼π ó µÑ½«¼.
  14.  
  15.           äá¡¡á∩ ú½áóá  ß«ñÑαª¿Γ  «»¿ßá¡¿Ñ  »«½¡«ú« ¡áí«αá Σπ¡¬µ¿⌐ ñ½∩
  16.      óß»½δóáεΘ¿σ «¬«¡,  ¬«Γ«αδÑ »«ºó«½∩Γ óá¼ ß«ºñáóáΓ∞ ¿  ¿ß»«½∞º«óáΓ∞
  17.      ¼¡«ªÑßΓóÑ¡¡δÑ «¬¡á.
  18.  
  19.           Åα«úαá¼¼δ π»αáó½Ñ¡¿∩   «¬¡á¼¿   ¿ß»«½∞ºπεΓ  Σπ¡¬µ¿¿  »α∩¼«ú«
  20.      ñ«ßΓπ»á ¬ ó¿ñÑ«»á¼∩Γ¿,  »αÑñßΓáó½Ñ¡¡δÑ ó â½áóÑ 1. êº-ºá Γ«ú«, τΓ«
  21.      «¬¡á ó í«½∞Φ¿¡ßΓóÑ ß½πτáÑó, ¿¼ÑεΓ º¡áτ¿Γѽ∞¡« í«½∞Φ¿⌐ αẼÑα, τѼ
  22.      ¼Ñ¡ε,  Γ« ¿ß»«½∞º«óá¡¿Ñ Σπ¡¬µ¿⌐ ¿º ROM-BIOS »α«ßΓ« ¡Ñ󫺼«ª¡«,  -
  23.      ñáªÑ ¡á ßá¼δσ íδßΓαδ󠬫¼»∞εΓÑαáσ.
  24.  
  25.           Äñ¡á¬« »ÑαÑñ   αáßß¼«ΓαÑ¡¿Ñ¼  «¬«¡¡δσ  Σπ¡¬µ¿⌐  «τÑ¡∞  ó᪡«
  26.      »αáó¿½∞¡« »«¡∩Γ∞,  τΓ«  ªÑ  ΓᬫѠ óß»½δóáεΘ¿Ñ  «¬¡á  ¿  ¬á¬  «¡¿
  27.      ¿ß»«½∞ºπεΓß∩.
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  61. â½áóá II                                                       -- 2 --
  62.  
  63.  
  64.                           ÆÑ«α¿∩ óß»½δóáεΘ¿σ «¬«¡.
  65.      -----------------------------------------------------------------
  66.  
  67.           éß»½δóáεΘÑÑ «¬¡«   »αÑñßΓáó½∩ÑΓ    ß«í«⌐    τáßΓ∞    φ¬αá¡á,
  68.      ¿ß»«½∞ºπѼπε ñ½∩ ß»Ñµ¿á½∞¡δσ µÑ½Ñ⌐. ÅÑαÑñ »«∩ó½Ñ¡¿Ñ¼ «¬¡á ΓѬπΘÑÑ
  69.      ß«ñÑন¼«Ñ φ¬αá¡á ß«σαá¡∩ÑΓß∩ ¿  ½¿Φ∞  »«ß½Ñ  φΓ«ú«  »α«¿ºó«ñ¿Γß∩
  70.      «Γ«íαáªÑ¡¿Ñ «¬¡á.
  71.  
  72.           Åα¿ ºáóÑαΦÑ¡¿¿ »α«úαá¼¼δ, ¿ß»«½∞ºπεΘÑ⌐ ñá¡¡«Ñ «¬¡«, φΓ« «¬¡«
  73.      πñá½∩ÑΓß∩,  á »Ñαó«¡áτá½∞¡«Ñ ß«ñÑন¼«Ñ φ¬αá¡á ó«ßßΓá¡áó½¿óáÑΓß∩.
  74.      (äá¡¡δ⌐  »α«µÑßß  á¡á½«ú¿τÑ¡ »«∩ó½Ñ¡¿ε óß»½δóáεΘ¿σ ¼Ñ¡ε).  é»«½¡Ñ
  75.      ó«º¼«ª¡« «ñ¡«óαѼѡ¡«Ñ «Γ«íαáªÑ¡¿Ñ ¡á φ¬αá¡Ñ ¡Ñ߬«½∞¬¿σ «¬«¡.
  76.  
  77.           ò«Γ∩ φΓ«  ¿  ¡Ñ  «í∩ºáΓѽ∞¡«,  ¡«  óßÑ  σ«α«Φ¿Ñ   »α«úαá¼¼δ,
  78.      αáí«ΓáεΘ¿Ñ  ß  «¬¡á¼¿,  »«ºó«½∩εΓ ¿¡ΓÑαá¬Γ¿ó¡« ¿º¼Ñ¡∩Γ∞ αẼÑαδ ¿
  79.      »«º¿µ¿ε «¬¡á ¡á φ¬αá¡Ñ. æ½Ññ«óáΓѽ∞¡«, «¬«¡¡δÑ Σπ¡¬µ¿¿ ñ«»π߬áεΓ,
  80.      τΓ«  «¬¡«  ¡Ñ  óßÑúñá  íπñÑΓ  ¡áσ«ñ¿Γ∞ß∩ ó «ñ¡«¼ ¿ Γ«¼ ªÑ ¼ÑßΓÑ ¿
  81.      ¿¼ÑΓ∞ «ñ¿¡ ¿ Γ«Γ ªÑ αẼÑα.
  82.  
  83.           Éáºαáí«Γ¬á Σπ¡¬µ¿⌐,  π»αáó½∩εΘ¿σ  «¬¡á¼¿,  ∩ó½∩ÑΓß∩  ß½«ª¡«⌐
  84.      ºáñáτÑ⌐  ¿º-ºá  ¡Ñ«íσ«ñ¿¼«ßΓ¿  «íÑß»ÑτÑ¡¿∩ ºá»αÑΓá ñ½∩ »α¿¬½áñ¡«⌐
  85.      »α«úαá¼¼δ «ßπΘÑßΓó½∩Γ∞ óδó«ñ ºá úαá¡¿µδ «¬¡á.  Å«ß¬«½∞¬π  αẼÑαδ
  86.      «¬¡á   ¼«úπΓ   ¿º¼Ñ¡∩Γ∞ß∩  íѺ  "ß««íΘÑ¡¿∩"  «í  φΓ«¼  »α¿¬½áñ¡«⌐
  87.      »α«úαá¼¼Ñ,  Γ« ¿¼Ñ¡¡« Σπ¡¬µ¿¿ π»αáó½Ñ¡¿∩ «¬¡á¼¿,  á ¡Ñ »α¿¬½áñ¡á∩
  88.      »α«úαá¼¼á,    ñ«½ª¡δ   »αÑñ«σαá¡¿Γ∞   «Γ   óδσ«ñá   ºá   úαá¡¿µδ.
  89.      æ½Ññ«óáΓѽ∞¡«,  óßÑ «íδτ¡δÑ Σπ¡¬µ¿¿ æ¿, «ßπΘÑßΓó½∩εΘ¿Ñ óó«ñ/óδó«ñ
  90.      ¡á  ¬«¡ß«½∞  (¡á»α¿¼Ñα,  printf()  ¿  lets()  )  ,  ¡Ñ ¼«úπΓ íδΓ∞
  91.      ¿ß»«½∞º«óá¡δ ¿ ñ«½ª¡δ íδΓ∞ ºá¼Ñ¡Ñ¡δ ¡á  Σπ¡¬µ¿¿,  «α¿Ñ¡Γ¿α«óá¡¡δÑ
  92.      ¡á óó«ñ/óδó«ñ ß ¿ß»«½∞º«ó᡿Ѽ «¬«¡.
  93.  
  94.           ÆÑ«α¿∩ ¿ß»«½∞º«óá¡¿∩  «¬«¡  ¬αá⌐¡Ñ »α«ßΓá.  èáªñá∩ «Γñѽ∞¡á∩
  95.      ºáñáτá »α«úαá¼¼δ ¿ß»«½∞ºπÑΓ ßó«Ñ ß«íßΓóÑ¡¡«Ñ  «¬¡«.  Åα¿  ºá»π߬Ñ
  96.      ºáñáτ¿ á¬Γ¿ó¿απÑΓß∩ ¿ ÑÑ «¬¡«.  Åα¿ ºáóÑαΦÑ¡¿¿ αáí«Γδ ºáñáτ¿ - ÑÑ
  97.      «¬¡« πñá½∩ÑΓß∩.  àß½¿ ªÑ ºáñáτá »αÑαδóáÑΓß∩,  Γ«,  σ«Γ∩ ÑÑ αáí«Γá
  98.      »α¿«ßΓá¡áó½¿óáÑΓß∩,  ¡«  ÑÑ  «¬¡«  ¡Ñ  πñá½∩ÑΓß∩,  á ¿¡¿µ¿¿απѼá∩
  99.      »αÑαδó᡿Ѽ ºáñáτá,  »α«ßΓ« ß«ºñáÑΓ ßó«Ñ «¬¡« »«óÑασ »αÑñδñπΘÑú«.
  100.      (Äíδτ¡« ΓÑ ºáñáτ¿, ¬«Γ«αδÑ ¡Ñ ¿ß»«½∞ºπεΓ «¬«¡, «τ¿ΘáεΓ φ¬αá¡. ¥Γ«
  101.      »α¿ó«ñ¿Γ ¬ αáßßÑ¿óá¡¿ε ó¡¿¼á¡¿∩ »«½∞º«óáΓѽ∩.  é Γ« ªÑ óαѼ∩  »α¿
  102.      ¿ß»«½∞º«óá¡¿¿  «¬«¡  »«ñ«í¡δÑ  »αÑαδóá¡¿∩  óδú½∩ñ∩Γ ¬á¬ óαѼѡ¡δÑ
  103.      »áπºδ).
  104.  
  105.           ùΓ«íδ »«¡∩Γ∞,  ¬á¬  «¬¡á  ¼«úπΓ  íδΓ∞  ¡á¿í«½ÑÑ   φΣΣÑ¬Γ¿ó¡«
  106.      ¿ß»«½∞º«óá¡δ, »αÑñ»«½«ª¿¼, τΓ« óδ αáºαáí«Γ὿ ΓѬßΓ«óδ⌐ αÑñá¬Γ«α,
  107.      ó¬½ετáεΘ¿⌐  α∩ñ  ñ«»«½¡¿Γѽ∞¡δσ  Σπ¡¬µ¿⌐,  Γá¬¿σ  ¬á¬   "ºá»¿ß¡á∩
  108.      ¬¡¿ª¬á",  ¬á½∞¬π½∩Γ«α  ß  τÑΓδα∞¼∩  ¼áΓѼáΓ¿τÑ߬¿¼¿  «»Ñαᵿ∩¼¿ ¿
  109.      ¬«¡óÑαΓÑα τ¿ßѽ ¿º ñÑß∩Γ¿τ¡«ú« ó ΦÑßΓ¡áñµáΓ¿α¿τ¡«Ñ »αÑñßΓáó½Ñ¡¿Ñ.
  110.      Æá¬  ¬á¬  óßÑ  φΓ¿  Σπ¡¬µ¿¿  ó  ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿  ¡Ñ  «Γ¡«ß∩Γß∩ ¬
  111.      «»Ñαᵿ∩¼  αÑñá¬Γ¿α«óá¡¿∩  ΓѬßΓá,   Γ«   ¿σ   αÑ὿ºáµ¿∩   ΓÑß¡«
  112.      »ÑαÑ»½ÑΓáÑΓß∩   ß  ¬«¡µÑ»µ¿Ñ⌐  óß»½δóáεΘ¿σ  «¬«¡.  Æá¬¿¼  «íαẫ¼
  113.      »«½πτáÑΓß∩,  τΓ«  ¿ß»«½∞º«óá¡¿Ñ  ¬á¬«⌐-½¿í«  ¿º   óß»«¼«úáΓѽ∞¡δσ
  114.      Σπ¡¬µ¿⌐ ½¿Φ∞ »α¿«ßΓá¡áó½¿óáÑΓ «ß¡«ó¡πε ºáñáτπ (αÑñá¬Γ¿α«óá¡¿Ñ), á
  115.      ¡Ñ »αÑαδóáÑΓ ÑÑ.
  116.  
  117.  
  118.  
  119.  
  120.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  121. â½áóá II                                                       -- 3 --
  122.  
  123.  
  124.  
  125.                Ä¬«¡¡δÑ ßΓαπ¬Γπαδ.
  126.      -----------------------------------------------------------------
  127.  
  128.           Åαáó¿½∞¡á∩ αÑ὿ºáµ¿∩  óß»½δóáεΘ¿σ  «¬«¡ ΓαÑíπÑΓ,  τΓ«íδ óßÑ
  129.      áΓα¿íπΓδ,  ¡Ñ«íσ«ñ¿¼δÑ ñ½∩ «»¿ßá¡¿∩ ¿σ úαá¡¿µ, í뫨 ó ½εí«Ñ óαѼ∩
  130.      ñ«ßΓπ»¡δ  óßѼ  «¬«¡¡δ¼  Σπ¡¬µ¿∩¼.  ä½∩ ñ«ßΓ¿ªÑ¡¿∩ φΓ«ú« ¼δ íπñѼ
  131.      ¿ß»«½∞º«óáΓ∞  ¬«¡µÑ»µ¿ε  ßΓαπ¬Γπαδ,  á¡á½«ú¿τ¡πε   Γ«⌐,   ¬«Γ«αá∩
  132.      ¿ß»«½∞º«óá½áß∞  »α¿  «»¿ßá¡¿¿  Σπ¡¬µ¿⌐ ß»π߬áεΘ¿σß∩ ¼Ñ¡ε.  Äñ¡á¬«
  133.      ßΓαπ¬Γπαá «¬¡á ß«ñÑαª¿Γ ¡Ñ¬«Γ«απε ß»Ñµ¿Σ¿τÑ߬πε  ¿¡Σ«α¼áµ¿ε. ì¿ªÑ
  134.      »«¬áºá¡ ¼áßß¿ó, ¿ß»«½∞ºπѼδ⌐ ñ½∩ σαá¡Ñ¡¿∩ ßΓαπ¬Γπα.
  135.  
  136.                   struct window_frame
  137.                     int startx, endx, starty, endy; /*»«º¿µ¿∩ «¬¡á*/
  138.                     int curx, cury; /*ΓѬπΘá∩ »«º¿µ¿∩ ¬παß«αá ó «¬¡Ñ*/
  139.                     unsigned chsr *p; /*π¬áºáΓѽ∞ íπΣÑαá*/
  140.                     char *header; /*¿¼∩ «¬¡á*/
  141.                     int border; /*ó¬½ετÑ¡¿Ñ/ó䬽ετÑ¡¿Ñ úαá¡¿µ*/
  142.                     int active; /*¡á φ¬αá¡Ñ ¿½¿ ¡Ñó¿ñ¿¼«*/
  143.                   } frame [MAX_FRAME];
  144.  
  145.           ÅÑαѼѡ¡δÑ startx,  starty,  endx ¿ endy  σαá¡∩Γ  ¬««αñ¿¡áΓδ
  146.      óÑασ¡Ñú«  ½Ñó«ú«  ¿  ¡¿ª¡Ñú« »αáó«ú« πú½«ó «¬¡á.  ÆÑ¬πΘá∩ »«º¿µ¿∩
  147.      ¬παß«αá ó «¬¡Ñ ß«ñÑনΓß∩ ó »ÑαѼѡ¡δσ curx  ¿  cury.  æ«σαá¡Ñ¡¿Ñ
  148.      φΓ¿σ »ÑαѼѡ¡δσ «ßπΘÑßΓó½∩ÑΓß∩ ¿º-ºá Γ«ú«,  τΓ« »«½«ªÑ¡¿Ñ ¬παß«αá
  149.      ¼«ªÑΓ ¿º¼Ñ¡∩Γ∞ß∩ ¿ óαπτ¡πε ¿ »πΓѼ ¿ß»«½∞º«óá¡¿∩ «¬«¡¡δσ Σπ¡¬µ¿⌐.
  150.      ô¬áºáΓѽ∞ p π¬áºδóáÑΓ ¡á «í½áßΓ∞ »á¼∩Γ¿,  σαá¡∩ΘÑ⌐ »Ñαó«¡áτá½∞¡«Ñ
  151.      ß«ñÑন¼«Ñ  τáßΓ¿  φ¬αá¡á,  ºá¡∩Γ«⌐  ñá¡¡δ¼  «¬¡«¼.  ùáßΓ«   «¬¡«
  152.      ß¡áíªáÑΓß∩  ºáú«½«ó¬«¼,  ¿ñÑ¡µ¿Σ¿απεΘ¿¼ ß«ñÑন¼«Ñ «¬¡á.  ìá φΓ«Γ
  153.      ºáú«½«ó«¬ ¿ π¬áºδóáÑΓ header.  ÅÑαѼѡ¡á∩ border ¿ß»«½∞ºπÑΓß∩ ñ½∩
  154.      «»αÑñѽѡ¿∩   ¡Ñ«íσ«ñ¿¼«ßΓ¿   óδτÑατ¿óá¡¿∩  úαá¡¿µ  ó«¬απú  «¬¡á.
  155.      ÅÑαѼѡ¡á∩ active πßΓá¡«ó½Ñ¡á ó "1", Ñß½¿ ó ñá¡¡δ⌐ ¼«¼Ñ¡Γ «¬¡« ¡á
  156.      φ¬αá¡Ñ, ¿ ó "0" - ó »α«Γ¿ó¡«¼ ß½πτáÑ.
  157.  
  158.           æ Γ«τ¬¿   ºαÑ¡¿∩   »α«úαá¼¼¿α«óá¡¿∩  ¿ß»«½∞º«óá¡¿Ñ  «¬«¡  ¡Ñ
  159.      ß«ßΓáó½∩ÑΓ Γαπñá.  é«-»Ñαóδσ,  óδ ß«ºñáÑΓÑ ßΓαπ¬Γπα𠫬¡á, ºáΓѼ,
  160.      ¬«úñá  »«∩ó½∩ÑΓß∩  ¡Ñ«íσ«ñ¿¼«ßΓ∞ ó «¬¡Ñ,  Γ« »α¿ ºá»¿ß¿ ó ¡Ñú« óδ
  161.      ¿ß»«½∞ºπÑΓÑ    ß»Ñµ¿á½∞¡δÑ     «¬«¡¡«-«α¿Ñ¡Γ¿α«óá¡¡δÑ     Σπ¡¬µ¿¿
  162.      óó«ñá/óδó«ñá.  è«úñá  ªÑ  «¬¡« í«½∞ΦÑ ¡Ñ ¡πª¡«,  óδ ñÑá¬Γ¿ó¿απÑΓÑ
  163.      Ñú«.
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  181. â½áóá II                                                       -- 4 --
  182.  
  183.  
  184.                          æ«ºñá¡¿Ñ ßΓαπ¬Γπαδ «¬¡á.
  185.      -----------------------------------------------------------------
  186.  
  187.           ì¿ªÑ »«¬áºá¡á    Σπ¡¬µ¿∩    »«ñ   ¡áºó᡿Ѽ   make_window(),
  188.      ¿ß»«½∞ºπѼá∩ ñ½∩ ß«ºñá¡¿∩ ßΓαπ¬Γπαδ «¬¡á.
  189.  
  190.  
  191.          /* æ«ºñáΓ∞ αἬπ ß»π߬áεΘÑú«ß∩ «¬¡á.
  192.           é«ºóαáΓ¿Γ∞ 1, Ñß½¿ αἬᠫ¬¡á  ¼«ªÑΓ íδΓ∞ ß«ºñá¡á
  193.           ¿ 0 ó »α«Γ¿ó¡«¼ ß½πτáÑ */
  194.          ¼á¬Ñ_window(num, header,startx,starty,endx,endy,border)
  195.          int num; /* ¡«¼Ñα «¬¡á */
  196.          char *header; /* ΓѬßΓ ºáú«½«ó¬á */
  197.          int startx,starty; /* ¬««αñ¿¡áΓδ X,Y ½Ñó«ú« óÑασ¡Ñú« πú½á */
  198.          int endx,endy; /* ¬««αñ¿¡áΓδ X,Y »αáó«ú« óÑασ¡Ñú« πú½á */
  199.          int border; /* íѺ í«αñεαá, Ñß½¿ 0 */
  200.          {
  201.            unsigned char *p;
  202.  
  203.            if(num>MAX_FRAME) {
  204.              printf("Too many windows\n");
  205.              return 0;
  206.            }
  207.  
  208.           if((startx>24) || (startx<0) || (starty>78) || (starty<0)) {
  209.              printf("range error");
  210.              return 0;
  211.            }
  212.  
  213.            if((endx>24) || (endy>79)) {
  214.              printf("window won't fit");
  215.              return 0;
  216.            }
  217.  
  218.        /* «ΓóÑßΓ¿ ñ«ßΓáΓ«τ¡«Ñ ¬«½¿τÑßΓó« »á¼∩Γ¿ */
  219.        p=(unsigned char *) malloc(2*(endx-startx+1)*(endy-starty+1));
  220.        if(!p) exit(1); /* »ÑαÑ⌐Γ¿ ¬ óδßΦѼπ ß«íßΓóÑ¡¡«¼π «íαáí«Γτ¿¬π
  221.        «Φ¿í«¬ */
  222.  
  223.            /* ß«ºñáΓ∞ αἬπ */
  224.            frame[num].startx = startx; frame[num].endx = endx;
  225.            frame[num].starty = starty; frame[num].endy = endy;
  226.            frame[num].p = p;
  227.            frame[num].haeder = header;
  228.            frame[num].border = border;
  229.            frame[num].active = 0;
  230.            frame[num].curx = 0; frame[num].cury = 0;
  231.            return 1;
  232.          }
  233.  
  234.           èᬠóδ  ¼«ªÑΓÑ  ó¿ñÑΓ∞  ¿º  «»¿ßá¡¿∩  Σπ¡¬µ¿¿,  «¡á  ΓαÑíπÑΓ
  235.      »ÑαÑñáτ¿  ¡«¼Ñαá  «¬¡á,  ßΓαπ¬Γπα𠬫ëα«ú« óδ σ«Γ¿ΓÑ ß«ºñáΓ∞,  ¿
  236.      óßÑ⌐ «ßΓá½∞¡«⌐ ß««ΓóÑΓßΓóπεΘÑ⌐ ¿¡Σ«α¼áµ¿¿.  ì¿ªÑ  »«¬áºá¡  »α¿¼Ñα
  237.      ó맮óá  make_window()  ñ½∩  ß«ºñá¡¿∩  «¬¡á  ¡«¼Ñα  0 ß ºáú«½«ó¬«¼
  238.  
  239.  
  240.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  241. â½áóá II                                                       -- 5 --
  242.  
  243.  
  244.      "ÉÑñá¬Γ«α [Esß ñ½∩ óδσ«ñá]",  ß óÑασ¡¿¼ ½Ñóδ¼ πú½«¼  ó  0,0  ¿  ß
  245.      ¡¿ª¡¿¼ »αáóδ¼ πú½«¼ ó 24,78 ¿ ¿¼ÑεΘѼ úαá¡¿µδ.
  246.  
  247.       make_window (0, "ÉÑñá¬Γ«α [Ese ñ½∩ óδó«ñá]", 0,0,24,78, BORDER);
  248.  
  249.           ÄΓ¼ÑΓ¿¼, τΓ« »ÑαѼѡ¡δÑ, «»αÑñѽ∩εΘ¿Ñ »«º¿µ¿ε ¬παß«αá curx ¿
  250.      cury πßΓá¡áó½¿óáεΓß∩ 0.  ¥Γ« «º¡áτáÑΓ,  τΓ« »α¿ »Ñαó«⌐  á¬Γ¿óᵿ¿
  251.      «¬¡á,  ¬παß«α íπñÑΓ πßΓá¡«ó½Ñ¡ ó Ñú« óÑασ¡¿⌐ ½Ñóδ⌐ πú«½.  öπ¡¬µ¿∩
  252.      ΓᬪѠπ»αáó½∩ÑΓ αẼÑΘÑ¡¿Ñ¼ «¬¡á ¡á φ¬αá¡Ñ.
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  301. â½áóá II                                                       -- 6 --
  302.  
  303.  
  304.                       Ç¬Γ¿ó¿α«óá¡¿Ñ ¿ ñÑá¬Γ¿ó¿α«óá¡¿Ñ «¬¡á.
  305.      -----------------------------------------------------------------
  306.  
  307.           ä½∩ á¬Γ¿ó¿α«óá¡¿∩ «¬¡á ¿ß»«½∞ºπÑΓß∩ Σπ¡¬µ¿∩ window (). çñÑß∞
  308.      num  íπñÑΓ  ß«ñÑαªáΓ∞  ¡«¼Ñα  ßΓαπ¬Γπαδ  «¬¡á,  ¬«Γ«α«Ñ óδ σ«Γ¿ΓÑ
  309.      ¿ß»«½∞º«óáΓ∞.
  310.  
  311.  
  312.          /* éδóÑßΓ¿ ¡á φ¬αá¡ ß»π߬áεΘÑÑß∩ «¬¡« */
  313.          void window(num)
  314.          int num; /* ¡«¼Ñα «¬¡á */
  315.          {
  316.            int vmode, choice;
  317.            int x, y;
  318.  
  319.            vmode = video_mode();
  320.            if((vmode!=2) && (vmode!=3) && (vmode!=7)) {
  321.              printf("video must be in 80 column text mode");
  322.              exit(1);
  323.            }
  324.            /* πßΓá¡«ó¿Γ∞ ß««ΓóÑΓßΓóπεΘ¿⌐ áñαÑß ó¿ñÑ«»á¼∩Γ¿ */
  325.            if(vmode==7) vid_mem = (char far *) 0xB0000000;
  326.            else vid_mem = (char far *) 0xB0000000;
  327.  
  328.            /* ßñѽáΓ∞ «¬¡« á¬Γ¿ó¡δ¼ */
  329.            if(!frame[num].active) { /* ¿ß»«½∞ºπÑΓß∩ ¡Ñ »«ßΓ«∩¡¡« */
  330.            save_video(num); /* ß«σαá¡¿Γ∞ ΓѬπΘÑÑ ß«ñÑন¼«Ñ φ¬αá¡á */
  331.            frame[num].active = 1; /* πßΓá¡«ó¿Γ∞ Σ½áú á¬Γ¿ó¡«ßΓ¿ */
  332.            }
  333.  
  334.            if(!frame[num].border) draw border(num);
  335.            display_header(num); /* óδóÑßΓ¿ «¬¡« ¡á φ¬αá¡ */
  336.  
  337.            x = frame[num].startx + frame[num].curx + 1;
  338.            y = frame[num].starty + frame[num].cury + 1;
  339.            goto_xy(x,y);
  340.          }
  341.  
  342.  
  343.           èᬠóδ ¼«ªÑΓÑ ó¿ñÑΓ∞, ñá¡¡á∩ Σπ¡¬µ¿∩ «τÑ¡∞ »«σ«ªá ¡á Σπ¡¬µ¿ε
  344.      menu(),  »«¬áºá¡¡πε  ó  »αÑñδñπΘÑ⌐  ú½áóÑ.   ÅÑαѼѡ¡á∩   vid-mem
  345.      ∩ó½∩ÑΓß∩ ú½«íá½∞¡δ¼ π¬áºáΓѽѼ Γ¿»á char far.
  346.  
  347.           öπ¡¬µ¿∩ display_header(),  »«¬áºá¡¡á∩ ¡¿ªÑ, ¿ß»«½∞ºπÑΓß∩ ñ½∩
  348.      «Γ«íαáªÑ¡¿∩ ó µÑ¡ΓαÑ óÑασ¡Ñ⌐ úαá¡¿µδ «¬¡á Ñú« ºáú«½«ó¬á.  àß½¿ ªÑ
  349.      ºáú«½«ó«¬ ¡Ñ »«¼ÑΘáÑΓß∩ ó φΓπ ßΓ᫬π, Γ« «¡ ¡Ñ óδó«ñ¿Γß∩.
  350.  
  351.  
  352.          /* óδóÑßΓ¿ ΓѬßΓ ºáú«½«ó¬á ¡áτ¿¡á∩ ß «»αÑñѽѡ¡«⌐
  353.          »«º¿µ¿¿ */
  354.          void display_header(num)
  355.          int num;
  356.          {
  357.            register int y,len;
  358.  
  359.  
  360.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  361. â½áóá II                                                       -- 7 --
  362.  
  363.  
  364.  
  365.            y = frame[num].starty;
  366.            /* éδτ¿ß½¿Γ∞ ¡áτá½∞¡πε »«º¿µ¿ε «Γ¡«ß¿Γѽ∞¡« µÑ¡Γαá ΓѬßΓá
  367.            ºáú«½«ó¬á, Ñß½¿ «Γα¿µáΓѽ∞¡á∩, Γ« ΓѬßΓ ¡Ñ »«ñσ«ñ¿Γ */
  368.            len = strlen(frame[num].header);
  369.            len = (frame[num].endy - y - len) / 2;
  370.            if(len<0) return; /* ¡Ñ óδó«ñ¿Γ∞ ¡á φ¬αá¡ */
  371.            y = y +len;
  372.  
  373.            write_string(frame[num].startx, y,
  374.                         frame[num].header,NORM_VID);
  375.          }
  376.  
  377.  
  378.           àß½¿ óδ  σ«Γ¿ΓÑ,  τΓ«íδ  ºáú«½«ó«¬  óδó«ñ¿½ß∩  ó   ¿¡óÑαß¡«¼
  379.      ¿º«íαáªÑ¡¿¿,  Γ«  ó¼ÑßΓ« NORî_VID (¿¼ÑεΘѼ º¡áτÑ¡¿Ñ 7) »«ñßΓáó∞ΓÑ
  380.      REV_VID (ß« º¡áτÑ¡¿Ñ¼ 70ì).
  381.  
  382.           ä½∩ ñÑá¬Γ¿óᵿ¿ «¬¡á ¿ß»«½∞ºπÑΓß∩  »«¬áºá¡¡á∩  ¡¿ªÑ  Σπ¡¬µ¿∩
  383.      deactivate(), ¬«Γ«α«⌐ »ÑαÑñáÑΓß∩ ¡«¼Ñα πñá½∩Ѽ«ú« «¬¡á.
  384.  
  385.  
  386.          /* äÑá¬Γ¿ó¿α«óáΓ∞ «¬¡« ¿ πñ὿Γ∞ Ñú« ß φ¬αá¡á */
  387.          deactivate(num)
  388.          int num;
  389.          {
  390.            /* πßΓá¡«ó¿Γ∞ ¬παß«α ó ½Ñóδ⌐ óÑασ¡¿⌐ πú«½ */
  391.            frame[num].curx = 0;
  392.            frame[num].cury = 0;
  393.            restore_video(num);
  394.          }
  395.  
  396.  
  397.           èᬠóδ ó¿ñ¿ΓÑ,  Σπ¡¬µ¿∩ πßΓá¡áó½¿óáÑΓ »«º¿µ¿ε ¬παß«αá ó 0,0.
  398.      Äñ¡á¬«,  »«ß¬«½∞¬π óá¼ ¼«úπΓ óßΓαÑΓ¿Γ∞ß∩  ¡Ñ¬«Γ«αδÑ  ß¿Γπᵿ¿,  ó
  399.      ¬«Γ«αδσ  í«½ÑÑ  ªÑ½áΓѽ∞¡«  ¡Ñ  πßΓá¡áó½¿óáΓ∞  ¬παß«α  ó  ¡π½Ñóπε
  400.      »«º¿µ¿ε,  Γ«  óδ  ¼«ªÑΓÑ   ¿º¼Ñ¡¿Γ∞   »«óÑñÑ¡¿Ñ   φΓ«⌐   Σπ¡¬µ¿¿,
  401.      ß««íαáºπ∩ß∞ ß« ßó«¿¼¿ ¡á¼ÑαÑ¡¿∩¼¿.
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  421. â½áóá II                                                       -- 8 --
  422.  
  423.  
  424.                Ä¬«¡¡δÑ Σπ¡¬µ¿¿ óó«ñá/óδó«ñá.
  425.      -----------------------------------------------------------------
  426.  
  427.           ÅÑαÑñ ¿ß»«½∞º«ó᡿Ѽ     «¬¡á     ¡Ñ«íσ«ñ¿¼«     αáºαáí«ΓáΓ∞
  428.      º¡áτ¿Γѽ∞¡«Ñ   τ¿ß½«  ¬«¡ß«½∞¡δσ  «¬«¡¡«-«α¿Ñ¡Γ¿α«óá¡¡δσ  Σπ¡¬µ¿⌐
  429.      óó«ñá/óδó«ñá.  ùΓ«íδ »«¡∩Γ∞,  »«τѼπ ΓαÑíπÑΓß∩ Γᬠ¼¡«ú« Σπ¡¬µ¿⌐,
  430.      óß»«¼¡¿ΓÑ  «  Γ«¼,  ß¬«½∞¬«  ¬«¡ß«½∞¡δσ  Σπ¡¬µ¿⌐  óó«ñá/óδó«ñá  ó
  431.      ßΓá¡ñáαΓ¡«⌐  í¿í½¿«ΓѬѠ æ¿.  öπ¡¬µ¿¿,  »αÑñßΓáó½Ñ¡¡δÑ  ó  ñá¡¡«⌐
  432.      ú½áóÑ,  ó  ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿  ß«ßΓáó½∩εΓ  ½¿Φ∞  ¼¿¡¿¼á½∞¡δ⌐ ¡áí«α,
  433.      ¡Ñ«íσ«ñ¿¼δ⌐ ñ½∩ ¿ß»«½∞º«óá¡¿∩ «¬«¡.  ò«Γ∩ «¡¿ ¡Ñ ó¬½ετáεΓ ó  ßÑí∩
  434.      «α¿Ñ¡Γ¿α«óá¡¡δÑ  ¡á  ¿ß»«½∞º«óá¡¿Ñ  «¬«¡  óÑαß¿¿  óßÑ󠬫¡ß«½∞¡δσ
  435.      æ¿-Σπ¡¬µ¿⌐, ¡« óßÑ ªÑ ¿¼ÑεΓ í«½∞Φ«⌐ «íΩѼ. èᬠóδ πíÑñ¿ΓÑß∞, ñáªÑ
  436.      »α«ßΓÑ⌐Φ¿Ñ  «»Ñαᵿ¿,  ΓᬿѠ ¬á¬ τΓÑ¡¿Ñ ß¿¼ó«½á ß ¬½áó¿áΓπαδ ¿½¿
  437.      óδó«ñ Ñú« ¡á φ¬αá¡,  αÑ὿ºπεΓß∩  »α«úαἼἿ  í«½∞Φ«ú«  «íΩÑѼá,
  438.      »«ß¬«½∞¬π  ¡Ñ«íσ«ñ¿¼«  «Γ߽Ѫ¿óáΓ∞  ¿  ß«σαá¡∩Γ∞  ΓѬπΘπε »«º¿µ¿ε
  439.      ¬παß«αá ¿ ¡Ñ ñ«»π߬áΓ∞ óδσ«ñá ºá úαá¡¿µδ «¬¡á.  Å«¼¡¿ΓÑ,  τΓ« ñ½∩
  440.      ¼á¡¿»π½¿α«óá¡¿∩  φ¬αá¡«¼  ¡Ñ½∞º∩ ¿ß»«½∞º«óáΓ∞ ¡¿¬á¬¿σ ßΓá¡ñáαΓ¡δσ
  441.      ó«º¼«ª¡«ßΓÑ⌐,  »αÑñ«ßΓáó½∩Ѽδσ DOS.  ìá»α¿¼Ñα,  »α¿ ¡Ñ«íσ«ñ¿¼«ßΓ¿
  442.      óδ»«½¡¿Γ∞    "ó«ºóαáΓ    ¬áαÑΓ¬¿"   φΓ«   ñ«½ª¡«   íδΓ∞   ßñѽᡫ
  443.      ßἫßΓ«∩Γѽ∞¡«,  ó¡πΓα¿ Σπ¡¬µ¿¿;  ¡Ñ½∞º∩ »α«ßΓ« óδºóáΓ∞  DOS  ñ½∩
  444.      óδó«ñá ß««ΓóÑΓßΓóπεΘÑ⌐ »«ß½Ññ«óáΓѽ∞¡«ßΓ¿.
  445.  
  446.           ä½∩ «í½ÑúτÑ¡¿∩    ¿ñÑ¡Γ¿Σ¿¬áµ¿¿    óßÑ    «¬«¡¡δÑ    Σπ¡¬µ¿¿
  447.      óó«ñá/óδó«ñá ¡áτ¿¡áεΓß∩ ß« ß½«óá  window.  èα«¼Ñ  Γ«ú«,  óßÑ  φΓ¿
  448.      Σπ¡¬µ¿¿ ó ¬áτÑßΓóÑ ßó«Ñú« »Ñαó«ú« áαúπ¼Ñ¡Γá »α¿¡¿¼áεΓ ¡«¼Ñα «¬¡á,
  449.      ¬ ¬«Γ«α«¼π «ßπΘÑßΓó½∩ÑΓß∩ ñ«ßΓπ».
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  481. â½áóá II                                                       -- 9 --
  482.  
  483.  
  484.                   öπ¡¬µ¿∩ »«º¿µ¿«¡¿α«óá¡¿∩ ¬παß«αá ó «¬¡Ñ.
  485.      -----------------------------------------------------------------
  486.  
  487.           é«º¼«ª¡«, ¬«¼π-Γ« φΓ« »«¬áªÑΓß∩ ßΓαá¡¡δ¼, ¡« »Ñαóá∩ Σπ¡¬µ¿∩,
  488.      ó ¬«Γ«α«⌐ ó«º¡¿¬áÑΓ »«ΓαÑí¡«ßΓ∞,  φΓ« «¬«¡¡δ⌐ φ¬ó¿óá½Ñ¡Γ  Σπ¡¬µ¿¿
  489.      goto_xy().  ÄíΩ∩ߡѡ¿Ñ  φΓ«¼π  «τÑ¡∞  »α«ßΓ«Ñ.  Å«ß¬«½∞¬π «¬«¡¡δÑ
  490.      Σπ¡¬µ¿¿  óó«ñá/óδó«ñá   ñ«½ª¡δ   ßἫßΓ«∩Γѽ∞¡«   »«º¿µ¿«¡¿α«óáΓ∞
  491.      ¬παß«α, Γ« ñ«½ªÑ¡ ßπΘÑßΓó«óáΓ∞ ¡Ñ¬«Γ«αδ⌐ ß»«ß«í πßΓᡫ󬿠¬παß«αá
  492.      ó  ¡πª¡πε  »«º¿µ¿ε.  öπ¡¬µ¿∩  window_xy(),  »αÑñßΓáó½Ñ¡¡á∩  ¡¿ªÑ,
  493.      ñѽáÑΓ  ¿¼Ñ¡¡«  φΓ«.  (ä½∩ »αÑñßΓáó½Ñ¡¡δσ ºñÑß∞ »α«úαá¼¼ αáí«Γδ ß
  494.      «¬¡á¼¿ »«º¿µ¿∩ 0,0 ß««ΓóÑΓßΓóπÑΓ ½Ñó«¼π óÑασ¡Ñ¼π πú½π «¬¡á).
  495.  
  496.  
  497.          /* ôßΓá¡«ó¿Γ∞ ¬παß«α ó «»αÑñѽѡ¡πε »«º¿µ¿ε «¬¡á.
  498.             é«ºóαáΓ¿Γ∞ 0 »α¿ óδσ«ñÑ ºá úαá¡¿µπ ¿ ¡Ñ ¡«½∞ -
  499.             ó »α«Γ¿ó¡«¼ ß½πτáÑ */
  500.  
  501.          window_xy(num, x, y,)
  502.          int num, x, y;
  503.          {
  504.            if(x<0 || x+frame[num].startx>=frame[num].endx-1)
  505.              return 0;
  506.            if(x<0 || y+frame[num].starty>=frame[num].endy-1)
  507.              return 0;
  508.            frame[num].curx = x;
  509.            frame[num].cury = y;
  510.            goto_xy(frame[num].startx+x+1, frame[num].starty+y+1);
  511.            return 1;
  512.            }
  513.  
  514.  
  515.           è½ετ«¼ ¬  »«¡¿¼á¡¿ε Σπ¡¬µ¿¿ window_xy() ∩ó½∩ÑΓß∩ ¡á»«¼¿¡á¡¿Ñ
  516.      «  Γ«¼,  τΓ«  º¡áτÑ¡¿∩  ¬««αñ¿¡áΓ  X,Y   ó¡πΓα¿   «¬¡á   «ßΓáεΓß∩
  517.      ¡Ñ¿º¼Ñ¡¡δ¼¿,  ¡Ñºáó¿ß¿¼« «Γ αáß»«½«ªÑ¡¿∩ «¬¡á ¡á φ¬αá¡Ñ.  Æ« ÑßΓ∞
  518.      ¬««αñ¿¡áΓδ X,Y óδτ¿ß½∩εΓß∩ «Γ¡«ß¿Γѽ∞¡« «¬¡á,  á ¡Ñ  «Γ¡«ß¿Γѽ∞¡«
  519.      φ¬αá¡á.  äαπú¿¼¿  ß½«óἿ,  Ñß½¿  óδ  πßΓá¡«ó¿ΓÑ  ¬παß«α ó «¬¡Ñ ó
  520.      »«º¿µ¿ε ß ¬««αñ¿¡áΓἿ 2,2,  Γ« «¡  óßÑúñá  íπñÑΓ  ¡áσ«ñ¿Γ∞ß∩  ó«
  521.      óΓ«α«⌐   ßΓα«¬Ñ  ßóÑασπ  ¿  óΓ«α«⌐  »«º¿µ¿¿  «Γ¡«ß¿Γѽ∞¡«  ½Ñó«ú«
  522.      óÑασ¡Ñú« πú½á «¬¡á, ¡Ñºáó¿ß¿¼« «Γ »«½«ªÑ¡¿∩ «¬¡á ¡á φ¬αá¡Ñ.
  523.  
  524.           öá¬Γ¿τÑ߬¿ Σπ¡¬µ¿∩  window_xy()  »α«¿ºó«ñ¿Γ   »αÑ«íαẫóá¡¿Ñ
  525.      ¬««αñ¿¡áΓ   ¬παß«αá   «Γ¡«ß¿Γѽ∞¡«  «¬¡á  ó  αÑá½∞¡δÑ  ¬««αñ¿¡áΓδ
  526.      «Γ¡«ß¿Γѽ∞¡«  φ¬αá¡á.  èα«¼Ñ  φΓ«ú«,   Σπ¡¬µ¿∩   window_xy()   ¡Ñ
  527.      »«ºó«½∩ÑΓ ¬παß«απ óδ⌐Γ¿ ºá »αÑñÑ½δ «¬¡á.
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.  
  539.  
  540.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  541. â½áóá II                                                      -- 10 --
  542.  
  543.  
  544.                   öπ¡¬µ¿∩ window_getche()
  545.      -----------------------------------------------------------------
  546.  
  547.           Åα¿  αáí«ΓÑ  ß  «¬¡á¼¿  óδ  ¡Ñ  ¼«ªÑΓÑ  ¿ß»«½∞º«óáΓ∞ Σπ¡¬µ¿ε
  548.      getche(), ¬«Γ«αá∩  ßτ¿ΓδóáÑΓ  óóÑñÑ¡¡δ⌐  ß  ¬½áó¿áΓπαδ  ß¿¼ó«½  ¿
  549.      «Γ«íαáªáÑΓ Ñú« ¡á φ¬αá¡Ñ,  »«ß¬«½∞¬π φΓ« ¼«ªÑΓ »α¿óÑßΓ¿ ¬  óδσ«ñπ
  550.      ºá »αÑñÑ½δ «¬¡á.  Å«φΓ«¼π ñ«½ª¡á íδΓ∞ ¿ß»«½∞º«óá¡á á½∞ΓÑα¡áΓ¿ó¡á∩
  551.      «¬«¡¡á∩ Σπ¡¬µ¿∩ window_getche().  ¥Γá Σπ¡¬µ¿∩  ßτ¿ΓδóáÑΓ  ß¿¼ó«½,
  552.      ¬«Γ«αδ⌐ óó«ñ¿Γß∩ ó ΓѬπΘπε »«º¿µ¿ε «¬¡á.
  553.  
  554.  
  555.         /*  éóÑßΓ¿  ß  ¬½áó¿áΓπαδ  ß¿¼ó«½  ó   «¬¡«.   é«ºóαáΓ¿Γ∞
  556.             »«½¡δ⌐ 16-αáºα∩ñ¡δ⌐ ß¬á¡-¬«ñ. */
  557.          window_getche(num)
  558.          int num;
  559.          {
  560.            union inkey {
  561.              char ch[2];
  562.              int i;
  563.            } c;
  564.  
  565.            if(!frame[num].active) return 0; /* «¬¡« ¡Ñ á¬Γ¿ó¡«Ñ */
  566.  
  567.            window_xy(num, frame[num].curx, frame[num].cury);
  568.  
  569.            c.i = bioskey(0); /* »α¿¡∩Γ∞ ß¿¼ó«½ «Γ ¬½áó¿áΓπαδ */
  570.  
  571.            if(c.ch[0]) {
  572.             switch(c.ch[0]) {
  573.              case '\r':  /* ¡áªáΓá ¬½áó¿Φá ENTER */
  574.               break;
  575.              case BKSP; /* ó«ºóαáΓ */
  576.               break;
  577.              default:
  578.            if(frame[num].cury+frame[num].starty < frame[num].endy-1) {
  579.              write_char(frame[num].startx = frame[num].curx=1,
  580.                frame[num].starty+frame[num].cury+1,c.ch[0],NORM_VID);
  581.                  frame[num].cury++;
  582.                }
  583.              }
  584.              if(frame[num].curx < 0) frame[num].curx = 0;
  585.              if(frame[num].curx+frame[num].startx > frame[num].endx-2)
  586.                frame[num].curx--;
  587.              window_xy(num, frame[num].curx, frame[num].cury);
  588.            }
  589.            return c.i;
  590.          }
  591.  
  592.           é «Γ½¿τ¿Ñ   «Γ  Σπ¡¬µ¿¿  getche(),  Σπ¡¬µ¿∩  window_getche()
  593.      ó«ºóαáΘáÑΓ »«½¡δ⌐ 16-αáºα∩ñ¡δ⌐ ß¬á¡-¬«ñ.  ¥Γ«  «º¡áτáÑΓ,  τΓ«  óδ
  594.      ¿¼ÑÑΓÑ  ñ«ßΓπ»  ¬á¬ ¬ ßΓá¡ñáαΓ¡δ¼ ¬«ñá¼ ß¿¼ó«½«ó ó ¼½áñΦ¿σ ó«ß∞¼¿
  595.      αáºα∩ñáσ,  Γᬠ¿ ¬ »«º¿µ¿«¡¡δ¼ ¬«ñá¼ ß¿¼ó«½«ó  ó  ßΓáαΦ¿σ  ó«ß∞¼¿
  596.      αáºα∩ñáσ. àß½¿ óá¼ ¡Ñ ¡πª¡δ »«º¿µ¿«¡¡δÑ ¬«ñδ, Γ« óδ ¼«ªÑΓÑ »α«ßΓ«
  597.      ¡áº¡áτ¿Γ∞   ó«ºóαáΘáѼ«Ñ   Σπ¡¬µ¿Ñ⌐   window_getche()    º¡áτÑ¡¿Ñ
  598.  
  599.  
  600.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  601. â½áóá II                                                      -- 11 --
  602.  
  603.  
  604.      ß¿¼ó«½∞¡«⌐ »ÑαѼѡ¡«⌐.
  605.  
  606.           öπ¡¬µ¿∩ αáí«ΓáÑΓ  ß½ÑñπεΘ¿¼  «íαẫ¼.  àß½¿ «¬¡« ¡Ñ ∩ó½∩ÑΓß∩
  607.      á¬Γ¿ó¡δ¼  (Γ.Ñ.  Ñú«  ¡ÑΓ  ¡á  φ¬αá¡Ñ),  Σπ¡¬µ¿∩  ó«ºóαáΘáÑΓ   0.
  608.      Å«ß¬«½∞¬π  ¬«ñ  0 ¡Ñ ¼«ªÑΓ ß««ΓóÑΓßΓó«óáΓ∞ ß¿¼ó«½π,  óóÑñÑ¡¡«¼π ß
  609.      ¬½áó¿áΓπαδ,  Γ« óáΦá »α«úαá¼¼á ß¼«ªÑΓ  «í¡áαπª¿Γ∞  φΓπ  ß¿Γπᵿε.
  610.      çáΓѼ  ¬παß«α  πßΓá¡áó½¿óáÑΓß∩  ó ßó«ε ΓѬπΘπε »«º¿µ¿ε ó «¬¡Ñ,  ¿
  611.      ßτ¿ΓδóáÑΓß∩ ¬«ñ ¡áªáΓ«⌐ ¬½áó¿Φ¿.  àß½¿ φΓ« «íδτ¡á∩ ¬½áó¿Φá,  á ¡Ñ
  612.      ¬½áó¿Φá  Γ¿»á  RETURN  ¿½¿  BACKSPASE,  ¿¡¬αÑ¼Ñ¡Γ¿απÑΓß∩  ΓѬπΘÑÑ
  613.      º¡áτÑ¡¿Ñ  »ÑαѼѡ¡«⌐  Y,  ß««ΓóÑΓßΓóπεΘÑÑ  »«½«ªÑ¡¿ε  ¬παß«αá,  ¿
  614.      ß««ΓóÑΓßΓóπεΘ¿⌐ ß¿¼ó«½ óδó«ñ¿Γß∩ ¡á φ¬αá¡.  àß½¿ ¬παß«α ¡áσ«ñ¿Γß∩
  615.      ¡á úαá¡¿µÑ «¬¡á, º¡áτÑ¡¿Ñ Y ñѬαÑ¼Ñ¡Γ¿απÑΓß∩. Å«ß½Ññ¡ÑÑ «íαáΘÑ¡¿Ñ
  616.      ¬  Σπ¡¬µ¿¿  window_xy() ¿ß»«½∞ºπÑΓß∩ ñ½∩ Γ«ú«,  τΓ«íδ »ÑαѼÑßΓ¿Γ∞
  617.      ¬παß«α ó ß½ÑñπεΘπε »«º¿µ¿ε φ¬αá¡á.
  618.  
  619.           öπ¡¬µ¿∩ window_getche ¡Ñ »«ºó«½¿Γ  óá¼  óó«ñ¿Γ∞  ß¿¼ó«½δ  ºá
  620.      úαá¡¿µÑ⌐  «¬¡á.  æ½ÑñπÑΓ  »«¼¡¿Γ∞,  τΓ«  óßÑ  «¬¡á ¿¼ÑεΓ úαá¡¿µδ,
  621.      ¬«Γ«αδÑ ¼«úπΓ ¿ ¡Ñ «Γ«íαáªáΓ∞ß∩ ∩ó¡« ó ó¿ñÑ ½¿¡¿⌐.  àß½¿  úαá¡¿µá
  622.      ¡Ñ  «Γ«íαáªáÑΓß∩,  φΓ«  º¡áτ¿Γ,  τΓ«  ñ½∩  φΓ«⌐ µÑ½¿ ¿ß»«½∞ºπÑΓß∩
  623.      ß¿¼ó«½ »α«íѽá.  ¥Γ« ¿¼ÑÑΓ ß¼δß½,  Ñß½¿ «¬¡« «Γ«íαáªáÑΓß∩ ¡á Σ«¡Ñ
  624.      ¿º«íαáªÑ¡¿∩,  ¿¼ÑεΘÑú«  ñαπú«⌐  µóÑΓ.  äáªÑ  Ñß½¿  úαá¡¿µá  ¿  ¡Ñ
  625.      «í«º¡áτÑ¡á ∩ó¡«,  Γ« ß¿¼ó«½δ óßÑ αáó¡« ¡Ñ ¼«úπΓ  «Γ«íαáªáΓ∞ß∩  ºá
  626.      »αÑñѽἿ «¬¡á.
  627.  
  628.           èᬠπΓóÑαªñáÑΓß∩ ó αáºñѽѠ1,  Σπ¡¬µ¿∩ bios_key() c»Ñµ¿Σ¿τ¡á
  629.      ñ½∩ Æπαí« æ¿.  àß½¿ óδ ¿ß»«½∞ºπÑΓÑ ñαπú«⌐ ¬«¼»¿½∩Γ«α  æ¿,  Γ«  óδ
  630.      ¼«ªÑΓÑ  ¿ß»«½∞º«óáΓ∞ óÑαß¿ε Σπ¡¬µ¿¿ bios_key(),  »αÑñßΓáó½Ñ¡¡πε ó
  631.      ú½áóÑ 1.
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  661. â½áóá II                                                      -- 12 --
  662.  
  663.  
  664.                öπ¡¬µ¿∩ window_gets()
  665.      -----------------------------------------------------------------
  666.  
  667.           ä½∩ τΓÑ¡¿∩  ßΓ᫬¿,  óóÑñÑ¡¡«⌐  ó  «¬¡«,  ¼«ª¡« ¿ß»«½∞º«óáΓ∞
  668.      »αÑñßΓáó½Ñ¡¡πε  ¡¿ªÑ  Σπ¡¬µ¿ε   window_gets().   Ä¡á   ¡Ñ   Γá¬á∩
  669.      ¿º«ΘαÑ¡¡á∩, ¬á¬ í«½∞Φ¿¡ßΓó« Σπ¡¬µ¿⌐ gets(),  ¡« ¼«ªÑΓ ß½πª¿Γ∞ ñ½∩
  670.      ¼¡«ú¿σ  µÑ½Ñ⌐.  éδ  óßÑúñá  ¼«ªÑΓÑ  αáßΦ¿α¿Γ∞  ÑÑ  Σπ¡¬µ¿«¡á½∞¡δÑ
  671.      ó«º¼«ª¡«ßΓ¿, Ñß½¿ »«ªÑ½áÑΓÑ.
  672.  
  673.  
  674.          /* æτ¿ΓáΓ∞ ßΓα«¬π ¿º «¬¡á */
  675.          void window_gets(nums, s)
  676.          int num;
  677.          char *s;
  678.          {
  679.  
  680.            char ch, *temp;
  681.  
  682.            temp = s;
  683.            for(;;) {
  684.              ch = window_getche(num);
  685.              switch(ch) {
  686.                case '\r': /* ¡áªáΓá ¬½áó¿Φá ENTER */
  687.                *s='\0';
  688.                return;
  689.              case BKSP:   /* ó«ºóαáΓ */
  690.                if(s>temp) {
  691.                  s--;
  692.                  frame[num].cury--;
  693.                  if(frame[num].cury<0) frame[num].cury = 0;
  694.                  window_xy(num, frame[num].curx, frame[num].cury);
  695.                  write_char(frame[num].startx+ frame[num].curx+1'
  696.                    frame[num].starty+frame[num].cury+1, ' ',NORM_VID);
  697.                }
  698.                break;
  699.              default: *s = ch;
  700.                s++;
  701.              }
  702.            }
  703.          }
  704.  
  705.  
  706.           Åα¿ ¡áªáΓ¿¿ ¬½áó¿Φ¿ éÇæèSPASE,  ¡Ñ«íσ«ñ¿¼« óÑα¡πΓ∞ ¬παß«α ¡á
  707.      «ñ¡π »«º¿µ¿ε ó½Ñó«,  ßΓÑαÑΓ∞ ºá»¿ßá¡¡δ⌐ Γá¼ ß¿¼ó«½ ¿ ¡á Ñú« ¼ÑßΓ«
  708.      ºá»¿ßáΓ∞ »α«íѽ.
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  721. â½áóá II                                                      -- 13 --
  722.  
  723.  
  724.                öπ¡¬µ¿∩ window_putchar()
  725.      -----------------------------------------------------------------
  726.  
  727.           Åα¿ óδó«ñÑ ß¿¼ó«½á ó «¬¡« ¡Ñ«íσ«ñ¿¼« »α«óÑα∩Γ∞,  ∩ó½∩ÑΓß∩ ½¿
  728.      «¬¡«  á¬Γ¿ó¡δ¼  ¿  ¡Ñ  óδσ«ñ¿Γ  ½¿ ß¿¼ó«½ ºá úαá¡¿µπ «¬¡á.  Å«ß½Ñ
  729.      óδó«ñá ß¿¼ó«½á ¬παß«α »α«ñó¿úáÑΓß∩ ¡á «ñ¡π »«º¿µ¿ε. éδ»«½¡∩ÑΓ φΓ¿
  730.      ñÑ⌐ßΓó¿∩ »αÑñßΓáó½Ñ¡¡á∩ ¡¿ªÑ Σπ¡¬µ¿∩ window_putchar().
  731.  
  732.  
  733.          /* éδóÑßΓ¿ ß¿¼ó«½ ó ΓѬπΘπε »«º¿µ¿ε ¬παß«αá ó ß«ºñá¡¡«¼ «¬¡Ñ.
  734.          é«ºóαáΓ¿Γ∞  0, Ñß½¿ «¬¡« ¡Ñ á¬Γ¿ó¡«Ñ, ¿ 1 - ó »α«Γ¿ó¡«¼
  735.          ß½πτáÑ */
  736.          window_putchar(num, ch)
  737.          int num;
  738.          char ch;
  739.          {
  740.            register int x, y;
  741.            char far *v;
  742.  
  743.            /* πíÑñ¿Γ∞ß∩, τΓ« «¬¡« á¬Γ¿ó¡«Ñ */
  744.            if(!frame[num].active) return 0;
  745.  
  746.            x = frame[num].curx = frame[num].startx + 1;
  747.            y = frame[num].cury = frame[num].starty + 1;
  748.  
  749.            v = vid_mem;
  750.            v += (x*160) + y*2;  /* óδτ¿ß½∩ÑΓß∩ áñαÑß */
  751.            if(y>=frame[num].endy) {
  752.              return 1;
  753.            }
  754.            if(x>=frame[num].endx) {
  755.              return 1;
  756.            }
  757.  
  758.            if(ch=='\n') {  /* ß¿¼ó«½ »ÑαÑσ«ñá ¡á ß½ÑñπεΘπε ßΓ᫬π */
  759.              x++;
  760.              y = frame[num].startx+1;
  761.              v = vid_mem;
  762.              v += (x*160) = y*2;  /* óδτ¿ß½¿Γ∞ áñαÑß */
  763.              frame[num].curx++;   /* ¡áαáßΓ¿Γ∞ x */
  764.              frame[num].cury = 0; /* ¡áαáßΓ¿Γ∞ y */
  765.            }
  766.            else {
  767.              frame[num].cury++;
  768.              *v++ = ch;           /* óδóÑßΓ¿ ß¿¼ó«½ */
  769.              *v++ =NORM_VID;      /* ¡«α¼á½∞¡δÑ áΓα¿íπΓδ ß¿¼ó«½á */
  770.            }
  771.            window_xy(num, frame[num].curx, frame[num].cury);
  772.            return 1;
  773.          }
  774.  
  775.           ¥Γá Σπ¡¬µ¿∩  ¡Ñ ºá¡¿¼áÑΓß∩ «í¡áαπªÑ¡¿Ñ¼ «Φ¿í«τ¡¡δσ ß¿Γπᵿ⌐,
  776.      ¬«úñá ß¿¼ó«½ óδσ«ñ¿Γ ºá úαá¡¿µπ «¬¡á.  æ¼δß½ φΓ«ú« ß«ßΓ«¿Γ ó Γ«¼,
  777.      τΓ«  αẼÑα  «¬¡á  ¼«ªÑΓ  ñ¿¡á¼¿τÑ߬¿  ¿º¼Ñ¡∩Γ∞ß∩ ¿ Γ« ß««íΘÑ¡¿Ñ,
  778.  
  779.  
  780.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  781. â½áóá II                                                      -- 14 --
  782.  
  783.  
  784.      ¬«Γ«α«Ñ »«¼ÑΘὫß∞ ó «¬¡« ó ß½ÑñπεΘ¿⌐  ¼«¼Ñ¡Γ  óαѼѡ¿  ¼«ªÑΓ  ¡Ñ
  785.      »«¼ÑΘáΓ∞ß∩.  é  φΓ«¼  ß½πτáÑ  Σπ¡¬µ¿∩  »α«ßΓ«  ¡Ñ  «Γ«íαáªáÑΓ  ΓÑ
  786.      ß¿¼ó«½δ, ¬«Γ«αδÑ óδσ«ñ∩Γ ºá úαá¡¿µπ «¬¡á.
  787.  
  788.           ÄíαáΓ¿ΓѠ󡿼᡿Ñ,  τΓ«  ¡áªáΓ¿Ñ  ¬½áó¿Φ¿  ó«ºóαáΓá  ¬áαÑΓ¬¿
  789.      ΓαÑíπÑΓ  »ÑαÑó«ñá  ¬παß«αá  ¬ ½Ñó«⌐ úαá¡¿µÑ «¬¡á ¿ ¡á «ñ¡π ßΓ᫬π
  790.      ó¡¿º, Ñß½¿ φΓ« ó«º¼«ª¡«.
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  841. â½áóá II                                                      -- 15 --
  842.  
  843.  
  844.                öπ¡¬µ¿∩ window_puts
  845.      -----------------------------------------------------------------
  846.  
  847.           öπ¡¬µ¿∩ window_puts óδó«ñ¿Γ ºáñá¡¡πε ßΓ᫬π ó á¬Γ¿ó¡«Ñ «¬¡«,
  848.      ¿ß»«½∞ºπ∩ »α¿ φΓ«¼ Σπ¡¬µε window_putchar().
  849.  
  850.  
  851.       /* éδóÑßΓ¿ ßΓ᫬π, ¡áτ¿¡á∩ ß ΓѬπΘÑ⌐ »«º¿µ¿¿ ¬παß«αá ó «¬¡Ñ.
  852.                                                          /* 60 */
  853.          é«ºóαáΓ¿Γ∞ 0, Ñß½¿ «¬¡« ¡Ñ á¬Γ¿ó¡«Ñ ¿ 1 ó »α«Γ¿ó¡«¼ ß½πτáÑ */
  854.  
  855.          window_puts(num, str)
  856.          int num;
  857.          char *str;
  858.          {
  859.  
  860.            /* πíÑñ¿Γ∞ß∩, τΓ« «¬¡« á¬Γ¿ó¡«Ñ */
  861.            if(!frame[num].active) return 0;
  862.  
  863.            for( ; *str; str++)
  864.              window_putchar(num, *str);
  865.            return 1;
  866.          }
  867.  
  868.  
  869.  
  870.  
  871.  
  872.  
  873.  
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  901. â½áóá II                                                      -- 16 --
  902.  
  903.  
  904.                ä«»«½¡¿Γѽ∞¡δÑ Σπ¡¬µ¿¿ π»αáó½Ñ¡¿∩ φ¬αá¡«¼.
  905.      -----------------------------------------------------------------
  906.  
  907.           Åα¿ αáí«ΓÑ  ß  «¬¡á¼¿  ΓᬪѠ ¿ß»«½∞ºπεΓß∩ ß½ÑñπεΘ¿Ñ Σπ¡¬µ¿¿
  908.      π»αáó½Ñ¡¿∩ φ¬αá¡«¼:
  909.  
  910.           öπ¡¬µ¿∩             ìạáτÑ¡¿Ñ
  911.          ---------            ------------
  912.         window cls()          «τ¿ΘáÑΓ «¬¡«
  913.         window cleol()        «τ¿ΘáÑΓ τáßΓ∞ «¬¡á «Γ ΓѬπΘÑ⌐ »«º¿µ¿¿
  914.                               ñ« ¬«¡µá ßΓ᫬¿
  915.         window_upline()       »ÑαѼÑΘáÑΓ ¬παß«α ¡á «ñ¡π ßΓ᫬π óóÑασ
  916.         window_downline()     »ÑαѼÑΘáÑΓ ¬παß«α ¡á «ñ¡π ßΓ᫬π ó¡¿º
  917.         window_bksp()         »ÑαѼÑΘáÑΓ ¬παß«α ¡á «ñ¡π »«º¿µ¿ε ó½Ñó«
  918.  
  919.           ¥Γ¿ Σπ¡¬µ¿¿  »αÑñßΓáó½Ñ¡δ  ¡¿ªÑ.  æ½Ññπ∩  ¿ß»«½∞ºπÑ¼δ¼ ó ¡¿σ
  920.      «íΘ¿¼  »α¿¡µ¿»á¼,  óδ  ¼«ªÑΓÑ  ß«ºñáΓ∞  ßó«¿  Σπ¡¬µ¿¿  π»αáó½Ñ¡¿∩
  921.      φ¬αá¡«¼.
  922.  
  923.  
  924.          /* Äτ¿ßΓ¿Γ∞ «¬¡« */
  925.          void window_cls(num)
  926.          int num;
  927.          {
  928.  
  929.            register int i,j;
  930.            char far *v, far *t;
  931.  
  932.            v = vid_mem;
  933.            t = v;
  934.            for(i=frame[num].starty+1; i<frame[num].endy; i++)
  935.              for(j=frame[num].startx+1; j<frame[num].endx; j++) {
  936.                v = t;
  937.                v += (j*160) + i*2;
  938.                *v++ = ' ';     /* óδóÑßΓ¿ »α«íѽ */
  939.                *v =  NORM_VID; /* ¡«α¼á½∞¡δÑ ó¿ñÑ«áΓα¿íπΓδ */
  940.              }
  941.              frame[num].curx = 0;
  942.              frame[num].cury = 0;
  943.            }
  944.  
  945.            /* «τ¿ßΓ¿Γ∞ ñ« ¬«¡µá ßΓ᫬¿ */
  946.            void window_cleol(num)
  947.            int num;
  948.            {
  949.              register int i, x, y;
  950.  
  951.              x = frame[num].curx;
  952.              y = frame[num].cury;
  953.              window_xy(num, frame[num].curx, frame[num].cury);
  954.  
  955.              for(i=frame[num].cury; i<frame[num].endy-1; i++)
  956.                window_putchar(num,' ');
  957.              window_xy(num, x, y);
  958.  
  959.  
  960.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  961. â½áóá II                                                      -- 17 --
  962.  
  963.  
  964.            }
  965.  
  966.      /* ÅÑαѼÑßΓ¿Γ∞ ¬παß«α ¡á «ñ¡π ßΓ᫬π óóÑασ. é«ºóαáΓ¿Γ∞ ¡Ñ¡π½Ñó«⌐
  967.         ¬«ñ ó ß½πτáÑ πß»Ñσá ¿ 0 - ó »α«Γ¿ó¡«¼ ß½πτáÑ */
  968.            window_upline(num)
  969.            int num;
  970.            {
  971.              if(frame[num].curx>0) {
  972.                frame[num].curx--;
  973.                window_xy(num, frame[num].curx, frame[num].cury);
  974.                return 1;
  975.              }
  976.              return 0;
  977.            }
  978.  
  979.            window_downline(num)
  980.            int num;
  981.            {
  982.              if(frame[num].curx<frame[num].endx-frame[num].startx-1) {
  983.                frame[num].curx++;
  984.                window_xy(num, frame[num].curx, frame[num].cury);
  985.                return 1;
  986.              }
  987.              return 1;
  988.            }
  989.  
  990.            /* ßΓÑαÑΓ∞ »αÑñδñπΘ¿⌐ ß¿¼ó«½ */
  991.            window_bksp(num)
  992.            int num;
  993.            {
  994.              if(frame[num].cury>0) {
  995.              frame[num].cury--;
  996.              window_xy(num, frame[num].curx, frame[num].cury);
  997.              window_putchar(num, ' ');
  998.              frame[num].cury--;
  999.              window_xy(num, frame[num].curx, frame[num].cury);
  1000.            }
  1001.          }
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1021. â½áóá II                                                      -- 18 --
  1022.  
  1023.  
  1024.             êº¼Ñ¡Ñ¡¿Ñ αẼÑαá ¿ »«½«ªÑ¡¿∩  «¬¡á  ó«  óαѼ∩
  1025.             óδ»«½¡Ñ¡¿∩  »α«úαá¼¼δ
  1026.      -----------------------------------------------------------------
  1027.  
  1028.           ò«Γ∩ Σπ¡¬µ¿∩  make_window()  ¿  ¿ß»«½∞ºπÑΓß∩  ñ½∩  πßΓá¡«ó¬¿
  1029.      ¡áτá½∞¡δσ  αẼÑα«ó  ¿  »«½«ªÑ¡¿∩  «¬¡á  ¡á  φ¬αá¡Ñ,  «ñ¡á¬«  φΓ¿
  1030.      »áαá¼ÑΓαδ   ¼«úπΓ  ñ¿¡á¼¿τÑ߬¿  ¿º¼Ñ¡∩Γ∞ß∩  ó«  óαѼ∩  óδ»«½¡Ñ¡¿∩
  1031.      »α«úαá¼¼δ.   êº¼Ñ¡Ñ¡¿Ñ   «ñ¡«ú«   ¿½¿   í«½ÑÑ   »áαá¼ÑΓα«ó   «¬¡á
  1032.      »α«¿ºó«ñ¿Γß∩ »« ¬«¼á¡ñá¼,  »«ßΓπ»áεΘ¿¼ «Γ »«½∞º«óáΓѽ∩.  Åα¿ φΓ«¼
  1033.      ΓѬπΘÑÑ  «¬¡«  π¡¿τΓ«ªáÑΓß∩   ¿   ó«ßß«ºñáÑΓß∩   πªÑ   ß   ¡«ó묨
  1034.      »áαá¼ÑΓαἿ.  ÅαÑñßΓáó½Ñ¡¡δÑ  ¡¿ªÑ  »α«úαá¼¼δ size() ¿ move() ¬á¬
  1035.      αẠ¿ ¿ß»«½∞ºπεΓß∩ ñ½∩ ¿º¼Ñ¡Ñ¡¿∩ αẼÑα«ó ¿ »«½«ªÑ¡¿∩  «¬¡á.  ä½∩
  1036.      ¿º¼Ñ¡Ñ¡¿∩   Σ«α¼δ   ¿  »«½«ªÑ¡¿∩  «¬¡á  ¿ß»«½∞ºπεΓß∩  ¬½áó¿Φ¿  ß«
  1037.      ßΓαѽ¬á¼¿, á ΓᬪѠ¬½áó¿Φ¿ HOME, END, PGDN ¿ PGUP.
  1038.  
  1039.          /* ê¡ΓÑαá¬Γ¿ó¡«Ñ ¿º¼Ñ¡Ñ¡¿Ñ αẼÑαá «¬¡á */
  1040.          void size(num)
  1041.          int num;
  1042.          {
  1043.            char ch;
  1044.            int x, y, startx, starty;
  1045.  
  1046.            /* á¬Γ¿ó¿α«óáΓ∞, Ñß½¿ ¡Ñ«íσ«ñ¿¼« */
  1047.            if(!frame[num].active) window(num);
  1048.            startx = x = frame[num].startx;
  1049.            starty = y = frame[num].starty;
  1050.            window_xy(num, 0, 0);
  1051.  
  1052.            do {
  1053.              ch = get_special();
  1054.              switch(ch) {
  1055.                case 75:     /* ó½Ñó« */
  1056.                  starty--;
  1057.                  break;
  1058.                case 77:     /* ó»αáó« */
  1059.                  starty++;
  1060.                  break;
  1061.                case 72:     /* óóÑασ */
  1062.                  startx--;
  1063.                  break;
  1064.                case 80:     /* ó¡¿º */
  1065.                  startx++;
  1066.                  break;
  1067.                case 71:     /* ó½Ñó« óóÑασ */
  1068.                  startx--;starty--;
  1069.                  break;
  1070.                case 73:     /* ó»αáó« óóÑασ */
  1071.                  startx--;starty++;
  1072.                  break;
  1073.                case 79:     /* ó½Ñó« ó¡¿º */
  1074.                  startx++;starty--;
  1075.                  break;
  1076.                case 81:     /* ó»αáó« ó¡¿º */
  1077.                  startx++;starty++;
  1078.  
  1079.  
  1080.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1081. â½áóá II                                                      -- 19 --
  1082.  
  1083.  
  1084.                  break;
  1085.                case 60:
  1086.                     /* F2: «Γ¼Ñ¡¿Γ∞ ¿ óÑα¡πΓ∞ß∩ ¬ ¿ßσ«ñ¡«¼π αẼÑαπ */
  1087.                  startx = x;
  1088.                  starty = y;
  1089.                  ch = 59;
  1090.              }
  1091.  
  1092.              /* ß¼«Γα¿ »α¿ óδσ«ñÑ ºá ñ¿á»áº«¡ */
  1093.              if(startx<0) startx++;
  1094.              if(startx>=frame[num].endx) startx--;
  1095.              if(starty<0) starty++;
  1096.              if(starty>=frame[num].endy) starty--;
  1097.              deactivate(num);  /* ßΓÑαÑΓ∞ «¬¡« ßΓáα«ú« αẼÑαá */
  1098.              frame[num].startx = startx;
  1099.              frame[num].starty = starty;
  1100.              window(num);      /* óδóÑßΓ¿ «¬¡« ß ¡«óδ¼ αẼÑα«¼ */
  1101.            } while(ch!=59);  /* F1 ñ½∩ »«ñΓóÑαªñÑ¡¿∩ ¡«ó«ú« αẼÑαá */
  1102.            deactivate(num);
  1103.          }
  1104.  
  1105.  
  1106.          /* ê¡ΓÑαá¬Γ¿ó¡«Ñ »ÑαѼÑΘÑ¡¿Ñ «¬¡á */
  1107.          void move(num)
  1108.          int num;
  1109.          {
  1110.            char ch;
  1111.            int x, y, ex, ey, startx, starty, endx, endy;
  1112.  
  1113.            /* á¬Γ¿ó¿α«óáΓ∞, Ñß½¿ ¡Ñ«íσ«ñ¿¼« */
  1114.            if(!frame[num].active) window(num);
  1115.            startx = x = frame[num].startx;
  1116.            starty = y = frame[num].starty;
  1117.            endx = ex = frame[num].endx;
  1118.            endy = ey = frame[num].endy;
  1119.            window_xy(num, 0, 0);
  1120.  
  1121.            do {
  1122.              ch = get_special();
  1123.              switch(ch) {
  1124.                case 75:     /* ó½Ñó« */
  1125.                  starty--;
  1126.                  endy--;
  1127.                  break;
  1128.                case 77:     /* ó»αáó« */
  1129.                  starty++;
  1130.                  endy++;
  1131.                  break;
  1132.                case 72:     /* óóÑασ */
  1133.                  startx--;
  1134.                  endx--;
  1135.                  break;
  1136.                case 80:     /* ó¡¿º */
  1137.                  startx++;
  1138.  
  1139.  
  1140.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1141. â½áóá II                                                      -- 20 --
  1142.  
  1143.  
  1144.                  endx++;
  1145.                  break;
  1146.                case 71:     /* ó½Ñó« óóÑασ */
  1147.                  startx--;starty--;
  1148.                  endx--;endy--;
  1149.                  break;
  1150.                case 73:     /* ó»αáó« óóÑασ */
  1151.                  startx--;starty++;
  1152.                  endx--;endy++;
  1153.                  break;
  1154.                case 79:     /* ó½Ñó« ó¡¿º */
  1155.                  startx++;starty--;
  1156.                  endx++;endy--;
  1157.                  break;
  1158.                case 81:     /* ó»αáó« ó¡¿º */
  1159.                  startx++;starty++;
  1160.                  endx++;endy++;
  1161.                  break;
  1162.        case 60:     /* F2: «Γ¼Ñ¡¿Γ∞ ¿ óÑα¡πΓ∞ß∩ ¬ ¿ßσ«ñ¡«¼π αẼÑαπ */
  1163.                  startx = x;
  1164.                  starty = y;
  1165.                  endx = ex;
  1166.                  endy = ey;
  1167.                  ch = 59;
  1168.              }
  1169.  
  1170.              /* ß¼«Γα¿ »α¿ óδσ«ñÑ ºá ñ¿á»áº«¡«¼ */
  1171.              if(startx<0) {
  1172.                startx++;
  1173.                endx++;
  1174.              }
  1175.              if(endx>=25) {
  1176.                startx--;
  1177.                endx--;
  1178.              }
  1179.              if(starty<0) {
  1180.                starty++;
  1181.                endy++;
  1182.              }
  1183.              if(endy>=79) {
  1184.                starty--;
  1185.                endx--;
  1186.              }
  1187.              /* ßΓÑαÑΓ∞ «¬¡« ó ßΓáα«⌐ »«º¿µ¿¿ */
  1188.              deactivate(num);
  1189.              frame[num].startx = startx;
  1190.              frame[num].starty = starty;
  1191.              frame[num].endx = endx;
  1192.              frame[num].endy = endy;
  1193.              /* óδóÑßΓ¿ «¬¡« ó ¡«óπε »«º¿µ¿ε */
  1194.              window(num);
  1195.              } while(ch!=59);  /* F1 ñ½∩ »«ñ∞óÑαªñÑ¡¿∩ ¿º¼Ñ¡Ñ¡¿∩ */
  1196.            deactivate(num);
  1197.          }
  1198.  
  1199.  
  1200.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1201. â½áóá II                                                      -- 21 --
  1202.  
  1203.  
  1204.  
  1205.           Åα¿ ¿ß»«½∞º«óá¡¿¿ ¬á¬ Σπ¡¬µ¿¿ size(),  Γᬠ¿ Σπ¡¬µ¿¿  move()
  1206.      »«ß½Ñ  ºáóÑαΦÑ¡¿∩  ¿º¼Ñ¡Ñ¡¿∩  »áαá¼ÑΓα«ó «¬¡á ¡áª¼¿ΓÑ ¬½áó¿Φπ F1.
  1207.      Ä¬¡« íπñÑΓ ¿¼ÑΓ∞ πßΓá¡«ó½Ñ¡¡δÑ αẼÑαδ  ¿  »«½«ªÑ¡¿Ñ  »α¿  ¬áªñ«⌐
  1208.      »«ß½ÑñπεΘÑ⌐ á¬Γ¿óᵿ¿ ¿ ñ« ΓÑσ »«α, »«¬á óδ ¡Ñ ¿º¼Ñ¡¿ΓÑ ¿σ ß¡«óá.
  1209.      ä½∩ »αÑαδóá¡¿∩ óδ»«½¡Ñ¡¿∩ «íÑ¿σ Σπ¡¬µ¿⌐ ¿ß»«½∞ºπÑΓß∩  ¬½áó¿Φá F2,
  1210.      »α¿ φΓ«¼ «¬¡« ß«σαá¡∩ÑΓ ßΓáαδÑ º¡áτÑ¡¿∩ αẼÑα«ó ¿ »«½«ªÑ¡¿∩. Åα¿
  1211.      ¿ß»«½∞º«óá¡¿¿ φΓ¿σ Σπ¡¬µ¿⌐  ñ«»π߬áÑΓß∩,  τΓ«íδ  «¬¡á,  ó  ¼«¼Ñ¡Γ
  1212.      ¿º¼Ñ¡Ñ¡¿∩ ¿σ αẼÑα«ó ¿½¿ »«½«ªÑ¡¿∩ ¡Ñ«í∩ºáΓѽ∞¡« í뫨 á¬Γ¿ó¡δ¼¿.
  1213.  
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1261. â½áóá II                                                      -- 22 --
  1262.  
  1263.  
  1264.           æ«ºñá¡¿Ñ »α¿¬½áñ¡δσ »α«úαá¼¼, ¿ß»«½∞ºπεΘ¿σ óß»½δóáεΘ¿Ñ «¬¡á
  1265.      -----------------------------------------------------------------
  1266.  
  1267.           Éáí«Γá∩ ß «¬¡á¼¿ «τÑ¡∞ ó᪡« »«¼¡¿Γ∞,  τΓ« »α¿  óó«ñÑ-óδó«ñÑ
  1268.      ñ«½ª¡δ  ¿ß»«½∞º«óáΓ∞ß∩ ß»Ñµ¿á½∞¡δÑ «¬«¡¡δÑ Σπ¡¬µ¿¿. êß»«½∞º«óá¡¿Ñ
  1269.      ñ½∩ φΓ¿σ µÑ½Ñ⌐ ßΓá¡ñáαΓ¡δσ  Σπ¡¬µ¿⌐  æ¿  ταÑóáΓ«  ¡Ñ»α¿∩Γ¡«ßΓ∩¼¿,
  1270.      »«Γ«¼π  τΓ«  ß«ºñáÑΓ ó«º¼«ª¡«ßΓ∞ ¡áαπΦÑ¡¿∩ úαá¡¿µδ «¬¡á.  Ä¬«¡¡«⌐
  1271.      Σπ¡¬µ¿¿,  á¡á½«ú¿τ¡«⌐ »« óδ»«½¡∩Ñ¼δ¼ ñÑ⌐ßΓó¿∩¼  Σπ¡¬µ¿¿  prinf(),
  1272.      αáºαáí«Γá¡« ¡Ñ í佫,  ¿ óδ,  ó«º¼«ª¡«,  ºáσ«Γ¿ΓÑ ß«ºñáΓ∞ ñ½∩ φΓ¿σ
  1273.      µÑ½Ñ⌐ ßó«ε ß«íßΓóÑ¡¡πε Σπ¡¬µ¿ε.  ì« »α«ßΓÑ⌐Φ¿⌐  ß»«ß«í  óδó«ñá  ó
  1274.      «¬¡« ñá¡¡δσ, Γ¿» ¬«Γ«αδσ «Γ½¿τÑ¡ «Γ ß¿¼ó«½«ó ¿ ßΓ᫬, ºá¬½ετáÑΓß∩
  1275.      ó   ¿ß»«½∞º«óá¡¿¿   ßΓá¡ñáαΓ¡«⌐    æ¿-Σπ¡¬µ¿¿    sprintf()    ñ½∩
  1276.      »αÑ«íαẫóá¡¿∩ ½εíδσ Γ¿»«ó ñá¡¡δσ ó ßΓ᫬𠫻αÑñѽѡ¡«ú« Σ«α¼áΓá,
  1277.      á ºáΓѼ ó óδó«ñÑ φΓ«⌐ ßΓ᫬¿ ó «¬¡« ß »«¼«Θ∞ε Σπ¡¬µ¿¿ window_puts
  1278.      ().  Ç¡á½«ú¿τ¡δ⌐  ß»«ß«í  »«ºó«½∩ÑΓ  óó«ñ¿Γ∞ ñá¡¡δÑ,  «Γ½¿τ¡δÑ «Γ
  1279.      ß¿¼ó«½«ó  ¿  ßΓ᫬.  Åα¿  φΓ«¼  Σπ¡¬µ¿∩  window_gets()  ßτ¿ΓδóáÑΓ
  1280.      ñá¡¡δÑ,   á  »α¿ó«ñ¿Γ  ¿σ  ¬  ß««ΓóÑΓßΓóπεΘѼπ  Γ¿»π  ßΓá¡ñáαΓ¡á∩
  1281.      æ¿-Σπ¡¬µ¿∩ sscanf(), ¬«Γ«αá∩ óδ»«½¡∩ÑΓ »αÑ«íαẫóá¡¿Ñ »«ßΓπ»áεΘ¿σ
  1282.      «Γ ¬½áó¿áΓπαδ ñá¡¡δσ.
  1283.  
  1284.           êº«íαáªÑ¡¿Ñ ó   «¬¡Ñ   «íδτ¡«   Σ«α¼¿απÑΓß∩   ñαπú«⌐  τáßΓ∞ε
  1285.      »α«úαá¼¼δ,  ¡Ñ Γ«⌐,  ¬«Γ«αá∩ ß«ñÑαª¿Γ Σπ¡¬µ¿¿ π»αáó½Ñ¡¿∩  «¬¡á¼¿.
  1286.      Äíδτ¡« φΓ« ñѽáÑΓß∩ ó Σπ¡¬µ¿¿ main() ¿½¿ ó Σπ¡¬µ¿¿ ¿¡¿µ¿á½¿ºáµ¿¿,
  1287.      ¬«Γ«αá∩ óδºδóáÑΓß∩ ó ¡áτá½Ñ »α«úαá¼¼δ. ÅαÑñ½áúáѼ óáΦѼπ ó¡¿¼á¡¿ε
  1288.      Γα¿ »α«ßΓδÑ »α«úαá¼¼δ, ¿ß»«½∞ºπεΘ¿Ñ «¬¡á.
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1321. â½áóá II                                                      -- 23 --
  1322.  
  1323.  
  1324.                  Åα«úαἼᠠ»αÑ«íαẫóá¡¿∩  ¿º  ñÑß∩Γ¿τ¡«⌐
  1325.                  ó ΦÑßΓ¡áñµáΓ¿α¿τ¡πε ß¿ßΓѼπ ßτ¿ß½Ñ¡¿∩.
  1326.      -----------------------------------------------------------------
  1327.  
  1328.          /* äÑß∩Γ¿τ¡«-ΦÑßΓ¡áñµáΓ¿α¿τ¡δ⌐ »αÑ«íαẫóáѽ∞ */
  1329.          void dectohex()
  1330.          {
  1331.            char in[80], out[80]
  1332.            int n;
  1333.  
  1334.            window(1);
  1335.            do {
  1336.              window_xy(1, 0, 0)  /* »ÑαÑ⌐Γ¿ ¬ »Ñαó«⌐ ßΓα«¬Ñ */
  1337.              window_cleol(1);    /* «τ¿ßΓ¿Γ∞ ßΓ᫬π */
  1338.  
  1339.              window_puts(1, "dec: "); /* »α«¼»ΓÑα */
  1340.              window_gets(1, in);      /* ßτ¿ΓáΓ∞ τ¿ß½« */
  1341.             window_putchar(1,  '\n'); /* »ÑαÑ⌐Γ¿ ¬ ß½ÑñπεΘÑ⌐ ßΓα«¬Ñ */
  1342.              window_cleol(1);          /* «τ¿ßΓ¿Γ∞ ÑÑ */
  1343.           sscanf(in,"%d", &n); /* »αÑ«íαẫóáΓ∞ ó« ó¡πΓαÑ¡¿⌐ Σ«α¼áΓ */
  1344.              sprintf(out, "%s%X", "hex: ",n);  /* »αÑ«íαẫóáΓ∞ ó
  1345.                                   ΦÑßΓ¡áñµáΓ¿α¿τ¡«Ñ »αÑñßΓáó½Ñ¡¿Ñ */
  1346.             window_puts(1, out); /* óδóÑßΓ¿ ΦÑßΓ¡áñµáΓ¿α¿τ¡«Ñ τ¿ß½« */
  1347.            } while(*in);
  1348.            deactivate(1);
  1349.          }
  1350.  
  1351.           öπ¡¬µ¿∩ á¬Γ¿ó¿απÑΓ  ßó«Ñ  «¬¡«,  á  ºáΓѼ  ó µ¿¬½Ñ »α¿¡¿¼áÑΓ
  1352.      ñÑß∩Γ¿τ¡δÑ τ¿ß½á ¿ óδó«ñ¿Γ ¿σ ΦÑßΓ¡áñµáΓ¿α¿τ¡δÑ  φ¬ó¿óá½Ñ¡Γδ,  ñ«
  1353.      ΓÑσ »«α,  »«¬á  »«½∞º«óáΓѽ∞  ¡Ñ  ¡áª¼ÑΓ  éó«ñ  ó «ΓóÑΓ ¡á ºá»α«ß
  1354.      ñÑß∩Γ¿τ¡«ú«  τ¿ß½á.  ÅÑαÑñ   ó«ºóαáΓ«¼   ¿º   Σπ¡¬µ¿¿   ÑÑ   «¬¡«
  1355.      ñÑá¬Γ¿ó¿απÑΓß∩.
  1356.  
  1357.  
  1358.  
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1381. â½áóá II                                                       -- 24 --
  1382.  
  1383.  
  1384.                èá½∞¬π½∩Γ«α ß τÑΓδα∞¼∩ Σπ¡¬µ¿∩¼¿.
  1385.      -----------------------------------------------------------------
  1386.           ÄτÑ¡∞ »«ñσ«ñ∩ΘÑ⌐   ¿   »«»π½∩α¡«⌐   «í½áßΓ∞ε   ¿ß»«½∞º«óá¡¿∩
  1387.      óß»½δóáεΘ¿σ   «¬«¡   ∩ó½∩εΓß∩   »α«úαá¼¼δ   ¬á½∞¬π½∩Γ«α«ó.  çñÑß∞
  1388.      »αÑñßΓáó½Ñ¡á »α«úαá¼¼á ßΓѬ«ó«ú« ¬á½∞¬π½∩Γ«αá.  ¥Γ« «º¡áτáÑΓ, τΓ«
  1389.      »α¿ αáí«ΓÑ ß ¡¿¼ óδ ñ«½ª¡δ ß¡áτá½á óó«ñ¿Γ∞ «»Ñαá¡ñδ, á ºáΓѼ º¡á¬
  1390.      «»Ñαᵿ¿ (Γ.¡. »«ßΓΣ¿¬ß¡á∩ ºá»¿ß∞). Ä»Ñαá¡ñδ »«¼ÑΘáεΓß∩ ó ßΓѬ. é
  1391.      ¬áªñδ⌐  ¼«¼Ñ¡Γ óαѼѡ¿ óδ»«½¡∩ÑΓß∩ «»Ñαᵿ∩ ¡áñ ñóπ¼∩ «»Ñαá¡ñἿ.
  1392.      Åα¿  φΓ«¼  «»Ñαá¡ñδ  ¿ºó½Ñ¬áεΓß∩  ¿º  ßΓѬá,  αѺπ½∞ΓáΓ  «»Ñαᵿ¿
  1393.      «Γ«íαáªáÑΓß∩ ¿ »«¼ÑΘáÑΓß∩ ó ßΓѬ.  ìá»α¿¼Ñα,  ñ½∩ Γ«ú«, óδτ¿ß½¿Γ∞
  1394.      αѺπ½∞ΓáΓ óδαáªÑ¡¿∩ (10+5)/5,  óδ ß¡áτá½á ñ«½ª¡δ óóÑßΓ¿ 10, ºáΓѼ
  1395.      5, ºáΓѼ º¡á¬ +. ÉѺπ½∞ΓáΓ φΓ«⌐ «»Ñαᵿ¿, τ¿ß½« 15, íπñÑΓ óδóÑñÑ¡
  1396.      ¡á ñ¿ß»½Ñ⌐ ¿ »«¼ÑΘÑ¡ ó óÑαΦ¿¡π ßΓѬá.  çáΓѼ óδ óó«ñ¿ΓÑ 5 ¿  º¡á¬
  1397.      /.  ÄΓ«íαáªáÑΓß∩  αѺπ½∞ΓáΓ  3.  æΓѬ αáßßτ¿Γá¡ ¡á 100 φ½Ñ¼Ñ¡Γ«ó.
  1398.      î«ª¡« óó«ñ¿Γ∞ ¡Ñ߬«½∞¬« «»Ñαá¡ñ«ó »ÑαÑñ º¡á¬«¼  «»Ñαᵿ¿. öπ¡¬µ¿∩
  1399.      calc(),  á ΓᬪѠ»«ñ»α«úαá¼¼δ push() ¿ pop() ñ½∩ αáí«Γδ ß« ßΓѬ«¼
  1400.      »α¿ó«ñ∩Γß∩ ¡¿ªÑ.  ò«Γ∩ φΓá óÑαß¿∩  »α«úαá¼¼δ  αáí«ΓáÑΓ  Γ«½∞¬«  ß
  1401.      µÑ½δ¼¿ τ¿ß½á¼¿,  óδ ½Ñú¬« ¼«ªÑΓÑ ¿º¼Ñ¡¿Γ∞ ÑÑ Γᬿ¼ «íαẫ¼, τΓ«íδ
  1402.      «¡á αáí«Γá½á ß ñÑ⌐ßΓó¿Γѽ∞¡δ¼¿ τ¿ß½á¼¿.
  1403.  
  1404.          #define MAX 100
  1405.          int *p;  /* π¬áºáΓѽ∞ ßΓѬá */
  1406.          int *tos;  /* π¬áºáΓѽ∞ óÑαΦ¿¡δ ßΓѬá */
  1407.          int *bos;  /* π¬áºáΓѽ∞ ñ¡á ßΓѬá */
  1408.  
  1409.      /* ßΓѬ«óδ⌐, ß »«ßΓΣ¿¬ß¡«⌐ ºá»¿ß∞ε ¬á½∞¬π½∩Γ«α ß τÑΓδα∞¼∩
  1410.         Σπ¡¬µ¿∩¼¿ */
  1411.          void calc()
  1412.          {
  1413.            chra in[80], out[80];
  1414.            int answer, stack[MAX];
  1415.            int a,b;
  1416.  
  1417.            p = stack;
  1418.            tos = p;
  1419.            bos = p+MAX-1;
  1420.  
  1421.            window(2);
  1422.            do {
  1423.               window_xy(2, 0,0);
  1424.               window_cleol(2);
  1425.               window_puts(2, ": "); /* »α«¼»ΓÑα ¬á½∞¬π½∩Γ«αá */
  1426.               window_gets(2, in);
  1427.               window_puts(2, "\n ");
  1428.               window_cleol(2);
  1429.               switch(*in) {
  1430.                 case '+':
  1431.                   a = pop();
  1432.                   b = pop();
  1433.                   answer = a+b;
  1434.                   push(a+b);
  1435.                   break;
  1436.                 case '-':
  1437.                   a = pop();
  1438.  
  1439.  
  1440.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1441. â½áóá II                                                       -- 25 --
  1442.  
  1443.  
  1444.                   b = pop();
  1445.                   answer = b-a;
  1446.                   push(b-a);
  1447.                   break;
  1448.                 case '*':
  1449.                   a = pop();
  1450.                   b = pop();
  1451.                   answer = b*a;
  1452.                   push(b*a;
  1453.                   break;
  1454.                 case '/':
  1455.                   a = pop();
  1456.                   b=pop();
  1457.                   if(a==0) {
  1458.                       window_putch("divide by 0\n");
  1459.                       break;
  1460.                     }
  1461.                     answer = b/a;
  1462.                     break;
  1463.                   default:
  1464.                     push(atoi(in));
  1465.                     continue;
  1466.                   }
  1467.                   sprintf(out, "%d", answer);
  1468.                   window_puts(2, out);
  1469.                 } while(*in);
  1470.                 deactivate(2);
  1471.               }
  1472.  
  1473.             /* Å«¼ÑßΓ¿Γ∞ τ¿ß½« ó ßΓѬ.  é«ºóαáΓ¿Γ∞ 1 ó ß½πτáÑ πß»Ñσá ¿
  1474.                0, Ñß½¿ ßΓѬ »ÑαÑ»«½¡Ñ¡ */
  1475.               push(i)
  1476.               int i;
  1477.               {
  1478.                 if(p>bos) return 0;
  1479.  
  1480.                 *p=i;
  1481.                 p++;
  1482.                 return 1;
  1483.               }
  1484.  
  1485.               /* êºó½Ñτ∞ óÑασ¡¿⌐ φ½Ñ¼Ñ¡Γ ¿º ßΓѬá.  é«ºóαáΓ¿Γ∞ 0, Ñß½¿
  1486.                  ßΓѬ »ÑαÑ»«½¡Ñ¡ */
  1487.  
  1488.               pop()
  1489.               {
  1490.                 p--;
  1491.                 if(p<tos) {
  1492.                   p++;
  1493.                   return 0;
  1494.                 }
  1495.                 return *p;
  1496.              }
  1497.  
  1498.  
  1499.  
  1500.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1501. â½áóá II                                                       -- 26 --
  1502.  
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.  
  1526.  
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1561. â½áóá II                                                       -- 27 --
  1562.  
  1563.  
  1564.                éß»½δóáεΘá∩ ºá»¿ß¡á∩ ¬¡¿ª¬á
  1565.      -----------------------------------------------------------------
  1566.  
  1567.           äαπú«⌐ «τÑ¡∞ »«ñσ«ñ∩ΘÑ⌐ «í½áßΓ∞ε »α¿¼Ñ¡Ñ¡¿∩ óß»½δóáεΘ¿σ «¬«¡
  1568.      ∩ó½∩εΓß∩ »α«úαá¼¼δ Γ¿»á "ºá»¿ß¡á∩ ¬¡¿ª¬á". Åα¿ ¿ß»«½∞º«óá¡¿¿ φΓ¿σ
  1569.      »α«úαá¼¼  π óáß ¼«ªÑΓ ó«º¡¿¬¡πΓ∞ »«ΓαÑí¡«ßΓ∞ ó¡ÑßΓ¿ ¡«óπε ºá»¿ß∞.
  1570.      éßÑ, τΓ« «Γ óáß »«ΓαÑíπÑΓß∩, φΓ« á¬Γ¿ó¿º¿α«óáΓ∞ »α«úαá¼¼π, ó¡ÑßΓ¿
  1571.      ¡«óπε  ºá»¿ß∞  ¿  óÑα¡πΓ∞ß∩  ¬  Γ«¼π,  τΓ« óδ ñѽ὿ αá¡ÑÑ.  ì¿ªÑ
  1572.      »αÑñßΓáó½Ñ¡  »α¿¼Ñα  «τÑ¡∞  »α«ßΓ«⌐  »α«úαá¼¼δ   Γ¿»á   "ºá»¿ß¡á∩
  1573.      ¬¡¿ª¬á".
  1574.  
  1575.  
  1576.          #include "ctype.h"
  1577.  
  1578.          /* éß»½δóáεΘá∩ ºá»¿ß¡á∩ ¬¡¿ª¬á */
  1579.          #define MAX_NOTE 10
  1580.          #define BKSP 8
  1581.          char notes[MAX NOTE][80];
  1582.  
  1583.          void notepad()
  1584.          {
  1585.            static firs=1;
  1586.            register int i, j;
  1587.            union inkey {
  1588.              char ch[2];
  1589.              int i;
  1590.            } c;
  1591.            char ch;
  1592.  
  1593.            /* ê¡¿µ¿á½¿º¿α«óáΓ∞ ¼áßß¿ó ºá»¿ßÑ⌐, Ñß½¿ φΓ« ¡Ñ«íσ«ñ¿¼« */
  1594.            if(frist) {
  1595.              for(i=0; i<MAX_note; i++)
  1596.                *note[i] = '\0';
  1597.              frist = !frist;
  1598.            }
  1599.  
  1600.            window(3);
  1601.  
  1602.            /* óδóÑßΓ¿ ¡á φ¬αá¡ ßπΘÑßΓóπεΘ¿Ñ ºá»¿ß¿ */
  1603.            for(i=0; i<MAX_note; i++)  {
  1604.              if(*notes[i]) window_puts(3, notes[i]);
  1605.              window_putcar(3, '\n');
  1606.            }
  1607.            i=0;
  1608.            window_xy(3, 0, 0);
  1609.  
  1610.            for(;;) {
  1611.              c.i = window_getche(3);  /* ßτ¿ΓáΓ∞ ß¿¼ó«½, óóÑñÑ¡¡δ⌐ ß
  1612.                                                          ¬½áó¿áΓπαδ */
  1613.              if(tolower(c.ch[1])==59 {  /* »« F1 - ºáóÑαΦÑ¡¿Ñ */
  1614.                deactivate(3);
  1615.                break;
  1616.              }
  1617.  
  1618.  
  1619.  
  1620.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1621. â½áóá II                                                       -- 28 --
  1622.  
  1623.  
  1624.              /* Ñß½¿ «íδτ¡δ⌐ ß¿¼ó«½, Γ« ó¡ÑßΓ¿ Ñú« ó ºá»¿ß∞ */
  1625.              if(isprint(c.ch[0]) || c.ch[0]==BKSP) {
  1626.                window_cleol(3);
  1627.                notes[i][0] = c.ch[0];
  1628.                j = 1;
  1629.                window_putchar(3, notes[i][0]);
  1630.                do {
  1631.                  ch = window_getche(3);
  1632.                  if(ch==BKSP) {
  1633.                    if(j>0) {
  1634.                      j--;
  1635.                      window_bksp(3);
  1636.                    }
  1637.                  }
  1638.                  else {
  1639.                    notes[i][j] = ch;
  1640.                    j++;
  1641.                  }
  1642.                  } while(notes[i][j-1]!='\r');
  1643.                  notes[i][j-1] = '\0';
  1644.                  i++;
  1645.                  window_putchar(3, '\n');
  1646.                }
  1647.                else {             /* φΓ« ß»Ñµ¿á½∞¡á∩ ¬½áó¿Φá */
  1648.                  switch(c.ch[1]) {
  1649.                    case 72:       /* ßΓαѽ¬á óóÑασ */
  1650.                      if(i>0) {
  1651.                        i--;
  1652.                        window_upline(3);
  1653.                      }
  1654.                      break;
  1655.                    case 80:       /* ßΓαѽ¬á ó¡¿º */
  1656.                      if(i<MAX_NOTE-1) {
  1657.                        i++;
  1658.                        window_dowline(3);
  1659.                      }
  1660.                      break;
  1661.                    }
  1662.                  }
  1663.                }
  1664.              }
  1665.  
  1666.  
  1667.           öπ¡¬µ¿∩ notepad()  »«ºó«½∩ÑΓ  óó«ñ¿Γ∞  ñ«  ñÑß∩Γ¿  ßΓ᫬.  æ
  1668.      »«¼«Θ∞ε ¬½áó¿Φ UP ARROW ¿ DOWN ARROW  óδ  ¼«ª¿ΓÑ  »ÑαѼÑΘáΓ∞ß∩  ¬
  1669.      ¡πª¡«⌐ óá¼ ßΓ᫬Ñ.  æΓáα«Ñ ß«ñÑন¼«Ñ ßΓ᫬¿,  ó ¬«Γ«απε ó¡«ß¿Γß∩
  1670.      ¡«óá∩  ºá»¿ß∞,  »α¿  φΓ«¼  ßΓ¿αáÑΓß∩.  ä½∩  óδσ«ñá  ¿º  »α«úαá¼¼δ
  1671.      "ºá»¿ß¡á∩ ¬¡¿ª¬á" ¿ß»«½∞ºπÑΓß∩ ¬½áó¿Φá F1.
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1681. â½áóá II                                                       -- 29 --
  1682.  
  1683.  
  1684.                æ«ó¼ÑßΓ¡«Ñ ¿ß»«½∞º«óá¡¿Ñ óßÑσ »α«úαá¼¼
  1685.      -----------------------------------------------------------------
  1686.  
  1687.           é φΓ«¼ αáºñѽѠ»α¿ó«ñ¿Γß∩ »α«úαá¼¼á,  ó ¬«Γ«α«⌐ ¿ß»«½∞ºπεΓß∩
  1688.      óßÑ    »α«úαá¼¼δ   π»αáó½Ñ¡¿∩   «¬¡á¼¿   ¿   Σπ¡¬µ¿¿   π»αáó½Ñ¡¿∩
  1689.      ¿º«íαáªÑ¡¿Ñ¼,  »αÑñßΓáó½Ñ¡¡δÑ ó αáºñѽѠ1, á ΓᬪѠΓα¿ »α¿¬½áñ¡δσ
  1690.      »α«úαá¼¼δ,   ¿ß»«½∞ºπεΘ¿Ñ   «¬¡á.   Åα«úαἼᠠ ¿¼¿Γ¿απÑΓ  αáí«Γπ
  1691.      αÑñá¬Γ«αá  ¿  »«ºó«½∩ÑΓ  óá¼  ß  »«¼«Θ∞ε  Σπ¡¬µ¿«¡á½∞¡δσ   ¬½áó¿Φ
  1692.      á¬Γ¿ó¿α«óáΓ∞   «¬¡á  αẽ¿τ¡«ú«  ¡áº¡áτÑ¡¿∩  ¿½¿  ñѼ«¡ßΓα¿α«óáΓ∞
  1693.      αẽ¿τ¡δÑ «ß«íÑ¡¡«ßΓ¿  αáí«Γδ  ß  «¬¡á¼¿.  éδ  ¼«ªÑΓÑ  ¡Ñ¼Ññ½Ñ¡¡«
  1694.      óóÑßΓ¿ φΓπ »α«úαá¼¼π ó óáΦπ ¥éî.
  1695.  
  1696.  
  1697.          /* Å«ñ»α«úαá¼¼á π»αáó½Ñ¡¿∩ «¬¡á¼¿ ¿ »α«ßΓá∩ ñѼ«¡ßΓαᵿ«¡¡á∩
  1698.          »α«úαá¼¼á. ê¼¿Γ¿απÑΓß∩ αáí«Γá αÑñá¬Γ«αá. Æα¿ ß»Ñµ¿á½∞¡δÑ
  1699.          «¬«¡¡δÑ πΓ¿½¿Γδ ¿½½εßΓα¿απεΓ ¼«Θ∞ ¿ «τáα«óá¡¿Ñ »α«úαá¼¼,
  1700.          ¿ß»«½∞ºπεΘ¿σ óß»½δóáεΘ¿Ñ «¬¡á. ¥Γ¿¼¿ πΓ¿½¿ΓἿ ∩ó½∩εΓß∩:
  1701.          ¬á½∞¬π½∩Γ«α ß 4-¼∩ Σπ¡¬µ¿∩¼¿, ñÑß∩Γ¿τ¡«-ΦÑßΓ¡áñµáΓ¿α¿τ¡δ⌐
  1702.          »αÑ«íαẫóáΓѽ∞ ¿ óß»½δóáεΘá∩ ºá»¿ß¡á∩ ¬¡¿ª¬á.    */
  1703.          #include "stdio.h"
  1704.          #include "dos.h"
  1705.          #include "stdlib.h"
  1706.  
  1707.          #define BORDER 1
  1708.          #define ESC 27
  1709.          #define MAC_FRAME 10
  1710.          #define REV_VID 0x70
  1711.          #define NORM_VID 7
  1712.          #define BKSP 8
  1713.  
  1714.          void save_video(), restore_video(), pd_driver();
  1715.          void goto_xy(, cls(), write_string(), write_char();
  1716.          void display_header(), draw_border();
  1717.          void window_gets(), size(), move(), window_cls();
  1718.          void window_cleol(), window();
  1719.          void dectohex(), notepad(), calc();
  1720.  
  1721.          char far *vid_mem;
  1722.  
  1723.          struct window_frame {
  1724.            int startx, endx, starty, endy;
  1725.            int curx, cury;
  1726.            unsigned char *p;
  1727.            char *header;
  1728.            iht border;
  1729.            int active;
  1730.          } frame[MAX_FRAME];
  1731.  
  1732.  
  1733.          main()
  1734.          {
  1735.            union inkey {
  1736.            char ch[2];
  1737.            int i;
  1738.  
  1739.  
  1740.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1741. â½áóá II                                                       -- 30 --
  1742.  
  1743.  
  1744.          } c;
  1745.          int i;
  1746.          char ch;
  1747.  
  1748.          cls();
  1749.          goto_xy(0,0);
  1750.  
  1751.          /* »Ñαóδ¼ ñѽ«¼, ß«ºñáΓ∞ αἬ¿ «¬¡á */
  1752.       make_window(0, " Editor [Esc to exit] ", 0, 0, 24, 78, BORDER);
  1753.       make_window(1, " Decimal to Hex ", 7, 40, 10, 70, BORDER);
  1754.       make_window(2, " Calculator ", 8, 20, 12, 60, BORDER);
  1755.       make_window(3, " Notepad [F1 to exit] ", 5, 20, 17, 60, BORDER);
  1756.  
  1757.          /* ¿ß»«½∞º«óáΓ∞ window() ñ½∩ á¬Γ¿óᵿ¿ «»¿ßá¡¡«ú« «¬¡á */
  1758.          window(0);
  1759.          do {
  1760.            c.i = window_getche(0);
  1761.            ch = c.i;      /* ¿ß»«½∞º«óáΓ∞ Γ«½∞¬« ¼½áñΦ¿⌐ íá⌐Γ */
  1762.            if(ch=='\r')   /* ñ«½ªÑ¡ óδ»«½¡∩Γ∞ »ÑαÑσ«ñ ¬ ¡áτá½π
  1763.                                             ß½ÑñπεΘÑ⌐ ßΓ᫬¿ */
  1764.                window_putchar(0, '\n');
  1765.  
  1766.            switch(c.ch[1]) {   /* ß¼. »α¿ ¿ß»«½∞º«óá¡¿¿ ßΓαѽ«¬ ¿½¿
  1767.                                   Σπ¡¬µ¿«¡á½∞¡δ󠬽áó¿Φ */
  1768.              case 59: /* F1 ñѼ«¡ßΓα¿απÑΓ αáí«Γπ Σπ¡¬µ¿¿ window() */
  1769.                window(1);
  1770.                for(i=0; i<10; i++)
  1771.                  if(window_xy(1, i, i)) window_putchar(1,'X');
  1772.                  getch();
  1773.                  deactivate(1);
  1774.                  break;
  1775.                  case 60: /* F2 ñѼ«¡ßΓα¿απÑΓ ¿º¼Ñ¡Ñ¡¿Ñ αẼÑαá ¿
  1776.                                                    »«½«ªÑ¡¿∩ «¬¡á */
  1777.                  size(1);
  1778.                  move(1);
  1779.                  break;
  1780.                case 61:  /* F3 óδºδóáÑΓ ¬á½∞¬π½∩Γ«α */
  1781.                  calc();
  1782.                  break;
  1783.                case 62:    /* F4 óδºδóáÑΓ ñÑß∩Γ¿τ¡«-ΦÑßΓ¡áñµáΓ¿α¿τ¡δ⌐
  1784.                                »αÑ«íαẫóáΓѽ∞ */
  1785.                  dectohex();
  1786.                  break;
  1787.                case 63:  /*  F5 óδºδóáÑΓ ºá»¿ß¡πε ¬¡¿ª¬π */
  1788.                  notepad();
  1789.                  break;
  1790.                  case 72:  /* óóÑασ */
  1791.                  window_upline(0);
  1792.                  break;
  1793.                case 80:    /* ó¡¿º */
  1794.                  window_downline(0);
  1795.                  break;
  1796.  
  1797.                }
  1798.  
  1799.  
  1800.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1801. â½áóá II                                                       -- 31 --
  1802.  
  1803.  
  1804.              } while (ch!=ESC);
  1805.              deactivate(0);  /* πñ὿Γ∞ «¬¡« */
  1806.            }
  1807.  
  1808.  
  1809.          /***********************************************************/
  1810.          /*  Ä¬«¡¡δÑ Σπ¡¬µ¿¿                                        */
  1811.          /***********************************************************/
  1812.  
  1813.          /* éδóÑßΓ¿ ¡á φ¬αá¡ ß»π߬áεΘÑÑß∩ «¬¡« */
  1814.          void window(num)
  1815.          int num;  /* ¡«¼Ñα «¬¡á */
  1816.          {
  1817.            int vmode, choice;
  1818.            int x, y;
  1819.  
  1820.            vmode = video_mode();
  1821.            if((vmode!=2) && (vmode!=3) && (vmode!=7)) {
  1822.              printf("video must be in 80 column text mode");
  1823.              exit(1);
  1824.            }
  1825.            /* πßΓá¡«ó¿Γ∞ ß««ΓóÑΓßΓóπεΘ¿⌐ áñαÑß ó¿ñÑ«»á¼∩Γ¿ */
  1826.            if(vmode==7) vid_mem = (char far *) 0xb0000000;
  1827.            else vid_mem = (char far *) 0xb0000000;
  1828.  
  1829.            if(!frame[num].active) {  /* ¿ß»«½∞ºπÑΓß∩ ¡Ñ»«ßΓ«∩¡¡« */
  1830.              save_video(num);/* ß«σαá¡¿Γ∞ ΓѬπΘÑÑ ß«ñÑন¼«Ñ φ¬αá¡á */
  1831.              frame[num].active = 1;  /* πßΓá¡«ó¿Γ∞ Σ½áú á¬Γ¿ó¡«ßΓ¿ */
  1832.            }
  1833.  
  1834.            if(frame[num].border) draw_border(num);
  1835.            dispay_header(num);     /* óδóÑßΓ¿ «¬¡« ¡á φ¬αá¡ */
  1836.  
  1837.            x = frame[num].startx + frame[num].curx + 1;
  1838.            y = frame[num].starty + frame[num].cury + 1;
  1839.            goto_xy(x, y);
  1840.  
  1841.          }
  1842.  
  1843.  
  1844.          /* æ«ºñáΓ∞ αἬπ ß»π߬áεΘÑú«ß∩ «¬¡á. é«ºóαáΓ¿Γ∞ 1, Ñß½¿ αἬá
  1845.          «¬¡á ¼«ªÑΓ íδΓ∞ ß«ºñá¡á ¿ 0 ó »α«Γ¿ó¡«¼ ß½πτáÑ */
  1846.  
  1847.          make_window(num, header, startx, starty, endx, endy, border)
  1848.          int num;         /* ¡«¼Ñα «¬¡á */
  1849.          char *header;    /* ΓѬßΓ ºáú«½«ó¬á */
  1850.          int startx, starty; /* ¬««αñ¿¡áΓδ x,y óÑασ¡Ñú« ½Ñó«ú« πú½á */
  1851.          int endx, endy;     /* ¬««αñ¿¡áΓδ x,y ¡¿ª¡Ñú« »αáó«ú« πú½á */
  1852.          int border;           /* íѺ í«αñεαá, Ñß½¿ 0 */
  1853.          {
  1854.            unsigned char *p;
  1855.  
  1856.            if(num>MAX_FRAME) {
  1857.              printf("Too many windows\n");
  1858.  
  1859.  
  1860.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1861. â½áóá II                                                       -- 32 --
  1862.  
  1863.  
  1864.              return 0;
  1865.            }
  1866.  
  1867.          if((startx>24) || (startx<0) || (starty>78) || (starty<0)) {
  1868.              printf("range error");
  1869.              return 0:
  1870.            }
  1871.  
  1872.            if((endx>24) || (endy>79)) {
  1873.              printf("window won't fit");
  1874.              return 0;
  1875.            }
  1876.  
  1877.            /* «ΓóÑßΓ¿ ñ«ßΓáΓ«τ¡«Ñ ¬«½¿τÑßΓó« »á¼∩Γ¿ */
  1878.       p = (unsigned char *) malloc(2*(endx-startx+1)*(endy-starty=1));
  1879.      if(!p) exit(1);/* ¿ß»«½∞ºπ⌐ΓÑ óáΦ ß«íßΓóÑ¡¡δ⌐ «íαáí«Γτ¿¬ «Φ¿í«¬*/
  1880.  
  1881.            /* ß«ºñáΓ∞ αἬπ */
  1882.            frame[num].startx = startx; frame[num].endx = endx;
  1883.            frame[num].starty = starty; frame[num].endy = endy;
  1884.            frame[num].p = p;
  1885.            frame[num].header = header;
  1886.            frame[num].border = border;
  1887.            frame[num].active = 0;
  1888.            frame[num].curx = 0; frame[num].cury = 0;
  1889.            return 1;
  1890.          }
  1891.  
  1892.          /* αÑñá¬Γ¿α«óáΓ∞ «¬¡« ¿ πñ὿Γ∞ Ñú« ß φ¬αá¡á */
  1893.          deactivate(num)
  1894.          int num;
  1895.          {
  1896.  
  1897.            /* πßΓá¡«ó¿Γ∞ ¬παß«α ó ½Ñóδ⌐ óÑασ¡¿⌐ πú«½ */
  1898.            frame[num].curx = 0;
  1899.            frame[num].cury = 0;
  1900.            restore_video(num);
  1901.          }
  1902.  
  1903.          /* ê¡ΓÑαá¬Γ¿ó¡«Ñ ¿º¼Ñ¡Ñ¡¿Ñ αẼÑα«ó «¬¡á */
  1904.          void size(num)
  1905.          int num;
  1906.          {
  1907.            char ch;
  1908.            int x, y, startx, starty;
  1909.  
  1910.            /* á¬Γ¿ó¿α«óáΓ∞, Ñß½¿ ¡Ñ«íσ«ñ¿¼« */
  1911.            if(!frame[num].active) window(num);
  1912.  
  1913.            startx = x = frame[num].startx;
  1914.            starty = y = frame[num].starty;
  1915.            window_xy(num, 0, 0);
  1916.  
  1917.            do {
  1918.  
  1919.  
  1920.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1921. â½áóá II                                                       -- 33 --
  1922.  
  1923.  
  1924.              ch = get_special();
  1925.              switch(ch) {
  1926.                case 75:    /* ó½Ñó« */
  1927.                  starty--;
  1928.                  break;
  1929.                case 77:    /* ó»αáó« */
  1930.                  starty++;
  1931.                  break;
  1932.                case 72:    /* óóÑασ */
  1933.                  startx--;
  1934.                  break;
  1935.                case 80:    /* ó¡¿º */
  1936.                  startx++;
  1937.                  break;
  1938.                case 71:    /* ó½Ñó« óóÑασ */
  1939.                  startx--; starty--;
  1940.                  break;
  1941.                case 73:    /* ó»αáó« óóÑασ */
  1942.                  startx--; starty++;
  1943.                  break;
  1944.                case 79:    /* ó½Ñó« ó¡¿º */
  1945.                  startx++; starty--;
  1946.                  break;
  1947.                case 81:    /* ó»αáó« ó¡¿º */
  1948.                  startx++; starty++;
  1949.                  break;
  1950.                case 60:    /* F2: «Γ¼Ñ¡¿Γ∞ ¿ óÑα¡πΓ∞ß∩ ¬ ¿ßσ«ñ¡δ¼
  1951.                                                          αẼÑαá¼ */
  1952.                  startx = x;
  1953.                  starty = y;
  1954.                  ch = 59;
  1955.              }
  1956.  
  1957.              if(startx<0) startx++;
  1958.              if(startx>=frame[num].endx) startx--;
  1959.              if(starty<0) starty++;
  1960.              if(starty>=frame[num].endy) starty--;
  1961.              deactivate(num);
  1962.              frame[num].startx = startx;
  1963.              frame[num].starty = starty;
  1964.              window(num);
  1965.            } while(ch!=59);
  1966.            deactivate(num);
  1967.          }
  1968.  
  1969.  
  1970.          /* ê¡ΓÑαá¬Γ¿ó¡«Ñ »ÑαѼÑΘÑ¡¿Ñ «¬¡á */
  1971.          void move(num)
  1972.          int num;
  1973.          {
  1974.            char ch;
  1975.            int x, y, ex, ey, startx, starty, endx, endy;
  1976.  
  1977.            /* á¬Γ¿ó¿α«óáΓ∞, »α¿ ¡Ñ«íσ«ñ¿¼«ßΓ¿ */
  1978.  
  1979.  
  1980.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1981. â½áóá II                                                       -- 34 --
  1982.  
  1983.  
  1984.            if(!frame[num].active) window(num);
  1985.  
  1986.            startx = x = frame[num].startx;
  1987.            starty = y = frame[num].starty;
  1988.            endx = ex = frame[num].endx;
  1989.            endy = ey = frame[num].endy;
  1990.            window_xy(num, 0, 0);
  1991.  
  1992.            do {
  1993.              ch = get_special();
  1994.              switch(ch) {
  1995.                case 75:   /* ó½Ñó« */
  1996.                starty--;
  1997.                endy--;
  1998.                break;
  1999.                case 77:   /* ó»αáó« */
  2000.                starty++;
  2001.                endy++;
  2002.                break;
  2003.                case 72:   /* óóÑασ */
  2004.                startx--;
  2005.                endx--;
  2006.                break;
  2007.                case 80:   /* ó¡¿º */
  2008.                startx++;
  2009.                endx++;
  2010.                break;
  2011.                case 71:   /* ó½Ñó« óóÑασ */
  2012.                startx--; starty--;
  2013.                endx--; endy--;
  2014.                break;
  2015.                case 73:   /* ó»αáó« óóÑασ */
  2016.                startx--; starty++;
  2017.                endx--; endy++;
  2018.                break;
  2019.                case 79:   /* ó½Ñó« ó¡¿º */
  2020.                startx++; starty--;
  2021.                endx++; endy--;
  2022.                break;
  2023.                case 81:   /* ó»αáó« ó¡¿º */
  2024.                startx++; starty++;
  2025.                endx++; endy++;
  2026.                break;
  2027.                case 60:    /* F2: «Γ¼Ñ¡¿Γ∞ ¿ óÑα¡πΓ∞ß∩ ¬ ¿ßσ«ñ¡δ¼
  2028.                                                          αẼÑαá¼ */
  2029.                  startx = x;
  2030.                  starty = y;
  2031.                  endx = ex;
  2032.                  endy =ey;
  2033.                  ch = 59;
  2034.          }
  2035.  
  2036.          /* ß¼. »α¿ óδσ«ñÑ ºá ñ¿á»áº«¡ */
  2037.          if(startx<0) {
  2038.  
  2039.  
  2040.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2041. â½áóá II                                                       -- 35 --
  2042.  
  2043.  
  2044.            startx++;
  2045.            endx++;
  2046.          }
  2047.          if(endx>=25) {
  2048.            startx--;
  2049.            endx--;
  2050.            }
  2051.            if(starty<0) {
  2052.              starty++;
  2053.              endy++;
  2054.            }
  2055.            if(endy>=79) {
  2056.              starty--;
  2057.              endy--;
  2058.            }
  2059.            deactivate(num);
  2060.            frame[num].startx = startx;
  2061.            frame[num].starty = starty;
  2062.            frame[num].endx = endx;
  2063.            frame[num].endy = endy;
  2064.            window(num);
  2065.          } while(ch!=59);
  2066.          deactivate(num);
  2067.        }
  2068.  
  2069.  
  2070.          /* éδóÑßΓ¿ ΓѬßΓ ºáú«½«ó¬á, ¡áτ¿¡á∩ ß «»αÑñѽѡ¡«⌐ »«º¿µ¿¿ */
  2071.          void display_header(num)
  2072.          int num;
  2073.          {
  2074.            register int y, len;
  2075.  
  2076.            y = frame[num].starty;
  2077.  
  2078.            /* éδτ¿ß½¿Γ∞ ¡áτá½∞¡πε »«º¿µ¿ε «Γ¡«ß¿Γѽ∞¡« µÑ¡Γαá ΓѬßΓá
  2079.            ºáú«½«ó¬á, Ñß½¿ «Γα¿µáΓѽ∞¡á∩, Γ« ΓѬßΓ ¡Ñ »«ñσ«ñ¿Γ */
  2080.            len = strlen(frame[num].header);
  2081.            len = (frame[num].endy - y - len) / 2;
  2082.            if(len<0) return;  /* ¡Ñ óδó«ñ¿Γ∞ ¡á φ¬αá¡ */
  2083.            y = y + len;
  2084.  
  2085.            write_string(frame[num].startx, y,
  2086.                       frame[num].header, NORM_VID);
  2087.          }
  2088.  
  2089.          void draw_border(num)
  2090.          int num;
  2091.          {
  2092.            register int i;
  2093.            char far *v, far *t;
  2094.  
  2095.            v = vid_mem;
  2096.            t = v;
  2097.            for(i=frame[num].startx+1; i<frame[num].endx; i++) {
  2098.  
  2099.  
  2100.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2101. â½áóá II                                                       -- 36 --
  2102.  
  2103.  
  2104.            v += (i*160) + frame[num].starty*2;
  2105.            *v++ = 179;
  2106.            *v = NORM_VID;
  2107.            v = t;
  2108.            v += (i*160) + frame[num].endy*2;
  2109.            *v++ = 179;
  2110.            *v = NORM_VID;
  2111.            v = t;
  2112.          }
  2113.          for(i=frame[num].starty+1; i<frame[num].endy; i++) {
  2114.             v += (frame[num].startx*160) + i*2;
  2115.             *v++ = 196;
  2116.             *v = NORM_VID;
  2117.             v = t;
  2118.             v+ =(frame[num].endx*160) + i*2;
  2119.             *v++ = 196;
  2120.             *v = NORM_VID;
  2121.             v = t;
  2122.          }
  2123.       write_char(frame[num].startx, frame[num].starty, 218, NORM_VID);
  2124.       write_char(frame[num].startx, frame[num].endy, 191, NORM_VID);
  2125.       write_char(frame[num].endx, frame[num].starty, 192, NORM_VID);
  2126.          write_char(frame[num].endx, frame[num].endy, 217, NORM_VID);
  2127.  
  2128.          }
  2129.  
  2130.  
  2131.      /***************************************************************/
  2132.      /*   Ä¬«¡¡δÑ Σπ¡¬µ¿¿ óó«ñá/óδó«ñá                              */
  2133.      /***************************************************************/
  2134.  
  2135.      /* éδóÑßΓ¿ ß¿¼ó«½ ó ΓѬπΘπε »«º¿µ¿ε ¬παß«αá ó ß«ºñá¡¡«¼ «¬¡Ñ.
  2136.         é«ºóαáΓ¿Γ∞ 0, Ñß½¿ «¬¡« ¡Ñ á¬Γ¿ó¡«Ñ ¿ 1 ó »α«Γ¿ó¡«¼ ß½πτáÑ. */
  2137.          window_puts(num, str)
  2138.          int num;
  2139.          char *str;
  2140.          {
  2141.  
  2142.            /* πíÑñ¿Γ∞ß∩, τΓ« «¬¡« á¬Γ¿ó¡«Ñ */
  2143.            if(!frame[num].activite) return 0;
  2144.  
  2145.            for( ; *str; str++)
  2146.              window_putchar(num, *str);
  2147.            return 1;
  2148.          }
  2149.  
  2150.       /* éδóÑßΓ¿ ß¿¼ó«½ ó ΓѬπΘπε »«º¿µ¿ε ¬παß«αá ó ß«ºñá¡¡«¼ «¬¡Ñ.
  2151.          é«ºóαáΓ¿Γ∞ 0, Ñß½¿ «¬¡« ¡Ñ á¬Γ¿ó¡«Ñ ¿ 1 ó »α«Γ¿ó¡«¼ ß½πτáÑ */
  2152.          window_putchar(num, ch)
  2153.          int num;
  2154.          char ch;
  2155.          {
  2156.            register int x, y;
  2157.            char far *v;
  2158.  
  2159.  
  2160.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2161. â½áóá II                                                       -- 37 --
  2162.  
  2163.  
  2164.  
  2165.            /* πíÑñ¿Γ∞ß∩, τΓ« «¬¡« á¬Γ¿ó¡«Ñ */
  2166.            if(!frame[num].active) return 0;
  2167.  
  2168.            x = frame[num].curx + frame[num].startx + 1;
  2169.            y = frame[num].cury + frame[num].starty + 1;
  2170.  
  2171.            v = vid_mem;
  2172.            v += (x*160) + y*2;  /* óδτ¿ß½¿Γ∞ áñαÑß */
  2173.            if(y>=frame[num].endy) {
  2174.              return 1;
  2175.            }
  2176.            if(x>=frame[num].endx) {
  2177.              return 1;
  2178.            }
  2179.            if(ch=='\n') {   /* ß¿¼ó«½ »ÑαÑσ«ñá ¡á ß½ÑñπεΘπε ßΓ᫬π */
  2180.              x++;
  2181.              y = frame[num].startx+1;
  2182.              v = vid_mem;
  2183.              v += (x*160) + y*2;  /* óδτ¿ß½¿Γ∞ áñαÑß */
  2184.              frame[num].curx++;   /* ¡áαáßΓ¿Γ∞ x */
  2185.              frame[num].cury = 0; /* ß»α«ß¿Γ∞ y */
  2186.            }
  2187.            else {
  2188.              frame[num].cury++;
  2189.              *v++ = ch;  /* óδóÑßΓ¿ ß¿¼ó«½ */
  2190.              *v++ = NORM_VID; /* ¡«α¼á½∞¡δÑ ó¿ñÑ«áΓα¿íπΓδ */
  2191.            }
  2192.            window_xy(num, frame[num].curx, frame[num].cury);
  2193.            return 1;
  2194.          }
  2195.  
  2196.  
  2197.          /* ôßΓá¡«ó¿Γ∞ ¬παß«α ó «αÑñѽѡ¡«⌐ »«º¿µ¿¿ «¬¡á.
  2198.             é«ºóαáΓ¿Γ∞ 0 »α¿ óδσ«ñÑ ºá úαá¡¿µπ, ¡Ñ ¡«½∞ ó »α«Γ¿ó¡«¼
  2199.             ß½πτáÑ */
  2200.          window_xy(num, x, y)
  2201.          int num, x, y;
  2202.          {
  2203.            if(x<0 || x+frame[num].startx>=frame[num].endx-1)
  2204.              return 0;
  2205.            if(y<0 || y+frame[num].starty>=frame[num].endy-1)
  2206.              return 0;
  2207.            frame[num].curx = x;
  2208.            frame[num].cury = y;
  2209.            goto_xy(frame[num].startx+x+1, frame[num].starty+y+1);
  2210.            return 1;
  2211.          }
  2212.  
  2213.          /* æτ¿ΓáΓ∞ ßΓα«¬π ¿º «¬¡á */
  2214.          void window_gets(num, s)
  2215.          int num;
  2216.          char *s;
  2217.          {
  2218.  
  2219.  
  2220.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2221. â½áóá II                                                       -- 38 --
  2222.  
  2223.  
  2224.            char ch, *temp;
  2225.  
  2226.            temp = s;
  2227.            for(,,) {
  2228.              ch = window_getche(num);
  2229.              switch(ch) {
  2230.                case '\r':  /* ¡áªáΓá ¬½áó¿Φá ENTER */
  2231.                  *s='\0';
  2232.                  return;
  2233.                case BKSP:  /* ó«ºóαáΓ */
  2234.                  if(s>temp) {
  2235.                    s--;
  2236.                    frame[num].cury--;
  2237.                    if(frame[num].cury<0) frame[num].cury = 0;
  2238.                      window_xy(num, frame[num].curx, frame[num].cury);
  2239.                       write_char(frame[num].startx+ frame[num].curx+1;
  2240.                   frame[num].starty+frame[num].cury+1, ' ', NORM_VID);
  2241.                  }
  2242.                  break;
  2243.                default: *s = ch;
  2244.                  s++;
  2245.              }
  2246.            }
  2247.          }
  2248.  
  2249.  
  2250.  
  2251.          /* éóÑßΓ¿ ß¿¼ó«½ ó «¬¡« ß ¬½áó¿áΓπαδ.
  2252.             é«ºóαáΓ¿Γ∞ »«½¡δ⌐ 16-Γ¿ αáºα∩ñ¡δ⌐ ß¬á¡-¬«ñ */
  2253.          window_getche(num)
  2254.          int num;
  2255.          {
  2256.             union inkey {
  2257.               char ch[2];
  2258.               int i;
  2259.              } c;
  2260.  
  2261.              if(!frame[num].active) return 0;  /* «¬¡« ¡Ñ á¬Γ¿ó¡«Ñ */
  2262.  
  2263.              window_xy(num, frame[num].curx, frame[num].cury);
  2264.  
  2265.              c.i = bioskey(0);   /* óóÑßΓ¿ ß¿¼ó«½ ß ¬½áó¿áΓπαδ */
  2266.  
  2267.              if(c.ch[0]) {
  2268.                switch(c.ch[0]) {
  2269.                  case '\r':    /* ¡áªáΓá ¬½áó¿Φá ENTER */
  2270.                    break;
  2271.                  case BKSP:   /*ó«ºóαáΓ */
  2272.                    break;
  2273.                  default:
  2274.            if(frame[num].cury+frame[num].starty < frame[num].endy-1) {
  2275.            write_char(frame[num].startx+ frame[num].curx+1,
  2276.            frame[num].starty+frame[num].cury+1, c.ch[0], NORM_VID);
  2277.                      frame[num].cury++;
  2278.  
  2279.  
  2280.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2281. â½áóá II                                                       -- 39 --
  2282.  
  2283.  
  2284.                    }
  2285.                }
  2286.             if(frame[num].curx < 0) frame[num].curx = 0;
  2287.             if(frame[num].curx+frame[num].startx > frame[num].endx-2)
  2288.                  frame[num].curx--;
  2289.                window_xy(num, frame[num].curx, frame[num].cury);
  2290.              }
  2291.              return c.i;
  2292.            }
  2293.  
  2294.            /* Äτ¿ßΓ¿Γ∞ «¬¡« */
  2295.            void window_cls(num)
  2296.            int num;
  2297.            {
  2298.              register int i,j;
  2299.              char far *v, far *t;
  2300.  
  2301.              v = vid_mem;
  2302.              t = v;
  2303.              for(i=frame[num].starty+1; i<frame[num].endy; i++)
  2304.                for(j=frame[num].startx+1; j<frame[num].endy; j++) {
  2305.                  v = t;
  2306.                  v += (j*160) + i*2;
  2307.                  *v++ = ' ';    /* óδóÑßΓ¿ »α«íѽ */
  2308.                  *v = NORM_VID; /* ¡«α¼á½∞¡δÑ ó¿ñÑ«áΓα¿íπΓδ */
  2309.              }
  2310.              frame[num].curx = 0;
  2311.              frame[num].cury = 0;
  2312.            }
  2313.  
  2314.            /* Äτ¿ßΓ¿Γ∞ ñ« ¬«¡µá ßΓ᫬¿ */
  2315.            void window_cleol(num)
  2316.            int (num);
  2317.            {
  2318.            register int i, x, y;
  2319.  
  2320.            x = frame[num].curx;
  2321.            y = frame[num].cury;
  2322.            window_xy(num, frame[num].curx, frame[num].cury);
  2323.  
  2324.            for(i=frame[num].cury; i<frame[num].endy-1; i++)
  2325.              window_putchar(num,' ');
  2326.            window_xy(num, x, y);
  2327.          }
  2328.  
  2329.  
  2330.          /* ÅÑαѼÑßΓ¿Γ∞ ¬παß«α ¡á «ñ¡π ßΓ᫬π óóÑασ.
  2331.             é«ºóαáΓ¿Γ∞ ¡Ñ¡π½Ñó«⌐ ¬«ñ ó ß½πτáÑ πß»Ñσá, 0 - ó »αΓ¿ó¡«¼
  2332.             ß½πτáÑ. */
  2333.          window_upline(num)
  2334.          int num;
  2335.          {
  2336.            if(frame[num].curx>0) {
  2337.              frame[num].curx--;
  2338.  
  2339.  
  2340.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2341. â½áóá II                                                       -- 40 --
  2342.  
  2343.  
  2344.              window_xy(num, frame[num].curx, frame[num].cury);
  2345.              return 1;
  2346.            }
  2347.            return 0;
  2348.          }
  2349.  
  2350.  
  2351.          /* ÅÑαѼÑßΓ¿Γ∞ ¬παß«α ¡á «ñ¡π ßΓ᫬π ó¡¿º.
  2352.             é«ºóαáΓ¿Γ∞ ¡Ñ¡π½Ñó«⌐ ¬«ñ ó ß½πτáÑ πß»Ñσá, 0 - ó »α«Γ¿ó¡«¼
  2353.             ß½πτáÑ. */
  2354.  
  2355.          window_dowline(num)
  2356.          int num,
  2357.          {
  2358.            if(frame[num].curx<frame[num].endx-frame[num].startx-1) {
  2359.              frame[num].curx++;
  2360.              window_xy(num, frame[num].curx, frame[num].cury);
  2361.              return 1;
  2362.            }
  2363.            return 1;
  2364.  
  2365.            /* ßΓÑαÑΓ∞ »αÑñδñπΘ¿⌐ ß¿¼ó«½
  2366.            window_bksp(num)
  2367.            int (num);
  2368.            {
  2369.            if(frame[num].cury>0) {
  2370.              frame[num].cury--;
  2371.              window_xy(num, frame[num].curx, frame[num].cury);
  2372.              window_putchar(num, ' ');
  2373.              frame[num].cury--;
  2374.              window_xy(num, frame[num].curx, frame[num].cury);
  2375.            }
  2376.          }
  2377.  
  2378.  
  2379.      /***************************************************************/
  2380.      /*   ä«»«½¡¿Γѽ∞¡δÑ Σπ¡¬µ¿¿                                    */
  2381.      /***************************************************************/
  2382.  
  2383.          /* éδóÑßΓ¿ ¡á φ¬αá¡ ßΓ᫬π ß ñ«»«½¡¿Γѽ∞¡δ¼¿ áΓα¿íπΓἿ */
  2384.          void write_strihg(x, y, attrib)
  2385.          int x, y;
  2386.          char *p;
  2387.          int attrib;
  2388.          {
  2389.            register int i;
  2390.            char far *v;
  2391.  
  2392.            v = vid_mem;
  2393.            v += (x*160) + y*2; /* óδτ¿ß½¿Γ∞ áñαÑß */
  2394.            for(i=y; i++) {
  2395.              *v++ = *p++;  /* óδóÑßΓ¿ ß¿¼ó«½ */
  2396.              *v++ = attrib; /* óδóÑßΓ¿ áΓα¿íπΓδ */
  2397.            }
  2398.  
  2399.  
  2400.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2401. â½áóá II                                                       -- 41 --
  2402.  
  2403.  
  2404.          }
  2405.  
  2406.          /* éδóÑßΓ¿ ß¿¼ó«½δ ß «»αÑñѽѡ¡δ¼¿ áΓα¿íπΓἿ */
  2407.          void write_char(x, y, ch, attrib)
  2408.          int x, y;
  2409.          char ch;
  2410.          int attrib;
  2411.          {
  2412.            register int i;
  2413.            char far *v;
  2414.  
  2415.            v = vid_mem;
  2416.            v += (x*160) + y*2;
  2417.            *v++ = ch;   /* óδóÑßΓ¿ ß¿¼ó«½ */
  2418.            *v = attrib; /* óδóÑßΓ¿ áΓα¿íπΓδ */
  2419.          }
  2420.  
  2421.          /* æ«σαá¡¿Γ∞ ß«ñÑন¼«Ñ τáßΓ¿ φ¬αá¡á */
  2422.          void save_video(num)
  2423.          int num;
  2424.          {
  2425.            register int i, j;
  2426.            char *buf_ptr;
  2427.            char far *v, far *t;
  2428.  
  2429.            buf_ptr = frame[num].p;
  2430.            v = vid_mem;
  2431.            for(i=frame[num].starty; i<frame[num].endy+1; i++)
  2432.              for(j=frame[num].startx; j<frame[num].endx+1; j++) {
  2433.                t = (v + (j*160) + i*2);
  2434.                *buf_ptr++ = *t++;
  2435.                *buf_ptr++ = *t;
  2436.                *(t-1) = ' ';  /* «τ¿ßΓ¿Γ∞ «¬¡« */
  2437.              }
  2438.          }
  2439.  
  2440.  
  2441.          /* é«ßßΓá¡«ó¿Γ∞ ß«ñÑন¼«Ñ τáßΓ¿ φ¬αá¡á */
  2442.          void restore_video(num)
  2443.          int num;
  2444.          {
  2445.            register int i,j;
  2446.            char far *v, far *t;
  2447.            char *buf_ptr;
  2448.  
  2449.            buf_ptr = frame[num].p;
  2450.            v = vid_mem;
  2451.            t = v;
  2452.            for(i=frame[num].starty; i<frame[num].endy+1; i++)
  2453.              for(j=frame[num].startx; i<frame[num].endx+1; j++) {
  2454.                v = t;
  2455.                v += (j*160) + i*2;
  2456.                *v++ = buf_ptr++;   /* óδóÑßΓ¿ ß¿¼ó«½ */
  2457.                *v = *buf_ptr++;    /* óδóÑßΓ¿ áΓα¿íπΓδ */
  2458.  
  2459.  
  2460.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2461. â½áóá II                                                       -- 42 --
  2462.  
  2463.  
  2464.            }
  2465.            frame[num].active = 0;
  2466.          }
  2467.  
  2468.  
  2469.          /* Äτ¿ßΓ¿Γ∞ φ¬αá¡ */
  2470.          void cls()
  2471.          {
  2472.            union REGS r;
  2473.            r.h.ah=6;   /* ¬«ñ »α«¬απΓ¬¿ φ¬αá¡á */
  2474.            r.h.al=0;   /* ¬«ñ «τ¿ßΓ¬¿ φ¬αá¡á */
  2475.            r.h.ch=0;   /* ¡áτá½∞¡δ⌐ α∩ñ */
  2476.            r.h.cl=0;   /* ¡áτá½∞¡δ⌐ ßΓ«½íѵ */
  2477.            r.h.dh=24;  /* ¬«¡Ñτ¡δ⌐ α∩ñ */
  2478.            r.h.dl=79;  /* ¬«¡Ñτ¡δ⌐ ßΓ«½íѵ */
  2479.            r.h.bh=7;   /* »πßΓá∩ ßΓ᫬á - τÑα¡á∩ */
  2480.            int86(0x10, &r, &r);
  2481.          }
  2482.  
  2483.          /* ôßΓá¡«ó¿Γ∞ ¬παß«α ó »«º¿µ¿ε ß ¬««αñ¿¡áΓἿ x, y */
  2484.          void goto_xy(x,y)
  2485.          int x,y;
  2486.          {
  2487.            union REGS r;
  2488.  
  2489.            r.h.ah=2; /* Σπ¡¬µ¿∩ áñαÑßᵿ¿ ¬παß«αá */
  2490.            r.h.dl=y; /* ¬««αñ¿¡áΓδ ßΓ«½íµá */
  2491.            r.h.dh=x; /* ¬««αñ¿¡áΓδ α∩ñá */
  2492.            r.h.bh=0; /* ßΓαá¡¿µá ó¿ñÑ«»á¼∩Γ¿ */
  2493.            int86(0x10, &r, &r);
  2494.          }
  2495.  
  2496.      /* é«ºóαáΓ¿Γ∞ »«º¿µ¿«¡¡δ⌐ ¬«ñ ßΓαѽ¬¿ ¿ Σπ¡¬µ¿«¡á½∞¡δ󠬽áó¿Φ */
  2497.          get_special()
  2498.          {
  2499.            union inkey {
  2500.              char ch[2];
  2501.              int i;
  2502.            } c;
  2503.  
  2504.            /* while(!bioskey(1)) ; /* ªñáΓ∞ ¡áªáΓ¿∩ ¬½áó¿Φ¿ */
  2505.            c.i = bioskey(0);       /* ßτ¿ΓáΓ∞ ¬«ñ ¡áªáΓ«⌐ ¬½áó¿Φ¿ */
  2506.  
  2507.            return c.ch[1];
  2508.          }
  2509.  
  2510.          /* é«ºóαáΓ¿Γ∞ ¬«ñ ΓѬπΘÑú« ó¿ñÑ«αѪ¿¼á */
  2511.          video_mode()
  2512.          {
  2513.            union REGS r;
  2514.  
  2515.            r.h.ah = 15;  /* »«½πτ¿Γ∞ ¬«ñ ó¿ñÑ«αѪ¿¼á */
  2516.            return int86(0x10, &r, &r) & 255;
  2517.          }
  2518.  
  2519.  
  2520.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2521. â½áóá II                                                       -- 43 --
  2522.  
  2523.  
  2524.  
  2525.          is_in(s, c)
  2526.          char *s, c;
  2527.          {
  2528.            register int i;
  2529.  
  2530.            for(i=0; *s; i++) if(*s++==c) return i+1;
  2531.            return 0;
  2532.          }
  2533.  
  2534.  
  2535.          #include "ctype.h"
  2536.      /***************************************************************/
  2537.      /*   öπ¡¬µ¿¿ π»αáó½Ñ¡¿∩ óß»½δóáεΘ¿¼¿ «¬¡á¼¿                    */
  2538.      /***************************************************************/
  2539.  
  2540.          #define MAX 100
  2541.  
  2542.          int *p;  /* π¬áºáΓѽ∞ ßΓѬá */
  2543.          int *tos; /* π¬áºáΓѽ∞ óÑαΦ¿¡δ ßΓѬá */
  2544.          int *bos; /* π¬áºáΓѽ∞ ñ¡á ßΓѬá */
  2545.  
  2546.  
  2547.      /* æΓѬ«óδ⌐, ß »«ßΓΣ¿¬ß¡«⌐ ºá»¿ß∞ε ¬á½∞¬π½∩Γ«α ß 4-¼∩ Σπ¡¬µ¿∩¼¿*/
  2548.          void calc()
  2549.          {
  2550.            char in[80], out[80];
  2551.            int answer, stack[MAX];
  2552.            int a,b;
  2553.  
  2554.            p = stack;
  2555.            tos = p;
  2556.            bos = P+MAX-1;
  2557.  
  2558.            window(2);
  2559.            do {
  2560.              window_xy(2, 0, 0);
  2561.              window_cleol(2);
  2562.              window_puts(2, ": "); /* »α«¼ΓÑα ¬á½∞¬π½∩Γ«αá */
  2563.              window_gets(2, in);
  2564.              window_puts(2, "\n");
  2565.              window_cleol(2);
  2566.              switch(*in) {
  2567.                case '+':
  2568.                  a = pop();
  2569.                  b = pop();
  2570.                  answer = a+b;
  2571.                  push(a+b);
  2572.                  break;
  2573.                case '-':
  2574.                  a = pop();
  2575.                  b = pop();
  2576.                  answer = b-a;
  2577.                  push(b-a);
  2578.  
  2579.  
  2580.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2581. â½áóá II                                                       -- 44 --
  2582.  
  2583.  
  2584.                  break;
  2585.                case '*':
  2586.                  a = pop();
  2587.                  b = pop();
  2588.                  answer = b*a;
  2589.                  push(b*a);
  2590.                  break;
  2591.                  case '/':
  2592.                    a = pop();
  2593.                    b=pop();
  2594.                    if(a==0) {
  2595.                        window_puts("divide by 0\n");
  2596.                        break;
  2597.                    }
  2598.                    ansver = b/a;
  2599.                    push(b/a);
  2600.                    break;
  2601.                  default:
  2602.                    push(atoi(in));
  2603.                    continue;
  2604.                }
  2605.                sprintf(out, "%d", answer);
  2606.                window_puts(2, out);
  2607.              } wile(*in);
  2608.              deactivate(2);
  2609.            }
  2610.  
  2611.  
  2612.            /* Å«¼ÑßΓ¿Γ∞ τ¿ß½« ó ßΓѬ.
  2613.               é«ºóαáΓ¿Γ∞ 1 ó ß½πτáÑ πß»Ñσá ¿ 0 ó »α«Γ¿ó¡«¼ ß½πτáÑ */
  2614.            push(i)
  2615.            int i;
  2616.            {
  2617.              if(p>bos) return 0;
  2618.  
  2619.              *p=i;
  2620.              p++;
  2621.              return 1;
  2622.            }
  2623.  
  2624.  
  2625.            /* êºó½Ñτ∞ óÑασ¡¿⌐ φ½Ñ¼Ñ¡Γ ¿º ßΓѬá.
  2626.               é«ºóαáΓ¿Γ∞ 0 Ñß½¿ ßΓѬ »πßΓ */
  2627.            pop()
  2628.            {
  2629.              p--;
  2630.              if(p<tos) {
  2631.                p++;
  2632.                return 0;
  2633.              }
  2634.              return *p;
  2635.            }
  2636.  
  2637.  
  2638.  
  2639.  
  2640.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2641. â½áóá II                                                       -- 45 --
  2642.  
  2643.  
  2644.  
  2645.            /* äÑß∩Γ¿τ¡«-ΦÑßΓ¡áñµáΓ¿α¿τ¡δ⌐ »αÑ«íαẫóáΓѽ∞ */
  2646.            void dectohex()
  2647.            {
  2648.              char in[80], out[80];
  2649.              int n;
  2650.  
  2651.              window(1);
  2652.              do {
  2653.      window_xy(1, 0, 0);  /* »ÑαÑ⌐Γ¿ ¬ »Ñαó«⌐ ßΓα«¬Ñ */
  2654.      window_cleol(1);     /* «τ¿ßΓ¿Γ∞ ßΓ᫬π */
  2655.      window_puts(1, "dec: ");  /* »α«¼ΓÑα */
  2656.      window_gets(1, in);       /* ßτ¿ΓáΓ∞ τ¿ß½« */
  2657.      window_putchar(1, '\n');  /* »ÑαÑ⌐Γ¿ ¬ ß½ÑñπεΘÑ⌐ ßΓα«¬Ñ */
  2658.      window_cleol(1);          /* «τ¿ßΓ¿Γ∞ ÑÑ */
  2659.      sscanf(in,"%d", &n);      /* »αÑ«íαẫóáΓ∞ ó« ó¡πΓαÑ¡¡¿⌐ Σ«α¼áΓ*/
  2660.      sprintf(out, "%s%X", "hex: ",n); /* »αÑ«íαẫóáΓ∞ ó
  2661.                                     ΦÑßΓ¡áñµáΓ¿α¿τ¡«Ñ »αÑñßΓáó½Ñ¡¿Ñ */
  2662.             window_puts(1, out); /* óδóÑßΓ¿ ΦÑßΓ¡áñµáΓ¿α¿τ¡«Ñ τ¿ß½« */
  2663.              } wile(*in);
  2664.              deactivate(1);
  2665.            }
  2666.  
  2667.  
  2668.            /* éß»½δóáεΘá∩ ºá»¿ß¡á∩ ¬¡¿ª¬á */
  2669.            #define MAX_NOTE 10
  2670.            #define BKSP 8
  2671.            char notes[MAX_NOTE][80];
  2672.  
  2673.            void notepad()
  2674.            {
  2675.              static first=1;
  2676.              register int i; j;
  2677.              union inkey {
  2678.                char ch[2];
  2679.                int i;
  2680.              } c;
  2681.              char ch;
  2682.  
  2683.           /* ¿¡¿µ¿á½¿º¿α«óáΓ∞ ¼áßß¿ó ºá»¿ßÑ⌐, Ñß½¿ φΓ« ¡Ñ«íσ«ñ¿¼« */
  2684.              if(frist) {
  2685.                for(i=0; i<MAX_NOTE; i++)
  2686.                  *notes[i] = '\0';
  2687.                first = !first;
  2688.            }
  2689.  
  2690.            window(3);
  2691.            /* óδóÑßΓ¿ ¡á φ¬αá¡ ßπΘÑßΓóπεΘ¿Ñ ºá»¿ß¿ */
  2692.            for(i=0; i<MAX_NOTE; i++) {
  2693.              if(*notes[i]) window_puts(3, notes[i]);
  2694.              window_putchar(3, '\n');
  2695.            }
  2696.  
  2697.            i=0;
  2698.  
  2699.  
  2700.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2701. â½áóá II                                                       -- 46 --
  2702.  
  2703.  
  2704.            window_xy(3, 0, 0);
  2705.  
  2706.            for(;;) {
  2707.              c.i = bioskey(o);  /* ßτ¿ΓáΓ∞ ¬«ñ ¬½áó¿Φ¿ */
  2708.              if(tolower(c.ch[1])==59) {  /* F1 - ñ½∩ óσ«ñá */
  2709.                deactivate(3);
  2710.                break;
  2711.              }
  2712.  
  2713.              /* Ñß½¿ «íδτ¡á∩ ¬½áó¿Φá */
  2714.              if(isprint(c.ch[0]) || c.ch[0]==BKSP) {
  2715.                window_cleol(3);
  2716.                notes[i][0] = c.ch[0];
  2717.                j = 1;
  2718.                window_putchar(3, notes[i][0]);
  2719.                do {
  2720.                  ch = window_getche(3);
  2721.                  if(ch==BKSP) {
  2722.                    if(j>0) {
  2723.                      j--;
  2724.                      window_bksp(3);
  2725.                        }
  2726.                      }
  2727.                      else {
  2728.                        notes[1][j] = ch;
  2729.                        j++;
  2730.                      }
  2731.                    } while(notes[i][j-1]!='\r');
  2732.                    notes[i][j-1] = '\0';
  2733.                    i++;
  2734.                    window_putchar(3, '\n');
  2735.                  }
  2736.                  else {    /* Ñß½¿ ß»Ñµ¿á½∞¡á∩ ¬½áó¿Φá */
  2737.                    switch(c.ch[1]) {
  2738.                      case 72:     /* ßΓαѽ¬á óóÑασ */
  2739.                        if(i>0) {
  2740.                          i--;
  2741.                          window_upline(3);
  2742.                        }break
  2743.                      case 80:     /* ßΓαѽ¬á ó¡¿º */
  2744.                        if(i<MAX_NOTE-1) {
  2745.                          i++;
  2746.                          window_dowline(3);
  2747.                        }
  2748.                        break;
  2749.                    }
  2750.                  }
  2751.                }
  2752.              }
  2753.  
  2754.  
  2755.           Å∩Γ∞ »Ñαóδσ  Σπ¡¬µ¿«¡á½∞¡δσ   ¬½áó¿Φ   óδ»«½¡∩εΓ   ß½ÑñπεΘ¿Ñ
  2756.      ñÑ⌐ßΓó¿∩:
  2757.  
  2758.  
  2759.  
  2760.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2761. â½áóá II                                                       -- 47 --
  2762.  
  2763.  
  2764.              F1 - ñѼ«¡ßΓα¿απÑΓ αáí«Γπ Σπ¡¬µ¿¿ window_xy()
  2765.              F2 - ñѼ«¡ßΓα¿απÑΓ ¿º¼Ñ¡Ñ¡¿Ñ αẼÑαá ¿ »«½«ªÑ¡¿∩ «¬¡á
  2766.              F3 - óδºδóáÑΓ ¬á½∞¬π½∩Γ«α
  2767.              F4 - óδºδóáÑΓ    »α«úαá¼¼π   ñÑß∩Γ¿τ¡«-ΦÑßΓ¡áñµáΓ¿α¿τ¡«ú«
  2768.                   »αÑ«íαẫóá¡¿∩
  2769.              F5 - óδºδóáÑΓ "ºá»¿ß¡πε ¬¡¿ª¬π".
  2770.  
  2771.           É¿ßπ¡¬¿ 2-1, 2-2 ¿  2-3  ¿½½εßΓα¿απεΓ  »«∩ó½Ñ¡¿Ñ  ¡á  φ¬αá¡Ñ
  2772.      ß««ΓóÑΓßΓóπεΘ¿σ ¼Ñ¡ε.  É¿ß. 2-4 ¿½½εßΓα¿απÑΓ ¿º¼Ñ¡Ñ¡¿Ñ αẼÑα«ó ¿
  2773.      »«½«ªÑ¡¿∩     «¬¡á     »α«úαá¼¼δ     ñÑß∩Γ¿τ¡«-ΦÑßΓ¡áñµáΓ¿α¿τ¡«ú«
  2774.      »αÑ«íαẫóá¡¿∩.
  2775.  
  2776.  
  2777.  
  2778.  
  2779.  
  2780.  
  2781.  
  2782.  
  2783.  
  2784.  
  2785.  
  2786.  
  2787.  
  2788.  
  2789.  
  2790.  
  2791.  
  2792.  
  2793.  
  2794.  
  2795.  
  2796.  
  2797.  
  2798.  
  2799.  
  2800.  
  2801.  
  2802.  
  2803.  
  2804.  
  2805.  
  2806.  
  2807.  
  2808.  
  2809.  
  2810.  
  2811.  
  2812.  
  2813.  
  2814.  
  2815.  
  2816.  
  2817.  
  2818.  
  2819.  
  2820.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2821. â½áóá II                                                       -- 48 --
  2822.  
  2823.  
  2824.                î«ñ¿Σ¿¬áµ¿¿ »α«úαá¼¼ π»αáó½Ñ¡¿∩ «¬¡á¼¿
  2825.      -----------------------------------------------------------------
  2826.  
  2827.           Åα¿ ¿ß»«½∞º«óá¡¿¿ »αÑñßΓáó½Ñ¡¡δσ ó ñá¡¡«¼  αáºñѽѠ »α«úαá¼¼
  2828.      π»αáó½Ñ¡¿∩  «¬¡á¼¿  óδ  óßÑúñá  ñ«½ª¡δ  Γ«τ¡« «»αÑñѽ∩Γ∞ «¬¡«,  ß
  2829.      ¬«Γ«αδ¼  ß«í¿αáÑΓÑß∞  αáí«ΓáΓ∞.  ¥Γ«Γ  ß»«ß«í  »α¿  ¿ß»«½∞º«óá¡¿¿
  2830.      »α«úαá¼¼ «íÑß»Ñτ¿óáÑΓ í«½∞Φπε ú¿í¬«ßΓ∞.  äαπú«⌐ ß»«ß«í π»αáó½Ñ¡¿∩
  2831.      «¬¡á¼¿ «ß¡«óá¡ ¡á »α¿¼Ñ¡Ñ¡¿¿ ßΓѬá.
  2832.  
  2833.  
  2834.      ┌─────────────────── Editor [Esc to exit] ────────────────────┐
  2835.      │                                                             │
  2836.      │  To whom it may concern:                                    │
  2837.      │                                                             │
  2838.      │  This is to inform you D. W. Porkbellies will no lohger     │
  2839.      │  be providing its customers with the following products:    │
  2840.      │                                                             │
  2841.      │                                                             │
  2842.      │                                                             │
  2843.      │                  ┌──────────── Calculator ──────────────┐   │
  2844.      │                  │                                      │   │
  2845.      │                  │ :                                    │   │
  2846.      │                  │                                      │   │
  2847.      │                  │                                      │   │
  2848.      │                  │                                      │   │
  2849.      │                  │                                      │   │
  2850.      │                  └──────────────────────────────────────┘   │
  2851.      └─────────────────────────────────────────────────────────────┘
  2852.  
  2853.                           É¿ß. 2-1 Ä¬¡« ¬á½∞¬π½∩Γ«αá.
  2854.  
  2855.      ┌──────────────────── Editor [Esc to exit] ──────────────────┐
  2856.      │                                                            │
  2857.      │  To whom it may concern:                                   │
  2858.      │                                                            │
  2859.      │  This is to inform you D. W. Porkbellies will no lohger    │
  2860.      │  be providing its customers with the following products:   │
  2861.      │                                                            │
  2862.      │                                                            │
  2863.      │                             ┌──────── Decimal to Hex ───┐  │
  2864.      │                             │                           │  │
  2865.      │                             │ dec: 12                   │  │
  2866.      │          . meat and oats fak│ hex: C                    │  │
  2867.      │                             │                           │  │
  2868.      │          . lime cola drink p└───────────────────────────┘  │
  2869.      │                                                            │
  2870.      │          . syrup coated sizzle links                       │
  2871.      │                                                            │
  2872.      │                                                            │
  2873.      └────────────────────────────────────────────────────────────┘
  2874.  
  2875.          É¿ß. 2-2 Ä¬¡« ñÑß∩Γ¿τ¡«-ΦÑßΓ¡áñµáΓ¿α¿τ¡«ú« »αÑ«íαẫóáΓѽ∩.
  2876.  
  2877.  
  2878.  
  2879.  
  2880.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2881. â½áóá II                                                       -- 49 --
  2882.  
  2883.  
  2884.      ┌─────────────────── Editor [Esc to exit] ──────────────────┐
  2885.      │                                                           │
  2886.      │ To whom it may concern:                                   │
  2887.      │                                                           │
  2888.      │ This is to inform you D. W. Porkbellies will no lohger    │
  2889.      │ be providi┌───────── Notepad [F1 to exit] ─────────┐      │
  2890.      │           │                                        │      │
  2891.      │           │ call Sherry                            │      │
  2892.      │           │ go to the store                        │      │
  2893.      │           │                                        │      │
  2894.      │           │                                        │      │
  2895.      │           │                                        │      │
  2896.      │           │                                        │      │
  2897.      │           └────────────────────────────────────────┘      │
  2898.      │                                                           │
  2899.      └───────────────────────────────────────────────────────────┘
  2900.  
  2901.               É¿ß. 2-3    Ä¬¡« ºá»¿ß¡«⌐ ¬¡¿ª¬¿.
  2902.  
  2903.  
  2904.  
  2905.  
  2906.      ┌─────────────────── Editor [Esc to exit] ─────────────────┐
  2907.      │                                                          │
  2908.      │ To whom it may concern:                                  │
  2909.      │                                                          │
  2910.      │ This is to inform you D. W. Porkbellies will no lohger   │
  2911.      │ be providing its customers with the following products:  │
  2912.      │                                                          │
  2913.      │              . meat and oats fake burgers                │
  2914.      │                                                          │
  2915.      │              . lime cola drink pops                      │
  2916.      │                                                          │
  2917.      │                                                          │
  2918.      │     ┌───── Decimal to Hex ────────┐ le links             │
  2919.      │     │                             │                      │
  2920.      │     │                             │                      │
  2921.      │     │                             │                      │
  2922.      │     └─────────────────────────────┘                      │
  2923.      └──────────────────────────────────────────────────────────┘
  2924.  
  2925.  
  2926.  
  2927.                É¿ß. 2-4  êº¼Ñ¡Ñ¡¿Ñ αẼÑα«ó ¿ »«½«ªÑ¡¿∩ «¬¡á
  2928.                ñÑß∩Γ¿τ¡«-ΦÑßΓ¡áñµáΓ¿α¿τ¡«ú« »αÑ«íαẫóáΓѽ∩.
  2929.  
  2930.           é φΓ«¼  ß½πτáÑ  «¬«¡¡δÑ  »α«úαá¼¼δ  óó«ñá-óδó«ñá ¡Ñ »«½πτáεΓ
  2931.      ¡«¼Ñα  «¬¡á  ó  ¬áτÑßΓóÑ  áαúπ¼Ñ¡Γá.  é¼ÑßΓ«  φΓ«ú«  ¡«¼Ñαá  «¬«¡
  2932.      »«¼ÑΘáεΓß∩ ó ßΓѬ ó Γ«¼ »«α∩ñ¬Ñ, ó ¬«Γ«α«¼ «¡¿ í뫨 á¬Γ¿ó¿α«óá¡δ.
  2933.      Ä¬«¡¡δÑ »α«úαá¼¼δ óßÑúñá αáí«ΓáεΓ ß  ΓѼ  «¬¡«¼,  ¡«¼Ñα  ¬«Γ«α«ú«
  2934.      ¡áσ«ñ¿Γß∩  ó  óÑαΦ¿¡Ñ  ßΓѬá.  Åα¿  ñÑá¬Γ¿óᵿ¿  «¬¡á  Ñú«  ¡«¼Ñα
  2935.      ¿ºó½Ñ¬áÑΓß∩ ¿º ßΓѬá.  ÅαÑ¿¼πΘÑßΓó« φΓ«ú« ß»«ß«íá  ºá¬½ετáÑΓß∩  ó
  2936.      Γ«¼,  τΓ«  óδ  ¡Ñ ñ«½ª¡δ ó φΓ«¼ ß½πτáÑ ñπ¼áΓ∞ « ¡«¼Ñαá󠫬«¡.  éδ
  2937.      ¼«ªÑΓÑ ¼«ñ¿Σ¿µ¿α«óáΓ∞  »α«úαá¼¼δ  π»αáó½Ñ¡¿∩  «¬¡á¼¿,  τΓ«íδ  «¡¿
  2938.  
  2939.  
  2940.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2941. â½áóá II                                                       -- 50 --
  2942.  
  2943.  
  2944.      αáí«Γ὿ ¿¼Ñ¡¡« φΓ¿¼ ß»«ß«í«¼.
  2945.  
  2946.           äαπúá∩ ¼«ñ¿Σ¿¬áµ¿∩    ¼«ªÑΓ   ºá¬½ετáΓ∞ß∩   ó   Γ«¼,   τΓ«íδ
  2947.      «íÑß»Ñτ¿óáΓ∞ »α«¬απì𠫬¡á,  ¬«úñá ¬παß«α ñ«ßΓ¿úáÑΓ  Ñú«  ¡¿ª¡Ñ⌐
  2948.      úαá¡¿µδ.  é  ßπΘÑßΓóπεΘѼ  óáα¿á¡ΓÑ,  Ñß½¿  ¬παß«α  ñ«ßΓ¿ú ¡¿ª¡Ñ⌐
  2949.      úαá¡¿µδ, Γ« »«ß½Ñ ¡áªáΓ¿∩ ¬½áó¿Φ¿ éó«ñ ¡¿τÑú« ¡Ñ  »α«¿ßσ«ñ¿Γ.  éδ
  2950.      «ñ¡á¬«  ¼«ªÑΓÑ  ¿º¼Ñ¡¿Γ∞  »α«úαá¼¼δ Γᬿ¼ «íαẫ¼,  τΓ«íδ óÑασ¡∩∩
  2951.      ßΓα«¬á »α«»áñá½á, á ó¡¿ºπ »«∩ó½∩½áß∞ ¡«óá∩ »πßΓá∩ ßΓ᫬á.
  2952.  
  2953.           ìᬫ¡Ñµ, ΓÑ τ¿ΓáΓѽ¿,  ¬«Γ«αδÑ ¿¼ÑεΓ µóÑΓ¡δÑ ñ¿ß»½Ñ¿,  ¼«úπΓ
  2954.      ¿ß»«½∞º«óáΓ∞  αẽ¿τ¡δÑ  µóÑΓá  ñ½∩  «í«º¡áτÑ¡¿∩ úαá¡¿µ αẽ¿τ¡δσ
  2955.      «¬«¡.  Åα¿ »αáó¿½∞¡«¼ »α¿¼Ñ¡Ñ¡¿¿  φΓ«  ñ«íáó¿Γ  »α¿ó½Ñ¬áΓѽ∞¡«ßΓ¿
  2956.      óáΦ¿¼ »α«úαá¼¼á¼.
  2957.  
  2958.  
  2959.  
  2960.  
  2961.  
  2962.  
  2963.  
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  
  2975.  
  2976.  
  2977.  
  2978.  
  2979.  
  2980.  
  2981.  
  2982.  
  2983.  
  2984.  
  2985.  
  2986.  
  2987.  
  2988.  
  2989.  
  2990.  
  2991.  
  2992.  
  2993.  
  2994.  
  2995.  
  2996.  
  2997.  
  2998.  
  2999.  
  3000.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  3001.