L'informatique rétro (apprendre et comprendre)

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche

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 mois, 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 a partant de rien (ou presque).

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 moderne" dans son aspect le plus fondamental... pour recréer un ordinateur en partant de rien avec les technologies d'antan.

Intro-retro-informatique-moderne.png

Je vous invite dans parcours initiatique que j'ai suivit.

Le but étant re-créer/re-concevoir un ordinateur 8 ou 16bit à la mode "retro" en repartant de rien (ou presque).

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.

AdrianBlack.png

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é.

8BitGuy.png

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!".

BenEater-8bits-breadboard-computer.png

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!

Ch 3: Bravo 8 bit computer

Maintenant ça devient sérieux.

Bravo-8bit-computer.png

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).

Bravo-8bit-computer2.png

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.

Seul un terminal est nécessaire pour dialoguer avec la machine par l'intermédiaire du port série. Celle-ci dispose également d'un mini OS (rien à voir avec un DOS) mais déjà assez pour charger un jeu pong et l'exécuter dans un terminal.

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!

Ch 4: Assembleur Z80

Comme indiqué dans le projet "Z80 Retro" un peu plus loin, ce processeur est encore largement employé aujourd'hui. La force du Z80 c'est sa simplicité assorti de nombreuses fonctionnalités.

Faut-il encore savoir comment aborder l'assembleur Z80 avant de se lancer dans le projet "Z80 rétro" décris plus bas.

J'ai promis de faire l'impasse sur la plateformes Rétro habituelles mais il faut reconnaître que c'est plus facile d'apprendre l'assembleur Z80 sur une plateforme existante.

Voici donc le "Z80 Assembly language tutorial" de Matt Heffernan

Z80-assembly.png

Derrière cette série en 12 épisodes YouTube, il est possible d'apprendre et comprendre les rudiments de l'assembleur Z80 sur "ZX Spectrum".

La grande idée de la série de tutoriels en 12 épisodes (12 leçons) est d'utiliser un émulateur "ZX Spectrum" pour tester les programmes assemblés. Du coup, on ne quitte pas son PC pour cette partie de l'apprentissage.

Voici ce que l'on y apprend:

  • Les bases
  • Les modes d'adressage
  • Déplacement des données
  • Exécution conditionnelles
  • Arithmétique
  • La pile (Stack en anglais)
  • Les opérations binaires et décalages (à droite et à gauche)
  • Opérations IN et OUT
  • Complément d'informations
  • La ROM
  • Introduction au Graphisme
  • Les interruptions

Ressources:

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

Là il faut s'accrocher mais cela vaut le coup! A ne pas aborder sans connaissances préalable!

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.

X86-breaboard-computer.png

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

Ceci n'est pas un projet pour débutant!

Le Z80 est l'un des processeurs les plus populaires de tous les temps avec le 6512. 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).

Z80-Retro.png

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.

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é).

John partage avec nous les documentations dont il dispose et son expérience.

Z80-Retro2.png


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.

Ressources:

Ch 6: Ressources complémentaires

  • Homebrew CPU de James Sharman : un autre projet avec un CPU capable de faire un pre-fetch de plusieurs instructions instructions et réalisation d'une carte VGA. Le système 8bit le plus puissant de tous les temps.... Aussi un référence de choix.
  • RC2040 (Z80Kits) Plateforme autour du Z80 mais c'est tellement touffu et avec tellement de configuration que je m'interroge sur un tel achat pour un utilisateur peu expérimenté.
  • Zeal 8 Bit computer : pour moi l'intérêt réside dans le module VGA réalisé avec un FPGA et prenant en charge des tiles (tuiles, donc orienté jeu). Les quelques vidéo YouTube présentent peu d'informations pratiques, ce qui est bien regrettable.
  • My Z80 Linux Development stack