
Retro-Programming Atari / Thomson
Ici, que de vieux trucs, mais avec quelques outils modernes ou presque.

L’objectif de ce petit tutoriel est de compiler un programme C pour TOS à l’aide d’un conteneur Docker.
The objective of this little tutorial is to compile a C program for TOS with the help of a Docker container.
Je vous avais mis l’eau à la bouche, dans mon précédent article relatif aux interactions entre C et Assembleur, en annonçant que cela servirait à jouer de la musique sur le processeur audio de l’Atari ST, le YAMAHA-2149 (YM-2149) : nous y voilà !
Dans ce tutoriel, nous verrons :
- quelques concepts fondamentaux sur la production de son depuis le YM-2149 ;
- comment interagir en Assembleur et en C avec le YM-2149 ;
- la structure des fichiers YM, principalement
YM2!
etYM3!
; - quelques notions théoriques sur les Timers de l’Atari ST ;
- la diffusion du son, par interruption, au moyen d’une routine
Timer A
; - et enfin quelques détails comme par exemple la lecture d’une touche spécifique du clavier.
Ce tutoriel mixera C et Assembleur en fonction des tâches à réaliser :
- la lecture de fichier de musique ainsi que les affichages à l’écran se feront en C ;
- la routine de lecture du son sera effectuée en Assembleur et déclenchée par le Timer A.
Cerise sur le gâteau, je vous proposerai quand même une implémentation complète exclusivement en C.
Vous pouvez récupérer l’ensemble du code source sur mon repository dédié sur github.
Accrochez-vous, c’est parti !
Il n’est pas rare de devoir mixer du code C et assembleur au sein d’un même programme. En effet, si un programme est généralement plus simple à écrire en C, certains aspects sont paradoxalement plus faciles à écrire en assembleur.
L’idée est donc de pouvoir profiter du meilleur des deux mondes.
Cela me rappelle finalement quand du Java appelle du C/C++ via JNI ou JNA qui peut lui-même appeler de l’assembleur. Mais ceci est une autre histoire…
Ce bref tutoriel montre comment compiler, à partir de Linux, un programme en mixant C et assembleur pour le TOS de l’Atari ST
avec le compilateur vasm
et le compilateur m68k-atari-mint-gcc
Le fichier exécutable sera exécuté avec l’émulateur HATARI comme dans l’article sur la cross-compilation en C.
Spoiler : Je me servirai de tout cela pour implémenter une routine Timer A
dans le cadre de la lecture de fichiers de musique YM-2149 au format “YM3!
” à 50 Hz, dans un futur tutoriel…
Suite à mon article sur la structure “4 bitplanes” de l’Atari ST, je vous propose ce petit simulateur qui vous permet de définir vos propres couleurs de palette ainsi que l’ensemble des bits des 4 mots (words) qui constituent un bloc de 16 pixels à l’écran.
Quand on se (re)plonge dans la programmation de l’Atari ST et notamment de l’affichage des pixels à l’écran, on se rend vite compte qu’on a pris de bien mauvaises habitudes avec nos ordinateurs “modernes”, où la structure en mémoire est très simple en comparaison.
Cet article, illustré de programmes en C, va vous permettre de comprendre ENFIN cet agencement particulièrement étonnant pour ne pas dire étrange.
Retrouvez mon ami Fred, qui a délaissé un peu son Amiga pour venir du côté obscur de l’Atari ST, dans sa quête d’affichage de pixels !
Ce bref tutorial montre comment compiler, à partir de Linux, un programme en assembleur pour le TOS de l’Atari ST
avec le compilateur vasm
et le linker vlink
.
Le fichier exécutable sera exécuté avec l’émulateur HATARI comme dans l’article sur la cross-compilation en C.
L’objectif de ce petit tutorial est de compiler 2 programmes C pour TOS puis GEM, à partir de Linux.
Les fichiers exécutables seront testés avec l’émulateur HATARI, avant d’être réllement exécutés sur un Atari ST en “plastique et en os”.
The objective of this little tutorial is to compile two C programs for TOS and then GEM, from Linux.
The executable files will be tested with the HATARI emulator, before being actually executed on an Atari ST in “plastic and bones”.

Retour en 1986, Nom de Zeus ! Je vais t’expliquer comment fonctionnait le bootsector sur les disquettes 3’1/2 double faces, sur THOMSON TO8.
L’objectif : comprendre la structure du bootsector pour y déposer un petit programme écrit en assembleur et qui s’exécutera automatiquement.
Dans la série “comment compiler à partir de Linux pour une autre machine”, l’objectif
de ce mini-tutorial est d’obternir un .BIN
pour Thomson MO5 avec l’assembleur C6809
.
Le fichier exécutable sera testé avec l’émulateur DCMOTO de Daniel Coulom avant d’être transféré sur un véritable MO5.