This repository provides vintage emulators and games for Docker, Raspberry Pi, and Debian systems in general. Included are such things as a PDP-11 emulation, Zork/Dungeon, Colossal Cave Adventure, and other legendary programs.
A command vint
is provided in /usr/local/bin
to run the included
programs. None of them should be run as root, so if vint
is run as
root, it will instead run the programs as the user pi
(which is
created for you in Docker, or on Raspbian; on Debian, you're on your
own.)
You can run docker run -ti jgoerzen/vintage-computing vint
(with
whatever parameters you need) to just fire up something in your
terminal. The image is also based on my Debian base
images, so you could
also configure SSH or other access to the system if you so desire.
Within the Docker image, at any shell prompt, just run vint
as in
the examples below.
The Docker image intentionally leaves build files and downloads sitting around; these are important for posterity and the files that go into this system are somewhat rare. They often contain documentation and such as well.
A buster-based distribution is required.
To install, run:
git clone https://github.com/jgoerzen/vintage-computing
cd vintage-computing/setup
sudo ./setup.sh
sudo chown -R "`id -u`:`id -g`" /opt/vint
To launch programs, just type vint
with whatever parameters are
needed (as shown below).
The directory /opt/vint/systems
will contain information for most
systems included here, particularly inside the files
directory.
You may see files ending with a number; for instance, foo.1
-- or
maybe foo.1.gz
. In those cases, you can display the documentation
with a command like man -l foo.1
or man -l foo.1.gz
.
Many programs also have system manpages; for instance, man figlet
will show the system's documentation for figlet.
Docker users may wish to make volumes out of /home/pi (to persist
savegames and the like) or parts of /opt/vint/systems
to make
emulator images and such persistent.
Much documentation also exists in /usr/share/doc
.
Many of these packages are based on SIMH. The SIMH
website and /usr/share/doc/simh
contain a wealth of information. The sample software
documentation, also
available in /usr/share/doc/simh
, describes loading and working with
some of these systems.
In Docker, the setup scripts to generate all this are in
/opt/vint/setup
. (For Raspberry Pi and local installations, this
repository has the same files.) These document the sources for the
code and steps taken to install it all.
This is the text adventure that started it all: Colossal Cave Adventure by Crowther & Woods, also known as adventure and advent.
I have provided five versions for you:
vint colossal-cave-adventure
is the one I recommend. It is a faithful port of the canonical 350-point version, usies the original text exactly, and even simulates the speed of the terminals in use in the era in which it was written.vint bsd-adventure
is the version distributed by BSD distributions (and Debian in bsdgames), which was an early port to C by Jim Gillogly.vint open-adventure
is a port of the last version that Crowther & Woods themselves released.- Two versions are also included in the PDP-10 TOPS-10 installation; see rhe linked readme in that section for details.
This is the other famous text adventure, Zork. As with Adventure, there are many versions of Zork out there, and even a history of Zork is available.
The Zorks I provide here are based on the monolithic Zorks, before the game was split into three parts for PC distribution. Three Zorks are provided:
vint zork-glk
is a good version, updated with somewhat modern terminal handling. It is the version that FreeBSD uses in their ports collection.history
says it is 3.2A.vint zork-old
is the original C port.history
says version 2.7.- The included
pdp11-2bsd
environment (see below) has a zork that can be invoked at/usr/games/zork
once you are in the environment. saved and restore are buggy in this game, however, and are not recommended. (This is not a bug in the emulator, but the original program!)history
says version 2.0a.
The vint fortune
command will display a random fortune from the
included database, which is part of Debian. Many users used to put
this in their login scripts to automatically display a random little
snippet when they'd log in.
The vint figlet
command will render text in large blocks. For
instance, vint figlet xyzzy
displays:
__ ___ _ _________ _
\ \/ / | | |_ /_ / | | |
> <| |_| |/ / / /| |_| |
/_/\_\\__, /___/___|\__, |
|___/ |___/
There are two banner-type programs installed:
vint banner
will generate horizontal ASCII-art banners. It comes from the Debian package sysvbanner.vint printerbanner
will generate vertical (rotated) ASCII-art banners. It comes from the Debian package bsdmainutils.
In addition to the games listed above, quite a few more (over 60!) are
also available in /usr/games
. These are installed via Debian
packages, are all open source. Most come from the bsdgames
collection. Some were written decades ago, though a few are more
modern. All can be played on a text terminal. A few of these can
also be launched by other commands documented above.
To get a list of available games, type vint usrgames list
. The list
is large, so you may want to pipe it through a pager like vint usrgames list | less
Here are some highlights for you:
tetris-bsd
andpetris
are Tetris implementationsmoon-buggy
is an implementation of the well-known lunar lander gamessnake
is a growing snake gamesl
draws animated steam locomotivescowsay
renders text as if quoted by a cow. (See also figlet above)
Many text adventure games have been written to target the z-machine
(zcode) environment. They often end with extensions like .z5
or
similar. You can get them from the Interactive Fiction
Archive, which has a large collection of
zcode games.
The IFDB has references to even more. Some
of the most famous games were released as zcode (for instance, Zork
I - III).
You will need to download your own z-machine games, but once you have them, there are several interpreters available:
- frotz is the one I generally recommend. Launch games with
vint usrgames frotz gamename
- jzip is also available. Use
vint usrgames jzip gamename
- fizmo is also available. Use
vint usrgames fizmo-console gamename
After FTP, but before there was the web, there was gopher - the hypertext system from the University of Minnesota. The UMN gopher client is included, which can be used to browse some of the still-existing gopher servers.
Use vint gopher
For a whole cohort of Internet users, the text-based program Pine was their first exposure to Internet email. Pine, from the University of Washington, has gone through many evolutions over the years, but at this moment lives on in the now open source program Alphine.
Alpine supports secured IMAP and SMTP, and thus should still be usable with modern email providers!
Use vint pine
Before there was SSH or Bittorrent, remote access to machines was typically accomplished via FTP and telnet. These protocols are considered insecure these days, but FTP sites in particular still exist, and some legacy systems may be unable to support ssh. Some surviving BBSs, in particular, support telnet but not ssh.
More advanced ftp clients are available (for instance, lftp), but this one, with the old FTP command-line look and feel, is included.
Use vint ftp
and vint telnet
The machine that started it all... or at least, uh, lots. vint pdp11-2bsd
will fire up the SIMH emulator of a PDP-11 running 2BSD
version 2.11. Please note that this system doesn't automatically
boot, but needs a bit of help to get to a login prompt. The
instructions for doing so are displayed on your screen as the
simulator starts.
Once in the simulator, hit Ctrl-E and then type quit
to exit.
A PDP-11 with Version 5
Unix from 1974. vint pdp11-unixv5
will fire it up for you and display instructions for
making it boot.
A PDP-11 with Version 6
Unix from 1975. vint pdp11-unixv6
will fire it up for you and display instructions for
making it boot.
A PDP-11 with Version 7
Unix from 1979. vint pdp11-unixv7
will fire it up for you and display instructions for
making it boot. This version was the ancestor for many other Unixes
that have come since.
I have built it based on the instructions for bootstrapping it using the Keith Bostic v7 software.
/opt/vint/systems/pdp11-unixv7/run.old is also available, which references an image from Caldera. It has a tiny disk which can pose a problem. That image contained compress/uncompress, which I copied into the image I provide you.
I have also added uudecode and uuencode to the image I provide you.
The Interdata
32b running
the first non-DEC port of Unix. This one is Version 6
Unix from 1975. vint interdata-unixv6
will fire it up for you and display instructions for
making it boot.
The Interdata
32b running
the first non-DEC port of Unix. This one is Version 7
Unix from 1979. vint interdata-unixv7
will fire it up for you and display instructions for
making it boot.
The Incompatible Timesharing System was a research system at MIT. It is particularly notable as being the initial implementation platform for Emacs, as well as several Lisp-related languages and the Macsyma symbolic algebra system and the JArgon File.
The ITS interface is nonstandard; some helpful information can be found at the ITS repo, which is also included as part of this system.
The old TOPS-20 operating system on the PDP-10 - dating to the early 70s. I know little about this system.
Two systems are provided: a very basic one at vint pdp10-tops20
, and
a more complete one at vint pdp10-tops20-panda
running the panda
dist. The latter even
has EMACS and TECO installed; see the link for details.
The basic image uses SIMH; the panda one uses klt20. Note: klt20 is only provided in an ia32 executable, and will not run on Raspberry Pi.
You may find these links helpful:
An even older operating system, running TOPS-10. This is built with
the TOPS-10 in a
box distribution.
The README file is included
with the system, or may be accessed here, describes how to boot and
use this image. Use vint pdp10-tops10
.
This was a prime competitor to DEC. It uses the RDOS kit from SIMH, which has been installed for you using wconrad's instructions, a copy of which is included in the generated image. Those instructions will be helpful to you.
vint nova-rdos
will launch the simulator. It requires keyboard
input to fully load; instructions are displayed before the simulator
starts. The RDOS
manual
may be useful for you; it is also included in /opt/vint/nova-rdos
for your benefit.
To exit, type RELEASE DP0
and then quit
at the sim>
prompt.
Ctrl-E will take you to the sim>
prompt, which will let you perform
an unclean shutdown.
The SIMH emulator is included in full. In fact, many of the other machines listed here are emulated using SIMH. It can emulate dozens of types of old big iron machines.
The operating system that took over the world (for a time): DOS on the IBM PC. This is the 8086tiny emulator running FreeDOS. Check out its documentation, because it can run everything from FreeDOS to even Windows. This version is compiled without graphics support, but it can do graphics also if you compile it with SDL.
vint dos-8086tiny
to start.
The system is fairly bare; much software can be downloaded and added to this.
PC-BASIC is designed to be compatible with the old DOS-based BASIC.EXE, BASICA.EXE, and GWBASIC.EXE interpreters for BASIC. It should be able to run all or almost all of the old DOS BASIC programs you might find.
You can extend the vint
command on your own, either on a standalone
system or with a docker image based on this one. To do so, create a
directory in /opt/vint/systems
. The directory name will be used as
the command name. There must be at least one thing in the new
directory: an executable file named run
. This is what vint
will
run. Any other files you put in there are up to you. See the
existing installed items for examples. The name list
is reserved
and not available for this purpose.
OpenVMS was a famous operating system for DEC's VAX line. OpenVMS is not included with this image. However, the SIMH simulator installed in it is capable of running OpenVMS.
Various information is available online. For instance:
- VAX/VMS on Linux using
SIMH
is a great overview. This file is downloaded to
/opt/vint/downloads/vax-simh
for your reference as well. - After that, how to install DECwindows discusses installing the OpenVMS GUI.
- Networking VAX OpenVMS on SIMH & the Raspberry Pi - despite its name, isn't specific to the Raspberry Pi
- OpenVMS install log
- How to build your own MicroVAX running VMS on SIMH
- vaxhaven.com collection
- There are also various videos on YouTube.
You will need to obtain a hobbyist OpenVMS license as well as the software itself. Here's how to do that:
- First, join DECUServe. See the
instructions; as of 2019, you will need
to
ssh REGISTRATION@eisner.decuserve.org
and log in with an empty password. Make note of your membership number and login details! - You may need to wait a week for the Hobbyist info to reach HPE; see DECUServe hobbyist info
- Get the registration link from DECUServe or OpenVMS Hobbyist; as of 2019, it is https://www.hpe.com/h41268/live/index_e.aspx?qid=24548.
- Fill out the registration form. Your chapter is DECUServe, license type is VAX/Alpha, AllianceOne partner is No, emulator is SIMH.
- The form is processed by a human. You'll get a reply with a license pak and download instructions - it seems to take about a business day, but may take longer.
- Now, you need media. As of 2019, the email you'll get from HPE includes a sentence about replying back to ask for media downloads. Do that, specifying the VAX platform. The will, after (it seems) a somewhat longer delay, reply back with time-limited credentials for obtaining the downloads.
Note this will blow away any images you have, savegames, etc.
cd vintage-computing/setup
git pull
sudo mv /opt/vint/systems /opt/vint/systems.old
sudo ./setup.sh
sudo chown -R "`id -u`:`id -g`" /opt/vint
Be careful to type this in correctly!
rm -r /opt/vint
rm /usr/local/bin/vint
This is prepared by John Goerzen jgoerzen@complete.org and the source can be found at https://github.com/jgoerzen/vintage-computing
Docker scripts, etc. are Copyright (c) 2019 John Goerzen.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Additional software copyrights as noted.