MFA Gedanken für eine Z80 CPU Karte

  • Hier:

    http://www.vaxman.de/projects/Z80_mini/index.html

    http://www.vaxman.de/projects/tiny_z80/ (Monitorlisting)


    Gibt es eine Mini Z80 Karte. Da ist quasi schon alles drauf (CPU, Rom, Ram, Serieller Controller).

    Anstatt serieller DB9 bestücken, Rx + Tx zum Bus verbinden (Rx=29c; Tx=30c).

    GND (32a+c) und +5V (1a+c) vom Bus holen zur Versorgung.

    Schnittstelle passend zur Video/Keyboard Karte konfigurieren im Monitorprogram (4800 Baud).


    Damit nutzt man quasi 'nur' die Backplane, Stromversorgung und Video/Keyboard Karte - kann aber ggf. mit Monitorerweiterungen dann auch andere Karten nutzen. Das wäre dann quasi Schritt 1 mit minimaler Verbindung zur Backplane.


    Schritt 2: A0-A7 (evtl. reicht auch A0-A3?), D0-D7 und /IOR+/IOW an den Bus ankoppeln = I/O Baugruppen können angesprochen werden (Und das sind viele).

    (/MEMR+/MEMW werden ja fast nur für den eigenen Rom+Ram genutzt - was hier schon mit auf der Platine wäre)


    Schritt 3 könnte dann eine vollständige Busankopplung sein - fragt sich nur ob das hier so wirklich viel Sinn macht..?


    "Zufällig habe ich noch solche Platinen ;) "


    Bei mir stehen aber zuerst noch Rom/Ram-Karte an und danach "Ersatz" der Video/Keyboard-Karte durch Arduino+PS/2 Tastatur.


    Falls jemand sich also daran versuchen möchte und das Monitorprogram entsprechend anpassen kann, so kann ich ihm gerne eine Z80 Leerplatine zukommen lassen. Dann bitte PN.


    Bei mir wird das sicher noch Monate dauern, bis ich mal dazu komme.


    Peter

  • Hi Peter,


    solche Gedanken hatte ich auch schon. Ging in eine etwas andere Richtung, aber man ist ja für alles offen ;)


    Was ich vermutlich nicht machen würde ist die Verwendung der Terminalkarte - wenn mich was nervt bei dem Gerät sind das die 4800 Baud.

    Dann lieber mit einem Terminal und 19200 Baud (das sollte mit der UART doch drin sein?).

    Oder die Terminalkarte mal hochdrehen auf 9600 oder 19200 - afaik ist der 8085 der Flaschenhals, die Videokarte kann sicher mehr. Vom Platzbedarf kostet ein Terminal wie z.B. das gerade aktuelle Wyse60 nicht mehr als Bildschirm und Tastatur.


    Ich habe das Z80-Projekt bisher nur kurz überflogen - das könnte mich reizen, dort einzusteigen. Ich muss mal sehen, was ich an Material da habe...


    Ich melde mich dann noch mal.

  • Klar - geht alles.. die Idee war, diese Z80 Karte einfach anstatt der 8085 CPU Karte einzustecken - und fertig.

    Dann eben Monitor+Tastatur, Baugruppenträger+Stromversorgung und im 2ten Schritt die IO Baugruppen zu nutzen.

    Deshalb würde ich hier der Einfachheit halber an den 4800 Baud festhalten (ich meine aber auch in der Doku gelesen zu haben, das die Graka evtl. nicht mehr kann..?)(Wobei ich noch eine ähnliche Graka hier am Arduino Mega dran haben mit 9600 Baud).


    Und dann evtl. wieder die 8085 CPU Karte rein.. ;)


    Wenn man auf einem (z.B. diesem) Design aufsetzt, spart man sich viel Arbeit.. Für Schritt 1 einfach die Platine aufbauen, Monitorprogramm auf 4800 Baud ändern und 4 Leitungen verbinden ;)


    Platinen habe ich ca. 7-8 da..kannst du gerne eine haben..


    Peter

    github.com/petersieg

  • Ich habe mir gestern das Z80-mini Projekt mal genauer angesehen.

    Die Software habe ich nur überflogen, die sieht interessant aus. Viel zunächst unnötiges Zeug dabei (Unterstützung der nicht vorhandenen IDE-Schnittstelle), aber das kann ja noch kommen.

    Ich habe es auch mal assembliert, hat auf Anhieb geklappt. Die Anpassung auf 4800 Baud ist auch kein Thema.


    Problematisch sehe ich die fehlende Adressdekodierung für I/O. Der 16550 belegt den gesamten Adressraum, und damit ist Stufe 2 in Deinem Plan etwas aufwendiger. Und ohne die Möglichkeit, die anderen I/O Baugruppen anzusprechen bringt der Einbau in den MFA nicht wirklich viel ;)


    Vielleicht reicht es, wenigstens A7 an einen der CS-Eingänge zu legen, dann hat man wenigstens die Hälfte der Adressen frei. Die nötige Anpassung des Monitors an die Adresse 0x80 statt 0x00 ist kein Thema.


    Ich werde jedenfalls wie vereinbart die Testexemplare aufbauen, dann können wir sehen, wie es weiter geht. Bin gespannt...

  • Es könnte leider noch etwas komplizierter werden. Ich hatte gestern mal versucht von einem Arduino etwas über die Videokarte auszugeben mit 4800 Baud, was leider nicht geklappt hatte. Habe mir heute dann nochmal die Doku zur Videokarte angesehen..


    Die Videokarte läuft defaultmäßig mit 1200 Baud! Man kann sie wohl auch auf 600 Baud umjumpern.

    PLUS!! Die Karte scheint einen 2MHz Takt von der CPU Karte zu benötigen!! (Siehe Bild).


    D.h. evtl. doch die CPU anstatt mit 4MHz mit 2MHz versorgen und diesen Takt am richtigen Pin auf den Bus koppeln.

    (Oder die 4MHz durch 2 geteilt). Einen 2MHz Oszi konnte ich auf meiner Karte nicht finden. Auch den Jumper P1/P2 nicht.


    Und die Baudrate muss 1200 Baud betragen, um mit der Video+KBD Karte zu sprechen.


    (Ich konnte heute mit der CPU unter Linux+Minicom sprechen - anstatt der Video/KBD Karte mit 4800 oder 1200 Baud - ABER 7E1 musste ich einstellen - 8N1 gab nur Schmutzzeichen)


    EDIT: Der 2MHz Pin ist 2a. Und es gibt doch den 2MHz Taktgenerator auf der Platine. Kein Quarz-Oszi, sondern ein 4049 IC Nr. 17. Nur die P1-P2 Brücke habe ich immer noch nicht gesehen.. Ich denke trotzdem wäre es schöner den Takt analog wie die original CPU extern über Pin2a einzuspeisen.


    EDIT2: P0, P1+P2 sind Lötbrücken zwischen Platinenrand und IC12 74LS93 Nähe der VG-Leiste. Default=P0+P1 gebrückt = externer 2MHz Takt von CPU.


    Peter

  • Sonst, wenn du nen 4/8/16 MHz Oszillator hast, einfach mit nem Zähler (74161 o.ä.) runterhalbieren.

  • Klar - geht alles.. die Idee war, diese Z80 Karte einfach anstatt der 8085 CPU Karte einzustecken - und fertig.

    Mittlerweile habe ich eine von Peters Platinen aufgebaut und wie geplant in den MFA eingesetzt.


    Zu dem Z80 mini System muss gesagt werden, dass es wirklich Mini ist: Z80, 16550 UART, 32K RAM, 32K EPROM, je 1 Quarzoszillator für den Prozessor und den UART, eine Resetschaltung und zwei Gatter zum Adressieren von RAM und ROM. Leider keine Adressdekodierung für Peripheriegeräte, keine I/O-Ports, nicht mal eine Power LED.

    Aber zu dem Projekt gehört ein netter Monitor samt Forth Interpreter.


    Für die erste Montage habe ich eine Parallelkarte genutzt. Neben der Stromversorgung brauche ich nur 3 Leitungen zum Bus: RX, TX und den 2MHz Systemtakt.



    Hier sieht man die mit Kabelbindern befestigte und fliegend verdrahtete Platine auf der Parallelkarte. Und damit läuft das dann so wie von Peter vorgeschlagen: 8085-Karte raus, Z80 Karte rein, loslegen. Das Ergebnis sieht dann so aus:



    Das ist die Meldung des Monitorprogramms. Ich müsste natürlich die Baudrate sowie die Parameter des UART auf Werte einstellen, die von der Videokarte erwartet werden (1200 Baud, 7 Datenbits, keine Parität, 2 Stopbits), und in einem ersten Schritt habe ich die Ausgabe dieser Meldung an die 64 Zeichen des MFA-Bildschirms angepasst. Da ist aber noch einiges mehr zu tun.


    Wichtiger ist aber der Anschluss der Daten- und Adressleitungen an den Bus, und wenigstens eine minimale Adressdekodierung. Erste Ideen haben wir schon...

  • Nun läuft auch meine Z80 CPU - Danke an Georg!

    Ich habe eine Lochrasterplatine und VG-Leiste von reichelt verwendet.


    Wenn wir jetzt noch den IO Bereich am Bus angesprochen bekommen, ist das eine CPU Alternative zur original 8085 CPU.

    (Für alle, denen noch eine fehlt im Baugruppenträger..)


    Peter

  • So, mit etwas Verspätung kommt jetzt auch der Quellcode für das Monitorprogramm.


    Mittlerweile habe ich ja meine Videokarte auf den "allgemeinen Standard" 7E2 umgestellt und auch den Monitor entsprechend angepasst. Weitere Änderungen:

    * Anpassung auf die 64 Zeichen Zeilenbreite

    * Ausblenden der nicht unterstützten Disk-Befehle

    * Umbau des Forth-Interpreters auf CR statt LF, damit die Tastatur richtig arbeitet

    * Verwendung von Port 80h statt 0 für den UART


    Die letzte Modifikation erlaubt es, die Z80-Karte so umzubauen, dass der UART nicht mehr den ganzen Adressraum belegt, sondern die erste Hälfte für andere Peripherie frei lässt.


    Von vaxman, dem Autor des Monitors, haben wir die Erlaubnis zur Nutzung, Modifizierung und Veröffentlichung des Codes. Herzlichen Dank dafür an Bernd!


    Im Bild ist meine Z80-Karte, geparkt auf einer Parallelkarte. Da meine CPU derzeit mit 6MHz läuft, lasse ich die 8085-Karte momentan mit im System für den 2MHz-Takt - dort habe ich nur die V.24-Treiber entfernt. Sobald ich aber an den Daten- und Adressbus drangehe muss das natürlich anders gelöst werden.




    Quellcode und Binardatei:

    Z80mini_MFA_016.zip


    Georg

  • Das Video-Keyboard-Interface 8.4 läuft laut Doku mit bis zu 19200 baud und kann auch die normal verwendeten 80x24 bzw. 80x25 Zeilen.

    Ja, feine Sache. Habe ich leider nicht :(

    Ich muss mich mit dem 8.2 begnügen.


    Weißt Du zufällig, ob das auch die 2MHz benötigt?

  • Jup. Und das Clock 2MHz Signal scheint nicht benötigt zu sein (ist im Schaltplan nirgendwo verwendet).


    Trotzdem: MAT85 Einstellung ist 1200 Baud 7E2.


    Somit kann die 8.4 deutlich mehr und ist schneller und ist Voraussetzung für CP/M - aber um rückwärts kompatibel zu sein.. hat man wenig Wahl..


    Oder das Monitorprogramm muss eine automatische Baudratenerkennung haben :(


    Peter

    github.com/petersieg

    • Offizieller Beitrag

    Auch die serielle MAT32k arbeitet mit 9600 mit der CPU-Seriellen.


    Für CP/M braucht man die progr. serielle Schnittstelle wegen dem UART Rx-Status.


    Die Abhängigkeiten beim MFA sind nicht immer ganz einfach.

    • Offizieller Beitrag

    Die V24 ist eigentlich gleich mit der prog. ser. Schnittstelle, hat nur den DSub nach vorne geführt.


    Ja, ist auch beschrieben.

    Aber wie so oft in der MFA-Doku schwer zu finden.


    Ich nenne sowas Ostern-Doku. :)


    Nachtrag:

    Und die V24 hat einen Jumper mehr für die Baudrateneinstellung. Damit gehen dann 9600 bps.

    Das kann man bei der PSS (ProgSerSchn) per Draht auch erreichen.

  • So langsam verliere ich den Überblick :fp:


    Wir haben im Original MFA folgende Monitorversionen:

    MAT85 und MAT85+

    MAT32K für serielles Interface

    (Gibt es für die Videokarte(n) eine spezielle MAT32?)


    Und wir haben folgende Videokarten:

    Video 8.2

    Video 8.4


    Und zusätzlich dann noch die seriellen Karten.


    Frage: was kann man kombinieren?

    Beispiele:

    1. Geht Video 8.4 mit MAT85?

    2. Geht Video 8.2 mit einem MAT32?

    3. MAT85 und serielle Karte?


    Und wie schnell kann das laufen?

    Wenn die MAT32 19200 kann, geht das wohl kaum über den Bus und die 8085-serielle? Aber wie sonst?

  • MAT32K-S ist die "normale" Version für die Videokarte, MAT32K-T ist für ein Terminal


    Video 8.4 kann sowohl für MAT32K als auch für CP/M eingestellt werden und kennt sowohl einen 8.2-kompatiblen als auch einen erweiterten Modus, in dem sie ein Televideo TV950-Terminal emuliert.



    MAT85 durch SP1 erweitert heißt MAT85+


    Soweit mal aus der Hüfte geschossen.

    NCR DMV/Olivetti M20/ITT 3030/DEC Rainbow 100/Siemens PC-D/OlyPeople/MFA 8085/TA Alphatronic

    • Offizieller Beitrag

    Video 8.2 läuft mit 600 oder 1200 baud

    Video 8.4 mit 110 ... 19200 baud.

    MAT85 läuft mit Autoerkennung der Baudrate bis 1200 baud auf der CPU-seriellen.

    MAT32K gibt es in verschiedenen Versionen:

    9600 baud auf CPU-serieller

    9600 baud auf prog. serieller

    1200 baud auf CPU-serieller


    Man muß halt das jeweils zusammenpassende kombinieren. :)

  • OK, OK, jetzt kommen die Fakten ja schneller, als ich lesen kann :)


    CP/M habe ich vergessen, dafür braucht es doch auch ein Miminal ROM? Oder geht das mit dem MAT32K?


    Und MAT32K mit 9600 über die CPU? Muss ich mal irgendwie ausprobieren...


    Jedenfalls scheint es noch viel mehr Kombinationen zu geben als ich befürchtet hatte.

    • Offizieller Beitrag

    Für CP/M ist extra eine 'Bootrom'-Logik auf der 16K und 64K RAM/ROM Karte vorgesehen.

    Es wird nur ein 2K Bootrom verwendet, das bei einem Zugriff auf einen einstellbaren Speicherbereich ausgeblendet wird.

    D.h., wenn das BIOS von der Disk geladen ist, wird das Bootrom ausgeschaltet, und es stehen 64K RAM für CP/M zur Verfügung.

    • Offizieller Beitrag

    MAT32k gibt als Serielle (CPU) und Terminal (ProgSerSchn) Version.

    Die serielle macht fest 9600. Bei der Terminal ist es von den Jumpern auf der PSS abhaengig, also per Jumper bis 4800, per Draht löten bis 9600.


    Somit ist der MAT32k nur für die Video8.4 geeignet.


    1.) MAT85 und Video8.4 funxen.

    2.) M.W. kann die Video 8.2 keine 4800 oder 9600. Mit kleinen Umbauten am Baudratenteiler sind allerdings auch 4800 oder 9600 möglich.

    3.) MAT85 benutzt m.W. nur die CPU-Serielle


    Mal allgemein zur Baudrate:

    I.a. (PSS, V24) wird der 2MHz Takt erst durch 13 geteilt, danach durch Jumper nochmal durch 2 bis durch 16. Hierfür werden 2 74ls93 verwendet

    Dann teilt die UART 8251 (PPS, V24) den Baudraten-Clock nochmal durch 16 oder durch 64.


    Auf der Video8.2 sind die 2 7493 anders verdrahtet, wodurch kleiner Baudraten erreicht werden. Und es ist nur eine Einstellmöglichkeit eingebaut. Wenn man dies etwas anders aufbaut, sollten auch mehr als 1200 möglich sein.


    Auf den ersten Blick vielleicht auch nicht übersichtlich, aber wer aufgepasst hat kann jetzt selber rechnen. :)

  • CP/M hat ein 2K-Boot-ROM incl. dem CP/M-BIOS auf einer 64K-RAM-Karte, die voll bestückt ist und erwartet Terminal-Ein- und Ausgabe (entweder seriell oder über die Terminalkarte 8.4) auf Port 0xA0H bei 4800Baud

    NCR DMV/Olivetti M20/ITT 3030/DEC Rainbow 100/Siemens PC-D/OlyPeople/MFA 8085/TA Alphatronic

    • Offizieller Beitrag

    erwartet Terminal-Ein- und Ausgabe (entweder seriell oder über die Terminalkarte 8.4) auf Port 0xA0H bei 4800Baud

    Ich präzisiere das mal.


    Das CP/M BIOS erwartet immer eine 8251 UART auf Adresse 0xA0.

    Die Baudrate hängt von der PSS/V24 ab, bis 4800 ohne löten.


    Die Terminalkarte bzw Video 8.4 wird immer seriell angesteuert (gilt auch für die 8.2). Stattdessen ist auch ein externes Terminal möglich.