Salut La Communauté,
J'ai une question concernant l'utilisation de ld65 : comment transforme-t-on un fichier ".o65" en un fichier exécutable dans Oricutron grâce à ce linker (voir fichier "evasion_galactique.o65" en pièce-jointe) ?
Salut,
Je ne vois pas ton fichier dans le post.
Il faut que tu précises à ld65 le type de machine et évebtuellement le nom du fichier généré et l'adresse de chargement du programme.
Si c'est pour un Atmos, tu peux générer facilement un fichier au format .tap avec un lanceur en Basic avec cette commande:
ld65 -t atmos evasion_galactique.o65 -o evasion_galactique.tap
-t atmos: programme au format .tap un Atmos
-o evasion_galactique.tap: nom du fichier exécutable (sinon c'est a.out par défaut)
Si tu as des messages d'erreur du genre:
ld65: Warning: /usr/share/cc65/cfg/atmos.cfg(46): Segment 'TAPEHDR' does not exist
ld65: Warning: /usr/share/cc65/cfg/atmos.cfg(46): Segment 'STARTUP' does not exist
ld65: Warning: /usr/share/cc65/cfg/atmos.cfg(46): Segment 'INIT' does not exist
ld65: Warning: /usr/share/cc65/cfg/atmos.cfg(46): Segment 'ONCE' does not exist
alors il faut ajouter la librairie atmos.lib à la suite de ton fichier .o65:
ld65 -t atmos evasion_galactique.o65 atmos.lib -o evasion_galactique.tap
@assinie Merci pour cette réponse.
À dire vrai, je ne sais pas comment installer le linker ld65, je connais juste son existence.
J'ai bien vu qu'il comporte des tonnes de librairies, mais j'ignore comment on les utilise.
Si quelqu'un peut aider un newbie...
Note : Le fichier "evasion_galactique.o65" se trouve dans le .zip en pièce-jointe.
J'ai regardé ton fichier et je pense que tu utilises xa et j'étais parti sur ca65.
Donc ce qu'il te faut c'est ldo65 et non ld65, normalement il est fourni avec xa.
Dans ce cas la ligne de commande devient simplement:
ldo65 -o evasion_galactique evasion_galactique.o65
-o permet de préciser le nom du fichier généré (dafaut: a.out)
ldo65 se trouve en principe dans le même répertoire que xa donc il suffit de le lancer de la même manière que xa.
Si tu utilises l'OSDK tout est fourni dans l'archive présente sur cette page
La documentation de OSDK est sur le même site ici
Attention:
- l'OSDK est prévu pour fonctionner sous Windows.
- ldo65 génère un fichier bianire qui n'est pas directement utilisable par l'Oric ou un émulateur, pour cela il faut utiliser un autre outil header qui permet de transformer le fichier binaire en fichier au format .tap reconnu par les émulateurs.
header est également fourni dans l'OSDK.
xa et ses différents outils (ldo65, file65,...) peuvent être utilisés sous Linux et se trouvent dans le même package.
header n'est pas un outil fourni par xa et devra être téléchargé depuis le site github de fence-force: https://github.com/Oric-Software-Development-Kit/osdk/tree/master/osdk/main/Osdk/_final_/Bin
N'utilisant pas l'OSDK, je n'ai aucune idée de la version Windows pour laquelle il a été compilé.
Remarque: la version de xa dans l'OSDK est plus ancienne que celle présente sur le site du mainteneur de xa
Comment as-tu créé le fichier evasion_galactique.o65?
Comment as-tu créé le fichier evasion_galactique.o65?
J'ai créé le fichier evasion_galactique.o65 à l'aide de la commande xa evasion_galactique.s -o evasion_galactique.o65
Par contre, je n'ai trouvé que le fichier Linker65.exe dans le répertoire Bin de OSDK 1.21, et lorsque je tente de l'utiliser j'ai le message d'erreur suivant en retour : Cannot open Index file : lib6502\library.ndx
Le Link65.exe de l'OSDK est prévu pour les programmes écrits en C et est davantage un pré-processeur qu'un éditeur de liens classique dans la mesure où il utilise des fichiers sources assembleur en entrée et non des fichiers objet (déjà assemblés)
Il cherche donc ses fichiers de librairie C.
Dans ton cas, je pense que tu n'as pas besoin d'utiiliser un éditeur de liens si toutes les routines utilisées par evasion_galactique.s sont dans ce fichier ce qui semble être le cas.
Donc tu as simplement besoin d'utiliser le programme header.exe de l'OSDK (en pratique on pourrait aussi s'en passer)
Il faut lui passer en paramètre le nom du fichier objet, le nom du fichier .tap à créer et l'adresse de chargement du programme.
L'adresse de chargement du programme doit être dans le fichier source evabsion_galactique.s (probablement la première pseudo-instruction * = xxxx)
La commande devient donc:
header -a1 evasion_galactique.o65 evasion_galactique.tap xxxx
Avec xxxx correspondant à la pseudo-instruction * = xxxx
-a1 : insdique un démarrage automatique du programme après son chargement par un CLOAD
-a0 pour un démarrage manuel, c'est à dire qu'il faudra taper l'instruction CALL xxxx après le CLOAD.
ATTENTION si xxxx est en hexadécimal il faut remplacer ls caractère initial $ par # dans le CALL, c'est à dire que si tu as * = $1000 il faudra taper CALL #1000