From e611b132f9b8abe35b362e5870b74bce94a1e58e Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 16 May 2020 20:51:50 -0700 Subject: initial commit --- private/mvdm/softpc.new/obj.vdm/c_regs.c | 431 +++++++++++++++++++ private/mvdm/softpc.new/obj.vdm/cdefine.inc | 69 +++ private/mvdm/softpc.new/obj.vdm/makefile | 6 + private/mvdm/softpc.new/obj.vdm/makefile.std | 6 + private/mvdm/softpc.new/obj.vdm/ntvdm.c | 354 +++++++++++++++ private/mvdm/softpc.new/obj.vdm/ntvdm.prf | 615 +++++++++++++++++++++++++++ private/mvdm/softpc.new/obj.vdm/ntvdm.src | 236 ++++++++++ private/mvdm/softpc.new/obj.vdm/resource.rc | 124 ++++++ private/mvdm/softpc.new/obj.vdm/sources | 156 +++++++ 9 files changed, 1997 insertions(+) create mode 100644 private/mvdm/softpc.new/obj.vdm/c_regs.c create mode 100644 private/mvdm/softpc.new/obj.vdm/cdefine.inc create mode 100644 private/mvdm/softpc.new/obj.vdm/makefile create mode 100644 private/mvdm/softpc.new/obj.vdm/makefile.std create mode 100644 private/mvdm/softpc.new/obj.vdm/ntvdm.c create mode 100644 private/mvdm/softpc.new/obj.vdm/ntvdm.prf create mode 100644 private/mvdm/softpc.new/obj.vdm/ntvdm.src create mode 100644 private/mvdm/softpc.new/obj.vdm/resource.rc create mode 100644 private/mvdm/softpc.new/obj.vdm/sources (limited to 'private/mvdm/softpc.new/obj.vdm') diff --git a/private/mvdm/softpc.new/obj.vdm/c_regs.c b/private/mvdm/softpc.new/obj.vdm/c_regs.c new file mode 100644 index 000000000..5e69470ec --- /dev/null +++ b/private/mvdm/softpc.new/obj.vdm/c_regs.c @@ -0,0 +1,431 @@ +#ifndef MONITOR + +// +// temp file for Assembler CPU which provides a simple C cpu -> A cpu register +// mapping for MS libraries (DEM/WOW32/XMS) which are linked for ccpu register +// gets & sets. STF. + +#include "host_def.h" +#include "insignia.h" +#include "xt.h" +#include CpuH + +#ifdef A3CPU + +#ifndef CCPU +half_word c_getAL() +{ + half_word xal; //pedantic method put in to check compiler correct etc... + xal = a3_getAL(); + return(xal); +} + +half_word c_getAH() +{ + half_word xah; + xah = a3_getAH(); + return(xah); +} + +word c_getAX() +{ + word xax; + xax = a3_getAX(); + return(xax); +} + +half_word c_getBL() +{ + half_word xbl; + xbl = a3_getBL(); + return(xbl); +} + +half_word c_getBH() +{ + half_word xbh; + xbh = a3_getBH(); + return(xbh); +} + +word c_getBP() +{ + word xbp; + xbp = a3_getBP(); + return(xbp); +} + +word c_getBX() +{ + word xbx; + xbx = a3_getBX(); + return(xbx); +} + +INT c_getCF() +{ + INT xcf; + + xcf = a3_getCF(); + return(xcf); +} + +half_word c_getCH() +{ + half_word xch; + xch = a3_getCH(); + return(xch); +} + +half_word c_getCL() +{ + half_word xcl; + xcl = a3_getCL(); + return(xcl); +} + +word c_getCS() +{ + word xcs; + xcs = a3_getCS(); + return(xcs); +} + +word c_getCX() +{ + word xcx; + xcx = a3_getCX(); + return(xcx); +} + +half_word c_getDH() +{ + half_word xdh; + xdh = a3_getDH(); + return(xdh); +} + +word c_getDI() +{ + word xdi; + xdi = a3_getDI(); + return(xdi); +} + +half_word c_getDL() +{ + half_word xdl; + xdl = a3_getDL(); + return(xdl); +} + +word c_getDS() +{ + word xds; + xds = a3_getDS(); + return(xds); +} + +word c_getDX() +{ + word xdx; + xdx = a3_getDX(); + return(xdx); +} + +word c_getES() +{ + word xes; + xes = a3_getES(); + return(xes); +} + +word c_getSI() +{ + word xsi; + xsi = a3_getSI(); + return(xsi); +} + +word c_getSP() +{ + word xsp; + xsp = a3_getSP(); + return(xsp); +} + +word c_getIP() +{ + word xip; + xip = a3_getIP(); + return(xip); +} + +word c_getSS() +{ + word xss; + xss = a3_getSS(); + return(xss); +} + +word c_getGS() +{ +#ifndef PROD + printf("NO NO NO NO NO getGS - I'm not a 386\n"); +#endif + return(0); +} + +word c_getFS() +{ +#ifndef PROD + printf("NO NO NO NO NO getFS - I'm not a 386\n"); +#endif + return(0); +} + +word c_getAF() +{ + return(a3_getAF()); +} + +word c_getDF() +{ + return(a3_getDF()); +} + +word c_getIF() +{ + return(a3_getIF()); +} + +word setMSW() +{ + return(a3_p_setMSW()); +} + +word c_getOF() +{ + return(a3_getOF()); +} + +word c_getPF() +{ + return(a3_getPF()); +} + +word c_getSF() +{ + return(a3_getSF()); +} + +word c_getZF() +{ + return(a3_getZF()); +} +void c_setAL(val) +half_word val; +{ + a3_setAL(val); +} + +void c_setAH(val) +half_word val; +{ + a3_setAH(val); +} + +void c_setAX(val) +word val; +{ + a3_setAX(val); +} + +void c_setBP(val) +word val; +{ + a3_setBP(val); +} + +void c_setBL(val) +half_word val; +{ + a3_setBL(val); +} + +void c_setBH(val) +half_word val; +{ + a3_setBH(val); +} + +void c_setBX(val) +word val; +{ + a3_setBX(val); +} + +void c_setCF(val) +INT val; +{ + a3_setCF(val); +} + +void c_setCH(val) +half_word val; +{ + a3_setCH(val); +} + +void c_setCL(val) +half_word val; +{ + a3_setCL(val); +} + +void c_setCX(val) +word val; +{ + a3_setCX(val); +} + +void c_setDH(val) +half_word val; +{ + a3_setDH(val); +} + +void c_setDL(val) +half_word val; +{ + a3_setDL(val); +} + +void c_setDX(val) +word val; +{ + a3_setDX(val); +} + +void c_setSI(val) +word val; +{ + a3_setSI(val); +} + +void c_setDI(val) +word val; +{ + a3_setDI(val); +} + + +void c_setAF(word val) +{ + a3_setAF(val); +} + +void c_setIF(word val) +{ + a3_setIF(val); +} + +void c_setOF(word val) +{ + a3_setOF(val); +} + +void c_setPF(word val) +{ + a3_setPF(val); +} + +void c_setSF(word val) +{ + a3_setSF(val); +} + +void c_setMSW(word val) +{ + a3_p_setMSW(val); +} + +void c_setZF(word val) +{ + a3_setZF(val); +} + +void c_setIP(word val) +{ + a3_setIP(val); +} + +void c_setDF(word val) +{ + a3_setDF(val); +} +void c_setSP(val) +word val; +{ + a3_setSP(val); +} + +INT c_setSS(val) +word val; +{ + return(a3_setSS(val)); +} + +INT c_setES(val) +word val; +{ + return(a3_setES(val)); +} + +INT c_setDS(val) +word val; +{ + return(a3_setDS(val)); +} + +INT c_setCS(val) +word val; +{ + return(a3_setCS(val)); +} + +INT c_setGS(val) +word val; +{ +#ifndef PROD + printf("NO NO NO NO NO setGS - I'm not a 386\n"); +#endif + return(0); +} + +INT c_setFS(val) +word val; +{ +#ifndef PROD + printf("NO NO NO NO NO setFS - I'm not a 386\n"); +#endif + return(0); +} +#endif /* CCPU */ + + +// these two crept into WOW - they are x86 monitor'isms + +word getEIP() +{ + return(a3_getIP()); +} + +void setEIP(val) +word val; +{ + a3_setIP(val); +} + +#endif // A3CPU +#endif // !MONITOR diff --git a/private/mvdm/softpc.new/obj.vdm/cdefine.inc b/private/mvdm/softpc.new/obj.vdm/cdefine.inc new file mode 100644 index 000000000..9c043e527 --- /dev/null +++ b/private/mvdm/softpc.new/obj.vdm/cdefine.inc @@ -0,0 +1,69 @@ +# Check for Checked (dev) or Free (PROD) builds. + +!IF "$(NTDEBUG)" == "" || "$(NTDEBUG)" == "retail" + +SPC_VAR=-DPROD + +!ELSE + +!IF "$(PIG)" == "" + +!IF "$(HUNTER)" == "" + +SPC_VAR= + +!ELSE + +SPC_VAR=-DHUNTER + +!ENDIF + +!ELSE + +SPC_VAR=-DPIG + +!ENDIF + +!ENDIF + + +SOFTPC_TREE=$(BASEDIR)\private\mvdm\softpc.new + +# Set machine specific variables. Differences are for X86 vs. RISC + +!IF $(386) + +SPC_MC_DEF= -DMONITOR \ + -DC_VID \ + -DX86GFX +!ELSE + +# not an X86. At this point, all RISC architectures have the same defines. + +!IF "$(CCPU)" == "" +CPU_DEFS= -DCPU_40_STYLE +!ELSE +CPU_DEFS= -DCPU_40_STYLE -DCCPU -DC_VID +!ENDIF + +SPC_MC_DEF= $(CPU_DEFS) \ + -DNEW_CPU \ + -DSPC386 \ + -DSIM32 \ + -DV7VGA + + + + +#Amend include path to include CPU build system generated files +!if "$(NTDEBUG)" == "" +CPU_INCLUDES=$(SOFTPC_TREE)\host\inc\$(PROCESSOR_ARCHITECTURE)\prod +!else +CPU_INCLUDES=$(SOFTPC_TREE)\host\inc\$(PROCESSOR_ARCHITECTURE)\pig +!endif + +INCLUDES=$(CPU_INCLUDES);$(INCLUDES) + +!ENDIF + +C_DEFINES= $(SPC_VAR) $(SPC_MC_DEF) -DANSI diff --git a/private/mvdm/softpc.new/obj.vdm/makefile b/private/mvdm/softpc.new/obj.vdm/makefile new file mode 100644 index 000000000..6ee4f43fa --- /dev/null +++ b/private/mvdm/softpc.new/obj.vdm/makefile @@ -0,0 +1,6 @@ +# +# DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source +# file to this component. This file merely indirects to the real make file +# that is shared by all the components of NT OS/2 +# +!INCLUDE $(NTMAKEENV)\makefile.def diff --git a/private/mvdm/softpc.new/obj.vdm/makefile.std b/private/mvdm/softpc.new/obj.vdm/makefile.std new file mode 100644 index 000000000..6ee4f43fa --- /dev/null +++ b/private/mvdm/softpc.new/obj.vdm/makefile.std @@ -0,0 +1,6 @@ +# +# DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source +# file to this component. This file merely indirects to the real make file +# that is shared by all the components of NT OS/2 +# +!INCLUDE $(NTMAKEENV)\makefile.def diff --git a/private/mvdm/softpc.new/obj.vdm/ntvdm.c b/private/mvdm/softpc.new/obj.vdm/ntvdm.c new file mode 100644 index 000000000..be19e3327 --- /dev/null +++ b/private/mvdm/softpc.new/obj.vdm/ntvdm.c @@ -0,0 +1,354 @@ +#include +#include +#include +#include +#include "host_def.h" +#include "insignia.h" +#include +#include "xt.h" +#include "error.h" +#include "host_rrr.h" +#include "host_nls.h" +#include "nt_timer.h" + + + +void CpuEnvInit(void); + +typedef struct _CpuEnvironmentVariable { + struct _CpuEnvironmentVariable *Next; + char *Data; + char Name[1]; +} CPUENVVAR, *PCPUENVVAR; + +PCPUENVVAR CpuEnvVarListHead=NULL; + +#if DBG +BOOLEAN verboseGetenv; +#endif + + +INT host_main(INT argc, CHAR **argv); // located in base\support\main.c + +_CRTAPI1 main(int argc, CHAR ** argv) +{ + int ret=-1; + + /* + * Intialize synchronization events for the timer\heartbeat + * so that we can always suspend the heartbeat when an exception + * occurs. + */ + TimerInit(); + + + + try { + + CpuEnvInit(); + + /* + * Load in the default system error message, since a resource load + * will fail when we are out of memory, if this fails we must exit + * to avoid confusion. + */ + nls_init(); + + ret = host_main(argc, argv); + } + except(VdmUnhandledExceptionFilter(GetExceptionInformation())) { + ; // we shouldn't arrive here + } + + return ret; +} + + + + + + +// +// The following function is placed here, so build will resolve references to +// DbgBreakPoint here, instead of NTDLL. +// + +VOID +DbgBreakPoint( + VOID + ) +/*++ + +Routine Description: + + This routine is a substitute for the NT DbgBreakPoint routine. + If a user mode debugger is atached we invoke the real DbgBreakPoint() + thru the win32 api DebugBreak. + + If no usermode debugger is attached: + - free build no effect + - checked build raise an acces violation to invoke the system + hard error popup which will give user a chance to invoke + ntsd. + +Arguments: + + None. + +Return Value: + + None. + +--*/ +{ +HANDLE MyDebugPort; +DWORD dw; + + // are we being debugged ?? + dw = NtQueryInformationProcess( + NtCurrentProcess(), + ProcessDebugPort, + &MyDebugPort, + sizeof(MyDebugPort), + NULL ); + if (!NT_SUCCESS(dw) || MyDebugPort == NULL) { +#ifndef PROD + RaiseException(STATUS_ACCESS_VIOLATION, 0L, 0L, NULL); +#endif + return; + } + + DebugBreak(); +} + + + + + +/* + * Softpc env variables are mapped to the registry + * + * "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\WOW\CpuEnv" + * + * The string values for the CpuEnv key are read at initialization + * into the CpuEnv linked list. The Environment variables are defined + * as string key values, where the name of the value is equivalent to + * the Cpu Environment Variable name, and the string value is equivalent + * to the value of the environment variable value. This allows the + * emulator defaults to be overridden, by adding the appropriate value + * to CpuEnv subkey. Under standard retail setup there won't normally + * be a CpuEnv subkey, and NO cpu env variables defined to minimize + * code\data on a standard retail system. + * + */ + + + +/* + * Adds a CpuEnv KEY_VALUE_FULL_INFORMATION to the CpuEnvList + */ +BOOLEAN +AddToCpuEnvList( + PKEY_VALUE_FULL_INFORMATION KeyValueInfo + ) +{ + NTSTATUS Status; + ULONG BufferSize; + PCPUENVVAR CpuEnvVar; + UNICODE_STRING UnicodeString; + ANSI_STRING ValueName; + ANSI_STRING ValueData; + char NameBuffer[MAX_PATH+sizeof(WCHAR)]; + char DataBuffer[MAX_PATH+sizeof(WCHAR)]; + + + /* + * Convert Value Name and Data strings from unicode to ansi + */ + + ValueName.Buffer = NameBuffer; + ValueName.MaximumLength = sizeof(NameBuffer) - sizeof(WCHAR); + ValueName.Length = 0; + UnicodeString.Buffer = (PWSTR)KeyValueInfo->Name; + UnicodeString.MaximumLength = + UnicodeString.Length = (USHORT)KeyValueInfo->NameLength; + Status = RtlUnicodeStringToAnsiString(&ValueName, &UnicodeString,FALSE); + if (!NT_SUCCESS(Status)) { + return FALSE; + } + + ValueData.Buffer = DataBuffer; + ValueData.MaximumLength = sizeof(DataBuffer) - sizeof(WCHAR); + ValueData.Length = 0; + UnicodeString.Buffer = (PWSTR)((PBYTE)KeyValueInfo + KeyValueInfo->DataOffset); + UnicodeString.MaximumLength = + UnicodeString.Length = (USHORT)KeyValueInfo->DataLength; + Status = RtlUnicodeStringToAnsiString(&ValueData, &UnicodeString, FALSE); + if (!NT_SUCCESS(Status)) { + return FALSE; + } + + + /* + * Allocate CPUENVLIST structure, with space for the ansi strings + */ + CpuEnvVar = malloc(sizeof(CPUENVVAR)+ // list structure size + ValueName.Length + // strlen Name + ValueData.Length + // strlen Data + 1 // Null for Data + ); + if (!CpuEnvVar) { + return FALSE; + } + + + /* + * Copy in the ansi strings, and link it into CpuEnvVar List + */ + memcpy(CpuEnvVar->Name, ValueName.Buffer, ValueName.Length); + *(CpuEnvVar->Name + ValueName.Length) = '\0'; + CpuEnvVar->Data = CpuEnvVar->Name + ValueName.Length + 1; + memcpy(CpuEnvVar->Data, ValueData.Buffer, ValueData.Length); + *(CpuEnvVar->Data + ValueData.Length) = '\0'; + CpuEnvVar->Next = CpuEnvVarListHead; + CpuEnvVarListHead = CpuEnvVar; + + return TRUE; +} + + + + +/* + * Reads the CpuEnv values from the registry, into CpuEnvList + */ +void +CpuEnvInit( + void + ) +{ + int Index; + NTSTATUS Status; + HANDLE CpuEnvKey = NULL; + ULONG ResultLength; + UNICODE_STRING UnicodeString; + OBJECT_ATTRIBUTES ObjectAttributes; + PKEY_VALUE_FULL_INFORMATION KeyValueInfo; + BYTE NameDataBuffer[sizeof(KEY_VALUE_FULL_INFORMATION) + MAX_PATH*2*sizeof(WCHAR)]; + + + + KeyValueInfo = (PKEY_VALUE_FULL_INFORMATION) NameDataBuffer; + +#ifndef MONITOR +/* + * BUGBUG temp hack code to add two env var, which aren't properly + * defaulted to in the risc cpu emulator + * + * THIS is to be removed before SUR ship 19-Dec-1995 Jonle + */ + { + PWCHAR Data; + + wcscpy(KeyValueInfo->Name, L"Soft486Buffers"); + KeyValueInfo->NameLength = wcslen(KeyValueInfo->Name) * sizeof(WCHAR); + Data = (PWCH)((PBYTE)KeyValueInfo->Name + KeyValueInfo->NameLength + sizeof(WCHAR)); + wcscpy(Data, L"511"); + KeyValueInfo->DataLength = wcslen(Data) * sizeof(WCHAR); + KeyValueInfo->DataOffset = (PBYTE)Data - (PBYTE)KeyValueInfo; + AddToCpuEnvList(KeyValueInfo); + + wcscpy(KeyValueInfo->Name, L"LCIF_FILENAME"); + KeyValueInfo->NameLength = wcslen(KeyValueInfo->Name) * sizeof(WCHAR); + Data = (PWCH)((PBYTE)KeyValueInfo->Name + KeyValueInfo->NameLength + sizeof(WCHAR)); + wcscpy(Data, L"R lcif"); + KeyValueInfo->DataLength = wcslen(Data) * sizeof(WCHAR); + KeyValueInfo->DataOffset = (PBYTE)Data - (PBYTE)KeyValueInfo; + AddToCpuEnvList(KeyValueInfo); + } + +#endif + + + + RtlInitUnicodeString( + &UnicodeString, + L"\\REGISTRY\\MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Wow\\CpuEnv" + ); + + InitializeObjectAttributes(&ObjectAttributes, + &UnicodeString, + OBJ_CASE_INSENSITIVE, + (HANDLE)NULL, + NULL + ); + + Status = NtOpenKey(&CpuEnvKey, + KEY_READ, + &ObjectAttributes + ); + + // + // If there is no CpuEnv key, CpuEnvList is empty. + // + if (!NT_SUCCESS(Status)) { + return; + } + + Index = 0; + while (TRUE) { + Status = NtEnumerateValueKey(CpuEnvKey, + Index, + KeyValueFullInformation, + KeyValueInfo, + sizeof(NameDataBuffer), + &ResultLength + ); + + if (!NT_SUCCESS(Status) || !AddToCpuEnvList(KeyValueInfo)) { + break; + } + + Index++; + }; + + NtClose(CpuEnvKey); + +#if DBG + { + char *pEnvStr; + pEnvStr = getenv("VERBOSE_GETENV"); + verboseGetenv = pEnvStr && !_stricmp(pEnvStr, "TRUE"); + } +#endif + +} + + + +/* + * In order to catch all references, we define our own + * version of the CRT getenv, which does the mapping. + */ +char * _CRTAPI1 getenv(const char *Name) +{ + PCPUENVVAR CpuEnvVar; + char *Value = NULL; + + CpuEnvVar = CpuEnvVarListHead; + while (CpuEnvVar) { + if (!_stricmp(CpuEnvVar->Name, Name)) { + Value = CpuEnvVar->Data; + break; + } + CpuEnvVar = CpuEnvVar->Next; + } + +#if DBG + if (verboseGetenv) { + DbgPrint("getenv %s:<%s>\n", Name, Value); + } +#endif + + return Value; +} diff --git a/private/mvdm/softpc.new/obj.vdm/ntvdm.prf b/private/mvdm/softpc.new/obj.vdm/ntvdm.prf new file mode 100644 index 000000000..6d70d669b --- /dev/null +++ b/private/mvdm/softpc.new/obj.vdm/ntvdm.prf @@ -0,0 +1,615 @@ +host_ica_unlock@0 +host_ica_lock@0 +BlockWOWIdle@4 +EndUseLockedPMStack@0 +MS_bop_3@0 +VDDRetrieveNtHandle@16 +getMSW@0 +DpmiDispatch@0 +FastEnterPm@0 +EventVdmBop@0 +DpmiFaultHandlerIret16@0 +Sim32pGetVDMPointer@8 +host_lpt_heart_beat@0 +PlaySound@4 +clocksSinceCounterUpdate@12 +_allmul +SWTMR_time_tick@0 +GetPerfCounterUsecs@8 +getIdealTime@4 +host_timer_event@0 +WOWIdle@4 +host_GetSysTime@4 +DispatchInterrupts@0 +issueIREQ0@4 +updateCount@0 +LazyBeep@8 +DemHeartBeat@0 +getIF@0 +time_strobe@0 +PlayContinuousTone@0 +updateIdealTime@0 +RtcTick@4 +timer_generate_int@0 +__sbh_alloc_block +updateCounter@0 +host_com_heart_beat@0 +DelayHeartBeat@4 +NtVdmControl@8 +host_flpy_heart_beat@0 +cpu_interrupt@8 +ThreadLookUp@4 +DpmiSetFaultHandler@0 +getIP@0 +HostIdleNoActivity@0 +printer_bop_openclose@4 +DemDispatch@4 +ica_hw_interrupt_cancel@8 +getBL@0 +NoTranslation@0 +getSI@0 +demFileTimes@0 +DosxTranslated@0 +getBX@0 +MS_bop_0@0 +printer_io@0 +DpmiXlatInt21Call@0 +DpmiSetDescriptorEntry@0 +free +DpmiSwitchToProtectedMode@0 +getDX@0 +getSS@0 +DpmiSetProtectedmodeInterrupt@0 +switch_to_protected_mode@0 +host_DelayHwInterrupt@12 +ica_clear_int@8 +DpmiSwitchToDosxStack@4 +SetPSP@0 +switch_to_real_mode@0 +setCF@4 +VDDAssociateNtHandle@12 +getSP@0 +VDDAllocateDosHandle@12 +ica_restart_interrupts@4 +IgetSP@0 +IOCTL@0 +cpu_simulate@0 +ica_scan_irr@4 +getCS@0 +setCX@4 +DpmiSwitchToRealMode@0 +DpmiSaveSegmentsAndStack@4 +DpmiSwitchFromDosxStack@0 +DpmiRestoreSegmentsAndStack@0 +DpmiFreeAllBuffers@0 +setSP@4 +host_unsimulate@0 +SetDTA@0 +setIP@4 +DpmiPushRmInt@4 +GetFreeSftEntry@8 +SuspendTimerThread@0 +setDX@4 +DpmiSimulateIretCF@0 +DispatchHwInterrupt@0 +ica_accept@4 +ica_intack@4 +ica_RestartInterrupts@4 +DpmiSetX86Descriptor@12 +ReinitIdealTime@4 +GetPspFFindList@4 +FloppyTerminatePDB@4 +host_ExitThread@4 +VDDTerminateUserHook@4 +HostTerminatePDB@4 +host_lpt_dos_close@4 +demTerminatePDB@0 +FdiskTerminatePDB@4 +cpu_exitthread@0 +__sbh_alloc_block_from_page +__sbh_free_block +malloc +ThreadStartupRoutine@4 +cpu_createthread@4 +rtc_init@0 +host_lpt_dos_open@4 +__sbh_find_block +EventVdmIntAck@0 +host_init_bda_timer@0 +CreatePSP@0 +ResetAlarm@0 +_nh_malloc +ResumeTimerThread@0 +FastLeavePm@0 +host_CreateThread@24 +_heap_alloc +fla_outb@8 +ppi_init@0 +get_scanlines@0 +find_mode_table@8 +hostModeChange@0 +demFindFirst@0 +calcScreenParams@8 +MS_bop_4@0 +ShowStartGlass@4 +host_com_lock@4 +set_index_state@0 +nt_set_screen_scale@4 +getCH@0 +nt_set_border_colour@4 +dma_init@0 +diskette_post@0 +nt_change_plane_mask@4 +WriteExpanded@12 +diskette_int@0 +fast_disk_bios_detach@4 +emu_8253@12 +load_font@20 +fast_disk_bios_attach@4 +get_screen_scale@0 +nt_cursor_size_changed@8 +ica_interrupt_cpu@8 +InitScreenDesc@0 +CreateDisplayPalette@0 +SetupConsoleMode@0 +demLoadDos@0 +deinstall_host_mouse@0 +emm_init@0 +mouse_in_use@0 +mouse_reset@0 +sprintf +SegmentFree@8 +loadNativeBIOSfont@4 +printer_setup_table@4 +resetNowCur@0 +MouseAttachMenuItem@4 +HeartBeatThread@4 +vga_seq_clock@8 +loadCounter@0 +ConsoleInit@0 +setOutputAfterMode@0 +setCH@4 +vga_init@0 +init_vga_globals@0 +GetFFindEntryByFindId@4 +nt_init_screen@0 +vga_dac_outb@8 +vga_gc_read_map@8 +vga_dac_data_outb@8 +vga_ipstat1_inb@8 +vga_gc_misc@8 +ExpandConfigFiles@4 +vga_seq_outb_index@8 +vga_gc_dont_care@8 +host_gfi_rdiskette_active@12 +setCL@4 +vga_gc_mask_ff@8 +IsDebuggee@0 +com_post@4 +vga_crtc_outb@8 +low_set_mode@4 +ega_video_init@0 +vga_seq_map_mask@8 +vga_misc_inb@8 +xmsNotifyHookI15@0 +host_main@8 +fdisk_reset@0 +AddSystemFiles@0 +vga_gc_outb_index@8 +host_applInit@8 +vga_gc_enable_set@8 +xmsQueryExtMem@0 +RegisterEOIHook@8 +vote_vga_mode@0 +xmsAllocBlock@0 +outputHigh@0 +CounterBufferLoaded@0 +xmsInitUMB@0 +ega_read_routines_update@0 +xmsA20@0 +xmsMoveBlock@0 +demClose@0 +mouse_init@0 +mouse_outb@8 +GfxReset@0 +update_shift_count@0 +waitingFor2ndWrite@8 +setAX@4 +DeleteConfigFiles@0 +TimerInit@0 +memory_size@0 +cmos_post@0 +cmdGetAutoexecBat@0 +InterruptInit@0 +init_vga_dac@4 +DBGInit@8 +vga_gc_set_reset@8 +setIF@4 +demCreateCommon@4 +setCS@4 +nt_init_event_thread@0 +host_fdisk_active@12 +getCL@0 +host_fdisk_get_params@16 +host_using_fdisk@4 +host_com_unlock@4 +host_fdisk_valid@16 +ica1_init@0 +ica1_post@0 +com_int_data@12 +ica0_post@0 +ica0_init@0 +demIOCTL@0 +fl_disk_type@4 +fl_disk_parms@4 +disable_gfx_update_routines@0 +gfi_drive_type@4 +SetupInstallableVDD@0 +fdc_command_completed@8 +host_runtime_init@0 +IgetDX@0 +host_runtime_set@8 +fla_init@0 +trap_ndma@0 +fla_inb@8 +gfi_high@8 +WriteFileAssert@12 +DpmiInitRegisterSize@0 +flag_mode_change_required@0 +getDL@0 +MapASCIIZDSDX@0 +InitDetect@0 +host_mouse_install1@0 +demDOSDispRet@0 +kb_setup_vectors@0 +reset_paint_routines@0 +InitSound@4 +GetPIFConfigFiles@8 +cmdGetNextCmd@0 +DpmiDpmiInUse@0 +fdisk_ioattach@0 +update_banking@0 +diskette_io@0 +dma_post@0 +demEntryDosApp@0 +cmdComSpec@0 +host_block_timer@0 +init_host_uis@0 +cmdInitConsole@0 +ega_read_init@0 +demCreateNew@0 +nt_rflop_reset@8 +ega_mode_init@0 +mouse_installed@0 +setDI@4 +ConsoleMenuControl@12 +host_memset@12 +vga_gc_rotate@8 +cmdSetInfo@0 +strtoul +display_string@4 +setBL@4 +vga_gc_compare@8 +InitPerfCounter@0 +set_floppy_parms@4 +IsConfigCommand@12 +_ioinit +cmdGetInitEnvironment@0 +_heap_init +xmsDisableA20Wrapping@0 +video_init@0 +mouse_install1@0 +follow_ptr@4 +xmsEnableA20Wrapping@0 +vga_misc_outb@8 +MS_bop_6@0 +MS_bop_1@0 +reset@0 +CmdDispatch@4 +getDI@0 +setBX@4 +IsVdmRedirLoaded@0 +search_for_roms@0 +demSetHardErrorInfo@0 +demFdiskInit@0 +cmos_read@4 +demFloppyInit@0 +sas_scratch_address@4 +demClientErrorEx@12 +main +MS_bop_E@0 +MS_bop_F@0 +WaitIcaLockFullyInitialized@0 +DpmiPassTableAddress@0 +printer_post@4 +nt_rflop_command@8 +gfi_fdc_command@8 +nt_fdisk_init@12 +cmdGetKbdLayout@0 +patch_rom@8 +in_index_state@0 +com_init@4 +recalc_screen_params@0 +gvi_init@4 +nt_rflop_drive_type@4 +setDL@4 +cmos_inb@8 +cmos_pickup@0 +host_fdisk_seek0@4 +InitializeIcaLock@0 +nt_start_event_thread@0 +host_com_ioctl@12 +set_banking@8 +SWTMR_gate@8 +scs_init@8 +host_com_reset@4 +CMDInit@8 +outputWaveForm@20 +isgraph +setTriggerCond@0 +getES@0 +gfi_init@0 +gfi_floppy_active@12 +gfi_empty_active@12 +initialise_npx@0 +IsCdRomFile@4 +screen_refresh_required@0 +fdisk_physattach@4 +GetROMsMapped@0 +ch_malloc@4 +DBGDispatch@0 +translate_old@4 +DpmiGetFastBopEntry@0 +CreateNewUMBNode@12 +host_fdisk_change@8 +uninit@8 +IdealTimeInit@0 +Timer_init@0 +counter_init@4 +timer_init@0 +timer_post@0 +sas_init@4 +sas_connect_memory@12 +sas_term@0 +sas_memory_size@0 +sas_memory_type@4 +sas_enable_20_bit_wrapping@0 +sas_disable_20_bit_wrapping@0 +cmos_outb@8 +sas_w_at@4 +sas_dw_at@4 +sas_store@8 +sas_storew@8 +sas_storedw@8 +sas_loads@12 +sas_stores@12 +mainCRTStartup +demDasdInit@0 +sas_hw_at_no_check@4 +sas_w_at_no_check@4 +sas_store_no_check@8 +sas_storew_no_check@8 +effective_addr@8 +sas_twenty_bit_wrapping_enabled@0 +demWOWFiles@0 +host_com_da_int_change@12 +demIoctlChangeable@0 +cpu_init@0 +demSetDTALocation@0 +demIsDebug@0 +cmdCreateTempFile@8 +XMSDispatch@4 +cmos_write_byte@8 +_setargv +time_of_day_init@0 +host_print_auto_feed@8 +nls_init@0 +idle_ctl@4 +realloc +vga_ac_outb@8 +vga_seq_char_map@8 +HostReleaseKbd@0 +WaitKbdHdw@4 +host_com_disable_open@8 +gfi_reset@8 +SegmentLoad@20 +getIntelRegistersPointer@0 +DpmiInitDosx@0 +get_total_pages@0 +cursor_changed@8 +getCF@0 +DpmiAllocateXmem@0 +ega_seq_reset@8 +ReturnESBX@0 +equipment@0 +sas_loadw@8 +GetDriveTypeOem@4 +DpmiInitApp@0 +keyboard_init@0 +getAX@0 +setup_vga_globals@0 +setup_global_data_ptr@0 +DpmiGetMemoryInfo@0 +UpdateKbdInt15@8 +GetPIFData@8 +config@0 +config_inquire@8 +vga_crtc_inb@8 +vga_seq_mem_mode@8 +xmsCommitBlock@8 +DpmiAllocateVirtualMemory@8 +SetPifDefaults@4 +ega_write_routines_update@4 +xmsQueryFreeExtMem@0 +nt_kb_prepare@0 +demGetDPBList@0 +DpmiPassPmStackInfo@0 +InitialiseDosEmulation@8 +hda_init@0 +fdisk_iodetach@0 +host_lpt_flush_initialize@0 +enable_gfx_update_routines@0 +process_pif_exe@4 +vga_gc_mode@8 +host_reset@0 +IsBlockCommitted@8 +SAAllocate@12 +SAQueryFree@12 +AllocateChunkAt@16 +CommitChunk@16 +SAInitialize@20 +setAH@4 +getAH@0 +CreateFileOem@28 +copyConsoleToRegen@16 +disableUpdates@0 +setVDMCursorPosition@8 +locateNativeBIOSfonts@0 +AddTempIVTFixups@0 +enableUpdates@0 +getCX@0 +setBP@4 +nt_rdiskette_open_drive@4 +nt_gfi_rdiskette_term@4 +GetConsoleDisplayMode@4 +outb@8 +setES@4 +getBP@0 +cassette_io@0 +AT_kbd_init@0 +timestamp@0 +nt_gfi_rdiskette_init@4 +nt_rflop_rate@8 +GetPhysicalDriveType@4 +CopyDirInfoToDosData@12 +FileFindNext@8 +FileFindClose@4 +FileFindOpen@12 +demGetPhysicalDriveType@4 +demChgFilePtr@0 +cmdCreateVDMEnvironment@4 +DpmiMapString@12 +_strupr +tolower +NIDDB_Allocate_Instance_Data@12 +DpmiUnmapString@8 +get_lim_backfill_segment@0 +get_lim_configuration_data@4 +mouse_driver_initialisation@0 +DpmiMapAndCopyBuffer@8 +DemInit@8 +ega_set_mode@0 +video_effective_addr@8 +initTextSection@0 +GetWowKernelCmdLine@0 +host_timer_init@0 +setAL@4 +InitUMBList@0 +inb@8 +io_define_inb@8 +ica_inb@8 +ica_outb@8 +ica_hw_interrupt@12 +io_connect_port@12 +demChMod@0 +UpdateCmosTime@0 +do_checksum@0 +verify_equip_byte@4 +cmos_error@24 +DpmiFreeBuffer@8 +demFileFindFirst@12 +DemOemToUni@8 +CpuEnvInit@0 +GetFileAttributesOem@4 +clear_buff_6805@0 +getAL@0 +clear_string@0 +demGetDrives@0 +IgetDI@0 +init_key_arrays@0 +demGetBootDrive@0 +demClientError@8 +io_init@0 +disk_post@0 +GetPerfCounter@0 +host_runtime_inquire@4 +MS_bop_2@0 +cmdGetCurrentDir@0 +q_event_init@0 +RegisterWOWIdle@0 +SearchFile@16 +io_disconnect_port@8 +demOpen@0 +IsNamedPipeName@4 +FillSrchDta@8 +_cinit +fl_disk_reset@4 +XMSInit@8 +printer_init@4 +sas_load@8 +keyboard_post@0 +KbdResume@0 +__initstdio +__crtGetEnvironmentStringsA +_setmbcp +__initmbctable +calloc +demFindNext@0 +_setenvp +SafeLoadLibrary@4 +_output +ega_write_init@0 +host_idle_init@0 +getNtScreenState@0 +Win32_host_timer@0 +controlWordReg@4 +cmos_init@0 +cmos_read_byte@8 +recalc_text@4 +host_release_timer@0 +ReserveUMB@12 +host_com_open@4 +UMBNotify@4 +DpmiSegmentToSelector@4 +do_new_cursor@0 +setDH@4 +demFileFindNext@4 +io_define_in_routines@20 +io_define_outb@8 +io_define_out_routines@20 +GetVolumeInformationOem@32 +ica_eoi@12 +host_timer2_waveform@20 +getDS@0 +GetNextVDMCommand@4 +SWTMR_init_funcptrs@0 +RegisterConsoleVDM@44 +waitingFor1stWrite@8 +DpmiUnmapBuffer@8 +timer_conv@4 +GetEnvironmentVariableOem@12 +SWTMR_outb@8 +WtComplete@0 +host_EOI_hook@8 +VDDCreateUserHook@4 +ExpandEnvironmentStringsOem@12 +host_set_hw_int@0 +host_printer_setup_table@12 +MonitorInitializePrinterInfo@24 +__sbh_new_region +base_cursor_shape_changed@0 +cmdGetConfigSys@0 +xmsRequestUMB@0 +AT_kbd_post@0 +__sbh_resize_block +strchr +_local_unwind2 +_NLG_Notify +_stricmp +_aullrem +_strnicmp +strstr +strncpy +GetFastBopEntryAddress@4 +memmove +_aulldiv diff --git a/private/mvdm/softpc.new/obj.vdm/ntvdm.src b/private/mvdm/softpc.new/obj.vdm/ntvdm.src new file mode 100644 index 000000000..dbfbb6d5b --- /dev/null +++ b/private/mvdm/softpc.new/obj.vdm/ntvdm.src @@ -0,0 +1,236 @@ +NAME ntvdm.exe + +EXPORTS +#if defined(i386) + getEAX + getEBX + getECX + getEDX + getESP + getEBP + getESI + getEDI + getFS + getGS + setEAX + setEBX + setECX + setEDX + setESP + setEBP + setESI + setEDI + setFS + setGS + MGetVdmPointer = ExpSim32GetVDMPointer ; for 1.0 VDD compatibility + setMSW + getEIP + CurrentMonitorTeb DATA + ExpVdmTib = VdmTib DATA + SelectorLimit = ExpSelectorLimit DATA + +#else // Risc platforms + c_getAX = getAX + c_getAL = getAL + c_getAH = getAH + c_getBX = getBX + c_getBL = getBL + c_getBH = getBH + c_getCX = getCX + c_getCL = getCL + c_getCH = getCH + c_getDX = getDX + c_getDL = getDL + c_getDH = getDH + c_getSP = getSP + c_getBP = getBP + c_getSI = getSI + c_getDI = getDI + c_getIP = getIP + c_getCS = getCS + c_getSS = getSS + c_getDS = getDS + c_getES = getES + c_getCF = getCF + c_getPF = getPF + c_getAF = getAF + c_getZF = getZF + c_getSF = getSF + c_getIF = getIF + c_getDF = getDF + c_getOF = getOF + c_setAX = setAX + c_setAH = setAH + c_setAL = setAL + c_setBX = setBX + c_setBH = setBH + c_setBL = setBL + c_setCX = setCX + c_setCH = setCH + c_setCL = setCL + c_setDX = setDX + c_setDH = setDH + c_setDL = setDL + c_setSP = setSP + c_setBP = setBP + c_setSI = setSI + c_setDI = setDI + c_setIP = setIP + c_setCS = setCS + c_setSS = setSS + c_setDS = setDS + c_setES = setES + c_setCF = setCF + c_setPF = setPF + c_setAF = setAF + c_setZF = setZF + c_setSF = setSF + c_setIF = setIF + c_setDF = setDF + c_setOF = setOF + c_setMSW = setMSW ; should be setMSW + Sim32SetVDMMemory + Sim32FlushVDMPointer + Sim32GetVDMPointer = ExpSim32GetVDMPointer ; for pr 1.0 compatibility + SetWOWforceIncrAlloc + +#endif + + getMSW + getAX + getAL + getAH + getBX + getBL + getBH + getCX + getCL + getCH + getDX + getDL + getDH + getSP + getBP + getSI + getDI + getIP + getCS + getSS + getDS + getES + getCF + getPF + getAF + getZF + getSF + getIF + getDF + getOF + setAX + setAH + setAL + setBX + setBH + setBL + setCX + setCH + setCL + setDX + setDH + setDL + setSP + setBP + setSI + setDI + setIP + setCS + setSS + setDS + setES + setCF + setPF + setAF + setZF + setSF + setIF + setDF + setOF + + host_simulate + host_CreateThread + host_ExitThread + Sim32pGetVDMPointer ; for internal use + getIntelRegistersPointer + + RegisterWOWIdle + BlockWOWIdle + SuspendTimerThread + ResumeTimerThread + + call_ica_hw_interrupt = ica_hw_interrupt + GetWOWShortCutInfo + + DispatchInterrupts + ExpLdt = Ldt DATA + FlatAddress DATA + pDeviceChain DATA + fSeparateWow DATA + + host_com_close + host_direct_access_error + + VDDInstallIOHook + VDDDeInstallIOHook + VDDRequestDMA + VDDSetDMA + VDDQueryDMA + VDDInstallMemoryHook + VDDDeInstallMemoryHook + VDDAllocMem + VDDFreeMem + VDDIncludeMem + VDDExcludeMem + VDDTerminateVDM + + VDDInstallUserHook + VDDDeInstallUserHook + VDDSimulate16 + + VDDReserveIrqLine + VDDReleaseIrqLine + + VDDAllocateDosHandle + VDDAssociateNtHandle + VDDReleaseDosHandle + VDDRetrieveNtHandle + + DBGNotifyNewTask + DBGNotifyRemoteThreadAddress + DBGNotifyDebugged + + cpu_createthread + + WaitIfIdle + WOWSysErrorBox + SoftPcEoi + + demFileFindFirst + demFileFindNext + demClientErrorEx + +#ifdef CPU_40_STYLE + + VdmAllocateVirtualMemory + VdmFreeVirtualMemory + VdmQueryFreeVirtualMemory + VdmReallocateVirtualMemory + VdmAddVirtualMemory + VdmRemoveVirtualMemory + +#endif + +#ifndef i386 + + VdmAddDescriptorMapping + +#endif diff --git a/private/mvdm/softpc.new/obj.vdm/resource.rc b/private/mvdm/softpc.new/obj.vdm/resource.rc new file mode 100644 index 000000000..227b69dbe --- /dev/null +++ b/private/mvdm/softpc.new/obj.vdm/resource.rc @@ -0,0 +1,124 @@ +/* + +Filename : softpc.rc +Purpose : Contains resource file definition for softpc +Author : D.A.Bartlett + +Contains : + + Error Panel dialog and icon + SoftPC Icon + String resource table + + +Revision History : + +*/ + +/*:::::::::::::::::::::::::::::: Manifests used to generate resource binary */ +#include +#include "nt_uis.h" +#include "error.h" +#include "host_rrr.h" + +/* + * resource compiler can't handle MAKEINTRESOURCE 08-May-1993 Jonle + */ +#undef IDI_HAND +#define IDI_HAND 32513 + +/*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Error Panel */ + +ERRORPANEL DIALOG 0, 0, 240, 87 +STYLE WS_VISIBLE | WS_POPUP | WS_CAPTION | DS_MODALFRAME | DS_SETFOREGROUND | WS_SYSMENU +FONT 8 "MS Shell Dlg" +CAPTION "16 bit MS-DOS Subsystem" +BEGIN + ICON IDI_HAND, IDE_ICON, 6, 24, 18, 20 + LTEXT "", IDE_APPTITLE, 30, 6, 200,24 + LTEXT "", IDE_ERRORMSG, 30, 30, 200,32 + EDITTEXT, IDE_EDIT 30, 42, 200,12, WS_GROUP| WS_TABSTOP | WS_BORDER | ES_AUTOHSCROLL | ES_LEFT + PUSHBUTTON "&Terminate",IDB_QUIT, 0, 64, 40, 16, WS_TABSTOP + PUSHBUTTON "&Retry", IDB_RETRY, 0, 64, 40, 16, WS_TABSTOP + PUSHBUTTON "&Ignore", IDB_CONTINUE, 0, 64, 40, 16, WS_TABSTOP + PUSHBUTTON "OK", IDB_OKEDIT, 200, 64, 40, 16, WS_TABSTOP +END + +/* removed for Daytona, as they are obsolete */ +/* EG_GATE_A20, "Extended Memory has not been configured."*/ +/* EG_BAD_COMMS_NAME, "The communications name is invalid."*/ +/* EG_BAD_CONF, "The configuration file entry shown below has an invalid value." */ +/* EG_DATE_BACK, "The date has been set backward. The VDM date may be incorrect." */ +/* EG_DATE_FWD, "The date has been set forward, or the system frozen for a period. The VDM date may be incorrect." */ +/* D_A_OLDPIF, "use an obsolete PIF format" */ +/* EG_EMM_CONFIG, "Your machine configuration will not support Expanded Memory." */ + +STRINGTABLE + { + + /* First, Base errors (range 0 - ) */ + EG_BAD_OP, "The NTVDM CPU has encountered an illegal instruction." + EG_OWNUP, "Internal error in NTVDM procedure." + EG_NO_ROM_BASIC, "NTVDM does not support a ROM BASIC." + EG_EXPANDED_MEM_FAILURE, "Failure to allocate the requested number of Expanded Memory pages." + EG_CONT_RESET, "A continuous RESET state has been entered." + EG_NO_REZ_UPDATE, "The CMOS file cmos.ram could not be created." + EG_REZ_UPDATE, "The CMOS file cmos.ram could not be updated." + EG_MALLOC_FAILURE, "The memory resources needed by NTVDM could not be allocated." + EG_SYS_MISSING_FILE, "An installation file required by NTVDM is missing, execution must terminate." + EG_INSUF_MEMORY, "Insufficient memory resources." + EG_PIF_BAD_FORMAT, "PIF file not found or bad file format." + EG_PIF_STARTDIR_ERR, "Invalid startup directory, please check your pif file." + EG_PIF_STARTFILE_ERR,"Invalid program file name, please check your pif file." + EG_PIF_CMDLINE_ERR, "Command line too long." + EG_PIF_ASK_CMDLINE, "Please input parameters for the application:" + EG_ENVIRONMENT_ERR, "Error while setting up environment for the application." + EG_BAD_OP386, "The NTVDM CPU has encountered an unsupported 386 instruction." + EG_BAD_EMM_LINE, "The EMM command line in your config.nt contains invalid parameters or syntax errors." + EG_BAD_FAULT, "The NTVDM CPU has encountered an unhandled exception." + EG_DOS_PROG_EXTENSION,"\nThe file is not a valid MS-DOS program file.\n MS-DOS program files must end with the extension .EXE, .COM, or .BAT." + /* Direct Access panel strings */ + D_A_MESS, "An application has attempted to %s, which cannot be supported. This may cause the application to function incorrectly." + D_A_FLOPPY, "directly access an incompatible diskette format" + D_A_HARDDISK, "directly access the hard disk" + D_A_DRIVER, "load a 16-bit Dos device driver" + D_A_ILLBOP, "perform an unknown internal 'BOP' opcode" + D_A_NOLIM, "allocate Expanded Memory" + D_A_MOUSEDRVR "use a third party mouse driver" + + ED_WOWPROMPT, "Choose 'Close' to terminate the application." + ED_WOWTITLE, "16 bit Windows Subsystem" + ED_BADSYSFILE,"The system file is not suitable for running MS-DOS and Microsoft Windows applications." + ED_INITMEMERR, "Memory error during intialization." + ED_INITTMPFILE,"A temporary file needed for initialization could not be created or could not be written to. Make sure that the directory path exists, and disk space is available." + ED_INITFSCREEN, "The video device failed to initialize for fullscreen mode." + ED_MEMORYVDD, "Insufficient memory to load installable Virtual Device Drivers." + ED_REGVDD, "Virtual Device Driver format in the registry is invalid." + ED_LOADVDD, "An installable Virtual Device Driver failed Dll initialization." + + ED_LOCKDRIVE, "Unable to lock for exclusive access. Another application may be using the drive. When the other application has finished using the drive you may retry the operation." + ED_DRIVENUM, "Drive %c: " + + + SM_HIDE_MOUSE, "&Hide Mouse Pointer" + SM_DISPLAY_MOUSE, "&Display Mouse Pointer" + + IDS_BURRRR, " - FROZEN" + + EXIT_NO_CLOSE, "Inactive " + + /* Host Errors range (1000 - ??)*/ + EHS_FUNC_FAILED, "Function failed" + EHS_SYSTEM_ERROR, "NTVDM has encountered a System Error" + EHS_UNSUPPORTED_BAUD, "Driver does not support selected Baud Rate" + EHS_ERR_OPENING_COM_PORT, "The system cannot open %s port requested by the application." + } + +#include + +#define VER_FILETYPE VFT_DLL +#define VER_FILESUBTYPE VFT2_UNKNOWN +#define VER_FILEDESCRIPTION_STR "NTVDM.EXE" +#define VER_INTERNALNAME_STR "NTVDM.EXE\0" + +#include "common.ver" diff --git a/private/mvdm/softpc.new/obj.vdm/sources b/private/mvdm/softpc.new/obj.vdm/sources new file mode 100644 index 000000000..ea682d39a --- /dev/null +++ b/private/mvdm/softpc.new/obj.vdm/sources @@ -0,0 +1,156 @@ +!IF 0 + +Copyright (c) 1989 Microsoft Corporation + +Module Name: + + sources. + +Abstract: + + This file specifies the target component being built and the list of + sources files needed to build that component. Also specifies optional + compiler switches and libraries that are unique for the component being + built. + + +Author: + + Steve Wood (stevewo) 12-Apr-1990 + +NOTE: Commented description of this file is in \nt\bak\bin\sources.tpl + +!ENDIF + + +MAJORCOMP=spc +MINORCOMP=ntvdm +TARGETNAME=ntvdm + + +EXEPROFILEINPUT=yes + +SOFTPC_TREE=$(BASEDIR)\private\mvdm\softpc.new + +INCLUDES=$(SOFTPC_TREE)\host\inc;$(SOFTPC_TREE)\base\inc + +!IF $(MIPS) +GPSIZE=0 +!ENDIF + +TARGETPATH=$(BASEDIR)\public\sdk\lib +TARGETTYPE=PROGLIB + +!if $(386) +TARGETLIBS=\ + $(BASEDIR)\public\sdk\lib\*\gdi32.lib \ + $(BASEDIR)\public\sdk\lib\*\user32p.lib \ + $(BASEDIR)\public\sdk\lib\*\ntdll.lib \ + $(BASEDIR)\public\sdk\lib\*\advapi32.lib +!else +TARGETLIBS=\ + $(BASEDIR)\public\sdk\lib\*\binmode.obj \ + $(BASEDIR)\public\sdk\lib\*\gdi32.lib \ + $(BASEDIR)\public\sdk\lib\*\user32p.lib \ + $(BASEDIR)\public\sdk\lib\*\ntdll.lib \ + $(BASEDIR)\public\sdk\lib\*\advapi32.lib +!endif + +BACKGROUND_USE=1 + +SYNCHRONIZE_DRAIN=1 +SYNCHRONIZE_BLOCK=1 + +# +# X86 needs LINKLIBS set for the fuzzymatch code in the linker. +# MIPS and ALPHA need TARGETLIBS set so small.lib (CRTLIBS) will +# come *after* these libraries but before libc.lib. +# + +!if $(386) +LINKLIBS = \ + $(SOFTPC_TREE)\base\support\obj\*\MAIN.obj \ + $(SOFTPC_TREE)\host\src\obj\*\FPRT.OBJ \ + $(SOFTPC_TREE)\base\system\obj\*\SYSTEM.LIB \ + $(SOFTPC_TREE)\base\bios\obj\*\BIOS.LIB \ + $(SOFTPC_TREE)\base\video\obj\*\VIDEO.LIB \ + $(SOFTPC_TREE)\base\dos\obj\*\DOS.LIB \ + $(SOFTPC_TREE)\base\comms\obj\*\COMMS.LIB \ + $(SOFTPC_TREE)\base\debug\obj\*\DEBUG.LIB \ + $(SOFTPC_TREE)\base\support\obj\*\SUPPORT.LIB \ + $(SOFTPC_TREE)\base\disks\obj\*\DISKS.LIB \ + $(SOFTPC_TREE)\base\keymouse\obj\*\KEYMOUSE.LIB \ + $(SOFTPC_TREE)\host\src\obj\*\SRC.LIB \ + $(BASEDIR)\public\sdk\lib\*\monitor.lib \ + $(BASEDIR)\public\sdk\lib\*\dem.lib \ + $(BASEDIR)\public\sdk\lib\*\dbg.lib \ + $(BASEDIR)\public\sdk\lib\*\command.lib \ + $(BASEDIR)\public\sdk\lib\*\dpmi32.lib \ + $(BASEDIR)\public\sdk\lib\*\xms486.lib \ + $(BASEDIR)\public\sdk\lib\*\suballoc.lib \ + $(BASEDIR)\public\sdk\lib\*\oemuni.lib +!else + +# +# Pull these symbols in first. +# + +LINKER_FLAGS=$(LINKER_FLAGS) -INCLUDE:__mb_cur_max -INCLUDE:_pctype + +LINKLIBS = \ + $(SOFTPC_TREE)\base\support\obj\*\MAIN.obj \ + $(SOFTPC_TREE)\host\src\obj\*\FPRT.OBJ \ + $(SOFTPC_TREE)\host\src\obj\*\SRC.LIB \ + $(SOFTPC_TREE)\base\system\obj\*\SYSTEM.LIB \ + $(SOFTPC_TREE)\base\bios\obj\*\BIOS.LIB \ + $(SOFTPC_TREE)\base\video\obj\*\VIDEO.LIB \ + $(SOFTPC_TREE)\base\dos\obj\*\DOS.LIB \ + $(SOFTPC_TREE)\base\comms\obj\*\COMMS.LIB \ + $(SOFTPC_TREE)\base\debug\obj\*\DEBUG.LIB \ + $(SOFTPC_TREE)\base\dasm386\obj\*\DASM386.LIB \ + $(SOFTPC_TREE)\base\support\obj\*\SUPPORT.LIB \ + $(SOFTPC_TREE)\base\disks\obj\*\DISKS.LIB \ + $(SOFTPC_TREE)\base\keymouse\obj\*\KEYMOUSE.LIB \ + $(CPULIBS) \ + $(BASEDIR)\public\sdk\lib\*\dbg.lib \ + $(BASEDIR)\public\sdk\lib\*\dem.lib \ + $(BASEDIR)\public\sdk\lib\*\suballoc.lib \ + $(BASEDIR)\public\sdk\lib\*\command.lib \ + $(BASEDIR)\public\sdk\lib\*\dpmi32.lib \ + $(BASEDIR)\public\sdk\lib\*\xms486.lib \ + $(BASEDIR)\public\sdk\lib\*\oemuni.lib +!endif + +!if "$(NTDEBUG)" == "" +PD = Pd +!else +PD = Pg +!endif + +# Decide whether to use assembler or C CPU. + +!if "$(CCPU)" == "" +CPULIBS=$(SOFTPC_TREE)\*\libs\a4$(PD).lib +!else +CPULIBS=$(SOFTPC_TREE)\obj.vdm\obj\*\ccpu486.lib +!endif + +SOURCES=ntvdm.c \ + resource.rc + +i386_SOURCES= +MIPS_SOURCES= +ALPHA_SOURCES= + +!INCLUDE CDEFINE.INC + +UMTYPE=console + +# +# base at < 256 MB (0x10000000), so that softpc code buffer +# in allocated Virtual Memory (bottom up) is within +# near jump range to ntvdm's code. +# +UMBASE=0x0f000000 + +DLLDEF=obj\*\ntvdm.def -- cgit v1.2.3