- मूल Macintosh की 128KB मेमोरी की तुलना में Raspberry Pi का 264KB RAM पर्याप्त है। 1984 का Macintosh, Volkswagen Golf की कीमत का लगभग एक-तिहाई था।
- RP2040 पर monochrome VGA और USB/कीबोर्ड जोड़कर Mac को emulate किया गया, जिससे शुरुआती Mac applications चलती हैं
- GitHub पर सार्वजनिक की गई जानकारी के आधार पर कोई भी इसे खुद बना सकता है
Pico-Mac क्या है?
- Raspberry Pi RP2040 microcontroller (Pico board का उपयोग) monochrome VGA video चलाता है, USB keyboard/mouse input लेता है, और Macintosh 128K कंप्यूटर तथा disk storage devices को emulate करता है
- RP2040 की 2MB flash, OS और software के लिए disk image के रूप में पर्याप्त है
- MacDraw, MacWrite, MacPaint जैसे शुरुआती Macintosh applications चलाए जा सकते हैं
यात्रा
तीन नियम
- यह मज़ेदार होना चाहिए।
- मैं 68K assembly सीखना नहीं चाहता था।
- मैं शुरुआती Mac system software की अंदरूनी बनावट में बहुत गहराई तक नहीं जाना चाहता था।
Mac 128K
- Motorola 68000 CPU, 8MHz।
- memory map, keyboard/mouse, video scan आदि बुनियादी hardware संरचना।
- Mac 128K और Mac 512K में फर्क सिर्फ RAM का था।
- Mac Plus में SCSI और 800K floppy drive जोड़ी गई।
Mac emulator: umac
- Musashi 68K interpreter का उपयोग करके Mac 128K emulator बनाया गया।
- ROM image load करना, RAM allocate करना, debug messages और logging सेट करना।
- address decoding जोड़ा गया, ताकि CPU read/write को RAM या ROM की ओर निर्देशित किया जा सके।
- IWM chip तक पहुँचने के बाद "Unknown Disc" icon मिला।
- SDL2 frontend में wrap करके real-time screen refresh की पुष्टि की गई।
hardware और RP2040
- 512x342x1 video को VGA पर output किया गया और TinyUSB HID example को integrate किया गया।
- VGA PIO task के ज़रिए video data scan किया गया और DMA का उपयोग करके framebuffer data output किया गया।
- DMA channels को कई बार reconfigure करके stable video output हासिल किया गया।
फिर से emulation पर
- Musashi की बड़ी opcode decode jump table को flash में store करने के लिए बदला गया।
- disassembler और execution cycle counting हटा दिए गए।
- RAM उपयोग को न्यूनतम करके Pico पर build और run संभव बनाया गया।
performance
- Pico को 250MHz तक overclock करके performance बढ़ाई गई।
- अक्सर उपयोग होने वाले 200 opcode functions को RAM में रखकर 1.4 MIPS हासिल किए गए।
विदाई
- MicroMac प्रोजेक्ट एक मज़ेदार और ज्ञानवर्धक अनुभव था।
- GitHub लिंक के माध्यम से इसे खुद बनाया जा सकता है।
GN⁺ की राय
- रोचक प्रोजेक्ट: MicroMac सस्ते hardware पर क्लासिक Macintosh को emulate करने वाला एक दिलचस्प प्रोजेक्ट है। software और hardware के संयोजन से engineering का मज़ा महसूस किया जा सकता है।
- सीखने का अवसर: यह प्रोजेक्ट शुरुआती software engineers को hardware और software के interaction को समझने का अच्छा अवसर देता है। खासकर emulation, PIO और DMA जैसे concepts सीखे जा सकते हैं।
- performance optimization: performance optimization की प्रक्रिया में कई तरह की technical चुनौतियाँ और उनके समाधान सीखे जा सकते हैं। खासकर memory management और overclocking का महत्व समझा जा सकता है।
- community के साथ साझा करना: GitHub के माध्यम से प्रोजेक्ट साझा करने और दूसरों के साथ collaboration का अवसर मिलता है। यह open source community के फ़ायदों को अच्छी तरह दिखाता है।
- भविष्य की संभावनाएँ: यह प्रोजेक्ट अधिक RAM वाले MCU का उपयोग करके आगे बढ़ाया जा सकता है। इससे अधिक जटिल applications चलाने की संभावना खुलती है।
1 टिप्पणियां
Hacker News राय
VGA केबल ढूंढना मुश्किल: हाल ही में एक कला इंस्टॉलेशन के लिए VGA केबल चाहिए थी, लेकिन आसपास किसी के पास नहीं थी, इसलिए आखिरकार नई खरीदनी पड़ी। इतने सारे केबल फेंक दिए जाते हैं, यह अफसोस की बात है.
Amiga प्रोजेक्ट: AmigaOS 3.2 चलाने वाला एक Amiga बनाना चाहता था। 3D प्रिंटिंग से उसके मूल आकार का छोटा शेल बनाने का विचार प्यारा है। पुरानी फ्लॉपी ड्राइव न होने से अनुभव थोड़ा अधूरा लगता है, लेकिन मौजूदा डेस्कटॉप PC पर emulator चलाने के बजाय एक समर्पित मशीन इस्तेमाल करने का विचार पसंद है। RP2040 का 68k की भूमिका निभाने वाला low-level approach दिलचस्प है.
Mac की पहली छाप: जब Mac पहली बार आया था, तब कंप्यूटर स्टोर में काम करता था। स्क्रीन के कोनों के गोल किनारों को देखकर उसकी प्रतिभा पर हैरान रह गया था.
प्रोजेक्ट की प्रशंसा: यह प्रोजेक्ट बहुत प्रभावशाली है। पढ़ने में मज़ा आया और लिखने की शैली भी पसंद आई। embedded प्रोजेक्ट्स में तेज prototyping/debugging के लिए dual-target build आज़माता हूँ, लेकिन PC build का ज़्यादा इस्तेमाल हो जाता है। और लोगों को ऐसा करना चाहिए.
VGA interface: VGA interface सबसे प्रभावशाली लगा.
ESP32 हैकिंग चुनौती: ESP32 पर vMac चलाने की कोशिश की थी, लेकिन असफल रहा। यह प्रोजेक्ट उससे कहीं ऊँचे स्तर का है। सम्मान.
छोटे SBC की खोज: सोच रहा हूँ कि सबसे छोटा कौन-सा SBC होगा जो आख़िरी 68k Mac या 90 के दशक के मध्य/अंत के PPC Mac को पूरी performance पर emulate कर सके। इसे किसी आधुनिक laptop body में लगाया जाए तो यह System 7.6.1 से Mac OS 9.x तक चलाने वाला एक उपयोगी "zen mode" laptop बन सकता है.
ब्लॉग मिरर: लगता है ब्लॉग overload में है, इसलिए एक mirror link साझा किया.
MacPaint का उल्लेख: यह बताया कि MacPaint का ज़िक्र क्यों नहीं किया। लगता है Bill Atkinson सभी tricks जानते थे और उनका इस्तेमाल करके MacPaint को उसकी मूल सीमाओं के भीतर चलने लायक बना दिया होगा। लेखक के लिए यह एक निष्पक्ष मुकाबला नहीं था.
VGA connector ढूंढना: VGA connector चाहिए था, लेकिन मिल नहीं रहा था। लंच ब्रेक में टहलते हुए सड़क पर एक VGA केबल मिल गई। कभी-कभी ऐसा हो जाता है.