GeistHaus
log in · sign up

https://bigdanzblog.wordpress.com/feed

rss
10 posts
Polling state
Status active
Last polled May 18, 2026 22:45 UTC
Next poll May 19, 2026 21:54 UTC
Poll interval 86400s
Last-Modified Mon, 27 Apr 2026 09:45:32 GMT

Posts

Some Housekeeping
c-Misc
I no longer host a web server. Some of my blog posts point to files on that server. Instead, I’m now using a public server. When you click on a link to my server, it should automatically forward to the … Continue reading →
Show full content

I no longer host a web server. Some of my blog posts point to files on that server. Instead, I’m now using a public server. When you click on a link to my server, it should automatically forward to the public server.

If it fails to auto-forward, change the DNS part of the URL from “www.xyfy.com” to “xyfyx.free.nt”. For example if you see “www.xyfyx.com/files/abc.txt”, change the URL to “xyfyx.free.nf/files/abc.txt” and you should be able to see the file.

I periodically do snapshots of my blog to archive.org, so you can also use that as a tool to find old posts/files, it they are no longer directly available.

While I still work on electronics off and on, I really no longer post anything about it. Guys that host huge electronic blogs are complaining that all of their content has been scanned by AI and their traffic has dropped significantly because everyone goes to AI first. As such, I see no point to taking the time to create a post unless I stumble across something extremely rare needing some documentation.

Do not directly reply to this post for help. I probably won’t see it. Reply to the post in question.

Big Dan

dantheman60
http://bigdanzblog.wordpress.com/?p=4547
Extensions
SparkFun Ethernet Adapter for Teensy 4.1 Error “Ethernet shield was not found. Sorry, can’t run without hardware”
c-teensyTeensy 4.1
SparkFun has recently started carrying a RJ-45 Jack + Magnetics break-out board for the Teensy 4.1 which supports Ethernet natively. This is a great solution. I used to implement wired Ethernet on various Teensy 3.x projects and that required purchasing … Continue reading →
Show full content

SparkFun has recently started carrying a RJ-45 Jack + Magnetics break-out board for the Teensy 4.1 which supports Ethernet natively.

This is a great solution. I used to implement wired Ethernet on various Teensy 3.x projects and that required purchasing a separate WizNet Ethernet adapter that cost around $50 if I recall correctly.

With the PJRC Teensy 4.1, you just need the break-out board, a 2×3 header, and a ribbon cable. All of which can be purchased at SparkFun (along with the Teensy 4.1 as well).

I connected everything up as documented. I then loaded the Ethernet library as instructed and used a webclient example in the Ethernet library. It failed. The software could not find the Ethernet hardware. The error code given is:

Ethernet shield was not found. Sorry, can’t run without hardware.

After some looking around I found an explanation on the PJRC forum:

https://forum.pjrc.com/index.php?threads/ethernet-on-4-1.75988/

One should not be using the Ethernet Library, but the QNEthernet library instead. This, too, can be found in the Arduino Library Manager. I removed the Ethernet library, installed the QNEthernet library. Then compiled the QNEthernet library webclient which connects to good and displays the HTML it receives.

Worked like a charm.

 

dantheman60
http://bigdanzblog.wordpress.com/?p=4536
Extensions
Installing Adventure, Thisala, Ferret, and Other Games onto a Data General MV AOS/VS Minicomputer Simh Emulator
c-retroadventureAOS/VSData General
This summer (2025), Robert Robichaud approached me to see if several historical text-based Adventure games, namely Adventure, Thisala, and Ferret could be restored onto a Data General (DG) Nova Minicomputer simh emulation from a DG contributed software tape. After some … Continue reading →
Show full content

This summer (2025), Robert Robichaud approached me to see if several historical text-based Adventure games, namely Adventure, Thisala, and Ferret could be restored onto a Data General (DG) Nova Minicomputer simh emulation from a DG contributed software tape.

After some messing around I figured out how to get them installed. I will describe that process below, but first here is Robert’s history of these games.

Data General Text-based Games History

Earlier this year, the excellent Novas are Forever website, dedicated to the history and preservation of vintage Data General minicomputers, obtained the official DG software license and began uploading a large archive of magnetic tapes for their various 16-bit (Nova, Eclipse) and 32-bit (MV) lines of machines and operating systems (AOS, AOS/VS, etc.). A few months ago, I began studying these in earnest, and after realizing that they contained some historically significant finds, started experimenting with the simulators that have also been made available there over the past couple of years. This wasn’t always a straightforward process, but thanks to Data General’s own excellent series of manuals and Dan’s technical expertise, I was eventually able to play through and research what turned out to be one of the more significant libraries of previously lost or unknown game software from the classic mainframe/minicomputer era, the highlights of which I’ll describe below:

In 1979, a unique 500 point version of Adventure/Colossal Cave was written in AOS BASIC by an anonymous author for the 16-bit DG Eclipse. It contains 10 new treasures and some amusing additional content (including a “Marquis de Sade maze” and a tropical island!), and has remained almost completely unknown and undocumented until now. I was only able to find a single reference to it either online or in print, in the form of a reminiscence from 2016 in a comment on Jason Dyer’s Renga in Blue website, by Howard Chu:

“We had a 500 point version in AOS BASIC on our school system’s Data General ECLIPSE. That would be around 1980 or so. I remember being pissed off at the dwarf with his sharp little knife killing me, so I added some code to let you pick up the knife and throw it back at him and kill him. Still have the source on big green and white tractor feed printout in a box somewhere.”

Along with a standard port of Don Woods’ classic 350 point version of Adventure, this version seems to have been floating around the institutions that hosted DG’s 16-bit AOS-based machines, and as you might expect was quickly followed by a port of its equally famous descendant, Zork/Dungeon in early 1980. However, this conversion turned out to be a bit special, as it was a full 616 point version (with the endgame implemented) “rewritten from scratch” in PL/I! There are a few historical reasons why IBM’s otherwise uncommon (for games, at least) PL/I language seemed a bit more widespread on DG systems than usual, but I won’t get too into the weeds with that here. Just keep it in mind for later.

Around the same time that these unique versions of the two most important foundational works of interactive fiction were being ported to the system, a small group of DG employees, led by David Auerbach, Paul Chiasson, and Peter Macaulay of Data General’s Corporate
Systems Engineering Group, decided to try to expand upon and one-up Adventure and Zork (as was common in the early days of the genre) by creating their own original text adventure, Thissala. Work seems to have begun on it in 1979, with early versions available by the first half of 1980, before some final revisions and an eventual “rehosting” on the newly released 32-bit MV in 1981.

This discovery turned out to be particularly fascinating, as it has remained completely (and I mean *completely*) unknown and undocumented for several decades, and is wildly ambitious, boasting of nearly 1000 rooms and over 400 objects, which would have made it by far the largest adventure game in existence at the time, and for many years afterwards. Aside from the usual treasure hunt aspect, there’s an attempt at an overarching “overthrow the evil overlord” plot (recalling Hezarin from the same era), and the addition of RPG-esque player statistics and a magic system, along with wandering monsters to fight, although these latter elements were never fully implemented, keeping the game in the realm of the pure text adventure. In fact, it’s quite obvious that the game, while fully playable, was never actually finished, being left at “version 0.60”, while various aspects clearly remained to be fleshed out and a few odd bugs smoothed over. In that sense it reminds one of Olli J. Paavola’s Tolkien-based Lord on the DECSYSTEM-20, though Thissala’s sprawling part fantasy/part contemporary overworld geography and extended but ultimately frustrating parser track most closely to Warp on the HP systems of the day.

As for the game’s authors themselves, I’ve only been able to track down Peter Macaulay, who sadly died in early 2024 after a long career in the computer industry, with his obituary specifically referencing his work at Data General. He was a native of Belfast, Northern Ireland, which explains the game’s occasional shifts between American and British English usage, as well as a certain in-joke about Irish whiskey.

If you’ve read Tracy Kidder’s classic The Soul of a New Machine, detailing the inside story of DG’s frantic efforts to develop the MV in the late 1970s, you might recall that Adventure played a significant role in the hardware development team’s culture at time, with the ability (or lack thereof) to successfully run the game considered a final grade of sorts on a new system’s state of readiness for launch. One of the main characters who emerged from that narrative is who I believe Thissala takes its rather unusual name from as a parody/tribute – Ed Rasala, one of the chief architects of the MV project, and obvious Adventure addict:

“That night in the lab, in a confident moment, Rasala and some of the others on the team attempted to make one of the prototypes run the program for a well-known computer game called “Adventure.” If the machine ran this program, it would be the first time, after more than a year and a half of labor, that an Eagle had done more than run tests. It would be a launching of sorts. Everyone in the lab gathered around the prototype’s system console. Rasala sat at the controls. He typed some instructions, in order to initiate the running of the program. In a moment the console scratched out this message, in reply: “FATAL ERROR.”

