diff options
Diffstat (limited to 'board/MAI/bios_emulator/scitech/include/pm_help.h')
| -rw-r--r-- | board/MAI/bios_emulator/scitech/include/pm_help.h | 167 | 
1 files changed, 167 insertions, 0 deletions
| diff --git a/board/MAI/bios_emulator/scitech/include/pm_help.h b/board/MAI/bios_emulator/scitech/include/pm_help.h new file mode 100644 index 000000000..60a7c2545 --- /dev/null +++ b/board/MAI/bios_emulator/scitech/include/pm_help.h @@ -0,0 +1,167 @@ +/**************************************************************************** +* +*                   SciTech OS Portability Manager Library +* +*  ======================================================================== +* +*    The contents of this file are subject to the SciTech MGL Public +*    License Version 1.0 (the "License"); you may not use this file +*    except in compliance with the License. You may obtain a copy of +*    the License at http://www.scitechsoft.com/mgl-license.txt +* +*    Software distributed under the License is distributed on an +*    "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +*    implied. See the License for the specific language governing +*    rights and limitations under the License. +* +*    The Original Code is Copyright (C) 1991-1998 SciTech Software, Inc. +* +*    The Initial Developer of the Original Code is SciTech Software, Inc. +*    All Rights Reserved. +* +*  ======================================================================== +* +* Language:     ANSI C +* Environment:  Win32, OS/2 +* +* Description:  Include file for the SciTech Portability Manager 32-bit +*               helper VxD for Windows 9x for and the 16-bit ring 0 +*               helper device driver for OS/2. +* +*               This file documents all the public services used by the +*               SciTech Portability Manager library and SciTech Nucleus +*               loader library. +* +****************************************************************************/ + +#ifndef __PMHELP_H +#define __PMHELP_H + +/* Include version information */ + +#include "sdd/sddver.h" +#define PMHELP_Major            SDD_RELEASE_MAJOR +#define PMHELP_Minor            SDD_RELEASE_MINOR +#define PMHELP_VERSION          ((PMHELP_Major << 8) | PMHELP_Minor) + +#ifdef  __OS2__ + +/**************************************************************************** +* Public OS/2 Support functions +****************************************************************************/ + +#include "scitech.h" +#include "nucleus/graphics.h" + +/* Name of device driver */ + +#define PMHELP_NAME                 (PSZ)"sddhelp$" + +/* Main IOCTL function to talk to device driver */ + +#define PMHELP_IOCTL                0x0080 + +/* Macro definition for defining IOCTL function control codes for the SDDHELP + * device driver for OS/2. Similar to that used for the DOS/Win32 version. + */ + +#define PMHELP_CTL_CODE(name,value) \ +    PMHELP_##name = value + +typedef enum { +    /* Version function used by all drivers */ +    PMHELP_CTL_CODE(GETVER                      ,0x0001), +    PMHELP_CTL_CODE(MAPPHYS                     ,0x0002), +    PMHELP_CTL_CODE(ALLOCLOCKED                 ,0x0003), +    PMHELP_CTL_CODE(FREELOCKED                  ,0x0004), +    PMHELP_CTL_CODE(GETGDT32                    ,0x0005), +    PMHELP_CTL_CODE(MALLOCSHARED                ,0x0007), +    PMHELP_CTL_CODE(FREESHARED                  ,0x0008), +    PMHELP_CTL_CODE(MAPTOPROCESS                ,0x0009), +    PMHELP_CTL_CODE(FREEPHYS                    ,0x000A), +    PMHELP_CTL_CODE(FLUSHTLB                    ,0x000B), +    PMHELP_CTL_CODE(SAVECR4                     ,0x000C), +    PMHELP_CTL_CODE(RESTORECR4                  ,0x000D), +    PMHELP_CTL_CODE(READMSR                     ,0x000E), +    PMHELP_CTL_CODE(WRITEMSR                    ,0x000F), +    PMHELP_CTL_CODE(GETPHYSICALADDR             ,0x0010), +    PMHELP_CTL_CODE(GETPHYSICALADDRRANGE        ,0x0011), +    PMHELP_CTL_CODE(LOCKPAGES                   ,0x0012), +    PMHELP_CTL_CODE(UNLOCKPAGES                 ,0x0013), +    PMHELP_CTL_CODE(GETSHAREDEXP                ,0x0042), +    PMHELP_CTL_CODE(SETSHAREDEXP                ,0x0043), +    PMHELP_CTL_CODE(GETSTACKSWITCHRTN           ,0x0044), +    PMHELP_CTL_CODE(GETBUILDNO                  ,0x0050), +    } PMHELP_ctlCodes; + +#else + +/**************************************************************************** +* Public DOS/Windows Support functions +****************************************************************************/ + +#ifdef  DEVICE_MAIN +#include <vtoolsc.h> +#define PMHELP_Init_Order   (VDD_INIT_ORDER-1) +#define RETURN_LONGS(n)     *p->dioc_bytesret = (n) * sizeof(ulong) +#endif  /* DEVICE_MAIN */ +#include "scitech.h" +#include "nucleus/graphics.h" + +/* We connect to the SDDHELP.VXD module if it is staticly loaded (as part + * of SciTech Display Doctor), otherwise we dynamically load the PMHELP.VXD + * public helper VxD. + */ + +#define PMHELP_DeviceID         0x0000 +#define SDDHELP_DeviceID        0x3DF8 +#define VXDLDR_DeviceID         0x0027 +#define SDDHELP_MODULE          "SDDHELP" +#define SDDHELP_NAME            "SDDHELP.VXD" +#define PMHELP_MODULE           "PMHELP" +#define PMHELP_NAME             "PMHELP.VXD" +#define PMHELP_DDBNAME          "pmhelp  " +#define SDDHELP_MODULE_PATH     "\\\\.\\" SDDHELP_MODULE +#define PMHELP_MODULE_PATH      "\\\\.\\" PMHELP_MODULE +#define PMHELP_VXD_PATH         "\\\\.\\" PMHELP_NAME + +/* Macro definition for defining IOCTL function control codes for the PMHELP + * device drivers for Windows 9x and NT. This macro is basically derived from + * the CTL_CODE macro in the Windows 2000 DDK, but we hard code it here to + * avoid having to #include any of the Windows 2000 DDK header files. We also + * define both a 16-bit and 32-bit version of the control code within the same + * macro to simplify future additions. + * + * Essentially the Win32 macro would normally expand to the following: + * + *  CTL_CODE(FILE_DEVICE_VIDEO,0x800+value,METHOD_BUFFERED,FILE_ANY_ACCESS) + */ + +#define PMHELP_CTL_CODE(name,value)                                             \ +    PMHELP_##name = value,                                                      \ +    PMHELP_##name##32 = ((0x23 << 16) | (0 << 14) | ((0x800+value) << 2) | (0)) + +typedef enum { +    /* Include all the control codes. We keep them in a separate header +     * file so we can include them in multiple places to make this +     * more versatile. +     */ +    #include "pm_wctl.h" +    } PMHELP_ctlCodes; + +/* For real mode VxD calls, we put the function number into the high + * order word of EAX, and a value of 0x4FFF in AX. This allows our + * VxD handler which is set up to handle Int 10's to recognise a native + * PMHELP API call from a real mode DOS program. + */ + +#ifdef  REALMODE +#define API_NUM(num)    (((ulong)(num) << 16) | 0x4FFF) +#else +#define API_NUM(num)    (num) +#endif + +#endif  /* !__OS2__ */ + +#endif  /* __PMHELP_H */ + |