Skip to content
master
Switch branches/tags
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
May 13, 2019
May 13, 2019
May 13, 2019
May 13, 2019
Oct 12, 2018
May 13, 2019
May 13, 2019
May 13, 2019
May 29, 2021
May 13, 2019
May 13, 2019
May 13, 2019
May 13, 2019
Feb 6, 2021
May 13, 2019
Aug 12, 2020
May 29, 2021
May 13, 2019
May 13, 2019
May 13, 2019
Mar 8, 2021
May 13, 2019
May 13, 2019
May 13, 2019
May 13, 2019
wpp
Apr 10, 2019
May 15, 2018
Jul 27, 2017

winevdm on 64-bit Windows

screenshot

Download stable version

Download latest version (unstable)

16-bit Windows (Windows 1.x, 2.x, 3.0, 3.1, etc.) on 64-bit Windows

An altered version of winevdm (a 16-bit Windows emulator), ported to 64-bit Windows.

How to compile(Visual Studio)

  • Install Visual Studio 2017
  • Edit PropertySheet.props
  • Compile

How to compile(cmake)

git clone https://github.com/otya128/winevdm.git
cd winevdm
mkdir build
cd build
cmake ..
make

How to run

How to install

  • Download or compile
  • Edit install.inf
  • Right-click on install.inf and select "Install"
  • You can execute Win16 binaries directly!

If you install v0.4.x, you should replace [Strings] section of install.inf with these and install install.inf again.

[Strings]
NtVdm64=SOFTWARE\Microsoft\Windows NT\CurrentVersion\NtVdm64
CommandLine="""%m"" %c"
MappedExeName=otvdm.exe

How does it work?

This program contains the following items

  • CPU Emulator
    • 64-bit Windows cannot modify LDT(NtSetInformationProcess(,ProcessLdtInformation,,) always returns error)
  • wine based Win16->Win32 conversion codes:
    BOOL16 WINAPI DestroyWindow16( HWND16 hwnd )
    {
        return DestroyWindow( WIN_Handle32(hwnd) );
    }
    Relay routines from 16-bit to 32-bit are autogenerated by convspec
    53  pascal -ret16 DestroyWindow(word) DestroyWindow16
  • DOS emulation for Win16
  • 16-bit <=> native HANDLE conversion
  • Fix compatibility problems, fix compatibility problems

install.inf

When 64-bit Windows detects a 16-bit installer, it has a mechanism to start an alternative installer which is not 16-bit. This program uses it.

WINDOWS directory redirection

Some Win16 programs try to save their settings in %WINDIR%<filename>.ini

In recent Windows, it is not allowed to save to %WINDIR%, so it redirects.

winevdm

winevdm.exe [--app-name app.exe] command line
winevdm.exe CALC.EXE

It can also run DOS executables (DOS emulator-like). You can set the DOS version with the VDMDOSVER environment variable.