Technology2 min read

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

By · Published by Everything Blog

In short

### Briefing bit Windows (Windows 1.x, 2.x, 3.0, 3.1, etc.) on 64-bit Windows** Download the latest version of **winevdm** (a 16-bit Windows emulator) from the official repository. - If you encounter an issue with missing **VCRUNTIME140.dll**, install the 32-bit version of **Microsoft Visual C++ Redistributable for Visual Studio 2017**. - The program includes the following components: CPU Emulator bit Windows cannot modify LDT(NtSetInformationProcess(,ProcessLdtInformation,,) always returns err…

Key points

  • ### Briefing **16-bit Windows (Windows 1.x, 2.x, 3.0, 3.1, etc.) on 64-bit Windows** -…: ### Briefing **16-bit Windows (Windows 1.x, 2.x, 3.0, 3.1, etc.) on 64-bit Windows** - Download the latest version of **winevdm** (a 16-bit Windows emulator) from the official repository.
  • - If you encounter an issue with missing **VCRUNTIME140.dll**, install the 32-bit version…: - If you encounter an issue with missing **VCRUNTIME140.dll**, install the 32-bit version of **Microsoft Visual C++ Redistributable for Visual Studio 2017**.
  • - The program includes the following components: - CPU Emulator - 64-bit Windows cann…: - The program includes the following components: - CPU Emulator - 64-bit Windows cannot modify LDT(NtSetInformationProcess(,ProcessLdtInformation,,) always returns error) - Wine-based Win16->Win32 conversion codes: - Relay routine

Sources checked by our analysis pipeline: 1

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.

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

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

- Install Visual Studio 2017

- Edit PropertySheet.props

- Compile

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:

Relay routines from 16-bit to 32-bit are autogenerated by convspec

BOOL16 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

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.

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.

Original source: github.com

Technology