Что такое vga режим: Что такое режим VGA?

Содержание

Безопасный режим windows XP?

03.08.2015

Если по каким либо причинам Windows перестает загружаться, то можно попробовать исправить ошибки, загрузив компьютер в альтернативном режиме (безопасный режим, безопасный режим с поддержкой сетевых драйверов и т.д.).

Для того чтобы попасть в меню дополнительных вариантов загрузки, нажмите F8 не дожидаясь начала загрузки windows.


Безопасный режим (safe mode)— режим защиты от сбоев. В безопасном режиме загружаются только те драйверы и службы, которые необходимы для работы системы. Безопасный режим windows XP, позволит исправить все ошибки и вернуть систему в рабочее состояние.

Важно знать, что в безопасном режиме, Windows не загружает сетевые драйверы, а видеоподсистема переключается в режим VGA, так что полноценной работы в этом режиме, не будет.

Безопасный режим с загрузкой сетевых драйверов (Safe Mode with Networking) — Тот же безопасный режим, только в дополнение загружаются сетевые драйверы. Появляется возможность работать с локальной сетью.

Безопасный режим с поддержкой командной строки (Safe Mode with Command Prompt) — В этом случае Windows также запускается в безопасном режиме, только не в графическом интерфейсе, а в окне эмуляции MS-DOS. Здесь доступны все команды DOS по работе с дисками и файлами.

Включить протоколирование загрузки (Enable Boot Logging) — Во время загрузки, Windows будет последовательно записывать информацию о загрузке в файл bootlog.txt, который позже можно будет просмотреть и выяснить причину ошибки.

Включить режим VGA (Enable VGA Mode) — Система загружается с использованием видеорежима VGA. Будут задействованы стандартные драйверы видеоподсистемы.

Загрузка последней удачной конфигурации (Last Known Good Configuration) — этот режиме windows, позволяет загрузить настройки системы, которые работали должным образом. При успешном завершении работы Windows, важные системные настройки сохраняются в реестре.

Восстановление службы каталогов

(Directory Services Restore Mode) — Данный режим позволяет на сетевом сервере восстанавливать поврежденные папки SYSVOL и Active Directory. Для контролеров доменов.

Режим отладки (Debugging Mode) — Дополнительные возможностями для аварийного восстановления системы.

Обычная загрузка Windows (Start Windows normally) — Загрузка Windows в обычном режиме.

Перезагрузка (Reboot) — Перезагрузка компьютера.

Возврат к выбору операционной системы (Return to OS Choices Menu) — Возврат к меню выбора операционной системы, если их несколько. Если нет, то повторная загрузка Windows в обычном режиме.

Режим 13h — это… Что такое Режим 13h?

VGA (англ. Video Graphics Array) — стандарт мониторов и видеоадаптеров. Выпущен 1987 году для компьютеров PS/2 Model 50 и более старших

[1]. VGA являлся последним стандартом, которому следовало большинство производителей видеоадаптеров.

Видеоадаптер VGA подключается как к цветному, так и к монохромному монитору, при этом доступны все стандартные видеорежимы. Частота обновления экрана во всех стандартных режимах, кроме 640×480, — 70 Гц, в режиме 640×480 — 60 Гц. Видеоадаптер имеет возможность одновременно выводить на экран 256 различных цветов, каждый из которых может принимать одно из 262 144 различных значений (по 6 битов на красный, зелёный и синий компоненты). Объём видеопамяти VGA — 256 кБ.

Видеоадаптер VGA, в отличие от предыдущих видеоадаптеров IBM (MDA, EGA), использует аналоговый сигнал для передачи цветовой информации. Переход на аналоговый сигнал был обусловлен необходимостью сокращения числа проводов в кабеле. Также аналоговый сигнал давал возможность использовать VGA-мониторы с последующими видеоадаптерами, которые могут выводить большее количество цветов

[2].

Официальным последователем VGA стал стандарт IBM SVGA.

Термин VGA также часто используется для обозначения разрешения 640×480 независимо от аппаратного обеспечения для вывода изображения, хотя это не совсем верно (так, режим 640х480 с 16-, 24- и 32-битной глубиной цвета не поддерживаются адаптерами VGA, но могут быть сформированы на мониторе, предназначенном для работы с адаптером VGA, при помощи SVGA-адаптеров). Также этот термин используется для обозначения 15-контактного разъёма VGA для передачи аналоговых видеосигналов при различных разрешениях.

Архитектура видеоадаптера VGA

VGA состоит из следующих основных подсистем:

  • Графический контроллер (Graphics Controller), посредством которого происходит обмен данными между центральным процессором и видеопамятью. Имеет возможность выполнять битовые операции над передаваемыми данными.
  • Видеопамять (Display Memory), в которой размещаются данные, отображаемые на экране монитора. 256 кБ цветовых слоя по 64 кБ.
  • Последовательный преобразователь (Serializer или Sequencer) — преобразует данные из видеопамяти в поток битов, передаваемый контроллеру атрибутов[3].
  • Контроллер атрибутов (Attribute Controller) — с помощью палитры преобразует входные данные в цветовые значения.
  • Синхронизатор (Sequencer) — управляет временны́ми параметрами видеоадаптера и переключением цветовых слоёв.
  • Контроллер ЭЛТ (CRT Controller) — генерирует сигналы синхронизации для ЭЛТ[4][5].

В отличие от CGA и EGA, основные подсистемы располагаются в одной микросхеме, что позволяет уменьшить размер видеоадаптера. В компьютерах PS/2 видеоадаптер VGA интегрирован в материнскую плату

[2].

Текстовые режимы

В стандартных текстовых режимах символы формируются в ячейке 9×16 пикселов, возможно использование шрифтов других размеров: 8—9 пикселов в ширину и 1—32 пиксела в высоту. Размеры самих символов, как правило, меньше, так как часть пространства уходит на создание зазора между символами. Функция для выбора размера шрифта в [2][6].

В VGA BIOS хранятся следующие виды шрифтов и функции для их загрузки и активации:

  • 8×16 пикселов (стандартный шрифт VGA),
  • 8×14 (для совместимости с EGA),
  • 8×8 (для совместимости с CGA).

Как правило, эти шрифты соответствуют кодовой странице русификации[7].

Доступны следующие стандартные режимы:

  • 40×25 символов, 16 цветов, разрешение 360×400 пикселов.
  • 80×25 символов, 16 цветов, разрешение 720×400 пикселов.
  • 80×25 символов, монохромный, разрешение 720×400 пикселов[4].

Используя шрифты меньших размеров, чем стандартный 8×16, можно увеличить количество строк в текстовом режиме. Например, если включить шрифт 8×14, то будет доступно 28 строк. Включение шрифта 8×8 увеличивает количество строк до 50 (аналогично )[8][9].

В текстовых режимах для каждой ячейки с символом можно указать атрибут, задающий способ отображения символа. Существует два отдельных набора атрибутов — для цветных режимов и для монохромных. Атрибуты цветных текстовых режимов позволяют выбрать один из 16-ти цветов символа, один из 8-ми цветов фона и включить или отключить мерцание (возможность выбора мерцания можно заменить на возможность выбора одного из 16-ти цветов фона), что совпадает с возможностями CGA. Атрибуты монохромных режимов совпадают с атрибутами, доступными у MDA, и позволяют включать повышенную яркость символа, подчёркивание, мерцание, инверсию и некоторые их комбинации

[2].

Графические режимы

В отличие от своих предшественников (CGA и EGA) видеоадаптер VGA имел видеорежим с квадратными пикселами (то есть, на экране с соотношением сторон 4:3 соотношение горизонтального и вертикального разрешений было также 4:3). У адаптеров CGA и EGA пикселы были вытянуты по вертикали.

Стандартные графические режимы

  • 320×200 пикселов, 4 цвета.
  • 320×200 пикселов, 16 цветов.
  • 320×200 пикселов, 256 цветов.
  • 640×200 пикселов, 2 цвета.
  • 640×200 пикселов, 16 цветов.
  • 640×350 пикселов, монохромный.
  • 640×350 пикселов, 16 цветов.
  • 640×480 пикселов, 2 цвета. При разрешении 640×480 пиксел имеет пропорции 1:1.
  • 640×480 пикселов, 16 цветов[4].

Нестандартные графические режимы (X-режимы)

Перепрограммирование VGA позволяло достичь более высоких разрешений по сравнению со стандартными режимами VGA. Наиболее распространённые режимы таковы:

  • 320×200, 256 цветов, 4 страницы. Ничем внешне не отличающийся от режима 13h (320×200, 256 цветов), этот режим имел четыре видеостраницы. Это позволяло реализовать двойную и даже тройную буферизацию.
  • 320×240, 256 цветов, 2 страницы. В этом режиме страниц меньше, зато квадратные пиксели.
  • 360×480, 256 цветов, 1 страница. Наибольшее разрешение на 256 цветах, которое позволяет VGA.

