Проблема с картой памяти сегмента CA65
Я работаю над проектом 6502 в CA65, и у меня возникают проблемы с пониманием некоторых директив.
Я хочу, чтобы сегмент был определен так, как если бы он находился в другой части памяти, так что вся адресация этого кода, как если бы он уже находился в этом сегменте памяти во время компиляции, но он будет загружен вместе с Основная программа и должна быть перемещена на место после загрузки... это довольно базовая модель для этих старых машин, но у меня возникают проблемы с правильной работой директивы DEFINE в сегментной команде.
Итак, у меня есть определение MEMORY под названием MYMEM, созданное в файле cfg как местоположение вне того места, где программа фактически загружается, скажем что-то вроде этого:
MEMORY{
.
.
MYMEM start = $1000, size =$0200
.
}
и затем я создаю сегмент под названием MYMEMSEG
SEGMENTS{
.
.
MYMEMSEG: load=MYMEM, type =rw, define=yes;
.
.
}
Затем я пытаюсь получить доступ к значениям _ _MYMEMSEG_LOAD__ или _ _MYMEMSEG_RUN__ или _ _MYMEMSEG_SIZE__, которые, как он утверждает, он создает, но все они неопределенные... сгенерированный файл MAP не содержит ничего с MYMEM или MYMEMSEG в них... так что я не понимаешь здесь?
1 ответ
Я думаю, что компоновщик экспортирует их, но ваш код должен импортировать их:
.import __MYMEMSEG_LOAD__, __MYMEMSEG_SIZE__