Gavin, A-W-E-S-O-M-E ! ! !
On Sun, Sep 27, 2020 at 2:22 PM Gavin Scott via cctalk < cctalk@classiccmp.org> wrote: > 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. > -- Lee Courtney +1-650-704-3934 cell