********************************
********************************
** **
** **
** UNIMO 3 MIT S 3004 **
** **
** **
** (c) by Günter Prechel **
** **
** 1990 KB Dessau IG Z 1013 **
** **
********************************
********************************
UNIMO ist ein Universalzusatzmonitor für den MRB Z1013. Das Pro-
gramm erkennt,ob der Monitor A.2 oder 1.02 angeschlossen ist.Die
Schreibmaschine S 3004 kann mit beiden Monitoren als Drucker und
als Tastatur verwendet werden. Bei Nachrüstung eines Schalters
in den Z 1013 ist eine Umschaltung der Monitore A.2/1.02 mög-
lich.
Beim UNIMO 2 wurde eine Interrupt- Druckroutine realisiert. Die
Routine STAT wurde neu aufgenommen. Beim UNIMO 3 wurden das Er-
kennen und die Umschaltung der Monitore verändert und die Steu-
erzeichen für den Druck mit der S 3004 erweitert.
Das Laden des UNIMO erfolgt mit L E000 EBFF. Start: J E800
Es erfolgt ein Transport des Zusatzmonitors von E000H bis E7FFH
nach F800H bis FFFFH. In E900H- EBFFH verbleiben folgende Hilfs-
programme:
E820H IR-DRUCK
E900H HILFSMENUE
EA80H ASCII+GRAFIK
EB00H FIND @F
EB80H ASCII-DUMP
Mit dem Start werden die Sprungadressen ab B0H und für NMI mit
RST 7 initialisiert. Es erscheint
HILFSMENUE Start
**********
@A ASCII-DUMP EB80H
@B BASIC-Restart* 0302H
@D DEBUGGER* CD00H
@F Aadr Az DB...FIND EB00H
@G ASCII+GRAFIK EA80H
@I INKEY+ZEIT E/A FF14H
@K TASTEN-BEEP E/A FD42H
@L HEADERLOAD F806H
@O OC-EDITOR* 4000H
@P Aadr Eadr DRUCK FCA0H
@S HEADERSAVE F809H
@T TASTATUR Z1013/S3004 FE95H
@1 J 100 0100H
@2 J 200 0200H
@@ UNIMO FF80H
^T+MONITOR A.2/1.02 FE67H
BEEP und JOYSTICK -> Sprungvert.
* Erst laden! <ET>
Im Zusatzmonitor sind folgende Funktionen enthalten:
SPV
F800H HEADERSAVE @L LORUF FFF1H
@S SARUF FFF4H
FC00H S3004-CODE
FCA0H DRUCK ASCII @P
FCECH TASTENBETÄT. STAT FFF7H
FCFBH DRUCK AKK. DRAKK FFE8H
FD15H DRUCKER INIT. DRINI FFCDH
FD20H DRUCKER RÜCK. DRDEL FFEBH
FD27H ZEICHENDRUCK ZEIDR FFCAH
FD6DH BILDSCH.DRUCK BSDR FFE5H
FD7BH DRUCK ARG 1 DRZEL FFDFH
FD8DH BEEP BEEP FFDCH
FDA2H TASTENBEEP @K
FDB4H ZEICH.S3004
FE51H TRENNM.S3004
FE67H MO.A.2/1.02 ^T+
FE95H Z1013/S3004 @T
FEBBH RST4 DB01 INKEY FFFDH
RST4 DB04 POLL FFFAH
FF14H A.2:RST4/04 @I
FF23H JOYSTICK JOYST FFBBH
FF50H B0H-SPRUNGL.
FF80H ZUS.MON.INI.@@ ZMINI FFEEH
FFB8H SPRUNGVERT.
Ein anderes Programm kann in die RST 4- DB01- Schleife des UNIMO
eingebunden werden, indem FED1H mit JMP PROGRAM geladen wird.
Dieses Programm ist mit JMP FD82H zu verlassen. Nach RESET kann
der Neustart des UNIMO mit @@ erfolgen.
Bedienung des UNIMO___________________
Nach Erscheinen des Hilfsmenüs und Drücken der Enter-Taste ist
UNIMO betriebsbereit. Mit @@ kann jederzeit das Hilfsmenü sicht-
bar gemacht werden.
Nach NMI oder Sprung auf F000H bleibt der Status des UNIMO er-
halten. Es ist aber bei letzterem mit @@ neu zu starten, da die
RST 4-Sprungadresse wieder ab 0021H eingetragen werden muß.
UNIMO kann mit der Folienflachtastatur und dem Monitor 1.02
oder mit einer 58teiligen Tastatur und dem Monitor A.2 genutzt
werden. UNIMO erkennt, welcher Monitor angeschlossen ist und
ladet die entsprechenden Sprungadressen.
Die Tastaturabfragen RST 4 DB 01 und DB 04 werden über UNIMO ge-
führt.Alle anderen Funktionen des Originalmonitors sind direkt
nutzbar.Zusätzlich sind über @ noch die im Hilfsmenü gezeigten
Funktionen und Hilfsprogramme erreichbar. Diese können auch,
soweit vorgesehen, über den im UNIMO enthaltenen Sprungvertei-
ler angesprungen werden.
Beim Monitor A.2 ist es oft erforderlich, bei Programmen mit
RST 4 DB 04 mit @I eine Zeitverzögerung einzuschalten.
Der Tastenbeep kann mit @K eingeschaltet werden.
S 3004 als Tastatur___________________
Beim Start von UNIMO wird der PIO-Port A für die elektronische
Schreibmaschine S 3004 initialisiert. Die Umschaltung auf die
Tastatur der S 3004 erfolgt mit @T. Dabei werden Druckwerk und
Tastatur getrennt. Mit der Halbschrittrücktaste kann man den
Trennmodus aufheben.
Die Tabellen von FC00H bis FC7FH und FC80H bis FC9FH enthalten
die Zuordnung von ASCII-/ S3004-Code.Ab FC00H sind einige ASCII-
Steuerzeichen umgesetzt.Ab FC20H sind allen ASCII-Schriftzeichen
Tasten der S3004 zugeordnet.Sie entsprechen bis auf nachstehende
Ausnahmen dem Schriftbild des Z1013 - Zeichengenerators:
S3004 ASCII S3004 ASCII
------------ ------------
< 3CH ^ 5EH
> 3EH ` (my) 60H
@ 40H ä (ae) 7BH
Ä (Ae) 5BH ö (oe) 7CH
Ö (Oe) 5CH ü (ue) 7DH
Ü (Ue) 5DH ß (ss) 7EH
Korrek. 00H REL 7FH
Ab FC80H sind den Tasten CODE a bis CODE ü die ASCII-Werte 01H
bis 1DH zugeordnet.
1EH Mikrozeilenschaltung vorw.
1FH Mikrozeilenschaltung rückw.
Damit kann jeder ASCII-Wert von 01H bis 7FH durch eine Taste der
S 3004 erzeugt werden.
Mit der Taste CODE REL wird auf Grafik umgeschaltet (+80H).
Mit den folgenden Tasten werden Steuerfunktionen ausgelöst:
S 3004 ASCII
________________________________
Rücktaste 08H
Tabulatortaste 09H
Halbzeilentaste vorwärts 0AH
Halbzeilentaste rückw. 0BH
Wagenrücklauftaste 0DH Ent
Expreßrücktaste 0DH Ent
CODE REL Grafik E/A +80H
CODE Rückt. Trennm.E/A -
CODE T+ Umschaltg.Monitor -
Mit der letztgenannten Taste wird eine Umschaltung der Monitore
A.2/1.02 unterstützt. Eine Warteschleife wird erst wieder ver-
lassen, wenn von Hand auf den anderen Monitor umgeschaltet wur-
de. Dann wird F000H angesprungen. Nach @@ Enter ( 58teilige Tas-
tatur: 22 Shift lock ) ist die S 3004- Tastatur auf den anderen
Monitor geschaltet.
Nach RST 4 DB 01 steht im Register A der ASCII- Code. Alle ande-
ren Register werden gerettet.
Nach RST 4 DB 04 steht in A der ASCII-Code oder 00H und in C der
S 3004-Code. Die Register B, DE und HL werden zerstört.
S 3004 als Drucker__________________
Nach Aufruf von DRAKK (Srungverteiler) wird der im Register A
übergebene ASCII-Code über die Tabelle FC00H bis FC7FH in den
S 3004-Code umgewandelt. Für die Zeichen 20H bis 7EH erfolgt der
Druck mit den unter "Tastatur" aufgeführten Besonderheiten. Bei
7FH wird nicht gedruckt. Bei Grafikzeichen wird ein Leerzeichen
ausgegeben.
Auf die folgenden ASCII-Steuerzeichen reagiert die Schreibma-
schine:
07H kurzer Ton (! nächstes Zeichen Länge)
08H 1 Zeichen nach links
09H zum nächsten Tabulator
0AH 1 Zeile nach unten
0DH zurück an Zeilenanfang
11H Neuinitialisierung S 3004
12H Trennmode
13H Aufhebung Trennmode
14H nächstes Zeichen ohne Vorschub
15H 1/20tel Zeile weiter
16H Standardtabulator setzen
17H alle Tabulatoren löschen
18H Tabulator setzen
19H Tabulator löschen
1EH zurück und nächste Zeile
Der S3004- Code wird im Akkumulator über den Sprungverteiler an
ZEIDR übergeben.Hier wird zuerst über den SPV mit DRINI die Ini-
tialisierung des PIO - Ports A vorgenommen. Danach wird der
Buchstabe seriell zur Schreibmaschine ausgegeben. Die Zeichen
< , > und ^ werden von der S3004 normal ohne Vorschub gedruckt.
Deshalb wird hier ein Vorschub eingefügt. Nach ZEIDR steht in A
der S3004-Code des Zeichens.Nach Rücksprung in und Verlassen von
DRAKK sind alle Register gerettet.
Mit DRZEL wird das im ARG1 (1BH) übergebene Zeichen gedruckt.
Über DRDEL kann ein zusätzliches Rücksetzen des Druckertreibers
erfolgen.
ASCII-RAM-DRUCK_______________
FCA0 FCE6 (FCA0) E820 E8FF (FCA0)
Aufruf mit @P Aadr Eadr
Mit dem Programm können ASCII-Texte aus dem RAM gedruckt werden.
Nach Eingabe der Anfangs- und Endadresse wird bei Adressen aus-
serhalb des Bildwiederholspeichers auf E820H gesprungen und die
Anfangsadresse und die Textlänge übergeben. Danach ist die An-
zahl der Zeilen pro Seite als Hexzahl (3E=62 Zeilen) einzugeben.
Ist als Zeilenende im ASCII-Text 0DH enthalten, so ist die Frage
"ZE 0DH(Y)?" mit "Y" oder "y" zu beantworten. Sonst werden 1EH
oder 0DH 0AH als Zeilenende verarbeitet.
Die Richtigkeit der Eingaben ist mit "Y" oder "y" zu bestätigen.
Danach werden die Interruptparameter initialisiert, wird die ISR
ab E891H mit DRDEL aufgerufen und zur Monitoreingabeschleife zu-
rückgesprungen.
Der Druck beginnt. Zwischen dem Druck der einzelnen Zeichen mit
DRAKK bleibt genügend Zeit, um andere Programme abzuarbeiten.
Bei Seitenende wird der Druck gestoppt und die nächste RAM -
Adresse angezeigt. Nach Papierwechsel ist der Druck der nächsten
Seite mit "^W" zu starten oder das Programm mit "^C" abzubre-
chen.
Zum Druck aus dem Bildwiederholspeicher wird eine direkte Druck-
routine ab FCB8H benutzt. Vor dem Druck jeder Zeile wird ein
Leerzeichenvergleich durchgeführt. Nach dem letzten von 20H ver-
schiedenem Zeichen oder dem Bildschirmzeilenende wird auf die
nächste Zeile geschaltet.
Bei Aufruf von BSDR über den SPV erfolgt der Druck des grsamten
Bildschirmes.
HEADERSAVE__________
F800 FBFF FBEE
Es ist der HEADERSAVE V 5.9 RB impliziert.
BEEP____
FD8D FDA1 FD8D
Über den SPV BEEP wird ein kurzer Ton über die MGB-Buchse aus-
gegeben.
JOYSTICK - Abfrage__________________
FF23 FF4F FF23
Anschluß bei der 58teiligen Tastatur parallel zu den Tasten 08H,
09H, 1AH, 1BH und 20H.
Die Abfrage erfolgt über JOYST-SPV. Das Ergebnis steht gleicher-
maßen im Register A, B und C.
Bit 0 = 1 links 01H 01
Bit 1 = 1 rechts 02H 02
Bit 2 = 1 runter 04H 04
Bit 3 = 1 hoch 08H 08
Bit 4 = 1 Aktionstaste 10H 16
Bei Mehrfachbetätigung ist das Ergebnis die Summe der Werte.
Keine Betätigung: alle Bit=0; Z=1
Außer AF und BC werden keine Register verändert.
Bei BASIC ist Befehl JOYST(1) oder JOYST(2) möglich.
SPRUNGVERTEILER_______________
FFB8 FFFF
FFB8H C9 00 00 RET
FFBBH C3 23 FF JMP JOYST
FFBEH C3 15 F8 JMP AKP
FFC1H C3 12 F8 JMP SUCHK
FFC4H C3 0F F8 JMP BSMK
FFC7H C3 0C F8 JMP BLMK
FFCAH C3 27 FD JMP ZEIDR
FFCDH C3 15 FD JMP DRINI
FFD0H C9 00 00 RET
FFD3H C9 00 00 RET
FFD6H C9 00 00 RET
FFD9H C9 00 00 RET
FFDCH C3 8D FD JMP BEEP
FFDFH C3 7B FD JMP DRZEL
FFE2H C9 00 00 RET
FFE5H C3 6D FD JMP BSDR
FFE8H C3 FB FC JMP DRAKK
FFEBH C3 20 FD JMP DRDEL
FFEEH C3 80 FF JMP ZMINI
FFF1H C3 00 F8 JMP LORUF
FFF4H C3 03 F8 JMP SARUF
FFF7H C3 EC FC JMP STAT
FFFAH E7 04 C9 JMP POLL
FFFDH E7 01 C9 JMP INKEY
ASCII - DUMP____________
EB80 EBFF EB80
Das bekannte Programm wurde etwas abgewandelt. Nach N kann man
eine neue Adresse eingeben.
Mit ^C erfolgt der Abbruch.Jede andere Taste führt zur Anzeige
der nächsten 40H des RAM.
ASCII+GRAFIK-RAM________________
EA80 EAFF EA80
Nach Eingabe der Anfangsadresse werden alle ASCII-Zeichen ein-
schließlich Grafik (20H bis FFH) auf dem Bildschirm dargestellt
(30 Zeilen). 0DH oder 1EH bewirken eine neue Zeile. Links oben
erscheint die aktuelle Anzeigeadresse. In der unteren Zeile
werden die Tastenfunktionen erläutert. Die Rücktaste (08H) be-
wirkt das Zurückrufen der vorhergehenden Bilder. Mit N wird
zur Eingabe einer neuen Anfangsadresse aufgefordert, Abbruch mit
^C. Jede andere Taste bewirkt ein Weiterblättern zum nächsten
Bild. Da die Anfangsadressen in den Anwenderstack gepusht wer-
den, ist ein 18maliges Vorwärtsblättern erlaubt.
FIND @F_______
EB00 EB7F (EB00)
Start: @F Aadr Az DB DB ...
Die Eingabe erfolgt wie bei der Funktion F des Monitors 1.02. Es
kann eine Folge von bis zu 7 Datenbytes im RAM gesucht werden.
Angezeigt wird die Adresse und der 1. DB oder "NOT FOUND". Mit
R wird die vorherige Adresse mit Inhalt angezeigt,mit z.B. Enter
die nächste Adresse.Nach dieser kann mit G weitergesucht werden.
Der Abbruch erfolgt mit ^C.
HARDWARE________
Der PIO-Port A des Z1013 und die Interfacebuchse der S 3004 sind
masseseitig direkt und ein- und ausgangseitig über 1kOhm-Schutz-
widerstände wie folgt verbunden:
Z 1013 S 3004
---------- --------
00 X4:A5 A13 00
PA0 X4:A4 A11 RxD
PA1 X4:B4 B11 DTD
PA6 X4:A2 B13 TxD
PA7 X4:B2 A12 RTS
Es erfolgt also keine Signalumkehr, wie z.B. bei Optokopplern.
Bei Einsatz letzterer muss fol-
gende Programmänderung vorgenommen werden:
Adresse direkt Optokoppler
----------------------------
FD32H 20H 28H
FD40H 00H 2FH
FD5FH C3H 00H
FDC1H FDH 02H
FDD7H C3H 00H
FDFAH 00H 2FH
Zur Umschaltung der Monitore A.2 und 1.02 ist statt der Wickel-
verbindungen ein Umschalter einzubauen.