# Xerox Alto

Le Xerox Alto est un mini-ordinateur conçu au Xerox PARC en 1973. Il fut l'un des premiers ordinateurs à écran d'usage personnel et le premier à utiliser la métaphore du bureau, ainsi qu'une interface graphique. Bien qu'on le cite comme étant le premier ordinateur personnel, d'autres machines sont aussi candidates au titre ; l'Alto était un outil de recherche pour Xerox, un prototype de ce que serait plus tard le Xerox Star. Seulement un petit nombre fut produit initialement, mais vers la fin des années 1970, environ 1 000 étaient utilisés dans divers laboratoires Xerox, et approximativement 500 dans plusieurs universités. Au total, la production fut d'environ 2 000 systèmes, pour un prix d'achat unitaire de $32 000, soit $134 000 de 2023.
Le père de l'Alto, Charles P. Thacker, reçu le Prix Turing 2009 pour ses travaux sur cet ordinateur.

## Description matérielle

Les caractéristiques techniques de l'Alto ont principalement été décrites dans le manuel matériel de l'Alto de Xerox PARC, daté d'août 1976$^,$.
L'Alto utilise une conception microcodée, mais contrairement à la plupart des ordinateurs, le microcode réside majoritairement en mémoire vive, exposé à l'utilisateur. Des applications comme Pinball en tirent parti pour accélérer les performances via leur propre microcode. L'Alto dispose d'une unité arithmétique et logique (ALU) en architecture bit-slice basée sur la puce Texas Instruments 74181, très utilisée dans les mini-ordinateurs 16 bits de l'époque, ainsi que d'une mémoire de contrôle ROM avec une extension de mémoire de contrôle réinscriptible, et de 128 Ko de mémoire principale (extensible à 512 Ko) organisée en mots de 16 bits. Le stockage de masse est assuré par un disque dur utilisant une cartouche amovible à plateau unique de 2,5 Mo (fournie par Diablo Systems, une société rachetée plus tard par Xerox), similaire à celles utilisées par l'IBM 2310. La machine de base et un lecteur de disque sont intégrés dans une armoire de la taille d'un petit réfrigérateur ; un deuxième lecteur de disque peut être ajouté via un chaînage en guirlande.
L'Alto abstrait les distinctions traditionnelles entre les éléments fonctionnels. Plutôt que de disposer d'une unité centrale distincte avec une interface bien définie (comme un bus système) pour accéder à la mémoire et aux périphériques, l'ALU de l'Alto interagit directement avec les interfaces matérielles de la mémoire et des périphériques, pilotée par des micro-instructions issues de la mémoire de contrôle. Le moteur de microcode prend en charge jusqu'à 16 tâches multitâches coopératives, chacune ayant une priorité fixe.
Parmi ces 16 tâches figure le moteur d'exécution nommé émulateur, exécutant le jeu d'instructions utilisé par les applications, calqué sur celui du Data General Nova. D'autres tâches sont dédiées à la copie des pixels vers l'affichage trente fois par seconde, au rafraîchissement de la mémoire, aux opérations sur le disque, à la lecture de la position de la souris, au réseau et à d'autres fonctions d'entrée/sortie. Par exemple, le contrôleur d'affichage bitmap n'est guère plus qu'un registre à décalage de 16 bits ; le microcode transfère les données de rafraîchissement de l'affichage de la mémoire principale vers le registre à décalage, qui les sérialise pour produire une image composée des pixels correspondant aux uns et aux zéros des données en mémoire.
L'Ethernet repose de la même façon sur un matériel minimal, avec un registre à décalage agissant de manière bidirectionnelle pour sérialiser les mots de sortie et désérialiser les mots d'entrée, le reste étant pris en charge par le microcode. Sa vitesse était limitée à 3 Mbit/s car le moteur de microcode ne pouvait pas fonctionner plus rapidement tout en gérant l'affichage vidéo, l'activité du disque et le rafraîchissement de la mémoire.
Contrairement à la plupart des mini-ordinateurs de son époque, l'Alto ne prend pas en charge de terminal série pour l'interface utilisateur. Mis à part une connexion Ethernet, le seul périphérique de sortie commun à l'Alto est un écran cathodique (CRT) à niveaux binaires (noir et blanc) monté sur une base pivotante et inclinable, orienté en mode portrait plutôt qu’en mode paysage, pourtant plus courant. Ses périphériques d’entrée incluent un clavier détachable personnalisé, une souris à trois boutons et un clavier accordé optionnel à cinq touches (chord keyset). Ces deux derniers dispositifs avaient été introduits par le système On-Line de SRI. La souris fut un succès immédiat auprès des utilisateurs de l'Alto, mais le clavier accordé ne devint jamais populaire.
La machine fut le premier ordinateur moderne équipé d'une souris (d'abord mécanique — à boules —, puis optique), inspirée des prototypes de Douglas Engelbart développés au SRI et d'un clavier accord optionnel à cinq touches.
* Souris à trois boutons de l'Alto, 1973.
* Vue du dessous de la première version de la souris de l'Alto.
* Clavier accord de l'Alto (appelé « keyset »).

