/* * Dos Protected Mode Interface (DPMI) routines. * See Intel/Microsoft DPMI 1.0 spec for explanations. * Also PC Magazine, June 25, 1991, Lab Notes. */ #pragma pack(1) typedef struct { unsigned long edi, esi, ebp, res1, ebx, edx, ecx, eax; unsigned flags, es, ds, fs, gs, ip, cs, sp, ss; } RMODE_CALL; typedef struct { unsigned limit, addr_lo; unsigned char addr_hi, access, res1, addr_xhi; } DESCRIPTOR; int dpmi_rmode_intr(unsigned intr, unsigned flags, unsigned nwords, RMODE_CALL far *rmode_call); unsigned dpmi_sel(void); int dpmi_get_descriptor(unsigned pmodesel, DESCRIPTOR far *d); int dpmi_set_descriptor(unsigned pmodesel, DESCRIPTOR far *d); void far (*dpmi_make_callback(void far (*p)(), RMODE_CALL far *rc))(); int dpmi_free_callback(void far (*p)()); unsigned verw(unsigned sel); unsigned MapRealSeg(unsigned rpara, unsigned long size, unsigned far *psel); void far * ProtToReal(void far *prot); void far * map_real(void far *rptr, unsigned long size); void unmap_real(void far *p); /* undocumented Windows functions */ DWORD FAR PASCAL GetSelectorBase(unsigned sel); DWORD FAR PASCAL GetSelectorLimit(unsigned sel); void FAR PASCAL SetSelectorBase(unsigned sel, DWORD base); void FAR PASCAL SetSelectorLimit(unsigned sel, DWORD limit);