Both of those things are what caused PDOS/386 to both not boot, and required me to operate the Hand 386 for longer than I expected - too long that it died by the time I have resolved both things.
I documented the whole saga in the pdos Discord channel.
First the LBA thing:
kerravon@kerravon-pc:~/devel/pdos/src$ git show b03f2fe9980ced99293fb06c15e52de0b0f7cb4a
commit b03f2fe9980ced99293fb06c15e52de0b0f7cb4a
Author: Paul Edwards <
mutazilah@gmail.com>
Date: Sun Aug 27 00:19:01 2023 +0800
check specifically whether AH=42H is supported
diff --git a/src/mbr.asm b/src/mbr.asm
index cdffda78..16bdb8c5 100644
--- a/src/mbr.asm
+++ b/src/mbr.asm
@@ -103,6 +103,9 @@ mov bp,offset no_lba_extensions
jc fatal_error
cmp bx,0aa55h
jnz fatal_error
+; Bit 1 says whether AH=42H is supported or not
+and cx, 1
+jz fatal_error
; Load volume boot record
mov ax,[si+8] ; put sector number into LBA packet
kerravon@kerravon-pc:~/devel/pdos/src$
My problem. Not the (AMI from memory) BIOS.
And that code was in fact exercised and I got past that problem (in my code).
Then I hit a different problem in my code (kernel, not mbr) which is that I was using LBA when I shouldn't have been. And that's what never got tested on the Hand 386.
And since I couldn't get a Hand 386 anymore, I resorted to buying a laptop from 1990 from Australia (I'm Australian, but now live in the Philippines). That saga has been documented on my vlog (bottom of pdos.org) 2023-09-26 and 2023-09-27 so far (I haven't exhausted all possibilities yet, but I'm half stuck).
Ok, so second problem with using the Hand 386 which I discovered before I even started. I knew I needed to enable LBA extensions (my mbr required it at the time), but I think whenever I did an auto-detect of the hard disk, it would switch LBA off. After a lot of experimentation, I found out that it was when it had inspected the cylinder number (from memory) in either the start CHS or end CHS and determined that it had exceeded 1023 - or maybe it had exceeded 1023 if it recalculated based on LBA address and fixing the number of heads at 16 to keep within the IDE limit - something like that (it's documented, I can presumably find it in Discord if required). So if it was outside reasonable geometry, it switched on its definition of LBA, which isn't enabling the OS to use LBA addressing but instead to force a fake geometry.
I'm pretty sure I got that bit of the story right - LBA for that particular BIOS means "fake geometry". And I can remember zapping the MBR for sure. But I'm hazy about the details after that.
Since you have a Hand 386 yourself, would you be willing to try out PDOS/386 on it yourself to see if it works?