Во всех этих режимах структура графической памяти не линейна, и адрес памяти, который соответствует пикселю с координатами (x, y), вычисляется по сложным формулам. Зато из-за особенностей контроллера видеопамяти копирование данных в видеопамять происходит вчетверо быстрее, чем в режиме 13h.

Термин «X-режим» (англ. Mode X) был придуман Майклом Абрашем в 1991 году для обозначения нестандартного режима 320×240, 256 цветов. Этот режим был открыт различными программистами независимо друг от друга, но стал известным благодаря статьям Майкла Абраша в журнале «Dr. Dobb’s Journal»[10].

См. также

Примечания

  1. Wilton, Richard IBM Video Hardware and Firmware // Programmer’s Guide to PC and Ps/2 Video Systems. — Microsoft Press, 1987. — С. 544. — ISBN 1-55615-103-9
  2. 1 2 3 4 Thompson, Stephen VGA-sign choices for a new video subsystem (англ.). IBM Systems Journal (1988). Проверено 15 декабря 2006.
  3. Neal, J. D. VGA Sequencer Operation (англ.). FreeVGA Project (1998). Проверено 23 февраля 2007.
  4. 1 2 3 Scott, Michael comp.sys.ibm.pc.hardware.video FAQ (англ.) (1997). Проверено 23 февраля 2007.
  5. Фролов, Александр; Фролов, Григорий Архитектура видеоадаптеров EGA и VGA. Программирование видеоадаптеров CGA, EGA и VGA (1992). Проверено 23 февраля 2007.
  6. Neal, J. D. VGA Text Mode Operation (англ.). FreeVGA Project (1998). Проверено 15 декабря 2006.
  7. Фролов, Александр; Фролов, Григорий Приложения. Программирование видеоадаптеров CGA, EGA и VGA (1992). Проверено 23 февраля 2007.
  8. Dnes, Walter Nicer console textmodes (англ.).
    Проверено 11 января 2007.
  9. Rollins, Dan INT 10H 11H: EGA/VGA Character Generator Functions (англ.). Tech Help! (1997). Проверено 11 января 2007.
  10. Abrash, Michael Mode X: 256-Color VGA Magic (англ.). Graphics Programming Black Book (2001). Проверено 30 марта 2007.

Ссылки

Wikimedia Foundation. 2010.

Компьютеры и Интернет

Драйвер видеокарты (VGA) – это тип программного обеспечения на персональном компьютере (ПК) или мобильном телефоне, который управляет видеоустройством. Драйвер – это, по сути, набор цифровых инструкций, которые позволяют операционной системе (ОС) взаимодействовать с физическим оборудованием. Драйверы VGA специально используются для управления информацией, которая отправляется на монитор или другой визуальный дисплей.

Возможности

Драйверы VGA специфический для совместимых с Microsoft Windows® компьютеров и мобильных телефонов, использующих ОС Windows®. Они поддерживают графику со стандартным разрешением 640 пикселей по горизонтали и 480 пикселей по вертикали и могут отображать до 256 разных цветов. По большинству современных стандартов это низкий уровень разрешения, поскольку новые драйверы поддерживают горизонтальное разрешение 1024 байта или более. По этой причине эти драйверы часто считаются устаревшими для использования на ПК, но по-прежнему широко используются на мобильных телефонах, у которых меньше размер экранов.

Общее использование

Драйвер VGA по-прежнему обычно включен на ПК, несмотря на то, что он устарел. Он действует как резервная копия, позволяя компьютеру отображать визуальную информацию, если другой драйвер не установлен, или если монитор подключен к компьютеру и использует стандарт, который компьютер не распознаёт. Стандартное разрешение 640 на 480 также используется для отображения системной информации во время процесса загрузки, когда компьютер впервые включен.

Некоторые мобильные устройства также поставляются с этим типом драйверов. Маленькие экраны, которые можно найти в сотовых телефонах и других портативных устройствах, не требуют высоких разрешений, поэтому для этих устройств часто достаточно VGA. Производители обычно включают правильный драйвер для отображения в мобильной операционной системе, поэтому пользователям не нужно устанавливать его самостоятельно, но есть загружаемые файлы для телефонов, которые не поставляются с ними.

Существуют также различные типы драйверов VGA, которые совместимы с различными типами программного обеспечения – например, Windows® 7 или Windows® Mobile – которые могут быть загружены как для ПК, так и для телефонов. Возможно, кому-то понадобится загрузить их, если он обновит базовую систему ввода/вывода (BIOS) или установит другую ОС, которая не поставляется с уже установленным драйвером VGA.

Режим VGA

Компьютеры также имеют возможность запускаться в режиме VGA, при котором он использует только драйвер VGA, а не любую другую графическую систему отображения. Это может быть полезно, если есть проблема с одним из драйверов дисплея или при смене графической карты, что может привести к тому, что Windows® не будет загружаться должным образом. Если это произойдет, пользователь может перевести компьютер в режим VGA, минуя проблему и всё ещё позволяя дисплею работать, чтобы он или она могли использовать компьютер для устранения проблемы. Этот режим также можно использовать для диагностики, так как пользователь может быть уверен, что проблем с драйвером VGA нет, когда он или она пытается перевести компьютер в режим VGA.

Как работать с VGA видеоинтерфейсом

В этой статье я расскажу принцип работы VGA интерфейса. С помощью временных диаграмм и распиновки коннектора / разъёма можно выводить изображения на монитор.

Рис.1 VGA коннектор «папа»

Рис.2 VGA коннектор «мама»

Вначале, неплохо бы узнать распиновку коннектора:

Рис.3 VGA «мама»       Рис.4 VGA «папа»

Таблица 1 Обозначение выводов VGA разьёма

Отбросим I2C и остаётся всего несколько выводов. Все земли можно соединить вместе, в итоге будет 3 цвета RGB, на эти выводы подаётся аналоговое напряжение от 0 до 0.7 В, чем больше напряжение на цветовом входе тем «насыщеннее» данный цвет. 0.7 В на всех 3 выводах дадут самый яркий белый цвет на который способен монитор. Таким образом можно получить практически любой цвет смешиванием 3-ёх составляющих. Для простоты я буду подавать на каждый из выводов либо 0 либо 0.7 В. Если хочется большого разнообразия цветов, нужно использовать преобразователи из цифрового кода в аналоговое напряжение ЦАП. Его можно составить самому с помощью резисторной матрицы. Либо достать специальную микросхему, к примеру: AD664

На выводах вертикальной и горизонтальной синхронизации действуют уровни ТТЛ сигналов.
— Уровень логического нуля, не более +0,8 В
— Уровень логической единицы, не менее +2,4 В
Вообщем они стабильно работают с МК при 3.3 В и 5 В.

При питании от 3.3 В (стандартное напряжение ПЛИС) (логическая 1 ≈ 3.3 В)
на цветовые входы сигнал подаётся через резисторы 270 Ом.

Рис.5 Подключение VGA к цифровому устройству с питанием 3.3 В
Как мы помним входное сопротивление цветовых VGA входов 75 Ом.
Рассчитаем максимальное напряжение:
3.3 * 75 / (75 + 270) = 0.717 В
Немного превышает, но работает без проблем.

При питании от 5 В, потребуется резисторы номиналом:
R = 3.3 * 75 / 0.7 — 75 = 460 ≈ 470 Ом

Остаётся узнать в какие моменты подавать единички и нолики на эти выводы.

Разрешение изображения и частота обновления определяется интервалами импульсов синхронизации. Во время синхроимпульсов на RGB выводах, должно быть 0 В.

Видео данные 1 строки — горизонтальный синхро импульс — видео данные 2-ой строки — горизонтальный синхро импульс — видео данные 3-ей строки — ********************* — рисуем последнюю строку —  большой вертикальный синхроимпульс (вместе с горизонтальным) — Всё по новой.

Рис. 6 Временные диаграммы сигналов

Рис.7 Отображение синхроимпульсов

Рассмотрим параметры для разрешения 640 x 480 @ 60 Гц

Таблица 2 частотные параметры VGA интерфейса

Частота обновления кадров60 Гц
Вертикальное обновление31.469 кГц
Частота пикселей25.175 МГц

Таблица 3 временные параметры для горизонтальной линии

Часть линииПикселиВремя [мкс]
Видео данные (D) 640

25.422

Front porch (E)16

0.636

Ширина синхро импульса (B)96

3.813

