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/: 最终可执行文件和运行时文件
  • outbuildbin 是在配置和编译过程中本地生成的。

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 适配隔离在移植边界,并为新翻译的行为添加针对性测试。

历史源文件保留其原始的 Microsoft 和第三方版权声明。此存储库目前不包含顶级许可证文件;在重新分发源代码或二进制文件之前,请审查适用的权利。