Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Символов по горизонтали






 

Таблица символов Плоскости “A”

8Кбайт с адреса 0C000H: Регистр №2 = $30

Таблица символов Плоскости “B”

8Кбайт с адреса 0E000H: Регистр №4 = $07

Таблица символов Окна

2Кбайта с адреса 0B000H: Регистр №3 = $2С

Таблица горизонтальной прокрутки

1Кбайт с адреса 0AC00H: Регистр №13 = $2B

Таблица атрибутов спрайтов

1Кбайт с адреса 0A800H: Регистр №5 = $54

 

Нераспределенная область (ниже 0AB00H) используется для знакогенераторов Плоскостей и Спрайтов.

 

 


ОСОБЕННОСТИ ПРОГРАММИРОВАНИЯ ДЛЯ MS (MASTER SYSTEM)

 

Когда программируете для MS, обратите внимание на следующие особенности:

 

1. Программа обслуживания DMA (для RAM, ROM-VRAM, CRAM, VSRAM) должна быть расположена в ОЗУ, или, например, быть как в листинге LIST1. Однако, в некоторых случаях, нельзя использовать обращение двойным словом для установки последнего адреса VRAM.

 

2. Код ID (заголовок РОМа) должен быть как показано ниже.

 

3. Примените листинг LIST2 в начале вашей программы. Это нужно для систем U.S.

 

LIST1

 

DMA_RAM:

lea vdp_cmd, An; vdp_cmd: $COOOOO

; An = Регистр адреса

; Установка адреса оригинала в регистры VDP

; Установка длинны области копирования в регистры VDP

move.l xx, ram0; xx: Адрес копии

; ram0: Рабочее ОЗУ

move.w ram0, (An)

move.w ram0+2, (An); Будьте внимательны к последовательности записей 1ого слова и второго

rts; Адрес копии должен быть установлен как

; два слова (WORD) а не двойное слово (LONG WORD).

 

От переводчика:

• Проблемы с DMA связаны с расположением последней команды в памяти. Условие такое – она должна располагаться по

четному адресу – аппаратура приставки устроена так, что чтение из ПЗУ возможно только словами (WORD).. Для ОЗУ

этой проблемы нет.

 

LIST 2

 

move.b $A10001, d0; Получить номер версии

andi.b #$0F, d0;

beq.b? 0; Если версия не $0

move.l $'SEGA', $A14000; Записать строку ASCII в регистр безопасности

? 0:

 


ЗАГОЛОВОК КАРТРИДЖА ПЗУ (ROM) ДЛЯ MEGA DRIVE

 

Поместите в ПЗУ картриджа по адресу 100H-1FFH.

 

Адрес Длинна (байт) Значение Описание
100H   ‘SEGA MEGA DRIVE’ Имя системы Sega Mega Drive.
110H   “(C)SEGA 1988 JUL’ Права и дата выпуска системы
120H   Название игры (внутр) Название игры для страны-производителя (внутреняя)
150H   Название игры (заруб) Название игры для остальных стран (внешняя)
180H   ‘GM-XXXXXXX-XX’ Тип картриджа, номер продукта и версия Тип: Игра = ‘GM’, Обучающий = ‘AI’ Номер: Номер продукта Версия: Версия программы или отличия
18EH   $XXXX Контрольная сумма защищенной области
190H   Данные управления Данные использованных устройств ввода/вывода: Джойстик для Master System: 0 Планшет (Tablet): T Джойстик: J Шар управления: B Клавиатура: K “Подушка”: V Принтер: P CD-ROM: C
1A0H   $000000, $XXXXXX Размер ПЗУ: Начальный адрес (всегда = 0) Конечный адрес
1A8H   $FF0000, $FFFFFF Используемое ОЗУ: Начальный адрес (всегда = $FF0000) Конечный адрес (всегда = $FFFFFF)
1B0H   Данные внешнего ОЗУ Если нет внешнего ОЗУ, заполнить кодом пробела ($20): 1B0H dc.b ‘RA’ 1B2H dc.b %1x1yz000 1B3H dc.b %00100000 x: 1 для энергонезависимой, 0 для обычной y, z: 10 для четных адресов, 11 для нечетных адресов 00 для всех адресов (16 битное ОЗУ) 1B4H dc.l $XXXXXX: Адрес начала ОЗУ 1B8H dc.l $XXXXXX: Адрес конца ОЗУ
1BCH   Данные модема Если не используется модем, заполнить пробелом ($20) 1BCH dc.b ‘MO’ 1BEH dc.b ‘xxxx’ 1C2H dc.b ‘yy.z’ xxxx: Фирменное имя yy: Номер модема z: Версия
1C8H   Записки Произвольный текст
1F0H   Страна выпуска Страны, в которых возможен выпуск продукта: Япония: J США: U Европа: E

 

Обязательно заполняйте этот заголовок корректно, иначе на некоторых системах программа не будет работать.

 

От переводчика:

• Заголовок актуален только для систем, со встроенной Операционной Системой (во встроенной ПЗУ). В обычных приставках

Mega Drive и Mega Drive 2 такого ПЗУ нет, поэтому заголовок не несет никакой функции.

Однако, всегда заполняйте заголовок полностью и правильно, это позволит программам-каталогизаторам

идентифицировать вашу программу (утилиты GoodXXX) и не возникнет путаницы. Еще, это считается хорошим тоном.

 


КАК ПОСЧИТАТЬ КОНТРОЛЬНУЮ СУММУ

 

Контрольная сумма считается следующим образом. Сначала место, занимаемое программой, заполните кодом ($FF). Затем загрузите все свои программы по адресам расположения (а фактически – будущий ROM) и программу подсчета контрольной суммы в ОЗУ по адресу $FF8000. Запустите программу в ОЗУ с адреса $FF8000. Через некоторое время программа остановится и младшее слово в регистре d0 (младшие 16 бит) и будут контрольной суммой. Перед прожигом будущего ПЗУ, сначала место объемом будущего ПЗУ заполните кодом $FF.

 

end_addr equ $1A4

org -$8000

start: move.l (a0), d1

addq.l #$1, d1

movea.l #$200, a0

sub.l a0, d1

amr.l s1, d1; счетчик

move d1, d2

subq.w #$1, d2

swap d1

moveq #$0, d0

? l2: add (a0)+, d0

dbra d2,? l2

dbra d1,? l2

nop

nop

nop

nop

nop

nop

? le: nop

nop

bra.b? Ie

 


РАСПРЕДЕЛЕНИЕ ПАМЯТИ ДЛЯ ЭМУЛЯЦИИ

 

Для эмуляции процессора 68000

 

Все адреса по началу следует отключить: от $0 до $FFFFFF

 

Затем, следует включить следующие области:

 

1. Программа и данные по адресам $000000 по $7FFFFF

2. Статическое ОЗУ для Z80 по адресам с $A00000 по $A01FFF

3. Звуковой FM чип по адресам с $A04000 по $A04FFF

4. Порты ввода/вывода и управление сопроцессором Z80 с $A10000 по $A11FFF

5. Видеоконтроллер VDP и звуковой порт по адресам с $C00000 по $C00FFF

6. Статическое ОЗУ по адресам с $FF0000 по $FFFFFF

 

КАРТА ОЗУ (№ 171-5642-02)

 

Это устройство имеет две области:

 

1: Основное динамическое ОЗУ с $000000 по $0FFFFF

2: Энергонезависимое статическое ОЗУ с $200000 по $203FFF

 

1. Инициализация

Записать слово 0100H по адресу $A11000.

Записать 0FFH по адресу $A130F0.

Зажгется зеленый светодиод.

 

2. Защита от стирания/записи

Записать 03H по адресу $A130F0.

Зажгется красный светодиод.

 

3. Запись и чтение

Записать 01H по адресу $A130F0.

Красный светодиод погаснет.

 

4. Примечание: Доступ эмулятора к этим портам нужно разрешить перед записью, а затем запретить.

 


 


 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.