summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/isvbop.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--public/sdk/inc/isvbop.h134
1 files changed, 134 insertions, 0 deletions
diff --git a/public/sdk/inc/isvbop.h b/public/sdk/inc/isvbop.h
new file mode 100644
index 000000000..eba3dc91c
--- /dev/null
+++ b/public/sdk/inc/isvbop.h
@@ -0,0 +1,134 @@
+/*++ BUILD Version: 0001
+
+Copyright (c) 1990 Microsoft Corporation
+
+Module Name:
+
+ ISVBOP.H
+
+Abstract:
+
+ This is the header file supporting third party bops.
+ isvbop.inc is the inc file for this h file.
+
+Note:
+ Following include file uses 'DB' to define assembly macros. Some
+ assemblers use 'emit' instead. If you are using such a compiler,
+ you will have to change db's to emit's.
+
+--*/
+
+
+#define BOP_3RDPARTY 0x58
+#define BOP_UNSIMULATE 0xFE
+
+/* XLATOFF */
+
+/** RegisterModule - This Bop call is made from the 16 bit module
+ * to register a third party DLL with the bop
+ * manager. This call returns a handle to the
+ * 16bit caller which is to be used later to
+ * dispatch a call to the DLL.
+ *
+ * INPUT:
+ * Client DS:SI - asciiz string of DLL name.
+ * Client ES:DI - asciiz string of Init Routine in the DLL. (Optional)
+ * Client DS:BX - asciiz string to Dispatch routine in the DLL.
+ *
+ * OUTPUT:
+ * SUCCESS:
+ * Client Carry Clear
+ * Client AX = Handle (non Zero)
+ * FAILURE:
+ * Client Carry Set
+ * Client AX = Error Code
+ * AX = 1 - DLL not found
+ * AX = 2 - Dispacth routine not found.
+ * AX = 3 - Init Routine Not Found
+ * AX = 4 - Insufficient Memory
+ *
+ * NOTES:
+ * RegisterModule results in loading the DLL (specified in DS:SI).
+ * Its Init routine (specified in ES:DI) is called. Its Dispatch
+ * routine (specified in DS:BX) is stored away and all the calls
+ * made from DispatchCall are dispacthed to this routine.
+ * If ES and DI both are null than the caller did'nt supply the init
+ * routine.
+ */
+
+#define RegisterModule() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_3RDPARTY _asm _emit 0x0
+
+/** UnRegisterModule - This Bop call is made from the 16 bit module
+ * to unregister a third party DLL with the bop
+ * manager.
+ *
+ * INPUT:
+ * Client AX - Handle returned by RegisterModule Call.
+ *
+ * OUTPUT:
+ * None (VDM Is terminated with a debug message if Handle is invalid)
+ *
+ * NOTES:
+ * Use it if initialization of 16bit app fails after registering the
+ * Bop.
+ */
+
+#define UnRegisterModule() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_3RDPARTY _asm _emit 0x1
+
+/** DispacthCall - This Bop call is made from the 16 bit module
+ * to pass a request to its DLL.
+ *
+ * INPUT:
+ * Client AX - Handle returned by RegisterModule Call.
+ *
+ * OUTPUT:
+ * None (DLL should set the proper output registers etc.)
+ * (VDM Is terminated with a debug message if Handle is invalid)
+ *
+ * NOTES:
+ * Use it to pass a request to 32bit DLL. The request index and the
+ * parameters are passed in different registers. These register settings
+ * are private to the 16bit module and its associated VDD. Bop manager
+ * does'nt know anything about these registers.
+ */
+#define DispatchCall() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_3RDPARTY _asm _emit 0x2
+
+/*** VDDUnSimulate16
+ *
+ * This service causes the simulation of intel instructions to stop and
+ * control to return to VDD.
+ *
+ * INPUT
+ * None
+ *
+ * OUTPUT
+ * None
+ *
+ * NOTES
+ * This service is a macro intended for 16bit stub-drivers. At the
+ * end of worker routine stub-driver should use it.
+ */
+
+#define VDDUnSimulate16() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_UNSIMULATE
+
+/* XLATON */
+
+
+/* ASM
+RegisterModule macro
+ db 0C4h, 0C4h, BOP_3RDPARTY, 0
+ endm
+
+UnRegisterModule macro
+ db 0C4h, 0C4h, BOP_3RDPARTY, 1
+ endm
+
+DispatchCall macro
+ db 0C4h, 0C4h, BOP_3RDPARTY, 2
+ endm
+
+VDDUnSimulate16 macro
+ db 0C4h, 0C4h, BOP_UNSIMULATE
+ endm
+
+ */