Существует несколько производителей чипов для карт SVGA, и для их программирования может потребоваться специальный код для каждого из них (если ваша графическая плата не поддерживает VESA, см. ниже). Я сделал это много лет назад (в 90-х) и использовал исходники POVRAY (трассировщик лучей) в качестве эталона.
К счастью, POVRAY существует до сих пор: http://www.povray.org/
Вам нужно взять здесь http://www.povray.org/ftp/pub/povray/Old-Versions/ исходники старой версии 1990-х годов, в которой все еще есть процедуры для SVGA (авторы, вероятно, удалили их в последних версиях!). В исходниках вы найдете кучу встроенных ассемблерных функций для инициализации графического режима и установки пикселя для различных графических плат/производителей (S3, ET4000, ...). Сначала распакуйте POVSRC.ZIP, потом MACHINE.ZIP, потом IBMPC.ZIP (а он в IBM.C).
Код немного эзотерический: это потому, что изначально IBM PC должен был иметь не более 64 КБ видеопамяти (в сегменте A000:0000). Чтобы обеспечить более высокое разрешение, существует метод, называемый «переключение банка», который позволяет изменить «окно» в видеопамяти, которое отображается на A000: 0000.
Если ваша плата SVGA поддерживает стандарт VESA (а это у большинства из них), то все может быть проще, есть стандартное прерывание для смены графического режима и для переключения банка (поэтому вам, вероятно, просто нужно найти в POVRAY реализация VESA "установить графический режим" и "установить пиксель").
Наконец, я упоминаю djgpp (порт g++ для MSDOS), который имеет как 32-битный расширитель DOS, так и графическую библиотеку (grx), которая изящным образом использует виртуальную память для имитации непрерывной графической памяти (она создает виртуальные адреса для видеопамяти). и использует прерывания по ошибкам страниц для автоматического переключения банков). Я использовал его для программирования 3D-графики на 33-мегагерцовом процессоре 486.
Изменить: немного покопавшись, я обнаружил, что последняя версия с подпрограммами находится здесь: http://www.povray.org/ftp/pub/povray/Old-Versions/Official-3.1g/MS-Dos/
распаковать povmsd_s.zip
Подпрограммы находятся в SOURCE/MSDOS/VESAVBE.{H,C} (можно использовать, если ваши карты поддерживают стандарт VESA). Другие карты имеют свои процедуры в SOURCE/MSDOS/MSDOSVID.C.
person
BrunoLevy
schedule
02.03.2017
asm { asm code here };
и отображать массив цветов в C, вы просто устанавливаете нужный видеорежим , затем установите страницу, с которой вы хотите работать, а затем работайте с памятью в0A000h
сегменте - person Spektre   schedule 30.08.2017