Git Product home page Git Product logo

ntvdmx64's Issues

"Error while setting up environment"

I'm unable to launch ntvdm.exe.

16-bit MS-DOS Subsystem
Command Prompt - ntvdm.exe
Error while setting up environment for the applicaton.

OS Version 10.0.14393.0 (Win10 RS1)

Show wrong text

I test two DOS programs and show wrong text.

Please view
SnapShot01.png
SnapShot02.png
SnapShot03.png
SnapShot04.png

Installing and running breaks MinTTY bash

I don't know how do diagnose this issue, but I imagine the installation of this software changes how software is loaded. For whatever reason, installing this software breaks MinTTY's Bash, whether it's run in Cygwin, MSYS2, or Git for Windows. Uninstalling this software doesn't make things normal again, the only way to fix it appears to be reinstalling the OS (refreshing works too)

Cannot start 16-bit application from other 16-bit application

How to reproduce error:

  1. Run command.com
  2. In the command prompt enter "qbasic".

As result will be popup windows with information, that operating system cannot run this application, needed 64-bit application.

If I start 16-bit app from 32-bit or 64-bit app, it runs fine.

About help on DPMI/Dos extenders and generally NTVDMx64

Hello Leecher1337/Dose,

This is a very exciting project and I thank you for having pushed it as far.
This fork is welcomed for DOS 5.00 on x64 WoW64 didn't appear a priority for Stephanos in the OpenNT forums.
This said lest not forget NTVDMX86 and similar prior x64 emulators such as DOSBox, NTVDM64, v86, vDOS and Boch cannot provide the precision (read instructions cycles compatibility) of a real virtual machine like VMware running original DOS.
perhaps the most important advantage of emulated DOS 5.00 emulator for i486 (no pentium+ opcodes like CMOV) lies within Insignia Solutions' SoftPC industrial robustness and relative isocompatibility Microsoft backed approval.
I have compiled successfully the said ntvdm following your guidelines -have yet to test it- but in brief : speed and accuracy (such as the BDA RTC 0:46ch) ontop of alluded robustness are expected to better most existing emulators.
Already the benefits NTVDMX86 bears for the demoscene sizecoding community is attractive enough though it's not the entire DOS part that is interesting but rather the long mode compatible BIOS/PC 16-bit emulator .com-spawning with thunk handling along its sources (?).

I have some remarks althoug again, I have not seen it working yet, nor did I use NT4 or v86 on NT4 extensively which also differs from your NTVDMX64 and I probably made errors below as my memory can be faulty (all errors are my own) :

The first caveat you mention is the obligation of having Windows download symbols for first run of a DOS program "because the loader code needs to fetch symbols from the Microsoft Symbol server so that it can call OS internal functions in order to properly start NTVDM".
This is not too enticing considering how notoriously Windows10 and all Windows x64 OS value user privacy, but is I suppose half-understandable if by symbols you mean DLL imports by ordinal vs. by name for Heaven's Gate startup/end injections in WoW64 hooking.
If this is indeed the case then maybe the README.txt wording seems confusing not making it clear enough this is just a one-time update at first launch and unrelated to any DOS program (which as any other programs if compiled with debug information might contain symbols too).

The second caveat you mention is that "currently there are crashes with various DPMI programs like i.e Borland Turbo C or some DOS extenders [...] maybe someone can help me debugging them?", and this is where I am a bit pessimistic about outcome.
Your very interesting blog hardwarefetish.com sports an "In-depth knowledge of the WIN32 Kernel and MS DOS" and you seem fortyish so you must be aware of all the hereunder :
-problem 1 : DPMI/Dos extenders already crashed relatively often on real DOS (thus not requiring "fixing" in this context)
Popular DOS-extenders include Phar Lap's, Borland's, EMM386 QEMM or more recent HX.
Dos extenders are not standardized in that not often can one be replaced by the other : more often than not a binary would only work with a specific dos-extender
All have their quirks : Phar Lap allows ring '0' GPF with -priv, Borland's requires you beforehand use their compatible linker, HX emulates Win32, others allow big/unreal mode specific to real 16-bit or make use of "standard" DPMI v1.0 API never implemented by DPMI v0.9 provider Microsoft.
-problem 2 : DPMI/Dos extenders crashing now and not on real DOS
Exempt MS distributed Loadhigh/LH variations handling as little as XMS, EMS or UMS memory remaining within first mega of memory (and SoftPC is expected to handle that minimally) and as far as I can recall,
Microsoft AND Windows (ie : DOS on Windows) only had two officialy distributed paths to DOS-related memory management : EMM386 and Enh386 world DPMI 0.9 services host acquired through Qualitas located mostly in IVT interrupt 31h.
Thus it sounds reasonable to only focus on these two alone and not on more exotic ones historically-wise and for the sake of same-context retro-compatibility.
EMM386 booted until Enh386 in which turn MS-DPMI took over to protected mode. EMM386 could be seen working in initial virtual 8086 mode afterwards in command.com up until Win98.
But the heart of any fully-featured DPMI/Dos extenders requires protected mode accessibility through keyboard A20 gate and in the case of NTVDMX86 SoftPC's emulated Ms-DOS version 5.00, initially destined for non-x86 architecturess, this A20 gate mechanism is unexpected.
Also turning it on in a non-virtualized environment (16-bit real emulation in a 32-bit protected mode) on amdx64 architecture means encountering same impossibility about 16/32 or 32/64 but not both at same time.
So to resume, as far as DPMI/Dos extenders go, only emm386 probably needs testing in this context (the rest either did not work correctly before or could not possibly correctly work in this 32-bit protected mode emulation).
Even when EMM386 semi-worked in V86 it was only in conjunction with MS' DPMI v0.9 flavour belonging exclusively to Enh386 world seperating real/protected 16-bit and protected 32-bit mode, unfound on any other SoftPC/NTVDM than x86.
In the case of x86 the SoftPC emulation passed on to v86 for execution - in the other architectures it emulated the execution but in return could not rely on Enh386 MS DPMI v0.9 and same for EMM386.
Obtaining NTVDMX64 by forcing emulation on x86 architecture probably stripped the Virtual-8086 "compatibility" of EMM386 with Enh386 DPMI v0.9.
The leftovers witnessed working for EMM386 or any other DPMI/Dos extenders are most likely linked to real mode memory handling and safely dealing with only upper, extended or expanded memories within RAM first megabyte.
If that is the case it would thus seem logical to envision only "patching" EMM386 and/or hooking SoftPC's IVT 31h to fail gracefully instead of crashing (or increase workability by providing fake 32-bit LDT selectors pointing to same constant SoftPC memory space).

