3 puan yazan GN⁺ 2025-06-28 | 1 yorum | WhatsApp'ta paylaş
  • Snow, Motorola 680x0 tabanlı klasik Macintosh sistemlerini donanıma yakın biçimde yeniden oluşturarak eski Mac ortamlarının modern sistemlerde kullanılabilmesini sağlar
  • ROM yaması ya da sistem çağrılarını yakalama yerine donanım düzeyinde emülasyonu hedefler ve grafik arayüz ile hata ayıklama özelliklerini birlikte sunar
  • Macintosh 128K'den SE/30'a kadar çeşitli klasik Mac modellerini destekleyerek erken dönem Mac ailesini geniş kapsamda denemeyi mümkün kılar
  • Rust ile yazılmış MIT lisanslı açık kaynak bir projedir; sınırlı bir çevrimiçi demo ve kurulum dokümantasyonu yayımlanmıştır
  • Kararlı sürümler GitHub'dan indirilebilir; en güncel geliştirme derlemeleri ise daha az test edilmiş olmakla birlikte Windows, macOS ve Linux için sunulur

Donanıma yakın klasik Mac emülasyonu

  • Snow, klasik Motorola 680x0 tabanlı Macintosh bilgisayarlarını emüle eden bir projedir
  • Emüle edilen makineyi kullanmak için grafik kullanıcı arayüzü ve kapsamlı hata ayıklama özellikleri sunar
  • ROM'u yamalamak veya sistem çağrılarını yakalamak yerine, Macintosh'u mümkün olduğunca donanım düzeyinde emüle etmeyi amaçlar
  • Şu anda desteklenen modeller:
    • Macintosh 128K/512K/512Ke
    • Macintosh Plus
    • Macintosh SE, non-FDHD ve FDHD
    • Macintosh Classic
    • Macintosh II, non-FDHD ve FDHD
    • Macintosh IIx, IIcx, SE/30

Yayınlanma biçimi ve deneme yolları

Sürümler ve destek kanalları

  • Kararlı sürümler, belirli kilometre taşlarına ulaşıldığında paketlenir
  • Kararlı sürümler GitHub releases sayfasından indirilebilir
  • En güncel geliştirme derlemeleri (bleeding edge) emülatör geliştikçe otomatik olarak oluşturulur; daha yeni özellikler içerebilir ancak daha az test edilmiştir
  • Sunulan en güncel geliştirme derlemeleri:
    • Windows 10 ve üzeri x86 64-bit
    • Windows 10 ve üzeri ARM64
    • macOS 11.7 Big Sur ve üzeri Universal
    • Linux Ubuntu 24.04 x86 64-bit
    • Linux Ubuntu 24.04 ARM64
  • Hata bildirimleri ve iyileştirme talepleri GitHub issues üzerinden alınır
  • Destek veya sohbet için The Opcode Collective Discord üzerindeki #snow kanalı kullanılabilir

