HPdrive emulation debuggingJack Rubin and Mike Loewen offered help based on yesterday's post, highlighting a typo in the boot loader listing in the 1986 manual, the very one I was using to toggle in the loader. It causes the boot loader to loop and not read properly.
I found the ROM image on bitsavers, downloaded it and listed out the octal contents using a quick and dirty Python program. What I found was that one word of the program was missing in the listing. It was a Skip if Flag Set on the DMA (DCPC) channel and indeed lacking it would cause the errant behavior.
I toggled in the correct bootloader, fired up HPdrive and tried to do a reconfiguration boot. It still didn't come up. My suspicion now was that I was using the wrong S register string - things like which head (surface) to boot from.
I had been using the description in the (bad) source code listing from the 1986 boot loader manual, but I found an alternative chart that was in conflict. Fortunately, I have the HP 2100 simulator. Normally you boot using a simplified simulator command boot DA0 to boot from the disk attached to DA0. However, the real hardware does not have that command.
I modified my Python program to output the contents of the boot loader ROM as simulator commands, e.g. deposit 077700 102501 so that I could test out the exact code and settings I would use on the real machine.
After a number of failed attempts on the simulator, I found the magic incantation to boot up RTE IVB from the disk image I have using the boot loader code. I had to set the S register to 051400 (or 051440 if I wanted to run the reconfiguration). Knowing that, I went out to the real machine.
I once again toggled in the 64 words of the boot loader, set up the correct S register value, set the P register to the start of the routine at 077700 and fired up the HPdrive emulator. When I hit run, it came right up!