Back porch (C)48

1.907

Целая линия (A)800

31.778


Таблица 3 временные параметры для 1 кадра

Часть кадраЛинииВремя [мс]
Видео данные (R) 480

15.253

Front porch (S)10

0.318

Ширина синхро импульса (P)2

0.064

Back porch (Q)33

1.049

Весь кадр (O)525

16.683


 Не обязательно использовать точно такие же значения как в таблице, лишь бы они были достаточно близкими. Для данного разрешения используются отрицательные вертикальный и горизонтальный синхроимпульсы, для других разрешений это может не совпадать.

Можно заметить что частота вертикальной синхронизации иногда не совпадает с частотой обоновления экрана. LCD моинторы пришли на смену ЭЛТ мониторов, которые заменили большие телевизоры с электронно-лучевой трубкой. Когда появилась возможность выводить цветное изображение на экран у американских инженеров возникла проблема, тот стандарт частоты передачи звука который они выбрали «не согласуется» (вызывает помехи) с 60 Гц. Стандарт для частоты был 44.056 кГц. Но они выяснили что изменение частоты на 0.1 % позволит это исправить и т.к. стандарт передачи звука был уже общепринятым, они уменьшили частоту оновления экрана.
60 * 0.999 = 59.94
Т.к. многие значения были приняты ещё тогда, производели к ним привыкли и продолжают использовать, если сейчас изменить стандарт то придётся проделать слишком большую работу, не считая того что многие устройства могут просто перестать работать с новыми стандартами.
Подробней про это можно прочитать здесь и здесь
Я не знаю причину отличий другиих значений и почему нельзя было сделать временные интервалы кратные 10, 5 или хотя бы 2.

Из таблиц видно что есть время когда на экран ничего не выводится, это сделано для синхронизации, это можно представить будто наш рисующий луч (раньше изображение отобрадалось электронным лучём) уходит за границы экрана. Также нужно подождать несколько пустых линий, которые уходят под эвидимый экран.

Рис. 8 Экран с зонами синхронизации (Blanking Time)

Легче рассчитать и реализовать время 1 пикселя и затем всё подстраивать под него, иногда указывается просто частота пикселей и остальные значения в пикселях.

В принципе это всё что ннеобходимо знать чтобы рисовать на VGA мониторе, осталось запрограммировать (или любым другим способом) цифровое устройство и попытаться вывести изображение.

Телевизор работает почти также, но там только «1 провод», значит все сигналы соединены вместе, если цвет не так важен, то принцип тот же.

Попробуем вывести изображение и посмотреть на осцилограмму сигнала.
У меня есть готовая тестовая программа для ПЛИС отсюда которая выводит данное изображение:

Рис,9 Полученное изображение на мониторе

Рассмотрим осцилограмму. Сверху вниз по порядку идут: Красный, Зелёный, Синий, Горизонтальная синхронизация, Вертикальная синхронизация.
Рис. 10 Осцилограмма сигналов полученного изображения
Здесь отображен 1 кадр, можно догадаться как будет выглядеть изображение, т.к. каждая полоса состоит из имульсов (если приблизить там есть зоны где постоянно 1, но не длинной во всю линию), то не будет одноцветных линий. Если разбить сигналы на столбцы, видно что есть линии на которых промежутки только красного либо зелёного цветов.

Используемые мной значения:
Весь кадр (O) — 16.69284 мс
Ширина вертикального синхроимпульса (P) — 64.08 мкс
1 строка (A) — 31.9176 мкс
Ширина горизонтального синхроимпульса (B) — 3.84 мкс
Частота пикселей — 25 МГц

Источники:
fpga4fun.com
pinouts.ru
en.wikipedia.org
javiervalcarce.eu

recordingtheworld.infopop.cc
groups.google.com
pyroelectro.com
www.derepas.com

Стандартный vga графический адаптер что это?

Чаще всего после переустановки операционной системы Windows при просмотре раздела “Видеоадаптеры” в диспетчере устройств, некоторые пользователи вместо названия своей видеокарты обнаруживают там некое устройство с именем “Стандартный vga графический адаптер”. Причем в большинстве ноутбуков, где используется 2 видеокарты, таких устройств может быть два.

Две видеокарты в ноутбуке, требующие установку драйвера

В данной статье мы расскажем что что такое и что нужно делать при его обнаружении на своем компьютере или ноутбуке.

Отсутствие драйвера видеокарты

Если на своем девайсе в диспетчере устройств вы видите “Стандартный vga графический адаптер” вместо названия видеоадаптера, то это значит что у вас не установлен драйвер видеокарты.

В свою очередь это говорит о том, что трехмерные игры работать не будут. Также скорее всего будут проблемы с запуском сложных программ работы с графикой.

Все потому, что “Стандартный vga графический адаптер” это базовый драйвер видеокарты, устанавливаемый самой операционной системой. Он способен обеспечить работу видеокарты в базовом режиме, не раскрывая ее полного потенциала, и нужен он для того, чтобы пользователь самостоятельно установил драйвер, предназначенный для той конкретной модели, которая установлена на его ПК.

Как установить нужный драйвер видеокарты?

Для начала необходимо узнать модель видеокарты, установленной на вашем компьютере или ноутбуке. Для этого все в том же диспетчере устройств, где у вас отображается “Стандартный vga графический адаптер” нужно нажать по нему правой кнопкой мыши и выбрать “Свойства”.

Код оборудования, по которому определяется модель видеокарты

Далее в открывшемся окне переходите на вкладку “Сведения”, в поле “Свойства” выбираете “ID оборудования” и копируете верхнюю строчку из отобразившихся в окне “Значения”.

Затем переходите на сайт drp.su, вставляете скопированный ранее код в окно ввода и нажимаете кнопку “Найти”.

Ввод кода оборудования для определения модели видеокарты

После этого отобразится окно в котором будет указана модель видеокарты к которой вам необходимо установить драйвер.

Для этой видеокарты вам нужно искать драйвер

Следующим шагом останется скачать его и установить.

Это можно сделать через официальный сайт производителя видеокарты или же при помощи различных программ автоматической установки драйверов.

Текстовый режим VGA — VGA text mode

Текстовый режим VGA был введен IBM в 1987 году как часть стандарта VGA для своих компьютеров IBM PS / 2 . Его использование на устройствах, совместимых с IBM PC, было широко распространено в 1990-х годах и сохраняется сегодня для некоторых приложений на современных компьютерах. Основными особенностями текстового режима VGA являются цветные (программируемая 16 цветовая палитра ) символы и их фон, мигание, различные формы курсора (блок / подчеркивание / скрытый статический / мигающий) и загружаемые шрифты (с различными размерами глифов). Linux консоль традиционно использует режим просмотра текста аппаратного VGA и консоли Win32 среда имеет возможность переключать экран в текстовом режиме для некоторых размеров текстового окна.

  Отличительные особенности текста VGA в том виде, в каком он обычно используется:

  Светло-серый фон (обычно не белый).

Рисунок коробки.

Различные комбинации
заднего и переднего плана
.

16-цветная палитра в стиле CGA – EGA для переднего плана.
Мигающий текст.
  Курсор.
 
 

Организация данных

Текстовый буфер

Каждый экранный символ представлен двумя байтами, выровненными как 16-битное слово, доступное ЦП за одну операцию. Младший, или символьный, байт — это фактическая кодовая точка для текущего набора символов, а старший , или атрибутный, байт — это битовое поле, используемое для выбора различных атрибутов видео, таких как цвет, мигание, набор символов и т. Д. Эта схема пар байтов входит в число функций, которые VGA унаследовал от EGA , CGA и, в конечном итоге, от MDA .

Атрибут символ
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
Мигать Фоновый цвет Цвет переднего плана Кодовая точка
  1. ^ В зависимости от настройки режима бит 7 атрибута может быть либо битом мигания, либо четвертым битом цвета фона (который позволяет использовать все 16 цветов в качестве цветов фона).
  2. ^ Атрибут бит 3 (интенсивность переднего плана) также выбирает между шрифтами A и B (см.Ниже). Следовательно, если эти шрифты не совпадают, этот бит одновременно является дополнительным битом кодовой точки.
  3. ^ Бит атрибута 0 также включает подчеркивание, если некоторые другие биты атрибута установлены в ноль (см.Ниже).

Цвета назначаются так же, как и в графических режимах с 4-битными индексированными цветами (см. Цветовую палитру VGA ). В режимах VGA нет необходимости в обратных и ярких атрибутах MDA, потому что цвета переднего плана и фона можно установить явно.

Подчеркивание

