Как переместить нулевую страницу на 65816

Исходная информация

Как современный PHP-разработчик с мимолетным интересом к 8-битным технологиям, я немного отрывочен от реальных низкоуровневых вещей. Хотя я работал с процессором Z80 и делал некоторые сборки MIP в университете, я меньше всего разбираюсь в семействе процессоров 65x.

Чего я пытаюсь достичь

Что я хочу сделать, так это переместить нулевую страницу на 0xd300 для моего приложения - у меня был обязательный поиск в Интернете, но я не могу найти хороший пример, который я могу понять. Я работаю в 65c02 но на процессоре 65816; Благодаря другу я узнал, что вы можете перемещать нулевую страницу только в собственном режиме, а не в режиме эмуляции, поскольку он не поддерживается 65c02. Это не проблема, так как я могу переключиться в собственный режим для того, что я делаю, и вернуться в режим эмуляции, если я захочу изящно вернуться к BASIC (ну, не только то, что я знаю).

Если кто-то может также предоставить пример для 8502 (Commodore C128), пожалуйста, поскольку я знаю, что у него есть перемещаемая нулевая страница. Я знаю, что это два вопроса в одном, но это связано с тем, чем я хочу заниматься.

1 ответ

Регистр прямой страницы - это 16-битный регистр, определяющий, какая 256-байтовая страница в банке 0 должна быть текущей прямой страницей (то, что вы называете нулевой страницей).

Есть несколько разных инструкций, которые вы можете использовать, чтобы написать D. Так, например, должно работать что-то вроде этого:

      rep #$20  ; 16-bit accumulator
lda #$100
tcd       ; transfer 16-bit accumulator to D

Обратите внимание, что странице разрешено начинаться с любой границы байта. Таким образом, вы можете, например, установить D=2 и иметь прямую страницу на [0002, 0101].

Другие вопросы по тегам