Previously, it had been thought that the Data General systems only hosted one original game of real significance, the similarly huge and difficult text adventure Ferret, written in PL/I by an anonymous group of employees from DG’S UK division starting in 1982, and built in modular “phases” over the course of the decade. This too had remained almost completely unknown, until the authors decided to take the game up again around a decade ago and rewrite and massively update/add to it over the next few years, resulting in an almost absurdly huge and difficult adventure that was finally conquered through a lengthy and concerted group effort over at Renga in Blue not long ago. I’m happy to report that the original version has now been found in this DG software archive, and that studying it alongside its modern remake has been quite enlightening.

The version of Ferret that’s been preserved is 4.10, which represents the game as it stood circa 1984/1985, just before it (acording to the version history in the modern port) began being significantly updated and “modernized” (by the Infocom-influenced cutting edge interactive fiction standards of the late 1980s), eventually disappearing off the radar itself for decades. This is particularly valuable from a historical perspective, as it finally allows the game to be experienced as the mainframe/minicomputer era puzzle-centric text adventure that it originally was, rather than the more polished and narrative-driven interactive fiction epic that it later became, although the two are obviously closely intertwined. While the vast majority of text, objects and puzzles were ported directly over from these early phases of the game to the modern version, there are many differences that I’ve noted as well, which while often minor, add up to create a somewhat different playing experience, sometimes for the better, sometimes for the worse, subjectively speaking. I’ll leave it to the curious and/or fanatical to explore further, and move on to the hitherto unknown historical links that may exist between Ferret and its Data General adventure ancestors.

As previously mentioned Ferret was, unusually, programmed in PL/I. The revelation that the earlier DG port of Zork/Dungeon was as well is interesting, although the direct influence there was no secret, as Ferret casts itself as a direct successor/improvement to Zork in its own in-game introduction. The more interesting question is the possible influence of Thissala. While the Ferret authors never directly mentioned it, either at the time or after they resurfaced years later, there are reasons to believe that it did indeed play a part in inspiring their game. Aside from Thissala’s earlier date and very similar Zork-referencing introduction, there are certain in-game elements that may be telling. There are similarities in the scoring systems, and most importantly in a couple of DG-specific command functions that point in this direction, as well as some more anecdotal evidence, such as a direct in-game insult/parody of nearby competitors DEC in Thissala that is closely mirrored by a similar jibe at ICL in Ferret, and so on. Additionally, the fact that Thissala was created by DG employees in the US (including one who had recently come over from the UK) just a couple of years before Ferret was launched by a very similar group in the UK, and that there was obviously transatlantic interchange of the DG software library (both Thissala and Ferret were distributed for years by NADGUG, the North American Data General Users Group) seems more than a bit coincidental.

Finally, leaving my usual text adventure milieu, I’d like to highlight one more significant discovery from the DG archives, a 32-bit MV-native game developed in 1983-1984 and simply titled Quest. In combing through the visible text in the files, it quickly became apparent that this game, despite its generic name, was something of real historical interest. It’s a large, complex and highly system resource-intensive game that serves as an early example of a simultaneous multi-player computer RPG/strategy RPG. It features both cooperative and player-vs-player elements, including multiple quests, castle building and empire expansion, siege warfare, an extensive magic system, large game worlds with ASCII graphics, and much more. It seems remarkably ahead of its time, and predicts many of the innovations of the MMORPGs that were to come. Unfortunately, the nature of how the game was originally run (with a dedicated server hosting the game for multiple players on their own terminals) makes it difficult to recreate in a simulated environment, but it was clearly quite popular in what turns out to have been a surprisingly robust Data General gaming scene, and merits further study for its larger place in game history.

Installation

Originally we tried to get these games running on a DG Nova emulation using the 16 bit AOS operating system. Turns out the games were all compiled to run on the 32 bit AOS/VS operating system of the Data General MV.

The simh implementation of the 16 bit DG Nova is full featured and supports many types of devices, probably most importantly an async mux so multiple terminals can telnet into the system simultaneously.

The simh implementation of the 32 bit DG MV system is still very minimal. You have a system that boots with a console, disk drive, and tape drive. Not a lot else. There is no way to connect a terminal emulator.

Prior to this project I have never even seen a real DG let alone worked on it, so my knowledge is limited to just enough to get files restored from tape and run the programs.

It is much easier and faster for me to write instructions in a word-processor and publish that rather than create the procedure in WordPress so that is what I did this time.

The following link is to a PDF file that describes the procedure to get the DG MV emulator running, then restore the games tape to disk and start the games menu.

Installing Games into DG MV SIMH

dantheman60
http://bigdanzblog.wordpress.com/?p=4524
Extensions
Video of HP 1000 Usage
c-retroHP1000
After spending the summer learning the HP 1000, it is time to move on to other projects. The last thing I want to do is document how to navigate the HP 1000, manipulate files, compile Fortran 77 programs, use the … Continue reading →
Show full content

After spending the summer learning the HP 1000, it is time to move on to other projects.

The last thing I want to do is document how to navigate the HP 1000, manipulate files, compile Fortran 77 programs, use the text editor, and use paper tapes.

I doubt there is enough interest in this topic to justify spending time going through my notes and creating a blog post of how to do these various tasks. Instead, I’m just going to do a quick and dirty brain dump to a video.

dantheman60
http://bigdanzblog.wordpress.com/?p=4516
Extensions
Playing the 425 Point Version of Adventure on the HP 1000 Computer System
c-retroHP1000
As I wrap up my time on the HP 1000, I decided to get the last known version of  Adventure for the HP 1000 running. This is somewhat of a follow up to the post Playing Adventure (a.k.a. Colossal Cave) … Continue reading →
Show full content

As I wrap up my time on the HP 1000, I decided to get the last known version of  Adventure for the HP 1000 running. This is somewhat of a follow up to the post

Playing Adventure (a.k.a. Colossal Cave) on the HP 1000 Computer System

Robert Robichaud provides the following history for this version of Adventure

This version of Adventure is a further extension of Beasley’s 385 point HP1000 port from 1978. The new content was added by Tim London circa 1980-1983, who worked at a company or institution called UKSL, located at Kemble House, Kean Street in London, England. By 1984 it had made its way back across the pond, and started spreading further through HP1000 user group tape swaps. A handful of attempts were made to clean it up or improve it between 1985-1987, most of them by John L. Anderson Jr. of the US Naval station at Seal Beach, California, who seems to have been the primary maintainer of the HP1000 game library during that time period. Aside from a small bit of censorship (perhaps he was worried that his Naval station bosses wouldn’t appreciate one of Beasley’s more colorful uses of the game’s verb list), he also helpfully provided a full walk through and added this interesting note in his final revision:

“I have been porting this to an IBM PC and am also looking for the source code of the CP/M version that has the ice caves, computer room and other features. I think it was written in Basic. If anyone has a copy, let me know.”

This refers to Mike Goetz’ CP/M port of David Platt’s 550 point Sigma 9/CP-V extension, the latter also serving as a basis for Mike Arnautov’s further combinations and expansions of the game over the years. It’s unknown if Anderson’s PC port ever saw the light of day.

Update from Richard:

Thanks to some helpful info provided by Pete Edwards, I can now fill in the history a little better on this game. UKSL was a defense contractor, and set up shop at the address I mentioned in 1981. This also helps to date the game more exactly to 1981-1983, between when they started and when it showed up in the US.

Here is a link with some additional history for UKSL

https://marconiradarhistory.pbworks.com/w/page/53986480/UKADGE

Implementation Notes

This version of Adventure, found in Contributed Software Library Revision 2830, contribution M058, was written for RTE-6/VM and Fortran 77. It is written entirely in Fortran rather than a mix of Fortran and Assembler as was the Beasley version. So I expected very few problems getting the program running.

There were multiple show-stopping bugs in the manner in which the game attempted to limit how long you played. The bugs made it impossible to even start the game without knowing the Wizard password. I found this odd as this is the version that had been released to the contributed library. You would think such a bug would have not been released.

I managed to iron out 2 of the 3 bugs but the solution to the 3rd was elusive so the final solution was to just disable this testing entirely.

Also, the game makes use of the HP Terminal escape sequences to control the cursor. This made it a little funky to try and play on the HP 1000 console (rather than an HP terminal emulator). So I commented out those escape sequences as well.

All of my changes are clearly marked for future reference.

Rather than build another SIMH HP 1000 with this game installed, I simply installed it into the same SIMH HP 1000 where the Beasley version of Adventure is installed.

While the Beasley version is installed in the directory /ADVEN, the 425 Point version is installed in /ADVEN425.

The download is here:

https://drive.google.com/file/d/1g9WDHVipAx1Lb5kd4txSkJHoqxcoBWjw/view?usp=drive_link

Playing the Game

Please refer to the prior instructions for game play. To play the 425 version, rather than playing from the /ADVEN directory, you will play from the /ADVEN425 directory:

SET TIME

*TM,2025,272,12,11,12

 THE RTE-6/VM SYSTEM IS UP AND RUNNING.

*EN,RT
PLEASE LOG-ON: MANAGER.SYS
PASSWORD ?


