3 पॉइंट द्वारा GN⁺ 2025-06-28 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Snow Motorola 680x0-आधारित क्लासिक Macintosh को हार्डवेयर के काफ़ी करीब पुनर्निर्मित करता है, ताकि पुराने Mac वातावरण को आधुनिक सिस्टम पर चलाया जा सके
  • ROM patching या system call interception के बजाय इसका लक्ष्य hardware-level emulation है, और यह ग्राफ़िकल UI के साथ debugging सुविधाएँ भी देता है
  • यह Macintosh 128K से लेकर SE/30 तक कई क्लासिक Mac मॉडल सपोर्ट करता है, जिससे शुरुआती Mac श्रृंखला पर व्यापक प्रयोग संभव हैं
  • यह Rust में लिखा गया MIT license open source प्रोजेक्ट है, और सीमित online demo तथा installation docs उपलब्ध हैं
  • stable release GitHub से मिल सकती है, जबकि नवीनतम development build कम परीक्षण के साथ Windows, macOS और Linux के लिए उपलब्ध है

हार्डवेयर के करीब क्लासिक Mac एमुलेशन

  • Snow क्लासिक Motorola 680x0-आधारित Macintosh कंप्यूटरों को emulate करने वाला प्रोजेक्ट है
  • यह emulated मशीनों को चलाने के लिए ग्राफ़िकल यूज़र इंटरफ़ेस और व्यापक debugging सुविधाएँ प्रदान करता है
  • ROM को patch करने या system calls को intercept करने के बजाय, इसका लक्ष्य Macintosh को यथासंभव hardware level पर emulate करना है
  • वर्तमान में समर्थित मॉडल:
    • Macintosh 128K/512K/512Ke
    • Macintosh Plus
    • Macintosh SE, non-FDHD और FDHD
    • Macintosh Classic
    • Macintosh II, non-FDHD और FDHD
    • Macintosh IIx, IIcx, SE/30

उपलब्धता और आज़माने के तरीके

  • इसकी implementation language Rust है, and इसे GitHub पर open source के रूप में प्रकाशित किया गया है
  • लाइसेंस MIT license है
  • एक सीमित online demo उपलब्ध है, लेकिन इसमें पूरे software का UI या अन्य सुविधाएँ नहीं हैं; केवल emulated मशीन का उपयोग किया जा सकता है
  • installation और अतिरिक्त जानकारी online docs में देखी जा सकती है

रिलीज़ और सपोर्ट चैनल

  • stable release निश्चित milestones तक पहुँचने पर पैकेज की जाती है
  • stable release GitHub releases से डाउनलोड की जा सकती है
  • नवीनतम development build (bleeding edge) एमुलेटर के विकास की प्रगति के अनुसार अपने-आप बनाई जाती है; इसमें नई सुविधाएँ हो सकती हैं, लेकिन इसका परीक्षण कम होता है
  • उपलब्ध नवीनतम development build:
    • Windows 10 या बाद का x86 64-bit
    • Windows 10 या बाद का ARM64
    • macOS 11.7 Big Sur या बाद का Universal
    • Linux Ubuntu 24.04 x86 64-bit
    • Linux Ubuntu 24.04 ARM64
  • bug reports और improvement requests GitHub issues पर स्वीकार किए जाते हैं
  • सहायता या बातचीत The Opcode Collective Discord के #snow चैनल में की जा सकती है

