Редактирование: KEY

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 1: Строка 1:
'''KEY''' (клавиша) — стандартное слово [[Каллисто]]. Ввод литеры с клавиатуры.
KEY            ( −− c )                            Ввод литеры с клавиатуры.
[[Файл:CallistoKey.png|thumb|right|264px|Пример работы слова KEY]]
[[Файл:CallistoKey.png|thumb|right|264px|Пример работы слова KEY]]
Выводит текстовый курсор и ожидает ввод [[Знакогенератор|литеры]] с алфавитно-цифровой клавиатуры. После ввода убирает курсор и  кладёт на [[Стек данных|стек]] [[Знакогенератор|код введённой литеры]].
'''KEY''' (клавиша) — стандартное слово [[Каллисто]]. Ввод символа с клавиатуры.


Одна литера может потребовать нажатия нескольких клавиш, например переключения алфавитов. Если вам нужно нажатие точно одной клавиши ЭКВМ, используйте слово [[EKEY]]. Слово [[INKEY]] позволяет узнать, какая клавиша нажата, не останавливая приложение. Для отображения введённой литеры используйте слово [[EMIT]].
Выводит текстовый курсор и ожидает ввод [[Знакогенератор|символа]] с клавиатуры. После ввода убирает курсор и посылает [[Знакогенератор|код введённого символа]] в [[Стек данных|стек]].
 
Один символ может потребовать нажатия нескольких клавиш, например переключение алфавитов. Если вам нужно нажатие точно одной клавиши ЭКВМ, используйте слово [[EKEY]]. Слово [[INKEY]] позволяет узнать, какая клавиша нажата, не останавливая программу.


== Ввод слова KEY ==
== Ввод слова KEY ==
Строка 10: Строка 10:


== KEY в стандарте ANS Forth ==
== KEY в стандарте ANS Forth ==
<PRE>
  6.1.1750  KEY                                                            CORE
  6.1.1750  KEY                                                            CORE
             ( -- char )
             ( -- char )
Строка 27: Строка 26:


         См.: 10.6.2.1307 EKEY, 10.6.1.1755 KEY?.
         См.: 10.6.2.1307 EKEY, 10.6.1.1755 KEY?.
</PRE>


== История ==
== KEY в предыдущем стандарте Forth-83 (англ.) ==
Слово KEY является одним из наиболее старых и устоявшихся слов Форта. Оно появилось в Форте в 1965 году, когда Чак Мур подрабатывал наёмным программистом в городе Нью-Йорк. Тогда появились миникомпьютеры, а с ними и терминалы. Интерпретатор был идеален для ввода с телетайпа.
 
Тогда же появилось слово EXPECT — цикл, вызывающий KEY для чтения нажатий на клавиши. В 1994 году слово EXPECT было заменено на более продуманное слово [[ACCEPT]], которое и вошло в [[Каллисто]].
 
=== 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: Строка 43:
       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 в fig-FORTH Release 1 glossary, май 1979 (англ.) ==
  KEY          ---  c                            L0
  KEY          ---  c                            L0
         Leave the ascii value of the next terminal key struck.
         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}}
* См. слова [[EKEY]], [[INKEY]]
* См. слова [[EKEY]], [[INKEY]]
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1750 KEY] в стандарте ANS Forth ''(англ.)''
* Слово [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://www.forth200x.org/documents/html3/core/KEY.html KEY] и [http://www.forth200x.org/documents/html3/rationale.html#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] ''(англ.)''




Строка 115: Строка 63:
[[Категория:Примитивы]]
[[Категория:Примитивы]]
[[Категория:Терминальный ввод/вывод Каллисто]]
[[Категория:Терминальный ввод/вывод Каллисто]]
[[Категория:Стандартные слова]]
[[Категория:Слова Каллисто без стековых диаграмм]]
[[Категория:1994 CORE]]
[[Категория:2012 CORE]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)
Источник — https://pmk.the-hacker.ru/KEY