La maison du fou sur Atari 800XL

Après avoir publié deux pages sur les émulateurs Atari 8bits, dont une sur la mise en œuvre d’Altirra, j’ai redécouvert la programmation en Atari BASIC, en portant mon jeu d’aventure de référence La maison du fou. J’ai ainsi pu redécouvrir quelques spécificités intéressantes de ce BASIC un peu particulier.

Maison du fou sur Atari 800XL : une intro en mode graphique 1
Le listing

Voici le listing du programme adapté au BASIC de l’ATARI 800XL :

Pour charger ce programme dans Altirra, téléchargez le fichier, déplacez le dans le répertoire partagé avec l’émulateur (voir le tuto pour plus d’explications), et renommez le en mfou.bas. Enfin, depuis Altirra, saisir les commandes :

NEW
ENTER "H6:MFOU.BAS"
Spécificités du programme
  • GOTO et GOSUB : le numéro de ligne peut être contenu dans une variable. Il est ainsi possible d’écrire GOSUB SUBENTER, à condition d’avoir initialisé la variable SUBENTER avec le bon numéro de ligne. Les appels aux sous-routines sont donc plus lisibles !
  • Chaînes de caractères : les chaînes doivent être dimensionnées avec le nombre de caractères maximum. Ainsi, l’instruction DIM A$(12) ne déclare pas un tableau de 12 chaînes de caractères mais une seule variable de type chaîne d’une taille de 12 caractères. C’est très différent du BASIC Microsoft.

Pour effacer l’écran, point d’instruction CLS ou HOME. Il faut utiliser le caractère spécial CHR$(125) :

PRINT CHR$(125) : REM EFFACE L'ECRAN
  • Le traitement des erreurs se fait avec la commande TRAP suivie de la ligne à exécuter en cas d’erreur détectée. J’utilise TRAP pour gérer une erreur de conversion d’une chaine de caractère I$ en une variable numérique I grâce à la commande VAL (I correspond au choix du joueur parmi les options proposées). Le numéro de l’erreur est récupéré par PEEK(195) tandis que la ligne à laquelle l’erreur s’est produite est récupérée par PEEK(187)*256+ PEEK(186).
  • Pour commencer à afficher du texte à la colonne 0, utilisez la commande POKE 82,0
  • Les temporisations sont gérées grâce au compteur situé à l’adresse mémoire 20.POKE 20,0 permet de remettre à zéro le compteur, et PEEK(20) renvoie la valeur courante.
  • Pour vérifier qu’une touche a été pressée, vous pouvez utiliser l’adresse 764 (voir sous-routine ligne 2100)
  • Instructions graphiques : Les possibilités graphiques de l’ATARI 800XL étaient impressionnantes pour l’époque, grâce au processeur graphique ANTIC. J’aborde à peine le sujet dans cet article. Voici une explication des quelques commandes utilisées :
    • GRAPHICS permet de sélectionner le mode graphique. Le mode 0 est un mode texte, le mode 1 est « semi-graphique » car il permet d’afficher le texte en gros caractères en différentes couleurs. J’utilise le mode 1 pour la page d’introduction (lignes 6000 à 6120).
    • SETCOLOR permet de sélectionner les palettes de couleur. En mode graphique 0, SETCOLOR 2,X,0 permet de choisir la couleur de fond d’écran définie par X, compris entre 0 et 15. Dans cette version de la maison du fou, le fond d’écran change en fonction de l’étage où se trouve le jouer.
Couleur de fond du rez-de-chaussée

Il y a beaucoup d’autres choses à dire sur l’Atari BASIC, notamment sur les possibilités graphiques. Mais ceci fera l’objet d’un autre article, bien plus détaillé…

En attendant, bon courage pour sortir de la maison du fou !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.