Инструменты пользователя

Инструменты сайта


msx:yamaha_v9938:yamaha_v9938

Yamaha V9938 (VDP)

Видеопроцессор (VDP), используемый в большинстве компьютеров MSX 2 и MSX 1.5.

Разрешения прогрессивной развертки:

Размер экрана Число цветов Объём видеопамяти на страницу
(кбайт)
512×2124 из 51232
512×21216 из 51264
256×21216 из 51232
256×21225664

Разрешение чересстрочной развертки:

Размер экрана Число цветов Объём видеопамяти на страницу
(кбайт)
512×4244 из 51264
512×42416 из 512128
256×42416 из 51264
256×424256128

Аппаратно–реализованные функции:

  • Чтение и установка точки
  • Поиск цвета в строке (влево/вправо, с установкой условия поиска: если равно, если не равно)
  • Линия
  • Заполнение прямоугольной области (с указанием цвета)
  • Копирование (и быстрое копирование) заданной прямоугольной области видеопамяти
  • Пересылка данных из (в) прямоугольной области видеопамяти, через ЦП
  • Применение логических операций (NOT, AND, OR, XOR, ID), для указанных выше функций.

Yamaha_V9938_MSX-Video Technical Data Book (1985-08).pdf

Руководство программиста

На основе V9938 MSX-VIDEO Technical Data Book Programmer’s Guide (переписано и отредактировано Евгением Бричковым):

оригинал

Выражаем огромную благодарность Dolphin_Soft за помощь в переводе, исправлении и дополнении этих материалов.

Содержание

Определения

АтрибутСвойство объекта, которое определяет как объект выглядит на экране. Атрибутом может быть цвет, положение объекта или значение определённого цвета пикселя.
Задний планОбъект или свойство, которое воспринимается как фоновое по отношению к другому свойству или объекту. Например, для символа, отображаемого на экране, говорят, что пиксели его изображения имеют цвет переднего плана, а другие пиксели — цвет фона. В случае спрайтов можно сказать, что они появляются на переднем плане по отношению к шаблонам шрифтов, поскольку спрайты перекрывают изображения шрифта.
СтолкновениеГоворят, что спрайты сталкиваются, когда их точки с цветовым кодом 1 (проще говоря — точки, обозначенные двоичной единицей в их таблице генератора спрайтов) перекрываются. В некоторых случаях такое поведение может быть изменено в пользу или смешивания цветов спрайтов для получения псевдо-цветных спрайтов.
ЦветСвойство пикселя на экране. Цвет пикселя может поступать из различных источников: из глобального регистра цветов, из таблицы цветов шаблона или из таблицы цветов спрайта. Цвета также могут быть закодированы в регистрах палитры путем настройки красного, зеленого и синего компонентов — в этом случае, если таблица цветов шаблонов и спрайтов остается неизменной, фактические цвета, связанные с ними, могут отличаться
КомандаФункция, выполняемая средствами VDP совместно с ЦП, или независимо от ЦП и параллельно с ним для достижения большей производительности.
Расширение VRAMЧасть ОЗУ может быть использована для хранения данных регистров ввода/вывода и не является необходимой для правильной работы VDP. Максимальный размер ОЗУ расширения — 64 кбайт. Из–за особого назначения этой оперативной памяти она редко используется в программах.
Макет (layout)Карта шаблонов или спрайтов, которые определяют, где отображать конкретный объект или какой объект должен отображаться в определенной позиции. В случае шаблонов (шрифта) Таблица знакогенератора определяет внешний вид шрифта, но для отображения этих шаблонов в определенном месте программист должен поместить его номер в Таблицу макетов шаблонов (Pattern Layout Table) в соответствующем месте.
ЗнакогенераторЭто генератор символов. Специализированное аппаратное устройство, предназначенное для преобразования кода символа в его графическое представление, высвечивающееся на экране монитора в соответствии таблице шаблонов. В V9938 также используется для отображения тайлов.
Таблица знакогенератора
(Pattern generator Table)
Место в VRAM, где хранятся шаблоны (шрифт). Каждый шаблон имеет номер от PN0 до PN255. Адрес таблицы знакогенератора хранится в регистре R4.
СимволЭлемент текстового экрана, имеющий уникальный код (0…255), связанный с графическим представлением, заданном в таблице знакогенератора в соответствии его коду
ОбъектШаблон шрифта или спрайт.
Шаблон (pattern)Набор свойств объекта, определяющий его внешний вид. Объектом может быть шаблон шрифта или шаблон спрайта.
ПортЭто схемотехническое решение с определенным системным адресом по которому ЦП обменивается данными с VDP.
VDP имеет четыре порта, порт 0 — это порт чтения/записи данных, порт 1 — порт настройки регистра записи и доступа к статусным регистрам, порт 2 — регистры палитры, а порт 3 — порт косвенной адресации регистров управления VDP.
РегистрЭто область памяти в VDP для управления им. К регистрам можно получить прямой или косвенный доступ. Есть регистры управления, цвета, состояния.
RGBЭта аббревиатура образована названиями базовых цветов красный, зелёный и синий. Этот термин можно использовать для описания аппаратного решения, которое использует три аналоговых сигнала; или описать цветовой состав для пикселя. Обратите внимание, что при кодировании RGB в регистрах палитры VDP используются 3 бита для каждого основного цвета, а при кодировании RGB в режиме Graphic7 красный и зеленый занимают по 3 бита, а синий — только 2 бита.
Тайл (tile)То же, что и шаблон шрифта+цветовые атрибуты
VRAMВидеопамять с произвольным доступом — это набор ячеек памяти, используемых VDP для хранения информации об изображении, отображаемом на экране. Доступ к VRAM осуществляется для отображения изображения, а также для его изменения. Изображение отображается постоянно, когда включен VDP. V9938 может иметь от 16 до 128 Кбайт видеопамяти и в зависимости от организации и размера памяти может не работать должным образом в определенных режимах. См. Описание бита VR регистра R8 для получения дополнительной информации.

Глава 1. Основы ввода/вывода

1.1 Доступ к регистрам управления (R)

V9938 имеет 4 порта: порт 0 – порт 3; номер порта выбирается адресными строками VDP A0 и A1. В таблице ниже также показано распределение адресов портов для MSX–совместимого компьютера.

№ порта A1 A0 Операция Режим Основной порт MSX
0 0 0 Данные VRAMзапись и чтение 0×98
1 0 1 Регистр состояниячтение 0×99
Адрес VRAMзапись
Регистр управления
2 1 0 Регистры палитры 0x9A
3 1 1 Регистр косвенной адресации 0x9B

Есть два способа передачи данных в регистры управления (с R0 по R46).

1.1.1 Прямой доступ к регистрам VDP

Последовательно выведите данные и номер регистра в порт 1. Порядок чтения и записи при работе с портами VDP очень важен, поэтому вы должны иметь в виду, что этот порядок может быть потенциально прерван процедурой прерывания ЦП, которая может писать или читать данные портов VDP и таким образом, нарушать правильную последовательность. Поэтому используйте режим DI (запретить прерывания) в начале и EI (разрешить прерывания) в конце цикла работы с VDP (подробнее об этом здесь).

Байт данных записывается первым (биты D0–D7), а номер регистра записывается после байта данных (биты R0–R5). Если между этими двумя операциями произойдет прерывание, связанное с операциями VDP, это может привести к непредсказуемым результатам.

старший бит 7 6 5 4 3 2 1 0 младший бит
Порт 1 первый байт D7 D6 D5 D4 D3 D2 D1 D0 данные
второй байт 1 0 R5 R4 R3 R2 R1 R0 № регистра

1.1.2. Косвенный доступ к регистрам через регистр R17 (регистр управления указателем)

Установите номер регистра в регистр R17, используя прямую адресацию, а затем отправьте данные в порт 3. Старший бит значения, записанного в регистр R17 (AII), управляет автоинкрементом номера регистра. Если этот бит установлен, после каждой записи данных, номер регистра управления инкрементируется; в противном случае, значение номера регистра управления, указанного в регистре R17 остаётся неизменным. Режим автоинкремента полезен для последовательного заполнения регистров управления VDP.

старший бит 7 6 5 4 3 2 1 0 младший бит
R17 AII 0 R5 R4 R3 R2 R1 R0 № регистра
Автоинкрименторование:
0 — включено
1 — выключено
Порт 3 первый байт D7 D6 D5 D4 D3 D2 D1 D0 данные
второй байт D7 D6 D5 D4 D3 D2 D1 D0
nый байт D7 D6 D5 D4 D3 D2 D1 D0

Примечание: данные в R17 не могут быть изменены косвенной адресацией.

1.2. Доступ к регистрам палитры

Чтобы установить данные в регистры палитры (от P1 до P15), вы должны сначала установить номер регистра палитры в регистре R16 (указатель адреса цветовой палитры), а затем записать два байта данных (в определенном порядке) в порт 2. Каждый цвет состоит из 3—х наборов по 3 бита для красного, зелёного и синего составляющих цвета (значение 0…7).

Примечание: После записи двух байт данных в порт 2 номер регистра палитры (указатель) в R16 автоматически увеличивается.

старший бит 7 6 5 4 3 2 1 0 младший бит
R16 0 0 0 0 C3 C2 C1 C0 № палитры
Порт 2 первый байт 0 R2 R1 R0 0 B2 B2 B0 данные 1
Красный Cиний
второй байт 0 0 0 0 0 G2 G1 G0 данные 2
Зелёный

1.3. Доступ к регистрам состояния

Чтобы прочитать регистры состояния (от S0 до S9), вы должны сначала установить номер регистра в R15 (указатель регистра состояния), а затем прочитать данные из порта №1.

старший бит 7 6 5 4 3 2 1 0 младший бит
R15 (запись) 0 0 0 0 S3 S2 S1 S0 № регистра состояния
Порт 1 (чтение) D7 D6 D5 D4 D3 D2 D1 D0 чтение данных

1.4. Доступ к видеопамяти (VRAM)

К VDP можно подключить видеопамять размером 128 Кбайт плюс расширение VRAM объемом 64 Кбайта. карта памяти показана ниже.

Адрес
Видео ОЗУ
(используется для отображения)

128 Кбайт
0x1FFFF




0x10000
0x0FFFF




0x00000
Расширение VRAM
(Дополнительные 64кб, подключаемые к VDP по линии CASX, без возможности отображения на экране)