I am still interested in seeing how to push the enveloppe but was unable to find any contact link (I can be contacted on ircnet in the evenings or through my blog -on which I plan to talk about your work).

Kind regards,
Baudsurfer

Three test files can NOT work

Three test files can NOT work

1.Run Clock.com
2.It can NOT run any DOS program again.

1.Run NP.EXE
2.It can NOT run any DOS program again.

1.Run PcManGame.exe and very SLOW speed.

My Issues with a fresh compile

I managed to set up the oldnt src and sdk, "SUBST W: ." and get Patch.cmd working, but when I run zSHtst.cmd (which calls sizzletst.cmd; then ntenv.cmd; then finally, and most importantly, ntuser.cmd) it uses an "alias" command, which the command prompt doesn't see as valid. Thusly, attempting to use bld-ntos.cmd , I get "You must set up the Razzle build environment prior to executing this command.
Supported build configurations: *fre, *tst, *chk"

I can see that it's not going to work without Alias working.

http://paste.debian.net/hidden/b2557f78/

Fault compiling error BNP0000: Unable to place file W:\nt\public\sdk\lib\i386\ntvdm.exe - exiting.

Hi, Please, what am I doing wrong?

  1. I create new USER in WINDOWS 10 , name="x86fre"

I logged in x86fre

  1. unpack old-src.trunk.r687.20150728.7z to c:\NTVDM\workfee\
          c:\NTVDM\workfee>dir
           Volume in drive C has no label.
           Volume Serial Number is BC90-F7BB

           Directory of c:\NTVDM\workfee

          14.04.2017  13:58    <DIR>          .
          14.04.2017  13:58    <DIR>          ..
          14.04.2017  13:49    <DIR>          cdimg
          14.04.2017  13:52    <DIR>          drvlib
          14.04.2017  13:53    <DIR>          nt
          28.07.2015  07:23               175 README.txt
          14.04.2017  13:52    <DIR>          res
          14.04.2017  13:44    <DIR>          setupext
          14.04.2017  13:44    <DIR>          tools
           1 File(s)            175 bytes
           8 Dir(s)  163 270 066 176 bytes free
  1. unpack old-src.trunk.r687.20150728.7z to c:\NTVDM\workfee\nt\public\sdk
          c:\NTVDM\workfee\nt\public>dir
           Volume in drive C has no label.
           Volume Serial Number is BC90-F7BB

           Directory of c:\NTVDM\workfee\nt\public

          14.04.2017  14:01    <DIR>          .
          14.04.2017  14:01    <DIR>          ..
          14.04.2017  13:45    <DIR>          oak
          14.04.2017  13:53    <DIR>          sdk
          14.04.2017  13:51    <DIR>          tools
           0 File(s)              0 bytes
           5 Dir(s)  163 266 891 776 bytes free
  1. copy c:\NTVDM\workfee\tools\i386\idw\alias.exe to %SystemRoot%\system32.

  2. copy ntvdmpatch folder to c:\NTVDM\workfee\

          c:\NTVDM\workfee>dir
           Volume in drive C has no label.
           Volume Serial Number is BC90-F7BB

           Directory of c:\NTVDM\workfee

          14.04.2017  14:03    <DIR>          .
          14.04.2017  14:03    <DIR>          ..
          14.04.2017  13:49    <DIR>          cdimg
          14.04.2017  13:52    <DIR>          drvlib
          14.04.2017  14:01    <DIR>          nt
          14.04.2017  14:03    <DIR>          ntvdmpatch
          28.07.2015  07:23               175 README.txt
          14.04.2017  13:52    <DIR>          res
          14.04.2017  13:44    <DIR>          setupext
          14.04.2017  13:44    <DIR>          tools
           1 File(s)            175 bytes
           9 Dir(s)  163 262 689 280 bytes free
  1. run CMD as Administrator
    C:\>SUBST W: C:\ntvdm\workfee


    6) Run patch
    C:\>W:
    W:\>cd ntvdmpatch

    W:\ntvdmpatch>patch.cmd
    1 file(s) copied.
    1 file(s) copied.
    1 file(s) copied.
    1 file(s) copied.
    1 file(s) copied.
    1 file(s) copied.
     patching file `private\mvdm\softpc.new\host\src\nt_bop.c'
     patching file `private\mvdm\softpc.new\host\src\nt_com.c'
     patching file `private\mvdm\softpc.new\host\src\nt_error.c'
     patching file `private\mvdm\softpc.new\host\src\nt_event.c'
     patching file `private\mvdm\softpc.new\host\src\nt_thred.c'
     patching file `private\mvdm\softpc.new\host\src\nt_timer.c'
     patching file `private\mvdm\softpc.new\obj.vdm\ntvdm.c'
     patching file `private\mvdm\softpc.new\base\ccpu386\c_bsic.c'
     patching file `private\mvdm\softpc.new\base\ccpu386\c_page.c'
     patching file `private\mvdm\softpc.new\base\ccpu386\c_reg.c'
     patching file `private\mvdm\softpc.new\base\ccpu386\c_xcptn.c'
     Hunk #2 succeeded at 253 (offset -6 lines).
     Hunk #3 succeeded at 256 (offset -6 lines).
     Hunk #6 succeeded at 376 (offset -6 lines).
     Hunk #7 succeeded at 379 (offset -6 lines).
    Hunk #11 succeeded at 597 (offset -6 lines).
     Hunk #12 succeeded at 601 (offset -6 lines).
     Hunk #13 succeeded at 657 (offset -6 lines).
     patching file `private\mvdm\softpc.new\base\ccpu386\cpu4gen.h'
     patching file `private\mvdm\softpc.new\base\ccpu386\evidgen.h'
     patching file `private\mvdm\softpc.new\base\ccpu386\fpu.c'
     patching file `private\mvdm\softpc.new\base\ccpu386\ntstubs.c'
     patching file `private\mvdm\softpc.new\base\ccpu386\popf.c'
     patching file `private\mvdm\softpc.new\base\ccpu386\zfrsrvd.c'
     patching file `private\mvdm\softpc.new\base\ccpu386\sources'
     patching file `private\mvdm\softpc.new\base\support\xt.c'
     patching file `private\mvdm\softpc.new\host\src\nt_cpu.c'
     patching file `private\mvdm\softpc.new\base\ccpu386\stubs.c'
     patching file `private\mvdm\softpc.new\host\src\nt_aorc.c'
     patching file `private\mvdm\softpc.new\base\ccpu386\mov.c'
     patching file `private\mvdm\softpc.new\base\ccpu386\c_seg.c'
     patching file `private\mvdm\softpc.new\host\src\nt_fulsc.c'
     patching file `private\mvdm\softpc.new\host\src\nt_graph.c'
     patching file `private\mvdm\softpc.new\base\cvidc\cpu4gen.h'
     patching file `private\mvdm\softpc.new\base\cvidc\ev_glue.c'
     patching file `private\mvdm\softpc.new\base\cvidc\evidgen.h'
     patching file `private\mvdm\softpc.new\base\cvidc\j_c_lang.c'
     patching file `private\mvdm\softpc.new\base\cvidc\vglfunc.c'
     patching file `private\mvdm\softpc.new\base\cvidc\sources'
     patching file `private\mvdm\softpc.new\base\inc\video.h'
     patching file `private\mvdm\dos\dem\dem.c'
     patching file `private\mvdm\softpc.new\base\debug\trace.c'
     patching file `private\mvdm\softpc.new\base\support\main.c'
     patching file `private\mvdm\softpc.new\base\video\ega_writ.c'
     patching file `private\mvdm\softpc.new\host\src\stubs.c'
     patching file `private\mvdm\softpc.new\host\src\nt_ega.c'
     patching file `private\mvdm\softpc.new\base\dos\emm_mngr.c'
     patching file `private\mvdm\softpc.new\host\inc\cfpu_def.h'
     patching file `private\mvdm\softpc.new\base\ccpu386\gdpvar.h'
     patching file `private\mvdm\softpc.new\host\src\nt_timer.c'
     patching file `private\mvdm\softpc.new\base\inc\ckmalloc.h'
     patching file `private\mvdm\softpc.new\host\src\nt_mem.c'
     patching file `private\mvdm\softpc.new\base\bios\virtual.c'
     patching file `private\mvdm\dpmi\makefile'
     patching file `private\mvdm\dpmi32\sources'
     patching file `private\mvdm\softpc.new\base\ccpu386\ccpudefs.inc'
     patching file `private\mvdm\softpc.new\base\dasm386\sources'
     patching file `private\mvdm\softpc.new\base\dirs'
     patching file `private\mvdm\softpc.new\base\system\sources'
     patching file `private\mvdm\softpc.new\host\src\sources'
     patching file `private\mvdm\softpc.new\obj.vdm\cdefine.inc'
     patching file `private\mvdm\softpc.new\obj.vdm\sources'
     patching file `private\mvdm\xms.486\i386\sources'
     patching file `private\mvdm\wow32\i386\sources'
     patching file `private\mvdm\makefil0'
     patching file `private\mvdm\dos\v86\cmd\mem\mem.c'
     patching file `private\mvdm\bde\bdeutil.c'
     patching file `private\mvdm\dbg\dbg.c'
     patching file `private\mvdm\dpmi32\data.c'
     patching file `private\mvdm\dpmi32\dpmi32.c'
     patching file `private\mvdm\dpmi32\dpmi32p.h'
     patching file `private\mvdm\dpmi32\dpmidata.h'
     patching file `private\mvdm\dpmi32\dpmiint.c'
     patching file `private\mvdm\dpmi32\dpmiint.h'
     patching file `private\mvdm\dpmi32\dpmiselr.c'
     patching file `private\mvdm\dpmi32\modesw.c'
     patching file `private\mvdm\inc\softpc.h'
     patching file `private\mvdm\inc\wow.h'
     patching file `private\mvdm\softpc.new\base\dos\emm_mngr.c'
     Hunk #2 succeeded at 290 (offset -1593 lines).
     patching file `private\mvdm\softpc.new\host\src\config.c'
     patching file `private\mvdm\softpc.new\host\src\nt_msscs.c'
     patching file `private\mvdm\vdmexts\misc.c'
     patching file `private\mvdm\xms.486\xms.c'
     patching file `private\mvdm\xms.486\xms.h'
     patching file `private\mvdm\xms.486\xmsblock.c'
     patching file `private\mvdm\softpc.new\base\ccpu386\sas4gen.h'
     patching file `private\mvdm\softpc.new\base\ccpu386\c_intr.c'
     patching file `private\mvdm\softpc.new\base\system\idetect.c'
     patching file `private\windows\inc\conapi.x'
     patching file `private\mvdm\dos\command\sources'
     patching file `private\mvdm\softpc.new\host\inc\host_def.h'
     patching file `private\mvdm\softpc.new\host\src\nt_det.c'
     patching file `private\mvdm\softpc.new\host\src\nt_fulsc.c'
     patching file `private\mvdm\softpc.new\host\src\nt_reset.c'
     patching file `private\ntos\w32\ntcon\client\private.c'
     patching file `private\ntos\w32\ntcon\client\sources'
     patching file `private\mvdm\softpc.new\host\src\nt_emm.c'
     patching file `private\mvdm\wow32\fastwow.h'
     patching file `private\mvdm\wow32\wkgthunk.c'
     patching file `private\mvdm\wow32\wow32.c'
     patching file `private\mvdm\softpc.new\base\debug\dasm.c'
     patching file `private\mvdm\softpc.new\base\debug\yoda.c'
     patching file `private\mvdm\softpc.new\host\src\fprt.c'
  1. W:\ntvdmpatch>zSHtst.cmd in cmd terminal Administrator

