HP Mini-Computer Games

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