1 टिप्पणियां

 
GN⁺ 2025-06-28
Hacker News की रायें
  • क्लासिक Mac के लिए portable और इस्तेमाल में आसान hardware-level emulator क्यों बड़ी बात है, इसकी पृष्ठभूमि समझने के लिए 2020 का लेख https://invisibleup.com/articles/30/ देखें
    game consoles के लिए Nestopia, bsnes, Dolphin, Duckstation जैसे emulators लंबे समय से मौजूद हैं, PC की तरफ VMWare और VirtualBox जैसी virtualization ने ज़्यादातर ज़रूरतें पूरी कर दीं, और हाल में 86Box और MartyPC जैसे high-fidelity emulators भी आए हैं
    C64 के लिए VICE, Amiga के लिए WinUAE, Apple II के लिए भी KEGS और AppleWin जैसे high-quality emulators थे, लेकिन Mac ज़्यादातर Basilisk II जैसे high-level, approximate emulators तक ही सीमित रहा

    • Compatibility दूसरों से काफ़ी कम है, लेकिन Executor भी है: https://en.wikipedia.org/wiki/Executor_(software)
      browser से MS-DOS emulate करवाकर, उसके ऊपर Executor/DOS चलाते हुए Macintosh वाला Solitaire browser में भी चला सकते हैं: https://archive.org/details/executor
      Executor/DOS के अलावा, एक unreleased version Sun 3 workstations पर चलता था, और Executor/NEXTSTEP NeXT machines पर चलता था, जिसमें 680x0-आधारित devices और NEXTSTEP चला सकने वाले x86 PC दोनों supported थे
      Executor ने Apple की intellectual property बिल्कुल इस्तेमाल नहीं की थी, इसलिए इसकी compatibility सबसे कम थी, और ROM व system software replacements Apple ROM या System files को disassemble किए बिना बनाए गए clean-room implementations थे
      Linux port तो है, लेकिन उसे build करना मुश्किल हो सकता है। वजह यह है कि 80386 से maximum performance निकालने के लिए synthetic CPU gcc-specific extensions पर निर्भर था
      Executor के बारे में मुझे काफ़ी पता है, क्योंकि शुरुआती version मैंने लिखा था। हालांकि synthetic 68k emulator या color subsystem जैसे सचमुच impressive हिस्से मुझसे कहीं बेहतर programmers ने बनाए थे
    • वह लेख objectively सही है, लेकिन लोगों ने मुफ़्त में जो कठिन काम किया है उसे इस तरह अजीब ढंग से कमतर दिखाते मैंने पहली बार देखा
    • “user-friendly” कहना शायद मुश्किल हो, लेकिन MAME Macintosh और Apple II को hardware level पर emulate करता है
      यह KEGS या AppleWin से ज्यादा accurate है और ज्यादा peripherals भी संभालता है, लेकिन कम user-friendly है
    • Macintosh II FDHD emulator boot तो कर लिया, लेकिन Snow manual कहता है कि Mac II FDHD emulator दो SuperDrive देता है, फिर भी https://docs.snowemu.com/manual/media/floppies emulator menu में सिर्फ 400K/800K floppies load करने को दिखता है
      शायद इसी वजह से, अब तक डाली गई हर floppy image तुरंत eject हो गई, और Mac II के साथ compatible बताई गई 800K System 7.1.1 disk भी ऐसी ही रही
      Snow की potential बड़ी है और इसमें लगी मेहनत का सम्मान है, लेकिन सच कहूं तो अब तक Mac emulation का landscape पहले से बहुत अलग नहीं लगता। कई emulators emulated hardware और supported features की असमान product matrix देते हैं, बहुत सारी प्रक्रियाएं और पुराने Mac internals की पहले से जानकारी चाहिए होती है, और स्थिति भविष्य के वादे जैसी दिखती है
    • यह नहीं भूलना चाहिए कि MAME भी कुछ हद तक 68k Macintosh support करता है
      https://wiki.mamedev.org/index.php/Driver:Mac_68K
  • Accuracy की वजह से शायद BasiliskII की powerful features इसमें नहीं होंगी। BasiliskII OS/ROM को patch करके ultra-high resolution और host file system व network के साथ लगभग seamless integration जोड़ता है
    अफ़सोस है कि Basilisk, शायद अपनी inaccurate लेकिन powerful features की वजह से, काफ़ी unstable है। जब ठीक से चलता है तो इस्तेमाल करना वाकई बहुत pleasant होता है

    • Accurate emulator और साफ़ codebase patches या shortcuts जोड़ने के लिए अच्छा starting point होते हैं
      मैंने Basilisk का patch code देखा था; वह इतना complex नहीं था, और Basilisk internal code, Executor, MACE आदि में Toolbox के कुछ हिस्सों की कई reimplementations भी हैं
      Port करने में कुछ काम लगेगा, लेकिन कुल मिलाकर यह code की direct translation और test-based additions जैसा होगा
  • ROM कैसे ढूंढ सकते हैं? Google पर मिले sites से कुछ download किए, लेकिन emulator हमेशा “Unknown or unsupported ROM file” कहता है। usable ROM file कहां से मिल सकती है?

  • कॉलेज graduation के तुरंत बाद शुरुआती दौर में किया गया मेरा काफी काम Mac format Bernoulli disks के ढेर में रखा है
    software चलाने के लिए ADB dongle चाहिए, इसलिए actual hardware चाहिए। सोच रहा हूं कि क्या कोई ADB-USB adapter ऐसा होगा जिसे emulator में map किया जा सके

    • जिन ADB-USB adapters को मैं जानता हूं, वे सभी सिर्फ mouse और keyboard support करते हैं, और उनका internal firmware उन्हें USB HID में map करता है
      emulator में raw passthrough के लिए शायद custom firmware लिखना पड़ेगा। शायद software को crack करना ज्यादा आसान हो सकता है
    • अगर आपने अभी तक backup नहीं लिया है, तो वह data शायद पहले ही जा चुका हो
      अगर data valuable है, तो देर होने से पहले check कर लेना बेहतर है
    • जिसके पास working Bernoulli box होगा, उसके पास शायद उसके साथ चलने वाला पुराना Mac भी होने की संभावना ज्यादा है
    • शायद यह काम कर जाए: https://www.bigmessowires.com/usb-wombat/
  • आसानी से उपलब्ध standard Mac OS 7.1 इंस्टॉलेशन डिस्क और Mac Plus ROM से लोड करके देखा, लेकिन Drive 0 से डिस्क eject हो जाती है
    Mini vMac चल रहा है, यह देखकर लगता है कि अभी सुधार की जरूरत है

  • SE, II आदि के लिए HD20 support का “लागू नहीं” दिखना हैरान करने वाला है। मेरी जानकारी में II को छोड़कर सूची के सभी models के ROM में HD20 boot support है
    असली Mac SE पर भी HD20 emulator इस्तेमाल कर रहा हूं
    मनचाहे size की disk image को Mac emulator और वास्तविक floppy emulator, दोनों में ले जाने के सबसे सुविधाजनक तरीकों में से एक है

  • यह Rust में फिर से implement किया गया 68K emulator है, इसलिए इसका C में बने मशहूर CPU cores Musashi या UAE code से कोई shared हिस्सा नहीं है

  • क्या Mac को भी Lisa की तरह hardware की cycle-accurate emulation चाहिए? lisaem इस्तेमाल करके देखा और Qemu पर भी experiment किया, लेकिन Lisa OS hardware timing को लेकर ऐसी assumptions करता है जिन्हें Qemu पूरा नहीं कर पाता

    • शुरुआती Mac में IWM इस्तेमाल हुआ था, जो मूल रूप से Wozniak के 1977 Disk II controller को एक chip में समेटा गया रूप था
      Apple II में इस्तेमाल होने वाली वही cycle-accurate code तकनीक Mac में भी इस्तेमाल हुई थी
      डिस्क पर लिखते समय cursor कभी-कभी रुक जाने की वजह भी यही है। Mac में cursor को भी track करने वाला 60Hz interrupt timer है, लेकिन write operation के दौरान उसे बंद करना पड़ता है
      Folklore.org पर Andy Hertzfeld के लेख में भी इसका संक्षिप्त जिक्र है:

      Woz's disk technology required that the software feed it new data every 32 microseconds exactly. If we were even a single microsecond early or late, it would cause a glitch in the data and ruin it. In order to write the routines, I needed to know how fast the Macintosh executed each instruction. The manual gave the number of clocks for each instruction, but I wasn't sure how long it took to fetch from memory. So of course, I asked Burrell what the timings were, but I was surprised at his response.
      "I don't know. The Mac is synchronous, just like the Apple II, so each instruction has the same timing, every time you execute it, so you will be able to write disk routines that have exact timing. I don't know what it is, so we'll just measure it. Why don't you write your routine and we'll measure it with the logic analyzer."
      -- https://www.folklore.org/Nybbles.html
      इसे देखकर लगता है कि spiral tracks, अलग-अलग size के sectors, और तरह-तरह की nibblization methods जैसी Apple II की अजीब disk techniques भी theoretical तौर पर Mac पर संभव रही होंगी। सोच रहा हूं कि क्या इन्हें सच में copy protection के लिए इस्तेमाल किया गया था

  • सचमुच असली मशीन जैसा feel देता है और काम शानदार है। क्या इसे Atari ST emulation के लिए भी इस्तेमाल किया जा सकता है?

    • Hatari पहले से ही शानदार नहीं है क्या? https://github.com/hatari/hatari
      Clock Signal(CLK) भी है। इसे “Acorn Electron और Archimedes, Amstrad CPC, Apple II/II+/IIe और शुरुआती Macintosh, Atari 2600 और ST, ColecoVision, Enterprise 64/128, Commodore Vic-20 और Amiga, MSX 1/2, Oric 1/Atmos, शुरुआती PC compatibles, Sega Master System, Sinclair ZX80/81 और ZX Spectrum के लिए latency से नफरत करने वाला emulator” बताया गया है: https://github.com/TomHarte/CLK