عن المشروع

Wine-Assembly هو محاكي Windows 98 يعمل في المتصفح وينفّذ ملفات .exe الأصلية غير المعدّلة. يتكوّن من مفسّر x86 وإعادة تنفيذ لواجهة Win32 API، وكلاهما مكتوب مباشرةً بـ WebAssembly Text (WAT). لا يتم إقلاع أي صورة نظام تشغيل، ولا تتم صيانة أي عمليات نقل شيفرة. يقوم المحاكي بتحميل ملفات PE مباشرةً، ويفكّ ترميز الكتل الأساسية x86 إلى ذاكرة مؤقتة للشيفرة الخيطية، ويحسب أعلام المعالج بشكل كسول، ويوجّه نداءات Win32 API إلى معالجات WAT. يدعم ملفات NE التنفيذية الخاصة بـ Windows 3.1 ذات 16 بت، ومكتبات DLL حقيقية مع إعادة تحديد المواقع، وDirectX (DirectDraw وDirect3D وDirectSound وDirectInput)، وشبكة محلية افتراضية للعب الجماعي عبر Winsock وDDEML. يعمل نطاق واسع من التطبيقات، بما في ذلك ألعاب مثل 3D Pinball Space Cadet وSkiFree وSolitaire وMinesweeper وChip's Challenge وDiablo shareware وWinamp 2.91/2.95، بالإضافة إلى ملحقات Windows 98 مثل Notepad وWordPad وCalculator وPaint وRegEdit وTask Manager. تتبّع مصفوفة الاختبار 114 ملفاً تنفيذياً، مع نجاح 81، و29 تحذيراً/قيوداً معروفة، و4 حالات تخطٍّ متوقعة لبرامج 16 بت، ودون أي أعطال غير متوقعة. يختلف المشروع عن v86 و98.js وWebamp وjs-dos بتجاوزه BIOS والنواة وإقلاع القرص، وتحميله ملف PE مباشرةً لبدء سريع، وتشغيله ملفات تنفيذية فعلية بدلاً من إعادة إنشائها. وهو مكتوب بـ WAT يدوياً، بنحو 210,000 سطر موزعة على 61 جزءاً من المصدر، بالإضافة إلى مضيف JavaScript يوفّر canvas وإدخال/إخراج الملفات والشبكة والصوت والمدخلات والمؤقتات. يستخدم البناء مترجم WAT مخصصاً وينتج نسختي WebAssembly متوافقتين مع tail-call ومع التوافق بحجم يقارب 1 ميغابايت لكل منهما. تغطي تعليمات البدء السريع البناء عبر `bash tools/build.sh`، والتقديم محلياً، والتشغيل من سطر الأوامر باستخدام Node.js. تدعم واجهة سطر الأوامر التتبع ونقاط التوقف وحقن المدخلات وتصيير الإطارات إلى PNG. يتضمن المستودع توثيقاً موسّعاً حول تخطيط الذاكرة وملاحظات التصميم وملاحظات الهندسة العكسية لكل تطبيق. المشروع مرخّص بموجب MIT.