SDK C/ASM thomson

Version actuelle : vital-to8-sdk-r1.1.zip

Les TO8 et TO9+ sont des machines relativement puissantes et dont la RAM vidéo reste d’une taille raisonnable, il est donc possible d’obtenir des demos et jeux de bonne qualité sur ces machines.

Le but de ce projet est de constituer une chaine de développement complête et réutilisable pour développer en C et ASM sur ces machines.

La cible est la constitution d’une image disque au format SAP, à partir d’un ensemble de sources C et assembleur. Le tout avec une séparation suffisante du framework et de projet lui même.

Un projet type sera livré, il s’agit de terminer une version TO8 du célebre Asteroid.

L’existant

Les éléments GCC6809 et les outils périphériques proviendront pour le moment de la page nostalgies.thomsonistes.org

D’autres élements (dont un make adapté au mode ligne de commande DOS) proviendront du SDK vectrex.

Des versions plus récente de GCC seront ajoutées par la suite (les versions 2.81 et 2.95 commencent à dater un peu…), probablement par ajout et non par remplacement.

Etape 1 : Tester les éléments

 A partir du tutoriel fourni sur le site nostalgies.thomsonistes.org, on contrôle que tous les éléments permettent effectivement de compiler des choses… Un simple « Hello world » pour le moment

[edit du 28/08/2009]

Pas vraiment de succès dans cette étape:
Les outils de nostalgies.thomsonistes.org sont un peu bordéliques et pas totalement fonctionnels sous Win XP, éventuellement en modifiant le PATH on doit pouvoir s’en sortir mais bof, le but est de placer ses fichiers dans un répertoire puis lancer un make ou tout au plus un ..\..\make.

De plus la cible n’est pas d’avoir une libC, il ne s’agit pas de redévelopper UNIX sur thomson, juste d’avoir un langage compilé efficace.
 
Les outils vectrex sont mieux packagés mais trop vieux, l’outil stobin ne fonctionne pas sous WINXP, il utilise l’extendeur DOS v1.0 de djgpp.

Il faut au minimum reconstituer un STOBIN qui tourne sous WinXP. Cet outil pourra en retour être repackagé dans le compilateur C Vectrex…

[edit du 31/08/2009]

Un nouvel utilitaire stobin compilé avec mingw32 a été constitué à partir d’éléments maison (issus d’une première version d’un SDK TO8). Le tout sur une nouvelle page spécifique à un SDK vectrex porté win XP. Le tout est presque suffisant pour créer des cartouches pour la famille des TO/MO.

Etape 2 : Constituer le Makefile

La compilation ne doit pas se faire dans la douleur. Une simple commande doit permettre d’enchainer toutes les étapes de la compilation jusqu’à la constitution d’une image disquette. L’émulateur doit également pouvoir être lancé immédiatement, idéalement par une rêgle du makefile.

Etape 3 : Repackager

Le compilateur C vectrex ayant été remis sur pied, on ajoute la possibilité de compiler pour TO8 à ce même package.

Cela donne l’archive suivante: TO8_SDK.ZIP ( [edit] Attention : ce SDK est obsolète)

Etape 4 : Tester

Un premier Hello World… (demo dans projets/TO8_DEMO)

D’autres tests sont à faire pour confirmer le fonctionnement du compilateur:

_ test des appels de fonction;

_ test de différentes structures C, différents types de donnée (integer, char, struct);

_ ajout d’autres fonctions du moniteur;

_ tenter un projet de taille plus importante.

Etape 5 : Tout refaire

Il faut reconnaitre que le SDK première version est difficilement utilisable. GCC n’est pas fiable sur le code 6809. Il existerait un autre portage plus récent mais ca reste du GCC, c’est un peu lourd à mettre en oeuvre pour du déceloppement 8bits.

Après quelques recherches, ce sont l’obscur mc09 associé à l’assembleur cc6809 de prehisto qui formeront la chaine de compilation. Quelques outils de packaging spécifiques sont ajoutés (sapfs, un stobin thomson…) pour former le SDK thomson Vitalmotion (puisque j’ai intégré ce groupe de demomakers).


La nouvelle mouture du SDK est donc ici vital-to8-sdk-r1.1.zip

3 exemples sont inclus:

_ un programme purement asm (toujours l’asteroid incomplet);

_ une chaine de restitution de modules .mod sur to8

_ un tout petit exemple de code C avec mc09