Sur la carte du Gigatron, il manque une pièce assez importante pour un ordinateur : le microprocesseur.1

À sa place, Marcel van Kervinck et Walter Belgers ont assemblé le CPU avec une poignée de circuits logiques de la série 7400. Des puces simples, dont les portes, registres et multiplexeurs peuvent encore être suivis sur le schéma sans devoir accepter qu’un rectangle noir contient plusieurs milliards de transistors et probablement des secrets.1

Le résultat est un ordinateur 8 bits capable d’afficher une image, produire du son, lire des entrées et faire tourner des programmes.1

Le projet n’a pas été conçu pour battre une machine moderne. Il a été conçu pour rendre l’ordinateur compréhensible en le construisant.

Retirer le microprocesseur pour retrouver le CPU

Sur un ordinateur contemporain, apprendre ce qu’est un CPU commence généralement par une abstraction.

On dessine une unité arithmétique, quelques registres, un bus, un compteur de programme. Puis on explique que la vraie puce fait ça, mais des millions de fois plus compliqué.

Le Gigatron prend l’autre direction.

Ses circuits logiques constituent directement un processeur 8 bits. Le site du projet explique qu’il n’utilise aucun composant logique complexe, pas même un microprocesseur.1 Les unités fonctionnelles ne sont donc pas seulement des cases dans un diagramme pédagogique. Elles existent physiquement sous les yeux de la personne qui assemble la carte.

C’est un choix de design assez radical : simplifier la machine jusqu’au point où son fonctionnement peut redevenir un objet manipulable.

La contrepartie est évidente. Quand on retire les circuits spécialisés, quelqu’un doit reprendre leur travail.

Ce quelqu’un est le CPU.

Le processeur fabrique aussi l’écran

Le Gigatron ne possède pas non plus les puces périphériques qu’on attendrait pour gérer séparément la vidéo, le son et certaines entrées-sorties.1

Le processeur principal effectue lui-même ces tâches.

Cela crée une machine assez étrange : l’exécution des programmes partage son temps avec la nécessité de produire le signal vidéo. Le CPU n’est pas uniquement occupé à calculer ce que l’application lui demande. Il doit aussi continuer à alimenter l’écran au bon rythme.

Cette contrainte pourrait ressembler à une faiblesse qu’il faudrait cacher.

Le projet en fait plutôt une partie de son architecture pédagogique.

Quand on programme le Gigatron à bas niveau, on finit par comprendre que « afficher une image » n’est pas une fonction abstraite offerte gratuitement par le matériel. Quelque chose doit générer chaque ligne, au bon moment, tout en laissant assez de cycles au reste de la machine.

Une vieille limitation devient une manière assez efficace de montrer où passe réellement le temps d’un ordinateur.

Puis le Gigatron invente un deuxième CPU dans le premier

C’est là que le projet devient plus amusant.

Le processeur matériel est très minimal. Pour rendre la machine plus agréable à programmer, la ROM implémente un CPU virtuel 16 bits, appelé vCPU.2 3

Ce processeur logiciel s’exécute lorsque le CPU physique n’est pas occupé par les tâches temporelles critiques, notamment la génération vidéo.3

On obtient donc une pile inhabituelle :

le matériel construit avec des portes TTL exécute une petite machine virtuelle, qui offre à son tour un jeu d’instructions plus pratique aux programmes.

Ce n’est pas une émulation ajoutée après coup uniquement pour le spectacle. Le dépôt contient le compilateur, la documentation du vCPU, ses appels système, des programmes en BASIC, des exemples C et les outils utilisés par la machine.2

La simplicité du hardware n’interdit pas l’abstraction. Elle la déplace dans une couche qu’on peut encore ouvrir et lire.

Comprendre en descendant une couche à la fois

Frans Faase a publié une longue exploration de la programmation du Gigatron après avoir étudié son émulateur et sa ROM.3

Son parcours illustre bien l’intérêt de la machine.

Il commence par reformuler les instructions matérielles en pseudo-C pour comprendre ce que chaque combinaison de bits fait réellement. Puis il analyse le processeur virtuel et la manière dont ses instructions sont encodées. La frontière entre « CPU », « firmware » et « langage » devient beaucoup moins nette qu’elle ne l’est dans un ordinateur moderne.3

C’est précisément ce que le Gigatron rend visible.

On peut partir d’un programme relativement haut niveau, descendre vers le vCPU, puis vers les instructions natives, puis vers les circuits logiques qui réalisent ces instructions.

Le modèle mental ne s’arrête pas à « le processeur s’en charge ».

La contrainte crée aussi des idées bizarres

Le projet a continué à empiler des astuces sur cette base minuscule.

Le dépôt documente des compilateurs, des jeux, du son, des extensions de mémoire et même une émulation 6502 permettant d’exécuter du code Apple-1.1 2

Ce genre de résultat est moins intéressant comme benchmark que comme exercice de conception.

Quand une machine possède très peu de ressources et qu’on refuse de les remplacer par une puce plus puissante, chaque nouvelle fonction oblige à regarder précisément ce qui existe déjà et à trouver où elle peut se glisser.

Sur un ordinateur moderne, on résout souvent un problème avec une nouvelle bibliothèque, un nouveau processus ou davantage de mémoire. Sur le Gigatron, la question ressemble davantage à : quels cycles sont réellement libres entre deux morceaux du signal vidéo ?

C’est une manière assez différente de programmer.

Un kit conçu pour être fini, puis démonté mentalement

Le Gigatron était vendu comme kit. Le site officiel indiquait avoir atteint environ 1 000 unités en 2020, avant l’arrêt de la production commerciale par les créateurs.1

Le code logiciel était publié sous licence BSD depuis le début. Le projet a ensuite publié les fichiers de PCB et annoncé en juin 2020 que l’ensemble était devenu entièrement open source.1 2

Cela compte pour un objet pédagogique.

Une machine réellement inspectable ne doit pas seulement montrer ses composants. Elle doit laisser accéder à sa ROM, ses outils, ses schémas et sa logique de construction.

Le Gigatron est aujourd’hui plus intéressant comme système à étudier et reconstruire que comme ordinateur à « utiliser » au sens ordinaire.

C’est probablement ce qui lui évite de devenir un simple objet rétro.

Parfois, apprendre demande une machine moins bonne

Un processeur moderne est immensément plus rapide, plus efficace et plus capable.

Il est aussi presque impossible à comprendre dans son intégralité.

Le Gigatron fait volontairement un ordinateur moins performant pour préserver une propriété devenue rare : une personne motivée peut encore suivre le chemin depuis les portes logiques jusqu’au programme qui tourne à l’écran.

Ce n’est pas une nostalgie de l’époque où les ordinateurs étaient lents et les écrans avaient besoin qu’on les nourrisse ligne par ligne.

C’est un rappel utile sur les outils pédagogiques : la meilleure machine pour apprendre n’est pas toujours celle qui cache le plus de complexité.

Parfois, il faut au contraire retirer quelques couches jusqu’à ce que le mécanisme réapparaisse.