diff options
Diffstat (limited to '')
-rw-r--r-- | private/mvdm/softpc.new/host/src/stubs.c | 614 |
1 files changed, 614 insertions, 0 deletions
diff --git a/private/mvdm/softpc.new/host/src/stubs.c b/private/mvdm/softpc.new/host/src/stubs.c new file mode 100644 index 000000000..881b28851 --- /dev/null +++ b/private/mvdm/softpc.new/host/src/stubs.c @@ -0,0 +1,614 @@ +#undef ANSI // until file tidied or better still, lost + +#include <windows.h> +#include <string.h> +#include <math.h> +#include <stdlib.h> +#include <stdio.h> +#include "host_def.h" +#include "insignia.h" +#include "xt.h" +#include "debug.h" +#include "sas.h" +#include "config.h" +#include "chkmallc.h" + +#ifdef X86GFX +#include "egacpu.h" +#include "egaread.h" +#endif + +#ifdef MONITOR +GLOBAL void sas_loads_to_transbuf IFN3(sys_addr, src, host_addr, dest, sys_addr, len) +{ + sas_loads (src, dest, len); +} + +/* write a string into M */ +GLOBAL void sas_stores_from_transbuf IFN3(sys_addr, dest, host_addr, src, sys_addr, len) +{ + sas_stores (dest, src, len); +} + +GLOBAL host_addr sas_transbuf_address IFN2(sys_addr, dest_intel_addr, sys_addr, length) +{ + UNUSED (dest_intel_addr); + return (sas_scratch_address (length)); +} +#endif + + +/*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: log1p */ + +#ifndef MONITOR +GLOBAL double log1p(x) +double x; +{ + return log(1+x); +} + +#endif /* !MONITOR */ + + +/*:::::::::::::::::::::::::::::::::::::::::::::::::::::: SAS wrapping stubs */ + +#ifdef MONITOR +GLOBAL void npx_reset() +{ + return; +} + +GLOBAL void initialise_npx() +{ + return; +} + +GLOBAL void sas_overwrite_memory IFN2(sys_addr, addr, int, type) +{ + UNUSED(addr); + UNUSED(type); +} + +LOCAL LONG stub_q_ev_count = 0; // holder for below + +/* Monitor controlled code will call quick event code immediately so the + * following needn't be at all accurate. + */ +void host_q_ev_set_count(value) +LONG value; +{ + stub_q_ev_count = value; +} + +LONG host_q_ev_get_count() +{ + return(stub_q_ev_count); +} + +int host_calc_q_ev_inst_for_time(LONG time) +{ + return(time); +} + +#ifndef CPU_40_STYLE +int host_calc_q_ev_time_for_inst(LONG inst) +{ + return(inst); +} +#endif + +////// The following support the major surgery to remove unneeded video stuff + +GLOBAL ULONG Gdp; +GLOBAL half_word bg_col_mask = 0x70; // usually defined in cga.c +GLOBAL READ_STATE read_state; + +ULONG sr_lookup[16] = // Handy array to extract all 4 plane values in one go +{ +#ifdef LITTLEND + 0x00000000,0x000000ff,0x0000ff00,0x0000ffff, + 0x00ff0000,0x00ff00ff,0x00ffff00,0x00ffffff, + 0xff000000,0xff0000ff,0xff00ff00,0xff00ffff, + 0xffff0000,0xffff00ff,0xffffff00,0xffffffff +#endif +#ifdef BIGEND + 0x00000000,0xff000000,0x00ff0000,0xffff0000, + 0x0000ff00,0xff00ff00,0x00ffff00,0xffffff00, + 0x000000ff,0xff0000ff,0x00ff00ff,0xffff00ff, + 0x0000ffff,0xff00ffff,0x00ffffff,0xffffffff +#endif +}; + +GLOBAL VOID glue_b_write (UTINY *addr, ULONG val) +{ + UNUSED(addr); + UNUSED(val); +} +GLOBAL VOID glue_w_write (UTINY *addr, ULONG val) +{ + UNUSED(addr); + UNUSED(val); +} +GLOBAL VOID glue_b_fill (UTINY *laddr, UTINY *haddr, ULONG val) +{ + UNUSED(laddr); + UNUSED(haddr); + UNUSED(val); +} +GLOBAL VOID glue_w_fill (UTINY *laddr, UTINY *haddr, ULONG val) +{ + UNUSED(laddr); + UNUSED(haddr); + UNUSED(val); +} +GLOBAL VOID glue_b_move(UTINY *laddr, UTINY *haddr, UTINY *src, UTINY src_type ) +{ + UNUSED(laddr); + UNUSED(haddr); + UNUSED(src); + UNUSED(src_type); +} +GLOBAL VOID glue_w_move(UTINY *laddr, UTINY *haddr, UTINY *src ) +{ + UNUSED(laddr); + UNUSED(haddr); + UNUSED(src); +} +GLOBAL VOID glue_b_fwd_move () { } +GLOBAL VOID glue_b_bwd_move () { } +GLOBAL VOID glue_w_fwd_move () { } +GLOBAL VOID glue_w_bwd_move () { } + +GLOBAL VOID _ega_gc_outb_mask(io_addr port, half_word value) +{ + UNUSED(port); + UNUSED(value); +} + +GLOBAL VOID _ega_gc_outb_mask_ff(io_addr port, half_word value) +{ + UNUSED(port); + UNUSED(value); +} + +GLOBAL VOID cga_init() +{ +} + +GLOBAL VOID cga_term() +{ +} + +GLOBAL VOID _simple_mark_lge() +{ +} + +GLOBAL VOID _simple_mark_sml() +{ +} + +GLOBAL int get_ega_switch_setting() +{ + return(0); +} + +GLOBAL VOID ega_read_init() // Do normal inits - ports will do this fully +{ + read_state.mode = 0; + read_state.colour_compare = 0x0f; + read_state.colour_dont_care = 0xf; +} + +GLOBAL VOID ega_read_term() +{ +} + +GLOBAL VOID ega_read_routines_update() +{ +} + +GLOBAL VOID update_shift_count() +{ +} + +GLOBAL VOID ega_write_init() +{ +} + +GLOBAL VOID ega_write_term() +{ +} + +GLOBAL VOID ega_write_routines_update(CHANGE_TYPE reason) +{ + UNUSED(reason); +} + +GLOBAL VOID set_mark_funcs() +{ +} + +GLOBAL ULONG setup_global_data_ptr() +{ + return(0xDefaced); +} + +GLOBAL VOID setup_vga_globals() +{ + check_malloc(EGA_CPU.globals, 1, VGA_GLOBALS); +} + +#endif //MONITOR + +/*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ASSERT CODE */ + + +void _assert(void *exp, void *file, unsigned line) +{ + char linestr[100]; + + OutputDebugString("ASSERT FAILED - "); + OutputDebugString(exp); + OutputDebugString(" "); + OutputDebugString(file); + + sprintf(linestr," (%d)\n",line); + OutputDebugString(linestr); +} + +/*:::::::::::::::::::::::::::: Unix specific string functions ::::::::::::::*/ + +char *index(char *string, int c) +{ + return(strchr(string, c)); +} + +char *rindex(char *string, int c) +{ + return(strrchr(string, c)); +} + +/*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/ + +host_mouse_in_use() +{ +return(FALSE); +} + +void redirector() {} +void reset_delta_data_structures() {} +void set_hfx_severity() {} + +host_check_for_lock() +{ + assert0(NO,"host_check_for_lock stubbed\n"); + return(0); +} + +host_place_lock(int dummy1) +{ + assert0(NO,"host_place_lock stubbed\n"); + return(0); +} + +host_clear_lock(int fd) +{ + assert0(NO,"host_clear_lock stubbed\n"); + return(0); +} + + +int host_com_send_delay_done(int dummy1, int dummy2) +{ + return(0); +} +#ifndef A2CPU +delta_cpu_test_frag() +{ + assert0(NO,"delta_cpu_test_frag stubbed\n"); + return(0); +} + +examine_delta_data_structs(int o, int i) +{ + assert0(NO,"examine_delta_data_structs stubbed\n"); + return(0); +} +code_gen_files_init() +{ + assert0(NO,"code_gen_files_init stubbed\n"); + return(0); +} +decode_files_init() +{ + assert0(NO,"decode_files_init stubbed\n"); + return(0); +} + +#ifdef ALPHA + +// +// temporary change to get Alpha CPU running +// in checked mode. Andy - 13/1/94 +// + +double get_287_reg_as_double(int i) +{ + extern char *GDP; + return(*(double *)(GDP + 0x80 + i * 8)); +} +#endif + +#ifdef CPU_40_STYLE + +GLOBAL BOOL sas_manage_xms IFN3(VOID *,start_addr, ULONG, cb, INT, a_or_f) +{ + printf("sas_manage_xms called(%lx,%lx,%lx)\n",start_addr,cb,a_or_f); + return (TRUE); +} + +#undef sas_loadw +GLOBAL void sas_loadw IFN2(sys_addr, addr, word *, val) +{ + *val = sas_w_at(addr); +} + +GLOBAL void host_sigio_event IPT0() +{ +} + +#endif /* CPU_40_STYLE */ + +#ifndef GENERIC_NPX +#ifndef CPU_40_STYLE +int get_287_sp() +{ + extern char *GDP; + return((int) (*(ULONG *)(GDP + 0x70))/8); +} +word get_287_tag_word() +{ + extern char *GDP; + return((int) *(ULONG *)(GDP + 0x74)); +} +word get_287_control_word() +{ + extern char *GDP; + return((int) *(ULONG *)(GDP + 0x68)); +} +word get_287_status_word() +{ + extern char *GDP; + return((int) *(ULONG *)(GDP + 0x6c)); +} +#endif /* CPU_40_STYLE */ +#endif /* GENERIC_NPX */ +#endif + +int rate_min; +int rate_max; +int compiling; +int rate_delta; +int show_stuff; +int stat_rate; +int compile_off[99]; +int rate_norm; +int cut_off_level; +int max_host_fragment_size; +int delta_err_message[100]; +int last_destination_address; + + +host_flip_real_floppy_ind() +{ + assert0(NO,"host_flip_real_floppy_ind stubbed\n"); + return(0); +} + +#ifndef A2CPU +int haddr_of_src_string; +int INTEL_STATUS; +int R_SI; +int R_DI; +int R_BP; +int R_OPA; +int R_DEF_SS; +int R_OPB; +int R_SP; +int R_DEF_DS; +int R_AX; +int R_BX; +int R_CX; +int R_DX; +int R_IP; +int R_ACT_CS; +int R_ACT_SS; +int R_OPR; +int R_ACT_DS; +int R_ACT_ES; +#endif +int compile_yoda_in; +int m_s_w; +int trap_delay_count = 0, temp_trap_flag = 0; +int cpui; +int sbp; + +host_EOA_hook() +{ + assert0(NO,"host_EOA_hook stubbed\n"); + return(0); +} + +getsdosunit() +{ + assert0(NO,"dispatch_q_event stubbed\n"); + return(1); +} + +#ifdef NOT_IN_USE +host_check_using_host_mouse() +{ + assert0(NO,"host_check_using_host_mouse stubbed\n"); + return(1); +} +host_deinstall_host_mouse() +{ + assert0(NO,"host_deinstall_host_mouse stubbed\n"); + return(1); +} +#endif + +int host_timer_2_frig_factor = 20; + +host_check_read_only_drive() +{ + assert0(NO,"host_check_read_only_drive stubbed\n"); + return(0); +} + +host_lock_drive_and_make_writable() +{ + assert0(NO,"host_lock_drive_and_make_writable stubbed\n"); + return(1); +} + +host_floppy_init() +{ + assert0(NO,"host_floppy_init stubbed\n"); + return(1); +} + +SHORT validate_hfx_drive() +{ + assert0(NO,"host_lpt_valid\n"); + return C_CONFIG_OP_OK; +} + +SHORT host_keymap_valid() +{ + assert0(NO,"host_keymap_valid\n"); + return C_CONFIG_OP_OK; +} + +VOID host_keymap_change() +{ + assert0(NO,"host_keymap_change\n"); +} + +char *host_strerror(int errno) +{ + assert1(NO,"Error : host_strerror (%d)\n",errno); + return("****** again\n"); +} + +int link(void) +{ +return -1; +} + +LOCAL ULONG dummy() +{ + return(0); +} + +GLOBAL ULONG (*clear_v7ptr)() = dummy; +GLOBAL ULONG (*paint_v7ptr)() = dummy; + +GLOBAL ULONG host_speed IFN1(ULONG, temp) +{ +return 10000L; +} + +#ifndef MONITOR + +// allows getIntelRegistersPointer to be exported bt ntvdm.def +getIntelRegistersPointer() +{ + assert0(NO,"getIntelRegistersPointer stubbed\n"); + return(0); +} + +#if 0 +// these two crept into WOW - they are x86 monitor'isms + +word getEIP() +{ + return(c_getIP()); +} + +void setEIP(val) +word val; +{ + c_setIP(val); +} +#endif + +int FlatAddress[1]; +int Ldt[1]; +int VdmTib; +int VdmTibStruct; + +void DispatchInterrupts() +{ +} + +#else //MONITOR + +#ifndef YODA +void check_I() +{ +} + +void force_yoda() +{ + printf("Yoda disabled on x86\n"); +} +#endif //YODA + +#endif //MONITOR + + +#ifndef MONITOR + +// +// davehart 9-Dec-92 HACKHACK +// Build fix -- we export cpu_createthread from ntvdm.exe, +// even though this function from v86\monitor\i386 doesn't +// exist on MIPS. +// +// If we really need to export the function, we may want to +// take the ntoskrnl.src -> obj\i386\ntoskrnl.def approach. +// + +VOID +cpu_createthread( + HANDLE Thread + ) +/*++ + +Routine Description: + + This routine adds a thread to the list of threads that could be executing + in application mode. + +Arguments: + + Thread -- Supplies a thread handle + +Return Value: + + None. + +--*/ +{ +} + +#endif // ndef MONITOR + +#ifndef MONITOR +ULONG CurrentMonitorTeb; +#endif + +void host_note_queue_added() +{ +} |