Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Организация данных [ править ]

Текстовый буфер [ править ]

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

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

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

Подчеркнуть [ править ]

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

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

Шрифты [ править ]

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

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

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

Курсор [ править ]

Курсор мыши в Impulse Tracker

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

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

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

Методы доступа [ править ]

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

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

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

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

Режимы и время [ править ]

Видеосигнал [ править ]

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

Обычные текстовые режимы ПК [ править ]

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

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

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

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

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

SVGATextMode [ править ]

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

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

Общие ограничения [ править ]

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

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

Ссылки [ править ]

  1. ^ Петцольд, Чарльз (июль 1987). «Тройной стандарт: три новых видеорежима от IBM» . Журнал ПК . Зифф Дэвис . Проверено 13 апреля 2020 .
  2. ^ «Приложение D: Драйверы буфера кадров консоли» . Oracle. 2010. На платформах x86 модуль эмулятора терминала ядра Solaris (tem) использует текстовый режим VGA исключительно для взаимодействия с модулем vgatext. Модуль vgatext использует стандартный текстовый режим VGA для взаимодействия с устройствами буфера кадра, совместимыми с x86.
  3. ^ JD Нил (1997). "Страница информации о программировании видео VGA и SVGA на аппаратном уровне" . Проверено 13 апреля 2020 . Соответствующий байт в плоскости 1 используется для определения атрибутов символа, возможно, включая цвет, выбор шрифта, мигание, подчеркивание и реверс.
  4. ^ a b Prosise, Джефф (30 января 1990 г.). «Репетитор: изменение наборов символов» . Журнал ПК . Зифф Дэвис . Проверено 13 апреля 2020 . В отличие от оригинальных видеоадаптеров IBM, CGA и MDA, которые хранят растровые изображения символов в ПЗУ, где они не могут быть изменены, EGA и VGA хранят их в ОЗУ.
  5. ^ "Консоль фреймбуфера" . kernel.org . Если fbcon отсоединен от уровня консоли, драйвер загрузочной консоли (обычно текстовый режим VGA) возьмет на себя управление.
  6. ^ a b c d e f g "Программирование видео VGA / SVGA - Работа в текстовом режиме VGA" . Osdever.net . Проверено 7 ноября +2016 .
  7. ^ «Примечания к адаптеру монохромного дисплея» . Seasip.info . 6 ноября 2005 . Проверено 7 ноября +2016 .
  8. ^ a b c "Программирование видео VGA / SVGA - управление курсором в текстовом режиме" . Osdever.net . Проверено 7 ноября +2016 .
  9. Cyrix (16 января 1998 г.). «Спецификация функций VGA для процессоров GXm / MXi» (PDF) . Архивировано из оригинального (PDF) 16 августа 2015 года.
  10. ^ a b c d e f Рощи, Винн Л. (16 февраля 1988 г.). Совместимость с VGA: переход на новый стандарт . PC Mag . Ziff Davis, Inc. стр. 177. ISSN 0888-8507 . 
  11. ^ "Руководство программиста OpenBSD, vga" . 20 марта 1999 года. Одновременно могут отображаться 16 разных цветов. Размер символов составляет 8 × 16 пикселей, а шрифт состоит из 256 символов. Встроенный шрифт такого размера всегда присутствует на карте VGA.
  12. Ольга Кокорева. Реестр Windows XP: полное руководство по настройке и оптимизации Windows XP . Очевидным отличием Windows 2000 / XP от Windows NT 4.0 является тот факт, что все системные сообщения, которые появляются во время процесса загрузки Windows NT 4.0, отображаются в текстовом режиме 80 × 50, тогда как Windows 2000 и Windows XP отображают эти сообщения в режиме VGA.
  13. ^ S3 Графика. «Руководство пользователя VC963-3D (S3 ViRGE / DX)» . Архивировано из оригинальных 13 апреля 2020 г. The S3 VIRGE поддерживает 132 × 43 и 132 × 25 расширенных режимов текста для текстовых приложений. Это также позволяет эмулировать терминалы, требующие 132 столбца текста.
  14. ^ «Детали проекта для SVGATextMode» . 19 марта 2000 года Архивировано из оригинала на 3 февраля 2001 года SVGATextMode использует дополнительные возможности на SVGA карт для повышения textmodes Linux. Он позволяет установить частоту пикселей, синхронизацию по горизонтали и вертикали, размер шрифта, размер курсора и т. Д., А также позволяет использовать вашу видеокарту и контролировать весь их потенциал в текстовом режиме.

Внешние ссылки [ править ]