semu-c64 - Commodore C-64 पर Linux चलाना
(github.com/onnokort)- Commodore C-64 पर Linux चलाने के लिए मिनिमल RISC-V32 emulator semu को C-64 के लिए port किया गया प्रोजेक्ट
- सिर्फ 64KiB मेमोरी में पूरा कॉन्फ़िगरेशन समा नहीं सकता, इसलिए RAM Expansion Unit(REU) की ज़रूरत होती है, और execution speed इतनी धीमी है कि उसे “extremely slowly” कहा गया है
- बना हुआ
semuexecutable एक general-purpose RISCV32 emulator है, और यह मानता है कि REU0x00000000से0x01000000तक की address range में mapped है - Linux चलाने के लिए virtual memory emulation और MMU का उपयोग किया जाता है, जबकि emulated UART PETSCII और ASCII के uppercase/lowercase conversion को संभालता है
- build
makeसे किया जाता है, औरmos-c64-clangकी आवश्यकता होती है - VICE में चलाते समय compiled
semuexecutable वाली.d64फ़ाइल औरreufile.linuxका उपयोग करना होता है, RAM Expansion Module को enable करने के बाद उसका size 16MiB चुनना पड़ता है - C-64 पर इसे चलाने का तरीका
LOAD "SEMU",8,1के बादrunदर्ज करना है, और README के अनुसार boot होने में काफ़ी लंबा इंतज़ार लगता है - PC के लिए
semubinary-koption सेreufile.linuxलोड कर सकती है, और पहली key input से पहले तक deterministic boot sequence पाने के काम आ सकती है - persistence feature emulator state को save करके पहले से boot हुए Linux को अधिक तेज़ी से लोड करने का तरीका है; यह RISC-V CPU register, UART, और interrupt controller state को REU address
0xfff000से लोड करता है - releases को “highly experimental” माना गया है, और स्पष्ट किया गया है कि यह production work के लिए उपयुक्त नहीं हैं
1 टिप्पणियां
Hacker News टिप्पणियाँ
Onno Kortman ने न्यूनतम RISC-V emulator semu को MOS 6502 के लिए LLVM port, llvm-mos, से cross-compile करके Commodore 64 पर Linux चलवा दिया
Kortman ने लिखा, “screenshot बनाने में VICE के ‘warp mode’ में भी कई घंटे लग गए। मौजूदा हालत में असली C64 भी शायद करीब एक हफ्ते में Linux boot कर सकेगा”
अगर native 6502 में RISC-V emulator लिखा जाए, तो शायद असली मशीन पर Linux boot होने में एक हफ्ते की जगह एक दिन से कम लगे। सोचिए, इससे कितनी जानें बचेंगी
https://www.folklore.org/StoryView.py?story=Saving_Lives.txt
https://dmitry.gr/?r=05.Projects&proj=07.%20Linux%20on%208bi... ने 8-bit AVR पर ARMv5 emulator इस्तेमाल किया था, लेकिन यह वाला geeky coolness में एक कदम आगे है
शानदार तो है, लेकिन मेरा पहला ख्याल था, “यह 64KB RAM में आ ही नहीं सकता!” और सच में नहीं आता
16MB REU चाहिए। उस दौर में C64 के लिए REU 256KB और 512KB के होते थे, और उनके circuit diagrams public थे, इसलिए clones भी ज़्यादातर इन्हीं के बने
90s के आखिर में C64 के लिए एक “expansion” भी था जिसमें original CPU के साथ code-compatible नया CPU, SuperCPU(65816), लगा था, और शायद यह device 16MB तक support कर सकता था
बाद में FPGA-based reimplementations आए और 16MB REU भी सामने आया। original SuperCPU schematics गायब हो गए, और FPGA-based expansion board आज कुछ सौ euro में खरीदा जा सकता है, ऐसा कहा जाता है, लेकिन वास्तव में किसने खरीदा है, पता नहीं
इसलिए यह साफ-सुथरी technical achievement तो है, लेकिन “C64 पर चलता है” कहना मुझे कुछ ऐसा लगता है जैसे “386 पर Doom 3 चला दिया, बस वह 386 modern PC का PCI card है”
अगर मैं इसे अपने C64 पर उस दौर में उपलब्ध hardware, या उस दौर में realistic रूप से बनाए जा सकने वाले hardware, के साथ नहीं चला सकता, तो इसे “C64 पर चलता है” कहना थोड़ा मुश्किल है
REU की बात पर लौटें तो यह भी हैरानी है कि अब तक open schematics क्यों नहीं हैं। eBay पर सस्ते SRAM chips बहुत हैं, इसलिए बनाना आसान लगता है, लेकिन असल में SuperCPU और DMA controller, इन दो components को काफी बड़े FPGA में emulate करना पड़ता है, इसलिए यह simple नहीं है
अगर सस्ते FPGA या FPGA जैसी क्षमताओं वाले microcontroller आएं, तो शायद कोई open source SuperCPU बना दे। अब तक जिन users के बारे में सुना है, वे सब emulation ही इस्तेमाल करते दिखते हैं। development के लिए emulation बहुत उपयोगी है, लेकिन मेरे retro hobby का सबसे बड़ा मज़ा original hardware पर चलाने में है
बस कीमत आसमान छूती होती; technical रूप से असंभव होने की कोई वजह नहीं थी। लगता है आप SuperCPU और सामान्य REU को मिला रहे हैं
REU तो बस RAM का ढेर और एक ASIC है, जो C64 से communicate करके RAM banks को store या वापस retrieve करवाता है; इसमें CPU नहीं होता। चूंकि 6502 64KB से ज़्यादा को सीधे address नहीं कर सकता, इसलिए तरीका यह है कि उसे system RAM बदलने का निर्देश दिया जाए
SuperCPU(65816) सच में 16MB को सीधे address कर सकता है, लेकिन वह अलग चीज़ है। original project basic C64 और basic C64 CPU पर चलता है, बस इसमें भारी-भरकम RAM चाहिए, जिसकी उस समय शायद एक घर जितनी कीमत होती
या फिर क्या वह भी emulation purism की सीमा से बाहर माना जाएगा
आजकल शायद 386, 486, Pentium और कुछ दूसरे SoCs को एक PCIe card में डालकर passive cooling के साथ चलाया जा सकता है
Linux की बात नहीं है, लेकिन हाल में C64 accessories इस्तेमाल कर रहा हूं
मैंने Kung Fu Flash आजमाया, यह STM32 से बना सस्ता software-defined cartridge है और लगभग सब कर सकता है। मैंने इसे “8-bit show and tell” में दिखने वाले developer experience को recreate करने के लिए खरीदा था; यह “Super Snapshot” emulate कर सकता है, लेकिन REU नहीं। बहुत सारे C64 software और games को जल्दी test करने के लिए यह बेहतरीन है
https://8bithardware.wixsite.com/website/post/kung-fu-flash
https://github.com/KimJorgensen/KungFuFlash
मेरे पास SD2IEC भी है, लेकिन इससे मैंने सीखा कि मुझे अतिरिक्त DIN socket वाला variant लेना चाहिए था। ठीक-ठाक है, लेकिन मुझे original C64 का DOS कभी पसंद नहीं था, और यह device उस एहसास को और मजबूत करता है। D64 disk image mount करने के लिए
OPEN1,8,15,"CD:MYIMAGE.D64":CLOSE1type करना पड़ता है, जो अच्छा नहीं लगताC64 के लिए replacement ROM JiffyDOS इसे बेहतर बनाता है, ज्यादा तेज है और हमेशा उपलब्ध DOS wedge शामिल करता है। मैंने एक order कर दिया है और इसे असली 1541 drive के साथ आजमाने की उत्सुकता है
हाल में मुझे ऐसी चीजें शुरू करवाने वाला VIC-20 के लिए “Penultimate +2” cartridge था
https://www.youtube.com/watch?v=eNGyneXHKJQ
सच कहूं तो मैंने VIC-20 लगभग इसी cartridge को इस्तेमाल करने के लिए खरीदा था
यह Turing equivalence का प्रदर्शन है। अगर समय समस्या न हो, तो कोई भी Turing-complete कंप्यूटर वह काम कर सकता है जो दूसरा Turing-complete कंप्यूटर करता है
इससे जिज्ञासा होती है। आधुनिक Linux boot करते हुए भी रोज़मर्रा के इस्तेमाल लायक सबसे पुराना hardware कौन-सा होगा?
सबसे हल्का और तेज़ system बनाकर उसे धीमी machines पर भी अच्छी तरह चलाया जा सकता है, लेकिन आज का internet बेरहम जगह है
बहुत तेज़ तो नहीं होगा, लेकिन थोड़े धैर्य के साथ शायद hardware की वजह से रुकावट नहीं आएगी। अगर hardware video decoding वाला GPU भी जोड़ दें, तो YouTube भी potato quality से बेहतर स्तर पर देखा जा सकेगा शायद
मैं Pentium 4 / Athlon XP era के आसपास लक्ष्य रखना चाहूँगा। documentation के हिसाब से original Pentium support नहीं है, इसलिए अगर सचमुच तकलीफ़ उठानी हो तो Pentium II तक पीछे जा सकते हैं
क्या यह LUnix से अलग है?
https://en.wikipedia.org/wiki/LUnix
इसमें C64 पर RISC-V emulator चलाया जाता है, और उस emulator के ऊपर Linux boot को emulate किया जाता है
सख्ती से कहें तो Linux C64 पर सीधे नहीं चल रहा
C64 एक RISC-V environment emulate कर रहा है, और उसके ऊपर Linux चल रहा है। बेशक यह फिर भी प्रभावशाली है, लेकिन अर्थ का अंतर महत्वपूर्ण है
सोचता हूँ कि REU के बजाय दर्जनों floppy disks को RAM की तरह इस्तेमाल करके चलाया जा सकता है या नहीं
ज़रूरत पड़ने पर user से disk बदलवाने को कहा जाए तो कैसा रहेगा। अगर किसी के पास कुछ महीने या साल भर खाली समय हो, तो मैं इसे real hardware पर timelapse में देखना चाहूँगा
Commodore 64 में और RAM जोड़ दें तो क्या वह अब भी Commodore 64 रहेगा?
साथ ही C64 के लिए 2MB REU तक expand करना भी संभव है। https://www.neperos.com/article/rlut8ce90fbb7701 देखें
C64 में 2MB काफी “वैध” तरीके से हो सकता है
C64 REU से address की जा सकने वाली maximum memory 16MB है
हाल ही में मुझे पूरी तरह काम करने वाला TRS-80 Model 4 मिला है, और मैं अक्सर उस पर धुंधला-सा Unix जैसा कुछ चलाने की कल्पना करता हूँ
वह कल्पना जारी है
उस बिंदु से शुरू करें तो आपको ठीक-ठाक गहरा rabbit hole मिल जाएगा