Текстовый видеорежим PC-совместимых компьютеров

Текстовый режим — один из режимов работы видеоадаптеров большинства PC-совместимых компьютеров. Позволяет выводить на экран моноширинный текст из ограниченного набора символов с помощью внутреннего знакогенератора видеокарты[1]. Текстовый режим широко использовался программами для DOS, программами начальной настройки компьютера и утилитами, работающими без загрузки операционной системы.

Пример интерфейса программы (экрана настройки BIOS), использующей символы рисования рамок, доступные в текстовом видеорежиме. Разрешение экрана — 80×25 символов

История править

Первые IBM PC поставлялись с одной из двух видеокарт: MDA и CGA. В первой текстовый режим 80×25 символов был единственным доступным видеорежимом, у CGA был также доступен режим уменьшенного разрешения 40×25 — для отображения на экране телевизора стандарта NTSC. При этом CGA использовал упрощённый рисунок шрифтов разрешением 8×8 пикселей (в отличие от 9×14 у MDA)[2]. Все символы были жёстко зашиты в ПЗУ видеоадаптера[2].

Начиная с EGA появилась возможность загрузки собственных шрифтов в знакогенератор с целью локализации. По умолчанию используются шрифты 8×14. Доступен также режим 43 строки со шрифтами 8×8[2].

Начиная с VGA снова стали доступны шрифты 9×14 пикселей, добавлен шрифт 9×16. Доступны режимы 25, 30, 34, 43 и 50 строк текста. Начиная с SVGA появились дополнительные режимы в 60 строк, а также 132 колонки[2].

Несмотря на то, что операционные системы без графического режима практически вышли из употребления в первых десятилетиях XXI века, текстовый режим сохраняется во всех PC-совместимых видеоадаптерах для обеспечения обратной совместимости.

Описание править

В текстовом режиме экран разбивается на фиксированную решётку знакомест[1]. Каждое знакоместо характеризуется отображаемым в нём символом, цветом текста и фона. В видеоадаптерах с поддержкой цвета символ может быть отображён в одном из 16 цветов на одном из 16 цветов фона, в монохромных — либо светлый символ на тёмном фоне, либо тёмный на светлом. Для знакоместа можно задать возможность мигания и подчёркивания символа, а также указать на использование альтернативного набора символов, что позволяет увеличить его до 512 символов — часть из этих атрибутов доступна только в монохромном режиме, часть — при уменьшении количества цветов до 8[2]. Совокупность всех параметров знакоместа, кроме отображаемого символа, называется атрибутами знакоместа[3]. При доступе к видеопамяти страницы символов и атрибутов чередуются: символ имеет чётный адрес, атрибут — нечётный[2].

Рисунок символа в виде растровой матрицы может быть прочитан из ПЗУ знакогенератора, либо из специальной области в видеопамяти[2]. Символы имеют ширину 8 либо 9 пикселей, причём в памяти все символы хранятся в виде матрицы, шириной 8 бит, а при выводе на экран 9-й пиксель для большинства символов отображался цветом фона, а для псевдографики дублировался старший бит[2]. Наиболее распространённым режимом был режим 80×25 знакомест — он доступен для всех машин, начиная с MDA, и кроме того совпадает по ширине с наиболее распространёнными терминалами, что упрощало адаптацию программ, разработанных для других машин. В ПЗУ знакогенератора зашито 255 символов, символы с кодами 0x200x7E соответствуют таблице ASCII[4], остальные содержат символы разного назначения: символы псевдографики (рамки, штриховки, блоки), символы расширенной латиницы, греческие буквы, математические символы, стрелки и т.д[5]. Позднее этот набор символов стандартизирован как кодовая страница CP437.

Также в PC-видеоадаптерах на аппаратном уровне реализована поддержка курсора, который выводится в виде мигающей горизонтальной линии[3]. С помощью регистров видеоадаптера можно управлять не только положением курсора, но и его внешним видом, а также скрывать его в случае необходимости (начиная с VGA)[2].

Набор символов править

 
Набор символов VGA-совместимого видеоадаптера