"terminal is green background "

      W:\ntvdmpatch>prompt [DESKTOP-1K1OHTU: x86fre] $d$s$t$_$p$_$_$+$g

      [DESKTOP-1K1OHTU: x86fre] 14.04.2017 14:07:52,23
      W:\ntvdmpatch


      >echo Current user is now x86fre

      Current user is now x86fre
      [DESKTOP-1K1OHTU: x86fre] 14.04.2017 14:07:52,23

      W:\ntvdmpatch
  1. bld-ntos.cmd
     W:\ntvdmpatch

     >bld-ntos.cmd
  1. error Nosupport 16bit aplication file "W:\nt\private\mvdm\tools16\rc16. exe"
    if i click ok compiling is continuing
  2. error Nosupport 16bit aplication file "W:\nt\private\mvdm\tools16\rc16. exe"
    if i click ok compiling is continuing
     BUILD: Done
         121 files compiled - 18682 LPS
         7 libraries built - 2 Warnings
         10 executables built - 34 Warnings


     Build error. Process aborted.

9)bld.cmd

[DESKTOP-1K1OHTU: x86fre] 14.04.2017 14:16:35,67
W:\ntvdmpatch

bld.cmd

  1. error Nosupport 16bit aplication file "W:\nt\private\mvdm\tools16\h2inc. exe"
    if i click ok compiling is continuing
     Linking Executable - w:\nt\public\sdk\lib\i386\wow32.dll for i386
     softpc.new\obj.vdm\ccpu386.lib(c_xcptn.obj) : error LNK2001: unresolved external symbol _getenv@4
    **w:\nt\public\sdk\lib\i386\ntvdm.exe() : error LNK1120: 1 unresolved externals**
     softpc.new\obj.vdm\binplace() : error BNP0000: Unable to place file 
     W:\nt\public\sdk\lib\i386\ntvdm.exe - exiting.
     BUILD: Linking w:\nt\private\mvdm\fax\wowfaxui directory
     1>Linking Executable - w:\nt\public\sdk\lib\i386\wowfax.dll for i386
     BUILD: Linking w:\nt\private\mvdm\vdmredir directory
     wow32\wusercli.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wdib.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wsdata.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wsext.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wsraw.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wcommdlg.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wowhooks.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wcuricon.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wsubcls.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\waccel.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wulang.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wumenu.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wuser.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wuwind.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wuclass.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wuclip.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wucomm.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wudlg.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wkernel.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wshell.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wuser31.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wuman.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wgtext.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wkbman.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wkman.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wkfileio.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wgdi31.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wgdi.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wgmeta.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wgprnset.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wcntl32.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wdde.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wmsg16.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wmdisp32.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wow32.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\walias.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wstruc.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     wow32\wcall16.obj() : error LNK2001: unresolved external symbol _Sim32FlushVDMPointer@16
     w:\nt\public\sdk\lib\i386\wow32.dll() : error LNK1120: 1 unresolved externals
     8>Linking Executable - w:\nt\public\sdk\lib\i386\wowfaxui.dll for i386
     wow32\binplace() : error BNP0000: Unable to place file W:\nt\public\sdk\lib\i386\wow32.dll - exiting.
     4>Linking Executable - w:\nt\public\sdk\lib\i386\vdmredir.dll for i386
     BUILD: Done