Для доступа к памяти используйте следующий порядок действий:
1. Выберите нужную область памяти (видео память (VRAM) или расширение VRAM).
2. Установите счетчик адреса (биты A16…A14).
3. Установите счетчик адреса (биты A7…A0).
4. Установите счетчик адреса (биты A13…A8) и укажите, какой будет следующая команда чтение или запись данных.
5. Выполните чтение/запись данных в память.

Шаг 1: Выбор нужной области памяти (видео память (VRAM) или расширение VRAM)
Программы обычно пользуются видеопамятью,​ поэтому повторный выбор области памяти требуется редко. Это бывает нужно, если вашей программе потребуется доступ к расширению ОЗУ. После выполнения необходимых операций с расширением ОЗУ убедитесь,​ что вы снова выбрали видеопамять (VRAM).

старший бит 7 6 5 4 3 2 1 0 младший бит
R45 (запись) 0 MXC MXD MXS DIY DIX EQ MAJ Регистр аргументов
MXC:
0 — Видео память (VRAM)
1 — Расширение VRAM

Шаг 2: Установка счетчика адреса (биты A16…A14)
VDP может логически адресовать 128 Кбайт в диапазоне адресов 0x00000–0x1FFFF через 17 бит адреса, задаваемые через A16…A0. На этом шаге мы устанавливаем биты A16…A14, записывая их в R14 (регистр базового адреса доступа к VRAM).

старший бит 7 6 5 4 3 2 1 0 младший бит
R14 0 0 0 0 0 A16 A15 A14 Базовый регистр

Шаг 3: Установка счетчика адреса (биты A7…A0)
Установите младшие восемь бит A7…A0 счетчика адресов, записав данные в порт 1.

старший бит 7 6 5 4 3 2 1 0 младший бит
Порт 1 A7 A6 A5 A4 A3 A2 A1 A0 A7…A0

Шаг 4: Установка счетчика адресов (биты A13…A8) и режима работы порта 1
Установите оставшиеся шесть бит A13…A8 счетчика адресов, записав данные в порт. Также следует указать, какая операция с памятью будет выполняться — чтение или запись. Это очень важно, так как если вы укажете, что следующей операцией будет «чтение», VDP предварительно выберет значение из памяти (заданное ранее заданным адресом) и будет готов к чтению данных от ЦП. Если вы этого не сделаете и не выдадите команду чтения, VDP может не получить достаточно времени для чтения данных из VRAM, а ЦП может получить недопустимые данные.

Если вы укажете, что следующей командой будет «запись», тогда VDP не будет выполнять предварительную выборку я вместо этого будет ожидает запись.

старший бит 7 6 5 4 3 2 1 0 младший бит
Порт 1 0 W A13 A12 A11 A10 A9 A8 A13…A8
Следующая команда:
0 — если режим чтения
1 — если режим записи

Шаг 5: Чтение или запись данных в память
Важно знать, что после каждой операции чтения или записи данных порта 0 счетчик адресов увеличивается. Это очень полезно, когда вам нужно последовательно читать или записывать в память. Однако вы должны следить за временем, чтобы у VDP было достаточно времени для записи кэшированных данных или чтения запрошенных данных. Пожалуйста, обратите внимание на временные задержки.

старший бит 7 6 5 4 3 2 1 0 младший бит
Порт 0 D7 D6 D5 D4 D3 D2 D1 D0 Байт данных

Глава 2. Назначение регистров

2.1. Регистры состояния VDP (S) от 0 до 9

Эти регистры только для чтения и используются для получения данных о текущих статусах VDP.

старший бит 7 6 5 4 3 2 1 0 младший бит
S0 F 5S C 5SN Регистр состояния 0
7FСтатус прерывания вертикальной развертки
При чтении S0 он сбрасывается.
6SSСтатус переполнения количества спрайтов в строке
5 (или 9 в режиме SM2) спрайтов находятся на одной горизонтальной линии
5CПризнак столкновения
Столкнулись два спрайта
4…05SNНомер спрайта, вызвавшего переполнение в строке

старший бит 7 6 5 4 3 2 1 0 младший бит
S1 FL LPS ID # FH Регистр состояния 1
7FLСветовое перо.
Индикатор того, что световое перо обнаруживает свет. Если установлен бит IE2, возникает прерывание. Сброс при чтении S1.
Кнопка мыши 2. Признак, нажатия на 2–ю кнопку мыши. Сброс при чтении S1 не происходит.
6LPSКнопка светового пера.
Признак, нажатия на кнопку светового пера
Кнопка мыши 1. Признак, нажатия на 1–ю кнопку мыши
Сброс при чтении S1 не происходит.
5…1ID #Номер модели видеоконтроллера
1 — 9938
2 — 9958
0FHПрерывание строчной развертки.
Происходит при достижении лучом номера строки, указанной в R19. Состояние сбрасывается при чтении S1
Этот механизм называется — Программируемое строчное прерывание.

старший бит 7 6 5 4 3 2 1 0 младший бит
S2 TR VR HR BD 1 1 EO CE Регистр состояния 2
7TRПризнак готовности к передаче данных.
Указание для ЦП от готовности к следующей передаче.
0 — VDP не готов
1 — VDP готов
6VRПризнак начала вертикальной перетрассировки луча.
Устанавливается при сканировании VBLANK области экрана, т.е. при вертикальной перетрассировке луча, пока прорисовывается нижняя и верхняя границы экрана.
5HRПризнак начала горизонтальной перетрассировки луча. Устанавливается при сканировании HBLANK области экрана, т.е. когда прорисовываются правая и левая границы экрана.
4BDСтатус обнаружения цвета.
При выполнении команды поиска этот бит устанавливается в 1, если был обнаружен указанный цвет.
1EOСтатус отображения поля.
0 — чётное поле
1 — нечётное поле
0CEПризнак загруженности.
0 — VDP в режиме ожидания команд
1 — VDP выполняет текущую команду

старший бит 7 6 5 4 3 2 1 0 младший бит
S3 X7 X6 X5 X4 X3 X2 X1 X0 Младшие разряды регистра колонок
S4 1 1 1 1 1 1 1 X8 Старшие разряды регистра колонок
S5 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 Младшие разряды регистра строк
S6 1 1 1 1 1 1 Y9 Y8 Старшие разряды регистра строк

Вышеупомянутые регистры S3…S6 содержат информацию о координатах положения столкновения спрайтов, положения светового пера или относительного движения мыши.

старший бит 7 6 5 4 3 2 1 0 младший бит
S7 C7 C6 C5 C4 C3 C2 C1 C0 Статус цвета

Регистр используется при выполнении команд «POINT» и «VRAM to CPU» и содержит данные VRAM.

старший бит 7 6 5 4 3 2 1 0 младший бит
S8 BX7 BX6 BX5 BX4 BX3 BX2 BX1 BX0 Младшие разряды закодированного цвета по X
S9 1 1 1 1 1 1 1 BX8 Старшие разряды закодированного цвета по X

Когда команда поиска выполняется и кодированный цвет был обнаружен (см. S2), этот регистр содержит его координату X.

2.2. Регистры управления VDP

Регистры VDP находятся в диапазонах: от 0 до 23 и от 32 до 46.

2.2.1. Регистры управления видеорежимами

старший бит 7 6 5 4 3 2 1 0 младший бит
R0 0 DG IE2 IE1 M5 M4 M3 0
DGРежим графического планшета: устанавливает шину цвета в режим ввода или вывода
IE2Разрешить прерывания от светового пера
IE1Разрешить прерывание начала горизонтальной перетрассировки луча
M5Биты управления режимом экрана (см. главу "Режимы экрана")
M4
M3

старший бит 7 6 5 4 3 2 1 0 младший бит
R1 0 BL IE0 M1 M2 0 SI MAG
BLУправление отображением:
0 — изображение выключено
1 — изображение включено
IE0Разрешить прерывание начала вертикальной перетрассировки луча
M1Биты управления режимом экрана (см. главу "Режимы экрана")
M2
SIРазмер спрайтов:
0 — 8×8
1 — 16×16
MAGУвеличение спрайта:
1 — спрайты увеличены (в два раза)

старший бит 7 6 5 4 3 2 1 0 младший бит
R8 MS LP TP CB VR 0 SPD BW
MSМышь:
0 — устанавливает шину цвета в режим вывода и отключает мышь
1 — устанавливает шину цвета в режим ввода и включает мышь
LPСветовое перо:
0 — выключить
1 — включить
TPПереключает режим палитры для цвета с кодом 0
CBШина цвета:
0 — режим вывода
1 — режим ввода
VRВыбор типа и организации VRAM:
0 — 16Кб×1бит или 16Кб×4бит
1 — 64Кб×1бит или 64Кб×4бит
SPDОтключение спрайтов:
1 — спрайты не отображаются и связанные c ними функции обработки спрайтовых таблиц не выполняются
BWЧерно–белый режим:
0 — отключён
1 — вывод изображения в 32 оттенках серого

старший бит 7 6 5 4 3 2 1 0 младший бит
R9 LN 0 S1 S0 IL E0 *NT DC
LNСтрока (количество точек по вертикали):
0 — 192
1 — 212
S1Режим совмещённого вывода:
00 — Передний план (по умолчанию)
01 — Digitizer или Superimposition
10 — Внешний видеосигнал
S0
ILЧересстрочная развёртка:
0 — выключена
1 — включена
EOРежим чередования видеостраниц чётная/нечётная:
0 — отображение одной видеостраницы
1 — чередование двух видеостраниц
*NTРежим выхода RGB:
0 — NTSC (262 линий, 60 Гц)
1 — PAL (313 линий, 50 Гц)
DC*DLCLK (источник тактирования VDP):
0 — внешний
1 — внутренний

2.2.2. Регистры установки базовых адресов таблиц

При отображении информации на экране VDP использует цвет, спрайты и другую информацию из видеопамяти. Важно установить правильные начальные адреса таких структур в VRAM путем записи в указанные регистры базовых адресов таблиц.

Примечание: Важно, чтобы неиспользуемые биты были установлены в 0.

старший бит 7 6 5 4 3 2 1 0 младший бит
R2   (ТNT) 0 A16 A15 A14 A13 A12 A11 A10 Таблица имён
R3   (ТCT) A13 A12 A11 A10 A9 A8 A7 A6 Таблица цветов тайлов (тайловая окраска)
R10 (ТCT) 0 0 0 0 0 A16 A15 A14 Старшие разряды TCT
R4   (TPT) 0 0 A16 A15 A14 A13 A12 A11 Таблица знакогенератора
R5   (SAT) A14 A13 A12 A12 A10 A9 A8 A7 Таблица атрибутов спрайтов
R11 (SAT) 0 0 0 0 0 0 A16 A15 Старшие разряды SAT
R6   (SPT) 0 0 A16 A15 A14 A13 A12 A11 Таблица шаблонов спрайтов

∗ В режиме SM2 спрайтового движка, SAT так же указывает на SCT — Таблицу цветов спрайтов (спрайтовая окраска). Адрес SCT равен полному адресу SAT, минус 512 байт.

2.2.3. Регистры управления цветом

Регистры цвета используются для управления цветом текста и фона экрана, миганием и другими функциями.

старший бит 7 6 5 4 3 2 1 0 младший бит
R7TC3 TC2 TC1 TC0 BD3 BD2 BD1 BD0 Цвет текста и полей экрана
Цвет текста в режимах Text1 и Text2 Цвет бордюра/фона экрана

старший бит 7 6 5 4 3 2 1 0 младший бит
R12T23 T22 T21 T20 BD3 BD2 BD1 BD0 Цвет текста и фона в области мигания
Цвет текста в области мигания Цвет фона области мигания

В режиме Text2, если атрибуты для мигания установлены, цвет, установленный в этом регистре R12 и в регистре R7, то текст отображается попеременно (мигает).

старший бит 7 6 5 4 3 2 1 0 младший бит
R13ON3 ON2 ON1 ON0 OF3 OF2 OF1 OF0 Регистр периода мигания
Время отображения чётной страницы Время отображения нечётной страницы

В режиме Text2 и в режимах от Graphic4 до Graphic7 две страницы могут попеременно отображаться (мигать). Для управления используете регистр R13.

старший бит 7 6 5 4 3 2 1 0 младший бит
R20 0 0 0 0 0 0 0 0 Регистр синхронизации цвета 1
R21 0 0 1 1 1 0 1 1 Регистр синхронизации цвета 2
R22 0 0 0 0 0 1 0 1 Регистр синхронизации цвета 3

Вышеуказанные значения регистров цветовой синхронизации устанавливаются при включении питания. Если все биты во всех трех регистрах установлены в 0, то цветной сигнал на выходе композитного видео будет отсутствовать. Если значения возвращаются к вышеуказанным значениям, VDP начнет генерировать нормальный сигнал цветовой синхронизации.

2.2.4. Регистр управления смещением видеобуфера

Регистры дисплея используются для управления положением изображения на экране.

старший бит 7 6 5 4 3 2 1 0 младший бит
R18V3 V2 V1 V0 H3 H2 H1 H0 Регистр настройки дисплея

Через R18 устанавливается горизонтальное и вертикальное смещения изображения на экране. Смотри таблицу ниже:

Значение
7 1 0 15 8
Горизонталь Лево Центр Право
Вертикаль Верх Низ

2.2.5. Регистр управления вертикальной прокруткой

старший бит 7 6 5 4 3 2 1 0 младший бит
R23 DO7 DO6 DO5 DO4 DO3 DO2 DO1 DO0 Регистр управления вертикальной прокруткой

R23 устанавливает значение первой строки для отображения на экране. Размер виртуального экрана составляет 256 строк, размер видимого вертикального экрана может составлять 192 или 212 в зависимости от бита LN регистра R9. Установка в R23 значение, отличное от 0, может отображать не инициализированные части памяти, которые могут выглядеть как мусор. Отображение виртуального экрана выполняется циклически, это означает, что при увеличении значения в R23 верх виртуального экрана появляется внизу видимого экрана.

Примечание: В текстовых режимах Text1 и Text2, вертикальная прокрутка вместо видеобуфера прокручивает шаблоны внутри знакомест.

Пример использования регистра прокрутки:

Исходное изображение в режиме Graphic1 Адрес экрана, горизонтальная линия сканирования равна 256 точек, режим Graphic1, верхняя часть появляется снизу
Изображения “Auf Wiedersehen Monty”, являются собственностью Gremlin Graphics. Используется в здесь только в образовательных целях.

2.2.6. Регистр установки номера линии экрана, для прерывания вертикальной развертки

При разрешённых прерываниях вертикальной развертки, когда луч достигнет строки с номером, записанном в R19, произойдет вызов обработчика прерывания.

старший бит 7 6 5 4 3 2 1 0 младший бит
R19 IL7 IL6 IL5 IL4 IL3 IL2 IL1 IL0 Регистр линии развёртки

VDP создаёт прерывание, когда начинает отображать соответствующую строку развертки, если бит 4 (IE1) регистра R0 установлен в 1. Запишите значение в этот регистр R19, и когда VDP начнёт отображать указанную строку, он установит бит 0 (FH) регистра состояния S1 в 1.

2.2.7. Регистры доступа

Регистры доступа это регистры, которые используются для доступа к другим регистрам VDP или VRAM. Это регистры R14, R15, R16 и R17.

старший бит 7 6 5 4 3 2 1 0 младший бит
R14 0 0 0 0 0 A16 A15 A14 Базовый регистр доступа к VRAM

R14 содержит три старших бита адреса доступа к VRAM. Во всех режимах, кроме Graphic1, Graphic2, MultiColor и Text1, если из–за автоинкримента адреса в битах A13…A0, есть флаг переноса из бита адреса A13, значение в этом регистре R14 автоматически инкрементируется.

старший бит 7 6 5 4 3 2 1 0 младший бит
R15 0 0 0 0 S3 S2 S1 S0 Селектор регистра состояния

R15 указывает на соответствующий регистр состояния (S0…S9).

старший бит 7 6 5 4 3 2 1 0 младший бит
R16 0 0 0 0 C3 C2 C1 C0 Селектор выбора номера цвета для изменения палитры

R16 указывает на соответствующий регистр палитры цветов (P0…P15), к которому необходимо получить доступ.

старший бит 7 6 5 4 3 2 1 0 младший бит
R17 AII 0 RS5 RS4 RS3 RS2 RS1 RS0 Селектор регистра управления

R17 это регистр, используемый для косвенного доступа к другим регистрам VDP. Он также имеет флаг автоинкремента (AII), который используется для автоинкремента номера регистра при обращении.

Такой механизм очень удобен для автоматического последовательного заполнения регистров данными. Например при использовании функций (см. ниже).

2.2.8. Регистры аргументов функции

Регистры аргументов функции используются при вызове функции VDP. Подробности использования этих регистров будут рассмотрены ниже.

старший бит 7 6 5 4 3 2 1 0 младший бит
R32 SX7 SX6 SX5 SX4 SX3 SX2 SX1 SX0 Младшие разряды исходного X
R33 0 0 0 0 0 0 0 SX8 Старшие разряды исходного X
R34 SY7 SY6 SY5 SY4 SY3 SY2 SY1 SY0 Младшие разряды исходного Y
R35 0 0 0 0 0 0 SY9 SY8 Старшие разряды исходного Y

старший бит 7 6 5 4 3 2 1 0 младший бит
R36 DX7 DX6 DX5 DX4 DX3 DX2 DX1 DX0 Младшие разряды целевого X
R37 0 0 0 0 0 0 0 DX8 Старшие разряды целевого X
R38 DY7 DY6 DY5 DY4 DY3 DY2 DY1 DY0 Младшие разряды целевого Y
R39 0 0 0 0 0 0 DY9 DY8 Старшие разряды целевого Y

старший бит 7 6 5 4 3 2 1 0 младший бит
R40 NX7 NX6 NX5 NX4 NX3 NX2 NX1 NX0 Младшие разряды числа точек X
R41 0 0 0 0 0 0 0 NX8 Старшие разряды числа точек X
R42 NY7 NY6 NY5 NY4 NY3 NY2 NY1 NY0 Младшие разряды числа точек Y
R43 0 0 0 0 0 0 NY9 NY8 Старшие разряды числа точек Y

старший бит 7 6 5 4 3 2 1 0 младший бит
R44 CH3 CH2 CH1 CH0 CL3 CL2 CL1 CL0 Регистр цвета
R45 0 MXC MXD MXS DIY DIX EQ MAJ Регистр расширенных свойств вызываемой функции

2.2.9. Регистр вызова функции

старший бит 7 6 5 4 3 2 1 0 младший бит
R46 CM3 CM2 CM1 CM0 LO3 LO2 LO1 LO0 Регистр вызова функции

При обращении к этому регистру, происходит запуск указанной в нем функции с заданными аргументами в регистрах 32…45 или остановки выполнения текущей функции.

Глава 3. Режимы экрана

3.1. Режим Text1

Характеристики
Размер шаблона с точках (Ш×В)6×8
Число шаблонов256
Размер экрана, в шаблонах (Ш×В)Значение бита LN регистра R9 определяет размер:
0 — 40×24
1 — 40×26.5
Цвета шаблонаДва цвета из 512 (на экран)
Размер VRAM на экран4 Кбайта
Управление
Адрес шаблонов шрифта Таблица знакогенератора R4
Адрес макета экранаТаблица имён R2
Цвет текста (ненулевые биты шаблона = 1)Четыре старшие бита R7
Цвета фона (нулевые биты шаблона = 0)Четыре младшие бита R7
Установка режима
БитM5 (R0)M4 (R0)M3 (R0)M2 (R1)M1 (R1)
Значение 0 0 0 0 1
Значения по умолчанию в MSX BASIC
Номер экрана0
Ширина1…40
Таблица знакогенератора0x00800…0x00FFF
Макет экранной страницы0x00000…0x003BF

Примечание: При установке в режиме Text1 размера экрана 26.5 строк таблица макетов шаблонов (Pattern Layout Table) после адреса 0x003FF переходит снова к адресу 0, поэтому в нижней части экрана будет отображаться небольшой кусок верхней части экрана.

VDP(10)=130

3.1.2. Таблица знакогенератора

Адрес таблицы знакогенератора задается регистром R4.

Шрифт, отображаемый на экране для каждого шаблона таблицы знакогенератора, состоит из 8 байт, при этом отображается 6 старших бит, а 2 младших бита не отображаются.

Байты шаблонов шрифта идут в таблице последовательно по 8 на символ. Таким образом, адрес нужного символа вычисляется как:

ADR=TPT_Addr+C*8 (адрес таблицы знакогенератора+код символа*8)

Пример таблицы знакогенератора приведен ниже:

старший бит 7 6 5 4 3 2 1 0 младший бит
Адрес Описание
0 ██ Шаблон 0 (PN0)
1 ██ ██
2██ ██
3██ ██
4██ ██ ██ ██ ██
5██ ██
6██ ██
7
8██ ██ ██ ██ Шаблон 1 (PN1)
9██ ██
10██ ██
11██ ██ ██ ██
12██ ██
13██ ██
14██ ██ ██ ██
15
2040██ ██ ██ Шаблон 255 (PN255)
2041 ██ ██ ██
2042██ ██ ██
2043 ██ ██ ██
2044██ ██ ██
2045 ██ ██ ██
2046██ ██ ██
2047 ██ ██ ██

3.1.3. Макет экранной страницы

FIXME

Начальный адрес макета экранной страницы хранится в регистре R2.

Макет экранной страницы представляет собой текстовую страницу 40×24 (или 40×27 если бит LN регистра R9 установлен), которая является картой кодов символов, которые VDP во время отображения, аппаратно подставляет из таблицы знакогенератора.

Каждое место на экране содержит код (номер) шаблона из таблицы знакогенератора, отображаемого в соответствующем месте.

Адрес для изменения или считывания кода в нужной позиции макета экранной страницы, получается простым вычислением:

Addr=TNT_Addr+Y*40+X

Схема распределения относительных адресов в макете экранной страницы приведена ниже:

Колонки (X)
Строки (Y) 0 1 2 3 39
0 0 1 2 3 39
1 40 41 42 43 79
22 880 881 882 883 919
23 920 921 922 923 959

3.1.4. Регистры настройки цвета

FIXME

Настройки цвета находятся в регистре R7. Биты TC3…TC0 определяют цвет ненулевых пикселей символа, заданных в таблице генератора шаблонов, биты BD3…BD0 определяют цвет прозрачных (или фоновых) пикселей.

Примечание: Цвет бордюров экрана в режиме Text1, всегда совпадает с цветом фона.

3.1.5. Пример многостраничного распределения видеопамяти для режима Text1

FIXME

Каждая страница содержит своё определение шаблонов символов, и свой макет экрана:

0x00000



0x003BF
Макет экранной страницы
0
(40*24=960 байт)
(LN: 40*27=1080 байт)
старший бит 7 6 5 4 3 2 1 0 младший бит
R2 (ТNT) 0 0 0 0 0 0 0 0
A16 A15 A14 A13 A12 A11 A10
0x00800



0x00FFF
Таблица знакогенератора
0
(256*8=2048 байт)
старший бит 7 6 5 4 3 2 1 0 младший бит
R4 (TPT) 0 0 0 0 0 0 0 1
A16 A15 A14 A13 A12 A11
0x01000



0x013BF
Макет экранной страницы
1
(40*24=960 байт)
(LN: смотри примечание)
старший бит 7 6 5 4 3 2 1 0 младший бит
R2 (ТNT) 0 0 0 0 0 1 0 0
A16 A15 A14 A13 A12 A11 A10
0x01800



0x01FFF
Таблица знакогенератора
1
(256*8=2048 байт)
старший бит 7 6 5 4 3 2 1 0 младший бит
R4 (TPT) 0 0 0 0 0 0 1 1
A16 A15 A14 A13 A12 A11
 
  …
 
0x1FFFF Таким же образом можно выделить максимум 32 страницы, если к VDP подключено 128 Кбайт.

3.2. Режим Text2

FIXME

Характеристики
Размер шаблона с точках (Ш×В)6×8
Число шаблонов256
Размер экрана, в шаблонах (Ш×В)Значение бита LN регистра R9 определяет размер:
0 — 80×24
1 — 80×26.5
Цвета шаблонаДва цвета из 512 (на экран) или четыре при использовании мигания
Размер VRAM на экран8 Кбайт
Управление
Адрес шаблонов шрифтаТаблица знакогенератора
Адрес макета экранаТаблица имен R2
Цвет текста (ненулевые биты шаблона = 1)Четыре старшие бита R7
Цвета фона (нулевые биты шаблона = 0)Четыре младшие бита R7
Цвет текста в области миганияЧетыре старшие бита R12
Цвет фона области миганияЧетыре младшие бита R12
Установка режима
БитM5 (R0)M4 (R0)M3 (R0)M2 (R1)M1 (R1)
Значение 0 1 0 0 1

Число строк задаётся битом LN регистра R9:

ЗначениеЧисло строк
024
126.5
Значения по умолчанию в MSX BASIC
Номер видеорежима 0
Адрес таблицы знакогенератора0x01000…0x017FF
Адрес макета экранной страницы0x00000…0x0077F
0x00000…0x0086F
Адрес таблицы атрибутов мигания0x00800…0x008EF
0x00800…0x0090D

3.2.2. Таблица знакогенератора

FIXME

Организация таблицы генератора шаблонов такая же, как в режиме Text1.

3.2.3. Макет экранной страницы

FIXME

Макет экранной страницы представляет собой карту экрана (для каждого изображения на экране). Каждая ячейка таблицы содержит код шаблона, отображаемого в соответствующем месте экрана. Эта таблица состоит из 80×24 байт, которые являются кодами (номерами) шаблонов из таблицы знакогенератора.

Важно, что если бит LN R9 установлен в 1, то отображается 26 с половиной строк. Этот бит отвечает за отображение 212 строк на экране, а значит высота экрана в строках текста равна 212/8=26.5, что составляет 2160 байт экранной области.

Адрес макета экранной страницы хранится в регистре R2, два младших бита регистра, всегда равны 1.

старший бит 7 6 5 4 3 2 1 0 младший бит
R2   (ТNT) 0 A16 A15 A14 A13 A12 1 1 Таблица имён

Схема распределения относительных адресов в макете экранной страницы приведена ниже:

Колонки (X)
Строки (Y) 0 1 2 3 79
0 0 1 2 3 79
1 80 81 82 83 159
25 2000 2001 2002 2003 2079
26 2080 2081 2082 2083 2159
27 2160 2061 2062 2063 2239

3.2.4. Регистры цвета

FIXME

Настройки цвета находятся в регистре R7. Биты TC3…TC0 определяют цвет ненулевых пикселей символа, заданных в таблице генератора шаблонов, биты BD3…BD0 определяют цвет прозрачных (или фоновых) пикселей.

Примечание: В режиме Text2, цвет бордюра всегда равен цвету фона.

Цвета текста и фона в области мигания определяются в R12.

3.2.5. Атрибуты области мигания

FIXME

Каждая позиция на экране имеет отдельный бит для атрибута мигания, и если этот бит установлен на 1, мигание будет применено к рисунку, помещенному в эту область в таблице макетов шаблонов. Начальный адрес таблицы задаётся в регистрах R3 и R10.

старший бит 7 6 5 4 3 2 1 0 младший бит
R3   (ТCT) A13 A12 A11 A10 A9 1 1 1 Таблица цветов тайлов (тайловая окраска)
R10 (ТCT) 0 0 0 0 0 A16 A15 A14 Старшие разряды TCT

Структура таблицы цветов приведена ниже.

старший бит 7 6 5 4 3 2 1 0 младший бит
0 (0,0) (1,0) (2,0) (3,0) (4,0) (5,0) (6,0) (7,0)
1 (8,0) (9,0) (10,0) (11,0) (12,0) (13,0) (14,0) (15,0)
269 (72,26) (73,26) (74,26) (75,26) (76,26) (77,26) (78,26) (79,26)

3.2.6. Настройка периода мигания

FIXME

Поочередно будут отображаться цветовые коды, заданные в регистрах R7 и R12; Частоту мигания (время включения и выключения) можно задать через регистр R13.

R7 R12 R7 R12
Чётнная страница
Нечётнная страница

Значения времени для NTSC рассчитываются по формуле:

T=(166.9*X)/1000 (время в секундах),
где X, это длительность включения/отключения, определенная в R13

Если длительность включения равна 15, а длительность отключения равна 0, атрибуты области мигания включены постоянно.

3.2.7. Пример распределения видеопамяти

FIXME

Пример распределения видеопамяти для режима Text2:

0x00000



0x00870
Макет экранной страницы
0
(80*24=1920 байт)
(LN: 80*27=2160 байт)
старший бит 7 6 5 4 3 2 1 0 младший бит
R2 (ТNT) 0 0 0 0 0 0 1 1
A16 A15 A14 A13 A12
0x00A00



0x00B0E
Таблица цветов
0
(80*24/8=240 байт)
(LN: 80*27/8=270 байт)
старший бит 7 6 5 4 3 2 1 0 младший бит
R3 (ТCT) 0 0 1 0 1 1 1 1
A13 A12 A11 A10 A9
0x01000



0x01800
Таблица знакогенератора
0
(256*8=2048 байт)
старший бит 7 6 5 4 3 2 1 0 младший бит
R10 (ТCT) 0 0 0 0 0 0 0 0
A16 A15 A14
старший бит 7 6 5 4 3 2 1 0 младший бит
R4 (TPT) 0 0 0 0 0 0 1 1
A16 A15 A14 A13 A12 A11
0x02000



0x02870
Макет экранной страницы
1
0x02A00



0x02B0E
Таблица цветов
1
0x03000



0x037FF
Таблица знакогенератора
1
 
  …
 
0x04000



0x1FFFF
Таким же образом можно выделить максимум 16 страниц, если к VDP подключено 128 Кбайт.

3.3. Режим MultiColor (MC)

FIXME

Характеристики
Размер экрана, в цветных блоках (Ш×В)Значение бита LN регистра R9 определяет размер:
0 — 64×48
1 — 64×53
Цвета блоков16 из 512 цветов
Режим спрайтовSprite mode 1
Размер VRAM на экран4 Кбайт
Управление
Шаблон шрифтаТаблица знакогенератора
Расположение шаблона экрана Имя таблицы шаблона
Цвет фонаЧетыре младшие бита R7
СпрайтыVRAM sprite attribute table
VRAM sprite pattern table
Установка режима
БитM5 (R0)M4 (R0)M3 (R0)M2 (R1)M1 (R1)
Значение 0 0 0 1 0
Значения по умолчанию в MSX BASIC
Номер видеорежима3
Таблица знакогенератора0x00000…0x007FF
Макет экранной страницы0x00800…0x00AFF
0x00800…0x00B5F
Шаблоны спрайтов0x03800…0x03FFF
Атрибуты спрайтов0x01B00…0x01B7F

3.3.1. Таблица знакогенератора

FIXME