Позиции с 0x20 по 0x7E соответствуют набору символов ASCII[4]. Диапазон от 0x01 до 0x1F, зарезервированный для управляющих последовательностей ASCII, включает стрелки и редкоиспользуемые символы[6], однако вывести их можно было только путём непосредственной записи в ячейки видеопамяти, так как при использовании функций BIOS или операционной системы вместо вывода этих символов выполняются управляющие команды[5]; 0x800xAFсимволы расширенной латиницы и дополнительные знаки препинания; 0xE00xFE — некоторые греческие буквы и математические обозначения. Наиболее примечательны символы в диапазоне 0xB00xDF — рамки и символы блочной псевдографики[7], для части из них (0xC00xDF) в режимах с символами шириной 9 пикселей применялись специальные правила отрисовки, что позволяло рисовать непрерывные линии. Эти символы широко использовались в оформлении интерфейсов пользователя и сформировали облик приложений для DOS. При локализации эту область старались не менять, чтобы сохранить совместимость с оригинальными программами. В дальнейшем этот набор символов был оформлен как кодовая страница CP437.

Применение править

Текстовый режим применялся во времена DOS, так как требовал для своей работы минимум памяти (2 килобайта для режима 80×25), и при этом поддерживал достаточно большое разрешение экрана, и следовательно объём выводимого текста и читаемость символов[3]. По этой причине также обновление всего экрана или его части требует значительно меньше ресурсов, чем в графическом режиме, и потому на слабых машинах выполняется значительно быстрее, а программный код (при работе с видеоадаптером напрямую) — проще и компактнее[8]. Вывод текста в 80 колонок позволял легко портировать многие программы, предназначенные для работы с текстовыми терминалами. Большое количество символов псевдографики давало большие возможности по построению достаточно сложных интерфейсов пользователя. При этом текстовый режим доступен для большинства PC-совместимых компьютеров вне зависимости от типа установленного видеоадаптера, благодаря чему он продолжал использоваться и после широкого распространения операционных систем с графическим интерфейсом в различных утилитах восстановления системы и инсталляторах операционных систем. Также в текстовом режиме отображался синий экран смерти в Windows 95 и 98. В текстовом режиме также долгое время работали интерфейсы BIOS setup.

Использование текстового режима возможно тремя способами: непосредственной записью данных в регистры видеоадаптера и видеопамять, использованием функций BIOS и использованием функций операционной системы[2]. Первый вариант наименее требователен к ресурсам и позволяет использовать больше возможностей графического адаптера, однако жёстко привязан к конкретной его реализации, отчего при переносе на машину с другим видеоадаптером могут возникнуть проблемы совместимости.

Примечания править

  1. 1 2 Гук, 2006, с. 567.
  2. 1 2 3 4 5 6 7 8 9 10 Фролов, 1992.
  3. 1 2 3 Гук, 2006, с. 568.
  4. 1 2 Norton, 1985, p. 402.
  5. 1 2 Norton, 1985, p. 405.
  6. Norton, 1985, p. 407−408.
  7. Norton, 1985, p. 409−410.
  8. Гук, 2006, с. 569.

Литература править

  • Михаил Гук. Аппаратные средства IBM PC. — 3-е. — СПб.: Питер, 2006. — 1072 с. — 5000 экз. — ISBN 5-469-01182-8.
  • Соломенчук Валентин Георгиевич. Аппаратные средства PC. — 6. — СПб.: БХВ-Петербург, 2010. — 800 с. — ISBN 9785977504324.
  • Александр Фролов, Григорий Фролов. Программирование видеоадаптеров CGA, EGA и VGA. — М.: Диалог-МИФИ, 1992. — Т. 3. — 287 с. — (Библиотека системного программиста).
  • Peter Norton. The Peter Norton Programmer's guide to the IBM PC. — Microsoft press, 1985. — ISBN 0-914845-46-2.
  • Нортон П. Программно-аппаратная организация компьютера IBM PC = Inside the IBM PC. Access to advanced features and programming. — Prentice-Hall Publishing Comp., 1984.
  • Richard F. Ferraro. Programmer's Guide To The EGA, VGA, and Super VGA Cards : including XGA cards. — 3rd. — US : Addison-Wesley Publishing Company, Inc., 1994. — ISBN 978-0-201-62490-8.