Исправления к русификатору экрана и клавиатуры для 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-файлов здесь нет: см. «Правовой статус».
/ALTу загруженного драйвера: если он загружен без/ALT(умолчание FIX3), альтернативной раскладки в резиденте нет — выводится/Alt ignored, нужно выгрузить и загрузить заново с/ALT=…. Раньше/ALTмолча игнорировался. Если загружен с/ALTили/BASE, меняется на лету.- Опечатки в сообщениях. Резидентная часть не изменилась (версия интерфейса 8.4): FIX4 выгружает и меняет резидент 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, которым он загружен.
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/).
- Скачайте
keyrus_fix2.zipиз поста BolenB (ссылка выше) и положите в корень репозитория. Сборка сверяет исходники в архиве сdev/fix2.sha256. - Соберите:
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 — репозиторий будет удалён.