67 lines
2.0 KiB
PHP
67 lines
2.0 KiB
PHP
;; -----------------------------------------------------------------------
|
|
;;
|
|
;; Copyright 1994-2009 H. Peter Anvin - All Rights Reserved
|
|
;; Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
|
|
;;
|
|
;; This program is free software; you can redistribute it and/or modify
|
|
;; it under the terms of the GNU General Public License as published by
|
|
;; the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
|
;; Boston MA 02111-1307, USA; either version 2 of the License, or
|
|
;; (at your option) any later version; incorporated herein by reference.
|
|
;;
|
|
;; -----------------------------------------------------------------------
|
|
|
|
;;
|
|
;; com32.inc
|
|
;;
|
|
;; Common code for running a COM32 image
|
|
;;
|
|
|
|
extern pm_api_vector
|
|
|
|
;
|
|
; Load a COM32 image. A COM32 image is the 32-bit analogue to a DOS
|
|
; .com file. A COM32 image is loaded at address 0x101000, with %esp
|
|
; set to the high end of usable memory.
|
|
;
|
|
; A COM32 image should begin with the magic bytes:
|
|
; B8 FF 4C CD 21, which is "mov eax,0x21cd4cff" in 32-bit mode and
|
|
; "mov ax,0x4cff; int 0x21" in 16-bit mode. This will abort the
|
|
; program with an error if run in 16-bit mode.
|
|
;
|
|
bits 16
|
|
section .data16
|
|
|
|
; Ersatz com32 invocation structure, to make libcom32
|
|
; code run the same if linked to the core. This is in
|
|
; the .data16 segment so HighMemSize can live here.
|
|
;
|
|
; Danger, Will Robinson: it's not clear the use of
|
|
; core_xfer_buf is safe here.
|
|
global __com32:data hidden
|
|
alignz 4
|
|
__entry_esp:
|
|
dd 0 ; Dummy to avoid _exit issues
|
|
__com32:
|
|
dd 9 ; Argument count
|
|
dd 0 ; No command line
|
|
dd core_intcall ; Intcall entry point
|
|
dd 0 ; Bounce buffer address
|
|
dd 0 ; 64K bounce buffer
|
|
dd core_farcall ; Farcall entry point
|
|
dd core_cfarcall ; Cfarcall entry point
|
|
HighMemSize dd 0 ; End of memory pointer (bytes)
|
|
dd 0 ; No module name
|
|
dd pm_api_vector ; Protected mode functions
|
|
|
|
section .uibss
|
|
Com32Name resb FILENAME_MAX
|
|
|
|
section .bss16
|
|
%ifndef HAVE_CURRENTDIRNAME
|
|
global CurrentDirName:data hidden
|
|
CurrentDirName resb FILENAME_MAX
|
|
%endif
|
|
|
|
section .text16
|