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

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

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

Текущая версия Ваш текст
Строка 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 (англ.) ===
<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"


== KEY в предыдущем стандарте Forth-83 (англ.) ==
       9.5.1    KEY
       9.5.1    KEY


Строка 51: Строка 32:
       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            -- 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]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

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

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