
في الأيام الأولى لأجهزة الكمبيوتر المنزلية ، كانت هناك شركة تسمى Apple. كانت قد قطعت خطوات هائلة مع مجموعة Apple II من أجهزة الكمبيوتر ، لكنها كانت بحاجة إلى الابتكار للبقاء على قمة سوق الكمبيوتر سريع الخطى. لقد عملت الشركة بالفعل على خط ليزا ، الذي كان مستوحى من أجهزة الكمبيوتر المصغرة وكان مخصصًا لمستخدمي الأعمال ، مما يعني أن سعرها مناسب ، لكن بالنسبة للمستهلك العادي ، فقد بدا باهظًا. كمشروع إضافي ، تم تطوير ماكنتوش ، والذي كان من المفترض أن يكون إدراكًا لفكرة وجود جيل جديد من أجهزة الكمبيوتر لـ "الأشخاص من الشارع" وتكلفته حوالي 500 دولار. تم تنفيذ المشروع بواسطة Steve Jobs ، وتحت قيادته ، أصبح الجهاز أكثر تقدمًا ، وتلقى البرنامج واجهة المستخدم الرسومية بدلاً من واجهة النص ، وارتفع السعر إلى 2500 دولار تقريبًا. على الرغم من أن المعدات التي تم الحصول عليها بهذا السعر كانت مخيبة للآمال بعض الشيء ، على سبيل المثال ، كانت تفتقر إلى مسرعات الرسومات والقدرات الصوتية للآلات الأخرى ، ولكن البرنامج برر السعر. أول ماكنتوش كان Mac 128K ، ودفع نجاحه إلى إنشاء نماذج أكثر تطوراً من هذا Mac الصغير ، ولا سيما Macintosh 512K و Macintosh Plus و Macintosh SE Series.
على الرغم من أن تطوير نظام Macintosh قد حدث في عام 1984 تقريبًا ، وقبل أن أبدأ بفهم أجهزة الكمبيوتر بفترة طويلة ، فقد واجهت بعض الضعف في نظام Macintosh المدمج: كان أول جهاز كمبيوتر اشتراه والداي هو Macintosh Plus. في وقت لاحق تم استكماله مع محرك الأقراص الصلبة 20 ميغابايت SCSI ، وعلى هذا الجهاز كتبت أول برامجي الأساسية. عندما كنت لا أزال أعيش في هولندا ، اشتريت جهاز SE / 30 مكسور وقمت
بتحويله إلى خادم Linux ، والذي كان مع ذلك قادرًا على تشغيل برنامج Mac. ومع ذلك ، تركت هذه السيارة في هولندا ، وهنا ، في شنغهاي ، لم أعد أمتلك أجهزة Apple الكلاسيكية.
على الرغم من أنه من الواضح أنني لم أكن بحاجة إلى Mac Plus في الحياة اليومية بعد الآن ، إلا أنني أحببت فكرة الحصول عليها في حالة حدوث هجمات بالحنين إلى الماضي.
ربما يمكنني الحصول على حصة صغيرة من تجربة Macintosh إذا قمت أنا شخصياً بإنشاء نسخة صغيرة من هذا الجهاز. إذا كان لدي بالفعل بعض الخبرة في
إنشاء إصدارات أصغر من الأجهزة القديمة ، فلماذا لا تحاول تطبيق هذه العملية لإنشاء Mac Plus الموقر؟
عرض
ما الذي يجب استخدامه لبناء مثل هذا الجهاز؟ في البداية ، توصلت إلى فكرة الحصول على Raspberry Pi أو شيء مشابه ، إضافة شاشة LCD بحجم 2.5 بوصة ، ومحاكي مثل PCE أو MiniVMac ، وطباعة الحالة على طابعة ثلاثية الأبعاد والنظر في العمل المنجز. لكنني لا أعتقد أن هذه الفكرة ستؤتي ثمارها: لن يكون الجهاز الذي يناسب ذوقي كبيرًا فحسب ، ولكن المشروع نفسه بسيط جدًا. في Mac 128K الأصلي ، حتى عندما تبين أن النتيجة النهائية منخفضة الطاقة ، تمكن المطورون من القيام ببعض الحيل لتوفير المال. تجميع بسيط من نسخة طبق الأصل من "الحديد" هو عكس روح التصميم الأصلي. لذلك ذهبت إلى تاوباو لمزيد من المكونات الغريبة!

