Skip to content

otya128/winevdm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jul 9, 2026
24580a0 · Jul 9, 2026

History

4,051 Commits
Dec 7, 2019
May 25, 2020
May 13, 2019
May 13, 2019
Aug 1, 2022
Feb 18, 2023
Feb 11, 2020
Apr 16, 2021
May 13, 2019
Nov 10, 2023
Jan 27, 2024
Mar 8, 2022
Sep 25, 2019
Jul 8, 2022
Jun 18, 2026
Oct 24, 2021
Apr 14, 2020
May 13, 2019
May 18, 2026
Jun 17, 2023
May 23, 2026
May 13, 2019
Aug 21, 2022
Mar 15, 2025
May 13, 2019
Jul 25, 2024
Oct 25, 2024
Mar 3, 2025
May 13, 2019
Jun 14, 2026
May 13, 2019
May 13, 2019
May 13, 2019
Jan 19, 2024
Aug 10, 2025
Jan 4, 2025
Jan 25, 2024
May 30, 2021
Oct 12, 2024
Oct 30, 2021
May 13, 2019
May 13, 2019
May 13, 2019
Sep 9, 2024
Jul 25, 2024
Jan 15, 2020
Apr 12, 2026
Aug 18, 2025
Mar 8, 2026
Oct 22, 2024
Oct 24, 2021
May 13, 2019
Mar 6, 2021
Apr 13, 2025
May 13, 2019
Mar 25, 2022
Aug 28, 2025
Apr 16, 2021
Feb 26, 2025
Jul 25, 2024
Dec 6, 2024
May 13, 2019
Oct 24, 2021
Nov 9, 2019
Sep 1, 2018
Oct 24, 2021
Oct 22, 2024
May 16, 2018
May 20, 2019
Nov 13, 2021
Jul 12, 2018
Oct 24, 2021
Apr 9, 2019
Dec 5, 2020
Jul 10, 2019
Nov 2, 2019
Dec 5, 2020
Apr 16, 2025
Oct 22, 2024
Jul 27, 2017
Jan 25, 2019

Repository files navigation

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 run

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:
    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.

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

About

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

Topics

Resources

License

Stars

3.3k stars

Watchers

86 watching

Forks

Packages

No packages published