Following up on my post about the old computers I used, I’ve found quite a few references to old text-mode games, and a great site on computer emulation.
Even today, you can write text-mode games: Understanding C#: Using System.Console to build text-mode games. Since Powershell is based on .NET, you could just as easily write a few simple games in that scripting language as well.
A tribute to DOS text-mode: Why Text Mode Games Are Cool.
Some online computer systems, with some old classics: Freaknet Computer Museum On-line Systems.
All about Star Trek, the classic computer game: Wikipedia entry on Star Trek, the text game.
I co-owned a Tandy CoCo after high school and Dennis Kitsz wrote what I thought was the greatest version of that game ever at the time. Dennis wrote this after seeing Star Trek II, the favorite Trek film of many fans, and his version was a quick-paced, frenetic game that captured the essence of that movie very well. There are emulators around for that platform, though I haven’t tried any of them, and I would love for the game to still be around.
Finally, a great site on computer emulation, and one of the few sites in my research that is still current: Fun With Virtualization.
I’ve been spending the summer exploring some old computers. The last old computer I owned was a DECMate II which had both a PDP-8 CPU—and a Z80—so I could run either CP/M (Z80 side) or OS/278 (PDP-8 side).
At Salem High in the early ‘80s, where I was a student, we had a DEC PDP-11/60 with eight terminals running RSTS/E. Digital was a big industry in Massachusetts and it was enormously influential. In some ways, it still is, as many practices and conventions came from them and many famous systems were developed and refined on PDP machines (Unix being the most famous example.)
The program listing above is a systems program I wrote—I was fascinated by system internals even then! It retrieves several system tables and prints out the name and unit number of each disc mounted on the system. Yes, it is in BASIC.
I cannot power or even run an 11/60 at home if I could get one, but there is a simulator, SIMH, that will run PDP-8, PDP-10, PDP-11 and many other systems. And there are disk images available for many of the OSs that ran on those processors, including some early Unices. I’ve used a number of DEC OSs, but RSTS/E was my first and favorite.
I used SIMH to configure my simulated 11/60 more or less just as it was in high school. I downloaded some manuals from bitsavers.org and built a system. I booted it up from the Windows command prompt, entered a date (I applied a Y2K patch for RSTS/E that I found online) and I was running my RSTS system just like I would when I was a volunteer system operator in high school, getting a staffer to open the door to the computer room so I could turn the machine on with a key.
System programming on RSTS/E is interesting. It is in BASIC. Despite that, RSTS/E was a very popular OS in its day and had some features that are common today. Its boot loader had a sort of hardware autodetect that Windows 95 would later have. It came with emulation layers (“run-time systems”) so it could run programs for some of DEC’s other operating systems like RMS-11, RT-11 (a very popular OS for “small" PDP-11’s. Salem High had two such systems), and RSX.
I can’t go through the whole listing above, but I’ll mention just a few lines:
CHANGE SYS(CHR$(6%)+CHR$(-3%)) TO Ml%
The SYS() function is the main way that BASIC system programs send function calls for dispatch. CHR$ is a familiar BASIC function that produces the ASCII character corresponding to the numeric code. (This predated Unicode.) CHANGE, in RSTS BASIC-PLUS, changes a string to a corresponding numeric integer array (or the reverse). This system call gets one of the monitor tables, a 30-byte table. There is another call further on to get the second set of monitor tables.
The program then walks through the disk device table to get each mounted volume.
This line gets the disk device name; CVT%$ converts integers to strings. PEEK works like the identical function on most microcomputer BASIC’s, except that it reads only monitor (system) memory and not other processes. The PDP-11 is a byte-addressable but word-oriented CPU so there is a function to SWAP bytes, just as you would see in assembler.
I wrote this program almost 30 years ago. Does it still run under my emulated system?
DL0 is my system disk named DMSYS, it has a cluster size of 2, it is “PUB" or public, disk (devices can be reserved for users, these are private. The system disk is public by definition.) RSTS/E writes the date of last modification to directories (“DLW”) rather than files to the disk
The other thing I did besides write systems programs was writing and playing arcade-game adaptions for VT52 terminals, most notably a clone of Pac-Man that was extremely well received amongst my cronies in the computer room. My friends and I were the computer game factory of Salem High, coming back from the arcades and trying to figure out what games we could get going. We came up with some surprisingly good clones, considering our technical limitations (text graphics, no controllers and no sound.)
Unfortunately, I don’t have any printouts of Pac-Man or the other games we wrote. I have seriously considered recreating these games; I’ve been appalled at how quickly 30-year old knowledge comes back to me after only a few days. Tera Term, the terminal program I use, has a faithful VT100 emulation that replicates our old VT52’s for all intents and purposes. Who knows?
Here’s a brief video of me playing Star Trek, a classic game of the day, on my PDP-11/60:
I’ve had a lot of fun revisiting computer history. Perhaps I will recreate those games of ours…