В этой статье есть несколько проблем. Помогите улучшить ее или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти сообщения )
|
Режим 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]
Этот раздел, возможно, содержит оригинальные исследования . ( Февраль 2019 ) |
Режим 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.