WO'- My involvement with the PLATO system covered the entire period that I was a graduate student at the University of Illinois. From 1973 to 1980, I worked as a research assistant and occasionally as a teaching assistant in the Medical Computing Lab at the School of Basic Medical Sciences in Urbana, where my PLATO user ID was jones of rhrc (the Regional Health Resource Center) and then jones of mcl (the Medical Computing Lab), also sometimes written jones/rhrc and jones/mcl. While I was there, I did several things.
But first: Why are so many of the screen shots shown here in orange on a black background? The answer is simple: Through the 1970's, the dominant terminal used on the PLATO system was the Magnavox PLATO IV student terminal. In an era when all other computer display screens used CRTs, this display used a neon-discharge plasma panel. Yes, this is exactly the same technology used in plasma flat-screen TV screens today, except without the phosphors, so there was only one color, orange.
WO"' The University of Illinois Archives maintains an on-line archive of several early PLATO notesfiles. These were one of the first great experiments in social media, and their archive preserves several of my early notes. The oldest I can find is a complaint about the PLATO text editor from 12/9/1974, when I wrote:
---------- note 614 editing! 12/09 10.37 jones rhrc When reading a lesson,it would be nice to be able to read directly over lesson block bounds instead of having to back out to the lesson index and type the letter of the next block. Mabe the -NEXT1- key could advance to the beginning of the next block and save changes in the previous block if not in inspect only mode?
This takes some translation into modern terms. Since PLATO was intended as a computer aided instruction system, all user files were referred to as lessons, regardless of whether they served an instructional purpose. The text editor operated on fixed-size blocks of disk space, and it was up to the user to organize the text of a program or other document into blocks. All PLATO terminals had function keys, -NEXT- was the name of one of them, and -NEXT1- was the standard way to refer to the shifted version of this key.
Responses to this note indicated that indeed, system programmers on PLATO had exactly this function available to them, but they didn't want to release it to the general user community.
At the time, there were only 3 notesfiles in the world, one for system announcements (world readable), one for help requests (world write only), and one for general use (world read-write). The archive only contains the latter. I've extracted all of my old notesfile postings from this archive and annotated them here.
O-T=" My MS thesis, Run Time Support for the TUTOR Language on a Small Computer System (1976) documents the implementation of PLATO's TUTOR programming language on the Modcomp IV minicomputer. This includes one of the first descriptions of TUTOR's arcane semantics from an outsider's perspective.
The typography of this is rather poor by modern standards. It was printed on a Dataproducts chain printer attached to the Modcomp IV. I had to write both the text editor and the text formatting program needed to print it.
A year later, in May 1977, I revised the thesis slightly, adding an additional 7 pages for release as Technical Report UIUCDCS-R-77-868 UILU-ENG 77 1719. This was digitized by the Internet Archive in 2013, at a resolution higher than necessary for the chain printer text or ballpoint-pen diagrams. They worked from a paper copy in the University of Illinois Library that has circulation stamps indicating that it was checked out by library patrons in 1982, 1995 and 1996.
This thesis documents what became GIST TUTOR, after Global
Information Systems Technology was founded in 1980 to market
the Modcomp PLATO/TUTOR clone. GIST originally called their
clone Simpler, but later, after rewriting my interpreter in C,
they called it ACCORD.
WO="' The PLATO system was intended for computer-based instruction, but it was incredibly appealing to develop games on it. Some of those games were instructional. Airfight, the first multi-user 3-d graphical flight simulator, really did teach flying, even though the planes were all jet fighters and you could load them as you desired with fuel or ammunition up to the plane's weight limit. (There are many web pages that give pocket histories of the early development of computer games on PLATO. See, for example, Chapter 6 of The Complete Wargames Handbook.)
The relationship between the system staff and game developers on PLATO was a mixed one. On the one hand, games were a great test of the system. On the other hand, many games were resource hogs. PLATO was designed as a timesharing system. The machine could execute one MIPS (Million Instructions Per Second), this made it a supercomputer, by the terms of the early 1970's. If they wanted to support 200 users, the average user load had to be under 5 TIPS (Thousand Instructions per Second). Most games, particularly first-person shooters like Airfight, ran at well over 10 TIPS.
My job developing a TUTOR implementation for the Modcomp IV computer required that I explore the TUTOR language thoroughly, and it was natural for me to try writing a game. I set out to design a game that had the appeal of an arcade game, and along the way, I decided to make it run in under 5 TIPS.
The Result was HiVolts, the Game of Electric Fences, with the title screen as shown below. My artwork for the title survived unchanged through years of evolutionary development by later authors who worked on the game. The core of the game is not entirely original. Greg Chesson had recently demonstrated Unix on campus -- it is noteworthy that Illinois was the first licensed Unix site outside of Bell Labs; UNIX license number 1 was granted to Illinois in 1974. One of the things Greg demonstrated in passing was the suite of games that came with Unix. My memory of seeing him briefly demonstrte one of those games was the root inspiration for the game I wrote.
This game has been preserved as hivolts on cyber1.org, from which the following screen shot was taken in 2008.
The preservation of HiVolts was not trivial. The credits in the title page are explained by this quote from Dirk Pellett: "The version of the Hi-Volts source I had on Accord (written in GIST's version of TUTOR) ... declares you, Douglas Jones, as the sole source of the game. I used that source to back-translate to PLATO TUTOR so that it would run on cyber1.org."
In short, each round of play in HiVolts involves dropping the player onto a random spot on a randomly created game board, a field surrounded by electric fences and with fences scattered here and there on the field. The field also contains semi-intelligent mhos (inverse ohms, a lame in-joke) that are attracted to the player and will eat the player if they come too close. The player can survive by manuvering in such a way that the mhos blunder into electric fences. You win the round if you survive without being consumed or electrocuted until all of the mhos have been electrocuted.
Josh Paley did a decent job of reverse engineering the game I finally produced. His specificaiton for the game was available on the web at http://charlotte.pausd.org/~jpaley/AP_CS/hivolts/ (now available from the Wayback Machine).
I believe one of the later authors changed the graphics for the game itself, as illustrated above, replacing the alphabetic symbols I had used with graphics. The original version would have presented the above screen something like this:
# # # # # # # # # # # # # * # # * * # # # # # # # * # # # * # # # * # # * # # * # * # # * # # # # # * # # # # # O # # # * # # # # # # # # # # # # # #
# -- An electric fence
* -- A mho, an adversary
O -- The player
The appeal of HiVolts was somewhat of a mystery to me. It isn't a first person shooter where fast twitch reflexes lead to winning. Instead, the game is dominated by carefully and thoughtfully running away from the monsters in the maze. An experienced player has about even odds of surviving one round of play. Each round of the game was short enough that many game sessions involved multiple rounds, and as I realized this, I made the game compute the player's win-loss ratio for the session. Today, we would describe HiVolts as a casual game, and it is fair to say that it was one of the first casual games to achieve success in the PLATO world.
Flint Pellett, one of the authors of the legendary PLATO game DND, one of the first computerized spinoffs of Dungeons and Dragons, worked with me in the Medical Computing Lab. He said that his brother Dirk was interested in HiVolts, so when I moved on to other things, I passed the game to them. The game had already attracted a following, and this grew after Dirk added a record book to the game, so that the game computed (and displayed) a list of the best players, ordered by the win-loss ratios they had achieved.
Apparently, at some point after my involvement with HiVolts ended, someone else modified it. Dirk Pellett remembers "a version of Hi-Volts where the 'mhos' were lightning bolts instead of frowny-faces, there were double-lightning-bolts that could move twice, and the fences were NOT destroyed when a mho walked into it, all of which are different from the version ... re-created on cyber1." This alternative version doesn't ring any bells with me -- the double-mhos idea is particularly alien to my memory, so obviously, the game evolved on PLATO. I'm fairly sure I'd have given a copy of the source to anyone who asked for it back then. Computer games had yet to become important items of commerce at the time.
When Pac-Man came out, I wondered if the developer had ever seen the game of Electric Fences. The relationship between the Pac-Man player and the ghosts of that game has some similarity to the relationship between the player and the mhos of Electric Fences. Pac-Man, however has a static maze, not the random maze of Electric Fences, and Electric Fences has nothing analogous to the "food" dots that Pac-Man consumes.
Some students freeze up the first time they find themself in front of
a computer keyboard. We had this problem with medical students at
the University of Illinois School of Basic Medical Sciences, so in August,
1979, the Medical Computing Lab at the school produced a guide
for students on the use of computer assisted instruction using PLATO.
I drew this illustration for the guide, showing what the PLATO terminal
does not contain. It's a decent drawing of the Magnavox PLATO IV student
terminal. That's a flat plasma display panel in front, The bulk of the
volume is occupied by the folded light path of the rear-projection
microfiche reader in the terminal. The 6-inch wide margin around the
screen is because of the electronics around the edge of the flat panel.
TU"- PLATO supported user-defined character sets. I knew a bit of calligraphy, so I decided to go out on a limb and try creating a character set that was emphatically not the usual computer-style character set. I called it gothic, not after the modern font, but in the older sense of the word, because it was very much the barbaric font, very unlike the humanist fonts from which most modern typography springs.
The writable character set of the PLATO terminal had only room for so-many capitals, so I put in only 3, made of 6 characters each, where characters on PLATO were 8 by 16 pixels.
You'll notice that the 8 by 16 matrix forced the M to be cramped side to side, and it forced the P to slip up a pixel or two. Those defects were fixed in the later scalable and rotatable lineset version of the character set.
The output of the instructional lesson I wrote on the use of the Gothic charset and lineset is available, as it existed in late 1976. According to the Public notes archive for 1975 I announced the availability of Gothic on Dec. 16, 1975. The content of that lesson, in addition to explaining the use of the character sets, also makes it clear that this character set had already made it into the standard character-set library of PLATO by the time I wrote this lesson, but note also that the game of Hangman is not mentioned. Unfortunately, no machine-readable copy of this material appears to survive.
The output mentioned above was printed on paper using a PLATO graphics printer. This was a remarkable impact printer using a "wobble bar" that scanned a horizontal row of on the order of 8 print hammers rapidly back and forth across the page, allowing it to print each of the 512 lines of the screen in under a minute. I do remember this printer being loud. Craig Burson wrote on Nov. 5, 2010 to remind me that Art Carroll of the PLATO Project built the prototype of this printer using an OEM shuttle-bar print mechanism (was it from Genicom?). It was later marketed by CDC at the 726-10 printer. We had one in the school of Basic Medical Sciences in Urbana.
The gothic character set was used in the educational game of Hangman (preserved as 0hangman on cyber1.org) to support a rather silly back story explaining why a man was being hung for not being able to spell. (Hangman is preserved as 0hangman on cyber1.org, from which the above screen shot was taken.) to support a rather silly back story explaining why a man was being hung Over a decade or so, I earned about the price of a pizza every year for this contribution to PLATO, through the micropayment scheme PLATO supported. Hangman is copyrighted 1976 and credits me as the designer of the typeface.
WOU"- After I designed the Gothic lineset, someone asked me if I couldn't do something more useful -- design a legible character set that people would actually want to use. So, I designed a classical Roman lineset, with decent proportional spacing. The geometry is still basically octagonal, not round, but in the smaller sizes, it looks pretty good, and in the larger sizes, it is far more ligible than the standard PLATO dot matrix fonts.
The illustration here is a screen shot from cyber1.org, where my font is preserved in lesson linesets. I found two printed screenshots in my files that I made using the old PLATO graphics printer some time in the late 1970's. The paper is a bit yellow, but the scanner fixed that. If you zoom in on the PDF, you can see the impact marks of the print hammer for each pixel of the display. The second page of the old screenshot is a manual for the using the lineset.
One trick I used was to define backspace (shift space on PLATO) to be just the right size to kern lower case letters under upper case letters such as Y and T, so typing T(backspace)o or Y(backspace)es would print To or Yes with appropriate kerning.
+oU"- I had (and still have) several books of M. C. Escher prints. Several of his prints explore tiling the plane with various objects. In the case of Development 1, Reptiles, and Metamorphose, he used lizards. The most fully developed of the lizard tilings, in Reptiles, has a hexagonal tiling involving 3 lizard colors. Two-color square tilings are developed briefly in the other two, and at the start of the book is a little woodcut exercise in square lizard tiling.
I was taken by what Escher did and tried my hand at tiling the PLATO terminal with lizards. Escher's lizards, both lithographic and woodcut, were designed without regard to pixels, while I had to make do with the the 8 by 16 tiles of the PLATO writable character set. I opted to use a period of 48 pixels, 6 characters wide by 3 characters tall, so my tiling used 18 characters. Facial expressions or even the details of mouths and claws were out.
These were definitely inspired by the lizards in Escher's woodcut exercise, if someone wants to make any commercial use of this image, they'd better clear the copyright with the M. C. Escher company. It would make an interesting textile design for weaving in silk on a Jacquard loom.
I had to solve some new problems in the move to a low resolution pixelized design. It took several tries before I realized that I couldn't make the lizards meet nose to nose. Rather, the midlines of the face-to-face lizards had to be offset by one pixel. I was just barely able to give them nostrils, and the midline of the back is more like a row of stitches than a sharply defined line. There was no hope to divide the toes, and I could only hint at a crease to divide the upper arms from the bodies.
At the time, the best graphics printer available for printing a display from a PLATO IV terminal used a wet process, with results much worse than the later impact printer they developed. I think the actual print engine was a Tektronics graphics printer. The output was on flimsy paper and tended to have both drop-outs and smudges. The fragment shown here was scanned in 2022 from the original printed copy made in the 1970s, and then massaged in GIMP to make black truly black and white (sort of a pale grey in the original printout) truly white. The detail is degraded from the original on-screen image in black and neon-discharge orange. On screen, the black and orange lizards were exact color inverses of each other.
-OM"- PLATO was designed with a focus on interactive computing using graphics terminals, with very limited options for creating any kind of hard copy. The PLATO project offered the following printing solutions:
1 unit enter 2 join init 3 calc v13⇐128 4 v14⇐128 5 v16⇐64 6 v17⇐32 7 v3⇐64 8 v2⇐32 9 at 100,100 10 join box 11 write HI!!! 12 calc v15⇐3 13 v13⇐32 14 at 1224 15 join shade 16 join box 17 write WELCOME
I found the printout shown at the right my files, dated Dec. 24, 1973. Note the vertical jitter in the row of dashes. Note the funny punctuation. It's so bad that I put a translation next to the printout. The entire listing is here:
— PLATO lesson jones from Dec. 24, 1973.
This is one of the first programs I wrote in the TUTOR language for PLATO.
It calls itself an ARTMAKER, but it's poorly commented and I don't
really recall what it does.
The example shown here, from a term paper I wrote in the Spring of 1975,
has spots and drop-outs typical of this printer, although as it aged, the
spotting and dropouts got progressively worse. If you click on the image, you
can see that the print resolution is more than good enough to show the
individual pixels as they were displayed on the plasma panel.
The example shown here is from the manual for my PLATO to IBM Office System 6
printer interface in 1980. The print is crisp, if you enlarge it, you can
see the individual pixels just as well as you could with the first PLATO
graphics printer, and there are no smudges or drop-outs. The only real problem
is that, as with all printers using inked fabric ribbons, your print quality
was best with a new ribbon and got progressively fainter as the ink was
We weren't happy with PLATO's printing options, so our lab developed several solutions allowing local printing:
I built a simple interface to this parallel port that output the data to an RS232 serial line. It was extremely simple, taking advantage of the fact that the native serial data format used by the PLATO IV terminal was exposed on the card-edge connector for the terminal's parallel port.
Data came to the PLATO IV terminal in the form of 60 data packets per second, 21 bits per packet. That translates to 1260 baud, which is within 5% of 1200 baud, a common standard baud rate for asynchronous serial data. In the absence of bad signals, asynchronous data with one start bit, one stop bit and 8 data bits can be off by this much without causing errors.
A second signal on the card-edge connector was asserted only during the 18 data bits of a packet addressed to the parallel port. My interface design, therefore, used one SN7400 nand gate chip, plus a 741 op amp, used without feedback to convert TTL voltage levels to RS232 levels. All the remaining problems were solved in software. The start and stop bits, the conversion from CDC/PLATO display code to ASCII and the fact that the bits were sent in the wrong order were all dealt with in a lookup-table used by the print software, all written in PLATO's TUTOR programming language. The big downside of this crude interface was that it could only send 60 characters a second to the printer, while the printer running at 1200 baud could have handled 120 characters per second.
It worked, and we built several of them to drive GE Terminet 1200 printers. The print legibility on these was far better than that for PLATO's line printer, and they had both upper and lower case, a huge advantage. I used this printer to print the term project from which I took the example shown here.
PLATO had an excellent interactive text editor, so my challenge was to move data from PLATO's 6-bit character set (with shift codes) to IBM's word-processing variant of their 8-bit EBCDIC code. How to do this? By this time, we had one PLATO V "smart" terminal – that means that it had an Intel 8080 microprocessor in it that we could program using an officially supported PLATO tool.
IBM had a Communicating Mag-Card Selectric that had an RS-232 port. Unfortunately, it wasn't an asynch port, it used IBM's Bisync protocol, and the auxiliary port on the PLATO V terminal was a parallel port. Andrew Appel, Frank Mabry and I cobbled together an interface box that allowed the PLATO V terminal to speak Bisync, and then Andrew and I wrote software, both on the PLATO mainframe and on the PLATO V terminal to write mag cards from PLATO.
I don't know who else ever used it, but I did write a fairly decent user's manual, in the form of a help section of the PLATO lesson that drove the printer:
— PLATO to IBM Office System 6 manual
The manual was printed on the PLATO wobble-bar graphics printer.
pbdq In the 1970s, there were just two research groups in the world with extensive experience exploring the use of bitmap display technology. One was the PLATO project. The other was based at the Xerox Palo Alto Research Center. In the mid to late 1970s, these two groups traded visits, and I attended at least one lecture sponsored by the PLATO project where visitors from Xerox PARC spoke about what they'd learnd. Later, in 1980, I interviewed with Xexox Rochester Research Labs and gave a talk about some of what I'd learned working with PLATO. If you wonder, yes, they offered me a job that I turned down.
As the Computer History Association of Caifornia was getting off the ground, I wrote "PLATO and Smalltalk" a short piece about this interaction for their newsletter The Analytical Engine (Volume 1, Number 3, January 1994, page 41).