· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.HEAP —› Можно ли хранить данные в видеопамяти (A0000)?

Посл.отвђт Сообщенiе


Дата: Дек 6, 2002 02:34:26

Привет всем!
Могу ли я использовать граф. память для собственных нужд? Ведь в текстовом режиме она не нужна. Чего добру пропадать? Только вот проблема: в досе что ни запишешь, считывается только 0ffh. А в винодовс, кажется, все работает. В чем дело?


Дата: Дек 6, 2002 02:45:11 · Поправил: comrade

S video pamyati chitat nelzya. Na skolko ia znau, v Windows'e eto pamyat emulirovana, tak chto tam uzhe vsyo mozhno.


Дата: Дек 6, 2002 08:28:52

Александр
В текстовом режиме (по крайней мере EGA/VGA) в сегменте 0A000h лежит знакогенератор, чтобы получить туда доступ надо программировать видеоконтроллер. Принцип как это делается см. у Р.Вилтона (в nlib200.rtl от nu8 это сделано приятнее).


Дата: Дек 6, 2002 16:48:44

comrade
S video pamyati chitat nelzya
Но ведь в графическом режиме можно! Да и в текстовом читать и писать в 0B8000h.
Na skolko ia znau, v Windows'e eto pamyat emulirovana, tak chto tam uzhe vsyo mozhno.
По крайней мере это объясняет различия.

P2M
В текстовом режиме (по крайней мере EGA/VGA) в сегменте 0A000h лежит знакогенератор,
А почему тогда эта область заполнена только значениями 0FFh?
чтобы получить туда доступ надо программировать видеоконтроллер.
А какой доступ ты имеешь в виду?

Спасибо!
PS. Вы уж извините за такие вопросы. Просто где-то слышал, что видеопамять можно использовать для данных, а не получается :(


Дата: Дек 9, 2002 04:18:29

Александр
А почему тогда эта область заполнена только значениями 0FFh?
Незнаю. Просто так я ее не читал.

А какой доступ ты имеешь в виду?
На чтение/запись.

[code]
; Восстановить видеоконтроллер после прямого доступа к
; знакогенератору ОЗУ EGA / VGA.
xor ax,ax
mov ds,ax
mov al,ds:[449h]
and al,7Fh
mov bx,0A06h

.if al != 7
mov bh,0Eh
.endif

mov dx,3C4h

mov ax,302h
out dx,ax
mov ax,304h
out dx,ax

mov dl,0CEh

mov ax,1005h
out dx,ax
mov ax,bx
out dx,ax
mov ax,4
out dx,ax

...

; Приготовить видеоконтроллер для прямого доступа к
; знакогенератору ОЗУ EGA / VGA.
mov dx,3C4h

mov ax,402h
out dx,ax
mov ax,704h
out dx,ax

mov dl,0CEh

mov ax,5
out dx,ax
mov ax,406h
out dx,ax
mov ax,204h
out dx,ax
[/code]


Дата: Дек 9, 2002 17:53:58

FF - отсутствующая память.
В текстовом режиме по адресу 0a000:0 нет ничего, память отображается
адаптером в адреса 0b800 или 0b000.
А в режимах EGA/VGA графики как раз туда.
Знакогенератор пишется по адресам отображения, после резрешения 2-й битовой плоскости.


Дата: Дек 10, 2002 17:41:27

Помнится, в DOS'овские времена были некоторые программки (напр.VIDRAM), которые прямо присоединяли часть видеопамяти к области, доступной DOS. Я и сам писал что-то подобное.
Что касается адресации с A000 или B800/B000 - это устанавливается значениями в портах видеоконтроллера.
В текстовом режиме никак не используется 3-я битовая плоскость, при желании её вполне можно использовать.


Дата: Дек 13, 2002 00:58:59

Спасибо большое за ответы. На днях попробую разобраться, испытать. А то, блин, времени совсем нет :((( Потом еще напишу, если что. Спасибо еще раз!


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.074