1800 4a41 0000 I ... UNIMO3 MIT S3004
********************************
********************************
**                            **
**                            **
**     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.