Скачиваний:
24
Добавлен:
15.09.2014
Размер:
51.49 Кб
Скачать
ѓ« ў  3. Љ« ўЁ вга .

ђ §¤Ґ« 1. “Їа ў«Ґ­ЁҐ Є« ўЁ вга®©.

Љ« ўЁ вга  б®¤Ґа¦Ёв Ё­вҐ«ҐўбЄЁ© ¬ЁЄа®Їа®жҐбб®а, Є®в®ал© ў®бЇ-
аЁ­Ё¬ Ґв Є ¦¤®Ґ ­ ¦ вЁҐ ­  Є« ўЁиг Ё ўл¤ Ґв бЄ ­-Є®¤ ў Ї®ав A
¬ЁЄа®беҐ¬л Ё­вҐадҐ©б  б ЇҐаЁдҐаЁҐ© [1.1.1], а бЇ®«®¦Ґ­­®© ­ 
бЁб⥬­®© Ї« вҐ. ‘Є ­-Є®¤ нв® ®¤­®Ў ©в­®Ґ зЁб«®, ¬« ¤иЁҐ 7 ЎЁв®ў
Є®в®а®Ј® ЇаҐ¤бв ў«пов Ё¤Ґ­вЁдЁЄ жЁ®­­л© ­®¬Ґа, ЇаЁбў®Ґ­­л© Є ¦¤®©
Є« ўЁиҐ. ’ Ў«Ёж  бЄ ­-Є®¤®ў ЇаЁўҐ¤Ґ­  ў [3.3.2]. Ќ  ўбҐе ¬ иЁ­ е,
Єа®¬Ґ AT, бв аиЁ© ЎЁв Є®¤  Ј®ў®аЁв ® ⮬, Ўл«  «Ё Є« ўЁи  ­ ¦ в 
(ЎЁв = 1, Є®¤ ­ ¦ вЁп) Ё«Ё ®бў®Ў®¦¤Ґ­  (ЎЁв = 0, Є®¤ ®бў®Ў®¦¤Ґ-
­Ёп). Ќ ЇаЁ¬Ґа, 7-ЎЁв­л© бЄ ­-Є®¤ Є« ўЁиЁ B - 48, Ё«Ё 110000 ў
¤ў®Ёз­®© бЁб⥬Ґ. Љ®Ј¤  нв  Є« ўЁи  ­ ¦Ё¬ Ґвбп, в® ў Ї®ав A Ї®бл-
« Ґвбп Є®¤ 10110000,   Є®Ј¤  ҐҐ ®вЇгбвЁ«Ё - Є®¤ 00110000. ’ ЄЁ¬
®Ўа §®¬, Є ¦¤®Ґ ­ ¦ вЁҐ ­  Є« ўЁиг ¤ў ¦¤л ॣЁбваЁагҐвбп ў ¬ЁЄ-
а®б奬Ґ 8255. € Є ¦¤л© а § ¬ЁЄа®б奬  8255 ўл¤ Ґв Ї®¤вўҐа¦¤Ґ­ЁҐ
¬ЁЄа®Їа®жҐбб®аг Є« ўЁ вгал. AT а Ў®в Ґв ­Ґ¬­®Ј® Ї®-¤агЈ®¬г, Ї®бл-
« п ў ®Ў®Ёе б«гз пе ®¤Ё­ Ё в®в ¦Ґ бЄ ­-Є®¤, ­® ЇаҐ¤ў апп ҐЈ®
Є®¤®¬ F0H, Є®Ј¤  Є« ўЁи  ®вЇгбЄ Ґвбп.
Љ®Ј¤  бЄ ­-Є®¤ ўл¤ Ґвбп ў Ї®ав A, в® ўл§лў Ґвбп ЇаҐалў ­ЁҐ
Є« ўЁ вгал (INT 9). Џа®жҐбб®а ¬®¬Ґ­в «м­® ЇаҐЄа й Ґв бў®о а Ў®вг
Ё ўлЇ®«­пҐв Їа®жҐ¤гаг,  ­ «Ё§Ёагойго бЄ ­-Є®¤. Љ®Ј¤  Ї®бвгЇ Ґв
Є®¤ ®в Є« ўЁиЁ б¤ўЁЈ  Ё«Ё ЇҐаҐЄ«оз вҐ«п, в® Ё§¬Ґ­Ґ­ЁҐ бв вгб 
§ ЇЁблў Ґвбп ў Ї ¬пвм. ‚® ўбҐе ®бв «м­ле б«гз пе бЄ ­-Є®¤ ва ­б-
д®а¬ЁагҐвбп ў Є®¤ бЁ¬ў®« , ЇаЁ гб«®ўЁЁ, зв® ®­ Ї®¤ Ґвбп ЇаЁ ­ ¦ -
вЁЁ Є« ўЁиЁ (ў Їа®вЁў­®¬ б«гз Ґ, бЄ ­-Є®¤ ®вЎа блў Ґвбп). Љ®­Ґз-
­®, Їа®жҐ¤га  б­ з «  ®ЇаҐ¤Ґ«пҐв гбв ­®ўЄг Є« ўЁи б¤ўЁЈ  Ё ЇҐаҐЄ-
«оз вҐ«Ґ©, зв®Ўл Їа ўЁ«м­® Ї®«гзЁвм ўў®¤Ё¬л© Є®¤ (нв® "a" Ё«Ё
"A"?). Џ®б«Ґ нв®Ј® ўўҐ¤Ґ­­л© Є®¤ Ї®¬Ґй Ґвбп ў ЎгдҐа Є« ўЁ вгал,
Є®в®ал© пў«пҐвбп ®Ў« бвмо Ї ¬пвЁ, бЇ®б®Ў­®© § Ї®¬­Ёвм ¤® 15 ўў®-
¤Ё¬ле бЁ¬ў®«®ў, Ї®Є  Їа®Ја ¬¬  б«ЁиЄ®¬ § ­пв , зв®Ўл ®Ўа Ў®в вм
Ёе. Ќ  аЁб. 3-1 Ї®Є § ­ Їгвм, Є®в®ал© Їа®е®¤Ёв ­ ¦ вЁҐ ­  Є« ўЁиг
ЇҐаҐ¤ ⥬, Є Є Ї®Є бвм ў ‚ иг Їа®Ја ¬¬г.
€¬ҐҐвбп ¤ў  вЁЇ  Є®¤®ў бЁ¬ў®«®ў, Є®¤л ASCII Ё а биЁаҐ­­лҐ
Є®¤л. Љ®¤л ASCII - нв® Ў ©в­лҐ зЁб« , Є®в®алҐ б®®вўҐвбвўгов а б-
иЁаҐ­­®¬г ­ Ў®аг Є®¤®ў ASCII ¤«п IBM PC, Є®в®ал© ЇаЁўҐ¤Ґ­ ў
[3.3.3]. „«п IBM PC нв®в ­ Ў®а ўЄ«оз Ґв ®Ўлз­лҐ бЁ¬ў®«л ЇЁиг饩
¬ иЁ­ЄЁ,   в Є¦Ґ ап¤ бЇҐжЁ «м­ле ЎгЄў Ё бЁ¬ў®«®ў ЇбҐў¤®Ја дЁЄЁ.
ASCII Є®¤л ўЄ«оз ов в Є¦Ґ 32 гЇа ў«пойЁе Є®¤ , Є®в®алҐ ®Ўлз­®
ЁбЇ®«м§говбп ¤«п ЇҐаҐ¤ зЁ Є®¬ ­¤ ЇҐаЁдҐаЁ©­л¬ гбва®©бвў ¬,   ­Ґ
ўлў®¤пвбп Є Є бЁ¬ў®«л ­  нЄа ­Ґ; ®¤­ Є® Є ¦¤л© Ё§ ­Ёе Ё¬ҐҐв б®®в-
ўҐвбвўгойЁ© бЁ¬ў®«, Є®в®ал© ¬®¦Ґв Ўлвм ўлўҐ¤Ґ­ ­  ¤ЁбЇ«Ґ©, б
ЁбЇ®«м§®ў ­ЁҐ¬ Їаאַ©  ¤аҐб жЁЁ ¤ЁбЇ«Ґ©­®© Ї ¬пвЁ [4.3.1]. (‘ва®-
Ј® Ј®ў®ап, в®«мЄ® ЇҐаўлҐ 128 бЁ¬ў®«®ў пў«повбп ­ бв®пйЁ¬Ё бЁ¬ў®-
« ¬Ё ASCII, в Є Є Є ASCII - нв®  ЎЎаҐўЁ вга  ®в Ђ¬ҐаЁЄ ­бЄЁ©
бв ­¤ ав­л© Є®¤ ¤«п ®Ў¬Ґ­  Ё­д®а¬ жЁҐ©. Ќ® Їа®Ја ¬¬Ёбвл ®Ўлз­®
Ј®ў®апв ® Є®¤ е ASCII, зв®Ўл ®в«ЁзЁвм Ёе ®в ¤агЈЁе зЁбҐ«. Ќ ЇаЁ-
¬Ґа, "ASCII 8" ®в­®бЁвбп Є Є« ўЁиҐ "Backspace", ў в® ўаҐ¬п Є Є
"8" - нв® жЁда , Є®в®а®© ᮮ⢥вбвўгҐв ASCII 56).
‚в®а®© ­ Ў®а Є®¤®ў, а биЁаҐ­­лҐ Є®¤л, ЇаЁбў®Ґ­ Є« ўЁи ¬ Ё«Ё
Є®¬ЎЁ­ жЁп¬ Є« ўЁи, Є®в®алҐ ­Ґ Ё¬Ґо⠯।бв ў«по饣® Ёе бЁ¬ў®« 
ASCII, в ЄЁ¬ Є Є дг­ЄжЁ®­ «м­лҐ Є« ўЁиЁ Ё«Ё Є®¬ЎЁ­ жЁЁ б Є« ўЁиҐ©
Alt. ђ биЁаҐ­­лҐ Є®¤л Ё¬Ґов ¤«Ё­г 2 Ў ©в , ЇаЁзҐ¬ ЇҐаўл© Ў ©в
ўбҐЈ¤  ASCII 0. ‚в®а®© Ў ©в - ­®¬Ґа а биЁаҐ­­®Ј® Є®¤ , бЇЁб®Є
Є®в®але ЇаЁўҐ¤Ґ­ ў [3.3.5]. Ќ ЇаЁ¬Ґа, Є®¤ 0:30 ЇаҐ¤бв ў«пҐв
Alt-A. Ќ з «м­л© ­®«м Ї®§ў®«пҐв Їа®Ја ¬¬Ґ ЇаЁ­ ¤«Ґ¦Ёв «Ё ¤ ­­л©
Є®¤ ­ Ў®аг ASCII Ё«Ё а биЁаҐ­­®¬г ­ Ў®аг.
€¬ҐҐвбп ­ҐбЄ®«мЄ® Є®¬ЎЁ­ жЁ© Є« ўЁи, Є®в®алҐ ўлЇ®«­пов бЇҐ-
жЁ «м­лҐ дг­ЄжЁЁ Ё ­Ґ ЈҐ­ҐаЁагов бЄ ­-Є®¤л. ќвЁ Є®¬ЎЁ­ жЁЁ ўЄ«о-
з ов <Ctrl-Break>, <Ctrl-Alt-Del> Ё <PrtSc>, Ї«об <SysReq> ¤«п AT
Ё <Ctrl-Alt-бв५Є  ў«Ґў®, -бв५Є  ўЇа ў®, -CapsLock, -Ins> ¤«п
PCjr. ќвЁ ЁбЄ«о祭Ёп ЇаЁў®¤пв Є § а ­ҐҐ ЇаҐ¤®ЇаҐ¤Ґ«Ґ­­л¬ १г«м-
в в ¬ [3.3.2]. ‚ᥠ®бв «м­лҐ ­ ¦ вЁп Є« ўЁи ¤®«¦­л Ё­вҐаЇаҐвЁа®-
ў вмбп ‚ иҐ© Їа®Ја ¬¬®© Ё Ґб«Ё ®­Ё Ё¬Ґов бЇҐжЁ «м­®Ґ ­ §­ зҐ­ЁҐ,
бЄ ¦Ґ¬ б¤ўЁ­гвм Єгаб®а ў«Ґў®, в® ‚ и  Їа®Ја ¬¬  ¤®«¦­  ᮤҐа¦ вм
Є®¤, ®ЎҐбЇҐзЁў ойЁ© ¤®бвЁ¦Ґ­ЁҐ нв®Ј® нд䥪в .
Љ бз бвмо ®ЇҐа жЁ®­­ п бЁб⥬  ЇаҐ¤®бв ў«пҐв а §«Ёз­лҐ Їа®жҐ-
¤гал ¤«п з⥭Ёп Є®¤®ў Ё§ ЎгдҐа  Є« ўЁ вгал, ўЄ«оз п б।бвў  ¤«п
Ї®«г祭Ёп ба §г 楫®© бва®ЄЁ. Џ®бЄ®«мЄг нвЁ Їа®жҐ¤гал Ї®§ў®«пов
¤Ґ« вм Їа ЄвЁзҐбЄЁ ўбҐ, зв® ‚л ¬®¦ҐвҐ Ї®¦Ґ« вм, в® Їа ЄвЁзҐбЄЁ
ЎҐбб¬лб«Ґ­­® ЇЁб вм бў®Ё Їа®жҐ¤гал ®Ўа Ў®вЄЁ ўў®¤  б Є« ўЁ вгал Ё
Ї®н⮬㠢 ¤ ­­®© Ј« ўҐ Ё¬ҐҐвбп ®зҐ­м ¬ «® ЇаЁ¬Ґа®ў Їа®Ја ¬¬Ёа®ў -
­Ёп ­  ­Ё§Є®¬ га®ў­Ґ. Ћ¤­ Є® ᮤҐа¦Ёвбп ®Ўб㦤Ґ­ЁҐ ў®Їа®б  ® ⮬,
Є Є ЇҐаҐЇа®Ја ¬¬Ёа®ў вм ЇаҐалў ­ЁҐ Є« ўЁ вгал.
3.1.1 ЋзЁбвЄ  ЎгдҐа  Є« ўЁ вгал.

