diff options
Diffstat (limited to 'private/mvdm/v86/scaffold/i386/fakebop.c')
-rw-r--r-- | private/mvdm/v86/scaffold/i386/fakebop.c | 502 |
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 }; + |