L'année dernière après avoir bavé devant le prix des répliques de l'Altair (dans les $800 avec les frais de port
), je me suis offert
ce kit de PDP8 basé sur un Raspberry Pi pour beaucoup moins
J'en suis assez content même si je n'ai pas encore eu beaucoup de temps pour jouer avec, mais j'adore programmer ce genre de vieux trucs.
Un truc marrant que je n'avais jamais vu jusqu'ici est que le système n'a pas de pile
En effet, lorsque l'on appelle une sous-routine à l'adresse "X", au lieu d'empiler l'adresse de retour et de sauter à X, il écrit l'adresse de retour dans l'adresse X, et saute à l'adresse X+1; puis pour sortir de la sous-routine il n'y a pas d'instruction de retour, mais il suffit de faire un jump "indirect" à l'adresse X . C'est juste brillant
Autre truc sympa, faire du code auto-modifiant est totalement encouragé et même expliqué dans la doc officielle du produit (<= Message personnel au chargé de TD qui m'avait mis une note foireuse parce que "ça se fait pas"
).
Evidemment programmer la machine avec les switchs est marrant, mais pour faire un "vrai" programme il vaut mieux utiliser une console texte (vous pouvez en brancher une sur un port série, ou juste utiliser une connexion ssh sur votre réseau local), mais pour l'instant j'en suis toujours à utiliser les switchs.
Bref, je pourrais vous raconter pleins de trucs techniques amusants sur cette machine mais je préfère vous laisser les découvrir si vous voulez tenter l'assemblage (vous pouvez aussi télécharger
le user guide de 400 pages pour avoir un aperçu)
A propos de l'assemblage, c'était un peu laborieux. Rien d'impossible, mais il faut s'attendre à un peu de difficulté sur la partie mécanique. Les problèmes que j'ai eu sont :
- Les switchs ont une tolérance très (trop?) faible. J'ai du en raboter quelques uns avec un cutter pour pouvoir les faire passer par le trou rectangulaire du PCB
- Les instructions sont en Anglais sans aucun schéma et pratiquement aucune photo... il faut s'accrocher pour comprendre ce que le gars explique (exemple concret: le "Front" du PCB n'est pas le coté sur lequel "Front Panel" est écrit... ce qui dérange un peu pour trouver où placer les composants)
- En enfin, le boitier en bois de bambou n'a carrément pas la bonne taille... J'ai du utiliser un ciseau à bois pour pouvoir placer le front panel en plexiglas là où il va (et si vous regardez de près, ça se voit)
Un autre truc : J'avais acheté un Pi 3 pour l'occasion, mais ça nécessitait de faire des trous carrés sur le coté du boitier pour pouvoir accéder aux ports USB et ethernet, plus le charcutage d'un cable d'alimentation pour pouvoir le tourner de 90º dans la place disponible... du coup au dernier moment j'ai préféré mettre $10 de plus pour prendre un pi ZeroW qui est bien plus facile à caser dans le kit.
Bon, assez de blahblah
voici quelques photos du bazar :
La carte du front panel en cours d'assemblage :
Et le PDP8/i fini :
Une vidéo de mon premier programme : un effet rigolo avec les leds du front panel (les deux lignes du bas).
Comme j'ai loupé le timing (c'était beaucoup trop rapide) j'ai du filmer à 240 FPS
Du coup voici
une seconde vidéo à vitesse réelle d'un truc beaucoup plus simple où je me contente d'incrémenter l'accumulateur (la seconde ligne de leds en partant du bas).
PS: Oui, tous les registres et la mémoire de la machine utilisent des mots de 12 bits