KEY: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
(Новая страница: «'''KEY''' — стандартное слово Каллисто. {{нет иллюстраций}} {{заготовка}} Категория:Слова К…»)
 
Нет описания правки
 
(не показаны 44 промежуточные версии этого же участника)
Строка 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}}
* См. слова [[EKEY]], [[INKEY]]
* Слово [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]]

Текущая версия от 08:21, 24 января 2020

KEY (клавиша) — стандартное слово Каллисто. Ввод литеры с клавиатуры.

KEY            ( −− c )                             Ввод литеры с клавиатуры.
Пример работы слова KEY

Выводит текстовый курсор и ожидает ввод литеры с алфавитно-цифровой клавиатуры. После ввода убирает курсор и кладёт на стек код введённой литеры.

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

Ввод слова KEY[править]

В режиме ЛАТ последовательно нажмите три клавиши  9   ИП    ,  

KEY в стандарте ANS Forth[править]

 6.1.1750   KEY                                                             CORE
            ( -- char )
            Получает один символ char, член определенного реализацией набора 
            символов. События клавиатуры, которые не соответствуют таким 
            символам игнорируются, пока не получен допустимый символ, и 
            впоследствии будут недоступны.

            Могут быть получены все стандартные символы. Символы, полученные 
            KEY, не отображаются.

            Любой стандартный символ, возвращенный KEY имеет числовое значение 
            определенное в 3.1.2.1 Графические символы. Программы, которые 
            требуют способности к получению управляющих символов, имеют 
            зависимость от окружения.

        См.: 10.6.2.1307 EKEY, 10.6.1.1755 KEY?.

История[править]

Слово KEY является одним из наиболее старых и устоявшихся слов Форта. Оно появилось в Форте в 1965 году, когда Чак Мур подрабатывал наёмным программистом в городе Нью-Йорк. Тогда появились миникомпьютеры, а с ними и терминалы. Интерпретатор был идеален для ввода с телетайпа.

Тогда же появилось слово EXPECT — цикл, вызывающий KEY для чтения нажатий на клавиши. В 1994 году слово EXPECT было заменено на более продуманное слово ACCEPT, которое и вошло в Каллисто.

KEY в предыдущем стандарте Forth-83 (англ.)[править]

      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

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.

Реализация[править]

 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                    ; Подождать ввода литеры с клавиатуры, при вводе положить её код на стек.

Советская реализация[править]

Слово KEY в ФОРТ-ЕС было примитивом. Вот его описание и опубликованная часть определения:

KEY    ->С ВВЕСТИ ЛИТЕРУ С ТЕРМИНАЛА                             6

                    Экран номер 6
( 09.09.86 KEY CR EMIT TYPE (EXPECT/ RBLK MBLK )
(  следующие определения дают только имена процедур)

CODE KEY  ( ->С  ВВЕСТИ ЛИТЕРУ  С  ТЕРМИНАЛА )     END-CODE

В FORTH ИТЭФ слово KEY также было примитивом, вот его определение:

   ;         ** Терминал **

             HEAD    203Q,'KE',331Q,KEY                   ; KEY
             SUB   AH, AH
             INT   22
             SUB   AH, AH
             PUSH  AX
             NEXT

Ссылки[править]


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.