1 पॉइंट द्वारा GN⁺ 2023-08-28 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Commodore C-64 पर Linux चलाने के लिए मिनिमल RISC-V32 emulator semu को C-64 के लिए port किया गया प्रोजेक्ट
  • सिर्फ 64KiB मेमोरी में पूरा कॉन्फ़िगरेशन समा नहीं सकता, इसलिए RAM Expansion Unit(REU) की ज़रूरत होती है, और execution speed इतनी धीमी है कि उसे “extremely slowly” कहा गया है
  • बना हुआ semu executable एक general-purpose RISCV32 emulator है, और यह मानता है कि REU 0x00000000 से 0x01000000 तक की address range में mapped है
  • Linux चलाने के लिए virtual memory emulation और MMU का उपयोग किया जाता है, जबकि emulated UART PETSCII और ASCII के uppercase/lowercase conversion को संभालता है
  • build make से किया जाता है, और mos-c64-clang की आवश्यकता होती है
  • VICE में चलाते समय compiled semu executable वाली .d64 फ़ाइल और reufile.linux का उपयोग करना होता है, RAM Expansion Module को enable करने के बाद उसका size 16MiB चुनना पड़ता है
  • C-64 पर इसे चलाने का तरीका LOAD "SEMU",8,1 के बाद run दर्ज करना है, और README के अनुसार boot होने में काफ़ी लंबा इंतज़ार लगता है
  • PC के लिए semu binary -k option से 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 टिप्पणियां

 
