← На главную

msword портирует Word 1.1a в нативный Windows x64 без эмуляции

09.08.2026 05:23 · hackernews

Проект msword от jmarshall23 — это полностью рабочий нативный Windows x64 порт Microsoft Word for Windows 1.1a, историческое кодовое имя которого было Opus. Исходники и ресурсы оригинального Word собираются вместе с современными заменами для 16-битного ассемблера, сегментированной памяти и Win16-окружения. На выходе получается настоящий 64-битный исполняемый файл Windows с оригинальным Word внутри. Это не эмулятор и не переписывание на современном редакторном контроле.

Для сборки нужны 64-битная Windows, Visual Studio 2022 с workload Desktop development with C++, Windows 10 или Windows 11 SDK, CMake 3.25 или новее, а также PowerShell. Репозиторий клонируется через git, затем из каталога src настраивается и собирается CMake-пресет: cmake --preset x64-debug, затем cmake --build --preset x64-debug, и запускается ..\bin\WORD1.exe. Для оптимизированной сборки используется пресет x64-release. После конфигурации можно открыть сгенерированный solution out\MicrosoftWordX64Port.sln и стартовать проект WORD1.

Тесты запускаются через ctest c флагом --test-dir .\out -C Debug --output-on-failure. Для release-сборки вместо Debug подставляется Release. Набор тестов покрывает портированный x64 runtime, оригинальные структуры данных Word и таблицы команд, процесс запуска, а ещё автоматизированные UI-сценарии: ввод текста, выделение, форматирование, диалоги и сохранение.

В каталогах src/Opus, src/OpusEtAl и src/OpusProg лежат оригинальные исходники Word, вспомогательные инструменты и историческая документация. Слой совместимости и перевод 16-битного кода находятся в src/port/original, а замены исторических сборочных утилит — в src/port/tools. Каталоги out, build и bin генерируются локально при конфигурации и компиляции.

Оригинальные C-код и ресурсы остаются главной реализацией. Порт добавляет только то, что нужно для безопасной работы этого кода на 64-битной Windows: точки входа на 16-битном ассемблере переведены в C/C++ фиксированной ширины, сегментные и double-indirect указатели памяти преобразованы в x64-safe нативный runtime, а специфичное для Win16 поведение — запуск, сообщения, графика, файлы, ресурсы — адаптировано к современным Win32 API. Оригинальные команды, диалоги, курсоры, битмапы и прочие генерируемые ресурсы пересобираются нативными инструментами в рамках CMake-графа. CMake инвентаризирует старый ассемблерный код, но не компилирует эти модули в нативные таргеты: legacy-реализация остаётся как справочная, а все поставляемые файлы валидны для AMD64.

Среди таргетов: WORD1 — нативный исполняемый файл Word, opus_original_engine — оригинальный движок Word для x64, opus_x64_runtime — нативный runtime с переводом ассемблерного поведения, opus_word1_ui_test — автоматический end-to-end UI-тест, и legacy_sources — коллекция исходных ассемблерных файлов для просмотра в IDE. Изменения должны сохранять оригинальное поведение Word и pointer-width safety; предпочитаются source-equivalent переводы, а неизбежная адаптация к Windows API изолируется на границе порта.

В исторических файлах сохранены оригинальные копирайты Microsoft и третьих лиц. В репозитории сейчас нет top-level license, поэтому перед распространением исходников или бинарников стоит разобраться с правами.

Читать оригинал →