قدیمیترین برنامهی گرافیکی که هنوز روی ویندوز ۱۱ اجرا میشه
خلاصهٔ کاملتر
نویسنده دنبال جواب یه سؤال سرگرمکننده بوده: قدیمیترین برنامهی گرافیکیای که بدون هیچ تغییر یا شبیهسازی روی ویندوز ۱۱ اجرا میشه چیه؟ برنامههای ۱۶ بیتی از همون اول کنار میرن، چون ویندوز ۶۴ بیتی دیگه NTVDM (یعنی لایهای که برنامههای DOS و ویندوز ۱۶ بیتی رو اجرا میکرد) نداره. پس باید سراغ دورهی اول ویندوز NT رفت.
اولین جواب از یه نسخهی اولیهی Win32s اومد (یعنی افزونهای که برنامههای ۳۲ بیتی رو روی ویندوز ۳.۱ اجرا میکرد). فایل FREECELL.EXE با تاریخ ۲۲ فوریهی ۱۹۹۳ روی آخرین نسخهی ویندوز ۱۱ بدون هیچ تغییری اجرا میشه و کامل قابل بازیه. یعنی برنامهای که الان ۳۳ سال و ۸ ماه سن داره.
بعد نویسنده توی Internet Archive نسخههای پیشانتشار ویندوز NT 3.1 رو گشته. نسخههای ۱۹۹۱ از یه فرمت پیشنویس PE استفاده میکردن که با ویندوز امروز جور نیست. بیلدها تا اواسط ۱۹۹۲ هم برای صدا زدن API ویندوز از قرارداد cdecl بهجای stdcall استفاده میکردن. یعنی هم تابع و هم برنامه آرگومانها رو از استک برمیداشتن و برنامه کرش میکرد.
برنده CDPLAYER.EXE از Build 347 بود، با تاریخ لینک ۱۶ نوامبر ۱۹۹۲. تا اون موقع مشکل قرارداد صدا زدن حل شده بود. بقیهی برنامههای همون بیلد توی C runtime همراهشون کرش میکنن، ولی CD Player از crtdll.dll خود سیستم استفاده میکنه که ویندوز ۱۱ هنوز توی SysWOW64 داره. چون کامپیوتر نویسنده درایو سیدی نداشت، با یه DLL کوچیک به اسم cdemu.dll یه درایو با صدای ساختگی شبیهسازی کرده و برنامه واقعاً صدا پخش کرده.
آخر سر نویسنده یه کار «تقلبگونه» هم کرده: با otvdm (یه ابزار برای اجرای برنامههای ۱۶ بیتی ویندوز) بازی REVERSI.EXE از ویندوز 1.01 با تاریخ ۱۵ نوامبر ۱۹۸۵ رو روی ویندوز ۱۱ اجرا کرده. خودش میگه این دیگه بدون ابزار جانبی نیست، ولی جالب بوده که توی پست بیاره.
نکات کلیدی:
- ویندوز ۱۱ ۶۴ بیتی NTVDM نداره و برنامههای ۱۶ بیتی رو مستقیم اجرا نمیکنه
- FREECELL.EXE از Win32s با تاریخ ۲۲ فوریهی ۱۹۹۳ بدون تغییر اجرا میشه
- بیلدهای NT تا اواسط ۱۹۹۲ از cdecl بهجای stdcall استفاده میکردن و کرش میکنن
- CDPLAYER.EXE از Build 347 با تاریخ ۱۶ نوامبر ۱۹۹۲ به لطف crtdll.dll هنوز اجرا میشه
- با otvdm حتی Reversi از ویندوز 1.01 سال ۱۹۸۵ هم بالا میاد