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

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


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


== Ввод слова KEY ==
== Ввод слова KEY ==

Текущая версия от 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

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


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