· kaynak Hacker News – Front Page (hnrss.org)
winevdm portlaması, Windows 1.x'ten 3.x'e kadar 16-bit uygulamaları 64-bit Windows'a geri getiriyor
Hacker News'te öne çıkan winevdm emülatörünün bir portu, bir CPU emülatörü ve Wine kökenli API dönüşümü sayesinde 64-bit Windows'un Windows 1.x'ten 3.1'e kadar için derlenmiş uygulamaları çalıştırabilmesini sağlıyor.
16-bit Windows uygulamalarına 64-bit sistemlerde desteği geri getiren bir emülatör portu, Hacker News'in ana sayfasında ilgi görüyor. GitHub'da otya128/winevdm adıyla barındırılan proje, bir Win16 emülatörü olan winevdm'in değiştirilmiş bir derlemesi; Windows 1.x, 2.x, 3.0 ve 3.1 için yazılmış programların işletim sisteminin güncel 64-bit sürümlerinde çalışabilmesi amacıyla uyarlanmış durumda.
Win16 neden 64-bit'te bozuldu
On altı bitlik kod, uzun yıllardır 64-bit Windows'a kapatılmış durumda; 32-bit sürümler hâlâ NTVDM alt sistemine yaslanabiliyordu ama 64-bit derlemelerde bu yol mevcut değil. Projenin README'sine göre temel engel, 64-bit Windows'un artık Local Descriptor Table'ın değiştirilmesine izin vermemesi: ProcessLdtInformation ile yapılan NtSetInformationProcess çağrıları her zaman hata döndürüyor. Bu olanak olmadan 16-bit kodu barındırmanın klasik yöntemi çöküyor; emülatörün kodu doğrudan çalıştırmak yerine yorumlamasının nedeni de bu.
Emülatör nasıl inşa edildi
README, uygulamayı birkaç parçaya bölüyor:
- Kullanıcı alanında 16-bit komutları yorumlayan bir CPU emülatörü.
- Win16 API çağrılarını Win32 karşılıklarına dönüştüren, Wine'dan türetilmiş dönüşüm kodu. README bunu, 16-bit pencere tanıtıcısını dönüştürüp çağrıyı 32-bit fonksiyona ileten bir DestroyWindow sarmalayıcısıyla örnekliyor.
- 16-bit ve 32-bit tarafları köprüleyen, convspec adlı bir araç tarafından kısa tanım satırlarından otomatik olarak üretilen aktarım rutinleri.
- Gerektiren Win16 programları için bir DOS emülasyon katmanı, 16-bit ve yerel tanıtıcılar arasındaki çeviri ve bir yığın uyumluluk düzeltmesi.
Kurulum ve günlük kullanım
Pratik iş akışı oldukça basit. Kullanıcılar bir Win16 çalıştırılabilir dosyasını otvdm.exe üzerine sürükleyebilir veya otvdmw.exe ile başlatabilir; komut satırı biçimi doğrudan bir uygulama adını kabul ediyor ve örnek olarak CALC.EXE veriliyor. Windows eksik bir VCRUNTIME140.dll'den şikayet ederse, README 32-bit Visual C++ 2015 yeniden dağıtılabilir paketinin kurulmasını söylüyor.
install.inf aracılığıyla daha derin bir entegrasyon mümkün: kurulum kısayolunu çalıştırmak veya dosyaya sağ tıklayıp Yükle'yi seçmek, emülatörü sisteme kaydediyor ve 16-bit ikili dosyaların herhangi bir çalıştırılabilir dosya gibi doğrudan başlatılabilmesini sağlıyor. README, Windows Update kayıt defterini sıfırlarsa kurulum adımının tekrarlanması gerektiği uyarısını yapıyor; ayrı bir kaldırma betiği tüm süreci geri alıyor. Yapılandırma otvdm.ini'de tutuluyor ve proje Visual Studio 2017 ya da CMake ile derlenebiliyor.
İki entegrasyon detayı dikkat çekiyor. Windows, 16-bit bir yükleyici algıladığında zaten bir yedek yükleyici başlatan bir mekanizma içeriyor; proje bu mekanizmaya bağlanarak eski kurulum programlarının yeniden çalışmasını sağlıyor. Ayrıca modern Windows %WINDIR% içine yazmayı yasakladığı için, ayarlarını hâlâ oraya .ini dosyaları olarak kaydetmeye çalışan eski programlar emülatör tarafından yönlendiriliyor.
DOS desteği bilerek sınırlı tutulmuş
Aynı çalıştırılabilir dosya, DOS programlarını da DOS emülatörünü andıran bir modda çalıştırabiliyor; bildirilen DOS sürümü VDMDOSVER ortam değişkeniyle ayarlanabiliyor. README buradaki sınırlar konusunda açık sözlü: DOS emülasyonu eksik ve ciddi işler için DOSBox ya da MS-DOS Player öneriliyor.
Neden önemli
1980'lerin ortasından 1990'ların başına kadar yazılmış büyük bir yazılım havuzu, ister müze eseri, ister uzun zaman önce kaybolmuş bir yardımcı program ya da hiç yeniden yazılmamış bir iş uygulaması olsun, modern donanımda fiilen mahsur kalmış durumda. Microsoft 16-bit desteğini geri getirme belirtisi göstermediği için, bu tür projeler geriye kalan tek pratik köprü. Aynı zamanda Wine'ın alışılmış amacının şık bir tersine çevrilmesi: Windows uygulamalarını başka işletim sistemlerine taşımak için yazılmış dönüşüm kodu, Windows'un kendisindeki bir uyumluluk boşluğunu doldurmak için yeniden kullanılıyor. Proje açık kaynaklı; bu yüzden emülasyon katmanını denetlemek ya da genişletmek isteyen herkes kaynaktan derleyebilir.
- #windows
- #emulation
- #open-source
- #retro-computing
- #wine
İlgili yazılar
- Cloudflare Workers AI üzerinde ücretsiz LLM sohbet ve çeviri API'leri için kredi kartı gerekmiyor
- INIT: açık kaynak Rust kodlama ajanı, görev ortasında kendi çekirdeğini yeniden yazıp hot-swap ediyor
- Frigade, Hob'u açık kaynak yaptı: ChatGPT ve Claude Cowork'a karşı konumlanan yerel masaüstü yapay zekâ asistanı