MFA Firmware Versionen

  • So langsam verliere ich den Überblick :fp:


    Wir haben im Original MFA folgende Monitorversionen:

    MAT85 und MAT85+

    MAT32K für serielles Interface

    Hi, ich möchte den Thread hier nicht kapern - wer kann mir denn erklären, was der Unterschied zwischen MAT32 und MAT85 ist? Vielleicht steht das auch schon irgendwo?

    Auf meinen Eproms finde ich auch verschiedene Versionen vom MAT32...


    Danke und Gruß

    Marcel

  • Mal so der Versuch einen Überblick zu produzieren (aus dem Z80 CPU Thread zusammen kopiert):


    MAT85 ist die 8k Grundversion ohne z.B. die 8k SP1-Erweiterung mit Steuer-Basic/Eprommer/SPS

    MAT85 (KMD >) durch SP1 erweitert heißt MAT85+ (KMD+>)

    -

    MAT32K-S ist die "normale" Version für die Videokarte 8.4!

    MAT32K-T ist für ein Terminal

    -

    Video 8.4 kann sowohl für MAT85(+), 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.

    -

    Video 8.2 läuft mit 600 oder 1200 baud (default) und somit auch mit MAT85(+)

    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 muss halt das jeweils zusammen passende kombinieren.

    -

    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 funktionieren (auch natürlich Video 8.2).

    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

    -

    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.

    -

  • Der MAT32k ist eine Sammlung des MAT85 und allen Erweiterungen:

    SP1 incl. BASIC, SPS, EPROM...

    Mini-DOS

    SPS-Erweiterungen

    BFZ-Editor


    Genaueres s. hier, PDF-Seite 4. Seite 2 ist auch interessant.

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

  • Danke euch,

    ja, das mit den Abhängigkeiten zwischen MAT und Terminal/Video habe ich hier ja auch gelesen - aber:

    Mich interessiert, zum Einstieg ersdt einmal grundsätzlich, was die Namensgebung MAT32 und MAT85 bedeutet und warum es diese 2 Stränge überhaupt gibt. Ist 32 der Nachfolger vom 85?

    Bei mir sind alle MAT32 auf den 64k-Karten zusammen mit RAM.
    MAT85 steckt immer auch eigener Karte.


    Wenn ihr von CPU serieller sprecht - das ist der (zumindest bei mir) nicht angeschlossene RX/TX-Ansschluss hinter der Blende auf der CPU-Baugruppe?

    Mein MAT32 (V1.0 ohne "K") läuft mit der Video 8.2, das V1,8 nicht.


    Gruß

    Marcel

  • MAT85 wegen der CPU 8085,

    MAT32k liegt in einem 32k EPROM.


    Der MAT32k ist auch kein Nachfolger, sondern hat alles in einem EPROM, was sonst auf mehreren EPROM-Karten verteilt war.

    Der MAT85 war urspruenglich auf 4 EPROMs a 2k, das war schon eine ROM/RAM 16k Karte. Dann kam die SP1, das gleiche usw.

    Mit 4 ROM/RAM Karten war das MFA aber schon fast voll. Deshalb lieber eine ROM/RAM Karte mit 64kB und einem EPROM mit 32kB und 32kB RAM.


    Im MAT32k gibt es dann ein paar kleine Aenderungen gegenueber dem MAT85. Aber alles nichts wildes, kannste ja nachlesen. (s. fruegerer Post)


    Wenn ihr von CPU serieller sprecht - das ist der (zumindest bei mir) nicht angeschlossene RX/TX-Ansschluss hinter der Blende auf der CPU-Baugruppe?

    Sinngemaess ja.

    Diese Serielle wird per Software generiert und fuehrt normalerweise ueber Pegelwandler zur Backplane (und von da zur Video8.x). Auf der CPU Platine gibt es Jumper, die die Serielle auf eine 20mA Stromschleife umlegen fuer ein externes Terminal.

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

  • Danke an funkenzupfer,

    sehr interessante Unterlagen und nun verstehe ich auch, warum manche ROMs nicht so direkt laufen - falsche Kombination.


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

    Das kann ich nicht bestätigen. Bei mir läuft MAT32K mit einer 8.2.

    Daher noch eine Frage:


    "CPU Seriell" - das ist also der software-serielle, die über den BUS zur Video-Karte geht? Dafür ist 2MAT32K-S"?

    "ProgSerSchn" - das ist die V24-Baugruppe und da kann man ein serielles Terminal / PC anschließen? Dafür ist "MAT32K-T" ?

    Wofür sind dann die PINs direkt hinter der Frontblende auf der CPU-Karte - ist das derselbe Anschluss wie auf der Backplane? Aber vielleicht sollte ich einfach mal ein den Schaltplan schauen :-)

  • Wofür sind dann die PINs direkt hinter der Frontblende auf der CPU-Karte

    Du kannst die CPU-Serielle als 20mA umjumpern fuer ein externes Terminal.

    Aber vielleicht sollte ich einfach mal ein den Schaltplan schauen :-)

    Genau! :-)

    RTFM!


    Das kann ich nicht bestätigen. Bei mir läuft MAT32K mit einer 8.2.

    Laut Doku macht die MAT32k-S mit 9600bps. Das kann die Video8.2 nicht.


    Bei der MAT32k-T und der ProgSerSchn wird die Geschwindigkeit auf der ProgSerSchn eingestellt. Vielleicht deshalb.


    Oder du hast ein gepatches EPROM.

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

  • Irgendwie komme ich mit dieser Kiste nicht weiter ...



    Der Rechner hat die serielle Schnittstelle auf der CPU-Karte nach vorne herausgeführt, soll also wohl mit einem Terminal betrieben werden.


    Das ROM habe ich hier mal angehängt.


    Wie komme ich nun drauf, welche Einstellungen vom Terminal verlangt werden?


    Die CPU läuft (mit einem kleinen Test-ROM probiert), ich habe 300/1200/9600 Baud ohne Flusssteuerung und 8N1 probiert, bekomme aber keine Meldung auf den Terminalschirm.

  • Der alte MAT85 erwartet anfangs ein Space Zeichen zur Baudratenerkennung.


    Leider ist auf dem Bild nicht erkennbar mit welchen Pins der SubD Tx und Rx verbunden sind. Brauchst du evtl. ein Nullmodem Kabel?


    Die Rx/Tx Pins sind mit der VG-Leiste und der Backplane verbunden. Da du keine Video-Karte eingebaut hast, macht das nichts. Mit Video-Karte haengen 2 Sender an der (CPU-) Rx Leitung.


    Viel Erfolg

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

  • Ich verwende ein Nullmodemkabel und habe auch jeweils ein "Space" abgesetzt, nachdem ich den Rechner eingeschaltet/resettet habe.


    Die Sub-D ist so beschaltet:




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

  • Tx geht an Pin2, Rx an Pin3.


    Beim PC ist es genau anders rum. Wenn dein Terminal ein PC ist, solltest du KEIN Nullmodem verwenden.


    BTW: Deine RAR Datei kann ich nicht entpacken.

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

  • OK, danke, das ist ein super Tipp. Werde ich ggf. umlöten.


    Habe auch gerade noch diesen Thread gefunden, der ist auch hilfreich.


    Anbei die Datei nochmal als ZIP.

  • In dem Thread ist aber eine SubD25 beschrieben.

    Hier sind zur SubD9 Pin 2 und 3 getauscht.

    Dann passt es wieder.

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

  • Die serielle Schnittstelle an der Prozessorbaugruppe ist eigentlich nur die herausgeführte SID/SOD des 8085'ers und im Original gar nicht vorhanden bzw. nicht beschaltet...

    Mit einem Nullmodem-Kabel sollte es demnach bei den meisten Terminals nicht wirklich zuverlässig funktionieren. Besser wäre natürlich der V24/RS232-Schnittstelle (BFZ/MFA 4.10B).


    Beste Grüße

    ToM

  • Die funktioniert schon zuverlässig. Wenn man sie von der Backplane herausführt, lässt sich das ganze auch mit einem externen Terminal nutzen. Aber eine "richtige" RS-232 (4.4 oder 4.10) ist natürlich flexibler.

  • nur die herausgeführte SID/SOD des 8085'ers und im Original gar nicht vorhanden bzw. nicht beschaltet...

    Die CPU-Serielle ist immer zur Backplane verbunden und Grundlage fuer die Kommunikation mit der Video-Karte.

    Deshalb ist sie fast nie nach vorne raus gelegt.


    Mit einem Nullmodem-Kabel sollte es demnach bei den meisten Terminals nicht wirklich zuverlässig funktionieren.

    Warum nicht?

    Ueber die Backplane gehts, warum also nicht per Terminal?

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

  • Die Anweisungen SIM und RIM sind den OUT- und IN-Anweisungen ähnlich, behandeln jedoch nur die 1-Bit-SOD- und SID-Ports (auf TTL-Ebene; zusätzlicher Pegelwandler auf V24 ist aber bereits auf der Prozessorplatine - diese gehen aber nicht auf den Bus!!).

    Die Instruktionen SIM bzw. RIM übertragen somit nur das Bit 7 aus dem Akku an genau diese o.g. Pins, mehr nicht.


    Alles andere muss ggf. softwaremäßig realisiert werden:

    Man kann einen der RSTx.5-Interrupt dafür heranziehen und die SID damit verbinden. Bei der ersten negativen Flanke löst man den Interrupt aus und hat damit das Startbit. Ab dann muss man halt mit Delay-Funktionen arbeiten, d.h. das ganze ist im Grunde eine reine Timing-Sache... wie viel Zeit man vergehen lässt, bis man im Akku 1 Byte um 1 Stelle nach links weiter schiebt.

    Für eine primitive Debug-/Datenschnittstelle sollte es reichen - und so wird sie auch lediglich in den Unterlagen des BFZ beschrieben. Ich kenne aber auch genug Leute, die deswegen genau diese Buchse nachträglich in die Frontplatte integriert haben... für einen einfachen Terminal reicht es meistens. Wer einmal versucht hat, einen Drucker seriell (über SID/SOD anzuschließen, weiß was das für ein Unterfangen sein kann... Aber, natürlich, es geht...:roll:

    Ich hatte auch einmal ein Datenprotokoll einer HOPF-Funkuhr (HOPF 6021; übrigens, ein interessantes Projekt...) via SID/SOD in die MFA einlesen wollen und mit einer weiteren V24/RS232-Schnittstelle dann einen Terminal an den PC angehangen... elende Sauerei! Mit einer weiteren V24/RS232-Schnittstelle ging es dann zuverlässig und mit weniger Code.

    Der 8251 (V24/RS232-Schnittstelle (BFZ/MFA 4.10B)) war weit verbreitet und hat für damalige Verhältnisse einen guten Baudratengenerator und ist in der Tat wesentlich einfacher zu handhaben.


    Und ja, mit unbeschaltet meine ich explizit die Prozessor-Baugruppe - wie aber oben beschrieben; standardmäßig ist keine RS232-Buchse verbaut.


    Beste Grüße

    ToM

  • diese gehen aber nicht auf den Bus!!).

    Doch.


    Und was ist so schlimm, eine Serielle in Software zu programmieren?

    Ob ich auf der UART rum polle oder ein GPIO Bit betrachte, beides dauert gleich lange. Solange keine Interrupts das Delay veraendern bringen.

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

  • Sitze zwar nicht vor dem Dingen, aber m.E. gehen nur SID/SOD auf den Bus - jedoch nicht als V24 :/

    Klar, man kann es ja softwaremäßig ausführen... aber genau dies wäre ein Problem - die Interrupts! Bei meiner Funkuhr kam alle Sekunde eins auf RST6.5 vorbei :roll:

  • Sitze zwar nicht vor dem Dingen,

    Ich aber! :-)

    Hab's (vor-)gestern gemessen wegen s.o.


    kam alle Sekunde eins auf

    Fuer ein seriellen Zeichen darf man hierfuer die Interrupts aber auch mal sperren.

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

  • Ok, habe gerade im Archiv die 29c und 30c entdeckt... :tüdeldü:

    Ja, sperren wäre möglich - jedoch nicht, wenn in der Sekunde ein ganzer String anliegt und übertragen werden muss. Glaub mir, ist eine elende Fummelei. Da polle ich dann lieber auf das Ereignis :)

  • wenn in der Sekunde ein ganzer String anliegt

    Du kannst den Uhreninterrupt sperren, solange ein Zeichen an den Drucker uebertragen wird.

    Das verzoegert die Interruptverarbeitung nur um ein paar ms (max. ~1ms bei 9600bps).

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

  • Ist schon klar. Ist aber so, dass der String dann sofort weiterverarbeitet wird (Auswertung des Protokolls, vergleich mit Schaltzeiten und Darstellung im LCD; teilweise Polling...). Drucker ist keiner dran.

    Da ist's besser, es läuft über den UART ohne zusätzlichen Interrupt. Den Interrupt RST6.5 von der HOPF darf ich nicht auslassen/ignorieren/sperren -> Decodierschema DCF77.

  • Eine kleine Erfolgsmeldung: Die Maschine funktioniert, hat mich aber noch ganz schön geärgert.



    Die 2400 Baud tauchen m.W. sonst beim MFA nicht auf (1200 vs. 4800), und vor allem: Es reicht nicht, im Terminal-Programm die Einstellung zu ändern und dann die Reset-Taste zu drücken um die Änderung zu sehen, man muss den MFA wirklich ein- und ausschalten.

    Dazu kommt: Der Druck auf die Leertaste muss kräftig und nicht nur ein kurzer Anschlag sein, damit das MAT startet.


    Die 64K-Karte, von der dieses ROM kommt ist dazu noch eigenartig konfiguriert: Es sind volle 64K RAM bestückt, obwohl das ROM nicht abschaltbar gesetzt ist. Die Abschaltadresse ist auf 0x8000H gesetzt (in der CP/M-Konfiguration ist das 0xC000).


    Robert

  • Hallo Robert,

    habe mir vor Jahren auch so eine Karte selber "hergestellt". Original ist das nicht, jedoch auch echt große Klasse.

    Die Karte funktioniert wie beim CP/M der Urlader... der Urlader startet mit Adresse ooooH und beinhaltet eine Kopierfunktion. Das eigentliche Monitor-Programm wird damit ins RAM kopiert, danach abgeschaltet.

    Ich habe mir damals ein Monitor-Programm selber programmiert, welches sich aber auf die "hintersten" Plätze des RAMs legt. Dies hatte den ungemeinen Vorteil, dass ein eingelesenes Assembler-Programm bei ooooH startet. So ist es möglich, ohne Anpassungen auch fremde oder eigene Assembler-Entwicklungen laufen zu lassen - vor allem dann, wenn sie später autark von einen EPROM starten sollen.

    Ach ja, mein Monitor ist nur 2k groß; deswegen sitzt bei mir ein kleines EPROM drauf ;)


    Hier mal ein kleines Beispiel für den Kopiervorgang...

  • Nee, das ist nur ein "Textausschnitt" vom *.asm; also kein Dateianhang.

    Wenn ich ganz links den Editor auf Quellcode stelle, kann ich ihn auch mit der Maus einfügen und er sieht formatiert aus. Nur dann kann ich nicht auf "Antworten" drücken - ohne diese Meldung zu erhalten :/...


    "Bitte fülle dieses Eingabefeld aus."

  • Na ja, sieht leider auch nicht ganz so schön aus wie gedacht und vorformatiert, aber... das Ergebnis zählt ja vielleicht mehr :)

    Vielen Dank für den Hinweis an funkenzupfer. Aber Inline eignet sich wahrscheinlich wirklich nur für jeweils mal eine oder zwei Zeilen; sieht ansonsten ziemlich fies aus...


    Hier also mal der Schnipsel zum Urlader im Anhang. Klar, wenn ein größeres EPROM verwendet wird, müssen jeweils die Kopier- und Startadresse (jmp xxxxh) des Monitors angepasst werden...


    Ach ja, für diesen Monitor habe ich auch mal ein Terminal-Programm für Windows geschrieben. Dieser war direkt auf das Monitor-Programm abgestimmt...