otya128/winevdm
otya128/winevdm has 3,649 GitHub stars and 209 forks. GitHot measured +1 stars in 24 hours. Last checked 2026-11-06 18:23 UTC. Last push 2026-10-24.
16-bit Windows (Windows 1.x, 2.x, 3.0, 3.1, etc.) on 64-bit Windows
Measured star growth
- in 24h
- +1
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
Originalwinevdm on 64-bit Windows
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
- 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
- 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
See otvdm.ini.
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 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
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.
DOS emulation is incomplete and it is recommended to use DOSBox or MS-DOS Player.
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
560,476 starspublic-apis/public-apis
A collective list of free APIs
496,785 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
438,404 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,086 stars