Каждый шаблон таблицы знакогенератора состоит из четырех цветовых блоков. Эти шаблоны имеют размер 8×8 для экрана размером 256×192 точек.

8 точек
Блок A Блок B
8 точек
Блок C Блок D

Для каждого блока A, B, C и D можно указать шестнадцать цветов. Для каждого шаблона используются два байта.

старший бит 7 6 5 4 3 2 1 0 младший бит
Код цвета A Код цвета B
Код цвета C Код цвета D

Для каждого шаблона предусмотрено четыре цветовых блока (8 байтов). Определенный цветовой блок используется для отображения в зависимости от координаты Y.

старший бит 7 6 5 4 3 2 1 0 младший бит
Имя шаблона A B Код цвета A Код цвета B Цвет шаблона, если Y=0, 4, 8, 12, 16 или 20
C D Код цвета C Код цвета D
E F Код цвета E Код цвета F Цвет шаблона, если Y==1, 5, 9, 13, 17 или 21
G H Код цвета G Код цвета H
I J Код цвета I Код цвета J Цвет шаблона, если Y=2, 6, 10, 14, 18 или 22
K L Код цвета K Код цвета L
M N Код цвета M Код цвета N Цвет шаблона, если Y=3, 7, 11, 15, 19 или 23
O P Код цвета O Код цвета P

Адрес начала таблицы генератора шаблонов задаётся в регистре R4.

3.3.2. Макет экранной страницы

FIXME

Макет экранной страницы представляет собой карту экрана (для каждого экрана), содержащую один байт для каждого местоположения экрана. Каждый байт определяет уникальный номер шаблона. Адрес макета экранной страницы храниться в регистре R2.

Колонки (X)
Строки (Y) 0 1 2 3 31
0 0 1 2 3 31
1 32 33 34 35 63
22 704 705 706 707 735
23 736 737 738 739 767

3.3.3. Регистры цвета

FIXME

Цвет фона экрана, можно задать, указав значение в битах BD3…BD0 в регистре R7. Обратите внимание, что значения бит TC3…TC0 регистра R7 игнорируются.

3.3.4. Спрайты

FIXME

Адрес начала таблицы атрибутов спрайта в задаётся в регистрах R5 и R11; адрес начала таблицы генератора спрайтов в регистре R6. Подробную информацию о спрайтах см. В разделе Sprite mode 1.

3.3.5. Пример распределения видеопамяти

FIXME

Пример распределения видеопамяти для режима MultiColor

0x00000



0x003FF
Sprite generator table
0
(128*8=1024 байт)
В этом режиме доступна только половина от максимально возможного количества спрайтов — от 0 до 127. Спрайты с номерами 128-255 перекрывают таблицу макетов шаблонов (Pattern Layout Table).
0x00400



0x006FF
Макет экранной страницы
0
(32*24=768 байт)
(LN: 32*27=864 байт)
Хотя доступен режим 26.5 строк, пространство над 24 строками в этом макете перекрывает таблицу атрибутов спрайта.
0x00700



0x0077F
Sprite attribute table
0
(32*4=128 байт)
0x08000



0x00FFF
Таблица знакогенератора
0
(256*8=2048 байт)
 
  …
 
Таким же образом можно выделить максимум 32 страницы, если к VDP подключено 128 Кбайт.




0x1FFFF

3.4. Режим Graphic1 (G1)

FIXME

Характеристики
Размер шаблона с точках (Ш×В)8×8
Число шаблонов256
Размер экрана, в шаблонах (Ш×В)Значение бита LN регистра R9 определяет размер:
0 — 32×24 (256×192 точки)
1 — 32×26.5 (256×212 точек)
Цвета шаблона16 цветов из 512 (на экран)
Режим спрайтовSprite mode 1
Размер VRAM на экран4 Кбайта
Управление
Шаблоны тайловТаблица знакогенератора
Расположение шаблона экрана Макет экрана
Pattern color codes 1 & 0Specified as a group for each 8-bit pattern in color table
Цвета фонаЧетыре младшие бита R7
СпрайтыVRAM sprite attribute table
VRAM sprite pattern table
Установка режима
БитM5 (R0)M4 (R0)M3 (R0)M2 (R1)M1 (R1)
Значение 0 0 0 0 0
Значения по умолчанию в MSX BASIC
Номер видеорежима1
Таблица знакогенератора0x00000…0x007FF
Макет экранной страницы0x01800…0x01AFF
0x01800…0x01B5F
Pattern colors0x02000…0x0201F
Sprite patterns0x03800…0x03FFF
Sprite attributes0x01B00…0x01B7F

3.4.1. Таблица знакогенератора

FIXME

Шрифт, отображаемый на экране для каждого шаблона таблицы знакогенератора, состоит из 8 байтов, при этом отображаются все 8 бит каждого байта.

Пример таблицы знакогенератора приведен ниже.

старший бит 7 6 5 4 3 2 1 0 младший бит
Адрес Описание
0 ██ ██ ██ Шаблон 0 (PN0)
1 ██ ██
2██ ██
3██ ██
4██ ██ ██ ██ ██ ██ ██
5██ ██
6██ ██
7
8██ ██ ██ ██ ██ ██ Шаблон 1 (PN1)
9██ ██
10██ ██
11██ ██ ██ ██ ██ ██
12██ ██
13██ ██
14██ ██ ██ ██ ██ ██
15
2040██ ██ ██ ██ Шаблон 255 (PN255)
2041 ██ ██ ██ ██
2042██ ██ ██ ██
2043 ██ ██ ██ ██
2044██ ██ ██ ██
2045 ██ ██ ██ ██
2046██ ██ ██ ██
2047 ██ ██ ██ ██

3.4.2. Макет экранной страницы

FIXME

Макет экранной страницы представляет собой карту экрана (для каждого экрана), содержащую один байт для каждого местоположения экрана. В этой таблице есть 32×24 (767) ячеек, в которых могут отображаться определенные шаблоны. Каждый байт определяет уникальный номер шаблона. Адрес макета экранной страницы храниться в регистре R2 и соответствует ячейке (0, 0) с адресом 0, см. ниже.

Колонки (X)
Строки (Y) 0 1 2 3 31
0 0 1 2 3 31
1 32 33 34 35 63
22 704 705 706 707 735
23 736 737 738 739 767

3.4.3. Регистры цвета

FIXME

Цвет фона экрана можно задать, указав значение в битах BD3…BD0 биты в регистре R7. Обратите внимание, что биты TC3…TC0 регистра R7 игнорируются.

3.4.4. Таблица цвета

FIXME

Адрес начала таблицы цвета задаётся в регистрах R3 и R10.

GreyWolf 2021-06-05 22:45 Эта таблица повторяет части таблицы по ссылкам

старший бит 7 6 5 4 3 2 1 0 младший бит
R3   (ТCT) A13 A12 A11 A10 A9 A8 A7 A6 Таблица цветов тайлов (тайловая окраска)
R10 (ТCT) 0 0 0 0 0 A16 A15 A14 Старшие разряды TCT

Размер таблицы цветов составляет 32 байта, каждый байт организован так же, как регистр R # 7 (FC - цвет переднего плана, BC - цвет фона). Шаблонам 0…7 присваивается первый цвет. из таблицы цветов шаблонам 8…15 назначается второй цвет из таблицы цветов и т.д., а шаблонам 0xF8…0xFF назначается 31-й цвет из таблицы цветов. Структура таблицы цветов представлены в таблице ниже.

старший бит 7 6 5 4 3 2 1 0 младший бит
0 FC3 FC2 FC1 FC0 BC3 BC2 BC1 BC0 Цвет для шаблонов 0…7
1 FC3 FC2 FC1 FC0 BC3 BC2 BC1 BC0 Цвет для шаблонов 8…15
31 FC3 FC2 FC1 FC0 BC3 BC2 BC1 BC0 Цвет для шаблонов 0xF8…0xFF

3.4.5. Спрайты

FIXME

Адрес начала таблицы атрибутов спрайта в задаётся в регистрах R5 и R11; адрес начала аблицы генератора спрайтов в регистре R6. Подробную информацию о спрайтах см. в разделе Sprite mode 1.

3.4.6. Пример распределения видеопамяти

FIXME

Пример распределения видеопамяти для режима Graphic1

0x00000



0x003FF
Sprite generator table
0
(128*8=1024 байт)
В этом режиме доступна только половина от максимально возможного количества спрайтов — от 0 до 127. Спрайты с номерами 128-255 перекрывают таблицу макетов шаблонов (Pattern Layout Table).
0x00400



0x006FF
Макет экранной страницы
0
(32*24=768 байт)
(32*27=864 байт)
Хотя доступен режим 26.5 строк, пространство над 24 строками в этом макете перекрывает таблицу атрибутов спрайта.
0x00700



0x0077F
Sprite attribute table
0
(32*4=128 байт)
0x00780



0x0079F
Color table
0
(256/8=32 байт)
0x08000



0x00FFF
Таблица знакогенератора
0
(256*8=2048 байт)
 
  …
 
Таким же образом можно выделить максимум 32 страницы, если к VDP подключено 128 Кбайт.




0x1FFFF

3.5. Режимы Graphic2 (G2) и Graphic3 (G3)

FIXME

Характеристики
Размер шаблона с точках (Ш×В)8×8
Число шаблонов768 (по 256 на 1⁄3 экрана)
Размер экрана, в шаблонах (Ш×В)32×24 (256×192 точки)
Цвета шаблона16 цветов из 512 (на экран)
Режим спрайтовGraphic2 — Sprite mode 1
Graphic3 — Sprite mode 2
Размер VRAM на экран16 Кбайт

∗ Режимы Graphic2 и Graphic3 идентичны, за исключением режима спрайтов.

Управление
Шаблон шрифтаТаблица знакогенератора
Расположение шаблона экрана Имя таблицы шаблона
Pattern color codes 1 & 0Specified as a group for each 8-bit pattern in color table
Цвета фонаЧетыре младшие бита R7
СпрайтыVRAM sprite attribute table
VRAM sprite pattern table
Установка режима Graphic2
БитM5 (R0)M4 (R0)M3 (R0)M2 (R1)M1 (R1)
Значение 0 0 1 0 0
Установка режима Graphic3
БитM5 (R0)M4 (R0)M3 (R0)M2 (R1)M1 (R1)
Значение 0 1 0 0 0
Значения по умолчанию в MSX BASIC Graphic2 Graphic3
Номер видеорежима 2 4
Таблица знакогенератора 0x00000…0x017FF
Макет экранной страницы 0x01800…0x01AFF
Pattern colors 0x02000…0x037FF
Sprite patterns 0x03800…0x03FFF
Sprite attributes0x01B00…0x01B7F0x01E00…0x01E7F
Sprite colors0x01C00…0x01DFF

∗ В режиме 212 строки (бит LN регистра R9 равен 1) дополнительные 20 строк отображаются как пустые с цветной рамкой, невозможно отобразить что-либо в этом пространстве.

3.5.1. Макет экранной страницы

FIXME

В отличие от других режимов, в этом режиме экран разделен по вертикали на три части. Каждая часть имеет свою таблицу знакогенератора и таблицы цветов, но все они, одна за другой, используют одну и ту же таблицу макетов шаблонов. Структура экрана представлена ниже.

Колонки (X)
Строки (Y) 0 1 2 3 31
0 0, 0 1, 0 2, 0 3, 0 31, 0 Верхняя
1/3
экрана
1 0, 1 1, 1 2, 1 3, 1 31, 1
7 0, 7 1, 7 2, 7 3, 7 31, 7
8 0, 8 1, 8 2, 8 3, 8 31, 8 Средняя
1/3
экрана
15 0, 15 1, 15 2, 15 3, 15 31, 15
16 0, 16 1, 16 2, 16 3, 16 31, 16 Нижняя
1/3
экрана
22 0, 22 1, 22 2, 22 3, 22 31, 22
23 0, 23 1, 23 2, 23 3, 23 31, 23
Таблица знакогенератора Pattern color table
0x00000



0x007FF
Верхняя 1/3
Pattern images of the screen (256) Pattern colors of the screen (256)
0x00800



0x00FFF
Средняя 1/3
Pattern images of the screen (256)Pattern colors of the screen (256)
0x01000h



0x017FF
Нижняя 1/3
Pattern images of the screen (256)Pattern colors of the screen (256)

3.5.2 Таблица знакогенератора

FIXME

Шрифт, отображаемый на экране для каждого шаблона таблицы знакогенератора для каждой 1/3 экрана, состоит из 8 байтов, при этом отображаются все 8 бит каждого байта.

Адрес таблицы знакогенератора:

старший бит 7 6 5 4 3 2 1 0 младший бит
R4 0 0 A16 A15 A14 A13 1 1

The pattern layout table is a map of the screen (per screen image). Every byte location of the screen contains code of the pattern displayed at respective location. This table has three 32*8 locations (upper, middle and lower) arranged consecutively where defined patterns can be displayed. Pattern layout table base address is stored in register R#2, and corresponds to the cell (0, 0) with address 0 in the picture below. Example of pattern generator table is provided below. Color table identifies color 1 (upper four bits) and color 0 (lower four bits) for every row of the pattern.

Пример таблицы знакогенератора приведен ниже.

старший бит 7 6 5 4 3 2 1 0 младший бит старший бит 7 6 5 4 3 2 1 0 младший бит
Адрес Описание Адрес
0 ██ ██ ██ Шаблон 0 (PN0) 11110000 0
1 ██ ██ 11110000 1
2██ ██ 11110000 2
3██ ██ 11110000 3
4██ ██ ██ ██ ██ ██ ██ 11110000 4
5██ ██ 11110000 5
6██ ██ 11110000 6
7 11110000 7
8██ ██ ██ ██ ██ ██ Шаблон 1 (PN1) 11110000 8
9██ ██ 11110000 9
10██ ██ 11110000 10
11██ ██ ██ ██ ██ ██ 11110000 11
12██ ██ 11110000 12
13██ ██ 11110000 13
14██ ██ ██ ██ ██ ██ 11110000 14
15 11110000 15
2040██ ██ ██ ██ Шаблон 255 (PN255) 11110000 2040
2041 ██ ██ ██ ██ 11110000 2041
2042██ ██ ██ ██ 11110000 2042
2043 ██ ██ ██ ██ 11110000 2043
2044██ ██ ██ ██ 11110000 2044
2045 ██ ██ ██ ██ 11110000 2045
2046██ ██ ██ ██ 11110000 2046
2047 ██ ██ ██ ██ 11110000 2047
Цвет (часть 1) Цвет (часть 0)

3.5.3. Таблица цвета

FIXME

Адрес начала таблицы цвета задаётся в регистрах R3 и R10.

старший бит 7 6 5 4 3 2 1 0 младший бит
R3   (ТCT) A13 1 1 1 1 1 1 1 Таблица цветов тайлов (тайловая окраска)
R10 (ТCT) 0 0 0 0 0 A16 A15 A14 Старшие разряды TCT

3.5.4 Регистры цвета

FIXME

You can set color of the margin of the screen (backdrop color) specifying BD3…BD0 bits in register R#7. Note that bits TC3…TC0 of R#7 are ignored.

3.5.5 Спрайты

FIXME

Set the start address of the sprite attribute table in registers R5 and R11; set start address of the sprite pattern generator table in register R6. For details about sprites in Graphic2 mode, please refer to section Sprite mode 1; for details about sprites in Graphic3 mode, please refer to section Sprite mode 2

3.5.6 Пример распределения видеопамяти

FIXME

Таблица знакогенератора
0x00000



0x007FF
Верхняя 1/3
(256*8=2048 байт)
0x00800



0x00FFF
Средняя 1/3
(256*8=2048 байт)
0x01000



0x017FF
Нижняя 1/3
(256*8=2048 байт)
Graphic2 Graphic3
0x01800



0x01BFF
Sprite pattern table
(128*8=1024 байт)∗∗
Sprite pattern table
(128*8=1024 байт)**
0x01C00



0x01C7F
Sprite attribute table
(32*4=128 байт)
Sprite color table
(32*16=512 байт)
0x01C80



0x01DFF
0x01E00



0x01E7F
Sprite attribute table
(32*4=128 байт)




0x01FFF
Pattern color table
0x02000



0x027FF
Верхняя 1/3
(256*8=2048 байт)
0x02800



0x02FFF
Средняя 1/3
(256*8=2048 байт)
0x03000



0x037FF
Нижняя 1/3
(256*8=2048 байт)
0x03800



0x03AFF
Pattern layout table
(256*8=2048 байт)
 
  …
 
0x04000



0x1FFFF
Таким же образом можно выделить максимум 8 страниц, если к VDP подключено 128 Кбайт.

∗ В режиме 212 строки (бит LN регистра R9 равен 1) дополнительные 20 строк отображаются как пустые с цветной рамкой, невозможно отобразить что-либо в этом пространстве.

∗∗ В этом режиме доступна только половина от максимально возможного количества спрайтов — от 0 до 127. Спрайты с номерами 128-255 перекрывают таблицу макетов шаблонов (Pattern Layout Table).

3.6. Режим Graphic4 (G4)

FIXME

Характеристики
Размер экрана, в точках (Ш×В)Значение бита LN регистра R9 определяет размер:
0 — 256×192
1 — 256×212
Управление
Расположение шаблона экрана Имя таблицы шаблона
Цвета фонаЧетыре младшие бита R7
СпрайтыVRAM sprite attribute table
VRAM sprite pattern table
Установка режима Graphic4
БитM5 (R0)M4 (R0)M3 (R0)M2 (R1)M1 (R1)
Значение 0 1 1 0 0
Значения по умолчанию в MSX BASIC
Номер видеорежима 5
Макет экранной страницы 0x00000…0x069FF
Sprite patterns 0x07800…0x07FFF
Sprite attributes 0x07600…0x0767F
Sprite colors 0x07400…0x075FF

3.6.1. Макет экранной страницы

FIXME

The pattern layout table is a map of the screen (per screen image). Every byte location of the screen contains color codes for two dots. This is bitmap graphics mode, and there’s no pattern generator table.

Колонки (X)
Строки (Y) 0 1 2 3 255
0 0,0 1,0 2,0 3,0 255,0
1 0,1 1,1 2,1 3,1 255,1
X, Y
191 0,191 1,191 2,191 255,191 LN=0
211 0,211 1,211 2,211 255,211 LN=1
старший бит 7 6 5 4 3 2 1 0 младший бит
0 Код цвета для (0,0) Код цвета для (1,0) Адрес начала
1 Код цвета для (2,0) Код цвета для (3,0)
127 Код цвета для (254,0) Код цвета для (255,0)
128 Код цвета для (0,1) Код цвета для (1,1)
27134 Код цвета для (252,211) Код цвета для (253,211)
27135 Код цвета для (254,211) Код цвета для (255,211)

Pattern layout table base address is stored in register R#2, and corresponds to the cell (0, 0) in the picture above.

старший бит 7 6 5 4 3 2 1 0 младший бит
R2   (ТNT) 0 A16 A15 1 1 1 1 1 Таблица имён

3.6.2. Регистры цвета

FIXME

You can set color of the margin of the screen (backdrop color) specifying BD3…BD0 bits in register R#7. Note that bits TC3…TC0 of R#7 are ignored.

3.6.3. Спрайты

FIXME

Set the start address of the sprite attribute table in registers R5 and R11; set start address of the sprite pattern generator table in register R6. For details about sprites please refer to section Sprite mode 2

старший бит 7 6 5 4 3 2 1 0 младший бит
R5   (SAT) A14 A13 A12 A12 A10 A9 A8 A7 Таблица атрибутов спрайтов
R11 (SAT) 0 0 0 0 0 0 A16 A15 Старшие разряды SAT
R6   (SPT) 0 0 A16 A15 A14 A13 A12 A11 Таблица шаблонов спрайтов

3.6.4.Пример распределения видеопамяти

FIXME

Пример распределения видеопамяти для режима Graphic4

0x00000



Pattern name table
(256*192/2=24576 байт)
(256*212/2=27136 байт)
0x02000



0x04000


0x05FFF
192 lines
0x06000


0x069FF
212 lines
0x06A00


0x06FFF
0x07000


0x077FF
Sprite pattern table
(256*8=2048 байт)
0x00780


0x079FF
Sprite color table
(32*16=512 байт)
0x07A00


0x07A7F
Sprite attribute table
(32*4=128 байт)
0x07A80


0x07FFF
 
  …
 
Таким же образом можно выделить максимум 4 страницы, если к VDP подключено 128 Кбайт.
0x08000


0x1FFFF

3.7. Режимы Graphic5 (G5)

FIXME

Характеристики
Размер экрана, в точках (Ш×В)Значение бита LN регистра R9 определяет размер:
0 — 512×192
1 — 512×212
Pattern colors4 colors out of 512 (per screen)
Режим спрайтовSprite mode 2
Размер VRAM на экран32 Кбайта
Управление
Расположение шаблона экрана Имя таблицы шаблона
Цвета фонаЧетыре младшие бита R7
СпрайтыVRAM sprite attribute table
VRAM sprite pattern table
Установка режима Graphic5
БитM5 (R0)M4 (R0)M3 (R0)M2 (R1)M1 (R1)
Значение 1 0 0 0 0
Значения по умолчанию в MSX BASIC
Номер видеорежима 6
Макет экранной страницы 0x00000…0x069FF
Sprite patterns 0x07800…0x07FFF
Sprite attributes 0x07600…0x0767F
Sprite colors 0x07400…0x075FF

3.7.1. Макет экранной страницы

FIXME

The pattern layout table is a map of the screen (per screen image). Every byte location of the screen contains color codes for four dots. This is bitmap graphics mode, and there’s no pattern generator table.

Колонки (X)
Строки (Y) 0 1 2 3 511
0 0,0 1,0 2,0 3,0 511,0
1 0,1 1,1 2,1 3,1 511,1
X, Y
191 0,191 1,191 2,191 511,191 LN=0
211 0,211 1,211 2,211 511,211 LN=1
старший бит 7 6 5 4 3 2 1 0 младший бит
0 Код цвета для (0,0) Код цвета для (1,0) Код цвета для (2,0) Код цвета для (3,0) Адрес начала
1 Код цвета для (4,0) Код цвета для (5,0) Код цвета для (6,0) Код цвета для (7,0)
127 Код цвета для (508,0) Код цвета для (509,0) Код цвета для (510,0) Код цвета для (511,0)
128 Код цвета для (0,1) Код цвета для (1,1) Код цвета для (2,1) Код цвета для (3,1)
27135 Код цвета для (508,211) Код цвета для (509,211) Код цвета для (510,211) Код цвета для (511,211)

Pattern layout table base address is stored in register R#2, and corresponds to the cell (0, 0) in the picture above.

старший бит 7 6 5 4 3 2 1 0 младший бит
R2   (ТNT) 0 A16 A15 1 1 1 1 1 Таблица имён

3.7.2. Регистры цвета

FIXME

You can set color of the margin of the screen (backdrop color) specifying BD3…BD0 bits in register R#7. Note that bits TC3…TC0 of R#7 are ignored.

3.7.3. Спрайты

FIXME

Set the start address of the sprite attribute table in registers R#5 and R#11; set start address of the sprite pattern generator table in register R#6. For details about sprites please refer to section Sprite mode 2.

старший бит 7 6 5 4 3 2 1 0 младший бит
R5   (SAT) A14 A13 A12 A12 A10 1 1 1 Таблица атрибутов спрайтов
R11 (SAT) 0 0 0 0 0 0 A16 A15 Старшие разряды SAT
R6   (SPT) 0 0 A16 A15 A14 A13 A12 A11 Таблица шаблонов спрайтов

3.7.4. Hardware tiling function

FIXME

VDP can only display 4 solid colors in G5 mode however pixels are so small that combination of two pixels from the set of those 4 solid colors possible produces another visible color, a mixture of the applied two.

This feature is only available in G5 mode, and is applied to the sprites and to the screen border color. G5 has 512 pixels in its X-axis, but sprites’ X-coordinate is between 0 and 255. This means that for single sprite dot there’re two font pattern dots, and from forn pattern point of view sprite of 8*8 has size of 16*8.

SM2 sprite color table uses 4 bits for each line of sprite. For every dot in sprite pattern table defined as “1” in sprite image bitmap, lower two bits from this 4-bit set define color of odd pixels of the sprite, and higher two bits from this set define color of even pixels of the sprite.

In the example above imagine that palette color 1 is set to red (7, 0, 0) and color 3 set to blue (0, 0, 7).

FIXME FIXME

VDP может отображать только 4 сплошных цвета в режиме G5, однако пиксели настолько малы, что комбинация двух пикселей из набора этих 4 возможных сплошных цветов дает другой видимый цвет, смесь примененных двух.

Такое поведение характерно только в режиме G5 и применяется к спрайтам и цвету бордюра экрана, т.к. в этом режиме ширина экрана (ось X) 512 пикселей, но ширина таблицы спрайтов 256 пикселей (0…255). Это означает, что для одного пикселя спрайта есть два пикселя в таблице знакогенератора, а с точки зрения шаблона сивола, спрайт размером 8×8 имеет размер 16×8 пикселов. Таблица цветов спрайта в режиме спрайтов 2 использует 4 бита для каждой строки спрайта. Для каждого пиксела в таблице шаблонов спрайтов, определенной как 1 в битовой карте изображения спрайта, два младших бита из этого 4-битного набора определяют цвет нечетных пикселей спрайта, а два старших бита из этого набора определяют цвет четных пикселей спрайта.

В приведенном выше примере представьте, что цвет 1 палитры установлен на красный (7, 0, 0), а цвет 3 установлен на синий (0, 0, 7).

старший бит 7 6 5 4 3 2 1 0 младший бит старший бит 7 6 5 4 3 2 1 0 младший бит
Адрес Описание Адрес
0 ██ ██ Шаблон спрайта (8×8)Цвета спрайта 0 0 1 1 1 0
1 ██ ██ ██ ██ ██ ██ 0 0 1 1 1 1
2██ ██ ██ ██ ██ ██ 0 0 1 1 1 2
3██ ██ ██ ██ ██ ██ 0 0 1 1 1 3
4██ ██ ██ ██ ██ ██ 0 0 1 1 1 4
5██ ██ ██ ██ ██ ██ 0 0 1 1 1 5
6 ██ ██ ██ ██ ██ ██ 0 0 1 1 1 6
7 ██ ██ 0 0 1 1 1 7
Фактическое представление спрайта на экране в режиме G5
7 6 5 4 3 2 1 0
















































































Восприятие изображения спрайта в режиме G51)
7 6 5 4 3 2 1 0

















































































Пример
Открыть в WebMSX

3.7.5.Пример распределения видеопамяти

FIXME

Пример распределения видеопамяти для режима Graphic5:

0x00000



Pattern name table
(512*192/4=24576 байт)
(512*212/4=27136 байт)
0x02000



0x04000


0x05FFF
192 lines
0x06000


0x069FF
212 lines
0x06A00


0x06FFF
0x07000


0x077FF
Sprite pattern table
(256*8=2048 байт)
0x00780


0x079FF
Sprite color table
(32*16=512 байт)
0x07A00


0x07A7F
Sprite attribute table
(32*4=128 байт)
0x07A80


0x07FFF
 
  …
 
Таким же образом можно выделить максимум 4 страницы, если к VDP подключено 128 Кбайт.
0x08000


0x1FFFF

3.8. Режимы Graphic6 (G6)

FIXME

Характеристики
Размер экрана, в точках (Ш×В)Значение бита LN регистра R9 определяет размер:
0 — 512×192
1 — 512×212
Pattern colors16 colors out of 512 (per screen)
Режим спрайтовSprite mode 2
Размер VRAM на экран64 Кбайта
Управление
Расположение шаблона экрана Имя таблицы шаблона
Цвета фонаЧетыре младшие бита R7
СпрайтыVRAM sprite attribute table
VRAM sprite pattern table
Установка режима Graphic5
БитM5 (R0)M4 (R0)M3 (R0)M2 (R1)M1 (R1)
Значение 1 0 1 0 0
Значения по умолчанию в MSX BASIC
Номер видеорежима 7
Макет экранной страницы 0x00000…0x0D3FF
Sprite patterns 0x0F000…0x07FFF
Sprite attributes 0x0FA00…0x0FA7F
Sprite colors 0x0F800…0x0F9FF

3.8.1. Макет экранной страницы

FIXME

The pattern layout table is a map of the screen (per screen image). Every byte location of the screen contains color codes for two dots. This is bitmap graphics mode, and there’s no pattern generator table.

Колонки (X)
Строки (Y) 0 1 2 3 511
0 0,0 1,0 2,0 3,0 511,0
1 0,1 1,1 2,1 3,1 511,1
X, Y
191 0,191 1,191 2,191 511,191 LN=0
211 0,211 1,211 2,211 511,211 LN=1
старший бит 7 6 5 4 3 2 1 0 младший бит
0 Код цвета для (0,0) Код цвета для (1,0) Адрес начала
1 Код цвета для (2,0) Код цвета для (3,0)
255 Код цвета для (510,0) Код цвета для (511,0)
256 Код цвета для (0,1) Код цвета для (1,1)
54270 Код цвета для (508,211) Код цвета для (509,211)
54271 Код цвета для (510,211) Код цвета для (511,211)

Pattern layout table base address is stored in register R#2, and corresponds to the cell (0, 0) in the picture above. This only one bit A16 controls the video page being displayed.

старший бит 7 6 5 4 3 2 1 0 младший бит
R2   (ТNT) 0 0 A16 2) 1 1 1 1 1 Таблица имён

3.8.2. Регистры цвета

FIXME

You can set color of the margin of the screen (backdrop color) specifying BD3…BD0 bits in register R#7. Note that bits TC3…TC0 of R#7 are ignored.

3.8.3. Спрайты

FIXME Set the start address of the sprite attribute table in registers R#5 and R#11; set start address of the sprite pattern generator table in register R#6. For details about sprites please refer to section Sprite mode 2.

старший бит 7 6 5 4 3 2 1 0 младший бит
R5   (SAT) A14 A13 A12 A12 A10 1 1 1 Таблица атрибутов спрайтов
R11 (SAT) 0 0 0 0 0 0 A16 A15 Старшие разряды SAT
R6   (SPT) 0 0 A16 A15 A14 A13 A12 A11 Таблица шаблонов спрайтов

3.8.4.Пример распределения видеопамяти

FIXME

Пример распределения видеопамяти для режима Graphic6:

0x00000



Pattern name table
(512*192/2=49152 байт)
(512*212/2=54272 байт)
0x04000



0x08000


192 lines
0x0C000



212 lines
0x0D400


0x0F000
0x0F000


0x0F7FF
Sprite pattern table
(256*8=2048 байт)
0x0F800


0x0F9FF
Sprite color table
(32*16=512 байт)
0x0FA00


0x00FA7F
Sprite attribute table
(32*4=128 байт)
0x07A80


0x0FFFF
 
  …
 
Таким же образом можно выделить максимум 4 страницы, если к VDP подключено 128 Кбайт.
0x10000


0x1FFFF

3.9. Режимы Graphic7 (G7)

FIXME

Характеристики
Размер экрана, в точках (Ш×В)Значение бита LN регистра R9 определяет размер:
0 — 256×192
1 — 256×212
Pattern colors256 colors (per screen)
Режим спрайтовSprite mode 2
Размер VRAM на экран64 Кбайта
Управление
Расположение шаблона экрана Имя таблицы шаблона
Цвета фонаЧетыре младшие бита R7
СпрайтыVRAM sprite attribute table
VRAM sprite pattern table
Установка режима Graphic5
БитM5 (R0)M4 (R0)M3 (R0)M2 (R1)M1 (R1)
Значение 1 1 1 0 0
Значения по умолчанию в MSX BASIC
Номер видеорежима 8
Макет экранной страницы 0x00000…0x0D3FF
Sprite patterns 0x0F000…0x0F7FF
Sprite attributes 0x0FA00…0x0FA7F
Sprite colors 0x0F800…0x0F9FF

3.9.1. Макет экранной страницы

FIXME

The pattern layout table is a map of the screen (per screen image). Every byte location of the screen contains color code for one single dot. This is bitmap graphics mode, and there’s no pattern generator table.

Колонки (X)
Строки (Y) 0 1 2 3 255
0 0,0 1,0 2,0 3,0 255,0
1 0,1 1,1 2,1 3,1 255,1
X, Y
191 0,191 1,191 2,191 255,191 LN=0
211 0,211 1,211 2,211 255,211 LN=1
старший бит 7 6 5 4 3 2 1 0 младший бит
0 Зелёный (0,0) Красный (0,0) Синий (0,0) Адрес начала
1 Зелёный (1,0) Красный (1,0) Синий (1,0)
255 Зелёный (255,0) Красный (255,0) Синий (255,0)
256 Зелёный (0,1) Красный (0,1) Синий (0,1)
54270 Зелёный (254,211) Красный (254,211) Синий (254,211)
54271 Зелёный (254,211) Красный (254,211) Синий (254,211)

Pattern layout table base address is stored in register R#2, and corresponds to the cell (0, 0) in the picture above. This only one bit A16 controls the video page being displayed.

старший бит 7 6 5 4 3 2 1 0 младший бит
R2   (ТNT) 0 0 A16 3) 1 1 1 1 1 Таблица имён

3.9.2. Регистры цвета

FIXME

You can set color of the margin of the screen (backdrop color) specifying all the 8 bits in register R#7 (256 possible colors in total).

старший бит 7 6 5 4 3 2 1 0 младший бит
R7DB7 DB6 DB5 DB4 BD3 BD2 BD1 BD0 Цвет текста и полей экрана
Цвет бордюра Цвет фона экрана

3.9.3. Спрайты

FIXME

Set the start address of the sprite attribute table in registers R#5 and R#11; set start address of the sprite pattern generator table in register R#6. For details about sprites please refer to section Sprite mode 2.

старший бит 7 6 5 4 3 2 1 0 младший бит
R5   (SAT) A14 A13 A12 A12 A10 1 1 1 Таблица атрибутов спрайтов
R11 (SAT) 0 0 0 0 0 0 A16 A15 Старшие разряды SAT
R6   (SPT) 0 0 A16 A15 A14 A13 A12 A11 Таблица шаблонов спрайтов

3.9.4.Пример распределения видеопамяти

FIXME

Пример распределения видеопамяти для режима Graphic7:

0x00000



Pattern name table
(512*192/2=49152 байт)
(512*212/2=54272 байт)
0x04000



0x08000



192 lines
0x0C000



212 lines
0x0D400



0x0F000


0x0F7FF
Sprite pattern table
(256*8=2048 байт)
0x0F800


0x0F9FF
Sprite color table
(32*16=512 байт)
0x0FA00



0x0FA7F
Sprite attribute table
(32*4=128 байт)
0x0FA80



0x0FFFF
 
  …
 
Таким же образом можно выделить максимум 2 страницы, если к VDP подключено 128 Кбайт.
0x10000


0x1FFFF

4. Команды

4.1. Типы команд

FIXME

Commands are used to perform specific complex operations on the video memory, and thus on the image displayed on the screen. See the list of available commands in the table below.

Command nameDestinationSourceUnitMnemonic CM3 CM2 CM1 CM0
High-speed moveVRAMCPUByteHMMC* 1 1 1 1
VRAMVRAMYMMM* 1 1 1 0
VRAMVRAMHMMM 1 1 0 1
VRAMVDPHMMV 1 1 0 0
Logical moveVRAMCPUDotLMMC 1 0 1 1
CPUVRAMLMCM 1 0 1 0
VRAMVRAMLMMM 1 0 0 1
VRAMVRAMLMMV 1 0 0 0
LineVRAMVDPLINE 0 1 1 1
SearchVRAMVDPSRCH 0 1 1 0
PsetVRAMVDPPSET 0 1 0 1
PointVDPVRAMPOINT 0 1 0 0
Invalid 0 0 1 1
0 0 1 0
0 0 0 1
Stop STOP 0 0 0 0

*In G4 and G6 modes, the lower one bit, and in G5 mode, the lower two bits are lost in registers related to X-coordinate (DX, NX)

The process of execution of VDP commands consists of several steps:

  • Ensure that current mode is G4 – G7. In other modes result is not guaranteed
  • Check the bit 0 (CE, command execution) flag in status register S#2 to be 0. If it’s 1, then previous command is in progress and program needs to wait for completion or issue STOP command
  • Set necessary parameters for command execution in registers R#32 to R#45 as
  • necessary. It is easy to write whole the set of values to registers using indirect
  • register addressing mode with auto-increment turned on
  • Write command code to the R#46 (CMR, command register)
  • Wait till command execution is completed by checking bit 0 (CE) of S#2 to be 0
  • If current command needs to be aborted, execute STOP command

4.2. Page concept

FIXME

As we have already seen, programmer can have several options to place tables in the video memory by altering base address registers. In some modes there’re more options (like in Text 1 there’re 32 options and in GRAPHICS7 there’re only 2 options). This introduces a concept of the page defined by where VDP currently operates and where it takes information for picture display from.

Page concept is stricter in relation to VDP commands. VRAM access is defined by X and Y coordinates, and not by physical address within VRAM. Coordinate X is specified by 9 bits, and can be in range of 0…511, coordinate Y is specified by 10 bits, and can be in range of 0…1023. See the table below for VRAM paging in various video modes.

Режим
Graphic4
Адрес Режим
Graphic5
(0, 0) (255, 0) 0x0000 (0, 0) (511, 0)
Страница 0 Страница 0
(0, 255) (255, 255)(0, 255) (511, 255)
(0, 256) (255, 256) 0x08000 (0, 256) (511, 256)
Страница 1 Страница 1
(0, 511) (255, 511)(0, 511) (511, 511)
(0, 512) (255, 512) 0x10000 (0, 512) (511, 512)
Страница 2 Страница 2
(0, 767) (255, 767)(0, 767) (511, 767)
(0, 768) (255, 768) 0x18000 (0, 768)) (511, 768)
Страница 3 Страница 3
(0, 1023) (255, 1023) 0x1FFFF (0, 1023) (511, 1023)
Режим
Graphic7
Адрес Режим
Graphic6
(0, 0) (255, 0) 0x0000 (0, 0) (511, 0)
Страница 0 Страница 0
(0, 255) (255, 255)(0, 255) (511, 255)
(0, 256) (255, 256) 0x10000 (0, 256) (511, 256)
Страница 1 Страница 1
(0, 511) (255, 511) 0x1FFFF (0, 511) (511, 511)

In G4 and G5 modes there’re four pages; in G6 and G7 modes there’re only two pages. For example, setting Y coordinate in G5 mode to 658 will automatically choose page #2 with specific translated initial VRAM address.

Note that VDP is capable of displaying maximum of 212 lines, and programmer has an option to use register R#23 to set visible screen window position within active page.

4.3. Logical operations

FIXME

When executing logical commands LINE, PSET and LOGICAL MOVE, it is possible to define logical operation to be done on the color of the pixels. The four bits identifying the logical operation should be written in lower four bits of R#46 (command register) together with the command code.

NameOperationLO3LO2LO1LO0
IMPDC=SC0000
ANDDC=SC&DC0001
ORDC=SC|DC0010
XORDC=SC^DC0011
NOTDC=!SC0100
Invalid0101
0110
0111
TIMPIf SC=0 then DC=DC else DC=SC1000
TANDIf SC=0 then DC=DC else DC=SC&DC1001
TORIf SC=0 then DC=DC else DC=SC|DC1010
TXORIf SC=0 then DC=DC else DC=SC^DC1011
TNOTIf SC=0 then DC=DC else DC=!SC1100
Invalid1101
1110
1111

*SC = source color code

*DC = destination color code

4.6. States of the registers after command execution

FIXME

Setting up VDP registers for command execution is a significant task for programmer and CPU, and it will be wise to use already existing values in the registers for the next command execution or for further work with video memory. For this purpose programmer should know the resulting states of most important VDP registers. Please see the table below. Note that if program is going to use sequence of the VDP commands which use resulting values of registers from previous commands, it is important to disable interrupts so that interrupt handler routing would not accidentally change values in VDP registers and thus break the whole command sequence. CMR H is a higher nibble of the command register R46; CMR L is a lower nibble of the command register R46. ARG is an argument register R45.

The resulting values of SY*, DY* and NY* are in dots and can be calculated using equations below:

  • If DIY=0 then SY*=SY+N; DY*=DY+N
  • If DIY=1 then SY*=SY-N; DY*=DY-N
  • NY*=NY-N

LINE command = → if MAJ=0 then N=N-1 ????

SX SY DX DY NX NY CLR CMR H CMR L ARG
HMMC # 0
YMMM # 0
HMMM # 0
HMMV # 0
LMMC # 0
LMCM # 0
LMMM # 0
LMMV # 0
LINE 0
SRCH 0
PSET 0
POINT 0

Легенда:

Unchanged
Coordinate at the command end (SY*, DY*) or color code
# Count (NY*) when the end of the screen was detected

Ссылки

1)
на экране CRT монитора
2) , 3)
Note that in G6 and G7 modes location of bit A16 differs from its location in other modes
msx/yamaha_v9938/yamaha_v9938.txt · Последние изменения: 2023-06-27 19:19 — GreyWolf