GN⁺ 2023-08-28
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 कर सकेगा”

    • 6502, C compile target के तौर पर बदनाम रूप से खराब है, खासकर तब जब C code 6502 की सीमाओं को ध्यान में रखकर न लिखा गया हो
      अगर native 6502 में RISC-V emulator लिखा जाए, तो शायद असली मशीन पर Linux boot होने में एक हफ्ते की जगह एक दिन से कम लगे। सोचिए, इससे कितनी जानें बचेंगी
      https://www.folklore.org/StoryView.py?story=Saving_Lives.txt
    • यह bootstrap तरीका 8-bit microcontroller पर Linux चलाने वाले एक और project की याद दिलाता है
      https://dmitry.gr/?r=05.Projects&proj=07.%20Linux%20on%208bi... ने 8-bit AVR पर ARMv5 emulator इस्तेमाल किया था, लेकिन यह वाला geeky coolness में एक कदम आगे है
    • इसे असली hardware पर चलते देखना चाहूंगा, और उम्मीद है कोई इसे सफल कर देगा
  • शानदार तो है, लेकिन मेरा पहला ख्याल था, “यह 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 पर चलाने में है

    • अगर कसौटी यह है कि “जब तक यह उस समय उपलब्ध hardware या उस समय realistic रूप से बनाए जा सकने वाले hardware पर न हो, इसे C64 पर चलना कहना मुश्किल है”, तो 16MB REU 80s में भी बनाया जा सकता था
      बस कीमत आसमान छूती होती; 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 चाहिए, जिसकी उस समय शायद एक घर जितनी कीमत होती
    • सोच रहा हूं कि FPGA की जगह, उदाहरण के लिए RPi Pico/Nano जैसे board में मौजूद general-purpose ARM SoC से software में वही काम करवाया जा सकता है या नहीं
      या फिर क्या वह भी emulation purism की सीमा से बाहर माना जाएगा
    • “मेरा 386 असल में modern PC का PCI card है” — अब तो मुझे ऐसी चीज चाहिए
      आजकल शायद 386, 486, Pentium और कुछ दूसरे SoCs को एक PCIe card में डालकर passive cooling के साथ चलाया जा सकता है
    • अगर 16MB memory जोड़नी पड़ती है, तो “Commodore 64 पर” कहना काफी borderline है
  • 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":CLOSE1 type करना पड़ता है, जो अच्छा नहीं लगता
    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 कंप्यूटर करता है

    • समय और मेमोरी भी चाहिए
    • Lambda calculus में Linux कैसे चलाएँगे?
  • इससे जिज्ञासा होती है। आधुनिक Linux boot करते हुए भी रोज़मर्रा के इस्तेमाल लायक सबसे पुराना hardware कौन-सा होगा?

    • रोज़मर्रा के इस्तेमाल की मुख्य constraint शायद वे cryptographic operations होंगी जो ज़्यादातर modern websites तक पहुँचने के लिए चाहिए
      सबसे हल्का और तेज़ system बनाकर उसे धीमी machines पर भी अच्छी तरह चलाया जा सकता है, लेकिन आज का internet बेरहम जगह है
    • अगर “रोज़मर्रा का इस्तेमाल” का मतलब modern web browser और modern web productivity apps चलाना है, तो minimum line Core 2 Duo और 4GB memory के आसपास मानूँगा
      बहुत तेज़ तो नहीं होगा, लेकिन थोड़े धैर्य के साथ शायद hardware की वजह से रुकावट नहीं आएगी। अगर hardware video decoding वाला GPU भी जोड़ दें, तो YouTube भी potato quality से बेहतर स्तर पर देखा जा सकेगा शायद
    • चर्चा के लिए मान लें कि यह ऐसा computer है जिस पर Debian 12 install हो सके, window manager और browser चल सके, और जो दर्दनाक हद तक धीमा न हो
      मैं Pentium 4 / Athlon XP era के आसपास लक्ष्य रखना चाहूँगा। documentation के हिसाब से original Pentium support नहीं है, इसलिए अगर सचमुच तकलीफ़ उठानी हो तो Pentium II तक पीछे जा सकते हैं
    • शायद Core 2 Duo वाला ही कोई system होगा। बेशक 230MHz CPU भी desktop वाले Linux को “run” तो कर सकता होगा
    • यह modern Linux बिल्कुल नहीं था, लेकिन 1995 की गर्मियों में जब मैंने Slackware 2.0 लिया था, तब मैं Pentium 75MHz, 8MB RAM, 1024x768 कर सकने वाला Trident card (X में सिर्फ 800x600 संभव), IDE CD-ROM और HDD इस्तेमाल कर रहा था
  • क्या यह LUnix से अलग है?
    https://en.wikipedia.org/wiki/LUnix

    • LUnix C64 native operating system है, इसलिए apps लिखकर उन्हें सीधे C64 hardware पर चला सकते हैं
      इसमें 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 रहेगा?

    • अगर REU इस्तेमाल करें तो मेरे हिसाब से हाँ। क्योंकि यह C64 के उसी दौर का उपयुक्त memory upgrade है
    • पास में johnwbyrd की व्याख्या को आगे बढ़ाएँ तो, Commodore ने “1764” नाम का RAM Expansion Unit बेचा था जो C64 को 256KB RAM तक बढ़ाता था, और C128 के लिए बने REU “1750” का इस्तेमाल करके C64 को 512KB RAM तक भी बढ़ाया जा सकता था
      साथ ही C64 के लिए 2MB REU तक expand करना भी संभव है। https://www.neperos.com/article/rlut8ce90fbb7701 देखें
      C64 में 2MB काफी “वैध” तरीके से हो सकता है
    • नहीं, वह Commodore 16384 है
      C64 REU से address की जा सकने वाली maximum memory 16MB है
  • हाल ही में मुझे पूरी तरह काम करने वाला TRS-80 Model 4 मिला है, और मैं अक्सर उस पर धुंधला-सा Unix जैसा कुछ चलाने की कल्पना करता हूँ
    वह कल्पना जारी है

    • इसे 128KB तक बढ़ाया जा सकता होगा। वहाँ तक पहुँचने पर Fuzix चलाने की संभावना काफी बन जाती है
      उस बिंदु से शुरू करें तो आपको ठीक-ठाक गहरा rabbit hole मिल जाएगा