496 files compiled - 2464 Warnings - 1 Errors - 17563 LPS
30 libraries built - 6 Warnings
11 executables built - 9 Warnings - 43 Errors

     Build error. Process aborted.

A question on wether if it would be possible to not use emulation ?

The proper way to use 16 bits segment for addressing included on 32 bit is not to use Vm86 mode but the Local Descriptor Table.

On Linux winedvm does just that for Win16 applications but it uses the modify_ldt() Linux system call.

It should be possible to that on Windows through something like NtSetInformationProcess(,ProcessLdtInformation
I think cygwin also provides a wrapper for this function.

NTVDMx64 on Windows 8(.1)

Hello devs, thanks for this great tool to run DOS applications (I can't get Jazz Jackrabbit running though).
Well, I tried NTVDMx64 on Window 8.1 and the installer asked me to install the ntvdm for Windows 7's loader at my own risk, and I did that, after I reboot, I unlock my PC and I tried a DOS game (MARIO) but it didn't work, so I've uninstalled NTVDMx64 (Windows Defender removed it before un-installation) and I got a BSOD, I've rebooted my PC and used it for a while (2-3 minutes approx.) and another BSOD comes out, everytime I boot my PC that happens, until I've reinstalled Windows 8.1 all over again....
I know it's not supported on Windows 8.1 but I tried it at my own risk, so that's what I've got to tell you about testing NTVDM on a WIndows 8.1 computer.
Can you support this project for Windows 8.1's Loader?

Why not make this also like DOSBox and vDOS

Why not integrate vDOS and DOSBox code into NTVDM? It would be cool, because it would be like DOSBox and VDOS but integrated into the Windows shell. What good is it to keep the woes of Microsoft NTVDM? It would be cool to be able to play DOS games by launching the EXE program itself instead of launching DOSBox and then having to type in commands.

DLLs loaded in every single application?

Does idntvdm.dll get injected in every single application running on windows? I'm worried that some game's anticheat systems could think I am cheating and possibly ban me (?)

Suggestion: vDOS and DOSBOX code integration

The NTVDM is not perfect, but integrating some of the code from DOSBOX and vDOS (another open source project) may help out in this regard significantly. In addition, because they are both open source, it would enable a gradual transition away from the reliance closed source code, and thereby make it easier to distribute a 64-bit version of NTVDM. You can learn more about vDOS at https://vdos.info

ntvdmx64-master dos folder missing, you must set up the Razzle...

Hello,

Sorry for posting two issues in the same day, but it is a different one.
I'm still trying to install your program on a Windows Server 2012 R2.
I've downloaded the latest file in github, ntvdmx64-master.

I've run the patch first. It took 5 seconds. Then I ran the installation. I met a problem, looking for ANSI.SYS file.

screen2

So what I did is that I've taken an ansi.sys file from an other installation i set in the past. The installation continued.
And then it tells me that it is looking for files in a dos folder, which does not exist in the ntvdm64-master.
Other thing : On the SysWow64 and System32, the ANSI.SYS files were missing. I don't know why.

Can someone help me?

screen3

Running 16-bit app installed on x64 through Telnet? (Error)

Dear leecher,

I've installed your program on my Windows Server 2012 64bits. Worked well.

I'm trying to run this app through a telnet client. So I connected my telnet server (Windows 2012) and my telnet client (Windows 10), both of them are 64bits.
When I tried to run the app, it shows me same message as running a 16 bit app in 64 bits system.

"This version of Foxpro is not compatible with the version of Windows"

Do you know if there is a way to avoid this?

I can not install it in Windows Server 2008 R2 x64?

It is windows server standard edition without any additional service pack.
I have all the other packages intalado but this does not work for me.
That I have a software developed in foxpro, by a provider.

Thank you.
Alvaro.

An uninstaller would be handy

Currently, the only way to uninstall is to use a system restore prior to using this tool. It would be nice if you provided a proper uninstaller for people who may not have the option to restore.

Mouse support

NTVDMX64 seem have mouse support.

But some DOS programs can NOT work.

Ex:
Norton Utility : NCD.exe
Norton DOS : NHelp.exe

Some issues here

As being a system administrator at my company, i have task to bring some old-style dos-based soft, from win xp to win 10

Had used vdos, dosbox - either it won't launch or work abnormally.
Doing some research at google (lol) and i've found tour github release here, tried to follow manual, must admit - its somehow uncompleted:

  1. there's nothing about "alias.exe", which must be taken from old-src\tools\x86\idw directory into %systemroot%\system32 and not exist in win 10 outside the box.

  2. there is nothing about which working directory MUST BE set by "subst W: %driveletter%:\blah-blah", and where exactly files from archive must be put - gotta waste some time, enable echo output in bat files somewhere and add pause to figure out wtf is going on, why files are not found and why am i missing \nt\private\developr%username% folder and files from it.

  3. mkrelease.bat actually doing nothing - there is no literally folder W:\binaries, so i can't do anything on this step, but figuret out that \old-src\setupext\i386 contains almost all files that i need but in format i.e. ANSI.SY_ but also missing file MSHERC.CO_ from ms-dos 6 supplementary disk

  4. Also win defender detects ldntvdm.dll as malware and blocking it.

At the end - ms-dos application still wont work, win 10 ltsb 1607 (build 14393.0) - i.e. nc.exe just silently closing

Sound and DOS4GW

How can I get proper sound emulation? When I run programs the sound comes out differently from when running the programs in DOS-based OSes. And how can i get programs with DOS4GW to run? When I try to run such programs like Extreme Pinball or Action Supercross, I just get an "NTVDM has encountered an unhandled exception" error message. What can I do?

NTVDM.exe did not create

I am using Windows XP SP3 32bits on VMware. I ran patch.cmd, I finished compiling from bld-ntos.cmd, then bld.cmd. Both executed from zSHtst.cmd.

But upon running mkrelease.bat, only one file can't be found:
image
It was ntvdm.exe

wtf? gimme your compiled ntvdm.exe to complete my release :D

Windows Defender detects virus

Edit: refer to issue #10 which mentions the virus detection.

The version compiled on http://www.columbia.edu/~em36/ntvdmx64.html detects it as a virus. I am aware that it's not an official source, though it is hosted on a university website. Does the same happen for anyone else? Is the Columbia compile tainted?

EDIT: Seems to be related to ntvdmx64\ldntvdm\syswow64\ldntvdm.dll included in the file, and Virustotal seems to have a high detection rate of the relevant dll, see https://www.virustotal.com/en/file/1ccb688ad2a6ba8a867f54910fde653b135397b5bc47bb872d6c32d6c1435a1c/analysis/1498968258/

can you verify whether this is a false positive or a hacker hosting on a university website?

A compiled version and installer now available

This isn't an issue but a notification, but I couldn't find any other place to post it.

A compiled version of ntvdmx64 is not available on this site, but I've obtained one, together with an installer, and I've posted it on my university web page for anyone who wants to experiment with it. The details and download link may be found here:

http://www.columbia.edu/~em36/ntvdmx64.html

I hope other people find this interesting and useful, and I'm very grateful to leecher 1337 for the programming and to an anonymous source for providing the compiled version and installer.

Stopped working

I was using this compiled version of NTVDMX64 http://www.columbia.edu/~em36/ntvdmx64.html
For some time it was working fine, but recently it just stopped working. When I'm trying to run
any 16-bit application then it shows me an error message saying that "This app can't be run on your pc".

I even tryed to reinstall NTVDMx64, but it didn't help...

(im using Windows 8.1 x64)

Sound emulators don't work with NTVDM

After installing VDMSound and then trying to open a progam with that, I just get a "bad command or file name" message. Why is this?

And also, for SoundFX, I can't use it at all, because it's a "time-limited" evaluation version.

Support which VGA cards

I have a DOS program.

Error message :
Not support this VGA Card.

Support
WD 90C3x,Cirrus GD542x,Trident,Tseng,S3,AHEAD V5000B ,
OAK,REALTEK,ALI,ATI,ARK,UMC VGA Card

***** support those VGA listed below *****
WD : 90C30, 90C31, 90C33
Cirrus : 5422, 5424, 5426, 5428
Trident : 8800, 8900, 9000, TGUI94xx
Tseng : ET3000, ET4000, ET4000/W32x
S3 : 86C911, 86C924, 86C801, 86C805, 86C928
AHEAD : V5000B
OAK : OTI-067, 077, 087
REALTEK : RTG3105, 3106, 3108, 3109
ALI : ALG2201
ATI : MACH 32
ARK : ARK1000VL
UMC : UM85C408
VESA : VESA V1.x SPEC (BIOS or Driver)

Support VESA ?

About compile problem "Invalid argument"

I try to compile step by step.

W:\ntvdmpatch\updates\001-sb20
patch.cmd is OK.

But

W:\ntvdmpatch\updates\002-demlfn>patch.cmd
dos\dem\demlfn.c
dos\dem\demlfn.h
2 File(s) copied
patch: **** write error : Invalid argument


W:\ntvdmpatch\updates\003-romemu>patch.cmd
patch: **** write error : Invalid argument

What is wrong ?

ldntvdm.dll - please check if it is infected by a virus/malware

I followed the steps in compiling the source code and already compiled the redistributable package. I executed this on a separate environment inside my VirtualBox. However I cannot proceed with the installation of the executable program on my Actual Windows 10 -64bitSystem since some portion of the installation file is blocked by my antivirus software Kaspersky.

ldntvdm\syswow64\ldntvdm.dll
infected with UDS:DangerousObject.Multi.Generic

Is it safe to install the package? or it is just false positive detection by Kaspersky?

Thanks and Regards,
Emerson

Windows Defender false positive

As it turns out, Windows Defender thinks ntvdmx64.dll and ntvdmx64.exe are viruses. It doesn't like old-src.trunk.r687.20150728.7z or old-sdk.trunk_r57.20150728.7z either. I don't see the false positives for these being lifted ever, seeing that they're not 100% legal and such.

Breaks Command Prompt in Creators Update

After installing this in Creators Update, unlike in Anniversary Update where this would work, Command Prompt no longer works. The most basic of commands like dir and cd are rendered inoperable. So much for this marvelous tool :(

NTVDMx64 interferes with OTVDM

When I install NTVDMx64, the OTVDM stops working (OTVDM shows up in Task manager as a background process for a few seconds and then closes). What can I do?

By the way, OTVDM is another Github project by otya128 which is designed for running 16-bit Windows programs on 64/32-bit Windows.

Issue with Visual Studio debugger

When I installed this on my Windows 10 machine, I wasn't able to run projects from Visual Studio (specifically 2012 and 2015). I would attempt to run a program using the Visual Studio interface, but it would just hang and not be able to run. On a potentially related note, the Slack desktop application would not launch as well. Whenever I uninstalled ntvdmx64, the issues were fixed, but if I reinstalled it, the issues returned. Any thoughts?

Install on Windows Server 2012 R2 (Worked 1 time)

Hello,

First of all, thank you for this amazing program.
I'm running your program on a Windows Server 2012.
The first time, I downloaded the program from here : http://www.columbia.edu/~em36/ntvdmx64.html

Then, I installed it on my Windows Server 2012 R2 (64 bits), and what a surprise ! My 16-bit DOS Application worked !

case1

But I wanted to be sure of this manipulation, so I opened an old Windows Server 2012 R2 that I created yesterday.
When I did the same manipulations, it did not work for this server. I used exactly the same files.

case2

I checked the register Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Windows for the two servers, and it is exactly the same.

How is it possible? I don't want to make it work randomly, because I want to set this in enterprise. Could you please explain me or guide me on this?

I tried with the new versions of ntvdmx64 you uploaded. It did not work. Same thing.
I joined screenshots.

Causes issue with SourceTree and git

When is have it installed, SourceTree using git is unable to pull and push correctly. Pulling causes issues and pushing says that it was successful, but the origin remains unchanged.

Installer Details Missing a Few Things...

Your installer needs some work.

I had to install C++ 2015 x64/x86...

There was no W:\binaries so I had to just manually move all files to release\dos...

And after reboot applications still won't run, they error out just as they always has.

How to actually run applications?

I've been trying to get NTVDMx64 working. I have it installed (rebooted afterwards) and have been trying to run the original SkiiFree. https://ski.ihoc.net/ski.zip

No matter where I launch it from (Explorer, compatibility mode, cmd, elevated cmd), I get the usual not compatible message. ntvdm.exe by itself runs and exits (I believe as it should) so I'm not sure if I'm just missing something trying to run this.

This is on Windows 10 x64 OS build 15063.250

Crashes in Win 8.0

Did some more testing now as referenced in the last posts in ticket #32 using the commit posted Jan 12.
On a clean install of Windows 8.0 with no patches installed the ldntvdm loader injects fine.
And on the first run of a DOS program the expected error message is recieved:
"The program or feature "??\C:\Windows\system32\edit.com" cannot start or run due to incompatibity with 64-bit versions of Windows. Please contact the software vendor to ask if a 64-bit Windows compatible version is available."

However on the second try Windows throws an application crash error message.
This is the first error:
Faulting application name: cmd.exe, version: 6.2.9200.16384, time stamp: 0x50108a15
Faulting module name: ntdll.dll, version: 6.2.9200.16384, time stamp: 0x5010acd2
Exception code: 0xc0000005
Fault offset: 0x000000000000d695
Faulting process id: 0xb10
Faulting application start time: 0x01d4ab7afa76125d
Faulting application path: C:\Windows\system32\cmd.exe
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
Report Id: 40fb80cb-176e-11e9-be67-54ee750a7d00
Faulting package full name:
Faulting package-relative application ID:


This is the second error logged:
Fault bucket , type 0
Event Name: APPCRASH
Response: Not available
Cab Id: 0

Problem signature:
P1: cmd.exe
P2: 6.2.9200.16384
P3: 50108a15
P4: ntdll.dll
P5: 6.2.9200.16384
P6: 5010acd2
P7: c0000005
P8: 000000000000d695
P9:
P10:


And finally here is the DebugView running at the same time:
00000001 0.00000000 [1936] NTVDM hook installed
00000002 0.00003892 [1936] LDNTVDM: BasepProcessInvalidImageReal = 355D93F0
00000003 0.00005388 [1936] LDNTVDM: BaseIsDosApplication = 355D9568
00000004 0.00025360 [1936] ldntvdm Init done
00000005 1.36123824 [180] NTVDM hook installed
00000006 1.36131132 [180] LDNTVDM: BasepProcessInvalidImageReal = 355D93F0
00000007 1.36137772 [180] LDNTVDM: BaseIsDosApplication = 355D9568
00000008 1.36145079 [180] LDNTVDM is running inside ConHost.exe
00000009 1.36147392 [180] Hook_IAT_x64_IAT(FADC0000, api-ms-win-core-libraryloader-l1-2-0.dll, LoadLibraryExW, 32932388, 32937A98)
00000010 1.36153722 [180] Hooking failed.
00000011 1.36174500 [180] ldntvdm Init done
00000012 1.73847449 [1748] NTVDM hook installed
00000013 1.73848867 [1748] LDNTVDM: BasepProcessInvalidImageReal = 355D93F0
00000014 1.73851907 [1748] LDNTVDM: BaseIsDosApplication = 355D9568
00000015 1.73852932 [1748] ldntvdm Init done
00000016 9.88755131 [2832] NTVDM hook installed
00000017 9.88761616 [2832] LDNTVDM: BasepProcessInvalidImageReal = 355D93F0
00000018 9.88766384 [2832] LDNTVDM: BaseIsDosApplication = 355D9568
00000019 9.88777065 [2832] LDNTVDM is running inside ConHost.exe
00000020 9.88780117 [2832] Hook_IAT_x64_IAT(AC4F0000, api-ms-win-core-libraryloader-l1-2-0.dll, LoadLibraryExW, 32932388, 32937A98)
00000021 9.88784599 [2832] Hooking failed.
00000022 9.88795471 [2832] ldntvdm Init done
00000023 16.08089638 [2832] LDNTVDM: BasepProcessInvalidImage(C000012F,'??\C:\Windows\system32\edit.com');
00000024 16.08159447 [2832] Symsrv options: 00000002
00000025 16.08163643 [2832] DBGHELP: Symbol Search Path: SRVC:\Users\User\AppData\Local\Temp\SymbolCachehttp://msdl.microsoft.com/download/symbols
00000026 16.08165169 [2832] DBGHELP: No header for C:\Windows\system32\kernel32.dll. Searching for image on disk
00000027 16.08171654 [2832] DBGHELP: C:\Windows\system32\kernel32.dll - OK
00000028 16.08344650 [2832] SYMSRV: C:\Users\User\AppData\Local\Temp\SymbolCache\kernel32.pdb\996C94DB18DE43688CA110D2FF25B8542\kernel32.pdb
00000029 16.16028023 [2832] DBGHELP: kernel32 - public symbols
00000030 16.16028023 [2832] C:\Users\User\AppData\Local\Temp\SymbolCache\kernel32.pdb\996C94DB18DE43688CA110D2FF25B8542\kernel32.pdb
00000031 16.16040039 [2832] SymEng_GetAddr BaseCreateVDMEnvironment
00000032 16.18826675 [2832] SymEng_GetAddr BaseGetVdmConfigInfo
00000033 16.19895172 [2832] SymEng_GetAddr BaseCheckVDM
00000034 16.21145439 [2832] VDMState=00000001
00000035 16.21724129 [2568] NTVDM hook installed
00000036 16.21726036 [2568] LDNTVDM: BasepProcessInvalidImageReal = 355D93F0
00000037 16.21727180 [2568] LDNTVDM: BaseIsDosApplication = 355D9568
00000038 16.21728134 [2568] ldntvdm Init done

ntvdm.exe spins the processor on 100% and does not start the program

I want to run an old 16-bit Windows application on Windows 7 and Windows 10 64-bit operating systems. The following error occurs: the program you want to run does not start, and ntvdm.exe loads the processor on 100% and runs until it shoots. I downloaded the program from http://www.columbia.edu/~em36/ntvdmx64.html and installed it, apparently without error. What are you suggestin what to look at?
I've tried several computers, none of them started. I've shut down the virus scanner and firewall so that this is not the problem. Windows 7 and Windows 10 on 32-bit systems work well.

DebugView log:

00000001 0.00000000 [6548] LDNTVDM: BasepProcessInvalidImage(C0000130,'??\C:\ardesign\ardesign.exe');
00000002 0.00014405 [6548] LDNTVDM: Launching Win16 application
00000003 0.00295506 [6548] LDNTVDM: BasepProcessInvalidImage = 1
00000004 0.05852314 [6820] Hook_Inline(775477A0, F29C2284, 0)
00000005 0.05859095 [6820] dwOrigSize detected: 10
00000006 0.05865289 [6820] Hook_Inline context=7754BF29
00000007 0.05870531 [6820] Hook_IAT_x64_IAT(774B0000, ntdll.dll, NtCreateUserProcess, F29C20E8, F29CB8B8)
00000008 0.06109076 [6820] LDNTVDM: BasepProcessInvalidImageReal = 7754BF29
00000009 0.06114831 [6820] LDNTVDM: BaseIsDosApplication = 774F9680
00000010 0.06120732 [6820] LDNTVDM is running inside ConHost.exe
00000011 0.06132498 [6820] ConsBmp_Install done
00000012 0.06136823 [6820] Hook_IAT_x64_IAT(FFB00000, ntdll.dll, RtlAllocateHeap, F29C27E0, F29CB8B0)
00000013 0.06144337 [6820] Hook_IAT_x64_IAT(FFB00000, user32.dll, NotifyWinEvent, F29C2864, F29CB8A8)
00000014 0.07851432 [6856] RegQueryValueEx 1 failed: 00000002
00000015 0.07858177 [6856] RegQueryValueEx 2 failed: 00000002
00000016 0.07863638 [6856] Hook_IAT_x64_IAT(76D20000, ntdll.dll, NtCreateUserProcess, 711126B0, 7111AE28)
00000017 0.07939878 [6856] LDNTVDM: BasepProcessInvalidImageReal = 00000000
00000018 0.07944863 [6856] LDNTVDM: BaseIsDosApplication = 00000000
00000019 0.07951277 [6856] Hook_IAT_x64_IAT(76D20000, ntdll.dll, CsrClientCallServer, 71111FB0, 71118008)
00000020 0.07964143 [6856] Hook_IAT_x64_IAT(76D20000, ntdll.dll, CsrAllocateMessagePointer, 711121B0, 00000000)
00000021 0.07977302 [6856] Hook_IAT_x64_IAT(0F000000, KERNEL32.DLL, SetConsolePalette, 71112D60, 7111AE24)
00000022 0.07992771 [6856] Hook_IAT_x64_IAT(76D20000, ntdll.dll, NtQueryInformationProcess, 71112C20, 00000000)
00000023 0.08019271 [6856] Hook_IAT_x64_IAT(76E30000, ntdll.dll, NtQueryInformationProcess, 71112C20, 00000000)
00000024 0.08140706 [6856] BaseGetNextVDMCommand: ConsoleHandle=00001AA4, iTask=00000016
00000025 0.08149944 [6856] BaseGetNextVDMCommand(268500999) = C000000D
00000026 0.08170470 [6856] NTVDM: 25600K Memory: 8192K XMS, 0K EMS, 16384K DPMI
00000027 0.11795566 [6856] BaseIsFirstVDM(65545) = C0000022
00000028 14.51950359 [7004] RegQueryValueEx 1 failed: 00000002
00000029 15.01868629 [7004] Hook_IAT_x64_IAT(76D20000, ntdll.dll, NtCreateUserProcess, 711126B0, 7111AE28)
00000030 15.53843021 [7004] LDNTVDM: BaseIsDosApplication = 00000000
00000031 16.03252602 [7004] Hook_IAT_x64_IAT(76D20000, ntdll.dll, CsrAllocateMessagePointer, 711121B0, 00000000)
00000032 16.54724693 [7004] Hooking failed.
00000033 16.54757881 [7004] Hook_IAT_x64_IAT(76D20000, ntdll.dll, NtQueryInformationProcess, 71112C20, 00000000)
00000034 16.54856682 [7004] Hook_IAT_x64_IAT(76E30000, ntdll.dll, NtQueryInformationProcess, 71112C20, 00000000)

DPMI problem

If I run a DPMI program in the console, it hangs the second time I try to run it if fs and gs registers are not zero on return.

ldntvdm.dll does not inject in 64-bit apps since Dec22 update

Hi, with the latest as of writing released ldntvdm.dll it fails to get injected via AppInit_DLLs for 64-bit processes, however it does get injected for 32-bit processes.
Replacing the ldntvdm.dll file with the previous one from commit ac93217 released Dec3 in System32 makes it work again.
Tested this on Windows 7 SP1 x64 and Windows 8.1 x64

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.