2015-12-18 5 views
3

Je travaille sur un projet 6502 en CA65 et j'ai de la difficulté à comprendre certaines des directives. Ce que je veux faire, c'est avoir un segment défini comme s'il se trouvait dans une autre partie de la mémoire, de sorte que tout l'adressage de ce code soit comme s'il était déjà dans ce segment de la mémoire lors de la compilation, mais il être chargé avec le programme principal et doit être déplacé en place après chargement ... c'est un modèle assez basique pour ces vieilles machines, mais j'ai du mal à faire fonctionner correctement la directive DEFINE dans la commande segment.CA65 Segment Mémoire Carte numéro

J'ai donc une définition de mémoire appelée MYMEM créé dans le fichier .cfg comme un endroit à l'extérieur de l'endroit où le programme fait des charges, dire quelque chose comme ceci:

MEMORY{ 
. 
. 
MYMEM start = $1000, size =$0200 
. 
} 

et je crée alors un segment appelé MYMEMSEG

SEGMENTS{ 
. 
. 
MYMEMSEG: load=MYMEM, type =rw, define=yes; 
. 
. 
} 

je tente alors d'accéder au _ _MYMEMSEG_LOAD__ ou _ ou _ _MYMEMSEG_RUN__ valeurs _MYMEMSEG_SIZE__ qu'il prétend qu'il crée, mais ils sont tous ... undefined le fichier MAP généré ne contient rien avec MYMEM ou MYMEMSEG en eux. .. alors qu'est-ce que je suis Je ne comprends pas ici?

+0

Vous avez probablement déclarer ces symboles qu'il crée comme externes, comme ils ont été définis dans le fichier de code source de montage séparé. –

+0

Je ne suis pas tout à fait en train de suivre ici ... il n'y a pas de code ici pour dire à .export, pour plus tard s'inquiéter de l'import/inclusion ... les _SIZE__ _LOAD__ et _RUN__ sont censés être créés par le define = yes, alors comment Je vais à ce sujet? – user282172

+0

http://www.cc65.org/doc/ld65-5.html En particulier les informations SEGMENT 5.2 – user282172

Répondre

3

Je pense que l'éditeur de liens les exporte, mais votre code doit les importer:

.import __MYMEMSEG_LOAD__, __MYMEMSEG_SIZE__ 
+0

Je vais essayer cela, mais il me semble un peu intéressant que pour avoir le fichier map avoir une référence le code doit quelque part inclure une directive d'importation ... Je pense que définir serait tout ce que serait nécessaire pour au moins le créer dans le fichier de carte. – user282172