83 lines
2.7 KiB
C
83 lines
2.7 KiB
C
/*
|
|
** Command & Conquer Red Alert(tm)
|
|
** Copyright 2025 Electronic Arts Inc.
|
|
**
|
|
** 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, either version 3 of the License, or
|
|
** (at your option) any later version.
|
|
**
|
|
** This program is distributed in the hope that it will be useful,
|
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
** GNU General Public License for more details.
|
|
**
|
|
** You should have received a copy of the GNU General Public License
|
|
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef VQMREALMODE_H
|
|
#define VQMREALMODE_H
|
|
/****************************************************************************
|
|
*
|
|
* C O N F I D E N T I A L -- W E S T W O O D S T U D I O S
|
|
*
|
|
*----------------------------------------------------------------------------
|
|
*
|
|
* FILE
|
|
* realmode.h
|
|
*
|
|
* DESCRIPTION
|
|
* Real-mode interfacing definitions and equates. Many of the definitions
|
|
* and descriptions in this file were taken from other sources and
|
|
* compiled here for use in MISC32 library.
|
|
*
|
|
* PROGRAMMER
|
|
* Denzil E. Long, Jr.
|
|
*
|
|
* DATE
|
|
* Febuary 6, 1995
|
|
*
|
|
****************************************************************************/
|
|
|
|
/* REALPTR: Real-mode pointer (segment:offset16).
|
|
*
|
|
* The REALPTR data type is used in protected mode to hold real-mode
|
|
* pointers. The type is an unsigned long value, were the upper 16 bits
|
|
* are the segment number and the lower 16 bit are an offset. This type
|
|
* and the associated macros are identical to that of the PHARLAP "pltypes.h"
|
|
* definitions for easy of conversion to WATCOM/4GW.
|
|
*/
|
|
typedef unsigned long REALPTR;
|
|
|
|
#define RP_OFF(rp) ((unsigned short)(((unsigned long)(rp)) & 0xFFFF))
|
|
#define RP_SEG(rp) ((unsigned short)(((unsigned long)(rp)) >> 16))
|
|
#define RP_SET(rp, off, seg) (rp = ((unsigned long)(seg) << 16) + (off))
|
|
#define RP_INCR(rp, incr) (rp += ((unsigned long)(incr)) & 0xFFFF)
|
|
|
|
#define MK_PTR(off, seg) (void *)((((unsigned long)seg&0xFFFF)<<4)+off)
|
|
|
|
/* RMInfo: Real-mode interrupt call structure.
|
|
*
|
|
* Information that needs to be passed down to the real-mode interrupt is
|
|
* transfered using this structure. The address to this protected-mode
|
|
* structure (allocated by user) is passed into DPMI function 0x300. DOS/4GW
|
|
* will then use this information to set up the real-mode registers, switch
|
|
* to real-mode and then execute the interrupt in real-mode.
|
|
*/
|
|
typedef struct _RMInfo {
|
|
long edi;
|
|
long esi;
|
|
long ebp;
|
|
long reservedbysystem;
|
|
long ebx;
|
|
long edx;
|
|
long ecx;
|
|
long eax;
|
|
short flags;
|
|
short es,ds,fs,gs,ip,cs,sp,ss;
|
|
} RMInfo;
|
|
|
|
#endif /* VQMREALMODE_H */
|
|
|