Решение проблемы с видеокартой
Mar. 18th, 2024 12:43 pmРешение проблемы с видеокартой оказалось нетривиальным. Многие были правы и неправы одновременно. Я даже купил себе охлаждающую жижу, чтобы поморозить микросхемы. Но всё оказалось куда интереснее. Сходу выражаю большую благодарность
arush_damage за ссылку на документацию по этому адаптеру, она мне очень сильно помогла.
Начнём с того, что не смотря на то что текстовый режим глючит, если в автозагрузку поставить запуск графической игры, то она успешно работает(!), значит проблема точно не в ОЗУ.

Принц Персии работает в этом диком режиме.
Так... А если подключить внешний монитор к разъёму VGA? Представляете, о чудо, с внешним монитором, без изменения настроек и прочего-прочего, всё работает без каких либо артефактов.

Работа с внешним монитором.
Тут со всем стало непонятно, что же с карточкой не так и как заставить работать встроенный монитор в текстовом режиме? Пошёл путём хождения по детским грабелькам.
Самое первое, что я попробовал - это включить-выключить русификатор клавиатуры, пробовал разные русификаторы - это никаким образом не помогло.
Следующая моя идея состояла в том, что может слишком свежая версия ДОС, и может попробовать что-то древнее. Нашёл версию PC-DOS 3.5, которая поставлялась ещё на дискетках 5,25. Сделал загрузочный диск с ней (о том как делать загрузочный диск в Linux можно написать отдельный пост, если трудящиеся попросят), и попытался загрузится. Но факир был пьян и фокус не удался.

Если гора не идёт к Магомету, то Магомет начинает читать документацию. Решил разобраться что делают джампера. Вообще, в том положении в котором стояли джампера вообще непонятно какой режим. Но поставив в режим EGA, CGA, MGA всё завелось.

Позиции переключателей, когда вывод изображения на экран состоялся.
Скрин ниже в режиме CGA.

Первый успешный вывод.
В общем, поигравшись с переключателями, остановился на режиме EGA и вернул обратно свою систему.

Режим работы EGA.
Но это всё какая-то хурма не ясная, ведь в VGA и разрешение больше и возможностей. А главное, в графике же работает в режиме VGA! Что делать? Оказывается, что в документации есть информация о том что делать: надо поставить драйвера! Тьфу ты, ларчик просто открывался.

Однако, к сожалению драйверов нету. Там, где была найдена документация на эту видяху, типа есть образ дискетки с драйверами. Но на деле, там оказался весьма современный фридос с какой-то бесполезной ерундой, без драйверов под эту железку. А родной жёсткий диск умер. Увы, гугление не позволило найти драйвера для неё. Не уверен, что у меня хватит пороху написать их.
Вот такой хитрый экран.
Начнём с того, что не смотря на то что текстовый режим глючит, если в автозагрузку поставить запуск графической игры, то она успешно работает(!), значит проблема точно не в ОЗУ.

Принц Персии работает в этом диком режиме.
Так... А если подключить внешний монитор к разъёму VGA? Представляете, о чудо, с внешним монитором, без изменения настроек и прочего-прочего, всё работает без каких либо артефактов.

Работа с внешним монитором.
Тут со всем стало непонятно, что же с карточкой не так и как заставить работать встроенный монитор в текстовом режиме? Пошёл путём хождения по детским грабелькам.
Самое первое, что я попробовал - это включить-выключить русификатор клавиатуры, пробовал разные русификаторы - это никаким образом не помогло.
Следующая моя идея состояла в том, что может слишком свежая версия ДОС, и может попробовать что-то древнее. Нашёл версию PC-DOS 3.5, которая поставлялась ещё на дискетках 5,25. Сделал загрузочный диск с ней (о том как делать загрузочный диск в Linux можно написать отдельный пост, если трудящиеся попросят), и попытался загрузится. Но факир был пьян и фокус не удался.

Если гора не идёт к Магомету, то Магомет начинает читать документацию. Решил разобраться что делают джампера. Вообще, в том положении в котором стояли джампера вообще непонятно какой режим. Но поставив в режим EGA, CGA, MGA всё завелось.

Позиции переключателей, когда вывод изображения на экран состоялся.
Скрин ниже в режиме CGA.

Первый успешный вывод.
В общем, поигравшись с переключателями, остановился на режиме EGA и вернул обратно свою систему.

Режим работы EGA.
Но это всё какая-то хурма не ясная, ведь в VGA и разрешение больше и возможностей. А главное, в графике же работает в режиме VGA! Что делать? Оказывается, что в документации есть информация о том что делать: надо поставить драйвера! Тьфу ты, ларчик просто открывался.