1 yorum

 
GN⁺ 2025-06-28
Hacker News yorumları
  • Klasik Mac için taşınabilir ve kullanımı kolay, donanım düzeyinde bir emülatörün neden önemli olduğuna dair arka planı görmek için 2020 tarihli şu yazıya bakılabilir: https://invisibleup.com/articles/30/
    Oyun konsolları tarafında Nestopia, bsnes, Dolphin, Duckstation gibi emülatörler uzun zamandır vardı; PC tarafında ise VMWare ve VirtualBox gibi sanallaştırma çözümleri ihtiyaçların çoğunu karşıladı, yakın zamanda da 86Box ve MartyPC gibi yüksek doğruluklu emülatörler çıktı.
    C64 için VICE, Amiga için WinUAE, Apple II için de KEGS ve AppleWin gibi yüksek kaliteli emülatörler vardı; ama Mac tarafı çoğunlukla Basilisk II gibi yüksek düzeyli, yaklaşık emülatörlerde kalmıştı.

    • Uyumluluğu diğerlerine göre çok daha düşük olsa da Executor da var: https://en.wikipedia.org/wiki/Executor_(software)
      Tarayıcının MS-DOS’u emüle edip onun üzerinde Executor/DOS’u çalıştırmasını sağlayarak Macintosh sürümü Solitaire’i tarayıcıda da çalıştırmak mümkün: https://archive.org/details/executor
      Executor/DOS’un dışında, yayımlanmamış bir sürüm Sun 3 iş istasyonlarında çalışıyordu; Executor/NEXTSTEP ise NeXT makinelerinde çalışıyor ve hem 680x0 tabanlı cihazları hem de NEXTSTEP çalıştırabilen x86 PC’leri destekliyordu.
      Executor, Apple’ın fikri mülkiyetini hiç kullanmadığı için uyumluluğu en düşük olanıydı; ROM ve sistem yazılımı ikameleri, Apple ROM’u ya da System dosyaları tersine mühendislik edilmeden yapılan clean-room uygulamalarıydı.
      Bir Linux portu var ama derlemesi muhtemelen zor. Çünkü 80386’dan mümkün olduğunca yüksek performans almak için sentez CPU, gcc’ye özgü uzantılara dayanıyordu.
      Executor hakkında epey bilgim var; çünkü ilk sürümlerini ben yazmıştım. Ancak sentez 68k emülatörü ya da renk alt sistemi gibi gerçekten etkileyici kısımları, benden çok daha iyi programcılar yaptı.
    • O yazı nesnel olarak doğru ama insanların ücretsiz yaptığı zahmetli işi bu kadar tuhaf biçimde küçümseyen bir şeye ilk kez rastlıyorum.
    • “Kullanıcı dostu” demek zor olabilir, ama MAME Macintosh ve Apple II’yi donanım düzeyinde emüle ediyor.
      KEGS ya da AppleWin’den daha doğru ve daha fazla çevre birimini kapsıyor, fakat daha az kullanıcı dostu.
    • Macintosh II FDHD emülatörünü başlatabildim; ancak Snow kılavuzu Mac II FDHD emülatörünün iki SuperDrive sunduğunu söylemesine rağmen https://docs.snowemu.com/manual/media/floppies emülatör menüsünde yalnızca 400K/800K disket yüklenebileceği görünüyor.
      Belki bu yüzden şimdiye kadar denediğim tüm disket imajları hemen çıkarıldı; Mac II ile uyumlu olduğu söylenen 800K System 7.1.1 diski de buna dahildi.
      Snow’un potansiyeli büyük ve harcanan emeğe saygı duyuyorum, ama açıkçası şimdiye kadarki Mac emülasyonu manzarası eskisinden çok da farklı görünmüyor. Birden fazla emülatör, emüle ettikleri donanım ve destekledikleri özellikler bakımından engebeli bir ürün matrisi sunuyor; pek çok işlem ve eski Mac iç yapıları hakkında ön bilgi gerektiriyor ve gelecek vaat eden bir durumda görünüyor.
    • Unutulmaması gereken bir nokta da MAME’in 68k Macintosh için de bir ölçüde destek sunması.
      https://wiki.mamedev.org/index.php/Driver:Mac_68K
  • Doğruluk nedeniyle BasiliskII’nin güçlü özellikleri muhtemelen olmayacaktır. BasiliskII, OS/ROM’u yamalayarak ultra yüksek çözünürlük ve ana makine dosya sistemi ile ağla neredeyse sorunsuz entegrasyon ekliyor.
    Basilisk’in yanlış doğrulukta ama güçlü özellikleri yüzünden epey kararsız olması üzücü. Düzgün çalıştığında kullanımı gerçekten çok keyifli.

    • Doğru bir emülatör ve temiz bir kod tabanı, yamalar ya da kestirme yollar eklemek için iyi bir başlangıç noktasıdır.
      Basilisk’in yama koduna baktım; o kadar karmaşık değildi. Basilisk’in iç kodunda, Executor’da, MACE’de vb. Toolbox’ın bazı bölümlerinin yeniden uygulanmış halleri de var.
      Taşımak biraz çalışma gerektirir, ama genel olarak kodun doğrudan çevirisi ve test tabanı eklemeye yakın olur gibi görünüyor.
  • ROM’u nasıl bulabilirim? Google’da bulduğum sitelerden birkaç tane indirdim ama emülatör her zaman “Unknown or unsupported ROM file” diyor. Kullanılabilir ROM dosyası nereden bulunabilir?

  • Üniversiteden mezun olduktan hemen sonra yaptığım ilk işlerin önemli bir kısmı Mac formatlı Bernoulli diskleri yığınında duruyor.
    Yazılımı çalıştırmak için ADB dongle gerektiğinden gerçek donanım gerekiyor. Emülatöre eşlenebilecek bir ADB-USB adaptörü var mı merak ediyorum.

    • Bildiğim tüm ADB-USB adaptörleri yalnızca fare ve klavye destekliyor; iç firmware’leri bunları USB HID’ye eşliyor.
      Emülatöre ham passthrough yapmak için sanırım özel firmware yazmak gerekir. Muhtemelen yazılımı cracklemek daha kolay olabilir.
    • Henüz yedeklemediyseniz o veri çoktan kaybolmuş olabilir.
      Değerli bir veriyse geç olmadan kontrol etmek iyi olur.
    • Çalışan bir Bernoulli kutusu olan birinin, muhtemelen ona uygun eski bir Mac’i de vardır.
    • Bu işe yarayabilir: https://www.bigmessowires.com/usb-wombat/
  • Kolayca bulunabilen standart Mac OS 7.1 kurulum diski ve Mac Plus ROM’u ile yüklemeyi denedim; Drive 0’da disk çıkarılıyor
    Mini vMac’in çalıştığını görünce bunun hâlâ iyileştirilmesi gerektiği anlaşılıyor

  • SE, II vb. için HD20 desteğinin “geçerli değil” olarak gösterilmesi şaşırtıcı. II hariç listedeki tüm modellerin ROM’unda HD20’den önyükleme desteği olduğunu biliyorum
    Gerçek bir Mac SE’de de HD20 emülatörü kullanıyorum
    İsteğe bağlı boyutta disk imajlarını hem Mac emülatörüne hem de gerçek disket emülatörüne taşımanın en rahat yollarından biri

  • Rust ile yeniden uygulanmış bir 68K emülatörü olduğu için, C ile yazılmış iyi bilinen CPU çekirdekleri Musashi veya UAE koduyla ortak bir kısmı yok

  • Mac’te de Lisa’daki gibi donanımın cycle-accurate emülasyonu gerekli mi? lisaem’i kullandım ve Qemu ile de denemeler yaptım, ancak Lisa OS donanım zamanlaması hakkında Qemu’nun karşılayamayacağı varsayımlarda bulunuyor

    • İlk Mac’ler IWM kullanıyordu; bu temelde Wozniak’ın 1977 tarihli Disk II denetleyicisinin tek bir çipe indirgenmiş hâliydi
      Apple II’de kullanılanlarla aynı cycle-accurate kod teknikleri Mac’te de kullanılmıştı
      Diske yazarken imlecin ara sıra durmasının nedeni de bu. Mac’te imleci de izleyen 60 Hz’lik bir kesme zamanlayıcısı var, ancak yazma işlemi sırasında bunun kapatılması gerekiyor
      Folklore.org’daki Andy Hertzfeld yazısında da buna şöyle değiniliyor:

      Woz's disk technology required that the software feed it new data every 32 microseconds exactly. If we were even a single microsecond early or late, it would cause a glitch in the data and ruin it. In order to write the routines, I needed to know how fast the Macintosh executed each instruction. The manual gave the number of clocks for each instruction, but I wasn't sure how long it took to fetch from memory. So of course, I asked Burrell what the timings were, but I was surprised at his response.
      "I don't know. The Mac is synchronous, just like the Apple II, so each instruction has the same timing, every time you execute it, so you will be able to write disk routines that have exact timing. I don't know what it is, so we'll just measure it. Why don't you write your routine and we'll measure it with the logic analyzer."
      -- https://www.folklore.org/Nybbles.html
      Bunu görünce, spiral izler, farklı boyutlarda sektörler ve çeşitli nibble’lama yöntemleri gibi Apple II’nin kendine özgü disk tekniklerinin teoride Mac’te de mümkün olabileceğini düşünüyorum. Gerçekte kopya koruması için kullanılıp kullanılmadığını merak ediyorum

  • Gerçekten fiziksel cihaz hissi veriyor ve yapılan iş çok iyi. Bu, Atari ST emülasyonunda da kullanılabilir mi?

    • Hatari zaten gayet iyi değil mi? https://github.com/hatari/hatari
      Clock Signal (CLK) de var. Kendisini “Acorn Electron ve Archimedes, Amstrad CPC, Apple II/II+/IIe ve ilk Macintosh, Atari 2600 ve ST, ColecoVision, Enterprise 64/128, Commodore Vic-20 ve Amiga, MSX 1/2, Oric 1/Atmos, ilk PC uyumluları, Sega Master System, Sinclair ZX80/81 ve ZX Spectrum için gecikmeden hoşlanmayan bir emülatör” olarak tanımlıyor: https://github.com/TomHarte/CLK