Z80 CPU Tester

  • Hui - auch ein sehr interessantes Projekt - bin auf deinen Bericht gespannt


    ..da würd ich auch ein Platinchen nehmen (auch von dem NOP-Board)

    ich bin signifikant genug:razz:

  • Aufgebaut und läuft.

    Schönes Spielzeug und Tester.

    Evtl. IO Write Adresse 0 = dez. Zahl ausgeben. Adresse 1 = ASCII Ausgabe.

    Bei Read = Eingabe..

    Und dann kleines Programm zur Ausgabe der Fibonacci Folge..


    Habe blaue Platinen fertigen lassen.

    Kann gerne 3 Stk. für 2€/Stk abgeben.


    Peter

  • Ich würde auch eine nehmen.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Hallo zusammen,


    ich habe mich hier gerade angemeldet, so dass, wenn jemand Fragen zu dem Projekt hat, die auch direkt hier stellen kann.


    Stephan

    Erklärung gem. "§ 6 Übertragung von Nutzungsrechten" Abs. (1) der Nutzungsbedingungen:

    Hiermit erkläre ich, dass alle meine Postings mit deren Inhalten nicht der Creative Commons License (CC BY-NC-SA) unterliegen. Ich räume diesem Forum jedoch für meine eigenen Inhalte deren Veröffentlichung bis auf Widerruf ein.

  • Kleiner Hinweis:

    Ich habe den Code gerade aktualisiert. Es kann unter Adresse 4000H ein LCD2004 angesprochen werden (4 x 20 Bytes).

    Ein Beispiel kann wie folgt gestartet werden:

    l 3

    s 3 1000

    r

    Erklärung gem. "§ 6 Übertragung von Nutzungsrechten" Abs. (1) der Nutzungsbedingungen:

    Hiermit erkläre ich, dass alle meine Postings mit deren Inhalten nicht der Creative Commons License (CC BY-NC-SA) unterliegen. Ich räume diesem Forum jedoch für meine eigenen Inhalte deren Veröffentlichung bis auf Widerruf ein.

  • Der Status der Taster kann durch Lesen von Adresse 4000H bzw. 4001H ermittelt werden.

    Ein Beispiel kann wie folgt gestartet werden:

    l 4

    s 3 10000

    r

    Durch Drücken von SELECT erscheint "ON" auf dem Display, wird OK gedrückt, erscheint "OFF".

    Erklärung gem. "§ 6 Übertragung von Nutzungsrechten" Abs. (1) der Nutzungsbedingungen:

    Hiermit erkläre ich, dass alle meine Postings mit deren Inhalten nicht der Creative Commons License (CC BY-NC-SA) unterliegen. Ich räume diesem Forum jedoch für meine eigenen Inhalte deren Veröffentlichung bis auf Widerruf ein.

  • Supi. Also I/O nun vorhanden.

    Ich mag persönlich allerdings leider die LCD Displays nicht :(


    Mal sehen, wann ich dazu komme hier weiter zu machen. Z.Z. neue Projekte.


    Edit: Mal als Idee..

    Input über PS/2 Tastatur. Gibt fertige Libs. Nur 2 GPIOs nötig - alle Zeichen eingebbar.

    Output kann LCD bleiben.


    Dann etwas mehr Ram (2-4k).

    Und z.B. HEXMON des NDR Kleincomputers als Rom.

    HEXIO Routinen dann so 'umbiegen', das von PS/2 Tastatur Input kommt und Ausgabe des 7-Segment LED Displays auf

    das LCD erfolgt.


    Schon wäre ein NKC Grundsystem verfügbar ;)


    Weitere Kanditen:

    LC80

    MPF-1


    Peter

    github.com/petersieg

  • Für mehr RAM einfach die Variable ram und den RAMTOP erhöhen. Dabei auch SCREENBASE anpassen. Wenn SCREENBASE >3E00H sein soll, dann müssen die beiden Adressen für die Switches angepasst werden.


    Um ernsthaft Programme laufen zu lassen, ist die simulierte Umgebung viel zu langsam. Das ganze Projekt dient eigentlich nur dem Zweck einzelne Z80 Befehle analysieren zu können.

    Erklärung gem. "§ 6 Übertragung von Nutzungsrechten" Abs. (1) der Nutzungsbedingungen:

    Hiermit erkläre ich, dass alle meine Postings mit deren Inhalten nicht der Creative Commons License (CC BY-NC-SA) unterliegen. Ich räume diesem Forum jedoch für meine eigenen Inhalte deren Veröffentlichung bis auf Widerruf ein.

  • Und noch ein Update:

    Die Arduino Ports können mit dem IN Kommando abgefragt werden, also


    Für den Digital 50 Port (da hängt der Taster SELECT dran):

    XOR A

    IN A,(50)


    Für den Digital 51 Port (da hängt der Taster OK dran):

    XOR A

    IN A,(51)


    Vorsicht bei den anderen Ports.

    Erklärung gem. "§ 6 Übertragung von Nutzungsrechten" Abs. (1) der Nutzungsbedingungen:

    Hiermit erkläre ich, dass alle meine Postings mit deren Inhalten nicht der Creative Commons License (CC BY-NC-SA) unterliegen. Ich räume diesem Forum jedoch für meine eigenen Inhalte deren Veröffentlichung bis auf Widerruf ein.

  • Gibt es denn schon Feedback?

    Auch wenn der Tester dafür nicht gedacht ist: Man sollte auch Tetris implementieren können ;)

    Erklärung gem. "§ 6 Übertragung von Nutzungsrechten" Abs. (1) der Nutzungsbedingungen:

    Hiermit erkläre ich, dass alle meine Postings mit deren Inhalten nicht der Creative Commons License (CC BY-NC-SA) unterliegen. Ich räume diesem Forum jedoch für meine eigenen Inhalte deren Veröffentlichung bis auf Widerruf ein.

  • ich hab meinen noch nicht aufgebaut - ausserdem hab ich grad keinen Mega greifbar - ich hab nur Uno R3


    ..aber ich melde mich, wenns soweit is - kann aber noch dauern - mein Vorrangigstes Projekt ist jetzt erstmal der Z1013

    ich bin signifikant genug:razz:

  • Wer das Shield einmal im Einsatz sehen möchte, kann das jetzt hier:

    https://www.youtube.com/watch?v=Z_MGwEoR1mo

    Erklärung gem. "§ 6 Übertragung von Nutzungsrechten" Abs. (1) der Nutzungsbedingungen:

    Hiermit erkläre ich, dass alle meine Postings mit deren Inhalten nicht der Creative Commons License (CC BY-NC-SA) unterliegen. Ich räume diesem Forum jedoch für meine eigenen Inhalte deren Veröffentlichung bis auf Widerruf ein.

    • Official Post

    Schoen gemacht.


    <besserwisser>

    In deinem Programm (bei 1:51) solltest du nach dem org 66h besser retn statt reti verwenden.

    </besserwisser>

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • Na ja, wenn man Z80 Peripherie verwendet, sollte man besser RETI verwenden, damit die Interrupt Daisy Chain gelöscht wird.

    Erklärung gem. "§ 6 Übertragung von Nutzungsrechten" Abs. (1) der Nutzungsbedingungen:

    Hiermit erkläre ich, dass alle meine Postings mit deren Inhalten nicht der Creative Commons License (CC BY-NC-SA) unterliegen. Ich räume diesem Forum jedoch für meine eigenen Inhalte deren Veröffentlichung bis auf Widerruf ein.

    • Official Post

    Z80 Peripherie und RETI ist richtig.

    Aber normalerweise verwendet die Z80 Peripherie nicht den NMI, sondern den normalen INT.


    Bei mehreren Z80 Bausteinen mit Interrupt am NMI kannst du Interrupts verlieren.

  • Ich guck mal, ob ich das noch ändere. Da 66H die Adresse des NMI ist, wäre RETN besser.

    Allerdings wird der Arduino bestimmt keine weitere Peripherie zu sehen bekommen.

    Erklärung gem. "§ 6 Übertragung von Nutzungsrechten" Abs. (1) der Nutzungsbedingungen:

    Hiermit erkläre ich, dass alle meine Postings mit deren Inhalten nicht der Creative Commons License (CC BY-NC-SA) unterliegen. Ich räume diesem Forum jedoch für meine eigenen Inhalte deren Veröffentlichung bis auf Widerruf ein.

    • Official Post

    Allerdings wird der Arduino bestimmt keine weitere Peripherie zu sehen bekommen.

    Besser das Besserwisser-Tag. ;)


    Dafuer lohnt sich kein neues Video.


    Macht es Sinn, wenn der Arduino INT und NMI ausloesen kann?

  • Kann er zumindest und macht Sinn, wenn du das Verhalten analysieren willst.


    Du kannst definieren, dass ein INT oder NMI (aber auch WAIT oder ein IORQ Vektor) nach einer bestimmten Anzahl von Takten erzeugt wird.

    Erklärung gem. "§ 6 Übertragung von Nutzungsrechten" Abs. (1) der Nutzungsbedingungen:

    Hiermit erkläre ich, dass alle meine Postings mit deren Inhalten nicht der Creative Commons License (CC BY-NC-SA) unterliegen. Ich räume diesem Forum jedoch für meine eigenen Inhalte deren Veröffentlichung bis auf Widerruf ein.

    • Official Post

    Kann er zumindest

    Das ist gut.


    Nochmal zum NMI und RETN:

    Beim NMI wird das IFF1 ind IFF2 kopiert, IFF1 geloescht (=DI).

    Beim RETN wird das IFF2 wieder ins IFF1 kopiert.

    Jetzt bin ich gerade am ueberlegen, was passiert wenn du nach dem NMI statt RETN RETI benutzt. Vor einen RETI machst du ja sowieso ein EI (set IFF1). Sollte also nicht stoeren.

    Aber das ist jetzt sehr abgehoben.

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • Der Link zum Video hat sich noch einmal geändert:

    https://youtu.be/9pRoMgTztK8

    Erklärung gem. "§ 6 Übertragung von Nutzungsrechten" Abs. (1) der Nutzungsbedingungen:

    Hiermit erkläre ich, dass alle meine Postings mit deren Inhalten nicht der Creative Commons License (CC BY-NC-SA) unterliegen. Ich räume diesem Forum jedoch für meine eigenen Inhalte deren Veröffentlichung bis auf Widerruf ein.

  • wow - ist ja schon richtig weit fortgeschritten das Teil - ich hab meine Platine noch nicht mal aufgebaut -

    ..aber dafür den NOP-Generator:xmas:

    danke nochmal dafür

    ich bin signifikant genug:razz: