Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Регистры Super-VGA

18K
15 марта 2009 года
logree
102 / / 27.09.2008
Где бы почитать про программирование SVGA желательно полную документацию... адреса, список регистров, вобщем всё.

+ я так понял что работа в PM можно организовать с помощью Vesa Protected Mode Entry Point, а есть другие способы?
как вообще сейчас програмируют вдеоадаптер ?

ps Фроловых и тому подобое устаревшее(как мне кажется) чтиво не предлагать.
551
15 марта 2009 года
Pavia
357 / / 22.04.2004
SVGA это не стандарт. Это просто термин под которым собронно все множество видео карт которые превышают по своим характеристикам vga.
Цитата:

Где бы почитать про программирование SVGA желательно полную документацию... адреса, список регистров, вобщем всё.

Все это зависит от конкретной модели видео карты. Часть стандартов открыта часть закрыта.

Цитата:
+ я так понял что работа в PM можно организовать с помощью Vesa Protected Mode Entry Point, а есть другие способы?


А что тебе требуется. Достаточно в реальном режиме установить режим и все.
Если нужно сменить режим можно обратно переключиться в реальный, установить и вернуться назад. Можно и через VM86. Обычно режим так часто не меняется поэтому можно выбрать при загрузке. А вся отрисовка делается попиксельно.

Цитата:
ps Фроловых и тому подобое устаревшее(как мне кажется) чтиво не предлагать.

Напиши сам современное.

18K
15 марта 2009 года
logree
102 / / 27.09.2008
На Nvidia и AMD не нашёл документации а вот у Intel что-то есть.

Цитата:
А что тебе требуется. Достаточно в реальном режиме установить режим и все.

мне нужно узнать адрес видеобуфера.

Цитата:
Напиши сам современное.

еслиб я мог то не спрашивал гдеб инфу взять... да к стати а где эти авторы могли брать информацию?

1.9K
15 марта 2009 года
andriano
474 / / 10.01.2008
Адрес видеобуфера, а также организацию видеопамяти в нужном режиме следует узнавать через сервис VESA. Это наиболее "прямой" способ.

В принципе, Pavia все верно написал кроме, конечно, попиксельной отрисовки. Но, наверное, он просто неудачно выразился.
А вообще, SVGA - это 800х600 и, соответственно, все видеоадаптеры, которые поддерживают это разрешение вне зависимости от внутренней организации.
18K
15 марта 2009 года
logree
102 / / 27.09.2008
Цитата:
В принципе, Pavia все верно написал кроме, конечно, попиксельной отрисовки.

конкретней.

Цитата:
А вообще, SVGA - это 800х600 и, соответственно, все видеоадаптеры, которые поддерживают это разрешение вне зависимости от внутренней организации.


что-то я сомневаюсь в првильности этого определения.

551
15 марта 2009 года
Pavia
357 / / 22.04.2004
Цитата:
мне нужно узнать адрес видеобуфера.

Это можно сделать в реальном режиме.

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

Цитата: logree
конкретней.
Цитата:А вообще, SVGA - это 800х600 и, соответственно, все видеоадаптеры, которые поддерживают это разрешение вне зависимости от внутренней организации.


что-то я сомневаюсь в првильности этого определения.



Под SVGA понимают как все много образие. Так и определенное множество.

18K
15 марта 2009 года
logree
102 / / 27.09.2008
Спасибо :)
18K
06 апреля 2009 года
logree
102 / / 27.09.2008
хочу уточнить... те если режим с линейной адресцией то слои это подрят идущие биты\байты?
349
06 апреля 2009 года
Phantom-84
656 / / 27.10.2005
planes? В нормальных графических режимах они не используются. Только в текстовых.
banks? Если мне не изменяет память, банки могли иметь гранулярность, не всегда совпадающую с размером банка. Но обычно все-таки через соседние банки памяти выполняется обращение именно к смежым участкам видеопамяти.
18K
07 апреля 2009 года
logree
102 / / 27.09.2008
Цитата:
planes?

наверное, у Фроловых это просто - цветовые слои.
те вот допустим у меня каждый пиксел описывается 3 цветами(RGB) и соответственно по байту на цвет... это значит просто три последовательных байта?

Извените за неточность вопроса просто вообще смутно понимаю что и как :)

