[syslinux] Development Question for version 2.11 of isolinux
Arnold Maderthaner
arnold.maderthaner at gmail.com
Fri Dec 9 11:55:33 PST 2005
Hi 2 all !
I want to implement a new option into version 2.11 of syslinux:
The feature should do the following:
Ask the user if he really wants to boot from dvd. If no keyboard key
is pressed in an amount of time it should boot from the next device
configured in BIOS (INT 18h).
I looked up the isolinux.asm and tried 2 entry points for my code:
1. entry point: label _start1 after the
mov si,syslinux_banner
call writestr
I implemented following code (have to say that I'm assembler
newbie):
mov si,really_boot
call writestr
mov si,caution_str
call writestr
mov cx,20
jmp sleep_loop
jmp kaboom
sleep_loop:
push cx
xor ax,ax
mov ah,01h ; look for available char from
keyboard
int 16h
jnz booting_dvd ; boot from cd / dvd
xor ax,ax
mov ax,500 ; wait 0,5s
mov bx,1000 ; 1000 times
mul bx
mov cx,dx
mov dx,ax
mov ah,86h
int 15h
pop cx
loop sleep_loop
jmp boot_next_device
boot_next_device: mov si,boot_next_dev
call writestr
mov ax,-1
jmp local_boot
jmp kaboom
booting_dvd: pop cx
xor ax,ax
int 16h
xor ax,ax
After booting_dvd is the checksum stuff. This code did all I wanted but I
had a problem when booting from dvd because the checksum generated by
isolinux was wrong.
2. entry point:
So i tried to do my code after generation the checksum stuff. I placed
my code in the integrity_ok label. Now i it is completly functional on
normal PCs but I also tried it in a VMWare and in QEMU and there its not
working (but with my first hack it did, now sometimes the timer doesn't wait
and if int 18h is called not the next boot device is used, its using the
network boot device if I have a boot order of dvd,harddisk,network).
So I'm asking if anyone could help me with my poor assembler knowledge
fixing that code.
yours
arnold
More information about the Syslinux
mailing list