Microsoft libère enfin le code source du BASIC 6502
Allez, on va jouer à un jeu !
Tapez “STORD0” dans un vieil émulateur Commodore et regardez ce qui se passe. Non, ce n’est pas une commande documentée mais bien un Easter egg planqué dans Microsoft BASIC depuis 1977.
Et si je vous parle de ça, c’est parce que j’ai une bonne nouvelle. En effet,
Microsoft vient de libérer le code source
de ce BASIC 6502 historique sous licence MIT. Quarante-sept ans après sa création donc, on peut enfin fouiller dans les entrailles du programme qui a fait tourner des millions de machines mythiques de l’ère 8-bits. Et croyez-moi, c’est une mine d’or pour comprendre comment deux jeunes de 20 ans ont posé les fondations de ce qui deviendrait plus tard, le plus gros empire logiciel de la planète.
L’histoire commence donc en 1975
. Gates et Allen viennent de créer Microsoft (encore avec un tiret à l’époque : Micro-Soft) et leur premier produit, c’est un interpréteur BASIC pour l’Altair 8800. Le truc, c’est qu’ils n’avaient même pas la machine, du coup, ils ont développé l’émulateur sur un PDP-10 de Harvard, en se basant uniquement sur les specs du processeur Intel 8080. Et quand ils ont finalement testé leur code sur une vraie machine, ça a marché du premier coup.
La chance des débutants, on va dire ^^.
Deux ans plus tard, le MOS 6502 débarque. Moins cher que l’Intel 8080, plus simple, il va devenir LE processeur de la révolution micro-informatique. Chuck Peddle, son créateur chez MOS Technology, avait un objectif simple qui était de concevoir un processeur à 25 dollars au lieu de 300 pour l’Intel 8080. Mission accomplie évidemment… et devinez qui voulait absolument un BASIC pour accompagner son nouveau processeur ?
Commodore, qui venait de racheter MOS Technology.
La négociation entre Jack Tramiel (le légendaire patron de Commodore) et Bill Gates est même devenue mythique dans l’industrie. Tramiel, survivant de l’Holocauste devenu roi de la calculatrice puis de l’informatique, était réputé pour être un négociateur impitoyable.
Sa philosophie c’était “Business is war”
… Je vous laisse imaginer la mentale du bonhomme.
Et face à lui, Bilou Gates, 22 ans, lunettes énormes, qui demandait initialement 3 dollars par machine vendue. Tramiel a ri et proposé un deal unique : 25 000 dollars cash pour une licence perpétuelle. Gates a accepté…
Aujourd’hui, si Microsoft avait gardé les royalties à 3 dollars par unité comme Gates le voulait initialement,
avec 17 millions de Commodore 64 vendus selon Guinness World Records
, ils auraient touché plus de 50 millions de dollars rien que sur cette machine.
Mais le génie de Gates et Allen, c’était pas forcement le commerce, c’était surtout leurs capacités technique car adapter un BASIC conçu pour l’Intel 8080 au 6502, c’était pas de la tarte. Les deux processeurs avaient des architectures complètement différentes. L’Intel 8080 avait plus de registres, le 6502 compensait avec sa page zéro ultra-rapide. L’équipe Microsoft (qui comptait alors une dizaine de personnes) a dû réécrire une bonne partie du code en assembleur 6502, optimiser chaque routine pour tenir dans la mémoire limitée de l’époque… Je vous parle quand même de machines avec 4 Ko de RAM, hein, pas 4 Go !
Le code source qu’on peut consulter aujourd’hui révèle tous ces détails fascinants sur ces optimisations. Par exemple, la routine de multiplication utilise une technique de décalage et addition super élégante pour économiser des cycles processeur. Les chaînes de caractères sont gérées avec un système de garbage collection rudimentaire mais efficace. Chaque octet comptait, chaque cycle processeur était précieux. C’est de l’artisanat pur du code, à des années-lumière de nos frameworks JavaScript de 500 Mo.
L’impact de ce BASIC 6502 sur l’industrie a d’ailleurs été monumental. Steve Wozniak s’en est inspiré pour créer Integer BASIC puis Applesoft BASIC sur l’Apple II. Atari l’a utilisé comme base pour son Atari BASIC. Le TRS-80 Color Computer de Tandy/Radio Shack tournait avec. Des millions d’enfants et d’adolescents dont je fais parti, ont appris à programmer avec, tapant leurs premiers “10 PRINT HELLO” et “20 GOTO 10” sur ces machines.
Microsoft explique dans l’annonce officielle
que cette libération fait partie d’un effort plus large pour préserver l’histoire de l’informatique. Certes, le Computer History Museum avait déjà publié certaines versions en 2014, mais là, c’est Microsoft directement qui ouvre ses archives. Le dépôt GitHub contient plusieurs versions historiques, incluant celles pour l’OSI Challenger 1P, le KIM-1, et bien sûr les différentes révisions Commodore.
Pour les nostalgiques et les curieux, le code est donc un vrai régal. Les commentaires en assembleur racontent une histoire. On voit l’évolution des bugs corrigés, les optimisations ajoutées version après version. Le fameux Easter egg STORD0/STORDO dont je vous parlais en intro est là aussi dans le code source. C’est un simple saut conditionnel vers une routine qui affiche “MICROSOFT!”, probablement ajouté lors d’une session de coding nocturne, quand Gates et Allen se permettaient un peu de fun dans leur code ultra-sérieux.
Au-delà de la nostalgie, cette libération a une vraie valeur éducative. Les étudiants en informatique peuvent étudier comment on programmait quand chaque byte comptait. Les développeurs d’émulateurs peuvent corriger des bugs vieux de 40 ans. Les historiens de l’informatique ont accès aux sources primaires d’un moment clé de notre industrie. C’est comme si on ouvrait les carnets de Léonard de Vinci, mais pour les geeks.
Microsoft a également choisi la licence MIT, ultra-permissive donc vous pouvez forker, modifier, vendre, faire ce que vous voulez avec ce code.
C’est un peu ironique quand on pense que Gates avait écrit sa fameuse
“Open Letter to Hobbyists” en 1976
, se plaignant du piratage de son BASIC Altair. Le jeune Bill qui pestait contre le partage gratuit de logiciels se serait bien marré en voyant Microsoft open-sourcer son travail aujourd’hui.
Ce qui est fou, c’est quand même de réaliser que ce petit bout de code a généré une industrie de plusieurs trilliards de dollars. Sans ce BASIC 6502, pas de Commodore 64 (la machine la plus vendue de l’histoire), pas d’Apple II tel qu’on le connaît, pas de génération de programmeurs formés dans les années 80. Microsoft aurait peut-être mis la clé sous la porte sans ces revenus initiaux et l’histoire de l’informatique personnelle aurait été complètement différente.
L’équipe de Microsoft en 1978
Maintenant, pour ceux qui veulent jouer avec, le code compile toujours avec les assembleurs modernes comme ca65. Vous pouvez donc le faire tourner dans n’importe quel émulateur 6502. Certains ont déjà commencé à créer des versions modernisées, ajoutant des commandes, corrigeant des bugs historiques, ou portant le code sur des architectures modernes. Le projet est donc hyper vivant sur GitHub, avec déjà des dizaines de forks et de pull requests.
Un détail amusant c’est que ce code révèle que Microsoft avait prévu dès le départ la possibilité d’étendre le langage avec des commandes custom. Une architecture modulaire en 1977, c’est fort ! Certains constructeurs comme Commodore ont d’ailleurs ajouté leurs propres extensions pour gérer les sprites, le son, les graphismes. Et le code BASIC de Microsoft, solide comme un roc, continuait de tourner de la même façon sur toutes les machines.
Cette libération arrive également à un moment symbolique car l’informatique rétro n’a jamais été aussi populaire. Des projets comme le
Commander X16
de David Murray tentent de recréer l’esprit des machines 8-bits avec du hardware moderne et ce BASIC 6502 open source pourrait devenir la base de nouveaux projets éducatifs, de nouvelles machines rétro, ou simplement servir à comprendre d’où on vient.
Alors oui, c’est juste du vieux code. Mais c’est LE vieux code. Celui qui a permis à une génération entière de découvrir la programmation. Celui qui a transformé Microsoft de startup dans un garage en empire mondial. Celui qui cache encore, 47 ans plus tard, des Easter eggs et des secrets.
Donc, si vous avez 5 minutes, allez jeter un œil au
repo GitHub
. C’est un voyage dans le temps, à l’époque où 16 Ko de RAM c’était le futur, et où deux jeunes pouvaient changer le monde avec quelques milliers de lignes d’assembleur.
Source : korben.info