Assembler-Bibliothek

Die Bibliothek enthält Treiberprogramme und Interrupthandler für die CTC und PIO sowie einige Hilfsroutinen, die das Programmieren in Assembler ein wenig erleichtern. Zusätzlich ein Empfangsprogramm über den Tape-Eingang für Intel-HEX und Binärdateien sowie eine Stopuhr. Die Bibliothek kann entweder im oberen Teil des Monitor-EPROMS ab Adresse 0800 (anstelle des Tiny-Basic beim MPF-1B) oder im freien Steckplatz U7 untergebracht werden. Wer nicht auf BASIC verzichten und in U7 ein RAM will, kann BASIC von Band oder mit dem Ladeprogramm nachladen.
Z80-CTC

Initialisierung
der einzelnen Timer mit setzen des Betriebsmodus und der Taktrate sowie optional die Adresse einer Benutzer-Interrupt Routine. Die möglichen Beriebsarten und einige Intervall-Zeiten (1,5,10,20,30 mS) sind als EQUates vordefiniert. Ein bereits laufender Timer kann gestoppt werden.
Wahlweiser Interruptbetrieb
aller vier Zähler. Die integrierten Interrupthandler stellen über definierte Adressen je einen Zähler bereit, woraus die Applikation sieht, ob und vieviele Interrupts seit dem letzten Lesen aufgetreten sind. Optional kann eine vom Benutzer definierte Routine aufgerufen werden.
Z80-PIO

Initialisierung
beider Kanäle (nur einer pro Aufruf) mit Betriebsmodus, Interrupt-Maske (nur Modus 3) und optional der Adresse einer Benutzerfunktion. Alle Moduskombinationen sind als EQUates vordefiniert. Die Funktion erlaubt auch das Stoppen der Interrupts.
Wahlweiser Interruptbetrieb
beider Kanäle. Die integrierten Interrupthandler stellen über definierte Adressen je einen Zähler bereit, woraus die Applikation sieht, ob und vieviele Interrupts seit dem letzten Lesen aufgetreten sind. Optional kann eine vom Benutzer definierte Routine aufgerufen werden.
Utilities

Sperren der Interrupts
und Rückgabe, ob sie freigegeben waren. Dadurch kann der Aufrufer entscheiden, ob er die Interrupts vor Rückkehr wieder freigeben soll.
Füllen
eines Speicherbereichs mit einer Konstanten.
Konvertierung
binär <-> HEX ASCII, Anzahl Stellen konfigurierbar sowie Character nach Uppercase.
Division
16 durch 8 Bit, gibt Modulus zurück.
Testen
ob ein Zeichen gültiges Dezimal oder HEX Format hat.
Ausgabe
statischer Zeichenketten (nur gleiche Zeichen) auf dem Display an beliebiger Position. (analog der Anzeige bei Tape-Load). Kann während zeitkritischen Prozessen als Fortschrittsanzeige verwendet werden (z.B. RCV-HEX).
Aufbereiten
des Displaybuffers mit ASCII String als Eingabe. Nicht darstellbare Zeichen werden durch Leerzeichen ersetzt. Der Text kann anschliessend mit der Monitorfunktion SCAN bzw. SCAN1 angezeigt werden.
Abfrage
ob die USER Taste gedrückt wurde. Gibt nur einmal 'gedrückt' zurück, bis die Taste wieder losgelassen wird.
Einlesen
der Tastatur mit Aktualisierung der Anzeige. Gibt nur einen Tastendruck zurück, wenn zuvor keine Taste mehr gedrückt war. Wartet nicht auf eine Eingabe.
Eingabe
von HEX- oder Dezimalzahlen mit wählbarer Position und Länge. An den aktiven Stellen wird der Dezimalpunkt aktiviert. Wartet auf entweder UserKey (Abbruch) oder 'GO' (Uebernahme der aktuell angezeigten Zahl). ADDR stellt die Anzeige auf Null zurück.
Dienstprogramme

RS232-EAR Verbindungskabel
ReadHex Empfangsprogramm
Receive-HEX/BIN
Empfangen von Intel-HEX und Binärdateien. Die Uebertragung erfolgt über den Tape-Eingang, die RS232 TX-Leitung des Senders kann direkt angeschlossen werden, der MPF enthält Vorwiderstand und Clamping-Dioden, die Ueberspannung verhindern. Zum Verringern der Last an der TX-Leitung kann ein 2k2 Widerstand in Serie geschaltet werden. Die Uebertragungsrate ist auf 300 Baud fixiert, bedingt durch die Verabeitungszeit für Bit-Banging, Verifizierung sowie Adress- und Checksummenprüfung. Das Ueberscheiben des Systembereichs wird verhindert.
Die Auswahl des Betriebsmodus erfolgt beim Programmstart mit der '+' Taste (HEX, binär oder binär mit Checksumme).
Optional kann eine Speicheradresse eingegeben werden. Ist diese Null, verwendet das Programm die Adressen in der HEX Datei oder 1800 im binären Modus.
Hier die entsprechende Seite im Forum des Vereins zum Erhalt klassischer Computer

