[syslinux] Booting a bootable CD-ROM

Andy Pont andy.pont at sdcsystems.com
Mon Mar 21 05:08:19 PDT 2016


Hello,

I am working on a legacy BIOS extension that is used to provide a
centralised and managed boot process for a secure environment.  Due to an
assortment of reasons the access to hard disk / CD-ROM devices has had to be
implemented at a low level (reading/writing IDE controller registers) rather
than relying on the int 13h services provided by the system BIOS.

Booting hard disks is working OK and I am now trying to get bootable CD/DVD
disks to work using the following code:

    1) Issue an ATAPI command to read sector 11h
    2) Use the value at offset 47h to read the validation entry and initial
section entry
    3) Use the loadrba value from the initial section entry to read the
first sector of executable code
    4) Copy that sector to 07C0:0000
    5) Pass execution to the start of the read sector at 07C0:0000

I am getting output on the screen from isolinux but it basically borks.  The
screen output from isolinux shows several messages but the key ones are:

isolinux: Starting up, DL = 81
isolinux: Loading spec packet failed, trying to wing it...
isolinux: Trying BrokenAwardHack first ...
isolinux: BAH: Original Int 13 vector F00091E0
isolinux: BAH: FAILURE
isolinux: Extremely broken BIOS detected, last attempt with drive = 81
isolinux: Main image LBA = 00000028
isolinux: Disk error 01, AX=4228, drive 81

Boot failed: press a key to retry...

In order to get this to work am I going to need to hook int 13h so that I
can provide the correct responses to functions such as 4B01h and 42h or is
there a simpler way of achieving what I need?

Thanks,

Andy.



More information about the Syslinux mailing list