msword: Port of Microsoft Word 1.1a to x64
msword: Microsoft Word 1.1a 的 x64 移植版
Microsoft Word for Windows 1.1a - Native x64 Port 该项目是一个完全可用的原生 Windows x64 移植版 Microsoft Word for Windows 1.1a(其历史代号为 Opus)。它将原始的 Word 源代码和资源与现代替代方案相结合,取代了 16 位汇编、分段内存和 Win16 平台边界。最终成果是一个作为 64 位 Windows 可执行文件运行的原始 Word 应用程序及用户体验。这不是模拟器,也不是使用现代编辑器控件的重新实现。
Requirements (要求)
- 64 位 Windows
- 安装了“使用 C++ 的桌面开发”组件的 Visual Studio 2022
- 通过 Visual Studio 安装的 Windows 10 或 Windows 11 SDK
- CMake 3.25 或更高版本
- PowerShell
Build and run (构建与运行)
克隆存储库,配置包含的 CMake 预设,并从 PowerShell 提示符构建它:
git clone https://github.com/jmarshall23/msword.git
Set-Location msword\src
cmake --preset x64-debug
cmake --build --preset x64-debug
& ..\bin\WORD1.exe
如需优化构建,请改用 release 预设:
cmake --preset x64-release
cmake --build --preset x64-release
& ..\bin\WORD1.exe
这些预设使用 Visual Studio 2022 x64 生成器。配置完成后,生成的解决方案也可以直接从 out\MicrosoftWordX64Port.sln 打开;请将 WORD1 设置为启动项目。
Test (测试)
从存储库根目录运行完整的 Debug 测试套件:
ctest --test-dir .\out -C Debug --output-on-failure
或者,当当前目录为 src 时:
ctest --test-dir ..\out -C Debug --output-on-failure
对于 Release 构建,将 Debug 替换为 Release。该套件涵盖了移植的 x64 运行时、原始 Word 数据结构和命令表、进程启动,以及包括输入、选择、格式化、对话框和保存等在内的自动化 UI 工作流。
Project layout (项目布局)
src/Opus/: 原始 Microsoft Word/Opus 应用程序源代码和资源src/OpusEtAl/: 原始支持工具、库和构建输入src/OpusProg/: 历史程序文档src/port/original/: x64 兼容层、翻译后的例程和测试src/port/tools/: 历史构建工具的原生替代品src/cmake/: 资源和源代码生成辅助工具out/: CMake 缓存和生成的 Visual Studio 解决方案build/: 中间工具、测试、探测、PDB 和诊断文件bin/: 最终可执行文件和运行时文件out、build和bin是在配置和编译过程中本地生成的。
How the port works (移植原理)
原始的 C 和资源文件仍然是权威实现。该移植版仅添加了在 64 位 Windows 上安全构建和运行代码所需的平台工作:
- 16 位 x86 汇编入口点被翻译为固定宽度的 C 或 C++。
- 分段和双重间接内存句柄被映射到 x64 安全的原生运行时。
- Win16 特有的启动、消息传递、图形、文件和资源行为被适配到当前的 Win32 API。
- 原始命令、对话框、光标、位图和其他生成的资产由原生主机工具作为 CMake 图的一部分重新构建。
- 单元测试、运行时测试、冒烟测试和 UI 测试确保了与原始算法和应用程序行为的兼容性。
- CMake 会清点遗留的汇编树,但不会将这些模块编译为原生目标。这使得历史实现可以作为参考,同时确保所有发布的代码对 AMD64 有效。
Useful targets (实用目标)
WORD1: 原生 x64 Microsoft Word 可执行文件opus_original_engine: 为 x64 编译的原始 Word 应用程序引擎opus_x64_runtime: 原生运行时和翻译后的汇编行为opus_word1_ui_test: 自动化端到端 UI 测试驱动程序legacy_sources: IDE 可见的原始汇编参考集合
使用以下命令构建特定目标:
cmake --build --preset x64-debug --target WORD1
Contributing (贡献)
更改应保留原始 Word 行为,同时保持所有原生接口的指针宽度安全。优先使用源代码等效的例程翻译,将不可避免的 Windows API 适配隔离在移植边界,并为新翻译的行为添加针对性测试。
Copyright (版权)
历史源文件保留其原始的 Microsoft 和第三方版权声明。此存储库目前不包含顶级许可证文件;在重新分发源代码或二进制文件之前,请审查适用的权利。