1 puan yazan GN⁺ 2023-08-28 | 1 yorum | WhatsApp'ta paylaş
  • Commodore C-64 üzerinde Linux çalıştırmak için minimal bir RISC-V32 emülatörü olan semu’nun C-64’e portlandığı bir proje
  • Yalnızca 64KiB bellek tüm yapılandırmayı barındırmaya yetmediği için RAM Expansion Unit(REU) gerekiyor; çalışma hızı ise “extremely slowly” denecek kadar çok yavaş
  • Üretilen semu yürütülebilir dosyası genel amaçlı bir RISCV32 emülatörü ve REU’nun 0x00000000 ile 0x01000000 arasındaki adres aralığına eşlendiğini varsayıyor
  • Linux çalıştırmak için sanal bellek emülasyonu ve MMU kullanılıyor; emüle edilen UART, PETSCII ile ASCII arasındaki büyük/küçük harf dönüşümünü işliyor
  • Derleme make ile yapılıyor ve mos-c64-clang gerekiyor
  • VICE üzerinde çalıştırırken derlenmiş semu yürütülebilir dosyasını içeren .d64 dosyası ile reufile.linux kullanılıyor; RAM Expansion Module etkinleştirildikten sonra boyut 16MiB seçilmeli
  • C-64 tarafında çalıştırma, LOAD "SEMU",8,1 ardından run girilerek yapılıyor; README’ye göre önyükleme için uzun bir bekleme süresi gerekiyor
  • PC için semu ikilisi, -k seçeneğiyle reufile.linux dosyasını yükleyebiliyor ve ilk tuş girişine kadar deterministik bir önyükleme dizisi elde etmek için kullanılabiliyor
  • Kalıcılık özelliği, emülatör durumunu kaydederek zaten önyüklenmiş Linux’u daha hızlı yükleme yöntemine dayanıyor; RISC-V CPU yazmaçları, UART ve kesme denetleyicisi durumu REU adresi 0xfff000 üzerinden yükleniyor
  • Sürümler “highly experimental” olarak değerlendiriliyor ve üretim işlerine uygun olmadığı açıkça belirtiliyor

1 yorum

 
GN⁺ 2023-08-28
Hacker News yorumları
  • Onno Kortman, minimal RISC-V emülatörü semu’yu MOS 6502 için LLVM portu olan llvm-mos ile çapraz derleyerek Commodore 64 üzerinde Linux çalıştırmayı başardı
    Kortman şöyle yazmış: “Ekran görüntüsünü oluşturmak VICE’ın ‘warp mode’unda bile saatler sürdü. Mevcut haliyle gerçek bir C64’ün de Linux’u bir hafta kadar içinde boot edebileceğini düşünüyorum”

    • 6502, C derleme hedefi olarak kötü şöhretli derecede kötüdür; özellikle de 6502’nin kısıtlarını dikkate almayan C söz konusuysa
      RISC-V emülatörü yerel 6502 ile yazılsa, gerçek cihazda Linux’u bir hafta değil, belki bir gün içinde boot etmek mümkün olabilir. O zaman kim bilir kaç hayat kurtarılır
      https://www.folklore.org/StoryView.py?story=Saving_Lives.txt
    • Bu bootstrap yöntemi, Linux’u başka bir 8 bit mikrodenetleyici üzerinde çalıştırma projesini hatırlatıyor
      https://dmitry.gr/?r=05.Projects&proj=07.%20Linux%20on%208bi... 8 bit AVR üzerinde ARMv5 emülatörü kullanmıştı; ama bu proje acayip geek havası bakımından bir seviye üstte
    • Gerçek donanımda çalıştığını görmek istiyorum; umarım biri bunu başarır
  • Havalı ama ilk düşüncem “64KB RAM’e sığmasının imkânı yok!” oldu; gerçekten de sığmıyor
    16MB REU gerekiyor. O dönemde C64 için REU’lar 256KB ve 512KB idi; şemaları açık olduğu için kopyaları da çoğunlukla bunlardan yapılıyor
    90’ların sonlarında, özgün CPU ile kod uyumlu yeni bir CPU olan SuperCPU’yu (65816) içeren C64 “genişletmeleri” de vardı; bu cihaz muhtemelen 16MB’a kadar destekliyordu
    Daha sonra FPGA tabanlı yeniden uygulamalar çıktı ve 16MB REU da ortaya çıktı. Orijinal SuperCPU şeması kayboldu; FPGA tabanlı genişletme kartlarının bugün birkaç yüz avroya alınabildiği söyleniyor ama gerçekten alan birini bilmiyorum
    Bu yüzden temiz bir teknik başarı olsa da “C64’te çalışıyor” demek bana biraz “386’da Doom 3 çalıştırdım, ama o 386 modern bir PC’nin PCI kartı” demeye benziyor
    O dönemde bulunabilen donanımla ya da o dönemde gerçekçi biçimde yapılabilecek donanımla kendi C64’ümde çalıştıramıyorsam, buna “C64’te çalışıyor” demek biraz tartışmalı
    REU konusuna dönersek, hâlâ neden açık bir şeması olmadığını da merak ediyorum. eBay’de ucuz SRAM çipleri bol, kolayca yapılabilir gibi duruyor; ama gerçekte SuperCPU ve DMA denetleyicisi olmak üzere iki bileşeni epey büyük bir FPGA ile emüle etmek gerektiğinden basit değil
    Daha ucuz FPGA’ler ya da FPGA benzeri işlevlere sahip mikrodenetleyiciler çıkarsa belki biri açık kaynak bir SuperCPU yapar. Şimdiye kadar duyduğum kullanıcıların hepsi emülasyon kullanıyor gibi. Geliştirme için emülasyon çok faydalı, ama retro hobimdeki asıl keyif orijinal donanımda çalıştırınca geliyor

    • “O dönemde bulunabilen donanım ya da o dönemde gerçekçi biçimde yapılabilecek donanım değilse C64’te çalışıyor demek zor” ölçütüne göre bakarsak, 16MB REU 80’lerde de yapılabilirdi
      Fiyatı astronomik olurdu, hepsi bu; teknik olarak imkânsız kılan bir neden yok. SuperCPU ile sıradan REU’yu karıştırıyor gibisin
      REU yalnızca bir RAM yığını ve C64 ile iletişim kurup RAM banklarını kaydetmesini ya da geri getirmesini sağlayan bir ASIC’ten ibaret; CPU yok. 6502, 64KB’den fazlasını doğrudan adresleyemediği için sistem RAM’ini değiştirmesini söyleyen bir yöntem kullanıyor
      SuperCPU (65816) gerçekten 16MB’ı doğrudan adresleyebilir, ama ayrı bir şey. Orijinal yazıdaki proje temel C64 ve temel C64 CPU üzerinde çalışıyor; sadece o dönem muhtemelen bir ev fiyatına denk gelecek devasa RAM gerektiriyor
    • FPGA yerine, örneğin RPi Pico/Nano gibi kartlarda bulunan genel amaçlı bir ARM SoC’nin aynı işi yazılımla yapması sağlanamaz mı diye merak ediyorum
      Yoksa bu kadarı bile emülasyon safçılığının sınırına mı takılıyor acaba
    • “Benim 386 aslında modern bir PC’nin PCI kartı” lafı, şimdi böyle bir şey istememe yol açtı
      Günümüzde 386, 486, Pentium ve başka SoC’leri tek bir PCIe kartına koyup pasif soğutmak mümkün gibi
    • 16MB bellek eklemek gerekiyorsa “Commodore 64 üzerinde” demek epey sınırda kalıyor
  • Linux ile ilgili değil ama son zamanlarda C64 aksesuarlarını deniyorum
    Kung Fu Flash’ı denedim; tek bir STM32 ile yapılmış ucuz, yazılım tanımlı bir kartuş ve neredeyse her şeyi yapabiliyor. “8-bit show and tell”de gördüğüm geliştirici deneyimini yeniden yaşamak için aldım; “Super Snapshot”ı emüle edebiliyor ama REU olmuyor. Birçok C64 yazılımını ve oyununu hızlıca denemek için çok iyi
    https://8bithardware.wixsite.com/website/post/kung-fu-flash
    https://github.com/KimJorgensen/KungFuFlash
    SD2IEC’im de var; ek DIN soketi olan varyantını alsaymışım keşke, bunu öğrendim. Fena değil ama zaten C64’ün orijinal DOS’unu sevmezdim; bu cihaz o hissi daha da güçlendiriyor. Bir D64 disk imajını mount etmek için OPEN1,8,15,"CD:MYIMAGE.D64":CLOSE1 yazmak gerekiyor, hoş değil
    C64 için yedek ROM olan JiffyDOS bunu iyileştiriyor; daha hızlı ve kalıcı bir DOS wedge’i içeriyor. Bir tane sipariş ettim, gerçek bir 1541 sürücüsüyle denemeyi merak ediyorum
    Son dönemde beni bu işlere başlatan şey VIC-20 için “Penultimate +2” kartuşuydu
    https://www.youtube.com/watch?v=eNGyneXHKJQ
    Aslında VIC-20’yi neredeyse sırf bu kartuşu denemek için aldım

  • Turing eşdeğerliğinin bir gösterimi. Zaman sorun değilse, Turing-tam herhangi bir bilgisayar, başka bir Turing-tam bilgisayarın yaptığı işi yapabilir

    • Zaman ve bellek de gerekir
    • Lambda hesabında Linux nasıl çalıştırılır?
  • Bu insanı meraklandırıyor: güncel Linux’u önyükleyip aynı zamanda günlük kullanım için kullanılabilecek en eski donanım ne olabilir?

    • Günlük kullanımın temel kısıtı muhtemelen modern web sitelerinin çoğuna erişmek için gereken şifreleme işlemleri olacaktır
      En hafif ve hızlı sistemi yapıp yavaş makinelerde iyi çalışmasını sağlayabilirsiniz, ama günümüz interneti acımasız bir yer
    • “Günlük kullanım” güncel bir web tarayıcısı ve güncel web üretkenlik uygulamalarını çalıştırmak anlamına geliyorsa, alt sınırı Core 2 Duo ve 4 GB bellek civarı görürüm
      Çok hızlı olmaz ama biraz sabırla donanım yüzünden tıkanmayacak gibi. Donanımsal video kod çözme yapabilen bir GPU da eklenirse YouTube’u patates kalitesinden daha iyi bir seviyede izlemek mümkün olabilir
    • Tartışma için Debian 12 kurabilen, bir pencere yöneticisi ve tarayıcı çalıştırabilen, acı verecek kadar yavaş olmayan bir bilgisayar diyelim
      Pentium 4 / Athlon XP dönemi civarını hedeflemek isterim. Belgelerde orijinal Pentium desteklenmiyor, bu yüzden gerçekten acıya katlanacaksanız Pentium II’ye kadar geri gidilebilir
    • Muhtemelen içinde Core 2 Duo olan bir şeydir. Elbette 230 MHz CPU da masaüstü olan Linux’u “çalıştırabilir”
    • Kesinlikle güncel Linux değil; 1995 yazında Slackware 2.0’ı aldığımda Pentium 75 MHz, 8 MB RAM, 1024x768 yapabilen Trident kartı (X’te yalnızca 800x600 mümkün), IDE CD-ROM ve HDD kullanıyordum
  • Bu LUnix’ten farklı mı?
    https://en.wikipedia.org/wiki/LUnix

    • LUnix, C64’e özgü bir işletim sistemi; uygulama yazıp C64 donanımında doğrudan çalıştırabilirsiniz
      Bu ise C64 üzerinde bir RISC-V emülatörü çalıştırıp, o emülatörün üstünde Linux önyüklemesini emüle etmek
  • Teknik olarak Linux C64 üzerinde doğrudan çalışmıyor
    C64 bir RISC-V ortamını emüle ediyor ve Linux onun üstünde çalışıyor. Elbette yine de etkileyici, ama anlam ayrımı önemli

  • REU yerine onlarca disketi RAM gibi kullanarak çalıştırmak mümkün olur mu merak ediyorum
    Gerektiğinde kullanıcıdan disket değiştirmesini istemeye ne dersiniz? Birinin birkaç ay ya da birkaç yıl kadar boş zamanı varsa, bunu gerçek donanımda time-lapse olarak görmek isterim

  • Commodore 64’e daha fazla RAM takarsanız hâlâ Commodore 64 sayılır mı?

    • REU kullanılıyorsa bence evet. Çünkü C64 ile aynı döneme uygun bir bellek yükseltmesi
    • Yakındaki johnwbyrd açıklamasını genişletirsek, Commodore C64’ü 256 KB RAM’e çıkaran “1764” adlı bir RAM Expansion Unit satıyordu; C128 için olan “1750” REU ile C64’ü 512 KB RAM’e çıkarmak da mümkündü
      Ayrıca C64 için 2 MB REU’ya kadar genişletmek de mümkün. Bkz. https://www.neperos.com/article/rlut8ce90fbb7701
      C64’te 2 MB oldukça “meşru” biçimde sahip olunabilecek bir şey
    • Hayır, o Commodore 16384 olur
      C64 REU ile adreslenebilen azami bellek 16 MB’tır
  • Yakın zamanda tamamen çalışan bir TRS-80 Model 4 edindim ve üzerine belli belirsiz Unix benzeri bir şey kurmayı sık sık hayal ediyorum
    O hayal sürüyor

    • 128 KB’a kadar çıkarılabiliyor olmalı. Oraya gelince Fuzix çalıştırma ihtimali epey artar
      O noktadan başlarsanız kendinize yeterince derin bir tavşan deliği bulmuş olursunuz