Spectrum-48 gegen eine Packung Zigaretten, Haferbrei von einer Axt oder was STM32F103C8T6 + Video kann (Update)

Alles begann mit einem weiteren Versuch, mit dem Rauchen aufzuhören. Nachdem ich meine interne „Kröte“ auf der Suche nach Unterstützung geweckt habe, sage ich zu ihr: „Sehen Sie, eine Packung meiner Zigaretten kostet heute wie ein Taschen-Retro-Computer mit einem Bildschirm, das sind ungefähr 10 US-Dollar, und einst haben wir für den Sinclair-48K-Klon das gesamte monatliche Gehalt ausgegeben und verbrachte mehr als einen Monat mit Assembly und Debugging. “ Sie: "Ihr seid Ziegen und Lügner, beweist es!" Ich musste arbeiten

Also, die Ausgangsmaterialien:

  1. Blaue Pille: STM32F103C8T6 - 20K RAM 64K Flash $ 2.06
  2. Arduino Display: ILI9341 2.8 "320x240 mit Touchscreen und 7,72 $ Kartensteckplatz
  3. Hochtöner $ 0,18
  4. Ein paar Knöpfe (7 Stück) $ 0,2
  5. Einige Drähte $ 0.1
  6. Flash-Karte für 64 Mega (von einer alten Kamera), nicht in der Berechnung enthalten
  7. Der ST-LINK-Programmierer wird nicht verbraucht und ist nicht in der Berechnung enthalten, kostet aber auch ein paar Dollar
  8. Eine Packung Zigaretten - zu schnell und jeden Tag konsumiert - 8,37 USD



Die wunderbare „blaue Pille“, hergestellt in China, ist für alle gut, außer für die Menge an RAM, nur 20 KB (obwohl es auch wenig Konstante gibt, nur 64 KB). Spectrum-48K benötigt 48K (Zufall? Ich glaube nicht) RAM und 16K Konstante. Wir werden den RAM vom Bildschirm nehmen, da die Auflösung des Spessi 256x192 + Rand beträgt, während ILI9341 320x240 mit 18 Bit pro Punkt hat. Das heißt, Sie können die Mitte des Bildschirms zum Rendern und alles andere für den eigentlichen „Swap-Bereich“ (Swap-Bereich?) Verwenden. Darüber hinaus wird der vom Prozessoremulator Z80-Speicher am häufigsten verwendete (LRU-Algorithmus) im RAM STM32 zwischengespeichert, der Rest wird im Bildschirmspeicher ILI9341 mit langsamem (SPI) Zugriff gespeichert.

Vor ungefähr 25 Jahren schrieb ich den Z80-Emulator auf der 80286-Plattform. Sie sind keine sehr entfernten Verwandten des Z80. Beide stammten aus 8080, was es mir ermöglichte, mit dem wunderbaren Borland TACM und C ++ einen sehr schnellen Code zu erhalten, aber dann war eine so detaillierte Emulation nicht erforderlich ( Der Code wurde für beide Seiten geschrieben: ein Notizbuch mit einem Wörterbuch und seinem Emulator unter Windows 3.1 zum Debuggen).

Es war zu faul, um von Grund auf neu zu schreiben, und so fragte ich Google: "Sagen Sie mir, Google, wie sieht es heute mit der ordentlichen Z80-Emulation aus?" Google gab mir ein paar tausend zwei geeignete Projekte: Basierend auf STM32F4, Autor von Gorien und dem fortschrittlichsten und debuggtesten Fuse-Emulator . Bei der ersten Zusammenstellung des Codes von Gorien stellte sich heraus, dass etwa 100.000 ausführbarer Code vorhanden waren, der zu diesem Thema deutlich besser verfügbar ist. Ich musste ein bisschen daran basteln, einen Elefanten in den Kühlschrank zu schieben . Beispielsweise werden Aufrufe lokaler Variablen zu einem kompakteren Code kompiliert als globale, alle erweiterten Befehle der Register IX und IY sind gleich, genau auf das Ersetzen von Variablen, die Zeichengeneratortabelle kann durch einen Link zum Spektrumzeichengenerator usw. ersetzt werden. Außerdem musste der Prozessor auf 112 MHz übertaktet werden ( danke an xedas für die Idee ).

Ergebnis: ein funktionierender (ich habe ungefähr ein Dutzend Spiele ausprobiert, während alle arbeiten) ZX Spectrum-48-Emulator mit einem Bildschirm von der Größe einer Zigarettenschachtel (er steckt bereits in Ihrer Tasche, aber die Drähte ragen heraus), der Dumps (Symbol + Speicherbild + Register ~ 50.000) von Spielen mit liest Flash-Kartenformat FAT32 (ein paar Kilobyte Code mehr) und mit einem Gesamtverbrauch von ~ 50 mA (dh etwa 50 Stunden von einem typischen 18650-Akku für 2500 mAh!) beträgt die Einschaltzeit weniger als eine Sekunde und die Gesamtkosten weniger als 10 US-Dollar.

Nachteile:

  1. Immer noch etwas langsamer als das Original.
  2. Der Bildschirm zeigt den Code des heruntergeladenen Programms in Farbe.
  3. Sie benötigen einen Joystick oder weichere Tasten. Und die Gebühr. Und eine Kiste. Und gerade Arme. Und ...


In ungefähren Plänen: Reduzierung des Verbrauchs (Abreißen der LEDs von der Platine), Hinzufügen einer Modulation der Bildschirmhelligkeit, Taktmodus bei ausgeschaltetem Bildschirm, Löten einer normalen Tastatur mit einem Joystick, Anpassen der Verzögerung für korrekten Ton und Lesen von einem Kassettenrekorder (und was?), PC-Dateiformatkonverter Dumps, drücken Sie etwas mehr Code, um die Benutzeroberfläche zu hosten. Versuchen Sie, die Kosten der Plattform mithilfe eines 2,4-Zoll-Bildschirms zu senken. Es ist wahr, na ja, sehr klein, aber für 5 ... Es ist klar, dass das Interesse hier rein sportlich ist, obwohl, wenn man die Geschwindigkeit berücksichtigt, mit der Enkelkinder Elektronik in unbrauchbare Teile zerlegen, der Preis immer noch wichtig ist.

Aktueller Arbeitscode auf Github

Und noch mehr Bilder für Fans, das R-Typ-Spiel, der Tauschbereich an den Rändern des Hauptbildschirms:



Die andere Seite:



Atic-Atac-Spiel:



PS: Ich habe den Preis für eine Packung Zigaretten nicht erreicht, daher muss meine "Kröte" meine schlechten Gewohnheiten ertragen, aber ich bin bereits 55 Jahre alt, also habe ich das meiste davon bereits ausgegeben ... Fortsetzung folgt.
Video, kein Ton, sorry:

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


All Articles