Технология MOS 8563 - MOS Technology 8563
В 8563 Контроллер видеодисплея (VDC) был Интегральная схема произведено Технология MOS. Он использовался в Коммодор 128 (C128) компьютер для создания 80-столбцового (640 × 200 пиксель ) RGB видеодисплей, работающий рядом с VIC-II который поддерживал Коммодор 64 -совместимая графика. Модели DCR (а также несколько D-моделей) C128 использовали более поздние и технически совершенные 8568 [D] В постоянного тока контроллер.
История и характеристики
Первоначально предназначался для запланированного (но не выпущенного) UNIX бизнес-компьютер на базе Зилог Z8000, Коммодор разработал 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, показало, что битовая карта режим был возможен - он просто не был подробно описан. ОСНОВНОЙ 7.0, встроенный язык программирования C128, поддерживал только графику с высоким разрешением в 40-столбцовом режиме через устаревший чип VIC-II.
Вскоре после выпуска C128 VDC битовая карта режим был подробно описан в Данные Беккер книга "Commodore 128 - Das große GRAFIK-Buch" (издана в конце 1985 г. в Соединенных Штатах Программное обеспечение Abacus ), а программа на языке ассемблера была предоставлена немецкими авторами Клаусом Лёффельманном и Дитером Вюллерсом, в которой можно было установить или очистить любой пиксель или, используя БАЗОВЫЙ Для выполнения необходимых вычислений сгенерируйте растровые геометрические фигуры на экране из 80 столбцов.[1] В феврале 1986 года, менее чем через год после Коммодор 128 выпуск, ПРОБЕГ журнал опубликовано "Графика сверхвысокого разрешения", статья, описывающая растровый режим VDC и включающая программа для ввода текста (написано в 8502 язык ассемблера ), который расширил возможности BASIC 7.0 для поддержки графики с высоким разрешением 640 × 200 с использованием 8563.[2] Авторы Лу Уоллес и Дэвид Дарус позже превратили утилиту Ultra Hi-Res в коммерческий пакет, ОСНОВНОЙ 8. Одна из самых популярных сторонних утилит для C128, она предлагала более продвинутые возможности VDC с высоким разрешением для широкой аудитории программистов.
Commodore наконец-то предложил полную официальную документацию по VDC в Справочное руководство программиста Commodore 128. Режимы битовой карты VDC широко использовались в версии C128 GEOS Операционная система.
VDC не хватало спрайт возможности, которые ограничивали его использование в игра Приложения. Однако он содержал болтовня возможности автономного выполнения небольших копий блочной памяти в выделенной видеопамяти. Пока VDC выполняет такое копирование, системный ЦП может продолжать выполнение кода при условии, что никакие другие попытки доступа к VDC не предпринимаются до завершения копирования. Эти функции использовались редактором экрана C128. ПЗУ для быстрой прокрутки или очистки разделов экрана.
Технические характеристики
- RGBI выход (RGB плюс интенсивность), совместимый с IBM CGA стандарт видео.*
- 16 или 64 килобайт адресное пространство для памяти дисплея, формы символа и атрибутов дисплея (выделенное, отдельно от системной памяти).
- Разрешение видео до 720 × 700 пикселей в чересстрочном режиме (максимум с 64 килобайтами видеопамяти) [3]. Возможны другие размеры изображения, в зависимости от потребностей программиста, например, 640 × 200 без чересстрочной развертки, 640 × 400 с чересстрочной разверткой и т. Д.
- Разрешение текста 80 × 25 символов (по умолчанию для ядра C128); возможны другие размеры, например, 80 × 50 или 40 × 25.
- 8 цветов с 2-мя интенсивностями.
* Это относится только к C128s 60 Гц США. Машины C128 с частотой 50 Гц выдают сигнал с частотой обновления кадров 50 Гц. Хотя большинство мониторов CGA не соответствовали стандарту CGA, они могли без проблем отображать сигнал 50 Гц. Однако некоторые мониторы либо не смогли разрешить сигнал, либо преуспели в его разрешении, но рано или поздно их схемы отклонения выходили из строя.
Программирование
Обращение к внутренним регистрам VDC и выделенной видеопамяти должно осуществляться косвенно. Сначала программа должна сообщить VDC, к какому из его 37 внутренних регистров необходимо получить доступ. Затем программа должна дождаться, пока VDC не будет готов к доступу, после чего может быть выполнено чтение или запись в выбранный внутренний регистр. Следующее код сборки типично для регистра читать:
ldx #regnum; Регистр VDC для доступа stx 600 долларов США ; записать в контрольный регистр петля кусочек 600 долларов США ; проверить бит 7 регистра состояния bpl петля ; VDC не готов lda $ d601 ; читать из регистра VDC ...
Следующий код типичен для операции записи в регистр:
ldx #regnum; Регистр VDC для записи stx 600 долларов США ; записать в контрольный регистр петля кусочек 600 долларов США ; проверить бит 7 регистра состояния bpl петля ; VDC не готов штат $ d601 ; записать в регистр VDC ...
То же самое возможно в БАЗОВЫЙ язык, конкретный вызов КЕРНАЛ процедуры:
Этот код типичен для чтения регистра VDC, где <register> это число от 0 до 36, как показано ниже.
БАНК15...SYS DEC("CDDA"),, регистр : RREG VDCREM $ ccda он же 52698 в десятичныйРАСПЕЧАТАТЬ VDC ...
этот код типичен для записи в регистр VDC, где <register> это число от 0 до 36, и <value> это число от 0 до 255, которое вы хотите поместить в этот регистр.
БАНК15...SYS DEC("CDCC"), ценить, регистрREM $ ccdc он же 52684 в десятичный ...
Из-за этого несколько громоздкого метода управления VDC максимально возможное частота кадров в растровый режим обычно слишком медленный для видеоигр в стиле аркад, в которых требуется много битное манипулирование дисплеем.
В стандартном текстовом режиме VDC ведет себя так же, как VIC-II, за исключением 2k экранной памяти вместо 1k. Конфигурация по умолчанию при включении питания помещает экранную память в $ 0–7FF, а цветовую память - в $ 800–9FF, и их можно перемещать в любое место в памяти VDC, если она находится на границе 2k. Атрибуты обрабатываются так же, как режим высокого разрешения VIC-II с глобальным цветом фона, и каждый цвет переднего плана символа устанавливается индивидуально для цветовой RAM. Помимо данных о цвете, последние также содержат данные атрибутов для каждого символа. Бит 4 заставляет символ мигать, если он включен, бит 5 создает подчеркнутые символы, а бит 6 инвертирует растровый образец символа. Бит 7 включает альтернативный набор символов. VDC может использовать до 512 символов. Когда флаг альтернативного символа для данного символа включен, образец символа будет нарисован из символов 256-511. Таким образом, если отображается символ 65, при включении флага альтернативного символа вместо него будет отображаться символ 321. Флаг альтернативного символа обычно используется, когда установлен режим верхнего / нижнего регистра - флаг включен для всех позиций экрана VDC, в результате чего набор символов верхнего / нижнего регистра и его обратные версии видео отображаются вместо набора символов верхнего / графического символов по умолчанию .
VDC не использует символьное ПЗУ, вместо этого символьные шаблоны ROM VIC-II просто копируются в VDC RAM как часть инициализации питания C128, включая шаблоны для обратных видеосимволов, даже если VDC способен аппаратно инвертировать символы. Шаблоны символов требуют для хранения 16 байтов вместо 8, поскольку VDC имеет регулируемую высоту символа. Поскольку экран состоит из 25 строк, на практике высота символа ограничена 8 строками, что означает, что половина пространства для символьных данных остается неиспользованной и тратится впустую. Конфигурация по умолчанию при включении помещает символьные данные в $ 2000- $ 3FFF. $ 2000- $ 23FF содержат шаблоны для прописных / графических символов, $ 2C00- $ 33FF - символы верхнего / нижнего регистра, в то время как $ 2400- $ 2BFF и $ 3400- $ 3FFF содержат шаблоны обратного видео для каждого набора. Пользователь может свободно определять любые пользовательские символы и отображать их в памяти VDC.
Зарегистрировать листинг
Эта информация была взята из Справочное руководство программиста Commodore 128[2]
регистр | Шестнадцатеричный | Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 | Описание |
---|---|---|---|---|---|---|---|---|---|---|
Всего по горизонтали | ||||||||||
Горизонтально отображается | ||||||||||
Положение горизонтальной синхронизации | ||||||||||
Ширина вертикальной / горизонтальной синхронизации | ||||||||||
Всего по вертикали | ||||||||||
Вертикальная регулировка | ||||||||||
Вертикально отображается | ||||||||||
Положение вертикальной синхронизации | ||||||||||
Режим чересстрочной развертки | ||||||||||
Всего символов по вертикали | ||||||||||
Режим курсора, начать сканирование | ||||||||||
Курсор Конец строки развертки | ||||||||||
Отображение старшего байта начального адреса | ||||||||||
Отображение младшего байта начального адреса | ||||||||||
Старший байт позиции курсора | ||||||||||
Младший байт позиции курсора | ||||||||||
Вертикальное положение светового пера | ||||||||||
Горизонтальное положение светового пера | ||||||||||
Обновить старший байт адреса | ||||||||||
Обновить младший байт адреса | ||||||||||
Старший байт начального адреса атрибута | ||||||||||
Младший байт начального адреса атрибута | ||||||||||
Всего символов по горизонтали, отображение символов по горизонтали | ||||||||||
Отображение символов по вертикали | ||||||||||
Вертикальная плавная прокрутка | ||||||||||
Горизонтальная плавная прокрутка | ||||||||||
Цвет переднего плана / фона | ||||||||||
Приращение адреса на строку | ||||||||||
Базовый адрес персонажа | ||||||||||
Подчеркнуть строку развертки | ||||||||||
Количество слов | ||||||||||
Регистр данных | ||||||||||
Старший байт начального адреса блока | ||||||||||
Младший байт начального адреса блока | ||||||||||
Дисплей Включить Начать | ||||||||||
Дисплей Включить Конец | ||||||||||
Частота обновления DRAM |