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