Режим 13h - это стандартный 256-цветный режим на графическом оборудовании VGA, представленный в 1987 году с IBM PS / 2 . Он имеет разрешение 320 × 200 пикселей . [1] Он широко используется в компьютерных играх и искусства / анимации программного обеспечения конца 1980 - х и в начале и середине 1990-х годов. «13h» относится к номеру режима в VGA BIOS . «H» означает шестнадцатеричный .
Режим 13h предоставляет программистам линейный блок видеопамяти 320x200 , где каждый байт представляет один пиксель. Это позволяет упростить программирование за счет доступа к другим полезным функциям оборудования VGA.
Учитывая соотношение сторон экрана с разрешением 320 × 200 для использования на дисплее 4: 3, Mode 13h не имеет квадратных пикселей .
Технические подробности
Режим 13h является чем-то вроде любопытства, потому что VGA - это плоское устройство с аппаратной точки зрения и не подходит для работы с крупной графикой. VGA имеет 256 КБ видеопамяти, состоящих из 4 банков по 64 КБ, известных как плоскости (или «карты» в документации IBM). Планарная структура памяти разбивает пиксели по горизонтали на группы по четыре. Для любого заданного байта в апертуре видеопамяти ПК на 64 КиБ можно получить доступ к четырем пикселям на экране, выбрав требуемую плоскость (и). Это более сложно для программиста, но позволяет получить доступ ко всей доступной видеопамяти и другим преимуществам (см. Режим X ).
Однако режим 13h позволяет программисту получить доступ к VGA в «коротком» (линейном) режиме, где каждый последовательный адрес в апертуре представляет собой последовательный пиксель на экране. Не нужно манипулировать плоскостями, чтобы выбрать правильные пиксели для изменения или чтения. Это достигается с помощью настройки VGA «Цепочка 4», в которой два младших бита 16-битного адреса апертуры используются для выбора плоскости для записи / чтения. В результате программист имеет простую модель доступа; Обратной стороной является то, что теперь доступны только 2 14 (16 КиБ) адресного пространства видеоплоскости (остальные 2 бита используются для выбора плоскостей), поэтому адресуемыми являются только 64 КиБ (4 × 16 КиБ). Верхние 48 КиБ каждой плоскости остаются неиспользованными в этом режиме.
В отличие от SVGA и более высоких глубин цвета, Mode 13h, часть набора видеорежимов MCGA , имеет 18 битов цвета, по 6 на канал. Данные палитры не хранятся в памяти как таковые , а скорее изменяются, читаются и записываются вызовами портов ввода-вывода низкого уровня в регистры ЦАП .
Данные цветовой палитры часто копировались из портов низкого уровня по одному в место в памяти после данных экрана, чтобы цвета могли быть сохранены вместе с пикселями, которым они принадлежали. Снимок экрана в режиме 13h - это всего лишь 64000 байтов значений от 0 до 255, каждое из которых является индексом цвета из известной палитры из нескольких цветов. Если цветовая палитра перемешана или полностью неверна, зеленый лист будет выглядеть синим или любым другим возможным цветом, в зависимости от того, для чего был установлен этот конкретный цвет, какой именно из 256.
Из-за того, как в такой среде выделяются блоки памяти, байты со старшим адресом 0xA000, младшим адресом с 64000 по 64768, могут быть записаны без каких-либо негативных последствий. Это позволяет программисту сохранять дополнительные байты, 256 (цвета) × 3 (цветовые каналы) = 768 байтов, в конце файла снимка экрана. Их необходимо снова прочитать и записать в порт цвета, чтобы они изменились, когда загружается изображение, содержащее нижний колонтитул с информацией о цвете. Метод, используемый с этим, заключался в том, чтобы иметь глобальную палитру и согласовывать цвета из старой цветовой палитры с новой цветовой палитрой. Это означало изменение индекса каждого пикселя, чтобы он указывал на почти идеальное соответствие одного цвета со старого набора цветов на новый. У этого также были недостатки, так как иногда не хватало градиентов, и появлялись артефакты и тому подобное.
Устанавливать графический режим через BIOS не обязательно; есть возможность переключить графический режим в 32-битный защищенный режим, если немного посложнее. Он включает запись данных о размере в контроллер VGA.
Варианты
Альтернативный планарный 256-цветный режим доступен при отключении режима Chain 4 (unchaining). Видеорежимы, созданные с использованием этой техники, вместе называются Mode X , хотя первоначально этот термин использовался для режима VGA, который также имел квадратные пиксели. Хотя эти режимы (наряду с очень многими другими возможными режимами VGA) не были специально задокументированы IBM, аппаратные функции VGA и возможности, используемые для их реализации, были задокументированы по крайней мере еще в 1988 году в Техническом справочнике аппаратного интерфейса PS / 2 .
Обозначение
В языке ассемблера x86 режим вводится, когда AL равно 13h, AH равно 0 и выполняется BIOS INT 10h . [1] Однако буква «h» иногда опускается для языков, которые не поддерживают этот метод записи; например, он известен как режим экрана 13 в QuickBasic и его дополнительных продуктах. [2] QuickBASIC имеет свою собственную схему нумерации экранных режимов, и многие экранные режимы QuickBASIC имеют номера, которые отличаются от режимов BIOS, на которых они основаны. [3] В C шестнадцатеричное 13 записывается как 0x13.
Рекомендации
- ^ a b Браун, Ральф Д. «Список прерываний Ральфа Брауна» . Проверено 24 августа 2018 .
- ^ «Советник Microsoft QuickBasic 4.5» . Microsoft . 1990 . Проверено 19 июля 2007 .
- ^ Основным примером является режим экрана QuickBASIC 0, который охватывает все текстовые режимы BIOS 00h..03h. Кроме того, режимы экрана QuickBASIC 1 и 2 соответствуют режимам CGA BIOS с 04h по 06h. Также обратите внимание, что QuickBASIC имеет режимы для графического режима Hercules, который вообще не имеет стандартной поддержки BIOS, и для графических режимов Olivetti / AT&T расширенного CGA.