<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/16-bit-windows-windows-1-x-2-x-3-0-3-1-etc-on-64-bit-windows-uicy5s7y0" -->

---
title: 16-bit Windows (Windows 1.x, 2.x, 3.0, 3.1, etc.) on...
description: Winevdm is a modified version of a 16-bit Windows emulator ported to run on 64-bit Windows. It lets you run Win16 executables like CALC.EXE directly. The...
canonical: https://daily.dev/posts/16-bit-windows-windows-1-x-2-x-3-0-3-1-etc-on-64-bit-windows-uicy5s7y0
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: 16-bit Windows (Windows 1.x, 2.x, 3.0, 3.1, etc.) on 64-bit Windows | daily.dev
og:description: Winevdm is a modified version of a 16-bit Windows emulator ported to run on 64-bit Windows. It lets you run Win16 executables like CALC.EXE directly. The...
og:url: https://daily.dev/posts/16-bit-windows-windows-1-x-2-x-3-0-3-1-etc-on-64-bit-windows-uicy5s7y0
og:image: https://api.daily.dev/og/posts/UICY5S7y0.png
og:image:alt: 16-bit Windows (Windows 1.x, 2.x, 3.0, 3.1, etc.) on 64-bit Windows
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

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

**[Hacker News](https://daily.dev/sources/hn)** · 2 min read · 0 upvotes · 0 comments

## Summary

Winevdm is a modified version of a 16-bit Windows emulator ported to run on 64-bit Windows. It lets you run Win16 executables like CALC.EXE directly. The project includes a CPU emulator, wine-based Win16-to-Win32 conversion code with autogenerated relay routines, DOS emulation, and handle conversion between 16-bit and native formats. It also redirects Win16 programs that try to save settings in %WINDIR% since recent Windows does not allow saving there. DOS emulation is incomplete, so DOSBox or MS-DOS Player are recommended for DOS executables.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://github.com/otya128/winevdm>

## Questions this post answers

### How can I run a 16-bit Win16 executable on 64-bit Windows?

Use winevdm, a ported 16-bit Windows emulator, by dragging the Win16 executable onto otvdm.exe or running otvdmw.exe. Installing it lets you execute Win16 binaries directly afterward. If VCRUNTIME140.dll is missing, install the Microsoft Visual C++ Redistributable for Visual Studio 2017 (32-bit) first.

_Developers reviving legacy Win16 software can find setup notes like this on daily.dev._

### Why can't 64-bit Windows run 16-bit Windows applications natively?

64-bit Windows cannot modify the LDT (Local Descriptor Table), because NtSetInformationProcess with ProcessLdtInformation always returns an error on 64-bit systems. Winevdm works around this limitation with its own CPU emulator plus wine-based Win16-to-Win32 conversion routines that translate calls between the two environments.

_Anyone debugging legacy Windows compatibility quirks can track explanations like this on daily.dev._

### Can winevdm run DOS executables too?

Yes, winevdm includes DOS emulation and can run DOS executables in a DOS emulator-like mode, with the DOS version configurable via the VDMDOSVER environment variable. However, this DOS emulation is incomplete, so using DOSBox or MS-DOS Player is recommended for running DOS programs instead.

_Developers weighing legacy emulator options can compare tools like this on daily.dev._

## Community take

How the wider developer community reacted, aggregated from 5 discussions and 25 comments across hackernews (as of 2026-10-27).

**TL;DR:** Reactions are largely nostalgic and appreciative, with people recounting running old apps like MS Office 2.0 or Civ2 via this or similar tools, alongside a technical side-discussion about why Microsoft never officially supported 16-bit apps on 64-bit Windows and whether reviving such old software is worth the effort.

**Sentiment:** 45% positive · 40% mixed · 15% skeptical

**The case for**

- Old 16-bit office software like MS Office 2.0 is reportedly good enough for everyday word processing and its files open fine in modern apps.
- It enables running beloved old games like Civilization 2 on modern Windows.
- Its UI is seen as refreshingly simple compared to modern bloated software.
- One commenter was relieved this is a legitimate long-standing project rather than an AI-generated hack.

**The pushback**

- Old 16-bit file formats may carry unpatched security vulnerabilities, making file sharing risky.
- Microsoft's handle model (32-bit handles) made true 16-bit/32-bit interop technically painful, which is why official support was dropped.
- Some argue there's little commercial value in supporting software abandoned for decades, since affected use cases are mostly obsolete embedded systems.
- Nostalgia about old Windows reliability is disputed—some recall Windows 3.1 and Word crashing or needing frequent reboots.

**By community**

- hackernews (mixed): A mix of nostalgic appreciation for running old software and practical/technical debate over security, compatibility limits, and whether such backward compatibility is worth maintaining.

**Hottest debate:** Whether old Windows/Word from this era was actually reliable, with some insisting it never crashed and others recalling frequent reboots and crashes.

**Open questions**

- Why does modern software demand vastly more resources than 25-year-old software while adding only marginal functionality?
- Why didn't Microsoft ship a limited version of 16-bit app support instead of dropping it entirely?

**Highlights**

> being able to transfer HANDLEs across the 16/32-bit boundary notably for COM/OLE integration becomes a lot more painful Microsoft says at https://learn.microsoft.com/en-us/windows/win32/winprog64/ru...: > Note that 64-bit Windows does not support running 16-bit Windows-based applications. The primary reason is that handles have 32 significant bits on 64-bit Windows. Therefore, handles cannot be truncated and passed to 16-bit applications without loss of data. Attempts to launch 16-bit applications fail with the following error: ERROR_BAD_EXE_FORMAT. winevdm on Windows eschews that level of integration, but perhaps MS should have shipped WoW16 with limitations instead of nothing.
> — [my123 on hackernews](https://news.ycombinator.com/item?id=50256062)

> The crazy thing is, if you have 10 office windows open on a MacBook with 16GB, it brings the system absolutely to its knees. But the functionally most use would be mostly there with office 95 at the latest (except for syncing). Why does software nowadays use 1000x the resources of software 25 years ago, but only provides minimally more useful features.
> — [ant6n on hackernews](https://news.ycombinator.com/item?id=50256840)

> Windows 3.x crashed all the time. And when it didn't crash, some resource memory or whatever filled constantly. When I installed Windows 95 (which wasn't perfect, far from it), a friend of mine asked me "so, how often do you reboot", and until that time I hadn't really realized that I "rebooted" Windows 3.11 a few times per day because the memory just filled up and I really had to. I had at the time some software that run constantly on Windows 3.x (that I don't remember the name of (L-something), but I'm sure I got it from some magazine, since I didn't get Internet at home before 1996) just to monitor memory (and it was also a good task manager/launcher). I stopped using that with Windows 95.
> — [gschizas on hackernews · 1 comments](https://news.ycombinator.com/item?id=50256438)

> Also there is security. I think, I just guess, these old 16bit file formats are all exploitable to some extent
> — [haunter on hackernews · 1 comments](https://news.ycombinator.com/item?id=50255832)

> For a moment I was scared about yet another AI slop "recomp" or qemu or whatever hack, but this is actually legit and dates back years before slop was even a thing. Nice work.
> — [mschuster91 on hackernews](https://news.ycombinator.com/item?id=50257082)

**Source threads**

- [hackernews](https://news.ycombinator.com/item?id=50253529) · 92 points · 25 comments
- [hackernews](https://news.ycombinator.com/item?id=41155201) · 3 points · 0 comments
- [hackernews](https://news.ycombinator.com/item?id=26522059) · 3 points · 0 comments
- [hackernews](https://news.ycombinator.com/item?id=17668844) · 2 points · 0 comments
- [hackernews](https://news.ycombinator.com/item?id=18733502) · 1 points · 0 comments

## Similar posts on daily.dev

- [This GitHub project lets you run Windows 95 on any Linux machine and relive nostalgia](https://daily.dev/posts/this-github-project-lets-you-run-windows-95-on-any-linux-machine-and-relive-nostalgia-xnoi7p2ay) · XDA Developers · 0 upvotes · 0 comments
- [Unearthing my 1996 windowed OS in machine code for Am29000 homebrew computer](https://daily.dev/posts/unearthing-my-1996-windowed-os-in-machine-code-for-am29000-homebrew-computer-qtd6lniud) · Hacker News · 0 upvotes · 0 comments
- [The Oldest Windows App To Still Run On WIndows 11](https://daily.dev/posts/the-oldest-windows-app-to-still-run-on-windows-11-8y793ikzq) · Hackaday · 0 upvotes · 0 comments

---

Tags: [#windows](https://daily.dev/tags/windows), [#c](https://daily.dev/tags/c)

[View this post on daily.dev](https://daily.dev/posts/16-bit-windows-windows-1-x-2-x-3-0-3-1-etc-on-64-bit-windows-uicy5s7y0)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"16-bit Windows (Windows 1.x, 2.x, 3.0, 3.1, etc.) on 64-bit Windows","url":"https://daily.dev/posts/16-bit-windows-windows-1-x-2-x-3-0-3-1-etc-on-64-bit-windows-uicy5s7y0","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/16-bit-windows-windows-1-x-2-x-3-0-3-1-etc-on-64-bit-windows-uicy5s7y0"},"datePublished":"2026-10-27T06:09:53.615Z","dateModified":"2026-10-27T10:56:05.577Z","description":"Winevdm is a modified version of a 16-bit Windows emulator ported to run on 64-bit Windows. It lets you run Win16 executables like CALC.EXE directly. The...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/4ff12c0fc13edf5e4920a694d4c4d0d9?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/4ff12c0fc13edf5e4920a694d4c4d0d9?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Hacker News","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Hacker News","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn","url":"https://daily.dev/sources/hn"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/16-bit-windows-windows-1-x-2-x-3-0-3-1-etc-on-64-bit-windows-uicy5s7y0","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"windows,c","timeRequired":"PT2M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Hacker News","item":"https://daily.dev/sources/hn"},{"@type":"ListItem","position":3,"name":"16-bit Windows (Windows 1.x, 2.x, 3.0, 3.1, etc.) on 64-bit Windows"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/16-bit-windows-windows-1-x-2-x-3-0-3-1-etc-on-64-bit-windows-uicy5s7y0#faq","mainEntity":[{"@type":"Question","name":"How can I run a 16-bit Win16 executable on 64-bit Windows?","acceptedAnswer":{"@type":"Answer","text":"Use winevdm, a ported 16-bit Windows emulator, by dragging the Win16 executable onto otvdm.exe or running otvdmw.exe. Installing it lets you execute Win16 binaries directly afterward. If VCRUNTIME140.dll is missing, install the Microsoft Visual C++ Redistributable for Visual Studio 2017 (32-bit) first. Developers reviving legacy Win16 software can find setup notes like this on daily.dev."}},{"@type":"Question","name":"Why can't 64-bit Windows run 16-bit Windows applications natively?","acceptedAnswer":{"@type":"Answer","text":"64-bit Windows cannot modify the LDT (Local Descriptor Table), because NtSetInformationProcess with ProcessLdtInformation always returns an error on 64-bit systems. Winevdm works around this limitation with its own CPU emulator plus wine-based Win16-to-Win32 conversion routines that translate calls between the two environments. Anyone debugging legacy Windows compatibility quirks can track explanations like this on daily.dev."}},{"@type":"Question","name":"Can winevdm run DOS executables too?","acceptedAnswer":{"@type":"Answer","text":"Yes, winevdm includes DOS emulation and can run DOS executables in a DOS emulator-like mode, with the DOS version configurable via the VDMDOSVER environment variable. However, this DOS emulation is incomplete, so using DOSBox or MS-DOS Player is recommended for running DOS programs instead. Developers weighing legacy emulator options can compare tools like this on daily.dev."}}]}
```