349
07 апреля 2009 года
Phantom-84
656 / / 27.10.2005
по байту на цвет - это не три цвета, а по 256 оттенков каждого из трех базовых цветов. Может быть две разновидности таких режимов: 3 байта на пиксел (24-битный цвет) и 3 байта плюс 1 резервный на пиксел (32-битный цвет). Байты располагаются в видеопамяти последовательно.
252
07 апреля 2009 года
koderAlex
1.4K / / 07.09.2005
давай адрес - закину досовский пример работы через vesa-bios в режиме LFB32 ,1280*1024.
18K
07 апреля 2009 года
logree
102 / / 27.09.2008
Цитата:
Байты располагаются в видеопамяти последовательно



вот это я и хотел уточнить :)
2koderAlex если не сложно кинь на файлобменник.(тем более может кто другой посмотреть захочет)

А что есть банки? Ещё со всякими лучевыми трубками не всё ясно... они вообще есть в ЖК мониторах?

252
08 апреля 2009 года
koderAlex
1.4K / / 07.09.2005
для 1280*1024 не нашёл . видно удалил . вот для 1024*768 . если нужно , то поменяешь сам номер режима со 118h на 11bh . заодно потренеруешся . )
1.9K
11 апреля 2009 года
andriano
474 / / 10.01.2008
Цитата: Phantom-84
planes? В нормальных графических режимах они не используются. Только в текстовых.

Как раз наоборот: в текстовых они не используются. Используются исключительно в 16-цветных (4-битных) графических режимах представления цвета.

1.9K
11 апреля 2009 года
andriano
474 / / 10.01.2008
Цитата: logree
А что есть банки? Ещё со всякими лучевыми трубками не всё ясно... они вообще есть в ЖК мониторах?


Не путай видеоконтроллер и дисплей, это совершенно разные устройства.
Трубок в :R, естественно, нет, но это никак не влияет на способ работы с видеоконтроллером.
А банки - пережиток реального 16-разрядного режима, в котором максимальый непосредственно адресуемый объем памяти составлял 64К, а общее адресное просранство - 1М. Вот и приходилось бОльшие объемы видеопамяти подключать к адресному пространству процессора кусочками по 64К (как врено отметил Фантом, иногда кусочки могли быть и другого, меньшего, размера).

349
11 апреля 2009 года
Phantom-84
656 / / 27.10.2005
[quote="andriano"]Как раз наоборот: в текстовых они не используются. Используются исключительно в 16-цветных (4-битных) графических режимах представления цвета.[/quote]Во-первых я сказал в "нормальных графических режимах". 16-цевтный - это не нормальный, а "древний" режим.
А во-вторых, плоскости (три из четырех) используются в текстовых режимах:
- 0 - коды символов;
- 1 - атрибуты символов (цвет, мерцание, выбор таблицы);
- 2 - таблицы с битовыми картами символов;
- 3 - не используется.
1.9K
11 апреля 2009 года
andriano
474 / / 10.01.2008
где хранятся битовые карты, навскидку не помню, а коды и атрибуты совершенно точно храняться в общем адресном пространстве через байт, начиная с адреса B800:0.
А в контексте темы, 16-цветные - как раз не "древние", наиболее актуальные, т.к. единственный хоть сколь-нибудь стандартизованный SVGA режим как раз был 16-цветным. Позднее его номер даже был перенесен в стандарт VESA, где он был единственным режимом с нулевым старшим байтом/
18K
26 августа 2009 года
logree
102 / / 27.09.2008
Странно но почему-то ни Bochs ни VMware не поддерживают VBE + тестировал ещё на двух видеокартах и опять нет VBE. Это что с 98 года сложно сделать поддержку VBE для карточки или я что-то делаю не так?
551
26 августа 2009 года
Pavia
357 / / 22.04.2004
У меня vbe работает. Возможно вы забыли установить 'VBE2'
(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.)
18K
26 августа 2009 года
logree
102 / / 27.09.2008
Действительно забыл...
Исправился... и всё равно пишет что не поддерживается

Код:
mov     ax,4f00h
        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 находи где нибудь?
349
27 августа 2009 года
Phantom-84
656 / / 27.10.2005
В директиве db символы должны быть записаны в "естественном порядке":
 
Код:
VbeSign db "VBE2"


