home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-12-05 | 85.3 KB | 3,121 lines |
- -- 1 --
-
-
- ÅαÑñ¿ß½«ó¿Ñ
- -----------------------------------------------------------------
-
- àß½¿ óδ σ«Γ¿ΓÑ ß«ºñáóáΓ∞ »α«úαá¼¼δ ¼¿α«ó«ú« πα«ó¡∩,
- ¡á»¿ßá¡¡δÑ ¡á æ¿, Γ« φΓá ¬¡¿úá - ñ½∩ óáß!
-
- îÑ¡∩ º«óπΓ âÑαí ÿ¿½ñΓ. ƒ óÑΓÑαá¡ »α«úαá¼¼¿α«óá¡¿∩ ó« ¼¡«ú¿σ
- ¬«¼»á¡¿∩σ ¿ »α«úαá¼¼¿απε ¡á æ¿ í«½ÑÑ ñÑß∩Γ¿ ½ÑΓ. ÅÑαÑñ ΓѼ, ¬á¬
- ¡áτáΓ∞ »¿ßáΓ∞ φΓπ ¬¡¿úπ, ∩ ¿ºπτ¿½ í«½∞Φ«Ñ ¬«½¿τÑßΓó« πñáτ¡«ú«
- »α«úαá¼¼¡«ú« «íÑß»ÑτÑ¡¿∩, »δΓá∩ß∞ «»αÑñѽ¿Γ∞, ¬á¬¿Ñ τÑαΓδ «¡¿
- ¿¼ÑεΓ ó «Γ½¿τ¿Ñ «Γ ¼Ñ¡ÑÑ πñáτ¡δσ »α«úαá¼¼. ƒ σ«Γѽ »«¡∩Γ∞, τΓ«
- ñѽáÑΓ «ñ¡¿ »α«úαá¼¼δ í«½ÑÑ πñáτ¡δ¼¿, τѼ ñαπú¿Ñ, á¡á½«ú¿τ¡δÑ ¿¼.
- Å«ß½Ñ φΓ«ú« »α«∩ß¡¿½¿ß∞ «íΘ¿Ñ τÑαΓδ. ôñáτ¡δÑ »α«úαá¼¼δ í뫨
- ¡á»¿ßá¡δ ½εñ∞¼¿, ¬«Γ«αδÑ ¡Ñ Γ«½∞¬« ¿¼Ñ½¿ ¬αÑ»¬πε σóáΓ¬π ó
- ߻ѵ¿á½∞¡«⌐ «í½áßΓ¿, ¡« ¿ ó ß«óÑαΦÑ¡ßΓóÑ «ßó«¿½¿ «í«απñ«óá¡¿Ñ
- ¬«¼»∞εΓÑαá, ó¬½ετá∩ «»Ñαᵿ«¡¡πε ß¿ßΓÑ¼π ¿ á»»áαáΓ¡«Ñ
- «íÑß»ÑτÑ¡¿Ñ. Æ«½∞¬« »α«úαá¼¼¿ßΓ, «ßπΘÑßΓó½∩εΘ¿⌐ »«½¡δ⌐ ¬«¡Γα«½∞
- ¡áñ ¡¿¼¿ ¼«ªÑΓ »¿ßáΓ∞ »α«úαá¼¼δ ß ñαπªÑ½εí¡δ¼ ¿¡ΓÑαΣÑ⌐ß«¼
- »«½∞º«óáΓѽ∩ ¬«Γ«αδÑ φΣΣÑ¬Γ¿ó¡« óδ»«½¡∩εΓß∩ ¿ ñáεΓ »«½∞º«óáΓѽ∩¼
- í«½∞Φπε ú¿í¬«ßΓ∞.
-
- ¥Γá ¬¡¿úá «Γ¬αδóáÑΓ ¼¡«ú¿Ñ ßѬαÑΓδ, ¿ß»«½∞ºπѼδÑ ¼áßΓÑαἿ
- »α«úαá¼¼¿α«óá¡¿∩ ñ½∩ ñ«ßΓ¿ªÑ¡¿∩ »α«ΣÑßß¿«¡á½∞¡δσ αѺπ½∞ΓáΓ«ó. æ
- ÑÑ »«¼«Θ∞ε óδ αáßΦ¿α¿ΓÑ »«ñσ«ñδ ¿ ¼ÑΓ«ñδ, ¬«Γ«αδÑ ñѽáεΓ
- »α«úαá¼¼δ ¿¡ΓÑαÑß¡δ¼¿. Å«ß½Ñ »α«τΓÑ¡¿∩ ¬¡¿ú¿ óδ íπñÑΓÑ ß»«ß«í¡δ
- »¿ßáΓ∞ »α«úαá¼¼δ, ¬«Γ«αδÑ ºáß½πªáΓ ó¡¿¼á¡¿Ñ. çñÑß∞
- αáßß¼áΓα¿óáεΓß∩ ß½ÑñπεΘ¿Ñ ó«»α«ßδ:
-
- # Åα∩¼«⌐ ñ«ßΓπ» ¬ »á¼∩Γ¿ φ¬αá¡á ñ½∩ íδßΓα«ú« «Γ«íαáªÑ¡¿∩
- # êßτѺáεΘ¿Ñ ¿ ¿Ñαáασ¿τÑ߬¿Ñ (popup ¿ pulldown) ¼Ñ¡ε
- # Åα«µÑñπαδ αáí«Γδ ß «¬¡á¼¿
- # çáóÑαΦÑ¡¿Ñ »α«úαá¼¼ ¿ «ßΓáó½Ñ¡¿Ñ ¿σ ó »á¼∩Γ¿
- # ê¡ΓÑαΣÑ⌐ß ß ¼δΦ∞ε
- # âαáΣ¿τÑ߬¿Ñ Σπ¡¬µ¿¿, ó¬½ετá∩ óαáΘÑ¡¿Ñ «íΩÑ¬Γ«ó
- # ƒºδ¬«óδÑ ¿¡ΓÑα»αÑΓáΓ«αδ
- # ÅÑαÑñáτá Σá⌐½«ó τÑαѺ »«ß½Ññ«óáΓѽ∞¡δ⌐ »«αΓ
-
- ¥Γá ¬¡¿úá ñ½∩ ½εí«ú« ¿ ¬áªñ«ú« »α«úαá¼¼¿ßΓá ¡á æ¿, «Γ
- ¡«ó¿τ¬á ñ« »α«ΣÑßß¿«¡á½á. äáªÑ Ñß½¿ óδ ¡áτ¿¡áεΘ¿⌐, óδ ¼«ªÑΓÑ
- ¿ß»«½∞º«óáΓ∞ Σπ¡¬µ¿¿ ¿ »α«úαá¼¼δ ¿º φΓ«⌐ ¬¡¿ú¿ íѺ »«¡¿¼á¡¿∩
- «Γñѽ∞¡δσ ñÑΓá½Ñ⌐ ¿σ αáí«Γδ. ü«½ÑÑ »«ñú«Γ«ó½Ñ¡¡δÑ τ¿ΓáΓѽ¿ ¼«úπΓ
- ¿ß»«½∞º«óáΓ∞ φΓ¿ »α«úαá¼¼δ ¬á¬ «ß¡«óπ ñ½∩ ßó«¿σ »α¿½«ªÑ¡¿⌐.
-
- êßσ«ñ¡δÑ ΓѬßΓδ φΓ«⌐ ¬¡¿ú¿ ß««ΓóÑΓßΓóπεΓ ßΓá¡ñáαΓπ ANSI,
- ¬α«¼Ñ ¡Ñ¬«Γ«αδσ Σπ¡¬µ¿⌐, ߻ѵ¿Σ¿τ¡δσ ñ½∩ Åè. Æá¬¿¼ «íαẫ¼ óßÑ
- φΓ¿ »α«úαá¼¼δ ¼«ª¡« ¬«¼»¿½¿α«óáΓ∞ ¡á ½εí«¼ ¬«¼»¿½∩Γ«αÑ, ¬«Γ«αδ⌐
- »«ññÑনóáÑΓ ßΓá¡ñáαΓ. ƒ ¿ß»«½∞º«óá½ ñ½∩ ¿σ αáºαáí«Γ¬¿ Æπαí« æ¿ ¿
- Microsoft æ¿.
-
- ìѬ«Γ«αδÑ ¿º ¼¡«ú¿σ »«½Ñº¡δσ ¿ ¿¡ΓÑαÑß¡δσ Σπ¡¬µ¿⌐ ¿
- »α«úαá¼¼, ß«ñÑαªáΘ¿σß∩ ó ¬¡¿ú¿ ñ«ßΓáΓ«τ¡« ñ½¿¡¡δ. àß½¿ óδ, ¬á¬ ¿
- ∩, 󫺼«ª¡« σ«Γ¿ΓÑ ¿ß»«½∞º«óáΓ∞ ¿σ, ¡« óá¼ ½Ñ¡∞ ¡áí¿óáΓ∞ ¿σ ¡á
- ¬«¼»∞εΓÑαÑ ¿ »«Γ«¼ óδ¿ß¬¿óáΓ∞ ¡Ñ¿ºíѪ¡δÑ «»ÑτáΓ¬¿, Γ« ñ½∩ Γᬫú«
- ß½πτá∩ ∩ »αÑñ«ßΓáó½∩ε ¿ßσ«ñ¡δÑ ¬«ñδ, ß«ñÑαªáΘ¿Ñß∩ ó φΓ«⌐ ¬¡¿úÑ,
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 2 --
-
-
- ¡á ñ¿ß¬ÑΓÑ. ûÑ¡á πß½πú¿ - 24.95$. çừ½¡¿ΓÑ »α¿½«ªÑ¡¡πε Σ«α¼π ¿
- »«Φ½¿ΓÑ ÑÑ »« π¬áºá¡¡«¼π áñαÑßπ ó¼ÑßΓÑ ß «»½áΓ«⌐. ¡«
- ¿ß»«½∞º«óáΓ∞ ¬áαΓ«τ¬¿ MasterCard ¿ Visa.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 3 --
-
-
- âïÇéÇ 1.
- --------
- êßτѺáεΘ¿Ñ ¿ ¿Ñαáασ¿τÑ߬¿Ñ ¼Ñ¡ε.
- -----------------------------------------------------------------
-
- Äñ¡á ¿º ¡á¿í«½ÑÑ «τÑó¿ñ¡δσ τÑαΓ »α«ΣÑßß¿«¡á½∞¡« ¡á»¿ßá¡¡δσ
- »α«úαá¼¼ - φΓ« ¿ß»«½∞º«óá¡¿Ñ ¿ßτѺáεΘ¿σ ¿ ¿Ñαáασ¿τÑ߬¿σ ¼Ñ¡ε. Åα¿
- »αáó¿½∞¡«¼ ¿ß»«½∞º«óá¡¿¿, φΓ¿ ¼Ñ¡ε ñáεΓ »α«úαἼἠñαπªÑ½εí¿Ñ,
- ¬«Γ«α«Ñ »«½∞º«óáΓѽ¿ «Γ ¡¿σ ¿ «ª¿ñáεΓ. ò«Γ∩ »« ßπΘÑßΓóπ ¿
- »α«ßΓδÑ, ¿ ¿ßτѺáεΘ¿Ñ, ¿ ¿Ñαáασ¿τÑ߬¿Ñ ¼Ñ¡ε »αÑñßΓáó½∩εΓ
- ¡Ñ¬«Γ«αδÑ Γαπñ¡«ßΓ¿ ó »α«úαá¼¼¿α«óá¡¿¿.
-
- 櫺ñá¡¿Ñ ¿ßτѺáεΘ¿σ ¿ ¿Ñαáασ¿τÑ߬¿σ ¼Ñ¡ε ΓαÑíπÑΓ »α∩¼«ú«
- π»αáó½Ñ¡¿∩ φ¬αá¡«¼. ò«Γ∩ «ß¡«ó¡δÑ »α«úαá¼¼δ ¼Ñ¡ε »«½¡«ßΓ∞ε
- ¼«í¿½∞¡δ, »α«úαá¼¼δ ñ«ßΓπ»á ¬ φ¬αá¡π ºáó¿ß∩Γ «Γ «»Ñαᵿ«¡¡«⌐
- ß¿ßΓÑ¼δ ¿ «í«απñ«óá¡¿∩ ¿ ¡Ñ ¿ß»«½∞ºπεΓ «íδτ¡δÑ Σπ¡¬µ¿¿ æ¿
- óó«ñá/óδó«ñá ¡á ¬«¡ß«½∞. Åα«úαá¼¼δ ó¿ñÑ« ñ«ßΓπ»á αáºαáí«Γá¡δ ñ½∩
- αáí«Γδ ß ½εíδ¼ ¬«¼»∞εΓÑα«¼, ¿ß»«½∞ºπεΘ¿¼ äÄæ ¿ ¿¼ÑεΘ¿¼ BIOS
- «»Ñαᵿ«¡¡«⌐ ß¿ßΓѼδ ß«ó¼ÑßΓ¿¼δ⌐ ß IBM. BIOS-äÄæ óδíαá¡ »«Γ«¼π
- τΓ« «¡ Φ¿α«¬« ¿ß»«½∞ºπÑΓß∩, ¡« óδ ¼«ªÑΓÑ »α¿¼Ñ¡¿Γ∞ «ß¡«ó¡δÑ ¿ñÑ¿
- ¿ ó ñαπú¿σ ß¿ßΓѼáσ.
-
- äáªÑ Ñß½¿ óáß ßÑ⌐τáß ¡Ñ ¿¡ΓÑαÑßπεΓ ¿ßτѺáεΘ¿Ñ ¿
- ¿Ñαáασ¿τÑ߬¿Ñ ¼Ñ¡ε, Γ« óá¼ ß½ÑñπÑΓ »α«τ¿ΓáΓ∞ τáßΓ∞ φΓ«⌐ ú½áóδ, ó
- ¬«Γ«α«⌐ «íßπªñáεΓß∩ ó¿ñÑ«áñá»ΓÑαδ, º¡á¡¿Ñ ¼¡«ú¿σ «ß¡«ó¡δσ ¿ñÑ⌐
- ¡Ñ«íσ«ñ¿¼« ñ½∩ »«¡¿¼á¡¿∩ »«ß½ÑñπεΘ¿σ ú½áó.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 4 --
-
-
- ùΓ« Γá¬«Ñ ¿ßτѺáεΘ¿Ñ ¿ ¿Ñαáασ¿τÑ߬¿Ñ ¼Ñ¡ε?
- -----------------------------------------------------------------
-
- é᪡« »«¡¿¼áΓ∞ τΓ« Γá¬«Ñ ¿ßτѺáεΘ¿Ñ ¿ ¿Ñαáασ¿τÑ߬¿Ñ ¼Ñ¡ε ¿
- τѼ «¡¿ «Γ½¿τáεΓß∩ «Γ ßΓá¡ñáαΓ¡δσ ¼Ñ¡ε. Åα¿ ¿ß»«½∞º«óá¡¿¿
- ßΓá¡ñáαΓ¡δσ ¼Ñ¡ε φ¬αá¡ «τ¿ΘáÑΓß∩ ¿½¿ ßñó¿úáÑΓß∩, ¿ »«∩ó½∩ÑΓß∩
- ¼Ñ¡ε. è«úñá óδí«α ßñѽá¡, φ¬αá¡ «»∩Γ∞ «τ¿ΘáÑΓß∩ ¿½¿ ßñó¿úáÑΓß∩ ¿
- »α«úαá¼¼á »α«ñ«½ªáÑΓß∩. éδí«α óδ»«½¡∩ÑΓß∩ »« ¡«¼Ñαπ ¿½¿ »« »Ñαó«⌐
- íπ¬óÑ ¬áªñ«⌐ á½∞ΓÑα¡áΓ¿óδ.
-
- è«úñá ¿ß»«½∞ºπÑΓß∩ ¿ßτѺáεΘÑÑ ¿½¿ ¿Ñαáασ¿τÑ߬«Ñ ¼Ñ¡ε, Γ« «¡«
- »«¬αδóáÑΓ »α∩¼« ß«ñÑন¼«Ñ φ¬αá¡á. Å«ß½Ñ óδí«αá αѪ¿¼á, φ¬αá¡
- ó«ºóαáΘáÑΓß∩ ó »αÑñδñπΘÑÑ ß«ßΓ«∩¡¿Ñ. éδ óδí¿αáÑΓÑ ¡πª¡δ⌐ αѪ¿¼ ¿º
- ¼Ñ¡ε «ñ¡¿¼ ¿º ñóπσ ß»«ß«í«ó: (1) ¡áª¿¼á∩ á¬Γ¿ó¡πε ¬½áó¿Φπ,
- ¬«Γ«αá∩ ∩ó½∩ÑΓß∩ íπ¬ó«⌐ ¿½¿ ¡«¼Ñα«¼, ßó∩ºá¡¡δ¼ ß óδí«α«¼, ¿½¿ (2)
- ¿ß»«½∞ºπ∩ ¬½áó¿Φ¿ π»αáó½Ñ¡¿∩ ¬παß«α«¼ ñ½∩ »ÑαÑñó¿ªÑ¡¿∩
- »«ñßóÑτÑ¡¡«ú« »«½∩ ¿ ¬½áó¿Φπ éó«ñ. Äíδτ¡« ΓѬπΘÑÑ »«½Ñ
- »«¬áºδóáÑΓß∩ ó ¿¡óÑαß¡«¼ ó¿ñÑ. Äß¡«ó¡á∩ αạ¿µá ¼Ñªñπ
- ßΓá¡ñáαΓ¡δ¼¿ ¼Ñ¡ε ¿ ¿ßτѺáεΘ¿¼¿ ¿ ¿Ñαáασ¿τÑ߬¿¼¿ ¼Ñ¡ε ó Γ«¼, τΓ«
- ßΓá¡ñáαΓ¡«Ñ ¼Ñ¡ε »αÑαδóáÑΓ »α«úαá¼¼π. êßτѺáεΘ¿Ñ ¿ ¿Ñαáασ¿τÑ߬¿Ñ
- ¼Ñ¡ε Γ«½∞¬« »α¿«ßΓá¡áó½¿óáεΓ ΓѬπΘ¿Ñ ñÑ⌐ßΓó¿∩ »α«úαá¼¼δ. æ Γ«τ¬¿
- ºαÑ¡¿∩ »«½∞º«óáΓѽ∩ ßΓá¡ñáαΓ¡«Ñ ¼Ñ¡ε - »αÑαδóá¡¿Ñ ¬«¡µÑ¡Γαᵿ¿,
- Γ«úñá ¬á¬ ¿ßτѺáεΘÑÑ ¼Ñ¡ε - »α«ßΓ« ½Ñú¬á∩ »α¿«ßΓá¡«ó¬á,
- ¬«¡µÑ¡Γαᵿ∩ 󡿼᡿∩ »«½∞º«óáΓѽ∩ ¡Ñ ¡áαπΦÑ¡á.
-
- Éạ¿µá ¼Ñªñπ ¿ßτѺáεΘ¿¼¿ ¿ ¿Ñαáασ¿τÑ߬¿¼¿ ¼Ñ¡ε »α«ßΓá.
- Æ«½∞¬« «ñ¡« ¿ßτѺáεΘÑÑ ¼Ñ¡ε ¼«ªÑΓ íδΓ∞ ¡á φ¬αá¡Ñ ó ñá¡¡δ⌐ ¼«¼Ñ¡Γ
- óαѼѡ¿. Ä¡« ¿ß»«½∞ºπÑΓß∩ ¬«úñá ¼Ñ¡ε ¿¼ÑÑΓ Γ«½∞¬« «ñ¿¡ πα«óÑ¡∞ ó
- ú½πí¿¡π, φΓ« íδóáÑΓ, ¬«úñá óδí«α ¿º ¼Ñ¡ε ¡Ñ ¿¼ÑÑΓ »«ñóδí«α«ó. æ
- ñαπú«⌐ ßΓ«α«¡δ ¡Ñ߬«½∞¬« ¿Ñαáασ¿τÑ߬¿σ ¼Ñ¡ε ¼«úπΓ íδΓ∞ á¬Γ¿ó¡δ
- «ñ¡«óαѼѡ¡«. Ä¡¿ ¿ß»«½∞ºπεΓß∩ ¬«úñá óδí«α ¿º «ñ¡«ú« ¼Ñ¡ε ¼«ªÑΓ
- »«ΓαÑí«óáΓ∞ ¿ß»«½∞º«óá¡¿∩ ñαπú«ú« ¼Ñ¡ε ñ½∩ «»αÑñѽѡ¿∩ ¡Ñ¬«Γ«αδσ
- á½∞ΓÑα¡áΓ¿ó. ìá»α¿¼Ñα, óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ¿Ñαáασ¿τÑ߬«Ñ ¼Ñ¡ε,
- Ñß½¿ óδ »¿ΦÑΓÑ »α«úαá¼¼π, ¬«Γ«αá∩ «»αÑñѽ∩ÑΓ Σαπ¬Γ. àß½¿
- »«½∞º«óáΓѽ∞ óδíαá½ "∩í½«¬«", ß½ÑñπεΘÑÑ ¼Ñ¡ε »αÑñ½áúáÑΓ óδíαáΓ∞
- µóÑΓ ∩í½«¬á, á ΓαÑΓ∞Ñ ¼Ñ¡ε óδßóÑτ¿óáÑΓ ∩í½«¬¿, ¬«Γ«αδÑ
- πñ«ó«½ÑΓó«α∩εΓ »αÑñδñπΘ¿¼ óδí«αá¼.
-
- éδ ¼«ªÑΓÑ »αÑñßΓáó½∩Γ∞ ¿ßτѺáεΘÑÑ ¼Ñ¡ε »α«ßΓ« ¬á¬
- ¿Ñαáασ¿τÑ߬«Ñ ¼Ñ¡ε, ¬«Γ«α«Ñ ¡Ñ ¿¼ÑÑΓ »«ñ¼Ñ¡ε, ¡« αáºαáí«Γ¬á
- «Γñѽ∞¡δσ »α«µÑñπα ñ½∩ φΓ¿σ Γ¿»«ó ¼Ñ¡ε ¿¼ÑÑΓ Γ« »αÑ¿¼πΘÑßΓó«, τΓ«
- ¿Ñαáασ¿τÑ߬«Ñ ¼Ñ¡ε ΓαÑíπÑΓ º¡áτ¿Γѽ∞¡« í«½ÑÑ ß½«ª¡«⌐ »α«úαá¼¼δ,
- τѼ »α«ßΓ«Ñ ¿ßτѺáεΘÑÑ ¼Ñ¡ε.
-
- ò«Γ∩ ¿¼ÑÑΓß∩ ¼¡«ú« ß»«ß«í«ó αáß»«½«ªÑ¡¿∩ ¼Ñ¡ε ¡á φ¬αá¡Ñ,
- Σπ¡¬µ¿¿, αáºαáí«Γá¡¡δÑ ó φΓ«⌐ ú½áóÑ ¿¼ÑεΓ ¡á¿í«½ÑÑ «íΘ¿⌐ ó¿ñ.
- ¥Γ«Γ ¼ÑΓ«ñ »«¼ÑΘáÑΓ «τÑαÑñ¡«Ñ »«½Ñ ¼Ñ¡ε ¡á ¡«óπε ßΓ᫬𠻫ñ
- »Ñαóδ¼ »«½Ñ¼.
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 5 --
-
-
- Éáí«Γá ó¿ñÑ«áñá»ΓÑα«ó.
- -----------------------------------------------------------------
-
- êº-ºá Γ«ú«, τΓ« ß«ºñá¡¿Ñ ¿ßτѺáεΘ¿σ ¿ ¿Ñαáασ¿τÑ߬¿σ ¼Ñ¡ε
- ΓαÑíπÑΓ »α∩¼«ú« π»αáó½Ñ¡¿∩ φ¬αá¡«¼, ó᪡« »«¡¿¼á¡¿Ñ áñá»ΓÑα«ó
- ñ¿ß»½Ñ∩. Æα¿ «ß¡«ó¡δσ Γ¿»á áñá»ΓÑα«ó - φΓ« «ñ¡«µóÑΓ¡δ⌐ áñá»ΓÑα,
- µóÑΓ¡«⌐/úαáΣ¿τÑ߬¿⌐ áñá»ΓÑα (CGA) ¿ πß«óÑαΦÑ¡ßΓó«óá¡¡δ⌐
- úαáΣ¿τÑ߬¿⌐ áñá»ΓÑα (EGA). CGA ¿ EGA ¼«úπΓ ¿¼ÑΓ∞ ¡Ñ߬«½∞¬«
- αѪ¿¼«ó αáí«Γδ, ó¬½ετá∩ 40- ¿½¿ 80- ß¿¼ó«½∞¡δ⌐ ΓѬßΓ ¿½¿
- úαáΣ¿τÑ߬¿Ñ «»Ñαᵿ¿. ¥Γ¿ αѪ¿¼δ »«¬áºá¡δ ó Γáí½¿µÑ 1-1.
- Åα«úαá¼¼δ ¼Ñ¡ε, αáºαáí«Γá¡¡δÑ ó φΓ«⌐ ú½áóÑ, αáºαáí«Γá¡δ ñ½∩
- ¿ß»«½∞º«óá¡¿∩ αѪ¿¼á 80-ß¿¼ó«½∞¡«ú« ΓѬßΓá, ¬«Γ«αδ⌐ ∩ó½∩ÑΓß∩
- ¡á¿í«½ÑÑ «íΘ¿¼ αѪ¿¼«¼ ñ½∩ «íΘѵѽÑóδσ »α¿¼Ñ¡Ñ¡¿⌐. ¥Γ« º¡áτ¿Γ,
- τΓ« ó¿ñÑ« αѪ¿¼ ß¿ßΓѼδ ñ«½ªÑ¡ íδΓ∞ 2, 3 ¿½¿ 7. ìѺáó¿ß¿¼« «Γ
- ¿ß»«½∞ºπѼ«ú« αѪ¿¼á - ¬««αñ¿¡áΓδ ½Ñó«ú« óÑασ¡Ñú« πú½á - 0,0.
-
-
- Æáí½¿µá 1-1.
- ------------
-
- ÉѪ¿¼ Æ¿» ÉẼÑαδ Çñá»ΓÑαδ
- ---------------------------------------------------------------
- 0 ΓѬßΓ,τ/í 40*25 CGA,EGA
- 1 ΓѬßΓ 16 µóÑΓ«ó 40*25 CGA,EGA
- 2 ΓѬßΓ τ/í 80*25 CGA,EGA
- 3 ΓѬßΓ 16 µóÑΓ«ó 80*25 CGA,EGA
- 4 úαáΣ¿¬á 4 µóÑΓá 320*200 CGA,EGA
- 5 úαáΣ¿¬á 4 ßÑαδσ Γ«¡á 320*200 CGA,EGA
- 6 úαáΣ¿¬á τ/í 640*200 CGA,EGA
- 7 ΓѬßΓ τ/í 80*25 ¼«¡«σα«¼¡δ⌐
- 8 úαáΣ¿¬á 16 µóÑΓ«ó 160*200 PCjr
- 9 úαáΣ¿¬á 16 µóÑΓ«ó 320*200 PCjr
- 10 úαáΣ¿¬á 4 ¿½¿ 16 µó. 640*200 PCjr,EGA
- 13 úαáΣ¿¬á 16 µóÑΓ«ó 320*200 EGA
- 14 úαáΣ¿¬á 16 µóÑΓ«ó 640*200 EGA
- 15 úαáΣ¿¬á 4 µóÑΓá 640*350 EGA
- --------------------------------------------------------------
-
-
- 濼ó«½δ, óδó«ñ¿¼δÑ ¡á φ¬αá¡, ß«ñÑαªáΓß∩ ó ¡Ñ¬«Γ«α«⌐
- ºáαѺÑαó¿α«óá¡¡«⌐ «í½áßΓ¿ »á¼∩Γ¿ ¡á áñá»ΓÑαÑ ñ¿ß»½Ñ∩. ÇñαÑß
- «ñ¡«µóÑΓ¡«⌐ ¿¡Σ«α¼áµ¿¿ é0000000H. ê CGA, ¿ EGA σαá¡∩Γ ¿¡Σ«α¼áµ¿ε,
- ¡áτ¿¡á∩ ß B80000000H. (Ä¡¿ αẽ¿τ¡δ ñ½∩ Γ«ú«, τΓ«íδ »«ºó«½¿Γ∞
- ¿ß»«½∞º«óáΓ∞ αáºñѽ∞¡« ΓѬßΓ«óδ⌐ ¿ úαáΣ¿τÑ߬¿⌐ φ¬αá¡ - ¡« ¡á
- »αá¬Γ¿¬Ñ φΓ« ñѽáÑΓß∩ αÑñ¬«.) ò«Γ∩ Σπ¡¬µ¿¿ CGA ¿ EGA αẽ¿τ¡δ ó
- αạδσ αѪ¿¼áσ, «¡¿ «ñ¿¡á¬«óδ ó αѪ¿¼áσ 2 ¿ 3.
-
- èáªñδ⌐ ß¿¼ó«½, óδó«ñ¿¼δ⌐ ¡á φ¬αá¡, ΓαÑíπÑΓ ñóá íá⌐Γá ó¿ñÑ«
- »á¼∩Γ¿. ÅÑαóδ⌐ íá⌐Γ ß«ñÑαª¿Γ ß«íßΓóÑ¡¡« ß¿¼ó«½, óΓ«α«⌐ ß«ñÑনΓ
- áΓΓα¿íπΓδ φ¬αá¡á. ä½∩ µóÑΓ¡«ú« φ¬αá¡á íá⌐Γ áΓΓα¿íπΓ«ó
- ¿¡ΓÑα»αÑΓ¿απÑΓß∩ Γá¬, ¬á¬ »«¬áºá¡« ó Γáí½¿µÑ 1-2. àß½¿ π óáß EGA
- ¿½¿ CGA, Γ« »« π¼«½τá¡¿ε »α¿¡¿¼áÑΓß∩ αѪ¿¼ 3, ¿ ß¿¼ó«½δ óδó«ñ∩Γß∩
- ß íá⌐Γ«¼ áΓΓα¿íπΓ«ó 7. ¥Γ« º¡áτÑ¡¿Ñ ó¬½ετáÑΓ Γα¿ «ß¡«ó¡δσ µóÑΓá,
- »α«¿ºó«ñ∩ ñ½∩ ß¿¼ó«½á íѽδ⌐ µóÑΓ. ä½∩ »ÑαѬ½ετÑ¡¿∩ ó ¿¡óÑαß¡δ⌐
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 6 --
-
-
- αѪ¿¼ ¡Ñíσ«ñ¿¼« ó䬽ετ¿Γ∞ Γα¿ «ß¡«ó¡δσ í¿Γá ¿ ó¬½ετ¿Γ∞ Γα¿
- Σ«¡«óδσ í¿Γá, τΓ« ñáÑΓ º¡áτÑ¡¿Ñ 70H.
-
- Äñ¡«µóÑΓ¡δ⌐ áñá»ΓÑα αáß»«º¡áÑΓ í¿Γδ ¼¿úá¡¿∩ ¿ ¿¡Γѡ߿ó¡«ßΓ¿.
- è ßτáßΓ∞ε, «¡ αáºαáí«Γá¡ Γá¬, τΓ« ¿¡ΓÑα»αÑΓ¿απÑΓ áΓΓα¿íπΓ 7, ¬á¬
- ¡«α¼á½∞¡δ⌐ ΓѬßΓ (íѽ«Ñ ¡á τÑα¡«¼) ¿ 70ì ¬á¬ ¿¡óÑαß¡«Ñ ó¿ñÑ«.
- èßΓáΓ¿, º¡áτÑ¡¿Ñ 1 ñáÑΓ »«ñτÑભπΓδÑ ß¿¼ó«½δ.
-
-
-
- Æáí½¿µá 1-2
- -----------
- üá⌐Γ ó¿ñÑ«áñá»ΓÑαá
-
- ü¿Γ äó«¿τ¡á∩ óѽ¿τ¿¡á ç¡áτÑ¡¿Ñ »α¿ πßΓá¡«ó¬Ñ
- ----------------------------------------------------------------
- 0 1 ú«½πí«⌐ «ß¡«ó¡«⌐
- 1 2 ºÑ½Ñ¡δ⌐ «ß¡«ó¡«⌐
- 2 4 ¬αáß¡δ⌐ «ß¡«ó¡«⌐
- 3 8 ¼á½á∩ ¿¡Γѡ߿ó¡«ßΓ∞
- 4 16 ú«½πí«⌐ Σ«¡«óδ⌐
- 5 32 ºÑ½Ñ¡δ⌐ Σ«¡«óδ⌐
- 6 64 ¬αáß¡δ⌐ Σ«¡«óδ⌐
- 7 128 ¼¿úáεΘ¿⌐ ß¿¼ó«½
- ----------------------------------------------------------------
-
- èáªñδ⌐ áñá»ΓÑα ¿¼ÑÑΓ »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ ó 4 αáºá í«½∞ΦÑ »á¼∩Γ¿,
- τѼ ¡Ñ«íσ«ñ¿¼« ñ½∩ óδó«ñá ΓѬßΓá ó 80-ß¿¼ó«½∞¡«¼ αѪ¿¼Ñ. ä½∩
- φΓ«ú« ÑßΓ∞ ñóÑ »α¿τ¿¡δ. é«-»Ñαóδσ, ½¿Φ¡∩∩ »á¼∩Γ∞ ¡πª¡á ñ½∩
- úαáΣ¿¬¿, (¬«¡Ñτ¡« ¬α«¼Ñ «ñ¡«µóÑΓ¡«ú« áñá»ΓÑαá). é«-óΓ«αδσ φΓ«
- »«ºó«½∩ÑΓ ñÑαªáΓ∞ ó »á¼∩Γ¿ ¡Ñ߬«½∞¬« φ¬αá¡«ó ¿ »«Γ«¼ »α«ßΓ«
- »ÑαѬ½ετáΓ∞ß∩ ¼Ñªñπ ¡¿¼¿ »« ¼ÑαÑ ¡Ñ«íσ«ñ¿¼«ßΓ¿. èáªñá∩ «í½áßΓ∞
- »á¼∩Γ¿ ¡áºδóáÑΓß∩ ó¿ñÑ«ßΓαá¡¿µÑ⌐ ¿ φΣΣÑ¬Γ «Γ »ÑαѬ½ετÑ¡¿∩ ¼Ñªñπ
- ó¿ñÑ«ßΓαá¡¿µá¼¿ ó»ÑτáΓ½∩εΘ. Å« π¼«½τá¡¿ε »α¿ ¿¡¿µ¿á½¿ºáµ¿¿ äÄæ
- ¿ß»«½∞ºπÑΓß∩ ßΓαá¡¿µá 0, ¿ ó¿αΓπá½∞¡« óßÑ »α¿½«ªÑ¡¿∩ ¿ß»«½∞ºπεΓ
- ßΓαá¡¿µπ 0. Å« φΓ«⌐ »α¿τ¿¡Ñ «¡á ¿ß»«½∞ºπÑΓß∩ ¿ ó φΓ«⌐ ú½áóÑ.
- Äñ¡á¬«, óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ¿ ñαπú¿Ñ ßΓαá¡¿µδ, Ñß½¿ ºáσ«Γ¿ΓÑ.
-
- ê¼ÑÑΓß∩ Γα¿ ß»«ß«íá ñ«ßΓπ»á ¬ ó¿ñÑ«áñá»ΓÑαπ. ÅÑαóδ⌐ φΓ«
- τÑαѺ »αÑαδóá¡¿Ñ äÄæ, ¬«Γ«α«Ñ ñ«ßΓáΓ«τ¡« ¼Ññ½Ñ¡¡« ñ½∩ ¿ßτѺáεΘÑú«
- ¼Ñ¡ε. éΓ«α«⌐ - φΓ« τÑαѺ »α«µÑñπαδ BIOS, ¬«Γ«αδÑ íδßΓαÑÑ, ¿ ¡á
- íδßΓα«ñÑ⌐ßΓóπεΘ¿σ ¼áΦ¿¡áσ, Γᬿσ, ¬á¬ AT ¿½¿ PS/2 ñ«ßΓáΓ«τ¡«
- íδßΓαδ, Ñß½¿ ¼Ñ¡ε ¡Ñóѽ¿¬¿. ÆαÑΓ¿⌐ ß»«ß«í - φΓ« τΓÑ¡¿Ñ ¿ ºá»¿ß∞
- »α∩¼« ó ó¿ñÑ«»á¼∩Γ∞, τΓ« »α«¿ßσ«ñ¿Γ «τÑ¡∞ íδßΓα«, ¡« ΓαÑíπÑΓ
- í«½∞ΦÑ⌐ αáí«Γδ «Γ óáß. ¥Γá ú½áóá αáßß¼áΓα¿óáÑΓ ñóá αạδσ »«ñσ«ñá
- ó ó¿ñÑ« »α«µÑñπαáσ. Äñ¿¡ ¿ß»«½∞ºπÑΓ BIOS, á ñαπú«⌐ »α∩¼«⌐ ñ«ßΓπ»
- ¬ ó¿ñÑ«»á¼∩Γ¿.
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 7 --
-
-
- ä«ßΓπ» ¬ φ¬αá¡π τÑαѺ BIOS
- -----------------------------------------------------------------
-
- êº-ºá Γ«ú«, τΓ« ¿ßτѺáεΘ¿Ñ ¿ ¿Ñαáασ¿τÑ߬¿Ñ ¼Ñ¡ε ñ«½ª¡δ
- ß«σαá¡∩Γ∞ ¿¡Σ«α¼áµ¿ε ß Γ«ú« ¼ÑßΓá φ¬αá¡á, ¡á ¬«Γ«α«¼ «¡¿
- αáß»«½«ªÑ¡δ, ¿ ó«ßßΓá¡áó½¿óáΓ∞ Ñú« »«ß½Ñ óδí«αá, óδ ñ«½ª¡δ ¿¼ÑΓ∞
- »α«µÑñπαδ, ¬«Γ«αδÑ ß«σαá¡∩εΓ ¿ ºáúαπªáεΓ τáßΓ∞ φ¬αá¡á. îÑΓ«ñ
- ß«σαá¡Ñ¡¿∩ ¿ ó«ßßΓá¡«ó½Ñ¡¿∩ τáßΓ¿ φ¬αá¡á, αáßß¼áΓα¿óáѼδ⌐ ó φΓ«¼
- αáºñÑ½Ñ ßó∩ºá¡ ß ó맮óἿ ñóπσ óßΓα«Ñ¡¡δσ ó BIOS Σπ¡¬µ¿⌐, ¬«Γ«αδÑ
- τ¿ΓáεΓ ¿ ºá»¿ßδóáεΓ ß¿¼ó«½δ ¡á φ¬αá¡.
-
- èᬠóδ º¡áÑΓÑ, ó맮óδ BIOS ¼«úπΓ íδΓ∞ «τÑ¡∞ ¼Ññ½Ñ¡¡δ¼¿.
- Äñ¡á¬«, «¡¿ (í«½ÑÑ ¿½¿ ¼Ñ¡ÑÑ) úáαá¡Γ¿απεΓ αáí«Γπ ¡á ½εí«¼
- ¬«¼»∞εΓÑαÑ, ¬«Γ«αδ⌐ ¿¼ÑÑΓ BIOS, ß«ó¼ÑßΓ¿¼δ⌐ ß IBM, ñáªÑ Ñß½¿
- á»»áαáΓπαá φ¬αá¡á ñαπúá∩. Å«ºªÑ ó φΓ«⌐ ú½áóÑ óδ πº¡áÑΓÑ, ¬á¬
- óδ»«½¡∩Γ∞ »α∩¼«⌐ ñ«ßΓπ» ¬ ó¿ñÑ«»á¼∩Γ¿ ¡á IBM PC ¿ 100%
- ß«ó¼ÑßΓ¿¼δσ ¼áΦ¿¡áσ ñ½∩ Γ«ú«, τΓ«íδ πóѽ¿τ¿Γ∞ ߬«α«ßΓ∞
- óδ»«½¡Ñ¡¿∩. Äñ¡á¬«, ¿ß»«½∞º«óá¡¿Ñ »α∩¼«ú« ñ«ßΓπ»á ¬ ó¿ñÑ«»á¼∩Γ¿
- ß¡¿ªáÑΓ ó ¡Ñ¬«Γ«α«⌐ ßΓѻѡ¿ »ÑαÑ¡«ß¿¼«ßΓ∞, Γᬠ¬á¬ ΓαÑíπÑΓß∩ 100%
- ß«ó¼ÑßΓ¿¼«ßΓ∞ ¬«¼»∞εΓÑαá ß IBM PC. Åα«úαá¼¼δ ¼Ñ¡ε, «ß¡«óá¡¡δÑ ¡á
- BIOS ß½ÑñπÑΓ ¿ß»«½∞º«óáΓ∞ ó »α¿¼Ñ¡Ñ¡¿∩σ, ¬«Γ«αδÑ ΓαÑíπεΓ í«½∞ΦÑ⌐
- ¼«í¿½∞¡«ßΓ¿.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 8 --
-
-
- êß»«½∞º«óá¡¿Ñ int86()
- -----------------------------------------------------------------
-
- é맮óδ BIOS ¿ß»«½∞ºπεΓ »α«úαá¼¼¡δÑ »αÑαδóá¡¿∩. BIOS ¿¼ÑÑΓ
- ¡Ñ߬«½∞¬« αẽ¿τ¡δσ »αÑαδóá¡¿⌐ ñ½∩ αạδσ µÑ½Ñ⌐. Äñ¡« ¿º ¡¿σ ¼δ
- íπñѼ ¿ß»«½∞º«óáΓ∞ ñ½∩ ñ«ßΓπ»á ¬ φ¬αá¡π. ¥Γ« »αÑαδóá¡¿Ñ 16 (10ì),
- ¬«Γ«α«Ñ ¿ß»«½∞ºπÑΓß∩ ñ½∩ ñ«ßΓπ»á ¬ ñ¿ß»½Ñε. (àß½¿ óδ ¡Ñ º¡á¬«¼δ ß
- ñ«ßΓπ»«¼ ¬ BIOS, Γ« óδ ¡á⌐ñÑΓÑ σ«α«ΦÑÑ «»¿ßá¡¿Ñ ó ¼«Ñ⌐ ¬¡¿úÑ "æ¿:
- Å«½¡δ⌐ ß»αáó«τ¡¿¬", üÑᬽ¿, 1987). èᬠ¿ ¼¡«ú¿Ñ »αÑαδóá¡¿∩ BIOS,
- »αÑαδóá¡¿Ñ 16 ¿¼ÑÑΓ ¡Ñ߬«½∞¬« αѪ¿¼«ó, óδí«α ¬«Γ«αδσ
- óδ»«½¡∩ÑΓß∩ »« º¡áτÑ¡¿ε αÑú¿ßΓαá AH. àß½¿ Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ
- º¡áτÑ¡¿Ñ, Γ« «¡« ºá¡«ß¿Γß∩ ó αÑú¿ßΓα AL. Äñ¡á¬«, ¿¡«úñá ñ½∩
- ó«ºóαáΘÑ¡¿∩ ¡Ñ߬«½∞¬¿σ º¡áτÑ¡¿⌐ ¿ß»«½∞ºπεΓß∩ ñαπú¿Ñ αÑú¿ßΓαδ. ä½∩
- ñ«ßΓπ»á ¬ »αÑαδóá¡¿∩¼ BIOS óá¼ »α¿ñÑΓß∩ ¿ß»«½∞º«óáΓ∞ Σπ¡¬µ¿ε æ¿
- int86(). (ìѬ«Γ«αδÑ ¬«¼»¿½∩Γ«αδ ¼«úπΓ ¡áºδóáΓ∞ φΓπ Σπ¡¬µ¿ε ñαπú¿¼
- ¿¼Ñ¡Ñ¼, ¡« MicroSoft C ¿ Æπαí« æ¿ ¡áºδóáεΓ ÑÑ int86().
- ū߽ÑñπεΘ¿Ñ αáßßπªñÑ¡¿∩ «α¿Ñ¡Γ¿α«óá¡δ ¡á φΓ¿ Γαá¡ß½∩Γ«αδ, ¡« óδ
- ¼«ªÑΓÑ ¿σ «í«íΘ¿Γ∞.
-
- öπ¡¬µ¿∩ int86() ¿¼ÑÑΓ ß½ÑñπεΘπε Σ«α¼π:
-
- int int86(num,inregs,outregs)
- int num; /* ¡«¼Ñα »αÑαδóá¡¿∩ */
- union REGS *inregs; /* óσ«ñ¡δÑ º¡áτÑ¡¿∩ αÑú¿ßΓα«ó */
- union REGS *outregs; /* óδσ«ñ¡δÑ º¡áτÑ¡¿∩ αÑú¿ßΓα«ó */
-
- öπ¡¬µ¿∩ int86() ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ αÑú¿ßΓαá Çò. Æ¿» REGS
- «»¿ßδóáÑΓß∩ ó ºáú«½«ó¬Ñ DOS.H. ¥Γ«Γ Γ¿» »«¬áºá¡ ºñÑß∞ Γá¬, ¬á¬ «¡
- «»αÑñѽѡ ó Æπαí« æ¿, «ñ¡á¬«, «¡ á¡á½«ú¿τ¡« «»αÑñѽѡ ó MisroSoft
- C ¿ ó ñαπú¿σ ¬«¼»¿½∩Γ«αáσ.
-
- struct WORDREGS {
- unsigned int ax, bx, cx, dx, si, di, cflag, flags;
- };
- struct BYTEREGS {
- unsigned char al, ah, bl, bh, cl, ch, dl, dh;
- };
- union REGS {
- struct WORDREGS x;
- struct BYTEREGS h;
- };
-
- èᬠóδ ¼«ªÑΓÑ ó¿ñÑΓ∞, REGS - φΓ« «íΩÑñ¿¡Ñ¡¿Ñ ñóπσ ßΓαπ¬Γπα.
- êß»«½∞º«óá¡¿Ñ ßΓαπ¬Γπαδ WORDREGS »«ºó«½∩ÑΓ αáßß¼áΓα¿óáΓ∞ αÑú¿ßΓαδ
- ûÅ ¬á¬ 16-í¿Γ¡δÑ τ¿ß½á. BYTREGS ñáÑΓ óá¼ ñ«ßΓπ» ¬ «Γñѽ∞¡δ¼ 8-
- í¿Γ¡δ¼ αÑú¿ßΓαá¼. ìá»α¿¼Ñα, ñ½∩ ñ«ßΓπ»á ¬ »αÑαδóá¡¿ε 16, Σπ¡¬µ¿¿
- 5, óδ ñ«½ª¡δ ¿ß»«½∞º«óáΓ∞ ß½ÑñπεΘπε »«ß½Ññ«óáΓѽ∞¡«ßΓ∞.
-
- union REGS in,out;
-
- in.h.ah=5;
- int86(16,&in,&out);
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 9 --
-
-
-
- æ«σαá¡Ñ¡¿Ñ τáßΓ¿ φ¬αá¡á.
- -----------------------------------------------------------------
-
- ä½∩ ß«σαá¡Ñ¡¿∩ ß«ñÑন¼«ú« φ¬αá¡á, ñ«½ª¡« íδΓ∞ »α«τ¿Γá¡« ¿
- ºá»«¼¡Ñ¡« ΓѬπΘÑÑ º¡áτÑ¡¿Ñ ¬áªñ«⌐ »«º¿µ¿¿ φ¬αá¡á. ä½∩ ßτ¿Γδóá¡¿∩
- ß¿¼ó«½á ß «»αÑñѽѡ¡«⌐ »«º¿µ¿¿ φ¬αá¡á, ¿ß»«½∞ºπÑΓß∩ »αÑαδóá¡¿Ñ
- 16, Σπ¡¬µ¿∩ 8, ¬«Γ«αá∩ ó«ºóαáΘáÑΓ ß¿¼ó«½ ¿ ßó∩ºá¡¡δ⌐ ß ¡¿¼
- áΓΓα¿íπΓ ΓѬπΘÑ⌐ »«º¿µ¿¿ ¬παß«αá. ä½∩ ßτ¿Γδóá¡¿∩ ß¿¼ó«½á ß
- «»αÑñѽѡ¡«ú« ¼ÑßΓá φ¬αá¡á, óδ ñ«½ª¡δ ¿¼ÑΓ∞ ß»«ß«í πßΓá¡«ó¬¿
- ¬παß«αá. ò«Γ∩ ¡Ñ¬«Γ«αδÑ ¬«¼»¿½∩Γ«αδ æ¿ »«ññÑনóáεΓ φΓπ Σπ¡¬µ¿ε,
- ¼¡«ú¿Ñ ÑÑ ¡Ñ ¿¼ÑεΓ. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ »«¬áºá¡¡á∩ ¡¿ªÑ Σπ¡¬µ¿∩
- goto_xy() ¼«ªÑΓ íδΓ∞ ¿ß»«½∞º«óá¡á. Ä¡á ¿ß»«½∞ºπÑΓ »αÑαδóá¡¿Ñ 16,
- Σπ¡¬µ¿ε 2 ß ¬««αñ¿¡áΓ«⌐ ßΓ«½íµá ó DL ¿ ¬««αñ¿¡áΓ«⌐ α∩ñá ó DH.
- é¿ñÑ«ßΓαá¡¿µá ºáñáÑΓß∩ ó éì (¿ß»«½∞ºπÑΓß∩ ßΓαá¡¿µá 0 »«
- π¼«½τá¡¿ε).
-
- /* πßΓá¡«ó¬á ¬παß«αá ó x,y */
- void goto_xy(x,y)
- int x,y;
- {
- union REGS r;
-
- r.h.ah=2; /* Σπ¡¬µ¿∩ πßΓá¡«ó¬¿ ¬παß«αá */
- r.h.dl=y; /* ¬««αñ¿¡áΓá ¬«½«¡¬¿ */
- r.h.dh=x; /* ¬««αñ¿¡áΓá ßΓ᫬¿ */
- r.h.bh=0; /* ó¿ñÑ« ßΓαá¡¿µá */
- int86(0x10,&r,&r);
- }
-
- ÅαÑαδóá¡¿Ñ 16, Σπ¡¬µ¿∩ 8 ó«ºóαáΘáÑΓ ß¿¼ó«½ ¿º ΓѬπΘÑ⌐
- »«º¿µ¿¿ ¬παß«αá ó AL ¿ Ñú« áΓα¿íπΓ ó AH. öπ¡¬µ¿∩ save_video(),
- »«¬áºá¡¡á∩ ºñÑß∞, ßτ¿ΓδóáÑΓ τáßΓ∞ φ¬αá¡á, ß«σαá¡∩ÑΓ ¿¡Σ«α¼áµ¿ε ó
- íπΣÑα, ¿ «τ¿ΘáÑΓ φΓπ τáßΓ∞ φ¬αá¡á.
-
- /* ß«σαá¡Ñ¡¿Ñ τáßΓ¿ φ¬αá¡á */
- void save_video(startx,endx,starty,endy,buf_ptr)
- int startx,endx,starty,endy;
- unsigned int *buf_ptr;
- {
- union REGS r;
- register int i,j;
-
- for(i=starty;i<endy;i++)
- for(j=startx;j<endx;j++) {
- goto_xy(j,i);
- r.h.ah=8; /* Σπ¡¬µ¿∩ τΓÑ¡¿∩ ß¿¼ó«½á */
- r.h.bh=0; /* ó¿ñÑ« ßΓαá¡¿µá */
- *buf_ptr++ = int86(0x10,&r,&r);
- putchar(' '); /* «τ¿ßΓ¬á φ¬αá¡á */
- }
- }
-
- ÅÑαóδÑ τÑΓδαÑ »áαá¼ÑΓαá save_video «»αÑñѽ∩εΓ ¬««αñ¿¡áΓδ
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 10 --
-
-
- óÑασ¡Ñú« ½Ñó«ú« ¿ »αáó«ú« ¡¿ª¡Ñú« πú½á ß«σαá¡∩Ѽ«⌐ «í½áßΓ¿.
- Åáαá¼ÑΓα buf_ptr φΓ« µÑ½δ⌐ π¬áºáΓѽ∞ ¡á «í½áßΓ∞ »á¼∩Γ¿, ¬«Γ«αá∩
- ß«ñÑαª¿Γ ¿¡Σ«α¼áµ¿ε. Ä¡á ñ«½ª¡á íδΓ∞ ñ«ßΓáΓ«τ¡« í«½∞Φ«⌐, τΓ«íδ
- αẼÑßΓ¿Γ∞ óßε ¿¡Σ«α¼áµ¿ε, ßτ¿Γá¡¡πε ß φ¬αá¡á.
-
- Åα«úαá¼¼δ ó φΓ«⌐ ú½áóÑ αẼÑΘáεΓ íπΣÑα ñ¿¡á¼¿τÑ߬¿, ¡« óδ
- ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ½εíπε ñαπúπε ßσѼπ, Ñß½¿ φΓ« ó᪡« ñ½∩ óáΦ¿σ
- »α¿½«ªÑ¡¿⌐. ìÑ ºáíπñ∞ΓÑ, «ñ¡á¬«, τΓ« íπΣÑα ñ«½ªÑ¡ ßπΘÑßΓó«óáΓ∞,
- ñ« ΓÑσ »«α, »«¬á φ¬αá¡ ¡Ñ óÑα¡ÑΓß∩ ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ. ¥Γá
- Σπ¡¬µ¿∩ Γá¬ªÑ τ¿ßΓ¿Γ «í½áßΓ∞, ºá»¿ßδóá∩ »α«íѽ ó ¬áªñ«⌐ »«º¿µ¿¿.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 11 --
-
-
- é«ßßΓá¡«ó½Ñ¡¿Ñ φ¬αá¡á
- -----------------------------------------------------------------
-
- é«ßßΓá¡«ó½Ñ¡¿Ñ φ¬αá¡á »«ß½Ñ ßñѽᡡ«ú« óδí«αá ¿º ¼Ñ¡ε,
- ºá¬½ετáÑΓß∩ »α«ßΓ« ó ºá»¿ß¿ »αÑñóáα¿Γѽ∞¡« ºá»«¼¡Ñ¡¡«⌐ ¿¡Σ«α¼áµ¿¿
- ¡áºáñ ó ó¿ñÑ« »á¼∩Γ∞. ä½∩ Γ«ú«, τΓ«íδ ßñѽáΓ∞ φΓ«, ¿ß»«½∞ºπ⌐ΓÑ
- »αÑαδóá¡¿Ñ 16, Σπ¡¬µ¿ε 9, ¬«Γ«αá∩ ΓαÑíπÑΓ, τΓ«íδ ß¿¼ó«½ íδ½ ó AL,
- áΓΓα¿íπΓ ó BL, ó¿ñÑ« ßΓαá¡¿µá ó éì, á ¬«½¿τÑßΓó« ºá»¿ßδóáѼδσ
- ß¿¼ó«½«ó ó CX (ó ¡áΦѼ ß½πτáÑ 1). öπ¡¬µ¿∩ restore_video(),
- «»¿ßá¡¡á∩ ºñÑß∞, »«¼ÑΘáÑΓ ¿¡Σ«α¼áµ¿ε ¿º íπΣÑαá, ¡á ¬«Γ«αδ⌐
- π¬áºδóáÑΓ buf_ptr, ¡á φ¬αá¡, ºáñá¡¡δ⌐ ¡áτá½∞¡δ¼¿ ¿ ¬«¡Ñτ¡δ¼¿
- ¬««αñ¿¡áΓἿ X ¿ Y.
-
- /* ó«ßßΓá¡«ó½Ñ¡¿Ñ τáßΓ¿ φ¬αá¡á */
- void restore_video(startx,endx,starty,endy,buf_ptr)
- int startx,endx,starty,endy;
- unsigned int *buf_ptr;
- {
- union REGS r;
- register int i,j;
-
- for(i=starty;i<endy;i++)
- for(j=startx;j<endx;j++) {
- goto_xy(j,i);
- r.h.ah=9; /* Σπ¡¬µ¿∩ ºá»¿ß¿ ß¿¼ó«½á */
- r.h.bh=0; /* ó¿ñÑ« ßΓαá¡¿µá */
- r.x.cx=1; /* τ¿ß½« »«óΓ«αÑ¡¿⌐ ß¿¼ó«½á */
- r.h.al=*buf_ptr++; /* ß¿¼ó«½ */
- r.h.bl=*buf_ptr++; /* áΓα¿íπΓ */
- *buf_ptr++ = int86(0x10,&r,&r);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 12 --
-
-
- 櫺ñá¡¿Ñ ¿ßτѺáεΘ¿σ ¼Ñ¡ε
- -----------------------------------------------------------------
-
- öπ¡¬µ¿¿, ß«ºñáεΘÑ⌐ ¿ßτѺáεΘÑÑ ¼Ñ¡ε, ñ«½ª¡á íδΓ∞ »ÑαÑñá¡á
- ¡Ñ¬«Γ«αá∩ ¿¡Σ«α¼áµ¿∩. é«-»Ñαóδσ, φΓ« ß»¿ß«¬ »αÑñ«ßΓáó½∩Ѽδσ ¼Ñ¡ε
- αѪ¿¼«ó. ū߬«½∞¬π ó ¼Ñ¡ε »ÑαÑñáεΓß∩ óδßóÑτ¿óáѼδÑ ßΓ᫬¿, Γ«
- »α«ßΓÑ⌐Φ¿⌐ »πΓ∞ »ÑαÑñáτ¿ ß»¿ß¬á ßΓ᫬ ó Σπ¡¬µ¿ε - »«¼ÑΘÑ¡¿Ñ ¿σ ó
- ñóπ¼Ñα¡δ⌐ ¼áßß¿ó ¿ »ÑαÑñáτá π¬áºáΓѽ∩ ¡á ¼áßß¿ó. èᬠπΓóÑαªñὫß∞
- αá¡ÑÑ, º¡áτÑ¡¿Ñ ¼Ñ¡ε ¼«ªÑΓ íδΓ∞ óδíαá¡« ½¿í« »ÑαÑñó¿ªÑ¡¿Ñ¼
- «ßóÑΘÑ¡¡«⌐ «í½áßΓ¿ ¡á ¡πª¡«Ñ »«½Ñ ¿ ¡áªáΓ¿Ñ¼ éè ¿½¿ ¡áªáΓ¿Ñ¼
- ¬½áó¿Φ¿, π¬áºδóáεΘÑ⌐ ¡á φΓ« »«½Ñ. ä½∩ Γ«ú«, τΓ«íδ Σπ¡¬µ¿∩ º¡á½á,
- ¬á¬¿Ñ ¬½áó¿Φ¿ "ú«α∩τ¿Ñ" ¿ τΓ« «¡¿ «í«º¡áτáεΓ, Ñ⌐ ñ«½ª¡δ íδΓ∞
- »ÑαÑñá¡δ ¿σ ¿¼Ñ¡á. ïπτΦ¿⌐ »πΓ∞ ñ½∩ φΓ«ú« - »ÑαÑñáΓ∞ ßΓ᫬π,
- ¬«Γ«αá∩ ß«ñÑαª¿Γ ß¿¼ó«½δ "ú«α∩τ¿σ" ¬½áó¿Φ ó Γ«¼ ªÑ »«α∩ñ¬Ñ, τΓ« ¿
- ßΓ᫬¿ ¼Ñ¡ε.
-
- öπ¡¬µ¿∩ popup() ñ«½ª¡á Γá¬ªÑ º¡áΓ∞ ¬á¬ ¼¡«ú« αѪ¿¼«ó ó ¼Ñ¡ε,
- ¿ »«φΓ«¼π φΓ« τ¿ß½« ñ«½ª¡« íδΓ∞ »ÑαÑñá¡« Ñ⌐. Ä¡á ñ«½ª¡á ΓᬪÑ
- º¡áΓ∞ úñÑ αáß»«½«ª¿Γ∞ ¼Ñ¡ε, Γ« ÑßΓ∞ ¡πª¡δ ¬««αñ¿¡áΓδ X ¿ Y.
- ìᬫ¡Ñµ, ó ¡Ñ¬«Γ«αδσ ß¿Γπᵿ∩σ ¼«ªÑΓ íδΓ∞ ªÑ½áΓѽ∞¡δ¼ »«¼ÑΘáΓ∞
- ¼Ñ¡ε ó αἬπ, á ó ñαπú¿σ - ¡ÑΓ. Å«φΓ«¼π ñ«½ª¡« íδΓ∞ »ÑαÑñá¡«
- º¡áτÑ¡¿Ñ αἬá ó¬½ετÑ¡á/ó䬽ετÑ¡á. ä½∩ Γ«ú«, τΓ«íδ ¡áτáΓ∞
- αáºαáí«Γ¬π Σπ¡¬µ¿¿ popup() ¡á¼ ¡πª¡« «»¿ßá¡¿Ñ :
-
- /* óδßóÑΓ¿Γ∞ ¿ßτѺáεΘÑÑ ¼Ñ¡ε ¿ ó«ºóαáΓ¿Γ∞ óδí«α */
- int popup(menu,keys,count,x,y,border)
- char *menu[]; /* ΓѬßΓ ¼Ñ¡ε */
- char *keys; /* ú«α∩τ¿Ñ ¬½áó¿Φ¿ */
- int count; /* τ¿ß½« αѪ¿¼«ó */
- int x,y; /* ¬««αñ¿¡áΓδ ½Ñó«ú« óÑασ¡Ñú« πú½á */
- int border; /* Ñß½¿ 0 Γ« íѺ αἬ¿ */
-
- öπ¡¬µ¿∩ popup() ñѽáÑΓ ß½ÑñπεΘÑÑ :
-
- # æ«σαá¡∩ÑΓ «í½áßΓ∞ φ¬αá¡á »«ñ ¼Ñ¡ε
- # éδßóÑτ¿óáÑΓ αἬπ, Ñß½¿ ¡áñ«
- # éδßóÑτ¿óáÑΓ ¼Ñ¡ε
- # Å«½πτáÑΓ «ΓóÑΓ »«½∞º«óáΓѽ∩
- # é«ßßΓá¡áó½¿óáÑΓ φ¬αá¡ ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ
-
- äóÑ ¿º φΓ¿σ µÑ½Ñ⌐ í뫨 ñ«ßΓ¿ú¡πΓδ ó save_video() ¿
- restore_video(), «»¿ßá¡¡δσ ó »αÑñδñπΘѼ αáºñѽÑ. äáóá⌐ΓÑ
- αáßß¼«Γα¿¼ ¬á¬ ñ«ßΓ¿ú¡πΓ∞ Γα¿ «ßΓáóΦ¿Ñß∩.
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 13 --
-
-
- éδßóÑτ¿óá¡¿Ñ ¼Ñ¡ε.
- -----------------------------------------------------------------
-
- ä½∩ Γ«ú«, τΓ«íδ óδßóÑΓ¿Γ∞ ¼Ñ¡ε, ¡Ñ«íσ«ñ¿¼« »«¼¡¿Γ∞, τΓ«
- popup »«½πτáÑΓ π¬áºáΓѽ∞ ¡á ¼áßß¿ó π¬áºáΓѽÑ⌐ ¡á ßΓ᫬¿. ä½∩
- óδßóÑτ¿óá¡¿∩ «Γñѽ∞¡δσ ßΓ᫬ óδ »α«ßΓ« ¿¡ñѬ߿απÑΓÑ π¬áºáΓѽ∞,
- ¬á¬ ¼áßß¿ó. èáªñδ⌐ φ½Ñ¼Ñ¡Γ ó ¼áßß¿óÑ ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¡á
- ß««ΓóÑΓßΓóπεΘ¿⌐ φ½Ñ¼Ñ¡Γ ¼Ñ¡ε. æ½ÑñπεΘá∩ Σπ¡¬µ¿∩ display_menu()
- óδßóÑτ¿óáÑΓ ¬áªñδ⌐ φ½Ñ¼Ñ¡Γ ¼Ñ¡ε.
-
- /* óδßóÑτ¿óá¡¿Ñ ¼Ñ¡ε ¡á ßó«Ñ¼ ¼ÑßΓÑ */
- void display_menu(menu,x,y,count)
- char *menu[];
- int x,y,count;
- {
- register int i;
-
- for(i=0;i<count;i++,x++) {
- goto_xy(x,y);
- printf(menu[i]);
- }
- }
-
- èᬠóδ ¼«ªÑΓÑ ó¿ñÑΓ∞, φΓá Σπ¡¬µ¿∩ »«½πτáÑΓ π¬áºáΓѽ∞ ¡á
- ¼áßß¿ó ßΓ᫬, ¬«Γ«αδÑ ¡áñ« óδóÑßΓ¿, ¬««αñ¿¡áΓδ ¡áτá½á ¼Ñ¡ε ¿
- ¬«½¿τÑßΓó« ßΓ᫬ ó ¼Ñ¡ε.
-
- é ñá½∞¡Ñ⌐ΦѼ »α«ßΓÑ⌐Φ¿⌐ ß»«ß«í ß«ºñáΓ∞ ñóπ¼Ñα¡δ⌐ ¼áßß¿ó
- ß¿¼ó«½«ó, ¬«Γ«αδ⌐ ß«ñÑαª¿Γ ßΓ᫬¿ ¼Ñ¡ε - φΓ« ß«ºñá¡¿Ñ »ÑαѼѡ¡«⌐
- ó «íΘѼ ó¿ñÑ:
-
- char *<¿¼∩ ¼Ñ¡ε> [] = {
- "»Ñαóá∩ ßΓ᫬á",
- "óΓ«αá∩ ßΓ᫬á",
- .
- .
-
- .
- "N-á∩ ßΓ᫬á" };
-
- ¥Γ« «»¿ßá¡¿Ñ áóΓ«¼áΓ¿τÑ߬¿ ºáßΓáó½∩ÑΓ ¬«¼»¿½∩Γ«α æ¿
- »«¼ÑßΓ¿Γ∞ ßΓ᫬¿ ó Γáí½¿µπ ßΓ᫬. ÅÑαѼѡ¡á∩ π¬áºδóáÑΓ ¡á »Ñαóδ⌐
- ß¿¼ó«½ »Ñαó«⌐ ßΓ᫬¿ ó Γáí½¿µÑ. ìá»α¿¼Ñα, φΓ« «»¿ßá¡¿Ñ ß«ºñáÑΓ
- »ÑαѼѡ¡πε fruit (Σαπ¬Γ), ¬«Γ«αá∩ π¬áºδóáÑΓ ¡á "ƒ" ó "ƒí½«¬«".
-
- char *fruit[] = {
- "ƒí½«¬«",
- "ǻѽ∞ß¿¡",
- "âαπΦá",
- "âαÑ⌐»ΣαπΓ",
- "î὿¡á",
- "è½πí¡¿¬á"
- };
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 14 --
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 15 --
-
-
- éδßóÑτ¿óá¡¿Ñ αἬ¿
- -----------------------------------------------------------------
- àß½¿ ¡πª¡á αἬá, Γ« ¼«ª¡« ó«ß»«½∞º«óáΓ∞ß∩ ¡¿ªÑ»α¿óÑñÑ¡¡«⌐
- »α«úαá¼¼«⌐ ñ½∩ óδó«ñá αἬ¿ ó«¬απú ¼Ñ¡ε ß ºáñá¡¡δ¼¿ ¬««αñ¿¡áΓἿ
- ½Ñó«ú« óÑασ¡Ñú« ¿ »αáó«ú« ¡¿ª¡Ñú« πú½«ó. Ä¡á ¿ß»«½∞ºπÑΓ ß¿¼ó«½δ,
- ¬«Γ«αδÑ ∩ó½∩εΓß∩ τáßΓ∞ε ßΓá¡ñáαΓ¡«ú« ¡áí«αá ß¿¼ó«½«ó ¡á ¼áΦ¿¡áσ,
- ß«ó¼ÑßΓ¿¼δσ ß IBM. àß½¿ óδ σ«Γ¿ΓÑ, óδ ¼«ªÑΓÑ óδíαáΓ∞ ñαπú¿Ñ.
-
- void draw_border(startx,starty,endx,endy)
- int startx,starty,endx,endy;
- {
- register int i;
- for(i=startx+1;i<endx;i++) {
- goto_xy(i,starty);
- putchar(179);
- goto_xy(i,endy);
- putchar(179);
- }
- for(i=starty+1;i<endy;i++) {
- goto_xy(startx,i);
- putchar(196);
- goto_xy(endx,i);
- putchar(196);
- }
-
- goto_xy(startx,starty); putchar(218);
- goto_xy(startx,endy ); putchar(191);
- goto_xy(endx ,starty); putchar(192);
- goto_xy(endx ,endy ); putchar(217);
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 16 --
-
-
- éó«ñ óδí«αá »«½∞º«óáΓѽ∩
- -----------------------------------------------------------------
-
- èᬠπΓóÑαªñὫß∞, »«½∞º«óáΓѽ∞ ¼«ªÑΓ óó«ñ¿Γ∞ óδí«α «ñ¡¿¼ ¿º
- ñóπσ ß»«ß«í«ó. é«-»Ñαóδσ ß »«¼«Θ∞ε ¬½áó¿Φ æÆÉàïèÇ éìêç ¿ æÆÉàïèÇ
- ééàÉò ¼«ªÑΓ »ÑαѼÑßΓ¿Γ∞ «ßóÑΘÑ¡¿Ñ ¡á ßΓப㠨 ¡áªáΓ∞ éó«ñ ñ½∩ ÑÑ
- óδí«αá, (Äíδτ¡« «ßóÑΘÑ¡¿Ñ ßΓ᫬¿ óδ»«½¡∩ÑΓß∩ ó ¿¡óÑαß¡«¼ αѪ¿¼Ñ.)
- ÄßóÑΘÑ¡¡πε ßΓ᫬π Γá¬ªÑ ¼«ª¡« »ÑαÑñó¿úáΓ∞ »α«íѽ«¼. éΓ«α«⌐ ß»«ß«í
- φΓ« ¡áªáΓ¿Ñ ¬½áó¿Φ¿, ßó∩ºá¡¡«⌐ ß óδí«α«¼. öπ¡¬µ¿∩ get_resp(),
- »«¬áºá¡¡á∩ ºñÑß∞, ñ«ßΓ¿úáÑΓ φΓ¿σ µÑ½Ñ⌐.
-
- /* óóÑßΓ¿ óδí«α »«½∞º«óáΓѽ∩ */
- get_resp(x,y,count,menu,keys)
- int x,y,count;
- char *menu[];
- char *keys;
- {
- union inkey {
- char ch[2];
- int i;
- } c;
- int arrow_choice=0,key_choice;
-
- y++;
- /* «ßóÑΓ¿Γ∞ »Ñαóδ⌐ óδí«α */
- goto_xy(x,y);
- write_video(x,y,menu[0],REV_VID);
-
- for(;;) {
- while(!bioskey(1)); /* ªñáΓ∞ ¡áªáΓ¿∩ */
- c.i=bioskey(0);
-
- /* óÑα¡πΓ∞ óδí«α ó ¡«¼á½∞¡δ⌐ αѪ¿¼ */
- goto_hy(arrow_choice,y);
- write_video(x+arrow_choice,y,
- menu[arrow_choice],norm_vid);
- if(c.ch[0]) { /* «íδτ¡á∩ ¬½áó¿Φá */
- key_choice= is_in(keys,t«lower(c.ch[0]));
- if(key_choice) return key_choice-1;
- switch(c.ch[0]) {
- case '\r' : return arrow_choice;
- case ' ' : arrow_choice++;
- break;
- case ESC : return -1; /* óδ⌐Γ¿ */
- }
- }
- else { /* ߻ѵ¿á½∞¡á∩ ¬½áó¿Φá */
- switch(c.ch[1]) {
- case 72 : arrow_choice--; /* ßΓαѽ¬á 󡿺 */
- break;
- case 80 : arrow_choice++; /* ßΓαѽ¬á óóÑασ */
- break;
-
- }
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 17 --
-
-
- }
- if(arrow_choice==count) arrow_choice=0;
- if(arrow_choice<0) arrow_choice=count-1;
- /* »«ñßóÑΓ¿Γ∞ óδíαá¡¡πε «»µ¿ε */
- goto_xy(x+arrow_choice,y);
- write_video(x+arrow_choice,y,menu[arrow_choice],REV_VID);
- }
- }
-
-
- K«úñá get_resp() ¡áτ¿¡áÑΓ óδ»«½¡∩Γ∞ß∩, «ßóÑΘáÑΓß∩ »Ñαó«Ñ
- º¡áτÑ¡¿Ñ ¼Ñ¡ε. îá¬α««»αÑñѽѡ¿Ñ REV_VID «»αÑñѽ∩ÑΓß∩ óѺñÑ, ¬á¬
- 70ì, á NORM_VID ¬á¬ 7ì. è½áó¿Φá ESCAPE ¿ß»«½∞ºπÑΓß∩ ñ½∩ «¬«¡τá¡¿∩
- αáí«Γδ ß ¼Ñ¡ε. ç¡áτÑ¡¿Ñ ESC 27. Å«ß½Ñ φΓ«ú« »α«úαá¼¼á óσ«ñ¿Γ ó
- µ¿¬½, «ª¿ñáεΘ¿⌐ ñÑ⌐ßΓó¿⌐ »«½∞º«óáΓѽ∩. Ä¡á ¿ß»«½∞ºπÑΓ Σπ¡¬µ¿ε
- bioskey() ñ½∩ Γ«ú«, τΓ«íδ ñ«ªñáΓ∞ß∩ ¡áªáΓ¿∩ ¬½áó¿Φ¿, á ºáΓѼ ñ½∩
- ßτ¿Γδóá¡¿∩ ß φΓ«⌐ ¬½áó¿Φ¿. öπ¡¬µ¿∩ bioskey() ߻ѵ¿Σ¿τ¡á ñ½∩ Æπαí«
- æ¿. àß½¿ óδ ¿ß»«½∞ºπÑΓÑ ñαπú«⌐ Γαá¡ß½∩Γ«α, óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞
- ß½ÑñπεΘπε óÑαß¿ε Σπ¡¬µ¿¿.
-
- /* φ¼π½∩µ¿∩ τáßΓ¿ Σπ¡¬µ¿¿ bioskey Æπαí« æ¿ */
- bioskey(c)
- int c;
- {
- switch(c) {
- case 0: return get_key();
- case 1: return kbhit();
- }
- }
-
- /* τΓÑ¡¿Ñ 16 í¿Γ¡«ú« ߬ᡠ¬«ñá ¬½áó¿Φ¿ */
- get_key()
- {
- union REGS r;
-
- r.h.ah=0;
- return int86(0x16, &r,&r);
-
- Åα¿τ¿¡á, »« ¬«Γ«α«⌐ óδ ñ«½ª¡δ ¿ß»«½∞º«óáΓ∞ bioskey() ó¼ÑßΓ«
- getchar() ß«ßΓ«¿Γ ó Γ«¼, τΓ« »α«úαá¼¼á ñ«½ª¡á ¿¼ÑΓ∞ 󫺼«ª¡«ßΓ∞
- ßτ¿ΓδóáΓ∞ »«½¡δ⌐ 16 í¿Γ¡δ⌐ ߬ᡠ¬«ñ, úÑ¡Ñα¿απѼδ⌐ ¡áªáΓ¿Ñ¼
- ¬½áó¿Φ¿. àß½¿ ¡áªáΓá ß¿¼ó«½∞¡á∩ ¬½áó¿Φá, Γ« ß¿¼ó«½ »«¼ÑΘáÑΓß∩ ó
- ¼½áñΦ¿Ñ 8 í¿Γ, á ßΓáαΦ¿Ñ 8 í¿Γ αáó¡δ 0. Äñ¡á¬«, Ñß½¿ ¡áªáΓá
- ߻ѵ¿á½∞¡á∩ ¬½áó¿Φá, Γá¬á∩, ¬á¬ ßΓαѽ¬á, ¼½áñΦ¿⌐ íá⌐Γ αáóÑ¡ 0, á
- ßΓáαΦ¿⌐ ß«ñÑαª¿Γ ¬«ñ »«º¿µ¿¿ ¬½áó¿Φ¿. è«ñδ »«º¿µ¿¿ ñ½∩ ßΓαѽ¬¿
- óóÑασ ¿ ßΓαѽ¬¿ 󡿺 αáó¡δ 72 ¿ 80 ß««ΓóÑΓßΓóÑ¡¡«. Æá¬¿Ñ Σπ¡¬µ¿¿,
- ¬á¬ getchar(), ó«ºóαáΘáεΓ Γ«½∞¬« ¬«ñ ß¿¼ó«½á, ¿ »«φΓ«¼π
- ¡Ñ«íσ«ñ¿¼« »«½πτ¿Γ∞ »α∩¼« ߬ᡠ¬«ñ »«¼¿¼« ¡¿σ.
-
- èáªñδ⌐ αẠ»α¿ ¡áªáΓ¿¿ ßΓαѽ¬¿ «ßóÑΘÑ¡¡á∩ «»µ¿∩ »ÑαÑσ«ñ¿Γ ó
- ¡«α¼á½∞¡«Ñ ¿º«íαáªÑ¡¿Ñ, á ß½ÑñπεΘá∩ - «ßóÑΘáÑΓß∩. ìáªáΓ¿Ñ ßΓαѽ¬¿
- 󡿺, ó ¼«¼Ñ¡Γ «ßóÑΘÑ¡¿∩ ¬αá⌐¡Ñ⌐ ¡¿ª¡Ñ⌐ »«º¿µ¿¿, «º¡áτáÑΓ
- ó«ºóαáΘÑ¡¿Ñ ¬ »Ñαó«¼π º¡áτÑ¡¿ε. Æ« ªÑ ßἫÑ, ¡« ¡á«í«α«Γ
- »α«¿ßσ«ñ¿Γ ¬«úñá ¡áª¿¼áÑΓß∩ ßΓαѽ¬á óóÑασ »α¿ «ßóÑΘÑ¡¡«⌐ »Ñαó«⌐
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 18 --
-
-
- ßΓ᫬Ñ.
-
- öπ¡¬µ¿∩ write_video() ¿ß»«½∞ºπÑΓß∩ Σπ¡¬µ¿Ñ⌐ get_resp() ñ½∩
- ºá»¿ß¿ ßΓ᫬¿ ¡á ñ¿ß»½Ñ⌐ ó »«º¿µ¿¿ ò,Y ß «»αÑñѽѡ¡δ¼ áΓα¿íπΓ«¼.
- Write_video(), »«¬áºá¡¡á∩ ºñÑß∞, ¿ß»«½∞ºπÑΓß∩ ñ½∩ óδó«ñá ßΓ᫬¿
- ¼Ñ¡ε ó ¿¡óÑαß¡«¼ αѪ¿¼Ñ, Ñß½¿ «¡á «ßóÑΘÑ¡á, ¿½¿ ó ¡«α¼á½∞¡«¼,
- Ñß½¿ «¡á ¡Ñ «ßóÑΘÑ¡á.
-
- /* óδó«ñ ßΓ᫬¿ ß «»αÑñѽѡ¡δ¼ áΓα¿íπΓ«¼ */
- void write_video(x,y,p,attrib)
- int x,y;
- char *p;
- int attrib;
- {
- union REGS r;
- register int i,j;
-
- for(i=y; *p; i++) {
- goto_xy(x,i);
- r.h.ah=9; /* Σπ¡¬µ¿∩ ºá»¿ß¿ ß¿¼ó«½á */
- r.h.bh=0; /* ó¿ñÑ« ßΓαá¡¿µá */
- r.x.cx=1; /* τ¿ß½« »«óΓ«αÑ¡¿⌐ ß¿¼ó«½á */
- r.h.al=*p++; /* ß¿¼ó«½ */
- r.h.bl=attrib; /* áΓα¿íπΓ */
- int86(0x10,&r,&r);
- }
-
- öπ¡¬µ¿∩ is_in() ó«ºóαáΘáÑΓ »«º¿µ¿ε "ú«α∩τÑ⌐" ¬½áó¿Φ¿ ó
- ßΓ᫬Ñ. àß½¿ »«½∞º«óáΓѽ∞ ¡áªá½ ¡Ñ ¬½ετÑóπε ¬½áó¿Φπ, Γ« is_in
- ó«ºóαáΘáÑΓ 0.
-
- is_in(s,c)
- char *s,c;
- {
- register int i;
-
- for(i=0; *s; i++)
- if(*s++ == c) return i+1;
- return 0;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 19 --
-
-
- öπ¡¬µ¿∩ popup()
- -----------------------------------------------------------------
-
- Ç ΓÑ»Ñα∞, ¬«úñá óßÑ τáßΓ¿ ß«ºñá¡δ, Σπ¡¬µ¿∩ popup ¼«ªÑΓ íδΓ∞
- ºá»¿ßá¡á, ¬á¬ φΓ« »«¬áºá¡« ºñÑß∞.
-
- /* óδóÑßΓ¿ ¿ßτѺáεΘÑÑ ¼Ñ¡ε ¿ óÑα¡πΓ∞ óδí«α
- ó«ºóαáΘáÑΓ -2, Ñß½¿ ¼Ñ¡ε ¡Ñ ¼«ªÑΓ íδΓ∞ ß«ºñá¡«
- ó«ºóαáΘáÑΓ -1, Ñß½¿ »«½∞º«óáΓѽ∞ ¡áªá½ ¬½áó¿Φπ ESC
- ó «ßΓá½∞¡δσ ß½πτá∩σ «¡á ó«ºóαáΘáÑΓ ¡«¼Ñα óδíαá¡¡«⌐
- á½∞ΓÑα¡áΓ¿óδ, ¡áτ¿¡á∩ ß 0 */
- int popup(menu,keys,count,x,y,border)
- char *menu[]; /* ΓѬßΓ ¼Ñ¡ε */
- char *keys; /* ú«α∩τ¿Ñ ¬½áó¿Φ¿ */
- int count; /* τ¿ß½« á½∞ΓÑα¡áΓ¿ó */
- int x,y; /* ¬««αñ¿¡áΓδ ½Ñó«ú« óÑασ¡Ñú« πú½á */
- int border; /* Ñß½¿ 0 Γ« íѺ αἬ¿ */
- {
- register int i,len;
- int endx endy choice;
- unsigned int *p;
-
- if((x>24)||(x<0)||(y>79)||(y<0)) {
- printf(" óδσ«ñ ºá »αÑñѽδ φ¬αá¡á");
- return -2;
- }
- /* óδτ¿ß½Ñ¡¿Ñ αẼÑα«ó */
- len=0;
- for(i=0;i<count;i++)
- if(strlen(menu[i]) > len) len=strlen(menu[i]);
- endy=len+2+y;
- endx=count+1+x;
- if((endx+1>24) || (endy+1>79)) {
- printf(" óδσ«ñ ºá »αÑñѽδ φ¬αá¡á");
- return -2;
- }
- /* αẼÑΘÑ¡¿Ñ »á¼∩Γ¿ ñ½∩ ó¿ñÑ« íπΣÑαá */
- p=(unsigned int *)malloc((endx-x+1)*(endy-y+1));
- if(!p) exit(1); /* éδ ¼«ªÑΓÑ ºñÑß∞ ßἿ «íαáí«ΓáΓ∞ «Φ¿í¬π */
-
- /* ß«σαá¡Ñ¡¿Ñ τáßΓ¿ φ¬αá¡á */
- void save_video(startx,endx,starty,endy,p);
-
- if(border) draw_border(x,y,endx,endy);
-
- /* óδßóÑτ¿óá¡¿Ñ ¼Ñ¡ε ¡á ßó«Ñ¼ ¼ÑßΓÑ */
- void display_menu(menu,x,y,count);
-
- /* óóÑßΓ¿ óδí«α »«½∞º«óáΓѽ∩ */
- choice=get_resp(x,y,count,menu,keys)
-
- /* ó«ßßΓá¡«ó½Ñ¡¿Ñ τáßΓ¿ φ¬αá¡á */
- void restore_video(startx,endx,starty,endy,p);
- free(p);
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 20 --
-
-
- return choice;
- }
-
- èᬠóδ ¼«ªÑΓÑ ó¿ñÑΓ∞, popup() »α«óÑα∩ÑΓ óδσ«ñ ºá »αÑñѽδ
- φ¬αá¡á ¿ ß½¿Φ¬«¼ í«½∞Φ«⌐ αẼÑα ¼Ñ¡ε. Ä¡á ó«ºóαáΘáÑΓ -2, Ñß½¿
- 󫺡¿¬½á «ñ¡á ¿º φΓ¿σ ß¿Γπᵿ⌐. êº-ºá Γ«ú«, τΓ« get_resp()
- ó«ºóαáΘáÑΓ -1, »α¿ ¡áªáΓ¿¿ ¬½áó¿Φ¿ ESC, ó«ºóαáΘÑ¡¿Ñ φΓ«ú«
- º¡áτÑ¡¿∩ Σπ¡¬µ¿Ñ⌐ popup ß½ÑñπÑΓ αáßß¼áΓα¿óáΓ∞ ¬á¬ "π¡¿τΓ«ªÑ¡¿Ñ"
- ¼Ñ¡ε. àß½¿ »«½∞º«óáΓѽ∞ ßñѽὠóδí«α, Γ« ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ
- íπñÑΓ ó »αÑñѽáσ «Γ 0 ñ« count-1 ß ß««ΓóÑΓßΓó¿Ñ¼ »Ñαó«¼π º¡áτÑ¡¿ε
- ¼Ñ¡ε 0. èᬠπªÑ π¬áºδóὫß∞, popup() ¿ß»«½∞ºπÑΓ ñ¿¡á¼¿τÑ߬«Ñ
- αẼÑΘÑ¡¿Ñ »á¼∩Γ¿ ñ½∩ «íÑß»ÑτÑ¡¿∩ óαѼѡ¡«⌐ »á¼∩Γ¿ ñ½∩ ¿¡Σ«α¼áµ¿¿
- «í φ¬αá¡Ñ. Äíδτ¡« φΓ« ½πτΦ¿⌐ »«ñσ«ñ, ¡« óδ ¼«ªÑΓÑ ßó«í«ñ¡«
- ¿º¼Ñ¡¿Γ∞ Ñú«, Ñß½¿ φΓ« ó᪡« ñ½∩ óáΦÑú« »α¿½«ªÑ¡¿∩.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 21 --
-
-
- ÄíΘ¿⌐ «íº«α
- -----------------------------------------------------------------
-
- Åα«ßΓá∩ »α«úαá¼¼á, »«¬áºá¡¡á∩ ºñÑß∞, ¿ß»«½∞ºπÑΓ óßÑ
- »α«úαá¼¼δ, αáºαáí«Γá¡¡δÑ ñ½∩ ¿ß»«½∞º«óá¡¿∩ ¿ßτѺáεΘ¿σ ¼Ñ¡ε. éδ ¡Ñ
- ó¿ñѽ¿ Γ«½∞¬« Σπ¡¬µ¿¿ cls(), ¬«Γ«αá∩ «τ¿ΘáÑΓ φ¬αá¡. ìѬ«Γ«αδÑ
- Γαá¡ß½∩Γ«αδ æ¿ ¡Ñ ¿¼ÑεΓ Σπ¡¬µ¿¿ ñ½∩ φΓ«ú«, ¿ Ñß½¿ φΓ« Γá¬, Γ« óδ
- ¡Ñ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ ß½ÑñπεΘπε »α«úαá¼¼π (ó τ¿ßΓ«¼ ó¿ñÑ).
-
- /* »α«µÑñπαá ¿ßτѺáεΘÑú« ¼Ñ¡ε ñ½∩ αáí«Γδ ó ΓѬßΓ«ó«¼ αѪ¿¼Ñ */
- #include "stdio.h"
- #include "dos.h"
- #include "stdlib.h"
-
- #define BORDER 1
- #define ESC 27
- #define REV_VID 0x70
- #define NORM_VID 7
-
- void save_video(),restore_video();
- void goto_xy(),cls(),write_video();
- void display_menu(),draw_border();
-
- char *fruit[] = {
- "ƒí½«¬«",
- "ǻѽ∞ß¿¡",
- "âαπΦá",
- "âαÑ⌐»ΣαπΓ",
- "î὿¡á",
- "è½πí¡¿¬á"
- };
-
- char *color[]={
- "èαáß¡δ⌐",
- "åѽΓδ⌐",
- "ÄαᡪÑóδ⌐",
- "çѽѡδ⌐"
- };
-
- char *apple_type[] = {
- "èαáß¡δ⌐ ñѽ¿¬áΓÑß",
- "䪫¡áΓá¡",
- "üѽδ⌐ ¡á½¿ó",
- "Ç¡Γ«¡«ó¬á"
- };
-
- main()
- {
- int i;
-
- cls();
- goto_xy(0,0);
- for(i=0;i<25;i++)
- printf("¥Γ« ΓÑßΓ ¿ßτѺáεΘÑú« ¼Ñ¡ε\n");
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 22 --
-
-
- popup(fruit,"ପ",6,1,3,BORDER);
- popup(color,"»Ǽ",4,5,10,BORDER);
- popup(apple_type,"¬ñíá",4,10,18,BORDER);
- }
-
- /* óδóÑßΓ¿ ¿ßτѺáεΘÑÑ ¼Ñ¡ε ¿ óÑα¡πΓ∞ óδí«α
- ó«ºóαáΘáÑΓ -2, Ñß½¿ ¼Ñ¡ε ¡Ñ ¼«ªÑΓ íδΓ∞ ß«ºñá¡«
- ó«ºóαáΘáÑΓ -1, Ñß½¿ »«½∞º«óáΓѽ∞ ¡áªá½ ¬½áó¿Φπ ESC
- ó «ßΓá½∞¡δσ ß½πτá∩σ «¡á ó«ºóαáΘáÑΓ ¡«¼Ñα óδíαá¡¡«⌐
- á½∞ΓÑα¡áΓ¿óδ, ¡áτ¿¡á∩ ß 0 */
- int popup(menu,keys,count,x,y,border)
- char *menu[]; /* ΓѬßΓ ¼Ñ¡ε */
- char *keys; /* ú«α∩τ¿Ñ ¬½áó¿Φ¿ */
- int count; /* τ¿ß½« á½∞ΓÑα¡áΓ¿ó */
- int x,y; /* ¬««αñ¿¡áΓδ ½Ñó«ú« óÑασ¡Ñú« πú½á */
- int border; /* Ñß½¿ 0 Γ« íѺ αἬ¿ */
- {
- register int i,len;
- int endx endy choice;
- unsigned char *p;
-
- if((x>24)||(x<0)||(y>79)||(y<0)) {
- printf(" óδσ«ñ ºá »αÑñѽδ φ¬αá¡á");
- return -2;
- }
- /* óδτ¿ß½Ñ¡¿Ñ αẼÑα«ó */
- len=0;
- for(i=0;i<count;i++)
- if(strlen(menu[i]) > len) len=strlen(menu[i]);
- endy=len+2+y;
- endx=count+1+x;
- if((endx+1>24) || (endy+1>79)) {
- printf(" óδσ«ñ ºá »αÑñѽδ φ¬αá¡á");
- return -2;
- }
- /* αẼÑΘÑ¡¿Ñ »á¼∩Γ¿ ñ½∩ ó¿ñÑ« íπΣÑαá */
- p=(unsigned int *)malloc((endx-x+1)*(endy-y+1));
- if(!p) exit(1); /* éδ ¼«ªÑΓÑ ºñÑß∞ ßἿ «íαáí«ΓáΓ∞ «Φ¿í¬π */
-
- /* ß«σαá¡Ñ¡¿Ñ τáßΓ¿ φ¬αá¡á */
- void save_video(x,endx+1,y,endy+1,p);
-
- if(border) draw_border(x,y,endx,endy);
-
- /* óδßóÑτ¿óá¡¿Ñ ¼Ñ¡ε ¡á ßó«Ñ¼ ¼ÑßΓÑ */
- void display_menu(menu,x,y,count);
-
- /* óóÑßΓ¿ óδí«α »«½∞º«óáΓѽ∩ */
- choice=get_resp(x,y,count,menu,keys)
-
- /* ó«ßßΓá¡«ó½Ñ¡¿Ñ τáßΓ¿ φ¬αá¡á */
- void restore_video(x,endx+1,y,endy+1,p);
- free(p);
- return choice;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 23 --
-
-
- }
-
- /* óδßóÑτ¿óá¡¿Ñ ¼Ñ¡ε ¡á ßó«Ñ¼ ¼ÑßΓÑ */
- void display_menu(menu,x,y,count)
- char *menu[];
- int x,y,count;
- {
- register int i;
-
- for(i=0;i<count;i++,x++) {
- goto_xy(x,y);
- printf(menu[i]);
- }
- }
-
- void draw_border(startx,starty,endx,endy)
- int startx,starty,endx,endy;
- {
- register int i;
-
- for(i=startx+1;i<endx;i++) {
- goto_xy(i,starty);
- putchar(179);
- goto_xy(i,endy);
- putchar(179);
- }
-
- for(i=starty+1;i<endy;i++) {
- goto_xy(startx,i);
- putchar(196);
- goto_xy(endx,i);
- putchar(196);
- }
-
- goto_xy(startx,starty); putchar(218);
- goto_xy(startx,endy ); putchar(191);
- goto_xy(endx ,starty); putchar(192);
- goto_xy(endx ,endy ); putchar(217);
- }
-
- /* óóÑßΓ¿ óδí«α »«½∞º«óáΓѽ∩ */
- get_resp(x,y,count,menu,keys)
- int x,y,count;
- char *menu[];
- char *keys;
- {
- union inkey {
- char ch[2];
- int i;
- } c;
- int arrow_choice=0,key_choice;
-
- y++;
- /* «ßóÑΓ¿Γ∞ »Ñαóδ⌐ óδí«α */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 24 --
-
-
- goto_xy(x,y);
- write_video(x,y,menu[0],REV_VID);
-
- for(;;) {
- while(!bioskey(1)); /* ªñáΓ∞ ¡áªáΓ¿∩ */
- c.i=bioskey(0);
-
- /* óÑα¡πΓ∞ óδí«α ó ¡«¼á½∞¡δ⌐ αѪ¿¼ */
- goto_xy(arrow_choice,y);
- write_video(x+arrow_choice,y,
- menu[arrow_choice],norm_vid);
- if(c.ch[0]) { /* «íδτ¡á∩ ¬½áó¿Φá */
- key_choice= is_in(keys,t«lower(c.ch[0]));
- if(key_choice) return key_choice-1;
- switch(c.ch[0]) {
- case '\r' : return arrow_choice;
- case ' ' : arrow_choice++;
- break;
- case ESC : return -1; /* óδ⌐Γ¿ */
- }
- }
- else { /* ߻ѵ¿á½∞¡á∩ ¬½áó¿Φá */
- switch(c.ch[1]) {
- case 72 : arrow_choice--; /* ßΓαѽ¬á 󡿺 */
- break;
- case 80 : arrow_choice++; /* ßΓαѽ¬á óóÑασ */
- break;
-
- }
- }
- if(arrow_choice==count) arrow_choice=0;
- if(arrow_choice<0) arrow_choice=count-1;
- /* »«ñßóÑΓ¿Γ∞ óδíαá¡¡πε «»µ¿ε */
- goto_xy(x+arrow_choice,y);
- write_video(x+arrow_choice,y,menu[arrow_choice],REV_VID);
- }
- }
-
- /* óδó«ñ ßΓ᫬¿ ß «»αÑñѽѡ¡δ¼ áΓα¿íπΓ«¼ */
- void write_video(x,y,p,attrib)
- int x,y;
- char *p;
- int attrib;
- {
- union REGS r;
- register int i,j;
-
- for(i=y; *p; i++) {
- goto_xy(x,i);
- r.h.ah=9; /* Σπ¡¬µ¿∩ ºá»¿ß¿ ß¿¼ó«½á */
- r.h.bh=0; /* ó¿ñÑ« ßΓαá¡¿µá */
- r.x.cx=1; /* τ¿ß½« »«óΓ«αÑ¡¿⌐ ß¿¼ó«½á */
- r.h.al=*p++; /* ß¿¼ó«½ */
- r.h.bl=attrib; /* áΓα¿íπΓ */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 25 --
-
-
- int86(0x10,&r,&r);
- }
- }
-
- /* ß«σαá¡Ñ¡¿Ñ τáßΓ¿ φ¬αá¡á */
- void save_video(startx,endx,starty,endy,buf_ptr)
- int startx,endx,starty,endy;
- unsigned int *buf_ptr;
- {
- union REGS r;
- register int i,j;
-
- for(i=starty;i<endy;i++)
- for(j=startx;j<endx;j++) {
- goto_xy(j,i);
- r.h.ah=8; /* Σπ¡¬µ¿∩ τΓÑ¡¿∩ ß¿¼ó«½á */
- r.h.bh=0; /* ó¿ñÑ« ßΓαá¡¿µá */
- *buf_ptr++ = int86(0x10,&r,&r);
- putchar(' '); /* «τ¿ßΓ¬á φ¬αá¡á */
- }
- }
-
- /* ó«ßßΓá¡«ó½Ñ¡¿Ñ τáßΓ¿ φ¬αá¡á */
- void restore_video(startx,endx,starty,endy,buf_ptr)
- int startx,endx,starty,endy;
- unsigned int *buf_ptr;
- {
- union REGS r;
- register int i,j;
-
- for(i=starty;i<endy;i++)
- for(j=startx;j<endx;j++) {
- goto_xy(j,i);
- r.h.ah=9; /* Σπ¡¬µ¿∩ ºá»¿ß¿ ß¿¼ó«½á */
- r.h.bh=0; /* ó¿ñÑ« ßΓαá¡¿µá */
- r.x.cx=1; /* τ¿ß½« »«óΓ«αÑ¡¿⌐ ß¿¼ó«½á */
- r.h.al=*buf_ptr++; /* ß¿¼ó«½ */
- r.h.bl=*buf_ptr++; /* áΓα¿íπΓ */
- int86(0x10,&r,&r);
- }
- }
-
- /* «τ¿ßΓ¬á φ¬αá¡á */
- void cls()
- {
- union REGS r;
-
- r.h.ah=6; /* ¬«ñ »α«¬απΓ¬¿ φ¬αá¡á */
- r.h.al=0; /* ¬«ñ «τ¿ßΓ¬¿ φ¬αá¡á */
- r.h.ch=0; /* ¡áτá½∞¡á∩ ßΓ᫬á */
- r.h.cl=0; /* ¡áτá½∞¡á∩ ¬«½«¡¬á */
- r.h.dh=24; /* ¬«¡Ñτ¡á∩ ßΓ᫬á */
- r.h.dl=79; /* ¬«¡Ñτ¡á∩ ¬«½«¡¬á */
- r.h.bh=7; /* «τ¿ßΓ¬á »πßΓ«⌐ ßΓ᫬¿ */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 26 --
-
-
- int86(0x10,&r,&r);
- }
-
- éó«ñ¿ΓÑ φΓπ »α«úαá¼¼π ó óáΦ ¬«¼»∞εΓÑα ¿ ºá»π߬áÑΓÑ ÑÑ. é
- σ«ñÑ ÑÑ óδ»«½¡Ñ¡¿∩ ¬áªñ«Ñ ¼Ñ¡ε íπñÑΓ óδßóÑτÑ¡« ¿ ¿ßτѺ¡ÑΓ. (é
- φΓ«⌐ »α«úαá¼¼Ñ óßÑ «ΓóÑΓδ ΓÑα∩εΓß∩, ¡« αÑá½∞¡«Ñ »α¿¼Ñ¡Ñ¡¿Ñ íπñÑΓ,
- ¬«¡Ñτ¡«, ¿σ «íαáíáΓδóáΓ∞.) äáªÑ Ñß½¿ óáΦ ¬«¼»∞εΓÑα «τÑ¡∞ íδßΓαδ⌐,
- óδ 󫺼«ª¡« ºá¼ÑΓ¿ΓÑ, τΓ« ¿ßτѺ¡«óÑ¡¿Ñ ¿ »«∩ó½Ñ¡¿Ñ ¼Ñ¡ε ΓαÑíπεΓ
- «»αÑñѽѡ¡«⌐ ºáñÑ᪬¿. àñ¿¡ßΓóÑ¡¡δ⌐ »πΓ∞ αÑΦÑ¡¿∩ φΓ«⌐ »α«í½Ñ¼δ -
- τ¿ΓáΓ∞ ¿ »¿ßáΓ∞ ß¿¼ó«½δ »α∩¼« ó ó¿ñÑ« »á¼∩Γ∞, τΓ« ¿ «íßπªñáÑΓß∩ ó
- ß½ÑñπεΘѼ αáºñѽÑ. àΘÑ αẠ«Γ¼ÑΓ¿¼, τΓ« Ññ¿¡ßΓóÑ¡¡«Ñ ó᪡«Ñ
- ñ«ßΓ«¿¡ßΓó« ¿ß»«½∞º«óá¡¿Ñ BIOS ó Γ«¼, τΓ« Γá¬¿Ñ ¼Ñ¡ε αáí«ΓáεΓ ¡á
- ½εí«¼ ¬«¼»∞εΓÑαÑ, ¬«Γ«αδ⌐ »«ññÑনóáÑΓ BIOS, ß«ó¼ÑßΓ¿¼δ⌐ ß IBM,
- ñáªÑ Ñß½¿ ¬«¼»∞εΓÑα ¡Ñ 100% ß«ó¼ÑßΓ¿¼δ⌐.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 27 --
-
-
- Åα∩¼«⌐ ñ«ßΓπ» ¬ ó¿ñÑ« »á¼∩Γ¿
- -----------------------------------------------------------------
-
- ä½∩ ß«ºñá¡¿∩ ¼Ñ¡ε, ¬«Γ«αδÑ ñÑ⌐ßΓó¿Γѽ∞¡« "¿ßτѺáεΓ" óδ
- ñ«½ª¡δ ¼¿¡«óáΓ∞ ó맮óδ Σπ¡¬µ¿⌐ BIOS ¿ »α∩¼« «íαáΘáΓ∞ß∩ ¬ ó¿ñÑ«
- »á¼∩Γ¿. ¥Γ« »«ºó«½∩ÑΓ óδßóÑτ¿óáΓ∞ ß¿¼ó«½δ ß ¼«½¡¿Ñ¡«ß¡«⌐
- íδßΓα«Γ«⌐. Åα¿ »α∩¼«⌐ ºá»¿ß¿ ¿ τΓÑ¡¿¿ ¿º ó¿ñÑ« »á¼∩Γ¿ óδ ¼«ªÑΓÑ
- ¿ß»«½∞º«óáΓ∞ ¿ßτѺáεΘ¿Ñ ¼Ñ¡ε ó αÑá½∞¡«¼ óαѼѡ¿!
-
- ùΓÑ¡¿Ñ ¿ ºá»¿ß∞ ó ó¿ñÑ« »á¼∩Γ∞ ΓαÑíπÑΓ ¿ß»«½∞º«óá¡¿∩ äÇï£ìêò
- π¬áºáΓѽÑ⌐. àß½¿ óáΦ ¬«¼»¿½∩Γ«α ¡Ñ »«ññÑনóáÑΓ ñá½∞¡¿σ
- π¬áºáΓѽÑ⌐, Γ« óδ ¡Ñ ¿¼ÑÑΓÑ »α∩¼«ú« ñ«ßΓπ»á ¬ ó¿ñÑ« »á¼∩Γ¿.
- äá½∞¡¿Ñ π¬áºáΓѽ¿ ¼«úπΓ íδΓ∞ »«ññÑনóáѼδ Γαá¡ß½∩Γ«α«¼ æ¿ «ñ¡¿¼
- ¿º ñóπσ ß»«ß«í«ó. ÅÑαóδ⌐ - ¿ß»«½∞º«óá¡¿Ñ ¬½ετÑó«ú« ß½«óá far,
- ¿ß»«½∞ºπѼ«ú« ó í«½∞Φ¿¡ßΓóÑ ¬«¼»¿½∩Γ«α«ó. Ä¡¿ »«ºó«½∩εΓ
- «»αÑñѽ∩Γ∞ π¬áºáΓѽ∞, ¬á¬ ñá½∞¡¿⌐. äαπú«⌐ ß»«ß«í - ¿ß»«½∞º«óá¡¿Ñ
- í«½∞Φ«⌐ ¼«ñѽ¿ »á¼∩Γ¿, ó ¬«Γ«α«⌐ óßÑ π¬áºáΓѽ¿ »« π¼«½τá¡¿ε
- ñá½∞¡¿Ñ. Åα«úαá¼¼δ, ¿ß»«½∞ºπѼδÑ ó φΓ«⌐ ú½áóÑ ¿ß»«½∞ºπεΓ
- «»¿ßáΓѽ∞ far. àß½¿ óδ σ«Γ¿ΓÑ, óδ ¼«ªÑΓÑ »α«ßΓ« πñ὿Γ∞ Ñú« ¿
- ߬«¼»¿½¿α«óáΓ∞ »α«úαá¼¼π, ¿ß»«½∞ºπ∩ Γαá¡ß½∩Γ«α ß í«½∞Φ«⌐ ¼«ñѽ∞ε
- »á¼∩Γ¿.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 28 --
-
-
- Ä»αÑñѽѡ¿Ñ αáß»«½«ªÑ¡¿∩ ó¿ñÑ« »á¼∩Γ¿
- -----------------------------------------------------------------
-
- Äñ¡«µóÑΓ¡δ⌐ áñá»ΓÑα ¿ß»«½∞ºπÑΓ ñ½∩ ó¿ñÑ« »á¼∩Γ¿ áñαÑß
- B0000000H, a óßÑ «ßΓá½∞¡δÑ - é8000000ì. ä½∩ Γ«ú«, τΓ«íδ »α«úαá¼¼δ
- ß ¼Ñ¡ε αáí«Γ὿ »αáó¿½∞¡« ß ¬áªñδ¼ áñá»ΓÑα«¼, «¡¿ ñ«½ª¡δ º¡áΓ∞,
- ¬á¬«⌐ áñá»ΓÑα ¿¼ÑÑΓ ß¿ßΓѼá. è ßτáßΓ∞ε, ñ½∩ φΓ«ú« ßπΘÑßΓóπÑΓ
- »α«ßΓ«⌐ ß»«ß«í. ÅαÑαδóá¡¿Ñ BIOS 16, Σπ¡¬µ¿∩ 15 ó«ºóαáΘáÑΓ ΓѬπΘ¿⌐
- ó¿ñÑ« αѪ¿¼. èá¬ π»«¼¿¡á½«ß∞ αá¡∞ΦÑ, »α«úαá¼¼δ, αáºαáí«Γá¡¡δÑ ó
- φΓ«⌐ ú½áóÑ, ΓαÑíπεΓ αѪ¿¼á 2, 3 ¿½¿ 7. Çñá»ΓÑαδ CGA ¿ EGA ¼«úπΓ
- ¿ß»«½∞º«óáΓ∞ αѪ¿¼ 2 ¿ 3, ¡« ¡Ñ αѪ¿¼ 7. Æ«½∞¬« «ñ¡«µóÑΓ¡δ⌐
- áñá»ΓÑα ¿ß»«½∞ºπÑΓ φëà αѪ¿¼. Æá¬¿¼ «íαẫ¼, Ñß½¿ ΓѬπΘ¿⌐ ó¿ñÑ«
- αѪ¿¼ 7, Γ« ¿ß»«½∞ºπÑΓß∩ «ñ¡«µóÑΓ¡δ⌐ áñá»ΓÑα, ó «ßΓá½∞¡δσ ß½πτá∩σ
- φΓ« EGA ¿½¿ CGA. ä½∩ ¡áΦ¿σ ºáñáτ, ó ΓѬßΓ«ó«¼ αѪ¿¼Ñ EGA ¿ CGA
- «ñ¿¡á¬«óδ ¿ »«φΓ«¼π óßÑ αáó¡«, ¬á¬«⌐ ¿º áñá»ΓÑα«ó π ß¿ßΓѼδ.
- Æá¬¿¼ «íαẫ¼ Σπ¡¬µ¿∩ popup() ñ«½ª¡á »«óÑα¿Γ∞ ¬á¬«⌐ ¿º áñá»ΓÑα«ó
- π ß¿ßΓÑ¼δ ¿ »α¿ßó«¿Γ∞ ú½«íá½∞¡«⌐ »ÑαѼѡ¡«⌐ π¬áºáΓѽ∞ ¡á
- ß««ΓóÑΓßΓóπεΘ¿⌐ áñαÑß. ¥Γ«Γ Σαáú¼Ñ¡Γ »α«úαá¼¼δ »«ºó«½∩ÑΓ ßñѽáΓ∞
- φΓ«.
-
- vmode = video_mode();
- if((vmode!=2) && (vmode!=3) && (vmode!=7)) {
- printf(" ñ«½ªÑ¡ íδΓ∞ 80 ß¿¼ó«½∞¡δ⌐ ΓѬßΓ«óδ⌐ αѪ¿¼");
- exit(1);
- }
- /* »α¿ßó«¿Γ∞ ß««ΓóÑΓßΓóπεΘ¿⌐ áñαÑß ó¿ñÑ« »á¼∩Γ¿ */
- if(vmode==7) vid_mem=(char far *)0xB0000000;
- else vid_mem=(char far *)0xB8000000;
-
- öπ¡¬µ¿∩ video_mode() ó«ºóαáΘáÑΓ ΓѬπΘ¿⌐ ó¿ñÑ« αѪ¿¼, ¿
- »ÑαѼѡ¡πε vid_mem, «íΩ∩ó½Ñ¡¡πε óѺñÑ ¬á¬ char far.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 29 --
-
-
- 꺼ѡѡ¿Ñ save_video() ¿ restore_video()
- -----------------------------------------------------------------
-
- Ka¬ Γ«½∞¬« »ÑαѼѡ¡«⌐ vid_mem »α¿ßó«Ñ¡ ß««ΓóÑΓßΓóπεΘ¿⌐
- áñαÑß, »«∩ó½∩ÑΓß∩ »α«ßΓ«⌐ ß»«ß«í ¿ß»«½∞º«óáΓ∞ ÑÑ ñ½∩ τΓÑ¡¿∩ ¿
- ºá»¿ß¿ ß¿¼ó«½«ó ó ó¿ñÑ« »á¼∩Γ∞. çừ¼¡¿ΓÑ, ó¿ñÑ« »á¼∩Γ∞ ΓαÑíπÑΓ
- ñóπσ íá⌐Γ«ó ñ½∩ ¬áªñ«ú« ß¿¼ó«½á, «ñ¿¡ ñ½∩ ß¿¼ó«½á, á ñαπú«⌐ ñ½∩
- áΓα¿íπΓá. êº-ºá Γ«ú«, τΓ« ß¿¼ó«½∞¡δ⌐ íá⌐Γ »Ñαóδ⌐, á áΓα¿íπΓ¡δ⌐ -
- óΓ«α«⌐, Γ« ¬áªñ«⌐ ßΓα«¬Ñ φ¬αá¡á ΓαÑíπÑΓß∩ 160 íá⌐Γ. ä½∩ Γ«ú«,
- τΓ«íδ «»αÑñѽ¿Γ∞ áñαÑß «Γñѽ∞¡«ú« ß¿¼ó«½á óδ ñ«½ª¡δ ¿ß»«½∞º«óáΓ∞
- Σ«α¼π½π:
-
- áñαÑß = áñαÑß_áñá»ΓÑαá + X*160 + Y*2
-
- öπ¡¬µ¿¿ save_video() ¿ restore_video() »α¿ ¿ß»«½∞º«óá¡¿¿
- »α∩¼«ú« ñ«ßΓπ»á ¬ ó¿ñÑ« »á¼∩Γ¿ óδú½∩ñ∩Γ ß½ÑñπεΘ¿¼ «íαẫ¼.
-
- void save_video(startx,endx,starty,endy,buf_ptr)
- int startx,endx,starty,endy;
- unsigned int *buf_ptr;
- {
- register int i,j;
- char far *v, far *t;
-
- v=vid_mem;
- for(i=starty;i<endy;i++)
- for(j=startx;j<endx;j++) {
- t = v + (j*160) + i*2; /* óδτ¿ß½∩Ѽ áñαÑß */
- *buf_ptr++ = *t++; /* τΓÑ¡¿Ñ ß¿¼ó«½á */
- *buf_ptr++ = *t; /* τΓÑ¡¿Ñ áΓα¿íπΓá */
- *(t-1) = ' '; /* «τ¿ßΓ¬á «¬¡á */
- }
- }
-
- /* ó«ßßΓá¡«ó½Ñ¡¿Ñ τáßΓ¿ φ¬αá¡á */
- void restore_video(startx,endx,starty,endy,buf_ptr)
- int startx,endx,starty,endy;
- unsigned int *buf_ptr;
- {
- register int i,j;
- char far *v, far *t;
-
- v=vid_mem;
- t=v;
- for(i=starty;i<endy;i++)
- for(j=startx;j<endx;j++) {
- v = t;
- v += (j*160) + i*2; /* óδτ¿ß½∩Ѽ áñαÑß */
- *v++ = *buf_ptr++; /* ºá»¿ß∞ ß¿¼ó«½á */
- *v = *buf_ptr++; /* ºá»¿ß∞ áΓα¿íπΓá */
- }
- }
-
- èᬠóδ ó¿ñÑΓÑ, ß¿¼ó«½δ ¿ áΓα¿íπΓδ ºá»¿ßδóáεΓß∩ ¿½¿ τ¿ΓáεΓß∩
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 30 --
-
-
- ß »«¼«Θ∞ε ¿ß»«½∞º«óá¡¿∩ π¬áºáΓѽÑ⌐ ¡á ó¿ñÑ« »á¼∩Γ∞. äαπú¿Ñ
- Σπ¡¬µ¿¿, ¬«Γ«αδÑ τ¿ΓáεΓ ¿ ºá»¿ßδóáεΓ ß¿¼ó«½δ »αÑ«íαáºπεΓß∩
- »«ñ«í¡δ¼ «íαẫ¼.
-
- àß½¿ óÑß∞ ñ«ßΓπ» ¬ ñ¿ß»½Ñε ñѽáΓ∞ »α∩¼δ¼, ΓαÑíπÑΓß∩ «ñ¡á
- ¡«óá∩ Σπ¡¬µ¿∩ (»«¬áºá¡¡á∩ ºñÑß∞). öπ¡¬µ¿∩ write_char() ºá»¿ßδóáÑΓ
- «ñ¿¡ ß¿¼ó«½ ó «»αÑñѽѡ¡πε »«º¿µ¿ε φ¬αá¡á ß «»αÑñѽѡ¡δ¼
- áΓα¿íπΓ«¼.
-
- /* ºá»¿ß∞ ß¿¼ó«½á ß «»αÑñѽѡ¡δ¼ áΓΓα¿íπΓ«¼ */
- void write_char(x,y,ch,attrib)
- int x,y;
- char ch;
- int attrib;
- {
- register int i;
- char far *v;
-
- v=vid_mem;
- v += (x*160) +y*2;
- *v++ = ch; /* ºá»¿ß∞ ß¿¼ó«½á */
- *v = attrib; /* ºá»¿ß∞ áΓα¿íπΓá */
- }
-
- Å«½¡á∩ óÑαß¿∩ ¿ßτѺáεΘ¿σ ¼Ñ¡ε ß »α∩¼δ¼ ñ«ßΓπ»«¼ »α¿óÑñÑ¡á
- ºñÑß∞ ß ΓѼ ªÑ »α«ßΓδ¼ ΓÑßΓ«óδ¼ »α¿¼Ñα«¼. éóÑñ¿ΓÑ Ñú« ó
- ó ßó«⌐ ¬«¼»∞εΓÑα ¿ ßαáó¡¿ΓÑ »« »α«¿ºó«ñ¿Γѽ∞¡«ßΓ¿ ß óÑαß¿Ñ⌐,
- ¿ß»«½∞ºπεΘÑ⌐ BIOS. èᬠóδ πó¿ñÑΓÑ, αạ¿µá »«Γα∩ßáεΘá∩. èáªÑΓß∩,
- τΓ« ¼Ñ¡ε »«∩ó½∩εΓß∩ ¿ ¿ßτѺáεΓ ¼ú¡«óÑ¡¡«.
-
- /* Åα«úαá¼¼á ¿ßτѺáεΘ¿σ ¼Ñ¡ε ñ½∩ ΓѬßΓ«ó«ú« αѪ¿¼á
- ß ¿ß»«½∞º«ó᡿Ѽ »α∩¼«ú« ñ«ßΓπ»á ¬ ó¿ñÑ« »á¼∩Γ¿ */
- #include "stdio.h"
- #include "dos.h"
- #include "stdlib.h"
-
- #define BORDER 1
- #define ESC 27
- #define REV_VID 0x70
- #define NORM_VID 7
-
- void save_video(),restore_video();
- void goto_xy(),cls(),write_video();
- void display_menu(),draw_border();
- char far *vid_mem;
-
- char *fruit[] = {
- "ƒí½«¬«",
- "ǻѽ∞ß¿¡",
- "âαπΦá",
- "âαÑ⌐»ΣαπΓ",
- "î὿¡á",
- "è½πí¡¿¬á"
- };
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 31 --
-
-
-
- char *color[]={
- "èαáß¡δ⌐",
- "åѽΓδ⌐",
- "ÄαᡪÑóδ⌐",
- "çѽѡδ⌐"
- };
-
- char *apple_type[] = {
- "èαáß¡δ⌐ ñѽ¿¬áΓÑß",
- "䪫¡áΓá¡",
- "üѽδ⌐ ¡á½¿ó",
- "Ç¡Γ«¡«ó¬á"
- };
-
- main()
- {
- int i;
-
- cls();
- goto_xy(0,0);
- for(i=0;i<25;i++)
- printf("¥Γ« ΓÑßΓ ¿ßτѺáεΘÑú« ¼Ñ¡ε\n");
- popup(fruit,"ପ",6,1,3,BORDER);
- popup(color,"»Ǽ",4,5,10,BORDER);
- popup(apple_type,"¬ñíá",4,10,18,BORDER);
- }
-
- /* óδóÑßΓ¿ ¿ßτѺáεΘÑÑ ¼Ñ¡ε ¿ óÑα¡πΓ∞ óδí«α
- ó«ºóαáΘáÑΓ -2, Ñß½¿ ¼Ñ¡ε ¡Ñ ¼«ªÑΓ íδΓ∞ ß«ºñá¡«
- ó«ºóαáΘáÑΓ -1, Ñß½¿ »«½∞º«óáΓѽ∞ ¡áªá½ ¬½áó¿Φπ ESC
- ó «ßΓá½∞¡δσ ß½πτá∩σ «¡á ó«ºóαáΘáÑΓ ¡«¼Ñα óδíαá¡¡«ú«
- αѪ¿¼á, ¡áτ¿¡á∩ ß 0 */
- int popup(menu,keys,count,x,y,border)
- char *menu[]; /* ΓѬßΓ ¼Ñ¡ε */
- char *keys; /* ú«α∩τ¿Ñ ¬½áó¿Φ¿ */
- int count; /* τ¿ß½« αѪ¿¼«ó */
- int x,y; /* ¬««αñ¿¡áΓδ ½Ñó«ú« óÑασ¡Ñú« πú½á */
- int border; /* Ñß½¿ 0 Γ« íѺ αἬ¿ */
- {
- register int i,len;
- int endx endy choice;
- unsigned char *p;
-
- if((x>24)||(x<0)||(y>79)||(y<0)) {
- printf(" óδσ«ñ ºá »αÑñѽδ φ¬αá¡á");
- return -2;
- }
- /* óδτ¿ß½Ñ¡¿Ñ αẼÑα«ó */
- len=0;
- for(i=0;i<count;i++)
- if(strlen(menu[i]) > len) len=strlen(menu[i]);
- endy=len+2+y;
- endx=count+1+x;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 32 --
-
-
- if((endx+1>24) || (endy+1>79)) {
- printf(" óδσ«ñ ºá »αÑñѽδ φ¬αá¡á");
- return -2;
- }
- vmode = video_mode();
- if((vmode!=2) && (vmode!=3) && (vmode!=7)) {
- printf(" ñ«½ªÑ¡ íδΓ∞ 80 ß¿¼ó«½∞¡δ⌐ ΓѬßΓ«óδ⌐ αѪ¿¼");
- exit(1);
- }
-
- /* »α¿ßó«¿Γ∞ ß««ΓóÑΓßΓóπεΘ¿⌐ áñαÑß ó¿ñÑ« »á¼∩Γ¿ */
- if(vmode==7) vid_mem=(char far *)0xB0000000;
- else vid_mem=(char far *)0xB8000000;
- /* αẼÑΘÑ¡¿Ñ »á¼∩Γ¿ ñ½∩ ó¿ñÑ« íπΣÑαá */
- p=(unsigned int *)malloc((endx-x+1)*(endy-y+1));
- if(!p) exit(1); /* éδ ¼«ªÑΓÑ ºñÑß∞ ßἿ «íαáí«ΓáΓ∞ «Φ¿í¬π */
-
- /* ß«σαá¡Ñ¡¿Ñ τáßΓ¿ φ¬αá¡á */
- void save_video(x,endx+1,y,endy+1,p);
-
- if(border) draw_border(x,y,endx,endy);
-
- /* óδßóÑτ¿óá¡¿Ñ ¼Ñ¡ε ¡á ßó«Ñ¼ ¼ÑßΓÑ */
- void display_menu(menu,x,y,count);
-
- /* óóÑßΓ¿ óδí«α »«½∞º«óáΓѽ∩ */
- choice=get_resp(x,y,count,menu,keys)
-
- /* ó«ßßΓá¡«ó½Ñ¡¿Ñ τáßΓ¿ φ¬αá¡á */
- void restore_video(x,endx+1,y,endy+1,p);
- free(p);
- return choice;
- }
-
- /* óδßóÑτ¿óá¡¿Ñ ¼Ñ¡ε ¡á ßó«Ñ¼ ¼ÑßΓÑ */
- void display_menu(menu,x,y,count)
- char *menu[];
- int x,y,count;
- {
- register int i;
-
- for(i=0;i<count;i++,x++) {
- write_string(x,y,menu[i],NORM_VID);
- }
- }
-
- void draw_border(startx,starty,endx,endy)
- int startx,starty,endx,endy;
- {
- register int i;
- char far *v,far *t;
-
- v=vid_mem;
- t=v;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 33 --
-
-
- for(i=startx+1;i<endx;i++) {
- v += (i*160) + starty*2;
- *v++ = 179;
- *v = NORM_VID;
- v=t;
- v += (i*160) + endy*2;
- *v++ = 179;
- *v = NORM_VID;
- v=t;
- }
-
- for(i=starty+1;i<endy;i++) {
- v += (startx*160) + i*2;
- *v++ = 196;
- *v = NORM_VID;
- v=t;
- v += (endx*160) + i*2;
- *v++ = 196;
- *v = NORM_VID;
- v=t;
- }
-
- write_char(startx,starty,218,NORM_VID);
- write_char(startx,endy ,191,NORM_VID);
- write_char(endx ,starty,192,NORM_VID);
- write_char(endx ,endy ,217,NORM_VID);
- goto_xy(startx,endy ); putchar(191);
- goto_xy(endx ,starty); putchar(192);
- goto_xy(endx ,endy ); putchar(217);
- }
-
- /* óóÑßΓ¿ óδí«α »«½∞º«óáΓѽ∩ */
- get_resp(x,y,count,menu,keys)
- int x,y,count;
- char *menu[];
- char *keys;
- {
- union inkey {
- char ch[2];
- int i;
- } c;
- int arrow_choice=0,key_choice;
-
- y++;
- /* «ßóÑΓ¿Γ∞ »Ñαóδ⌐ óδí«α */
- goto_xy(x,y);
- write_string(x,y,menu[0],REV_VID);
-
- for(;;) {
- while(!bioskey(1)); /* ªñáΓ∞ ¡áªáΓ¿∩ */
- c.i=bioskey(0);
-
- /* óÑα¡πΓ∞ óδí«α ó ¡«¼á½∞¡δ⌐ αѪ¿¼ */
- goto_xy(arrow_choice,y);
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 34 --
-
-
- write_string(x+arrow_choice,y,
- menu[arrow_choice],norm_vid);
- if(c.ch[0]) { /* «íδτ¡á∩ ¬½áó¿Φá */
- key_choice= is_in(keys,tolower(c.ch[0]));
- if(key_choice) return key_choice-1;
- switch(c.ch[0]) {
- case '\r' : return arrow_choice;
- case ' ' : arrow_choice++;
- break;
- case ESC : return -1; /* óδ⌐Γ¿ */
- }
- }
- else { /* ߻ѵ¿á½∞¡á∩ ¬½áó¿Φá */
- switch(c.ch[1]) {
- case 72 : arrow_choice--; /* ßΓαѽ¬á 󡿺 */
- break;
- case 80 : arrow_choice++; /* ßΓαѽ¬á óóÑασ */
- break;
-
- }
- }
- if(arrow_choice==count) arrow_choice=0;
- if(arrow_choice<0) arrow_choice=count-1;
- /* »«ñßóÑΓ¿Γ∞ óδíαá¡¡πε «»µ¿ε */
- goto_xy(x+arrow_choice,y);
- write_string(x+arrow_choice,y,menu[arrow_choice],REV_VID);
- }
- }
-
- /* óδó«ñ ßΓ᫬¿ ß «»αÑñѽѡ¡δ¼ áΓα¿íπΓ«¼ */
- void write_string(x,y,p,attrib)
- int x,y;
- char *p;
- int attrib;
- {
- register int i,j;
- char far *v;
-
- v=vid_mem;
- v += (x*160) + y*2;
- for(i=y; *p; i++) {
- *v++ =*p++; /* ºá»¿ß∞ ß¿¼ó«½á */
- *v++ =attrib; /* ºá»¿ß∞ áΓα¿íπΓá */
- }
- }
-
- /* ºá»¿ß∞ ß¿¼ó«½á ß «»αÑñѽѡ¡δ¼ áΓΓα¿íπΓ«¼ */
- void write_char(x,y,ch,attrib)
- int x,y;
- char ch;
- int attrib;
- {
- register int i;
- char far *v;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 35 --
-
-
-
- v=vid_mem;
- v += (x*160) +y*2;
- *v++ = ch; /* ºá»¿ß∞ ß¿¼ó«½á */
- *v = attrib; /* ºá»¿ß∞ áΓα¿íπΓá */
- }
-
- /* ß«σαá¡Ñ¡¿Ñ τáßΓ¿ φ¬αá¡á ß ¿ß»«½∞º«ó᡿Ѽ
- »α∩¼«ú« ñ«ßΓπ»á ¬ ó¿ñÑ« »á¼∩Γ¿ */
- void save_video(startx,endx,starty,endy,buf_ptr)
- int startx,endx,starty,endy;
- unsigned int *buf_ptr;
- {
- register int i,j;
- char far *v, far *t;
-
- v=vid_mem;
- for(i=starty;i<endy;i++)
- for(j=startx;j<endx;j++) {
- t = v + (j*160) + i*2; /* óδτ¿ß½∩Ѽ áñαÑß */
- *buf_ptr++ = *t++; /* τΓÑ¡¿Ñ ß¿¼ó«½á */
- *buf_ptr++ = *t; /* τΓÑ¡¿Ñ áΓα¿íπΓá */
- *(t-1) = ' '; /* «τ¿ßΓ¬á «¬¡á */
- }
- }
-
- /* ó«ßßΓá¡«ó½Ñ¡¿Ñ τáßΓ¿ φ¬αá¡á ß ¿ß»«½∞º«ó᡿Ѽ
- »α∩¼«ú« ñ«ßΓπ»á ¬ ó¿ñÑ« »á¼∩Γ¿ */
- void restore_video(startx,endx,starty,endy,buf_ptr)
- int startx,endx,starty,endy;
- unsigned int *buf_ptr;
- {
- register int i,j;
- char far *v, far *t;
-
- v=vid_mem;
- t=v;
- for(i=starty;i<endy;i++)
- for(j=startx;j<endx;j++) {
- v = t;
- v += (j*160) + i*2; /* óδτ¿ß½∩Ѽ áñαÑß */
- *v++ = *buf_ptr++; /* ºá»¿ß∞ ß¿¼ó«½á */
- *v = *buf_ptr++; /* ºá»¿ß∞ áΓα¿íπΓá */
- }
- }
-
- /* «τ¿ßΓ¬á φ¬αá¡á */
- void cls()
- {
- union REGS r;
-
- r.h.ah=6; /* ¬«ñ »α«¬απΓ¬¿ φ¬αá¡á */
- r.h.al=0; /* ¬«ñ «τ¿ßΓ¬¿ φ¬αá¡á */
- r.h.ch=0; /* ¡áτá½∞¡á∩ ßΓ᫬á */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 36 --
-
-
- r.h.cl=0; /* ¡áτá½∞¡á∩ ¬«½«¡¬á */
- r.h.dh=24; /* ¬«¡Ñτ¡á∩ ßΓ᫬á */
- r.h.dl=79; /* ¬«¡Ñτ¡á∩ ¬«½«¡¬á */
- r.h.bh=7; /* «τ¿ßΓ¬á »πßΓ«⌐ ßΓ᫬¿ */
- int86(0x10,&r,&r);
- }
-
- /* πßΓá¡«ó¬á ¬παß«αá ó x,y */
- void goto_xy(x,y)
- int x,y;
- {
- union REGS r;
-
- r.h.ah=2; /* Σπ¡¬µ¿∩ πßΓá¡«ó¬¿ ¬παß«αá */
- r.h.dl=y; /* ¬««αñ¿¡áΓá ¬«½«¡¬¿ */
- r.h.dh=x; /* ¬««αñ¿¡áΓá ßΓ᫬¿ */
- r.h.bh=0; /* ó¿ñÑ« ßΓαá¡¿µá */
- int86(0x10,&r,&r);
- }
-
- /* ºá»α«ß ΓѬπΘÑú« ó¿ñÑ« αѪ¿¼á */
- video_mode()
- {
- union REGS r;
-
- r.h.ah = 15; /* »«½πτ¿Γ∞ αѪ¿¼ */
- return int86(0x10,&r,&r) & 255;
- }
-
- is_in(s,c)
- char *s,c;
- {
- register int i;
-
- for(i=0; *s; i++)
- if(*s++ == c) return i+1;
- return 0;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 37 --
-
-
- 櫺ñá¡¿Ñ ¿Ñαáασ¿τÑ߬¿σ «¬«¡
- -----------------------------------------------------------------
-
- êÑαáασ¿τÑ߬¿Ñ «¬¡á Σπ¡ñá¼Ñ¡Γá½∞¡« «Γ½¿τáεΓß∩ «Γ »α«ßΓδσ
- ¿ßτѺáεΘ¿σ ¼Ñ¡ε ΓѼ, τΓ« ñóá ¿½¿ í«½ÑÑ ¿ßτѺáεΘ¿σ ¼Ñ¡ε ¼«úπΓ íδΓ∞
- á¬Γ¿ó¡δ¼¿ «ñ¡«óαѼѡ¡«. é««íΘÑ ¿Ñαáασ¿τÑ߬¿Ñ ¼Ñ¡ε »«ºó«½∩εΓ
- »«½∞º«óáΓѽε óδí¿αáΓ∞ αѪ¿¼δ ¡Ñ»«ßαÑñßΓóÑ¡¡« ¿º αѪ¿¼«ó ¿
- ¿ß»«½∞ºπεΓß∩ ñ½∩ »«ññÑ᪬¿ ß¿ßΓÑ¼δ ¼Ñ¡ε. é «Γ½¿τ¿Ñ «Γ Σπ¡¬µ¿¿
- popup(), ¬«Γ«αá∩ ß«σαá¡∩ÑΓ φ¬αá¡, óδßóÑτ¿óáÑΓ ¼Ñ¡ε, ¿
- ó«ßßΓá¡áó½¿óáÑΓ φ¬αá¡, Σπ¡¬µ¿∩ pulldown(), αáºαáí«Γá¡¡á∩ ó φΓ«¼
- αáºñÑ½Ñ Γ«½∞¬« ß«σαá¡∩ÑΓ φ¬αá¡ (Ñß½¿ φΓ« ¡πª¡«), óδßóÑτ¿óáÑΓ ¼Ñ¡ε
- ¿ ó«ºóαáΘáÑΓ óδí«α »«½∞º«óáΓѽ∩. é«ßßΓá¡«ó½Ñ¡¿Ñ φ¬αá¡á
- «íαáíáΓδóáÑΓß∩ ¬á¬ «Γñѽ∞¡á∩ ºáñáτá ó ½εí«¼ ¼ÑßΓÑ »α«úαá¼¼δ.
- ÅÑαÑñ ΓѼ ¬á¬ óδ ß¼«ªÑΓÑ ß«ºñáΓ∞ ¿Ñαáασ¿τÑ߬«Ñ ¼Ñ¡ε, óδ ñ«½ª¡δ
- ¿º¼Ñ¡¿Γ∞ ßó«Ñ »αÑñßΓáó½Ñ¡¿Ñ « ¼Ñ¡ε.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 38 --
-
-
- öαÑ⌐¼δ ¼Ñ¡ε
- -----------------------------------------------------------------
-
- ûÑ¡Γαá½∞¡δ¼ »«¡∩Γ¿Ñ¼ ñ½∩ ß«ºñá¡¿∩ ¿Ñαáασ¿τÑ߬«ú«,
- ¼¡«ú«πα«ó¡Ñó«ú« ¼Ñ¡ε ∩ó½∩ÑΓß∩ ΣαÑ⌐¼ ¼Ñ¡ε. é ßπΘ¡«ßΓ¿, »α«úαá¼¼δ
- ¿Ñαáασ¿τÑ߬¿σ ¼Ñ¡ε ΓαÑíπεΓ τΓ«íδ ¬áªñ«Ñ ¼Ñ¡ε ¿¼Ñ½« ßó«⌐ ΣαÑ⌐¼
- ßß佫¬, «»αÑñѽѡ¡δσ ñ« Γ«ú«, ¬á¬ »α«úαá¼¼á, ¬«Γ«αá∩ ¿ß»«½∞πÑΓ
- ¼Ñ¡ε, ¡áτá½á óδ»«½¡∩Γ∞ß∩. èáªñ«Ñ ¼Ñ¡ε á¬Γ¿ó¿º¿απÑΓß∩ »« ¡«¼Ñαπ
- Ñú« ΣαÑ⌐¼á ¿ ¡Ñ«íσ«ñ¿¼á∩ ¿¡Σ«α¼áµ¿∩ ºáúαπªáÑΓß∩ »« ¼ÑαÑ
- ¡Ñ«íσ«ñ¿¼«ßΓ¿ ñ½∩ αẽ¿τ¡δσ Σπ¡¬µ¿⌐, »«ññÑনóáεΘ¿σ ¼Ñ¡ε.
-
- ïπτΦ¿⌐ ß»«ß«í ñ½∩ »«ññÑ᪬¿ ΣαÑ⌐¼«ó ¼Ñ¡ε - ß«ºñáΓ∞ ¼áßß¿ó
- ßΓαπ¬Γπα, ¬«Γ«αδÑ ß«ñÑαªáΓ ¿¡Σ«α¼áµ¿ε, «Γ¡«ß∩Θπεß∩ ¬ ¼Ñ¡ε. ¥Γá
- ßΓαπ¬Γπαá «»αÑñѽ∩ÑΓß∩ Γá¬, ¬á¬ «»¿ßá¡« ºñÑß∞:
-
- struct menu_frame {
- int startx,endx,starty,endy;
- unsigned char *p; /* π¬áºáΓѽ∞ ¡á ¿¡Σ«α¼áµ¿ε φ¬αá¡á */
- char **menu; /* π¬áºáΓѽ∞ ¡á ßΓ᫬¿ ¼Ñ¡ε */
- int border; /* αἬá ó¬½ετÑ¡«/ó䬽ετÑ¡« */
- int count; /* τ¿ß½« á½∞ΓÑα¡áΓ¿ó */
- int astive; /* á¬Γ¿ó¡« ½¿ ¼Ñ¡ε ßÑ⌐τáß */
- } frame[MAX_FRAME];
-
- úñÑ îAX_FRAME - ¼á¬α«¬«¡ßΓá¡Γá, ¬«Γ«αá∩ «»αÑñѽ∩ÑΓ ¬á¬ ¼¡«ú« ¼Ñ¡ε
- óδ ¼«ªÑΓÑ ¿¼ÑΓ∞. Æ«½∞¬« «ñ¡á ñ«»«½¡¿Γѽ∞¡á∩ ¿¡Σ«α¼áµ¿∩ ΓαÑíπÑΓß∩
- ñ½∩ ¿Ñαáασ¿τÑ߬¿σ ¼Ñ¡ε, ¬«Γ«αá∩ ¡Ñ ¡πª¡á ñ½∩ ¿ßτѺáεΘ¿σ ¼Ñ¡ε -
- Σ½áú á¬Γ¿ó¡«ßΓ¿. ö½áú ¿ß»«½∞ºπÑΓß∩ ó ¬áτÑßΓóÑ ß¿ú¡á½á, τΓ« ¼Ñ¡ε
- πªÑ ¡á φ¬αá¡Ñ ¿ »αÑñπ»αѪñáÑΓ »ÑαѺỿßδóá¡¿Ñ ¿¡Σ«α¼áµ¿¿ ß
- φ¬αá¡á.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 39 --
-
-
- 櫺ñá¡¿Ñ ΣαÑ⌐¼á ¼Ñ¡ε
- -----------------------------------------------------------------
-
- ÅÑαÑñ ¿ß»«½∞º«ó᡿Ѽ ¼Ñ¡ε ñ½∩ φΓ«ú« ñ«½ªÑ¡ íδΓ∞ ß«ºñá¡
- ΣαÑ⌐¼. öπ¡¬µ¿∩ make_menu(), »«¬áºá¡¡á∩ ºñÑß∞, ß«ºñáÑΓ ΣαÑ⌐¼ ¼Ñ¡ε.
-
- /* ß«ºñá¡¿Ñ ΣαÑ⌐¼á ¿Ñαáασ¿τÑ߬«ú« ¼Ñ¡ε.
- 1 Ñß½¿ ΣαÑ⌐¼ ¼«ªÑΓ íδΓ∞ ß«ºñá¡
- ó »α«Γ¿ó¡«¼ ß½πτáÑ 0 */
- make_menu(num,menu,keys,count,x,y,border)
- int num; /* ¡«¼Ñα ¼Ñ¡ε */
- char *menu; /* ΓѬßΓ ¼Ñ¡ε */
- char *keys; /* ú«α∩τ¿Ñ ¬½áó¿Φ¿ */
- int count; /* τ¿ß½« á½∞ΓÑα¡áΓ¿ó */
- int x,y; /* ½Ñóδ⌐ óÑασ¡¿⌐ πú«½ */
- int border; /* αἬá */
- {
- register int i,len;
- int endx,endy,choice,vmode;
- unsigned char *p;
-
- if(num>MAX_FRAME) {
- printf("æ½¿Φ¬«¼ ¼¡«ú« ¼Ñ¡ε");
- return 0;
- }
- if((x>24)||(x<0)||(y>79)||(y<0)) {
- printf(" óδσ«ñ ºá »αÑñѽδ φ¬αá¡á");
- return 0;
- }
-
- /* óδτ¿ß½Ñ¡¿Ñ αẼÑα«ó */
- len=0;
- for(i=0;i<count;i++)
- if(strlen(menu[i]) > len) len=strlen(menu[i]);
- endy=len+2+y;
- endx=count+1+x;
- if((endx+1>24) || (endy+1>79)) {
- printf(" óδσ«ñ ºá »αÑñѽδ φ¬αá¡á");
- return 0;
- }
-
- /* αẼÑΘÑ¡¿Ñ »á¼∩Γ¿ ñ½∩ ó¿ñÑ« íπΣÑαá */
- p=(unsigned int *)malloc((endx-x+1)*(endy-y+1));
- if(!p) exit(1); /* éδ ¼«ªÑΓÑ ºñÑß∞ ßἿ «íαáí«ΓáΓ∞ «Φ¿í¬π */
-
- /* ß«ºñá¡¿Ñ ΣαÑ⌐¼á */
- frame[num].startx=x;
- frame[num].endx=endx;
- frame[num].starty=y;
- frame[num].endy=endy;
- frame[num].p = p;
- frame[num].menu = (char **) menu;
- frame[num].border = border;
- frame[num].keys = keys;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 40 --
-
-
- frame[num].count = count;
- frame[num].active =0;
- return 1;
- }
-
- éδ óδºδóáÑΓÑ make_menu ß ΓѼ¿ ªÑ áαúπ¼Ñ¡ΓἿ, ¬á¬¿Ñ
- ¿ß»«½∞ºπεΓß∩ ó popup() ¬α«¼Ñ ¡«¼Ñαá ¼Ñ¡ε, ¬«Γ«αδ⌐ ñ«½ªÑ¡ íδΓ∞
- «»αÑñѽѡ ó »Ñαó«¼ áαúπ¼Ñ¡ΓÑ. ¥Γ«Γ ¡«¼Ñα ¿ß»«½∞ºπÑΓß∩ ñ½∩
- ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ ¼Ñ¡ε.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 41 --
-
-
- öπ¡¬µ¿∩ pulldown()
- -----------------------------------------------------------------
-
- öπ¡¬µ¿∩ pulldown() »«¬áºá¡á ºñÑß∞:
-
- /* éδßóÑΓ¿Γ∞ ¼Ñ¡ε ¿ »«½πτ¿Γ∞ óδí«α
- ó«ºóαáΘáÑΓ -1, Ñß½¿ »«½∞º«óáΓѽ∞ ¡áªá½ ¬½áó¿Φπ ESC
- ó «ßΓá½∞¡δσ ß½πτá∩σ ¡«¼Ñα á½∞ΓÑα¡áΓ¿óδ, ¡áτ¿¡á∩ ß 0 */
-
- int pulldown(num)
- int num; /* ¡«¼Ñα ΣαÑ⌐¼á */
- {
- int vmode,choice;
-
- vmode=video_mode();
- if((vmode!=2) && (vmode!=3) && (vmode!=7)) {
- printf(" ñ«½ªÑ¡ íδΓ∞ 80 ß¿¼ó«½∞¡δ⌐ ΓѬßΓ«óδ⌐ αѪ¿¼");
- exit(1);
- }
-
- /* »α¿ßó«¿Γ∞ ß««ΓóÑΓßΓóπεΘ¿⌐ áñαÑß ó¿ñÑ« »á¼∩Γ¿ */
- if(vmode==7) vid_mem=(char far *)0xB0000000;
- else vid_mem=(char far *)0xB8000000;
-
- /* πº¡áΓ∞ á¬Γ¿ó¡«ßΓ∞ «¬¡á */
- if(!frame[num].active) { /* ¡Ñ á¬Γ¿ó¡« */
- save_video(num);
- frame[num].active= 1; /* πßΓá¡«ó¿Γ∞ »α¿º¡á¬ á¬Γ¿ó¡«ßΓ¿ */
- }
-
- if( frame[num].border) draw_worder(num);
-
- display_menu(num); /* óδßóÑΓ¿Γ∞ ¼Ñ¡ε */
- return get_resp(num); /* ó«ºóαáΓ¿Γ∞ óδí«α */
- }
-
- ä½∩ ¿ß»«½∞º«óá¡¿∩ pulldown() »α«ßΓ« »ÑαÑñá⌐ΓÑ ¡«¼Ñα Γ«ú«
- ¼Ñ¡ε, ¬«Γ«α«Ñ óδ σ«Γ¿ΓÑ óδßóÑΓ¿Γ∞. Äñ¡á¬« óδ ñ«½ª¡δ »«¼¡¿Γ∞ «
- ó«ßßΓá¡«ó½Ñ¡¿¿ «¬¡á, ¿ß»«½∞ºπ∩ restore_video() óѺñÑ ó ßó«Ñ⌐
- »α«úαá¼¼Ñ. çừ¼¡¿ΓÑ, τΓ« «ß¡«ó¡«Ñ «Γ½¿τ¿Ñ ¿Ñαáασ¿τÑ߬¿σ ¼Ñ¡ε ó
- Γ«¼, τΓ« «¡¿ »«ºó«½∩εΓ ñóπ¼ ¿½¿ í«½ÑÑ ¼Ñ¡ε «ßΓáóáΓ∞ß∩ ¡á φ¬αá¡Ñ
- «ñ¡«óαѼѡ¡« ¿ íδΓ∞ »«ΓÑ¡µ¿á½∞¡« á¬Γ¿ó¡δ¼¿, »« ¼ÑαÑ Γ«ú« ¬á¬
- »«½∞º«óáΓѽ∞ óδí¿αáÑΓ «»µ¿¿. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ óá¼ ¡Ñ ß½ÑñπÑΓ
- ó«ßßΓá¡áó½¿óáΓ∞ φ¬αá¡ ñ« Γ«ú«, ¬á¬ »α«µÑßß óδí«αá »«½¡«ßΓ∞ε
- ºáóÑαΦÑ¡.
-
- ÄíαáΓ¿ΓÑ ó¡¿¼á¡¿Ñ, τΓ« τáßΓ∞ φ¬αá¡á, ¿ß»«½∞ºπѼá∩ ñ½∩ ¼Ñ¡ε,
- ß«σαá¡∩ÑΓß∩ Γ«½∞¬« Ñß½¿ »α¿º¡á¬ á¬Γ¿ó¡«ßΓ¿ αáóÑ¡ 0. Æá¬ ¬á¬
- ¿Ñαáασ¿τÑ߬«Ñ ¼Ñ¡ε ¼«ªÑΓ íδΓ∞ óδºóá¡« »«óΓ«α¡«, φ¬αá¡ ¡Ñ ñ«½ªÑ¡
- ß«σαá¡∩Γ∞ß∩ ¼¡«ú« αáº. (äαπú¿¼¿ ß½«óἿ »α¿ »«óΓ«α¡«¼ óσ«ªñÑ¡¿¿
- íπñÑΓ ß«σαá¡Ñ¡« ßἫ ¼Ñ¡ε, ºá»¿ßá¡¡«Ñ »«óÑασ »Ñαó«¡áτá½∞¡«ú«
- ß«ñÑন¼«ú« φ¬αá¡á, ¬«Γ«α«Ñ πªÑ ß«σαá¡Ñ¡«.)
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 42 --
-
-
-
- é«ßßΓá¡«ó½Ñ¡¿Ñ φ¬αá¡á
- -----------------------------------------------------------------
-
- èᬠ¿ ñαπú¿Ñ Σπ¡¬µ¿¿ »«ññÑ᪬¿ ¼Ñ¡ε, ¿º¼Ñ¡Ñ¡¡á∩
- restore_video »«¬áºá¡¡á∩ ºñÑß∞, »αÑ«íαẫóá¡á ñ½∩ αáí«Γδ ß
- ΣαÑ⌐¼á¼¿. Å«φΓ«¼π Σπ¡¬µ¿¿ restore_video() ΓÑ»Ñα∞ »ÑαÑñáÑΓß∩
- Γ«½∞¬« ¡«¼Ñα ¼Ñ¡ε, τΓ« ñѽáÑΓ ¿¡ΓÑαΣÑ⌐ß í«½ÑÑ «τÑó¿ñ¡δ¼.
-
- /* ó«ßßΓá¡«ó½Ñ¡¿Ñ τáßΓ¿ φ¬αá¡á */
- void restore_video(num)
- int num;
- {
- register int i,j;
- char far *v, far *t;
- char *buf_ptr;
-
- buf_ptr=frame[num].p;
- v=vid_mem;
- t=v;
- for(i=frame[num].starty;i<frame[num].endy;i++)
- for(j=frame[num].startx;j<frame[num].endx;j++) {
- v = t;
- v += (j*160) + i*2; /* óδτ¿ß½∩Ѽ áñαÑß */
- *v++ = *buf_ptr++; /* ºá»¿ß∞ ß¿¼ó«½á */
- *v = *buf_ptr++; /* ºá»¿ß∞ áΓα¿íπΓá */
- }
- frame[num].active= 0;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 43 --
-
-
- Åα«ßΓá∩ »α«úαá¼¼á, ¿ß»«½∞ºπεΘá∩ »α«µÑñπαπ pulldown
- -----------------------------------------------------------------
-
- éßÑ Σπ¡¬µ¿¿ ñ½∩ ¿Ñαáασ¿τÑ߬¿σ ¼Ñ¡ε »«¬áºá¡δ ºñÑß∞ ó¼ÑßΓÑ ß
- »α«ßΓ«⌐ »α«úαá¼¼«⌐-«íαẵ«¼ ¿ ¿σ ¼«ª¡« »α∩¼« óó«ñ¿Γ∞ ó óáΦ
- ¬«¼»∞εΓÑα.
-
- /* »α«µÑñπαá ¿Ñαáασ¿τÑ߬«ú« ¼Ñ¡ε ñ½∩ ΓѬßΓ«ó«ú« αѪ¿¼á
- ¿ »α«ßΓá∩ »α«úαá¼¼á-»α¿¼Ñα */
- #include "stdio.h"
- #include "dos.h"
- #include "stdlib.h"
-
- #define BORDER 1
- #define ESC 27
- #define REV_VID 0x70
- #define NORM_VID 7
-
- void save_video(),restore_video();
- void goto_xy(),cls(),write_video();
- void display_menu(),draw_border();
- char far *vid_mem;
-
- struct menu_frame {
- int startx,endx,starty,endy;
- unsigned char *p; /* π¬áºáΓѽ∞ ¡á ¿¡Σ«α¼áµ¿ε φ¬αá¡á */
- char **menu; /* π¬áºáΓѽ∞ ¡á ßΓ᫬¿ ¼Ñ¡ε */
- int border; /* αἬá ó¬½ετÑ¡«/ó䬽ετÑ¡« */
- int count; /* τ¿ß½« á½∞ΓÑα¡áΓ¿ó */
- int astive; /* á¬Γ¿ó¡« ½¿ ¼Ñ¡ε ßÑ⌐τáß */
- } frame[MAX_FRAME];
-
- char *fruit[] = {
- "ƒí½«¬«",
- "ǻѽ∞ß¿¡",
- "âαπΦá",
- "úÉÑ⌐»ΣαπΓ",
- "î὿¡á"
- "è½πí¡¿¬á"
- };
-
- char *color[]={
- "èαáß¡δ⌐",
- "åѽΓδ⌐",
- "ÄαᡪÑóδ⌐",
- "çѽѡδ⌐"
- };
-
- char *apple_type[] = {
- "èαáß¡δ⌐ ñѽ¿¬áΓÑß", ?
- "䪫¡áΓá¡",
- "üѽδ⌐ ¡á½¿ó",
- "A¡Γ«¡«ó¬á"
- };
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 44 --
-
-
-
- char *grape_type[]= {
- "è«¡¬«αñ",
- "¬Ç¡áñ߬¿⌐",
- "Æ«¼»ß«¡",
- "¬Éáß¡«Ñ »½á¼∩"
- };
-
- main()
- {
- int i;
-
- cls();
- goto_xy(0,0);
-
- /* ó«-»Ñαóδσ ß«ºñáñ¿¼ ΣαÑ⌐¼δ ¼Ñ¡ε */
- make_menu(0,fruit,"ପ",6,5,20,BORDER);
- make_menu(1,color,"»Ǽ",4,9,28,BORDER);
- make_menu(2,apple_type,"¬ñíá",4,12,32,BORDER);
- make_menu(3,grape_type,"¬áΓα",4,9,10,BORDER);
-
- printf("éδíÑα¿ΓÑ Σαπ¬Γ:");
-
- pd_driver(); /* ºá»π߬ ß¿ßΓÑ¼δ ¼Ñ¡ε */
-
- }
-
- void pd_driver()
- {
- int choice1,choice2,selection;
-
- /* á¬Γ¿ó¿ºáµ¿∩ «¬«¡ »« ¼ÑαÑ ¡áñ«í¡«ßΓ¿ */
- while((choice1=pulldown(0)) != -1) {
- switch ( choice1 ) {
- case 0 : /* ∩í½«¬« */
- while((choice2=pulldown(1)) != -1) {
- if(choice2 ==0) selection=pulldown(2);/*¬αáß¡«Ñ ∩í½«¬« */
- restore_video(2);
- }
- restore_video(1);
- break;
- case 1 :
- case 2 : goto_xy(1,0);
- printf("¡Ñ»αáó¿½∞¡δ⌐ óδí«α");
- break;
- case 3 : /* úαÑ⌐»ΣαπΓ */
- selection=pulldown(3);
- restore_video(3);
- break;
- case 4 :
- case 5 : goto_xy(1,0);
- printf("¡Ñ»αáó¿½∞¡δ⌐ óδí«α");
- break;
- }
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 45 --
-
-
- }
- restore_video(0);
- }
-
- /* éδßóÑΓ¿Γ∞ ¼Ñ¡ε ¿ »«½πτ¿Γ∞ óδí«α */
-
- int pulldown(num)
- int num; /* ¡«¼Ñα ΣαÑ⌐¼á */
- {
- int vmode,choice;
-
- vmode=video_mode();
- if((vmode!=2) && (vmode!=3) && (vmode!=7)) {
- printf(" ñ«½ªÑ¡ íδΓ∞ 80 ß¿¼ó«½∞¡δ⌐ ΓѬßΓ«óδ⌐ αѪ¿¼");
- exit(1);
- }
-
- /* »α¿ßó«¿Γ∞ ß««ΓóÑΓßΓóπεΘ¿⌐ áñαÑß ó¿ñÑ« »á¼∩Γ¿ */
- if(vmode==7) vid_mem=(char far *)0xB0000000;
- else vid_mem=(char far *)0xB8000000;
-
- /* πº¡áΓ∞ á¬Γ¿ó¡ßΓ∞ «¬¡á */
- if(!frame[num].active) { /* ¡Ñ á¬Γ¿ó¡« */
- save_video(num);
- frame[num].active= 1; /* πßΓá¡«ó¿Γ∞ »α¿º¡á¬ á¬Γ¿ó¡«ßΓ¿ */
- }
-
- if( frame[num].border) draw_worder(num);
-
- display_menu(num); /* óδßóÑΓ¿Γ∞ ¼Ñ¡ε */
- return get_resp(num); /* ó«ºóαáΓ¿Γ∞ óδí«α */
- }
-
- /* ß«ºñá¡¿Ñ ΣαÑ⌐¼á ¿Ñαáασ¿τÑ߬«ú« ¼Ñ¡ε.
- 1 Ñß½¿ ΣαÑ⌐¼ ¼«ªÑΓ íδΓ∞ ß«ºñá¡
- ó »α«Γ¿ó¡«¼ ß½πτáÑ 0 */
- make_menu(num,menu,keys,count,x,y,border)
- int num; /* ¡«¼Ñα ¼Ñ¡ε */
- char *menu; /* ΓѬßΓ ¼Ñ¡ε */
- char *keys; /* ú«α∩τ¿Ñ ¬½áó¿Φ¿ */
- int count; /* τ¿ß½« á½∞ΓÑα¡áΓ¿ó */
- int x,y; /* ½Ñóδ⌐ óÑασ¡¿⌐ πú«½ */
- int border; /* αἬá */
- {
- register int i,len;
- int endx,endy,choice,vmode;
- unsigned char *p;
-
- if(num>MAX_FRAME) {
- printf("æ½¿Φ¬«¼ ¼¡«ú« ¼Ñ¡ε");
- return 0;
- }
- if((x>24)||(x<0)||(y>79)||(y<0)) {
- printf(" óδσ«ñ ºá »αÑñѽδ φ¬αá¡á");
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 46 --
-
-
- return 0;
- }
-
- /* óδτ¿ß½Ñ¡¿Ñ αẼÑα«ó */
- len=0;
- for(i=0;i<count;i++)
- if(strlen(menu[i]) > len) len=strlen(menu[i]);
- endy=len+2+y;
- endx=count+1+x;
- if((endx+1>24) || (endy+1>79)) {
- printf(" óδσ«ñ ºá »αÑñѽδ φ¬αá¡á");
- return 0;
- }
-
- /* αẼÑΘÑ¡¿Ñ »á¼∩Γ¿ ñ½∩ ó¿ñÑ« íπΣÑαá */
- p=(unsigned int *)malloc((endx-x+1)*(endy-y+1));
- if(!p) exit(1); /* éδ ¼«ªÑΓÑ ºñÑß∞ ßἿ «íαáí«ΓáΓ∞ «Φ¿í¬π */
-
- /* ß«ºñá¡¿Ñ ΣαÑ⌐¼á */
- frame[num].startx=x;
- frame[num].endx=endx;
- frame[num].starty=y;
- frame[num].endy=endy;
- frame[num].p = p;
- frame[num].menu = (char **) menu;
- frame[num].border = border;
- frame[num].keys = keys;
- frame[num].count = count;
- frame[num].active =0;
- return 1;
- }
-
- /* óδßóÑτ¿óá¡¿Ñ ¼Ñ¡ε ¡á ßó«Ñ¼ ¼ÑßΓÑ */
- void display_menu(num)
- int num;
- {
- char **m;
- register int i, x;
-
- x = frame[num].startx+1;
- m = frame[num].menu;
-
- for(i=0;i<frame[num].count;i++,x++) {
- write_string(x,frame[num].starty+1,m[i],NORM_VID);
- }
- }
-
- void draw_border(num)
- int num ;
- {
- register int i;
- char far *v,far *t;
-
- v=vid_mem;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 47 --
-
-
- t=v;
- for(i=frame[num].startx+1;i<frame[num].endx;i++) {
- v += (i*160) + frame[num].starty*2;
- *v++ = 179;
- *v = NORM_VID;
- v=t;
- v += (i*160) + frame[num].endy*2;
- *v++ = 179;
- *v = NORM_VID;
- v=t;
- }
-
- for(i=frame[num].starty+1;i<frame[num].endy;i++) {
- v += (frame[num].startx*160) + i*2;
- *v++ = 196;
- *v = NORM_VID;
- v=t;
- v += (frame[num].endx*160) + i*2;
- *v++ = 196;
- *v = NORM_VID;
- v=t;
- }
-
- write_char(frame[num].startx,frame[num].starty,218,NORM_VID);
- write_char(frame[num].startx,frame[num].endy ,191,NORM_VID);
- write_char(frame[num].endx ,frame[num].starty,192,NORM_VID);
- write_char(frame[num].endx ,frame[num].endy ,217,NORM_VID);
- goto_xy(frame[num].startx,frame[num].endy ); putchar(191);
- goto_xy(frame[num].endx ,frame[num].starty); putchar(192);
- goto_xy(frame[num].endx ,frame[num].endy ); putchar(217);
- }
-
- /* óóÑßΓ¿ óδí«α »«½∞º«óáΓѽ∩ */
- get_resp(num)
- int num;
- {
- union inkey {
- char ch[2];
- int i;
- } c;
- int arrow_choice=0,key_choice;
- int x,y;
-
- x=frame[num].startx+1;
- y=frame[num].starty+1;
-
- /* «ßóÑΓ¿Γ∞ »Ñαóδ⌐ óδí«α */
- goto_xy(x,y);
- write_string(x,y,frame[num].menu[0],REV_VID);
-
- for(;;) {
- while(!bioskey(1)); /* ªñáΓ∞ ¡áªáΓ¿∩ */
- c.i=bioskey(0);
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 48 --
-
-
- /* óÑα¡πΓ∞ óδí«α ó ¡«¼á½∞¡δ⌐ αѪ¿¼ */
- goto_xy(arrow_choice,y);
- write_string(x+arrow_choice,y,
- frame[num].menu[arrow_choice],norm_vid);
- if(c.ch[0]) { /* «íδτ¡á∩ ¬½áó¿Φá */
- key_choice= is_in(frame[num].keys,tolower(c.ch[0]));
- if(key_choice) return key_choice-1;
- switch(c.ch[0]) {
- case '\r' : return arrow_choice;
- case ' ' : arrow_choice++;
- break;
- case ESC : return -1; /* óδ⌐Γ¿ */
- }
- }
- else { /* ߻ѵ¿á½∞¡á∩ ¬½áó¿Φá */
- switch(c.ch[1]) {
- case 72 : arrow_choice--; /* ßΓαѽ¬á 󡿺 */
- break;
- case 80 : arrow_choice++; /* ßΓαѽ¬á óóÑασ */
- break;
-
- }
- }
- if(arrow_choice==frame[num].count) arrow_choice=0;
- if(arrow_choice<0) arrow_choice=frame[num].count-1;
- /* »«ñßóÑΓ¿Γ∞ óδíαá¡¡πε «»µ¿ε */
- goto_xy(x+arrow_choice,y);
- write_string(x+arrow_choice,y,
- frame[num].menu[arrow_choice],REV_VID);
- }
- }
-
- /* óδó«ñ ßΓ᫬¿ ß «»αÑñѽѡ¡δ¼ áΓα¿íπΓ«¼ */
- void write_string(x,y,p,attrib)
- int x,y;
- char *p;
- int attrib;
- {
- register int i,j;
- char far *v;
-
- v=vid_mem;
- v += (x*160) + y*2;
- for(i=y; *p; i++) {
- *v++ =*p++; /* ºá»¿ß∞ ß¿¼ó«½á */
- *v++ =attrib; /* ºá»¿ß∞ áΓα¿íπΓá */
- }
- }
-
- /* ºá»¿ß∞ ß¿¼ó«½á ß «»αÑñѽѡ¡δ¼ áΓΓα¿íπΓ«¼ */
- void write_char(x,y,ch,attrib)
- int x,y;
- char ch;
- int attrib;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 49 --
-
-
- {
- register int i;
- char far *v;
-
- v=vid_mem;
- v += (x*160) +y*2;
- *v++ = ch; /* ºá»¿ß∞ ß¿¼ó«½á */
- *v = attrib; /* ºá»¿ß∞ áΓα¿íπΓá */
- }
-
- /* ß«σαá¡Ñ¡¿Ñ τáßΓ¿ φ¬αá¡á ß ¿ß»«½∞º«ó᡿Ѽ
- »α∩¼«ú« ñ«ßΓπ»á ¬ ó¿ñÑ« »á¼∩Γ¿ */
- void save_video(num)
- int num;
- {
- register int i,j;
- char far *v, far *t;
- char *buf_ptr;
-
- buf_ptr=frame[num].p;
- v=vid_mem;
- for(i=frame[num].starty;i<frame[num].endy;i++)
- for(j=frame[num].startx;j<frame[num].endx;j++) {
- t = (v + (j*160) + i*2); /* óδτ¿ß½∩Ѽ áñαÑß */
- *buf_ptr++ = *t++; /* τΓÑ¡¿Ñ ß¿¼ó«½á */
- *buf_ptr++ = *t; /* τΓÑ¡¿Ñ áΓα¿íπΓá */
- *(t-1) = ' '; /* «τ¿ßΓ¬á «¬¡á */
- }
- }
-
- /* ó«ßßΓá¡«ó½Ñ¡¿Ñ τáßΓ¿ φ¬αá¡á */
- void restore_video(num)
- int num;
- {
- register int i,j;
- char far *v, far *t;
- char *buf_ptr;
-
- buf_ptr=frame[num].p;
- v=vid_mem;
- t=v;
- for(i=frame[num].starty;i<frame[num].endy;i++)
- for(j=frame[num].startx;j<frame[num].endx;j++) {
- v = t;
- v += (j*160) + i*2; /* óδτ¿ß½∩Ѽ áñαÑß */
- *v++ = *buf_ptr++; /* ºá»¿ß∞ ß¿¼ó«½á */
- *v = *buf_ptr++; /* ºá»¿ß∞ áΓα¿íπΓá */
- }
- frame[num].active= 0;
- }
-
- /* «τ¿ßΓ¬á φ¬αá¡á */
- void cls()
- {
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 50 --
-
-
- union REGS r;
-
- r.h.ah=6; /* ¬«ñ »α«¬απΓ¬¿ φ¬αá¡á */
- r.h.al=0; /* ¬«ñ «τ¿ßΓ¬¿ φ¬αá¡á */
- r.h.ch=0; /* ¡áτá½∞¡á∩ ßΓ᫬á */
- r.h.cl=0; /* ¡áτá½∞¡á∩ ¬«½«¡¬á */
- r.h.dh=24;/* ¬«¡Ñτ¡á∩ ßΓ᫬á */
- r.h.dl=79;/* ¬«¡Ñτ¡á∩ ¬«½«¡¬á */
- r.h.bh=7; /* «τ¿ßΓ¬á »πßΓ«⌐ ßΓ᫬¿ */
- int86(0x10,&r,&r);
- }
-
- /* πßΓá¡«ó¬á ¬παß«αá ó x,y */
- void goto_xy(x,y)
- int x,y;
- {
- union REGS r;
-
- r.h.ah=2; /* Σπ¡¬µ¿∩ πßΓá¡«ó¬¿ ¬παß«αá */
- r.h.dl=y; /* ¬««αñ¿¡áΓá ¬«½«¡¬¿ */
- r.h.dh=x; /* ¬««αñ¿¡áΓá ßΓ᫬¿ */
- r.h.bh=0; /* ó¿ñÑ« ßΓαá¡¿µá */
- int86(0x10,&r,&r);
- }
-
- /* ºá»α«ß ΓѬπΘÑú« ó¿ñÑ« αѪ¿¼á */
- video_mode()
- {
- union REGS r;
-
- r.h.ah = 15; /* »«½πτ¿Γ∞ αѪ¿¼ */
- return int86(0x10,&r,&r) & 255;
- }
-
- is_in(s,c)
- char *s,c;
- {
- register int i;
-
- for(i=0; *s; i++)
- if(*s++ == c) return i+1;
- return 0;
- }
-
- é φΓ«¼ »α¿¼ÑαÑ, Ñß½¿ »«½∞º«óáΓѽ∞ óδíÑαÑΓ "ƒí½«¬«", Γ« «¡
- ¿½¿ «¡á íπñÑΓ ºá»α«ΦÑ¡ « µóÑΓÑ ∩í½«¬á; Ñß½¿ óδíαá¡ "èαáß¡δ⌐"
- µóÑΓ, Γ« íπñÑΓ óδßóÑτÑ¡ ß»¿ß«¬ ¬αáß¡δσ ß«αΓ«ó ∩í½«¬. àß½¿ ªÑ
- íπñÑΓ óδíαá¡ úαÑ⌐»ΣαπΓ Γ« »«½∞º«óáΓѽ∞ íπñÑΓ ºá»α«ΦÑ¡ « ªÑ½áѼ«¼
- Γ¿»Ñ. îÑ¡ε ñ½∩ óδí«αá ∩í½«¬ »«¬áºá¡« ¡á α¿ßπ¡¬Ñ.
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 51 --
-
-
- ┌───────────────────────────────────────────────────────┐
- │ óδíÑα¿ΓÑ Σαπ¬Γ: │
- │ ┌─────────┐ │
- │ │ƒí½«¬« │ │
- │ │ǻѽ∞ß¿¡ │ │
- │ │âαπΦá │ │
- │ │úÉÑ⌐»ΣαπΓ│ │
- │ │î὿¡┌───┴───┐ │
- │ │è½πí¡│èαáß¡δ⌐│ │
- │ └─────┤åѽΓδ⌐ │ │
- │ │Äαá┌───┴─────────────┐ │
- │ │çѽ│èαáß¡δ⌐ ñѽ¿¬áΓÑß│ │
- │ └---│ä*ª*«*¡*á*Γ*á*¡**│ │
- │ │üѽδ⌐ ¡á½¿ó │ │
- │ │Ç¡Γ«¡«ó¬á │ │
- │ └─────────────────┘ │
- │ │
- └───────────────────────────────────────────────────────┘
-
- ū߼«Γα¿ΓÑ ó¡¿¼áΓѽ∞¡« ¡á Σπ¡¬µ¿ε pd_driver(), ¬«Γ«αá∩
- ß½ÑñπÑΓ ºá ú½áó¡«⌐ Σπ¡¬µ¿Ñ⌐ main(). Åα¿ ¿ß»«½∞º«óá¡¿¿
- ¿Ñαáασ¿τÑ߬¿σ ¼Ñ¡ε óδ ñ«½ª¡δ ß«ºñáóáΓ∞ Σπ¡¬µ¿ε, ¬«Γ«αá∩ π»αáó½∩ÑΓ
- ß¿ßΓѼ«⌐ ¼Ñ¡ε. Äß¡«óá ßΓαáΓÑú¿¿ π»αáó½∩εΘÑ⌐ Σπ¡¬µ¿¿ ñ«½ª¡á íδΓ∞
- á¡á½«ú¿τ¡á Σπ¡¬µ¿¿ pd_driver() ¿º φΓ«ú« »α¿¼Ñαá. ìÑ ºáíδóá⌐ΓÑ,
- τΓ« φΓá »α«ßΓá∩ »α«úαá¼¼á Γ«½∞¬« ¿½½εßΓα¿απÑΓ ¬á¬ á¬Γ¿ó¿º¿α«óáΓ∞
- ¼Ñ¡ε. éáΦá αÑá½∞¡á∩ »α¿¬½áñ¡á∩ »α«úαá¼¼á íπñÑΓ «íαáíáΓδóáΓ∞
- óδíαá¡¡δÑ αѪ¿¼δ í«½ÑÑ αáºπ¼¡δ¼ «íαẫ¼. çừ¼¡¿ΓÑ, τΓ« ñ½∩
- ¿ß»«½∞º«óá¡¿∩ ¿Ñαáασ¿τÑ߬¿σ ¼Ñ¡ε ¡πª¡á ß½ÑñπεΘá∩
- »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ ñÑ⌐ßΓó¿⌐.
-
- 1. 櫺ñáΓ∞ ¼Ñ¡ε, ¿ß»«½∞ºπ∩ make_menu().
- 2. Ç¬Γ¿ó¿º¿α«óáΓ∞ ¼Ñ¡ε, ¿ß»«½∞ºπ∩ pulldown().
- 3. é«ßßΓá¡«ó¿Γ∞ φ¬αá¡, ¿ß»«½∞ºπ∩ restore_video(), »α¿ óδσ«ñÑ ¿º
- ¬áªñ«ú« ¼Ñ¡ε.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá I -- 52 --
-
-
- ä«íáó«τ¡δÑ «»µ¿¿
- -----------------------------------------------------------------
-
- Åα«µÑñπαδ ¼Ñ¡ε, αáºαáí«Γá¡¡δÑ ó φΓ«⌐ ú½áóÑ, »«ñσ«ñ∩Γ ó
- í«½∞Φ¿¡ßΓóÑ ß¿Γπᵿ⌐. Äñ¡á¬«, óδ ¼«ªÑΓÑ »« ªÑ½á¡¿ε ñ«íáó¿Γ∞
- ¡Ñ¬«Γ«αδÑ ¿º ß½ÑñπεΘ¿σ 󫺼«ª¡«ßΓÑ⌐:
-
- # éδßóÑτ¿óá¡¿Ñ ºáú«½«ó¬á ¼Ñ¡ε
- # ï¿¡Ñ⌐¡«Ñ ¼Ñ¡ε (óßÑ «»µ¿¿ ¡á «ñ¡«⌐ ßΓ᫬Ñ)
- # êß»«½∞º«óá¡¿Ñ αạδσ µóÑΓ«ó ñ½∩ αạδσ ¼Ñ¡ε
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó