Студопедия

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

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

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






  • Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
  • Символов по горизонтали






     

    Таблица символов Плоскости “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 :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.