[an error occurred while processing this directive]

.км Описания драйвера KEY 1.01.EXE

.ао0

.ло9

.по74

.кс0

.ми0

.лв

.тт

.шп16

.цв

FRIENDS' SOFTWARE 1994

DRIVER OF THE PROGRAMMABLE FUNCTIONAL KEYBOARD

.шп8

(Описание для программистов и пользователей)

.лв

.шп72

1.Введение

.шп0

Настоящий драйвер принадлежит библиотеке драйверов процедур, расширяющих возможности интерпретатора "Бейсик A.9.1". Версия1.01 ("Friends' software", by Serkov S.V.) написана 12.10.94 и поддерживает стандарт драйверов процедур фирмы от 1.08.94 (см. соответствующее описание). Если Вы являетесь владельцем более ранней версии драйвера (1.00), то не используйте ее так как она является экспериментальной, не лишена значительных неточностей и несовместима с форматом загружаемых клавиатурных наборов (далее КН), создаваемых программой "KEY MAKER".

Идея, благодаря которой появился на свет настоящий драйвер была взята автором из Бейсика фирмы "Microsoft". Она заключается главным образом в том, что с помощью драйвера Вы сможете присваивать клавишам функциональной клавиатуры (далее ФК) произвольные строковые выражения так, что последующее обращение к запрограммированной клавише (ее нажатие) будет эквивалентно набору того же выражения с клавиатуры. Таким образом одна клавиша сопоставляется с целой строкой, максимальная длина которой может составлять 20 символов.

Главные достоинства настоящей версии:

- возможность перепрограммировать клавиши ФК как в режиме диалога так и из BASIC-программы

- возможность использования для этого специальных загружаемых клавиатурных наборов, позволяющих моментально обновить весь КН(см. далее)

- возможность вводить с клавиатуры символы с кодами в диапазоне ¤20-¤3F, которые нельзя ввести с помощью стандартного ввода DOS

.сс

.шп72

2.Особенности загрузки драйвера

.шп0

Настоящая версия драйвера 1.01 является перемещаемой, загружается в стандартную оперативную память (далее ОП) и поддерживает связь с системой "Диспетчер 1.00".

Драйвер может быть загружен в ОП с произвольного адреса, допустимого для среды DOS 3.3 и интерпретатора. Запустить драйвер можно, например, командой DOS "BRUN".

Пример:

.шп1

}BRUN KEY 1.01.EXE,A¤3000

.шп0

или из BASIC-программы:

.шп1

10 PRINT CHR¤(4);"BRUN KEY 1.01.EXE,A¤3000"

.шп0

Без указания стартового адреса при загрузке драйвер размещается с адреса ¤4000 и занимает ¤A70 байт.

* Примечание:

При попытке повторной загрузки драйвера в режиме диалога будет выдана "ОШИБКА УСТАНОВКИ", а такое же действие из BASIC-программы будет сопровождено ошибкой "УЖЕ ЕСТЬ" или обработано согласно "ONERR GOTO" (подробнее см. Описание модуля "SETDRMOD.ASM (версия 15.08.94).

Размеры "отбрасываемых" зон (см. Описание стандарта от 1.08.94) следующие:

первая зона - ¤193 байта от A
адрес начала второй зоны - A+¤6B2 байт
(здесь A-стартовый адрес драйвера)

Запрограммированный набор функциональной клавиатуры (далее НФК) хранится отдельно от драйвера и не загружается в ОП вместе с ним. Он находится в банке "A" ОЗУ генплаты и занимает там 315 байт. В таблице КН хранятся запрограммированные значения клавиш а также длины этих значений. Этот клавиатурный набор создается динамически в процессе работы самого драйвера (см. описание команды "KEY") либо может быть загружен в готовом виде отдельно.

Если предположить, например, что банк "A" подключен к логическому сегменту 1, то НФК располагается на адресах ¤2001-¤213B, а байт ¤2000 является служебным (KEYFLAG) и определяет наличие или отсутствие КН в памяти. (При наличии КН KEYFLAG=¤02.)

При загрузке драйвер проверяет состояние КН по KEYFLAG. При отсутствии НФК драйвер инициализирует таблицу КН (обнуляет ее). Если же КН присутствует в ОП, то драйвер сохраняет старую клавиатуру.

Таким образом, сам драйвер, являясь перемещаемым, может располагаться в различных областях памяти, а за таблицей КН закреплено стандартное положение. Такое построение обеспечивает исключение конфликтных ситуаций и надежную сохранность КН. (Даже если Вы запускали на Вашем ПК различные системы с диска КН может сохраниться в памяти.)

.шп72

3.Команды драйвера

.шп0

Драйвер имеет набор специальных команд, позволяющих оперативно изменять содержимое КН, управлять его работой, а также общих служебных команд.

/Специальные команды/

A] &"KEY",N,X¤ - присвоить функциональной клавише с номером N строковое выражение X¤.