Аппаратное обеспечение VGA может включать подчеркивание любого символа, для которого установлен бит 0 атрибута. Однако, поскольку это функция, совместимая с MDA, биты атрибутов, не используемые MDA, должны быть установлены в ноль, иначе подчеркивание не будет отображаться. Это означает, что только биты 3 (интенсивность) и 7 (мигание) могут быть установлены одновременно с битом 0 (подчеркивание). В палитре VGA по умолчанию установка бита 0 для включения подчеркивания также изменит цвет текста на синий. Это означает, что текст только двух цветов может быть подчеркнут (5555FF и 0000AA с палитрой по умолчанию).

Несмотря на все это, подчеркивание обычно не отображается в цветовых режимах, так как по умолчанию расположение подчеркивания соответствует строке развертки под глифом символа, что делает его невидимым. Если в качестве места подчеркивания выбрана видимая строка развертки (как по умолчанию при переключении в режим монохромного текста, совместимого с MDA), то появится подчеркивание.

Шрифты

Norton Utilities 6.01, пример расширенного TUI, который переопределяет набор символов для отображения крошечных графических виджетов , значков и указателя стрелки в текстовом режиме.

Экранные шрифты, используемые в EGA и VGA, представляют собой моноширинные растровые шрифты, содержащие 256 глифов. Все глифы в шрифте имеют одинаковый размер, но этот размер можно изменить. Обычно глифы имеют ширину 8 точек и высоту 8–16 точек, однако высота может иметь любое значение до максимум 32. Каждая строка глифа кодируется 8-битным байтом , причем старшие биты находятся слева от глифа. и младшие биты справа. Наряду с несколькими аппаратно-зависимыми шрифтами, хранящимися в ПЗУ адаптера , текстовый режим предлагает 8 загружаемых шрифтов. Два активных указателя шрифта (шрифт A и шрифт B) выбирают два из доступных шрифтов, хотя обычно они указывают на один и тот же шрифт. Когда каждый из них указывает на разные шрифты, бит атрибута 3 (см. Выше ) действует как бит выбора шрифта, а не как бит цвета переднего плана. На реальном оборудовании VGA это отменяет использование бита для выбора цвета, но на многих клонах и эмуляторах выбор цвета остается, то есть один шрифт отображается с нормальной интенсивностью, а другой — с высокой интенсивностью. Эту ошибку можно преодолеть, изменив регистры палитры, чтобы они содержали две копии 8-цветной палитры.

Существуют режимы с шириной поля символов 9 точек (например, режим по умолчанию 80 × 25), однако 9-й столбец используется для интервала между символами, поэтому содержимое не может быть изменено. Он всегда пустой и отображается с текущим цветом фона. Исключением является режим включения линейной графики , при котором в кодовых точках от 0x C0 до 0xDF включительно 8-й столбец повторяется как 9-й. Эти кодовые точки охватывают те символы рисования блока, которые должны доходить до правой стороны блока глифа. По этой причине следует избегать размещения буквоподобных символов в кодовых точках 0xC0–0xDF. Символы рисования прямоугольника от 0xB0 до 0xBF не расширяются, поскольку они не указывают вправо и поэтому не требуют расширения.

Курсор

Форма курсора ограничена прямоугольником во всю ширину поля символа и заполнена цветом переднего плана символа в текущем местоположении курсора. Его высота и положение могут быть установлены в любом месте внутри символьного поля ;. EGA и многие клоны VGA позволяли использовать курсор с разделенным прямоугольником (в виде двух прямоугольников, один вверху поля символа, а другой внизу), устанавливая конец курсора перед началом, однако, если это было сделано на исходный VGA, вместо этого курсор полностью скрыт. Стандарт VGA не позволяет изменять частоту мигания, хотя обычные обходные пути включают скрытие курсора и использование обычного символьного глифа для создания так называемого программного курсора.

Мыши курсор в TUI (при реализации), обычно не то же самое , как аппаратный курсор, но движущийся прямоугольник с измененным фоном или специального знака.

Некоторые текстовые интерфейсы, такие как Impulse Tracker , пошли еще дальше, чтобы сделать курсор мыши более плавным и графическим. Это было сделано путем постоянного повторного создания глифов символов в реальном времени в соответствии с положением курсора на экране и соответствующими символами.

Методы доступа

Обычно существует два способа доступа к текстовому режиму VGA для приложения: через интерфейс Video BIOS или путем прямого доступа к видеопамяти и портам ввода-вывода. Последний метод значительно быстрее и позволяет быстро читать текстовый буфер, по этой причине он предпочтительнее для продвинутых программ TUI.

Текстовый буфер VGA расположен по адресу физической памяти 0xB8000. Поскольку этот адрес обычно используется 16-разрядными процессами x86, работающими в реальном режиме, он также является первой половиной сегмента памяти 0xB800. Данные текстового буфера можно читать и записывать, и можно применять побитовые операции . Часть памяти текстового буфера выше области действия текущего режима доступна, но не отображается.

Те же физические адреса используются в защищенном режиме . Приложения могут либо отображать эту часть памяти в их адресное пространство, либо обращаться к нему через операционную систему . Когда приложение (в современной многозадачной ОС) не может управлять консолью , оно обращается к части системной ОЗУ вместо фактического текстового буфера.

Для компьютеров 80-х годов очень быстрое управление текстовым буфером, когда оборудование генерировало отдельные пиксели так быстро, как они могли отображаться, было чрезвычайно полезным для быстрого пользовательского интерфейса. Даже на относительно современном оборудовании могут быть заметны накладные расходы на эмуляцию текстового режима с помощью аппаратных APA (графических) режимов (в которых программа генерирует отдельные пиксели и сохраняет их в видеобуфер).

Режимы и тайминги

Видео сигнал

Со стороны монитора нет никакой разницы во входном сигнале в текстовом режиме и в режиме APA такого же размера. Сигнал текстового режима может иметь те же временные характеристики, что и стандартные режимы VESA . На стороне адаптера для настройки этих параметров в текстовом режиме используются те же регистры, что и в режимах APA. Выходной сигнал текстового режима практически такой же, как и в графическом режиме, но его источником является текстовый буфер и генератор символов, а не фреймбуфер, как в APA.

Обычные текстовые режимы ПК

В зависимости от используемого графического адаптера на IBM PC-совместимых компьютерах доступны различные текстовые режимы . Они перечислены в таблице ниже:

Текст рез. Char. размер Графика res. Цвета Адаптеры
80 × 25 9 × 14 720 × 350 Черно-белый текст MDA , Геркулес
40 × 25 8 × 8 320 × 200 16 цветов CGA , EGA
80 × 25 8 × 8 640 × 200 16 цветов CGA, EGA
80 × 25 8 × 14 640 × 350 16 цветов EGA
80 × 43 8 × 8 640 × 350 16 цветов EGA
80 × 25 9 × 16 720 × 400 16 цветов VGA
80 × 50 9 × 8 720 × 400 16 цветов VGA
80 × 60 16 цветов VESA- совместимый Super VGA
132 × 25 16 цветов VESA-совместимый Super VGA
132 × 43 16 цветов VESA-совместимый Super VGA
132 × 50 16 цветов VESA-совместимый Super VGA
132 × 60 16 цветов VESA-совместимый Super VGA

VGA и совместимые карты поддерживают режимы MDA, CGA и EGA. Все цветные режимы имеют одинаковый дизайн текстовых атрибутов. Режимы MDA имеют некоторые особенности (см. Выше ) — текст может быть выделен яркими, подчеркнутыми, перевернутыми и мигающими атрибутами.

Наиболее распространенный текстовый режим, используемый в средах DOS и начальных консолях Windows, — это 80 столбцов по 25 строк или 80 × 25, с 16 цветами и большими символами 8 × 16 пикселей по умолчанию. Карты VGA всегда имеют встроенный шрифт этого размера, тогда как для других размеров может потребоваться загрузка шрифта другого размера. Этот режим был доступен практически на всех IBM и совместимых персональных компьютерах.

Два других текстовых режима VGA, 80 × 40 и 80 × 50, существуют, но встречаются реже. Windows NT 4.0 отображала свои системные сообщения во время процесса загрузки в текстовом режиме 80 × 50.

Размеры символов и графическое разрешение для расширенных VESA- совместимых текстовых режимов Super VGA зависят от производителя. Некоторые карты (например, S3 ) поддерживают настраиваемые режимы очень большого текста, например 132 × 43 и 132 × 25. Как и в графических режимах, графические адаптеры 2000-х годов обычно способны настраивать текстовый режим произвольного размера (в разумных пределах) вместо того, чтобы выбирать его параметры из некоторого списка.

SVGATextMode

