summaryrefslogtreecommitdiffstats
path: root/private/mvdm/v86/scaffold/i386/fakebop.c
diff options
context:
space:
mode:
Diffstat (limited to 'private/mvdm/v86/scaffold/i386/fakebop.c')
-rw-r--r--private/mvdm/v86/scaffold/i386/fakebop.c502
1 files changed, 502 insertions, 0 deletions
diff --git a/private/mvdm/v86/scaffold/i386/fakebop.c b/private/mvdm/v86/scaffold/i386/fakebop.c
new file mode 100644
index 000000000..b9430dd30
--- /dev/null
+++ b/private/mvdm/v86/scaffold/i386/fakebop.c
@@ -0,0 +1,502 @@
+#include <windows.h>
+#include <stdio.h>
+#include <conio.h>
+#include "demexp.h"
+#include "cmdsvc.h"
+#include "rdrexp.h"
+#include "dbgexp.h"
+#include "softpc.h"
+#include "fun.h"
+//
+// This module contains the fake function definitions for bop functions
+//
+
+extern CONTEXT IntelRegisters;
+extern VOID switch_to_real_mode();
+extern VOID host_unsimulate();
+
+
+HANDLE hWOWDll;
+
+FARPROC WOWDispatchEntry;
+FARPROC WOWInitEntry;
+
+void DBGDispatch( void );
+
+void reset(){}
+void dummy_int(){}
+void unexpected_int(){}
+void illegal_bop(){}
+void print_screen(){}
+void time_int(){}
+void keyboard_int(){}
+void diskette_int(){}
+void video_io(){}
+void equipment(){}
+void memory_size(){}
+void disk_io(){}
+void rs232_io(){}
+void cassette_io(){}
+void keyboard_io(){}
+void printer_io(){}
+void rom_basic(){}
+void bootstrap(){}
+void time_of_day(){}
+void critical_region(){}
+void cmd_install(){}
+void cmd_load(){}
+void redirector(){}
+void ega_video_io(){}
+void MsBop0(){
+
+ DemDispatch((ULONG)(*Sim32GetVDMPointer(
+ ((ULONG)getCS() << 16) + (getIP()), 1, FALSE)));
+ setIP(getIP() + 1);
+
+}
+void MsBop1(){
+
+
+ static WowModeInitialized = FALSE;
+
+ if (!WowModeInitialized) {
+
+ // Load the WOW DLL
+ if ((hWOWDll = LoadLibrary ("WOW32")) == NULL){
+ VDprint(
+ VDP_LEVEL_ERROR,
+ ("SoftPC: error initializing WOW\n")
+ );
+ TerminateVDM();
+ return;
+ }
+
+ // Get the init entry point and dispatch entry point
+ if ((WOWInitEntry = GetProcAddress (hWOWDll, "W32Init")) == NULL) {
+ VDprint(
+ VDP_LEVEL_ERROR,
+ ("SoftPC: error initializing WOW\n")
+ );
+ FreeLibrary (hWOWDll);
+ TerminateVDM();
+ return;
+ }
+
+ if ((WOWDispatchEntry = GetProcAddress (hWOWDll, "W32Dispatch")) == NULL) {
+ VDprint(
+ VDP_LEVEL_ERROR,
+ ("SoftPC: error initializing WOW\n")
+ );
+ FreeLibrary (hWOWDll);
+ TerminateVDM();
+ return;
+ }
+
+ // Call the Init Routine
+ if ((*WOWInitEntry)() == FALSE) {
+ VDprint(
+ VDP_LEVEL_ERROR,
+ ("SoftPC: error initializing WOW\n")
+ );
+ TerminateVDM();
+ return;
+ }
+
+ WowModeInitialized = TRUE;
+ }
+
+ (*WOWDispatchEntry)();
+}
+
+void MsBop2(){
+
+ XMSDispatch((ULONG)(*Sim32GetVDMPointer(
+ ((ULONG)getCS() << 16) + (getIP()), 1, FALSE)));
+ setIP(getIP() + 1);
+
+}
+void MsBop3(){
+ DpmiDispatch();
+}
+
+
+
+void MsBop4(){
+ CmdDispatch((ULONG)(*Sim32GetVDMPointer(
+ ((ULONG)getCS() << 16) + (getIP()), 1, FALSE)));
+ setIP(getIP() + 1);
+}
+
+
+
+//
+// MsBop5 - used to dispatch to Vdm Redir (Vr) support functions
+//
+
+void MsBop5()
+{
+#ifdef NTVDM_NET_SUPPORT
+ VrDispatch((ULONG)(*Sim32GetVDMPointer(
+ ((ULONG)getCS() << 16) + (getIP()), 1, FALSE)));
+ setIP(getIP() + 1);
+#endif
+}
+
+//
+// MsBop6 - used to dispatch to debugger support functions
+//
+
+void MsBop6()
+{
+ /*
+ ** All of the parameters for the debugger support
+ ** should be on the VDMs stack.
+ */
+ DBGDispatch();
+}
+void MsBop7(){}
+void MsBop8(){}
+void MsBop9(){}
+void MsBopA(){}
+void MsBopB(){
+
+ switch (getAH()) {
+
+ case 0 :
+ setAH(0);
+ while (!tkbhit());
+ setAL((BYTE)tgetch());
+ break;
+
+ case 1 :
+ tputch(getAL());
+ break;
+ }
+}
+void MsBopC(){
+
+ BiosKbd();
+
+}
+void MsBopD(){
+
+ BiosVid();
+
+}
+void MsBopE(){}
+
+
+void MsBopF(){
+ UCHAR *Instruction;
+ USHORT i;
+
+ // Unimplemented interrupt bop
+
+ Instruction = RMSEGOFFTOLIN(getSS(), getSP());
+ Instruction = RMSEGOFFTOLIN(*((PWORD)Instruction + 1),
+ *(PWORD)(Instruction));
+ i = (USHORT)(*(Instruction - 1));
+ VDprint(
+ VDP_LEVEL_WARNING,
+ ("SoftPC Bop Support: Unimplemented Interrupt %x\n",
+ i)
+ );
+
+}
+void emm_init(){}
+void emm_io(){}
+void return_from_call(){}
+void rtc_int(){}
+void re_direct(){}
+void D11_int(){}
+void int_287(){}
+void worm_init(){}
+void worm_io(){}
+void ps_private_1(){}
+void ps_private_2(){}
+void ps_private_3(){}
+void ps_private_4(){}
+void ps_private_5(){}
+void ps_private_6(){}
+void ps_private_7(){}
+void ps_private_8(){}
+void ps_private_9(){}
+void ps_private_10(){}
+void ps_private_11(){}
+void ps_private_12(){}
+void ps_private_13(){}
+void ps_private_14(){}
+void ps_private_15(){}
+void bootstrap1(){}
+void bootstrap2(){}
+void bootstrap3(){}
+void ms_windows(){}
+void msw_mouse(){}
+void mouse_install1(){}
+void mouse_install2(){}
+void mouse_int1(){}
+void mouse_int2(){}
+void mouse_io_language(){}
+void mouse_io_interrupt(){}
+void mouse_video_io(){}
+void control_bop(){}
+void diskette_io(){}
+void illegal_op_int(){}
+
+VOID (*BIOS[])(VOID) = { reset,
+ dummy_int,
+ unexpected_int,
+ illegal_bop,
+ illegal_bop,
+ print_screen,
+ illegal_op_int,
+ illegal_bop,
+ time_int,
+ keyboard_int,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ diskette_int,
+ illegal_bop,
+ video_io,
+ equipment,
+ memory_size,
+ disk_io,
+ rs232_io,
+ cassette_io,
+ keyboard_io,
+ printer_io,
+ rom_basic,
+ bootstrap,
+ time_of_day,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ critical_region,
+ cmd_install,
+ cmd_load,
+ illegal_bop,
+ illegal_bop,
+ redirector,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ diskette_io,
+ illegal_bop,
+ ega_video_io,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ MsBop0,
+ MsBop1,
+ MsBop2,
+ MsBop3,
+ MsBop4,
+ MsBop5,
+ MsBop6,
+ MsBop7,
+ MsBop8,
+ MsBop9,
+ MsBopA,
+ MsBopB,
+ MsBopC,
+ MsBopD,
+ MsBopE,
+ MsBopF,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ emm_init,
+ emm_io,
+ return_from_call,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ rtc_int,
+ re_direct,
+ D11_int,
+ D11_int,
+ D11_int,
+ int_287,
+ D11_int,
+ D11_int,
+ worm_init,
+ worm_io,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ ps_private_1,
+ ps_private_2,
+ ps_private_3,
+ ps_private_4,
+ ps_private_5,
+ ps_private_6,
+ ps_private_7,
+ ps_private_8,
+ ps_private_9,
+ ps_private_10,
+ ps_private_11,
+ ps_private_12,
+ ps_private_13,
+ ps_private_14,
+ ps_private_15,
+ illegal_bop,
+ bootstrap1,
+ bootstrap2,
+ bootstrap3,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ ms_windows,
+ msw_mouse,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ mouse_install1,
+ mouse_install2,
+ mouse_int1,
+ mouse_int2,
+ mouse_io_language,
+ mouse_io_interrupt,
+ mouse_video_io,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ illegal_bop,
+ switch_to_real_mode,
+ host_unsimulate,
+ control_bop };
+