Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
| '''KEY''' (клавиша) — стандартное слово [[Каллисто]]. Ввод литеры с клавиатуры. | | '''KEY''' — стандартное слово [[Каллисто]]. |
| KEY ( −− c ) Ввод литеры с клавиатуры.
| |
| [[Файл:CallistoKey.png|thumb|right|264px|Пример работы слова KEY]]
| |
| Выводит текстовый курсор и ожидает ввод [[Знакогенератор|литеры]] с алфавитно-цифровой клавиатуры. После ввода убирает курсор и кладёт на [[Стек данных|стек]] [[Знакогенератор|код введённой литеры]].
| |
|
| |
|
| Одна литера может потребовать нажатия нескольких клавиш, например переключения алфавитов. Если вам нужно нажатие точно одной клавиши ЭКВМ, используйте слово [[EKEY]]. Слово [[INKEY]] позволяет узнать, какая клавиша нажата, не останавливая приложение. Для отображения введённой литеры используйте слово [[EMIT]].
| | Ожидает ввод [[Знакогенератор|символа]] с клавиатуры, при вводе посылает его код в [[Стек данных|стек]]. |
|
| |
|
| == Ввод слова KEY ==
| |
| В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите три клавиши [[Клавиша 9|{{Серая клавиша|9}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша ,|{{Серая клавиша|1=<span style="position:relative;bottom:3px"> , </span>}}]]
| |
|
| |
|
| == KEY в стандарте ANS Forth == | | == KEY в стандарте ANS Forth == |
| <PRE>
| |
| 6.1.1750 KEY CORE | | 6.1.1750 KEY CORE |
| ( -- char ) | | ( -- char ) |
Строка 27: |
Строка 21: |
|
| |
|
| См.: 10.6.2.1307 EKEY, 10.6.1.1755 KEY?. | | См.: 10.6.2.1307 EKEY, 10.6.1.1755 KEY?. |
| </PRE>
| |
|
| |
|
| == История ==
| |
| Слово KEY является одним из наиболее старых и устоявшихся слов Форта. Оно появилось в Форте в 1965 году, когда Чак Мур подрабатывал наёмным программистом в городе Нью-Йорк. Тогда появились миникомпьютеры, а с ними и терминалы. Интерпретатор был идеален для ввода с телетайпа.
| |
|
| |
|
| Тогда же появилось слово EXPECT — цикл, вызывающий KEY для чтения нажатий на клавиши. В 1994 году слово EXPECT было заменено на более продуманное слово [[ACCEPT]], которое и вошло в [[Каллисто]].
| | == KEY в предыдущем стандарте Forth-83 (англ.) == |
| | |
| === KEY в предыдущем стандарте Forth-83 (англ.) ===
| |
| <PRE>
| |
| KEY -- 16b M,83 | | KEY -- 16b M,83 |
| The least-significant 7 bits of 16b is the next ASCII | | The least-significant 7 bits of 16b is the next ASCII |
Строка 51: |
Строка 39: |
| environmental dependencies may only use the least significant 7- | | environmental dependencies may only use the least significant 7- |
| bit ASCII character received by KEY . For example: KEY 127 AND | | bit ASCII character received by KEY . For example: KEY 127 AND |
| </PRE>
| |
|
| |
|
| === KEY в стандарте Forth-79 (англ.) ===
| | |
| | == KEY в стандарте Forth-79 (англ.) == |
| KEY -- char 100 | | KEY -- char 100 |
| Leave the ASCII value of the next available character from the | | Leave the ASCII value of the next available character from the |
| current input device. | | current input device. |
|
| |
|
| === KEY в fig-FORTH Release 1 glossary, май 1979 (англ.) ===
| |
| KEY --- c L0
| |
| Leave the ascii value of the next terminal key struck.
| |
|
| |
| == Реализация ==
| |
| <pre>
| |
| 257 ;−−−−− ДРАЙВЕР КЛАВИАТУРЫ −−−−−
| |
| 258
| |
| 259 JKEY: GSB CHGET KM3 KGOTO9 ; Обработчик примитива KEY
| |
| …
| |
| 1178 ; ∗∗ Клавиатура ∗∗
| |
| 1179
| |
| 1180 ;#KEY
| |
| 1181 ; KEY ( −− c ) Ввести литеру с клавиатуры.
| |
| 1182 LKEY: .DB 3
| |
| 1183 .TEXT "KEY"
| |
| 1184 .DW LDISKOFF
| |
| 1185 KEY: .DW JKEY ; Подождать ввода литеры с клавиатуры, при вводе положить её код на стек.
| |
| </pre>
| |
|
| |
| === Советская реализация ===
| |
| Слово KEY в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и опубликованная часть определения:
| |
| <PRE>
| |
| KEY ->С ВВЕСТИ ЛИТЕРУ С ТЕРМИНАЛА 6
| |
|
| |
| Экран номер 6
| |
| ( 09.09.86 KEY CR EMIT TYPE (EXPECT/ RBLK MBLK )
| |
| ( следующие определения дают только имена процедур)
| |
|
| |
| CODE KEY ( ->С ВВЕСТИ ЛИТЕРУ С ТЕРМИНАЛА ) END-CODE
| |
| </PRE>
| |
|
| |
| В FORTH ИТЭФ слово KEY также было [[примитив]]ом, вот его определение:
| |
| <PRE>
| |
| ; ** Терминал **
| |
|
| |
| HEAD 203Q,'KE',331Q,KEY ; KEY
| |
| SUB AH, AH
| |
| INT 22
| |
| SUB AH, AH
| |
| PUSH AX
| |
| NEXT
| |
| </PRE>
| |
|
| |
|
| == Ссылки == | | == Ссылки == |
| * {{Исходник|KEY|KEY}} | | * [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1750 Слово KEY в стандарте ANS Forth] ''(англ.)'' |
| * См. слова [[EKEY]], [[INKEY]]
| | * [http://www.forth200x.org/documents/html/core.html#core:KEY Слово KEY в черновике Forth 200x] ''(англ.)'' и [http://www.forth200x.org/documents/html/rationale.html#rat:core:KEY комментарий к нему] ''(англ.)'' |
| * Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1750 KEY] в стандарте ANS Forth ''(англ.)''
| |
| * Слово [http://forth-standard.org/standard/core/KEY KEY] и [http://forth-standard.org/standard/rationale#rat:core:KEY комментарий к нему] в черновике Forth 200x ''(англ.)'' | |
| * [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\10.WWOD-WYWOD ВВОД-ВЫВОД] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
| |
| * [http://www.forth.com/starting-forth/sf10/sf10.html I/O and You] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''
| |
|
| |
|
|
| |
|
| | {{нет иллюстраций}} |
| {{заготовка}} | | {{заготовка}} |
| [[Категория:Слова Каллисто]] | | [[Категория:Слова Каллисто]] |
| [[Категория:Примитивы]]
| |
| [[Категория:Терминальный ввод/вывод Каллисто]] | | [[Категория:Терминальный ввод/вывод Каллисто]] |
| [[Категория:Стандартные слова]]
| |
| [[Категория:1994 CORE]]
| |
| [[Категория:2012 CORE]]
| |