В системах Linux и DOS с так называемыми картами SVGA программа под названием SVGATextMode может использоваться для настройки более привлекательных текстовых режимов, чем стандартные режимы EGA и VGA. Это особенно полезно для больших (≥ 17 дюймов) мониторов, где разрешение 720 × 400 пикселей обычного текстового режима VGA 80 × 25 намного ниже, чем было бы в типичном графическом режиме. SVGATextMode позволяет установить частоту пикселей и более высокую частоту обновления , больший размер шрифта, размер курсора и т. д. и позволяет лучше использовать потенциал видеокарты и монитора. В системах, отличных от Windows, использование SVGATextMode (или альтернативных вариантов, таких как буфер кадра Linux ) для получения четкого текста критически важен для ЖК-мониторов с разрешением 1280 × 1024 (или более высоким разрешением), поскольку ни один из так называемых стандартных текстовых режимов не подходит для этого размера матрицы.SVGATextMode также позволяет точно настроить тайминги видеосигнала.

Несмотря на название этой программы, только некоторые из поддерживаемых ею режимов соответствуют стандартам SVGA (т.е. VESA).

Общие ограничения

Текстовый режим VGA имеет некоторые аппаратные ограничения. Поскольку они слишком ограничены для современных приложений (после 2000), аппаратный текстовый режим на VGA-совместимых видеоадаптерах имеет ограниченное использование.

Параметр Оригинальный VGA Современные видеоадаптеры Замечания

Ширина символьной ячейки (глифа)
8 или 9 точек ≤  9 точек Не все оборудование поддерживает символы с шириной более 8 точек.

Высота символьной ячейки (глифа)
≤  32 точки
Количество символьных ячеек Не менее
4000
(достигнуто при 80 × 50)
≤  16,384 = 2 14
(ограничения адресации памяти)
Современный адаптер, если он поддерживает нестандартные режимы, может выдавать достаточно плотный текстовый экран даже на большом мониторе.
Ширина в символьных ячейках
( символов в строке )
Не менее
80
≤ 256 (?)
Высота в символьных ячейках
(количество строк)
Не менее
50
(достигнуто при 80 × 50)
Размер кодовой страницы
(количество разных глифов, отображаемых одновременно)
≤  512  = 2 9
(если шрифт A ≠ шрифт B)
Даже 512 недостаточно для полноценной поддержки Unicode .
≤  256  = 2 8
(если шрифт A = шрифт B)
Кол-во цветов передний план: 16 *

фон: 8 или 16 **

16 произвольно выбранных цветов, не фиксированных.

* 8 цветов можно использовать шрифтом A, а остальные 8 цветов — шрифтом B; Итак, если шрифт A ≠ шрифт B (режим 512 символов), тогда палитра должна быть уменьшена вдвое, и текст может эффективно использовать только 8 цветов.
** Обычно первые 8 цветов одной палитры. Если мигание отключено, для фона доступны все 16 цветов.

Ссылки

внешние ссылки

Знакомство с режимом VGA ‘X’

Знакомство с режимом VGA ‘X’

СОБИРАЕТСЯ

Организация: Интернет-архив Интернет-архив обнаруживает и фиксирует веб-страницы с помощью множества различных веб-обходов. В любой момент времени выполняется несколько отдельных обходов, некоторые в течение месяцев, а некоторые — каждый день или дольше. Просмотрите веб-архив через Wayback Machine. Hacker News Сканирование их ссылок.

ТАЙМЕРЫ

Введение в режим VGA ‘X’
Роберт Джамбор

СКАЧАТЬ … Пример файла, упомянутого в этой статье, содержится в файле MX_SCROL.EXE (3799 байт), который можно загрузить, нажав этот значок диска.

Предварительные записи

Эта статья содержит изрядное количество технической информации и не пытается описать, что такое регистры, как адреса на процессоре Intel 80×86 работает или что-нибудь в этом роде.я имею здесь достаточно материала, чтобы не допустить такого рода подробностей. Фил затронул многие из этих тем в предыдущих статьях GDM, так что если у вас возникнут проблемы, вы можете обратиться к ним.

Режим 13h повторно

Прежде чем вдаваться в подробности спрайтовых двигателей и т. Д., Мы должен понимать, что такое Mode X на самом деле.

В предыдущем GDM статьи, Фил очень хорошо обсудил Mode 13 с читателями. Один он отметил, что в Режиме 13 адресация пиксели были линейными.То есть увеличивая наш адрес в видеопамяти на 1 байт привело к адресу следующего пиксель. Это может быть очень удобно для написания очень оптимизированных ассемблерный код с использованием строковых инструкций на языке ассемблера.

Однако у Mode 13 есть несколько причуд, которые делают его непригодным для использования. для серьезной игровой работы. Самая большая проблема в том, что в Режиме 13 у вас может быть только одна страница видео. Это большая проблема, так как стандартные карты VGA сегодня имеют не менее 256 КБ видеопамяти (некоторые ранних карт было всего 64к!).Глядя на режим 13, мы видим, что он использует до 320×200 пикселей = 64000 байт или примерно 64 КБ. Мы похоже, потеряли оставшиеся 192 КБ видеопамяти, которые мы заплачено за. Используя режим 13, мы даже не можем получить доступ к этой памяти. в одиночку использовать его как вторую, третью или четвертую страницу видео.

Mode-X жив!

Чтобы преодолеть проблемы с Mode 13, мы используем Mode-X (или измененный VGA, как его еще называют), то есть перепрограммируем регистры VGA. в основном делать наши ставки. Самые неопытные программисты отказался бы от простого упоминания о программировании этих регистров, но Я покажу вам, что это не так сложно, как кажется.Если ты хочешь чтобы начать с нуля, вам понадобится хорошая книга по аспекты регистров VGA. Одна из таких превосходных книг — «Руководство программиста по картам EGA и VGA» Ричарда Ферраро.

«Если хочешь, так начни
с нуля, вы
нужна хорошая книга »

Во-первых, если мы собираемся программировать регистры VGA, то мы должны знать, с чем мы собираемся их программировать. VGA регистры (их более 50) содержат информацию относительно состояния дисплея.Регистры делятся на 5 основные группы: —

1. Общие или внешние регистры.
2. Регистры секвенсора.
3. Регистры CRTC (Контроллер электронно-лучевых трубок).
4. Графические регистры.
5. Регистры атрибутов.

Для настройки режима X нам в основном нужно будет внести изменения в CRTC. регистров, но нам также нужно будет внести несколько незначительных изменений в некоторые другие регистры тоже.

Прежде чем описывать, как это готово, я должен отметить, что мы не перепрограммируем VGA из царапать, так как это в лучшем случае утомительно и в любом случае неэффективно поскольку у нас есть BIOS, чтобы делать все действительно скучные вещи.

Итак, чтобы переключиться в режим X, мы просто вызываем установленное в BIOS видео прерывание режима, чтобы переключить нас в режим 13. Как только мы перейдем в режим 13, мы вносим изменения во многие регистры CRTC для переключения нас в режим X.

Всего на VGA 26 регистров CRTC. Вместо того, чтобы вносить изменения в регистры здесь и там, мы создать таблицу значений, содержащую информацию, необходимую для каждый регистр CRTC мы собираемся изменить и скопировать всю таблицу к VGA. Одна вещь, которую следует понять при этом, в том, что наша карта VGA должна быть на 100% совместима с стандарт VGA.Это больше не должно быть проблемой, но некоторые более ранние карты были совместимы только с уровнем BIOS с VGA.

«Режим X … соответствует
в группу резолюций »

Еще одно замечание относительно режима X заключается в том, что он не соответствует конкретное разрешение как таковое, но соответствует группе разрешения, поддерживаемые оборудованием VGA. Я выбрал 360×240 режим разрешения из-за более высокого разрешения, чем 320×200. Таким образом, следующие значения основаны на этом выборе.

Прежде чем перейти к «цитированию» таблицы значений, я кратко перечислите функции каждого регистра, чтобы вы могли видеть, что каждый значение.Изначально я начал описывать каждый регистр, но это занимало слишком много места и, вероятно, не в любом случае сослужили большую службу.

Имя регистра битов Значение 360x240
-------------------------------------------------- --------------
0 0-7 Всего по горизонтали 107
1 0-7 Горизонтальный дисплей Конец 89
2 0-7 Начать горизонтальное гашение 90
3 0-4 Конец по горизонтали 14
         5-6 Display Enable Skew 0
           7 Совместимое чтение 1
4 0-7 Начать горизонтальный откат 94
5 0-4 Конец горизонтального отката 10
         5-6 Задержка обратного хода по горизонтали 0
           7 Конец горизонтального гашения, 6-й бит 1
