Retro-Programming Atari / Thomson

Ensemble des articles liés à la programmation "Rétro" sur Atari ST, Thomson MO5 et TO8
Bienvenue dans la partie la plus "Rétro" de ce site !
Ici, que de vieux trucs, mais avec quelques outils modernes ou presque.
Articles Atari ST
> Tutoriel en C et Assembleur pour jouer des chiptunes.

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! et YM3! ;
  • 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 !

Rocket Launch

> Du code C qui appelle de code Assembleur et réciproquement

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…

> Un petit simulateur pour la compréhension du 4 bitplanes de l'Atari ST

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.

> Structure de la mémoire vidéo en 320x200 de l'Atari ST

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 !

> compilation Assembleur pour TOS avec VASM et VLINK

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.

> cross-compilation d'un Helloworld pour TOS et GEM

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”.

> cross-compiling a Helloworld for TOS and GEM

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”.

Articles Thomson
> Ecriture d'un programme sur le Bootsector d'une disquette avec l'aide de Groovy.

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.

> cross-compilation Assembleur MO5 avec C6809

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.