RcvBin: Daten via Joystick-Port seriell empfangen

Die Joy-Stick Eingansschaltung
Die Joystickports des MZ-700 sind simple TTL-Eingänge, die auch für andere Zwecke verwendet werden können, so z.B. serielles Einlesen von Daten. Die Eingänge am LS367 werden über Adresse $E008 gelesen, Bit 1 ist das TX Signal vom PC, Joystickport 1.
Kontrolle der Sampling Punkte
Kalibrier- und Debugversion
Die Software wurde in zwei Schritten realisiert. Eine Version, die im RAM läuft, fürs Debugging und zum Definieren der Sampling-Punkte für Startbit bis erstes Datenbit und die weiteren sieben Datenbits. In dieser Version wird auch CTS ausgewertet. Der Sourcecode ist sowohl mit dem ASL (PC) als auch dem ZEN (MZ-700) Assembler assemblierbar.
Der Prompt des Monitors mit RcvBin
Monitor-ROM Version
Im Monitor-ROM sind verschiedene leere Passagen zu finden, die nicht benutzt sind. Es galt nun herauszufinden, ob das Programm in diesen Lücken irgendwie unterzubringen ist. Nach einigem Rumprobieren hat's dann gepasst, allerdings blieb kein Platz für irgendwelche Meldungen oder Abbruchtests. Sogar der Monitorprompt musste Haare lassen, sonst hätte es nicht gereicht. Immerhin konnte ein neues Monitor-Kommando 'R' eingefügt werden, damit wird das Programm gestartet. Falls von einer Applikation (z.B. ZEN) aufgerufen, muss zur Adresse $0886 gesprungen werden. Achtung! nicht aus Basic mit USR() aufrufen, RcvBin ist im Basic-Monitor nicht entalten.
RcvBin führt einen Prüfsummentest durch, falls die Prüfsumme nicht stimmt, Monitor-Kaltstart, andernfalls erfolgt ein Sprung zur Adresse, die in der MZF Datei als Startadresse definiert ist.
PsPad zum Senden von MZF-Dateien
Das Windows MZF Kontext-Menu
Die PC-Seite
Das Senden von (ausschliesslich) MZF Dateien kann in PsPad oder nach einem Registry-Patch über das Windows-Kontextmenu gestartet werden. Die Uebertragungsparameter sind 9600,N,8,2. Das zweite Stoppbit ist notwending, weil bei jeder Schreiboperation ins RAM des MZ-700 die Bank umgeschaltet wird, damit auch Basic-Programme, die über $D000 hinausgehen, geladen werden können. Die Laufzeit vom letzten Datenbit zum nächsten Startbit ist mit nur einem Stoppbit zu lang.
Die Aufbereitung der MZF Dateien führt ein J-Script durch, gesendet wird mit TeraTerm. Der J-Script erlaubt auch das Empfangen und Senden von MZF-Dateien über die Soundkarte des PC. Die MZFs werden jeweils mit dem MzfStudio nach- oder von WAV konvertiert. Als Aufnahmeprogramm ist CoolEdit implementiert, AudaCity würde aber auch funktionieren. Zur Wiedergabe wird WinAmp verwendet.
Assembler-Sourcen, die zu ZEN gesendet werden sollen, müssen zum Erstellen der MZF Datei einen Tape-Header enthalten, dieser darf aber nicht gesendet werden, ZEN kann damit nichts anfangen. Deshalb enthalten diese Zeilen eine ';;' Marke, die dem JScript mitteilt, diese Zeilen nicht zu senden. Die RcvBin Debugversion enthält ein Beispiel.
ZEN und Pascal SP-4015 Sourcen
ZEN speichert seine Sourcen als reines ASCII. Deshalb ist es möglich, den Text nach Empfangen über die Soundkarte zu extrahieren (<dateiname>.REC), auf dem PC zu bearbeiten und wieder zu senden (<dateiname>.ZEN). Damit das Senden auch wirklich funktioniert, hängt der J-Script ein kleines Assemblerprogramm an den Sourcecode an, das nach dem Laden angesprungen wird und die Source-Endadresse in ZEN einträgt. Falls ZEN oder Pascal nicht im Speicher des MZ-700 sind, erfolgt ein Monitor-Warmstart.
Das Gleiche passiert auch bei Pascal Sourcen, diese haben jedoch ein binäres Format und der Text kann nicht extrahiert werden. Der PC eignet sich hier nur als externes Speichermedium.
Prompt des JScript vor dem Senden
Basic Sourcen
Da Basic Programme über die Adresse $D000 (V-RAM in Bank 0) hinausgehen können, ist es nicht möglich, das Assemblerprogramm anzuhängen, weil der RAM Bereich über $D000 RcvBin nicht zugänglich ist. Deshalb wurde das Programm, das die Endadresse des Basicprogramms schreibt, in einen unbenutzten Bereich des Basicinterpreters selbst geschrieben. Daher muss sichergestellt sein, dass Basic im Speicher des MZ-700 ist, bevor ein Basicprogramm gesendet wird, andernfalls, --crash--. Gleichzeiting ist ein weiters Progrämmchen drin, das es erlaubt, mit SHIFT-F5 aus dem Basic RcvBin direkt aufzurufen.
Nach dem Empfangen des Basicprogramms erfolgt ein Warmstart des Basic (wie '#' aus dem Monitor).
Dieser Patch wurde für das Basic 1Z-013B V1.0A, die Erweiterung mit dem Expander von Solo Software sowie der Version 1Z-013B V1.2 (NORM/FAST load & save) implementiert.
FileCopy

Abfrage von FileCopy
Dieses Maschinenprogramm erlaubt das Kopieren einzelner Dateien von einer Kassette auf eine andere. Das zu kopierende Programm wird ab $1200 in den Speicher geladen und nach Wechseln der Kassette auf diese geschrieben.
Das Programm darf nicht länger als $BBA0 (48032) Bytes sein, andernfalls wird FILE TOO LARGE angezeigt.
Eine geladene Datei kann mehrmals geschrieben werden (ANOTHER COPY?), ein weiters Programm kann kopiert werden, ohne FileCopy zu verlassen (ANOTHER FILE?). Um eine einigermassen geordnete Darstellung zu erhalten (alle Abfragen und Aufforderungen auf gleicher Zeile) wird der Status des Motor-Flipflops im Programm selbst geprüft. Dies verhindert PLAY und RECORD.PLAY Anzeigen des Monitors.