On Fri, 12 Nov 1999, OKUJI Yoshinori wrote:
> From: Pavel Roskin <[EMAIL PROTECTED]>
> Subject: Old AmiBIOS support
> Date: Thu, 11 Nov 1999 16:38:19 -0500 (EST)
>
> > AmiBIOS (C) 1994 has very limited LBA support.
> > Function 0x42 (LBA read) is not supported.
>
> That's somewhat interesting... Which functions does it support?
I have tried a different approach. Why did Stage 1 fail while Stage 2
worked with the hard disks?
I have found that Stage 2 does an additional check that fails for that old
AmiBIOS.
After calling int 0x13 with %ah=0x41 Stage 2 checks %cx
If it is 0xFFFF, LBA is not used (why? I'll try to find the specification)
Adding a similar check to Stage 1 renders my previous patch unnecessary
(which doesn't mean that I want to revert it!)
Actually, I prefer to leave Stage 1 as is. I don't like adding more code
to Stage 1.
The attached patch is meant for demonstration rather than for applying
(unless there are other reasons to apply it)
Pavel Roskin
--- stage1/stage1.S Sat Nov 13 20:45:19 1999
+++ stage1/stage1.S.v1 Sun Nov 14 11:51:25 1999
@@ -148,6 +148,9 @@
cmpw $0xaa55, %bx
jne chs_mode
+ andw $1, %cx
+ jz chs_mode
+
/* get the geometry (limited to 2TB!) */
movb $0x48, %ah
movw $STAGE1_DRP_ADDR, %si