Journal Microsoft libère le code de leur Basic pour le microprocesseur 6502

Posté par  (site web personnel) . Licence CC By‑SA.
22
4
sept.
2025

Le code est placé sous licence MIT. Il fait 6955 lignes d'assembleur 6502, commentaires compris. Ça donne un fichier de 158 ko. Un peu gros pour ce vénérable processeur qui ne pouvait adresser que 64 ko avec son bus d'adresse 16 bits.

L'annonce : https://opensource.microsoft.com/blog/2025/09/03/microsoft-open-source-historic-6502-basic/

Le github : https://github.com/microsoft/BASIC-M6502

  • # tu oublies que ça se compile

    Posté par  . Évalué à 10 (+10/-0).

    Ça donne un fichier de 158 ko. Un peu gros pour ce vénérable processeur qui ne pouvait adresser que 64 ko

    une fois compilé, les commentaires sautent et le code est beaucoup plus petit

    • [^] # Re: tu oublies que ça se compile

      Posté par  . Évalué à 7 (+5/-0).

      et j'oubliais : le code est prévu pour plusieurs machines différentes avec des conditionnels qui sautent à la compilation

      • [^] # Re: tu oublies que ça se compile

        Posté par  . Évalué à 9 (+8/-1). Dernière modification le 04 septembre 2025 à 20:44.

        et j'oubliais, bis : la taille indiquée par ton système de fichier moderne pour CPU 64 bits est celle d'un texte enregistré en unicode utf-8, je présume qu'un fichier texte ASCII enregistré sur un système de fichiers plus rudimentaire pour CPU 8 bits sera plus petit

        Une fois compilé, le code fait moins de 9 KB d'après Michael Steil

        • [^] # Re: tu oublies que ça se compile

          Posté par  (site web personnel, Mastodon) . Évalué à -6 (+5/-12).

          L'avantage d'unicode utf-8, c'est qu'il tient sur un seul octet quand on reste sur ASCII (ce qui est forcément le cas). Ce qui n'est pas le cas d'UNICODE, qui est la même chose mais en taille fixe par caractère, soit 8 octets. Donc effectivement en UNICODE il serait plus gros… après, c'est possible, qu'au final, ce soit différent sur le disque ou sur la taille visualisé sur un 64 bits, ou en dessous du méga-octet on ne regarde même pas.

          Cela rappel le débat Unicode VS UTF-8…

          Sous licence Creative common. Lisez, copiez, modifiez faites en ce que vous voulez.

          • [^] # Re: tu oublies que ça se compile

            Posté par  (site web personnel) . Évalué à 7 (+8/-3).

            Perso je suis sans cesse épaté par ta capacité à écrire des choses fausses, sans douter le moins du monde.

            Adhérer à l'April, ça vous tente ?

            • [^] # Re: tu oublies que ça se compile

              Posté par  . Évalué à 4 (+3/-1).

              Bah quoi? Il se garde 4 à 7 octets de rabe par caractere (ou code point, me cassez pas lez bonbons, les pedantiques Unicode).
              Ça donne de la marge pour les emojis, et ça mange pas de pain. Enfin, à part les 4+ octets en plus par caractère.

              Apres, sorti de la bourde 8 octet en Unicode, il a pas forcément tort. C’est du code des années 80 écrit par des ricains, je serais surprit qu’il soit pas en ascii. Et même si l’ascii est un encodage 7 bits, ça restait serializé en 8 bits, parce que ben, ça marchait comme ça.

              et donc au final, oui, UTF8 ou ascii, le source fera la même taille que l’original en ascii.

              La ou je suis confus c’est qu’on a commencé à parler de la taille compilée, et on se retrouve à parler d’encodage texte.

              • [^] # Re: tu oublies que ça se compile

                Posté par  (site web personnel) . Évalué à 2 (+0/-0).

                À cette époque, pas sûr que les machines est un jeu de caractères unifié. Pour les Commodore, il y avait tout un tas de caractères pour faire des tableau qui me semble ne pas exister en ascii, et il y avait le mode négatif codé directement…

                I use Arch BTW

                • [^] # Re: tu oublies que ça se compile

                  Posté par  (site web personnel, Mastodon) . Évalué à 6 (+3/-0).

                  Le code ascii définit les 128 premiers caractères, si on encode sur 8 bits on peut faire un peu ce qu'on veut avec les 128 autres.

                  Le BASIC étant dévelophé sur un PDP-10, une machine avec des mots de 36 bits découpables en 2x18 bits, c'est sûrement un peu différent. Le listing a l'air de ne pas utilise de lettres minuscules par exemple, il est donc loin d'exploiter toutes les possibilités de l'encodage ascii!

                • [^] # Re: tu oublies que ça se compile

                  Posté par  . Évalué à 6 (+4/-0).

                  L’ascii est sorti en 63, Lyndon Johnson l’a rendu obligatoire pour répondre aux appels d’offres fédéraux en 68. Le pdp 10 utilisait essentiellement ça, donc c’est dur d’imaginer que ms ait utilisé autre chose que ça en 75 pour leur basic.

    • [^] # Re: tu oublies que ça se compile

      Posté par  (site web personnel) . Évalué à 3 (+1/-0).

      Bien entendu qu'une fois assemblé, ce code fourni un exécutable plus réduit en taille. Mais je doute qu'à l'époque ce fichier du code source ait existé en un seul bloc.

      \_o<

      • [^] # Re: tu oublies que ça se compile

        Posté par  (site web personnel, Mastodon) . Évalué à 1 (+0/-0).

        Si sans doute, mais peut-être sur bande ou disque dur professionnels…

        Sous licence Creative common. Lisez, copiez, modifiez faites en ce que vous voulez.

        • [^] # Re: tu oublies que ça se compile

          Posté par  (site web personnel, Mastodon) . Évalué à 10 (+8/-0).

          Le code qui est publié est une reconstruction de sources à partir de l'analyse des binaires de multiples versions du BASIC pour différentes machnes. Plus d'explications par lwauteur de ce travail. Microsoft a récupéré ces informations et a "officialisé" la chose et la license (ce qui pose question, car une partie des changements documentés ne sont pas de leur fait, mais d'entreprises qui avaient acheté et "forké" le BASIC). Est-ce qu'ils ont tout puolié, ou bien ils ont pris soin dans leur version de ne garder que les variantes sur lesquelles ils sont effectivement propriétaires du copyright?

          • [^] # Re: tu oublies que ça se compile

            Posté par  . Évalué à 5 (+3/-0).

            J'avais compris au contraire, qu'il s'agit de deux versions distinctes, celle que publie Microsoft vient de leurs archives. D'ailleurs un code venu du désassemblage ne contiendrait pas de commentaires, non ? En plus les deux codes sont pour des machines différentes.

            • [^] # Re: tu oublies que ça se compile

              Posté par  (site web personnel, Mastodon) . Évalué à 10 (+12/-0).

              Je lis l'annonce de Microsoft qui dit:

              Over the years, dedicated preservationists have reconstructed build environments and verified that the historical source can still produce byte-exact ROMs. Notably, Michael Steil documented and rebuilt the original BASIC process for multiple targets. He has ported the code to assemblers like cc65, making it possible to build and run on modern systems.

              This open-source release builds on that work, now with a clear, modern license

              Je lis la page de Michael Steil qui est liée:

              If you disassemble a single binary, you can never tell why something was done in a certain way. If you have eight different versions, you can tell a lot. This episode of “Computer Archeology” is about reverse engineering eight different versions of Microsoft BASIC 6502 (Commodore, AppleSoft etc.), reconstructing the family tree, and understanding when bugs were fixed and when new bugs, features and easter eggs were introduced.

              Ma conclusion est qu'il s'agit oe reverse engineering. Microsoft aurait remis le source dans un format permettant de le compiler sur les logiciels d'époque, mais il n'y a aucune mention nulle part de:

              • comment ces fichiers ont été restaurés à partir de sauvegardes de 1978 (je ne pense pas que Bill Gates a dit "ah oui bien sûr je les ai toujours migré d'une machine à l'autre à chaque fois que j'ai fait un upgrade, tenez voici les fichiers". Éventuellement on peut imaginer qu'ils avaient une version sur papier et que le travail de Michael Steil a permis de vérifier que le code générait bien des binaires identiques?
              • Même l'illustration du blog de Microsoft est une photo de la version du basic pour intel 8080 qui est exposée dans un musée.
              • quels outils il faut utiliser pour les compiler? Le readm dit "Assembly Format: Compatible with period assemblers for 6502 development"

              Il y a quelques autres bizarreries comme le fichier .gitignore antidaté à il y a 48 ans (bien avant l'invention de git, si vous n'avez pas suivi). Pour moi cela rend ces infos peu exploitabnes si on veut étudier ce source comme un artefact historique. Peut-être qu'il est authentique, que Microsoft est effectivement très bon pour garder des backups de son code source pendant 50 ans sur des supports facilement accessibles, et qu'ils ont juste eu à récupérer le fichier sur leur serveur de sources actuel oùeil était disponible. Mais ça manque de preuves pour en établir l'authenticité, ce qui serait intéressant si on veut s'en servir pour étudier comment les développeurs géraient la compilation conditionelle en 1978 pour cibler plusieurs machines avec le même source.

              Si on veut simplement étudier le fonctionnement du BASIC ou le porter sur une nouvelle machine, par contre, l'officialisation de la license par Microsoft est une très bonne nouvelle!

              • [^] # Re: tu oublies que ça se compile

                Posté par  . Évalué à 2 (+0/-0).

                Merci pour tes précisions. J'ai encore un doute à cause des commentaires de Scott Hanselman (qui a mis les sources en lignes) dans les quelques problèmes signalés sur Github :

                I will go back to the archives and see if I can find more.

                • [^] # Re: tu oublies que ça se compile

                  Posté par  . Évalué à 2 (+0/-0).

                  et puis les commentaires ne sont pas les mêmes (je n'ai pas tout vérifié bien sûr)

                • [^] # Re: tu oublies que ça se compile

                  Posté par  (site web personnel, Mastodon) . Évalué à 8 (+5/-0).

                  Oui, en regardant les fichiers de plus près, ça semple vraiment venir des archives (avec par exemple les commentaires tout en majuscules d'époque), mais ce n'est pas très clair (les explications dans le blog pointent plutôt vers autre chose?) et ça manque de traçabilité, ce qui est dommage.

                  La moindre des choses (dans ce contexte d'archivage et de préservation historique) serait de préciser:
                  - d'où viennent les fichiers utilisés
                  - qu'est-ce qui a été modifié (changement d'encodage? Numérisation d'un listing papier avec risque d'erreurs de reconnaissance de caractères? Changement de support de stockage c'est à peu près certain)
                  - qu'est-ce qui a été ajouté (par exemple, le fichier gitignore antidaté, c'est assez maladroit)
                  - qu'est-ce qui a été perdu hour l'instant (les informations sur la chaîne de compilation, par exemple, dont on peut déduire des commentaires qu'il s'agissait d'outils fonctionnant sur un PDP-10 avec un simulateur de 6502)

                  Ce sont ces informations manquantes qui font que on doute sur l'authenticité du code source, ou en tout cas, c'est difficile de dire à quel point il a pu être altéré. Et donc, même si ce fichier est finalement authentique, on ne peut pas en être sûr.

                  Pour l'exemple du fichier gitignore: ça nous semble évident aujourd'hui. Mais si un historien de l'informatique trouvait ces fichiers dans 50 ans (ou plus), tels qu'ils ont été publiés, ça pourrait le à devoir faire des recherches supplémentaires sur la date d'apparition de git, chose qui ne serait pas forcément simple à ce moment là (j'espère que si, mais on ne sait jamais).

                  Il y a quelques rois quand j'ai voulu trouver ds infos sur certaias contrôleurs vidéo commercialisés dans les années 70, j'ai eu quelques difficultés à trouver des infos fiaples. Le 6845 de Motorola aurait soi-disant été conçu par Hitachi, mais je ne trouve que des sources récentes à ce sujet qui répètent la même chose sans source fiable. Pour les dates de commercialisation, impossiple de trouver quoi que ce soit, la meilleure solution est d'éplucher les pages de publicités de magasines où des revendeurs font apparaître le composant à leur catalogue. Et quand il s'agit oe trouver la date de fin de production, n'en parlons même pas.

                  • [^] # Re: tu oublies que ça se compile

                    Posté par  (site web personnel, Mastodon) . Évalué à 10 (+11/-0).

                    OK j'ai compris ce qu'il s'est passé, il s'agit bêtement d'une erreur de lien vers le side de Michael Steil dans l'annonce de Microsoft.

                    Ils ont mis un lien vers cette page de 2008 qui contient des sources obtenues par reverse engineering.

                    Mais Michael Steil ne s'est pas arrêté là, et en 2015 il a retrouvé les sources originales. Pas du tout dans les archives de Microsoft, mais via un site coréen, qui lui-même avait récupéré des fichiers de Apple qui ont fuité via un certain David T. Craig qui avait publié du code source liés aux Apple ][ et au Lisa en 1993. Cette partie est expliquée à la fin de l'article, et le processus de développement sur PDP-10 et les outils utilisés sont également expliqués. Je comprend mieux que Microsoft ne se soit pas vanté des origines de ce code plus en détail, si j'étais mauvaise langue je dirais qu'ils ont fait exprès de se tromper de page dans leur annonce.

                    La bonne nouvelle, c'est que maintenant j'ai les réponses à mes questions et qu'il y a moins de doutes sur la provenance de ce code. On ne saura pas exactement quelle modifications Apple ou David Craig ou les autres personnes qui ont eu ces fichiers entre leurs mains ont pu y apporter, mais on a une explication précise du reformatage fait par Michael Steil pour tenter de se rapprocher de ce à quoi pouvait ressembler le code original.

              • [^] # Re: tu oublies que ça se compile

                Posté par  . Évalué à 4 (+2/-0). Dernière modification le 05 septembre 2025 à 13:32.

                Il y a bien plus de chances que le code ait été imprimé plutôt que conservé sur support magnetique je pense.

              • [^] # Re: tu oublies que ça se compile

                Posté par  (site web personnel, Mastodon) . Évalué à 3 (+1/-0).

                Je pense qu'ils ont pu recouper avec des sources papiers de la toute première version Basic.

                Dans ce documentaire (qui date de 2009 ?), vers 5min45s Bill Gates a dans les main le code source sous forme de rouleau de papier (pour le PDP ?), et explique que c'est la toute première version de Basic publiée (le 1er juillet 1975).

                • [^] # Re: tu oublies que ça se compile

                  Posté par  (site web personnel, Mastodon) . Évalué à 9 (+6/-0). Dernière modification le 05 septembre 2025 à 15:03.

                  La version de 1975 était pour le processeur Intel 8080, et en particulier pour le micro-ordinateur Altaïr.

                  A priori, les sources ne sont pas disponibles publiquement. Mais une copie est disponible à Harvard. Elle a été découverte lors d'un déménagement, elle était tombée derrière des meubles, "quelques temps avant 1980". Heureusement, un des professeurs présents sur place lors de ces travaux a compris que ça ne devrait pas partir à la poubelle et l'a confié aux archivistes.

                  Voilà comment fonctionne la préservation des logiciels…

                  • [^] # Re: tu oublies que ça se compile

                    Posté par  (site web personnel, Mastodon) . Évalué à 8 (+5/-0). Dernière modification le 05 septembre 2025 à 15:39.

                    Voilà comment fonctionne la préservation des logiciels…

                    Ce n'est pas propre aux logiciels. Le codex de Paris a traîné longtemps près d'une cheminée avec des papiers poussiéreux. C'est l'un des trois seuls codex mayas précolombiens authentifiés qui nous sont parvenus.

                    Je n’ai aucun avis sur systemd

                    • [^] # Re: tu oublies que ça se compile

                      Posté par  . Évalué à 4 (+2/-0).

                      Eh oui!
                      De même pour la Saison en enfer de Rimbaud, qui moisissait chez l'imprimeur…
                      Ou des magnifiques affiches de films imprimées en sérigraphie manuelle à Cuba et que mon ami Stanislas Choko a récupéré il y a 20 ans dans les cinémas cubains— j'ai eu le privilège de les avoir entre les mains, c'était d'une beauté époustouflante. Heureusement qu'elles sont maintenant préservées et exposées dans diverses collections.

                      Et même si le papier tombe plus facilement dans des cachettes poussiéreuses, c'est encore le cas d'artefact archéologiques non exploités, qui sont périodiquement redécouverts dans des caves de musée — il y a quelques semaines, un nouveau dinosaure je crois.

                      Etc.

                  • [^] # Re: tu oublies que ça se compile

                    Posté par  . Évalué à 4 (+2/-0).

                    Elle a été découverte lors d'un déménagement

                    Je viens de tomber sur le récit de la découverte (ou en résumé), c'est un ancien prof de Bill Gates qui l'a faite!

        • [^] # Re: tu oublies que ça se compile

          Posté par  . Évalué à 6 (+4/-0).

          Des anecdotes (que je n’arrive pas à retrouver, et j’ai que 2 minutes avant mon prochain minutes) racontent que bill Gates écrivait pas mal de code dans l’avion (apparement, le système de fichier fat).

          C’était les années 80, donc il avait clairement pas de laptop, encore moins une tour. Il écrivait son code sur … du papier!

          Sacré époque quand même.

  • # 6809

    Posté par  (site web personnel, Mastodon) . Évalué à 6 (+4/-0). Dernière modification le 04 septembre 2025 à 21:47.

    Le BASIC, c'est le premier produit Microsoft que j'ai utilisé, mais dans une version plus élaborée livrée en ROM dans le Dragon 32, un micro-ordinateur britannique commercialisé en 1982 avec un microprocesseur Motorola 6809. A l'époque, le système d'exploitation c'était l'interpréteur BASIC lancé automatiquement au démarrage. ROM de 16 Ko d'après le manuel :

    http://www.dragondata.co.uk/Publications/BASIC-MAN/DRAGON_32_BASIC_MANUAL_rel-v2.pdf

    "I program my home computer, beam myself into the future"…

  • # Commit plus très jeune

    Posté par  . Évalué à 9 (+7/-0).

    Ils se sont amusés sur la date du commit, on dirait:

    committed on Jul 27, 1978

  • # Lettre ouvert aux Hobbyistes

    Posté par  (site web personnel, Mastodon) . Évalué à 6 (+4/-0). Dernière modification le 05 septembre 2025 à 14:09.

    Ça ne serait pas le fameux BASIC qui faisait chouiner Billou en 1976 ?

    https://fr.wikipedia.org/wiki/An_Open_Letter_to_Hobbyists

    Gnagnagna, on me vole, je suis dépouillé, gnagnagna, …

    J'ai plus qu'une balle

  • # Le cas Commodore

    Posté par  (site web personnel) . Évalué à 8 (+6/-0). Dernière modification le 05 septembre 2025 à 17:10.

    Merci pour l'info. Alors en tant que possesseur d'une vieille machine 6502,
    Si on regarde ça:
    BASIC du PET
    et ici:

    IFE REALIO-3,<  DT"### COMMODORE BASIC ###"
        EXP ^O15
        EXP ^O15>
    IFE REALIO-4,<DT"APPLE BASIC V1.1">
    IFE REALIO-5,<DT"STM BASIC V1.1">
    IFN REALIO-3,<
        ACRLF
        DT"COPYRIGHT 1978 MICROSOFT"
        ACRLF>
        0
    

    On constate que si la variable est égale à 3 (IFE REALIO-3), on affiche bien l'en-tête "### COMMODORE".

    Mais 5 lignes plus bas, on n'affiche le "COPYRIGHT 1978 MICROSOFT" que si la variable n'est pas égale à 3 (IFN REALIO-3).

    C'est valide pour toute la gamme Commodore, et s'explique facilement : en échange de son contrat, le fabricant avait explicitement exigé que seul son nom apparaisse sur l'en-tête de l'OS.
    Je valide donc l'authenticité de ce morceau à ma microscopique échelle 😄.

    • [^] # Re: Le cas Commodore

      Posté par  . Évalué à 3 (+1/-0).

      je pense qu'un dump d'une ROM d'epoque pourrait permettre de vérifier tout ça. Faut juste que quelqu'un s'y mette, compare ligne à ligne, ou écrive un programme qui permette de faire la comparaison entre les deux sources.

      • [^] # Re: Le cas Commodore

        Posté par  (site web personnel, Mastodon) . Évalué à 3 (+0/-0).

        Il suffit de compiler le code et de vérifier qu'on obtient une image de ROM identique à l'original, ce sera probablement plus rapide à vérifier

        • [^] # Re: Le cas Commodore

          Posté par  . Évalué à 2 (+0/-0). Dernière modification le 07 septembre 2025 à 13:03.

          Il faudrai avoir les outils de build de l'époque je pense pour avoir quelque chose de réellement comparable dans ce sens.

    • [^] # Re: Le cas Commodore

      Posté par  . Évalué à 6 (+4/-0).

      Peux-être que tu peux faire apparaître l'oeuf de paques que Billou avait codé exprès pour ne pas que Commodore prétende être l'auteur de son Basic :

      Tape WAIT6502,1 et MICROSOFT! devait apparaître en haut à gauche de l'écran.

      • [^] # Re: Le cas Commodore

        Posté par  (site web personnel) . Évalué à 4 (+2/-0). Dernière modification le 06 septembre 2025 à 13:28.

        Haha, un connaisseur !
        J'avais bien regardé en fait, et si c'est là c'est vachement bien caché car je ne l'ai vu nulle part 😉 .

        (l'oeuf a été repéré et donc supprimé dans la V2 qui équipe p.ex. le C64. Ici c'est la V1, mais la suppression a-t-elle été rétroportée ? Possible, possible…)

        PS pour au-dessus : perso, je vais pas assembler ce code. D'expérience, c'est la partie la plus relou d'un projet du genre, et là c'est juste trop obsolète pour que j'aille si loin.

  • # Merci

    Posté par  (site web personnel) . Évalué à 2 (+1/-0).

    C'est pour ce genre de journaux que je kiffe DLFP. Merci.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.