Il y a quatre ans, Upsilandre créait une demo technique d'Axelay tournant comme par magie sur une NES non modifiée. Aujourd'hui, il prouve une fois de plus qu'il est l'homme qui sait parler à l'oreille des machine, car il nous revient après avoir codé une démo de casse-brique sur le plus vieil ordinateur qu'on puisse programmer à l'heure actuelle, l'EDSAC de 1949 ! Il nous offre ici un casse-brique qui aurait pu tourner tel quel en 1949, des décenies avant Breakout et Arkanoid !
En une séquence de 3611 caractères, le développeur a su tirer parti des faibles performances de la machine pour pouvoir fournir 12 fps avec un comportement de balle et des collisions très propres. Il peut être fier du résultat fièrement affiché sur la très faible résolution de 35x17 pixels.
Malheureusement la démo n'est pas jouable car l'EDSAC n'a pas d'input RT sans interruption de l'exécution. La seule interaction qu'il a pu implémenter est le choix de la position initiale de la balle parmi 10 grâce au cadran de téléphone qui était utilisé par le jeu OXO (1952).
Et à cette occasion Upsilandre propose une petite virée historico-technique autour de l'EDSAC, peut-être le premier ordinateur moderne en usage conçu à l'université de Cambridge à partir de 1947 et opérationnel dès mai 1949. Il pouvait effectuer en une minute 15 000 opérations mathématiques dont 4 000 multiplications. Cet ordinateur a été utilisé en 1952 pour faire tourner le premier jeu graphique OXO.
Ces dernières semaines j'ai codé une démo de casse-brique sur le plus vieil ordinateur qu'on puisse programmer à l'heure actuelle, l'EDSAC 1949!
— Upsilandre (@upsilandre) August 22, 2023
27 ans avant Breakout et 37 ans avant Arkanoid. Et ça tourne plutôt bien ????.https://t.co/z6vsndiDrl#Retrogaming #EDSAC @_Adoru_ pic.twitter.com/uU0hX3Be3C
L'EDSAC : précurseur de la révolution informatique
L'Electronic Delay Storage Automatic Calculator (EDSAC), conçu à l'université de Cambridge à partir de 1947 et mis en service dès mai 1949, représente probablement le point de départ de l'ère moderne de l'informatique. Ses caractéristiques essentielles constituent les fondements de nos ordinateurs contemporains, définissant ainsi une architecture de Von Neumann. Doté d'un processeur central entièrement électronique composé de 3400 tubes à vide, l'EDSAC était équipé d'une mémoire vive, bien que sous une forme singulière.
L'architecture révolutionnaire de l'EDSAC
L'EDSAC se démarque également par sa méthode de stockage des programmes sur un support physique, à savoir le ruban perforé. Un élément unique était la présence d'une machine capable de dupliquer ces programmes. De plus, une ROM de démarrage (boot ROM) s'initialisait automatiquement dans la mémoire vive lors de la mise sous tension, renfermant un proto-bios ou proto-assembleur (appelé "L’Initial Order"), qui bien que primitif avec seulement 40 instructions, allait servir d'inspiration pour les développements futurs. Ainsi, le programme enregistré sur le ruban était chargé automatiquement dans la RAM par l'Initial Order, puis exécuté, suivant ainsi le schéma de fonctionnement des ordinateurs modernes.
L'EDSAC et son impact sur l'univers du Jeu Vidéo
L'EDSAC a également laissé une marque dans l'histoire des jeux vidéo grâce à son programme OXO, un jeu de morpion créé en 1952. Ce qui était originellement destiné au débogage de la machine, le monitoring de l'EDSAC, s'est avéré être un moyen détourné pour afficher des images pixelisées. En utilisant ce dispositif, il était possible de créer un framebuffer, bien que de résolution limitée (35x16). Cette innovation a ouvert des horizons passionnants pour le développement de véritables jeux d'action en temps réel, suscitant un intérêt considérable.
Contraintes et réalisations de l'EDSAC
Cependant, les performances de l'EDSAC demeuraient modestes, avec à peine quelques centaines d'instructions par seconde. Son jeu d'instructions rudimentaire (composé d'une douzaine d'instructions) nécessitait parfois des combinaisons pour égaler une instruction standard d'un CPU plus moderne. Malgré ces limitations, Upsilandre avait l'ambition de créer un jeu de casse-brique, bien qu'il doutait de sa faisabilité en temps réel, avec un objectif de 5 images par seconde. Avec persévérance et optimisation minutieuse, chaque instruction a été soigneusement ajustée pour aboutir à un résultat impressionnant, atteignant une moyenne d'une douzaine d'images par seconde, avec une balle en mouvement fluide et des collisions impeccables.
L'héritage et les limitations
Malheureusement, la démo réalisée ne pouvait pas être jouée, car l'EDSAC ne disposait pas d'entrées en temps réel pour une interaction directe avec le jeu. Bien que le cadran de téléphone puisse être utilisé pour interagir, il y avait un délai dans les commandes (utilisé pour OXO pour sélectionner l'une des neuf cases). Cette interaction nécessitait l'interruption de l'exécution. Néanmoins, la démo offrait un aperçu fascinant des possibilités offertes en 1949. Upsilandre avait même exploité le cadran de téléphone pour permettre aux joueurs de choisir la position initiale de la balle parmi dix options différentes, et l'imprimante était utilisée pour l'introduction du jeu.
Un défi passionnant : programmation de l'EDSAC
La programmation de l'EDSAC représentait un défi intéressant et complexe. Malgré sa complexité, des éléments familiers étaient présents, ce qui rendait l'expérience à la fois déroutante et enrichissante. Pour se plonger davantage dans l'ambiance de l'époque, un livre de programmation datant de 1951 (considéré comme l'un des tout premiers) offre un aperçu de la manière de programmer sur l'EDSAC.
Définitions
- EDSAC : Acronyme de "Electronic Delay Storage Automatic Calculator", le premier ordinateur moderne opérationnel à partir de 1949.
- Von Neumann : Référence à l'architecture de Von Neumann, un modèle d'architecture informatique basé sur le concept de stockage de données et d'instructions dans la même mémoire.
- CPU : L'unité centrale de traitement, le cerveau d'un ordinateur qui exécute les instructions.
- RAM : Mémoire vive, où les données et les programmes en cours d'utilisation sont stockés temporairement.
- ROM : Mémoire morte, une mémoire non volatile utilisée pour stocker des données en lecture seule.
- Framebuffer : Une zone de mémoire qui stocke les données d'image affichées sur un écran.
- FPS : Images par seconde, une mesure de la fluidité d'une animation ou d'une vidéo.
- Débogage : Processus de recherche et de correction des erreurs dans un programme informatique.