Miniatur-Macintosh Plus

Bild

In den frühen Tagen der Heimcomputer gab es eine Firma namens Apple. Sie hatte gerade große Fortschritte mit der Apple II-Computerreihe gemacht, aber sie brauchte Innovationen, um auf dem schnelllebigen Computermarkt die Nase vorn zu haben. Das Unternehmen hat bereits an der Lisa-Linie gearbeitet, die von Mini-Computern inspiriert war und für Geschäftsanwender gedacht war, was bedeutet, dass sie einen angemessenen Preis hatte, aber für den Durchschnittsverbraucher schien sie zu teuer. Als zusätzliches Projekt wurde der Macintosh entwickelt, der die Idee einer neuen Generation von Computern für „Menschen von der Straße“ verwirklichen sollte und etwa 500 US-Dollar kostete. Das Projekt wurde von Steve Jobs übernommen, und unter seiner Führung wurde die Hardware weiterentwickelt, die Software erhielt eine grafische Benutzeroberfläche anstelle einer Textschnittstelle und der Preis stieg auf fast 2.500 US-Dollar. Obwohl die zu diesem Preis erhaltene Ausrüstung zum Beispiel etwas enttäuschend war, fehlten die Grafikbeschleuniger und Klangfähigkeiten anderer Maschinen, aber die Software rechtfertigte den Preis. Der erste Macintosh war der Mac 128K, und sein Erfolg führte zur Entwicklung fortschrittlicherer Modelle dieses kompakten Mac, insbesondere der Macintosh 512K-, Macintosh Plus- und Macintosh SE-Serie.

Obwohl die Entwicklung des Macintosh um 1984 stattfand, lange bevor ich anfing, Computer zu verstehen, hatte ich einige Schwächen für den kompakten Macintosh: Der erste Computer, den meine Eltern kauften, war der Macintosh Plus. Später wurde es mit einer 20 MB SCSI-Festplatte ergänzt, und auf diesem Computer schrieb ich meine ersten Basisprogramme. Als ich noch in den Niederlanden lebte, kaufte ich eine kaputte SE / 30-Maschine und verwandelte sie in einen Linux-Server, auf dem dennoch Mac-Software ausgeführt werden konnte. Ich habe dieses Auto jedoch in den Niederlanden gelassen und hier in Shanghai habe ich nicht mehr die klassische Apple-Hardware.

Obwohl es offensichtlich ist, dass ich Mac Plus im Alltag nicht mehr brauche, gefiel mir die Idee, es bei Nostalgie-Angriffen zur Hand zu haben. Vielleicht kann ich einen kleinen Teil der Macintosh-Erfahrung machen, wenn ich selbst eine kleine Kopie einer solchen Maschine erstelle. Wenn ich bereits Erfahrung mit der Erstellung kleinerer Versionen alter Hardware habe , können Sie diesen Prozess anwenden, um den ehrwürdigen Mac Plus zu erstellen.

Anzeige


Was soll ich verwenden, um eine solche Maschine zu bauen? Zuerst kam mir die Idee, einen Raspberry Pi oder ähnliches zu nehmen, einen 2,5-Zoll-LCD-Bildschirm, einen Emulator wie PCE oder MiniVMac hinzuzufügen, eine Hülle auf einem 3D-Drucker zu drucken und die geleistete Arbeit zu prüfen. Aber ich glaube nicht, dass sich diese Idee auszahlt: Die Maschine für meinen Geschmack wird nicht nur zu groß sein, sondern das Projekt selbst ist zu einfach. Im ursprünglichen Mac 128K gelang es den Entwicklern, einige Tricks auszuführen, um Geld zu sparen, selbst wenn sich herausstellte, dass das Endergebnis zu stromsparend war. Die einfache Montage einer Nachbildung von Standard-Eisen widerspricht dem Geist des ursprünglichen Designs. Also ging ich nach Taobao für exotischere Zutaten!