Значение N должно быть представлено числом или выражением, приводящим к числовому типу в формате интерпретатора и лежать в диапазоне от 1 до 15 включительно (всего клавиатура ПЭВМ имеет 15 функциональных клавиш). Дробная часть N (если таковая имеется) при интерпретации будет отброшена. Если N выходит за пределы указанного диапазона, то будет выдана ошибка "ОШИБОЧНОЕ ЗНАЧЕНИЕ". Клавиши ФК нумеруются следующим образом:

-------------------
!  N  !  клавиша  !
------------------!
!  1  !   "f1"    !
!  2  !   "f2"    !
!  3  !   "f3"    !
!  4  !   "f4"    !
!  5  !   "f5"    !
!  6  !   "f6"    !
!  7  !   "f7"    !
!  8  !   "f8"    !
!  9  !   "f9"    !
! 10  !   "f0"    !
! 11  !   "F1"    !
! 12  !   "F2"    !
! 13  !   "F3"    !
! 14  !   "f."    !
! 15  !   "f="    !
-------------------

Значение X¤ может иметь длину не более 20 символов и содержать произвольный набор знаков ASCII. При попытке запрограммировать клавишу выражением, имеющим длину больше указанной будет выдана ошибка "СТРОКА ДЛИННА".

Присвоение клавише "пустой" строки запрещает использование ее в качестве программированной. То есть такая клавиша при нажатии будет выдавать свой настоящий скэн-код. Если клавиатура инициализирована драйвером (при загрузке и соответствующем состоянии KEYFLAG), то все функциональные клавиши запрещены как программированные.

В процессе работы Вы можете переопределять клавиши сколько угодно не зависимо от состояния активности программируемой ФК (см. описания следующих команд). Это можно делать как в режиме диалога так и из BASIC-программы.

.сс

Пример 1

.шп1

&"KEY",1,"HOME"

.шп0

Команда запрограммирует клавишу "f1" выражением "HOME". При нажатии на клавишу (если активна ПФК) на экран будет выведено запрограммированное выражение. При нажатии клавиши "

" команда BASICа "HOME" будет исполнена.

Пример 2

.шп1

&"KEY",1,"HOME"+CHR¤(¤8D)

.шп0

Выражение X¤ может естественно содержать и управляющие коды. В данном примере вставка управляющего кода ¤8D (перевод строки) осуществляется функцией BASICа "CHR¤". При нажатии клавиши "f1", запрограммированной этим способом команда "HOME" будет выполнена сразу.

Пример 3

.шп1

10 A¤="HO":B¤="MELI":C=10:D=11
20 &"KEY",D-C,A¤+LEFT¤(B¤,2)+CHR¤(¤8D)

.шп0

Выражение X¤ должно быть представлено в формате строковых выражений интерпретатора, то есть может состоять из выражений заключенных в кавычки, строковых выражений и строковых функций.

Приведенный пример иллюстрирует эту возможность. Его результат эквивалентен примеру 2.

Пример 4

.шп1

&"KEY",1,"PRINT"+CHR¤(¤A2)+"BASIC"+CHR¤(¤A2)+CHR¤(¤8D)

.шп0

Как известно, тело оператора "PRINT" (без использования выражений) должно быть заключено в кавычки. Выражение X¤ должно быть представлено также. Однако команда &"KEY",1,"PRINT"BASIC""+CHR¤(¤8D) будет неверной и приведет к ошибке так как по правилам записи выражений нельзя использовать вложенные кавычки.

Избежать этого поможет косвенный прием, представленный в примере 4 и позволяющий составить нужное выражение. Код "¤A2" заменяет непосредственное использование кавычек. При нажатии на клавишу "f1" будет напечатано слово "BASIC".

Пример 5

.шп1

&"KEY",1,"CATALOG"+CHR¤(¤8D)

&"KEY",1,CHR¤(4)+"CATALOG"+CHR¤(¤8D)

.шп0

Очевидно нелишне напомнить, что код ¤4 или ¤84 является кодом обращения к DOS из BASIC-программы. По этому для присвоения клавишам ПФК команд DOS с целью пользоваться ФК из программы применяйте второе выражение примера 5. (Первое применяйте в режиме диалога.)

.сс

* Примечание

Есть другая возможность обновления наборов ПФК. Для этого следует использовать перемещаемые файлы загружаемых КН, создаваемых утилитной BASIC-программой "KEY MAKER", входящей в сборник 'MASTER II PRO'. (Подробнее см. описание этой программы.) Вместе с драйвером в качестве примера поставляется файл загружаемого КН "KEYNABR3.EXE".

