Windows XP SP3: баг в полноэкранном FAR Manager, связанный с запуском графических DOS-программ с помощью NTVDM

Софт только для Windows (всех версий)

Windows XP SP3: баг в полноэкранном FAR Manager, связанный с запуском графических DOS-программ с помощью NTVDM

Сообщение EgorKuzevanov » 22 мар 2025, 15:53

У меня есть виртуальная машина VirtualBox v6.0.24 (2020 года выпуска) с установленной WIM-сборкой Windows XP SP3 от SmokieBlahBlah. Magnet-ссылка для скачивания данной сборки Windows XP через торрент:
Код: Выделить всё
magnet:?xt=urn:btih:3398D0A2A4AA0F2272F03659D6DDA0EDCD88505D


Если из-под консольного файлового менеджера FAR Manager v1.70 build 2087 (2006 года выпуска), запущенного в полноэкранном режиме, запустить с помощью подсистемы NTVDM любую из DOS-программ, работающих в графическом режиме (например, игру Doom), и затем выйти из данной программы, то в FAR Manager все русские буквы в кодировке CP866 автоматически заменяются на кракозябры в кодировке CP437. Команда в командной строке FAR Manager chcp 866 не помогает избавиться от данных кракозябр. Помогает либо перезапуск полноэкранного FAR Manager, либо перевод FAR Manager в оконный режим и обратно в полноэкранный режим путем двойного нажатия сочетания клавиш Alt+Enter.

Из-за чего может происходить вышеописанный баг в связке "полноэкранная консоль Windows XP SP3 + консольный файловый менеджер FAR Manager + подсистема NTVDM в графическом режиме"? И можно ли исправить данный баг раз и навсегда, чтобы мне не приходилось ни перезапускать полноэкранный FAR Manager, ни нажимать на Alt+Enter?
Последний раз редактировалось EgorKuzevanov 22 мар 2025, 19:52, всего редактировалось 9 раз(а).
EgorKuzevanov
Мастер Даунгрейда
 
Сообщения: 464
Зарегистрирован: 24 дек 2023, 05:31
Откуда: Санкт-Петербург
Железо: VirtualBox v6.0.24 + VMware Workstation v15.5.7 + DOS-эмулятор DOSBox-X (улучшенный форк DOSBox)

Re: Windows XP SP3: баг в полноэкранном FAR Manager, связанный с запуском графических DOS-программ с помощью NTVDM

Сообщение .::. Typucm .::. » 23 мар 2025, 16:44

На железе (когда-то) этого можно было избежать скорее-всего, если видеокарта перепрошита с заменой шрифтов на кириллические. На сколько помню, после этого экраны смерти на русском выдавались, а не гречкой.
Не стесняйтесь думать. Неэффективно пытаться помочь людям, которые не желают помогать себе сами.
Нормально чего-то не знать, прикидываться идиотом - нет.
Аватара пользователя
.::. Typucm .::.
 
Сообщения: 557
Зарегистрирован: 28 янв 2022, 22:43

Re: Windows XP SP3: баг в полноэкранном FAR Manager, связанный с запуском графических DOS-программ с помощью NTVDM

Сообщение EgorKuzevanov » 23 мар 2025, 19:30

.::. Typucm .::. писал(а):На железе (когда-то) этого можно было избежать скорее-всего, если видеокарта перепрошита с заменой шрифтов на кириллические. На сколько помню, после этого экраны смерти на русском выдавались, а не гречкой.

.::. Typucm .::., раз уж на то пошло, то реально ли на виртуальных машинах VirtualBox v6.0.24 и VMware Workstation v15.5.7 (обе выпущены в 2020 году) "перепрошить" виртуальные Video BIOS'ы с заменой американских растровых шрифтов в кодировке CP437 на кириллические в кодировке CP866?
EgorKuzevanov
Мастер Даунгрейда
 
Сообщения: 464
Зарегистрирован: 24 дек 2023, 05:31
Откуда: Санкт-Петербург
Железо: VirtualBox v6.0.24 + VMware Workstation v15.5.7 + DOS-эмулятор DOSBox-X (улучшенный форк DOSBox)

