Das hier ist die Projekt-Seite vom ZX-Spectrum-Emulator per STM32F429-Discovery-Board.
Alle Infos (wirklich ALLE) über den ZX-Spectrum gibt es hier :
www.WorldOFSpectrum.org
Das Board eignet sich gut für einen Emulator (genug RAM und FLASH)
als Eingabegerät muss eine USB-Tastatur an CN6 angeschlossen sein.
Den Z80-Emulator Quellcode hab ich von “Marat Fayzullin” übernommen.
(Die Quelle davon steht im C-File)
Das ZX-Spectrum-Basic läuft wunderbar, auch IN und OUT Befehle sind möglich. Zur Demo kann man den User-Button abfragen und die Rote-LED schalten (Port=43690).
(Wer gute Basic-Demos hat kann sie mir ja zusenden zum veröffentlichen
Basic-Beispiel-01 : (schaltet LED per Button)
1 2 3 | 10 LET a=IN 43690 20 OUT 43690,a 30 GOTO 10 |
Basic-Beispiel-02 : (setzt zufällige Farbwerte im Attribut-RAM)
1 2 | 10 POKE 22527+RND*704, RND*127 20 GOTO 10 |
Spiele :
Zwei Spiele sind im Flash “vorinstalliert” und solange der Flash reicht können noch weiter von euch hinzugefügt werden.
(zum umwandeln “Z80″->”c” kann mein Fileconverter benutzt werden)
Joystick :
Den “Kempston-Joystick” der von den meisten Spielen unterstützt wird, habe ich auf die 4 Cursortasten gemappt. Feuer = “rechte ALT”-Taste.
Load/Save :
Speichern und laden geht über die UART und im gepackten “Z80-Fileformat”. Auf dem PC benötigt man ein Terminal-Programm (z.B. mein Discovery-Terminal) Damit lassen sich Basic-Programme auf dem PC sichern und wieder laden. Auch Spiele-ROMs können über diesen Weg geladen werden. (Bitte kein anderes File-Format übertragen !!)
Version :
V:1.1 (vom 30.01.2014)
Screenshot :
Implementierte Funktionen :
Emulation der Z80 CPU
Emulation vom ZX-Spectrum (16k ROM / 48k RAM)
Eingabe : per USB-Tastatur (Micro-USB-Buchse) mit Mapping von Sonderzeichen
Start von ROM-Files vom Typ “*.Z80″ (vom Flash oder RAM)
Sound-Ausgabe (an Portpin PB2) z.B. per Piezo-Piepser
Digital OUT-Pin (an PG14) per Basic-Befehl “OUT 43690,0″ bzw “OUT 43690,1″
Digital IN-Pin (an PA0) per Basic-Befehl “LET a = IN 43690″
Speichern von Basic-Programmen (per UART) auf einem PC
Laden von Basic-Programmen/Games (per UART) von einem PC
Emulation vom “Kempston-Joystick” per Cursor-Tasten und “right ALT”
UART :
zum laden/speichern von Programmen und Spielen wird die UART
mit 115200 Baud (8N1) benutzt.
PA9 = TX
PA10 = RX
Tastaturlayout :
Caps-Shift liegt auf der linken Shift-Taste
Symbol-Shift liegt auf der rechten Shift-Taste
Die ESC-Taste dient als “Break”.
Delete, Cursor und die Symboltasten werden automatisch gemappt.
In Verbindung mit linker STRG-Taste können auch die Symbole
der Zifferntasten “ganz normal” eingegeben werden.
Spiele können über die 4 Cursortasten + “right ALT” gesteuert werden.
(im Spiele-Menu muss “Kempston-Joystick” ausgewählt werden)
Sondertasten :
“ALT” + “ESC” = Soft-Reset (und start vom ZX-Spectrum-Basic)
“ALT” + “F1″ = Start vom Game “Pssst” aus dem Flash
“ALT” + “F2″ = Start vom Game “AticAtac” aus dem Flash
“ALT” + “s” = senden vom RAM-Inhalt als Z80-File per UART
“ALT” + “l” = empfangen von einem Z80-File per UART (Basic-File)
“ALT” + “g” = empfangen von einem Z80-File per UART (Game-File)
“ALT” + “h” = Anzeige einer Hilfe Seite
Spiele :
Hinweis : es werden nur Spiele im “Z80-File-Format” unterstützt. Im Netz gibt es so gut wie alle Spiele-Roms. Leider funktionieren nicht alle Spiele mit dem Emulator (warum das so ist, weiß ich nicht und ich such da jetzt auch keinen Fehler mehr)
Hier der komplette CooCox-Projektordner zum download :
Hi Uwe,
der ZX-Sprectrum Emulator läuft ja schon prima!
Beim Eintippen der Basic Befehle ist wieder das alte Feeling von Damals aufgekommen – Die endlose Suche nach der richtigen Tastenbelegung.
Kannst du folgende Tasten der USB Tatstatur als Tastenkombination beim ZX-Spectrum umsetzen? Das würde die Eingaben erheblich vereinfachen:
[Backspace]->[CAPS-SHIFT] + [0]
[CursorLeft]->[CAPS-SHIFT] + [5]
[CursorDown]->[CAPS-SHIFT] + [6]
[CursorUp]->[CAPS-SHIFT] + [7]
[CursorRight]->[CAPS-SHIFT] + [8]
[+]->[Symbol-Shift] + [K]
[*]->[Symbol-Shift] + [B]
[#]->[Symbol-Shift] + [3]
[‚]->[Symbol-Shift] + [7]
[[Symbol-Shift] + [R]
[>]->[Symbol-Shift] + [T]
[,]->[Symbol-Shift] + [N]
[;]->[Symbol-Shift] + [O]
[.]->[Symbol-Shift] + [M]
[:]->[Symbol-Shift] + [Z]
[-]->[Symbol-Shift] + [J]
[_]->[Symbol-Shift] + [0]
in A.10 realisiert. Und per linker STRG-Taste können die Symbole der Ziffern-Tasten “normal” eingegeben.
Hallo Uwe,
der Spectrum-Emulator funktioniert jetzt fast perfekt.
Ein Sache ist mir noch aufgefallen: Eine Basic-Endlos-Schleife kann man nicht mit der Taste [BREAK SPACE] abbrechen.
Starte mal dieses Programm, und versuche den Abbruch mittels der [BREAK SPACE] Taste:
10 POKE 22527+RND*704, RND*127
20 GO TO 10
Ciao,
ManiB
Für “Break” muss CapsShift gedrückt sein ! In der Version 1.1 liegt diese Funktion auf der “ESC”-Taste.
Super, dass hatte ich total vergessen (ist ja auch schon 30 Jahre her;)
Hallo. Befehlstasten “Y” und “Z” sind vertauscht. Getestet auf drei Tastaturen. Ist das richtig?
Wie bitte. Auf der deutschen Tastatur in Ordnung.
Was sind “Befehlstasten” ? Vorsicht !! Der Screenshot zeigt die original Spectrum Tastatur, da liegt “Y” rechts neben dem “T” (englisch halt).
Ich hab das Mapping aber auf eine deutsche “QWERTZ-Tastatur” ausgelegt, damit beim tippen von einem “z” auch der Buchstabe “z” erscheint. Falls du das ändern willst (im File : usbh_hid_keybd.h) können die Layouts umgeschaltet werden.
Google Übersetzer:-))
Hallo, ich habe vor zwanzig Yahre kein Deutsch gesprochen und wird auf English scrieben :
Hi ! I’ve been following your blog for a moment : very nice !
I’ve made an adaptation of your ZX emulator for the bitbox console (quite heavily modified by now) – will put it on github shortly.
Are you Ok with this ? How do you want to be credited ? Congrats for your great work again !
no problem, please dont delete my remark header
from the files.
Sure, I’ve put them back