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

  • 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...

  • 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!

  • 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)

  • 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).

  • 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.