I was fiddling around with the bootloader and basically created a fixed drive of 10MB. I took the bootloader from Chapter 4 (the final little set of assembly that prints a message and halts). I tested it on a physical computer and with virtual floppy and it seemed to work great. I took the same binary and did a DD to the VHD file itself (reports 512 bytes moved). Virtual PC loads, detects the magic number (no error message about an unbootable drive), but hangs without printing anything (the cursor moves down a line and seems to just stop). The VM is reporting 1kb read.
If I fudge the magic number, it changes and reports an unbootable drive.
If I remove the "partition" section (just try to print a message), no change.
If I remove the cli and hlt at the end, no change (I would expect the VM to go screaming through the hard drive and eventually crash... VM is still reporting 1kb read).
The magic number reporting correctly (or incorrectly when I change it) seems to imply that VPC is reading the block from the VHD correctly, but it isn't executing any instructions. The fact that it works as a virtual floppy screams that I messed something up though

Any ideas if VPC expects something special from the VHD in order to boot? It reports as a valid VHD still after my DD operation to the first 512 bytes; I can still mount it on my Windows 7 computer (I checked)... for sanity last weekend I downloaded the VHD spec from MS, I don't see anything I could have messed up there (Fixed hard drives are pretty simple).
Thanks