Џа®Ја ¬¬  ¤®«¦­  ®зЁбвЁвм ЎгдҐа Є« ўЁ вгал, ЇҐаҐ¤ ⥬, Є Є
ўл¤ вм § Їа®б ­  ўў®¤, ЁбЄ«оз п ⥬ б ¬л¬ Ї®бв®а®­­ЁҐ ­ ¦ вЁп
Є« ўЁи, Є®в®алҐ ¬®Јгв Є ⮬㠢६Ґ­Ё ­ Є®ЇЁвмбп ў ЎгдҐаҐ. ЃгдҐа
¬®¦Ґв ­ Є Ї«Ёў вм ¤® 15 ­ ¦ вЁ© ­  Є« ўЁиг, ­Ґ§ ўЁбЁ¬® ®в в®Ј®,
пў«повбп «Ё ®­Ё ®¤­®Ў ©в­л¬Ё Є®¤ ¬Ё ASCII Ё«Ё ¤ўгеЎ ©в­л¬Ё а биЁ-
७­л¬Ё Є®¤ ¬Ё. ’ ЄЁ¬ ®Ўа §®¬, ЎгдҐа ¤®«¦Ґ­ ®вўҐбвЁ ¤ў  Ў ©в 
Ї ¬пвЁ ¤«п Є ¦¤®Ј® ­ ¦ вЁп ­  Є« ўЁиг. „«п ®¤­®Ў ©в­ле Є®¤®ў
ЇҐаўл© Ў ©в ᮤҐа¦Ёв Є®¤ ASCII,   ўв®а®© - бЄ ­-Є®¤ Є« ўЁиЁ. „«п
а биЁаҐ­­ле Є®¤®ў ЇҐаўл© Ў ©в ᮤҐа¦Ёв ASCII 0,   ўв®а®© ­®¬Ґа
а биЁаҐ­­®Ј® Є®¤ . ќв®в Є®¤ ®Ўлз­® б®ўЇ ¤ Ґв б® бЄ ­-Є®¤®¬ Є« ўЁ-
иЁ, ­® ­Ґ ўбҐЈ¤ , Ї®бЄ®«мЄг ­ҐЄ®в®алҐ Є« ўЁиЁ ¬®Јгв Є®¬ЎЁ­Ёа®-
ў вмбп б Є« ўЁи ¬Ё б¤ўЁЈ  ¤«п ЈҐ­Ґа жЁЁ а §«Ёз­ле Є®¤®ў.
ЃгдҐа гбв஥­ Є Є жЁЄ«ЁзҐбЄ п ®зҐаҐ¤м, Є®в®аго ­ §лў ов в Є¦Ґ
ЎгдҐа®¬ FIFO (ЇҐаўл© ў®иҐ« - ЇҐаўл© г襫). Љ Є Ё «оЎ®© ЎгдҐа ®­
§ ­Ё¬ Ґв ­ҐЇаҐалў­го ®Ў« бвм  ¤аҐб®ў Ї ¬пвЁ. Ћ¤­ Є® ­Ґ Ё¬ҐҐвбп
®ЇаҐ¤Ґ«Ґ­­®© п祩ЄЁ Ї ¬пвЁ, Є®в®а п еа ­Ёв "­ з «® бва®ЄЁ" ў
ЎгдҐаҐ. ‚¬Ґбв® нв®Ј® ¤ў  гЄ § вҐ«п еа ­пв Ї®§ЁжЁЁ Ј®«®ўл Ё еў®бв 
бва®ЄЁ бЁ¬ў®«®ў, ­ е®¤п饩бп ў ЎгдҐаҐ ў ⥪гйЁ© ¬®¬Ґ­в. Ќ®ўлҐ
­ ¦ вЁп Є« ўЁи § Ї б овбп ў Ї®§ЁжЁпе, б«Ґ¤гойЁе §  еў®б⮬ (ў
Ў®«ҐҐ бв аиЁе  ¤аҐб е Ї ¬пвЁ) Ё ᮮ⢥вб⢥­­® ®Ў­®ў«пҐвбп гЄ § -
⥫м еў®бв  ЎгдҐа . Џ®б«Ґ в®Ј®, Є Є Ё§а б室®ў ­® ўбҐ ЎгдҐа­®Ґ
Їа®бва ­бвў®, ­®ўлҐ бЁ¬ў®«л Їа®¤®«¦ ов ўбв ў«пвмбп, ­ зЁ­ п б
б ¬®Ј® ­ з «  ЎгдҐа­®© ®Ў« бвЁ; Ї®н⮬㠢®§¬®¦­л бЁвг жЁЁ, Є®Ј¤ 
Ј®«®ў  бва®ЄЁ ў ЎгдҐаҐ Ё¬ҐҐв Ў®«миЁ©  ¤аҐб, 祬 еў®бв. Џ®б«Ґ в®Ј®
Є Є ЎгдҐа § Ї®«­Ґ­, ­®ўлҐ ўў®¤Ё¬лҐ бЁ¬ў®«л ЁЈ­®аЁаговбп, ЇаЁ н⮬
ЇаҐалў ­ЁҐ Є« ўЁ вгал ўл¤ Ґв Јг¤®Є зҐаҐ§ ¤Ё­ ¬ЁЄ. Ќ  аЁб. 3-2
Ї®Є § ­л ­ҐЄ®в®алҐ ў®§¬®¦­лҐ Є®­дЁЈга жЁЁ ¤ ­­ле ў ЎгдҐаҐ.
‚ в® ўаҐ¬п Є Є гЄ § вҐ«м ­  Ј®«®ўг гбв ­®ў«Ґ­ ­  ЇҐаўл© ўўҐ-
¤Ґ­­л© бЁ¬ў®«, гЄ § вҐ«м ­  еў®бв гбв ­®ў«Ґ­ ­  Ї®§ЁжЁо §  Ї®б-
«Ґ¤­Ё¬ ўўҐ¤Ґ­­л¬ бЁ¬ў®«®¬. Љ®Ј¤  ®Ў  гЄ § вҐ«п а ў­л, в® ЎгдҐа
Їгбв. —в®Ўл а §аҐиЁвм ўў®¤ 15 бЁ¬ў®«®ў вॡгҐвбп 16-п Їгбв п
Ї®§ЁжЁп, 2 Ў ©в  Є®в®а®© ўбҐЈ¤  ᮤҐа¦ в Є®¤ ў®§ўа в  Є аҐвЄЁ
(ASCII 13) Ё бЄ ­-Є®¤ Є« ўЁиЁ <Enter>, а ў­л© 28. ќв  Їгбв п
Ї®§ЁжЁп ­ҐЇ®б।б⢥­­® ЇаҐ¤иҐбвўгҐв Ј®«®ўҐ бва®ЄЁ бЁ¬ў®«®ў. 32
Ў ©в  ЎгдҐа  ­ зЁ­ овбп б  ¤аҐб  0040:001E. “Є § вҐ«Ё ­  Ј®«®ўг Ё
еў®бв а бЇ®«®¦Ґ­л Ї®  ¤аҐб ¬ 0040:001A Ё 0040:001C, ᮮ⢥вб⢥­-
­®. •®вп Ї®¤ гЄ § вҐ«Ё ®вўҐ¤Ґ­® 2 Ў ©в , ЁбЇ®«м§гҐвбп в®«мЄ®
¬« ¤иЁ© Ў ©в. ‡­ зҐ­Ёп гЄ § вҐ«Ґ© ¬Ґ­повбп ®в 30 ¤® 60, зв® б®®в-
ўҐвбвўгҐв Ї®§ЁжЁп¬ ў ®Ў« бвЁ ¤ ­­ле BIOS. „«п ®зЁбвЄЁ ЎгдҐа  ­ ¤®
Їа®бв® гбв ­®ўЁвм §­ зҐ­ЁҐ п祩ЄЁ 0040:001A а ў­л¬ §­ зҐ­Ёо п祩-
ЄЁ 0040:001C.
Ћв¬ҐвЁ¬, зв® Їа®Ја ¬¬  Ё¬ҐҐв ў®§¬®¦­®бвм ўбв ў«пвм бЁ¬ў®«л ў
ЎгдҐа, § ўҐаи п бва®Єг бЁ¬ў®«®¬ ў®§ўа в  Є аҐвЄЁ Ё ᮮ⢥вб⢥­­®
¬Ґ­пп §­ зҐ­Ёп гЄ § вҐ«Ґ©. …б«Ё нв® Їа®¤Ґ« вм Їа ўЁ«м­л¬ ®Ўа §®¬
ЇҐаҐ¤ § ўҐа襭ЁҐ¬ Їа®Ја ¬¬л, в® ЇаЁ ў®§ўа вҐ гЇа ў«Ґ­Ёп ў MS DOS
нвЁ бЁ¬ў®«л Ўг¤гв бзЁв ­л Ё ¬®¦Ґв Ўлвм  ўв®¬ вЁзҐбЄЁ § Ја㦥­ 
¤агЈ п Їа®Ја ¬¬ .

ЌЁ§ЄЁ© га®ўҐ­м.

‚ ЃҐ©бЁЄҐ ¤«п Ї®«г祭Ёп Ё Ё§¬Ґ­Ґ­Ёп §­ зҐ­Ё© гЄ § вҐ«Ґ© ЎгдҐа 
ЁбЇ®«м§говбп ®ЇҐа в®ал PEEK Ё POKE:
100 DEF SEG = &H40 'гбв ­ ў«Ёў Ґ¬ §­ зҐ­ЁҐ ᥣ¬Ґ­в 
110 POKE &H1C, PEEK(&H1A) 'ўла ў­Ёў Ґ¬ гЄ § вҐ«Ё

ќв®в ¬Ґв®¤ ­Ґ б ¬л© «гзиЁ©. ЌҐЄ®в®алҐ Їа®Ја ¬¬л ¬®Јгв ᮧ¤ ў вм
ЎгдҐа Ј¤Ґ-­ЁЎг¤м ў ¤агЈ®¬ ¬Ґб⥠Ї ¬пвЁ,   Єа®¬Ґ в®Ј®, ўбҐЈ¤ 
бгйҐбвўгҐв ў®§¬®¦­®бвм, зв® Ї®б।Ё бва®ЄЁ 110 Їа®Ё§®©¤Ґв ЇаҐал-
ў ­ЁҐ Є« ўЁ вгал, Є®в®а®Ґ Ё§¬Ґ­Ёв гЄ § вҐ«м еў®бв . Џ® нвЁ¬ ЇаЁ-
зЁ­ ¬ «гзиҐ ®бв ўЁвм гЄ § вҐ«Ё ЎгдҐа  ў Ї®Є®Ґ. ‚¬Ґбв® нв®Ј®,
«гзиҐ зЁв вм Ё§ ЎгдҐа  ¤® вҐе Ї®а, Ї®Є  ­Ґ Ўг¤Ґв ў®§ўа йҐ­ бЁ¬ў®«
ASCII 0, Ї®Є §лў ойЁ©, зв® ЎгдҐа Їгбв:

100 IF INKEY$<>"" THEN 100 'ЎҐаҐ¬ б«Ґ¤го饥 Ґб«Ё ­Ґ ­г«м

‘।­Ё© га®ўҐ­м.

”г­ЄжЁп 0C ЇаҐалў ­Ёп 21H ўлЇ®«­пҐв «оЎго Ё§ дг­ЄжЁ© ўў®¤  б
Є« ўЁ вгал 1, 6, 7, 8 Ё A (®ЇЁб ­­ле ў нв®© Ј« ўҐ), ­® ЇҐаҐ¤ нвЁ¬
зЁбвЁв ЎгдҐа Є« ўЁ вгал. Ќ ¤® Їа®бв® Ї®¬ҐбвЁвм ­®¬Ґа дг­ЄжЁЁ
ўў®¤  ў AL (ў н⮬ ЇаЁ¬ҐаҐ - 1):

;---®зЁбвЄ  ЎгдҐа  ЇҐаҐ¤ ®¦Ё¤ ­ЁҐ¬ ­ ¦ вЁп Є« ўЁиЁ
MOV AH,0CH ;ўлЎЁа Ґ¬ дг­ЄжЁо DOS 0CH
MOV AL,1 ;ўлЎЁа Ґ¬ дг­ЄжЁо ўў®¤  бЁ¬ў®« 
INT 21H ;зЁбвЁ¬ ЎгдҐа, ¦¤Ґ¬ ўў®¤ 

ЌЁ§ЄЁ© га®ўҐ­м.

Љ Є Ё ў ЇаЁ¬ҐаҐ ўлб®Є®Ј® га®ў­п ¤Ґ« Ґ¬ §­ зҐ­ЁҐ гЄ § вҐ«п ­ 
еў®бв а ў­л¬ §­ зҐ­Ёо гЄ § вҐ«п ­  Ј®«®ўг. „«п Ё§ЎҐ¦ ­Ёп ў«Ёп­Ёп
ЇаҐалў ­Ёп Є« ўЁ вгал § ЇаҐй Ґ¬ ЇаҐалў ­Ёп ­  ўаҐ¬п ¬®¤ЁдЁЄ жЁЁ
гЄ § вҐ«п:

;---ўла ў­Ёў Ґ¬ §­ зҐ­Ёп гЄ § вҐ«Ґ© ­  Ј®«®ўг Ё еў®бв
CLI ;§ ЇаҐй Ґ¬ ЇаҐалў ­Ёп
SUB AX,AX ;®Ў­г«пҐ¬ ॣЁбва
MOV ES,AX ;¤®Ў ў®з­л© ᥣ¬Ґ­в - б ­ з «  Ї ¬пвЁ
MOV AL,ES:[41AH] ;ЎҐаҐ¬ гЄ § вҐ«м ­  Ј®«®ўг ЎгдҐа 
MOV ES:[41CH],AL ;Ї®бл« Ґ¬ ҐЈ® ў гЄ § вҐ«м еў®бв 
STI ;а §аҐи Ґ¬ ЇаҐалў ­Ёп
3.1.2 Џа®ўҐаЄ  бЁ¬ў®«®ў ў ЎгдҐаҐ.

‚л ¬®¦ҐвҐ Їа®ўҐаЁвм Ўл« «Ё ўў®¤ б Є« ўЁ вгал, ­Ґ г¤ «пп бЁ¬ў®«
Ё§ ЎгдҐа  Є« ўЁ вгал. ЃгдҐа ЁбЇ®«м§гҐв ¤ў  гЄ § вҐ«п, Є®в®алҐ
®в¬Ґз ов Ј®«®ўг Ё еў®бв ®зҐаҐ¤Ё бЁ¬ў®«®ў, ­ е®¤пйЁебп ў ЎгдҐаҐ ў
⥪гйЁ© ¬®¬Ґ­в. Љ®Ј¤  §­ зҐ­Ёп нвЁе гЄ § вҐ«Ґ© а ў­л, в® ЎгдҐа
Їгбв. Ќ ¤® Їа®бв® ба ў­Ёвм ᮤҐа¦Ё¬®Ґ п祥Є Ї ¬пвЁ 0040:001A Ё
0040:001C. (ЌҐ«м§п Їа®бв® Їа®ўҐаЁвм бЁ¬ў®«, ­ е®¤пйЁ©бп ў Ј®«®ўҐ
®зҐаҐ¤Ё, Ї®бЄ®«мЄг ЎгдҐа ®аЈ ­Ё§®ў ­ ў ўЁ¤Ґ жЁЄ«ЁзҐбЄ®© ®зҐаҐ¤Ё Ё
Ї®§ЁжЁп ҐҐ Ј®«®ўл Ї®бв®п­­® ¬Ґ­пҐвбп [3.1.1].)

‚лб®ЄЁ© га®ўҐ­м.

Ќ ¤® Їа®бв® ЁбЇ®«м§®ў вм ®ЇҐа в®а PEEK ¤«п Ї®«г祭Ёп §­ зҐ­Ё©,
  § вҐ¬ ба ў­Ёвм Ёе:

100 DEF SEG = &H40 'гбв ­ ў«Ёў Ґ¬ ᥣ¬Ґ­в ­  ­ з «® Ї ¬пвЁ
110 IF PEEK(&H1A)<>PEEK(&H1C) THEN ... '...в® ЎгдҐа ­Ґ Їгбв

‘।­Ё© га®ўҐ­м.

”г­ЄжЁп 0BH ЇаҐалў ­Ёп 21H ў®§ўа й Ґв §­ зҐ­ЁҐ 0FFH ў ॣЁбваҐ
AL, Є®Ј¤  ЎгдҐа Є« ўЁ вгал ᮤҐа¦Ёв ®¤Ё­ Ё«Ё Ў®«ҐҐ бЁ¬ў®«®ў Ё
§­ зҐ­ЁҐ 0, Є®Ј¤  ЎгдҐа Їгбв:

;---Їа®ўҐаЄ  ­ «ЁзЁп бЁ¬ў®«  ў ЎгдҐаҐ
MOV AH,0BH ;­®¬Ґа дг­ЄжЁЁ
INT 21H ;ўл§лў Ґ¬ ЇаҐалў ­ЁҐ 21H
CMP AL,0FFH ;ба ў­Ёў Ґ¬ б 0FFH
JE GET_KEYSTROKE ;ЇҐаҐе®¤ Ґб«Ё ЎгдҐа ­Ґ Їгбв

”г­ЄжЁп 1 ЇаҐалў ­Ёп BIOS 16H ЇаҐ¤®бв ў«пҐв вг ¦Ґ ў®§¬®¦­®бвм,
­®, Єа®¬Ґ в®Ј®, Ї®Є §лў Ґв Є Є®© бЁ¬ў®« ў ЎгдҐаҐ. ”« Ј ­г«п (ZF)
бЎа блў Ґвбп, Ґб«Ё ЎгдҐа Їгбв, Ё гбв ­ ў«Ёў Ґвбп, Ґб«Ё ў ЎгдҐаҐ
Ё¬ҐҐвбп бЁ¬ў®«. ‚ Ї®б«Ґ¤­Ґ¬ б«гз Ґ Є®ЇЁп бЁ¬ў®« , ­ е®¤п饣®бп ў
Ј®«®ўҐ ЎгдҐа , Ї®¬Ґй Ґвбп ў AX, ­® бЁ¬ў®« Ё§ ЎгдҐа  ­Ґ г¤ «пҐвбп.
‚ AL ў®§ўа й Ґвбп Є®¤ бЁ¬ў®«  ¤«п ®¤­®Ў ©в­ле бЁ¬ў®«®ў ASCII,
Ё­ зҐ ASCII 0 ¤«п а биЁаҐ­­ле Є®¤®ў, Ё в®Ј¤  ­®¬Ґа Є®¤  - ў AH.

;---Їа®ўҐа塞 ­ «ЁзЁҐ бЁ¬ў®«  ў ЎгдҐаҐ
MOV AH,1 ;­®¬Ґа дг­ЄжЁЁ
INT 16H ;Їа®ўҐаЄ  ­ «ЁзЁп бЁ¬ў®« 
JZ NO_CHARACTER ;ЇҐаҐе®¤ Ґб«Ё ZF = 1
;---Ё¬ҐҐвбп бЁ¬ў®« - ᬮваЁ¬ Є Є®©
CMP AL,0 ;нв® а биЁаҐ­­л© Є®¤?
JE EXTENDED_CODE ;Ґб«Ё ¤ , в® ­  ¤агЈго ўҐвЄг

ЌЁ§ЄЁ© га®ўҐ­м.

Љ Є Ё ў ЇаЁ¬ҐаҐ ўлб®Є®Ј® га®ў­п Їа®бв® ба ў­Ёў Ґ¬ гЄ § вҐ«Ё:

