otya128/winevdm
{ "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"}winevdm on 64-bit Windows
Section titled “winevdm on 64-bit Windows”![screenshot]!(screenshot.PNG)
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 run
Section titled “How to run”- If you get an error that VCRUNTIME140.dll is missing, install Microsoft Visual C++ Redistributable for Visual Studio 2017 (32-bit)
- Drag and drop Win16 executable file to otvdm.exe or execute otvdmw.exe.
How to install
Section titled “How to install”- 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.
Configuration
Section titled “Configuration”See [otvdm.ini]!(otvdm.ini).
How to compile(Visual Studio)
Section titled “How to compile(Visual Studio)”- Install Visual Studio 2017
- Edit PropertySheet.props
- Compile
How to compile(cmake)
Section titled “How to compile(cmake)”git clone https://github.com/otya128/winevdm.gitcd winevdmmkdir buildcd buildcmake ..makeHow does it work?
Section titled “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:
Relay routines from 16-bit to 32-bit are autogenerated by convspecBOOL16 WINAPI DestroyWindow16( HWND16 hwnd ){return DestroyWindow( WIN_Handle32(hwnd) );}53 pascal -ret16 DestroyWindow(word) DestroyWindow16
- DOS emulation for Win16
- 16-bit <=> native HANDLE conversion
- Fix compatibility problems, fix compatibility problems
install.inf
Section titled “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
Section titled “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
Section titled “winevdm”winevdm.exe [--app-name app.exe] command linewinevdm.exe CALC.EXEIt 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.