Windows 11 запускает FreeCell 1993 года: поиск старейшего GUI-приложения
Автор блога задался «глупым вопросом»: какое самое старое приложение с графическим интерфейсом всё ещё запускается в Windows 11 без модификаций и эмуляции. Он ожидал впечатляюще древнего результата, но 16-битные программы Windows отпадают: по его словам, Windows 11 не может запускать их сама, потому что в 64-битной Windows нет NTVDM. Поэтому искать пришлось среди программ ранней эпохи NT.
Первая находка подсказана на анонимном форуме: кто-то посоветовал Win32s и поиск ранней версии с FREECELL.exe. Автор так и сделал. FREECELL.EXE с датой изменения 22 февраля 1993 года запустился и оказался полностью играбельным без каких-либо изменений в последней версии Windows 11. На момент публикации, пишет автор, этому приложению 33 года и 8 месяцев. Он счёл загадку решённой и забыл о ней, но позже вопрос вернулся, и он решил копнуть глубже.
В Internet Archive автор нашёл ранние предрелизные версии NT 3.1, но они упирались либо в несовместимый с сегодняшними системами формат исполняемых файлов, либо в изменения API, появившиеся позже. Самые ранние версии 1991 года использовали черновой формат PE, несовместимый с современной Windows. Сборки примерно до середины 1992 года считали, что вызовы API Windows используют соглашение cdecl, а не stdcall. В итоге аргументы со стека снимаются дважды: ShowWindow в Windows 11 использует stdcall и завершается командой «ret 4», а вызывающий код 1992 года после этого снова делает «add esp, 4». Это, как отмечает автор, вполне ожидаемо приводит к падению программы.
Внимание автора привлекла программа из сборки NT 347, CDPLAYER.EXE, скомпонованная 16 ноября 1992 года. К тому времени соглашение о вызовах уже исправили, но остальные программы этой сборки падают внутри собственной встроенной библиотеки C. CDPLAYER.EXE этого избегает, потому что использует системную crtdll.dll, а Windows 11 по-прежнему поставляет crtdll.dll в каталоге SysWOW64. При запуске программа сообщает об ошибке, потому что у компьютера автора нет CD-привода. Но небольшая библиотека cdemu.dll эмулирует привод с поддельными аудиоданными, и программа действительно проигрывает звук. Автор отмечает, что ей почти 34 года.
В разделе «А если сжульничать?» автор признаёт: 16-битные программы исключены, но их можно запускать с помощью инструментов вроде otvdm. Так он запустил полностью играбельную REVERSI.EXE от 15 ноября 1985 года из Windows 1.01. Использование otvdm, по его словам, похоже на жульничество, но результат показался достаточно любопытным, чтобы включить его в пост.
Ключевые факты
- FREECELL.EXE из ранней версии Win32s с датой изменения 22 февраля 1993 года работает в последней Windows 11 полностью и без изменений; автор оценивает возраст в 33 года и 8 месяцев.
- CDPLAYER.EXE из сборки NT 347 (скомпонован 16 ноября 1992 года) запускается благодаря системной crtdll.dll из SysWOW64, но для воспроизведения звука нужна библиотека cdemu.dll, эмулирующая CD-привод.
- Более ранние сборки NT не запускаются: версии 1991 года используют черновой формат PE, а сборки до середины 1992 года предполагают cdecl вместо stdcall, и аргументы снимаются со стека дважды.
- 16-битные программы Windows 11 сама не запускает (в 64-битной Windows нет NTVDM); REVERSI.EXE от 15 ноября 1985 года из Windows 1.01 удалось запустить только через otvdm, что автор называет жульничеством.
Почему это важно
Материал показывает на конкретных файлах, насколько далеко простирается обратная совместимость Windows: 33-летний FreeCell работает в Windows 11 без изменений. Граница при этом проходит не по возрасту как таковому, а по техническим причинам: формат исполняемых файлов, соглашение о вызовах API и встроенная библиотека C. Для 16-битных программ границу ставит отсутствие NTVDM в 64-битной Windows.
Кому это важно
Любителям ретрокомпьютинга и истории Windows, а также тем, кого интересуют низкоуровневые детали: форматы исполняемых файлов, соглашения о вызовах cdecl и stdcall, системные библиотеки вроде crtdll.dll. Заметка носит развлекательный характер и не связана с темой нейросетей.
Как это применить
Автор описывает путь воспроизведения: взять раннюю версию Win32s с FREECELL.exe и запустить её в Windows 11; для CDPLAYER.EXE из сборки NT 347 использовать небольшую библиотеку cdemu.dll, имитирующую CD-привод с поддельными аудиоданными; для 16-битных программ вроде REVERSI.EXE из Windows 1.01 применить такой инструмент, как otvdm. Ссылки, версии и авторов этих инструментов текст не приводит.
Можно ли доверять
Это личное любительское расследование в блоге, основанное на собственных запусках автора. Подтвердить результаты по тексту нельзя, а какая именно сборка Windows 11 использовалась, не указано. Автор сам оговаривает, что его вывод про FreeCell был первой находкой, а CDPLAYER.EXE нашёл позже, и не объявляет окончательного победителя. Возраст приложений он называет приблизительно, дат публикации в тексте нет.
Риски и подводные камни
Условия «без модификаций и эмуляции» выполнены полностью только для FreeCell. CDPLAYER.EXE без CD-привода не воспроизводит звук и требует вспомогательной библиотеки cdemu.dll. REVERSI.EXE 1985 года запущена через otvdm и потому, по признанию автора, не считается честным результатом. Кроме того, звание самого старого приложения зависит от того, что считать запуском: скомпонованная в 1992 году программа и приложение с датой изменения 1993 года сравниваются по разным датам.
«Windows 11 не может запускать 16-битные программы Windows сама, потому что в 64-битной Windows нет NTVDM.»
— автор блога blog.enlyth.com