Ce mois-ci, Dave Small nous fait un exposé d'archéo-informatique, science des ordinateurs des temps reculés où ces machines étaient énormes, ruineuses, et assurées contre les incendies et les raids des Vikings. En même temps, il nous prouve que sa vocation de bidouilleur (en anglais, hacker) s'affirmait déjà avant même qu'il ne passe son bac.
Beaucoup de gens affirment que le bon vieux temps des hackers est révolu. Le livre "Hackers" de Steve Levy (chaudement recommandé, il contient même une partie sur l'Atari 8 bits et sur John Harris, auteur des jeux Jawbreakers et Frogger), a un épilogue intitulé "le dernier hacker" sur Richard Stallman, de la Free Software Foundation, père du projet GNU (NdT voir ST-MAG numéro 47). Et Rick Cook, auteur de SF et d'Heroic Fantasy, a écrit de moi sur BIX (NdT : le serveur du magazine américain Byte) "Dave est l'un des derniers bidouilleurs fous restant." J'ai tout simplement envie de pousser un soupir désespéré. C'est de l'égotisme aigu! Voici des gens prétendant que, sous prétexte qu'ils ont vécu durant le Bon Vieux Temps, ce qui se fait actuellement n'est pas de la Bidouille. Vous savez, la vraie bidouille, avec le menton hautain et tout. C'est l'équivalent du grand-père disant "Moi, quand j'étais enfant et que j'allais à l'école, il fallait que je marche dix kilomètres pieds nus, dans les tempêtes de neige, en montant la pente à l'aller et au retour." Peuh ! Petite pause le temps d'une définition le bidouillage, ou hacking, ne consiste pas à faire intrusion dans des ordinateurs bancaires, entre autres méfaits vulgarisés par les mass-médias.
Le bidouillage consiste à repousser les limites du possible, à "pousser l'enveloppe" (NdT : expression d'ingénieur aéronautique, l'enveloppe étant celles des courbes paramétriques définissant le domaine de vol d'un avion. Pousser l'enveloppe, c'est élargir les conditions limites entre lesquelles l'engin tient toujours en l'air). Cela ne se limite pas à l'informatique. Il y a des bidouilleurs dans toutes les occupations et tous les loisirs.
Goddard était un bidouilleur de fusées, Scholz un bidouilleur de guitares et d'électronique analogique, etc. Il faut que j'y aille de mon couplet chaque fois que j'aborde le sujet, de façon à ce que les gens sachent que je ne parle pas du film WarGames ni du "ver" du réseau Internet.
De plus, je commence à être fatigué d'entendre des gens se vanter de ce qu'ils arrivaient à faire avec huit malheureux kilooctets sur un PDP-8 (ou autre bécane antédiluvienne), tout en ricanant à propos des mégaoctets de mémoire des machines d'aujourd'hui, comme si les défis n'étaient pas toujours aussi grands. J'ai une nouvelle à annoncer à ces gens-là : les bidouilleurs ne sont pas (mais alors, pas du tout!) dans une maison de retraite à bavasser sur le labo d'intelligence artificielle du MIT dans les années 60. Le bidouillage est vivant, bien vivant.
J'aimerais beaucoup travailler avec Jez San. Je l'ai rencontré lorsque je suis allé en Angleterre avec ma femme Sandy, il y a quelque temps, et nous sommes restés en contact. Il dépense ses royalties en appels transatlantiques pour se connecter à BIX (!).
L'air de ne pas y toucher, ils ont écrit un remplacement pour le GDOS (nommé G+ PLUS), un extenseur d'accessoires de bureau (MultiDesk), et autres choses réputées "impossibles". Ils m'ébahissent en permanence. J'aimerais beaucoup travailler avec eux aussi.
Je m'efforce de ne pas écrire au sujet d'Hyperweb tant qu'il n'est pas publié et offert à l'admiration générale. Notez que Hyperweb est une marque déposée de Gadgets By Small... Donc, ceci n'est pas un article sur le bon vieux temps à jamais révolu du vrai bidouillage. C'est juste une poignée de souvenirs amusants que je vous livre.
Ça va, d'accord, d'accord
Je suis allé au collège de XXXXX (Note: le nom de l'école a été effacé pour protéger les coupables). Notre système informatique consistait en un télétype (NdT : ou téléscripteur) ASR-33~ Nous nous connections par modem et téléphone à un système en temps partagé appelé "Hewey", un ordinateur Hewlett-Packard 2000C.
Le système HP 2000C était en lui-même un joli bidouillage. Il était constitué de deux mini-ordinateurs, un HP 2114 et un HP 2116, et se débrouillait pour supporter 32 utilisateurs simultanément. Ce qui n'était absolument pas trivial. Pour fournir le contexte historique (je suis né en 1958), disons qu'il utilisait une mémoire à tambour pour son espace de pagination et disposait de 64 ko de mémoire centrale. Le tout nouveau système 2 000 F utilisait un disque amovible de cinq mégaoctets - vous savez, ceux qui faisaient 60 cm de diamètre (trop jeune pour vous en rappeler, hmmm ?). Naturellement, vous appreniez d'abord à faire tout ce que l'ordinateur vous laisse faire avant de vous mettre à bidouiller. Je plongeai donc dans les manuels HP, qui étaient aussi mauvais que le sont les manuels du ST ou d'Unix aujourd'hui, et j'appris le basic HP. Il n'y avait pas d'autre langage, ni d'éditeur. Ensuite, j'ai commandé à Cupertino (NdT : siège de Hewlett-Packard) les manuels de l'assembleur HP 2100. Je connaissais un peu le basic, mais je devins expert en basic HP. J'appris les finesses de l'instruction ASSIGN, et me tins au courant des nouveaux appels systèmes introduits par HP. Par exemple, la fonction PRO(), qui interdisait à l'utilisateur d'interrompre le programme. Je fis tout cela au détriment du travail scolaire, que je trouvais ennuyeux à en crever. D'où mon modeste 13/20 de moyenne générale. Pas terrible, direz-vous. Mais supposons que VOUS ayez eu un cours d'histoire américaine enseigné par un prof atteint d'un complexe de culpabilité aigu, qui aurait passé presque tout son temps sur les Bons Sauvages Indiens et comment les vilains blancs les ont oppressés. Une journée sur les trois milliards d'années de la Terre jusqu'à Christophe Colomb, puis la révolution américaine, puis un millénaire sur les Bons Sauvages, puis une journée, à la fin, sur les Indiens à travers la guerre de Sécession. Encore aujourd'hui, je ne peux m'empêcher de frémir en regardant un Bon Sauvage en peinture. Eh bien! je suppose que VOUS aussi préféreriez vous asseoir à ce télétype ASR33 et réfléchir à des bidouilles Ce terminal était rapide : dix caractères par seconde. Je l'avais monté à onze, ce que l'ASR-33 supportait, même s'il faisait un drôle de bruit (mais impossible d'aller jusqu'à douze). Cette vitesse correspondait à une transmission de 110 bauds, ce qui est la raison pour laquelle tous les programmes de télécommunication du monde doivent encore supporter cette vitesse lamentablement lente : quelque pauvre hère pourrait encore avoir, quelque part, un télétype. L'ordinateur disposait de disques durs d'environ 20 mégaoctets. Les trois quarts de ces disques étaient interdits pour une raison purement politique l'administrateur essayait d'obtenir un disque plus gros, et tentait d'appuyer sa demande par des plaintes d'utilisateurs mécontents, plaintes qui, il l'espérait, se multiplieraient à cause de l'espace disque insuffisant et l'aideraient à faire aboutir sa demande. Ma mémoire de masse personnelle consistait en bandes de papier perforé. Elles offraient une inépuisable source d'amusement : à la fin de la journée, on ramassait les minuscules confettis dans le perforateur et on les jetait dans les cheveux de quelqu'un. Quoi qu'on fit, l'électricité statique les maintenait dans la chevelure jusqu'à la fin du semestre. Même aujourd'hui, j'ai de ces bandes de papier dans ma boîte à souvenirs, et les regarder me fait chaud au coeur. Ma femme Sandy veut que je les jette. Argh j'avais aussi acheté une bande magnétique (!) et avais demandé aux opérateurs système d'enregistrer mes fichiers dessus. Ce qui avait probablement occupé deux mètres sur les 800 de la bande, mais quelle sensation !
Un jour, je remarquai que l'ASR-33 était "à réponse automatique", comme un modem du même métal. En fait, quand on appelait le télétype depuis un autre terminal, il se mettait en marche automatiquement comme par magie. Cela était nécessaire pour que les télétypes de la Western Union remplissent leur fonction originale, la transmission des télex. Un caractère de fin de transmission, Control-D, remettait le terminal à l'arrêt (les parasites sur la ligne créaient beaucoup de faux Control-D, qui arrêtaient le terminal, jusqu'à ce que je bloque la tige de détection de ce caractère à l'aide d'un élastique).
Hélas!, la salle où se trouvait le télétype était celle où enseignait un prof de math, un certain jack Myslik, dit Jack le Pantin. Nous, les bidouilleurs, étions régulièrement expulsés de la salle, à notre grande irritation. J'allais donc au second terminal, dans un autre bâtiment, et la veille des vacances de Noël, je mis en place un complot. Jack faisait son cours. Dans un coin se trouvait le télétype. Brutalement, sans que quiconque y touche, l'ASR-33 se mit en marche. Et faisant joyeusement sonner sa clochette, il cracha du papier, imprima "Joyeux Noël à tous" , signé "Hewey l'ordinateur", puis se déconnecta. Dès cette époque, j'avais appris à me couvrir. J'étais accompagné d'un autre professeur, et nous étions tous deux morts de rire tandis que j'introduisais une bande de papier dans le second terminal qui avait appelé celui de la salle de maths. Je pensais que la double caution d'un professeur et de la saison des voeux-aux-hommes-de-bonne-volonté me mettraient à l'abri des représailles. Curieusement, cela s'avéra exact (depuis, je n'ai plus guère eu de chance en pariant sur la bonne volonté des gens). Jack le prit remarquablement bien. La classe en resta, me dit-on, stupéfaite.
Bientôt, je commençai à explorer le monde qui gravitait autour du HP. Il y avait une bibliothèque de programmes systèmes très intéressante. C'était les mêmes noms qui apparaissaient sans arrêt dans le code source, et c'est de ces gens que j'ai appris le plus. Les opérateurs du HP s'appelaient Phil Tubb et John Ridges, et ils étaient vraiment brillants. Plus tard, ils formèrent ALF, une boîte qui faisait des cartes musicales et à coprocesseur 68000 pour Apple Il, puis une affaire de duplication de disques très profitable. John Ridges est sans conteste le meilleur programmeur que j'aie jamais rencontré, HackerCon ou pas, et un concepteur de matériel hors pair. Même Dan Moore, qui n'est pas manchot, le dit sans hésiter. Et John a également une personnalité attachante, ce qui manque cruellement à bien des informaticiens géniaux.
Je découvris que ces gens avaient formé un club d'utilisateurs, le Jefferson County Computer Club, ou J3C, qui tenait des réunions mensuelles. Je commençai à y assister, et y découvris encore davantage. Ils avaient créé sur le HP un serveur RTC qui était excellent. C'est là que je participai à mes premières discussions télématiques. De plus, ils enseignaient l'assembleur, et avaient même réussi à persuader le gestionnaire du système de les laisser arrêter le HP le samedi matin, pour que les élèves de ce cours puissent essayer leurs programmes en assembleur (ces programmes ne pouvaient pas s'exécuter sous le basic en temps partagé, qui tenait lieu de système d'exploitation).
Ainsi, ils avaient écrit un assembleur en basic HP, qui transformait un code source assembleur en binaire craché sur une bande de papier. Petit problème : les ASR-33 utilisaient des mots de sept bits en parité paire, ce qui interdisait des codes assembleurs supérieurs à 127, puisque le 8e bit de chaque octet était pris par le bit de parité.
"Pas de problème", disait John Ridges. Son assembleur produisait aussi une seconde bande de papier qui masquait le bit de parité correctement. Vous aligniez et superposiez les deux bandes, l'une masquant l'autre, vous glissiez le tout dans un lecteur de bandes non connecté à la machine, en mode recopie, et le perforateur recopiait le tout sur une bande qui contenait le code assembleur correct. Une bidouille typique de John Ridges.
John écrivit aussi MultiComm, le premier programme que je n'ai jamais compris, quoi que j'y fasse. MultiComm permettait à seize utilisateurs de discuter simultanément via leurs terminaux. Il était incroyable qu'il marche, vu que le HP n'était pas du tout prévu pour permettre la communication inter-terminaux.
C'est ainsi que j'écrivis mon premier programme en assembleur HP. Il faisait défiler les LED du panneau de commande de gauche à droite et vice versa, comme une balle de ping-pong. (NdT: le HP était doté de rangées de LED visualisant les registres de son unité centrale, une LED par bit. Les données pouvaient être entrées à l'aide d'inverseurs.) Cela donnait :
move.w #1,d0 encore: move.w #15,d1 ; gauche: move.w d0,lumieres rol.w #1,d0 dbf d1,gauche; move.w #15,d1 droite: move.w d0,lumieres ror.w #1,d0 dbf d1,droite; bra encore end |
Je crois que compte tenu de la mentalité de ces gens qui cherchaient sans cesse à "pousser l'enveloppe", il était inévitable que je cherche à les imiter et que je commence à bidouiller le HP. Ces gens étaient mes héros, ils faisaient des programmes que je n'arrivais même pas à comprendre! Entre autres, nous faisions planter le système. Mais entendons-nous bien, planter le système était, en soi, totalement sans intérêt. Le véritable attrait de la chose, c'était de parvenir à contourner les mesures de sécurité conçues par les génies de HP, et vous prouver que vous pouviez les surpasser. je l'admets (et vous pouvez froncer les sourcils), une fois, j'ai planté le HP... et j'ai compris la leçon (soupir). Notez bien que j'étais ultra-prudent et que je veillais à ne jamais corrompre un fichier. J'ai juste arrêté le système. Ouais !, super, j'étais génial et tout. En attendant, je ne pouvais plus me connecter à Hewey. Plus de serveur RTC, plus de fichiers, plus rien. La leçon fut apprise définitivement durant la demi-heure que mit John à relancer le système à partir de bandes de papier "Planter le système, c'est rasoir." Quand je leur révélai l'origine du plantage, john et l'équipe ne s'intéressèrent qu'à la bidouille qui l'avait causé. Ils en informèrent HP, et HP l'ignora autant que je sache. Mais mon prestige augmenta légèrement aux yeux de mes héros : je devenais un hacker, et j'échangeais des informations librement.
Nous découvrîmes le programme Ralentisseur. Sur un système partagé, l'unité centrale accorde à chaque utilisateur à tour de rôle une tranche de temps, et chacun a ainsi l'illusion de disposer de la machine pour lui seul. Notre HP accordait ainsi 1/32e de son temps à chacun des trente-deux utilisateurs. Nous avions un programme qui utilisait 98% de sa tranche de temps avec deux instructions ASSIGN, et ces instructions étaient suivies d'une instruction ENTER qui forçait l'unité centrale à vous accorder plus de temps qu'il ne l'aurait fallu. On faisait tourner cela sur trois ou quatre terminaux, et le système s'arrêtait pour tous les autres utilisateurs, restant focalisé sur ces quelques terminaux. Nous fîmes l'expérience une fois, et en informâmes John. "Pas mal", dit-il. Il n'eut pas à nous dire : "Ne recommencez pas." C'était implicite. Après avoir découvert cette bidouille, nous nous attelâmes à des choses plus intéressantes.
D'autres fois, c'était amusant. Mon frère Jim avait fait un "jeu du canonnier" (Vous vous rappelez? On entrait la hausse en degrés et la quantité de poudre, et le programme imprimait à quelle distance on avait tiré et de combien on avait manqué la cible). Je le saisis en basic HP, et, à ma grande fierté, les responsables système le placèrent dans la bibliothèque de programmes du HP. Je mis la main sur un superbe nouveau gadget qu'on me prêta: un Hazeltine 2000.
C'était un terminal vidéo d'une vitesse incroyable de 300 bauds, ce qui était alors fabuleux pour moi. Il était doté de l'adressage du curseur : on pouvait déplacer le curseur n'importe où sur l'écran! Bientôt, j'avais écrit un programme d'alunissage avec graphiques pour le Hazeltine. Petite parenthèse en passant.
Lorsque j'entrai plus tard au lycée, mes connaissances en basic et en graphiques me tirèrent d'embarras. Je manquai tout juste de redoubler la première année, mais j'appris le secret des études indépendantes du lycée.
Trouvez un prof acceptant de vous soutenir, étudiez quelque chose que vous voulez absolument apprendre (par exemple, l'assembleur CDC 6600), faites- en un projet scolaire, et vous obtenez un 'A' tout en vous amusant. Ou bien étudiez le synthétiseur ARP 2600, créez une bande de deux minutes complètes, avec un effet sonore à la fin, dont le duplicata se trouve à présent dans la page secrète de dédicace de chaque disquette Spectre, et vous obtenez un autre 'A' en classe de musique. J'ai survécu au lycée, et ai obtenu une moyenne générale d'environ 10,001 sur 20 (NdT : on redouble avec 10 ou moins) grâce à cela.
Fin de la parenthèse.
Le plus grand événement pour moi fut le défi que nous lançâmes aux responsables système, un défi sous la forme d'un jeu de Trivia (NdT : questions-réponses) concernant le HP. Ils acceptèrent et furent très bon joueurs. Ils bricolèrent même un système électronique de sonnettes et de boutons-poussoirs, à base de circuits intégrés, qui permettait au premier qui avait la réponse à une question de presser un bouton, ce qui activait une sonnette et verrouillait le circuit, empêchant les autres joueurs de l'activer. Phil Tubb accepta d'arbitrer. Je sentis des frissons glacés en m'asseyant et en observant, de l'autre côté de la pièce, John Ridges et Tim Gill. Derrière chaque équipe se trouvait un ASR-33, connecté à Hewey, et nous croulions sous les manuels et les listings dont nous aurions pu avoir besoin. Chaque équipe posait à tour de rôle des questions à l'autre.
Ma question fut la première : "Quels sont les prénoms de Hewlett et Packard?" Sourires dans la salle, ce qui établit l'ambiance pour la soirée. Dring. Tim Gill: "Bill Hewlett, Dave Packard." (Tim travailla plus tard pour HP avant de fonder Quark). A leur tour : "Combien de trous y a-t-il dans 12,9 mètres de bande perforée ?" On sortit les calculatrices, tandis que le chrono avançait. Evidemment, nous manquâmes la réponse à une erreur d'arrondi près.
Nous répliquâmes : "Combien de terminaux peuvent exécuter une boucle faite de deux ASSIGN suivis d'un ENTER avant de bloquer le système?", ce qui rétablit l'égalité des scores. Et ainsi de suite.
Nous en arrivâmes à la dernière question alors que nous étions à égalité. Nous décidâmes d'un commun accord que la dernière question vaudrait suffisamment de points pour que la première équipe y répondant remporte l'épreuve.
Phil demanda aux deux équipes de calculer, avec une précision de deux cents chiffres significatifs, la valeur de 2/41457 (ou quelque chose d'approchant). Je songeai avec désespoir qu'il fallait écrire un programme de division à précision infinie. Vous savez, comme pour la division manuelle : reporter le chiffre, soustraire, multiplier... Tim Gill était déjà sur leur terminal, saisissant le programme auquel il songeait, ligne par ligne. Pris de sueurs froides, je commençais à écrire sur papier l'algorithme que Tim avait écrit dans sa tête. Leur terminal commença à cracher des chiffres : blip (pause), blip (pause), très lentement. Et soudain, je me souvins du programme de calculs en précision infinie de Tim. Il faisait des calculs avec le nombre de chiffres significatifs choisis par l'utilisateur. Et il était court. J'en sortis le listing de mon sac, et demandais à mon équipe de me le lire tandis que je le saisissais. Déjà, en ce temps, je pouvais taper trop vite pour les dix caractères par seconde de l'ASR-33 (et même pour les onze de ceux-là, vous pensez bien que nous les avions bidouillés). En quelques minutes, le programme était saisi, et nous le lançâmes. Notre terminal commença à éditer la réponse, sans aucune hésitation entre deux chiffres. Le programme des responsables système avait dépassé le 150e chiffre lorsque le programme de Tim, sur notre terminal, imprima finalement le 200e. Nous avions gagné.
Tim, hochant la tête, admit qu'il avait tout simplement oublié son programme calculateur en précision infinie. Pour lui, ce n'était qu'une petite bidouille rapide.
Rien, absolument rien de ce que j'ai fait au collège ne peut rivaliser avec ces moments où mes camarades et moi surpassions les meilleurs des bidouilleurs à l'aide de leur propre programme. Ce fut l'un des grands moments de ma vie. Et quelque part à la cave, il y a une boite marquée "Gare à vous si vous jetez cela", contenant les vieux listings et bandes perforées du HP 2000C, jaunissant doucement, les premières choses que j'aie jamais créées sur un ordinateur.