Ich beschloss, mit dem Display zu beginnen. Für seine Zeit hatte der Mac einen hochauflösenden Bildschirm, daher war es sehr wichtig, das richtige Display auszuwählen. Wenn es um die Auswahl von Displays auf dem chinesischen Elektronikmarkt geht, ist das Sortiment normalerweise groß. Leider besteht das "große Sortiment" entweder aus hochauflösenden, aber auch großen Bildschirmen oder kleinen Bildschirmen mit kleiner Auflösung. Idealerweise benötigte ich eine Auflösung von 512 x 342 Pixel; Dies ist die native Auflösung des Mac und auf einem ähnlichen Display kann ich alles anzeigen, ohne zu zoomen. Leider gibt es auf dem Markt keine vorgefertigten Bildschirme mit einer solchen Auflösung. Das nächstgelegene Analogon ist etwa 640 x 480. Aus irgendeinem Grund sind Bildschirme dieser Auflösung ziemlich groß: Der kleinste hat eine Diagonale von 3,5 Zoll. Wenn ich den Mac so klein wie möglich machen möchte, muss ich leider die Auflösung reduzieren.

Nachdem ich entschieden hatte, dass es durchaus möglich ist, die Auflösung leicht zu reduzieren, erhielt ich eine Auswahl ziemlich großer Displays. Eines der ersten Displays war x163qln01 - ein 1,63-Zoll-OLED-Bildschirm von AUO. Es ist etwas teuer (ca. 25 US-Dollar pro Bildschirm), aber es ist häufig auf Taobao zu finden, und das Datenblatt dokumentiert zumindest die Kontakte, Größen und Leistungsanforderungen. Es scheint, dass dieses Display für eine Art Smart-Watch-Marke auf Android entwickelt wurde, und ein wenig google, ich habe sogar einige Initiationssequenzen gefunden, die verwendet werden können.

Das einzige Problem (mit Ausnahme des Steckers, dessen Kontakte sich in einem Abstand von 0,5 mm voneinander befinden) war, dass das Display keine parallele Schnittstelle und kein SPI, sondern die MIPI-Schnittstelle verwendet. Ich werde mich später darum kümmern müssen.

Nachdem Sie die Anzeige ausgewählt haben, können Sie zum Prozessor gehen. Ich habe mich für das ESP32-Wrover-Modul entschieden. Dieses Modul enthält einen ESP32 (einen WiFi-Chip mit zwei 32-Bit-CPUs, die mit 240 MHz und ungefähr einem halben Megabyte RAM arbeiten), 4 MiB Flash-Speicher und 4 MiB PSRAM. Ich schlug vor, dass die beiden CPU-Kerne schnell genug sind, um einen Mac zu emulieren, und dass ich 4 MiB PSRAM als Mac-RAM verwenden könnte. Obwohl 4 MB Flash-Speicher nicht sehr viel sind, sollten sie für den Emulator und eine kleine Festplatte mit Systemsoftware und -programmen ausreichen. Ich profitiere auch von der Tatsache, dass ich bei Espressif arbeite, daher ist mir diese Ausrüstung recht vertraut. Außerdem kann ich nur ein paar Module von der Arbeit nehmen, anstatt sie zu kaufen und auf die Lieferung zu warten.

Damit ist fast alles einsatzbereit - der OLED-Bildschirm benötigte noch Komponenten für die Stromversorgung, sodass die Anzahl der Komponenten durch einen Niederspannungsabfallstabilisator (LDO) und andere Stromversorgungschips erhöht wurde. Für den Mac war auch Sound erforderlich, also nahm ich einen billigen Beschleunigerchip und Lautsprecher und bekam das Standard-FT232-Modul für Stromversorgung und Debugging. Alle diese Komponenten sind recht klein und ermöglichen es mir, den Körper des Geräts zu verkleinern. Das Ergebnis sollte ein Modell sein, das etwas mehr als 1/6 eines echten Mac enthält.

Anzeigesteuerung


