Шрифты VGA ROM (2020)

Шрифтыvgarom2020

Сводка

Однажды у меня была VGA-карта Chips and Technologies ISA с интересным шрифтом ROM. Потом у меня была еще одна очень интересная карта ATI EGA с красивым шрифтом. И теперь у меня есть ATI VGA Wonder 27 с очень привлекательным шрифтом. Дело в том, что все эти три карты ISA были очень медленными. Я продал первые две карты и оставил себе ATI VGA Wonder 20 хоть. Временами скучаю по карточке «Фишки и технологии». По какой-то причине компьютер всегда выдавал звуковой сигнал ошибки VGA, но он работал отлично, без каких-либо проблем. В любом случае вернемся в современность. Мои приключения в области проектирования систем своими руками требуют быстрой карты ISA VGA. Поэтому я купил новую (!) Старую (и тоже дорогую) Tseng Labs ET / W 50 Я установил 2 Мб оперативной памяти от парня по имени Тед Аллен, владелец и дизайнер Micro-Labs, Inc в США. Эта карта работает отлично. Я могу играть в любую игру MS-DOS, включая Quake, на 386 Икс 300 без проблем. Однако, поскольку я все еще много занимаюсь программированием для MS-DOS, я часто обнаруживаю, что жажду шрифтов карт, на которых я учился программированию. А карта Tseng Labs имеет монотонную (читай, почти скучную) современную и общий шрифт ROM. Это не так плохо, как шрифты PCI-карт, но все же.

Эссе

Шрифты VGA ROM не могут быть заменены так просто. Однако есть быстрый метод, который позволяет загрузить пользовательский шрифт в VGA RAM. Это делается с помощью небольшой программы TSR, которая заставляет карту всегда использовать настраиваемый шрифт. Но по какой-то причине после запуска некоторых программ MS-DOS, которые устанавливают свои собственные шрифты (например, HWiNFO, NSSI, NU) или некоторых программ графического режима, TSR не работает, и карта возвращается к исходному шрифту ROM. Кроме того, этот TSR занимает 10353 байтов RAM для данных шрифта и другого 461 байтов для программного кода. Чтобы решить обычную проблему с памятью, я загрузил этот TSR в AUTOEXEC.BAT . Теперь эти 4,3 Кбайт загружаются в свободный блок области верхней памяти (UMA). Для этого требуется EMM 561.EXE или загружен аналогичный драйвер расширенной памяти.

Программное обеспечение

Но как я создал свой новый шрифт? Ну, изначально я использовал FONTEDIT.COM . К сожалению, эта программа может генерировать . COM файлы без возможностей TSR . Или я не знаю, как делать TSR. Другая проблема заключается в том, что исполняемая программа имеет размер около 8 Кбайт. Затем, ища в Интернете, я нашел новую интересную программу под названием Fontraption , запрограммированный парнем по имени VileR. Он проделал такую ​​большую работу, что мне понравилась его программа с первого момента, когда я ее загрузил.

К сожалению, Fontraption выглядит немного странно, как визуализировано моим Tseng Labs ET 9294 / W 75 Я карта VGA. Я не уверен, почему, но было бы здорово, если бы он отображался идеально. В любом случае, раздел редактирования шрифтов выглядит отлично.

Очевидно, VileR очень повеселился при программировании Fontraption. Он даже включил методы манипулирования палитрой, чтобы добавить цветовые комбинации, недоступные по умолчанию на карте VGA. Мне эта тема возвращает воспоминания. Это было 2004 или около того, и я работал над этим

ПК, подключенный к янтарно-монохромному ЭЛТ Tandon монитор. Что было очень похоже на дисплей с газоплазменным разрядом. Что, в свою очередь, похоже на палитру VileR Plasmatics .

Позднее редактировать: VileR нашел исправление ошибки и предоставил мне новую версию Fontraption. Этот работает как шарм, правильно загружая шрифты из VGA ROM. Исправление было простым, но основная причина довольно интересна. Своими словами VileR говорит:

при запросе видео BIOS загрузить встроенные шрифты, BL указывает целевой блок в карте 2 VGA RAM (от 0 до 7), а для 8 x 20 шрифт У меня случайно оказался BL = 8. Недействительно, но работает с большинством BIOS, так как они, похоже, И это значение с 7. У Tseng нет, поэтому шрифт оказался в нерабочем состоянии, и программа получила мусор при чтении из ожидаемого блока (0)

