Vladimir 'phcoder' Serbinenko wrote:

Do not do this. Some BIOS functions (like ah=08h) return data in dl.
Clients should not expect data in registers to be preserved across
interrupt calls. I don't know if there is something like a 8086/PC-BIOS
ABI document that we can find to confirm the non-preservation of dl, but
the FreeDOS MBR should be fixed then.
Thank you for pointing ah=8 function
AFAIK there is no normative reference. The source which was mainly
used for long years is helppc and it states following:
        - registers DS, BX, CX and DX are preserved
(http://heim.ifi.uio.no/~stanisls/helppc/int_13.html)
But now this reference is terribly outdated.
SeaBIOS preserves %dl too

T13 EDD provides a probably more up to date documentation of int13.

There was no requirement to preserve registers is in EDD (2000) and EDD-2 (2002). It appeared in EDD-3 (2004) and is still in first EDD-4 draft (2009):

"The values in all registers that are not explicitly defined in the following sections shall be preserved at the completion of each function call" From Section 8 of: BIOS Enhanced Disk Drive Services - 3 (T13/1572D Revision 3)

Fortunately, T13 docs are (unlike T10 and SATA-IO) still publicly available:
http://www.t13.org/Documents/MinutesDefault.aspx?DocumentType=4&DocumentStage=2

--
Regards,
Christian Franke



_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to