Skip to content
/ winevdm Public
forked from otya128/winevdm

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

License

Notifications You must be signed in to change notification settings

C4rl0b/winevdm

This branch is 1449 commits behind otya128/winevdm:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0e4b67e · Feb 10, 2019
Jan 2, 2019
Jan 2, 2019
Jan 5, 2019
Jan 2, 2019
Jan 18, 2019
Jul 20, 2018
Dec 1, 2018
Jan 2, 2019
Jan 2, 2019
Jan 2, 2019
Nov 1, 2018
Jan 2, 2019
Oct 12, 2018
Feb 7, 2019
Jan 3, 2019
Jan 2, 2019
Jan 22, 2019
Jan 2, 2019
Jan 2, 2019
Jan 2, 2019
Aug 2, 2018
Sep 18, 2018
Sep 11, 2018
Jan 18, 2019
Sep 18, 2018
Jan 11, 2019
Dec 27, 2018
Sep 18, 2018
Nov 23, 2018
Nov 1, 2018
Sep 30, 2018
Jan 22, 2019
Jan 2, 2019
Nov 23, 2018
Dec 15, 2018
Sep 18, 2018
Jan 2, 2019
Jan 2, 2019
Dec 8, 2018
Feb 10, 2019
Aug 2, 2018
May 13, 2018
Nov 23, 2018
Jan 2, 2019
Dec 28, 2018
Sep 18, 2018
Jan 2, 2019
Jan 2, 2019
May 13, 2018
Oct 15, 2018
Feb 10, 2019
Jan 2, 2019
Dec 29, 2018
Sep 18, 2018
Sep 18, 2018
Jan 2, 2019
Oct 4, 2018
Jul 29, 2018
Sep 1, 2018
May 15, 2018
Oct 4, 2018
Aug 22, 2018
Jul 12, 2018
Jan 25, 2019
Dec 29, 2018
Jan 2, 2019
Jul 27, 2017
Jan 25, 2019

Repository files navigation

winevdm on 64-bit Windows

screenshot

Download stable version

Download latest version (unstable, slower than stable version)

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

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

How to run

  • Drag and drop Win16 executable file to otvdm.exe or execute otvdmw.exe.

How to install

  • Download or compile
  • Edit install.reg
  • Register install.reg
  • You can execute Win16 binaries directly!

If you install v0.4.x, you should add these to install.reg and register install.reg again.

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\NtVdm64\OTVDM]
"CommandLine"="\"%m\" %c"
"InternalName"="*"
"MappedExeName"="C:\\PATH\\TO\\otvdm.exe"
"ProductName"="*"
"ProductVersion"="*"

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

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.

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 94.5%
  • C++ 3.0%
  • Ruby 1.0%
  • Yacc 0.7%
  • Objective-C 0.7%
  • Makefile 0.1%