Однако, к сожалению драйверов нету. Там, где была найдена документация на эту видяху, типа есть образ дискетки с драйверами. Но на деле, там оказался весьма современный фридос с какой-то бесполезной ерундой, без драйверов под эту железку. А родной жёсткий диск умер. Увы, гугление не позволило найти драйвера для неё. Не уверен, что у меня хватит пороху написать их.
Вот такой хитрый экран.
no subject
Date: 2024-03-18 10:17 am (UTC)Блин, сочувствую.
У меня когда-то долго был EGA-монитор, даже когда комп уже был 486. в принципе его хватало, но многие игры на нем уже не шли.
no subject
Date: 2024-03-18 10:35 am (UTC)no subject
Date: 2024-03-18 04:49 pm (UTC)> Оказывается, что в документации есть информация о том что делать: надо поставить драйвера!
Вроде написано не так. Я вижу, что там написано, что нужно просто запустить утилиту MXW чтобы выставить нужное разрешение в текстовом режиме. А содержимое каталога DRIVERS похоже на драйвера для определённых программ (автокад, офисный пакет Lotus, виндовс). Таким образом тебе нужна только эта утилита MXW. А то и просто инфа в какой порт видюхи какой байт записать чтобы она переключила разрешение в текстовом режиме.
upd: это же, наверное, ibm pc bios совместимый. Значит режим переключаем вызовом bios (https://en.wikipedia.org/wiki/INT_10H (https://en.wikipedia.org/wiki/INT_10H)):
org 100h
mov ax,03h
int 10h
mov ax,4c00h
int 21h
можно даже в нортоне в hex редакторе вбить 66B80300CD10C3 и сохранить с расширением .com
no subject
Date: 2024-03-18 08:45 pm (UTC)Жаль что мы так и не услышали начальника транспортного цеха (с)
Так а как оно выглядит в режиме VGA то?
no subject
Date: 2024-03-18 09:07 pm (UTC)И эта, вот прям из вики:
> Хотя в текстовых режимах VGA одно знакоместо имеет ширину 9 пикселей, в данных знакогенератора определяются только 8 из них (8 бит одного байта на строку); пиксели правой колонки символьной матрицы определяется автоматически: пустыми (для символов в диапазоне 0x00-0xAF и 0xE0-0xFF) или такими же, как пикселы 8-й колонки (для символов псевдографики (https://ru.wikipedia.org/wiki/%D0%9F%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8B) в диапазоне 0xB0-0xDF). Режим повтора 8й колонки мог быть отключен через регистр (через запрос BIOS никак). Так же, через регистры, можно было переключить текстовый режим c 9 колонок на 8 колонок для символа (так же как переключались графические режимы 320/360 точек в строке), что было нужно для некоторых матриц ноутбуков. Стандартные шрифты при этом обычно слипались, и нужно было загружать собственные (в BIOS более узкие шрифты обычно были прописаны вендором, но русские шрифты загружались сторонними программами, например KeyRus).
> Используя шрифты меньших размеров, чем стандартный 8×16, можно увеличить количество строк в текстовом режиме. Например, если включить шрифт 8×14, то будет доступно 28 строк. Включение шрифта 8×8 увеличивает количество строк до 50 (аналогично режиму EGA 80×43 (https://ru.wikipedia.org/wiki/EGA#Текстовые_режимы))[8][9].
Так что возможно утилита не только режим переключала, но и регистры настраивала.
В доке написано про разрешение 640х480, т.е. макс разрешение 80х60 для шрифта 8х8 и 80х30 для 8х16.
Если интресует какие регистры есть у VGA и как их программировать — рекомендую вот такую книгу:
Ее текст есть в сети: http://www.codenet.ru/progr/video/egavga/ (http://www.codenet.ru/progr/video/egavga/)
Там также описаны дополнительные возможности биоса VGA/EGA
no subject
Date: 2024-03-18 09:17 pm (UTC)Возможно, прямолинейный подход с int 10h слишком наивен, но попробовать можно)
no subject
Date: 2024-03-18 09:44 pm (UTC)Полностью согласен.
Тем более что ком файл из 20-ти байт создать не проблема %)
Кстати, в сети можно найти взломаный hiew (или купить у разработчика) — он позволяет прям в аасемблерных кодах писать и сам их в бинарь переводит.
Хотя вроде ImHex все то-же умеет, но его под дос вроде нет
Опять же — VGA биос умеет гораздо больше, например вот такое может быть интересно http://www.codenet.ru/progr/video/egavga/egavga13.php#64 (http://www.codenet.ru/progr/video/egavga/egavga13.php#64) ПОДФУНКЦИЯ 35h: ВЫБОР АКТИВНОГО ДИСПЛЕЯ
no subject
Date: 2024-03-18 10:04 pm (UTC)ЗЫ. Совсем забыл, НМНИМС в ком файлах вместо 4c00h функции 21h прерывания было достаточно сделать "ret". Там на стеке лежать адрес покоторому вызывается функция 4c00h 21h. Это такая фишка дос для ком файлов.
no subject
Date: 2024-03-19 06:06 am (UTC)То есть я таки угадал, что произошло —
но причиной был не баг, а сделать больше строк. МудрО!
no subject
Date: 2024-03-19 07:28 am (UTC)Сразу перечёркивает всё написанное, что при подключении внешнего монитора этой проблемы нет.
no subject
Date: 2024-03-19 07:29 am (UTC)А как же быть с тем, что в этом же режиме с внешним монитором всё работает? Ничего не поменялось.
no subject
Date: 2024-03-19 07:31 am (UTC)Один режим тут, другой там. Больше строк нужно на встроенном.
no subject
Date: 2024-03-19 07:37 am (UTC)Ошибка со строками не рушит шрифт, просто не влезает на монитор. Знаем такой эффект.
no subject
Date: 2024-03-19 07:56 am (UTC)Здесь чуть другой эффект.
Завидую возможности поковыряться с таким :-)
no subject
Date: 2024-03-19 10:41 pm (UTC)А у внешнего дисплея какое разрешение?
А строчка "ПОДФУНКЦИЯ 35h: ВЫБОР АКТИВНОГО ДИСПЛЕЯ" ни на что не намекает?
ЗЫ. Так как выглядит изображение на LCD при установке джамперов в VGA?
no subject
Date: 2024-03-20 07:54 am (UTC)Разрешение на загрузку шрифтов не влияет. Просто вылезает за области экрана и всё.
>>ЗЫ. Так как выглядит изображение на LCD при установке джамперов в VGA?
См. КДПВ предыдущего поста.