6 0-7 Вертикальный общий регистр 13
7 0-7 = Регистр переполнения = -
           0 По вертикали Всего 8-й бит 0
           1 Вертикальный дисплей Конец 8-го разряда 1
           2 Начало обратного хода по вертикали 8-й бит 1
           3 Начало вертикального гашения 8-го бита 1
           4 Строка Сравнить 8-й бит 1
           5 По вертикали Всего 9-й бит 1
           6 Разрешение вертикального дисплея 9-й бит 0
           7 Начало обратного хода по вертикали 9-й бит 0
8 0-4 Preset Row Scan не используется
         5-6 байтов панорамирование не используется
9 0-4 Максимальная строка развертки 9
           5 Начало вертикального гашения 9-й бит 1
           6 Сравнение строк 9-й бит 0
           7 Преобразование 200 в 400 строк 0
A 0-4 Cursor Start не используется
           5 Курсор Вкл. / Выкл. Не используется
         6-7 * Не используется (оставить 0) * -
B 0-4 Конец курсора не используется
         5-6 Перекос курсора не используется
           7 * Не используется (оставить 0) * -
C 0-7 Старший адрес старшего звена не используется
D 0-7 Низкий начальный адрес не используется
E 0-7 Местоположение курсора Высокое, не используется
F 0-7 Низкое положение курсора не используется
10 0-7 Начало обратного хода по вертикали 234
11 0-3 Конец обратного хода по вертикали 12
           4 Очистить вертикальные прерывания 0
           5 Отключить вертикальные прерывания 1
           6 Пропускная способность 0
           7 регистров защиты 0-7 1
12 0-7 Вертикальный дисплей Конец 223
13 0-7 Регистр смещения 45
14 0-4 Подчеркнуть Расположение 0
           5 Считай до четырех 0
           6 Режим двойного слова 0
           7 * Не используется (оставить 0) * -
15 0-7 Начало вертикального бланка 231
16 0-6 Конец вертикального бланка 6
           7 * Не используется (оставить 0) * -
17 0-7 = Регистр управления режимом = -
           0 Поддержка режима совместимости 1
           1 Выберите счетчик сканирования строки 1
           2 Выбор горизонтального отката 0
           3 Считай до двух 0
           4 Управление выходом 0
           5 Обертка адреса 1
           6 Слово / байтовый режим 1
           7 Аппаратный сброс 1
18 0-7 Строка Сравнить неиспользуемые
-------------------------------------------------- --------------
 
Уф !, это было весело, но я не хотел бы делать это снова.Это значения, которые нам понадобятся для программирования VGA в режиме X, используя разрешение 360×240. Я перечислил названия некоторых регистров которые на самом деле не нужны для настройки режима, но задокументированы для полноты картины.

«Судя по всему, это ЕСТЬ
возможно нанести ущерб
на мониторы, если неверно Используется
значений! »

Предупреждение о программировании этих регистров напрямую. следует упомянуть, что есть некоторые ценности, которые не разрешено для некоторых регистров, а также есть некоторые регистры которые нельзя использовать вместе с другими, поэтому необходимо соблюдать осторожность. взяты при их программировании.По-видимому, это * ЕСТЬ * возможно вызвать повреждение мониторов, если используются неверные значения, однако Я подозреваю, что монитор, вероятно, придется подвергнуть эти «несинхронные» сигналы в течение разумного периода времени, чтобы сделать любой реальный ущерб.

Менее технически, я хотел бы рассказать об инциденте, который Я наткнулся на PASCAL echo на Фидонете:

Неопытный программист каким-то образом придумал, как использовать инструкция OUT для установки некоторых значений на его карте VGA.Он вскоре выпустила общедоступную программу-заставку, которая очистите экран для вас. Что он не говорил людям изначально состоял в том, что для получения этой программы он отправлял ненужные данные некоторым регистров CRTC. Он отметил, что определенное сочетание значения могут использоваться для очистки экрана. Он не понимал что экран погас, потому что плохой монитор был брошен не синхронизированы данными, отправленными с карты VGA.

«Немного знаний
может быть опасным,
, так что будьте осторожны! »

Это один из примеров того, как небольшое знание может быть опасным, так что будьте осторожны с процедурами инициализации Mode X.:-)

Настоящая

Теперь мы провели исследование и получили значения для нашего режима X инициализация, что нам делать дальше? Во-первых, код I будет представлен на ассемблере в первую очередь потому, что это конкретная функция лучше всего подходит для этого языка. В сборке языка существует команда OUT, которая отправляет либо байт или слово (или DWORD на процессорах 386 и выше) для вывода порт. Синтаксис для его наиболее распространенного использования следующий: —
         OUT DX, AL
     или OUT DX, AX
 
где DX — это порт, который будет получать данные, а AL / AX — это байт / слово данных для отправки.Интересный побочный эффект с второй режим — младший байт (AL) отправляется в порт указывается DX, но старший байт (AH) — нет. Вместо этого отправляется на порт, указанный DX + 1. Это может показаться глупым «особенность», но она имеет свое применение, как я сейчас объясню.

VGA имеет более 50 регистров, но не у всех из них есть собственные. уникальный адрес порта. Многие из них объединены в одну адрес «общего» порта для экономии на оборудовании. Когда регистры мультиплексированные таким образом, обычно есть два регистра, которые иметь уникальные адреса портов и разрешать доступ к «настоящим» регистры.Первый из этих регистров называется «Адрес». регистр, а второй называется регистром «данных». Устанавливать значение одного из наших «реальных» регистров, мы сначала сообщаем адресный регистр, один из наших регистров мы хотели бы установить вверх, а затем отправьте данные для него через регистр данных.

Пример

Цветные регистры VGA CRTC имеют адресный регистр на порте. адрес 03D4h и регистр данных в 03D5h, т.е. на следующем адрес порта. Предположим, мы хотим отправить первый байт информации для нашей процедуры инициализации Mode X, т.е.значение «Итого по горизонтали» из 107 в соответствующий регистр, т.е. регистр 0. Один из возможных способов сделать это: —

(Еще раз на ассемблере)

         MOV DX, 03D4h; Адрес порта регистра адресов CRTC.
         MOV AL, 00ч; Зарегистрируйте номер 0 для изменения.
         OUT DX, AL; Сообщите VGA.
         INC DX; Укажите DX в регистре данных CRTC.
                         ; (помня, что это следующий)
         MOV AL, 06Bh; Значение для суммы по горизонтали.(6Bh = 107d)
         OUT DX, AL; Сообщите VGA.
 
Это будет работать нормально, за исключением того, что это очень неэффективно, даже хотя мы использовали INC DX вместо перезагрузки DX напрямую с 03D5h. Лучший способ достичь той же цели — следующий:
         MOV DX, 03D4h; Адрес порта регистра адресов CRTC.
         MOV AX, 06B00h; Поместите регистрационный номер (00) в AL &
                         ; зарегистрируйте данные (6B) в AH.
         ВЫХОД DX, AX; Вывести объединенные данные в VGA.
 
Это приводит к отправке значения 00h в порт 03D4h, т.е.регистр адреса CRTC, а значение 6Bh для порта 03D5h, т.е. регистр данных CRTC (горизонтальный итог). Это намного больше эффективен, а также имеет дополнительный бонус при работе в цикле. В исходном коде нам пришлось увеличить DX на единицу с помощью INC DX, но если мы хотим отправить больше данных (как в цикле), мы пришлось бы восстановить DX до 03D4 с помощью DEC DX. Если мы используем во втором примере мы можем не указывать INC DX и DEC DX линии вместе.

Все, что осталось, это свести в таблицу наши значения вместе с их номера регистров, а затем закодировать цикл для отправки каждого слова в VGA последовательно.Я не буду вдаваться в подробности о том, как сделайте это, так как я включил файл исходного кода под названием MX_INIT.ASM чтобы показать вам, как это делается. Обратите внимание, что я * НЕ * пробовал сборка этого конкретного файла и представлена ​​исключительно для ссылка. Однако он должен работать, поскольку 90% поступило напрямую из моего программного обеспечения движка спрайтов.

Прежде чем покинуть эту тему, есть еще несколько регистров, которые необходимо настроить до внесения изменений в регистры CRTC, так как отмечено в исходном коде.Вот они:

1. Регистр секвенсора 4 должен иметь значение 6. Это эффективно отключает используемый режим Chain by 4. чтобы дать Mode 13 «линейную» адресацию.

2. Затем необходимо выполнить сброс секвенсора через асинхронный сброс. Я не уверен на 100%, почему, но думаю, что это так чтобы VGA применил изменение, сделанное в пункте 1 выше.

3. Мы должны настроить тактовые частоты для наших экран, возясь с Разным выводом регистр.

