I can only say "wow"...
.... what a wonderful effort.....
Dave Wade
-----Original Message-----
From: cctalk <cctalk-bounces at classiccmp.org> On Behalf Of Gavin Scott via
cctalk
Sent: 27 September 2020 22:22
To: cctalk at
classiccmp.org
Subject: HP 3000, APL\3000, the HP 2641A APL Display Station, and stuff.
As some people here are aware, I have spent probably too much time this
summer hacking on J. David Bryan's excellent Classic HP 3000 simulator and
trying to build up the ultimate classic 1980s HP 3000 system (virtually
speaking).
I started with the MPE V/R KIT that's widely available and expanded that into
a 5x120MB HP 7925 disc system and configured things like the system
directory size and all the system tables to make a fully functional multi-user
server.
I then set about collecting as much old MPE software as I could find, which
included Keven Miller's collection of the old Contributed Software Library
tapes which were conveniently available in SIMH format. This is a huge trove
of cool stuff including most of the classic mini/mainframe games (Dungeon,
Warp, Advent, etc., etc.) and even a little game called DRAGONS that was
written in
1980 by a guy named Bruce Nesmith when he was in college and he used it to
get a job at TSR and went on to write parts of many classic D&D products and
eventually landed at Bethesda where among other things he was the lead
designer for another little game called The Elder Scrolls V: Skyrim. I was able
to track Bruce down and give him a copy of the system with his 40 year old
game running on it. The CSL tapes also include other amazing goodies that
people developed and gave away over the years, including a FORTH and LISP,
as well as most of the system and utility programs that people used to run
their 3000 shops. It's quite fun to explore.
I was curious how far we could push the 3000 simulator, so I hacked all the
memory bank registers to be six bits instead of four bits, and we now have a
simulated HP 3000 Series III that supports 8MB of memory, 4x more than any
physical system ever did. I started trying to do the same thing for giant disc
drives, but MPE turned out to have too much knowledge of what the
supported disc models look like to make it practical. Bummer.
Since I met my first HP 3000 in 1980 (40 years ago this month), people would
talk about what was probably the most rare and exotic HP software
subsystem ever produced, APL\3000. APL on the 3000 was a project started
at HP Labs in Palo Alto in the early 1970s. They were likely motivated by the
success IBM was having with mainframe APL timesharing services. This would
be the first full APL implementation on a "small" (non-mainframe) computer.
It would be the first APL with a compiler (and a byte-code virtual machine to
execute the compiled code), it would include an additional new language
APLGOL (APL with ALGOL like structured control statements), and it managed
to support APL workspaces of unlimited size through a clever set of system
CPU microcode extensions that provided a flat 32-bit addressing capability
(on a 16-bit machine where every other language was limited to a 64KB data
segment).
Because APL required these extra special CPU instructions that you got as a
set of ROM chips when you bought the $15,000 APL\3000, and because APL
ultimately failed as a product (another story in itself) and thus HP never
implemented these instructions on their later HP 3000 models, I never saw it
run on a real HP 3000, but over the years we talked about wouldn't it be cool
to find a way to get APL running again.
With assistance and moral support from Stan Sieler and Frank McConnell and
others, I was ultimately able to reverse-engineer the behavior of the
undocumented ten magic APL CPU instructions needed to get it to run and
implement them as part of the MPE unimplemented instruction trap and
now
APL\3000 runs again for the first time in ~35 years. Somewhat ironically, this
implementation method could have been used back in 1980 as I didn't
actually end up changing the hardware simulation code at all, and it should
also run (if a bit slowly) on any physical classic architecture 3000.
So that was cool and all, but what is APL without all the weird overstruck
characters and whatnot? APL\3000 supports the use of plain ASCII terminals
through blecherous trigraphs like "QD for the APL quad character, but this is
hardly satisfying. So the quest was on to find a solution. Back in 1976 when
APL\3000 was released, there was a companion HP terminal in the 264x line,
the HP 2641A APL Display Station, which was basically an HP 2645A with
special firmware and APL character set ROMs that supported all the APL
special characters as well as overstrikes (the terminal would take
X<backspace>Y and lookup to see if it had a character to represent Y
overstriking X and if so it would show that on the display, and if that got
transmitted to the host it would convert it back into the original three
character overstriking sequence).
I briefly looked into the idea of hacking QCTerm or Putty or something, but
then I found out from Curious Chris that an HP 2645A emulator already
existed in the MAME emulator system! Since the '41 is basically just a '45 with
modified firmware, and Bitsavers had both the character set ROMs as well as
the firmware ROMs from a '41, this sounded like it might be easy! There was
a snag however in that the firmware ROM images that were allegedly from a
'41 turned out to actually be from an ordinary '45. But we did have the
character sets and one of the ROMs from the second CTL PCA. I put out a call
on the Vintage HP list to see if anyone might possibly have a lead on an actual
HP 2641A, and Kyle Owen responded that not only did he have one he could
also dump the ROMs for us. So a few days and a few hacks to F. Ulivi's MAME
hp2645 driver later we now have a functioning MAME HP 2641A terminal
emulation, so you can experience APL\3000 in all its original glory. I bundled
up a somewhat stripped down MAME along with my turnkey 3000 setup so
both emulated HP terminals are just a couple clicks away.
So that's how I spent my summer vacation (who am I kidding, it's pretty much
all vacation these days). It has been a lot of fun revisiting all this old
3000 stuff as
well as the numerous people I talked to along the way including some of
those who were around at APL\3000's birth (before my time). It was rather a
lot of work so I'd like to feel it might be useful to someone in the future who
is digging into this part of history. Because of all the usual reasons, I don't
plan on hosting it permanently until and unless we maybe someday get the
licensing worked out (the 50th anniversary of the HP 3000 will be in a couple
years so maybe people will get interested again then) but I will offer it up
here to my fellow computer history nuts if you want to help ensure that it
doesn't vanish if I get run over by a bus or something :)
This is a simulated HP 3000 Series III (circa 1980) running MPE V/R (circa 1986)
with 8MB of memory, all the language subsystems (APL, BASIC, BASICOMP,
RPG, FORTRAN (66), SPL, PASCAL, COBOL (68), COBOL II (74)), 20 years of
users group contributed software, many classic historical computer games,
etc. Software archaeologists can get lost in here for years. Oh, and thanks to
Dave Elward, the HP 2000 Timesharing BASIC contributed library is even
included (kinda sorta converted to MPE BASIC) for good measure. This is a
streamlined turnkey edition that's ready to run out of the box with no
assembly required (all batteries are included).
Currently, I only provide executables for Windows (sorry) but am in the
process of getting the 3000 simulator changes (for large memory support)
and the new MAME
hp2641 driver back upstream. Instructions and further details can be found in
the README.txt hint book for this adventure. 94MB Google Drive link:
https://drive.google.com/file/d/1bmXvHkBLbUeLAid73EJ4H1yQ2uwXQuRu
Gavin
P.S. I'm giving a talk on the history of APL\3000 and its resurrection to the
ACM APLBUG group in a couple weeks. If anyone is interested I can provide
more details when I have them.