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

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


msx:yamaha_v9938:yamaha_v9938

Yamaha V9938 (VDP)

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

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

Размер экрана Число цветов Объём видеопамяти на страницу
(Кбайт)
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 и др.), для указанных выше функций.

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

На основе V9938 MSX-VIDEO Technical Data Book Programmer’s Guide (переписано и отредактировано Евгением Брычковым), редакция 1.01d от 2020-09-06, оригинал.

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

Содержание

Определения

АтрибутСвойство объекта, которое определяет как объект выглядит на экране. Атрибутом может быть цвет, положение объекта или значение определённого цвета пикселя.
Задний планОбъект или свойство, которое воспринимается как фоновое по отношению к другому свойству или объекту. Например, для символа, отображаемого на экране, говорят, что пиксели его изображения имеют цвет переднего плана, а другие пиксели — цвет фона. В случае спрайтов можно сказать, что они появляются на переднем плане по отношению к шаблонам шрифтов, поскольку спрайты перекрывают изображения шрифта.
СтолкновениеГоворят, что спрайты сталкиваются, когда их точки с цветовым кодом 1 (проще говоря — точки, обозначенные двоичной единицей в их таблице генератора спрайтов) перекрываются. В некоторых случаях такое поведение может быть изменено в пользу или смешивания цветов спрайтов для получения псевдо–цветных спрайтов.
ЦветСвойство пикселя на экране. Цвет пикселя может поступать из различных источников: из глобального регистра цветов, из таблицы цветов шаблона или из таблицы цветов спрайта. Цвета также могут быть закодированы в регистрах палитры путем настройки красного, зеленого и синего компонентов — в этом случае, если таблица цветов шаблонов и спрайтов остается неизменной, фактические цвета, связанные с ними, могут отличаться
КомандаФункция, выполняемая средствами VDP, независимо от ЦП, параллельно с ним, или совместно, для достижения большей производительности.
Расширение VRAMЧасть ОЗУ может быть использована для хранения данных регистров ввода/вывода и не является необходимой для правильной работы VDP. Максимальный размер ОЗУ расширения — 64 Кбайт. Из–за особого назначения этой оперативной памяти она редко используется в программах.
Макет (layout)Карта шаблонов или спрайтов, которые определяют, где отображать конкретный объект или какой объект должен отображаться в определенной позиции. В случае шаблонов (шрифта) Таблица генератора шаблонов (Pattern generator Table) определяет внешний вид шрифта, но для отображения этих шаблонов в определенном месте программист должен поместить его номер в Таблицу макетов шаблонов (Pattern Layout Table) в соответствующем месте.
ОбъектШаблон шрифта или спрайт.
Шаблон (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запись и чтение 0x98
1 0 1 Регистр состояниячтение 0x99
Адрес 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 Кбайт плюс расширение ОЗУ объемом 64 Кбайта. карта памяти показана ниже.

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

128 Кбайт
0x1FFFF




0x10000
0x0FFFF




0x00000
Расширение ОЗУ
(для данных регистров ввода/вывода)

64 Кбайта

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

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

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

Шаг 2: Установка счетчика адреса (биты A16…A14)
VDP может логически адресовать 128 Кбайт в диапазоне адресов 0x00000–0x1FFFF через 16–ти битные адреса, задаваемые через 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. Регистры управления

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

2.1.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.1.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.1.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 Цвет текста и мигания фона
Цвет (часть 1) Цвет (часть 0)

В режиме 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.1.4. Регистр настройки дисплея

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

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

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

Значение
7 1 0 15 8
Горизонталь Лево Центр Право
Вертикаль Верх Низ
старший бит 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 верх виртуального экрана появляется внизу видимого экрана. Смотри изображения ниже:

Исходное изображение* в режиме Graphic1 Сдвиг экрана*, горизонтальная линия сканирования равна 256 точек, режим Graphic1, верхняя часть появляется снизу Режим Text1, горизонтальная линия сканирования равна 240 точек, мусор в не инициализированной части памяти
старший бит 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.


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

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

Регистры доступа это регистры, которые используются для доступа к другим регистрам 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, значение в этом регистре автоматически инкрементируется.

старший бит 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.1.6. Регистры команд

Следующие регистры команд используются при выполнении команды 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 Регистр аргументов
R46 CM3 CM2 CM1 CM0 LO3 LO2 LO1 LO0 Регистр команд

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

Регистры состояния являются регистрами только для чтения и используются для оценки состоянии VDP. Ниже рассмотрен каждый регистр.

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

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

3.1. Режим Text1

FIXME

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

3.1.2. Таблица генератора шаблонов

FIXME

Таблица генератора шаблонов — это место в VRAM, где хранятся шаблоны (шрифт). Каждый шаблон имеет номер от PN0 до PN255. Шрифт, отображаемый на экране для каждого шаблона, состоит из 8 байт, при этом отображается 6 старших бит, а 2 младших бита не отображаются. Адрес таблицы генератора шаблонов хранится в регистре R4.

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

старший бит 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

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

Колонки (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 цвет пикселей, для которых задана 1 в таблице генератора шаблонов, биты BD3…BD0 определяют цвет пикселей, для которых задан 0 в таблице генератора шаблонов, а также цвет полей экрана.

Примечание. Цвет границы экрана такой же, как и цвет фона в режиме Text1.

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

FIXME

0x00000



0x003BF
Таблица макетов шаблонов
0
старший бит 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
старший бит 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
старший бит 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
старший бит 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
Размер экрана, в шаблонах (Ш×В)80×24, если в R9 бит LN=0
80×26.5, если в R9 бит LN=1
Цвета шаблонаДва цвета из 512 (на экран) или четыре при использовании мигания
Размер VRAM на экран8 Кбайт
Управление
Шаблон шрифтаТаблица генератора шаблонов
Расположение шаблона экрана Имя таблицы шаблона
Цвет (часть 1)Четыре старшие бита R7
Цвет (часть 0)Четыре младшие бита R7
Цвета фона
Blinking pattern color code 1Четыре старшие бита R12
Blinking pattern color code 0Четыре младшие бита R12
Установка режима
БитM5 (R0)M4 (R0)M3 (R0)M2 (R1)M1 (R1)
Значение 0 1 0 0 1

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

ЗначениеЧисло строк
024
126.5
Системные значения по умолчанию
Номер экрана в MSX BASICSCREEN 0
Ширина1…80
Таблица генератора шаблонов0x01000…0x017FF
Таблица макетов шаблонов0x00000…0x0077F
0x00000…0x0086F
Таблица шаблонов цвета0x00800…0x008EF
0x00800…0x0090D

3.2.2. Pattern Generator Table

FIXME

Organization of pattern generator table is the same as in Text1 mode. Register R4 defines base address of the table.

3.2.3. Pattern layout table settings

FIXME The pattern layout table is a map of the screen (per screen image). Every location of the screen contains code of the pattern displayed at respective location. This table has 80×27 (2160) locations where defined patterns can be displayed. Pattern layout table base address is stored in register R2 (see below), and corresponds to the cell (0, 0) with address 0 in the picture below. Note that if LN bit of R9 is set to 1, then 26 lines are displayed, plus an upper half of 27 th pattern line is displayed.

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

Screen mapping of pattern layout table is provided below.

Колонки (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

3.2.4. Color table settings

FIXME

Each position on the screen has separate bit for the blinking attribute, and if this bits is set to 1, blinking will be applied to the pattern placed in this area in the pattern layout table. Table start address is set in registers R3 and 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

Screen mapping of color table is provided below.

старший бит 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.5. Color register settings

FIXME

Color settings are located in the registers R7 and R12.

Bits TC3…TC0 of R7 specify pattern color code of the pixels identified as “1” in the bitmap values of pattern generator table, bits BD3…BD0 specify pattern color code of the pixels identified as “0” in the bitmap values of pattern generator table as well as screen border color. Alternate blinking color is set in R12.

Note: screen border color is the same as the pattern backdrop color in Text2 mode.

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

FIXME

Color codes set in registers R7 and R12 will be alternately displayed; programmer can control period of blinking (time on and time off) through register R13.

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

Значения времени для NTSC представлены в таблице ниже.

Двоичное числоВремя (мс)
0 0 0 00
0 0 0 1166.9
0 0 1 0333.8
0 0 1 1500.6
0 1 0 0667.5
0 1 0 1834.4
0 1 1 01001.3
0 1 1 11168.2
1 0 0 01335.1
1 0 0 11509.9
1 0 1 01668.8
1 0 1 11835.7
1 1 0 02002.6
1 1 0 12169.5
1 1 1 02336.3
1 1 1 12503.2

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

FIXME

0x00000



0x00870
Таблица макетов шаблонов
0
старший бит 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
старший бит 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
старший бит 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



0x03800
Таблица генератора шаблонов
1
 
  …
 
0x04000



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

3.3. Режим MultiColor (MC)

FIXME

Характеристики
Размер экрана, в цветных блоках (Ш×В)64×48
Цвета блоков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 BASICSCREEN 3
Таблица генератора шаблонов0x00000…0x017FF
Таблица макетов шаблонов0x00800…0x00AFF
0x00000…0x0086F
Шаблоны спрайтов0x03800…0x03FFF
Атрибуты спрайтов0x01B00…0x01B7F

3.3.1. Pattern Generator Table

FIXME

Each pattern is made up of four color blocks. These patterns are of size of 8×8 for the screen display of 256×192 dots.

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

For each block A, B, C, and D sixteen colors can be specified. Two bytes are used for each pattern.

старший бит 7 6 5 4 3 2 1 0 младший бит
Color code A Color code B
Color code C Color code D

There’re four color blocks (8 bytes) for each pattern layout location. Specific color block is used to display depending on the y-coordinate.

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

Start of the pattern generator table should be set in register R4.

3.3.2. Pattern layout table settings

FIXME

The pattern layout table is a map of the screen (per screen image), containing one byte for each screen location. Each byte specifies unique pattern number. Start of the pattern name table should be set in register 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. Color register settings

FIXME

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

3.3.4. Sprite settings

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 R#6. For details about sprites please refer to section “Sprite mode 1”.

3.3.5. Example of VRAM allocation for MultiColor mode

FIXME

0x00000



0x00400
Sprite generator table
0
0x00400



0x00700
Таблицу макетов шаблонов
0
0x00700



0x00780
Sprite attribute table
0
0x08000



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




0x1FFFF

3.4. Режим Graphic1 (G1)

FIXME

Характеристики
Размер шаблона с точках (Ш×В)8×8
Число шаблонов256
Размер экрана, в шаблонах (Ш×В)32×24 (256×192 точки)
Цвета шаблона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 BASICSCREEN 1
Таблица генератора шаблонов0x00000…0x017FF
Таблица макетов шаблонов0x01800…0x01AFF
Pattern colors0x02000…0x0201F
Sprite patterns0x03800…0x03FFF
Sprite attributes0x01B00…0x01B7F

3.4.1. Pattern Generator Table

FIXME

The pattern generator table is a location in VRAM that stores patterns (font). Each pattern has number from PN0 to PN255. The font displayed on the screen for each pattern is constructed from 8 bytes, with all 8 bits of each byte displayed. Pattern generator table base is stored in the register R4.

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

старший бит 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. Pattern layout table settings

FIXME

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 32*24 (767) locations 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.

Колонки (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. Color register settings

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.4.4. Color table settings

FIXME

Table start address is set in registers R3 and 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

Color table size is 32 bytes, each byte organized in the same way as register R#7 (FC is foreground color, BC is background color). Patterns 0…7 are assigned the first color from color table, patterns 8…15 are assigned second color from the color table, etc, and patterns F8h…FFh are assigned 31 st color from the color table. Color table map is provided below.

старший бит 7 6 5 4 3 2 1 0 младший бит
0 FC3 FC2 FC1 FC0 BC3 BC2 BC1 BC0 Color for patterns 0…7
1 FC3 FC2 FC1 FC0 BC3 BC2 BC1 BC0 Color for patterns 8…15
31 FC3 FC2 FC1 FC0 BC3 BC2 BC1 BC0 Color for patterns 0xF8…0xFF

3.4.5. Sprite settings

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 1”.

3.4.6. Example of VRAM allocation for Graphic1 mode

FIXME

0x00000



0x00400
Sprite generator table
0
0x00400



0x00700
Таблицу макетов шаблонов
0
0x00700



0x00780
Sprite attribute table
0
0x08000



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




0x1FFFF

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

FIXME

Характеристики
Размер шаблона с точках (Ш×В)8×8
Число шаблонов768 (по 256 на 1⁄3 экрана)
Размер экрана, в шаблонах (Ш×В)32×24 (256×192 точки)
Цвета шаблона16 цветов из 512 (на экран)
Режим спрайтов *Sprite mode 1 (Graphic2)
Sprite mode 2 (Graphic3)
Размер 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
Системные значения по умолчанию Graphic2 Graphic3
Номер экрана в MSX BASIC SCREEN 2 SCREEN 4
Таблица генератора шаблонов 0x00000…0x017FF
Таблица макетов шаблонов 0x01800…0x01AFF
Pattern colors 0x02000…0x037FF
Sprite patterns 0x03800…0x03FFF
Sprite attributes0x01B00…0x01B7F0x01E00…0x01E7F
Sprite colors0x01C00…0x01DFF

3.5.1. Screen map and pattern tables

FIXME

Unlike in other modes, in this mode screen is divided vertically into three logical parts. Every part has its own pattern generator and pattern color tables, but all of them share the same pattern layout table, one after another. Screen map is provided below.

Колонки (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

Ссылки

msx/yamaha_v9938/yamaha_v9938.txt · Последние изменения: 2021-07-02 09:17 — GreyWolf