diff options
author | H. Peter Anvin <hpa@zytor.com> | 2008-10-10 15:01:19 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2008-10-10 15:01:19 -0700 |
commit | 59c99264362d6a084f6dfff0803e582c01a1ea2b (patch) | |
tree | e6b34446a07d7e1bf811f09566ce56a04def9b57 | |
parent | cc63fb81f15e2671c7f576ffc47e7718bdb26a27 (diff) | |
download | syslinux-59c99264362d6a084f6dfff0803e582c01a1ea2b.tar.gz |
Add CD-ROM mode query to the COM32 interface
Report the booting mode of ISOLINUX through the COM32 interface.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r-- | com32/include/syslinux/config.h | 2 | ||||
-rw-r--r-- | core/comboot.inc | 4 | ||||
-rw-r--r-- | doc/comboot.txt | 7 |
3 files changed, 12 insertions, 1 deletions
diff --git a/com32/include/syslinux/config.h b/com32/include/syslinux/config.h index 82225c12..6983f8aa 100644 --- a/com32/include/syslinux/config.h +++ b/com32/include/syslinux/config.h @@ -97,7 +97,7 @@ union syslinux_derivative_info { uint8_t filesystem; uint8_t ah; uint8_t sector_shift; - uint8_t ch; + uint8_t cd_mode; uint8_t drive_number; uint8_t dh; uint16_t _pad; diff --git a/core/comboot.inc b/core/comboot.inc index ca11852f..810d8251 100644 --- a/core/comboot.inc +++ b/core/comboot.inc @@ -604,6 +604,10 @@ comapi_derinfo: %elif IS_ISOLINUX mov P_ES,cs mov P_BX,spec_packet + mov ax,[BIOSType] + sub ax,bios_cdrom + shr ax,2 + mov P_CH,al ; Mode (el torito/cbios/ebios) %endif %endif clc diff --git a/doc/comboot.txt b/doc/comboot.txt index 42078ed5..8c4a868f 100644 --- a/doc/comboot.txt +++ b/doc/comboot.txt @@ -441,6 +441,10 @@ AX=000Ah [2.00] Get Derivative-Specific Information Output: AL 33h (ISOLINUX) DL drive number CL 11 (sector size as a power of 2) [3.35] + CH mode [3.73] + 0 = El Torito + 1 = Hybrid (hard disk), CBIOS mode + 2 = Hybrid (hard disk), EBIOS mode ES:BX pointer to El Torito spec packet FS:SI pointer to initial ES:DI value [3.53] @@ -798,6 +802,9 @@ AX=0019h [3.50] Read disk [SYSLINUX, ISOLINUX, EXTLINUX] This routine reports "boot failed" (and does not return) on disk error. + Note: for ISOLINUX in hybrid mode, this call uses simulated + 2048-byte CD-ROM sector numbers. + AX=001Ah [3.50] Cleanup, shuffle and boot to flat protected mode Input: AX 001Ah |