semu-c64 - Menjalankan Linux di Commodore C-64
(github.com/onnokort)- Proyek yang mem-porting emulator RISC-V32 minimal semu ke C-64 untuk menjalankan Linux di Commodore C-64
- Karena memori 64KiB saja tidak cukup untuk memuat seluruh konfigurasi, diperlukan RAM Expansion Unit (REU), dan kecepatan eksekusinya sangat lambat hingga digambarkan sebagai “extremely slowly”
- Berkas eksekusi
semuyang dihasilkan adalah emulator RISCV32 serbaguna, dengan asumsi REU dipetakan ke rentang alamat0x00000000hingga0x01000000 - Untuk menjalankan Linux digunakan emulasi memori virtual dan MMU, sementara UART yang diemulasikan menangani konversi huruf besar-kecil antara PETSCII dan ASCII
- Build dilakukan dengan
make, dan memerlukanmos-c64-clang - Saat dijalankan di VICE, gunakan berkas
.d64yang berisi executablesemuhasil kompilasi danreufile.linux, lalu aktifkan RAM Expansion Module dan pilih ukuran 16MiB - Eksekusi di sisi C-64 dilakukan dengan memasukkan
LOAD "SEMU",8,1lalurun, dan menurut README proses boot memerlukan waktu tunggu yang panjang - Biner
semuuntuk PC dapat memuatreufile.linuxdengan opsi-k, dan dapat digunakan untuk memperoleh urutan boot yang deterministik hingga sebelum input tombol pertama - Fitur persistensi menyimpan status emulator agar Linux yang sudah pernah boot bisa dimuat lebih cepat, dengan register CPU RISC-V serta status UART dan interrupt controller dimuat dari alamat REU
0xfff000 - Rilis-rilisnya dianggap “highly experimental” dan dinyatakan tidak cocok untuk pekerjaan produksi
1 komentar
Komentar Hacker News
Onno Kortman membuat Linux berjalan di Commodore 64 dengan melakukan cross-compile semu, emulator RISC-V minimal, menggunakan llvm-mos, port LLVM untuk MOS 6502
Kortman menulis, “Untuk membuat tangkapan layar saja butuh beberapa jam bahkan dengan ‘warp mode’ di VICE. Dengan kondisi saat ini, C64 sungguhan mungkin bisa mem-boot Linux dalam kira-kira seminggu”
Jika emulator RISC-V ditulis dalam 6502 native, mungkin boot Linux di perangkat nyata bisa dilakukan dalam sehari, bukan seminggu. Bayangkan berapa banyak nyawa yang bisa diselamatkan
https://www.folklore.org/StoryView.py?story=Saving_Lives.txt
https://dmitry.gr/?r=05.Projects&proj=07.%20Linux%20on%208bi... memakai emulator ARMv5 di AVR 8-bit, tetapi yang ini satu tingkat di atas dalam hal keren ala geek
Memang keren, tetapi pikiran pertama saya adalah “mana mungkin muat di RAM 64KB!”, dan kenyataannya memang tidak muat
Dibutuhkan REU 16MB. Pada masa itu, REU untuk C64 berkapasitas 256KB dan 512KB, dan karena skematiknya terbuka, klon yang dibuat juga kebanyakan di kisaran itu
Pada akhir 90-an ada juga “ekspansi” untuk C64 yang berisi SuperCPU (65816), CPU baru yang kompatibel kode dengan CPU asli, dan perangkat ini mungkin bisa sampai 16MB
Belakangan muncul implementasi ulang berbasis FPGA, dan REU 16MB juga hadir. Skematik SuperCPU asli sudah hilang, dan meski konon papan ekspansi berbasis FPGA sekarang bisa dibeli seharga beberapa ratus euro, saya tidak tahu siapa pun yang benar-benar membelinya
Jadi, walaupun ini pencapaian teknis yang rapi, klaim “berjalan di C64” terasa mirip dengan mengatakan “Doom 3 dijalankan di 386, hanya saja 386 itu adalah kartu PCI di PC modern”
Kalau tidak bisa saya jalankan di C64 saya dengan hardware yang tersedia pada masa itu, atau hardware yang secara realistis bisa dibuat pada masa itu, agak sulit menyebutnya “berjalan di C64”
Kembali ke soal REU, saya juga penasaran mengapa sampai sekarang belum ada skematik terbuka. Di eBay ada banyak chip SRAM murah sehingga kelihatannya mudah dibuat, tetapi kenyataannya tidak sederhana karena dua komponen, yaitu SuperCPU dan pengontrol DMA, harus diemulasikan dengan FPGA yang cukup besar
Jika ada FPGA yang lebih murah, atau mikrokontroler dengan fungsi mirip FPGA, mungkin suatu saat ada yang membuat SuperCPU open source. Sejauh ini semua pengguna yang saya dengar tampaknya memakai emulasi. Emulasi memang sangat berguna untuk pengembangan, tetapi bagi saya kesenangan hobi retro paling besar muncul ketika menjalankannya di hardware asli
Harganya saja yang luar biasa mahal; secara teknis tidak ada alasan yang membuatnya mustahil. Sepertinya Anda mencampuradukkan SuperCPU dengan REU biasa
REU hanyalah sekumpulan RAM dan ASIC yang berkomunikasi dengan C64 untuk menyimpan atau mengambil kembali bank RAM, tanpa CPU. Karena 6502 tidak bisa mengalamatkan lebih dari 64KB secara langsung, caranya adalah menyuruhnya mengganti RAM sistem
SuperCPU (65816) memang bisa mengalamatkan 16MB secara langsung, tetapi itu benda yang berbeda. Proyek di tulisan asli berjalan di C64 standar dan CPU C64 standar, hanya saja membutuhkan RAM yang sangat besar yang pada masa itu mungkin seharga satu rumah
Atau apakah itu pun sudah melewati batas purisme emulasi
Zaman sekarang rasanya 386, 486, Pentium, dan SoC lain bisa dimasukkan ke satu kartu PCIe dan tetap didinginkan pasif
Bukan soal Linux, tetapi belakangan saya mencoba aksesori C64 modern
Saya mencoba Kung Fu Flash, kartrid software-defined murah yang dibuat hanya dengan satu STM32 dan bisa melakukan hampir semuanya. Saya membelinya untuk mencoba mereproduksi pengalaman pengembangan yang saya lihat di “8-bit show and tell”; “Super Snapshot” bisa diemulasikan, tetapi REU tidak. Ini sangat bagus untuk cepat mencoba banyak software dan game C64
https://8bithardware.wixsite.com/website/post/kung-fu-flash
https://github.com/KimJorgensen/KungFuFlash
Saya juga punya SD2IEC, dan saya belajar bahwa seharusnya saya membeli varian yang memiliki soket DIN tambahan. Lumayan, tetapi saya tidak pernah suka DOS asli C64, dan perangkat ini makin memperkuat perasaan itu. Untuk me-mount image disk D64, harus mengetik
OPEN1,8,15,"CD:MYIMAGE.D64":CLOSE1, yang menyebalkanJiffyDOS, ROM pengganti untuk C64, memperbaiki hal ini, lebih cepat, dan menyertakan DOS wedge permanen. Saya sudah memesannya dan penasaran mencobanya dengan drive 1541 sungguhan
Yang membuat saya mulai mencoba hal-hal seperti ini baru-baru ini adalah kartrid “Penultimate +2” untuk VIC-20
https://www.youtube.com/watch?v=eNGyneXHKJQ
Pada dasarnya saya membeli VIC-20 untuk mencoba kartrid ini
Ini demonstrasi ekuivalensi Turing. Jika waktu tidak menjadi masalah, komputer mana pun yang Turing-complete bisa melakukan apa yang dilakukan komputer Turing-complete lainnya
Ini jadi membuat penasaran. Apa perangkat keras tertua yang masih bisa mem-boot Linux modern sekaligus dipakai untuk kebutuhan sehari-hari?
Kita bisa membuat sistem yang paling ringan dan cepat agar berjalan baik di mesin lambat, tetapi internet zaman sekarang tidak kenal ampun
Tidak akan sangat cepat, tetapi dengan sedikit kesabaran sepertinya tidak akan terhambat oleh perangkat keras. Jika ditambah GPU yang bisa melakukan decoding video perangkat keras, mungkin YouTube juga bisa ditonton dengan kualitas yang lebih baik daripada kualitas kentang
Saya ingin menjadikan era Pentium 4 / Athlon XP sebagai target. Menurut dokumentasi, Pentium asli tidak didukung, jadi jika benar-benar mau menanggung penderitaan, mungkin bisa mundur sampai Pentium II
Apakah ini berbeda dari LUnix?
https://en.wikipedia.org/wiki/LUnix
Yang ini menjalankan emulator RISC-V di C64, lalu meniru boot Linux di atas emulator tersebut
Secara ketat, Linux tidak berjalan langsung di C64
C64 meniru lingkungan RISC-V, dan Linux berjalan di atasnya. Tentu saja tetap mengesankan, tetapi pembedaan maknanya penting
Saya penasaran apakah ini bisa dibuat berjalan dengan memakai puluhan disket seperti RAM, bukan REU
Bagaimana kalau pengguna diminta mengganti disket setiap kali diperlukan. Jika ada orang yang punya waktu luang beberapa bulan atau beberapa tahun, saya ingin melihatnya sebagai timelapse di perangkat keras sungguhan
Jika RAM Commodore 64 ditambah, apakah itu masih Commodore 64?
Selain itu, ekspansi hingga REU 2MB untuk C64 juga memungkinkan. Lihat https://www.neperos.com/article/rlut8ce90fbb7701
Di C64, 2MB bisa dimiliki dengan cukup “sah”
Memori maksimum yang bisa dialamatkan oleh C64 REU adalah 16MB
Baru-baru ini saya mendapatkan TRS-80 Model 4 yang berfungsi sepenuhnya, dan saya sering membayangkan memasang sesuatu yang samar-samar mirip Unix di sana
Khayalan itu terus berlanjut
Kalau mulai dari titik itu, Anda akan menemukan lubang kelinci yang cukup dalam