summaryrefslogtreecommitdiff
path: root/com32.inc
diff options
context:
space:
mode:
authorhpa <hpa>2003-11-24 02:44:42 +0000
committerhpa <hpa>2003-11-24 02:44:42 +0000
commit43cf4dda600db1ccd05d9788c7b1da0cde7c0413 (patch)
tree0c69eaa8d2e0f49bc4ea8770762a97d4552771ad /com32.inc
parent4a10396ab1f114fc37fa8f276e047fe3c283671c (diff)
downloadsyslinux-43cf4dda600db1ccd05d9788c7b1da0cde7c0413.tar.gz
Fix COMBOOT/COM32 command-line generation.syslinux-2.08-pre1
Add test programs.
Diffstat (limited to 'com32.inc')
-rw-r--r--com32.inc17
1 files changed, 15 insertions, 2 deletions
diff --git a/com32.inc b/com32.inc
index 59d1cb86..d0bfb3ed 100644
--- a/com32.inc
+++ b/com32.inc
@@ -41,6 +41,19 @@ com32_rmidt:
dd 0 ; Address
is_com32_image:
+ push si ; Save file handle
+
+ call make_plain_cmdline
+ ; Copy the command line into the low cmdline buffer
+ mov ax,real_mode_seg
+ mov fs,ax
+ mov si,cmd_line_here
+ mov di,command_line
+ mov cx,[CmdLinePtr]
+ inc cx ; Include final null
+ sub cx,si
+ fs rep movsb
+
call highmemsize ; We need the high memory size...
call comboot_setup_api ; Set up the COMBOOT-style API
@@ -48,6 +61,7 @@ is_com32_image:
xchg eax,edx ; Gotta fix this insanity...
shl eax,16
mov ax,dx
+ pop si ; File handle
call load_high
call crlf
@@ -146,8 +160,7 @@ com32_call_start:
push dword (1 << 16) ; 64K bounce buffer
push dword (comboot_seg << 4) ; Bounce buffer address
push dword com32_intcall ; Intcall entry point
- movzx esi,word [word CmdOptPtr]
- push esi ; Command line pointer
+ push dword command_line ; Command line pointer
push dword 5 ; Argument count
sti ; Interrupts OK now
call pm_entry ; Run the program...