;---ба ў­Ёў Ґ¬ гЄ § вҐ«Ё ­  Ј®«®ўг Ё еў®бв
MOV AX,0 ;гбв ­ ў«Ёў Ґ¬ ¤®Ў ў®з­л© ᥣ¬Ґ­в
MOV ES,AX ;­  ­ з «® Ї ¬пвЁ
MOV AL,ES:[41AH] ;ЎҐаҐ¬ ®¤Ё­ гЄ § вҐ«м
MOV AH,ES:[41CH] ;ЎҐаҐ¬ ¤агЈ®© гЄ § вҐ«м
CMP AH,AL ;ба ў­Ёў Ґ¬ Ёе
JNE GET_KEYSTROKE ;Ґб«Ё ­Ґа ў­л, в® Є Їа®жҐ¤гॠўў®¤ 
3.1.3 Ћ¦Ё¤ вм ўў®¤ бЁ¬ў®«  Ё ­Ґ ўлў®¤Ёвм ҐЈ® ­  нЄа ­.

ЋЎлз­® ўў®¤Ё¬лҐ бЁ¬ў®«л ўлў®¤пвбп ­  нЄа ­, зв®Ўл Ўл«® ўЁ¤­®,
зв® ­ ЇҐз в ­®. Ќ® Ё­®Ј¤   ўв®¬ вЁзҐбЄ®Ґ не® ­  нЄа ­Ґ ­Ґ¦Ґ« -
⥫쭮. Ќ ЇаЁ¬Ґа, ўлЎ®а Їг­Єв  ¬Ґ­о Ї® ­ ¦ вЁо Є« ўЁиЁ. €­®Ј¤ 
­ ¤® б­ з «  Їа®ўҐаЁвм ўў®¤Ё¬лҐ бЁ¬ў®«л ­  ®иЁЎЄг ЇҐаҐ¤ ўлў®¤®¬
­  нЄа ­. ‚ з бв­®бвЁ, «оЎ п Їа®Ја ¬¬ , ®Ўа Ў влў ой п а биЁаҐ­-
­лҐ Є®¤л, ¤®«¦­  Ё§ЎҐЈ вм  ўв®¬ вЁзҐбЄ®Ј® не , в Є Є Є ЇаЁ н⮬
ЇҐаўл© Ў ©в нвЁе Є®¤®ў (ASCII 0) Ўг¤Ґв ўлў®¤Ёвмбп ­  нЄа ­,
ўбв ў«пп Їа®ЎҐ«л ¬Ґ¦¤г бЁ¬ў®« ¬Ё.

‚лб®ЄЁ© га®ўҐ­м.

”г­ЄжЁп ЃҐ©бЁЄ  INKEY$ ­Ґ ¤ Ґв не® ­  вҐа¬Ё­ «. Ћ­  ў®§ўа й Ґв
бва®Єг ¤«Ё­®© 1 Ў ©в ¤«п бЁ¬ў®«®ў ASCII Ё ¤«Ё­®© 2 Ў ©в  ¤«п
а биЁаҐ­­ле Є®¤®ў. INKEY$ ­Ґ ®¦Ё¤ Ґв ­ ¦ вЁп Є« ўЁиЁ, ¤® вҐе Ї®а,
Ї®Є  ®­  ­Ґ Ї®¬ҐйҐ­  ў жЁЄ«, ў Є®в®а®¬ ®¦Ё¤ Ґвбп ­ ¦ вЁҐ Є« ўЁиЁ.
–ЁЄ« а Ў®в Ґв, ®Ўа й пбм Є INKEY$,   § вҐ¬ ЇаЁбў Ёў п ў®§ўа й Ґ-
¬го Ё¬ бва®Єг ЇҐаҐ¬Ґ­­®©, ў ¤ ­­®¬ б«гз Ґ C$. …б«Ё Є« ўЁи  ­Ґ
Ўл«  ­ ¦ в , в® INKEY$ ў®§ўа й Ґв ­г«Ґўго бва®Єг, в.Ґ. бва®Єг
¤«Ё­®© ­®«м бЁ¬ў®«®ў, Є®в®а п ®Ў®§­ з Ґвбп ¤ўг¬п §­ Є ¬Ё Є ўл祪,
¬Ґ¦¤г Є®в®ал¬Ё ­ЁзҐЈ® ­Ґв (""). „® вҐе Ї®а Ї®Є  INKEY$ ў®§ўа й Ґв
"" - жЁЄ« Ї®ўв®апҐвбп: 100 C$=INKEY$:IF C$="" THEN 100.
‚ ­Ё¦ҐЇаЁўҐ¤Ґ­­®¬ ЇаЁ¬ҐаҐ ЇаҐ¤Ї®« Ј Ґвбп, зв® ўў®¤Ё¬лҐ бЁ¬ў®«л
ўлЎЁа ов ®¤­г Ё§ ў®§¬®¦­®б⥩ ¬Ґ­о Ё Є ¦¤л© ўлЎ®а ЇаЁў®¤Ёв Є
ўлЇ®«­Ґ­Ёо ®ЇаҐ¤Ґ«Ґ­­®© Їа®жҐ¤гал Їа®Ја ¬¬л. ‚лЎ®а ¬®¦Ґв Ўлвм
ᤥ« ­ §  бзҐв ­ ¦ вЁп Є« ўЁи A, B, C ... (¤ ў п 1-Ў ©в­лҐ Є®¤л
ASCII) Ё«Ё Alt-A, Alt-B, Alt-C ... (¤ ў п 2-Ў ©в­лҐ а биЁаҐ­­лҐ
Є®¤л). „«п Ёе а бЇ®§­ ў ­Ёп ЁбЇ®«м§гҐвбп дг­ЄжЁп LEN, Є®в®а п
®ЇаҐ¤Ґ«пҐв Ўл«  «Ё бва®Є  ¤«Ё­®© ў 1 Ё«Ё 2 Ў ©в . ‚ б«гз Ґ Є®¤®ў
ASCII ­ Ў®а ®ЇҐа в®а®ў IF...THEN ба §г ­ зЁ­ Ґв Їа®ўҐапвм Є Є п
Є« ўЁи  Ўл«  ­ ¦ в , ®вбл« п Їа®Ја ¬¬г ­  ᮮ⢥вбвўгойго Їа®жҐ-
¤гаг. ‚ б«гз Ґ 2-Ў ©в­ле Є®¤®ў гЇа ў«Ґ­ЁҐ ЇҐаҐ¤ Ґвбп ®в¤Ґ«м­®©
Їа®жҐ¤гаҐ. ‚ нв®© Їа®жҐ¤гॠдг­ЄжЁп RIGHT$ гЎЁа Ґв «Ґўл© бЁ¬ў®«,
Є®в®ал© Їа®бв® а ўҐ­ ­г«о Ё в®«мЄ® ®в¬Ґз Ґв а биЁаҐ­­л© Є®¤.
‡ вҐ¬ ЁбЇ®«м§гҐвбп дг­ЄжЁп ASC ¤«п ЇаҐ®Ўа §®ў ­Ёп бва®ЄЁ Ё§ бЁ¬-
ў®«м­®© д®а¬л ў зЁб«®ўго. €, ­ Є®­Ґж, ўв®а п бҐаЁп ®ЇҐа в®а®ў
IF...THEN Їа®ўҐапҐв Ї®«г稢襥бп зЁб«® ­  ᮮ⢥вбвўгойЁҐ Alt-A,
Alt-B Ё в.¤.

100 C$ = INKEY$:IF C$="" THEN 100 '®¦Ё¤ Ґ¬ ­ ¦ вЁп Є« ўЁиЁ
110 IF LEN(C$)=2 THEN 500 'Ґб«Ё а би. Є®¤ - ­  500
120 IF C$="a" OR C$="A" THEN GOSUB 1100 'нв® A?
130 IF C$="b" OR C$="B" THEN GOSUB 1200 'нв® B?
140 IF C$="c" OR C$="C" THEN GOSUB 1300 'нв® C?
.
.
500 C$=RIGHT$(C$,1) 'Ї®«гз Ґ¬ ўв®а®© Ў ©в а би. Є®¤ 
510 C=ASC(C$) 'ЇаҐ®Ўа §гҐ¬ ҐЈ® ў зЁб«®
520 IF C=30 THEN GOSUB 2100 'нв® Alt-A?
530 IF C=48 THEN GOSUB 2200 'Alt-B?
540 IF C=46 THEN GOSUB 2300 'Alt-C?
Ћв¬ҐвЁ¬, зв® ў бва®ЄҐ 120 (Ё Ї®б«Ґ¤гойЁе) ¬®¦­® в Є¦Ґ ЁбЇ®«м§®-
ў вм зЁб«®ўлҐ §­ зҐ­Ёп Є®¤®ў ASCII:

120 IF C=97 OR C=65 THEN GOSUB 1100

Љ®­Ґз­® ­ ¤® б­ з «  ЇаҐ®Ўа §®ў вм C$ ў д®а¬г 楫®Ј® зЁб« , Є Є
н⮠ᤥ« ­® ў бва®ЄҐ 510. ‚ Їа®Ја ¬¬ е, ў Є®в®але вॡгҐвбп ¤«Ё­-
­ п 楯®зЄ  в ЄЁе ®ЇҐа в®а®ў, ¬®¦­® бнЄ®­®¬Ёвм ¬Ґбв®, Ё§¬Ґ­пп C
в ЄЁ¬ ®Ўа §®¬, зв®Ўл ®­  ўбҐЈ¤  ᮮ⢥вбвў®ў «  «ЁЎ® ўҐае­Ґ¬г,
«ЁЎ® ­Ё¦­Ґ¬г ॣЁбваг. ‘­ з «  ­г¦­® в®«мЄ® Їа®ўҐаЁвм, зв® Є®¤
ASCII C$ ­ е®¤Ёвбп ў Їа ўЁ«м­®¬ ¤Ё Ї §®­Ґ. ‡ вҐ¬ гбв ­®ўЁвм,
¬Ґ­миҐ «Ё нв®в Є®¤ 91, в®Ј¤  ¬л Ё¬ҐҐ¬ ¤Ґ«® б бЁ¬ў®«®¬ ўҐае­ҐЈ®
ॣЁбва . …б«Ё нв® в Є, в® ­ ¤® ¤«п ЇҐаҐў®¤  ў ­Ё¦­Ё© ॣЁбва
¤®Ў ўЁвм 32. ‚ Їа®вЁў­®¬ б«гз Ґ, ®бв ўЁвм ўбҐ Є Є Ґбвм. Џ®б«Ґ
нв®Ј® Ўг¤Ґв ¤®бв в®з­® Ў®«ҐҐ Є®а®вЄ®Ј® ®ЇҐа в®а , в Є®Ј® Є Є IF
C=97 THEN ... ‚®в Є®¤ нв®© Їа®жҐ¤гал:

500 C=ASC(C$) 'Ї®«гз Ґ¬ ASCII Є®¤ бЁ¬ў®« 
510 IF NOT ((C>64 AND C<91)OR(C>96 AND C<123)) THEN ...
520 IF C<91 THEN C=C+32 'ЇаЁў®¤Ё¬ ўбҐ Є ­Ё¦­Ґ¬г ॣЁбваг
530 IF C=97 THEN ... '... ­ зЁ­ Ґ¬ Їа®ўҐаЄг §­ зҐ­Ё©

‘।­Ё© га®ўҐ­м.

”г­ЄжЁЁ 7 Ё 8 ЇаҐалў ­Ёп 21H ®¦Ё¤ ов ўў®¤  бЁ¬ў®« , Ґб«Ё ЎгдҐа
Є« ўЁ вгал Їгбв,   Є®Ј¤  ®­ Ї®пў«пҐвбп, в® ­Ґ ўлў®¤Ёвбп ­  нЄа ­.
ЏаЁ н⮬ дг­ЄжЁп 8 ®ЇаҐ¤Ґ«пҐв Ctrl-Break (Ё Ё­ЁжЁЁагҐв Їа®жҐ¤гаг
®Ўа Ў®вЄЁ Ctrl-Break[3.2.8]),   дг­ЄжЁп 7 ­Ґ ॠЈЁагҐв ­  ­ҐЈ®. ‚
®Ў®Ёе б«гз пе бЁ¬ў®« ў®§ўа й Ґвбп ў AL. Љ®Ј¤  AL ᮤҐа¦Ёв ASCII
0, в® Ї®«г祭 а биЁаҐ­­л© Є®¤. Џ®ўв®аЁвҐ ЇаҐалў ­ЁҐ Ё ў AL Ї®п-
ўЁвбп ўв®а®© Ў ©в а биЁаҐ­­®Ј® Є®¤ .

;---Ї®«гз Ґ¬ ўўҐ¤Ґ­­л© бЁ¬ў®«
MOV AH,7 ;­®¬Ґа дг­ЄжЁЁ
INT 21H ;®¦Ё¤ Ґ¬ ўў®¤ бЁ¬ў®« 
CMP AL,0 ;Їа®ўҐаЄ  ­  а биЁаҐ­­л© Є®¤
JE EXTENDED_CODE ;Ґб«Ё ¤ , в® ­  ®б®Ўго Їа®жҐ¤гаг
. ;Ё­ зҐ, Є®¤ бЁ¬ў®«  ў AL

;---Їа®жҐ¤га  ®Ўа Ў®вЄЁ а биЁаҐ­­ле Є®¤®ў
EXTENDED_CODE: INT 21H ;ЎҐаҐ¬ ўв®а®© Ў ©в Є®¤ 
CMP AL,75 ;Їа®ўҐа塞 ­  "бв५Єг-ў«Ґў®"
JNE C_R ;Ґб«Ё ­Ґв, в® б«Ґ¤. Їа®ўҐаЄ 
JMP CURSOR_LEFT;Ґб«Ё ¤ , в® ­  Їа®жҐ¤гаг
C_R: CMP AL,77 ;ба ў­Ёў Ґ¬ ¤ «миҐ Ё в.¤.

BIOS ®ЎҐбЇҐзЁў Ґв Їа®жҐ¤гаг, Є®в®а п ЇаҐ¤®бв ў«пҐв ⥠¦Ґ ў®§-
¬®¦­®бвЁ, зв® Ё дг­ЄжЁЁ MS DOS. Џ®¬ҐбвЁвҐ 0 ў AH Ё ўл§®ўЁвҐ ЇаҐ-
алў ­ЁҐ 16H. ”г­ЄжЁп ®¦Ё¤ Ґв ўў®¤  бЁ¬ў®«  Ё ў®§ўа й Ґв ҐЈ® ў AL.
‚ н⮬ б«гз Ґ Ё а биЁаҐ­­лҐ Є®¤л ®Ўа Ў влў овбп §  ®¤­® ЇаҐалў -
­ЁҐ. …б«Ё ў AL ᮤҐа¦Ёвбп 0, в® ў AH Ўг¤Ґв ᮤҐа¦ вмбп ­®¬Ґа
а биЁаҐ­­®Ј® Є®¤ . ЏаЁ нв® ­Ґ ®Ўа Ў влў Ґвбп Ctrl-Break.
;---¦¤Ґ¬ ­ ¦ вЁп Є« ўЁиЁ
MOV AH,0 ;­®¬Ґа дг­ЄжЁЁ ®¦Ё¤ ­Ёп ўў®¤ 
INT 16H ;Ї®«гз Ґ¬ ўўҐ¤Ґ­­л© Є®¤
CMP AL,0 ;Їа®ўҐаЄ  ­  а биЁаҐ­­л© Є®¤
JE EXTENDED_CODE ;Ґб«Ё ¤ , в® ­  бЇҐж. Їа®жҐ¤гаг
. ;Ё­ зҐ бЁ¬ў®« ў AL

;---Їа®жҐ¤га  ®Ўа Ў®вЄЁ а биЁаҐ­­®Ј® Є®¤ 
EXTENDED_CODE: CMP AH,75 ;ЎҐаҐ¬ а биЁаҐ­­л© Є®¤ Ё§ AH
;Ё в.¤.
3.1.4 Ћ¦Ё¤ ­ЁҐ ­ ¦ вЁп Є« ўЁиЁ Ё не® ­  нЄа ­.

ЏаЁ ўў®¤Ґ ¤ ­­ле Ё ⥪бв , не® ўў®¤Ё¬ле бЁ¬ў®«®ў ®Ўлз­® ўл-
¤ Ґвбп ­  нЄа ­. ЏаЁ н⮬ в ЄЁҐ бЁ¬ў®«л Є Є ў®§ўа в Є аҐвЄЁ Ё«Ё
§ Ў®© ЇҐаҐў®¤пвбп ў ᮮ⢥вбвўгойЁҐ ЇҐаҐ¬ҐйҐ­Ёп Єгаб®а ,   ­Ґ
Ё§®Ўа ¦ овбп Є Є ASCII бЁ¬ў®«л ¤«п нвЁе Є®¤®ў. ‚л¤ з  не  Їа®Ёб-
室Ёв ў в®© Ї®§ЁжЁЁ, Ј¤Ґ ЇаҐ¤ў аЁвҐ«м­® Ўл« гбв ­®ў«Ґ­ Єгаб®а Ё
⥪бв  ўв®¬ вЁзҐбЄЁ ЇҐаҐ­®бЁвбп ­  б«Ґ¤гойго бва®Єг ЇаЁ ¤®бвЁ¦Ґ-
­ЁЁ Є®­ж  ⥪г饩. ЏҐаҐ­®б ­  б«Ґ¤гойго бва®Єг ­Ґ вॡгҐв бЇҐ-
жЁ «м­®Ј® Є®¤ , Ї®бЄ®«мЄг бЁ¬ў®«л Ї®¬Ґй овбп ў б«Ґ¤гойго Ї®§ЁжЁо
ЎгдҐа­®© Ї ¬пвЁ ¤ЁбЇ«Ґп, Є®в®а п ЇаҐ¤бв ў«пҐв Ё§ бҐЎп ®¤­г ¤«Ё­-
­го бва®Єг, ўЄ«оз ойго ўбҐ 25 бва®Є ¤ЁбЇ«Ґп.

