Мода в 13:00
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|


Режим 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 .
Обозначения
[ редактировать ]В языке ассемблера x86 вход в режим осуществляется, когда AL равен 13h, AH BIOS INT 10h . равен 0 и выполняется [1] Однако буква «h» иногда опускается для языков, которые не поддерживают этот метод записи; например, в QuickBASIC и его дочерних продуктах он известен как режим экрана 13. [3] QuickBASIC имеет собственную схему нумерации режимов экрана, и многие режимы экрана QuickBASIC имеют номера, которые отличаются от режимов BIOS, на которых они основаны. [4] В C шестнадцатеричное число 13 записывается как 0x13.
Ссылки
[ редактировать ]- ^ Jump up to: а б Браун, Ральф Д. «Список прерываний Ральфа Брауна» . Проверено 24 августа 2018 г.
- ^ Фабьен Санглар, ЧЕРНАЯ КНИГА GAME ENGINE: WOLFENSTEIN 3D, 2-е издание, глава «Оборудование», стр. 59, доступно бесплатно по адресу https://fabiensanglard.net/gebb/index.html.
- ^ «Советник Microsoft QuickBasic 4.5» . Майкрософт . 1990. Архивировано из оригинала 5 января 2009 г. Проверено 19 июля 2007 г.
- ^ Основным примером является режим экрана 0 QuickBASIC, который охватывает все текстовые режимы BIOS 00h..03h. Кроме того, режимы экрана QuickBASIC 1 и 2 соответствуют режимам CGA BIOS с 04h по 06h. Также обратите внимание, что QuickBASIC имеет режимы для графического режима Hercules , который вообще не имеет стандартной поддержки BIOS, а также для графических режимов Olivetti/AT&T с расширенным CGA .