introduction
Le but de cet article est d’expliquer comment développer sur Orix des applications. Cet article ne va expliquer comment coder en C, mais plutôt comment utiliser les fonctions déjà codées dans cc65 pour faire des choses sur Oric. En effet, Orix s’appuie sur telemon. Pour rappel, telemon est une rom de 16Ko qui contient toutes les routines pour faire fonctionner le hard telestrat notamment, mais aussi l’affichage etc. Il n’y a pas d’interpreteur dans cette partie. Il faut imaginer telemon comme étant une grosse lib utilisable en assembleur. Les libs C de la target Telestrat sur cc65 ne font qu’appeler ces routines.
Prérequis
Il vous faudra l’archive contenant Oricutron avec l’émulation du CH376 : https://iss.sandacite.com/iss/oricutron/
Puis cc65, http://cc65.github.io/cc65/
Puis les roms : https://repo.orix.oric.org/dists/orix1/alpha/tgz/6502/roms.tgz
Dans oricutron.cfg, mettre la rom kernel en banque7, la rom basic en banque6, la rom shell en banque 5, et dans les autres banques mettre emptyrom.
Chaque lancement d’oricutron devra se faire avec l’option -t pour pouvoir démarrer les binaires
Avoir un éditeur texte (notepad, visual code etc)
CC65 utilise les prototypes de fonctions standardisées (POSIX), ainsi, il n’y a pas de hires par exemple.
Premier exemple
Nous allons effacer l’écran.
Nom du fichier : clrscr.c
#include <conio.h>
int main (int argc,char *argv[]) {
clrscr(); // Effacer l'écran (texte) avec conio car conio gère le mode texte.
}
On compile (sous linux ou windows)
# cl65 -ttelestrat clrscr.c -o clrscr
Vous aurez un binaire clrscr
Copiez ce fichier dans oricutron/usbdrive/ (oricutron qui est dans l’archive ci dessus)
Démarrez Oricutron de cette archive.
Dans Orix, on regarde les informations du binaire avec file :
# file clrscr
File permet d’afficher les infos de fichiers (file affiche les infos d’un fichier filepack, binaire Orix, raw, script shell etc)
Dans Orix, on execute le code :
# ./clrscr
Nous avons l’écran qui s’est effacé
Afficher hello world
#include <stdio.h>
main() {
printf("Hello World\n");
}
- Puis je compile :
# cl65 -ttelestrat hello.c -o hello
- je déplace le binaire dans le répertoire usbdrive d’oricutron (dans bin) :
cp hello $ORICUTRON/usbdrive/bin/
- je lance oricutron, et je tape “hello”. Cela fonctionnera sans faire ./hello, puisque nous avons placé le binaire “hello” dans bin/ qui est dans le “PATH”.
Lire le clavier
Nous allons utiliser la lib conio de cc65 qui est une librairie de gestion du clavier et du mode texte. Notez que cela récupère aussi le code ascii du joystick. En effet, sur telestrat, quand on utilise telemon, quand on scrute le clavier, on récupère aussi le joystick !
#include <conio.h>
#include <stdio.h>
int main (int argc,char *argv[]) {
unsigned char key; // Ici le programme ne sort jamais, dès qu'une touche est pressée, elle s'affiche à l'écran.
while (1) {
key=cgetc();
printf("%c",key);
}
}
Passer HIRES
Nous allons utiliser la lib TGI de cc65 qui est une librairie graphique standard pour passer en hires.
#include <tgi.h>
#include <conio.h>
#include <stdio.h>
int main (int argc,char *argv[]) {
tgi_install (tgi_static_stddrv);
tgi_init ();
tgi_clear ();
printf("Appuyez sur une touche pour revenir en mode texte");
cgetc();
tgi_done();
}
Passer HIRES et afficher une image
il vous faut une images hrs que vous mettez à la racine de usbdrive dans l’émulateur. Cette image s’appelle img.hrs
#include <tgi.h>
#include <conio.h>
#include <stdio.h>
int main (int argc,char *argv[]) {
FILE *fp;
char *myfile="img.hrs";
fp=fopen(myfile,"r");
if (fp!=NULL) {
tgi_install (tgi_static_stddrv);
tgi_init ();
tgi_clear ();
fread(0xa000,8000,fp); // On lit 8000 octets qu'on écrit directement en hires.
printf("Appuyez sur une touche pour revenir en mode texte");
cgetc();
tgi_done();
}
}
- Puis je compile:
cl65 -o picture -ttelestrat picture.c
Voilà, vous avez fait à peu près le binaire viewhrs qui permet de voir des images hrs sur oric.
Quelques exemples sur orix : https://github.com/jedeoric/orix-samples que vous pouvez améliorer facilement. Contactez moi pour que je vous donne accès en écriture à ce repo !

viewhrs a été recodé en assembleur depuis, et est dispo dans la ROM shell d’Orix. En voici le lien : https://github.com/orix-software/shell/blob/master/src/commands/viewhrs.asm