SESSION    1  ON  12:11 PM  MON., 29  SEPT, 2025
PREVIOUS TOTAL SESSION TIME: 112 HRS.,  46 MIN.,  28 SEC.

Using stack file CI.STK::2
CI.01> CD /ADVEN425
CI.01> ADVENT

HP 1000 Adventure Version 2.2

This adventure is brought to you by LABtec, the Los Angeles Basin Techincal
Computers users group. Please use your machine time wisely or this game may
no longer be available. For you old timers, this version has new sections of
the cave added. If you find any bugs, please report them to your local wizard.

Restoring data base from file ADVENTURE.DAT

Welcome to Adventure!!  Would you like instructions?

>

 

dantheman60
http://bigdanzblog.wordpress.com/?p=4503
Extensions
Adding Routines to the HP 1000 System Library Index File (SNAPSHOT File)
c-retroHP1000
While experimenting with Fortran 77 on the HP 1000, I found you couldn’t access any files in the FMP File system, only the FMGR file system. FMGR is the old way of accessing data by specifying disc cartridges, and not … Continue reading →
Show full content

While experimenting with Fortran 77 on the HP 1000, I found you couldn’t access any files in the FMP File system, only the FMGR file system. FMGR is the old way of accessing data by specifying disc cartridges, and not what I want to use. I want to use the FMP file system which supports a Unix-like file system with subdirectories.

Poking around I found you need to link the libraries $FNEWF and $FMP6 into your program. I found the libraries and set up my LINK scripts to use them successfully.

This is rather clumsy though. If you are using Fortran chances are very high you are going to want to access files. You should not need to manually link these libraries to every Fortran program you write.

The HP 1000 system library index file is in what is called the SNAPSHOT file. This file can can be found as /SYSTEM/SNAP.SNP. The Fortran libraries need to be added to that file.

The HP 1000 Link Manual (92077-900009), pg 3-7 shows how to create a SNAPSHOT file using the LINDX utility. During the creation of the SNAPSHOT file, we will add the missing libraries.

This is done with the command

lindx system /dan/snap.snp /libraries/$fnewf.lib /libraries/$fmp6.lib

    - system keyword indicates build system snapshot file
    - /dan/snap.snp is the file being created
    - /libraries/... list the libraries to be added during generation

I create the new SNAPSHOT file in my home directory rather than over writing the new one:

CI>lindx system /dan/snap.snp /libraries/$fnewf.lib /libraries/$FMP6.LIB        
Sorting entries
!BITM 
!CAY. 
!IAY. 
!JAY. 
...
ZPPOL 
ZPUT  
ZREAD 
ZSENS 
ZTMAP 
ZWRIT 
^FMSA 
 Externals warning results when      
  externals from the module cannot be
  satisfied from system libraries.   
  1988 entry points processed 

Reviewing the new SNAPSHOT file

CI.10> DL SNAP.SNP,!
directory ::DAN 
    name   ex ba tmp  prot type msize blks words recs rlen  addr/lu
  
SNAP.SNP    *  *     rw/r     3    48  144 16384  139  126 32516/15
create time   Thu Sep 25, 2025 11:50:00 am
access time   Thu Sep 25, 2025 11:50:01 am
update time   Thu Sep 25, 2025 11:50:01 am

You can test the new file by linking directly against it rather than the system SNAPSHOT file using the SN command in link.

These are the original LINK commands that manually specify the Fortran libraries:

REL W256BS.REL
SE /LIBRARIES/$FNEWF.LIB
EX

To test the new SNAPSHOT file, I use

SN /DAN/SNAP.SNP
REL W256BS.REL
EX

Once I’m sure the new SNAPSHOT file is good, then it is just a matter of moving it into place. I will name the old one .ORG to remind myself this is the one that came with the system.

CD /SYSTEM
CO SNAP.SNP SNAP.ORG
CO /DAN/SNAP.SNP SNAP.SNP D

Lastly, I will test linking using the system SNAPSHOT file by not specifying any additional libraries:

REL W256BS.REL
EX

That links fine along with some other Fortran code I wrote, so I believe the new SNAPSHOT file is valid.

 

dantheman60
http://bigdanzblog.wordpress.com/?p=4492
Extensions
Transferring Files INTO/OUT OF a SIMH HP 1000
c-retroHP1000
As I experiment with the SIMH HP 1000, I need to move files into and out of it. So far I’ve only been able to transfer ASCII files using a terminal emulator and cut/paste OR using SIMH tape images created … Continue reading →
Show full content

As I experiment with the SIMH HP 1000, I need to move files into and out of it. So far I’ve only been able to transfer ASCII files using a terminal emulator and cut/paste OR using SIMH tape images created by another HP 1000.

I had hoped to get KERMIT running on the HP 1000 to allow file transfers between PC and HP 1000. Unfortunately the HP 1000 configuration I have does not have a RS-232 Multiplexer installed and KERMIT will only work with mux ports. After reviewing the process, reconfiguring the hardware is probably beyond my ability.

Setting Up QCTerm

The HP 1000 requires you use an HP Terminal, which you can do with the QCTerm emulator (or Reflections if you spent a lot of time around HPs). The flow control used by the HP 1000 (enquire /acknowledge) allows you to paste huge amounts of ASCII data into the HP 1000 and it isn’t going to overflow the HP 1000.

You can download QCTerm from

https://www.hpmuseum.net/display_item.php?sw=585

Once installed, you need to get the Telnet connection configured. You need to know the port that SIMH is listening for connections. This is found in the SIMH config file. The config file I use is RTE-6VM.SIM. Within that file look for the ATTACH BACI command:

attach BACI 1050

This configuration is listening on TCP Port 1050. Here is my QCTerm Connection config:

In QCTerm, click Connection | Connect and it will connect to the SIMH HP 1000:

<127.0.0.1 contacted>

Connected to the HP 2100 simulator BACI device

Press ENTER then enter MANAGER.SYS for LOG-ON and (probably) HP for the password:

PLEASE LOG-ON: MANAGER.SYS
PASSWORD ?

Using stack file CI.STK::2
CI.10>

There are many instances where you will need to issue control characters to the HP 1000. QCTerm uses several control characters internally which means you will not be able to transmit those control character to the HP 1000. For example, control-D means “end of input” when reading a terminal to the HP 1000 but means “do same find again” to QCTerm. You will need to disable local processing of control characters.

Click on Terminal, then click on Transmit Control Characters to Host :

In Terminal | Preferences, I suggest enabling Caps Only Mode and Block Cursor. It will make using the HP 1000 and QCTerm a little easier.

Transferring ASCII File OUT of the HP 1000 using QCTerm

The easy way to Transfer an ASCII file on of the HP 1000 is to simply display it on your terminal, then copy and paste it to an Editor.

Here I LIST the Fortran source file, W256BS.F77, so I can see the entire file.

NOTE: if the output is more than one page, LI will stop and ask More [n%]…When you see this, just press ENTER and the rest of the text is dumped.

CI.10> LI W256BS.F77
$FILES 1,4
      PROGRAM W256BS
C     Write 256 bytes (0-255) to a binary file, one at a time.
  
      CHARACTER*1 BYTE
      INTEGER I
  
C     Open as direct access with 1-byte records
      OPEN(UNIT=10, FILE='TESTY.B', STATUS='NEW',
     &     FORM='UNFORMATTED')
  
      DO 100 I = 1, 256
         BYTE = CHAR(I-1)
         WRITE(10) BYTE
 100  CONTINUE
  
      CLOSE(10)
      END

Using your mouse, select the text you wish to copy. Since all control characters are sent to the HP 1000, the only way to copy the text is with Edit | Copy. Now paste into the Editor.

Transferring ASCII Files Out of the HP 1000 Using Paper Tape Punch

You can only copy / paste as much data as QCTerm can buffer in memory. I haven’t hit that limit, but it is almost certainly there.

The alternative to QCTerm is writing the file to the Paper Tape Punch which is the same as writing it to a file on your PC.

To mount a paper tape and assign it to a physical file on your PC, use the attach command. Here I will attach the paper tape punch (ptp) to a file called W256BS.TXT:

<<control-E to get scp prompt>
scp> att ptp -n w256bs.txt
PTP: creating new file

-n means create a new file. It is a very good idea to always to this with the paper tape punch. If you accidentally write onto an existing file and your output is shorter than the old data, the old data will be left in the file.

We need to know which LU (Logical Unit) the PTP is assigned to. Use the LUPRN command for that:

CI.10> LUPRN

                      RTE-6 System Device Configuration
                 RTE-6 System rev =  6200  LUPRN's rev =6000
             3:53 PM WED., 24 SEPT, 2025...Sorted by Session LU
  Time Base (11B)  Priv. Fence SC (none)  Partitions (8)  Memory size (256K)
 
 SLU LU  EQT,sc SCD Flags AV T.out  Stats  Driver DP Device Name      LU  SLU
 --- --- ------ --- ----- -- ------ -----  ------ -- ---------------- --- ---
   1  10  10    15B  B S   2 300.00    2B  DVR05  32 BACI card         10   1
   2   2   1    12B D  S                   DVA32   2 HPIB(Amigo) Disk   2   2
   4   4   4    20B  B S       5.00        DVR02   2 Papertape Punch    4   4
   5   5   5    17B    ST      5.00    1B  DVR01   2 Papertape Reader   5   5

