Z80 MBC 2 - Aufbau und Inbetriebnahme

    • Offizieller Beitrag

    Hallo!


    Habe ja von Kroiter Platinen für das https://hackaday.io/project/15…ics-homebrew-z80-computer Projekt bekommen. Der erste Schwung Teile ist angekommen und ich fange mal an zu bestücken.


    Möchte hier im Thread meine Erfahrungen mit dem Gerät dokumentieren.

    Interessant finde ich, daß er auch UCSD Pascal unterstützt und man ihn über I2C erweitern kann. Laut der Fatzebuk- Gruppe wird da gerade auch ein mehreren seriellen Schnittstellen gearbeitet.


    Gruß

    Stephan

    • Offizieller Beitrag

    So, die Hardware ist soweit aufgebaut. Leider warte ich noch auf ein paar Teile....

    Den Arduiono / Atmega32 Bootloader sollte ich aber schon flashen können.


    Kann mir jemand sagen, wie das geht, sprich welche Hardware / Programmer man für sowas hernimmt?


    Kroiter, Du hast das doch schon gemacht, oder?

    • Offizieller Beitrag

    Den Arduiono / Atmega32 Bootloader sollte ich aber schon flashen können.


    Kann mir jemand sagen, wie das geht, sprich welche Hardware / Programmer man für sowas hernimmt?

    Wenn du einen Arduino hast, nimm den.

    Entweder als ArduinoISP oder Arduino for ISP.


    Sonst funxt auch m.W. ein PicKit.

    Da am besten bei Arduino nach Bootloader suchen.

  • Hi Stephan,


    ich hab' meinen Z80-MBC2 mit einen AVRISP MKII geflasht - den gibt's leider nicht mehr! Ich hab' das HEX-File direkt mit dem AVR-Studio geflasht. Ich kann Dir vielleicht aushelfen falls Du Probleme hast...


    Ich hab die brutale Lösung genommen und eine PI-Zero (wie beim RC2014) als VT100 misbraucht! :) Hab zwar auch ein paar von den ASCII Video Terminals von Geoff nachgebaut, war aber mit dem Bild nicht sooo zufrieden... Dazu hatte ich mir ein paar Platinen von MuP-VT VER-2 Platinen kommen lassen und etwas umgebaut.


    Auf meinem Z80-MBC2 hab' ich noch die Version VOR dem UCSD Pascal - das Borland Turbo-Pascal hat mir bislang gereicht.


    :)Franky

    • Offizieller Beitrag

    Ich bin jetzt ein Stück weitergekommen.

    - Arduino IDE installieren v. 1.8.12 (nicht die vom Debian-Paketmanager - zu alt - sondern die aktuelle von der Arduino-Seite)

    - USBAsp mit Z80 MBC2 verbinden (siehe Photo) - habe mir mit Patchkabeln einen Adapter ISP zu ICSP gebaut.

    - Mighty Core Bootloader installieren gemäß https://github.com/MCUdude/MightyCore#how-to-install

    Boards Manager Installation

    This installation method requires Arduino IDE version 1.6.4 or greater.

    • Open the Arduino IDE.
    • Open the File > Preferences menu item.
    • Enter the following URL in Additional Boards Manager URLs:
      Code
      https://mcudude.github.io/MightyCore/package_MCUdude_MightyCore_index.json
    • Separate the URLs using a comma ( , ) if you have more than one URL
    • Open the Tools > Board > Boards Manager... menu item.
    • Wait for the platform indexes to finish downloading.
    • Scroll down until you see the MightyCore entry and click on it.
    • Click Install.
    • After installation is complete close the Boards Manager window.


    Dann bei Boards "atmega32" und bei Programmer "USBAsp" und "Frequency Ext 16Mhz" bei "Tools" einstellen.

    Danach den Bootloader mit :


    Hit Burn Bootloader. If an LED is connected to pin PB0, it should flash twice every second.


    flashen. Das AVRDUDE gibt folgende Ausgabe:


    und wie beschrieben blinkt die IOS Led 2mal die Sekunde.

    Der erste Schritt scheint erfolgreich gewesen zu sein.

    • Offizieller Beitrag

    Beim nächsten Schritt komme ich nicht weiter. In der Files-Secttion dewr Projektseite https://hackaday.io/project/15…w-z80-computer#menu-files findet sich die Firmware S220718-R280819_IOS-Z80-MBC2.

    Ich lade also das das File in die Arduino IDE und möchte es kompilieren, aber er weigert sich:

    Code
    as: Unbekannte Option »-mmcu=avr5«

    Der "Verbose" Output ist folgender:


    Kennst ich jemand mit der Arduino IDE aus? Ich hab keinen Plan, was mir die Fehlermeldung sagen soll.


    Es gibt auf der Projektseite auch ein Hex File, was man alternativ schreiben kann, aber das bekomme ich auch nicht hin.


    Ich habe in der Konsole folgendes probiert:


    avrdude -p atmega32 -c usbasp -Ulock:w:0xCF:m -Uhfuse:w:0xD6:m -Ulfuse:w:0xAF:m -v S220718-R280819_IOS-Z80-MBC2.ino.with_bootloader_atmega32_16000000L.hex


    er macht auch was, z.B. die Fuses setzen, aber das hex schreiben tut er glaub ich nicht.


    • Offizieller Beitrag

    Ah ok, ich habe die falsch Syntax. So gehts.


    Warum ich den Sketch nicht kompilieren kann, weiss ich leider immer noch nicht.

  • Da fehlt der U-Befehl zum Schreiben des Flash-Inhaltes vor dem Dateinamen. Eigentlich komisch, dass er die Kommandozeile so überhaupt gefressen hat. Probier mal die Form avrdude -v -p atmega32 -c usbasp -U flash:w:dateiname und dann eben was auch immer du an Dateinamen brauchst, also z.B.


    Code
    avrdude -v  -p atmega32 -c usbasp -U flash:w:S220718-R280819_IOS-Z80-MBC2.ino.with_bootloader_atmega32_16000000L.hex
  • Kennst ich jemand mit der Arduino IDE aus? Ich hab keinen Plan, was mir die Fehlermeldung sagen soll.

    Ich benutze die Arduino IDE nicht, aber soweit ich weiß, ist sie durchaus etwas fragmentiert in verschiedene Lager und Software-Versionen. Vielleicht wurde das Projekt mit einer bestimmten Version erstellt, die mit Deiner nicht kompatibel ist.

  • Der Compiler stört sich an der Option -mmcu=avr5. Damit soll ihm gesagt werden, zu welcher Familie der Chip gehört, für den er Code erzeugen soll. Das deutet darauf hin, dass Deine Arduino-Version entweder zu alt oder zu neu ist.


    Ich konnte leider nicht sehen, wo der Parameter gegeben wird, aber Du könntest ja mal z.B. mit grep selbst danach suchen. Diese Option kannst Du sehr wahrscheinlich weg lassen, da dem Compiler ja mit -mmcu=atmega32 explizit das konkrete Familienmitglied genannt wird, da braucht er nicht noch die Familiengattung.

  • Ich habe ein Z84C0008PSC auf meinem Board. Wenn DU "RESET" und "USER" gleichzeitig drückst und "USER" dabei länger gedrückt hältst, kommst Du in ein Menü wo Du zwischen 4 und 8 MHz wählen kannst. Es gibt wohl auch eine Möglichkeit das ganze System zu übertakten - dazu brauchst Du dann aber einen 20MHz Quartz.


    :)Franky

  • Hi Stephan,


    wollte auch mal kurz hier antworten. Hab deine Fragen erst heute gelesen. Leider hab ich die letzten Wochen nicht viel Zeit. Die meisten Fragen sind ja schon geklärt.


    Ich habe einen Z84C0020PEC ( u.a. auf Ebay zu finden ) auf meinem Board laufen. Wichtig wäre noch, dass du auf dem Board die aktuellste Version für den Atmega32 flashst...


    Das hatte ich zunächst bei meinem Z80 Board nicht gemacht und mit der alten Version lief das verbundene VGA-Board dann nicht. Ich bekam bei laufendem Betrieb nur den blinkenden Cursor auf dem Monitor. Sonst tat sich nichts.


    Wenn ich das aber beim Überfliegen richtig gelesen habe, hast du aber die aktuellste geflasht.... würde ich nochmal überprüfen.


    Diese Anleitung hat mich damals auf das Projekt gebracht


    Aber hier wird auf die alte Atmega Sketch-Version verwiesen.... vielleicht klären sich damit noch aufkommende Fragen. Ist ganz übersichtlich verfasst.

    Der arbeitet auch mit der Arduino-IDE.


    Zum VGA-Board noch der Hinweis, ich konnte, warum auch immer, nicht alle PS/2-Tastaturen nutzen....erst durch Rumprobieren habe ich eine passende gefunden. Also wenn da ein Problem auftritt, mal die Tastatur tauschen.


    Ich hoffe, auch die Infos helfen dir bei den weiteren Schritten. Schau mal, ob du meine PM´s noch hast. Da hatte ich auch was zu geschrieben.


    VG und viel Erfolg


    Chris

    • Offizieller Beitrag

    Hallo!

    Ich bin einen kleinen Schritt weiter. Mein RAM ist angekommen. Ich habe dann das Board mal in Betrieb genommen mit einem USB to RS232 Adapter and GTKTerm unter Linux.


    Das funktioniert auch auf Anhieb (115200, 8N1, Xon/xoff).


    Ebenso Zugriff auf SD Karte und die RTC.


    Ich komme auch in das Bootmenu und kann da Einstellungen vornehmen.


    Leider startet es nicht, wenn ich CP/M oder BASIC/Forth etc laden will.


    Er bleibt immer hängen, wenn die Meldung "Z80 is running from now" kommt.


    Wenn das passiert, geht RESET auf high und der Takt kommt am Takteingang der CPU an.


    Die Umschaltung 4/8Mhz funktioniert auch.


    Hat jemand eine Idee, was der Fehler sein könnte?


    Viele Grüße

    Stephan

  • ...hast Du nun über die Arduino IDE selber compiliert? - bin nicht so der Arduino Versteher und hatte nicht die ganzen anderen Dateien mit in das Projekt kopiert da ich davon ausging das die .ino ausreichen würde... - das hat (wenn ich mich recht erinnere) den selben Fehler wie bei Dir produziert... (...beim Compilieren gab's keine Fehlermeldung - die IDE hat sich nur andere Librarys eingebunden die sie gefunden hat und konnte daher nicht auf die SD zugreifen...)


    :)Franky

  • DRAM/SRAM Tester vom 8Bit-Museum.de

    ja, den hier meinte ich - da fummelt er doch ständig dran rum - vielleicht sprichst ihn mal selber an?


    Zitat: "Mit einem Adapter können auch exotische Speicherchips getestet werden, z.B. das SRAM 6810 (128 x 8 Byte im DIP-24 Gehäuse)."

    ich bin signifikant genug:razz:

  • ...hast Du nun über die Arduino IDE selber compiliert? - bin nicht so der Arduino Versteher und hatte nicht die ganzen anderen Dateien mit in das Projekt kopiert da ich davon ausging das die .ino ausreichen würde... - das hat (wenn ich mich recht erinnere) den selben Fehler wie bei Dir produziert... (...beim Compilieren gab's keine Fehlermeldung - die IDE hat sich nur andere Librarys eingebunden die sie gefunden hat und konnte daher nicht auf die SD zugreifen...)


    :)Franky

    Hi Stephan,


    ich kann den Fehler leider momentan mit meinem laufenden Board nicht reproduzieren, da mein Programmer verliehen ist. Einen Atmega32A hätte ich hier noch, um deinen Weg über avrdude zu reproduzieren.


    Ich kann mich auch nur noch erinnern, dass ich damals die Arduino-IDE benutzt habe...danach musste ich das Board mit der neuen Version flashen, damit das uTerm-Board dann funktionierte.


    Ebenfalls mit der Aduino-IDE und dem Vorgehen aus der schon geposteten Anleitung ( https://www.instructables.com/…memade-Computer-Z80-MBC2/ ) vorgenommen.


    Bei mir hat das zum Erfolg geführt. Ich kann das frühestens ab dem 18.05. im Urlaub testen.

    Einmal editiert, zuletzt von Kroiter ()

    • Offizieller Beitrag

    Ich glaube eigentlich nicht, daß es am flashen liegt. Die "IOS" Software läuft ja, und lässt sich bedienen.


    Ich habe mal ein paar Messungen am 128kx8 SRAM gemacht. Auf den IO Leitungen ist ca. 2 Sekunden lang nach dem Reset was los.

    Ebenso scheint die CE1 und CE2 richtig angesteuert zu werden.


    Danach ist nur noch auf A0-A14 was los. Da sind Rechtecksignale zu sehen


    Ich habe nochmal verschiedene RAM ICs und Atmegas probiert. Alles mit dem selben Ergebnis.


    A0 : 500kHz

    A1 : 250 kHz

    A2 : 125 kHz

    A3 : 61 kHz

    A4: 30 kHz

    A5 : 15 kHz

    A6 : 8 kHz

    A7 : 1 Mhz

    A12 : 1Mhz

    A16 : Nur nadelförmige Impulse

    A15 : 1 Mhz

    A13 : 1 Mhz usf-



    Weiss jemand, ob das so gehört? Habe keinen Plan davon. funkenzupfer weiss das vielleicht?

    • Offizieller Beitrag

    Ich schick dir am besten meinen LA. :)


    Ich hab den Thread nicht verfolgt, muesste mich erst einlesen.

    A0 bis A6 wird anscheinend streng linear durchlaufen, sind 128 Bytes.

    Ich hab gerade was von CP/M booten gelesen. Kann es sein, das ein CP/M Record (128byte Sektor) gelesen wird?


    Fuer genauere Analysen brauch ich etwas Zeit oder 'ne Glaskugel. :)

    Ich ueberleg mal.

    • Offizieller Beitrag

    Sorry, ich will Dich jetzt nicht stressen damit!

    Du stresst mich nicht damit. Das ist kein Problem.


    Aber ich muss mich erst einlesen. Die Infos vom Uberfliegen des Threads reichen (noch) nicht.