Obwohl ich mich nicht über die Auflösung, Größe und Helligkeit des Displays beschweren kann, stellte sich heraus, dass es schwieriger war, Pixel darauf anzuzeigen. MIPI wurde von ESP32-Silizium nicht unterstützt, daher musste ich einen anderen Weg finden, um mit ihm zu kommunizieren. MIPI DSI ist ein von der MIPI Alliance entwickelter Standard und nicht offen. Da dies für mich ein Hobby ist, musste ich Informationen aus durchgesickerten Dokumenten sammeln und vorhandene Geräte testen. Glücklicherweise hat Mike Harrison vor ein oder zwei Jahren die MIPI-DSI-Schnittstelle zur Steuerung der iPod-Displays ( 1 , 2 , 3 , 4 , 5 , Website ) rückentwickelt und auch mehrere Kopien der Spezifikationen gefunden. Es hat mein Leben viel einfacher gemacht: Zumindest hilft es mir herauszufinden, was ich an das Display senden soll.

Obwohl die Benutzeroberfläche viel mehr enthält (und um dies herauszufinden, sollten Sie sich alle Videos ansehen, auf die ich oben verwiesen habe), ist die physische MIPI-Schicht recht einfach zu erklären. MIPI verwendet vier Drähte: zwei Datenbusse und zwei Taktbusse. Es gibt auch zwei Signalübertragungsmodi: Low Power (LP) -Modus und High Speed ​​(HS) -Modus.


Im Energiesparmodus werden Drähte separat verwendet, um Steuerdatenstrukturen zu übertragen und um anzuzeigen, dass bestimmte Befehle eine direkte Auswirkung auf den physischen Empfänger haben. Der Spannungsabfall in diesem Modus ist im Vergleich zum Hochgeschwindigkeitsmodus ziemlich groß: Für ein hohes Signal beträgt die Spannung ungefähr 1,2 V und für ein niedriges Signal ungefähr 0 V. Da der Niedrigleistungsmodus mehr Signalzustände aufweist, führt er Funktionen wie das Senden aus der Empfänger des Auftrags, in den Hochgeschwindigkeitsmodus zu wechseln oder diesen zu verlassen. In der obigen Grafik zeigen die blauen Linien die Datenübertragung im Energiesparmodus an.

Im Hochgeschwindigkeitsmodus arbeiten zwei Taktbusse (CLKP / CLKN) sowie zwei Datenbusse (DP / DN) als Differenzbusse: Ein Bus ist immer dem anderen gegenüber. Der Empfänger erkennt die Unterschiede zwischen den beiden Bussen und stellt auf dieser Grundlage den übertragenen Wert ein: 1, wenn über DP, und 0, wenn über DN. Wie der Name schon sagt, bietet der Hochgeschwindigkeitsmodus eine sehr schnelle Datenübertragung mit einer Taktfrequenz von bis zu 1,5 GHz. Um dies ohne zu viele elektromagnetische Störungen und Stromverbrauch zu erreichen, verwendet der Standard den folgenden Trick: Er verwendet sehr niedrige Spannungen: Die Spannung an den Paaren beträgt durchschnittlich 200 mV, mit Abweichungen von ± 100 mV pro Bus, um Nullen und Einsen anzuzeigen. In der obigen Grafik werden die roten Bits im Hochgeschwindigkeitsmodus übertragen.

Unter dem Gesichtspunkt der Übertragung der Daten selbst im Hochgeschwindigkeitsmodus kann die Schnittstelle im Wesentlichen als eine ziemlich seltsame und differenzielle SPI-Schnittstelle angesehen werden: Es gibt ein Taktsignal und einen Datenübertragungskanal, und bei jedem Taktzyklus wird der Datenwert an die Schnittstelle übertragen. Der Unterschied zu SPI (außer dass die Signale differentiell sind) besteht darin, dass das Datenbit nur übertragen wird, wenn sich der Zustand der CLK-Busse ändert, und nicht nur beispielsweise an der Vorderflanke. Ein weiterer Unterschied besteht darin, dass der Start einer Übertragung nicht erkannt wird, wenn das Signal auf dem / CS-Bus niedrig wird, sondern ein In-Band-Signal: Jede Datenübertragung beginnt mit einem eindeutigen „Zauberwort“, und der Empfänger bestimmt diesen Wert, um zu verstehen, wann die Übertragung beginnt.

Um sicherzustellen, dass diese Schnittstelle mit ESP32 interagiert, muss ich eine Pegelverschiebung durchführen. Ich wollte den ESP32 von einer 3,0-V-Quelle mit Strom versorgen, damit alle GPIOs auch 3,0 oder 0 V hatten. Um dies an die Signalpegel der MIPI-Schnittstelle anzupassen, entschied ich mich für die kostengünstigste Lösung: Ich habe nur Widerstandsteilernetzwerke verwendet.

Um die Widerstandswerte zu berechnen, habe ich Gleichungen für die drei für mich interessanten Ausgangsspannungszustände erstellt (1,1 V für ein Signal mit hoher niedriger Leistung, 0,07 V für ein Signal mit niedriger Geschwindigkeit, 0,33 V für ein Signal mit hoher Geschwindigkeit; die Spannungen wurden wie folgt gewählt so dass sie in den meisten Fällen innerhalb der Spezifikation bleiben) und der drei Eingangszustände, die sie erzeugen sollen. Ich habe die Gleichungen. Theoretisch war es möglich, sie manuell zu lösen, aber am Ende habe ich sie in WolframAlpha aufgegeben und die erforderlichen Widerstandswerte erhalten.

            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 


Zu diesem Zeitpunkt wurde mir klar, dass Sie auch ein wenig schummeln können: Da die Busse im Hochgeschwindigkeitsmodus unterschiedlich sind, zeigt das Display nur den Unterschied zwischen den beiden Bussen an, um die übertragenen Daten zu ermitteln. Dies bedeutet, dass ich GPIO sparen kann, indem ich eine feste Spannung an einem der Busse halte und ein hohes oder niedriges Signal an den anderen anlege. Dazu brauchte ich eine zweite Art von Widerstandsnetzwerk:

            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 


Eine weitere Aufgabe bestand darin, eine Taktschaltung zu erstellen. Normales SPI überträgt etwas an der Vorderflanke des Taktbusses. (Oder an der Hinterflanke, abhängig von der Konfiguration.) MIPI überträgt ein bisschen sowohl an der Vorder- als auch an der Hinterflanke des Taktsignals. Obwohl das SPI-Modul des ESP32-Geräts solche Signale nicht selbst erzeugen kann, können wir sie mithilfe eines einfachen D-Triggers ineinander umwandeln, dessen invertierter Ausgang mit dem Eingang verbunden ist. Jeder Takt am Eingang ändert den Ausgangspegel nach Bedarf.

Schaltplan


Nachdem wir uns mit der Anzeigeausrüstung befasst hatten, beendeten wir den schwierigsten Teil. Jetzt müssen wir nur noch den Rest hinzufügen. Beginnen wir mit der Stromquelle. Es ist ganz einfach: Ich speise den gesamten 5-V-Stromkreis von einem USB-zu-Seriell-Wandler, der auch als Debugging- / Programmierschnittstelle verwendet werden kann. Diese Spannung wird verwendet, um die vom OLED-Bildschirm benötigten +4,6 V, -3,4 V und 1,8 V sowie 3,0 V für die Stromversorgung des ESP32 zu erzeugen. Vom TPS65631-Chip werden Spannungen von +4,6 V und -3,4 V erzeugt, und die Referenzschaltung hierfür ist im Datenblatt des OLED-Displays angegeben. Andere Spannungen werden von einem Paar einfacher LDOs erzeugt.


Der Macintosh hatte auch Ton. Für moderne Verhältnisse ist seine Qualität nicht sehr hoch (22 kHz, 8 Bit), aber die Klänge seiner Programme sind jetzt legendär, so dass ich sie in meinem Projekt nicht ablehnen konnte. ESP32 verfügt über einen integrierten 8-Bit-DAC, mit dem vom Emulator erzeugte analoge Schallwellen erzeugt werden. Dann werden sie dem NS8002 zugeführt, einem 2-Watt-Schallverstärker der AB-Klasse, der im kleinen SOIC8-Format montiert ist. Es ist billig, benötigt nur sehr wenige unterstützende Komponenten und erzeugt mehr als genug Sound, um die Aufmerksamkeit auf den winzigen Mac zu lenken.


