Графические устройства

Особенности работы в режимах VESA


Особенности работы в режимах VESA
Особенности работы в режимах VESA Стандарт VESA создавался для того, чтобы графические задачи могли самостоятельно, или при минимальном вмешательстве оператора, настроиться на работу с уста...
Проверка поддержки видеорежима
Проверка поддержки видеорежима Для нормального выполнения любой прикладной задачи должны быть созданы соответствующие условия. Поэтому при разработке задач, как правило, предусматриваются...
Когда невозможна установка видеорежима?
Когда невозможна установка видеорежима? Установке требуемого видеоре-жнма могут препятствовать три причины: режимы VESA вообще не поддерживаются; не поддерживается конкретный видеор...
Размещение массива Info
Размещение массива Info Рассмотрим, как производится проверка возможности работы в выбранном видеорежиме. Для проверки соответствия видеокарты стандарту VESA и получения общей информаци...
Проверка существования VBE
Проверка существования VBE В примере 2.1 приведен текст фрагмента программы, проверяющего соответствие видеокарты стандарту VESA....
Пример 2 1 Проверка поддержки стандарта VESA
Пример 2.1. Проверка поддержки стандарта VESA test_1:push es ; сохранение содержимого es mov es, Info ; значение сегмента буфера Info xor di, di...
Пример 2 2 Чтение информации о
Пример 2.2. Чтение информации о режиме и проверка его поддержки test 2:mov ax, 4F01h ; код запрашиваемой функции mov ex, NewMode ; ; код нужного видеорежима...
Заключительная проверка
Заключительная проверка Если в регистре ах находится код 4Fh, то остается последний штрих — проверить достаточность реально существующего (а не предельно допустимого) объема видеопамят...
Пример 2 3 Заключительная проверка поддержки видеорежима
Пример 2.3. Заключительная проверка поддержки видеорежима test_3: mov fs, Info ; сегмент с данными о режиме test byte ptr fs:[di], 1 ; объем видеопамяти достаточен...
Пример 2 4 Сохранение исходного
Пример 2.4. Сохранение исходного видеорежима и установка нового stmd: mov ax,OFOOh код функции "Чтение видеорежима" int lOh BIOS читает текущий вид...
Коды VESA и OEM
Коды VESA и OEM Размер кода режимов VESA превышает размер байта, поэтому при установке этих режимов в байт 0000:0449 записывается так называемый код OEM, т. е. код, выбираемый по усмотр...
Обработка информации о режиме
Обработка информации о режиме При программировании графики надо знать количество-точек на экране по горизонтали и вертикали, способ кодирования цвета, расположение базовых цветов, спосо...
Пример 2 5 Определение значений трех переменных
Пример 2.5. Определение значений трех переменных succ: mov ax, fs:[di+08] ; читаем значение видеосегмента mov Vbuff, ax ; и сохраняем его в Vbuff mov...
Пример 2 6 Сохранение величин
Пример 2.6. Сохранение величин, используемых при работе с окнами mov al, fs:[di+3] ; читаем состояние окна В mov winB, al ; и сохраняем его в байте winB...
Процедуры для работы с одним окном видеопамяти
Процедуры для работы с одним окном видеопамяти На видеокарте обязательно расположена оперативная память, которую принято называть видеопамятью (video memory). Видеоконтроллер непрерывно вы...
Доступ к видеопамяти
Доступ к видеопамяти Специфической особенностью семейства IBM PC является ограничение пространства доступных адресов размером 1 Мбайт. Оно делится на сегменты, предельный размер которых...
Пример 2 7 Установка окна с использованием функции BIOS
Пример 2.7. Установка окна с использованием функции BIOS mov dx, Cur_win ; запись в dx значения окна xor bx, bx ; признак установки окна mov ax, 4F...
Пример 2 8 Три подпрограммы для работы с видеоокнами
Пример 2.8. Три подпрограммы для работы с видеоокнами ; Установка следующего окна NxtWin: push ax ; сохраняем содержимое ах mov ax, GrUnit...
Контроль ошибок
Контроль ошибок В данном разделе ничего не говорилось о контроле ошибок при установке или изменении окон видеопамяти. Это объясняется несколькими причинами. Прежде всего, признак ошибки...
Работа с двумя окнами видеопамяти
Работа с двумя окнами видеопамяти Большинство исследованных автором видеокарт поддерживало работу только с одним окном А. Исключением явился акселератор тасЬб4 фирмы ATI Technologies I...
Перекрытие окон
Перекрытие окон При программировании большинства графических алгоритмов удобнее иметь дело с одним окном видеопамяти, независимо от того, сколько их есть на самом деле. Для этого надо и...
Пример 2 9 Процедура установки одного или двух окон
Пример 2.9. Процедура установки одного или двух окон SetWin: PushReg <ax,bx,dx> ; сохранение используемых регистров хог bx, bx ; признак установки окна...
Раздельная работа с окнами
Раздельная работа с окнами Раздельная (независимая) работа с двумя окнами применяется в редких случаях. Если в вашей практике возникнет такой случай, то следует поступить так: выясни...
Страничная организация видеопамяти
Страничная организация видеопамяти Одним из традиционных приемов при работе с видеопамятью является ее деление на страницы. Из нескольких страниц только одна отображается на экране мони...
Смена активной страницы
Смена активной страницы Как уже говорилось, активной является та страница, содержимое которой в данный момент отображается на экране монитора. Специальный механизм переключения страниц...
Пример 2 10 Установка нового начала
Пример 2.10. Установка нового начала отображаемой области памяти хог bx, bx ; признак смены страницы mov ex, BaseCol ; номер точки в исходной строке mov dx, BaseRow ; номер исходной с...
Изменения в вычислениях адресов
Изменения в вычислениях адресов Страничная организация памяти влияет олько на способы определения адресов точек графических объектов. Поэтому желательно выбрать такое расположение стра...
Расположение и размеры страниц
Расположение и размеры страниц Если размер страниц равен размеру отображаемой на экране (рабочей) части видеопамяти, то каждая из них будет начинаться с новой строки. При таких размерах...
Страница в начале окна
Страница в начале окна Особый интерес представляет случай, когда каждая страница начинается с нового окна видеопамяти. При этом базовые адреса равны нулю, и в оперативной памяти надо хр...
Таблица 2 1 Размеры страниц для трех групп видеорежимов
Таблица 2.1. Размеры страниц для трех групп видеорежимов Разрешающая способность в точках Количество окон (к = 1, 2, 4) Количество строк 640x480 5*k 512...
Часто используемые в примерах имена
Часто используемые в примерах имена В примерах, приводимых в данной и последующих главах книги, многократно повторяются имена переменных, подпрограмм для работы с окнами видеопамяти и м...
Основные переменные
Основные переменные Переменная — это последовательность байтов оперативной памяти, которым присвоено уникальное имя и в которых хранятся величины, применяемые при вычислениях. В команда...
Пример 2 11 Описания основных переменных в сегменте данных
Пример 2.11. Описания основных переменных в сегменте данных Data SEGMENT ; директива указывает начало сегмента OldMode db 0 ; исходный видеорежим...
Пример 2 12 Описание макроопределений
Пример 2.12. Описание макроопределений PushReg и PopReg ; Сохранение в стеке регистров, перечисленных в списке гeg PushReg macro reg ; заголовок макро...
Параметры макровызова
Параметры макровызова Макровызовы или макрокоманды — это вставка текста макроопределения в нужных местах программы с подстановкой конкретных параметров, если они имеются. Для макроопред...
Раздел для начинающих
Раздел для начинающих В данной главе приведены первые примеры программ, поэтому имеет смысл поговорить о принятом в книге оформлении текстов примеров, об описании используемых в них пе...
Сегментирование
Сегментирование При компиляции программы (при ее преобразовании в объектный код) Макроассемблер преобразует имена переменных в относительные адреса. Следовательно, должна существовать...








Начало