Accueil | Articles | Qui-suis-je | Archives | Palette |Collection |card flash|Revendeurs|Homebrew|Programmation|Annuaire | ||
Programmation de l'oric atmos en ASM
La page dédié à la programmation de l'oric atmos
Logiciel Compilateur/Assembleur VASM
Il existe plusieurs logiciel pour faire de l'asm en 6502 en cross dev. Je vous propose VASM mais je n'exclue pas de tester d'autre logiciel. Lien Télécharger la version adéquate de votre machine. Je suis sur windows donc ce tuto sera pour windows. A vous d'adapter ça. La préparation est simple. Vous avez télécharger un dossier qui ce nomme vbcc. Dedans il y a trois dossier, un readme et trois pdf. Le fichier vasm.pdf est le mode d'emploie du compilateur/assembleur asm. Vasm permet d'assembler du code assembleur pour plusieurs type de processeur ce qui est cool. Le dossier config et targets osef. Le dossier bin est important dedans il y a les logiciel d'assemblage. Pour l'oric on à le droit à trois logiciel. vasm6502_madmac.exe vasm6502_oldstyle.exe vasm6502_std.exe Ce qui change c'est la façon écrire son code et de retrouver ou garder une portabilité avec du vieux code. Personnellement je vais rester sur oldstyle. Preparer son projet : Exemple
Voici un exemple de préparation de projet et de dossier. C'est la façon que j'aime faire. (Cela ne veux pas dire la meilleur façon...)Dans un dossier sur votre bureau ou dans un disque dure peux importe, un dossier nommé ORIC. Dedans on place le dossier VBCC. On crée un dossier projet et dans ce dernier un autre dossier portant le nom de votre projet. Ce qui fait en gros : --Dossier Oric ----Dossier VBCC ----Dossier Projet. --------Dossier Projet_Test Dans "votre projet" j'aime avoir un sous dossier src pour le code source. et le fichier bat de compilation. Et un dossier out pour recevoir votre image cassette (ou autre). -- projet_test ---- dossier src ---- dossier out ---- compilation.bat dans le dossier src, un fichier main.asm qui sera le point d'entrée de votre programme. Le Fichier bat.
J'aime bien compiler en .bat directement. encore une fois c'est ma méthode. Voici le code que j'utilise pour l'exemple. @echo off ..\..\vbcc\bin\vasm6502_oldstyle -oric-mcx -Fbin src\main.asm -o out\test.tap pause Explication : @echo off : permet d'éviter de voir dans la fenêtre de compilation tout ce qui est écrit. pause : a la fin permet d'avoir une temporisation et bien lire les messages erreur. ..\..\vbcc\bin\vasm6502_oldstyle -oric-mcx -Fbin src\main.asm -o out\test.tap La belle ligne de commande !!! Bon pas de panique explication : On va appeller le compilateur qui se trouve dans le dossier bin du dossier vbcc. Donc il faut y aller. La on est en lien relatif c'est pratique, si vous déplacez le dossier, ça marche toujours, c'est ce que j'aime. Et pas besoin de crée des variables d'environement ou je ne sais quoi d'autre... Simple. A partir du fichier bat dans notre exemple il faut revenir deux dossier en avant pour se retrouver dans le dossier oric pour voir VBCC. donc deux ..\ dans notre ligne de commande. Puis on entre dans le dossier vbcc avec vbcc\ puis dans le dossier bin avec heu bin\ puis on lance le logiciel adéquate. avec vasm6502_std pour notre exemple. (On peux placer le exe mais ce n'est pas obligatoire). Bon le logiciel est lancé, mais il faut lui donner à manger. On va demander à VASM de calculé et d'intégrer un header à notre fichier pour qu'il puisse être fonctionnel sur l'oric. On peux bien sur faire ça manuellement, mais VASM sait le faire. Donc on ajoute un petit -oric-mcx avec le tiret !!! Après on demander que vasm nous génère du code binaire avec -Fbin il faut passer le point d'entré, le ficher qu'il doit manger. notre main.asm se trouve dans le dossier src. le dossier src se trouve à coté de notre bat. Donc un petit : src\main.asm et enfin on va renseigner ou sortir notre fichier : pour cela c'est un -o et le nom du fichier à créer. Le header est prévus pour faire des fichier cassette. Bon ce n'est pas du wav l'assembleur ne faire pas ça donc on génère une image .tap pour que les émulateurs puisse lire les donnée. un petit out\test.tap et voila. Fichier main.asm
J'ai l'habitude de nommer mon fichier à compiler, main.asm mais ce n'est pas obligatoire. Vous pouvez nommer votre fichier comme le nom de votre jeu. Dans notre main.asm on va demander au logiciel de commencer à calculer les adresse à partir de l'adresse $500. C'est aussi cette adresse qui sera contenue dans le header pour savoir ou va se loger le logiciel. il faut donc faire un org $500 avec un espace avant org. (En mode standard c'est .org 0x500 , les règles d'écriture change d'un mode à un autre.) Nous allons écrire une étiquette pour boucler sur elle. main: et un petit jmp main maintenant vous pouvez tester votre compilation si cela fonctionne ! Un dossier prêt à l'emplois sera téléchargable ! L'éditeur de code
Vous pouvez utiliser tout ce que vous voulez, c'est de l'assembleur !!!Le Bloc note de windows fonctionne. (Hum hum) Personellement j'aime Not Pad ++ Il existe d'autre logiciel pour écrire du code. Prenez celui que vous aimez !!! L'émulateur oric
Bon la c'est moin drole sur windows il existe deux émulateurs.Euphoric : Qui fonctionne pas sur mon windows 11 64 bits. (Faut passer je crois pas dosbox bla bla bla.. et Oricutron qui fonctionne L'émulateur oric
Bon la c'est moin drole sur windows il existe deux émulateurs.Euphoric : Qui fonctionne pas sur mon windows 11 64 bits. (Faut passer je crois pas dosbox bla bla bla.. et Oricutron qui fonctionne L'exploreur
Logiciel indispensable... Bon je vais faire tourner celui qui foncionne sur mon pc dans le dossier a télécharger.Mais ce logiciel c'est ultra pratique pour lancer votre .tap dans votre émulateur. J'aime beaucoup. Il y a une petit configuration à faire. Ram Card Simple pour le mode texte
Programmer une machine, c'est connaitre son architecture. Cette page est la pour donner ce que j'ai appris et pour débuter la programmation ASM sur l'oric. Voici donc un peu la carte mémoire de la machine.PAGE 0 La page 0 c'est important pour le 6502. C'est rapide pour le processeur. En temps normale c'est des variables pour le basic de l'oric mais heu osef. On fait de l'asm !!! donc de $0 à $FF est libre pour vous. 256 octets de la page 0 ! PAGE 1 A l'adresse $100 c'est la pile. Qui va jusque $1FF Donc pas touche ici !!! PAGE 2 A l'adresse $200 jusque $2FF il y a des variables system de l'oric. Certaine en lecture seulement, d'autre peuvent être écrite. (En gros). PAGE 3 A l'adresse $300 Jusque $3FF c'est pour les Entrée/sortie PAGE 4 A l'adresse $400 Jusque $4FF c'est potentiellement libre. Ram Utilisateur Ahhh la c'est important, c'est à partir de l'adresse $500 que vous avez le champs libre jusque à l'adresse $97FF soit 37637 octets. (37ko et des poussières.). C'est ici que vous devez combiner taille de votre programme K7 et vos variables pour mémoriser les vies et tout ça... aidez par la page 0 et peut être la page 4... Bref pour ça que nous avons un org 500. De l'extra ? Oui en ASM la zone dite GRAB peut être utilisé. Elle se trouve en $9800 et vas jusque à l'adresse $B3FF 7163 octet... (7ko) avec les 37ko d'avant cela montre à 44 ko hihi !!! La nes une cartouche de base c'est 32ko de rom et 2ko de ram mais bon la comparaison n'est pas pareil. Les deux jeux caractère ! De $B400 à B7FF il y a 1ko pour le générateur de charset. 128 charactères. Ou presque car les 32 premiers caractères en mode texte sont indisponible. oué car en mode texte c'est des codes effet sur l'écran. Bon il y a potentiellement un troue de 256 octets ici mais attention, il existe une commande rapide pour copier les charactère de la ROM en Ram ! Si vous décidez d'utiliser cette commande pour votre jeu/application ba les 256 octets ici ne sont plus exploitable si c'est pour mémoriser des datas qui doit rester !!! de $B800 à $BB7F, il y a un 2em jeu de caractère mais je n'ai pas encore regardé. $BB80 à $BFDF c'est la mémoire écran. Le reste de la ram osef c'est pas touche à ça petit con ! |
||
Site réalisé par Jean Monos |