Б] &"KEY_ON" - активизировать программированную ФК.

Оператор обеспечивает связь драйвера с системной программой ввода (разрешает использование ПФК). При отсутствии КН в памяти (KEYFLAG=2) в режиме диалога выдается сообщение "НАБОР ОТСУТСТВУЕТ". Если же это происходит в BASIC-программе, то будет выдана ошибка интерпретатора "МАЛО ДАННЫХ" или произведена соответствующая обработка по "ONERR GOTO".

В] &"KEY_OFF" - выключить ПФК.

При отключенной ПФК система возвращается в исходное состояние. Функциональные клавиши работают как обычно (выдают только свои скэн-коды). Однако клавиатурный набор в памяти сохраняется и Вы всегда можете вернуться к ПФК командой &"KEY_ON".

Г] &"KEY_LIST" - выдать на экран список клавиш ПФК и их значений.

При этом в режиме АЦР-32:

- номера клавиш отображаются желтым цветом

- обычный ASCII коды отображаются зеленым цветом

- управляющие коды отображаются голубой инверсией

- коды в диапазоне ¤00-¤1F (дублирующие управляющие) отображаются красным цветом

Если КН инициализирован, то на экран будет выведено сообщение "НАБОР ОТСУТСТВУЕТ".

/Общие команды/

A] &"LIST" - выдать на экран список команд драйвера.

Б] &"EXIT" - отключить драйвер и выйти из системы "Диспетчер" (см. соответствующее описание). Команда &"EXIT" также отключает и ПФК. Не забывайте отключать драйвер от системы, если не собираетесь больше с ним работать.

.шп72

4. Некоторые особенности работы системы при активной ПФК.

.шп0

А] При включенной ПФК оператор BASICа "GET" считывает один символ строки, заданной клавише. (при первом "GET" это первый символ, при втором - второй итд... При исчерпании строки "GET" вводит с клавиатуры (или, например, из файла).

Б] ПФК удобно использовать при обслуживании ввода оператором BASICа "INPUT".

Пример

.шп1

10 &"KEY",1,NAME¤+CHR¤(¤8D)
20 &"KEY_ON"
30 INPUT "Введите имя файла:";FILENAME¤
40 PRINT CHR¤(4);"RUN";FILENAME¤

.шп0

Если на запрос в строке 30 Вы нажмете клавишу "f1", то текст переменной NAME¤ автоматически станет именем файла, считываемого в строке 40.

В] Существуют случаи, когда система (DOS, BASIC) требуют ввода одного символа. DOS делает это, например, при исполнении команды "CATALOG", если выводимые имена файлов не умещаются на экране. Интерпретатор - при использовании оператора "GET".

Если в этих случаях Вы нажмете клавишу ПФК, то первый символ запрограммированной строки уйдет на данный запрос, а остальные (если таковые имеются) будут введены при следующем запросе ввода. Естественно, в этом случае целостность и смысл запрограммированного выражения будут нарушены. Особенно неблагоприятны такого рода последствия в BASIC-программах:

Пример

.шп1

5  &"KEY_ON"
10 &"KEY",1,"FILE1"+CHR¤(¤8D)
20 GET A¤

...

30 INPUT"Введите имя файла:";NAME¤

.шп0

Предположим на предложенный ввод в строке 20 Вы нажали клавишу "f1". Тогда, по выше описанной причине в переменную NAME¤ вместо ожидаемого имени "FILE1" автоматически (без запроса с клавиатуры) попадет выражение "ILE1". Чтобы этого избежать либо не пользуйтесь ПФК при запросе от оператора "GET" и односимвольных запросах DOS, либо отключайте на это время ПФК (что предпочтительнее) командой драйвера &"KEY_OFF".

.шп72

5. Особенности эксплуатации драйвера

.шп0

Драйвер вносит определенные изменения в систему (при подключении ПФК командой &"KEY_ON"). Естественно DOS с такими изменениями не может быть перенесена на другой диск командой "INIT". (Команды "INIT" и "FP" будут выдавать ошибку "СИСТЕМА ИСПОРЧЕНА".) Чтобы этого избежать отключите ПФК командой &"KEY_OFF" или драйвер вообще командой &"EXIT".

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

Избегайте загрузки двух драйверов "KEY 1.01.EXE" в систему "Диспетчер" (с разных стартовых адресов). Это может вызвать коллизию, когда, например, "активен" один драйвер, а за реакцию на ФК отвечает другой. Однако если Вам это для чего-нибудь нужно, то если Вы внимательны все будет работать правильно.

.шп72

6. Заключение

.шп0

По всем вопросам можно обращаться к автору по телефону:

.шп8

.цв

(095) 400-6865

.шп0; с 17 до 21 ежедневно.

[an error occurred while processing this directive]