![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
TarasBer |
![]()
Сообщение
#1
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
В режиме 640 на 480 видеопамять состоит из 4 цветовых слоёв. Которые в оперативной памяти расположены... по одному и тому же адресу! Для доступа к тому или иному слою надо записать какое-то значение в порты. Но тогда получается, что физическое расположение видеопамяти - это вовсе не $A000: $0000, ведь иначе один слой затирал бы информацию о другом. Можно ли обратиться к видеопамяти ещё более непосредственно, минуя механизм обращения по известному адрему? Или это на уровне железа так сделано, и по другому никак? Ведь помню, когда с портами баловался - экран покрывался цветными пятнами, причём разрешение экрана было довольно высокое.
-------------------- |
![]() ![]() |
andriano |
![]()
Сообщение
#2
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
В режиме 640 на 480 видеопамять состоит из 4 цветовых слоёв. Которые в оперативной памяти расположены... по одному и тому же адресу! Цитата Для доступа к тому или иному слою надо записать какое-то значение в порты. Но тогда получается, что физическое расположение видеопамяти - это вовсе не $A000: $0000, ведь иначе один слой затирал бы информацию о другом. С какой стати?Во-первых, сам по себе "слой" ничего затереть не может, т.к. ничего никуда не пишет. А пишет и, соответственно, может затереть - только процессор (или другое устройство, которое можно настроить на работу с видеопамятью). И когда рпоцессор пишет некоторое число в адресное пространоство памяти, это число оказывается записанным одновременно в несколько "слоев": от 0 до 4. В зависимости от настроек видеоадаптера в данный момент. Цитата Можно ли обратиться к видеопамяти ещё более непосредственно, минуя механизм обращения по известному адрему? Это самый прямой из всех известных способов доступа к памяти.Цитата Или это на уровне железа так сделано, и по другому никак? Можно придумать и другие способы, но явно не более простые.Цитата Ведь помню, когда с портами баловался - экран покрывался цветными пятнами, причём разрешение экрана было довольно высокое. Ну, для баловства вполне закономерный результат. Чтобы сделать что-то осмысленное, нужно понимать, что делаешь.PS. Режимы с 4 цветовыми слоями сегодня представляют лишь академический (или исторический) интерес. Так что если интерес имеет практический характер, советую забыть о 16-цветных режимах как о кошмарном сне. |
TarasBer |
![]()
Сообщение
#3
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
С какой стати? Во-первых, сам по себе "слой" ничего затереть не может, т.к. ничего никуда не пишет. Я про то место, где видеоадаптер на самом деле хранит картинку. Адрес А000:0000 это всего лишь "окно". Цитата PS. Режимы с 4 цветовыми слоями сегодня представляют лишь академический (или исторический) интерес. Так что если интерес имеет практический характер, советую забыть о 16-цветных режимах как о кошмарном сне. А вдруг аналогичные методы потом можно и к другим режимам применить. -------------------- |
andriano |
![]()
Сообщение
#4
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Я про то место, где видеоадаптер на самом деле хранит картинку. Адрес А000:0000 это всего лишь "окно". Организация памяти внутри видеоадаптера и то, как она видна в адресном пространстве процессора - разные вещи. Видеоадаптер может подключать к к одному и тому же адресу разные ячейки памяти, одну и ту же - по разным адресам, а также по-разному формировать байты, видимые процессором, из имеющихся у него битов видеопамяти. Если говорить точнее, то "окно" он лишь со стороны процессора - окно, через которое видеоадаптеру РАЗРЕШЕНО подключать видеопамять к адресному пространству процессора. Из каких участков видеопамяти будет скомпоновано это окно (включая составление байтов из битов, а также параллельную запись в несколько мест по одному адресу), а также какая часть этого "окна" будет использоваться, а какая - свободна, - целиком на совести видеоадаптера. Видеоадаптер может, например, в режиме 32-разрядного цвета подключать к каждому двойному слову адресного пространства лишь 24 бита видеопамяти. Возможно, ты не совсем ясно выразился и хотел сказать, что содержимым памяти должен заведовать видеоадаптер, а не центральный процессор? Если так, тогда все 3D-ускоители именно этим и занимаются. (собственно, 2D-ускорители - тоже) Цитата А вдруг аналогичные методы потом можно и к другим режимам применить. Хотелось бы получить описание "метода" прежде, чем пытаться найти что-то ему "аналогичное".Сообщение отредактировано: andriano - 9.03.2009 10:28 |
TarasBer |
![]()
Сообщение
#5
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Нет, это ни в коей мере не "окно". Организация памяти внутри видеоадаптера и то, как она видна в адресном пространстве процессора - разные вещи. Видеоадаптер может подключать к к одному и тому же адресу разные ячейки памяти, одну и ту же - по разным адресам, а также по-разному формировать байты, видимые процессором, из имеющихся у него битов видеопамяти. Хорошо, но есть ли прямой способ подключиться к памяти адаптера? Без посредника. -------------------- |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 23:41 |