‚лб®ЄЁ© га®ўҐ­м.

‚ ЃҐ©бЁЄҐ ­ ¤® ЇҐаҐеў вЁвм ўўҐ¤Ґ­­л© бЁ¬ў®« б Ї®¬®ймо ®ЇҐа в®-
а  INKEY$, Є Є Ї®Є § ­® ў [3.1.3]. ‡ вҐ¬ ҐЈ® ­ ¤® ўлўҐбвЁ ­ 
нЄа ­, ЇаҐ¦¤Ґ 祬 Ї®«гз вм в ЄЁ¬ ¦Ґ бЇ®б®Ў®¬ б«Ґ¤гойЁ©. „«п ўлў®-
¤  ¬®¦­® ЁбЇ®«м§®ў вм «ЁЎ® ®ЇҐа в®а PRINT, «ЁЎ® ®ЇҐа в®а®¬ POKE
Їаאַ Ї®¬ҐбвЁвм бЁ¬ў®« ў ўЁ¤Ґ®ЎгдҐа, ЁбЇ®«м§гп ®в®Ўа ¦Ґ­ЁҐ ў
Ї ¬пвм, Є Є Ї®Є § ­® ў [4.3.1] (ЎгдҐа ­ зЁ­ Ґвбп б ᥣ¬Ґ­в  Ї ¬п-
вЁ &HB000 ¤«п ¬®­®е஬­®Ј®  ¤ ЇвҐа  Ё б &HB800 - ¤«п 梥⭮Ј®
 ¤ ЇвҐа ). ЏаЁ ЁбЇ®«м§®ў ­ЁЁ PRINT ­Ґ § Ўг¤м⥠Ї®бв ўЁвм ў Є®­жҐ
¤ў®Ґв®зЁҐ, Ё­ зҐ Ўг¤Ґв  ўв®¬ вЁзҐбЄЁ ¤®Ў ў«Ґ­ Є®¤ ў®§ўа в  Є аҐв-
ЄЁ. ЌЁ¦Ґ ЇаЁўҐ¤Ґ­л ЇаЁ¬Ґал ЁбЇ®«м§®ў ­Ёп ®Ў®Ёе ¬Ґв®¤®ў. ЏаЁ н⮬
­Ґ Їа®ў®¤Ёвбп ­ЁЄ Є®Ј®  ­ «Ё§  ­  гЇа ў«пойЁҐ бЁ¬ў®«л. ‚ў®¤Ё¬лҐ
бЁ¬ў®«л д®а¬Ёаговбп ў ўЁ¤Ґ бва®ЄЁ ¤ ­­ле ў ЇҐаҐ¬Ґ­­®© KEYSTROKE$.

100 ' ¬Ґв®¤ ЁбЇ®«м§гойЁ© PRINT
110 LOCATE 10,40 'гбв ­®ўЄ  Єгаб®а  ў Ї®§ЁжЁо 10,40
120 KEYSTROKE$="" '®зЁбвЄ  ЇҐаҐ¬Ґ­­®©
130 C$=INKEY$:IF C$="" THEN 130 '®¦Ё¤ ­ЁҐ ўў®¤  бЁ¬ў®« 
140 KEYSTROKE$=KEYSTROKE$ + C$ '§ ЇЁбм ҐЈ® ў ЇҐаҐ¬Ґ­­го
150 PRINT C$; 'ЇҐз вм бЁ¬ў®« 
160 GOTO 130 'ЇаЁҐ¬ б«Ґ¤го饣® бЁ¬ў®« 

100 ' ¬Ґв®¤ ЁбЇ®«м§гойЁ© POKE
110 DEF SEG = &HB000 'гбв ­®ўЄ  ᥣ¬Ґ­в  ­  ўЁ¤Ґ®ЎгдҐа
120 POINTER = 1678 'гЄ § вҐ«м ­  Ї®§ЁжЁо 10,40
130 KEYSTROKE$="" '®зЁбвЄ  ЇҐаҐ¬Ґ­­®©
140 C$=INKEY$:IF C$="" THEN 140 '®¦Ё¤ ­ЁҐ ўў®¤  бЁ¬ў®« 
150 KEYSTROKE$=KEYSTROKE$ + C$ '§ ЇЁбм ҐЈ® ў ЇҐаҐ¬Ґ­­го
160 POKE POINTER,ASC(C$) 'Ї®¬ҐйҐ­ЁҐ бЁ¬ў®«  ў ўЁ¤Ґ®ЎгдҐа
170 POINTER=POINTER + 2 'б¤ўЁЈ гЄ § вҐ«п ­  б«Ґ¤гойЁ© бЁ¬ў®«
180 GOTO 140 'ЇаЁҐ¬ б«Ґ¤го饣® бЁ¬ў®« 

‘।­Ё© га®ўҐ­м.

”г­ЄжЁп 1 ЇаҐалў ­Ёп 21H ®¦Ё¤ Ґв ўў®¤  бЁ¬ў®« , Ґб«Ё ЎгдҐа
Є« ўЁ вгал Їгбв,   § вҐ¬ ўлў®¤Ёв ҐЈ® ­  нЄа ­ ў ⥪гйго Ї®§ЁжЁо
Єгаб®а . ЋЎа Ў влў Ґвбп Ctrl-Break, Ї®н⮬㠬®¦Ґв ўлЇ®«­пвмбп
Їа®жҐ¤га  ®Ўа Ў®вЄЁ Ctrl-Break [3.2.8]. ‚ўҐ¤Ґ­­л© бЁ¬ў®« ў®§ўа -
й Ґвбп ў AL. ЏаЁ ўў®¤Ґ а биЁаҐ­­®Ј® Є®¤  AL ᮤҐа¦Ёв ASCII 0. „«п
Ї®«г祭Ёп ў AL ўв®а®Ј® Ў ©в  а биЁаҐ­­®Ј® Є®¤  ­ ¤® Ї®ўв®аЁвм
ЇаҐалў ­ЁҐ.
;---Ї®«г祭ЁҐ ўўҐ¤Ґ­­®Ј® бЁ¬ў®« 
MOV AH,1 ;­®¬Ґа дг­ЄжЁЁ
INT 21H ;®¦Ё¤ Ґ¬ ­ ¦ вЁп Є« ўЁиЁ
CMP AL,0 ;а биЁаҐ­­л© Є®¤?
JE EXTENDED_CODE ;Ґб«Ё ¤ , в® ­  бЇҐж. Їа®жҐ¤гаг
. ;Ё­ зҐ бЁ¬ў®« ­ е®¤Ёвбп ў AL

;---Їа®жҐ¤га  ®Ўа Ў®вЄЁ а биЁаҐ­­ле Є®¤®ў
INT 21H ;Ї®«гз Ґ¬ ў AL ­®¬Ґа Є®¤ 
CMP AL,77 ;Їа®ўҐаЄ  ­  "Єгаб®а-ўЇа ў®"
JNE C_R ;Ґб«Ё ­Ґв, Їа®ўҐаЄ  б«Ґ¤го饣®
JMP CURSOR_RIGHT ;Ґб«Ё ¤ , в® ­  Їа®жҐ¤гаг
C_R: CMP AL,75 ;... Ё в.¤.

ќв  дг­ЄжЁп Ї®«­®бвмо ЁЈ­®аЁагҐв Є« ўЁиг <ESC>. Љ« ўЁи  в Ўг-
«пжЁЁ Ё­вҐаЇаҐвЁагҐвбп ­®а¬ «м­®. Љ« ўЁи  § Ў®© б¤ўЁЈ Ґв Єгаб®а
­  ®¤­г Ї®§ЁжЁо ў«Ґў®, ­® бЁ¬ў®«, ­ е®¤пйЁ©бп ў нв®© Ї®§ЁжЁЁ ­Ґ
бвЁа Ґвбп. Љ« ўЁи  <Enter> ўл§лў Ґв ЇҐаҐ¬ҐйҐ­ЁҐ Єгаб®а  ў ЇҐаўго
Ї®§ЁжЁо ⥪г饩 бва®ЄЁ (­Ґв  ўв®¬ вЁзҐбЄ®Ј® ЇҐаҐў®¤  бва®ЄЁ).
3.1.5 ЏаЁҐ¬ бЁ¬ў®«  ЎҐ§ ®¦Ё¤ ­Ёп.

ЌҐЄ®в®алҐ Їа®Ја ¬¬л, а Ў®в ойЁҐ ў ॠ«м­®¬ ўаҐ¬Ґ­Ё ­Ґ ¬®Јгв
®бв ­ ў«Ёў вмбп Ё ¦¤ вм ­ ¦ вЁп Є« ўЁиЁ; ®­Ё ЇаЁ­Ё¬ ов бЁ¬ў®« Ё§
ЎгдҐа  Є« ўЁ вгал в®«мЄ® ў ⥠¬®¬Ґ­вл, Є®Ј¤  н⮠㤮Ў­® ¤«п Їа®Ј-
а ¬¬л. Ќ ЇаЁ¬Ґа, ЎҐ§¤Ґ©бвўЁҐ Їа®жҐбб®а  ў® ўаҐ¬п ®¦Ё¤ ­Ёп ўў®¤  б
Є« ўЁ вгал ®бв ­®ўЁ«® Ўл ўбҐ ¤Ґ©бвўЁп ­  нЄа ­Ґ ў ЁЈа®ў®© Їа®Ј-
а ¬¬Ґ. Ќ Ї®¬­Ё¬, зв® «ҐЈЄ® Їа®ўҐаЁвм Їгбв Ё«Ё ­Ґв ЎгдҐа Є« ўЁ вг-
ал, ЁбЇ®«м§гп ¬Ґв®¤л, ®ЇЁб ­­лҐ ў [3.1.2].

‚лб®ЄЁ© га®ўҐ­м.

Ќ ¤® Їа®бв® ЁбЇ®«м§®ў вм INKEY$, ­Ґ Ї®¬Ґй п ҐЈ® ў жЁЄ«:

100 C$=INKEY$ 'Ї®«г祭ЁҐ бЁ¬ў®« 
110 IF C$ <> "" THEN...'Ґб«Ё бЁ¬ў®« ўўҐ¤Ґ­, в® ...
120 ... 'Ё­ зҐ ­Ґв бЁ¬ў®«  ў ЎгдҐаҐ

‘।­Ё© га®ўҐ­м.

”г­ЄжЁп 6 ЇаҐалў ­Ёп 21H - нв® Ґ¤Ё­б⢥­­л© бЇ®б®Ў Ї®«гзЁвм
ўўҐ¤Ґ­­л© бЁ¬ў®« ЎҐ§ ®¦Ё¤ ­Ёп. ќв  дг­ЄжЁп ­Ґ ¤ Ґв не  ­  нЄа ­ Ё
­Ґ а бЇ®§­ Ґв Ctrl-Break. ЏҐаҐ¤ ўл§®ў®¬ ЇаҐалў ­Ёп ў DL ¤®«¦­®
Ўлвм Ї®¬ҐйҐ­® 0FFH. ‚ Їа®вЁў­®¬ б«гз Ґ дг­ЄжЁп 6 б«г¦Ёв б®ўҐа襭-
­® Їа®вЁў®Ї®«®¦­®© 楫Ё - ЇҐз в Ґв ў ⥪г饩 Ї®§ЁжЁЁ Єгаб®а 
бЁ¬ў®«, ­ е®¤пйЁ©бп ў DL. ”« Ј ­г«п гбв ­ ў«Ёў Ґвбп ў 1, Ґб«Ё
ЎгдҐа Є« ўЁ вгал Їгбв. …б«Ё бЁ¬ў®« ЇаЁ­пв, в® ®­ Ї®¬Ґй Ґвбп ў AL.
Љ®¤ ASCII 0 Ё­¤ЁжЁагҐв а биЁаҐ­­л© Є®¤ Ё ¤«п Ї®«г祭Ёп ­®¬Ґа 
Є®¤  ЇаҐалў ­ЁҐ ¤®«¦­® Ўлвм Ї®ўв®аҐ­®.

MOV AH,6 ;­®¬Ґа дг­ЄжЁЁ DOS
MOV DL,0FFH ;§ Їа®б ўў®¤  б Є« ўЁ вгал
INT 21H ;Ї®«г祭ЁҐ бЁ¬ў®« 
JZ NO_CHAR ;ЇҐаҐе®¤ Ґб«Ё ­Ґв бЁ¬ў®« 
CMP AL,0 ;Їа®ўҐаЄ  ­  а биЁаҐ­­л© Є®¤
JE EXTENDED_CODE ;Ґб«Ё ¤ , в® ­  бЇҐж. Їа®жҐ¤гаг
... ;Ё­ зҐ ў AL Є®¤ ASCII

EXTENDED_CODE: INT 21H ;Ї®«гз Ґ¬ ­®¬Ґа а биЁаҐ­­®Ј® Є®¤ 
... ;­®¬Ґа Є®¤  ў AL
3.1.6 Џ®«г祭ЁҐ бва®ЄЁ бЁ¬ў®«®ў.

€ ЃҐ©бЁЄ Ё MS DOS ЇаҐ¤®бв ў«пов Їа®жҐ¤гал ¤«п ЇаЁҐ¬  бва®ЄЁ
бЁ¬ў®«®ў. Ћ­Ё  ўв®¬ вЁзҐбЄЁ Ї®ўв®апов Їа®жҐ¤гал ўў®¤  ®¤­®Ј®
бЁ¬ў®« , ®ЇЁб ­­лҐ ў ЇаҐ¤л¤гйЁе а §¤Ґ« е, ®¦Ё¤ п ўў®¤  ў®§ўа в 
Є аҐвЄЁ, бЁЈ­ «Ё§Ёаго饣® ®Є®­з ­ЁҐ бва®ЄЁ. Љ®­Ґз­® ¤®«¦­  Ўлвм
®вўҐ¤Ґ­  Ї ¬пвм, ¤®бв в®з­ п ¤«п ЇаЁҐ¬  ўбҐе бЁ¬ў®«®ў бва®ЄЁ, Ё
¤®«¦­  § ЇЁблў вмбп ¤«Ё­  Є ¦¤®© бва®ЄЁ ¤«п в®Ј®, зв®Ўл ®в¤Ґ«Ёвм
®¤­г бва®Єг ®в ¤агЈ®©. ќв® ¤Ґ« Ґвбп б Ї®¬®ймо ¤ҐбЄаЁЇв®а®ў бва®-
ЄЁ, Є®в®алҐ б®бв®пв Ё§ ®¤­®Ј® Ё«Ё Ў®«ҐҐ Ў ©в®ў, ᮤҐа¦ йЁе  ¤аҐб
Ё/Ё«Ё ¤«Ё­г бва®ЄЁ. ‚ ЃҐ©бЁЄҐ ЇҐаўлҐ ¤ў  Ў ©в  ¤ҐбЄаЁЇв®а  бва®ЄЁ
ᮤҐа¦ в  ¤аҐб бва®ЄЁ,   б ¬Ё ¤ҐбЄаЁЇв®ал еа ­пвбп ў ¬ ббЁўҐ
®в¤Ґ«м­® ®в бва®Є. „«Ё­  бва®ЄЁ еа ­Ёвбп ў ваҐв쥬 Ў ©вҐ 3-Ў ©в-
­®Ј® ¤ҐбЄаЁЇв®а . ‘ ¤агЈ®© бв®а®­л, DOS еа ­Ёв ¤«Ё­г бва®ЄЁ Їаאַ
ў ­ з «Ґ б ¬®© бва®ЄЁ Ё ¤«п Їа®Ја ¬¬л ¤®бв в®з­® §­ вм Ї®«®¦Ґ­ЁҐ
бва®ЄЁ ў Ї ¬пвЁ.

‚лб®ЄЁ© га®ўҐ­м.

ЃҐ©бЁЄ ¬®¦Ґв ЇаЁ­Ё¬ вм б Ё ЎҐ§  ўв®¬ вЁзҐбЄ®Ј® не  ­  нЄа ­Ґ.
Ѓ®«ҐҐ Їа®бв® ¤Ґ« Ґвбп ўў®¤ б н宬, в Є Є Є ®­ ўлЇ®«­пҐвбп
ўбв஥­­®© дг­ЄжЁҐ© ўў®¤  бва®ЄЁ INPUT. INPUT  ўв®¬ вЁзҐбЄЁ б®ЎЁ-
а Ґв ўў®¤Ё¬лҐ бЁ¬ў®«л, ўлў®¤п Ёе ­  нЄа ­ Ї® ¬ҐаҐ Ї®«г祭Ёп. ЏаЁ
­ ¦ вЁЁ Є« ўЁиЁ <Enter> ўў®¤ § ўҐаи Ґвбп Ё §­ зҐ­ЁҐ бва®ЄЁ ЇаЁб-
ў Ёў Ґвбп гЄ § ­­®© ЇҐаҐ¬Ґ­­®© (Ї®бл« Ґ¬л© Є« ўЁиҐ© <Enter> Є®¤
ASCII 13 ­Ґ ¤®Ў ў«пҐвбп Є бва®ЄҐ). INPUT ¤®ЇгбЄ Ґв ў®§¬®¦­®бвм
। ЄвЁа®ў ­Ёп бва®ЄЁ, ЇаҐ¤®бв ў«пҐ¬го DOS, Ї®н⮬㠮ЇҐз вЄЁ
¬®Јгв Ўлвм ЁбЇа ў«Ґ­л ЇҐаҐ¤ ўў®¤®¬ бва®ЄЁ. INPUT ЇаЁ­Ё¬ Ґв зЁб« 
ў ўўЁ¤Ґ бва®ЄЁ Ё  ўв®¬ вЁзҐбЄЁ ЇаҐ®Ўа §гҐв Ёе ў зЁб«®ўго д®а¬г,
Ґб«Ё ¤«п ўў®¤  Ўг¤Ґв гЄ § ­® Ё¬п зЁб«®ў®© ЇҐаҐ¬Ґ­­®©. Ќ Є®­Ґж,
INPUT ¬®¦Ґв ўл¤ ў вм ­  нЄа ­ бва®Єг, § Їа иЁў ойго Ї®«м§®ў вҐ«п
® вॡ㥬®© Ё­д®а¬ жЁЁ. ’ Є п бва®Є  ¬®¦Ґв Ўлвм ¤«Ё­®© ¤® 254
бЁ¬ў®«®ў. …б«Ё ҐҐ ¤«Ё­  Ў®«миҐ, в® «Ёи­ЁҐ бЁ¬ў®«л ЁЈ­®аЁаговбп.
Ћб­®ў­ п д®а¬  нв®Ј® ®ЇҐа в®а  INPUT "§ Їа®б", Ё¬п_ЇҐаҐ¬Ґ­­®©.
Џ®«­®Ґ ®ЇЁб ­ЁҐ нв®Ј® ®ЇҐав®а  б¬. ў агЄ®ў®¤б⢥ Ї® ЃҐ©бЁЄг.

110 INPUT "Enter your name: ",NAME$ 'ЇаЁ­Ё¬ Ґв Ё¬п Є Є бва®Єг
120 INPUT "Enter your age: ",AGE% 'ЇаЁ­Ё¬ Ґв ў®§а бв Є Є зЁб«®

ЋЇҐа в®а INPUT ­Ґ ¤ҐЄў вҐ­, Є®Ј¤  ў ўў®¤Ё¬®© бва®ЄҐ ¬®Јгв
ўбваҐз вмбп а биЁаҐ­­лҐ Є®¤л, в ЄЁҐ Є Є Є®¤л гЇа ў«Ґ­Ёп Єгаб®а®¬
ў Ї®«­®нЄа ­­®¬ ⥪бв®ў®¬ । Єв®аҐ. ‚ н⮬ б«гз Ґ вॡгҐвбп
ЁбЇ®«м§®ў вм дг­ЄжЁо INKEY$ ¤«п ЇаЁҐ¬  Є ¦¤®Ј® бЁ¬ў®« , § вҐ¬
Їа®ўҐапвм ўў®¤ ­  а биЁаҐ­­лҐ Є®¤л, ўл¤Ґ«пвм бЁ¬ў®«л гЇа ў«Ґ­Ёп
Єгаб®а®¬, в ЄЁҐ Є Є ў®§ўа в Є аҐвЄЁ, Ё в®«мЄ® Ї®б«Ґ нв®Ј® ўлў®-
¤Ёвм ­  нЄа ­ ⥠ᨬў®«л, Є®в®алҐ б«Ґ¤гҐв ўлў®¤Ёвм. ЏаЁ н⮬
гЇа ў«пойЁҐ бЁ¬ў®«л в Є¦Ґ ўЄ«оз овбп Ї® ®¤­®¬г ў Є®­Ґж бва®Є®ў®©
ЇҐаҐ¬Ґ­­®©. ’ҐЄбв®ўлҐ д ©«л ЇаҐ¤бв ў«пов б®Ў®© ­ Ў®а в ЄЁе бва®-
Є®ўле ЇҐаҐ¬Ґ­­ле. ‚ Їг­ЄвҐ [3.1.8] ‚л ­ ©¤ҐвҐ Їа®жҐ¤гаг ўў®¤  б
Є« ўЁ вгал, ў Є®в®а®© дг­ЄжЁп INKEY$ ЁбЇ®м§гҐвбп гЄ § ­­л¬ ®Ўа -
§®¬.
‘।­Ё© га®ўҐ­м.

”г­ЄжЁп 0AH ЇаҐалў ­Ёп 21H Ї®§ў®«пҐв ўў®¤Ёвм бва®Єг ¤«Ё­®© ¤®
254 бЁ¬ў®«®ў, ўл¤ ў п не® ­  вҐа¬Ё­ «. ќв  Їа®жҐ¤га  Їа®¤®«¦ Ґв
ўў®¤ Ї®бвгЇ ойЁе бЁ¬ў®«®ў ¤® вҐе Ї®а, Ї®Є  ­Ґ ­ ¦ в  Є« ўЁи 
ў®§ўа в Є аҐвЄЁ. DS:DX гЄ §лў Ґв ­   ¤аҐб Ї ¬пвЁ, Єг¤  ¤®«¦­ 
Ўлвм Ї®¬ҐйҐ­  бва®Є . ЏаЁ ўе®¤Ґ ЇҐаўл© Ў ©в ў нв®© Ї®§ЁжЁЁ ¤®«¦Ґ­
ᮤҐа¦ вм зЁб«® Ў ©в®ў, ®вў®¤Ё¬ле ¤«п нв®© бва®ЄЁ. Џ®б«Ґ в®Ј® Є Є
бва®Є  ўўҐ¤Ґ­ , ўв®а®© Ў ©в ¤ бв зЁб«® ॠ«м­® ўўҐ¤Ґ­­ле бЁ¬ў®-
«®ў. ‘ ¬  бва®Є  ­ зЁ­ Ґвбп б ваҐв쥣® Ў ©в .
Ќ ¤® ®вўҐбвЁ ¤®бв в®з­® Ї ¬пвЁ ¤«п бва®ЄЁ ­г¦­®© ¤«Ё­л Ї«об
¤ў  Ў ©в  ¤«п ¤ҐбЄаЁЇв®а  бва®ЄЁ Ё ®¤Ё­ ¤®Ў ў®з­л© Ў ©в ¤«п ў®§ў-
а в  Є аҐвЄЁ. Љ®Ј¤  ‚л гбв ­ ў«Ёў ҐвҐ ¬ ЄбЁ¬ «м­го ¤«Ё­г бва®ЄЁ ў
ЇҐаў®¬ Ў ©вҐ, в® ­Ґ § Ўг¤м⥠¤®Ў ўЁвм 1 ¤«п ў®§ўа в  Є аҐвЄЁ. Љ®¤
ў®§ўа в  Є аҐвЄЁ - ASCII 13 - ўў®¤Ёвбп Є Є Ї®б«Ґ¤­Ё© бЁ¬ў®« бва®-
ЄЁ, ­® ®­ ­Ґ гзЁвлў Ґвбп ў १г«мв вҐ, Є®в®ал© дг­ЄжЁп Ї®¬Ґй Ґв
ў® ўв®а®© Ў ©в ¤ҐбЄаЁЇв®а  бва®ЄЁ. ’ ЄЁ¬ ®Ўа §®¬, ¤«п Ї®«г祭Ёп
50-бЁ¬ў®«м­®© бва®ЄЁ ­ ¤® ®вўҐбвЁ 53 Ў ©в  Ї ¬пвЁ Ё Ї®¬ҐбвЁвм ў
ЇҐаўл© Ў ©в ASCII 51. Џ®б«Ґ ўў®¤  50 бЁ¬ў®«®ў ўв®а®© Ў ©в Ўг¤Ґв
ᮤҐа¦ вм ASCII 50,   53-© Ў ©в ®вўҐ¤Ґ­­®© Ї ¬пвЁ - ASCII 13.

;---ў ᥣ¬Ґ­вҐ ¤ ­­ле
STRING DB 53 DUP(?) ;®Ў« бвм ¤«п бва®ЄЁ 50 бЁ¬ў®«®ў

;---Ї®«г祭ЁҐ бва®ЄЁ б Є« ўЁ вгал
LEA DX,STRING ;DS:DX гЄ §лў ов ­   ¤аҐб бва®ЄЁ
MOV BX,DX ;Їгбвм BX ⮦Ґ гЄ §лў Ґв ­  бва®Єг
MOV AL,51 ;гбв ­®ўЄ  ¤«Ё­л бва®ЄЁ (+1 ¤«п CR)
MOV [BX],AL ;Ї®бл« Ґ¬ ў 1-© Ў ©в ¤ҐбЄаЁЇв®а 
MOV AH,0AH ;­®¬Ґа дг­ЄжЁЁ
INT 21H ;Ї®«гз Ґ¬ бва®Єг
;---Їа®ўҐаЄ  ¤«Ё­л бва®ЄЁ
MOV AH,[BX]+1 ;⥯Ґам ¤«Ё­  ў AH

‚ нв®© Їа®жҐ¤гॠ¬®¦­® ЁбЇ®«м§®ў вм ў®§¬®¦­®б⨠। ЄвЁа®ў ­Ёп
бва®ЄЁ MS DOS. Ќ ¦ вЁҐ Є« ўЁиЁ § Ў®© Ё«Ё "бв५Є -ў«Ґў®" г¤ «пҐв
бЁ¬ў®« б нЄа ­ ,   в Є¦Ґ ­Ґ Ї®¬Ґй Ґв ҐЈ® ў Ї ¬пвм. ђ Ў®в Ґв Є« -
ўЁи  в Ўг«пжЁЁ, а биЁаҐ­­лҐ Є®¤л ЁЈ­®аЁаговбп, ЇгбвлҐ бва®ЄЁ
¤®ЇгбЄ овбп (Ё¬ҐҐвбп ўўЁ¤г ў®§ўа в Є аҐвЄЁ, Є®в®а®¬г ­Ґ ЇаҐ¤иҐбв-
ўгҐв ¤агЈ®Ј® бЁ¬ў®« ). Ќ  вҐа¬Ё­ «Ґ ЇаЁ ¤®бвЁ¦Ґ­ЁЁ Їа ў®Ј® Єа п
бва®Є  ЇҐаҐ­®бЁвбп ­  б«Ґ¤гойго бва®Єг,   ЇаЁ ¤®бвЁ¦Ґ­ЁЁ Їа ў®Ј®
­Ё¦­ҐЈ® гЈ«  нЄа ­ б¤ўЁЈ Ґвбп ­  бва®Єг ўўҐае. Љ®Ј¤  ўў®¤Ёвбп
Ў®«миҐ бЁ¬ў®«®ў, 祬 ®вўҐ¤Ґ­® ¬Ґбв  ¤«п бва®ЄЁ, в® «Ёи­ЁҐ бЁ¬ў®«л
ЁЈ­®аЁаговбп Ё ўЄ«оз Ґвбп Јг¤®Є ¤Ё­ ¬ЁЄ .
MS DOS ®ЎҐбЇҐзЁў Ґв Ё ¤агЈ®© бЇ®б®Ў Ї®«г祭Ёп бва®ЄЁ, ЇаЁ
Є®в®а®¬ ­Ґ ўлў®¤Ёвбп не® ­  вҐа¬Ё­ «. ”г­ЄжЁп 3FH ЇаҐалў ­Ёп 21H
- нв® дг­ЄжЁп ўў®¤  ®ЎйҐЈ® ­ §­ зҐ­Ёп, Є®в®а п з йҐ ўбҐЈ® ЁбЇ®«м-
§гҐвбп ЇаЁ ¤ЁбЄ®ўле ®ЇҐа жЁпе. Ћ­  вॡгҐв ЇаҐ¤®ЇаҐ¤Ґ«Ґ­­®Ј®
¤ҐбЄаЁЇв®а  д ©«  (file handle), Є®в®ал© пў«пҐвбп Є®¤®ўл¬ зЁб«®¬,
ЁбЇ®«м§гҐ¬л¬ ®ЇҐа жЁ®­­®© бЁб⥬®© ¤«п ®Ў®§­ зҐ­Ёп гбва®©бвў 
ўў®¤ /ўлў®¤ . „«п Є« ўЁвгал ЁбЇ®«м§гҐвбп ¤ҐбЄаЁЇв®а 0 Ё ®­ ¤®«¦Ґ­
Ўлвм Ї®¬ҐйҐ­ ў BX. Џ®¬ҐбвЁвҐ ў DS:DX  ¤аҐб, Ї® Є®в®а®¬г ¤®«¦­ 
­ е®¤Ёвмбп бва®Є ,   ў CX - ¬ ЄбЁ¬ «м­го ¤«Ё­г бва®ЄЁ Ё ўл§®ўЁвҐ
дг­ЄжЁо:
;---з⥭ЁҐ бва®ЄЁ ЎҐ§ не 
MOV AH,3FH ;­®¬Ґа дг­ЄжЁЁ
MOV BX,0 ;­®¬Ґа ¤ҐбЄаЁЇв®а  д ©« 
LEA DX,STRING_BUFFER ;гЄ § вҐ«м ­  ЎгдҐа ўў®¤  бва®ЄЁ
MOV CX,100 ;¬ ЄбЁ¬ «м­ п ¤«Ё­  бва®ЄЁ
INT 21H ;¦¤Ґ¬ ўў®¤ 

‚ў®¤ бва®ЄЁ § ўҐаи Ґвбп ­ ¦ вЁҐ¬ Є« ўЁиЁ ў®§ўа в Є аҐвЄЁ Ё DOS
¤®Ў ў«пҐв ў Є®­Ґж бва®ЄЁ ¤ў  бЁ¬ў®« : ў®§ўа в Є аҐвЄЁ Ё ЇҐаҐў®¤
бва®ЄЁ (ASCII 13 Ё ASCII 10). €§-§  нвЁе ¤®Ў ў®з­ле бЁ¬ў®«®ў, ЇаЁ
гЄ § ­ЁЁ ¤«Ё­л бва®ЄЁ 100 бЁ¬ў®«®ў ®­  ¬®¦Ґв § ­Ё¬ вм ¤® 102 Ў ©в
Ї ¬пвЁ. „«Ё­  ўўҐ¤Ґ­­®© бва®ЄЁ ў®§ўа й Ґвбп ў AX Ё нв® §­ зҐ­ЁҐ
ўЄ«оз Ґв ¤ў  бЁ¬ў®« -®Ја ­ЁзЁвҐ«п.
3.1.7 Џа®ўҐаЄ /гбв ­®ўЄ  бв вгб  Є« ўЁи-ЇҐаҐЄ«оз вҐ«Ґ©.

„ў  Ў ©в , а бЇ®«®¦Ґ­­лҐ ў п祩Є е Ї ¬пвЁ 0040:0017 Ё
0040:0018 ᮤҐа¦ в ЎЁвл, ®ва ¦ ойЁҐ бв вгб Є« ўЁиЁ б¤ўЁЈ  Ё ¤аг-
ЈЁе Є« ўЁи-ЇҐаҐЄ«оз вҐ«Ґ© б«Ґ¤гойЁ¬ ®Ўа §®¬:

ЃЁв Љ« ўЁи  ‡­ зҐ­ЁҐ, Є®Ј¤  ЎЁв = 1
0040:0017 7 Insert ०Ё¬ ўбв ўЄЁ ўЄ«о祭
6 CapsLock ०Ё¬ CapsLock ўЄ«о祭
5 NumLock ०Ё¬ NumLock ўЄ«о祭
4 ScrollLock ०Ё¬ ScrollLock ўЄ«о祭
3 Alt Є« ўЁи  ­ ¦ в 
2 Ctrl Є« ўЁи  ­ ¦ в 
1 «Ґўл© Shift Є« ўЁи  ­ ¦ в 
0 Їа ўл© Shift Є« ўЁи  ­ ¦ в 

