syslinux/syslinux-eject.diff

48 lines
933 B
Diff

--- a/core/isolinux.asm
+++ b/core/isolinux.asm
@@ -724,7 +761,34 @@
mov [DiskError],ah ; Save error code
popad
mov [DiskSys],ax ; Save system call number
- dec byte [RetryCount]
+
+%if 0
+ ; eject currently not supported - doesn't work anyway with
+ ; most BIOSes
+
+ test byte [gfx_user_note],1
+ jz .noeject
+ cmp byte [RetryCount],4
+ ja .noeject
+ cmp byte [DiskError],0aah ; drive not ready
+ jnz .noeject
+ ; might have been cdrom eject, wait a bit
+ cmp byte [gfx_ok],0
+ jz .noeject
+ push si
+ push di
+ push ax
+ mov si,err_not_ready
+ xor di,di
+ mov al,0
+ call gfx_infobox
+ pop ax
+ pop di
+ pop si
+%endif
+.noeject:
+
+ dec byte [RetryCount]
jz .real_error
push ax
mov al,[RetryCount]
@@ -825,6 +936,8 @@
crlf_msg db CR, LF
null_msg db 0
+err_not_ready db 'CDROM drive not ready.', 0
+
bios_cdrom_str db 'ETCD', 0
%ifndef DEBUG_MESSAGES
bios_cbios_str db 'CHDD', 0