Einer der Aspekte, die den Macintosh so revolutionär machten, war, dass er einer der ersten kommerziellen Computer mit einer Maus war. Das Macintosh-Team hat die Maus so sorgfältig durchdacht, dass fast das gesamte Betriebssystem auf mausgesteuerten UI-Elementen basiert und im Gegensatz zum IBM PC der gesamte Macintosh mit einer Maus gesteuert werden kann. Natürlich brauchte mein kleiner Mac auch dieses wichtige Peripheriegerät. Ich erinnere mich noch an die Ballmäuse, die mit dem ersten Macintosh verkauft wurden, aber ich war nicht sehr zufrieden mit der Notwendigkeit, die Walzen zu oft von Schmutz zu reinigen. Aus diesem Grund wurden diese mechanischen Geräte vollständig durch optische Mäuse ersetzt. Dies hat den Vorteil, dass die Details für diese neuen optischen Mäuse recht einfach zu finden sind: Ich habe beispielsweise nicht lange gebraucht, um den Verkäufer von ADNS9500-Gaming-Maussensoren und der entsprechenden Optik zu finden.

Ein weiterer praktischer Aspekt ist, dass der optische Maussensor ein ziemlich tief integriertes Gerät ist: Für die Arbeit sind nur wenige externe Komponenten erforderlich, was sich im Diagramm widerspiegelt. Es wurden mehrere Kondensatoren zur Stabilisierung der Spannung hinzugefügt, ein MOS-Transistor (direkt aus dem Datenblatt kopiert) zum Einschalten der Laserdiode und andere Standarddetails. Der Maussensor überträgt Daten über ein vieradriges SPI-Signal, und ich habe eines dieser Kabel verwendet, um das Maustastensignal zu senden: Wenn ich auf die Schaltfläche klicke, wird der MISO-Kontakt ziemlich stark heruntergezogen. Der Wert dieses Pull-up-Widerstands reicht nicht aus, damit die Maus die Datenübertragung stoppt, sondern um den Pull-up-Widerstand zu überwinden, der normalerweise den Bus nach oben zieht. Wenn der Sensor drei Zustände im MISO-Bus erzeugt, kann der ESP32 einen Tastendruck erkennen.


Schließlich müssen Sie den OLED-Bildschirm anschließen. Wir haben bereits alle schwierigen Arbeiten zur Berechnung der Werte aller Widerstände abgeschlossen, daher sollte die Schaltung mehr oder weniger für sich selbst sprechen. Der hinzugefügte Chip ist ein D-Flip-Flop und wird zur Halbierung der Taktfrequenz verwendet: Wie oben erwähnt, erfordert der MIPI-Standard jedes Mal ein neues Bit, wenn die Taktpolarität invertiert wird, während der ESP32 ein neues Bit nur auf der Vorder- oder Rückseite überträgt vorne.


Nachdem ich ein schematisches Diagramm gezeichnet hatte, erstellte ich ein Leiterplattendesign. Das von mir ausgewählte Display sollte auf der Platine montiert werden, die es steuert, und der Stecker sollte sich auf der Rückseite dieser Platine befinden. Obwohl dies nicht viel Platz für andere Komponenten gelassen hätte, wollte ich dennoch alle anderen Komponenten auf der anderen Seite platzieren.


Es ist großartig, eine gute Sicht und eine Heißluftpistole zu haben: Dadurch konnte ich die 0603-Komponenten verwenden und alles auf dem begrenzten Platz des Boards platzieren. Es wäre besonders schwierig, den Anzeigestecker und den OLED-QFN-Leistungschip mit einem herkömmlichen Lötkolben zu verbinden.


Ich erkannte, dass der Maussensor und seine Komponenten zu viel Platz auf der Platine beanspruchen, und entschied mich daher, alle Komponenten an den Sensor selbst anzulöten. Dank dessen kann alles in die Maus gelegt werden.



