4 puan yazan GN⁺ 2024-06-17 | 1 yorum | WhatsApp'ta paylaş
  • Orijinal Macintosh’un 128KB belleğiyle karşılaştırıldığında, Raspberry Pi’nin 264KB RAM’i yeterli. 1984’te Macintosh, bir Volkswagen Golf’ün fiyatının üçte biri kadardı.
  • RP2040 ile monokrom VGA ve USB/klavyeyi bağlayarak Mac emüle ediliyor ve ilk dönem Mac uygulamaları çalıştırılıyor.
  • GitHub’da paylaşılan bilgiler sayesinde herkes bunu kendi başına kurabilir.

Pico-Mac nedir?

  • Raspberry Pi RP2040 mikrodenetleyicisi (Pico kartı kullanılarak) monokrom VGA videoyu sürüyor, USB klavye/fare girişini alıyor ve Macintosh 128K bilgisayarı ile disk depolama aygıtını emüle ediyor.
  • RP2040’ın 2MB flash belleği, OS ve yazılım için disk imajı olarak yeterli.
  • MacDraw, MacWrite ve MacPaint gibi ilk dönem Macintosh uygulamalarını çalıştırabiliyor.

Yolculuk

Üç kural

  1. Eğlenceli olmalı.
  2. 68K assembly öğrenmek istemiyorum.
  3. İlk dönem Mac sistem yazılımının iç yapısına derinlemesine dalmak istemiyorum.

Mac 128K

  • Motorola 68000 CPU, 8MHz.
  • Bellek haritası, klavye/fare, video tarama gibi temel donanım yapısı.
  • Mac 128K ile Mac 512K arasındaki tek fark RAM.
  • Mac Plus’a SCSI ve 800K floppy sürücü eklendi.

Mac emülatörü: umac

  • Musashi 68K yorumlayıcısı kullanılarak bir Mac 128K emülatörü oluşturuldu.
  • ROM imajı yükleme, RAM ayırma, debug mesajları ve logging ayarları yapıldı.
  • Adres çözümleme eklendi ve CPU okuma/yazmaları RAM veya ROM’a yönlendirildi.
  • IWM çipine erişimden sonra "Unknown Disc" simgesi elde edildi.
  • SDL2 frontend ile sarılarak gerçek zamanlı ekran yenilemesi doğrulandı.

Donanım ve RP2040

  • 512x342x1 videoyu VGA’ya çıkarmak ve TinyUSB HID örneğini entegre etmek sağlandı.
  • VGA PIO işleriyle video verisi taranıyor ve DMA kullanılarak framebuffer verisi çıkışa veriliyor.
  • DMA kanallarının defalarca yeniden yapılandırılmasıyla kararlı video çıkışı elde edildi.

Yeniden emülasyona dönüş

  • Musashi’nin büyük opcode decode jump table yapısı flash bellekte tutulacak şekilde değiştirildi.
  • Disassembler ve yürütme çevrimi sayımı kaldırıldı.
  • RAM kullanımı en aza indirilerek Pico üzerinde derlenip çalıştırılabilir hale getirildi.

Performans

  • Pico, performansı artırmak için 250MHz’e overclock edildi.
  • Sık kullanılan 200 opcode fonksiyonunun RAM’de tutulmasıyla 1.4 MIPS elde edildi.

Veda

  • MicroMac projesi eğlenceli ve öğretici bir deneyimdi.
  • GitHub bağlantısı üzerinden bunu kendiniz de kurabilirsiniz.