قررت أن أبدأ مع العرض. في الوقت الحالي ، كان لدى Mac شاشة عالية الدقة ، لذلك كان من المهم جدًا اختيار الشاشة المناسبة. عادة ، عندما يتعلق الأمر باختيار العروض في سوق الإلكترونيات الصينية ، تكون التشكيلة كبيرة. لسوء الحظ ، تتكون "المجموعة الكبيرة" إما من شاشات عالية الدقة ، ولكن أيضًا بأحجام كبيرة ، أو شاشات صغيرة ذات دقة صغيرة. من الناحية المثالية ، كنت بحاجة إلى دقة 512 × 342 بكسل ؛ هذا هو القرار الأصلي لنظام التشغيل Mac وعلى شاشة مشابهة يمكنني عرض كل شيء دون التكبير. لسوء الحظ ، لا توجد شاشات جاهزة لمثل هذا القرار في السوق ؛ سيكون أقرب التناظرية شيء من هذا القبيل 640x480. لسبب ما ، شاشات هذا القرار كبيرة جدًا: أصغرها مائل قطره 3.5 بوصة. لذلك ، للأسف ، إذا كنت أرغب في جعل جهاز Mac أصغر حجمًا ممكنًا ، فعندئذٍ يجب أن أذهب لتقليل الدقة.
بعد أن قررت أنه من الممكن تمامًا تقليل الدقة بشكل طفيف ، حصلت على مجموعة متنوعة من مجموعة كبيرة إلى حد ما من شاشات العرض. كانت إحدى شاشات العرض الأولى التي تمت مشاهدتها x163qln01 - شاشة OLED مقاس 1.63 بوصة من إنتاج AUO. إنها مكلفة بعض الشيء (حوالي 25 دولارًا لكل شاشة) ، ولكن يمكن العثور عليها غالبًا على تاوباو ، وتوثق ورقة البيانات على الأقل جهات الاتصال والأحجام ومتطلبات الطاقة. يبدو أن هذه الشاشة قد صممت لنوع من العلامات التجارية للساعات الذكية على نظام Android ، وقليلًا من google ، حتى أنني وجدت بعض تسلسلات البدء التي يمكن استخدامها.
كانت المشكلة الوحيدة (باستثناء الموصل ، التي تقع جهات الاتصال الخاصة بها على مسافة 0.5 مم من بعضها البعض) هي أن الشاشة لا تستخدم واجهة متوازية وليست SPI ، ولكن واجهة MIPI. سأضطر إلى التعامل مع هذا لاحقًا.
بعد تحديد الشاشة ، يمكنك الانتقال إلى المعالج. اخترت وحدة ESP32-Wrover. تحتوي هذه الوحدة على ESP32 (شريحة WiFi مزودة بوحدتي CPU 32 بت تعمل بسرعة 240 ميجاهرتز ونحو نصف ميغابايت من ذاكرة الوصول العشوائي) وذاكرة فلاش 4 ميجابايت و 4 ميجابايت PSRAM. لقد اقترحت أن يكون مركزي وحدة المعالجة المركزية (CPU) هما سريعان بما يكفي لمحاكاة جهاز Mac ، ويمكنني استخدام 4 MiB من PSRAM كجهاز RAM RAM. على الرغم من أن 4 ميغا بايت من ذاكرة الفلاش ليست كبيرة جدًا ، إلا أنها يجب أن تكون كافية لمحاكي القرص الصلب بالإضافة إلى برامج وبرامج النظام. أستفيد أيضًا من حقيقة أنني أعمل في Espressif ، لذا فإن هذه المعدات مألوفة جدًا لي ؛ بالإضافة إلى ذلك ، يمكنني فقط أخذ بعض الوحدات من العمل ، بدلاً من شرائها وانتظار التسليم.
لذا ، أصبح كل شيء جاهزًا للعمل تقريبًا - لا تزال شاشة OLED بحاجة إلى مكونات لتزويد الطاقة ، وبالتالي زاد عدد المكونات من خلال مثبت انخفاض الجهد المنخفض (LDO) ورقائق أخرى لتزويد الطاقة. بالنسبة لنظام التشغيل Mac ، كان الصوت مطلوبًا أيضًا ، لذلك أخذت رقاقة مسرعًا وسماعة رخيصة ، وحصلت على وحدة FT232 القياسية للحصول على الطاقة وتصحيح الأخطاء. كل هذه المكونات صغيرة جدًا وتسمح لي بتقليل جسم الجهاز ؛ يجب أن تكون النتيجة نموذجًا يزيد قليلاً عن 1/6 من جهاز Mac حقيقي.
التحكم في العرض
على الرغم من أنني لا أستطيع الشكوى من دقة الشاشة وحجمها وسطوعها ، فقد أصبح من الصعب عرض وحدات البكسل عليها. لم يكن MIPI مدعومًا من السيليكون ESP32 ، لذلك كنت بحاجة لإيجاد طريقة أخرى للتواصل معه. MIPI DSI هو معيار تم تطويره بواسطة
MIPI Alliance وهو ليس مفتوحًا ؛ نظرًا لأن هذه هواية بالنسبة لي ، فقد اضطررت إلى جمع أجزاء من المعلومات من المستندات المسربة واختبار الأجهزة الموجودة. لحسن الحظ ، قبل عام أو عامين ، قام
Mike Harrison بتصميم واجهة MIPI DSI ذات الهندسة العكسية المستخدمة للتحكم في شاشات iPod (
1 ،
2 ،
3 ،
4 ،
5 ،
موقع الويب ) ، كما عثر على عدة نسخ من المواصفات. لقد سهلت حياتي كثيرًا: على الأقل ، ساعدني في معرفة ما يجب إرساله إلى الشاشة.
على الرغم من أن هناك ما هو أكثر من ذلك بكثير للواجهة (ولمعرفة ذلك ، يجب عليك مشاهدة جميع مقاطع الفيديو التي أعطيتها روابط إلى أعلاه) ، إلا أن طبقة MIPI المادية سهلة التفسير. تستخدم MIPI أربعة أسلاك: ناقلان للبيانات وحافلتان على مدار الساعة. كما أن لديها وضعين لنقل الإشارات: وضع الطاقة المنخفضة (LP) ووضع السرعة العالية (HS).
في وضع الطاقة المنخفضة ، تستخدم الأسلاك بشكل منفصل لنقل هياكل بيانات التحكم ، وكذلك للإشارة إلى أن بعض الأوامر لها تأثير مباشر على جهاز الاستقبال الفعلي من ناحية أخرى. يكون انخفاض الجهد في هذا الوضع كبيرًا مقارنةً بالوضع عالي السرعة: بالنسبة للإشارة العالية ، يبلغ الجهد حوالي 1.2 فولت ، وبالنسبة للإشارة المنخفضة يكون حوالي 0 فولت. نظرًا لأن وضع الطاقة المنخفضة يحتوي على مزيد من حالات الإشارة ، فإنه يؤدي وظائف مثل الإرسال مستلم الطلب للتبديل إلى الوضع عالي السرعة أو الخروج منه. في الرسم البياني أعلاه ، تشير الخطوط الزرقاء إلى نقل البيانات في وضع الطاقة المنخفضة.
في الوضع عالي السرعة ، تعمل حافلتان على مدار الساعة (CLKP / CLKN) ، وكذلك حافلتان للبيانات (DP / DN) كحافلات تفاضلية: ناقل واحد يكون دائمًا معاكسًا للآخر. يكتشف المستقبل الاختلافات بين الحافلتين ، وبناءً عليه ، يحدد القيمة المرسلة: 1 إذا كانت أعلى من DP ، و 0 إذا فوق DN. كما يوحي الاسم ، يوفر وضع High Speed نقل سريع للغاية للبيانات بتردد ساعة يصل إلى 1.5 GHz. لتحقيق ذلك دون الكثير من التداخل الكهرومغناطيسي واستهلاك الطاقة ، يستخدم المعيار الخدعة التالية: يستخدم الفولتية المنخفضة للغاية: يبلغ متوسط الجهد على أزواج 200 mV في المتوسط ، مع انحرافات ± 100 mV لكل حافلة للإشارة إلى الأصفار والأخرى. في الرسم البياني أعلاه ، تنتقل البتات الحمراء في وضع السرعة العالية.
من وجهة نظر نقل البيانات نفسها في وضع السرعة العالية ، يمكن اعتبار الواجهة بشكل أساسي واجهة SPI غريبة بعض الشيء وتفضيلية: فهناك إشارة ساعة وقناة نقل بيانات ، وفي كل دورة ساعة يتم نقل قيمة البيانات إلى الواجهة. الفرق من SPI (باستثناء أن الإشارات مختلفة) هو أن بت البيانات يتم إرسالها فقط عندما تتغير حالة ناقل CLK ، وليس فقط ، على سبيل المثال ، على الحافة الأمامية. الفرق الآخر هو أنه لا يتم التعرف على بداية الإرسال عندما تنخفض الإشارة على ناقل / CS ، ولكن الإشارة داخل النطاق: يبدأ كل نقل بيانات بـ "كلمة سحرية" فريدة من نوعها ، ويحدد المستقبل هذه القيمة لفهمها عند بدء الإرسال.
لضمان تفاعل هذه الواجهة مع ESP32 ، سيتعين علي إجراء تغيير في المستوى. كنت أرغب في تشغيل ESP32 من مصدر 3.0 فولت بحيث يكون لكل GPIOs أيضًا 3.0 أو 0 V. لتكييف هذا مع مستويات إشارة واجهة MIPI ، اخترت الحل الأكثر تكلفة: لقد استخدمت شبكات مقسم المقاوم.
لحساب قيم المقاوم ، قمتُ بإنشاء معادلات لثلاثي مخرجات جهد تهمني (1.1 فولت لإشارة منخفضة الطاقة عالية ، 0.07 فولت لإشارة منخفضة السرعة عالية ، 0.33 فولت للإشارة عالية السرعة ؛ تم اختيار الفولتية على أنها بحيث تظل في معظم الحالات ضمن المواصفات) وحالات الإدخال الثلاثة التي يجب أن تنشئها. حصلت على المعادلات. من الناحية النظرية ، كان من الممكن حلها يدويًا ، لكن في النهاية تخلت عنها في
WolframAlpha وحصلت على قيم المقاوم المطلوبة.
3V
G -R1 - + R3
G -R2 - + - + ---->
R4
GND
R4 * (1.9 / R1 + 1.9 / R3) = 1.1 ،
(1 / (1 / R4 + 1 / R1 + 1 / R2)) * (2.93 / R3) = 0.07 ،
(1 / (1 / R4 + 1 / R1)) * 2.67 * (1 / R3 + 1 / R2) = 0.33 ،
R2 = 1000
R1 = 280 ، R2 = 1K ، R3 = 3K6 ، R4 = 150
في هذه المرحلة ، أدركت أنه يمكنك أيضًا الغش قليلاً: نظرًا لأن الأوتوبيسات عالية السرعة في الوضع التفاضلي ، فإن الشاشة ستبحث فقط في الفرق بين الحافلتين لتحديد البيانات المرسلة. هذا يعني أنه يمكنني حفظ GPIO عن طريق الاحتفاظ بجهد ثابت على إحدى الحافلات وتطبيق إشارة عالية أو منخفضة على الآخر. للقيام بذلك ، كنت بحاجة إلى النوع الثاني من شبكة المقاوم:
3V
R3
G -R1 - + - + ---->
R4
GND
R4 * (1.9 / R1 + 1.9 / R3) = 1.1 ،
(1 / (1 / R4 + 1 / R1)) * (2.8 / R3) = 0.2 ،
R4 = 150
R1 = 320 ، R3 = 1500 ، R4 = 150
وكانت مهمة أخرى لإنشاء دائرة على مدار الساعة. ينقل SPI العادي قليلاً على الحافة الأمامية لحافلة الساعة. (أو عند الحافة الخلفية ، اعتمادًا على التكوين.) يرسل MIPI قليلاً عند الحواف الأمامية والخلفية لإشارة الساعة. على الرغم من أن وحدة SPI الخاصة بجهاز ESP32 لا يمكنها توليد مثل هذه الإشارات في حد ذاتها ، إلا أنه يمكننا تحويل واحدة إلى أخرى باستخدام مشغل D بسيط ، حيث يتم توصيل ناتجه المقلوب بالإدخال. كل نبضة على مدار الساعة عند المدخلات سوف تغير مستوى الانتاج ، كما نطلب.
مخطط الدائرة
بعد تعاملنا مع معدات العرض ، أنهينا الجزء الأكثر صعوبة. الآن كل ما علينا فعله هو إضافة الباقي. لنبدأ بمصدر الطاقة. الأمر بسيط للغاية: أقوم بتغذية دائرة 5 فولت بالكامل من محول USB إلى المسلسل ، والذي يمكن استخدامه أيضًا كواجهة تصحيح / برمجة. يؤخذ هذا الجهد لتوليد +4.6 V ، -3.4 V و 1.8 V المطلوبة من قبل شاشة OLED ، وكذلك 3.0 V لتشغيل ESP32. يتم إنشاء الفولتية +4.6 فولت و -3.4 فولت بواسطة شريحة TPS65631 ، وتظهر الدائرة المرجعية لذلك في ورقة البيانات الخاصة بشاشة OLED. يتم إنشاء الفولتية الأخرى بواسطة زوج من LDOs بسيطة.
وكان ماكنتوش أيضا الصوت. وفقًا للمعايير الحديثة ، فإن جودتها ليست عالية جدًا (22 كيلو هرتز ، 8 بت) ، لكن أصوات برامجها أصبحت الآن أسطورية ، لذلك في مشروعي لم أستطع رفضها. يحتوي ESP32 على DAC مضمن 8 بت ، والذي يستخدم لإنشاء موجات صوت تمثيلية تم إنشاؤها بواسطة المحاكي. بعد ذلك يتم إطعامهم إلى NS8002 ، وهو مضخم صوت فئة AB بقدرة 2 وات مركب بتنسيق SOIC8 الصغير. إنه رخيص ، ويتطلب القليل من المكونات الداعمة ، ويخلق أكثر من صوت كافٍ لجذب الانتباه إلى جهاز Mac الصغير.

