1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

О проблемах "старых" DOS русификаторов, на примере RK.COM

Автор: BolenB · 10 янв 2023 · ·
  1. Большинство русификаторов выпущеных до 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) приложены к архиву.

    Вложения:

    excitoon, serj_popov, Ygol и 6 другим нравится это.

Комментарии

  1. excitoon
    @BolenB А откуда был взят исходный `RK.COM` (2.23)? Там как-то слишком много изменений, по сравнению с old-dos.ru, и некоторые совсем странные:
    Screenshot from 2024-03-12 20-29-31.png

    Надо бы дописать для ламеров, что загружать файл раскладки надо через `/L:RUSSIAN.RK`.

    И ещё раз спасибо!
    1. BolenB
      С old-dos.ru и взят.
      Отличия: шрифты и файл раскладки клавиатуры.
      `RK223.COM` зачем-то копирует кусок видеобиоса в свое тело. Запустите на своем ПК и это место тоже будет отличаться.
      ("GP 104 Board" - я запускал на GeForce GTX 1070 Ti)
Чтобы оставить комментарий просто зарегистрируйтесь и станьте участником!
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление