Большинство русификаторов выпущеных до Windows9x эры, сделаны под раскладку клавиатуры Русская Машинопись (буква ёЁ стоит хрен знает где, или её вообще нет, ъЪ и знаки препинания расположены по другому).
Современные клавиатуры идут с раскладкой Русская Windows.
Не берем таких монстров русификации как KeyRus или RKM (в них можно сделать любую раскладку, на свой вкус).
Возмем некогда популярный RK.COM (A.Strakhov, AcademySoft). RK, А. Страхов - Старый DOS. Abandonware, старые игры и программы - скачать!
Сделаем раскладку клавиатуры Русская Windows как в стандартном dos (Windows) русификаторе.
С версии 1.3 в нем есть возможность делать свою раскладку клавиатуры (KEYS.RK), редактора раскладки правда нет. Но не беда ищем "правильный" KEYS.RK, грузим в русификатор и... облом!
Нет, раскладка работает, почти.
Не вводится буква Ё (А почему? А потому, что для букв русского алфавита "р" и "Ё" надо обнулять scan-код клавиши).
Для р там обнуление идет, а для Ё не предусмотрено.
xlat byte ptr cs:[bx]; берем букву из KEYS.RK
pop bx
cmp al, 0E0h ; буква "р"?
jnz short loc_103DF; не "р", закидываем в буфер клавиатуры как есть ( mov[bx], ax)
xor ah, ah; все таки "р", обнуляем scan-код и закидываем в буфер клавиатуры
loc_103DF:
mov [bx], ax
Так как, места, чтобы вставить проверку на букву "Ё" нет, пропатчим процедуру. Сделаем обнуление scan-кода для всех кодов >= 80h (вторая половина ASCII таблицы, где лежат все русские буквы).
KeyRus так делает по умолчанию /CLRSCAN=On и никто ещё не жаловался.
xlat byte ptr cs:[bx]
pop bx
cmp al, 80h ; Сравниваем с 80h
jb short loc_10433; <80h закидываем в буфер клавиатуры как есть.
xor ah, ah; >=80h (это русская буква, обнуляем scan-код)
loc_10433:
mov [bx], ax
Всё, теперь буква Ё вводится корректно.
Идея не моя, код подсмотрел в http://old-dos.ru/dl.php?id=8495 (Архив RK 1.4, русификатор лежит под именем RK866.COM с "современной" раскладкой клавиатуры и стандартными шрифтами). Я "пропатчил" остальные версии и сделал раскладку для 1.7 - 2.23 (RUSSIAN.RK)
Теперь по версиям:
RK1.2 Патчить Ё не нужно (чем старее версия тем корректнее работает. Хе-Хе.). Внедряем KEYS.RK с помощью HEX-редактора.
RK1.3, RK1.4, RK1.6 Патчим E075 -> 8072
RK1.7, RK1.8, RK2.0 Патчим E075 -> 8072 и дополнительно патчим 3CFA -> 3CFE (иначе "№" (shift+3 в русской раскладке) не вводится).
RK2.23 ну наконец-то патчить ничего не нужно, работает из коробки.
По выбору версии RK.COM
1.4 - самый распространенный, оптимальный вариант (занимает 11104 байт в озу).
1.6 - практически то-же самое но поменьше на -128 байт за счет оптимизации (10976 байт в озу).
1.2 и 1.3 "староваты" и занимают 11008 и 11024 байт соответственно.
1.7, 1.8, слишком наворочены и занимают (11872 и 11904 байт в озу).
2.0 добавлена раскладка SGR (для рисования dos графики). Занимает 11968 байт в озу.
2.23 самый навороченный и "жирный" 12176 байт в ОЗУ.
Мой выбор: RK v1.6 (занимает меньше всего места памяти, нет лишнего функционала, как в последующих версиях).
Поправленые версии RK.COM (8 штук) в одном архиве.
Шрифт стандартный (из EGA3.CPI), раскладка клавиатуры соответствует стандартному DOS русификатору (keyb ru,,keybrd3.sys).
Кнопки переключения RUS/LAT оставил стандартные (LShift + RShift).
Файлы шрифтов и раскладок KEYS.RK (для 1.2 - 1.6) и RUSSIAN.RK (для 1.7 - 2.23) приложены к архиву.
-
Скрыть объявление
Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.
-
Скрыть объявлениеЕсли Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.
Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
- Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
- Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
- Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
- Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
С уважением, администрация форума Old-Games.RU
Комментарии
Сортировать комментарии по