Wednesday, November 15, 2017

Slowly debugging the HPdrive emulation and bootup


HPdrive emulation

I figured out how to bring up the RTE IV-B image under the simh simulator, run the IO reconfiguration process and now have a disk which should boot with my existing hardware configuration.

One complexity is that simh requires the little-endian byte ordering in the file but the HP system is big-endian. Therefore, I had to swap byte order to run under the simulator and then swap back to produce the disk file that will be hosted by HPdriver. I used the DD command from the GNU Coreutils.

I ran the HPdrive software with its -d diagnostic flag which would show me seeks, but never saw anything. That doesn't mean that the HP 1000 didn't access cylinder 0 to try to load the boot code. Next time I will try an even chattier setting hoping to find out whether there is any communication over the HP-IB bus. 

There are a few possible causes for the failure to boot up:
  1. The hardware for HPdrive is not working properly
  2. The boot loader I am laboriously toggling in is incorrect, perhaps due to a typo
  3. A different problem due to profound ignorance on my part
Further, for possibility 1, hardware problems, the issue could be in:
  • PCI HP-IB card not working properly
  • HP-IB cable is bad
  • 12821A card not working properly
  • PCI HP-IB card not in system mode
During my testing, I did discover that number 2 was partially true. That is, I blindly typed in the bootloader code from the listing, but ignored the fact that the IBL button that copies from ROM to RAM will modify all the IO instructions to use the real select code from the S register.

Problem 1 - My S register had 14 as the select code, since that is the slot where my 12821A board sits, but the bootloader as listed has a default value of 10 which is my Timebase Generator card. I modified the bootloader code to set up 14 for the IO instructions and toggled that in.

Problem 2 - My 12821A card is set up with HPIB unit number 0, same as the disk drive I am emulating on the PC side. I needed to reconfigure the DIP switches to give it a new address. I chose 30.

This run saw some activity from the PC, recognizing some traffic coming from the HP 1000 side. It didn't finishing reading in the one bootloader sector, however. I found the code looping waiting to receive the last word of the sector - i.e. it hadn't. The diagnostic trace on the PC screen didn't sound as if it was delivering the sector data, either.

Trace of HPdrive software
I can't interpret the trace well enough yet to recognize what is happening, other than it appears from the "AMIGO cold load read: unit=0" that my bootloader code did attempt to read from the emulated 7920H disk drive.

Whether I read the boot sector or a different sector (since I have to select which of the platter surfaces to boot from), it should still deliver the full sector of data, with the failure for nonboot code being manifest down in the low memory area where the data was loaded. Instead, I see the bootloader looping waiting to get the full sector.

I have to dig into HPdrive and the AMIGO command protocols to interpret this better, but at least I am making some progress. The startup messages might contain clues too, but I don't know enough to spot any right now.
Earlier startup messages from HPdrive session

No comments:

Post a Comment