L'informatique rétro (apprendre et comprendre)
Introduction
C'est la deuxième fois que je me laisse aller à écrire quelques mots plus "personnel" sur le savoir accumulé.
Dans les années 80 à 90, il était courant de retrouver des schémas descriptifs et des explications concernant le fonctionnement général de nos ordinateurs. Sans pour autant comprendre, à l'époque, la réelle implication de Peek et Poke.
C'était le temps du Commodore 64, Amiga, ZX Spectrum, Atari, etc. Les ordinateurs modernes ne perçaient pas encore le domaine du grand public, le téléphone était encore attaché au mur et Internet quelque-chose qu'il fallait encore inventer!
Je suis régulièrement nostalgique de cette époque où pouvoir contrôler du matériel et en comprendre le fonctionnement (même grossièrement) signifiait encore quelque-chose!
La nostalgie aidant, je furette donc de temps à autre les blogs et chaîne YouTube sur le sujet. Il faut dire que la chaîne YouTube "Adrian's Digital Basement" à été pour moi une grande source de découverte et redécouverte. Si vous lisez ces lignes, il y a de fortes chances que vous connaissiez déjà cette chaîne.
Et l'aventure MC Hobby m'a aussi apporté son lot de savoir plutôt orienté "électronique" (voyez l'article "Origine des connaissances" si cela vous intéresse).
Ces derniers moi, j'ai agrémenté mon savoir d'informations techniques sur ces technologies d'un autre age. J'ai découvert que l'on pouvait re-concevoir un ordinateur 8-bits ou 16 bits.
Un parcours initiatique
Il n'est pas question ici de détailler le fonctionnement d'un Commodore 64, d'un Amiga ou toute autre machine ayant existé.
Nous allons faire de la rétro-informatique dans son aspect le plus fondamental... pour recréer un ordinateur en partant de rien... puis voir comment faire évoluer ces connaissances pour en faire d'autres choses tout aussi intéressante.
Je vous invite donc dans mon parcours initiatique pour re-créer/re-concevoir un ordinateur 8 ou 16bit à la mode "retro" en repartant de rien!
Ch 1: La curiosité
Je l'ai déjà dis, là chaîne YouTube "Adrian's Digital Basement" d'Adrian Black est un puits de curiosités.
Ce gars qui ne connaissait rien en électronique est devenu un réparateur pro. Il explique ses découvertes et son apprentissage. C'est certains qu'il revisite des machines éminents connue mais voir ce qu'il y a sous le capot et comment les réparer c'est vraiment très intéressant.
Cela ne l'empêche pas d'explorer d'autre type de machines plus rare (comme un SWTPC 68000) nécessitant de la recherche et de la pugnacité.
La chaîne de 8 Bit Guy est aussi intéressante... mais on est moins proche du matériel. Il n'empêche que certaines vidéos sont techniquement très intéressantes. Les vidéos se font plus rares depuis le développement de son jeu "The Attack of the Petscii robot".
Ch 2: Retro-computing - les bases
Fût un jour où je suis tombé sur les vidéos de "Ben Eater" dont le titre était pour le moins interpellant "Building an 8-bit breadboard computer!".
Cette série de vidéos tente bien de réaliser un ordinateur 8 Bit élémentaire en utilisant de simples composants que l'on peut facilement se procurer. De surcroît, celui-ci est monté sur breadboard!
J'ai gardé un oeil sur ce projet tout en le trouvant assez extravagant. Sur le plan technique, c'est captivant!
A la fin de ce projet, il y a bien une machine capable de fonctionner et de faire des opérations. Il est à la source de nombreux autres projets du même type, certains beaucoup plus avancés.
Certes c'est un ordinateur rudimentaire mais c'est quand même un ordinateur!
- Building an 8-bit breadboard computer de Ben Eater
- Build a 65c02-based computer from Scratch de Ben Eater
Ch 3: Bravo 8 bit computer
Maintenant ça devient sérieux.
Sur base du projet de Ben Eater, Config IO à re-créer un ordinateur 8 bits plus évolué que celui de Ben Eater. Il utilise toujours exclusivement des composants logiques.
Cet ordinateur est constitué d'une série de cartes empilées. Chaque carte reprenant une ou deux fonctionnalités de base. Chaque fonctionnalité expliquée en détail et complètement testée grâce à un Arduino Mega (c'est comme un test script hardware).
Ce projet avancé et ses vidéos détaillées permettent de découvrir:
- le bus de données,
- le bus d'adresse,
- le génération du signal d'horloge,
- le Program Counter,
- les registres A & B,
- Les différents signaux de gestion (logique de contrôle)
- Le registre d'instruction,
- l'unité Arithmétique et logique (ALU),
- les opérations au niveau binaire/bus,
- le MicroCode en ROM, sortie, etc
- la sélection de banques
- l'UART (interface principale)
Le projet "Bravo 8bit computer" est développé en 14 vidéos YouTube.
A la fin du projet, plus besoin de l'Arduino Mega et l'ordinateur est fonctionnel.
C'est, en gros, la même information que le projet de Ben Eater mais avec améliorations et résultat plus professionnel.
8bit bravo computer est même possible d'acheter un kit!
- Bravo Project : playlist YouTube
- Bravo Project : Github
Contient la BOM, schéma, croquis Arduino (de test) et tout ce qu'il faut pour faire fonctionner cet ordinateur. - 8bitkits.com
Ch 4: Assembleur Z80
todo
Ch 5: projets avancés
A partir d'ici, il y a deux projets vraiment très intéressant mais d'un niveau nettement supérieur.
Pour moi, ils sont tout deux sur le même piédestal. Ils présentent tout deux un intérêt majeur dans leur domaine respectif.
- x86 breadboard computer de Saldor
- Z80 Retro de John's basement
Ch 5.1: x86 Breadboard computer
Le monde x86 est celui qui à succédé à la première génération d'ordinateur 8 bits familiaux. Après mon commodore 128 et mon Amiga 500, je suis passez sous x86 comme beaucoup d'entre-nous. J'utilise toujours du X86 même si c'est Linux. Difficile donc d'ignorer cette partie de notre histoire.
L'aventure commence avec le 8086 et 8088 (PC XT) ayant fait une timide percée, c'est le 80286, 80386 et 80486 qui aurons surtout fait une percée dans l'informatique domestique.
Quoi qu'il en soit, n'importe quel x86 ne fonctionne pas vraiment différemment d'un 8086/8088 et ce que l'on apprend avec un 8086/8088 (qui tient encore sur un breadboard) sera toujours d'application avec les processeurs suivants.
Ecrire un programme pour x86 (en assembleur off-course) demande nettement plus de préparation que pour les autres ordinateurs 8bit présentés ci-avant (ou Z80). On passe aussi à 16 bits.
C'est en cela que les vidéos de Slador sont vraiment intéressantes. Elles sont détaillées et contiennent assez d'informations pour pourvoir les suivre à condition d'avoir un minimum .
Au moment de l'écriture de ces lignes (juin 2022), j'attends la 7ième vidéos avec impatiente mais Saldor m'a informé qu'elle demande beaucoup de préparatifs.
Que découvre ton dans ces vidéos:
- Créer un premier programme 16-bit pour un Intel x86
- Memory Map (carte mémoire) et interruptions
- Plus d'interruptions et afficheur LCD
- Conventions d'appels et exécution pas-à-pas
- Contrôleur d'interruption et timers (partie 6)
Ch 5.1: Z80 Retro
Z80 Retro est la série de vidéo Youtube concernant la re-création d'un ordinateur plus périphériques autour d'un processeur Z80. Le support physique de stockage est ici un lecteur de carte SD, ce qui l'écriture d'un pilote SPI en assembleur.
Le Z80 est l'un des processeurs les plus populaires de tous les temps. Il était abondement utilisés dans l'aire pré-x86 et est resté très populaire aujourd'hui (le Z80 est toujours fabriqué et vendus en 2022).
Ce n'est pas tout, John implémente le bios nécessaire pour faire fonctionner un CP/M 2.2 pour cet ordinateur. CP/M c'est l'ancêtre du DOS (disons que DOS s'en ai largement inspiré).
C'est un très long projet avec des explications très détaillées. John papote trop mais, comme pour les autres références, cela en vaut la peine.
Parmi les plus belles vidéos, il y a "How the CPU controls everything". J'étais tombé sur cette vidéo un peu part hasard et ce qui m'a incité à poursuivre l'exploration du projet.