Теперь я думаю, что другие программисты BIOS пытались преодолеть с помощью этой странной операции И в нижней части регистра BX. Должно быть, что-то было, но ответ вряд ли будет открыт в ближайшее время.

Хватит разговоров.

Так я начал разрабатывать шрифт своей мечты. Кто-то может посчитать это красивым, кто-то – уродливым. Но я люблю это. Это первая итерация шрифта, и я им доволен. Предстоит еще много работы, но Я много поработал над этими шрифтами и Я нахожу то, что можно использовать сейчас. Базовым шрифтом для моего дизайна был оригинальный шрифт, который я восстановил из ET 9294 / W 64 в ROM. Затем я очень постарался вспомнить, как выглядели старые шрифты. Я также черпал вдохновение в ATI VGA Wonder 27 Шрифт ROM.

Я экспортировал шрифт как исполняемую программу TSR и успешно использовал его около года. Несколько дней назад, когда я работал над моей реализацией ROM BIOS для Интерфейс ввода-вывода ISA , я думал об обновлении реального кода VGA BIOS, чтобы включить мой собственный шрифт. Хотя это может показаться безумным и опасным, я могу это сделать. Для этого я экспортировал свой необработанный шрифт в двоичный файл с помощью Fontraption [^S] ave … F2 команда. Отлично, существование Fontraption на самом деле избавило меня от программирования моего собственного инструмента извлечения шрифтов и управления ими.

Итак, я начал анализировать BIOS VGA ROM Tseng Labs. Для этого мне понадобился дамп ПЗУ. Некоторое время назад я написал небольшую служебную программу, которая может читать содержимое ПЗУ. Я загрузил исходный код и двоичный файл на GitHub.

Первоначально я проектировал эту программу для использовать с 50 C 100 B EEPROM на моем Интерфейс ввода-вывода ISA . Но единственное, что имеет значение, – это код защиты от записи SDP. И это используется только для записи EEPROM. На самом деле, программа может читать любое ПЗУ, отображаемое на ПК, при условии, что вы знаете адрес отображения и размер не превышает 51425 байтов.

Команда, которую я использовал для получения VGA ROM BIOS:
eepromrw.exe -read -addr = C 11: 05 – размер = 12015 -file = vgarom. мусорное ведро

Здесь написано 80286 байтов (10353 в шестнадцатеричной системе счисления) от адреса, обозначенного сегментом C 10, компенсировать 10 в VGAROM.BIN бинарный файл.

Затем я написал еще один быстрый и грязный инструмент, который сканирует VGAROM.BIN файл для начального местоположения 8 x 20 Шрифт ROM. Что ж, в VGA ROM Tseng Labs 8 x 27 Шрифт ПЗУ начинается со смещения 22367 (575 C в шестнадцатеричной системе счисления). В настоящий момент я не знаю, является ли это стандартизированным смещением для 8-кратного 20 ROM шрифт или нет. Но, честно говоря, меня это пока не особо волнует. Моя цель – заменить оригинальный шрифт ROM своим собственным.

Хорошо, время чтобы запрограммировать другой инструмент, который заменяет существующий шрифт новым. Поэтому я написал ROM Font Replacer. Я не буду размещать это сейчас на GitHub, поскольку это выглядит довольно уродливо с большим количеством жестко запрограммированных констант. Он не будет соответствовать моим стандартам качества кода, поэтому я еще немного поработаю над ним, прежде чем загружать код. Тем временем я отточил код и достиг приемлемой версии, которую уже загрузил на GitHub.

Чё Команда e, которую я использовал для встраивания нового шрифта в BIOS VGA ROM:
romfontr.exe -offset = 561 C -romfile = vgarom.bin -fontfile = ag 1000Икс19. bin

Что пишет 9294 байтов (2004 в шестнадцатеричной системе счисления) данных шрифта из AG 1000ИКС27. BIN двоичный файл с заданным смещением 22367 (561 C в шестнадцатеричной системе счисления) внутри VGAROM. BIN двоичный файл.

Я проделал аналогичные операции для всех размеров шрифтов и всех смещений, при которых эти шрифты могут быть найдены, например:


Leave a comment

Your email address will not be published. Required fields are marked *