Re: Windows XP SP3: баг в полноэкранном FAR Manager, связанный с запуском графических DOS-программ с помощью NTVDM

Сообщение .::. Typucm .::. » 23 мар 2025, 19:52

EgorKuzevanov, теоретически - возможно в обоих случаях. Вопрос сколько это займет времени у того кто займется этим.

У Virtualbox код открытый, соответственно любой желающий может сделать к нему патч и скомпилировать для себя вариант программы который его устроит. У Vmware только брать готовую программу и пытаться модифицировать то что отвечает за видеокарту; если были подобные модификации - значит это немного проще сделать чем с нуля, будет хотя бы известно какие файлы\модули менялись.

В обоих случаях, естественно, если у видеокарты\биоса существуют собственные "наборы" шрифтов, которые можно заменить при компиляции или "снаружи"; в dosbox при компиляции это делается несложным патчем, нужно только шрифт в код преобразовать, как минимум для CGA (дампы шрифтов прописаны в коде модуля int 10).

Кратко - реально. Фактически - мне не попадались подобные модификации Vmware\Virtualbox, скорее-всего они не существуют.
Не стесняйтесь думать. Неэффективно пытаться помочь людям, которые не желают помогать себе сами.
Нормально чего-то не знать, прикидываться идиотом - нет.
Аватара пользователя
.::. Typucm .::.
 
Сообщения: 557
Зарегистрирован: 28 янв 2022, 22:43

Re: Windows XP SP3: баг в полноэкранном FAR Manager, связанный с запуском графических DOS-программ с помощью NTVDM

Сообщение oldpcfan82 » 23 мар 2025, 22:09

EgorKuzevanov писал(а): все русские буквы в кодировке CP866 автоматически заменяются на кракозябры в кодировке CP437

Это глюк не в Far Manager, а Windows. Решается проблема имхо по моему вроде бы с помощью нажатия комбинации клавиш ALT+F9, и ещё раз ALT+F9.
Аватара пользователя
oldpcfan82
Мастер Даунгрейда
 
Сообщения: 279
Зарегистрирован: 01 окт 2023, 22:57

Re: Windows XP SP3: баг в полноэкранном FAR Manager, связанный с запуском графических DOS-программ с помощью NTVDM

Сообщение uav » 24 мар 2025, 04:31

EgorKuzevanov, видеобиос в VMware находится обычно в файле vmware-vmx.exe как один из ресурсов.
Я вот так делал в WinHex.
Находим hex-последовательность 0000000000000000000000000000000000007E81A58181BD9981817E00000000 (это наш VGA-шрифт и есть).
Выглядит так:
VGAFont.png
VGAFont.png (34.85 Кб) Просмотров: 1490

Затем записываем в эту точку (именно Write - Ctrl+B, то есть запись с затиранием, поверх, НЕ обычная вставка) содержимое файла _08X16.FNT из вложения (взят из Keyrus).
Шрифт поменяли, теперь нужно поправить контрольную сумму.
Ищем последовательность 55AA40 (это начало видеобиоса), выглядит так:
VBiosHeader.png
VBiosHeader.png (28.25 Кб) Просмотров: 1488

Далее правой по первому байту последовательности, далее Beginning of block.
Затем переходим на 32766 байт вперёд (например, так: Navigation - Go to Offset, relative to... - current position, 32766) , в конец видеобиоса (его общая длина - 32768 байт).
Видим что-то такое:
VBiosEnd.png
VBiosEnd.png (20.86 Кб) Просмотров: 1486

Правой на текущем байте (последний FF перед выделенным красным), End of block.
Далее Tools - Compute Hash - Checksum (8 bit). Получаем некое число, скажем, 51h. Делаем следующую арифметическую операцию 100h - 51h (у Вас будет другое число) = AFh.
Это наша новая контрольная сумма, заносим её в ячейку, выделенную красным на скрине.
(То есть формула - 100h минус подсчитанная Checksum 8 bit 32767 байт видеобиоса [последний байт не считаем] = наша новая контрольная сумма.)
Сохраняем - собственно, всё.
Вот пример работы:
VMwareFontMod.png
VMwareFontMod.png (19.83 Кб) Просмотров: 1487

