Dit project betreft een native x64-poort van Microsoft Word voor Windows 1.1a (codenaam 'Opus'). In tegenstelling tot emulators, compileert dit project de originele broncode samen met moderne vervangers voor de verouderde 16-bit assembly en Win16-platformbeperkingen.
Technische kernpunten:
- Implementatie: Assembly is vertaald naar C/C++, geheugenbeheer is aangepast aan x64-standaarden en API-aanroepen zijn geactualiseerd naar de huidige Win32 API's.
- Build-proces: Gebruikers kunnen het project bouwen met Visual Studio 2022, CMake en PowerShell.
- Validatie: Er is een uitgebreide testsuite aanwezig die zowel de runtime als UI-workflows (zoals opmaak en opslaan) controleert om trouw aan het origineel te blijven.
- Structuur: De projectstructuur maakt een strikt onderscheid tussen de historische 'Opus'-bronnen en de nieuwe compatibiliteitslaag.
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
| Pad | Doel |
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
| Target | Beschrijving |
WORD1 | De native x64 Microsoft Word executable |
opusoriginalengine | Originele Word-applicatie engine gecompileerd voor x64 |
opusx64runtime | Native runtime en vertaald assembly-gedrag |
opusword1ui_test | Geautomatiseerde end-to-end UI test driver |
legacy_sources | IDE-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.
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
| Pad | Doel |
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
| Target | Beschrijving |
WORD1 | De native x64 Microsoft Word executable |
opusoriginalengine | Originele Word-applicatie engine gecompileerd voor x64 |
opusx64runtime | Native runtime en vertaald assembly-gedrag |
opusword1ui_test | Geautomatiseerde end-to-end UI test driver |
legacy_sources | IDE-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.