HN 日本語サマリー

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

Windows 11で現在も動作する最も古いGUIアプリケーション

Oldest GUI application that still runs on Windows 11 (blog.enlyth.com)

63 pointsby enlyth21 コメント

要約

著者は、Windows 11上でエミュレーションなしに動作する最も古いGUIアプリケーションを探求しました。当初は1993年の「FREECELL.EXE」が見つかりましたが、さらに調査を進めた結果、1992年11月16日付けの「CDPLAYER.EXE」が、システムライブラリを利用することで現在も動作することが判明しました。また、16ビットアプリケーションの実行を可能にするツールを使えば、1985年の「REVERSI.EXE」も動作させられることが示されています。

全文翻訳

Windows 11で現在も動作する最も古いGUIアプリケーション

初期調査

しばらくの間、私はある些細な疑問について考えていました。それは、エミュレーションや変更なしにWindows 11でまだ動作する最も古いGUIアプリケーションは何か、ということです。

Windowsの優れた後方互換性を考えると、答えは驚くほど古いものだろうと予想していました。

残念ながら、64ビット版WindowsにはNTVDMがないため、Windows 11は単体では16ビットWindowsプログラムを実行できません。そのため、初期のNT時代からの何かを見つける必要があります。

以前、匿名フォーラムでこの質問をしたことを思い出しますが、そこで誰かがWin32sを勧め、「FREECELL.exe」の初期リリースバージョンを見つけるように提案してくれました。

そこで私はその通りにし、見てみると、FREECELL.EXE(最終更新日 22-Feb-93)が、最新版のWindows 11上で変更なしに、完全にプレイ可能な状態で動作していました。

[画像: 1993年製のFREECELL.EXE]

この記事の執筆時点で、それは33歳8ヶ月前のアプリケーションであり、驚くべきことに私の年齢とほぼ同じです。

それで、「クールだ」と思い、この謎は解けたと考えてすぐに忘れてしまいました。しかし、なぜか最近になってこの疑問が再び頭をよぎり、今回はもっと古いものを見つけられるか深く掘り下げることにしました。

さらなる試み

Internet Archiveで古いWindowsのバージョンを掘り下げていくと、有望に見える初期のNT 3.1プレリリースバージョンが見つかりましたが、主な問題は、今日の実行可能フォーマットとの非互換性か、開発の後半で追加されたAPIの変更でした。

1991年の初期バージョンは、最新のWindowsと互換性のないPEフォーマットのドラフトを使用しており、1992年半ばまでのビルドでは、Windows API呼び出しのためにstdcallではなくcdecl呼び出し規約を想定していました。そのため、引数は2回削除されていました。たとえば次のようになります。

push hwnd          ; 4バイトの引数
call [ShowWindow]  ; Win11のShowWindowはstdcallで、「ret 4」で終了し引数を削除する
add  esp, 4        ; 1992年の呼び出し元が再度削除する

これは当然ながらプログラムをクラッシュさせる原因となります。

しかし、ビルド347から私の目を引いたアプリケーションがありました。それはCDPLAYER.EXEで、16-Nov-1992にリンクされていました。その時点では呼び出し規約は修正されていましたが、そのビルドに含まれる他のプログラムはバンドルされたCランタイムでクラッシュします。CDPLAYER.EXEは、システムのcrtdll.dllを使用することでそれを回避しており、Windows 11は依然としてSysWOW64にcrtdll.dllを同梱しています。

プログラムを起動すると、このようになります。

[画像: CDPLAYER.EXE CD-ROMドライブが見つかりません]

これは、当然ながら、私のコンピューターにはCD-ROMドライブがないためです。しかし、小さなDLL(cdemu.dll)を使用して、いくつかの偽のオーディオデータでCD-ROMをエミュレートし、実際にオーディオを再生させることができます。

[画像: CDPLAYER.EXE エミュレートされたCD-ROMで]

約34年前のプログラムとしては、かなりクールです!

チートするなら?

先ほど、16ビットプログラムはサポートされなくなったため除外されると述べました。

しかし、もし望むなら、otvdmのようなものを使用して、古いWindowsアプリケーションを実行できます。

Windows 1.01から取得した、Windows 11上で動作する完全にプレイ可能なREVERSI.EXE(日付 15-Nov-1985)をご覧ください。

[画像: alt テキスト]

otvdmを使用するのは少しチートしているように感じますが、この記事に含める価値があるほどクールだと思いました。