Kennt jemand den Z80 MBC2?

    • Offizieller Beitrag

    Auf Hackaday gefunden. Läuft mit CP/M, UCSD Pascal, BASIC, Forth etc.


    Hat eine RTC und entweder eine RS232 oder ein eingebautes Terminal für PS/2-VGA.


    https://hackaday.io/project/15…ics-homemade-z80-computer


    Eigentlich ganz witzig, aber mir fehlen da definitiv die Schnittstellen..... Wie soll man da Drucker/Plotter etc mit ansteuern ? ;)

  • Hi Toshi,


    den habe ich mir auch mal Anfang 2019 auch zusammengebaut ....siehe Avatar.


    Ich hab hier noch ein unverbautes Board rumliegen. Hab mir mehrere in Asien produzieren lassen. Wenn jemand Interesse hat, dann kann ich das gegen Porto abgeben.


    Ne schicke Anleitung, selbst für Anfänger wie mich umsetzbar, findet man hier. Hab deinen Link nur überflogen und nicht geschaut, wie das da beschrieben ist.


    https://www.instructables.com/…memade-Computer-Z80-MBC2/



    RAM :

    https://www.ebay.de/itm/5PCS-T…6120dd:g:n3cAAOSwcE9bMVgR


    Atmega :


    https://www.ebay.de/itm/ATMEGA…545d8f:g:RFQAAOSwUn9aFXgs


    Z80 : hab ich auch verbaut


    https://www.ebay.de/itm/1pcs-Z…03c189:g:rJEAAOSwoixcn0oV


    74hc00 - ca. 1 euro


    MCP23017 - ca. 1,95 euro

    RTC DS3231 - ca. 3,60 euro

    Micro SD Card - Adapter - ca. 1,80 euro



    und dann noch Kleinkram aus der Elektronikerwerkstatt.


    Das geht bestimmt noch billiger !!!


    Falls jemand auf das Projekt Lust hat und wissen will, was das so "round about" kostet. Habs mal kurz auf der Bay nachgesehen....


    Hab den sogar schon über Terminal an einem Raspi gehabt.... mir hat das Projekt Spaß gemacht.


    Gn8 und Gruß


    Kroiter

  • Hier die .zip-Datei, die ich bei PCBway hochgeladen und in einer Stückzahl von 5 bestellt habe.


    Produktionskosten sind marginal, der Versand und Paypal sind teuer gewesen. Also falls jemand Interesse hat und noch andere findet.


    Umgerechnet habe ich pro Board ca. 3 Euro bezahlt. Vielleicht kennt noch jemand eine andere Quelle, wo die Versandkosten nicht so hoch sind?


    - pcbway.com


    - W122076ASF1_W156793ASI7_A04061.zip

  • Dafür gibt es auch einen Emulator:


    https://github.com/EtchedPixels/RC2014


    Der Emulator kann außer dem RC2014 Z80 (und 8085) System auch den Z80-MBC2

    und noch mehrere andere Z80 Rechner emulieren.


    Die nötigen bootloader und disk images für den Z80-MBC2 findet man hier:


    https://cdn.hackaday.io/files/…SD-S220718-R280819-v1.zip


    Funktioniert bei mir aber nur mit einer kleinen Änderung

    (siehe mbc2.patch)



    linux-4232:/home/joe/oldcomputers/RC2014-master # ./mbc2 -s 3 -b ucsdldr.bin -f

    Loaded 1670 bytes at 0000.

    64K UCSD p-System IV.0 CBIOS V1.1 for Z80-MBC2, Copyright (C) 2019 by GmEsoft

    Build: Aug 24 2019 - 21:57:34


    Reading Secondary Bootstrap



    Booting to UCSD Pascal



    Command: E(dit, R(un, F(ile, C(omp, L(ink, X(ecute, A(ssem, D(ebug,? [IV.0 B3h]








    Welcome SYS1, to


    U.C.S.D. p-System IV.0


    Current date is 14-Mar-20





    Von linux aus kann man auf die UCSD-P Disk Images mit Hilfe von

    ucsd-psystem-fs zugreifen.


    http://ucsd-psystem-fs.sourceforge.net/download.html


    siehe (ucsd-psystem-fs.txt)


    Die CP/M Disk Images kann man mit cpmtools unter Linux lesen/schreiben


    Die dazu nötige diskdefs Datei ist ebenfalls in SD-S220718-R280819-v1.zip

    enthalten.


    For CP/M 2.2 and QP/M 2.71:

    select "z80mbc2-d0" only for disk 0, and "z80mbc2-d1" for the others (disk 1 - 15);


    For CP/M 3:

    select "z80mbc2-cpm3" for all disks.



    Remenber that virtual disks filenames are "DSyNxx.DSK", where "xx" is the disk number,

    and "y" is the Disk Set.

  • Die nötigen bootloader und disk images für den Z80-MBC2 findet man hier:

    https://cdn.hackaday.io/files/…SD-S220718-R280819-v1.zip

    Die "alte" Version ist jetzt nur noch hier im Archive:
    https://web.archive.org/web/20…SD-S220718-R280819-v1.zip

    Die neu Version ist z.Zt. unter
    https://cdn.hackaday.io/files/…SD-S220718-R240620-v1.zip

  • ngc224 Danke fuer die Commandline-options fuer CP/M 2.2 und 3.0 in der Datei mbc2-cpm-log.txt


    Woher hattest Du die Parameter?
    Ich habe den z80-MBC2 heute mal unter armbian compiliert und brauchte mit der aktuellen github-version
    https://github.com/EtchedPixels/RC2014/archive/master.zip (last commit 03.05.2020)
    keinen patch zum compilieren/starten :)


    Ich muss noch schauen, wie man wieder auf dem Emulator raus kommt (ausser die PID in einer anderen Console abschiessen). ;)


    Ctrl-\ (Backslash) - wie auf https://github.com/EtchedPixels/RC2014 steht - scheint nicht beim z80-MBC2 zu klappen...

  • >>Woher hattest Du die Parameter?

    Die Parameter habe herausgefunden, indem ich mir den Source

    Code angeschaut habe.

    Ohne den kleinen Patch hat es bei mir nicht funktioniert, da diskset

    in mbc2.c immer 0 war !


    Ctrl-\ (Backslash) funktioniert bei mir schon !

  • Rom image Namen und Ladeadressen siehe


    https://hackaday.io/project/15…ics-homebrew-z80-computer


    Z80-MBC2/S220718-R280819_IOS-Z80-MBC2/S220718-R280819_IOS-Z80-MBC2.ino


    // ------------------------------------------------------------------------------

    //

    // File names and starting addresses

    //

    // ------------------------------------------------------------------------------


    #define BASICFN "BASIC47.BIN"

    #define FORTHFN "FORTH13.BIN"

    #define CPMFN "CPM22.BIN"

    #define QPMFN "QPMLDR.BIN"

    #define CPM3FN "CPMLDR.COM" // CP/M 3 CPMLDR.COM loader

    #define UCSDFN "UCSDLDR.BIN" // UCSD Pascal loader

    #define AUTOFN "AUTOBOOT.BIN"

    #define Z80DISK "DSxNyy.DSK" // Generic Z80 disk name (from DS0N00.DSK to DS9N99.DSK)

    #define DS_OSNAME "DSxNAM.DAT" // File with the OS name for Disk Set "x" (from DS0NAM.DAT to DS9NAM.DAT)

    #define BASSTRADDR 0x0000 // Starting address for the stand-alone Basic interptreter

    #define FORSTRADDR 0x0100 // Starting address for the stand-alone Forth interptreter

    #define CPM22CBASE 0xD200 // CBASE value for CP/M 2.2

    #define CPMSTRADDR (CPM22CBASE - 32) // Starting address for CP/M 2.2

    #define QPMSTRADDR 0x80 // Starting address for the QP/M 2.71 loader

    #define CPM3STRADDR 0x100 // Starting address for the CP/M 3 loader

    #define UCSDSTRADDR 0x0000 // Starting address for the UCSD Pascal loader

    #define AUTSTRADDR 0x0000 // Starting address for the AUTOBOOT.BIN file

  • Ohne den kleinen Patch hat es bei mir nicht funktioniert, da diskset

    in mbc2.c immer 0 war !


    Ctrl-\ (Backslash) funktioniert bei mir schon !

    OK - ohne patch ging es natuerlich nur bei CPM/ 2.2 :)
    Fuer CP/M 3.0 brauchte ich auch den patch - habe ihn per Hand rein nach der genannten Zeile 400 in mbc2.c


    Allerdings kommt UCSD Pascal nur bis:
    Reading Secondary Bootstrap

    Booting to UCSD Pascal


    und steht dann bei mir.

    Hast Du eine Idee wo das Ctrl-\ definiert ist?
    Wird ja sicher per include einer .h Datei eingebunden und gilt normal bei allen Emulatoren aus dem Paket?

    Ob das in armbian abgefangen wird?

    [EDIT] OK - putty macht das Ctrl-\ im Moment nicht "direkt", aber Ctrl-\ ist ASCII 28
    so kann man ALT festhalten und auf dem Nummernblock 28 tippen und ALT loslassen.
    Also eine erste Zwischenloesung :)



    Auf welchem System hattest Du es kompiliert?


    Ich habe hier mal die DEC-Zahlen dazu geschrieben (zu meinem Verstaendnis) :)

    Einmal editiert, zuletzt von guidol ()

  • RC2014-master # ./mbc2 -s 2 -b ucsdldr.bin -f

    RC2014-master # ./mbc2 -s 3 -b ucsdldr.bin -f

    funktioniert bei mir ohne Probleme !

    sollte aber "nur" gehen mit Diskset 3 (-s 3) weil
    DS3NAM.DAT = UCSD Pascal
    ;)


    Leider bleibt er trotzdem bei mir haengen bei "Booting to UCSD Pascal":
    ./mbc2 -s3 -b ucsdldr.bin -a0 -f


    Was geht:

    ./mbc2 -s0 -b cpm22.bin -a 53728 -f

    = CP/M 2.2


    ./mbc2 -s2 -b CPMLDR.COM -a 256 -f

    = CP/M 3.0


    ./mbc2 -b forth13.bin -a 256 -f

    = Forth


    ./mbc2 -b basic47.bin -i

    = BASIC 47


    Was nicht geht:

    ./mbc2 -s1 -b QPMLDR.BIN -a 128 -f

    = mbc2: short image 'QPMLDR.BIN'.


    ./mbc2 -s3 -b ucsdldr.bin -a 0 -f

    = bleibt haengen bei "Booting to UCSD Pascal"


    ./mbc2 -f -s 4 -b ./cos.bin -a0
    = Collapse OS haengt mit "Loaded 6243 bytes at 0000."

    3 Mal editiert, zuletzt von guidol ()

  • >>sollte aber "nur" gehen mit Diskset 3 (-s 3) weil

    <<DS3NAM.DAT = UCSD Pascal


    Bei mir funktioniert es mit Diskset 2 und 3 !


    Ich habe jetzt DS2NAM.DAT und DS3NAM.DAT mal gelöscht und es

    funktioniert trotzdem.

    Wird anscheinend nicht benötigt ?

    Was für eine Terminal Emulation verwendest Du ?


    Hast du es schon mal ohne -f probiert ?

  • Ohne DS2NAM.DAT bzw DS3NAM.DAT wird bei Dir auch gehen, weil die Diskimages/Disk-Sets noch da sind.
    Ohne Diskset kommt er bei mir nur bis "Reading Secondary Bootstrap" und mit Diskset dann bis
    "Booting to UCSD Pascal"


    Als Terminal-Emulation nutze ich puTTY und dort TERM=linux oder TERM=vt100

    aendert sich aber leider nicht am haengenbleiben :(


    Ich habe es auch schon mal ohne -f probiert und wie beim BASIC (weil es da geholfen hat) auch mal mit -i

    Deinen Patch - der uns ermoeglicht das Diskset auszuwaehlen und nicht immer nur 0 zurueckgibt - habe ich beim Github-Repository des Emulators als Pull-Request eingereicht:
    Update mbc2.c to have a functional -s option for selecting diskset #20

    https://github.com/EtchedPixels/RC2014/pull/20

    Evtl. muss ich mal testen, ob sich was aendert am Verhalten, wenn ich es unter Ubuntu auf einem PC kompiliere gegen das armbian auf meinem NanoPi Neo2 SBC.

  • auf einem PC mit debian startet UCSD-Pascal mit

    ./mbc2 -s 3 -b ucsdldr.bin


    # uname -a

    Linux dsm600 5.5.0-0.bpo.2-686 #1 SMP Debian 5.5.17-1~bpo10+1 (2020-04-23) i686 GNU/Linux


    # more /etc/os-release

    PRETTY_NAME="Debian GNU/Linux 10 (buster)"

    NAME="Debian GNU/Linux"

    VERSION_ID="10"

    VERSION="10 (buster)"

    VERSION_CODENAME=buster

    ID=debian


    Ich hatte es auf meinem 2ten NanoPi Neo2 versucht, der auch debian buster hat, aber auch da bleibt UCSD-Pascal haengen.

    PS: Der Pull-Request wurde mit Dank an- und uebernommen :)

    Zitat
    Zitat

    EtchedPixels commented 28 minutes ago

    Thanks
    EtchedPixels merged commit a7180c8 into EtchedPixels:master 28 minutes ago

  • Ich habe es jetzt auf einem Beagleboard ausprobiert.


    Da bleibt es auch hängen !!


    [ 0.000000] Linux version 3.0.17+ (koen@dominion) (gcc version 4.5.4 20111126 (prerelease) (GCC) ) #1 Wed Jan 25 16:33:50 CET 2012

    [ 0.000000] CPU: ARMv7 Processor [411fc083] revision 3 (ARMv7), cr=10c53c7d

    [ 0.000000] CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache

    [ 0.000000] Machine: OMAP3 Beagle Board


    root@generic-armv7a:/RC2014-master# ./mbc2 -s 3 -b ucsdldr.bin -f

    Loaded 1670 bytes at 0000.

    64K UCSD p-System IV.0 CBIOS V1.1 for Z80-MBC2, Copyright (C) 2019 by GmEsoft

    Build: Aug 24 2019 - 21:57:34


    Reading Secondary Bootstrap


    Booting to UCSD Pascal <--- HÄNGT !!!


    Und auf einem PowerPC Board mit 8541E CPU (E500)

    Da funktioniert es auch nicht !


    CPU: 8541E, Version: 1.1, (0x807a0011)

    Core: E500, Version: 2.0, (0x80200020)

    Clock Configuration:

    CPU0:666.667 MHz,

    CCB:266.667 MHz,

    DDR:133.333 MHz (266.667 MT/s data rate), LBC:33.333 MHz

    CPM: 266.667 MHz

    L1: D-cache 32 kB enabled

    I-cache 32 kB enabled



    Linux version 3.7.1 (root@linux-szub) (gcc version 4.8.2 (GCC) ) #1 Tue Nov 28 14:06:36 CET 2017


    root@generic-powerpc:/RC2014-master# ./mbc2 -s 3 -b ucsdldr.bin

    Loaded 1670 bytes at 0000.

    64K UCSD p-System IV.0 CBIOS V1.1 for Z80-MBC2, Copyright (C) 2019 by GmEsoft

    Build: Aug 24 2019 - 21:57:34


    Reading Secondary Bootstrap


    Booting to UCSD Pascal


    Booting to UCSD Pascal


    Booting to UCSD Pascal


    .

    .


    ENDLOS !!!!

  • auf meinem Acme Systems FOX G20 bleibt es auch haengen:
    Linux fox-g20 4.9.124+ #2 Sat May 23 01:33:23 +03 2020 armv5tejl GNU/Linux


    Ich fand interessant, dass das BASIC mit -i geht - es aber scheinbar keinen Einfluss bei den anderen Moeglichkeiten hat. Ich haette fast drauf getippt, dass das UCSD Pascal dann auch mehr macht.

  • [EDIT] OK - putty macht das Ctrl-\ im Moment nicht "direkt", aber Ctrl-\ ist ASCII 28
    so kann man ALT festhalten und auf dem Nummernblock 28 tippen und ALT loslassen.
    Also eine erste Zwischenloesung :)

    Da man mit Ctrl-\ auch den RC2014-Emulator beendet, habe ich nochmal nach einer Loesung gesucht und fand in dem putty-Clone/Fork kiTTY folgende Option in der kitty.ini dort die Section [Shortcuts]
    (leider gibt es wohl keine putty.ini?):

    Code
    list={CONTROL}{DOWN}
    {CONTROL}{DOWN}=\x1c

    D.h. die Tastenkombination Ctrl-CursorDown sendet ASCII 28 bzw. HEX 1C und beendet dann somit den Emulator und man steht wieder am Prompt ;)