GN⁺ görüşü

  1. İlgi çekici proje: MicroMac, düşük maliyetli donanımla klasik Macintosh’u emüle eden ilgi çekici bir proje. Yazılım ve donanımın birleşimiyle mühendisliğin eğlenceli tarafını hissettiriyor.
  2. Öğrenme fırsatı: Bu proje, başlangıç seviyesindeki yazılım mühendislerine donanım ve yazılım etkileşimini anlamak için iyi bir fırsat sunuyor. Özellikle emülasyon ile PIO ve DMA gibi kavramlar öğrenilebilir.
  3. Performans optimizasyonu: Performans optimizasyonu sürecinde çeşitli teknik zorluklar ve çözüm yöntemleri öğrenilebilir. Özellikle bellek yönetimi ve overclocking’in önemi anlaşılabilir.
  4. Toplulukla paylaşım: Projenin GitHub üzerinden paylaşılması ve başkalarıyla iş birliği yapılabilmesi, açık kaynak topluluğunun avantajlarını iyi gösteriyor.
  5. Gelecek potansiyeli: Bu proje, daha büyük RAM’e sahip MCU’lar kullanılarak genişletilebilir. Bu da daha karmaşık uygulamaları çalıştırma olasılığının önünü açıyor.

1 yorum

 
GN⁺ 2024-06-17
Hacker News görüşleri
  • VGA kablosu bulmanın zorluğu: Yakın zamanda bir sanat enstalasyonu için VGA kablosuna ihtiyaç duyuldu, ancak etrafta kimsede yoktu; sonunda yenisini satın almak gerekti. Bu kadar çok kablo çöpe giderken bunun üzücü olduğu belirtiliyor.

  • Amiga projesi: AmigaOS 3.2 çalıştıran bir Amiga yapmak istendi. 3D baskıyla orijinal formda küçük bir kasa üretme fikri sevimli bulunuyor. Eski floppy sürücüsü olmadığı için deneyim biraz eksik kalsa da, mevcut bir masaüstü PC'de emülatör çalıştırmak yerine özel bir makine kullanma fikri beğeniliyor. RP2040'ın 68k rolünü üstlendiği düşük seviyeli yaklaşım ilgi çekici bulunuyor.

  • Mac'in ilk izlenimi: Mac ilk çıktığında bir bilgisayar mağazasında çalışıldığı ve ekran köşelerindeki yuvarlatılmış köşeler görülünce bu dehaya hayran kalındığı anlatılıyor.

  • Projeye övgü: Bu projenin çok etkileyici olduğu belirtiliyor. Okuması keyifli bulunmuş ve yazım tarzı da beğenilmiş. Gömülü projelerde hızlı prototipleme/debugging için çift hedefli derleme deneniyor, ancak PC derlemesi daha sık kullanılıyor. Daha fazla insanın bunu yapması gerektiği söyleniyor.

  • VGA arayüzü: En etkileyici kısmın VGA arayüzü olduğu belirtiliyor.

  • ESP32 hackleme denemesi: ESP32 üzerinde vMac çalıştırılmaya çalışılmış ancak başarısız olunmuş. Bu projenin çok daha üst düzey olduğu ve saygıyı hak ettiği ifade ediliyor.

  • Küçük SBC keşfi: Son 68k Mac'i veya 90'ların orta-son dönem PPC Mac'lerini tam performansla emüle edebilecek en küçük SBC'nin ne olduğu merak ediliyor. Bunun modern bir dizüstü kasasına yerleştirilmesiyle, System 7.6.1'den Mac OS 9.x'e kadar çalıştırabilen kullanışlı bir "zen modu" dizüstü ortaya çıkabileceği düşünülüyor.

  • Blog aynası: Blogun aşırı yük altında göründüğü ve bu yüzden bir ayna bağlantısının paylaşıldığı belirtiliyor.

  • MacPaint'ten bahsedilmesi: Neden MacPaint'ten söz edilmediği açıklanıyor. Bill Atkinson'ın tüm hileleri bildiği ve bunları kullanarak MacPaint'i orijinal kısıtlar içinde çalıştırmayı başarmış olacağı düşünülüyor. Yazar için bunun adil bir mücadele olmadığı söyleniyor.

  • VGA konektörü bulma: VGA konektörüne ihtiyaç vardı ama bulunamadı. Öğle arasında yürüyüş yaparken yolda bir VGA kablosu bulundu. Bazen böyle şeyler olabiliyor.