1 ;; -----------------------------------------------------------------------
3 ;; Copyright 1994-2009 H. Peter Anvin - All Rights Reserved
4 ;; Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
6 ;; This program is free software; you can redistribute it and/or modify
7 ;; it under the terms of the GNU General Public License as published by
8 ;; the Free Software Foundation, Inc., 53 Temple Place Ste 330,
9 ;; Boston MA 02111-1307, USA; either version 2 of the License, or
10 ;; (at your option) any later version; incorporated herein by reference.
12 ;; -----------------------------------------------------------------------
17 ;; Common code for running a COM32 image
23 ; Load a COM32 image. A COM32 image is the 32-bit analogue to a DOS
24 ; .com file. A COM32 image is loaded at address 0x101000, with %esp
25 ; set to the high end of usable memory.
27 ; A COM32 image should begin with the magic bytes:
28 ; B8 FF 4C CD 21, which is "mov eax,0x21cd4cff" in 32-bit mode and
29 ; "mov ax,0x4cff; int 0x21" in 16-bit mode. This will abort the
30 ; program with an error if run in 16-bit mode.
35 ; Ersatz com32 invocation structure, to make libcom32
36 ; code run the same if linked to the core. This is in
37 ; the .data16 segment so HighMemSize can live here.
39 ; Danger, Will Robinson: it's not clear the use of
40 ; core_xfer_buf is safe here.
41 global __com32:data hidden
44 dd 0 ; Dummy to avoid _exit issues
47 dd 0 ; No command line
48 dd core_intcall ; Intcall entry point
49 dd 0 ; Bounce buffer address
50 dd 0 ; 64K bounce buffer
51 dd core_farcall ; Farcall entry point
52 dd core_cfarcall ; Cfarcall entry point
53 HighMemSize dd 0 ; End of memory pointer (bytes)
55 dd pm_api_vector ; Protected mode functions
58 Com32Name resb FILENAME_MAX
61 %ifndef HAVE_CURRENTDIRNAME
62 global CurrentDirName:data hidden
63 CurrentDirName resb FILENAME_MAX