Software



Offensichtlich ist Software ein ziemlich wichtiges Element dieser Assembly: Es ist notwendig, den gesamten Macintosh zu emulieren. Der Macintosh ist jedoch keine so komplizierte Maschine. Tatsächlich besteht es aus einem 68000-Mikrocontroller, einem seriellen Zilog Z8530-Übertragungscontroller, der die serielle Schnittstelle steuert, 6522 VIA für interne E / A und zur Bereitstellung einer Schnittstelle mit einer Tastatur sowie mehreren programmierbaren Logik-Arrays (PAL), die Logik für Anzeige und Sound enthalten. Es hat auch einen integrierten Woz Machine-Chip, der eine Schnittstelle mit einem Diskettenlaufwerk bietet. Dies ist ein ziemlich komplizierter Chip; Ich habe jedoch nicht vor, eine Diskette zu emulieren, daher reicht es aus, IWM zu emulieren, und es wird ständig zurückgegeben, dass sich keine Diskette im Laufwerk befindet. Stattdessen plane ich, den an die emulierte SCSI-Festplatte angeschlossenen NCR 5380-SCSI-Chip vollständig zu emulieren, der aus dem im ESP32-Wrover integrierten Flash-Speicher gelesen wird.

Darüber hinaus wird es nur sehr wenige Programme mit direktem Zugriff auf Geräte im System geben: Mac-Programmierer wurden von Anfang an angewiesen, Hardware-Abstraktionsschichten auf Betriebssystemebene zu verwenden, um die Kompatibilität mit zukünftigen Versionen von Mac-Geräten aufrechtzuerhalten. Im Allgemeinen bedeutet dies, dass die meisten Programme ohne Probleme funktionieren, wenn ich es schaffe, Hardware so weit zu emulieren, dass das Betriebssystem hochfährt und mit allem zufrieden ist.

Also habe ich beschlossen, dass Sie versuchen können, einen Emulator von Grund auf neu zu schreiben. Genauer gesagt, nicht ganz von Grund auf neu; 68000 ist ein ziemlich kompliziertes Tier und ich wollte das Rad nicht neu erfinden. Stattdessen suchte ich im Internet und stellte fest, dass MAME einen praktischen und schnellen CK-basierten 68K-Emulator namens Musashi hat, der perfekt zu meinen Anforderungen passt.Es wird notwendig sein, ein bisschen zu beschwören, um Opcodes anstelle von RAM in den Flash-Speicher zu übertragen, aber im Übrigen wird fast nichts benötigt, um auf ESP32 zu portieren.

Ich hatte jedoch nicht vor, das gesamte Projekt auf ESP32 zu entwickeln: Da der Chip OpenOCD unterstützt, das ziemlich breite Debugging-Funktionen bietet, ist der Zyklus „Heruntergeladen, getestet, fest geladen“ zu eintönig. Aus diesem Grund habe ich mich entschlossen, zunächst alles auf meinem Linux-Computer zu entwickeln, ohne die Einschränkungen von ESP32 zu vergessen. Also habe ich angefangen, Datenblätter für verschiedene Chips, Linux-68K-Informationen für den Computer sowie Informationen aus der Inside Macintosh-Serie zu verwenden, die im Internet zu finden sind. Wenn ich nicht herausfinden konnte, was ich als nächstes tun sollte, konnte ich unter die Haube anderer Open-Source- Emulatoren schauen.

Mit all dem bewaffnet, wählte ich gcc als Compiler und libsdl als Bibliothek für die Arbeit mit Grafiken und machte mich an die Arbeit. Kurz gesagt, nach einer Weile bekomme ich einen einfachen, aber allgemein funktionierenden MacPlus-Emulator: Maus, Video, SCSI-Festplatte und Sound:


Da meine Hardware noch nicht fertig war, habe ich beschlossen, meinen Emulator auf das Devboard ESP-Wrover-Kit zu portieren. Ich hatte noch mehrere solcher Boards zur Hand und zusätzlich zu dem Wrover-Modul, das ich sowieso verwenden werde, haben sie ein praktisches 320x240-Display, mit dem der Betrieb des Videos überprüft werden kann.