Во многих ассемблерах (но не в fasm'е) и символы двойного слова должны быть указаны в естественном порядке, поэтому попробуй так:
 
Код:
cmp dword [VbeSign],"VESA"
18K
27 августа 2009 года
logree
102 / / 27.09.2008
Это fasm. Да я по-всякому пробывал... и что-то всё равно пишт что нет, в чём ещё может быть дело?
349
28 августа 2009 года
Phantom-84
656 / / 27.10.2005
Может, у тебя регистор ds не настроен, когда ты выполняешь cmp dword [VbeSign], "ASEV" :D
18K
28 августа 2009 года
logree
102 / / 27.09.2008
Phantom-84, Похоже на то, я что-то про это совсем забыл...:(

но вот тогда вопрос почему так
cmp dword [VbeSign], "ASEV" НЕ РАБОТАЕТ
а вот так
cmp dword [VbeSign],"VESA" всё нормально?

Это же fasm!?
349
28 августа 2009 года
Phantom-84
656 / / 27.10.2005
Ну это был fasm'овский полуглюк-полуфича. Может, поправили в какой-то из версий. У меня до сих пор в основном 1.64 стоит - тут требуется обратный порядок. В новых версиях может наоборот. К примеру, я пока еще не сориентировался, когда успели byte на short заменить в явных коротких переходах. Нужно историю почитать. А может это вообще был какой-то левый fasm.
18K
28 августа 2009 года
logree
102 / / 27.09.2008
А вот этот код работает...
Цитата:

mov eax,0e820h
mov edx,"PAMS" ;smap
mov di,0059h
mov ecx,14h
int 15h
jc .func_err
cmp eax,"PAMS"
jc .func_err



Цитата:
К примеру, я пока еще не сориентировался, когда успели byte на short заменить в явных коротких переходах.



если верить файлу WHATSNEW.TXT то в version 1.66 (May 7, 2006)

Цитата:
[+] Added "short" keyword for specifying jump type, the "jmp byte" form is now
obsolete and no longer correct - use "jmp short" instead.

349
30 августа 2009 года
Phantom-84
656 / / 27.10.2005
Да, у меня тоже (fasm 1.68)...
 
Код:
.next:  mov edx,"PAMS"
        mov eax,0E820h
        int 15h
        jc .error_5
        sub eax,"PAMS"
        jnz .error_5
        cmp ecx,20
        jne .error_5
:D

Так ны нашел в своем коде ошибку или нет?
18K
30 августа 2009 года
logree
102 / / 27.09.2008
Цитата:
Так ны нашел в своем коде ошибку или нет?



если имеется в виду

 
Код:
int     15h
        jc      .func_err
        cmp     eax,"PAMS"
        jne     .func_err


то да, но почему так
cmp dword[ds:VbeSign],"VESA" работает?

объясните мне бесолковому...
14K
31 августа 2009 года
shoorick
48 / / 07.06.2006
fasm требует прямого порядка символов. может, когда-то и требовал обратного, как масм, но я такого не припомню.
349
31 августа 2009 года
Phantom-84
656 / / 27.10.2005
Блин, в натуре :D
Я знаю, что порядок в fasm'е обратный тому, чем во всяких там masm'ах, и почему-то решил, что он "вообще обратный". А оказывается все наоборот - это во всяких там masm'ах порядок обратный, а в fasm'е прямой. К примеру, инструкция cmp dword ["VV"],"VESA" и в версии 1.64, и в версии 1.68 компилируется одинаково:
 
Код:
66 81 3E 56 56 56 45 53 41

Получается, что функция SMAP требует обратного порядка. Сразу понятно, какой(или какие) ассемблер в то время использовали разработчики этого интерфейса :)
18K
31 августа 2009 года
logree
102 / / 27.09.2008
Ну слава богу разобрались, а то я думал что у меня крыша едет...

Phantom-84 редактируй пост

неужели ни кто не сталкивался с этой проблемой раньше?
551
31 августа 2009 года
Pavia
357 / / 22.04.2004
Почему не сталкивались просто это тревиальный вопрос.

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 втык сделать нужную информацию стирает.
18K
31 августа 2009 года
logree
102 / / 27.09.2008
Цитата:
Почему не сталкивались просто это тревиальный вопрос.


для кого как :)

349
01 сентября 2009 года
Phantom-84
656 / / 27.10.2005
Цитата: logree
Phantom-84 редактируй пост

Зачем его редактировать? Там как раз все правильно написано. Для fasm'а нужно писать "PAMS", а вот для всяких левых (т.е. классических :) ) ассемблеров нужно писать "SMAP".

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог