МОП-технология 8563

Контроллер видеодисплея 8563 ( VDC ) представлял собой интегральную схему , произведенную MOS Technology . Он использовался в компьютере Commodore 128 (C128) для создания 80-колоночного (640 × 200 пикселей ) RGB- видеодисплея, работающего вместе с VIC-II , который поддерживал графику, совместимую с Commodore 64 . В моделях DCR (а также в некоторых моделях D) C128 использовался более поздний и более технически совершенный контроллер 8568 [D] VDC .
История и характеристики [ править ]
Первоначально предназначенный для запланированного (но не выпущенного) бизнес-компьютера на базе UNIX на базе Zilog Z8000 , компания Commodore спроектировала VDC в несколько прототипов машин. Из них только Commodore 128 когда-либо производился. В отличие от более ранних видеочипов MOS, таких как популярный VIC-II, VDC имел выделенную видеопамять, 16 килобайт (16 384 байт; с возможностью расширения до 64 килобайт, 65 536 байт) в исходном или «плоском» C128 и 64 килобайта в C128DCR . Эта оперативная память не имела прямого доступа к микропроцессору .
Производить 8563 было труднее, чем большую часть остальной линейки MOS Technology, и начальная производительность была очень низкой. Первые устройства также имели серьезные проблемы с надежностью и имели тенденцию к саморазрушению из-за перегрева. [1] Кроме того, в VDC были проблемы с синхронизацией, которые приводили к сбоям в операциях косвенной загрузки и сохранения в его регистрах.
Официально VDC был только текстовым чипом, хотя внимательное чтение технической литературы MOS Technology, предоставленной первым разработчикам C128, показало, что растрового изображения возможен режим с высоким разрешением — он просто не был описан ни в одном документе. деталь. BASIC 7.0 , встроенный язык программирования C128, поддерживал только графику высокого разрешения в режиме 40 столбцов через устаревший чип VIC-II.

режим VDC Вскоре после выпуска C128 растровый был подробно описан в книге Data Becker «Commodore 128 - Das große GRAFIK-Buch» (опубликованной в конце 1985 года в США компанией Abacus Software ) и в программе на языке ассемблера. была предоставлена немецкими авторами Клаусом Лёффельманном и Дитером Вюллерсом, в которой можно было устанавливать или очищать любой пиксель или, используя BASIC для выполнения необходимых вычислений, генерировать растровые геометрические фигуры на 80-колоночном экране. [2] В феврале 1986 года, менее чем через год после Commodore 128 выпуска RUN , журнал опубликовал статью « Ultra Hi-Res Graphics », статью, описывающую растровый режим VDC и включающую программу ввода (написанную на 8502 языке ассемблера ), которая расширяла возможности Возможности BASIC 7.0 по поддержке графики высокого разрешения 640×200 с использованием 8563. [1] Авторы Лу Уоллес и Дэвид Дарус позже разработали утилиту Ultra Hi-Res в коммерческий пакет BASIC 8 . Одна из самых популярных сторонних утилит для C128, она предлагала более продвинутые возможности VDC с высоким разрешением широкой аудитории программистов.
Компания Commodore наконец предложила полную официальную документацию по VDC в Справочном руководстве программиста Commodore 128 . Режимы растрового изображения VDC широко использовались в версии C128 GEOS операционной системы .
В VDC не хватало возможностей создания спрайтов , что ограничивало его использование в игровых приложениях. Тем не менее, он содержал возможности копирования для автономного копирования небольших блоков памяти в выделенной видеопамяти. Пока VDC выполняет такое копирование, системный ЦП может продолжать выполнение кода при условии, что до завершения копирования не будет предпринято никаких других попыток доступа к VDC. Эти функции использовались ПЗУ экранного редактора C128 для быстрой прокрутки или очистки разделов экрана.
Технические характеристики [ править ]
- Выход RGBI IBM CGA (RGB плюс интенсивность), совместимый со стандартом видео . *
- Адресное пространство размером 16 или 64 килобайта для памяти дисплея, формы символов и атрибутов дисплея (выделенное, отдельно от системной памяти).
- Разрешение видео до 720×700 пикселей в чересстрочном режиме (максимум при 64 кбайт видеопамяти). Возможны другие размеры изображения, в зависимости от потребностей программиста, например, 640 × 200 с чересстрочной разверткой, 640 × 400 с чересстрочной разверткой и т. д.
- разрешение текста 80 × 25 символов (по умолчанию в ядре C128); возможны другие размеры, например 80 × 50 или 40 × 25.
- 8 цветов по 2 интенсивности.
* Это относится только к моделям C128 с частотой 60 Гц, США. Машины C128 с частотой 50 Гц выдают сигнал с вертикальным обновлением 50 Гц. Хотя большинство мониторов CGA не соответствовали стандарту CGA, они могли без проблем отображать сигнал частотой 50 Гц. Однако некоторые мониторы либо не смогли разрешить сигнал, либо сумели его разрешить, но рано или поздно их схемы отклонения выходили из строя из-за электрического или термического напряжения и требовали ремонта.
Программирование [ править ]
Обращение к внутренним регистрам VDC и выделенной видеопамяти должно осуществляться косвенным путем. Сначала программа должна сообщить VDC, к какому из 37 внутренних регистров необходимо получить доступ. Затем программа должна дождаться, пока VDC будет готов к доступу, после чего можно будет выполнить чтение или запись в выбранный внутренний регистр. Следующий ассемблерный код типичен для чтения регистра:
ldx #regnum ;VDC register to access
stx $d600 ;write to control register
loop bit $d600 ;check bit 7 of status register
bpl loop ;VDC not ready
lda $d601 ;read from VDC register
...
Следующий код типичен для операции записи в регистр:
ldx #regnum ;VDC register to write to
stx $d600 ;write to control register
loop bit $d600 ;check bit 7 of status register
bpl loop ;VDC not ready
sta $d601 ;write to VDC register
...
То же самое возможно и на языке BASIC , вызывая определенные процедуры KERNAL :
Этот код типичен для чтения регистра VDC, где ⟨ регистр ⟩ — это число от 0 до 36, как показано ниже.
BANK15
...
SYS DEC("CDDA"),, register : RREG VDC
REM $ccda aka 52698 in decimal
PRINT VDC
...
этот код типичен для записи в регистр VDC, где ⟨ регистр ⟩ это число от 0 до 36, а ⟨ значение ⟩ это число от 0 до 255, которое вы хотите поместить в этот регистр.
BANK15
...
SYS DEC("CDCC"), value, register
REM $ccdc aka 52684 in decimal
...
Из-за этого несколько громоздкого метода управления VDC максимально возможная частота кадров в растровом режиме обычно слишком низкая для аркадных видеоигр, в которых требуется битовая обработка дисплея.
В стандартном текстовом режиме VDC ведет себя так же, как VIC-II, за исключением того, что у него 2 КБ экранной памяти вместо 1 КБ. Конфигурация по умолчанию при включении питания помещает память экрана в $0-$7FF
и
цветовая память на $800-$9FF
и их можно перемещать в любое место памяти VDC, если она находится на границе 2 КБ. Атрибуты обрабатываются аналогично режиму высокого разрешения VIC-II с глобальным цветом фона и цветом переднего плана каждого символа, установленным индивидуально для каждой цветовой оперативной памяти. Помимо данных о цвете, последний также содержит данные атрибутов для каждого символа. Бит 4 заставляет символ мигать, если он включен, бит 5 создает подчеркнутые символы, а бит 6 инвертирует растровый шаблон символа. Бит 7 включает альтернативный набор символов. VDC может использовать до 512 символов. Если для данного символа включен флаг альтернативного символа, шаблон символа будет составлен из символов 256–511. Таким образом, если отображается символ 65, при включении флага альтернативного символа вместо него будет отображаться символ 321. Флаг альтернативного символа обычно используется, когда установлен режим верхнего/нижнего регистра — флаг включен для всех положений экрана VDC, в результате чего набор символов верхнего/нижнего регистра и его инверсные видеоверсии отображаются вместо набора символов верхнего/нижнего регистра/графики.
VDC не использует символьное ПЗУ, вместо этого шаблоны символьного ПЗУ VIC-II просто копируются в ОЗУ VDC как часть инициализации питания C128, включая шаблоны для инвертированных видеосимволов, хотя VDC способен инвертировать символы аппаратно. Для хранения шаблонов символов требуется 16 байт вместо 8, поскольку VDC имеет регулируемую высоту символов. Поскольку экран состоит из 25 строк, на практике высота символов ограничена 8 строками, что означает, что половина пространства для символьных данных остается неиспользованной и тратится впустую. Конфигурация по умолчанию при включении питания помещает символьные данные в $2000-$3FFF
. $2000-$23FF
содержать шаблоны для прописных/графических символов, $2C00-$33FF
символы верхнего/строчного регистра, в то время как $2400-$2BFF
и $3400-$3FFF
содержат обратные видеошаблоны для каждого набора. Пользователь может свободно определять любые собственные символы и отображать их в памяти VDC.
Зарегистрировать листинг [ править ]
Эта информация была адаптирована из Справочного руководства программиста Commodore 128. [3]
Зарегистрироваться | Шестнадцатеричный | Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 | Описание |
---|---|---|---|---|---|---|---|---|---|---|
0
|
$00
|
HT7
|
HT6
|
HT5
|
HT4
|
HT3
|
HT2
|
HT1
|
HT0
|
Горизонтальный итог |
1
|
$01
|
HD7
|
HD6
|
HD5
|
HD4
|
HD3
|
HD2
|
HD1
|
HD0
|
Горизонтальное отображение |
2
|
$02
|
HP7
|
HP6
|
HP5
|
HP4
|
HP3
|
HP2
|
HP1
|
HP0
|
Положение горизонтальной синхронизации |
3
|
$03
|
Фольксваген3
|
Фольксваген2
|
Фольксваген-1
|
ФВ0
|
HW3
|
HW2
|
HW1
|
HW0
|
Ширина вертикальной/горизонтальной синхронизации |
4
|
$04
|
ВТ7
|
ВТ6
|
ВТ5
|
ВТ4
|
VT3
|
ВТ2
|
ВТ1
|
ВТ0
|
Вертикальный итог |
5
|
$05
|
— | — | — | ВА4
|
ВА3
|
ВА2
|
ВА1
|
ВА0
|
Вертикальная регулировка |
6
|
$06
|
ВД7
|
ВД6
|
ВД5
|
ВД4
|
ВД3
|
ВД2
|
ВД1
|
ВД0
|
Вертикальное отображение |
7
|
$07
|
ВП7
|
ВП6
|
ВП5
|
ВП4
|
ВП3
|
ВП2
|
ВП1
|
ВП0
|
Положение вертикальной синхронизации |
8
|
$08
|
— | — | — | — | — | — | IM1
|
ИМ0
|
Чересстрочный режим |
9
|
$09
|
— | — | — | — | CTV4
|
CTV3
|
CTV2
|
КТВ1
|
Всего символов по вертикали |
10
|
$0А
|
— | СМ1
|
CM0
|
CS4
|
CS3
|
CS2
|
CS1
|
CS0
|
Режим курсора, начать сканирование |
11
|
0 миллиардов долларов
|
— | — | — | CE4
|
CE3
|
CE2
|
CE1
|
CE0
|
Линия сканирования конца курсора |
12
|
$0C
|
ДС15
|
ДС14
|
ДС13
|
ДС12
|
ДС11
|
ДС10
|
ДС9
|
ДС8
|
Старший байт начального адреса дисплея |
13
|
$0D
|
ДС7
|
ДС6
|
ДС5
|
ДС4
|
ДС3
|
ДС2
|
ДС1
|
ДС0
|
Младший байт начального адреса дисплея |
14
|
0 долларов США
|
CP15
|
CP14
|
CP13
|
CP12
|
CP11
|
CP10
|
CP9
|
CP8
|
Старший байт позиции курсора |
15
|
0 франков долларов
|
CP7
|
CP6
|
CP5
|
CP4
|
CP3
|
КП2
|
CP1
|
CP0
|
Младший байт позиции курсора |
16
|
$10
|
ЛПВ7
|
ЛПВ6
|
ЛПВ5
|
ЛПВ4
|
ЛПВ3
|
ЛПВ2
|
ЛПВ1
|
ЛПВ0
|
Световое перо в вертикальном положении |
17
|
$11
|
ЛПХ7
|
ЛПХ6
|
ЛПХ5
|
ЛПХ4
|
ЛПХ3
|
ЛПХ2
|
ЛПХ1
|
ЛПХ0
|
Горизонтальное положение светового пера |
18
|
$12
|
UA15
|
UA14
|
UA13
|
UA12
|
UA11
|
UA10
|
UA9
|
UA8
|
Обновить старший байт адреса |
19
|
$13
|
UA7
|
UA6
|
UA5
|
UA4
|
UA3
|
UA2
|
UA1
|
UA0
|
Обновить младший байт адреса |
20
|
$14
|
АА15
|
АА14
|
АА13
|
АА12
|
АА11
|
АА10
|
АА9
|
АА8
|
Старший байт начального адреса атрибута |
21
|
$15
|
АА7
|
АА6
|
АА5
|
АА4
|
АА3
|
АА2
|
АА1
|
АА0
|
Младший байт начального адреса атрибута |
22
|
$16
|
CTH3
|
CTH2
|
CTH1
|
CTH0
|
CDH3
|
CDH2
|
CDH1
|
CDH0
|
Общее количество символов по горизонтали, отображение символов по горизонтали |
23
|
$17
|
— | — | — | CDV4
|
CDV3
|
CDV2
|
CDV1
|
CDV0
|
Символьный дисплей по вертикали |
24
|
$18
|
КОПИРОВАТЬ
|
РВС
|
СБРАТЭ
|
VSS4
|
ВСС3
|
VSS2
|
ВСС1
|
ВСС0
|
Вертикальная плавная прокрутка |
25
|
$19
|
ТЕКСТ
|
ATR
|
ПОЛУ
|
двухместный номер
|
HSS3
|
HSS2
|
HSS1
|
HSS0
|
Горизонтальная плавная прокрутка |
26
|
1 доллар США
|
ФГ3
|
ФГ2
|
ФГ1
|
ФГ0
|
БГ3
|
БГ2
|
БГ1
|
БГ0
|
Цвет переднего плана/фона |
27
|
1 миллиард долларов
|
АИ7
|
АИ6
|
АИ5
|
AI4
|
AI3
|
AI2
|
AI1
|
AI0
|
Приращение адреса на строку |
28
|
1 доллар США
|
CB15
|
CB14
|
CB13
|
БАРАН
|
— | — | — | — | Базовый адрес персонажа |
29
|
1 динар.
|
— | — | — | UL4
|
UL3
|
UL2
|
UL1
|
UL0
|
Подчеркивание линии сканирования |
30
|
1 евро
|
ЧМ7
|
ЧМ6
|
ЧМ5
|
Ч4
|
ЧМ3
|
туалет 2
|
туалет 1
|
WC0
|
Количество слов |
31
|
1 миллион долларов
|
ДА7
|
ДА6
|
ДА5
|
ДА4
|
ДА3
|
ДА2
|
ДА1
|
ДА0
|
Регистр данных |
32
|
$20
|
ВА15
|
ВА14
|
ВА13
|
ВА12
|
ВА11
|
ВА10
|
ВА9
|
ВА8
|
Старший байт стартового адреса блока |
33
|
$21
|
БА7
|
ВА6
|
ВА5
|
ВА4
|
ВА3
|
ВА2
|
ВА1
|
ВА0
|
Младший байт начального адреса блока |
34
|
$22
|
ДЕБ7
|
ДЕБ6
|
ДЕБ5
|
ДЕБ4
|
ДЕБ3
|
ДЕБ2
|
ДЕБ1
|
ДЕБ0
|
Включение дисплея, начало |
35
|
$23
|
ДИ7
|
ДИЭ6
|
ДИ5
|
ДИЭ4
|
ДИЭ3
|
ДИЭ2
|
ДИЭ1
|
ДИ0
|
Дисплей Включить Конец |
36
|
$24
|
— | — | — | — | СРБ3
|
СРБ2
|
СРБ1
|
ДРР0
|
Частота обновления DRAM |
Ссылки [ править ]
- ^ «Commodore.ca | Продукты | Commodore 128, 128D, 128DCR, история, руководства, изображения и временная шкала» . www.commodore.ca . Архивировано из оригинала 26 июля 2003 г.
- ^ Глава 3.9.1 «VDC HI-RES-Grafik», стр. 213ff.
- ^ Commodore Capital, Inc., (1986). Справочное руководство программиста Commodore 128. Нью-Йорк, штат Нью-Йорк: Bantam Books, Inc.