Skip to content
Oeiuwq Faith Blog OpenSource Porfolio

otya128/winevdm

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

otya128/winevdm.json
{
"createdAt": "2015-09-22T13:40:08Z",
"defaultBranch": "master",
"description": "16-bit Windows (Windows 1.x, 2.x, 3.0, 3.1, etc.) on 64-bit Windows",
"fullName": "otya128/winevdm",
"homepage": "",
"language": "C",
"name": "winevdm",
"pushedAt": "2026-01-02T02:12:54Z",
"stargazersCount": 3191,
"topics": [
"win16"
],
"updatedAt": "2026-03-18T21:41:32Z",
"url": "https://github.com/otya128/winevdm"
}

![screenshot]!(screenshot.PNG)

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.

  • Download or compile
  • Run “install” shortcut or right-click on install.inf and select “Install”
  • You can execute Win16 binaries directly!

If the registry is initialized by Windows Update, perform the above procedure again.

You can uninstall it by running uninstall.reg.

See [otvdm.ini]!(otvdm.ini).

  • Install Visual Studio 2017
  • Edit PropertySheet.props
  • Compile
Terminal window
git clone https://github.com/otya128/winevdm.git
cd winevdm
mkdir build
cd build
cmake ..
make

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

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.

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.

Terminal window
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.

DOS emulation is incomplete and it is recommended to use DOSBox or MS-DOS Player.