4. Как вы могли заметить в таблице регистров выше, их немного называют «Защитные регистры 0-7 «и, как следует из названия, защищает от записи CRTC регистры 0-7. Мы должны сначала отключить это перед отправкой наших данных, а затем снова включить после того, как мы закончены.

«Прочитав … ты
может пожалеть, что никогда не
слышал о режиме X »

Ну вот и все, что нужно для инициализации экрана Mode X используя язык ассемблера.В следующем разделе описывается различия между режимом 13 и режимом X, и, прочитав его, вы может пожелать, чтобы вы никогда не слышали о Mode X …

Режим X по сравнению с режимом 13h

Итак, вы думали, что освоили графику, когда писали это Заполненный круг рутина пару дней назад, ну тогда добро пожаловать в режим X. Как Фил описал в GDM1 (я думаю), режим 13 экран в основном оформлен в виде таблицы значений цвета, ширина стола 320 и высота 200. Это было очень хороший способ расположить экран, так как изменить цвет пикселя, все, что нужно было сделать, это изменить одно из значений в Таблица.К сожалению, в Mode X все не совсем так. так легко.

Экран режима X состоит из четырех таблиц (плоскостей), каждая из которых который состоит из 90 столбцов и 240 строк (для нашего 360×240 разрешение пикселей). Информация о цвете для каждого диапазона пикселей во всех четырех плоскостях видеопамяти. Каждое значение цвета восемь бит, поскольку нам разрешено 256 цветов, и в результате каждый видеоплоскость содержит два бита цветовой информации для каждого пиксель. Чтобы проиллюстрировать это должным образом, нам определенно понадобится диаграмма: —

                        + - + - + - + - + ------------------------- +
Самолет 3 | 10 | 00 | 00 | 00 |... |
                   + - + - + - + - + ------------------------- + |
Плоскость 2 | 00 | 00 | 00 | 00 | ... | |
              + - + - + - + - + ------------------------- + |
Плоскость 1 | 11 | 00 | 00 | 00 | ... | |
         + - + - + - + - + ------------------------- + |
Плоскость 0 | 01 | 00 | 00 | 00 | ... | |
         ---------------------------------------
 
Приведенная выше диаграмма не очень хороша, но она должна передавать общая идея того, что называется адресацией памяти PLANAR.Этот метод используется в режиме X, а также в цветном режиме EGA / VGA 16. режимы, поэтому теория этого типа адресации должна быть обильный. На схеме пиксель в координатах (0,0) имеет значение цвета 10001101 в двоичном формате или 141 в десятичном. Обратите внимание, как это значение распределено по четырем видеоплоскостям; биты 0 и 1 в плоскости 0 биты 2 и 3 находятся в плоскости 1, 4 и 5 в плоскости 2 и т. д. следующий пиксель (в координатах (1,0)) имеет биты 0 и 1 обратно в плоскости 0 и хранятся сразу после битов 0 и 1 первого пикселя.

Теперь, поскольку каждый байт памяти дисплея имеет ширину восемь бит, и поскольку каждый пиксель имеет 2 бита информации на каждой плоскости отображения, это означает, что каждый байт отображаемой памяти косвенно манипулирует 4 пикселями. Некоторые программисты бредили 4-кратное преимущество в скорости режима X по сравнению с режимом 13 из-за этой способности, но это увеличение может быть реализовано только при определенных операциях.

Еще один интересный момент: каждая видеоплоскость занимает идентичные адресные пространства в системном адресном пространстве.Это означает, что для управления видеоданными мы должны сообщить VGA, плоскость которого мы хотим изменить так, чтобы он мог «накапливать» это самолет для использования. После того, как самолет поставлен на борт, мы можем манипулировать информацией на самолете через нормальную память процедуры адресации. Здесь важно отметить, что только один самолет может быть изменен за раз. Этот момент не должен следует воспринимать как ФАКТ, так как можно изменить несколько страниц в один раз для выполнения некоторых сложных операций, а сейчас я бы люблю упрощать вещи.

Дополнительные вкусности с режимом X

Хотя компоновка памяти в режиме X может показаться запутанной, есть ряд преимуществ при работе в этом режиме. Во-первых, поскольку память дисплея ПЛАНАРНАЯ (т. е. разбросана по плоскостям), только за раз нужно накренить только один самолет. Только каждый самолет содержит четверть отображаемой информации, поэтому для формата 320×200 разрешение экрана, которое, как мы знаем, занимает 64000 байт, каждый plane содержит только 16000 байт этой информации. И что происходит с остальными 48000 байтами (на страницу) неиспользуемой памяти?

Что ж, я рад, что вы спросили, помните, что 192k отсутствующих дисплея память, которую мы обсуждали ранее, вот она.Второй важный Особенностью при работе в этом режиме является увеличение скорости при выполнении определенные операции. VGA имеет 32-битную внутреннюю защелку, которая используется для передачи данных в / из VGA / CPU. Защелка самая полезно, когда мы переносим данные из одной части видео памяти в другую, так как данные передаются 32 бита в время, а не 8 или 16 бит за раз, как в случае, когда передача данных в / из ЦП из / в VGA. Это делает это легко (и быстро) копировать данные из одной области видеопамяти в другой и, в частности, упрощает написание «перелистывания страниц» анимация, но об этом в другой раз.

Страницы, страницы везде

Как я уже упоминал выше, теперь у нас есть еще немного видеопамяти для воспроизведения. с, и есть много способов сделать это.

Прежде чем объяснять функции адресации / прокрутки страниц, было бы удобно Представьте себе планы видеопамяти как четыре игральные карты, одну позади другого, таким образом занимая те же адреса памяти (или пробел), хотя и не одновременно. Для доступа к данным содержится в любом плане, вам сначала нужно перенести его на спереди, так как обычно вы не могли видеть, что на нем.

Помня об этом, напомним, что наши самолеты занимают всего 16000 байта каждый, чтобы создать экран 320×200 пикселей. Остаток от данные (т.е. остальные 48000 байт) фактически находятся за пределами экрана и могут либо листать, либо прокручивать с использованием той же техники. Пробовать представьте наш экран 320×200 как окно на гораздо большем экране, т.е. экран 320×800 пикселей, который в четыре раза больше, занимая всего 64000 байт на страницу. Фактическое положение, в котором наши «окно», в котором может находиться, легко настраивается через SAL VGA (Младший начальный адрес) и SAH (старший начальный адрес).

    + ------------------------------ + + +
    | (0,0) адрес = A000h: 0000h | | |
    | | Показано |
    | | Экран |
    | (0,199) адрес = A000h: 3E30h | | Всего видео
    + ------------------------------ + + Память
    | . | |
    | . | |
    | (0,799) адрес = A000h: F9B0h | |
    + ------------------------------ + +
 
Приведенная выше диаграмма, надеюсь, объясняет, о чем я говорю.Прямоугольник «Отображаемый экран» — это область памяти, которая в настоящее время отображается на экране и имеет высоту 200 строк. Однако мы можем переместить, где на самом деле находится верхний левый угол этого окна размещается в видеопамяти путем изменения SAL & SAH регистры.

«Внесение изменений в эти
регистров могут дать
прокрутка и листание »

Внесение изменений в эти регистры может привести к двум вещам: прокрутка и пейджинг. Если мы установим начальный адрес на 0, наше окно будет в верхней части нашей отображаемой памяти.Увеличение стоимости в SAL / SAH на 80 перемещает наше окно на одну строку вниз. Это потому что в каждой строке 80 байтов информации о пикселях, так как каждая пиксель использует только 2 бита на плоскость и 320 x 2 бита = 80 байтов. Обратите внимание, что здесь мы обсуждаем экран в режиме 320×200, а не Экран в режиме 360×240, как мы описали ранее. 360×240 пикселей экран имеет 90 байтов на строку, поскольку 360 x 2 бита = 90 байтов.

Чтобы реализовать подкачку, мы просто разделяем нашу видеопамять на четыре секции, каждая по 200 строк в высоту и установите начальный адрес на вверху каждой страницы.Например, страница 0 будет иметь начало адрес 0000h, страница 1 будет начинаться со строки 200 и будет иметь начальный адрес 3E80h или 16000 (80 байт на строку * 200 строк) Следующие две страницы будут иметь начальные адреса 7D00h (32000). и BB80h (48000) соответственно.

Обратите внимание, что мы сообщаем только контроллеру VGA, где находится смещение. видеопамять, а не весь адрес. Графический экран VGA все еще начинается в сегменте A000h, однако мы говорим об этом изменить место начала чтения видеоданных для отображения целей.В приведенном выше примере разбивки на страницы данные страницы 0 расположен по абсолютному адресу A000h: 0000h, страница 1 по адресу A000h: 03E80h и т. Д.

