MPF1: HEX Dateien über Tape-Eingang übertragen

  • Schönes Ding, dieser MPF-1. Macht richtig Spass, damit zu spielen...

    Es ist nur etwas mühsam, die Programme, assembliert mit z.B. CP/M's M80, einzutippen. Vor allem, wenn etwas an der Grösse verändert wurde, alle absoluten Sprünge und Calls händisch ändern. Wäre doch schön, wenn die Programme anstelle des Eintippens seriell übertragen werden könnten, etwa so:



    Nur, der MPF hat keine UART. Bietet sich also Bit-Banging über den Tape-Eingang an. Dies ist problemlos ohne Hardware-Anpassung möglich. Der TX-Pin des Senders kann direkt an die EAR Buchse des MPF angeschlossen werden, Beim Kabel ist darauf zu achten, dass senderseitig RTS/CTS und DTR/DSR überbrückt werden müssen.


    MPF-1_RH-EAR-Input.jpg


    Seriewiderstand und Schutzdioden sind vorhanden, es können keine verbotenen Spannungspegel auftreten.

    Fehlt noch die Software. Ziel ist es, keine Aenderung an der Firmware durchzuführen, der MPF soll original bleiben und Laden von Band soll weiterhin möglich sein. Deshalb wird das Empfangsprogramm im EPROM U7 abgelegt. Wer nicht auf das BASIC verzichten will, kann anstelle des MPF-1 Monitors den des MPF-1B verwenden, hier ist BASIC integriert. Zu beachten ist dabei, dass ein 2532 EPROM benötigt wird, ein 2732 funktioniert nicht.


    Ein wesentlicher Teil der Entwicklung war das Ableichen der Zeiten für die Sampling-Punkte des seriellen Bit-Stroms (rot ist das serielle Signal, gelb die Sampling-Punkte des Empfangsprogramms)



    Es ist kein Handshake verfügbar, durch die Verarbeitungszeit einer Zeile der HEX-Datei (Umwandlung nach binär, Adressen-Test, Checksummenberechnung, Verifizierung) ist eine maximale Geschwindigkeit von 300 Baud, und erst noch mit zwei Stoppbits, möglich. Damit wird in etwa die Geschwindigkeit des Ladens von Band erreicht.


    Im Anhang MPF-1.ZIP sind die Sourcen, das EPROM Image und WAV Dateien. Die WAVs dienen dem Debugging und können nur verwendet werden, wenn in U7 ein RAM sitzt. Zusätzlich zum Empfangsprogramm sind auch eine CTC-Interrupt gesteuerte Uhr sowie verschiedene Hilfsroutinen, u.A. Interrupt-Serviceroutinen für CTC und PIO mit konfigurierbaren Callbackadressen, vorhanden.


    Viel Spass damit!

    Tony

    Die Website ist noch im Aufbau, zudem bin ich ein ziemlicher NOOB was Webdesign angeht. Daher bitte Nachsicht...

  • is da ne kleine Platine in dem Steckergehäuse? ...daran hätte ich durchaus auch Interesse ;)

    ich bin signifikant genug:razz:

  • Hallo Shadow-aSc

    Nein. da ist nichts drin ausser den Handshake-Brücken. Wie oben erwähnt, ist die Schaltung des MPF so ausgelegt, dass das -/+ RS-232 TX Signal ohne Gehahr für Sender oder MPF direkt am EAR Eingang angeschlossen werden kann (beim MPF-1P gehts nicht, der hat einen Kondensator in serie, die Zeitkonstante des RC Glieds ist zu kurz für 300 Baud).

    Bei Fragen einfach fragen...

    Die Website ist noch im Aufbau, zudem bin ich ein ziemlicher NOOB was Webdesign angeht. Daher bitte Nachsicht...

  • ich dachte wegen der Schaltung, die du in #1 auszugsweise gezeigt hast - diese ist also auf dem MPF drauf - verstehe


    könntest du dann vielleicht mal einen "Verdrahtungsplan" hier für das Kabel zeigen, wollen bestimmt einige nachbauen ;)

    (DB19-Stecker/Buchse immer lötseitig abbilden) :prof:

    ich bin signifikant genug:razz:


  • Das ist schon das ganze Geheimnis.


    DB25:

    Empfangsleitung des MPF and Pin2 (TX)

    Masse des MPF an Pin7 (GND)

    Pin4 mit Pin5 verbinden (RTS/CTS)

    Pin6 mit Pin20 verbinden (DSR/DTR)


    DB9:

    Empfangsleitung des MPF and Pin3 (TX)

    Masse des MPF an Pin5 (GND)

    Pin7 mit Pin8 verbinden (RTS/CTS)

    Pin6 mit Pin4 verbinden (DSR/DTR)


    Viel Erfolg!

    Die Website ist noch im Aufbau, zudem bin ich ein ziemlicher NOOB was Webdesign angeht. Daher bitte Nachsicht...

  • Inzwischen habe ich ein Progrämmchen auf dem Kaypro gebastelt, womit HEX Dateien zun MPF übertragen werden können, obwohl es auch mit PIP funktionieren würde. Nur sind die etwas schrägen RS-232 Parameter (300,N,,8,2) auf dem Kaypro nicht mit BAUD.COM einstellbar. Zusätzlich kann eine Verzögerung am Zeilenende definiert werden, falls die HEX Zeile mehr als 16 Bytes enthält.



    Angeschlossen wird das ganze sehr einfach:



    Angehängt sind die Sourcen des Sendeprogramms auf dem Kaypro sowie die des Empfangsprogramms auf dem MPF-1. Das EPROM-Image ist im ersten Post zu finden.

  • schrägen RS-232 Parameter (300,N,,8,2)

    Das ist zwar langsam, aber normal.

    Unabhängig davon: :thumbup: Gut gemacht.


    Angehängt

    Wo? Am Monitor? :)

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

  • @MicrotronicHamburg

    Jo, das ist CP/M. Hat der TRS-80 auch eine Z80-SIO? Wenn ja, brauchst Du nur die Portadressen der SIO anzupassen (LIBH.DEF), dann sollte es laufen. Andernfalls bräuchte es einen Treiber für die UART.

    lg Tony

    Die Website ist noch im Aufbau, zudem bin ich ein ziemlicher NOOB was Webdesign angeht. Daher bitte Nachsicht...

  • Hallo allerseits

    Hier ein kleines Update zum Empfangsprogramm des MPF-1. Da ich kürzlich einen EPB-MPF EPROM Programmer



    ergattern konnte, ergab sich das Problem, wie bringe ich ein EPROM-Image, das für irgendeine Addresse assembliert ist, in den Buffer des Programmers?

    Ich habe dies so gelöst, dass beim Programmstart die Ladeadresse eingegeben werden kann:


    .


    Ist diese ungleich 0 und ist an der Adresse RAM, werden die Adressen im HEX File ignoriert und die Daten an die angegebene Adresse gschrieben. So können auch mehrere Programme an verschiedene Adressen geladen und dann zusammen ins EPROM programmiert werden.

    Der Anhang enthält CP/M M80 Sourcen für Adresse 1800. Durch ändern der ORG kann dies an eine beliebige Adresse verschoben werden. RH benötgt zudem Library-Routinen, der Source und das EPROM Image (Adresse 2400) dazu sind ebenfalls im Anhang (RH.ZIP).

    Die Website ist noch im Aufbau, zudem bin ich ein ziemlicher NOOB was Webdesign angeht. Daher bitte Nachsicht...

  • Da ging noch was vergessen...

    Hier sind die EPROM-Images:


    2532, MPF-1_MON-RH-CL-LIB_U6: MPF-1 Monitor, Receive-Hex (0800), Clock (0A00) und Library (ab 0C00). Passt in U6 des MPF, Basic ist nicht mehr drin.

    2716, MPF-1_RH-CL-LIB_U7: Receive-Hex (2000), Clock (2200) und Library (ab 2400) für U7.


    Es hat sich auch noch ein Bug in der Library in lDKN() eingeschlichen, ist behoben.

  • Es ist Zeit für ein erneutes Update...


    Da war ein grober Fehler in der Definitionsdatei, die Portadressen der PIO waren falsch.


    Ausserdem eine Erweiterung:

    Ein Progrämmchen, das Kopieren eines EPROM ins RAM des MPF ermöglicht, ohne Umweg über die EPB Firmware. Es hat Platz im unbenutzten Bereich am Ende des EPB EPROMs. Ueber verschiedene Einsprungadressen sind folgende Optionen wählbar:


    97C0: Kopiert ein 2716 nach 2000, ins RAM an U7 des MPF. So ist z.B. das Tiny-Basic mit ein paar wenigen Tastendrücken verfügbar.

    97C6: Kopiert ein 2716 nach 8000, ins RAM des EPB.

    97CA: Kopiert ein 2732 nach 8000


    Auf diese Weise können Programme, die zuvor an die gewünschte Adresse gelinkt, auf ein EPROM gebrannt wurden, in nullkommanichts ins RAM geladen und ausgeführt werden.

  • Sehr schöne Webseite und tolle Sammlung!


    Stimmt !


    Und auch schön präsentiert ! Da ist ausreichend HTML vorhanden ...


    Kleine Vorschläge zur Optimierung: Beim KIM-1 heißt der Docu Schalter erstmal "Docu", wenn man aber in "Software" ist, heißt er dann "Dokumentation". Hab das jetzt icht woanders "kontrolliert", aber sowas darf gern konsistent sein.


    Wenn der Bedienungsmodus so ist, daß man bei den Auswahlschaltern den Zurück Button eingeblendet bekommt, man also einfach mit einem zweiten Klick wieder in die vorherige Page zurückkommt, wäre es evtl gut, wenn das bei den Bildern auch so wäre. Also Klick auf geöffnetes Bild schließt diese wieder.


    Und, und das ist der wichtigste Vorschlag: Wenn Du Dir schon die Mühe machst, die Steckkarten so schön zu fotographieren, wäre es super, wenn da auch immer die Rückseite mit fotographiert würde. Gilt natürlich v.a., wenn Du mal wieder sowas putzt oder neu in die Sammlung "einpflegst".


    Das Beste an der Sammlung ist aber natürlich: sie ist sowas von ausgesprochen platzsparend und trotzdem sehr umfassend = SEHR schön !

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • Danke Euch für die Blumen...


    @ThoralfAsmussen: Das mit dem KIM ist korrigiert, es dürfte aber noch mehr solche Fehler haben. Zuerst hiess es überall 'Dokumentation', musste aber beim Einführen des 320er Breakpoints gekürzt werden.

    Das mit dem Schliessen der Bilder (guter Vorschlag, danke) werde ich mal versuchen. Und die Rückseiten der Prints. ja wäre sicher schön. Für neue oder wenn Aenderungen anstehen, werde ich das berücksichtigen.

    Die Website ist noch im Aufbau, zudem bin ich ein ziemlicher NOOB was Webdesign angeht. Daher bitte Nachsicht...

  • Christiani-Drucker am MPF-1


    Seit einiger Zeit liegt ein Christiani-Drucker



    nutzlos herum. An meinem MPF-1 habe ich keinen Drucker, aber einen EPROM Programmer. Dieser kann aber nicht nur EPROMs programmieren, er hat auch RAM und I/O. Warum nicht die I/Os zum Anschluss des Christiani-Druckers nutzen?



    Fehlt noch die Software. Als Vorlage dient das ROM des PRT-MPF. Ich habe dieses disassembliert und für den Christiani angepasst. Das Resultat sieht so aus:



    Disassebler,



    HEX dump



    und Basic


    Alles schön und gut. Nur, wo ist dieses Programm gespeichert? Eine Möglichkeit, das ROM U7 des MPF. Hier steckt aber ein RAM. Bleibt nur das RAM des EPROM Programmers. Das Laden des fast 4k langen Programms dauert aber etwas lange, darum das EPROM-to-RAM (RE.ZIP) Progrämmchen. Dieses erlaubt das Kopieren eines EPROMs ins RAM. Es befindet sich im unbenutzten Bereich des Programmer-EPROMs. 97C0 kopiert ein 2716 nach 2000, U7 des MPF-1 (z.B. Basic), 97C6 kopiert ein 2716 nach 8000 und 97CA ein 2732 nach 8000. Das Druckerprogramm wird, nach Laden mit 97CA GO mit dem entsprechend programmierten EPROM im ZIF Sockel, über 8000 (Disassember), 8005 (Hex Dump) oder 800A (Basic List) gestartet. Der etwas spärlich dokumentierte Sourcecode des Printerprogramms ist hier: PE.ZIP.

    Die Website ist noch im Aufbau, zudem bin ich ein ziemlicher NOOB was Webdesign angeht. Daher bitte Nachsicht...