KEY

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.

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

Ссылки


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