Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Символов по горизонтали
Таблица символов Плоскости “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.
Обязательно заполняйте этот заголовок корректно, иначе на некоторых системах программа не будет работать.
• От переводчика: • Заголовок актуален только для систем, со встроенной Операционной Системой (во встроенной ПЗУ). В обычных приставках 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. Примечание: Доступ эмулятора к этим портам нужно разрешить перед записью, а затем запретить.
|