0040:0018 7 Insert Є« ўЁи  ­ ¦ в 
6 CapsLock Є« ўЁи  ­ ¦ в 
5 NumLock Є« ўЁи  ­ ¦ в 
4 ScrollLock Є« ўЁи  ­ ¦ в 
3 Ctrl-NumLock ०Ё¬ Ctrl-NumLock ўЄ«о祭
®бв «м­лҐ ЎЁвл ­Ґ ЁбЇ®«м§говбп

ЏаҐалў ­ЁҐ Є« ўЁ вгал ­Ґ¬Ґ¤«Ґ­­® ®Ў­®ў«пҐв нвЁ ЎЁвл бв вгб ,
Є Є в®«мЄ® Ўг¤Ґв ­ ¦ в  ®¤­  Ё§ Є« ўЁи-ЇҐаҐЄ«оз вҐ«Ґ©, ¤ ¦Ґ Ґб«Ё
­Ґ Ўл«® бзЁв ­® ­Ё ®¤­®Ј® бЁ¬ў®«  Ё§ ЎгдҐа  Є« ўЁ вгал. ќв® ўҐа­®
Ё ¤«п Є« ўЁиЁ Ins, Є®в®а п Ґ¤Ё­б⢥­­ п Ё§ нвЁе 8 Є« ўЁи Ї®¬Ґй Ґв
Є®¤ ў ЎгдҐа (гбв ­®ўЄ  бв вгб  Ins ¬Ґ­пҐвбп ¤ ¦Ґ Ґб«Ё ў ЎгдҐаҐ
­Ґв ¬Ґбв  ¤«п бЁ¬ў®« ). Ћв¬ҐвЁ¬, зв® ЎЁв 3 Ї®  ¤аҐбг 0040:0018
гбв ­ ў«Ёў Ґвбп ў 1, Є®Ј¤  ¤Ґ©бвўгҐв ०Ё¬ § ¤Ґа¦ЄЁ Ctrl-NumLock;
Ї®бЄ®«мЄг ў н⮬ б®бв®п­ЁЁ Їа®Ја ¬¬  ЇаЁ®бв ­®ў«Ґ­ , в® нв®в ЎЁв
­ҐбгйҐб⢥­Ґ­.
ЏаҐалў ­ЁҐ Є« ўЁ вгал Їа®ўҐапҐв б®бв®п­ЁҐ бв вгб­ле ЎЁв®ў
ЇҐаҐ¤ ⥬, Є Є Ё­вҐаЇаҐвЁа®ў вм ­ ¦ влҐ Є« ўЁиЁ, Ї®н⮬㠪®Ј¤ 
Їа®Ја ¬¬  ¬Ґ­пҐв ®¤Ё­ Ё§ нвЁе ЎЁв®ў, в® нд䥪в в Є®© ¦Ґ, Є Є ЇаЁ
дЁ§ЁзҐбЄ®¬ ­ ¦ вЁЁ ᮮ⢥вбвўго饩 Є« ўЁиЁ. ‚л ¬®¦ҐвҐ § е®вҐвм
гбв ­®ўЁвм б®бв®п­ЁҐ Є« ўЁи NumLock Ё CapsLock, зв®Ўл Ўлвм 㢥-
७­л¬, зв® ўў®¤ Ўг¤Ґв вॡ㥬®Ј® ўЁ¤ . Ќ ®Ў®а®в, ‚ и  Їа®Ја ¬¬ 
¬®¦Ґв ­г¦¤ вмбп ў з⥭ЁЁ бв вгб  нвЁе Є« ўЁи, ­ ЇаЁ¬Ґа ¤«п в®Ј®,
зв®Ўл ўлўҐб⨠⥪гйЁ© бв вгб ­  нЄа ­. Ћв¬ҐвЁ¬, зв® Є« ўЁ вга  AT
Їа ўЁ«м­® гбв ­ ў«Ёў Ґв бўҐв®ўлҐ Ё­¤ЁЄ в®ал б®бв®п­Ёп Є« ўЁи,
¤ ¦Ґ Ґб«Ё ЇҐаҐЄ«озҐ­л Їа®Ја ¬¬­®.

‚лб®ЄЁ© га®ўҐ­м.

‚ ¤ ­­®¬ ЇаЁ¬ҐаҐ Є« ўЁи  NumLock ЇҐаҐў®¤Ёвбп ў ०Ё¬, Є®Ј¤ 
Є« ўЁиЁ ¤®Ї®«­ЁвҐ«м­®© Є« ўЁ вгал ЁбЇ®«м§говбп ¤«п ЇҐаҐ¬ҐйҐ­Ёп
Єгаб®а , §  бзҐв бЎа блў ­Ёп ЎЁв  5 Ї®  ¤аҐбг 0040:0017 ў 0. ќв®
¤®бвЁЈ Ґвбп §  бзҐв ®ЇҐа жЁЁ «®ЈЁзҐбЄ®Ј® "€" §­ зҐ­Ёп, а бЇ®«®-
¦Ґ­­®Ј® Ї® нв®¬г  ¤аҐбг б зЁб«®¬ 223 (楯®зЄ  ЎЁв®ў 11011111B -
®ЇЁб ­ЁҐ «®ЈЁЄЁ ЎЁв®ўле ®ЇҐа жЁ© б¬. ў ЏаЁ«®¦Ґ­ЁЁ Ѓ). ђҐ§г«мв в
Ї®¬Ґй Ґвбп ў Ў ©в бв вгб . ‚ ЇаЁ¬ҐаҐ § вҐ¬ ў®ббв ­ ў«Ёў Ґвбп
§­ зҐ­ЁҐ нв®Ј® ЎЁв  ў 1, §  бзҐв «®ЈЁзҐбЄ®Ј® "€‹€" б 32
(00100000B).
100 DEF SEG = &H40 'гбв ­ ў«Ёў Ґ¬ ᥣ¬Ґ­в ­  ®Ў« бвм
110 STATUSBYTE=PEEK(&H17) 'BIOS Ё ЎҐаҐ¬ Ў ©в бв вгб 
120 NEWBYTE=STATUSBYTE AND 223 '®Ў­г«пҐ¬ ЎЁв 5
130 POKE(&H17,NEWBYTE) 'Ї®бл« Ґ¬ ­®ў®Ґ §­ зҐ­ЁҐ бв вгб 

—в®Ўл, ­ ®Ў®а®в, ўЄ«озЁвм нв®в ЎЁв:

120 NEWBYTE=STATUSBYTE OR 32 'гбв ­ ў«Ёў Ґ¬ ЎЁв 5
130 POKE(&H17,NEWBYTE) 'Ї®бл« Ґ¬ ­®ў®Ґ §­ зҐ­ЁҐ бв вгб 

‘ва®ЄЁ 110-130 ¬®Јгв Ўлвм гЇ«®в­Ґ­л Є ўЁ¤г:

110 POKE(&H417,PEEK(&H417)AND 223)
Ё«Ё
110 POKE(&H417,PEEK(&H417)OR 223)

‘।­Ё© га®ўҐ­м.

”г­ЄжЁп 2 ЇаҐалў ­Ёп 16H ЇаҐ¤®бв ў«пҐв ¤®бвгЇ Є ®¤­®¬г - ­®
в®«мЄ® ®¤­®¬г - Ё§ Ў ©в®ў бв вгб . ќв® Ў ©в Ї®  ¤аҐбг 0040:0017,
Є®в®ал© б®¤Ґа¦Ёв Ў®«миҐ Ї®«Ґ§­®© Ё­д®а¬ жЁЁ. Ѓ ©в ў®§ўа й Ґвбп ў
AL.

;---Їа®ўҐаЄ  бв вгб  Є« ўЁиЁ ўбв ўЄЁ
MOV AH,2 ;­®¬Ґа дг­ЄжЁЁ
INT 16H ;Ї®«гз Ґ¬ Ў ©в бв вгб 
TEST AL,10000000B ;Їа®ўҐа塞 ЎЁв 7
JZ INSERT_OFF ;Ґб«Ё 0, в® INSERT ўлЄ«о祭

ЌЁ§ЄЁ© га®ўҐ­м.

‚ ¤ ­­®¬ ЇаЁ¬ҐаҐ гбв ­ ў«Ёў Ґвбп ०Ё¬ ўбв ўЄЁ, §  бзҐв гбв -
­®ўЄЁ ЎЁв  7 Ў ©в  бв вгб  Ї®  ¤аҐбг 0040:0017 (Є®в®ал©  ¤аҐбгҐв-
бп Є Є 0000:0417).

SUB AX,AX ;гбв ­ ў«Ёў Ґ¬ ¤®Ў ў®з­л© ᥣ¬Ґ­в ­ 
MOV ES,AX ;­ з «® Ї ¬пвЁ
MOV AL,10000000B ;Ј®в®ўЁ¬ ЎЁв 7 Є гбв ­®ўЄҐ
OR ES:[417H],AL ;¬Ґ­пҐ¬ Ў ©в бв вгб 
3.1.8 Ќ ЇЁб ­ЁҐ Їа®жҐ¤гал ўў®¤  б Є« ўЁ вгал ®ЎйҐЈ® ­ §­ зҐ-
­Ёп.

‘Ёб⥬  Є®¤®ў, ЁбЇ®«м§гҐ¬ле Є« ўЁ вга®©, ­Ґ Ї®¤¤ Ґвбп Їа®бв®©
Ё­в९аҐв жЁЁ. Љ®¤л ¬®Јгв Ё¬Ґвм ¤«Ё­г 1 Ё«Ё 2 Ў ©в  Ё ­Ґв Їа®бв®-
Ј® ᮮ⢥вбвўЁп ¬Ґ¦¤г ¤«Ё­®© Є®¤  Ё ⥬, б«г¦Ёв «Ё ®­ ¤«п ®Ў®§­ -
祭Ёп бЁ¬ў®«  Ё«Ё ¤«п гЇа ў«Ґ­Ёп ®Ў®а㤮ў ­ЁҐ¬. ЌҐ ўбҐ Є®¬ЎЁ­ жЁЁ
Є« ўЁи ¤ ¦Ґ ўл¤ ов г­ЁЄ «м­л© Є®¤, Ї®н⮬㠭Ґ®Ўе®¤Ё¬л ¤®Ў ў®з­лҐ
гбЁ«Ёп, зв®Ўл а §«ЁзЁвм Ёе. ЌЁ Є®¤л ASCII, ­Ё а биЁаҐ­­лҐ Є®¤л ­Ґ
гЇ®а冷祭л в ЄЁ¬ ®Ўа §®¬, Є®в®ал© Ўл Ї®§ў®«Ё« Ёе Їа®бвго ЈагЇЇЁ-
а®ўЄг Ё Їа®ўҐаЄг ®иЁЎ®Є. „агЈЁ¬Ё б«®ў ¬Ё, Їа®жҐ¤га  ўў®¤  б Є« -
ўЁ вгал ®ЎйҐЈ® ­ §­ зҐ­Ёп вॡгҐв е«®Ї®в«Ёў®Ј® Їа®Ја ¬¬Ёа®ў ­Ёп.
‡¤Ґбм ЇаЁўҐ¤Ґ­л ЇаЁ¬Ґал ­  ЃҐ©бЁЄҐ Ё б ЁбЇ®«м§®ў ­ЁҐ¬ ЇаҐалў -
­Ёп 16H. ‚ ­Ёе Ї®Є § ­® Є Є ᢥбвЁ ў¬Ґб⥠Ў®«миЁ­бвў® Ё­д®а¬ жЁЁ,
ЇаЁўҐ¤Ґ­­®© ў ¤ ­­®© Ј« ўҐ. ЋЎйЁ©  «Ј®аЁв¬ Ї®Є § ­ ­  аЁб. 3-3.

‚лб®ЄЁ© га®ўҐ­м.

