GitHub - jmarshall23/msword: Port of Microsoft Word 1.1a to x64 with extra features for research purposes. · GitHub
/" data-turbo-transient="true" />
Skip to content
Type / to search
Sign in<br>Sign upAppearance settings
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
jmarshall23
msword
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star<br>37
main
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>13 Commits<br>13 Commits
src
src
README.md
README.md
View all files
Repository files navigation
Microsoft Word for Windows 1.1a - Native x64 Port
This project is a fully working native Windows x64 port of Microsoft Word for<br>Windows 1.1a, whose historical codename was Opus . It builds the original<br>Word source and resources together with modern replacements for the 16-bit<br>assembly, segmented-memory, and Win16 platform boundaries.
The result is the original Word application and user experience running as a<br>64-bit Windows executable. This is not an emulator or a reimplementation using<br>a modern editor control.
Requirements
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
Build and run
Clone the repository, configure the included CMake preset, and build it from a<br>PowerShell prompt:
git clone https://github.com/jmarshall23/msword.git<br>Set-Location msword\src
cmake --preset x64-debug<br>cmake --build --preset x64-debug
& ..\bin\WORD1.exe
For an optimized build, use the release preset instead:
cmake --preset x64-release<br>cmake --build --preset x64-release<br>& ..\bin\WORD1.exe
The presets use the Visual Studio 2022 x64 generator. After configuration, the<br>generated solution can also be opened directly from<br>out\MicrosoftWordX64Port.sln; use WORD1 as the startup project.
Test
Run the complete Debug test suite from the repository root:
ctest --test-dir .\out -C Debug --output-on-failure
Or, when your current directory is src:
ctest --test-dir ..\out -C Debug --output-on-failure
For a release build, replace Debug with Release. The suite covers the<br>ported x64 runtime, original Word data structures and command tables, process<br>startup, and automated UI workflows including typing, selection, formatting,<br>dialogs, and saving.
Project layout
Path<br>Purpose
src/Opus/<br>Original Microsoft Word/Opus application source and resources
src/OpusEtAl/<br>Original supporting tools, libraries, and build inputs
src/OpusProg/<br>Historical program documentation
src/port/original/<br>x64 compatibility layer, translated routines, and tests
src/port/tools/<br>Native replacements for historical build-time tools
src/cmake/<br>Resource and source-generation helpers
out/<br>CMake cache and generated Visual Studio solution
build/<br>Intermediate tools, tests, probes, PDBs, and diagnostics
bin/<br>Final executable and runtime files
out, build, and bin are generated locally during configuration and<br>compilation.
How the port works
The original C and resource files remain the authoritative implementation.<br>The port adds only the platform work needed to build and run that code safely<br>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<br>runtime.
Win16-specific startup, messaging, graphics, file, and resource behavior is<br>adapted to current Win32 APIs.
Original command, dialog, cursor, bitmap, and other generated assets are<br>rebuilt by native host tools as part of the CMake graph.
Unit, runtime, smoke, and UI tests guard compatibility with the original<br>algorithms and application behavior.
CMake inventories the legacy assembly tree but does not compile those modules<br>into native targets. This keeps the historical implementation available as a<br>reference while ensuring all shipped code is valid for AMD64.
Useful targets
Target<br>Description
WORD1<br>The native x64 Microsoft Word executable
opus_original_engine<br>Original Word application engine compiled for x64
opus_x64_runtime<br>Native runtime and translated assembly behavior
opus_word1_ui_test<br>Automated end-to-end UI test driver
legacy_sources<br>IDE-visible reference collection of the original assembly
Build a specific target with:
cmake --build --preset x64-debug --target WORD1
Contributing
Changes should preserve the original Word behavior while keeping all native<br>interfaces pointer-width safe. Prefer source-equivalent translations of<br>historical routines, isolate unavoidable Windows API adaptation at the port<br>boundary, and add focused tests for newly translated behavior.
Copyright
The historical source files retain their original Microsoft and...