Регистры Super-VGA
+ я так понял что работа в PM можно организовать с помощью Vesa Protected Mode Entry Point, а есть другие способы?
как вообще сейчас програмируют вдеоадаптер ?
ps Фроловых и тому подобое устаревшее(как мне кажется) чтиво не предлагать.
Где бы почитать про программирование SVGA желательно полную документацию... адреса, список регистров, вобщем всё.
Все это зависит от конкретной модели видео карты. Часть стандартов открыта часть закрыта.
А что тебе требуется. Достаточно в реальном режиме установить режим и все.
Если нужно сменить режим можно обратно переключиться в реальный, установить и вернуться назад. Можно и через VM86. Обычно режим так часто не меняется поэтому можно выбрать при загрузке. А вся отрисовка делается попиксельно.
Напиши сам современное.
мне нужно узнать адрес видеобуфера.
еслиб я мог то не спрашивал гдеб инфу взять... да к стати а где эти авторы могли брать информацию?
В принципе, Pavia все верно написал кроме, конечно, попиксельной отрисовки. Но, наверное, он просто неудачно выразился.
А вообще, SVGA - это 800х600 и, соответственно, все видеоадаптеры, которые поддерживают это разрешение вне зависимости от внутренней организации.
конкретней.
что-то я сомневаюсь в првильности этого определения.
Это можно сделать в реальном режиме.
AMD-ATI открыла документацию плохо ты искал
http://www.x.org/docs/AMD/
http://developer.amd.com/documentation/guides/Pages/default.aspx#open_gpu
На NVidia нету открытой документации зато есть полученная различными путями
http://nouveau.freedesktop.org/wiki/
А также несколько исходников от самой NVidea, с последующими дороботками линукс сообществом.
http://cgit.freedesktop.org/xorg/driver/xf86-video-nv/tree/src
Интел
http://intellinuxgraphics.org/documentation.html
Старая видюшка от интел i740
ftp://download.intel.com/support/graphics/intel740/29061902.pdf
VIA тоже открыла документацию
http://www.x.org/docs/via/
Очень старая видюшка от CHIP, но зато хорошая в качестве справки по VGA
http://sunsite.rediris.es/pub/mirror/intel/graphics/mobilegraphics/datashts/010179001.pdf
Цитата:А вообще, SVGA - это 800х600 и, соответственно, все видеоадаптеры, которые поддерживают это разрешение вне зависимости от внутренней организации.
что-то я сомневаюсь в првильности этого определения.
Под SVGA понимают как все много образие. Так и определенное множество.
banks? Если мне не изменяет память, банки могли иметь гранулярность, не всегда совпадающую с размером банка. Но обычно все-таки через соседние банки памяти выполняется обращение именно к смежым участкам видеопамяти.
наверное, у Фроловых это просто - цветовые слои.
те вот допустим у меня каждый пиксел описывается 3 цветами(RGB) и соответственно по байту на цвет... это значит просто три последовательных байта?
Извените за неточность вопроса просто вообще смутно понимаю что и как :)
вот это я и хотел уточнить :)
2koderAlex если не сложно кинь на файлобменник.(тем более может кто другой посмотреть захочет)
А что есть банки? Ещё со всякими лучевыми трубками не всё ясно... они вообще есть в ЖК мониторах?
Как раз наоборот: в текстовых они не используются. Используются исключительно в 16-цветных (4-битных) графических режимах представления цвета.
Не путай видеоконтроллер и дисплей, это совершенно разные устройства.
Трубок в :R, естественно, нет, но это никак не влияет на способ работы с видеоконтроллером.
А банки - пережиток реального 16-разрядного режима, в котором максимальый непосредственно адресуемый объем памяти составлял 64К, а общее адресное просранство - 1М. Вот и приходилось бОльшие объемы видеопамяти подключать к адресному пространству процессора кусочками по 64К (как врено отметил Фантом, иногда кусочки могли быть и другого, меньшего, размера).
А во-вторых, плоскости (три из четырех) используются в текстовых режимах:
- 0 - коды символов;
- 1 - атрибуты символов (цвет, мерцание, выбор таблицы);
- 2 - таблицы с битовыми картами символов;
- 3 - не используется.
А в контексте темы, 16-цветные - как раз не "древние", наиболее актуальные, т.к. единственный хоть сколь-нибудь стандартизованный SVGA режим как раз был 16-цветным. Позднее его номер даже был перенесен в стандарт VESA, где он был единственным режимом с нулевым старшим байтом/
(VbeSignature should be set to 'VBE2' when
function is called to indicate VBE 3.0 information
is desired and the information block is 512 bytes in
size.)
Исправился... и всё равно пишет что не поддерживается
mov bx,cs
mov es,bx
mov di,VBEInfoBlock
int 10h
cmp ax,004fh
jne .vbe_not_support ; эту проверку проходит
cmp dword[VbeSign],"ASEV"
jne .vbe_not_support ; тут вылетает
....
VBEInfoBlock:
; ---------------------------
VbeSign db "2EBV"
VbeVer dw ?
OemStrPtr dd ?
Capabil dd ?
VideoModePtr dd ?
TotalMemory dw ?
OemSoftRev dw ?
OemVendorNamePtr dd ?
OemProdNamePtr dd ?
OemProdRevPtr dd ?
db 222 dup(?)
OemData db 256 dup(?)
; ----------------------------
дальше в коде вызываются функции 01 и 0A, bochs(как и железки) пишет что 01 не поддерживается а VM ругается на 0A. что я там не усмотрел?
А PMID находи где нибудь?
Во многих ассемблерах (но не в fasm'е) и символы двойного слова должны быть указаны в естественном порядке, поэтому попробуй так:
но вот тогда вопрос почему так
cmp dword [VbeSign], "ASEV" НЕ РАБОТАЕТ
а вот так
cmp dword [VbeSign],"VESA" всё нормально?
Это же fasm!?
mov eax,0e820h
mov edx,"PAMS" ;smap
mov di,0059h
mov ecx,14h
int 15h
jc .func_err
cmp eax,"PAMS"
jc .func_err
если верить файлу WHATSNEW.TXT то в version 1.66 (May 7, 2006)
obsolete and no longer correct - use "jmp short" instead.
mov eax,0E820h
int 15h
jc .error_5
sub eax,"PAMS"
jnz .error_5
cmp ecx,20
jne .error_5
Так ны нашел в своем коде ошибку или нет?
если имеется в виду
jc .func_err
cmp eax,"PAMS"
jne .func_err
то да, но почему так
cmp dword[ds:VbeSign],"VESA" работает?
объясните мне бесолковому...
Я знаю, что порядок в fasm'е обратный тому, чем во всяких там masm'ах, и почему-то решил, что он "вообще обратный". А оказывается все наоборот - это во всяких там masm'ах порядок обратный, а в fasm'е прямой. К примеру, инструкция cmp dword ["VV"],"VESA" и в версии 1.64, и в версии 1.68 компилируется одинаково:
Получается, что функция SMAP требует обратного порядка. Сразу понятно, какой(или какие) ассемблер в то время использовали разработчики этого интерфейса :)
http://wiki.osdev.ru/index.php?title=%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE%D0%B1%D1%8A%D1%91%D0%BC%D0%B0_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8&oldid=663
Надо SII втык сделать нужную информацию стирает.
для кого как :)
Зачем его редактировать? Там как раз все правильно написано. Для fasm'а нужно писать "PAMS", а вот для всяких левых (т.е. классических :) ) ассемблеров нужно писать "SMAP".