From a8f828a066773a59fdf646299359d35ae0e845af Mon Sep 17 00:00:00 2001 From: wyatt8740 Date: Mon, 6 Jan 2014 12:02:16 -0500 Subject: Removed accidental upload of copyrighted map files --- WinQuake/mplib.c | 444 +++++++++++++++++++++++++++---------------------------- 1 file changed, 222 insertions(+), 222 deletions(-) (limited to 'WinQuake/mplib.c') diff --git a/WinQuake/mplib.c b/WinQuake/mplib.c index 8ad33ff..6009286 100644 --- a/WinQuake/mplib.c +++ b/WinQuake/mplib.c @@ -1,222 +1,222 @@ -/* -Copyright (C) 1996-1997 Id Software, 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 2 -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, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -*/ -#include - -//#include "types.h" -typedef unsigned char BYTE; -typedef unsigned short WORD; -typedef unsigned long DWORD; - -//#include "mgenord.h" -#define MGENVXD_REGISTER_ORD 1 -#define MGENVXD_GETMEM_ORD 2 -#define MGENVXD_DEREGISTER_ORD 3 -#define MGENVXD_WAKEUP_ORD 4 -#define MGENVXD_MAKEDQS_ORD 5 - - -// Virtual 8086 API Ordinals -#define V86API_GETSELECTOR16_ORD (1) -#define V86API_GETSELECTOR32_ORD (2) -#define V86API_GETFLAT32_ORD (3) -#define V86API_MOVERP_ORD (6) -#define V86API_MOVEPR_ORD (7) -#define V86API_POST_ORD (8) -#define V86API_INIT_ORD (9) -#define V86API_UNINIT_ORD (10) -#define V86API_INSERTKEY_ORD (11) -#define V86API_REMOVEHOTKEY_ORD (12) -#define V86API_INSTALLHOTKEY_ORD (13) -#define V86API_HOOKINT48_ORD (14) -#define V86API_WAKEUPDLL_ORD (15) - -#define DPMIAPI_GETFLAT32_ORD (1) -#define DPMIAPI_POST_WINDOWS_ORD (2) -// these are DPMI functions. Make sure they don't clash with the -// other MGENVXD_XXXX functions above, or the DPMI functions! -#define MGENVXD_GETQUEUECTR_ORD 6 -#define MGENVXD_MOVENODE_ORD 7 -#define MGENVXD_GETNODE_ORD 8 -#define MGENVXD_FLUSHNODE_ORD 9 -#define MGENVXD_MCOUNT_ORD 10 -#define MGENVXD_MASTERNODE_ORD 11 -#define MGENVXD_SANITYCHECK_ORD 12 -#define MGENVXD_WAKEUPDLL_ORD 13 -#define MGENVXD_WAIT_ORD 14 - -// -#define HWND_OFFSET (0) -#define UMSG_OFFSET (1) -#define SIZEREQUEST_OFFSET (2) -#define HVXD_OFFSET (3) -#define DATUM_OFFSET (4) -#define SLOT_OFFSET (5) -#define SIZEGIVEN_OFFSET (6) -#define SELECTOR32_OFFSET (7) -#define SELECTOR16_OFFSET (8) - -//#include "magic.h" -#define MGENVXD_DEVICE_ID 0x18AA - -//#include "rtq.h" -#define RTQ_NODE struct rtq_node - -RTQ_NODE - { - RTQ_NODE *self; // Ring zero address of this node - RTQ_NODE *left; // Ring zero address of preceding node - RTQ_NODE *right; // Ring zero address of succeding node - BYTE * rtqDatum; // Ring 3 Datum of Buffer (start of preface) - BYTE * rtqInsert; // Ring 3 insertion position - WORD rtqLen; // Length of buffer, excluding preface - WORD rtqUpCtr; // Up Counter of bytes used so far - WORD rtqQCtr; // number of nodes attached - WORD padding; // DWORD alignment - }; - -#define RTQ_PARAM_MOVENODE struct rtq_param_movenode -RTQ_PARAM_MOVENODE - { - WORD rtqFromDQ; - WORD rtqToDQ; - }; - -RTQ_NODE* rtq_fetch(RTQ_NODE*, RTQ_NODE*); // To, From - -int _int86(int vector, __dpmi_regs *iregs, __dpmi_regs *oregs); - -#define CHUNNEL_INT 0x48 - -#define int386 _int86 -#define REGISTERS __dpmi_regs - -void -Yield(void) -{ - __dpmi_yield(); -} - -void -PostWindowsMessage(void) -{ - REGISTERS regs; - - regs.d.eax = DPMIAPI_POST_WINDOWS_ORD << 16 | MGENVXD_DEVICE_ID; - regs.d.ebx = 0; - regs.d.ecx = 0; - int386(CHUNNEL_INT, ®s, ®s); -} - -int -MGenWait(void) -{ - REGISTERS regs; - - regs.d.eax = MGENVXD_WAIT_ORD << 16 | MGENVXD_DEVICE_ID; - int386(CHUNNEL_INT, ®s, ®s); - return regs.d.eax; -} - -int MGenGetQueueCtr(int qNo) -{ - REGISTERS regs; - - regs.d.eax = MGENVXD_GETQUEUECTR_ORD << 16 | MGENVXD_DEVICE_ID; - regs.d.ebx = qNo; - int386(CHUNNEL_INT, ®s, ®s); - - return regs.d.eax; -} - -RTQ_NODE *MGenMoveTo(int qFrom, int qTo) -{ - REGISTERS regs; - - regs.d.eax = MGENVXD_MOVENODE_ORD << 16 | MGENVXD_DEVICE_ID; - regs.d.ebx = qFrom; - regs.d.ecx = qTo; - int386(CHUNNEL_INT, ®s, ®s); - - return (RTQ_NODE *) regs.d.eax; -} - -RTQ_NODE *MGenGetNode(int q) -{ - REGISTERS regs; - - regs.d.eax = MGENVXD_GETNODE_ORD << 16 | MGENVXD_DEVICE_ID; - regs.d.ebx = q; - int386(CHUNNEL_INT, ®s, ®s); - - return (RTQ_NODE *) regs.d.eax; -} - -RTQ_NODE *MGenGetMasterNode(unsigned *size) -{ - REGISTERS regs; - - regs.d.eax = MGENVXD_MASTERNODE_ORD << 16 | MGENVXD_DEVICE_ID; - int386(CHUNNEL_INT, ®s, ®s); - *size = regs.d.ecx; - - return (RTQ_NODE *) regs.d.eax; -} - -RTQ_NODE *MGenFlushNodes(int qFrom, int qTo) -{ - REGISTERS regs; - - regs.d.eax = MGENVXD_FLUSHNODE_ORD << 16 | MGENVXD_DEVICE_ID; - regs.d.ebx = qFrom; - regs.d.ecx = qTo; - int386(CHUNNEL_INT, ®s, ®s); - - return (RTQ_NODE *) regs.d.eax; -} - -int MGenMCount(unsigned lowerOrderBits, unsigned upperOrderBits) -{ - REGISTERS regs; - - regs.d.eax = MGENVXD_MCOUNT_ORD << 16 | MGENVXD_DEVICE_ID; - regs.d.ebx = lowerOrderBits; - regs.d.ecx = upperOrderBits; - int386(CHUNNEL_INT, ®s, ®s); - - return regs.d.eax; -} - -int MGenSanityCheck(void) -{ - REGISTERS regs; - - regs.d.eax = MGENVXD_SANITYCHECK_ORD << 16 | MGENVXD_DEVICE_ID; - int386(CHUNNEL_INT, ®s, ®s); - - return regs.d.eax; -} - -void MGenWakeupDll(void) -{ - REGISTERS regs; - - regs.d.eax = MGENVXD_WAKEUPDLL_ORD << 16 | MGENVXD_DEVICE_ID; - int386(CHUNNEL_INT, ®s, ®s); -} +/* +Copyright (C) 1996-1997 Id Software, 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 2 +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, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +#include + +//#include "types.h" +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; + +//#include "mgenord.h" +#define MGENVXD_REGISTER_ORD 1 +#define MGENVXD_GETMEM_ORD 2 +#define MGENVXD_DEREGISTER_ORD 3 +#define MGENVXD_WAKEUP_ORD 4 +#define MGENVXD_MAKEDQS_ORD 5 + + +// Virtual 8086 API Ordinals +#define V86API_GETSELECTOR16_ORD (1) +#define V86API_GETSELECTOR32_ORD (2) +#define V86API_GETFLAT32_ORD (3) +#define V86API_MOVERP_ORD (6) +#define V86API_MOVEPR_ORD (7) +#define V86API_POST_ORD (8) +#define V86API_INIT_ORD (9) +#define V86API_UNINIT_ORD (10) +#define V86API_INSERTKEY_ORD (11) +#define V86API_REMOVEHOTKEY_ORD (12) +#define V86API_INSTALLHOTKEY_ORD (13) +#define V86API_HOOKINT48_ORD (14) +#define V86API_WAKEUPDLL_ORD (15) + +#define DPMIAPI_GETFLAT32_ORD (1) +#define DPMIAPI_POST_WINDOWS_ORD (2) +// these are DPMI functions. Make sure they don't clash with the +// other MGENVXD_XXXX functions above, or the DPMI functions! +#define MGENVXD_GETQUEUECTR_ORD 6 +#define MGENVXD_MOVENODE_ORD 7 +#define MGENVXD_GETNODE_ORD 8 +#define MGENVXD_FLUSHNODE_ORD 9 +#define MGENVXD_MCOUNT_ORD 10 +#define MGENVXD_MASTERNODE_ORD 11 +#define MGENVXD_SANITYCHECK_ORD 12 +#define MGENVXD_WAKEUPDLL_ORD 13 +#define MGENVXD_WAIT_ORD 14 + +// +#define HWND_OFFSET (0) +#define UMSG_OFFSET (1) +#define SIZEREQUEST_OFFSET (2) +#define HVXD_OFFSET (3) +#define DATUM_OFFSET (4) +#define SLOT_OFFSET (5) +#define SIZEGIVEN_OFFSET (6) +#define SELECTOR32_OFFSET (7) +#define SELECTOR16_OFFSET (8) + +//#include "magic.h" +#define MGENVXD_DEVICE_ID 0x18AA + +//#include "rtq.h" +#define RTQ_NODE struct rtq_node + +RTQ_NODE + { + RTQ_NODE *self; // Ring zero address of this node + RTQ_NODE *left; // Ring zero address of preceding node + RTQ_NODE *right; // Ring zero address of succeding node + BYTE * rtqDatum; // Ring 3 Datum of Buffer (start of preface) + BYTE * rtqInsert; // Ring 3 insertion position + WORD rtqLen; // Length of buffer, excluding preface + WORD rtqUpCtr; // Up Counter of bytes used so far + WORD rtqQCtr; // number of nodes attached + WORD padding; // DWORD alignment + }; + +#define RTQ_PARAM_MOVENODE struct rtq_param_movenode +RTQ_PARAM_MOVENODE + { + WORD rtqFromDQ; + WORD rtqToDQ; + }; + +RTQ_NODE* rtq_fetch(RTQ_NODE*, RTQ_NODE*); // To, From + +int _int86(int vector, __dpmi_regs *iregs, __dpmi_regs *oregs); + +#define CHUNNEL_INT 0x48 + +#define int386 _int86 +#define REGISTERS __dpmi_regs + +void +Yield(void) +{ + __dpmi_yield(); +} + +void +PostWindowsMessage(void) +{ + REGISTERS regs; + + regs.d.eax = DPMIAPI_POST_WINDOWS_ORD << 16 | MGENVXD_DEVICE_ID; + regs.d.ebx = 0; + regs.d.ecx = 0; + int386(CHUNNEL_INT, ®s, ®s); +} + +int +MGenWait(void) +{ + REGISTERS regs; + + regs.d.eax = MGENVXD_WAIT_ORD << 16 | MGENVXD_DEVICE_ID; + int386(CHUNNEL_INT, ®s, ®s); + return regs.d.eax; +} + +int MGenGetQueueCtr(int qNo) +{ + REGISTERS regs; + + regs.d.eax = MGENVXD_GETQUEUECTR_ORD << 16 | MGENVXD_DEVICE_ID; + regs.d.ebx = qNo; + int386(CHUNNEL_INT, ®s, ®s); + + return regs.d.eax; +} + +RTQ_NODE *MGenMoveTo(int qFrom, int qTo) +{ + REGISTERS regs; + + regs.d.eax = MGENVXD_MOVENODE_ORD << 16 | MGENVXD_DEVICE_ID; + regs.d.ebx = qFrom; + regs.d.ecx = qTo; + int386(CHUNNEL_INT, ®s, ®s); + + return (RTQ_NODE *) regs.d.eax; +} + +RTQ_NODE *MGenGetNode(int q) +{ + REGISTERS regs; + + regs.d.eax = MGENVXD_GETNODE_ORD << 16 | MGENVXD_DEVICE_ID; + regs.d.ebx = q; + int386(CHUNNEL_INT, ®s, ®s); + + return (RTQ_NODE *) regs.d.eax; +} + +RTQ_NODE *MGenGetMasterNode(unsigned *size) +{ + REGISTERS regs; + + regs.d.eax = MGENVXD_MASTERNODE_ORD << 16 | MGENVXD_DEVICE_ID; + int386(CHUNNEL_INT, ®s, ®s); + *size = regs.d.ecx; + + return (RTQ_NODE *) regs.d.eax; +} + +RTQ_NODE *MGenFlushNodes(int qFrom, int qTo) +{ + REGISTERS regs; + + regs.d.eax = MGENVXD_FLUSHNODE_ORD << 16 | MGENVXD_DEVICE_ID; + regs.d.ebx = qFrom; + regs.d.ecx = qTo; + int386(CHUNNEL_INT, ®s, ®s); + + return (RTQ_NODE *) regs.d.eax; +} + +int MGenMCount(unsigned lowerOrderBits, unsigned upperOrderBits) +{ + REGISTERS regs; + + regs.d.eax = MGENVXD_MCOUNT_ORD << 16 | MGENVXD_DEVICE_ID; + regs.d.ebx = lowerOrderBits; + regs.d.ecx = upperOrderBits; + int386(CHUNNEL_INT, ®s, ®s); + + return regs.d.eax; +} + +int MGenSanityCheck(void) +{ + REGISTERS regs; + + regs.d.eax = MGENVXD_SANITYCHECK_ORD << 16 | MGENVXD_DEVICE_ID; + int386(CHUNNEL_INT, ®s, ®s); + + return regs.d.eax; +} + +void MGenWakeupDll(void) +{ + REGISTERS regs; + + regs.d.eax = MGENVXD_WAKEUPDLL_ORD << 16 | MGENVXD_DEVICE_ID; + int386(CHUNNEL_INT, ®s, ®s); +} -- cgit v1.2.3