diff options
author | H. Peter Anvin <hpa@zytor.com> | 2007-09-25 16:38:31 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2007-09-25 16:38:31 -0700 |
commit | 223f5298620a3b3be9fbd206e2a3fbb388487da0 (patch) | |
tree | 286635488927e801c646d80e21d6a194261ed75b /isolinux.asm | |
parent | 57556d8f612128679464667ce124ddc611795db2 (diff) | |
parent | a81fb89a445ae0dca286c861d8d51f705533df0d (diff) | |
download | syslinux-3.60-pre2.tar.gz |
Merge commit 'syslinux-3.52' into gpxe-supportsyslinux-3.60-pre2
Diffstat (limited to 'isolinux.asm')
-rw-r--r-- | isolinux.asm | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/isolinux.asm b/isolinux.asm index c8cc6470..8f0a28a9 100644 --- a/isolinux.asm +++ b/isolinux.asm @@ -297,7 +297,7 @@ initial_csum: xor edi,edi mov ax,4B01h ; Get disk emulation status mov dl,[DriveNo] mov si,spec_packet - int 13h + call int13 jc award_hack ; changed for BrokenAwardHack mov dl,[DriveNo] cmp [sp_drive],dl ; Should contain the drive number @@ -570,7 +570,7 @@ spec_query_failed: mov ax,4B01h mov si,spec_packet mov byte [si],13 ; Size of buffer - int 13h + call int13 popa jc .still_broken @@ -657,6 +657,23 @@ writechr_simple: ret ; +; int13: save all the segment registers and call INT 13h +; Some CD-ROM BIOSes have been found to corrupt segment registers. +; +int13: + + push ds + push es + push fs + push gs + int 13h + pop gs + pop fs + pop es + pop ds + ret + +; ; Get one sector. Convenience entry point. ; getonesec: @@ -707,7 +724,7 @@ getlinsec: ; INT 13h with retry xint13: mov byte [RetryCount],retry_count .try: pushad - int 13h + call int13 jc .error add sp,byte 8*4 ; Clean up stack ret @@ -1051,7 +1068,7 @@ is_disk_image: lss sp,[InitStack] TRACER 'X' - int 13h + call int13 ; If this returns, we have problems .bad_image: |