With the paper tape in the punch,  tell the HP 1000 to copy the file to the paper tape punch with the COpy command:

CI.10>CO W256BS.F77 4
Copying W256BS.F77 to 4 ... [ok]

Ddetach the file from the paper tape punch and have a look at it with the editor of your choice:

<<press control-E to get SCP prompt>>
scp> det ptp

Transferring ASCII Files Into the SIMH HP 1000 Using QCTerm

Again, the easiest way to do this is via QCTerm. I really don’t think there is a limit to the amount of text you can load into the HP 1000 this way, but should it fail, I’ll discuss using the paper tape reader below.

Open the file you wish to transfer to the HP 1000 with a text editor, then select and copy the desired text.

With the text in the clipboard, go to QCTerm, and type the following HP 1000 command to copy from LU 1 (the terminal) to a file called TEST.IN

CI.10> CO 1 TEST.IN
Copying 1 to TEST.IN ...

At this point, the HP 1000 is waiting for input from the terminal to copy into the output file, TEST.IN. In QCTerm, use Edit | Paste to begin the paste.

...

 100 CONTINUE

CLOSE(10)
END

Once the paste is complete, the HP 1000 waits for more input. To tell it you are done, press control-D. The HP 1000 responds with:

[ok]
CI.10>

and if you LIst the contents of TEST.IN:

CI.10> LI TEST.IN
$FILES 1,4
      PROGRAM W256BS
C     Write 256 bytes (0-255) to a binary file, one at a time.
  
...
      CLOSE(10)
      END

Transferring ASCII Files Into the SIMH HP 1000 Using Paper Tape

In this case, we will attach a PC’s ASCII file to the paper tape reader, then copy that into a file on the HP 1000.

Attach the file W256BS.TXT to the paper tape reader:

scp> att ptr w256bs.txt

Copy the paper tape to the file TEST.IN and then take a look at it:

CI.10> CO 5 TEST.IN
Copying 5 to TEST.IN ... [ok]
CI.10> LI TEST.IN
$FILES 1,4
      PROGRAM W256BS
C     Write 256 bytes (0-255) to a binary file, one at a time.
...  
      CLOSE(10)
      END

Transferring Binary Files

Transferring binary files proved to be a little trickier, but it isn’t too bad.

Transferring Binary Files Out of the SIMH HP 1000 using Paper Tape

The easiest way to get binary data out of the HP 1000 is by writing it on paper tape. Like punching ASCII data, the file on the PC will be correct without any further processing.

I have a test data file that contains 256 bytes, 0 through 255. That will be used for the test transfer.

LI -H TESTY.B
00 |
01 |
02 |
03 |

Mount a paper tape on the punch

scp> att ptp -n testyb.ptape
PTP: creating new file

and copy the file to paper tape using the B (binary) option

scp> att ptp -n testyb.ptape
PTP: creating new file

Detach the paper tape

scp> det ptp

and review the PC file, testyb.ptape

Transferring Binary Files Into the SIMH HP 1000 Using Mag Tape

You would think that one could just transfer binary data back into the HP 1000 the same way, on paper tape. The HP 1000 can boot from paper tape, which is binary data, so that seems the logical conclusion; however, every attempt I have made fails with an I/O error.

After many failed attempts to get binary data into the HP 1000, the only way that is successful is to do so via magnetic tape.

To do this requires writing your data file into a SIMH magnetic tape file using mksimtape. I covered mksimtape here

Installing Software from the HP 1000 Contributed Software Library into a SIMH HP 1000

Given the same testyb.ptape file I created on my PC above, I will first put it into a SIMH tape container using mksimtape:

mksimtape.exe testyb.ptape >testyb.tape
Writing file testyb.ptape with block size 10240

If you were to examine testyb.tape, you would see a 4 byte header, the data block, and a lot of unused bytes (mksimtape wrote 10240 bytes into the block).

Mount the SIMH tape

scp> att msc0 -r testyb.tape
MSC: unit is read only

-r mounts the tape read only so I don’t accidentally overwrite it.

Using the COpy command, copy the tape to the file named TEST.IN and then examine it. (LU 8 is the mag tape, see the LUPRN command above)

CI.10> CO 8 TEST.IN B
Copying 8 to TEST.IN ... [ok]
CI.10> LI -H TEST.IN
 
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11      |
12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23      |               !"#
24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35      |$%&'()*+,-./012345
36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47      |6789:;<=>?@ABCDEFG
48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59      |HIJKLMNOPQRSTUVWXY
5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B      |Z[\]^_`abcdefghijk
6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D      |lmnopqrstuvwxyz{|}
7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F      |~
90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1      |
A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3      |
B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5      |
C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7      |
D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9      |
EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB      |
FC FD FE FF                                                |

Moving TAR Files To/From the SIMH HP 1000

Supposedly, one can move TAR files in/out of the HP 1000. I have found this to be very flaky, but I will mention it in case anyone else goes looking for information on doing so.

The HP 1000 utility, FST, is capable of writing tape in TAR format. The only manual I can find with a full explanation of FST is in the RTE-A manual set, but the same program runs in RTE-6/VM:

https://archive.org/details/bitsavers_hp1000RTEAp_1174677

I have only been able to transfer ASCII files into an HP 1000 TAR tape. The manual states certain files are ‘converted’ to Unix format and others aren’t depending on the TAR option selected. I’ve went thru every option and none of them create a binary file that is in the same format on the PC as it was on the HP 1000.

CI.10> DL W256BS.@,*
directory ::DAN 
     name   ex  prot type blks words recs
  
TESTY.B        rw/r     4   24   768   25
W256BS.F77     rw/r     3    2   226   18
W256BS.LOD     rw/r     4    1    26    3
W256BS.LST     rw/r     4    4   452   26
W256BS.REL     rw/r     5    4   378    8
W256BS.RUN     rw/r     6   66  8448   66

If I look at the files above, only W256BS.F77, W256BS.LOD, and W256BS.LST can be TARred because only they are ASCII files. We will be using the TAR ASCII option which will convert files with type >=3 to a Unix format. Note that all of the above binary files are of a type > 3 and will be converted as well so they will be wrong on the receiver’s side.

To create a TAR tape of the above ASCII file, mount a new mag tape:

scp> att msc0 -n tar.tape
MSC: creating new file

Run FST, mount the tape, and enable TAR mode:

CI.10> FST
Rev.6200 <941117.0113>
Use ? for help.
FST> MT 8
FST> TAR A

Using the BACKUP command, indicate the ASCII files to be TARred then use the GO command to perform the actual action

FST> BA W256BS.F77
1 files selected; 1 total
FST> BA W256BS.LOD
1 files selected; 2 total
FST> BA W256BS.LST
1 files selected; 3 total
FST> GO

Unknown archive format

Do you want to write over this archive (Y/N)? Y
Copying W256BS.F77:::3:2:31
Copying W256BS.LOD:::4:1:12
Copying W256BS.LST:::4:4:39

3 files selected.
3 files saved.

FST> EX

Detach the tape

scp> det msc0

Remove TAR file from the SIMH tape container

rawtap -e tar.tape
mv 00001.dat tar.tar

See the end of this post regarding rawtap.

Extract files

tar xf tar.tar

Examine the files with an editor and you should see them all properly formatted for a Unix system (LF only not CR/LF like Windows likes).

Moving TAR files from a PC to the SIMH HP 1000 is about reverse of the above. Again, you can only transfer ASCII files. Here I will TAR and xfer the single file w256bs.txt (fortran source code).

Put the file into a tarball and convert the tarball to a SIMH tape (w256bs.tape)

tar cf w256bs.tar w256bs.txt
mksimtape w256bs.tar >w256bs.tape

mount the tape

scp> att msc0 -r w256bs.tape
MSC: unit is read only

Open the TAR tape and get a file listing on the SIMH HP 1000

CI.10> FST 
Rev.6200 <941117.0113>
Use ? for help.
FST> MT 8
FST> DL

Format : TAR POSIX Version 00

File paths and names Update Times

File

W256BS.TXT Wed Sep 24, 2025 8:57:07 pm

Finally, REstore the file and examine it:

FST> RESTORE @
FST> GO

Format : TAR POSIX Version 00

Copying W256BS.TXT:::4:4

1 files restored.
FST> EX
CI.10> LI W256BS.TXT
$FILES 1,4
PROGRAM W256BS
C Write 256 bytes (0-255) to a binary file, one at a time.
...
CLOSE(10)
END
CI.10>

rawtap Utility

The mksimtape will create a SIMH tape file, but can’t extract files from them. I found the utility program rawtap which will move files both into and out of a SIMH tape. The repository is at

https://github.com/simh/simtools

Using MSYS2 on my PC (a PC-based Linux environment), download the file and unzip it

wget https://github.com/simh/simtools/archive/master.zip
unzip master.zip
cd simtools-master/extracters/rawtap
make
gcc -O2 -Wall -Wshadow -Wextra -pedantic -Woverflow -Wstrict-overflow -o rawtap rawtap.c tapeio.c
tapeio.c: In function ‘verifyFormat’:
tapeio.c:295:50: warning: comparison of integer expressions of different signedness: ‘off_t’ {aka ‘long long int’} and ‘long long unsigned int’ [-Wsign-compare]
295 | if ((position + bc + (2 * sizeof(meta))) > (unsigned long long)stat.st_size)
| ^

Make sure it runs

rawtap
Usage: rawtap -cae container [-r len] [...]

Create new container and append file(s):
rawtap -c container [-r len] file ...

Append file(s) to an existing container:
rawtap -a container [-r len] file ...

Extract files from container(s):
rawtap -e container ...
- Extracted files will be name 00001.dat, 00002.dat etc


Switches:

-r len - Specify max tape record size (1 <= len <= 65536)
The record size applies to all following files and
there may be several "-r nnn" present on the command line.
The default record size is 10240 bytes.

I’ve put the Windows EXE version into the following ZIP file

https://drive.google.com/file/d/1nBQBN5NZ0Dm5cnoKx-Hdr7XBQJav3Ubi/view?usp=sharing

 

dantheman60
http://bigdanzblog.wordpress.com/?p=4456
Extensions
Installing Software from the HP 1000 Contributed Software Library into a SIMH HP 1000
c-retroHP1000
The University of Stuttgart, Germany, hosts an extensive Contributed Software Library (CSL) for the HP 1000. You can get to it here: https://computermuseum.informatik.uni-stuttgart.de/dev/hp1000/rtecsl/RTE/index.html If that goes offline, it has been replicated by The Wayback Machine at archive.org. Just enter the … Continue reading →
Show full content

The University of Stuttgart, Germany, hosts an extensive Contributed Software Library (CSL) for the HP 1000. You can get to it here:

https://computermuseum.informatik.uni-stuttgart.de/dev/hp1000/rtecsl/RTE/index.html

If that goes offline, it has been replicated by The Wayback Machine at archive.org. Just enter the above URL.

My goal is to see if I can get the KERMIT file transfer program running on the HP 1000. I found several with versions designed for the HP 1000. The problem is I don’t have a way to get binary files onto the HP 1000 yet – which is the reason I’m looking at KERMIT to begin with!

Looking at the CSL, I found KERMIT and could download the files to my PC, but I have no idea how to get them into the SIM HP 1000. All of the instructions I can find assume you have the files mounted on a real tape drive.

Creating a SIMH Compatible Tape

After a little poking around, I found the source code to a program that, given a list of files, would create a SIMH TAPE file/container. The program, mksimtape, can be found here:

https://github.com/simh/simtools/tree/master/converters/mksimtape

I have MSYS2 installed on my PC, so compiling the program was a snap:

cd /c/tmp/mksimtape/
gcc mksimtape.c -o mksimtape.exe
mksimtape
mksimtape: at least one file must be specified
mksimtape: make SIMH tape image
Synopsis: mksimtape file ...

The tape image is written to standard output.

A block size of 10240 is assumed for each file. A different block size
may be specified by adding it to the end of the filename, separated by a
colon; e.g.:
              stand:512

This is version 1.0

I have created a zip file of the source and EXE here. Google has disabled EXE files I’ve shared in the past so no guarantee this will actually download for you:

https://drive.google.com/file/d/1cwSfQajMJ07s_e-MS02Rek3RhzmQQ4ty/view?usp=sharing

Downloading the Contribution

Now that a SIMH compatible tape can be made, let’s get the files from the CSL.

The first step is to look thru the index of contributions. The CSL Index is here

https://computermuseum.informatik.uni-stuttgart.de/dev/hp1000/rtecsl/RTE/contr.html

Looking for KERMIT there are multiple entries:

The most recent KERMIT contribution is 4230 B009. If you click on that link, you will see details of the contribution.

After reviewing the various KERMIT contributions I decided to download the 2830 M077 version as it has relocatable code for RTE-6/VM meaning I should not have to recompile all of the source code, just link it.

The contribution is named 2830 M077. That means it is in CSL Release 2830, contribution M077. Go back to the CSL main page and select the CSL Release:

After clicking on the CSL Release 2830, you will see a list of all of the contributions in that release of the CSL. I want contribution M077, so I search for that:

Just click on the rev2830_m077.fst file to download it. Once the file is downloaded, I moved it to the directory where my HP 1000 SIMH and mksimtape.exe resides, and then renamed it to kermit.fst to make referencing the file name a little easier.

Creating a SIMH Compatible Tape

kermit.fst must be converted to kermit.tape, a SIMH compatible tape.

mksimtape kermit.fst >kermit.tape
Writing file kermit.fst with block size 10240

Copying the CSL Files into the HP 1000 Simulation

The CSL files are stored on the tape in FST format which can be read by the FST program. We will use that program to copy the files from tape to disk.

The only manual for FST I can find is for RTE-A (not RTE-6/VM), but it is close enough:

https://archive.org/details/bitsavers_hp1000RTEAp_1174677

At this point, I assume you have your SIMH HP 1000 running, and also have CI access either through the console (by typing “EN,RT” at the * prompt) or have a terminal emulator connected via Telnet to the HP 1000.

At the console, type control-e to get the scp prompt and attach the tape file, readonly, to tape drive unit 0:

scp> att msc0 -r kermit.tape
MSC: unit is read only

Now, at the CI prompt create a subdirectory for the files, if you don’t already have one. I want my files to end up in /CSL:

CI.10> CRDIR /CSL
CI.10> CD /CSL

Next we will run the FST program and mount the tape with the MT command. This example assumes the tape drive is on logical unit (LU) 8. If not, type LUPRN to see the LU table to determine the LU of your tape drive.

CI.10> FST
Rev.6200 <941117.0113>
Use ? for help.
FST> MT 8

Now use the DL command to list all of the files on the tape

FST> DL
 
  Format     :  FST
  Title      :  REV_2830/M077/
  Created    :  Mon Apr 24, 2000  8:56:11 pm
 
File paths and names                        Update Time or Owner
 
File from directory REV_2830/M077/
 
KERMIT.SBMT:::4:14:39                       Fri Jan 26, 1990  6:30:31 am
*COPY:::4:29:40                             Fri Jan 26, 1990  6:30:35 am
*INFO:::4:123:39                            Fri Jan 26, 1990  6:30:39 am
ADDENDUM:::4:68:38                          Fri Jan 26, 1990  6:30:43 am
PROTO.DOC:::4:943:42                        Fri Jan 26, 1990  6:30:51 am
USER.DOC:::4:2950:40                        Fri Jan 26, 1990  6:31:09 am
KCMNDS.FTNI:::4:4:36                        Fri Jan 26, 1990  6:31:12 am
KCONCW.FTNI:::4:2:37                        Fri Jan 26, 1990  6:31:16 am
KERCMD.FTNI:::4:3:36                        Fri Jan 26, 1990  6:31:19 am
KERCNF.FTNI:::4:11:38                       Fri Jan 26, 1990  6:31:22 am
KERCOM.FTNI:::4:9:39                        Fri Jan 26, 1990  6:31:26 am
KERDBG.FTNI:::4:3:37                        Fri Jan 26, 1990  6:31:30 am
KERFIL.FTNI:::4:7:38                        Fri Jan 26, 1990  6:31:34 am
KERSTA.FTNI:::4:3:38                        Fri Jan 26, 1990  6:31:37 am
KERMIT.ISTL:::4:25:38                       Fri Jan 26, 1990  6:31:41 am
K6SUBS.FTN:::4:114:38                       Fri Jan 26, 1990  6:31:45 am
KASUBS.FTN:::4:84:38                        Fri Jan 26, 1990  6:31:49 am
KERMIT.FTN:::4:735:39                       Fri Jan 26, 1990  6:31:56 am
$K6SUBS.LIB:::5:94:128                      Fri Jan 26, 1990  6:32:00 am
$KASUBS.LIB:::5:79:128                      Fri Jan 26, 1990  6:32:04 am
KERMIT.LOD:::4:1:27                         Fri Jan 26, 1990  6:32:08 am
KERMIT.REL:::5:743:128                      Fri Jan 26, 1990  6:32:15 am
KERMIT.HLP:::1:90:128                       Fri Jan 26, 1990  6:32:19 am
KERMIT.TEXT:::4:90:39                       Fri Jan 26, 1990  6:32:23 am

Up near the top of the listing, it tells you the directory where it will restore the files:

File from directory REV_2830/M077/

Now we tell it which files to restore with the RESTORE command. Once all of the files you want to restore are selected, then use the GO command to do the restore

FST>RESTORE @
24 files selected; 24 total
FST> GO
 
  Format     :  FST
  Title      :  REV_2830/M077/
  Created    :  Mon Apr 24, 2000  8:56:11 pm
 
Copying REV_2830/M077/KERMIT.SBMT:::4:14:39
 Creating path for: REV_2830/M077/KERMIT.SBMT:::4:14:39
Copying REV_2830/M077/*COPY:::4:29:40
Copying REV_2830/M077/*INFO:::4:123:39
Copying REV_2830/M077/ADDENDUM:::4:68:38
Copying REV_2830/M077/PROTO.DOC:::4:943:42
Copying REV_2830/M077/USER.DOC:::4:2950:40
Copying REV_2830/M077/KCMNDS.FTNI:::4:4:36
Copying REV_2830/M077/KCONCW.FTNI:::4:2:37
Copying REV_2830/M077/KERCMD.FTNI:::4:3:36
Copying REV_2830/M077/KERCNF.FTNI:::4:11:38
Copying REV_2830/M077/KERCOM.FTNI:::4:9:39
Copying REV_2830/M077/KERDBG.FTNI:::4:3:37
Copying REV_2830/M077/KERFIL.FTNI:::4:7:38
Copying REV_2830/M077/KERSTA.FTNI:::4:3:38
Copying REV_2830/M077/KERMIT.ISTL:::4:25:38
Copying REV_2830/M077/K6SUBS.FTN:::4:114:38
Copying REV_2830/M077/KASUBS.FTN:::4:84:38
Copying REV_2830/M077/KERMIT.FTN:::4:735:39
Copying REV_2830/M077/$K6SUBS.LIB:::5:94:128
Copying REV_2830/M077/$KASUBS.LIB:::5:79:128
Copying REV_2830/M077/KERMIT.LOD:::4:1:27
Copying REV_2830/M077/KERMIT.REL:::5:743:128
Copying REV_2830/M077/KERMIT.HLP:::1:90:128
Copying REV_2830/M077/KERMIT.TEXT:::4:90:39
 
         24 files selected.
         24 files restored.

Finally, I exit the FST program (EX command), and CD to the proper directory to verify all files are there:

CI.10> CD REV_2830/M077
CI.10> PWD
/csl/rev_2830/m077
CI.10> DL @,*
directory /CSL/REV_2830/M077 
      name    ex   prot   type blks  words  recs
  
$K6SUBS.LIB      rw/rw/rw    5   94  11904   211
$KASUBS.LIB      rw/rw/rw    5   79   9984   163
*COPY            rw/rw/rw    4   29   3641   120
*INFO            rw/rw/rw    4  123  15691   469
ADDENDUM         rw/rw/rw    4   68   8663   356
K6SUBS.FTN       rw/rw/rw    4  114  14508   672
KASUBS.FTN       rw/rw/rw    4   84  10668   474
KCMNDS.FTNI      rw/rw/rw    4    4    440    18
KCONCW.FTNI      rw/rw/rw    4    2    247    12
KERCMD.FTNI      rw/rw/rw    4    3    365    14
KERCNF.FTNI      rw/rw/rw    4   11   1384    47
KERCOM.FTNI      rw/rw/rw    4    9   1150    40
KERDBG.FTNI      rw/rw/rw    4    3    256    10
KERFIL.FTNI      rw/rw/rw    4    7    816    26
KERMIT.FTN       rw/rw/rw    4  735  93985  4478
KERMIT.HLP       rw/rw/rw    1   90  11520    90
KERMIT.ISTL      rw/rw/rw    4   25   3168   102
KERMIT.LOD       rw/rw/rw    4    1     62     6
KERMIT.REL       rw/rw/rw    5  743  95016  1827
KERMIT.SBMT      rw/rw/rw    4   14   1766    55
KERMIT.TEXT      rw/rw/rw    4   90  11467   473
KERSTA.FTNI      rw/rw/rw    4    3    379    15
PROTO.DOC        rw/rw/rw    4  943 120584  4644
USER.DOC         rw/rw/rw    4 2950 377563 15353

KERMIT has been restored to my HP 1000 and I’m ready to try to get it running.

 

dantheman60
http://bigdanzblog.wordpress.com/?p=4433
Extensions
Playing Adventure (a.k.a. Colossal Cave) on the HP 1000 Computer System
c-retroHP1000interactive fiction game
In the spring of 2025, Robert Robichaud approached me about trying to get a version of Adventure running that had been modified to run on the HP 1000 along with making some customizations to the game. I had wanted an … Continue reading →
Show full content

In the spring of 2025, Robert Robichaud approached me about trying to get a version of Adventure running that had been modified to run on the HP 1000 along with making some customizations to the game.

I had wanted an opportunity to play with an HP 1000 back in the 1980s, but never had the chance. This would give me a reason, albeit 40 years later, to learn the ins and outs of the HP 1000. Challenge accepted!

History of the HP 1000 Version of Adventure

Robert is an Adventure Historian and provides a lot of history to the HP 1000 (a more common model # for the HP-21 MXE) version of this game:

In September, 1978 someone at the Haystack Observatory, M.I.T., going only by the name of “Beasley”, modified Bob Supnik’s Fortran IV port of Adventure to run on an HP-21 MXE system, and in doing so added a couple of new rooms, puzzles and treasures (all in an a tongue-in-cheek “adult” style), bringing the points total up to 385 , thus creating one of the earliest extensions of the original game. After a final edit in February, 1979, this version then seems to have spread widely around to the various facilities using HP1000 series minicomputers, until sometime in the early ’80s another programmer, Tim London, working in London (yes, a guy named London, working in London) for an entity known as UKSL, took it and added several more rooms, items, puzzles and two additional treasures, bringing the points total up to 425. In the meantime, other versions based on the Beasley code were spreading around on these systems, some of which seem to be lost now. By the mid ’80s, the London 425 version had made it back across the pond, where at least two different guys (one at a US Navy facility and one at AT&T) attempted to clean it up and iron out some bugs between around 1985 to 1987. That seems to be the last it was heard of, until a few of these files were preserved and archived around 20 years ago, lying dormant in complete obscurity ever since in a German-based HP file archive, save for one abortive attempt to get something running on a simulator by HP1000 enthusiast Terry Newton a number of years ago.

Aside from the inherent historical interest, figuring out “Beasley”‘s true identity was one of the most fascinating parts of this game preservation project. After striking out on any direct name references at MIT, I started looking up Haystack Observatory-related papers from the ’70s, and noticed that the telescope operator there was named B.G. Leslie. Rolling it around a bit, I figured that Beasley could have been a nickname for that, but all of the papers only used his initials. Testing out various “B” names, I finally hit on something in the MIT Technology Review that mentioned Bruce G. Leslie, a Massachusetts native and MIT graduate, class of ’69. That led me to another Technology Review blurb, which comically synced right up with his game’s “sex, drugs and rock & roll” type of content. From the 3/71 issue, Class of ’69 column:

“The task of writing this monthly column can become most difficult (or perhaps easiest for me) when I don’t have any material or information to Include in It. When Bruce G. Leslie noticed that I had missed the January issue, he sent me the following letter which I reprint here for your entertainment and enlightenment.

‘Last night my monthly Tech Review arrived and I thumbed eagerly to the last page to see what my classmates were up to. Apparently, not much, since the magazine ended with Gail and Mike Marcus. ‘What’s the matter with that secretary of ours?’ I thought. ‘Who the hell is he anyway?’ Suddenly a small blue dwarf emerged from my bedroom and pointed his finger accusingly. I guess you need news, huh? Well, here’s my first installment.

Two days after graduation I arrived eagerly in Pittsburgh to join Westinghouse. After shaving my beard and going straight for six months to fool both my boss and the draft board, I quit in frustration and discovered I had enough money to survive a while without getting up in the morning. Then, while debating once again the draft, the FANTASTIC lottery came along and bestowed upon my birthdate the number 317. I stopped looking for defense work. In fact, I stopped looking for work entirely and drove to Florida, Mardi Gras, and St. Louis. Eventually, I made it back to Boston (home was then New York) and, while on an excursion to Headquarters East, I ran into my undergraduate advisor, Professor Burke. The rest is history.

Oh, you didn’t major in history? I’ll continue. The good professor told me of a job opening at Haystack Observatory, the radiotelescope formerly operated by Lincoln Labs and now a part of the Institute. As an off-shift operator, I still don’t have to get up in the morning and no one hassles me about my beard, long hair, or bells. The eight months I’ve spent there seem shorter than any single month with the M-l Complex. In short, it’s a great life. My hours do put a crimp in my woman-chasing style (I’m still single) but any hours at all would put a crimp on my woman-chasing style. After furnishing my apartment and my car, I’m looking for ways to spend money. I think upgrading my stereo is in order. And I think now I can buy a pair of pliers and crush that dwarf…’

I thank Bruce for his letter and hope that the rest of our classmates will realize that the responsibility for writing this column is a joint project between themselves and myself. Send me a note or card when you get the chance or else that blue dwarf may begin to appear In this column.”

This all seemed too perfect to me, so I went back to the code and finally hit paydirt. In a few of the versions, in addition to the Beasley stuff, there was this:

“THIS IS THE “INIT” SEGMENT FOR THE HP MODIFICATION OF ADVENTURE. MODIFIED BY BGL, HAYSTACK OBSERVATORY. ”

Bingo! “Beasley” = BGL = Bruce G. Leslie, former hippie and longtime engineer/programmer/telescope operator at Haystack Observatory. Final confirmation came when I found these posts from 2013 on a model railroad hobbyist message board, where he had been very active since 2006 as “MisterBeasley”. Another member was posting updates on text adventures he was writing in BASIC on his old Apple II for fun. This prompted several exchanges with Leslie, including these reminiscences:

“Jeffrey, what you’re doing reminds me of the old Adventure game. A friend got me a copy of the original FORTRAN source code for a PDP-11. Since our PDP-11 was not generally available, I ported it over to a Hewlett-Packard HP-1000 system, which had time available. I spent a lot more time modifying the code to run on a different system than I ever did playing the game, but then again, I spend more time doing scenery on my layout than I do running trains, so it should be no surprise.

You are in a maze of twisty little passages, all alike…

Hmmmm…”

“That’s the one. The original “Adventure” was written for a DEC (Digital Equipment Corporation) PDP-11. We had one of those at work, and a friend gave me a copy of Adventure. Back then, these things were passed around for free. There were no licenses, and maybe not even any copyrights. The story I heard was that the authors wrote the game with the intention of using it to study how people approached the problem-solving required.

Being a software geek and an engineer, my approach was simple: It was necessary to take it apart, see how it worked and make it better. So, I took the source code (yes, my friend gave me that, too) and “ported” the program to a different computer, an HP 1000 from Hewlett Packard. Once I did that, a process which taught me a lot about both computers, I added a couple of more rooms and puzzles.

This one silly game, full of trolls, dwarves and giants, led to the computer fantasy world we know today.”

“Wikipedia has a page for the original Adventure game:

http://en.wikipedia.org/wiki/Colossal_Cave_Adventure

The article kicked in another memory. The original author, Will Crowther, was married to Patty Crowther, an astronomy type who worked at the same place I did (Haystack Observatory in Massachusetts) but before my time. She was an avid spelunker, and was credited with finding a link between two cave systems in the Appalachians that made them the largest connected system in the world. It was her diminutive stature that allowed her to squeeze through the maze of twisty little passages and boldly go where no man had gone before.

Yesterday, I had an image in my mind of an explorer with an axe, along with a troll and some of the other adversaries, and the caption “Play Adventure on a computer near you.” I realized that it was the picture on a T-shirt I once owned. It was so long ago, though, that even Google couldn’t find it.”

Earlier posts confirm his identity as Bruce G. Leslie, MIT Class of ’69.

Notes about the HP 1000 Simulation

This post is about Adventure, not getting an HP 1000 running so I will omit most of the several months of trial and error spent trying to learn how to get the HP 1000 running and create working environment system capable of compiling Fortran programs. I will only detail those changes necessary to get the game running.

I am going to provide you with a single zip file that has everything necessary to run the game below, but if you want to learn more about the HP 1000 simulation here are some useful resources:

● HP1000 RTE-6/VM Manuals
https://www.hpmuseum.net/exhibit.php?hwdoc=519

● SimH, the HP 1000 Simulation Tool
https://simh.trailing-edge.com/hp/#Downloads

● The HP1000 SimH Manual
https://opensimh.org/simdocs/hp2100_doc

● The HP 1000 RTE-6/VM Operating System on a Simulated HP Disk Drive:
https://hpmuseum.net/display_item.php?sw=566

If you want to use the HP 1000 O/S supplied by the HP Museum above, you must convert the image to little endian format per the instructions mentioned on the website:

A SIMH command file is included to configure the simulator and boot the disc image. However, note that SIMH requires the disc image to be in little-endian format, whereas the 7920H and HPDrive require big-endian format. Therefore, the supplied image must be byte-swapped before it can be used with SIMH. The Unix “dd” command, e.g., may be used for this:

dd if=RTE-6VM-SYSTEM.U0.7920H.disc of=RTE-6VM-SIMH.U0.7920H.disc conv=swab status=noxfer

● Video of Booting a Real HP 1000
https://www.youtube.com/watch?v=nWJoUVBR9CY

● All HP 1000 Software Products
https://bitsavers.org/bits/HP/HP_1000_software_collection/products/index.html

● If you want to really use RTE-6/VM, you need to use an HP terminal emulator. The command stack (redo) and screen editor both require HP terminals. I imagine other software does as well. If you only intend to run Adventure, you can do without QCTerm.

QCTerm can be found here.
https://www.hpmuseum.net/display_item.php?sw=585

Once QCTerm is installed, and when simh is running, connect to 127.0.0.1, port 1050 with QCTerm. Note that this implementation of the HP 1000 can only support 1 such connection.

● The original source code to this version of Adventure was found here:
https://newton.freehostia.com/net/oldcomp/hpgames/index.html

In the above website, search for “download hpgames.zip”.

This source code was designed to run on an HP 1000 using the RTE-IV O/S (or maybe earlier), and was designed to compile using Fortran IV.

Altering Adventure to Run Under the RTE-6/VM O/S

I found RTE-IV rather difficult to use. It is based on the prior versions of RTE dating back to the 60’s. It is ‘cartridge’ concentric expecting files to be on removable disk cartridges or tape cassette. I spent days having the system corrupt after mounting/dismounting cartridges too often.

While RTE-6/VM can be used in the same manner, it also has a Unix-like shell that supports directories rather than cartridges. I ended up using RTE-6/VM to implement Adventure.

Further, I did not have access to Fortran IV. There was an ‘installed’ version of it in RTE-IV, but I could find no feasible way to move it to RTE-6/VM. This version of RTE-6/VM did not have Fortran 77 installed, but the installation files were present on one of the mounted FMGR cartridges, so I was able to install Fortran 77 to compile Adventure.

To access files in RTE-6’s directory structure all of the I/O calls for RTE-IV’s old FMGR file system had to be replaced with RTE-6’s FMP calls. This was largely a one for one swap. Random Disc access requires a call to FMPSETPOSITION. Finally, FMP I/O is done in bytes, not words so I converted block word lengths to/from byte lengths right before a FMPWRITE or after an FMPREAD.

All of the files for Adventure are in the subdirectory \ADVEN:

#ADVXX        	Fast data file
#ADVYY        	common block save file
#ADVZZ        	Source Data File
ADV01.FTN     	adven, vocab, bug, misc, rand
ADV03.FTN     	adv1, more
ADV05.FTN     	a5t1, vocab, dstry, juggle, move, put, carry, drop, rand, bug
ADV14.ASM     	str func iposq
ADV15.ASM     	randm
ADV24.ASM     	trimq
ADV25.ASM     	ishft
ADV34.ASM     	movqq
ADV44.ASM     	putq
ADV54.ASM     	jascq
ADV64.ASM     	lco
ADVEN.MAP     	link map
ADVEN.RUN     	executable program file
ADVF4.FTN     	spek,  pspek, rspek, getin, yes, yesx
ADVG4.FTN     	many modules
ADVX2.FTN     	adv2
ADVY2.FTN     	adv3
ALL.LIB       	all relocatable subroutines
CI.STK        	command stack (for redo) - a system file
COMPILE.CMD   	command file that will compile everything
IOF.ASM       	iof
IRP.ASM       	irp
LADVEN        	link command file
LINKIT.CMD    	command file that will link adven.run
LINKIT.LOD    	link commands used by linkit.cmd
LINKRET.ASM   	link
MERGEIT.CIN   	merge command file to build all.lib
NARG.ASM      	narg
SUBMIT.TXT    	contributed library submission form
SUSP.ASM      	RTE self-suspend routing
^ADVEN        	original linker cmd file (see submit.txt)

If you wish to recompile the entire source:

CD /ADVEN
COMPILE

Once compiled, the relocatables are linked with the command

LINKIT

I spent hours trying to figure out how to get everything to link. Because overlays are used, every subroutine each overlay needs must be made declared before relocation – no forward references allowed. Even the LINK manual mentions that linking can be a challenge.

I never was actually able to manually link the program. Instead, I put all of the subroutines into a library, ALL.LIB, and that allowed relocation of each overlay to find the externals it needed. LINKIT will create ALL.LIB before calling LINK.

While trying to get Adventure running on Fortran 77, I found several buffer overrun problems.

The O/S assumes file control blocks (IDCB1 and IDCB2) have enough memory allocated based on the number of buffers you use. This caused lots of wasted time trying to understand why the program would just go crazy (due to buffer overruns). Finally, I set both file control blocks to be 144 words (16 words for info + 128 words for a single buffer), then made sure all files were opened with only 1 buffer.

The other problem is how Adventure builds its ‘FAST’ data structure files.

#ADVZZ is the source data file for the game, but the game doesn’t play from this file. Instead, at start up #ADVZZ is read serially and a bunch of data structures are built with pointers referencing a simple random access file, #ADVXX, which contains all of the text.

Rather than build the data structures each time the program is run, on the first run, after #ADVXX and the data structures are built, the program writes all of the data structures to a file, #ADVYY, with a single record containing all of these structures. On subsequent starts, #ADVYY is opened, if present, and the data structures are rebuilt by doing a single read from #ADVYY.

A ‘trick’ is used to make this happen and of course that trick stopped working either because of RTE-6 or Fortran 77.

All of the data structures are kept in Fortran COMMON blocks. The game writer knew the exact length of all of these COMMON blocks and knew which was the first one in memory so he could refer to the first variable in the first COMMON block and then WRITE to #ADVYY to transfer the contents of all of the COMMON blocks to the file.

The order of COMMON blocks changed when I recompiled the program in the RTE-6/Fortran 77 environment. This resulted in bounds violations and buffer overruns when the program attempted to write and read #ADVYY.

For much of testing, I forced the program to rebuild #ADVXX/#ADVYY each time it was started. The game is so fast, this really isn’t a problem.

As I learned more about the game and system, I finally figured out how to see the organization and length of the COMMON blocks. If you peruse the ADVEN.MAP file you will see the COMMON blocks order, location in memory, and length of each block:

Load map:
ADVEN 10012 41. 'OUTERBLOCK'
VOCAB 10063 118.
BUG 10251 47.
...
ABBCM 17706 150. named common
PLACM 20134 551. named common
BLKCM 21203 2. named common
MISCM 21205 872. named common
DCBCM 22755 144. named common
VOCCM 23175 901. named common
MISC2 25002 2636. named common
ALPHS 32116 12. named common
PTXCM 32132 100. named common
TXTCM 32276 258. named common

For this version of RTE, LINK, Fortran the COMMON block ABBCM is the first COMMON block in memory and the length of all of the blocks is 5,626 words. The file is created with a single WRITE (ABB is the first variable in the ABBCM COMMON block):

LEN=FMPWRITE(IDCB1,IERR,ABB,5626*2)

A word of warning regarding this method of writing all COMMON blocks with a single WRITE: While working on this game there was a period of time that the FMP procedures’ global memory block was interspersed with the COMMON blocks. That made using this ‘trick’ impossible as the READ back into COMMON would overwrite the FMP memory corrupting the ability to read/write open files.

In case you want to minimize the number of files to only those absolutely necessary, you can remove everything except #ADVXX, #ADVYY, and ADVEN.RUN.

Those files can be moved to any directory, but they must be in the working directory when you start the program.

Installing the Game

Download the hp1000-adven.zip file found at

https://drive.google.com/file/d/1g9WDHVipAx1Lb5kd4txSkJHoqxcoBWjw/view?usp=drive_link

Unzip into a directory of your choosing. I will be using c:\hp1000-adven.

The new directory should look like this:


Start the DOS box, e.g. CMD.EXE, and CD to the directory you created:

Microsoft Windows [Version 10.0.19045.6093]
© Microsoft Corporation. All rights reserved.
C:\Windows\System32>cd \hp1000-adven
C:\hp1000-adven>

To start the HP 1000 simulation, type HP1000 (you will probably be asked by Windows Defender if you wish to allow access – I suggest you allow or access by QCTerm may fail):

C:\hp1000-adven>hp1000
C:\hp1000-adven>hp2100.exe rte-6vm.sim

HP 2100 simulator V3.12-2 Release 32
Listening on port 1050 (socket 264)

SC Device Interface Description
-- ------ -----------------------------------------------------------
10 (none) 12777A Priority Jumper Card
11 TBG 12539C Time Base Generator Interface
12 DA 12821A Disc Interface
13 MSD 13183B Digital Magnetic Tape Unit Interface Data Channel
14 MSC 13183B Digital Magnetic Tape Unit Interface Command Channel
15 BACI 12966A Buffered Asynchronous Communications Interface
16 TTY 12531C Buffered Teleprinter Interface
17 PTR 12597A-002 Tape Reader Interface
20 PTP 12597A-005 Tape Punch Interface
21 LPT 12845B Line Printer Interface

Booting the system.

The character delete key is BACKSPACE.
The line delete key is DEL.

SET TIME

*TM,2025,253,16,35,30

THE RTE-6/VM SYSTEM IS UP AND RUNNING.

At this moment you are in the 1960’s version of the operating system shell. You need to be in the newer CI shell. Press ENTER to get an asterisk (*) prompt, then type EN,RT and press ENTER two times to get the request to login:

*EN,RT
PLEASE LOG-ON:

The logon id is MANAGER.SYS and the password is HP (case is not significant anywhere on this system):

PLEASE LOG-ON: MANAGER.SYS
PASSWORD ?

SESSION 1 ON 4:41 PM WED., 10 SEPT, 2025
PREVIOUS TOTAL SESSION TIME: 112 HRS., 09 MIN., 47 SEC.

Using stack file CI.STK::2
CI.01>

Now change the directory and start the program:

CI.01> CD /ADVEN
CI.01> ADVEN

Initializing data files and such...

Welcome to Adventure!! Would you like instructions?

>
Suspending the Game

This tip from GSCHMIDL below.

The original HP 1000 Adventure game had a SAVE/RESTORE ability, but I couldn’t get it to function properly. I suspect because the game is now being run on RTE-6/VM.

Even had it worked, it only suspends the process, it doesn’t create a checkpoint file so it doesn’t really help much.

Instead, you can SAVE the entire simulation into a file and just restart the simulation. This is done by using control-break and then the SAVE command:

>S
You are in a 20-foot depression floored with bare dirt. Set into the
dirt is a strong steel grate mounted in concrete. A dry streambed
leads into the depression.

The grate is locked.

>
<<press control-break here>>

Simulation stopped, P: 02040 (JMP 2037)
sim> save SAVE1.DAT
sim> q
Goodbye

To restart the game as it was in SAVE1.DAT, simply start simh (HP2100.exe) manually restore the SAVE file:

c:\hp1000-adven>hp2100.exe

HP 2100 simulator V3.12-2 Release 32
sim> restore save1.dat
Memory size changed: CPU0 = 256KW
Listening on port 1050 (socket 324)
sim> cont

 I don't know that word.

>LOOK
 Sorry, but I am not allowed to give more detail.  I will repeat the
 long description of your location.

 You are in a 20-foot depression floored with bare dirt.  Set into the
 dirt is a strong steel grate mounted in concrete.  A dry streambed
 leads into the depression.

 The grate is locked.

>
Terminating the Simulation

The HP manual indicates the system should not simply be shut down while you are in CI – disk structures may be corrupted. To properly exit:

● Exit Adventure with the Quit command if you are still in it.
● At the CI prompt type EX
● Once you see END OF SESSION, type control-E to get simh’s scp prompt.
● Then type Q to quit it

CI.01> EX
Finished
CI.01 REMOVED

SESSION 1 OFF 4:47 PM WED., 10 SEPT, 2025
CONNECT TIME: 00 HRS., 05 MIN., 43 SEC.
CPU USAGE: 00 HRS., 00 MIN., 00 SEC., 30 MS.
CUMULATIVE CONNECT TIME: 112 HRS., 15 MIN., 30 SEC.
END OF SESSION
<<control-E pressed here>>
scp> q

Simulation stopped, P: 02040 (JMP 2037)
Goodbye

C:\hp1000-adven>

 

dantheman60
http://bigdanzblog.wordpress.com/?p=4410
Extensions
Can’t View/Change Call Forwarding Settings on Android with Consumer Cellular
c-MiscCall ForwardingConsumer Cellular
When I try to change call forwarding settings for my android phone using Phone Settings | Calls, I get Call Settings Error Network or SIM card error I believe this problem is caused when you enable Wi-Fi calling. At least … Continue reading →
Show full content

When I try to change call forwarding settings for my android phone using Phone Settings | Calls, I get

Call Settings Error
Network or SIM card error

I believe this problem is caused when you enable Wi-Fi calling. At least that is how I’m reproducing the error to write this post.

I’ve had this happen in the past, but it happens so rarely I can never remember the trick to fix it and have to look the solution up. Spoiler alert: Cycling WiFi calls and Airplane Mode is the trick. After finding the answer in my copious notes-to-self I figured I should post it this time.

How to Allow Access to the Call Forwarding Settings

  • Go to Phone settings (for me, I go to the phone app, and click on the 3 vertical dots) , you will see:

Select Calls, and in the Call Settings, turn OFF Wi-Fi Calling:

  • Turn Airplane mode ON.
  • Wait 10 seconds.
  • Turn Airplane mode OFF.
  • Go back to Phone Settings | Call Settings
  • Now when you click on Call Forwarding, you should see the proper screen:

  • Don’t forget to turn Wi-Fi Calling back on if you use it.

 

dantheman60
http://bigdanzblog.wordpress.com/?p=4396
Extensions