Stoppuhr
Stoppuhr
Verwendet CTC Interrupts als Zeitbasis. Tickt den Lausprecher im Sekundentakt (mit '+' Taste abschaltbar), Start/Stop mit 'GO', Rückstellung mit '0' Taste. Es ist eine erweiterte Version des Beispiels in der Bedienungsanleitung des MPF.

Der EPROM Programmer EPB-MPF
EPROM to RAM
Dieses Progrämmchen funktioniert nur mit dem EPB-MPF EPROM Programmer und erlaubt direktes Kopieren von EPROMS ins RAM des MPF ohne Umweg über die Programmer-Software. So können Programme, die im EPROM gespeichert sind, ins RAM kopiert und ausgeführt werden, vorausgesetzt, sie wurden für an die zu ladende Adresse gelinkt. Der Code passt in den freien Bereich am Ende des EPB EPROMS und hat drei Einsprungadressen:
97C0: 2732 EPROM wird nach 8000, ins RAM des Epomers, kopiert.
97C3: 2716 EPROM wird nach 8000 kopiert, 8800-8FFF bleiben unverändert.
97C6: 2716 EPROM wird nach 2000, ins RAM U7 des MPF kopiert.
Download

Die Downloads enthalten den Sourcecode, assemblierbar mit CP/M's M80 sowie Eprom Images.
Christiani Drucker

Der MPF-1 mit dem Christiani Drucker an der MPF-PIO
Christiani Drucker
Anschluss am EPROM Sockel
Der Drucker an der MPF-1 PIO
Schema der Anschlusskabel für EPB-ZIF und MPF-PIO
Da kein MPF Drucker vorhanden ist, aber ein überzähliger Christiani, wie er seinerzeit mit dem Mikroprozessor-Labor ausgeliefert wurde, entstand ein Treiber für diesen Drucker. Er kann sowohl an der PIO des MPF als auch am ZIF-Sockel des Eprom Programmers angeschlossen werden. Der Treiber sucht bei der Initialisierung nach dem Drucker und verwendet die gefundene Schnittstelle. Er bietet Funktionen zum Suchen des Druckers, drucken einer Zeile oder Z-terminiertem Text sowie Zeilenvorschub. Der Treiber lässt sich einfach auf einen beliebigen Parallel-Drucker (z.B. Epson FX-80) anpassen.

Disassembler Listing
HEX Dump
Disassembler und Hexdump
Der Code für Disassembler und Hexump wurde vom PRT-MPF Eprom übernommen, mit einigen Erweiterungen gegenüber der Originalversion, dokumentiert in den UsageNotes. Diese wurden möglich, weil der Christiani keinen Sofware-Character Generator benötigt, er hat ein ROM dafür.

Basic Listing
Tiny-Basic mit Lister
Dies ist eine abgeänderte Version des Tiny-Basic EPROMs, es enthält zusätzlich den Basic Lister. Der Download enthält das disassemblierte Basic, allerdings undokumentiert. Bei jedem Basic-Kaltstart (x000) wird eine Basic-Zeile in den Programmspeicher geschrieben, die es erlaubt, mit RUN 999 den Lister zu starten. Die Druckerroutinen können auch von Basic mittels dem CALL Befehl aufgerufen werden (Drucken x803, Buffer initialisieren x806). Zuvor muss der Druckbuffer mit den zu druckenden Zeichen gefüllt werden (LET M 8050+ = Zeichen). Nach Aendern des Origins und einem Rebuild können Basic und Lister auch im U7 (2732) des MPF betrieben werden.
Bei der Epromer-Version wird das Programm mit dem ERPOM-to-RAM ins RAM des Epromers kopiert und von dort ausgeführt (Basic 8000, Lister 8800).
Die Aenderungen gegenüber der Originalversion des Basic und des Listers sind in den UsageNotes dokumentiert.
Download

Original EPROM Images

Monitor
Image des 25/2716 Monitor EPROMs in U6, ohne Basic

Monitor mit Tiny Basic
Image des 2532 Monitor EPROMs in U6, mit Basic

Tiny Basic
Image des 25/2716 Basic EPROMs in U7

EPB-MPF Eprom Programmer
Image des 2732 EPROMs des Programmers