[an error occurred while processing this directive]

FRIENDS' SOFTWARE 1995

DRIVER OF THE PROGRAMMABLE FUNCTIONAL KEYBOARD

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

1.Введение

Настоящий драйвер принадлежит библиотеке драйверов процедур, расширяющих возможности интерпретатора "Бейсик". Версия 1.03 ("Friends' software", by Serkov S.V.) функционально аналогична версии 1.01 (адаптирована специально для среды "BASIC-'MASTER'95) 23.09.95 и поддерживает стандарт драйверов процедур фирмы от 23.09.95 (см. соответствующее описание).

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

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

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

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

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

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

Настоящая версия драйвера 1.03 является перемещаемой, загружается в стандартную оперативную память (далее ОП) и поддерживает связь с системой "Диспетчер 2.0". Драйвер может предназначен только для среды "BASIC-'MASTER'95". При попытке запуска его в другой среде драйвер не активизируется.

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

Пример:

}BRUN KEY 1.03.EXE,A¤3000

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&"KEY"1,"HOME"

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

Пример 2

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

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

Пример 3

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

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

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

Пример 4

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

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

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

Пример 5

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

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

Очевидно нелишне напомнить, что код ¤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" также отключает и ПФК. Не забывайте отключать драйвер от системы, если не собираетесь больше с ним работать.

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

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

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

Пример

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

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

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

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

Пример

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

...

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

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

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

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

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

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

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

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

(095) 400-6865

[an error occurred while processing this directive]