Space Travel
En 1969, Ken Thompson ne cherche pas encore à créer l’un des systèmes d’exploitation les plus influents de l’histoire. Il veut notamment faire fonctionner un jeu dans lequel un vaisseau peut parcourir le système solaire, se placer en orbite et tenter d’atterrir sur des planètes ou des lunes. Ce programme s’appelle Space Travel.
Le jeu va pourtant avoir une conséquence inattendue. Pour obtenir une expérience plus fluide et moins coûteuse, Thompson et Dennis Ritchie vont s’intéresser à un DEC PDP-7 peu utilisé des Bell Laboratories. En apprenant à programmer directement cette petite machine et son affichage graphique, ils découvrent également l’environnement matériel sur lequel prendra bientôt forme le premier UNIX.
Fiche rapide
| Repère | Description |
|---|---|
| Nom | Space Travel |
| Créateur principal | Ken Thompson, avec la participation de Dennis Ritchie lors du portage sur PDP-7 |
| Date | 1969 |
| Lieu | Bell Laboratories, États-Unis |
| Type | Simulation de navigation dans le système solaire |
| Machines | GE 635 puis DEC PDP-7 |
| Version PDP-7 | Assembleur, avec calcul flottant réalisé en logiciel |
| Importance historique | Space Travel familiarise Thompson et Ritchie avec le PDP-7 sur lequel naît ensuite UNIX |
1969 : après Multics, chercher un nouvel environnement
Pour comprendre pourquoi un jeu spatial se retrouve mêlé à l’histoire d’UNIX, il faut revenir à la situation des Bell Laboratories à la fin des années 1960. Bell Labs participe alors avec le MIT et General Electric au développement de Multics, un ambitieux système de temps partagé destiné à permettre à plusieurs utilisateurs de travailler simultanément sur un grand ordinateur.
Le projet progresse cependant plus lentement que prévu et les Bell Labs commencent à s’en retirer. Pour Thompson, Ritchie et plusieurs de leurs collègues, le problème ne consiste pas seulement à perdre un projet logiciel. Ils risquent également de perdre une manière de travailler devenue importante : disposer d’un ordinateur interactif sur lequel programmer, expérimenter et échanger rapidement avec les autres chercheurs.
Thompson réfléchit déjà à ses propres idées de système de fichiers et de système d’exploitation. Plusieurs tentatives d’obtenir une nouvelle machine suffisamment puissante échouent. C’est dans ce contexte qu’un projet beaucoup plus ludique va lui faire découvrir une autre voie.
Space Travel : voyager dans un système solaire simulé
Space Travel simule le mouvement de plusieurs corps du système solaire. Le joueur contrôle un vaisseau soumis à la gravité et peut voyager d’un astre à l’autre. Il ne s’agit pas de détruire des ennemis ou d’accumuler des points : l’intérêt réside dans la navigation elle-même. On peut modifier sa trajectoire, se placer en orbite et essayer d’atterrir avec une vitesse suffisamment faible pour ne pas s’écraser.
Le programme tient compte des masses et des dimensions relatives des orbites. La simulation n’est évidemment pas un modèle astrophysique moderne et ignore notamment les effets relativistes, mais elle crée un espace dans lequel le joueur doit comprendre intuitivement les conséquences d’une accélération ou d’un changement de direction.
L’affichage adopte une convention originale. Le vaisseau reste normalement au centre de l’écran et pointe vers le haut. Lorsque le joueur tourne, c’est donc la représentation du système solaire qui semble pivoter autour de lui. Cette manière de présenter la scène explique pourquoi une capture de Space Travel peut être déroutante aujourd’hui : le vaisseau n’est pas un gros sprite facilement identifiable comme dans un jeu vidéo moderne.
Un jeu beaucoup trop cher sur le grand ordinateur
Dans son récit historique détaillé, Dennis Ritchie explique qu’une première version est écrite sur Multics puis adaptée en FORTRAN pour fonctionner sous GECOS, le système utilisé sur le GE 635. La machine peut exécuter le programme et alimenter un affichage graphique, mais l’expérience est loin d’être idéale.
Le contrôle est peu agréable : le joueur doit saisir des commandes et l’affichage paraît saccadé. Surtout, utiliser un gros ordinateur central pour jouer coûte cher. Ritchie donnera selon ses souvenirs un ordre de grandeur de cinquante à soixante-quinze dollars de temps processeur pour une partie. Même s’il s’agit essentiellement de comptabilité interne aux Bell Labs, le résultat est difficile à justifier pour un jeu.
Thompson cherche alors une machine sur laquelle il pourrait disposer de davantage de liberté.
Le PDP-7 oublié au fond du laboratoire
La solution se trouve déjà aux Bell Labs. Un DEC PDP-7 équipé d’un système graphique est relativement peu utilisé. Il s’agit d’un petit ordinateur comparé aux grands systèmes du centre de calcul, mais cette disponibilité constitue précisément son avantage : Thompson peut expérimenter sans consommer le coûteux temps de calcul du GE 635.
La machine dispose d’un système d’affichage vectoriel appelé Graphic II. Au lieu de construire une image comme un écran moderne composé de millions de pixels, un affichage vectoriel commande directement le tracé de points et de lignes. Pour un programme représentant des trajectoires, des planètes et des repères, cette technologie est particulièrement adaptée.
Thompson et Ritchie décident donc de porter Space Travel sur le PDP-7. Mais changer d’ordinateur à cette époque ne consiste pas à recompiler simplement le même programme.
Pour porter le jeu, il faut reconstruire presque tout
Le PDP-7 offre un environnement extrêmement réduit. Il possède seulement quelques milliers de mots de mémoire de 18 bits et ne fournit pas le confort logiciel auquel les chercheurs sont habitués sur les grandes machines. Thompson et Ritchie choisissent d’écrire la nouvelle version de Space Travel directement en assembleur.
Le jeu ayant besoin de calculs portant sur des positions, des vitesses, des distances et des trajectoires, ils doivent notamment disposer d’opérations en virgule flottante. Or le matériel ne leur fournit pas tout ce dont ils ont besoin. Ils écrivent donc eux-mêmes un ensemble de routines de calcul flottant. Multiplications, divisions, racines carrées et fonctions nécessaires à la simulation doivent être construites en logiciel.
Ils créent également les représentations graphiques des caractères utilisés à l’écran ainsi qu’un système de débogage. Celui-ci peut afficher en permanence le contenu d’une adresse mémoire sélectionnée, une aide précieuse lorsque l’on développe des routines numériques en assembleur sur une machine aussi limitée.
Le processus de développement est lui-même révélateur de l’époque. Les programmes sont d’abord assemblés sur le GE 635 à l’aide d’un cross-assembler, c’est-à-dire un assembleur produisant du code destiné à une autre machine. Le résultat est ensuite transféré physiquement vers le PDP-7 au moyen d’une bande perforée.
Modifier une partie du jeu impose donc de revenir sur le grand ordinateur, reconstruire le programme, produire une nouvelle bande puis la charger dans le PDP-7. Cette méthode fonctionne, mais elle devient rapidement fastidieuse.
Space Travel apprend à Thompson à maîtriser le PDP-7
C’est ici que l’importance historique du jeu apparaît réellement. Space Travel ne contient pas en lui-même les principes d’UNIX. En revanche, sa réalisation oblige Thompson à connaître intimement le PDP-7 : son processeur, sa mémoire, ses entrées-sorties et son système graphique.
Ritchie résumera plus tard ce rôle en expliquant que le jeu a surtout servi d’introduction à la technologie assez pénible nécessaire pour préparer des programmes destinés au PDP-7. Une fois cette étape franchie, Thompson sait qu’il dispose d’une machine sur laquelle il peut travailler librement.
Il possède alors deux choses essentielles : des idées de système de fichiers développées auparavant avec ses collègues et une machine qu’il connaît désormais suffisamment bien pour les expérimenter.
Un rôle que Dennis Ritchie lui-même relativisait
Il faut toutefois éviter de transformer Space Travel en cause unique de la naissance d’UNIX. Dennis Ritchie lui-même en minimisait le rôle direct. Dans son récit de l’évolution d’UNIX, il explique que le jeu servit surtout d’« introduction » aux techniques assez laborieuses nécessaires pour préparer des programmes destinés au PDP-7. Les idées de système de fichiers existaient déjà, et Thompson avait auparavant tenté de développer un système d’exploitation sur le GE-645.
Mais Ritchie reconnaît aussi ailleurs une relation plus subtile. En portant Space Travel, Thompson apprend à connaître le PDP-7 et découvre surtout qu’il peut utiliser cette machine presque librement. Lorsque revient son envie de construire un système d’exploitation, il dispose donc enfin d’une machine accessible qu’il maîtrise. Ritchie résumera cette succession ainsi : Space Travel précède UNIX et, sans en être la cause unique, conduit Thompson jusqu’à l’environnement dans lequel il peut réaliser la première version du système.
Du jeu au système de fichiers
Le passage ne se fait donc pas directement de « jeu vidéo » à « système d’exploitation ». Thompson commence par mettre en œuvre sur le PDP-7 le système de fichiers auquel il réfléchissait déjà. Mais un système de fichiers isolé est peu utile. Pour créer et manipuler des fichiers, il faut des programmes ; pour exécuter ces programmes, il faut gérer des processus.
Peu à peu apparaissent ainsi les éléments d’un environnement complet : mécanismes de processus, commandes permettant de copier, afficher, supprimer ou modifier des fichiers, éditeur et interpréteur de commandes. Lorsque l’équipe termine un assembleur capable de fonctionner directement sur le PDP-7, elle n’a plus besoin de retourner systématiquement sur le GE 635 pour préparer les programmes.
Le système devient alors capable de participer à son propre développement. C’est cette évolution, au cours de 1969, qui conduit au premier environnement qui sera bientôt appelé UNIX.
Space Travel n’est donc pas « le programme qui crée UNIX ». Il joue un rôle plus précis et plus intéressant : il conduit Thompson vers le PDP-7 et l’oblige à maîtriser suffisamment cette machine pour qu’elle puisse devenir le laboratoire de son nouveau système d’exploitation.
Comment se joue Space Travel ?
L’objectif est volontairement ouvert. Le joueur peut explorer le système solaire, rejoindre une planète, tenter de se placer en orbite ou essayer d’atterrir. Il n’y a ni score ni adversaire : l’intérêt vient de la navigation elle-même et de la manière dont une poussée modifie progressivement la trajectoire du vaisseau sous l’effet de la gravité.
Sur le PDP-7, le joueur ne disposait évidemment pas d’une manette moderne. Le système graphique Graphic II comportait notamment un boîtier de boutons que Space Travel utilisait pour piloter le vaisseau. Dans les restaurations actuelles, ces huit commandes sont généralement associées aux touches numériques :
| Touche | Commande | Effet |
|---|---|---|
1 |
Quit | Quitter le jeu |
2 |
New game | Recommencer la simulation |
3 |
Thrust down | Modifier la poussée dans un sens |
4 |
Thrust up | Modifier la poussée dans l’autre sens |
5 |
Yaw right | Faire pivoter la direction vers la droite |
6 |
Yaw left | Faire pivoter la direction vers la gauche |
7 |
Scale up | Augmenter l’échelle d’affichage |
8 |
Scale down | Réduire l’échelle d’affichage |
Le fonctionnement visuel peut surprendre. Le vaisseau reste normalement au centre de l’écran et pointe vers le haut. Lorsque le joueur change de direction, c’est donc la représentation du système solaire qui semble tourner autour de lui. Les commandes d’échelle permettent quant à elles de passer d’une vue rapprochée autour d’un astre à une représentation beaucoup plus vaste du système solaire.
Le programme affiche également le nom du corps qui exerce actuellement l’attraction gravitationnelle dominante sur le vaisseau. Dans certaines versions historiques, le Soleil apparaît sous le nom Surya et la Lune sous celui de Chandra. Dennis Ritchie explique que ces noms furent introduits pour s’amuser alors que Ravi Sethi travaillait comme étudiant d’été aux Bell Labs.
L’échelle peut être modifiée de façon spectaculaire. Comme la simulation ne tient pas compte de la relativité, Ritchie racontait qu’en augmentant suffisamment l’échelle, on pouvait parcourir la distance jusqu’à Pluton en quelques secondes. Mais une échelle excessive pouvait également envoyer le joueur si loin qu’il devenait difficile de retrouver le système solaire sans recommencer la partie.
Space Travel n’est pas Spacewar!
Les deux programmes sont parfois confondus, notamment parce qu’ils utilisent des ordinateurs DEC et mettent en scène des vaisseaux spatiaux. Pourtant, Space Travel et Spacewar! sont deux programmes différents.
Spacewar!, développé au MIT au début des années 1960 sur PDP-1, oppose des vaisseaux dans un jeu de combat. Space Travel est avant tout une simulation de navigation : on voyage entre les corps du système solaire et l’on essaie de maîtriser orbites et atterrissages.
Ritchie indique d’ailleurs qu’une adaptation fidèle de Spacewar! fut également réalisée plus tard sur leur environnement PDP-7. La coexistence des deux programmes explique probablement une partie des confusions dans certains récits ultérieurs.
Le jeu finit par fonctionner sous UNIX
La première version PDP-7 de Space Travel fonctionne indépendamment du système d’exploitation qui n’existe pas encore. Mais lorsque PDP-7 UNIX devient opérationnel, le jeu est adapté pour fonctionner à l’intérieur de ce nouvel environnement.
Cette distinction est importante pour interpréter les sources aujourd’hui disponibles. Le programme restauré que l’on peut actuellement reconstruire à partir des listings historiques correspond à cette période où UNIX existe déjà sur le PDP-7. Il ne s’agit donc pas nécessairement, octet pour octet, du programme autonome utilisé avant la naissance du système.
2019 : le code de Space Travel réapparaît
Pendant plusieurs décennies, une grande partie du code du premier UNIX semble perdue. Quelques fragments subsistent dans des archives et des copies personnelles, mais la documentation est très incomplète.
Une première étape importante intervient lorsque des copies papier réalisées autrefois par Norman Wilson permettent à des passionnés de commencer la reconstruction de PDP-7 UNIX. Warren Toomey et d’autres membres de la Unix Heritage Society entreprennent alors de transcrire, comprendre et remettre en fonctionnement les programmes.
En 2019, à l’occasion du cinquantième anniversaire d’UNIX, le Computer History Museum annonce la découverte dans les archives de Dennis Ritchie d’un classeur noir portant l’inscription Unix Book II. Il contient près de 190 pages de listings en assembleur PDP-7 datant probablement de 1970 ou du début de 1971.
Parmi ces pages se trouvent environ vingt-huit pages consacrées à Space Travel. On y retrouve également des programmes essentiels des premiers UNIX, comme le shell, roff, ls ou stat. La découverte apporte aux travaux de restauration des morceaux qui manquaient jusque-là.
On peut aujourd’hui rejouer à Space Travel
Grâce au projet de restauration pdp7-unix, ces listings ont été retranscrits et adaptés afin de reconstruire un système fonctionnel. Le projet permet de démarrer PDP-7 UNIX aussi bien dans l’émulateur SIMH que, dans certains cas, sur du véritable matériel restauré.
Dans cet environnement, Space Travel apparaît sous la commande st. Pour retrouver l’affichage du jeu, l’émulation doit également reproduire le système graphique Graphic II du PDP-7.
Le résultat reste visuellement extrêmement dépouillé : fond noir, lignes blanches, quelques points et informations numériques. Pourtant, derrière cette apparente simplicité se trouvent des calculs de trajectoire, un système graphique vectoriel, des routines mathématiques écrites spécialement pour la machine et l’un des environnements logiciels les plus intéressants de la fin des années 1960.
Illustration conseillée ici : capture de Space Travel exécuté dans PDP-7 UNIX avec SIMH. Légende : « Space Travel exécuté à partir du code PDP-7 restauré. Le nom de l’astre exerçant l’attraction dominante apparaît en bas de l’écran. »
Pour poursuivre sur le site
- Ken Thompson : le parcours du principal créateur de Space Travel et d’UNIX.
- Dennis Ritchie : témoin direct et acteur majeur de cette histoire.
- DEC PDP-7 : la petite machine sur laquelle Space Travel puis le premier UNIX prennent forme.
- Multics : le grand projet dont le retrait des Bell Labs précède la naissance d’UNIX.
- Spacewar! : un autre jeu spatial historique, souvent confondu avec Space Travel.
- Le langage C : l’étape suivante qui rendra UNIX beaucoup plus portable.
Sources principales
- Dennis M. Ritchie, The Evolution of the Unix Time-sharing System — récit de référence sur la naissance d’UNIX et le rôle de Space Travel.
- Dennis M. Ritchie, Space Travel: Exploring the Solar System and the PDP-7 — souvenirs détaillés sur le jeu, son fonctionnement et son portage.
- Dennis M. Ritchie, Ken, Unix and Games — réflexion sur le rôle des jeux dans le travail de Ken Thompson.
- Computer History Museum, The Earliest Unix Code: An Anniversary Source Code Release — découverte et publication en 2019 du classeur Unix Book II contenant le code de Space Travel.
- The Unix Heritage Society — archives et travaux de reconstruction de PDP-7 UNIX.
- Projet pdp7-unix de Warren Toomey et contributeurs — reconstruction fonctionnelle des sources historiques.
