Reprinted from Byte, issue 9/1981, pp. 58-68. In the mid-1970s, the personal-computer market blossomed with the introduction of the Altair 8800. Each year since has brought us personal computers with more power, faster execution, larger memory, and better mass storage. Few computer enthusiasts or professionals can look at the machines of today without wondering: What’s next? In 1972, Xerox Corporation decided to produce a personal computer to be used for research. The result was the Alto computer, whose name comes from the Xerox Palo Alto Research Center where it was developed. The Alto was the result of a joint effort by Ed McCreight, Chuck Thacker, Butler Lampson, Bob Sproull, and Dave Boggs, who were attempting to make a device that was small enough to fit in an office comfortably, but powerful enough to support a reliable, high-quality operating system and graphics display. Their goal was to provide each user with a personal computing facility capable of meeting all individual needs and a communications facility that would allow users to share information easily. In 1978, Xerox donated a total of fifty Altos to Stanford, Carnegie-Mellon, and MIT (Massachusetts Institute of Technology). These machines were quickly assimilated into the research community and rapidly became the standard against which other personal computers were judged. It is unlikely that a person outside of the computer-science research community will ever be able to buy an Alto. They are not intended for commercial sale, but rather as development tools for Xerox, and so will not be mass-produced. What makes them worthy of mention is the fact that a large number of the personal computers of tomorrow will be designed with knowledge gained from the development of the Alto. The Alto consists of four major parts: the graphics display, the keyboard, the graphics mouse, and the disk storage/processor box. Each Alto is housed in a beautifully formed, textured beige metal cabinet that hints at its $32,000 price tag. With the exception of the disk storage/processor box, everything is designed to sit on a desk or tabletop. Photo 1: Two of the Xerox Alto personal computers. Each Alto processor is made of medium- and small-scale TTL integrated circuits, and is mounted in a rack beneath two 3-megabyte hard-disk drives. Note that the video displays are taller than they are wide and are similar to a page of paper, rather than standard television screen. The graphics display is the most striking feature of the Alto. It looks somewhat like a television screen that has been turned sideways (see photo 1). It is a raster-scan display, and the physical dimensions of the screen are 8 inches (horizontal) by 10 inches (vertical). The black-and-white display allows the user to address an area 808 pixels (picture elements) vertically by 606 pixels horizontally. This results in resolution of about 80 points per inch. The method of display used is called bit-mapped raster scan. This means that every point on the display is addressable as a bit in memory. Although this method can take up a great deal of memory, it has the advantage of making the display very fast. Bit mapping also provides the user with a convenient method of screen access and the ability to easily look at the current contents of the screen. In terms of displaying text, the screen can hold 60 lines of 90 characters (assuming the characters are equivalent to the typical 7 by 9 dot character commonly found on most video terminals). Character generation is not done in hardware on the Alto. A character set may be created by a user and displayed on the screen. Mixed fonts are allowed so that text of various sizes and shapes may be simultaneously displayed on the screen. Photo 2: Display from the keyboard-test program. The Alto keyboard has a separate signal line for each key and can thus tell when any number of keys are being pressed simultaneously. In the display, the black keys are being held down. The small square above the keyboard represents the mouse (see photo 4); one mouse key is also pressed. Since each dot on the display corresponds to only one bit in memory, there is no facility for grays or intermediate intensities. Due to the large number of points per inch, however, various combinations of points can be displayed to form a “texture” that gives the impression of varying shades of gray. This is exactly the same method used to reproduce pictures in a newspaper. Photo 3: The Pinball game. Flippers are actuated by the two shift keys; an Alto port can be connected to a speaker to provide bells and buzzer sounds. Superficially, the Alto keyboard resembles a typical typewriter keyboard with the addition of a few special keys. The keyboard is detachable, and quite comfortable for typing. It has the unique property of being entirely unencoded. Each key has its own signal line in the keyboard interface, which allows a program to take advantage of the possibility of “chord” commands, where the user holds down one or more keys. For example, Shift-Control-E is as easy for the Alto to read as A-B-C (see photo 2). Another advantage is the ability to determine how long a key has been held down. For example, the pinball game program in photo 3 determines the force of a shot by measuring how long a key is held down on the keyboard. There is, of course, software to allow a program to read the keyboard in the typical manner. Photo 4: The mouse input device. The operator uses the mouse to control cursor placement on the screen; it detects its own change in position (a joystick relies on absolute position) as the operator rolls it around on a piece of soft plastic. The mouse also has three buttons, called red, yellow and blue. The mouse is a small box with three buttons on the top and several ball bearings on the bottom. A slender cable connects the mouse to the Alto keyboard (see photo 4). The buttons are named red, yellow, and blue, although the physical buttons are all black. The mouse is typically held in the user’s right hand and rolled along the table on a soft piece of plastic that provides traction for the ball bearings. Movement is detected by the motion of one of the ball bearings. The mouse reports changes in position to the Alto. From this, a cursor on the Alto display can be positioned. The physical position of the mouse on the table is unimportant, since only the change in position is reported. The mouse graphics interface is considerably more flexible and comfortable than a bit pad, joystick, or trackball. Many Alto programs can be controlled with the mouse alone, independent of a keyboard. The processor and disk storage for the Alto are contained in a rack about the size of a waist-high filing cabinet. Each Alto has two 3-megabyte disk drives. The drives themselves resemble small pizza ovens and are often referred to in this manner. The “brain” of the Alto is a 16-bit custom-made processor intended to resemble the Data General Nova 1220. The processor is made entirely of small- to medium-scale TTL (transistor-transistor logic) ICs (integrated circuits). The processor operates at a speed of approximately 400,000 instructions per second. Each Alto has an address space of 64 K 16-bit words, including the graphics bitmap. By using a technique called bank selection, the Alto may expand its available memory in 64 K-word increments up to 256 K words. An Alto with 256 K words is known as a wide-bodied Alto. Quite a bit of the magic of the Alto is performed at the microcode level. The Alto can run up to sixteen tasks concurrently, and all of the scheduling and I/O (input/output) for this multiprocessing is done in microcode. The user has direct control over only one task, however. The user task is the lowest priority and must, if necessary, relinquish processing cycles to the other tasks that control the display, disks, keyboard and mouse I/O, and Ethernet connections. The user has direct control over the microcode and may rewrite it according to individual taste. The Alto has the interesting property of using software (often microcode) to perform many tasks, such as keyboard encoding and character generation, that are typically done in hardware. This approach leaves the Alto with an occasionally cumbersome but highly flexible architecture. Each Alto has a ROM (read-only memory) that contains just enough software to “bootstrap” an Alto into the local network (see textbox on this page). By keeping a bootstrap program in ROM, the user will always have a “safety net” to fall back on in case some other portion of the system software is not working. All of the Alto software can be retrieved from across the network. The Alto Operating System (OS), a program which provides a set of basic facilities for control and communication with the Alto, is written in BCPL, a language very similar to C. Most programs, BCPL or otherwise, run under the direction of the Alto OS. Since the address space of an Alto is small, a technique called a “Junta” is used to permit BCPL programs to shed unwanted sections of the Alto OS during execution. If those portions are needed later, they may be restored by performing a “Counterjunta.” Photo 5a: Examples of Alto software: Display of the Alto Executive, with an example of star and question-mark notation. One BCPL program that runs on top of the operating system is called the Alto Executive (see photo 5a). This program speaks to the user directly and makes facilities available for file manipulation and program execution. An interesting feature of the Executive is that of escape expansion and file-name completion. Typing a partial file or program name followed by an escape, in the same fashion that an ESC (escape) or ALT (alternate mode) might be sent from an ASCII (American Standard Code for Information Interchange) terminal, causes the Executive to complete the typing of the name on the screen. This allows a programmer to name a file in a descriptive manner (such as Gatewaylnformation.press), rather than typing in a long name. The Executive program will recognize it as soon as it has read enough characters to determine the file uniquely. By typing a question mark instead of an escape, the Executive will list all file names that are valid matches for the string typed thus far. The Alto has a highly flexible and rugged file system. Unlike many file systems (eg: Digital Research’s CP/M or Radio Shack’s TRSDOS) that limit names to six or eight characters with a three-character extension, the Alto file system permits file names of up to thirty-one characters in length. When a file name is entered for the first time, the file name is stored exactly as typed, even with regard to upper- and lowercase. Since the file names may be very long, this permits a programmer to use upper- and lowercase to improve readability. LongFileName.BigExtension is much easier on the eyes than LONGFILENAME.BIGEXTENSION. After the creation of a file, case is ignored when the user is speaking about the file, so either of the two names in the previous examples, as well as longfilename.bigextension, would be valid. Alto files are divided into pages. Each page contains a small header that describes the current page, tells what file the page belongs to, and points to the places on the disk that contain the next and previous pages for the same file. This makes the file system almost indestructible. A program called Scavenger can automatically rebuild a broken file system. Photo 5b: Examples of Alto software: NetExecutive (similar to the Alto Executive, but it allows access to resources on the Ethernet. Of course, no Alto is an island, so software is needed to deal with the Ethernet network. Some of this software appears in the form of the NetExecutive (see photo 5b) and FTP (file-transfer program). The NetExec is a program that appears to be very similar to the Alto Executive, but it loads programs from across the network rather than from the local disk. This means that a user need not keep infrequently used or large programs locally. Instead, these programs can be loaded through the network (at an apparent speed of approximately 800,000 bits per second) only when needed. FTP performs similar feats of file manipulation, but in a considerably more flexible manner. Photo 5c: Examples of Alto software: Typical Mesa program being edited by Bravo; note the different typefonts used in the program listing. Although a great deal of software written for the Alto is in BCPL, there is a new contender for software development called Mesa. Mesa is a Pascal-like language that is incompatible with BCPL because of differences in their respective microcodes. Mesa is expected to be the programming language for the successors of the Alto (see photo 5c). BCPL and Mesa are the system languages for the Alto, which means that the system utilities and many applications programs are written in them. Other languages are available on the Alto, however. Much of the research work done on the Alto at Xerox is written in Smalltalk, an object-oriented language that is both easy to learn and highly powerful (see the special August 1981 BYTE issue on the Smalltalk language). Another supported language is LISP, a list-processing language that is very popular in the artificial intelligence research community. Photo 5d: Examples of Alto software: Directory from the Neptune directory editor. The file names in black have been selected for further operations such as printing or erasure. The cursor is displayed as a cross in a circle. A system with the advanced graphics capability of the Alto will make extensive use of those facilities. The screen may be broken up into windows, and each window may be accessed in a different manner, if desired. Many Alto programs use only the mouse and screen windows for program control. For instance, the Neptune program is used for managing the contents of the Alto’s local disks (see photo 5d). A file may be deleted simply by touching the file name with the cursor, then touching the Delete spot on the screen with the cursor. As the cursor enters a new window, it may change shape, perhaps appearing as an arrow in one window and a paintbrush in another. Photo 5e: Examples of Alto software: Bravo’s ability to change fonts (there are hundreds of fonts for the Alton, from Gothic to Elvish Runes; the central paragraph in this display has been changed to Greek). The document in the bottom window has to been converted to the form shown in the top window. Since the Alto is used extensively for research in the office automation field, a good text editor is an obvious requirement. Bravo is a text editor and formatter widely used on the Alto. In the tradition of screen-oriented editors, the current state the user’s file is always shown on the screen. Bravo is controlled partly by keyboard commands and partly by mouse commands. It allows a user to open windows into one or more files. Text may be added or deleted by pointing at the desired location on the screen (see photo 5e) with the mouse cursor, and giving a command via the keyboard or mouse. Bravo supports many different fonts and allows the user to change easily from one font to the next. In addition, Bravo remembers the changes that have been made to a document and allows the user to reverse any or all changes. Bravo allows the user to edit and format text, but often a person may wish to include illustrations in a document. To do this, a program called Draw is used. Draw is an interactive sketch-pad program that provides a variety of tools for creating and manipulating pictures made from lines, curves, and text. Draw divides the screen into a number of windows (see photo 6). The left side of the screen contains a menu of commands and a variety of brushstrokes that can be selected. The top of the screen contains an area for text commands and messages from the program. The middle of the screen is the picture workspace. Curves can be drawn by moving the cursor directly, or by selecting several points and allowing Draw to mathematically fit a curve to those points. Once an object is defined, it can be repainted using a number of brushstrokes. Since this is very similar to the techniques used by artists and calligraphers, quite a bit of artistic expression is possible. An object can be duplicated, rotated, stretched, or shrunk, by means of a small set of commands and mouse gestures. Photo 6a: Use of the Draw program: Points are placed with the cursor, and curves and lines are filled in by the program. Photo 6b: Use of the Draw program: Lines may be "painted" with a variety of “brushstrokes” (the cursor has changed to a small paintbrush). Photo 6c: Use of the Draw program: Texture is given to the lines; dotted lines are created with the scissors cursor. Photo 6d: Use of the Draw program: Picture may be mathematically manipulated; a new figure may be created by reversing, tilting, or stretching a copy of the original. Each Alto is assigned an Ethernet address that identifies it uniquely on the network. A typical Ethernet address might be 50#100, which is meaningless to most people. To permit an easily remembered distinction between Altos, each is assigned a name. For instance, the Altos at Stanford are named after rivers and mountains in California State parks; Altos at CMU are named after jewels, and Altos at Xerox are named after people. This leads to such interesting names as Cypress, Turquoise, or Machiavelli, which are considerably easier to remember than 50#100. Alto networks do not consist entirely of Altos. Several other devices are connected to the Ethernet network. One type is called a server. Servers are userless Altos that are dedicated to some specific function. A server might be connected to a printer. Thus, printing a file would actually consist of sending the proper messages to a Printing Server. One common type of server is a File Server. These machines support extra-large disks and are repositories for programs and files that are too large or too infrequently accessed to make storage on individual machines worthwhile. The Stanford File Server is named Lassen. Due to the design of the network and the Altos, a new Alto can be wheeled in, plugged into the network medium (standard coaxial cable), and, with a blank disk pack fresh from the factory, become entirely functional with a full set of software in a matter of minutes. An Alto can also be disconnected, moved to another port in the coaxial cable, and reconnected without affecting either the performance of the network or the Alto. Photo 7: The multiplayer Trek program. This game is played entirely under mouse control. The lower portion of the screen shows a short-range sensor scan; above is the long-range display, and navigation and weapons controls. Several programs exist that take advantage of the distributed processing capabilities inherent in the Ethernet network. Of all of them, the most enjoyable are the games. Trek is a multiplayer “spacewar” game that is controlled primarily by the mouse (see photo 7). Mazewar is a multi-player romp through a realistic labyrinth (see photo 8). The unique feature of these games is that large numbers of users can join or leave the game as they please without affecting the play of the others. Since all the Altos can listen to the same packet (block information on the Ethernet) at once, the game program is never running on any single coordinating machine. Instead, it is running independently on every participating Alto. Photo 8: The multiplayer Mazewar game. The eye represents the persona of an opponent. Any Alto on the net can join or leave the game at any time. A stand-alone Alto is usable, but the best configuration is a group of Altos connected by an Ethernet system. Since the Ethernet system is a local network, a special device called a gateway was developed to allow local Ethernet networks to speak to other Ethernet networks or packet networks of other types. Many companies are researching network schemes that would allow packet transmission across cable-television lines. Since these cables are currently installed in many homes and buildings, it is not difficult to imagine a city with an “information grid,” analogous to the electric-power grid that exists today. Combined with an electronic mail system (a prototype called Laurel is used on Altos today) the possibilities are staggering. The Alto has been around for several years. As research tools go, it is covered with moss and gathering dust. But new products will be appearing on the market based on the expertise gained in producing and using the Alto. The next few years should show a dramatic increase in the quality of personal computing and the ability to interconnect personal computers. And the Alto is one of the first personal computers that satisfies the needs of the computer scientist as well as the secretary or businessman. by Thomas A Wadlow; 5157 Norma Way Apt 226, Livermore CA 94550 I would like to thank Dr Brian Reid and Mark Roberts of Stanford University for their time and helpful comments; also Sandy Lanzarotta of Xerox and Cindy Pavlinac for their help and support. Lampson, B W and E Taft. Alto User’s Handbook, 1979. Metcalfe, R M and D R Boggs. “Ethernet: Distributed Packet Switching For Local Computer Networks.” Communications of the ACM 19,7, July 1976, pages 395 through 404. Shoch, J F and J A Hupp. “Measured Performance of an Ethernet Local Network.” Communications of the ACM 23,12, December 1980, pages 711 through 721. Thacker, C P, E M McCreight, B W Lampson, R F Sproull, and D R Boggs. Alto: A Personal Computer. Tech Rep CSL-79-11. Palo Alto CA: Xerox Palo Alto Research Center, August 1979. (To appear in Computer Structures: Readings and Examples, Second Edition. Siewiorek, Bell, and Newell, editors.) Sidebar: “The Ethernet Network: Interconnecting Personal Computers”