## Description logicielle

Les premiers logiciels de l'Alto furent écrits dans le langage de programmation BCPL, puis plus tard en Mesa, un langage peu utilisé en dehors du PARC mais qui influença plusieurs langages ultérieurs tels que Modula. L'Alto utilisait une version précoce de l'ASCII qui ne comprenait pas le caractère de soulignement "_" ("tiret bas"), remplacé par le caractère de flèche gauche utilisé dans ALGOL 60 et dérivés comme opérateur d'affectation. Cette particularité pourrait être à l'origine du style CamelCase pour les identifiants composés. Les Altos étaient également programmables en microcode par les utilisateurs.
L'Alto contribua à populariser le modèle graphique raster pour toutes les sorties, incluant le texte et les graphiques. Il introduisit aussi le concept de l'opération de transfert de blocs de bits (Bit Block Transfer, BitBLT) comme interface de programmation fondamentale pour l'affichage, retrouvé ensuite sur le Macintosh. Malgré la faible capacité mémoire de l'Alto, de nombreux programmes innovants furent développés, notamment :
* Les premiers systèmes de préparation de documents WYSIWYG, Bravo et Gypsy ;
* L'outil de messagerie électronique Laurel, et son successeur Hardy$^,$;
* L'éditeur graphique vectoriel Sil, utilisé principalement pour les circuits logiques, les cartes de circuits imprimés et d'autres schémas techniques ;
* L'éditeur bitmap Markup (un des premiers programmes de peinture numérique) ;
* L'éditeur graphique Draw, utilisant des lignes et des splines ;
* Le premier éditeur de circuits intégrés WYSIWYG, basé sur les travaux de Lynn Conway, Carver Mead, et la révolution Mead-Conway ;
* Les premières versions de l'environnement Smalltalk ;
* Interlisp ;
* Un des premiers jeux vidéo multijoueurs en réseau, Alto Trek par Gene Ball.
En revanche, il n'y avait ni logiciel de tableur ni logiciel de base de données. Le premier tableur électronique, VisiCalc, n'apparut qu'en 1979.
* Le Alto Executive, l'interpréteur de commandes permettant de lancer les programmes
* L'explorateur de fichier en mode graphique Neptune
* L'environnement de développement Smalltalk à fenêtres chevauchantes, préfigurant les environnements de bureau modernes

## Diffusion et évolution

Conceptuellement, l'Alto est un mini-ordinateur, mais pouvant aussi être considéré comme un ordinateur personnel dans le sens où il est utilisé par une seule personne assise à un bureau, contrairement aux grands systèmes et aux autres mini-ordinateurs de l'époque. Il est parfois qualifié de "premier ordinateur personnel", bien que ce titre fasse débat. Plus significativement, il peut être considéré comme l'une des premières stations de travail, avec des successeurs tels que les stations Apollo et les systèmes de Symbolics (conçus pour exécuter nativement Lisp comme environnement de développement).
Entre 1976 et 1977, Niklaus Wirth, père notamment du langage Pascal, passa une année sabbatique au PARC et fut impressionné par l'Alto. Etant impossible pour lui de ramener un système Alto en Europe, Wirth décida de construire un nouveau système à partir de zéro. Avec son équipe, il conçut le Lilith, qui fut prêt vers 1980, avant qu'Apple ne sorte le Lisa en 1981 et le Macintosh en 1984. Vers 1985, Wirth entama une refonte complète du Lilith sous le nom de "Projet Oberon".
En 1978, Xerox fit don de 50 Altos à des institutions comme le Massachusetts Institute of Technology (MIT), l'université de Standford, l'université de Carnegie Mellon et l'Université de Rochester. Le National Bureau of Standards, à Gaithersburg dans le Maryland, reçut un Alto fin 1978, accompagné de serveurs de fichiers Xerox Interim File System (IFS) et d'imprimantes laser Dover. Ces machines inspirèrent la station Lilith de l'ETH Zurich, la station PERQ de Three Rivers Company, et la station de travail Stanford University Network (SUN), qui donna naissance à l'entreprise Sun Microsystems. Les stations de travail Apollo/Domain furent également fortement influencées par l'Alto.
En décembre 1979, Steve Jobs, cofondateur d'Apple Computer, visita Xerox PARC, où il découvrit l'environnement de programmation orientée objet Smalltalk-76, les réseaux informatiques et, surtout, l'interface graphique WYSIWYG pilotée par une souris, fournie par l'Alto. À l'époque, il ne saisit pas l'importance des deux premiers aspects, mais fut enthousiasmé par le dernier. L'interface graphique fut rapidement intégrée et améliorée dans les produits Apple, d'abord dans le Lisa, puis dans le Macintosh. Jobs recruta également plusieurs chercheurs clés du PARC pour travailler sur ces deux projets.