ZX81 – Retour aux sources

Un premier article pour ce blog alors que je peine à terminer l’administration de son hébergement web. Des certificats SSL qui oublient de se renouveler, un wordpress qui plante sans rien dire et un VPN qui refuse catégoriquement d’établir une connexion. Administrateur système c’est un métier ! Mais allons-y quand même…

J’ai eu récemment la chance de visiter le conservatoire Aconit à Grenoble où de braves bénévoles gèrent un immense stock de machines retraçant toute l’histoire de l’informatique au XXe siècle. Les mainframes IBM et les bus BCD 6 bits se mêlent aux trieuses de cartes perforées, formant un ensemble hétéroclite mais au combien satisfaisant pour le geek oldschool que je suis.

Parmi les collections de micro-informatique, j’aperçois le fameux Sinclair ZX81. Il passerait presque inaperçu dans son petit boitier noir et rouge mais il m’assène sous un torrent de vieux souvenirs. Car c’est bien sur cette machine que mon père m’apprit mes premières lignes de code dans les années 1990.

Sinclair ZX81 (Crédits photo : wikipedia)

Bien sur, il état déjà obsolète à l’époque. La machine familiale tournaient sous Windows 3.1 et les plus chanceux d’entre-nous travaillaient avec Windows 95. Mais ça restait correct pour s’essayer aux bases de la programmation. Un essai qui se révélera court devant l’impossibilité d’enregistrer et de charger correctement un programme depuis une cassette audio, support favori des machines de cette époque.

La machine originale ayant été perdue, plusieurs émulateurs sont disponibles. Celui-ci fonctionne sous Windows. Vingt ans après, le plaisir est intact ! Un premier programme de conversion de décimal vers hexadécimal permet de me familiariser à nouveau avec le BASIC Sinclair.

Code BASIC
Exécution

Bien sur, le calcul par les puissances de 16 n’est pas des plus efficaces et les grands nombres prennent plusieurs secondes à être convertis malgré les instructions FAST et SLOW qui permettent respectivement de désactiver l’affichage (au prix d’un bel écran noir) et de le réactiver, celui-ci étant entièrement géré par le processeur Z80, un défaut bien connu du ZX81.

On pourrait améliorer l’algorithme mais je n’ai pas l’âme d’un mathématicien. Aussi, je vais essayer de passer directement en assembleur où des instructions de décalage de bits seront bien plus efficaces que des divisions par 16 !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *