I can only say "wow"... .... what a wonderful effort.....
Dave Wade > -----Original Message----- > From: cctalk <cctalk-boun...@classiccmp.org> On Behalf Of Gavin Scott via > cctalk > Sent: 27 September 2020 22:22 > To: cctalk@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.