This project is a fully working native Windows x64 port of Microsoft Word for
Windows 1.1a, whose historical codename was Opus. It builds the original
Word source and resources together with modern replacements for the 16-bit
assembly, segmented-memory, and Win16 platform boundaries.
The result is the original Word application and user experience running as a 64-bit Windows executable. This is not an emulator or a reimplementation using a modern editor control.
- 64-bit Windows
- Visual Studio 2022 with Desktop development with C++
- A Windows 10 or Windows 11 SDK installed through Visual Studio
- CMake 3.25 or newer
- PowerShell
Clone the repository, configure the included CMake preset, and build it from a PowerShell prompt:
git clone https://github.com/jmarshall23/msword.git
Set-Location msword\src
cmake --preset x64-debug
cmake --build --preset x64-debug
& ..\bin\WORD1.exe
For an optimized build, use the release preset instead:
cmake --preset x64-release
cmake --build --preset x64-release
& ..\bin\WORD1.exe
The presets use the Visual Studio 2022 x64 generator. After configuration, the
generated solution can also be opened directly from
out\MicrosoftWordX64Port.sln; use WORD1 as the startup project.
Run the complete Debug test suite from the repository root:
ctest --test-dir .\out -C Debug --output-on-failureOr, when your current directory is src:
ctest --test-dir ..\out -C Debug --output-on-failureFor a release build, replace Debug with Release. The suite covers the
ported x64 runtime, original Word data structures and command tables, process
startup, and automated UI workflows including typing, selection, formatting,
dialogs, and saving.
| Path | Purpose |
|---|---|
| src/Opus/ | Original Microsoft Word/Opus application source and resources |
| src/OpusEtAl/ | Original supporting tools, libraries, and build inputs |
| src/OpusProg/ | Historical program documentation |
| src/port/original/ | x64 compatibility layer, translated routines, and tests |
| src/port/tools/ | Native replacements for historical build-time tools |
| src/cmake/ | Resource and source-generation helpers |
| out/ | CMake cache and generated Visual Studio solution |
| build/ | Intermediate tools, tests, probes, PDBs, and diagnostics |
| bin/ | Final executable and runtime files |
out, build, and bin are generated locally during configuration and
compilation.
The original C and resource files remain the authoritative implementation. The port adds only the platform work needed to build and run that code safely on 64-bit Windows:
- 16-bit x86 assembly entry points are translated to fixed-width C or C++.
- Segmented and double-indirect memory handles are mapped to an x64-safe native runtime.
- Win16-specific startup, messaging, graphics, file, and resource behavior is adapted to current Win32 APIs.
- Original command, dialog, cursor, bitmap, and other generated assets are rebuilt by native host tools as part of the CMake graph.
- Unit, runtime, smoke, and UI tests guard compatibility with the original algorithms and application behavior.
CMake inventories the legacy assembly tree but does not compile those modules into native targets. This keeps the historical implementation available as a reference while ensuring all shipped code is valid for AMD64.
| Target | Description |
|---|---|
| WORD1 | The native x64 Microsoft Word executable |
| opus_original_engine | Original Word application engine compiled for x64 |
| opus_x64_runtime | Native runtime and translated assembly behavior |
| opus_word1_ui_test | Automated end-to-end UI test driver |
| legacy_sources | IDE-visible reference collection of the original assembly |
Build a specific target with:
cmake --build --preset x64-debug --target WORD1Changes should preserve the original Word behavior while keeping all native interfaces pointer-width safe. Prefer source-equivalent translations of historical routines, isolate unavoidable Windows API adaptation at the port boundary, and add focused tests for newly translated behavior.
The historical source files retain their original Microsoft and third-party copyright notices. This repository does not currently include a top-level license file; review the applicable rights before redistributing the source or binaries.