syslinux/syslinux-nonzero-target-segment-fix.diff

24 lines
531 B
Diff

--- a/core/isolinux.asm
+++ b/core/isolinux.asm
@@ -694,10 +724,17 @@
;
getlinsec_cdrom:
mov si,dapa ; Load up the DAPA
- mov [si+4],bx
- mov bx,es
- mov [si+6],bx
mov [si+8],eax
+ ; seems that some BIOSes have problems if the target
+ ; segment is 0 (don't ask); to avoid this, we normalize
+ ; the buffer address here
+ ; -> seen on Acer TravelMate C102Ti
+ mov [si+4],bx
+ and word [si+4],0fh
+ mov ax,es
+ shr bx,4
+ add ax,bx
+ mov [si+6],ax
.loop:
push bp ; Sectors left
cmp bp,[MaxTransfer]