[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]