Точка зрения VGA

Как объяснялось выше, смещение начального адреса VGA равно контролируются регистрами SAL & SAH, которые, если вы изучите наши в таблице ранее можно увидеть регистр C&D. SAL & SAH фактически объединяются в один 16-битный регистр (поскольку SAL и SAH ширина обоих восемь бит). Этот 16-битный регистр содержит значение наше смещение, как описано выше, однако нам все равно нужно будет отправить выводить младшие и старшие 8 бит на VGA отдельно.

Подумайте, что бы произошло, если бы между отправкой была задержка младший и старший байты в VGA. В течение этого периода задержки VGA может иметь неправильное начальное значение адреса, так как высокий значение еще не установлено. Поскольку сочетание SAL и SAH может указывать на область экрана, которая находится где-то за пределами экрана, во время задержки VGA будет отображать видеоинформацию с неправильных адресов источника. Как только мы отправим старший байт, VGA снова будет в порядке и будет отображать данные из правильный источник, и наш экран будет таким, как мы ожидали.Ты можешь думаю, что это нормально, поскольку «в конечном итоге» мы получили то, что хотел, но эти нежелательные данные, которые появлялись на нашем экране в течение периода задержки появится нежелательное мерцание, которое плохая новость для любой анимации.

Чтобы обойти эту проблему, мы ждем, пока экран не окажется в нем. период вертикального отката. Это время, когда монитор электронный луч (тот, который освещает все эти прекрасные пиксели) перемещается из нижнего правого угла экрана обратно в верхний левый угол.За это время электронная пушка выключен, поэтому точки на экране не меняются. Эта событие происходит примерно 60-70 раз в секунду, и эта частота обновления равна обычно обозначается в герцах или для краткости. Это значит, что полное обновление экрана займет от 1/70 до 1/60 секунды, действительно довольно быстро. Любая процедура, ожидающая периода обновления чтобы делать свою работу, она должна делать свою работу быстро, принимая только столько, сколько требуется.

Еще одна мера предосторожности, которую следует принять, — это отключение прерывания во время нашего изменения SAL & SAH.Это для того, чтобы что мы не прерываемся во время изменения этих регистров, поскольку нет гарантии, что процедура прерывания будет завершена обработка до того, как VGA завершит ее период восстановления. Интересно, что этот фактический откат период называется периодом вертикального отката, так как там также существует период горизонтального отката. Это происходит после Электронный луч завершил выделение ряда пикселей (включая границу) и нужно перейти к началу следующего линия.

Обе вышеупомянутые идеи применимы ко многим областям программирования VGA, большинство особенно при смене палитры, что занимает довольно много времени процесс, так как нам нужно переместить 768 байт из системной оперативной памяти в VGA регистрируется во время периода обновления. Хотя 768 байт могут звучать не так уж и много, копируя их на карту VGA через Микросхема контроллера шины ISA работает МЕДЛЕННО, поскольку шина работает только на фиксированная частота 8 МГц и ширина всего 8 или 16 бит. Местный автобус помог много в этом районе, но еще не у всех есть местный автобус.:-(

«Колонка Майкла Абраша
познакомил большинство из нас с
Mode X в первую очередь »

Теперь, когда мы рассмотрели основы этого конкретного VGA функции, мы должны сделать что-нибудь, чтобы доказать, что мы поняли по крайней мере, некоторые из них. Итак, чтобы сделать это, я добавил небольшой программа, написанная на Turbo Pascal и Inline Assembler для инициализировать экран Mode X, заполнить его случайными данными и прокрутить это вверх и вниз некоторые. Программа называется MX_SCROL.PAS, а не волнуйтесь, если вы не можете этого понять, потому что еще мы должны многому научиться в Mode X.Как видно из размер исходного кода, не требуется много энергии, чтобы сделать эта конкретная задача и полученная программа показывает очень гладкую фон прокрутки. Этот эффект прокрутки немного похож на «салонный трюк», поскольку он сам по себе не очень полезен. Это потому, что прокрутка всего экрана означает прокрутку любого строки состояния, табло, спрайты и т. д., что нежелательно. Однако не откладывайте, эффект может и используется в некоторых игр, однако требуется гораздо больше кода, прежде чем мы сможем написать что-нибудь «игровой» код, использующий эту технику.

(Демонстрационная программа находится в файле MX_SCROL.EXE. Кажется, я потерял источник — Роберт, свяжитесь со мной, если сможете! Фил).

Финал

Ну, это все, что у меня есть для этой статьи, но следите за обновлениями потому что я хотел бы публиковать больше статей в GDM на спрайты и другие статьи о Режиме X, если позволяет место в этом отличный электронный журнал. Извините, если я забил какие-то значения в таблице регистров, но я нарушал свою процедуру инициализации Mode X для извлечения различных битов.Проверьте исходный код, если есть проблема.

Список литературы

«Руководство программиста по картам EGA и VGA»
2-е издание
Ричард Ф. Ферраро
ISBN 0-201-57025-4

Кредит, причитающийся

Я не придумал значения для регистров VGA CRTC, но я внес в них несколько изменений. Я в долгу перед Майкл Абраш с тех пор, как его колонка в Докторе Доббсе представила большую часть нам в первую очередь Mode X. Кроме того, кто-то (потерял исходное сообщение) в эхо Z3_PASCAL помогло мне в режиме инициализации X с шириной экрана 360 пикселей.я просто объединил это с кодом Майкла, который инициализирует экран до 240 строк (при ширине 320 пикселей), чтобы получить комбинированный режим 360×240.

Об авторе

Я познакомился с компьютерами через приключенческую игру под названием «Домик» на старом микрокомпьютере TRS80. Мы с другом привыкли Играйте в нее каждый день после школы какое-то время. Затем я купил Компьютер Amstrad CPC664, через который я тестировал Бейсик и некоторый ассемблер с использованием микросхемы Z80. В старшей школе я получил мой первый настоящий вкус ПК с использованием Sperry XT без графики возможности.Компьютеры по-прежнему оставались прекрасным инструментом, с помощью которого для создания базы знаний. После школы я пошел в Колледж / университет и получил степень в области прикладных наук, со специализацией в области математики и информатики (уделяя больше внимания вычисления). Оттуда я начал работать в BHP-Utah Coal Ltd. (Теперь известная как BHP Australia Coal Pty Ltd) лаборатория, пишущая программы для сбора данных с различных инструментов с использованием последовательного порты, карты A / D и т. д. В годы учебы я также работал в Исследовательском институте сахара в Маккае, работая над анимационным Тренажер для планирования железных дорог с использованием Sun Sparcstations.В свободное время я исследую графику и звук и возюсь с ними. на ПК, пытаясь все больше и больше узнавать о VGA оборудование. В этой области есть чему поучиться, что Специализация, безусловно, является ключевым моментом. Я когда-нибудь надеюсь выпустить какой-то приличный инструментарий для программирования игр VGA для публики (т.е. бесплатно, без «условно-бесплатного» мусора) через BBS, однако я думаю, что я еще немного далек от этой цели. Мой текущий личный проект — это графический движок спрайтов, использующий режим X с разрешением 360×240 пикселей, и я добился значительного прогресса в этот..

Что такое режимы отображения? — Определение с сайта WhatIs.com

WhatIs.com Ищите тысячи технических определений Просмотреть определения :
  • А
  • Б
  • С
  • D
  • E
  • Ф
  • G
  • H
  • я
  • Дж
  • К
  • л
  • м
  • N
  • O
  • квартал
  • R
  • S
  • т
  • U
  • В
  • Вт
  • Х
  • Я
  • Z
  • #
Авторизоваться регистр
  • Сеть Techtarget
  • Технический ускоритель
RSS
  • Что такое.com
  • Просмотреть определения Основы вычислений Компьютерная наука Просмотреть все
    • Алгоритмы
    • Искусственный интеллект — машинное обучение
    • Электроника
    • Быстрые справки
    • ИТ-стандарты и организации
    • Учебные пособия
    • Математика
    • Микропроцессоры
    • Нанотехнологии
    • Подкасты
    • Протоколы
    • Глоссарии по быстрому запуску
    • Тесты
    • Робототехника
    • Производство видео
    AppDev Просмотреть все
    • Гибкая, Скрам, XP
    • Яблоко
.Сборка

— Рисуем пиксель с VGA в длинном режиме

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании

Загрузка…

  1. Авторизоваться зарегистрироваться
  2. текущее сообщество

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Theme: Overlay by Kaira Extra Text
Cape Town, South Africa