- •Архитектура и программирование Dendy.
- •Общие сведения об архитектуре Денди.
- •Процессор Денди (cpu).
- •Видеопроцессор Денди (ppu)
- •Принципы работы ppu.
- •Спрайты. Контроллер dma.
- •Отражение экранных страниц.
- •Картридж Денди.
- •Маппер unrom.
- •Ввод/Вывод в Денди.
- •Программирование мапперов.
- •«Порт a»
- •«Порт b»
- •Джойстики.
- •Сопроцессор pApu.
- •Приложение №1. Система команд 6502.
- •Приложение №2. Палитра в rgb.
- •Приложение №3. Спецификации мапперов.
- •226 Multi-cart(pirate) 76-in-1
- •Приложение №4. Разъём картриджа.
- •Приложение №5. Схемотехника.
Программирование мапперов.
В адресном пространстве CPU есть два окна, в которые отображается содержимое PRG-ROM ($8000-$BFFF и $C000-FFFF). В окно $C000-$FFFF всегда отображается последний блок PRG-ROM («хвост» ПЗУ). За содержимое окна $8000-$BFFF – отвечает маппер (как правило, при включении – это самое начало ПЗУ).
Каждый маппер имеет определенное количество регистров управления, доступных только для записи. Адресуются они через области, отведенные для PRG-ROM. То есть – чтение из памяти по адресам $8000-$FFFF приводит к чтению ПЗУ (PRG-ROM), а запись, по некоторым адресам из этого диапазона (см. спецификации мапперов), приводит к записи управляющих слов в соответствующие регистры маппера.
В качестве примера рассмотрим простейший маппер – «UNROM».
Маппер unrom.
UN-ROM – один из простейших мапперов. Он предусматривает работу с PRG-ROM объёмом 128k, в качестве CHR используется ОЗУ размером 8k. Маппер строится на базе двух микросхем (74ls161 и 74ls32) и программно представлен как один регистр, который отражается на всё пространство первого окна ($8000-$BFFF). То есть запись по любому адресу из этого диапазона приведет к записи в регистр маппера. Записываемый байт определяет номер блока ПЗУ, подключаемого в окно $8000-$BFFF (блоки нумеруются с нуля и с начала адресации реальной ПЗУ). В окно $C000-$FFFF всегда подключены последние 16k ПЗУ.
Знакогенератор заполняется программно, через регистры PPU ($2006,$2007) – запись должна производится в адресное пространство PPU, отведенное под знакогенератор ($0000-$1FFF).
Информацию об архитектуре других типов мапперов см. в приложении «Спецификации мапперов».
Ввод/Вывод в Денди.
Архитектура Денди не изобилует большим (а может и достаточным) количеством портов ввода/вывода. Программно под порты выделены две ячейки из адресного пространства CPU (на аппаратном уровне процессора). Это ячейки с адресами $4016 и $4017. Аппаратных же линий намного меньше – а именно: 3 линии (бита) на выход и 5 + 2 линии на вход. Опрос линий чисто программный.
Наиболее распространены (в России) модели приставок Денди с двумя «разъёмами» для «джойстиков» (так их называют в быту) – по 15 контактов каждый (есть и 9-ти контактные или шнуры джойстиков могут быть «вделаны» в приставку, в этом случае, как правило, есть еще один 15-ти штырьковый разъём – но такие варианты встречаются редко). Условимся называть разъём для подключения первого джойстика «Порт A», второго «Порт B» (каждый по 15 штырьков). Если оба порта имеют по 9 штырьков, то есть третий – 15-ти штырьковый, который дублирует «Порт B» и содержит дополнительные сигналы (аналогично, если джойстики неразъемные). Если, как в большинстве случаев, оба разъема имеют 15 контактов – к «Порту A» подключено не более шести, ко второму – все 15 (в том числе и сигналы с «Порта A», правда, на другие контакты). В общем «Порт A» предназначен для подключения «первого» джойстика (аппаратно возможно и подключение светового пистолета - «Zapper»). К «Порту B» подключается все другие периферийные устройства (второй джойстик, световой пистолет, разъветвитель на 4 джойстика и многое другое), фактически на него выведены все линии портов ввода/вывода Денди (за исключением одного из «Порта A»). Теперь подробнее о программной модели и аппаратной реализации.
Вывод – 3 бита “OUT” (непосредственно с процессора), адресуются путем записи значения в регистр $4016, младшие биты. Бит 0 используется в качестве стробирующего сигнала-защелки состояния джойстиков (см. ниже).
Ввод – порт $4016 “J1”(чтение), аппаратно присутствуют только два младших бита. Бит D0 выведен на «Порт A» и используется для чтения последовательного кода состояния джойстика 1. Бит D1 выведен на «Порт B».
Ввод – порт $4017 “J2” (чтение), аппаратно присутствуют 5 младших бит. Нулевой бит – аналогично для джойстика 2.
Распиновка портов (2 по 15) приведена на рисунке.
