Режим 13ч

Стандартный 256-цветный режим на графическом оборудовании VGA
Смоделированное изображение, отображаемое с использованием разрешения и цветовых возможностей режима VGA 13h (соотношение сторон не скорректировано).
Палитра VGA по умолчанию 256 цветов

Режим 13h — это стандартный 256-цветный режим на графическом оборудовании VGA , представленный в 1987 году с IBM PS/2 . Он имеет разрешение 320 × 200 пикселей . [1] Он использовался в компьютерных играх и программном обеспечении для создания изображений и анимации в конце 1980-х и в начале-середине 1990-х годов. [ требуется цитата ] «13h» относится к номеру режима в VGA BIOS . «h» означает шестнадцатеричный .

Режим 13h предоставляет программистам линейный блок видеопамяти размером 320 × 200 , где каждый байт представляет один пиксель. Это упрощает программирование за счет доступа к другим полезным функциям оборудования VGA.

Учитывая соотношение сторон экрана с разрешением 320 × 200 для использования на дисплее 4:3 , режим 13h не имеет квадратных пикселей . [2]

Технические подробности

Режим 13h — это своего рода курьёз, поскольку VGA является планарным устройством с аппаратной точки зрения и не подходит для работы с большими графическими блоками. VGA имеет 256  КБ видеопамяти, состоящей из 4 банков по 64 КБ, известных как плоскости (или «карты» в документации IBM). Планарное расположение памяти разбивает пиксели по горизонтали на группы по четыре. Для любого заданного байта в апертуре видеопамяти ПК объёмом 64 КБ на экране можно получить доступ к четырём пикселям, выбрав требуемую плоскость(и). Это сложнее для программиста, но позволяет получить доступ ко всей доступной видеопамяти и другим преимуществам (см. Режим X ).

Однако режим 13h позволяет программисту получать доступ к VGA «кусочным» (линейным) способом, где каждый последовательный адрес в апертуре представляет собой последовательный пиксель на экране. Плоскости не нужно манипулировать, чтобы выбрать правильные пиксели для изменения или чтения. Это достигается с помощью настройки VGA «Цепь 4», в которой самые нижние два бита 16-битного адреса апертуры используются для выбора плоскости для записи/чтения. Результатом является то, что программист имеет простую модель доступа; недостатком является то, что теперь доступны только 2 14 (16 КиБ) адресного пространства видеоплоскости (остальные 2 бита используются для выбора плоскостей), поэтому в общей сложности адресуемо только 64 КиБ (4 × 16 КиБ). Верхние 48 КиБ каждой плоскости остаются неиспользованными в этом режиме.

В отличие от SVGA и более высоких глубин цвета, режим 13h, часть набора видеорежимов MCGA , имеет 18 бит цвета , 6 на канал RGB. Данные цветовой палитры не хранятся в памяти как таковые , а изменяются, считываются и записываются вызовами портов ввода-вывода низкого уровня в регистры ЦАП .

Данные палитры часто копировались из низкоуровневых портов по одному в место в памяти после данных экрана , чтобы цвета можно было сохранить вместе с пикселями, к которым они принадлежали. Режим захвата экрана 13h — это всего лишь 64 000 байт значений от 0 до 255, каждое из которых является индексом цвета из известной палитры из нескольких цветов. Если цветовая палитра перемешана или полностью неверна, зеленый лист будет казаться синим или любым другим возможным цветом, в зависимости от того, для чего был установлен этот конкретный цвет, какой именно из 256.

Из-за способа выделения фрагментов памяти в такой среде байты в сегменте 0xA000 со смещения 64000 до 64768 могут быть записаны без каких-либо негативных последствий. Это позволяет программисту сохранить дополнительные байты, 256 (цвета) × 3 (цветовые каналы) = 768 байт, в конце файла захвата экрана. Их необходимо снова считать и записать в цветовой порт, чтобы они изменились, когда загружается изображение, содержащее нижний колонтитул цветовой информации. Метод, используемый с этим, заключался в том, чтобы иметь глобальную палитру и сопоставлять цвета из старой цветовой палитры с новой цветовой палитрой. Это означало изменение индекса каждого пикселя, где он указывал бы на почти идеальное совпадение одного цвета из старого в новый цветовой набор. Это также имело недостатки, так как иногда не хватало градиентов, и появлялись артефакты и тому подобное.

Не обязательно устанавливать графический режим через BIOS; можно переключить графический режим в 32-битном защищенном режиме, если немного сложнее. Это подразумевает запись данных о размере в контроллер VGA.

Варианты

Альтернативный планарный 256-цветный режим доступен при отключении режима Chain 4 (отключение цепочки). Видеорежимы, созданные с использованием этой техники, в совокупности называются Mode X , хотя изначально этот термин использовался для режима VGA, который также имел квадратные пиксели. Хотя эти режимы (наряду с очень многими другими возможными режимами VGA) не были специально задокументированы IBM, аппаратные функции VGA и возможности, используемые для их реализации, были задокументированы по крайней мере еще в 1988 году в PS/2 Hardware Interface Technical Reference .

Обозначение

В языке ассемблера x86 режим включается, когда AL равен 13h, AH равен 0 и выполняется BIOS INT 10h . [1] Однако иногда «h» опускается для языков, которые не поддерживают этот метод записи; например, он известен как экранный режим 13 в QuickBASIC и его ответвлениях. [3] QuickBASIC имеет собственную схему нумерации экранных режимов, и многие экранные режимы QuickBASIC имеют номера, которые отличаются от режимов BIOS, на которых они основаны. [4] В языке C шестнадцатеричное число 13 записывается как 0x13.

Ссылки

  1. ^ ab Brown, Ralf D. "Список прерываний Ральфа Брауна" . Получено 24.08.2018 .
  2. ^ Фабьен Санглар, GAME ENGINE BLACK BOOK: WOLFENSTEIN 3D, 2-е издание, Глава Аппаратное обеспечение, стр. 59, свободно доступно по адресу https://fabiensanglard.net/gebb/index.html
  3. ^ "Microsoft QuickBasic 4.5 Advisor". Microsoft . 1990. Архивировано из оригинала 2009-01-05 . Получено 2007-07-19 .
  4. ^ Основным примером является экранный режим QuickBASIC 0, который охватывает все текстовые режимы BIOS 00h..03h. Кроме того, экранные режимы QuickBASIC 1 и 2 соответствуют режимам CGA BIOS 04h по 06h. Также следует отметить, что QuickBASIC имеет режимы для графического режима Hercules , который вообще не имеет стандартной поддержки BIOS, и для расширенных графических режимов CGA Olivetti/AT&T .
  • Программирование 256-цветного VGA Дэвида Брэкина на языке C
  • Введение в VGA... Режим 13h
  • Ассемблер для чайников: режим 13h
  • Техническое руководство по аппаратному интерфейсу IBM PS 2
Взято с "https://en.wikipedia.org/w/index.php?title=Mode_13h&oldid=1267946732"