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. Dies gilt auch für den QuickDisk Monitor 9Z-503M, da dieser das 'R' Kommando nicht kennt (J0886).
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, zum MZ-700 senden
Das Senden von 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 Senden von MZF-Dateien über die Soundkarte des PC. Die MZFs werden jeweils mit dem MzfStudio nach WAV konvertiert. Zur Wiedergabe der WAV Dateien wird WinAmp verwendet.
Vom MZ-700 empfangen
RcvBin funktioniert nur in Senderichtung zum MZ-700. Deshalb muss zum Empfangen das Kassetten-Interface verwendet werden. Als Aufnahmeprogramm ist CoolEdit implementiert, AudaCity würde aber auch funktionieren.

ZEN Sourcen senden
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 J-Script mitteilt, diese Zeilen nicht zu senden. Die RcvBin Debugversion enthält ein Beispiel.

Damit ZEN über die empfangene Source-Länge informiert werden kann, 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. Allfällig vorhandene Kleinbuchstaben werden ins Sharp-Format konvertiert. Falls ZEN nicht im Speicher des MZ-700 ist, erfolgt nach der Uebertragung 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.
ZEN Sourcen empfangen
ZEN speichert seine Sourcen als reines ASCII. Deshalb ist es möglich, den Text nach Empfangen über die Soundkarte zu extrahieren (<dateiname>.ZER für ZEn Recording), auf dem PC zu bearbeiten und wieder zu senden. Der J-Script konvertiert dabei auch sie Sharp-Kleinbuchstaben ins ASCII Format.

Pascal SP-4015 Sourcen
Pascal Sourcen haben ein undokumentiertes binäres Format, der Text kann daher nicht extrahiert werden. Der PC eignet sich hier nur als externes Speichermedium.

Prompt des JScript vor dem Senden
RcvBin wartet auf RTS des Senders
RcvBin empfängt
RTS des Senders wurde inaktiv
Prompt vor dem Senden zu RcvTxt
Basic Sourcen
Die Basic Interpreter verfügen über genügend unbenutzten Speicherbereich, um RcvBin darin unterzubringen. Es reicht sogar, um Meldungen anzuzeigen und RTS abzufragen. Das Empfangen von MZF-Dateien mit Dateityp 5 wurde in die Versionen 1Z-013B V1.0A, Basic-Expander (die Erweiterung von Solo Software), die Version 1Z-013B V1.2 (NORM/FAST load & save) und die QuickDisk Version MZ-5Z008 V1.0C integriert. Der Start von RcvBin geschieht mit SHIFT-F5. Daraufhin wartet RcvBin auf RTS des Senders (Anzeige 'Wait'). Während dieser Zeit kann RcvBin mit SHIFT-BREAK beendet werden. Sobald RTS aktiv wird, erscheint 'Receive' und das Programm wird empfangen. Ein Abbruch ist jetzt nur noch durch Entfernen des RTS Signals möglich, die SHIFT-BREAK Abfrage braucht zuviel Zeit. Nach Beenden der Uebertragung oder nach Abbruch erfolgt ein Basic-Warmstart (wie '#' aus dem Monitor).

Die Versionen 1.0A und 1.2 enthalten ein weiteres Programm, RcvTxt, mit dem Basic-Programme im Klartext empfangen werden können, als würden sie über die Tastatur eingegeben. Diese Art der Uebertragung ist etwas langsam, Basic braucht Zeit, die empfangene Zeile auszuwerten und zu speichern. RcvTxt wird mit SHIFT-F4 gestartet.
Basic Sourcen als Text empfangen
Der J-Script konvertiert die Basic-Token nach Empfang über die Soundkarte in Klartext und speichert ihn, nebst der MZF-Datei, welche das token-Programm enthält, mit der Endung '.BAR' für BAsic Recording. Dieses kann nun auf dem PC editiert und an RcvTxt gesendet werden.
Basic-Monitor Prompt
Alle vier Basics enthalten einen Patch, der den Monitor-Prompt von '*' nach '#' ändert. So sieht man sofort, welcher Monitor, System oder Basic, aktiv ist.

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.