These classic HP games were found in public-domain software
archives
and restored to operation. Some of these were trivial to get running,
others
took a considerable amount of effort including modifications to the
software
itself. To properly view the screen output modifications were made
to the SimH HP2100 program to translate HP terminal codes into standard
VT codes. Some translations had to be approximated so the output isn't
exactly like the original but close. To be able to do anything at all I
had to get the files out of the "FST" archive files, a Linux
bash script using tar with a couple of exclusions and redirecting the
error
messages to the bit bucket works for me but there's still the matter of
unreadable files, they're in the same format they would be on disk but
unfortunately not acceptable for input via PTR, so had to write a
HP-IPL/OS
program to parse the files and output either plain-text or binary,
depending
on which icon on my desktop I drop the encoded file on. Then I could
try
out stuff.
Lately I've been writing new HP mini games, if anything to fill the
void with more things that can be run on a plain HP21xx CPU without
requiring a specific OS or special hardware. Logically this is the
place to put them even if they aren't exactly "old", they're games that
can be booted and played on real hardware an HP hobbiest is more likely
to actually have, run from HP-IPL/OS disk files, or set up to run under
simulation by clicking a Linux or Windows icon. When demo'ing an HP
mini it often doesn't matter if something is old or new, especially
when the issue is finding interesting things that can be run at all.
WOODY aka Chess
This program was just a binary, no source code, found in Rev_2213/A038. No special efforts needed to get working, just LOADR then RE,binary then /E and SP the resulting "WOODY" program.
OTHEL
This is the binary from Rev_2213/A045 and came with no source.
Another version with source and binary was found in Rev_2240/F060 and
looks
like...
Neither version required special efforts to get working using the provided binaries.
DAME
This was found in Rev_2313/G024 and compiled and linked from FORTRAN source without difficulty. Figuring out what the prompts said took a trip to Google. This is one of those programs that stretch the limits of HP terminal code faking, a real HP2645 cancels attribs as soon as a new line is wrapped to, but VT does no such thing and the long prompt boxes spill into the board unless the screen width is increased to about 85 columns.
STAR
This is a program found in Rev_2001/F002 and compiled from FORTRAN and assembly source. The source had to be split up then the pieces compiled and assembled, all RE'd in under LOADR in a specific order - star, rand, link then star1-star6. Several segments are produced, all have to be SP'd to disk, to run after rebooting all segments must be RP'd, more conveniently with a TR script.
It is similar but not quite the same as the classic TREK but better in my opinion since you don't have to fool with stuff like long range scans, it just happens. The sector/quadrant target options are nice. This was one of the first programs I got running, originally I had to run it in 2600 mode and REDO every move, leading me to hack HP->VT translations into the HP2100 simulator program.
MMM
This was compiled from a huge FORTRAN source file found in Rev_2140/F001. Linking wasn't difficult, specify OP,LB in LOADR to reserve enough memory. Many segments are produced, each must be SP'd separately and as usual all segments have to be RP'd after rebooting.
The original program had problems displaying extra quotation marks
in
odd places, which I traced to lines that were too long, cutting off the
comma separating fields in a format statement. The compiler saw ""
(one quote from each line) and thought it meant to print a quote. I've
seen this effect in other software, an old compiler must have allowed
one
extra character in the code field. This particular source had line
stamps
added to the end of each line, which inflates the size of the source
but
made finding the buggy lines very easy, just searched for "MMM and
did what I had to do to get a comma after the quote without altering
the
textual content.
Here's a link to a PC
port of Mystery Mansion.
ADVEN
This is a cousin of the grandaddy of almost all text adventures, leading to Zork and beyond. I first read about the program in "The Soul of a New Machine" by Tracy Kidder, detailing the bringing up of a new Data General mini-computer that became the Eclipse. If I remember correctly the test for operation of the new machine was to try to boot a disk pack containing Collosal Cave. I have another version on my Vax/BSD4.3 sim that displays identical opening text except in the credits portion, which among things attributes original development to Willie Crowther.
Getting this program running took some doing. The majority of the code is from Rev_2240/F060 but one of the files was damaged (truncated early) so restored the code with code from another version of the program found in Rev_2433/I011. Due to the lack of a compiler tool which can assemble and compile multiple mixed sources at once, I had to separate all code and compile and assemble separately. Due to the complex linking procedure I had to recombine the individual relocateables back into modules that mimicked the original layout. Then I had to find all the missing Haystack Library routines it calls and assemble them into a searchable library. Then it didn't work. Turned out the program was trying to read 3 data fields from lines containing only 2 fields, the original compiler probably defaulted to 0 but the one I have threw a run-time error. Once the cause was determined the data file and the code was modified to avoid the problem using methods found in another version in Rev_2730/L158.
Source Code and Binaries
The source code is for FTN4 and ASMB, compiled and tested using
RTE-IVB. All but Adventure and DAME will run under SimH HP2100 v3.8+
running RTE-6/VM using QCterm for the terminal, see the docs in
hpgtapes.zip for how I did it (includes sample setups for Linux and
Windows host systems). Still working on getting Adventure to work, DAME
now works using an updated modified HP2100
simulator.
Single-User
"paper-tape" BASIC
This goes way back, and might be too primitive for some, but this
hobby is all about primitive systems so for me that's not a problem and
if anything a fun challenge. The main
limitation was this version of BASIC had no strings or string input,
all interaction with the programs was through numerical input. Other
than that, it is a fairly complete (and probably the first)
implementation of HP-BASIC, and capable of running relatively
sophisticated applications considering the time period it was
introduced.
Documentation and source code for HP-BASIC (20392) is at BitSavers...
"5951-4423_A_Pocket_Guide_To_The_2100_Computer_Sep72.pdf" is in the
"pdf/hp/21xx/" section.
Original assembly source code (rev A) is in the files in the
"pdf/hp/2116/BASIC_Jan70/"
section.
TREK
TREKPT
is a
conversion of the STTR1
program originally written in 1972 by Mike
Mayfield, a revised version was contributed in 1973 to the public HP
user
archives. This version is somewhat different than the original, in
particular the original Y,X sector and quadrant referencing has been
changed to X,Y notation, added a -=--=- pattern to the short-range scan
border to assist in counting sectors (from the TSB-E conversion),
reversed display of shields and torpedoes, and changed the course
compass and noted the changed coordinate system in the built-in docs.
P.T.BASIC's RND function always returns the same sequence so added code
to prompt for a seed number then called RND that many times to provide
varience in the initial conditions. Changes since the initial
conversion include a WARP UNITS display for the computer calculator,
code to properly word singular and plural things, and an integer print
sub (-9999 to 9999) so that most of the original text wordings could be
properly displayed.
TTY TREK
TTYTRKPT
is a conversion of the TTYTREK
program written by Joe Altmaier, found in the HP2000family Yahoo group.
Previously it was modified to run under TSB-E, for the single-user
conversion alphabetic inputs have been changed to numeric, the penalty
has been removed for requesting command help, and markers have been
added to the galactic record display to show the current position (plus
the usual single-user mods), otherwise it should play just like the
original. This version is somewhat different than the original Trek
game concept, the Klingons move around and attack (and destroy) bases,
and have a hard-to-defeat headquarters in quadrant 1,1. Good thing
resupplying is cumulative, lots of energy and torpedoes are needed to
win.
SEA BATTLE
SEABATPT
is a conversion of the Seabattle
program, published in David Ahl's More BASIC
Computer Games. The program was written by Vincent Erickson for a
HP2000 system, I don't have a copy of that original code but I did find
machine-readable TRS-80 source in the Classic Basic
Games archive. From this source I made it more closely match the
MSBASIC conversion while converting it to single-user HP-BASIC,
including inverting comparison evaluations - expressions like 2>1
return 1 for true, not -1 as with other BASICs. From there I fixed up
formatting of numbers, added extra commands to pass time and toggle
automap mode, added a bit of built-in help, easier levels and other
mods.
OTH
This is not an old program (just an old concept), I wrote a sequence
of OTH's in 2006 for
the TSB-E system in exploration of Reversi-playing programs. OTHPT
was converted from the more-or-less final non-terminal-code OTH version
with side-by-side boards and can optionally play (slowly) with one
level of
lookahead. My facination with Reversi began in the '80's with a
program from Tim Hartnell's Giant Book of Computer Games, I played that
game for many years on many platforms. The YX number move entry method
comes from that program, that's what I'm used to. The original program
was credited to Graham Charlton, the closest I found to that code was a
ZX81 program modified by "Berto", which featured a side-by-side display
for displaying the board configuration before and after the computer's
move. This type of display is useful for a TTY-style implementation
like this, otherwise the text has to be compacted to fit both boards on
the same terminal view.
GOMOKU
GOMOKUPT
is a conversion of GOMOKU
from the HP2000 contributed archives. The
goal of this game is to get five pieces in a row. I wish I could
:-) The original program displayed the computer pieces as C, the player
pieces as Y and empty positions (in print all mode) as +, this confused
me so changed it to the X's O's and dots I'm used to from the Reversi
games. The characters are (now) in lines 3020-3080 and easy to change
if the original look is desired. The degree of move weighting can be
changed by altering line 35, This is one of the init variables I moved
up front to restore automatic downgrading of ability when losing more
than 3 times in a row, but doesn't seem to help me much, even when I
manually set to 0.001 I'm lucky to get a drawn game (it gives up when
neither player can win) [if A9 is increased I can win.. by breaking the
algorithm:]. More information about the game is on the Gomoku Wikipedia page.
Other conversions of HP2000 games are in the directory and files
linked at the beginning of this section, including
GOLF, HAMURABI, LANDER, BEASTI and WUMPUS. The latter two originally
had string
entry for the moves so they're a little different under a strictly
numerical BASIC, but still close enough to play... for WUMPUS instead
of SHOOT OR MOVE (S-M) it's SHOOT OR MOVE (1-2). For BEASTI instead of
NSEW etc entry for direction the numbers on a PC's numeric keypad were
used instead, which makes it a bit easier (at least if using a PC
keyboard).
BCS Games
There isn't much to be found in the way of BCS games, but I probably
learned more from building them than perhaps any of the other stuff.
The original HP21xx Algol and FORTRAN compilers and the assembler
required a driver overlay called SIO and produced relocateable binaries
as output. Just like the RTE compilers and the .bin files often found
in the archives (light bulb goes off). Once configured, BCS took those
relocateables and linked them to drivers and library code to produce a
stand-alone binary which could be booted by the minicomputer directly
from papertape, no separate OS was needed. This provides the same
utility as paper-tape basic with an embedded program, a single memory
image that can be run by anything capable of running memory images, in
particular HP-IPL/OS - more stuff we can stuff into our homemade
oldcomp-style OS! Most of all I learned a bit about using the original
tools and now see how it might be possible to put other code bits I
find to good stand-alone use. Who knows, it might be possible to
translate some of the FORTRAN IV stuff into FORTRAN II (really American
Standard
Basic FORTRAN with HP extensions),
or maybe get
the paper-tape of FORTRAN IV translated into file form and compile
things with little or no modification, but even without that it looks
possible to use FORTRAN IV on another system and fill in the missing
subs. The possibilities aren't endless but the situation is a whole lot
better than when all I had was a cross assembler.
The supplied ABS binaries are configured for a 32KW HP21xx machine
with the console interface in slot 11. To correct entry mistakes press
Del (Backspace on some systems) then press enter. The BCS console
driver was meant to be used with an actual TTY and
expects CRLF line ends, most terminal emulators provide a way to
set that, if not press Control-J to terminate entries. The SimH HP2100
simulator has a 'set tty autolf' setting to do this automatically (set
tty noautolf to turn off), for stand-alone use I use a script with this
setting so that the enter key works normally.
31odd
This was programmed by Dan Grieser in 1975 and found in the
rev2001_x170.fst file from the old Interex site. It sounds easy enough,
but I've yet to beat it. From the submission notes:
THIS IS A GAME IN WHICH THE PLAYER IS PITTED AGAINST THE COMPUTER. TO
WIN, THE PLAYER MUST END WITH AN ODD TOTAL OF COUNTERS WHEN THE KITTY IS
EXHAUSTED. THE KITTY STARTS WITH 31 COUNTERS. THE PLAYER CHOOSES
WHETHER TO GO FIRST OR TO HAVE THE COMPUTER GO FIRST, THEN THE COMPUTER
AND THE PLAYER ALTERNATE CHOOSING BETWEEN 1 AND 5 COUNTERS TO BE ADDED
TO THEIR TOTALS. THE COMPUTER PLAYS AN OPTIMUM GAME WITH ONLY 3125
WAYS TO LOSE. THE PLAYER, HOWEVER, HAS ALMOST 10 MILLION WAYS TO LOSE
SO THAT COMPLETELY RANDOM CHOICES WILL RARELY LEAD TO A WIN.
Chess
This Algol/assembler program was found in the rev2001_x167.fst
archive and designed for DOS-M but was easy to get running under BCS.
Several people worked on it, from the comments...
COMMENT MINI-TECH - WRITTEN BY JIM GILLOGLY, JUNE 1971,
MODIFIED, ANNOTATED AND ADAPTED FOR CLASS USE BY RON OHLANDER,
OCT 1971. MODIFIED AND REANNOTATED BY JIM GILLOGLY, FEB 1972.
TRANSLATED TO SAIL BY PAUL DANTZIG, MAY 1973.
CHESS POSITIONAL ANALYSIS ADDED BY KEN POCEK, JUNE 1973.
ADAPTED TO HP ALGOL BY ED DOUST AND KEN POCEK, SEPT, 1973
To get this program running under BCS pretty much
all I had to do was put the files together and separate out the
assembly subs into separate files, add ,B to the compiler/assembler
control lines, and in the assembly code replace RRR RRL SWP etc with
OCT equivalents as the SIO assembler doesn't recognize them. This
program requires a HP21xx with the extended instruction set, works on
my HP2113E MX machine. The ~31Kbyte binary produced by BCS required
that the
first two 1KW pages of memory be clear before loading, the ~25Kbyte
binary in
the zip was saved from HP-IPL/OS and ensures those locations are
cleared. It is unclear why the memory dump binary came out
significantly smaller but it seems to work fine regardless of initial
memory contents.
Reversi
I wrote this program to learn a bit about FORTRAN and
give myself a much faster version of probably my favorite board game. I
like this one,
not too hard but keeps me on my toes and runs well on my HP
mini. More about this program is on
the Reversi for HP FORTRAN page.
TSB-E Games
Here are a few games I converted to Time Share BASIC version E (aka
HP2000E), a multiuser operating system that ran on a single 16KW CPU.
User memory was limited to roughly 4KW but it had the CHAIN function
which permitted breaking up larger programs into pieces small enough to
run. Most prefered the much more capable "Access" version but
personally I found that system to be too complex and the only available
builds of it were on a huge disk image full of non-distributable
information. TSB-E on the other hand was an OS engineering marvel on a
relatively small disk image with nothing extra, making it almost
perfect for experimenting with HP2000-style programs.
TSB-E required a specific shutdown procedure (SLEEP) or else it
would not boot again, to keep from self-destructing I devised various
ways first running only from a copy and later using a utility disk or
platter to boot it, patch the SLEEP command so it could exit back to
the utility (which had bits to make sure SimH flushed its buffers to
avoid corrupting the disk should the sim window get closed), and fix
the system should it become "unslept". Also figured out how to change
the default "_" backspace to the regular backspace key. Eventually I
reduced the system to a single account running from the fixed platter
and put HP-IPL/OS and the utilities on the removeable platter, just the
A000 account provided plenty of room for what I wanted to do.
Here are a screenshots of modified TTYTRK and STTR1 programs...
Many of the HP2000 games used terminal codes for clearing the screen
and positioning the cursor, to run these and even play around with
color I modified SimH HP2100 so when it saw strings like '27 on the mux
output it replaced the codes with the ascii equivalent. To convert the
Access-style codes to run under TSB-E I essentially changed things like
PRINT '27"Hetc" to PRINT "'27Hetc". Here are screen dumps of a
Reversi-playing program I wrote, and an old program I found called
BEASTI...
Here's the source code...
TSB information and software can be obtained by signing up to the
Yahoo HP2000Family group, with luck (or HyperTerminal with
suitable line/char delays) the source code can be pasted directly into
an existing TSB-E disk image. The sleep/backspace/etc utility hacks
require a HP-IPL/OS 7900 XDOS build containing tsbe.ipl and something
with DMENU. There are many ways to use the utility functions ranging
from attaching the TSB-E disk image and running the utility from an ABS
file, to restricting TSB-E to a single platter (remove all accounts
except A000) and putting a HP-IPL/OS disk build containing the
utilities on the other platter. That is the most convenient method for
me (one account is enough), reducing the whole system (boot loader and
all) to a single 7900 disk image that can be booted by SimH HP2100.
Last modified 12/22/10
Terry Newton - wtnewton@infionline.net