Skip to content
LumenmanPublic

About

KEYRUS v8.0beta16 (DOS): FIX3, FIX4 и CP1125

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

KEYRUS v8.0beta16: FIX3, FIX4 и CP1125

Исправления к русификатору экрана и клавиатуры для DOS KEYRUS v8.0beta16 (© 1989–1994 Дмитрий Гуртяк, Донецк) и вариант драйвера для украинской кодовой страницы CP1125.

Patches (FIX3, FIX4) and a CP1125 build for KEYRUS v8.0beta16, a 1994 Russian screen/keyboard driver for DOS by the late Dmitry Gurtjak. The original sources are not included here; the build script takes them from the FIX1/FIX2 archive linked below.

История

  • v8.0beta16 (17.01.1994) — последняя версия автора. Дмитрия Гуртяка нет в живых, светлая ему память. Дистрибутив с исходниками: old-dos.ru.
  • FIX1, FIX2 (2024) — BolenB: old-games.ru. Стандартная раскладка Windows, шрифты из ega3.cpi, загрузка Win9x, NTVDM; rus/lat — правый Ctrl. Исходники оригинала в keyrus_fix2.zip побайтово совпадают с дистрибутивом с old-dos.ru.
  • FIX3, FIX4, CP1125 — этот репозиторий.

Что здесь

patches/FIX3.diff, FIX4.diff исправления относительно FIX2 (CP866, CRLF)
UAL.KBD, URL.KBD украинские раскладки для KEYRUS.COM (CP866)
UAL1125.KBD, URL1125.KBD те же раскладки для KEYR1125.COM
CP1125.TXT таблица CP1125 → Unicode для DOSBox-X
make1125.py генерирует *1125.KBD, CP1125.TXT и шрифты CP1125
dev/ сборка (TASM или JWasm) и тесты

UAL — украинская / псевдографика / латиница, URL — русская / украинская / латиница.

Исходников оригинала, FIX1/FIX2 и готовых COM-файлов здесь нет: см. «Правовой статус».

Изменения

FIX4

  • /ALT у загруженного драйвера: если он загружен без /ALT (умолчание FIX3), альтернативной раскладки в резиденте нет — выводится /Alt ignored, нужно выгрузить и загрузить заново с /ALT=…. Раньше /ALT молча игнорировался. Если загружен с /ALT или /BASE, меняется на лету.
  • Опечатки в сообщениях. Резидентная часть не изменилась (версия интерфейса 8.4): FIX4 выгружает и меняет резидент FIX3 той же сборки.

FIX3

  • Умолчания: переключение rus/lat — правый Ctrl, /ALT=OFF, /ALL /COMPRESS=OFF, /8X14=ON /8X16=ON. KEYRUS.DOC/.HLP из оригинала описывают старые умолчания.
  • Проверка длины: параметр до 255 байт, командная строка и @файл до 2048 байт. Длинный @файл больше не портит память.
  • Отложенная установка Int 09h (/DELAY_INIT) портила ES, последующие изменения не попадали в резидент.
  • Без единого шрифта видеоблок не устанавливается (кроме /ROM).
  • /RELEASE восстанавливал векторы, даже если после KEYRUS установлен другой обработчик (рвалась цепочка), и мог зависнуть с запрещёнными прерываниями при восстановлении Int 10h. Теперь сначала проверяются все векторы; при чужом обработчике выгрузка отклоняется.
  • /SAVE пишет во временный KR3SAVE.TMP и переименовывает: при ошибке записи исходный файл не портится. /KEYS, /FONT, /FILES проверяют ошибки чтения, записи и размер файла.
  • Int 16h AH=41h (программное переключение rus/lat) не работало, если выключены рамка, звук и лампочка.
  • /SCAN у загруженного драйвера меняет и клавишу LAT, если она совпадала с /SCAN; /LAT=OFF у загруженного драйвера работает.
  • Версия интерфейса 8.4: выгружать и менять резидент можно только тем же COM, которым он загружен.

CP1125

