Le petit monde de Dave Small

Article publié dans STMag 53 de Juillet/Aout 1991

Dave Small est le développeur bien connu de Spectre, l’émulateur Mac pour ST, à ce titre, il mérite bien sa gloire de Grand Bidouilleur parmi les Bidouilleurs (en anglais, « Hacker »). Mais être un hacker, qu’est-ce vraiment? Dave a écrit une série d’articles où il nous fournit justement un aperçu de ce que fut sa jeunesse tumultueuse. Ce mois-ci Dave nous plonge dans Star Trek et l’assembleur.
Prenez-en de la graine…

Motivation

   Pourquoi ai-je appris l’assembleur ?

   Pour gagner de l’argent ? Non. Pour améliorer ma carrière f Non. Pour sortir de la fac avec un diplôme ? Non.

   J’ai appris l’assembleur pour pouvoir mieux jouer à Empire. Attention, nous ne parlons pas ici du jeu « Empire » sur ST. Nous parlons d’un fantastique jeu multi-joueur basé sur la série Star Trek et joué sur le réseau PLATO s’étendant à travers les Etats-Unis. Il permettait de faire s’affronter jusqu’à 32 joueurs, répartis en 4 équipes, qui chacune devait « conquérir la galaxie ».

   Le système PLATO [NdT ce système était normalement destiné à l’enseignement assisté par ordinateur, et se composait de terminaux graphiques reliés par modem à un ordinateur central] tournait sur un gros ordinateur central Cyber de Control Data Corporation (CDC), situé à Minneapolis, dans le Minnesota.

   L’affichage était constitué d’écrans graphiques de 512 x 512, ressemblant beaucoup aux écrans monochromes de 640 x 400 du ST. On y voyait des petits vaisseaux spatiaux, des torpilles à photons, des faisceaux de phasers, des planètes, des soleils, etc. Il y avait environ 50 commandes, comme tourner, régler la vitesse, brancher les écrans de camouflage, les rayons tracteurs et autres gadgets. Tout ça se déroulait en 1978, alors que j’étais étudiant à la Colorado State University (CSU). Durant mon séjour à la CSU, j’ai bien dû passer deux mille heures sur le réseau PLATO, dont pas mal sur Empire.

   Empire était apparu depuis un certain temps sur PLATO, et était un jeu très populaire. C’était vraiment le jeu pour les machos du clavier : le secret de la victoire résidait en une frappe très rapide et très précise. De ce fait, les dactylographes au toucher, qui frappaient à toute allure avec tous les doigts sans jamais regarder le clavier, gagnaient en général les batailles.

   Par exemple, supposez que vous soyiez proche d’un ennemi. Une séquence de commande typique était : k (flèche) 9 : vitesse 9 dans la direction de la flèche ; P (flèche) RETURN : tire 3 torpilles à photons dans la direction de la flèche;
