HN 日本語サマリー

← 一覧へ戻る
プログラミング

Microsoft Word for Windows 1.1a、ネイティブx64ポート

Microsoft Word for Windows 1.1a, Native X64 Port (github.com)

134 pointsby BruceEel59 コメント

要約

このプロジェクトは、Microsoft Word for Windows 1.1a(コードネームOpus)をネイティブなWindows x64環境で動作させるための完全なポートです。16ビットアセンブリやWin16プラットフォームの制約を現代的な代替手段で置き換え、オリジナルのWordアプリケーションを64ビット実行可能ファイルとしてビルド・実行します。エミュレーターや再実装ではなく、オリジナルのソースコードとユーザーエクスペリエンスを維持しています。

全文翻訳

Microsoft Word for Windows 1.1a - ネイティブx64ポート このプロジェクトは、歴史的なコードネームOpusであるMicrosoft Word for Windows 1.1aの、完全に動作するネイティブWindows x64ポートです。オリジナルのWordのソースコードとリソースを、16ビットアセンブリ、セグメントメモリ、Win16プラットフォームの境界に対する現代的な代替手段と共にビルドします。その結果、オリジナルのWordアプリケーションとユーザーエクスペリエンスが、64ビットWindows実行可能ファイルとして動作します。これはエミュレーターやモダンなエディタコントロールを使用した再実装ではありません。 要件 64ビットWindows Visual Studio 2022(デスクトップ開発(C++)を含む) Visual Studio経由でインストールされたWindows 10またはWindows 11 SDK CMake 3.25以降 PowerShell ビルドと実行 リポジトリをクローンし、含まれる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 最適化されたビルドの場合は、代わりにリリースプリセットを使用します。 cmake --preset x64-release cmake --build --preset x64-release & ..\bin\WORD1.exe プリセットはVisual Studio 2022 x64ジェネレーターを使用します。設定後、生成されたソリューションをout\MicrosoftWordX64Port.slnから直接開くこともできます。WORD1をスタートアッププロジェクトとして使用してください。 テスト リポジトリのルートから完全なデバッグテストスイートを実行します。 ctest --test-dir .\out -C Debug --output-on-failure または、現在のディレクトリがsrcの場合: ctest --test-dir ..\out -C Debug --output-on-failure リリースビルドの場合は、DebugをReleaseに置き換えてください。 スイートは、ポートされたx64ランタイム、オリジナルのWordデータ構造とコマンドテーブル、プロセス起動、およびタイピング、選択、フォーマット、ダイアログ、保存を含む自動化されたUIワークフローをカバーしています。 プロジェクトレイアウト パス 目的 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は、設定およびコンパイル中にローカルで生成されます。 ポートの仕組み オリジナルのCおよびリソースファイルは、権威ある実装のままです。ポートは、64ビットWindowsで安全にコードをビルドおよび実行するために必要なプラットフォーム作業のみを追加します。 16ビットx86アセンブリのエントリポイントは、固定幅のCまたはC++に変換されます。 セグメント化されたおよび二重間接的なメモリハンドルは、x64セーフなネイティブランタイムにマッピングされます。 Win16固有の起動、メッセージング、グラフィックス、ファイル、リソースの動作は、現在のWin32 APIに適応されます。 オリジナルのコマンド、ダイアログ、カーソル、ビットマップ、その他の生成されたアセットは、CMakeグラフの一部としてネイティブホストツールによって再構築されます。 単体テスト、ランタイムテスト、スモークテスト、UIテストは、オリジナルのアルゴリズムとアプリケーションの動作との互換性を保証します。 CMakeはレガシーアセンブリツリーをインベントリしますが、これらのモジュールをネイティブターゲットにコンパイルしません。これにより、歴史的な実装を参照として利用可能にしつつ、出荷されるすべてのコードがAMD64で有効であることを保証します。 有用なターゲット ターゲット 説明 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 貢献 変更はオリジナルのWordの動作を維持しつつ、すべてのネイティブインターフェースがポインタ幅で安全であることを保証する必要があります。歴史的なルーチンのソースコードと同等の変換を優先し、避けられないWindows APIの適応をポート境界に分離し、新しく変換された動作に焦点を当てたテストを追加してください。 著作権 歴史的なソースファイルは、オリジナルのMicrosoftおよびサードパーティの著作権表示を保持します。このリポジトリには現在、トップレベルのライセンスファイルは含まれていません。ソースまたはバイナリを再配布する前に、適用される権利を確認してください。