Решение проблемы с видеокартой оказалось нетривиальным. Многие были правы и неправы одновременно. Я даже купил себе охлаждающую жижу, чтобы поморозить микросхемы. Но всё оказалось куда интереснее. Сходу выражаю большую благодарность
arush_damage за ссылку
на документацию по этому адаптеру, она мне очень сильно помогла
(
Read more... )
И эта, вот прям из вики:
> Хотя в текстовых режимах VGA одно знакоместо имеет ширину 9 пикселей, в данных знакогенератора определяются только 8 из них (8 бит одного байта на строку); пиксели правой колонки символьной матрицы определяется автоматически: пустыми (для символов в диапазоне 0x00-0xAF и 0xE0-0xFF) или такими же, как пикселы 8-й колонки (для символов псевдографики в диапазоне 0xB0-0xDF). Режим повтора 8й колонки мог быть отключен через регистр (через запрос BIOS никак). Так же, через регистры, можно было переключить текстовый режим c 9 колонок на 8 колонок для символа (так же как переключались графические режимы 320/360 точек в строке), что было нужно для некоторых матриц ноутбуков. Стандартные шрифты при этом обычно слипались, и нужно было загружать собственные (в BIOS более узкие шрифты обычно были прописаны вендором, но русские шрифты загружались сторонними программами, например KeyRus).
> Используя шрифты меньших размеров, чем стандартный 8×16, можно увеличить количество строк в текстовом режиме. Например, если включить шрифт 8×14, то будет доступно 28 строк. Включение шрифта 8×8 увеличивает количество строк до 50 (аналогично режиму EGA 80×43)[8][9].
Так что возможно утилита не только режим переключала, но и регистры настраивала.
В доке написано про разрешение 640х480, т.е. макс разрешение 80х60 для шрифта 8х8 и 80х30 для 8х16.
Если интресует какие регистры есть у VGA и как их программировать - рекомендую вот такую книгу:
Ее текст есть в сети: http://www.codenet.ru/progr/video/egavga/
Там также описаны дополнительные возможности биоса VGA/EGA
Reply
Возможно, прямолинейный подход с int 10h слишком наивен, но попробовать можно)
Reply
Полностью согласен.
Тем более что ком файл из 20-ти байт создать не проблема %)
Кстати, в сети можно найти взломаный hiew (или купить у разработчика) - он позволяет прям в аасемблерных кодах писать и сам их в бинарь переводит.
Хотя вроде ImHex все то-же умеет, но его под дос вроде нет
Опять же - VGA биос умеет гораздо больше, например вот такое может быть интересно http://www.codenet.ru/progr/video/egavga/egavga13.php#64 ПОДФУНКЦИЯ 35h: ВЫБОР АКТИВНОГО ДИСПЛЕЯ
Reply
ЗЫ. Совсем забыл, НМНИМС в ком файлах вместо 4c00h функции 21h прерывания было достаточно сделать "ret". Там на стеке лежать адрес покоторому вызывается функция 4c00h 21h. Это такая фишка дос для ком файлов.
Reply
То есть я таки угадал, что произошло -
но причиной был не баг, а сделать больше строк. МудрО!
Reply
Сразу перечёркивает всё написанное, что при подключении внешнего монитора этой проблемы нет.
Reply
Один режим тут, другой там. Больше строк нужно на встроенном.
Reply
Ошибка со строками не рушит шрифт, просто не влезает на монитор. Знаем такой эффект.
Reply
Здесь чуть другой эффект.
Завидую возможности поковыряться с таким :-)
Reply
А как же быть с тем, что в этом же режиме с внешним монитором всё работает? Ничего не поменялось.
Reply
А у внешнего дисплея какое разрешение?
А строчка "ПОДФУНКЦИЯ 35h: ВЫБОР АКТИВНОГО ДИСПЛЕЯ" ни на что не намекает?
ЗЫ. Так как выглядит изображение на LCD при установке джамперов в VGA?
Reply
Разрешение на загрузку шрифтов не влияет. Просто вылезает за области экрана и всё.
>>ЗЫ. Так как выглядит изображение на LCD при установке джамперов в VGA?
См. КДПВ предыдущего поста.
Reply
Leave a comment