VIC (чип видеоинтерфейса) , известный как MOS Technology 6560 ( версия NTSC )/ 6561 ( версия PAL ), представляет собой интегральную микросхему, отвечающую за создание видеографики и звука в домашнем компьютере VIC-20 от Commodore. Первоначально он был разработан для таких приложений, как недорогие ЭЛТ- терминалы , биомедицинские мониторы, дисплеи систем управления и аркадные или домашние игровые консоли .
Чип был разработан Элом Шарпантье в 1977 году, но Commodore не смогла найти для него рынок. В 1979 году компания MOS Technology начала работу над видеочипом под названием MOS Technology 6564, предназначенным для компьютера TOI , а также провела некоторую работу над другим чипом, MOS 6562, предназначенным для цветной версии Commodore PET . Оба этих чипа вышли из строя из-за ограничений по времени памяти (оба требовали очень быстрой и, следовательно, дорогой SRAM , что делало их непригодными для массового производства). Прежде чем, наконец, начать использовать VIC в VIC-20, разработчик микросхем Роберт Яннес перенес функции 6562 (лучший генератор звука) и 6564 (больше цветов) обратно в 6560, поэтому перед началом массового производства VIC-20 он был тщательно переработан.
Его особенности включают в себя:
В отличие от многих других видеосхем того времени, он не предлагает возможности динамического обновления оперативной памяти. Таким образом, в VIC-20 использовались более дорогие чипы статического ОЗУ (SRAM). Вероятно, именно по этой причине машина продавалась всего с 5 КБ ОЗУ. Расширения памяти для VIC-20 либо также использовали SRAM, либо реализовывали собственную схему обновления.
VIC был запрограммирован путем манипулирования его 16 управляющими регистрами , память которых отображалась в диапазоне адресов памяти $9000–$900F в адресном пространстве VIC-20. Встроенные аналого-цифровые преобразователи использовались для считывания положения двух лопастей в VIC-20, который также использовал функцию светового пера VIC . VIC предшествовал гораздо более совершенному VIC-II , который использовался преемниками VIC-20, C64 и C128 .
У VIC-20 с расширяемой оперативной памятью видеопамять (550 байт) стоит 1000 долларов, а при ее отсутствии - 1000 долларов. Пользовательские наборы символов должны быть размещены в пределах первых 5 КБ системной оперативной памяти. ПЗУ символов PETSCII по умолчанию стоит 8000 долларов США, и для хранения каждого символа требуется 8 байт. Одновременно можно использовать до 128 символов. Хотя в наборе символов PET была обратная косая черта (\), на VIC-20 (и всех последующих машинах Commodore) она была заменена знаком британского фунта стерлингов (£).
Программируемые символы — единственный способ создания графики и анимации на VIC, поскольку чип не имеет спрайтов или режима растрового изображения с адресацией по всем точкам. Из 16 цветов палитры восемь можно использовать для переднего плана (на цветовую ОЗУ стоимостью 9400 долларов США) и границ, тогда как остальные ограничены фоном и вспомогательными многоцветными цветами. Старший бит цветового ОЗУ — это флаг, используемый для указания того, является ли этот символ многоцветным или имеет высокое разрешение. Из-за крайней блочности первого в большинстве игр VIC-20 используются наемные персонажи.
VIC не поддерживает прокрутку или прерывания растра, как в VIC-II, но счетчики строк развертки могут опрашиваться для определенной точки на экране для создания растровых эффектов. Эта функция редко использовалась в играх, за исключением нескольких игр, таких как Imagic’s Demon Attack .
Программирование звука на VIC осуществляется путем помещения значения частоты в один из четырех регистров $900A-$900D (отключаются записью в них нуля). Первые три представляют собой генераторы прямоугольных импульсов, расположенные на полоктавы друг от друга, а четвертый предназначен для белого шума.
VIC имеет 16 регистров чтения/записи, перечисленных ниже:
Полная палитра из шестнадцати цветов была создана на основе вариаций сигналов YPbPr :
Примечание. Y имеет 5 возможных значений (0, 0,25, 0,5, 0,75 и 1); Pb и Pr имеют 7 возможных значений (-0,9238795, -0,7071068, -0,3826834, 0, 0,3826834, 0,7071068, 0,9238795).