KEYR1125.COM — тот же код, в шрифтах 8x8, 8x14, 8x16 позиции F2h–F9h нарисованы по CP1125:

CP866:  Є є Ї ї Ў ў ° ∙
CP1125: Ґ ґ Є є І і Ї ї

Украинская раскладка:

S        і І   F7h F6h
]        ї Ї   F9h F8h
'        є Є   F5h F4h
\        ґ Ґ   F3h F2h
`        апостроф; Shift+` — ~
Shift+3  №     FCh

Сборка

Нужны Python 3, git, DOSBox-X (для TLINK и тестов) и ассемблер: TASM 5.x с TLINK 7.x (не входит, в TASM/) или JWasm 2.20 (JWasm.exe в dev/tools/jwasm/).

  1. Скачайте keyrus_fix2.zip из поста BolenB (ссылка выше) и положите в корень репозитория. Сборка сверяет исходники в архиве с dev/fix2.sha256.
  2. Соберите:
python dev/build_tasm.py --publish            KEYRUS.COM
python dev/build_tasm.py --cp1125 --publish   KEYR1125.COM
python dev/build.py                           JWasm: dev/build/KEYRUS.COM

Сборка накладывает на архив FIX1 и FIX2, затем patches/*.diff через git apply. TASM: /m5 /jJUMPS /dTASM_BUILD /l /z, TLINK: /t /x. Пути: --tools (TASM), --dosbox (по умолчанию D:/DOSBox-X/dosbox-x.exe).

python make1125.py пересоздаёт *1125.KBD и CP1125.TXT.

Запуск

Левый Alt переключает раскладки по кругу:

CHCP 866
KEYRUS /KEYS=URL.KBD /SCAN=56 /ALT=56 /LAT=56

или

CHCP 1125
KEYR1125 /KEYS=URL1125.KBD /SCAN=56 /ALT=56 /LAT=56

Драйвер загружает все 256 символов (/ALL /COMPRESS=OFF): режим /RUSSIAN заканчивается на F5h и не покрывает украинские буквы CP1125.

Для CHCP 1125 в DOSBox-X задайте в разделе [dos] файла dosbox-x.conf: customcodepage = 1125,<полный путь к CP1125.TXT>. В TrueType-выводе буквы рисует сам DOSBox-X, в пиксельных режимах — шрифты драйвера.

Тесты

pip install unicorn
cd dev
python test_code.py --tasm      машинный код с эмуляцией ошибок DOS (без --tasm — JWasm)
python test_dos.py --tasm       49 сценариев в DOSBox-X (--dosbox <путь>)
python ../test1125.py           KEYR1125 отличается от KEYRUS только глифами CP1125

Покрыто: ошибки файлов и /SAVE, /RELEASE, /SCAN и /LAT, INT 16h AH=41h, /ALT у резидента, обе раскладки CP1125, экспорт трёх шрифтов. test_dos.py сравнивает с FIX2 (dev/baseline.diff убирает из него шрифт 8x19). Реальное железо и NTVDM не проверялись.

Версия интерфейса: INT 16h AX=4100h возвращает BH=8, BL=4 (TASM) или BL=3 (JWasm). Смещения кода сборок различаются, поэтому выгрузка и изменение резидента разрешены только тому же COM, которым он загружен. В данных резидента по адресу 63h хранится адрес своего INT 10h; свободная область начинается с 65h.

Правовой статус

Оригинальный KEYRUS распространялся без лицензии; права на него принадлежат наследникам автора. FIX1 и FIX2 — работа BolenB. Поэтому здесь нет ни их исходников, ни собранных драйверов: только наши изменения в виде диффов (с несколькими строками контекста оригинала) и инструменты сборки.

Наша часть — диффы, *.KBD, CP1125.TXT, скрипты и тесты — под лицензией MIT (LICENSE). Если вы правообладатель и возражаете против публикации, напишите в Issues — репозиторий будет удалён.

About

KEYRUS v8.0beta16 (DOS): FIX3, FIX4 и CP1125

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages