summaryrefslogtreecommitdiffstats
path: root/private/mvdm/sim32/sim32.h
diff options
context:
space:
mode:
Diffstat (limited to 'private/mvdm/sim32/sim32.h')
-rw-r--r--private/mvdm/sim32/sim32.h122
1 files changed, 122 insertions, 0 deletions
diff --git a/private/mvdm/sim32/sim32.h b/private/mvdm/sim32/sim32.h
new file mode 100644
index 000000000..589fb2fc0
--- /dev/null
+++ b/private/mvdm/sim32/sim32.h
@@ -0,0 +1,122 @@
+/* SIM v1.0
+ *
+ * SIM32.H
+ * SIM32 constants and prototypes
+ *
+ * History
+ * Created 05-Feb-91 by Chandan Chauhan and Jeff Parsons
+ */
+
+
+/* Public function prototypes
+ *
+ * These functions are true pascal functions in the 16-bit case,
+ * but conform to the default convention (cdecl) for the 32-bit case.
+ */
+#ifndef FAR
+#define FAR
+#endif
+#ifndef PASCAL
+#define PASCAL
+#endif
+
+USHORT FAR PASCAL Sim32SendSim16(PULONG);
+USHORT FAR PASCAL Sim32GetVDMMemory(ULONG, USHORT, PVOID);
+USHORT FAR PASCAL Sim32SetVDMMemory(ULONG, USHORT, PVOID);
+PSZ FAR PASCAL Sim32GetVDMPSZPointer(ULONG);
+VOID FAR PASCAL Sim32FreeVDMPointer(PVOID);
+
+/* Private function prototypes
+ */
+VOID Initialize();
+USHORT Xceive(IN USHORT, IN USHORT);
+
+
+/* Simulator replacement macros
+ */
+#define SENDVDM(pvp) WOW32Receive()
+#define RECEIVEVDM(pvp) Sim32SendSim16(pvp)
+
+#ifdef ALLOCA
+#define GETPTR(vp,cb,p) ((p=alloca(cb))?Sim32GetVDMMemory(vp, (USHORT)(cb), p):FALSE)
+#define GETARGPTR(vp,cb,p) if (p=alloca(cb)) { Sim32GetVDMMemory(vp+OFFSETOF(VDMFRAME,bArgs), (USHORT)(cb), p)
+#ifdef WIN_16
+#define EQNULL
+#define GETPSZPTR(vp,pcb,p) if (vp) if (p=alloca(*pcb=128)) Sim32GetVDMMemory(vp, (USHORT)*pcb, p); else goto Error
+#define FREEPSZPTR(p)
+#else
+#define EQNULL = NULL
+#define GETPSZPTR(vp,pcb,p) if (vp) if (!(p=Sim32GetVDMPSZPointer(vp))) goto Error
+#define FREEPSZPTR(p) if (p) Sim32FreeVDMPointer(p)
+#endif
+#define FLUSHPTR(vp,cb,p) Sim32SetVDMMemory(vp, (USHORT)(cb), p)
+#define FREEPTR(p)
+#define FREEARGPTR(p) ;}
+#else
+#define EQNULL = NULL
+#define GETPTR(vp,cb,p) ((p=malloc(cb))?Sim32GetVDMMemory(vp, (USHORT)(cb), p):FALSE)
+#define GETARGPTR(vp,cb,p) if (p=malloc(cb)) { Sim32GetVDMMemory(vp+OFFSETOF(VDMFRAME,bArgs), (USHORT)(cb), p)
+#ifdef WIN_16
+#define GETPSZPTR(vp,pcb,p) if (vp) if (p=malloc(*pcb=128)) Sim32GetVDMMemory(vp, (USHORT)*pcb, p); else goto Error
+#define FREEPSZPTR(p) if (p) free(p)
+#else
+#define GETPSZPTR(vp,pcb,p) if (vp) if (!(p=Sim32GetVDMPSZPointer(vp))) goto Error
+#define FREEPSZPTR(p) if (p) Sim32FreeVDMPointer(p)
+#endif
+#define FLUSHPTR(vp,cb,p) Sim32SetVDMMemory(vp, (USHORT)(cb), p)
+#ifndef DEBUG
+#define FREEPTR(p) free(p)
+#define FREEARGPTR(p) free(p);}
+#else
+#define FREEPTR(p) free(p); p=NULL
+#define FREEARGPTR(p) free(p); p=NULL;}
+#endif
+#endif
+
+#define GETOPTPTR(vp,cb,p) if (vp) if (p=malloc(cb)) Sim32GetVDMMemory(vp, (USHORT)(cb), p); else goto Error
+#define GETVDMPTR(vp,cb,p) if (p=malloc(cb)) Sim32GetVDMMemory(vp, (USHORT)(cb), p); else goto Error
+#define ALLOCVDMPTR(vp,cb,p) if (!(p=malloc(cb))) goto Error
+#define FLUSHVDMPTR(vp,cb,p) Sim32SetVDMMemory(vp, (USHORT)(cb), p)
+#ifndef DEBUG
+#define FREEVDMPTR(p) if (p) free(p)
+#else
+#define FREEVDMPTR(p) if (p) {free(p); p=NULL;}
+#endif
+
+#define GETVDMMEMORY(vp,cb,p) Sim32GetVDMMemory(vp, (USHORT)(cb), p)
+#define SETVDMMEMORY(vp,cb,p) Sim32SetVDMMemory(vp, (USHORT)(cb), p)
+
+
+#ifdef SIM_32 // BUGBUG -- Use the macros in nt header files
+#undef FIRSTBYTE
+#undef SECONDBYTE
+#undef THIRDBYTE
+#undef FOURTHBYTE
+#endif
+
+#define FIRSTBYTE(VALUE) (VALUE & LO_MASK)
+#define SECONDBYTE(VALUE) ((VALUE >> 8) & LO_MASK)
+#define THIRDBYTE(VALUE) ((VALUE >> 16) & LO_MASK)
+#define FOURTHBYTE(VALUE) ((VALUE >> 24) & LO_MASK)
+#define LO_MASK 0x000000FF
+
+#define MAXSIZE 1024 // maximum buffer size
+#define MAXTRY 10 // for Transport
+
+
+/* Packet Codes
+ */
+#define SOH 1 // start of header ie Pkt
+#define EOT 4 // end of transmission
+#define ToWOW32 1
+#define GETMEM 2
+#define SETMEM 3
+#define WAKEUP 4
+#define RESP 5
+#define ACK 6
+#define NAK 7
+#define PSZLEN 8
+
+#define GOOD 1
+#define BAD 0
+#define BADSIZE 2