Nach dem Einrichten hat der Mac-Emulator auf diesem Board ziemlich gutes Geld verdient. Tatsächlich liegt es normalerweise ziemlich nahe an den 7,8 MHz, auf denen Mac Plus läuft. (7,8 MHz sind etwas schneller als Mac Plus; da in diesem Maschinenteil des Speicherzyklus der Bildspeicher und das Soundsystem aufgebraucht sind, kann die Frequenz um 35% reduziert werden.)

Natürlich ist der Emulator auf dem Devboard ein guter Schritt nach vorne, aber Am Ende sollte alles auf dem Bildschirm funktionieren, den ich gekauft habe, und nicht auf dem Devboard-Bildschirm. Und noch etwas: Der Devkit-Bildschirm hat einen 320x240-Bildschirm und schneidet den festen Teil des Mac-Bildschirms ab. Das Display, das ich verwenden werde, hat eine Größe von 320 x 320 und ist daher nur vertikal größer: Wie kann ich es schaffen, einen 512 x 342 Mac-Bildschirm darauf anzuzeigen?

Es gibt nur eine Möglichkeit, 512 x 342 Pixel auf einem 320 x 320-Bildschirm zu platzieren, und zwar die Skalierung. Tatsächlich nehmen wir ein Bild auf, komprimieren es, verkleinern es und zeigen es dann an. Die Skalierung kann jedoch auf verschiedene Arten erfolgen. Wenn man bedenkt, dass das vom Betriebssystem erzeugte Schwarzweißbild davon ausgeht, dass jedes Pixel einen klar definierten Lichtpunkt auf dem Bildschirm erzeugt, gibt es viele Möglichkeiten, alles zu ruinieren. Ich muss so wenig Pixel wie möglich verlieren. Das heißt, Sie müssen die Auflösung des OLED-Bildschirms erhöhen.

Aber wie geht das?Es ist unwahrscheinlich, dass Sie den OLED-Bildschirm öffnen und ein paar Pixel mehr hineinstecken können. Dies ist jedoch nicht erforderlich; Die Auflösung des OLED-Displays ist bereits dreimal so hoch wie angegeben. Der Grund ist, dass dieser Bildschirm farbig ist: Jedes virtuelle „Pixel“ hat rote, grüne und blaue Subpixel. Darüber hinaus sind in diesem speziellen Bildschirm die Subpixel mit einem Dreieck ausgekleidet. Hier ist ein Nahaufnahme-Screenshot mit drei aktivierten Pixeln:


Wie Sie sehen können, sind Pixel dreieckige Sätze von drei Subpixeln. Je nach Spalte zeigen die Dreiecke nach unten oder oben. Im Wesentlichen bedeutet dies, dass die Subpixelauflösung des Bildschirms 480 x 640 Pixel beträgt. Obwohl dies immer noch nicht vollständig ausreicht, um 512 x 342 Pixel anzuzeigen, ist der Unterschied so gering, dass mit der richtigen Auswahl der kleinen Skalierung das Display für einen 1,63-Zoll-Bildschirm mit einer für einen 9-Zoll-Bildschirm entwickelten Benutzeroberfläche so gut wie möglich lesbar ist:



Gehäuse


Jetzt habe ich ein Display und eine Software, die den Macintosh Plus recht gut emulieren, sowie einen Mikrocontroller, auf dem er ausgeführt werden kann. Was fehlt? Natürlich Gehäuse für all das!

Ich habe mich entschlossen, es von meiner Arbeit auf einem Formlabs 1+ SLA 3D-Drucker zu drucken. Dazu brauche ich zuerst ein Modell. Ich wollte es von Grund auf neu erstellen. Natürlich ist es besser, einen echten Macintosh Plus zur Hand zu haben. Tatsächlich habe ich es, aber wir werden von einem halben Kontinent geteilt ... Glücklicherweise gelang es mir, eine fast ebenso gute Lösung zu finden: Eine freundliche Person gab im iFixit- Wiki die Abmessungen des ursprünglichen Mac 128K (dessen Gehäuse fast mit Plus identisch ist) an .

Ich erstelle immer noch alle meine 3D-Modelle in OpenScad und nach dem Quälen und Fluchen gelang es mir, alle Kurven so aussehen zu lassen, wie sie sollten. Ich habe ein wunderschönes Mac-Modell im Maßstab 1: 6.


Ich habe die Maus auch aus Bildern mit iFixit erstellt, aber da ein ausreichend großer Sensor der optischen Maus hineinpassen sollte, kann sie nicht auf 1/6 einer echten Maus skaliert werden. Die Skala liegt näher bei 2/5, sodass die Maus im Vergleich zum winzigen Mac groß aussieht, aber für nicht skalierte menschliche Finger viel praktischer ist.


Alles was bleibt ist, die Modelle zu drucken. Ich habe das Konstrukt in verschiedene STL-Dateien exportiert und auf Formlabs 1+ gedruckt. Das Endergebnis war gut genug; Ich bedaure nur, dass ich nicht an beiden Teilen des Designs Riegel angebracht habe. Dieses Problem wurde mit einem Tropfen Sekundenkleber gelöst.

Bild


Ergebnis


Also hatte ich alle Komponenten und konnte sie nur zusammenbauen. Die Leiterplattenanschlüsse an der Vorderseite des Gehäuses sind mit mehreren Clips gesichert. Der USB-Seriell-Wandler, der als Startmechanismus und Netzteil verwendet wird, ist an der Rückseite angeschlossen und hält auch mehrere Anschlüsse. Ich habe vergessen, etwas für die Montage im Lautsprecher zu tun, aber ich habe es geschafft, es im Gehäuse mit Sekundenkleber zu reparieren. Die Maus ist durch einen Satz dünner Drähte verbunden. (Ja, sie stimmen etwas nicht mit dem Farbschema überein. Sobald ich ein schöneres Multicore-Kabel finde, werde ich es reparieren.)


Wenn Sie alles auf einem Computer entwickeln, erkennen Sie den tatsächlichen Maßstab des Produkts erst dann, wenn das Projekt vollständig realisiert ist, beispielsweise wenn Sie Leiterplatten ab Werk erhalten oder nachdem Sie auf dem 3D-Drucker das Gehäusedesign gedruckt haben, an dem Sie seit Wochen arbeiten. Natürlich wusste ich, dass alles sechsmal kleiner sein würde als der ursprüngliche Mac, aber erst nachdem ich alles zusammengesetzt und das Auto live gesehen hatte, wurde mir klar, was das bedeutet. Der Mac hat sich wirklich als winzig herausgestellt!



Und trotz der geringen Größe und des Fehlens einer Tastatur können die meisten Programme ausgeführt werden, für die der Mac bekannt ist. Hier ist eine Demo. In den ersten 20 Sekunden wird eine Speicherprüfung durchgeführt, und ich weiß aus Erfahrung, dass eine so lange Prüfung kein Fehler ist: Das Laden des ursprünglichen Mac Plus dauerte auch nach dem Upgrade dieselbe Zeit.


Was ist gut an diesem Mac Plus? Obwohl es mir Spaß gemacht hat, es zu erstellen, muss ich zugeben, dass es ohne Tastatur nicht in vollem Umfang genutzt werden kann. Außerdem verfügt er nicht über die Kommunikationsmittel: Ich hatte vor, AppleTalk über WLAN zu implementieren, aber es gelang mir nicht, weil ich den seriellen Buscontroller-Chip des Original-Mac selbst nicht emulieren konnte. Nachdem ich das abgeschlossene Projekt in diesem Zustand habe, kann ich mir endlich meinen alten Traum erfüllen und ihn mit den Toastern des Bildschirmschoners After Dark auf den Mac-Tisch legen:


, open-source, , Github . Beer-Ware license, , . - - , .

Source: https://habr.com/ru/post/de444574/


All Articles