Скрин сделан при чистой загрузке (Safe mode command prompt only), то есть никаких русификаторов. Буквы вводились по кодам (через Alt+Код на цифровой клавиатуре) - для проверки.


P.S. Добавлено.
Обнаружил следующую странность: почему-то некоторые буквы берутся не из основного блока шрифта, а отдельно. В результате, например, "л" превращается в значок "1/2", "м" - в "1/4" и так далее. Всего шесть букв. Рационально объяснить такое поведение VMware я не могу. O_o
В результате для полностью корректного отображения русских букв нужно сделать ещё одно изменение:
1. Найти последовательность 910000000000007E1B7FD8D87E00000000.
2. Записать по её адресу содержимое patch.bin из вложения. (Именно поверх записать, Ctrl+B в WinHex, не вставка.)
3. Ну и поправить контрольную сумму - см. выше.
Теперь всё отображается нормально, например, вот BSOD при загрузке (русификаторы не загружены):
BSOD.png
BSOD.png (15.53 Кб) Просмотров: 1441

(Это всё делалось на VMware Player 12.)
Вложения
patch.bin
(102 байт) Скачиваний: 17
_08X16.FNT
(4 Кб) Скачиваний: 17
Последний раз редактировалось uav 24 мар 2025, 06:13, всего редактировалось 7 раз(а).
Аватара пользователя
uav
Мастер Даунгрейда
 
Сообщения: 2433
Зарегистрирован: 22 дек 2008, 14:21

Re: Windows XP SP3: баг в полноэкранном FAR Manager, связанный с запуском графических DOS-программ с помощью NTVDM

Сообщение .::. Typucm .::. » 24 мар 2025, 10:18

Uav, отличный результат.
Можно попробовать универсальный патч сделать. При условии, что данные не меняются (то есть, шрифты одни и те же в разных версиях этого ПО). Вообще я думал что ещё какая то проверка на взлом программы есть, т.е. с этим нужно будет бороться.
Не стесняйтесь думать. Неэффективно пытаться помочь людям, которые не желают помогать себе сами.
Нормально чего-то не знать, прикидываться идиотом - нет.
Аватара пользователя
.::. Typucm .::.
 
Сообщения: 557
Зарегистрирован: 28 янв 2022, 22:43

Re: Windows XP SP3: баг в полноэкранном FAR Manager, связанный с запуском графических DOS-программ с помощью NTVDM

Сообщение EgorKuzevanov » 17 апр 2025, 14:47

Кстати, попадалась ли кому-нибудь в Интернете совместимая с Windows NT4/2000/XP/2003 небольшая самописная утилита, которая при каждом своем запуске чинит кириллическую кодировку CP866 в полноэкранной консоли Windows NT после выхода из запущенных с помощью NTVDM графических DOS-программ и DOS-игр и которая при этом одновременно работает практически на любом видео-BIOS'е (реального старого компьютера/ноутбука/нетбука, виртуальной машины или x86-эмулятора)?

Либо, как вариант, можно создать универсальный патч для подсистемы NTVDM из состава Windows NT4/2000/XP/2003 (как с сервис-паками, так и без них), исправляющий в полноэкранной консоли WIndows NT кракозябры вместо русских букв после выхода из графических DOS-программ и DOS-игр (если данный баг именно на стороне NTVDM, а не на стороне видео-BIOS'ов).
Последний раз редактировалось EgorKuzevanov 17 апр 2025, 16:30, всего редактировалось 16 раз(а).
EgorKuzevanov
Мастер Даунгрейда
 
Сообщения: 464
Зарегистрирован: 24 дек 2023, 05:31
Откуда: Санкт-Петербург
Железо: VirtualBox v6.0.24 + VMware Workstation v15.5.7 + DOS-эмулятор DOSBox-X (улучшенный форк DOSBox)


Вернуться в Программы для Windows

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2