Текущая версия |
Ваш текст |
Строка 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 ==
| |
| <PRE>
| |
| 6.1.1750 KEY CORE
| |
| ( -- char )
| |
| Получает один символ char, член определенного реализацией набора
| |
| символов. События клавиатуры, которые не соответствуют таким
| |
| символам игнорируются, пока не получен допустимый символ, и
| |
| впоследствии будут недоступны.
| |
|
| |
| Могут быть получены все стандартные символы. Символы, полученные
| |
| KEY, не отображаются.
| |
|
| |
| Любой стандартный символ, возвращенный KEY имеет числовое значение
| |
| определенное в 3.1.2.1 Графические символы. Программы, которые
| |
| требуют способности к получению управляющих символов, имеют
| |
| зависимость от окружения.
| |
|
| |
| См.: 10.6.2.1307 EKEY, 10.6.1.1755 KEY?.
| |
| </PRE>
| |
|
| |
| == История ==
| |
| Слово KEY является одним из наиболее старых и устоявшихся слов Форта. Оно появилось в Форте в 1965 году, когда Чак Мур подрабатывал наёмным программистом в городе Нью-Йорк. Тогда появились миникомпьютеры, а с ними и терминалы. Интерпретатор был идеален для ввода с телетайпа.
| |
|
| |
| Тогда же появилось слово EXPECT — цикл, вызывающий KEY для чтения нажатий на клавиши. В 1994 году слово EXPECT было заменено на более продуманное слово [[ACCEPT]], которое и вошло в [[Каллисто]].
| |
|
| |
| === KEY в предыдущем стандарте Forth-83 (англ.) ===
| |
| <PRE>
| |
| KEY -- 16b M,83
| |
| The least-significant 7 bits of 16b is the next ASCII
| |
| character received. All valid ASCII characters can be
| |
| received. Control characters are not processed by the
| |
| system for any editing purpose. Characters received by KEY
| |
| will not be displayed. See: "9.5.1 KEY"
| |
|
| |
| 9.5.1 KEY
| |
|
| |
| A Standard System must receive all valid ASCII characters. Each
| |
| KEY receives one ASCII character, with more-significant bits
| |
| environmentally dependent and might be zero. KEY must receive as
| |
| many bits as are obtainable. A Standard Program without
| |
| environmental dependencies may only use the least significant 7-
| |
| bit ASCII character received by KEY . For example: KEY 127 AND
| |
| </PRE>
| |
|
| |
| === KEY в стандарте Forth-79 (англ.) ===
| |
| KEY -- char 100
| |
| Leave the ASCII value of the next available character from the
| |
| 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]]
| |