Microsoft Word voor Windows 1.1a - Native x64 Port

Het resultaat is de originele Word-applicatie en gebruikerservaring die draait als een 64-bit Windows-executable. Dit is geen emulator of een reimplementatie met gebruik van moderne editor-controls.

Systeemvereisten

Om dit project te kunnen gebruiken, zijn de volgende zaken vereist:

  • 64-bit Windows
  • Visual Studio 2022 met 'Desktop development with C++'
  • Een Windows 10 of Windows 11 SDK (geïnstalleerd via Visual Studio)
  • CMake 3.25 of nieuwer
  • PowerShell

Bouwen en uitvoeren

Kloon de repository, configureer het bijgevoegde CMake-preset en bouw het project vanuit een 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

Voor een geoptimaliseerde build kan het release-preset worden gebruikt:

cmake --preset x64-release
cmake --build --preset x64-release
& ..\bin\WORD1.exe

De presets maken gebruik van de Visual Studio 2022 x64-generator. Na configuratie kan de gegenereerde solution ook direct worden geopend via out\MicrosoftWordX64Port.sln; gebruik WORD1 als het startproject.

Testen

Voer de volledige Debug-testsuite uit vanuit de wortel van de repository:

ctest --test-dir .\out -C Debug --output-on-failure

Of, indien de huidige directory src is:

ctest --test-dir ..\out -C Debug --output-on-failure

Vervang voor een release-build 'Debug' door 'Release'. De suite test de gepoorte x64-runtime, originele Word-datastructuren en commando-tabellen, het opstarten van het proces en geautomatiseerde UI-workflows (waaronder typen, selecteren, opmaak, dialogen en opslaan).

Projectstructuur

PadDoel
src/Opus/Originele Microsoft Word/Opus applicatiebronnen en resources
src/OpusEtAl/Originele ondersteunende tools, bibliotheken en build-inputs
src/OpusProg/Historische programmadocumentatie
src/port/original/x64 compatibiliteitslaag, vertaalde routines en tests
src/port/tools/Native vervangers voor historische build-time tools
src/cmake/Helpers voor het genereren van resources en broncode
out/CMake cache en gegenereerde Visual Studio solution
build/Tussentijdse tools, tests, probes, PDB's en diagnostiek
bin/Eindproduct (executable) en runtime-bestanden

Let op: de mappen out, build en bin worden lokaal gegenereerd tijdens configuratie en compilatie.

Hoe de poort werkt

De originele C- en resourcebestanden blijven de gezaghebbende implementatie. De poort voegt enkel het platformwerk toe dat nodig is om deze code veilig uit te voeren op 64-bit Windows:

  • Assembly: Entry points van 16-bit x86 assembly zijn vertaald naar fixed-width C of C++.
  • Geheugenbeheer: Gesegmenteerde en dubbel-indirecte geheugenhandles zijn gekoppeld aan een x64-veilige native runtime.
  • API-aanpassing: Win16-specifieke startprocedures, messaging, graphics, bestanden en resource-gedrag zijn aangepast aan huidige Win32 API's.
  • Assets: Originele commando's, dialogen, cursors, bitmaps en andere gegenereerde assets worden herbouwd door native host-tools als onderdeel van de CMake-graph.
  • Kwaliteitsbewaking: Unit-, runtime-, smoke- en UI-tests bewaken de compatibiliteit met de originele algoritmen en het applicatiegedrag.

CMake inventariseert de legacy assembly-boom, maar compileert deze modules niet naar native targets. Hierdoor blijft de historische implementatie beschikbaar als referentie, terwijl gegarandeerd wordt dat alle geleverde code geldig is voor AMD64.

Nuttige targets

TargetBeschrijving
WORD1De native x64 Microsoft Word executable
opusoriginalengineOriginele Word-applicatie engine gecompileerd voor x64
opusx64runtimeNative runtime en vertaald assembly-gedrag
opusword1ui_testGeautomatiseerde end-to-end UI test driver
legacy_sourcesIDE-zichtbare referentiecollectie van de originele assembly

Een specifiek target kan gebouwd worden met: cmake --build --preset x64-debug --target WORD1

Bijdragen

Wijzigingen dienen het originele Word-gedrag te behouden, terwijl alle native interfaces 'pointer-width safe' moeten blijven. Geef de voorkeur aan bron-equivalente vertalingen van historische routines, isoleer onvermijdelijke Windows API-aanpassingen bij de port-boundary en voeg gerichte tests toe voor nieuw vertaald gedrag.

Auteursrecht

De historische bronbestanden behouden hun originele Microsoft- en third-party auteursrechten. Deze repository bevat momenteel geen overkoepelend licentiebestand; raadpleeg de toepasselijke rechten voordat u de broncode of binaries herdistribueert.