Џа®жҐ¤га  ®Ўа Ў®вЄЁ ўў®¤  б Є« ўЁ вгал, ­ ЇЁб ­­ п ­  ЃҐ©бЁЄҐ,
¬®¦Ґв ¤Ґ« вм ўбҐ зв® ¤Ґ« Ґв  бᥬЎ«Ґа­ п Їа®жҐ¤га , §  ®¤­Ё¬
ЁбЄ«о祭ЁҐ¬. ”г­ЄжЁп INKEY$ ­Ґ ЇаҐ¤®бв ў«пҐв ¤®бвгЇ  Є бЄ ­-Є®-
¤ ¬. ќв® ®§­ з Ґв, зв® ‚л ­Ґ ¬®¦ҐвҐ бЄ § вм Ї®«гзҐ­л «Ё Є®¤л
ASCII 8, 9, 13 Ё 27 ®в ­ ¦ вЁп Є« ўЁи <BackSpace>, <Tab>, <Enter>
Ё <Escape> Ё«Ё зҐаҐ§ Ctrl-H, -I, -M Ё -[. ђ §«ЁзЁҐ ¬®¦Ґв Ўлвм
гбв ­®ў«Ґ­® Їа®ўҐаЄ®© ЎЁв  бв вгб  Є« ўЁиЁ Ctrl, Ї®  ¤аҐбг
0040:0017, ў ¬®¬Ґ­в ­ ¦ вЁп Є« ўЁиЁ. Ќ® нв®в ¬Ґв®¤ ­Ґ Ўг¤Ґв а Ў®-
в вм, Ґб«Ё ўўҐ¤Ґ­­л© бЁ¬ў®« Ўл« § Ї бҐ­ ў ЎгдҐаҐ Є« ўЁ вгал ў
вҐзҐ­ЁҐ ­ҐЄ®в®а®Ј® ўаҐ¬Ґ­Ё.

100 C$=INKEY$:IF C$="" THEN 100 'Ї®«г祭ЁҐ бЁ¬ў®« 
110 IF LEN(C$)=2 THEN 700 'Ґб«Ё а биЁаҐ­­л©, в® ­  700
120 C=ASC(C$) 'Ё­ зҐ ЎҐаҐ¬ ­®¬Ґа Є®¤  ASCII
130 IF C<32 THEN 300 'Ґб«Ё гЇа ў«пойЁ©, в® ­  300
140 IF C<65 OR C>123 THEN 100 'ЇаЁ­Ё¬ Ґ¬ в®«мЄ® бЁ¬ў®«л
150 '''ЇЁиг饩 ¬ иЁ­ЄЁ Ё ¤Ґ« Ґ¬ б ­Ё¬Ё, зв® е®вЁ¬, ­ ЇаЁ¬Ґа:
160 S$=S$+C$ '¤®Ў ў«пҐ¬ бЁ¬ў®« Є бва®ЄҐ
170 PRINT C$; 'ўлў®¤Ё¬ ҐЈ® ­  нЄа ­
180 '''... Ё в.¤.
190 GOTO 100 '­  ўў®¤ б«Ґ¤го饣® бЁ¬ў®« 
.
.
300 '''Їа®жҐ¤га  ®Ўа Ў®вЄЁ гЇа ў«пойЁе Є®¤®ў ASCII
310 DEF SEG = 0 'гЄ §лў Ґ¬ ­  ­ з «® Ї ¬пвЁ
320 REGISTER=PEEK(&H417) 'ЎҐаҐ¬ ॣЁбва бв вгб 
330 X=REGISTER AND 4 'X=4, Є®Ј¤  ­ ¦ в Ctrl
340 IF X=0 THEN 500 'Ґб«Ё ­Ґ ­ ¦ в, в® ­  500
350 '''Ґб«Ё нв® Є®¬ЎЁ­ жЁп Ctrl-ЎгЄў , в® ¤Ґ« Ґ¬ зв® е®вЁ¬
360 IF C=8 THEN GOSUB 12000 '­ ЇаЁ¬Ґа, ЇҐаҐе®¤Ё¬ ­  Їа®жҐ-
370 '''¤гаг ўлў®¤  нЄа ­  Ї®¬®йЁ Ё в.¤.
380 GOTO 100 '­  ўў®¤ б«Ґ¤го饣® бЁ¬ў®« 
.
.
500 '''Їа®жҐ¤га  ®Ўа Ў®вЄЁ 4-е Є« ўЁи: ¤ҐЄ®¤ЁагҐв Є®¤л ASCII 8,
510 '''9, 13 Ё 27, Є®Ј¤  Є« ўЁи  Ctrl ­Ґ ­ ¦ в 
520 IF C=8 THEN GOSUB 5000 '®Ўа Ў®вЄ  <BackSpace>
530 IF C=9 THEN GOSUB 6000 '®Ўа Ў®вЄ  <Tab>
540 IF C=13 THEN GOSUB 7000 '®Ўа Ў®вЄ  <CR>
550 IF C=27 THEN GOSUB 8000 '®Ўа Ў®вЄ  <Esc>
560 GOTO 100 '­  ўў®¤ б«Ґ¤го饣® бЁ¬ў®« 
.
.
700 '''Їа®жҐ¤га  ®Ўа Ў®вЄЁ а биЁаҐ­­ле Є®¤®ў
710 C$=RIGHT$(C$,1) 'ЎҐаҐ¬ в®«мЄ® 2-© Ў ©в C$
720 C=ASC(C$) 'ЇҐаҐў®¤Ё¬ ў зЁб«®ўго д®а¬г
730 '''ў C - а биЁаҐ­­л© Є®¤ - ¤Ґ« Ґ¬ б ­Ё¬, зв® е®вЁ¬, ­ ЇаЁ¬Ґа
740 IF C<71 OR C>81 THEN 100 'ЎҐаҐ¬ в®«мЄ® гЇа ў«Ґ­ЁҐ Єгаб®а®¬
750 IF C=72 THEN GOSUB 3500 '®Ўа Ў®вЄ  "Єгаб®а-ўўҐае"
760 '''... Ё в.¤.
770 GOTO 100 '­  ўў®¤ б«Ґ¤го饣® бЁ¬ў®« 

‘।­Ё© га®ўҐ­м.

ќв®в ЇаЁ¬Ґа ®в«Ёз Ґвбп ®в ЇаҐ¤л¤г饣® ¬Ґв®¤®¬ а бЇ®§­ ў ­Ёп
зҐвлаҐе з бв­ле б«гз Ґў Ctrl-H, -I, -M Ё -[. ‡¤Ґбм, Є®Ј¤  ўбв Ґв
ў®Їа®б ® ⮬, ў®§­ЁЄ «Ё гЄ § ­­л© Є®¤ ЇаЁ ­ ¦ вЁЁ ®¤­®© Є« ўЁиЁ,
Ё«Ё ў Є®¬ЎЁ­ жЁЁ б Є« ўЁиҐ© Ctrl, Їа®ўҐапҐвбп бЄ ­-Є®¤. ќв®в
¬Ґв®¤ Ў®«ҐҐ Їа ўЁ«Ґ­, 祬 Їа®ўҐаЄ  ЎЁв  бв вгб , в Є Є Є бЄ ­-Є®¤
§ Ї®¬Ё­ Ґвбп ў ЎгдҐаҐ Є« ўЁ вгал,   гбв ­®ўЄ  ЎЁв  бв вгб  ¬®¦Ґв
Ўлвм Ё§¬Ґ­Ґ­ .

;---Ї®«г祭ЁҐ Є®¤  ­ ¦ в®© Є« ўЁиЁ Ё ®ЇаҐ¤Ґ«Ґ­ЁҐ ҐЈ® вЁЇ 
NEXT: MOV AH,0 ;дг­ЄжЁп ўў®¤  б Є« ўЁ вгал BIOS
INT 16H ;Ї®«гз Ґ¬ ўўҐ¤Ґ­­л© Є®¤
CMP AL,0 ;Їа®ўҐаЄ  ­  а биЁаҐ­­л© Є®¤
JE EXTENDED_CODE ;Ґб«Ё ¤ , в® ­  бЇҐж. Їа®жҐ¤гаг
CMP AL,32 ;Їа®ўҐаЄ  ­  гЇа ў«пойЁ© бЁ¬ў®«
JL CONTROL_CODE ;Ґб«Ё ¤ , в® ­  бЇҐж. Їа®жҐ¤гаг
CMP AL,65 ;Ґб«Ё бЁ¬ў®« ­Ґ ўе®¤Ёв ў ­ Ў®а ЇЁиг-
JL NEXT ;饩 ¬ иЁ­ЄЁ, в® ЎҐаҐ¬ б«Ґ¤гойЁ©
CMP AL,123 ;
JL NEXT ;
;---⥯Ґам ®Ўа Ў влў Ґ¬ бЁ¬ў®« ў AL
STOSB ;§ Ї®¬Ё­ Ґ¬ бЁ¬ў®« Ї®  ¤аҐбг ES:DI
MOV AH,2 ;дг­ЄжЁп ўлў®¤  бЁ¬ў®«  ­  нЄа ­
MOV DL,AL ;Ї®¬Ґй Ґ¬ бЁ¬ў®« ў DL ЇҐаҐ¤ ўлў®¤®¬
INT 21H ;ўлў®¤Ё¬ ҐЈ® ­  нЄа ­
.
.
JMP NEXT ;ЇҐаҐе®¤Ё¬ Є б«Ґ¤го饬г бЁ¬ў®«г
;--- ­ «Ё§Ёа㥬 гЇа ў«пойЁҐ Є®¤л
CONTROL_CODE: CMP AL,13 ;Є®¤ ASCII 13?
JNE TAB ;Ґб«Ё ­Ґв, в® б«Ґ¤. Їа®ўҐаЄ 
CMP AH,28 ;Ё­ зҐ Їа®ўҐа塞 бЄ ­-Є®¤ <CR>
JNE C_M ;Ґб«Ё ­Ґв, в® Ўл«® Ctrl-M
CALL CARRIAGE_RET;®Ўа Ў®вЄ  ў®§ўа в  Є аҐвЄЁ
JMP NEXT ;ЇҐаҐе®¤ Є б«Ґ¤го饬г бЁ¬ў®«г
C_M: CALL CTRL_M ;®Ўа Ў®вЄ  Ctrl-M
JMP NEXT ;ЇҐаҐе®¤ Є б«Ґ¤го饬г бЁ¬ў®«г
TAB: CMP AL,9 ;Їа®ўҐаЄ  ­  в Ўг«пжЁо...
.
.
CMP AL,10 ;§ вҐ¬ Їа®ўҐаЄ  ¤агЈЁе
.
.
REJECT: JMP NEXT ;ЇҐаҐе®¤ Є б«Ґ¤го饬г бЁ¬ў®«г
;--- ­ «Ё§ а биЁаҐ­­ле Є®¤®ў (2-© Ў ©в Є®¤  ў AH):
EXTENDED_CODE: CMP AH,71 ;Їа®ўҐаЄ  ­Ё¦­Ґ© Ја ­Ёжл
JL REJECT ;Ґб«Ё ¬Ґ­миҐ, в® б«Ґ¤. бЁ¬ў®«
CMP AH,81 ;Їа®ўҐаЄ  ўҐае­Ґ© Ја ­Ёжл
JL REJECT ;Ґб«Ё Ў®«миҐ, в® б«Ґ¤. бЁ¬ў®«
;---AH ᮤҐа¦Ёв бЁ¬ў®« гЇа ў«Ґ­Ёп Єгаб®а®¬,  ­ «Ё§Ёа㥬 ҐЈ®:
CMP AH,72 ;"Єгаб®а-ўўҐае"?
JE C_U ;Ґб«Ё ¤ , в® ­  Їа®жҐ¤гаг
CMP AH,80 ;"Єгаб®а-ў­Ё§"?
JE C_D ;Ґб«Ё ¤ , в® ­  Їа®жҐ¤гаг
.
.
C_U: CALL CURSOR_UP ;ўл§®ў ᮮ⢥вбвўго饩 Їа®жҐ¤гал
JMP NEXT ;ЇҐаҐе®¤ Є б«Ґ¤го饬г бЁ¬ў®«г
C_D: CALL CURSOR_DOWN ;ўл§®ў ᮮ⢥вбвўго饩 Їа®жҐ¤гал
JMP NEXT ;ЇҐаҐе®¤ Є б«Ґ¤го饬г бЁ¬ў®«г
3.1.9 ЏҐаҐЇа®Ја ¬¬Ёа®ў ­ЁҐ ЇаҐалў ­Ёп Є« ўЁ вгал.

Љ®Ј¤  ¬ЁЄа®Їа®жҐбб®а Є« ўЁ вгал Ї®¬Ґй Ґв бЄ ­-Є®¤ ў Ї®ав A
¬ЁЄа®б奬л 8255 ( ¤аҐб Ї®ав  60H - б¬. [1.1.1]), в® ЇаЁ н⮬
ўл§лў Ґвбп ЇаҐалў ­ЁҐ 9. ‡ ¤ з  нв®Ј® ЇаҐалў ­Ёп - ЇаҐ®Ўа §®ў вм
бЄ ­-Є®¤ бЁ¬ў®« , ®б­®ўлў пбм ­  б®бв®п­ЁЁ Є« ўЁи-ЇҐаҐЄ«оз вҐ«Ґ©,
Ё Ї®¬ҐбвЁвм ҐЈ® ў ЎгдҐа Є« ўЁ вгал. (…б«Ё бЄ ­-Є®¤ ᮮ⢥вбвўгҐв
Є« ўЁиҐ-ЇҐаҐЄ«оз вҐ«о, в® ў ЎгдҐа Є« ўЁ вгал ­Ґ ЇЁиҐвбп ­ЁзҐЈ®,
§  ЁбЄ«о祭ЁҐ¬ б«гз п Є« ўЁиЁ <Ins>,   ў¬Ґбв® нв®Ј® ЇаҐалў ­ЁҐ
Ё§¬Ґ­пҐв Ў ©вл бв вгб , а бЇ®«®¦Ґ­­лҐ ў ®Ў« бвЁ ¤ ­­ле BIOS
[3.1.7]). ЏаҐалў ­Ёп "ўў®¤  б Є« ўЁ вгал" DOS Ё BIOS ­  б ¬®¬
¤Ґ«Ґ ўбҐЈ® «Ёим ЇаҐалў ­Ёп "ўў®¤  Ё§ ЎгдҐа  Є« ўЁ вгал". Ќ  б ¬®¬
¤Ґ«Ґ ®­Ё ­Ґ а бЇ®§­ ов ­ ¦ вЁп Є« ўЁи. ’®з­ҐҐ, ®­Ё зЁв ов Ё­вҐаЇ-
аҐв жЁо ўўҐ¤Ґ­­ле Є« ўЁи, Є®в®аго ®ЎҐбЇҐзЁ«® ЇаҐалў ­ЁҐ 9. ‡ ¬Ґ-
вЁ¬, зв® PCjr ЁбЇ®«м§гҐв бЇҐжЁ «м­го Їа®жҐ¤гаг (INT 48H) ¤«п
ЇаҐ®Ўа §®ў ­Ёп ўў®¤  ®в ҐЈ® 62 Є« ўЁи Є 83-Є« ўЁи­®¬г Їа®в®Є®«г,
ЁбЇ®«м§гҐ¬®¬г ¤агЈЁ¬Ё IBM PC. ђҐ§г«мв в нв®© Їа®жҐ¤гал ЇҐаҐ¤ Ґвбп
ЇаҐалў ­Ёо 9, Є®в®а®Ґ ўлЇ®«­пҐв бў®о а Ў®вг Є Є ®Ўлз­®. ЏаҐалў -
­ЁҐ¬ 49H PCjr ®ЎҐбЇҐзЁў Ґв бЇҐжЁ «м­лҐ ­ҐЄ« ўЁи­лҐ бЄ ­-Є®¤л,
Є®в®алҐ Ї®вҐ­жЁ «м­® ¬®Јгв гбв ­ ў«Ёў вмбп ЇҐаЁдҐаЁ©­л¬Ё гбв-
а®©бвў ¬Ё, ЁбЇ®«м§гойЁ¬Ё Ё­да Єа б­го (ЎҐбЇа®ў®«®з­го) бўп§м б
Є« ўЁ вга®©.
’ॡгҐвбп ўҐбм¬  ­Ґ®Ўлз­®Ґ ЇаЁ¬Ґ­Ґ­ЁҐ, зв®Ўл Ё¬Ґ«® б¬лб« ЇҐ-
९ணࠬ¬Ёа®ў вм нв® ЇаҐалў ­ЁҐ, ®б®ЎҐ­­® гзЁвлў п, зв® MS DOS
Ї®§ў®«пҐв ‚ ¬ ЇҐаҐЇа®Ја ¬¬Ёа®ў вм «оЎго Є« ўЁиг Є« ўЁ вгал
[3.2.6]. …б«Ё ўбҐ ¦Ґ ‚ ¬ ЇаЁ¤Ґвбп ЇҐаҐЇа®Ја ¬¬Ёа®ў вм ЇаҐалў ­ЁҐ
9, в® нв  Ј« ў  ¤ бв ‚ ¬ ®б­®ўл ¤«п бв ав . ‘­ з «  ­ ¤® Їа®зЁ-
в вм [1.2.3], зв®Ўл Ї®­Ё¬ вм Є Є Їа®Ја ¬¬Ёаговбп ЇаҐалў ­Ёп. ‚
ЇаҐалў ­ЁЁ Є« ўЁ вгал ¬®¦­® ўл¤Ґ«Ёвм ваЁ ®б­®ў­ле и Ј :

1. Џа®зЁв вм бЄ ­-Є®¤ Ё Ї®б« вм Є« ўЁ вгॠЇ®¤вўҐа¤ ойЁ© бЁЈ-
­ «.
2. ЏаҐ®Ўа §®ў вм бЄ ­-Є®¤ ў ­®¬Ґа Є®¤  Ё«Ё ў гбв ­®ўЄг ®ҐЈЁбв-
а  бв вгб  Є« ўЁи-ЇҐаҐЄ«оз вҐ«Ґ©.
3. Џ®¬ҐбвЁвм Є®¤ Є« ўЁиЁ ў ЎгдҐа Є« ўЁ вгал.

‚ ¬®¬Ґ­в ўл§®ў  ЇаҐалў ­Ёп бЄ ­-Є®¤ Ўг¤Ґв ­ е®¤Ёвмбп ў Ї®авҐ
A. Џ®н⮬г б­ з «  ­ ¤® нв®в Є®¤ Їа®зЁв вм Ё б®еа ­Ёвм ­  б⥪Ґ.
‡ вҐ¬ ЁбЇ®«м§гҐвбп Ї®ав B ( ¤аҐб 61H), зв®Ўл Ўлбва® Ї®б« вм бЁЈ-
­ « Ї®¤вўҐа¦¤Ґ­Ёп ¬ЁЄа®Їа®жҐбб®аг Є« ўЁ вгал. Ќ ¤® Їа®бв® гбв ­®-
ўЁвм ЎЁв 7 ў 1,   § вҐ¬ ба §г Ё§¬Ґ­Ёвм ҐЈ® ­ § ¤ ў 0. ‡ ¬ҐвЁ¬,
зв® ЎЁв 6 Ї®ав  B гЇа ў«пҐв бЁЈ­ «®¬ з б®ў Є« ўЁ вгал. Ћ­ ўбҐЈ¤ 
¤®«¦Ґ­ Ўлвм гбв ­®ў«Ґ­ ў 1, Ё­ зҐ Є« ўЁ вга  Ўг¤Ґв ўлЄ«о祭 . ќвЁ
 ¤аҐб  Ї®ав®ў ЇаЁ¬Ґ­Ё¬л Ё Є AT, е®вп ®­ Ё ­Ґ Ё¬ҐҐв ¬ЁЄа®б奬л
Ё­вҐадҐ©б  б ЇҐаЁдҐаЁҐ© 8255.
‘­ з «  бЄ ­-Є®¤  ­ «Ё§ЁагҐвбп ­  ЇаҐ¤¬Ґв в®Ј®, Ўл«  «Ё Є« ўЁ-
и  ­ ¦ в  (Є®¤ ­ ¦ вЁп) Ё«Ё ®вЇг饭  (Є®¤ ®бў®Ў®¦¤Ґ­Ёп). Ќ  ўбҐе
¬ иЁ­ е, Єа®¬Ґ AT, Є®¤ ®бў®Ў®¦¤Ґ­Ёп Ё­¤ЁжЁагҐвбп гбв ­®ўЄ®© ЎЁв 
7 бЄ ­-Є®¤  ў 1. „«п AT, г Є®в®а®Ј® ЎЁв 7 ўбҐЈ¤  а ўҐ­ 0, Є®¤
®бў®Ў®¦¤Ґ­Ёп б®бв®Ёв Ё§ ¤ўге Ў ©в®ў: б­ з «  0F0H,   § вҐ¬
бЄ ­-Є®¤. ‚ᥠЄ®¤л ®бў®Ў®¦¤Ґ­Ёп ®вЎа блў овбп, Єа®¬Ґ б«гз п Є« -
ўЁи-ЇҐаҐЄ«оз вҐ«Ґ©, ¤«п Є®в®але ¤Ґ« овбп ᮮ⢥вбвўгойЁҐ Ё§¬Ґ­Ґ-
­Ёп ў Ў ©в е Ёе бв вгб . ‘ ¤агЈ®© бв®а®­л, ўбҐ Є®¤л ­ ¦ вЁп ®Ўа -
Ў влў овбп. ЏаЁ н⮬ ®Їпвм ¬®Јгв Ё§¬Ґ­пвмбп Ў ©вл бв вгб  Є« -
ўЁи-ЇҐаҐЄ«оз вҐ«Ґ©. ‚ б«гз Ґ ¦Ґ бЁ¬ў®«м­ле Є®¤®ў, ­ ¤® Їа®ўҐапвм
Ў ©вл бв вгб , зв®Ўл ®ЇаҐ¤Ґ«Ёвм, ­ ЇаЁ¬Ґа, зв® бЄ ­-Є®¤ 30 б®®в-
ўҐвбвўгҐв ­Ё¦­Ґ¬г Ё«Ё ўҐае­Ґ¬г ॣЁбваг ЎгЄўл A.
Џ®б«Ґ в®Ј® Є Є ўўҐ¤Ґ­­л© бЁ¬ў®« Ё¤Ґ­вЁдЁжЁа®ў ­, Їа®жҐ¤га 
ўў®¤  б Є« ўЁ вгал ¤®«¦­  ­ ©вЁ ᮮ⢥вбвўгойЁ© Ґ¬г Є®¤ ASCII Ё«Ё
а биЁаҐ­­л© Є®¤. ЏаЁўҐ¤Ґ­­л© ЇаЁ¬Ґа б«ЁиЄ®¬ Є®а®в®Є, зв®Ўл а б-
ᬮваҐвм ўбҐ б«гз Ё. ‚ ®ЎйҐ¬ б«гз Ґ бЄ ­-Є®¤л б®Ї®бв ў«повбп
н«Ґ¬Ґ­в ¬ в Ў«Ёжл ¤ ­­ле, Є®в®а п  ­ «Ё§ЁагҐвбп Ё­бвагЄжЁҐ© XLAT.
XLAT ЇаЁ­Ё¬ Ґв ў AL зЁб«® ®в 0 ¤® 255,   ў®§ўа й Ґв ў AL 1-Ў ©в-
­®Ґ §­ зҐ­ЁҐ Ё§ 256-Ў ©в­®© в Ў«Ёжл, ­  Є®в®аго гЄ §лў Ґв DS:BX.
’ Ў«Ёж  ¬®¦Ґв ­ е®¤Ёвмбп ў ᥣ¬Ґ­вҐ ¤ ­­ле. …б«Ё ў AL ­ е®¤Ё«бп
бЄ ­-Є®¤ 30, в® вг¤  Ўг¤Ґв Ї®¬ҐйҐ­ Ё§ в Ў«Ёжл Ў ©в ­®¬Ґа 30 (31-©
Ў ©в, в Є Є Є ®вбзҐв ­ зЁ­ Ґвбп б ­г«п). ќв®в Ў ©в ў в Ў«ЁжҐ
¤®«¦Ґ­ Ўлвм гбв ­®ў«Ґ­ а ў­л¬ 97, ¤ ў п Є®¤ ASCII ¤«п "a". Љ®­Ґз-
­® ¤«п Ї®«г祭Ёп § Ј« ў­®© A ­г¦­  ¤агЈ п в Ў«Ёж , Є Є®в®а®©
®Ўа йҐ­ЁҐ Ўг¤Ґв Їа®Ёб室Ёвм, Ґб«Ё бв вгб б¤ўЁЈ  гбв ­®ў«Ґ­. €«Ё
§ Ј« ў­лҐ ЎгЄўл ¬®Јгв еа ­Ёвмбп ў ¤агЈ®© з бвЁ в®© ¦Ґ в Ў«Ёжл, ­®
ў н⮬ б«гз Ґ Є бЄ ­-Є®¤г ­ ¤® Ўг¤Ґв ¤®Ў ў«пвм ᬥ饭ЁҐ, ®ЇаҐ¤Ґ-
«пҐ¬®Ґ бв вгᮬ Є« ўЁи-ЇҐаҐЄ«оз вҐ«Ґ©.
Ќ Є®­Ґж, ­®¬Ґа  Є®¤®ў ¤®«¦­л Ўлвм Ї®¬ҐйҐ­л ў ЎгдҐа Є« ўЁ вгал.
Џа®жҐ¤га  ¤®«¦­  б­ з «  Їа®ўҐаЁвм, Ё¬ҐҐвбп «Ё ў ЎгдҐаҐ ¬Ґбв® ¤«п
б«Ґ¤го饣® бЁ¬ў®« . ‚ [3.1.1] Ї®Є § ­®, зв® нв®в ЎгдҐа гбв஥­
Є Є жЁЄ«ЁзҐбЄ п ®зҐаҐ¤м. џзҐ©Є  Ї ¬пвЁ 0040:001A ᮤҐа¦Ёв гЄ § -
вҐ«м ­  Ј®«®ўг ЎгдҐа ,   0040:001C - гЄ § вҐ«м ­  еў®бв. ќвЁ
б«®ў­лҐ гЄ § вҐ«Ё ¤ ов ᬥ饭ЁҐ ў ®Ў« бвЁ ¤ ­­ле BIOS (Є®в®а п
­ зЁ­ Ґвбп ў ᥣ¬Ґ­вҐ 40H) Ё ­ е®¤пвбп ў ¤Ё Ї §®­Ґ ®в 30 ¤® 60.
Ќ®ўлҐ бЁ¬ў®«л ўбв ў«повбп ў п祩ЄЁ ЎгдҐа  б Ў®«ҐҐ бв аиЁ¬Ё  ¤аҐ-
б ¬Ё,   Є®Ј¤  ¤®бвЁЈ­гв  ўҐае­пп Ја ­Ёж , в® б«Ґ¤гойЁ© бЁ¬ў®«
ЇҐаҐ­®бЁвбп ў ­Ё¦­Ё© Є®­Ґж ЎгдҐа . Љ®Ј¤  ЎгдҐа Ї®«®­, в® гЄ § -
⥫м еў®бв  ­  2 ¬Ґ­миҐ гЄ § вҐ«п ­  Ј®«®ўг - Єа®¬Ґ б«гз п, Є®Ј¤ 
гЄ § вҐ«м ­  Ј®«®ўг а ўҐ­ 30 (­ з «® ®Ў« бвЁ ЎгдҐа ),   ў н⮬
б«гз Ґ ЎгдҐа Ї®«®­, Є®Ј¤  гЄ § вҐ«м еў®бв  а ўҐ­ 60.
„«п ўбв ўЄЁ бЁ¬ў®«  ў ЎгдҐа, ­ ¤® Ї®¬ҐбвЁвм ҐЈ® ў Ї®§ЁжЁо, ­ 
Є®в®аго гЄ §лў Ґв еў®бв ЎгдҐа  Ё § вҐ¬ 㢥«ЁзЁвм гЄ § вҐ«м еў®бв 
­  2; Ґб«Ё гЄ § вҐ«м еў®бв  Ўл« а ўҐ­ 60, в® ­ ¤® Ё§¬Ґ­Ёвм ҐЈ®
§­ зҐ­ЁҐ ­  30. ‚®в Ё ўбҐ. ‘奬  ЇаҐалў ­Ёп Є« ўЁ вгал Ї®Є § ­ 
­  аЁб. 3-4.

ЌЁ§ЄЁ© га®ўҐ­м.

ќд䥪⨢­ п Їа®жҐ¤га  вॡгҐв Ј«гЎ®Є®Ј® Їа®¤г¬лў ­Ёп. ‚ н⮬
ЇаЁ¬ҐаҐ ¤ ­л в®«мЄ® б ¬лҐ § з вЄЁ. Ћ­ ЇаЁ­Ё¬ Ґв в®«мЄ® ЎгЄўл ­ 
­Ё¦­Ґ¬ Ё ўҐае­Ґ¬ ॣЁбва е, ЇаЁзҐ¬ ўбҐ ®­Ё § Ја㦥­л ў ®¤­г в Ў-
«Ёжг, ў Є®в®а®© ЎгЄўл ўҐае­ҐЈ® ॣЁбва  ­ е®¤пвбп ­  100 Ў ©в
ўлиҐ, 祬 Ёе ¬« ¤иЁҐ Ўа вмп. Ђ­ «Ё§ЁагҐвбп в®«мЄ® «Ґў п Є« ўЁи 
б¤ўЁЈ  Ё ⥪г饥 б®бв®п­ЁҐ Є« ўЁиЁ CapsLock ЁЈ­®аЁагҐвбп.

;---ў ᥣ¬Ґ­вҐ ¤ ­­ле
TABLE DB 16 DUP(0) ;Їа®ЇгбЄ Ґ¬ 1-Ґ 16 Ў ©в
DB 'qwertyuiop',0,0,0,0 ;ўҐае­Ё© ап¤ Є« ўЁ вгал
DB 'asdfghjkl',0,0,0,0,0 ;б।­Ё© ап¤ Є« ўЁ вгал
DB 'zxcvbnm' ;­Ё¦­Ё© ап¤ Є« ўЁ вгал
DB 16 DUP(0) ;Їа®ЇгбЄ ¤® ўҐае­ҐЈ® ॣЁбва 
DB 'QWERTYUIOP',0,0,0,0 ;⥠¦Ґ бЁ¬ў®«л ­  ўҐае­Ґ¬
DB 'ASDFGHJKL',0,0,0,0,0 ;ॣЁбваҐ
DB 'ZXCVBNM' ;
;---ў ­ з «Ґ Їа®Ја ¬¬л гбв ­ ў«Ёў Ґ¬ ЇаҐалў ­ЁҐ
CLI ;§ ЇаҐв ЇаҐалў ­Ё©
PUSH DS ;б®е࠭塞 ॣЁбва
MOV AX,SEG NEW_KEYBOARD ;DS:DX ¤®«¦­л гЄ §лў вм ­ 
MOV DS,AX ;Їа®жҐ¤гаг ®Ўа Ў®вЄЁ
MOV DX,OFFSET NEW_KEYBOARD ;ЇаҐалў ­Ёп
MOV AL,9 ;­®¬Ґа ўҐЄв®а  ЇаҐалў ­Ёп
MOV AH,25H ;­®¬Ґа дг­ЄжЁЁ DOS
INT 21H ;¬Ґ­пҐ¬ ўҐЄв®а ЇаҐалў ­Ёп
POP DS ;ў®ббв ­ ў«Ёў Ґ¬ ॣЁбва
STI ;а §аҐи Ґ¬ ЇаҐалў ­Ёп

Џа®Ја ¬¬  Їа®¤®«¦ Ґвбп, § вҐ¬ ®бв ў пбм १Ё¤Ґ­в­®© [1.3.4].

;---нв® б ¬® ЇаҐалў ­ЁҐ Є« ўЁ вгал
NEW_KEYBOARD PROC FAR ;б®е࠭塞 ўбҐ Ё§¬Ґ­пҐ¬лҐ
PUSH AX ;ॣЁбвал
PUSH BX ;
PUSH CX ;
PUSH DI ;
PUSH ES ;
;---Ї®«гз Ґ¬ бЄ ­-Є®¤ Ё Ї®бл« Ґ¬ бЁЈ­ « Ї®¤вўҐа¦¤Ґ­Ёп
IN AL,60H ;Ї®«гз Ґ¬ бЄ ­-Є®¤ Ё§ Ї®ав  A
MOV AH,AL ;Ї®¬Ґй Ґ¬ Є®ЇЁо ў AH
PUSH AX ;б®е࠭塞 бЄ ­-Є®¤
IN AL,61H ;зЁв Ґ¬ б®бв®п­ЁҐ Ї®ав  B
OR AL,10000000B ;гбв ­ ў«Ёў Ґ¬ ЎЁв 7
OUT 61H,AL ;Ї®бл« Ґ¬ Ё§¬Ґ­Ґ­­л© Ў ©в ў Ї®ав
AND AL,01111111B ;бЎа блў Ґ¬ ЎЁв 7
OUT 61H,AL ;ў®§ўа й Ґ¬ б®бв®п­ЁҐ Ї®ав  B
;---ES ¤®«¦Ґ­ гЄ §лў вм ­  ®Ў« бвм ¤ ­­ле BIOS
MOV AX,40H ;гбв ­ ў«Ёў Ґ¬ ᥣ¬Ґ­в
MOV ES,AX ;
POP AX ;ў®§ўа й Ґ¬ бЄ ­-Є®¤ Ё§ б⥪ 
;---Їа®ўҐаЄ  Є« ўЁиЁ б¤ўЁЈ 
CMP AL,42 ;­ ¦ в «Ґўл© б¤ўЁЈ?
JNE KEY_UP ;­Ґв - ᬮваЁ¬ б«Ґ¤го饥
MOV BL,1 ;¤  - Ё§¬Ґ­пҐ¬ ЎЁв бв вгб 
OR ES:[17H],BL ;¬Ґ­пҐ¬ Їаאַ ॣЁбва бв вгб 
JMP QUIT ;ўл室 Ё§ Їа®жҐ¤гал
KEY_UP: CMP AL,170 ;«Ґўл© б¤ўЁЈ ®вЇг饭?
JNE NEXTKEY ;­Ґв - ᬮваЁ¬ б«Ґ¤го饥
MOV BL,11111110B ;¤  - ¬Ґ­пҐ¬ ЎЁв бв вгб 
AND ES:[17H],BL ;¬Ґ­пҐ¬ Їаאַ ॣЁбва бв вгб 
JMP QUIT ;ўл室 Ё§ Їа®жҐ¤гал
NEXTKEY: ;Їа®б¬®ва ¤агЈЁе ЇҐаҐЄ«оз вҐ«Ґ©
;---нв® бЁ¬ў®«м­ п Є« ўЁи  - Ё­вҐаЇаҐвЁа㥬 бЄ ­-Є®¤
TEST AL,10000000B ;Є®¤ ®бў®Ў®¦¤Ґ­Ёп Є« ўЁиЁ?
JNZ QUIT ;¤  - ўл室Ё¬ Ё§ Їа®жҐ¤гал
MOV BL,ES:[17H] ;Ё­ зҐ ЎҐаҐ¬ Ў ©в бв вгб 
TEST BL,00000011B ;Є« ўЁи  б¤ўЁЈ  ­ ¦ в ?
JZ CONVERT_CODE ;­Ґв - г室Ё¬ ¤ «миҐ
ADD AL,100 ;¤  - §­ зЁв § Ј« ў­ п ЎгЄў 
CONVERT_CODE: MOV BX,OFFSET TABLE ;Ј®в®ўЁ¬ в Ў«Ёжг
XLAT TABLE ;ЇаҐ®Ўа §гҐ¬ бЄ ­-Є®¤ ў ASCII
CMP AL,0 ;ў®§ўа йҐ­ 0?
JE QUIT ;Ґб«Ё ¤ , в® ­  ўл室
;---Є®¤ Є« ўЁиЁ Ј®в®ў, Їа®ўҐа塞 ­Ґ Ї®«®­ «Ё ЎгдҐа Є« ўЁ вгал
MOV BX,1AH ;ᬥ饭ЁҐ гЄ § вҐ«п ­  Ј®«®ўг
MOV CX,ES:[BX] ;Ї®«гз Ґ¬ ҐЈ® §­ зҐ­ЁҐ
MOV DI,ES:[BX]+2 ;Ї®«гз Ґ¬ гЄ § вҐ«м еў®бв 
CMP CX,60 ;Ј®«®ў  ­  ўҐаиЁ­Ґ ЎгдҐа ?
JE HIGH_END ;¤  - ЇҐаҐе®¤Ё¬ Є бЇҐж. б«гз о
INC CX ;㢥«ЁзЁў Ґ¬ гЄ § вҐ«м Ј®«®ўл
INC CX ;­  2
CMP CX,DI ;ба ў­Ёў Ґ¬ б гЄ § вҐ«Ґ¬ еў®бв 
JE QUIT ;Ґб«Ё а ў­л, в® ЎгдҐа Ї®«®­
JMP GO_AHEAD ;Ё­ зҐ ўбв ў«пҐ¬ бЁ¬ў®«
HIGH_END: CMP DI,30 ;Їа®ўҐаЄ  бЇҐж. б«гз п
JE QUIT ;Ґб«Ё ЎгдҐа Ї®«®­, в® ўл室
;---ЎгдҐа ­Ґ Ї®«®­ - ўбв ў«пҐ¬ ў ­ҐЈ® бЁ¬ў®«
GO_AHEAD: MOV ES:[DI],AL ;Ї®¬Ґй Ґ¬ бЁ¬ў®« ў Ї®§ЁжЁо еў®бв 
CMP DI,60 ;еў®бв ў Є®­жҐ ЎгдҐа ?
JNE NO_WRAP ;Ґб«Ё ­Ґв, в® ¤®Ў ў«пҐ¬ 2
MOV DI,28 ;Ё­ зҐ гЄ § вҐ«м еў®бв  = 28+2
NO_WRAP: ADD DI,2 ;Ї®«гз Ґ¬ ­®ў®Ґ §­ зҐ­ЁҐ еў®бв 
MOV ES:[BX]+2,DI ;Ї®бл« Ґ¬ ҐЈ® ў ®Ў« бвм ¤ ­­ле
;---§ ўҐа襭ЁҐ ЇаҐалў ­Ёп
QUIT: POP ES ;ў®ббв ­ ў«Ёў Ґ¬ Ё§¬Ґ­пҐ¬лҐ
POP DI ;ॣЁбвал
POP CX ;
POP BX ;
POP AX ;
MOV AL,20H ;ўл¤ Ґ¬ бЁЈ­ « ®Ў ®Є®­з ­ЁЁ
OUT 20H,AL ; ЇЇ а в­®Ј® ЇаҐалў ­Ёп
IRET ;ў®§ўа в Ё§ ЇаҐалў ­Ёп
NEW_KEYBOARD ENDP
Соседние файлы в папке Клавиатура