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 (1979US money). With the exception of the disk storage/processor box, everything is designed to sit on a desk or tabletop.
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). 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.
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.
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 . Another advantage is the ability to determine how long a key has been held down. There is, of course, software to allow a program to read the keyboard in the typical manner.
The Graphics Mouse
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. 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 buttons on top of the mouse are also unencoded, for flexibility.
Many programs distinguish between holding a mouse button on or clicking
it on and off. This allows a program to receive input by moving the cursor
to some designated spot on the screen and then touching a mouse button
to make something happen.
Disk Storage/Processor Box
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 64K 16-bit words, including the graphics bitmap. By using a technique called bank selection, the Alto may expand its available memory in 64K-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 that contains just enough software to "bootstrap"
an Alto into the local network.
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."
One BCPL program that runs on top of the operating system is called the Alto Executive. 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 (e.g.: Digital Research's CP/M or Radio Shack's TRS-DOS)
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 aslongfile name .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.
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 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.
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.
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.Another
supported language is LISP, a listprocessing language that is very popular
in the artificial intelligence research community.
Using the Screen
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. 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.
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 screenoriented editors, the current state of 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 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. 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.
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.
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. Mazewar is a multiplayer romp through a realistic labyrinth. 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.