HPdrive emulation debugging
Jack 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!
No comments:
Post a Comment