أحد الجوانب التي جعلت ماكنتوش ثوريًا للغاية هو أنه كان من أوائل أجهزة الكمبيوتر التجارية التي تستخدم الماوس. لقد فكر فريق Macintosh في الماوس بعناية فائقة بحيث يعتمد نظام التشغيل بالكامل تقريبًا على عناصر واجهة المستخدم التي يتم التحكم فيها بالماوس ، وعلى عكس كمبيوتر IBM ، على سبيل المثال ، يمكن التحكم في Macintosh بالكامل عن طريق الماوس. من الواضح أن جهاز Mac الصغير الخاص بي يحتاج أيضًا إلى هذا الجهاز الهام الهام. ما زلت أتذكر الفئران الكروية التي تم بيعها باستخدام أول ماكنتوش ، لكنني لم أكن راضيًا عن الحاجة إلى تنظيف البكرات كثيرًا من الأوساخ ؛ ولهذا السبب تم استبدال هذه الأجهزة الميكانيكية بالكامل بالفئران الضوئية. تتمثل ميزة ذلك في أن تفاصيل هذه الفئران الضوئية الجديدة سهلة للغاية: على سبيل المثال ، لم يستغرق الأمر وقتًا طويلاً للعثور على بائع أجهزة استشعار ماوس الألعاب ADNS9500 والبصريات المقابلة.
جانب آخر مناسب هو أن مستشعر الفأرة الضوئية هو جهاز متكامل تمامًا: فهو لا يتطلب سوى بعض المكونات الخارجية للعمل ، وهذا ينعكس في الرسم التخطيطي. إضافة العديد من المكثفات لتحقيق الاستقرار في الجهد ، الترانزستور MOS (نسخ مباشرة من ورقة البيانات) لتشغيل الصمام الثنائي ليزر وغيرها من التفاصيل القياسية. ينقل مستشعر الماوس البيانات عبر إشارة SPI بأربعة أسلاك ، واستخدمت أحد هذه الأسلاك لإرسال إشارة زر الماوس: عندما أنقر فوق الزر ، يتم سحب جهة اتصال MISO إلى أسفل قليلاً. لا تكفي قيمة مقاوم السحب هذا حتى يتوقف الماوس عن إرسال البيانات ، ولكنه كافٍ للتغلب على المقاوم القابل للسحب ، والذي يسحب الناقل لأعلى عادةً ، لذلك عندما ينشئ المستشعر ثلاث حالات في ناقل MISO ، يمكن أن يتعرف ESP32 على الضغط على الزر.

