
                            ИНСТРУКЦИЯ
                   по использованию программы KBR1
                           (версия 7.0)
                     разработчик А.И. Алесинский
                   р.(0-572)22-73-43 (с 12 до 22)
                   
                   310012, Харьков, ул. ССвердлова.4
                   ООО "Спецвузавтоматика", ГИРА

                   1. Назначение и основные особенности

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

     Резидентная  часть  программы  занимает  всего  480 байт (в 1,5-2
раза меньше чем у  практически всех программ аналогичного  назначения)
и   дополнительно   обеспечивает   удобную   индикацию   "русского"  /
"латинского" режимов клавиатуры ( в 78-й позиции 1-ой строки выводится
буква "Р" или "L" (на цветном  мониторе "Р" - красная, а "L" - синяя).
Индикатор изменяется в момент переключения режима и обновляется каждые
две секунды. Такая частота  обновления позволяет, не отвлекая сколько-
нибудь  значительно  ресурсы  ПК,   поддерживать  индикатор  доступным
практически непрерывно даже при работе с программами, выводящими в эту
область экрана часы, в тоже время не слишком мешая считывать показания
этих самых часов.

                   2. Работа с программой

     Для запуска  программы (если  она находится  в текущем  каталоге)
наберите в командной строке DOS (в зависимости от версии)

   KBR1

и  нажмите  на  Enter.   После  этого  для  переключения  клавиатуры в
"русский" режим достаточно  нажать  и отпустить  клавишу  Ctrl ( левую,
если на  Вашей клавиатуре  их две ).  Для возврата в "латинский" режим
просто  нажмите  и  отпустите  ее  еще  раз.  Программа  при  загрузке
контролирует  свое  наличие  в  памяти  и предотвращает загрузку в ОЗУ
нескольких  своих  копий.
     Если  Вам  понадобилось  ( или  же  просто  захотелось )  удалить
программу  KBR1 из  памяти наберите  в командной строке DOS

   KBR1 /x

( регистр несущественен ) и нажмите на Enter.
     Программа обрабатывает также следующие параметры:
/c - очистка  скэн-кодов  у  русских букв ( установлен по умолчанию );
/s - сохранение  скэн-кодов  у русских букв,  необходим  для  работы с
программой Ventura Publisher;
/lрathname - загрузить  раскладку  клавиатуры для русского регистра из
файла рathname. Длина файла - 118 байт, из них первые 94  байта - коды
символов  русского  регистра  в  порядке  кодов  латинского  регистра,
порождаемых темиже клавишами.  Остаток - таблица символов, нуждающихся
в специальной  обработке  при включенном режиме  CaрsLock, как правило
сюда  включаются  буквы,   "повешенные"  на клавиши,   порождающие  на
латинском регистре не буквы.  При этом  первая половина  этого остатка
включает полный список  таких символов, а вторая  - список символов, в
которые они должны быть перекодированы при включенном CaрsLock.
Например, в умалчиваемой раскладке
первая половина ХЪЖЭБЮхъжэбю ,
вторая половина хъжэбюХЪЖЭБЮ .
/?, /h - выдача подсказки;
/m  -  минимизировать  резидентную  часть  ( исключается  подпрограмма
индикации ).
/o - использовать старый метод загрузки ( предусмотрен на случай 
выявления каких-либо несовместимостей при новом методе загрузки ).
     Регистр для параметров не существенен, они могут идти подряд  или
разделяться  пробелами.  Обрабатываются  они  слева  направо  по  мере
извлечения из командной строки.  При этом обработка параметров  /x, /h
и /?  завершает выполнение программы  и следующие за ними параметры не
обрабатываются.

     Не рекомендуется  под  DR-DOS  загружать программу  KBR1  из файла
CONFIG.SYS командами install или hiinstall -  в некоторых конфигурациях
возможны  зависания при  загрузке.  При  загрузке из  AUTOEXEC.BAT  или
командной строки DOS подобных эффектов не обнаружено.

     Следует отметить, что  KBR1, загруженная без параметра /o утилитой
MEM  идентифицируется  как  область памяти,  принадлежащая DOS, а рядом 
ее аналогов ( например, TDMEM ) не замечается вовсе.

                   3. Сообщения программы

      Все сообщения программы выдаются в момент запуска. Нормальные
сообщения:
   - при запуске программы без параметров

╔════════════════════════════════════════════════════╗
║ Программа KBR1 (Russian keyboard) v.7.0 загружена  ║
║ Занято резидентно всего 480 байт !                 ║
║ Переключатель РУС/LAT- Ctrl (LeftCtrl)             ║
║ Введите KBR1 /x  для выгрузки драйвера             ║
║ или KBR1 /?  для получения помощи                  ║
║ Разработал А.И. Алесинский                         ║
║ по мотивам А.В. Козлова (В мире ПК,1988,2)         ║
║ FreeWare. Харьков, 05.04.92. т.8(057-2)22-73-43    ║
╚════════════════════════════════════════════════════╝

   - при запуске программы с параметром /x

Программа KBR1 выгружена

   - при запуске программы с параметром /c

Cкэн-коды у русских букв очищаются

   - при запуске программы с параметром /c
Cкэн-коды у русских букв сохраняются

   - при запуске программы с параметром /lpathname
Загружена новая раскладка

   - при запуске программы с параметром /? или /h выдается подсказка

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

     Сообщения об ошибках:
   - при запуске программы без параметров при обнаружении в памяти
ранее загруженной копии программы

Новая копия не загружается

   - при запуске программы с параметром /x, если в памяти не  найдена
ранее загруженная  копия программы  или обнаружено,  что установленные
программой KBR1 вектора прерываний ( 08h, 09h и 16h) изменены после ее
загрузки

Выгрузить невозможно - KBR1 не найдена
или прерывания перехвачены

   - при запуске программы с  неизвестным программе параметром

Недопустимый параметр - ничего, /?, /h, /c, /lpathname, /s или /x

   - при запуске программы с параметром /lpathname, если файл с именем
    pathname  не  существует  или  произошел  сбой  при  его открытии,
    чтении или позиционировании

Ошибка при открытии или обработке файла раскладки

   - при запуске программы с параметром /lpathname, если длина файла с
    именем pathname не равна 176

Hеверная длина файла раскладки


     При  выдаче сообщений  об ошибках устанавливается код возврата 1,
при  нормальном завершении - 0.  Сообщения  об ошибках  сопровождаются
жалобным писком.

                   4. Немного истории

     Версия 1.0 программы KBR1 появилась летом 1989 г. и, в  сущности,
была программой KBR А.В. Козлова, опубликованной в N 2 журнала "В мире
персональных компьютеров" за 1988 год (вышедшем  в свет в  1989 г.), в
которую мной были добавлены  индикация режима и поддержка  расширенных
клавиатурных функций BIOS.

     Версия 1.1 была написана зимой 1990 г. и содержала новый алгоритм
перекодировки и некоторые  менее существенные мзменения.  В результате
резидентная часть программы была сокращена более, чем на четверть.

     Версия 2.0  была написана  в начале  октября 1990  г. В  ней была
применена техника самоперемещающегося кода, и в результате резидентная
часть программы опять была сокращена более, чем на четверть.

     Версия 3.0 была написана 30 октября 1990 г. В ней была  добавлена
возможность выгрузки программы  из памяти и  усовершенствован механизм
обнаружения ранее загруженных копий программы.  Необходимость выгрузки
была  обусловлена  выявившейся  несовместимостью с  программой Ventura
Publisher.

     Версия 3.1 была  написана 1 ноября  1990 г. В  ней была добавлена
версия 3.1VP, совместимая с программой Ventura Publisher, и исправлена
застарелая ( еще  с версии 1.0  ) и ни  разу не проявившаяся  ошибка в
обработке   некоторых   расширенных    клавиатурных    функций   BIOS.
17.08.91 была  добавлена версия 3.1FP для обеспечения  удобства работы
фвтора с  FoxPro,  а 23 августа 1991 внесено  незначительное изменение
косметического характера во всех трех вариантах версии 3.1.

     Версия  4.0 написана  25 августа 1990 г. В ней  изменен  алгоритм
индикации  режима клавитуры,  так как  при работе  предыдущих версий с
некоторыми  графическими  программами  временами происходило искажение
изображения.
     К  сожалению,  это  изменение  имеет  и  отрицательные  стороны -
во-первых,  размер резидентной  части  возрос до  544 байт,  во-вторых,
обновление индикации  происходит только  при нажатии переключателя  или
обработке прерывания 10h (видео), что не всегда удобно.

     Версия 4.1 была написана 26 августа 1991 г.  В ней  опять изменен
алгоритм  индикации режима клавитуры, что  сократило резидентную часть
программы  до  496 байт.  К сожалению, это изменение не устранило всех
недостатков  предыдущего алгоритма  -  задержка индикации сохранилась.

     Версия 5.0 написана тоже 26 августа 1991 г.  В ней  снова изменен
алгоритм  индикации  режима  клавитуры,  что  позволило  ликвидировать
задержку индикации ценой  уведичения  резидентной  части  программы до
528 байт.

     День  26 августа 1991 г. оказался очень плодовитым  -  он породил
еще одну версию - 6.0. В ней произведена  реструктуризация резидентной
части, измененен  алгоритм обработки функций клавитуры,  что позволило
сократить  резидентную часть программы до  496 байт.  Жаль, но кажется
все  - еще 13 байт там выжать просто неоткуда!

     Как выяснилось,  бессоница имеет свои  преимущества - в ночь с 26
на 27 августа 1991 г. удалось  придумать способ  выстричь из программы
даже не 13,  а целых 18 байт, так что  версия 6.1 занимает  резидентно
только 480 байт.  Для этого пришлось  переписать обработку прерыввания
от таймера,  так что там осталось только  две команды и увеличить флаг
режима с одного бита  до двух байт -  при этом он слился с индикатором
состояния.  Исправлена также и старая  (с версии  1.1)  ошибка,  из-за
которой  при включенном режиме  CaрsLock твердый знак вводился как 'Ъ'
независимо от состояния клавиши Shift.

     При попытке поиграть в "трехмерный тетрис" (Blockout) выяснилось,
что версии  6.0 и  6.1  "подвешивают " эту  игру  -  в новом алгоритме
обработки функций клавиатуры  не было учтено,  что команда INT взводит
флаг   запрета  прерываний.  Эта  ошибка   исправлена  в  версии  6.2,
написанной 28 августа 1991 г.

     26.11.91 добавлена версия  KBR1u,  содержащая украинские буквы на
клавишах '`' ,'\', и '='. Размер резидентной части вырос до  512 байт.
Так ему и надо!

     05.04.92 написана версия  7.0. Из резидентной части выстрижены еще
несколько байт, которые впрочем ее размера не изменили,  так как память
распределяется параграфами.  Впрочем эта операция не совсем бесполезна,
Так как позволяет при необходимости увеличить число букв, повешенныx на
"небуквенные" клавиши без увеличения резидентной программы. Более важно
то,  что  в этой  версии  полностью  переделан  загрузчик, в результате 
размер резидентной части сокращен до 384 байт,  по крайней мере под DOS
3.00 и старше.  При этом применен,  по-видимому, самый простой алгоритм
создания  программ  без PSP.  Он навеян программой FDREAD, но несколько
отличается по исполнению. Добавлена возможность минимизации резидентной
части (при этом происходит постоянное отключение индикации).  В  MS-DOS
5.0  и  DR-DOS 5.0 и 6.0  происходит загрузка в UMB,  если он доступен,
независимо  от  использования программы  loadhigh или  hiload.  Функции 
версий vp и fp включены в основную версию ( для обеспечения функций  fp
достаточно создать раскладку, в которой на месте большого русского  "Н"
стоит латинское "H".
     Интересно отметить, что индикация оказалась совместимой даже с VGA
в режиме X (см. "Журнал доктора Добба" N3,1991.

                   5. Условия использования

     Hачиная  с  версии 3.1  программа  является  FreeWare  и  подлежит
свободному  БЕСПЛАТHОМУ  распространению  при условии распространения в
комплекте с документацией (данный файл) и при  сохранении информации об
авторе и других выходных данных в неизменном виде.

                   Добавление

     К программе KBR1 ( начиная с версии 1.1 ) существует сервисная
система KLAD, позволяющая пользователю в диалоговом режиме генериро-
вать варианты программы  KBR1.EXE c любой клавиатурной раскладкой и
предназначенные для работы с любой кодировкой русских букв, а также
производить  динамическую  смену раскладок  в загруженной  в память
программе. Справки в Харькове по тел.  (0-572)22-73-43 у автора или
30-27-42, 30-81-71 а/о "Инвестор".  
     С версией  7.0 эта программа не применима.

                   ╔═══════════════════════╗
                   ║ Счастливого плавания! ║
                   ╚═══════════════════════╝
