semu-c64 - Commodore C-64 üzerinde Linux çalıştırma
(github.com/onnokort)- 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
semuyürütülebilir dosyası genel amaçlı bir RISCV32 emülatörü ve REU’nun0x00000000ile0x01000000arası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
makeile yapılıyor vemos-c64-clanggerekiyor - VICE üzerinde çalıştırırken derlenmiş
semuyürütülebilir dosyasını içeren.d64dosyası ilereufile.linuxkullanılıyor; RAM Expansion Module etkinleştirildikten sonra boyut 16MiB seçilmeli - C-64 tarafında çalıştırma,
LOAD "SEMU",8,1ardındanrungirilerek yapılıyor; README’ye göre önyükleme için uzun bir bekleme süresi gerekiyor - PC için
semuikilisi,-kseçeneğiylereufile.linuxdosyası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
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”
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
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
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
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
Yoksa bu kadarı bile emülasyon safçılığının sınırına mı takılıyor acaba
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
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":CLOSE1yazmak gerekiyor, hoş değilC64 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
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?
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
Ç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
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
Bu LUnix’ten farklı mı?
https://en.wikipedia.org/wiki/LUnix
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ı?
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
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
O noktadan başlarsanız kendinize yeterince derin bir tavşan deliği bulmuş olursunuz