أخيرًا ، تحتاج إلى توصيل شاشة OLED. لقد أكملنا بالفعل جميع الأعمال الصعبة المتمثلة في حساب قيم جميع المقاومات ، لذلك يجب أن تتحدث الدائرة بشكل أو بآخر عن نفسها. الرقاقة المضافة عبارة عن D-flip-flop ، وهي تستخدم لخفض تردد الساعة إلى النصف: كما ذكر أعلاه ، يتطلب معيار MIPI بعض الشيء في كل مرة يتم فيها عكس قطبية الساعة ، بينما يرسل ESP32 بت جديد فقط في المقدمة أو الخلف الجبهة.
بعد أن رسمت رسم تخطيطي ، ذهبت لإنشاء تصميم لوحات الدارات الكهربائية. كانت الشاشة التي حددتها مثبتة على اللوحة التي تتحكم فيها ، ويجب أن يكون الموصل في الجزء الخلفي من لوحة الدوائر هذه. على الرغم من أن هذا لن يترك مساحة كبيرة للمكونات الأخرى ، ما زلت أرغب في وضع جميع المكونات الأخرى على الجانب الآخر.
من الجيد أن يكون لدي رؤية جيدة ومسدس هواء ساخن: هذا سمح لي باستخدام مكونات 0603 ووضع كل شيء على مساحة اللوحة المحدودة. سيكون من الصعب بشكل خاص توصيل موصل الشاشة وشريحة الطاقة OLED QFN بحديد لحام تقليدي.
أدركت أن مستشعر الماوس ومكوناته سيشغلون مساحة كبيرة على اللوحة ، لذلك قررت أن أحم جميع المكونات إلى المستشعر نفسه. بفضل هذا ، يمكن وضع كل شيء في الماوس.
البرمجيات
من الواضح أن البرنامج عنصر مهم إلى حد ما في هذا التجميع: يجب عليك محاكاة Macintosh بالكامل. ومع ذلك ، فإن جهاز Macintosh ليس جهازًا معقدًا. في الواقع ، يتكون من 68000 متحكم ، وحدة تحكم نقل تسلسلي Zilog Z8530 تتحكم في المنفذ التسلسلي ، 6522 VIA للإدخال / الإخراج الداخلي ولتوفير واجهة مع لوحة مفاتيح ، بالإضافة إلى العديد من صفائف منطق قابلة للبرمجة (PAL) تحتوي على منطق للعرض والصوت. كما أن لديها رقاقة Woz Machine المتكاملة التي توفر واجهة مع محرك الأقراص المرنة. هذه هي شريحة معقدة جدا. ومع ذلك ، لا أخطط لمحاكاة قرص مرن ، لذلك ستكون كافية لمضاهاة IWM ، ويعود باستمرار أنه لا يوجد قرص في محرك الأقراص. بدلاً من ذلك ، أخطط لمحاكاة شريحة NSI 5380 SCSI بالكامل ، المتصلة بمحرك أقراص ثابت SCSI مضاهاة ، والذي سيتم قراءته من ذاكرة فلاش ESP32-Wrover المضمنة.
علاوة على ذلك ، سيكون لدى النظام عدد قليل جدًا من البرامج التي تتمتع بوصول مباشر إلى المعدات: تم إخبار مبرمجي Mac من البداية باستخدام طبقات تجريد الأجهزة على مستوى نظام التشغيل للحفاظ على التوافق مع الإصدارات المستقبلية من معدات Mac. بشكل عام ، هذا يعني أنه إذا تمكنت من محاكاة الأجهزة إلى الحد الذي يجعل نظام التشغيل يرتاح ويسعد بكل شيء ، فستعمل معظم البرامج دون أي مشاكل.
لذلك قررت أنه يمكنك محاولة كتابة محاكي من الصفر. بتعبير أدق ، ليس تمامًا من نقطة الصفر ؛ 68000 هو وحش معقد إلى حد ما ولم أرغب في إعادة اختراع العجلة. بدلاً من ذلك ، قمت بالبحث على الإنترنت ووجدت أن
MAME لديه محاكي 68K مريح وسريع يستند إلى CK يسمى Musashi الذي يناسب احتياجاتي بشكل مثالي.
سيكون من الضروري استحضار بعض الشيء لنقل أكواد الشفرة بدلاً من ذاكرة الوصول العشوائي إلى ذاكرة الفلاش ، ولكن بالنسبة للباقي ، لا يلزم تقريبًا أي شيء لتوصيله إلى ESP32.ومع ذلك ، لم أخطط لتطوير المشروع بالكامل على ESP32: نظرًا لأن الشريحة تدعم دعم OpenOCD ، والذي يوفر إمكانات تصحيح عريضة إلى حد ما ، ستكون دورة "التحميل - الذي تم تنزيله ثابتًا" رتيبة للغاية. لذلك ، قررت أولاً تطوير كل شيء على جهاز Linux الخاص بي ، دون أن ننسى قيود ESP32. لذلك بدأت استخدام ورقة البيانات لشرائح مختلفة ، معلومات Linux-68K للجهاز ، بالإضافة إلى معلومات من سلسلة Inside Macintosh التي يمكن العثور عليها على الإنترنت. عندما لم أستطع معرفة ما يجب القيام به بعد ذلك ، كان بإمكاني البحث تحت غطاء برامج محاكاة أخرى مفتوحة المصدر .مسلحًا بكل هذا ، باختيار gcc كمترجم و libsdl كمكتبة للعمل مع الرسومات ، وصلت إلى العمل. باختصار ، ثم بعد فترة ، سأحصل على محاكي MacPlus بسيط ، لكنه يعمل بشكل عام: الماوس والفيديو والقرص الصلب SCSI والعمل الصوتي:نظرًا لأن أجهزتي لم تكن جاهزة بعد ، فقد قررت نقل محاكي إلى لوحة ESP-Wrover-Kit. لا يزال لدي العديد من هذه اللوحات في متناول اليد ، بالإضافة إلى وحدة Wrover ، التي سأستخدمها على أي حال ، لديهم شاشة عرض 320 × 240 يمكن استخدامها لاختبار الفيديو.بعد الإعداد ، حقق محاكي Mac أموالًا جيدة في هذا المنتدى. في الواقع ، عادة ما يكون قريبًا جدًا من MHz 7.8 الذي يعمل عليه Mac Plus. (سيكون 7.8 ميجا هرتز أسرع قليلاً من Mac Plus ؛ حيث أنه في هذا الجزء من الماكينة من دورات الذاكرة يستهلك المخزن المؤقت للإطار ونظام الصوت ، يمكن تقليل التردد بنسبة 35٪.) منالواضح أن المحاكي على devboard يمثل خطوة جيدة للأمام ، ولكن في النهاية ، يجب أن يعمل كل شيء على الشاشة التي اشتريتها ، وليس على شاشة devboard. وهناك شيء آخر: شاشة devkit تحتوي على شاشة 320 × 240 وتقطع الجزء الصلب من شاشة Mac. يبلغ حجم الشاشة التي سأستخدمها 320 × 320 ، وبالتالي فهي أكبر حجمًا رأسيًا فقط: كيف يمكنني إدارة عرض شاشة 512 × 342 على جهاز Mac؟هناك طريقة واحدة فقط لوضع 512 × 342 بكسل على شاشة 320 × 320 ، وهذا هو التحجيم. في الواقع ، نلتقط صورة ونضغطها ونصغرها ثم نعرضها. ومع ذلك ، يمكن إجراء التحجيم بعدة طرق مختلفة ، وبالنظر إلى أن الصورة بالأبيض والأسود التي تم إنشاؤها بواسطة نظام التشغيل تفترض أن كل بكسل ينشئ نقطة ضوء محددة بوضوح على الشاشة ، أي أن هناك العديد من الطرق لتدمير كل شيء. أحتاج أن أخسر أقل عدد ممكن من البكسل. وهذا هو ، تحتاج إلى زيادة دقة شاشة OLED.ولكن كيف نفعل ذلك؟
من غير المحتمل أن تتمكن من فتح شاشة OLED ووضع عدد قليل من وحدات البكسل في الداخل. ومع ذلك ، هذا ليس ضروريا ؛ دقة شاشة OLED هي بالفعل ثلاث مرات المذكورة. السبب هو أن هذه الشاشة ملونة: كل "بكسل" افتراضي يحتوي على وحدات بكسل فرعية حمراء وخضراء وزرقاء. علاوة على ذلك ، في هذه الشاشة بالذات ، تصطف البكسلات الفرعية بمثلث. فيما يلي لقطة شاشة عن قرب مع تشغيل ثلاث وحدات بكسل:كما ترون ، البيكسلات عبارة عن مجموعات ثلاثية من البكسلات الفرعية ؛ اعتمادًا على العمود ، تشير المثلثات إلى أسفل أو لأعلى. وهذا يعني في جوهره أن دقة الشاشة الفرعية للبكسل هي 480 × 640 بكسل. على الرغم من أن هذا لا يزال غير كافٍ تمامًا لعرض 512 × 342 بكسل ، إلا أن الفارق ضئيل للغاية بحيث أنه مع الاختيار الصحيح للقياس الصغير ، ستكون الشاشة قابلة للقراءة قدر الإمكان لشاشة بحجم 1.63 بوصة تعرض واجهة المستخدم الرسومية المصممة لشاشة بحجم 9 بوصات:إسكان
لدي الآن شاشة وبرامج تحاكي نظام Macintosh Plus بشكل جيد ، بالإضافة إلى متحكم يمكن تشغيله عليه. ما هو مفقود؟ من الواضح ، مرفقات لهذا كله!قررت طباعته على طابعة Formlabs 1+ SLA 3D من عملي. للقيام بذلك ، أحتاج أولاً إلى نموذج. أردت إنشائه من الصفر. من الواضح أنه من الأفضل امتلاك Macintosh Plus حقيقي. في الحقيقة ، لديّ ، لكننا مفصولة بنصف قارة ... لحسن الحظ ، تمكنت من إيجاد حل جيد على قدم المساواة تقريبًا: أشار شخص لطيف إلى أبعاد جهاز Mac 128K الأصلي (الذي يكون جسمه مماثل لجسم Plus) في wiki iFixit .ما زلت أقوم بإنشاء جميع النماذج ثلاثية الأبعاد الخاصة بي في OpenScad ، وبعد تعذبي وشتم ، تمكنت من جعل كل المنحنيات تبدو كما ينبغي. حصلت على نموذج Mac جميل على مقياس 1: 6.لقد قمت أيضًا بإنشاء الماوس من الصور باستخدام iFixit ، ولكن نظرًا لأن جهاز استشعار كبير بما فيه الكفاية من الماوس البصري يجب أن يتناسب معه ، فلا يمكن تحجيمه إلى 1/6 من الماوس الحقيقي. المقياس أقرب إلى 2/5 ، لذلك يبدو الماوس كبيرًا مقارنةً بماك Mac الصغير ، ولكنه أكثر ملاءمة للأصابع البشرية غير المقاسة.لذلك كل ما تبقى هو طباعة النماذج. قمت بتصدير البنية إلى ملفات STL المختلفة وطباعتها على Formlabs 1+. وكانت النتيجة النهائية جيدة بما فيه الكفاية. يؤسفني فقط أنني لم أضيف المزالج لكلا الجزأين من التصميم. تم حل هذه المشكلة مع انخفاض superglue.يؤدي
لذلك ، كان لدي جميع المكونات ويمكن أن تجميعها فقط. يتم تثبيت موصلات PCB الموجودة في الجزء الأمامي من الهيكل بعدة مقاطع. يتم توصيل المحول من USB إلى المسلسل ، الذي يستخدم كآلية تمهيد وإمداد بالطاقة ، بالجزء الخلفي كما أنه مثبت على عدة محطات. لقد نسيت أن أفعل شيئًا للتركيب داخل السماعة ، لكنني تمكنت من إصلاحها في حالة الغراء الفائق. يتم توصيل الماوس بواسطة مجموعة من الأسلاك الرفيعة. (نعم ، فهي غير متوافقة إلى حد ما مع نظام الألوان ... بمجرد العثور على كابل متعدد النواة أكثر جمالا ، سأصلحه.)عندما تقوم بتطوير كل شيء على جهاز كمبيوتر ، فإنك تدرك الحجم الحقيقي للمنتج فقط عندما يتحقق المشروع بالكامل ، على سبيل المثال ، عندما تتلقى لوحات الدوائر المطبوعة من المصنع أو بعد الطباعة على طابعة ثلاثية الأبعاد لتصميم الحالة التي كنت تعمل عليها منذ أسابيع. بالطبع ، كنت أعرف أن كل شيء سيكون أصغر بست مرات من جهاز Mac الأصلي ، ولكن فقط بعد تجميع كل شيء مع رؤية السيارة على الهواء مباشرة ، أدركت معنى ذلك. تحولت ماك حقا أن تكون صغيرة!وعلى الرغم من صغر حجم لوحة المفاتيح وعدم وجودها ، إلا أنها قادرة على تشغيل معظم البرامج التي يشتهر بها جهاز Mac. هنا هو تجريبي. أول 20 ثانية ، يتم إجراء فحص للذاكرة ، وأنا أعلم من التجربة أن هذا الفحص الطويل ليس خطأ: لقد استغرق تحميل Mac Plus الأصلي نفس الوقت ، حتى بعد الترقية.إذن ما الجيد في جهاز Mac Plus؟ على الرغم من أنني استمتعت بإنشائه ، إلا أنني يجب أن أعترف أنه بدون لوحة مفاتيح لا يمكن استخدامه إلى أقصى إمكاناته. بالإضافة إلى ذلك ، ليس لديه وسائل الاتصال: لقد خططت لتطبيق AppleTalk عبر WiFi ، لكنني لم أفلح بسبب الشذوذ الذي لم أستطع محاكاته في شريحة جهاز التحكم في ناقل تسلسلي Mac الأصلي نفسه. ومع ذلك ، بعد الانتهاء من المشروع في هذه الحالة ، يمكنني أخيرًا تحقيق حلمي القديم ووضعه على طاولة Mac مع المحامص من شاشة التوقف بعد حلول الظلام التي تطير حول الشاشة:كالمعتاد ، هذا المشروع مفتوح المصدر ، يتم نشر تصميم لوحة الدائرة وحالة ، وكذلك البرامج الثابتة ، على جيثب . تم ترخيص كل شيء بموجب ترخيص Beer-Ware ، بحيث يمكنك القيام بأي شيء تقريبًا تريده. إذا كنت تستخدم شيئًا ما في مشاريعك ، فيمكنك الكتابة عنه.