1 poin oleh GN⁺ 2023-08-28 | 1 komentar | Bagikan ke WhatsApp
  • 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 semu yang dihasilkan adalah emulator RISCV32 serbaguna, dengan asumsi REU dipetakan ke rentang alamat 0x00000000 hingga 0x01000000
  • 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 memerlukan mos-c64-clang
  • Saat dijalankan di VICE, gunakan berkas .d64 yang berisi executable semu hasil kompilasi dan reufile.linux, lalu aktifkan RAM Expansion Module dan pilih ukuran 16MiB
  • Eksekusi di sisi C-64 dilakukan dengan memasukkan LOAD "SEMU",8,1 lalu run, dan menurut README proses boot memerlukan waktu tunggu yang panjang
  • Biner semu untuk PC dapat memuat reufile.linux dengan 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

 
GN⁺ 2023-08-28
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”

    • 6502 terkenal sangat buruk sebagai target kompilasi C, apalagi jika C-nya tidak mempertimbangkan keterbatasan 6502
      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
    • Cara bootstrap ini mengingatkan pada proyek Linux di atas mikrokontroler 8-bit lainnya
      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
    • Ingin melihatnya berjalan di hardware sungguhan, dan semoga ada yang berhasil melakukannya
  • 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

    • Kalau kriterianya adalah “sulit disebut berjalan di C64 jika bukan hardware yang tersedia pada masa itu atau yang secara realistis bisa dibuat pada masa itu”, maka REU 16MB sebenarnya bisa saja dibuat pada era 80-an
      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
    • Saya penasaran apakah, alih-alih FPGA, papan seperti RPi Pico/Nano dengan ARM SoC serbaguna bawaan bisa dibuat melakukan hal yang sama lewat software
      Atau apakah itu pun sudah melewati batas purisme emulasi
    • “386 saya sebenarnya kartu PCI di PC modern” — sekarang saya jadi ingin punya yang seperti itu
      Zaman sekarang rasanya 386, 486, Pentium, dan SoC lain bisa dimasukkan ke satu kartu PCIe dan tetap didinginkan pasif
    • Jika perlu tambahan memori 16MB, menyebutnya “di Commodore 64” memang cukup berada di wilayah abu-abu
  • 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 menyebalkan
    JiffyDOS, 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

    • Waktu dan memori juga diperlukan
    • Bagaimana cara menjalankan Linux di kalkulus lambda?
  • Ini jadi membuat penasaran. Apa perangkat keras tertua yang masih bisa mem-boot Linux modern sekaligus dipakai untuk kebutuhan sehari-hari?

    • Batasan utama untuk penggunaan sehari-hari mungkin adalah operasi kriptografi yang dibutuhkan untuk mengakses sebagian besar situs web modern
      Kita bisa membuat sistem yang paling ringan dan cepat agar berjalan baik di mesin lambat, tetapi internet zaman sekarang tidak kenal ampun
    • Jika “penggunaan sehari-hari” berarti menjalankan peramban web modern dan aplikasi produktivitas web modern, saya kira batas minimumnya sekitar Core 2 Duo dan memori 4GB
      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
    • Untuk bahan diskusi, anggap saja komputer itu bisa dipasangi Debian 12, menjalankan window manager dan peramban, serta tidak terasa menyakitkan lambatnya
      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
    • Mungkin sesuatu dengan Core 2 Duo. Tentu saja CPU 230MHz juga mungkin bisa “menjalankan” Linux dengan desktop
    • Ini jelas bukan Linux modern, tetapi saat saya mendapatkan Slackware 2.0 pada musim panas 1995, saya memakai Pentium 75MHz, RAM 8MB, kartu Trident yang mampu 1024x768 (di X hanya bisa 800x600), IDE CD-ROM, dan HDD
  • Apakah ini berbeda dari LUnix?
    https://en.wikipedia.org/wiki/LUnix

    • LUnix adalah sistem operasi native untuk C64, sehingga Anda bisa menulis aplikasi dan menjalankannya langsung di perangkat keras C64
      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?

    • Kalau memakai REU, menurut saya ya. Karena itu adalah upgrade memori yang sesuai dengan era C64
    • Melanjutkan penjelasan johnwbyrd di sekitar sini, Commodore menjual RAM Expansion Unit bernama “1764” yang menambah RAM C64 menjadi 256KB, dan dengan memakai “1750”, REU untuk C128, C64 juga bisa ditingkatkan menjadi RAM 512KB
      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”
    • Bukan, itu Commodore 16384
      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

    • Seharusnya bisa ditingkatkan sampai 128KB. Jika sampai ke situ, peluang untuk menjalankan Fuzix jadi cukup besar
      Kalau mulai dari titik itu, Anda akan menemukan lubang kelinci yang cukup dalam