P (flèche> RETURN : idem;
P (flèche> RETURN : idem;
F tire aux phasers dans la dernière direction entrée ; BACK D BACK D BACK D : force trois mises à jour du système pour faire exploser les torpilles en bout de course, de préférence sur l’ennemi.

   L’idée générale était de prérégler un saut hyperspatial pour vous éloigner de l’ennemi, lui balancer neuf torpilles dans la figure, puis de sauter au loin immédiatement avant de faire exploser les torpilles. L’hypersaut était nécessaire parce que l’ennemi était en train de vous faire subir exactement le même traitement, et il fallait tâcher d’être loin quand ses torpilles détonnaient.

   La séquence de touches ci-dessus devait être entrée aussi rapidement que possible. L’effectuer en une à deux secondes faisait de vous un adversaire médiocre face à un joueur déterminé.

   Et certains joueurs avaient pris des cours de dactylographie [NdT c’est courant, cela rapporte des unités de valeurs dans les universités américaines, et cela rend service en cette ère de claviers omniprésents], et avaient donc une frappe extrnniement rapide et précise. Maintenant, imaginez une salle sombre, éclairée par les écrans de 15 utilisateurs, tous jouant à Empire. C’était hallucinant.

 

Le secret de Dave

   Maintenant, voici un petit secret que je n’ai jamais encore révélé à quiconque : je ne frappe pas au toucher. Je n’ai jamais su le faire.

   Quoi ? dites-vous. Dave Small, frapper avec deux doigts ? Eh oui, c’est vrai. J’admets que je suis rapide avec mes deux doigts, mais je fais beaucoup d’erreurs, la touche Backspace de mon système s’use rapidement (et imaginez le code source de Spectre CCR, 1500 000 touches frappées, tout ça avec deux doigts…). Du coup, je me faisais régulièrement massacrer à Empire par les superdactylographes. En général, je m’approchais d’un vaisseau Klingon, frappais des commandes, manquais une touche, regardais l’écran, voyais que toutes les commandes suivant la faute de frappe avaient été rejetées. Puis je voyais le message « Vous avez été tué par… »

   Je faisais partie de l’équipe de la Fédération, les « Feddy Bears », qui était au dernier rang du classement d’Empire.

   La plupart des employés de Control Data, ainsi que les utilisateurs de la grande rivale détestée, la Colorado University (ne pas confondre avec la Colorado State University), jouaient dans l’équipe des Klingons.

Le terminal IST-1

   Mon terminal PLATO était un IST-1 de Control Data. Il contenait un microprocesseur Intel 8080, avec environ 4 ko de RAM disponible (et attention, on pouvait commander une extension de 16 ko, ce qui donnait une incroyable quantité de mémoire!

   Rappelez-vous que c’était en 1978. Et de plus, il y avait sur le central un assembleur pour ce microprocesseur, appelé « pptasm ». On pouvait télécharger un programme depuis le central vers l’IST-1 puis l’exécuter.

   Une nuit, une pensée malveillante se glissa dans mon esprit : et si je pouvais programmer l’ordinateur pour frapper des touches à ma place ? Tout ce que faisait le 8080 de l’IST-1, c’était surveiller le clavier, et s’il détectait une touche enfoncée, il l’envoyait au central. Si des octets arrivaient du central, il réalisait les affichages correspondants. En fait, le 8080 exécutait un programme de gestion de terminal. Ce qui me tentait, c’était un programme de macrocommandes comme beaucoup de gens en utilisent de nos jours sur leurs émulateurs de terminaux. Je commençai donc à apprendre le 8080. Heureusement, j’avais un exemple de programme, par Mark Sandmann, qui me facilita bien les choses. le plongeai dans les manuels. j’appris tout sur l’assembleur 8080 : accumulateurs, registres, JMP et CALL… Et chaque nuit, alors que je continuais à me faire massacrer à Empire, ma détermination croissait.

   Je décidai de connaître le 8080 ou de mourir à la tâche. Je séchais les cours, sautais des repas, dormais dans la salle PLATO, entre autres excès… Finalement, je fis tourner la première version de mon programme. Si on presssait juste une touche de flèche, le terminal envoyait un P, puis la flèche, puis RETURN – trois touches d’un coup i Cela améliora considérablement les choses pour moi. Je pou vais simplement presser trois touches de flèches pour lancer des torpilles. Mon score commença à progresser.

   Je me mis alors à rajouter des options. Je créai la redoutable combinaison plusflèche, qui mettait le cap à l’opposé de l’ennemi, réglait la vitesse 9, envoyait à l’ennemi neuf torpilles et trois coups de phasers, puis forçait le central à faire détonner les torpilles. Tout ce qu’il y avait à faire pour déclencher cette longue séquence était de presser la touche « + » puis une touche de flèche. Puis je me demandais pourquoi il fallait presser une flèche. Le système savait où était l’ennemi, puisqu’il venait de le dessiner à l’écran. Je modifiai le programme pour calculer la direction où était l’ennemi et l’envoyer automatiquement. J’ajoutais ausi une option pour voir où vous expédiait exactement un hypersaut, sous la forme d’une série de cercles concentriques centrés sur votre vaisseau, comme un sonar.

   C’était vraiment drôle de presser seulement une touche et de voir le témoin de transmission s’éclairer sur le modem du terminal, tandis que mon programme expédiait les séquences de touches à la vitesse maximale acceptée par le système. J’étais devenu, si vous voulez, le dactyographe virtuel absolu.

   J’en informais l’équipe de la Fédération, et bientôt nous jouions tous en utilisant mon programme. Et nous gagnâmes une partie contre les Klingons tant détestés, puis une autre, puis d’autres encore. Les Klingons étaient vraiment abasourdis ils tapaient à la vitesse maximale, et nous les surpassions.

   Le moment que je me rappelle le mieux se trouvait lorsque j’étais l’un des deux défenseurs en orbite autour de la Terre, dernière planète restante de la galaxie. Quatre Klingons apparurent. Je fis un hypersaut au milieu d’eux, et les détruisis dans un tourbillon d’action.

   Cette année-là, l’équipe de la Fédération dépassa les Klingons et devint championne, ce qui donna lieu à moult réjouissances. En fait, lorsque je me mariai à Sandy en 1981, je conduisis une voiture de location depuis Austin (Texas) jusqu’à Minneapolis (Minnesota) pour fêter l’enterrement de ma vie de garçon, car la plupart des membres de l’équipe de la Fédération étaient au siège de Control Data de Minneapolis. J’avais loué la voiture sous contrat de kilométrage illimité, et je me rappelle toujours le visage horrifié des employés du bureau de location lorsqu’ils calculèrent la distance que j’avais ajouté au compteur en un seul week-end.

   Bien entendu, l’équipe des Klingons (parmi laquelle figuraient de nombreux programmeurs système de CDC) découvrit vite mon astuce, et écrivit ses propres programmes « presse-touches ». Bientôt, Empire devint une guerre de terminaux automatiques.

   Il y avait même des programmes capables de réaliser une mission entière (par exemple, mettre le cap vers une planète ennemie éloignée, bombarder toutes les armées s’y trouvant, et lancer un message aux forces amies annonçant que la planète était prête à être capturée). Si vous lanciez ce programme sur dix terminaux à la fois, vous pouviez vraiment voir l’ennemi s’étrangler de rage.

   Je trouvais tout cela très distrayant. J’aimais opposer mes capacités de programmeur à celles des programmeurs système, et nous nous amusions beaucoup.

Politique d’entreprise

   En même temps, je tentais de corriger un problème vraiment irritant sur l’IST, tout en me faisant des ennemis à CDC. Chaque fois qu’il y avait du bruit sur la ligne connectant l’IST-1 au central, l’IST-1 plantait, le voyant ERREUR s’allumait, et le terminal était bloqué. Il fallait faire un RESET du terminal, ce qui avait pour effet de vous déconnecter. Bien sûr, on évitait à l’IST-1 de recevoir des données endommagées, mais il aurait fallu qu’il récupère après erreur… C’était un problème logiciel que CDC ne voulait pas corriger. Ça me rendait dingue. Souvent, je jouais à Empire, je massacrais l’ennemi, et brusquement, la ligne prenait un parasite, le terminal était mort, et j’étais déconnecté.

   Je fouinais alors dans la mémoire de l’IST-1 jusqu’à ce que je trouve l’indicateur d’erreur, puis je fis un programme simple toutes les demi-secondes, il testait cet indicateur, et, s’il était à 1, le remettait à 0. C’était gagné, le terminal ressuscitait.

   Désormais, l’IST-1 encaissait des parasites sur la lignes et les ignorait. Bon, d’accord, de temps à autre, des affichages aléatoires apparaissaient, mais peu importait. Cela valait bien mieux que d’avoir à se reconnecter au système.

   Ce petit bidouillage devint un programme extrêmement populaire sur PLATO. De plus en plus de gens se mirent à l’utiliser. Du coup, ils cessèrent de signaler des erreurs de ligne au service central des télécommunications de PLATO, puisque les erreurs étaient ignorées. Et les membres de ce service des télécoms se trouvaient être dans les Klingons d’Empire. Vous voyez le coup venir, non?

   Les gens des télécoms de CDC se mirent à m’en vouloir beaucoup. Même énormément. Imaginez le bel exemple de politique d’entreprise que cela donnait «Les clients ne nous signalent plus d’erreurs à cause du programme de ce Dave Small.» «Oui, l’assembleur, ce n’est vraiment pas à laisser aux clients. Retirons-le.» Ce fut mon introduction à la politique d’entreprise. CDC ne voulait pas corriger ce problème idiot dans le programme du 8080 de l’IST-1 ; par contre, il retirèrent aux clients l’outil grâce auquel il pouvait résoudre le problème lui-même. Cela revenait à retirer une parcelle de responsabilité au client pour la rendre à CDC. Une bataille de plates-bandes, en d’autres termes.

   Une annonce très controversée fut donc faite, selon laquelle tout accès au langage assembleur de l’IST-1 serait supprimé après une certaine date. Cela outragea vraiment les clients de CDC, parmi lesquels certains utilisaient l’assembleur à des fins légitimes – l’entraînement au vol à American Airlines, par exemple. Mais CDC fut têtu comme une mule, et supprima l’accès à l’assembleur malgré tout (des exceptions furent faites pour certains clients qui payèrent cher ce privilège, mais pas pour le commun des mortels).

   Naturellement, les programmeurs système gardèrent accès aux outils de téléchargement et à l’assembleur, ainsi qu’aux presse-touches d’Empire. Quelle coïncidence ! Les Klingons recommencèrent à gagner à Empire, et je sais parfaitement comment ils faisaient.

   Je ne me le tenais pas pour dit. Je déteste voir l’accès à quelque chose d’utile être refusé, surtout pour de stupides raisons politiques. C’est là une base de la philosophie des hackers : liberté d’échange des informations. Mon premier geste fut d’obtenir un compte sur le CERL [NdT : un autre réseau national américain], qui était un autre système PLATO où l’accès à l’assembleur était toujours permis.

   J’appelais donc la machine CERL dans l’lllinois, me connectais sur la machine, téléchargeais mon presse-touches pour Empire qui était stocké là-bas, et me connectais ensuite sur le système CDC avec mon terminal convenablement configuré. Le problème était que cela représentait un appel longue distance et que je ne pouvais pas donner ce programme à quiconque ne disposait pas d’un compte CERL. (CERL a toujours maintenu un accès bien plus libre et ouvert à son système que CDC. Aujourd’hui, on peut toujours leur demander un compte PLATO peu coûteux et utiliser un émulateur de terminal Mac ou IBM. Oui, le programme Mac tourne sous Spectre Leur version d’Empire ou de Moria est excellente.)

   J’ai donc ouvert l’IST-1, trouvé l’EPROM de démarrage, et examiné ce qui se passait durant un RESET. J’en appris assez sur les EPROM pour en faire une nouvelle moi-même.

   Cette nouvelle EPROM contenait un programme qui, durant le RESET, regardait si une certaine donnée se trouvait sur l’écran ; si oui, le RESET était interrompu, et un téléchargement pouvait avoir lieu. J’écrivis alors un petit programme tournant sur le Cyber central qui envoyait à l’écran du terminal un programme en assembleur 8080. A ce moment, je pressais RESET, ce qui chargeait ce programme assembleur dans la mémoire de l’IST-1, et j’étais à nouveau dans la course.

   En d’autres termes, j’avais bidouillé le terminal pour me permettre de télécharger des programmes en assembleur, en dépit de CDC. Et ce fut là que j’appris à connaître les ROM, EPROM, brochages… ce qui me fut par la suite bien utile lorsque je créais le Magic Sac, puis le Spectre.

   Le bruit se répandit parmi les hackers que mon petit bidouillage marchait, et bientôt je fus submergé par des demandes d’EPROM. J’en envoyais aux quatre coins du monde – certaines en Islande, d’autres en Norvège, et partout aux USA.

   Le programme de téléchargement du central se mit à être utilisé intensivement, car les gens téléchargeaient le programme antiparasite et le presse-touches d’Empire. Les programmeurs système étaient furieux, et ne pouvaient absolument rien y faire. C’était une situation politique idiote, j’avais récupéré les plates-bandes qu’ils avaient accaparées.

   Cependant, je me fis des ennemis parmi les grosses légumes de PLATO, et cela me joua plus tard des tours, lorsque les hackers quittèrent PLATO et que la faction politique fut aux commandes sans opposition. La dernière fois que je me suis connecté à PLATO, c’était il y a quelques années, alors que je testais un émulateur de terminal pour Mac sous Magic Sac (ça marchait). PLATO était alors devenu un panier de crabes où diverses factions s’arrachaient des territoires. Des barrières étaient érigées de toutes parts. C’était devenu un état policier sur ordinateur. Je m’en allais en décidant de ne m’en rappeler que le meilleur.

Conclusion

   Je n’ai pas appris l’assembleur en classe. Je n’ai pas écrit les programmes classiques avec lesquels on apprend l’assembleur. je ne l’ai pas appris pour passer un examen. Je l’ai appris parce que brûlait en moi un profond désir de massacrer des Klingons outrecuidants.

   Cela m’a suffisamment motivé pour tout apprendre des compléments à deux, registres, affichages, etc. C’était une croi sade, qui s’est terminée par une victoire pour moi.

   Si vous voulez apprendre un langage, que ce soit l’assembleur ou le C, je vous recommande fortement de vous assigner un but, une raison pour laquelle vous voulez l’apprendre, qui vous motivera. Cela fera de l’apprentissage un jeu au lieu d’une corvée. J’ai appris de nombreux langages depuis le 8080, et j’ai appliqué ce principe à chaque fois. Les premières fois, c’était inconscient, par la suite, ce fut délibéré. Cela m’a permis de continuer à m’amuser en programmant.

Le Magic Sac et le Spectre 128 étaient plus ou moins la même chose. Je finissais par être las d’entendre les gens dire qu’il était impossible pour un ST d’exécuter les programmes d’un Mac. J’ai donc prouvé que cela pouvait être fait. Pour cela, il m’a fallu apprendre le 68000.

   Ces temps-ci, il me faut retourner au C, puisque ce langage devient l’Espéranto de l’informatique ; c’est pourquoi je suis à la recherche d’un but qui me motiverait pour l’apprendre. Je n’en ai pas encore trouvé, mais je continue à chercher.

   Une autre chose que j’ai apprise dans cette affaire est l’importance de la politique d’entreprise. La défense du territoire est bien plus importante que le service rendu au client, et PLATO a payé le prix de cette conception : aujourd’hui, le système est bien plus petit que ce qu’il était il y a 10 ans. J’ai découvert que c’était le cas dans un très grand nombre de corporations, ce qui est la raison pour laquelle de petites boîtes compétitives peuvent vaincre de grosses corporations à chaque fois ou presque. Ce n’est que lorsque les gens ont suffisamment de temps libre pour jouer au politicard qu’une compagnie commence à avoir des problèmes.

   Ma solution à ce problème a été de ne plus jamais travailler pour une corporation.

   En conclusion de cette histoire, sachez que lors du Comdex 1990, j’ai rencontré un vieil ennemi Kliogon qui m’a rendu visite au stand Spectre 128. Il était employé chez CDC depuis longtemps lorsque nous nous affrontions à Empire. Il avait toujours eu assez de classe pour que nous restions amis, et lorsque nous nous étions parlé la dernière fois, huit ans auparavant, nous étions amis. Il m’a donné sa carte commerciale, il travaille à présent chez Apple.

Traduction : Password

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *