0800 5d65 0000 I ... ASSEMBLER 5.3
*************************************************************
*                                                           *
*        A  S  S  E  M  B  L  E  R    5.3  Scf              *  
*                                                           *
*************************************************************



Programmstandort:
=================

          100H....5C0H  Zusatzmonitor
          600H....7FFH  Bildschirmtreiber          
          800H...0FFFH  interne Symboltabelle (s.a.u.)
         1000H...2C6FH  Assembler
         2E00H...2F6FH  Arbeitszellen 

Ein Quelltext kann ab Adresse 3000H geladen werden, auch andere 
Standorte sind oberhalb 3000H moeglich. Da der Quelltext im
ASCII-Code geschrieben wird, ist er im Speicher frei verschieb-
lich. Zum Schreiben wird daher ein Texteditor verwendet ( z.B.:
eignet sich der EDITOR "MicroWORD 1.5..O"(O=oben! ab CC00H)
dafuer sehr gut, da er mit dem ASSEMBLER 5.3 zur gleichen Zeit
im Speicher stehen kann und den Text ab 3000H schreibt. Aber
auch mit anderen EDITOREN wie TEXTED 6.1, MTX, MicroWORD 1.5 U
usw. kann gearbeitet werden, wobei dann vorteilhaft eine RAM-
Floppy mit Headerdisk verwendet werden sollte, um das haeufige
Wechseln von Assembler und Editor zu vereinfachen).
Wer ueber einen Drucker verfuegt, kann sich die Quelle vor dem 
Uebersetzen zur Dokumentation ausdrucken oder mit einem zusaetz-
lichen logischen und physischen Druckertreiber ein Assemblerpro-
tokoll anfertigen lassen. Dabei ist zu beachten, das die Version
5.3 zwischen den einzelnen Spalten einen TAB (09H) ausgibt, die
der logische Druckertreiber in eine der aktuellen Druckposition
entsprechenden Zahl Space wandeln muss. Auch eine Seitenforma-
tierung muss im logischen Druckertreiber erfolgen, da der Assem-
bler keinerlei Foramtierungsfunktionen besitzt.
Bei sehr langen Quelltexten ist auch die Arbeit mit der RAM-
Floppy sehr vorteilhaft, da der ASSEMBLER das Nacheinander-
uebersetzen von Teilen eines Quelltextes gestattet. 


* Programmstart:
================

          100H  Neustart
         1006H  Restart


Beispiel-Quelltext:
===================

Um die Arbeit des ASSEMBLER's zu demonstrieren, arbeiten wir
mit einem kleinen Beispieltext (TEXT aus Z-1013-Bedienhand-
buch, Schachfiguren).
Wie sieht nun ein Assembler-Quelltext fuer dieses Beispiel
aus:  

;Programmueberschrift
;
        PN      SF         ;Programmname "SF" (kann auch entf.)
;******************************
;Quelltext "Schachfiguren"
;******************************
;
	ORG	1000H	   ;vorgesehener Standort des Programms
;
;Vereinbarungsteil
;
BS:	EQU	0EE08H	   ;Adresse der Bidschirm-Position
;
;Programmtext
;
BEGIN: 	LD	B,6	   ;Zahl der Schachfiguren
	LD	IX,BS	   ;Position der ersten Figur auf
	LD	DE,TAB	   ;Adresse der Tabelle fuer den
			   ;Zeichencode der Schachfiguren
MARKE: 	LD	A,(DE)	   ;oberer Teil der Schachfigur
	LD	(IX+0),A   ;auf BS	
	INC	DE	   ;naechsten Zeichencode
	LD	A,(DE)	   ;unterer Teil der Schachfigur
	LD	(IX+20H),A ;auf BS
	INC	DE	   ;naechsten Zeichencode
	INC	IX	   ;Abstand zum naechsten Zei-
	INC	IX	   ;chen einstellen
	INC	IX	   ;
	DJNZ	MARKE-#	   ;naechste Figur, bis alle 6
			   ;abgebildet
	RST	38H	   ;Ruecksprung in Monitor
;	
;TABELLE fuer Zeichencode auf dem BS
;
TAB:	DB 	0EH,11H,0FH,11H,10H,11H,12H,13H,14H,16H,15H,16H
;
	END


Algemeines Format eines Assembler-Quelltextes:
==============================================

 - Die Marken sind max. 5 Zeichen lang und beginnen mit 
   Buchstaben (z.B. BEGIN und MARKE).
 - Marken werden mit Doppelpunkt abgeschlossen.
 - Namenvereinbarungen muessen ebenfalls mit Doppelpunkt
   abgeschlossen werden (z.B. BS:  EQU  0EE08H)
 - SPACE und TAB werden als Trennzeichen gewertet. Sie
   koennen mehrfach auftreten.
 - Das Namensfeld kann entfallen.
 - Die Quellzeile darf ohne Kommentar max. 85 Zeichen
   lang sein. Der Kommentarteil wird bei der Uebersetzung
   ausgeblendet.
 - Die Zeile kann mit NL oder CRLF (New Line (1EH) oder Carriage
   Return Line Feed (0DH,0AH)) abgeschlossen werden.       
 - Eine leere Zeile wird als Kommentar gewertet, sie sollte
   aber mit einem Semikolon beginnen.
 - Registernamen gelten als vereinbarte Symbole,
   die Befehlsmnemonik nicht (d.h. Registernamen duerfen
   nicht als Marken verwendet werden).
 - Ein Kommentar oder eine Kommentarzeile muss mit einem
   Semikolon beginnen (z.B. ;Vereinbarungsteil)

Nun am Beispiel unserer Quelle:

BEGIN:    -ist eine Marke die nicht laenger als 5 Zeichen lang
           ist. Es darf kein Leerzeichen dazwischen sein, dafuer
           kann aber ein "_" genutzt werden (z.B. Nr_1:)
  
BS:    EQU     0EE08H  

          -Ein Name gilt als vereinbart, wenn ihm mit einer
           EQU-Anweisung (von equal=gleich) ein Wert zugeordnet
           wird. Dem Namen darf nur einmal im Programm ein
           Wert zugeordnet werden. Im Beispiel wird BS die
           Bildschirmadresse EE08H zugeordnet.

ORG    1000H

          -Mit der ORG-Anweisung wird dem Assembler mitgeteilt,
           auf welche Adresse das Programm zu uebersetzen ist,
           d.h. auf welcher das Programm lauffaehig ist.
           Bei der Uebersetzung im Duchlauf 2 ist allerdings
           zu beachten, dass auf dieser Adresse der Assembler
           selbst oder auch der Quelltext stehen kann. Der
           Assembler hat keine Schutzfunktionen gegen ein As-
           semblieren auf sich selbst! Deshalb muss der ueber-
           setzte Maschinencode um einen einstellbaren Offset
           verschoben abgelegt werden.          

DJNZ   MARKE-#

         -DJNZ ist ein Schleifenbefehl mit einer Sprungdistanz
          MARKE-#. MARKE ist dabei eine definierte Marke, und
          damit die 16-Bit Adresse dieser Marke. Mit # wird
          der Standort des DJNZ-Befehls+2 von der Adresse der
          Marke abgezogen, womit sich die 8-Bit-Sprungdistanz
          ergibt. 

TAB:   DB	0EH,11H,0FH,11H,10H,11H,12H,13H,14H,16H,15H,16H,

         -ab der Stelle, die mit TAB bezeichnet wird, werden
          Bytes definiert (DB=definiere Byte) 

END      -jedes Assemblerprogramm muss mit END abgeschlossen
          werden (+nachfolgender Zeilenschaltung!). Dies gilt
          auch fuer Einzelteile einer grossen Quelle.  

       
Variablen:
==========

Beispiele zu dem folgenden wieder am Ende dieses Abschnittes.

 - Alle 16-bit-Werte koennen durch einen mehrteiligen
   Ausdruck aus Variablen gebildet werden.
 - Alle 8-bit-Konstanten koennen mit einem Ausdruck 
   definiert werden. Es werden dabei die niederen 8 Bit
   der Variablen verwendet und die oberen 8 Bit geprueft -
   ob obere 8-Bit vorhanden, damit kein 8-Bit-Wert!)
 - Ein Ausdruck kann durch + und - verknuepft werden.
   Er kann mit - anfangen.
 - Durch das Zeichen * werden die Teile und-verknuepft,
   durch / oder-verknuepft.
   Die Verknuepfungen werden von links nach rechts
   ohne Prioritaet abgearbeitet.
 - Als Variable / Konstante sind zugelassen :
       4 Zeichen Hex, mit Ziffer beginnend und mit 'H' 
         abgeschl.
       4 Zeichen oktal, mit 'Q' abgeschl.
       4 Zeichen dezimal ohne Abschluss
         Name
       # ergibt den Wert des PC vor Befehlsausfuehrung
       1 Zeichen Literal in Hochkomma (Zeichenkette)
       2 Zeichen Literal in Hochkomma (Zeichenkette)
         (linkes Zeichen = NWT )
       8 Zeichen dual, mit 'B' abgeschlossen
         Die Werte koennen vorzeichenbehaftet sein.

Nun am Beispiel unseres Quelltextes:

BS:   EQU     0EE08H    ;BS ist eine 16-Bit Variable, der
                        ;eine hexadezimale Adresse zugeordnet
                        ;wurde

Ob eine Variable eine 8-Bit-Variable oder eine 16-Bit-Variable
ist, entscheidet der zugeordnete Wert. 
Neben dieser Variablen koennte man noch andere Konstanten
als Variable definieren:

BSA:    EQU     0EC00H  ;Adresse des BWS
DIST:   EQU     108H    ;Distanz auf Bildschirm
ANZ:    EQU     6       ;Anzahl der Schachfiguren

        LD      B,ANZ

;Hier ist die Konstante 6, ein 8-Bit-Wert, mit einem Ausdruck
;definiert worden.

        LD      IX,BSA+DIST

;BSA als 16-Bit-Adresse plus den Wert der Distanz ergeben
;einen mehrteiligen Ausdruck. Gleichzeitig ist hier ein Bei-
;spiel einer "+"-Verknuepfung.

	LD	DE,TAB
MARKE:	LD	A,(DE)
	LD	(IX+0),A
	.
	.
	.
	INC	IX
	DJNZ	MARKE-#

;# ist hier der Wert des Programm-Zaehlers (PC)

	RST	38H

TAB:	DB	0EH,11H,0FH,11H,10H,11H,12H,13H,14H,16H,15H,16H

;Es koennen in dieser Tabelle auch Zeichenketten oder Ausdruek-
;ke stehen (s.dazu w.unten).

        END


Die Mnemonik des ASSEMBLER entspricht fast 100%ig dem SYPS-
K-1520 Format (nicht ZILOG-Mnemonik!!), wobei zusaetzlich fol-
gende Befehle aufgenommen wurden: 
 

Spezielle Formate:
==================

 - Die Befehle  LD  Z,H(nn)  
   und          LD  Z,L(nn)
   (Z=Registername)
   sind zugelassen. nn kann dabei ein Ausdruck sein.

 - Bei den Anweisungen  DA,ORG,EQU,BER darf nur ein
   Wert erscheinen, der durch einen Ausdruck gebildet 
   werden kann.
   z.B: BEGIN:  EQU     0C00H
                ORG     BEGIN

 - Beim Befehl DB sind numerische Werte, Marken und
   Textketten zugelassen. Sie sind durch Komma zu trennen,
   s.z.B.unser Quelltext. Aber auch folgendes ist moeglich:

        DB      0FFH,7BH,'Otto',22,0FFEDH,11001001B  usw.


Zusatzbefehle:
==============

 - HEX      Definition von 2-stelligen Hex-Konstanten, durch
            Komma getrennt. Der Buchst. H und Fuehrungsnullen
            entfallen.
 
            z.B.:  HEX   11,55,AA,1B,F3,00,DC

Es sollte aber nur in persoenlichen Quellen Verwendung finden,
da es nicht dem SYPS-K1520-Standard entspricht.

 - PRNT     Listensteuerung  volle Liste
 - PRNO             ="=      Fehlerliste
 - PRTH             ="=      Hex-Liste

Diese Zusatzbefehle, im Text eingearbeitet, steuert den AS-
SEMBLER in seiner Arbeit. Es lassen sich damit Teile des Textes
auflisten, die nochmals bei der Uebersetzung geprueft werden 
sollen, andere Teile, die bereits sicher laufen, nicht.

 - PN       wird ignoriert
 - TITL             ="=

Diese Kopfsymbole von anderen Assemblern oft gefordert, koen-
nen erscheinen, sind aber weder stoerend, noch erforderlich.

 - alle Befehle mit LX,HX,LY,HY (low-, high-Teil der Dop-
   pelregister IX bzw. IY)  

     z.B.: LD   B,LY  -lade Register B mit dem Low-Teil
                       des IY-Registers 
 
 - SLL      Rotation
   

Fehlerausschriften:
===================

      M   Speicherfehler
      U   unbekannter Befehl
      K   Konstantenfehler (Wert zu gross)
      F   Formatfehler
      A   Adressenfehler
      N   unbekannter Name
      T   Tabellenueberlauf
      L   Befehlszeile zu lang (ohne Komm.)
      V   Adressenversatz zwischen 1. und 2. DL
      I   Input-Fehler 



Erzeugen eines Maschinencodes mit dem ASSEMBLER:
================================================

Nachdem wir unser Beispielprogramm mit einem Texteditor abge-
tippt und auf eine Adresse oberhalb 3000H gebracht haben,
koennen wir den Assembler laden und starten.

 Start:  J  100

Der ASSEMBLER meldet sich mit der BS-Aufschrift:

ASSEMBLER Z80  V5.3


DURCHLAUF:    Bei Erststart wird hier "N" (new) ein-
              gegeben (siehe Durchlaufsteuerung). Da-
              nach erscheint die Abfrage:
>A 
 
Sollte dies nicht geschehen, so ist der Druckerruf (Initiali-
sierung) entweder nicht kurzgeschlossen (z.B. wenn nicht vor-
handen) oder der Drucker ist nicht eingeschaltet. 

>A      hier wird nun ein Buchstabe erwartet.
        Im Allgemeinen wird im N-Durchlauf sofort ein R (RUN)
        eingegeben, es kann aber durch Eingabe von Axxxx die
        ORG-Adresse ausgetauscht werden (z.B. zum Probelauf).
        Das >A (assign) wiederholt sich, bis mit "R" (run) der
        Durchlauf gestartet wird. Bei Durchlauf N und 1 fragt 
        der ASSEMBLER nun:

   ANF.-ADR.QUELLE:

        hier wird jetzt die Anfangs-Adresse der Quelle abge-
        fragt, wo der Quelltext steht. (Nicht die ORG- oder
        Offsetadresse!). Wir geben also z.B. 3000 ein, wenn
        der Quelltext ab 3000H steht. Mit >ENTER< abschliessen. 

ACHTUNG !! ** Der CURSOR laesst sich bei Adresseingaben nicht 
        zuruecknehmen, wenn man sich mal vertippt hat. Er hat
        keinen Eingabepuffer. Es hilft nur >RESET<, bzw. man 
        gibt die richtige Zahl ab erkanntem Fehler einfach wei-
        ter ein. Der Assembler wertet die letzten vier Ziffern.
        Im A-Modus (assign) ist es einfacher, dieser Modus
        bleibt, bis "R" (run) eingegeben wird. Dabei kann eine 
        Anweisung wiederholt werden, mit dem richtigen Wert, 
        Adresse o.a., es wird die zuletzt eingegebene Anweisung
        ausgefuehrt.
        Es sind mehrere Durchlaeufe moeglich, auch die gleichen.

Waehrend des "N"-Durchlaufes koennen bereits Fehler erkannt
werden (z.B.: Markenfehler). Sie werden direkt mit einem * aus-
gegeben und sind vor dem 2. Durchlauf durch nochmaliges Editie-
ren mit dem Texteditor zu beseitigen.
Eine abschliessende Fehlersumme hat jedoch keine Bedeutung.
Sie kennzeichnet lediglich die Zahl der Marken, die bei ihrem
ersten Auftreten noch nicht definiert waren.
Der 1. Durchlauf wird nur angewendet, wenn mehrere Quelltexte
oder Quelltext-Teile uebersetzt werden.
Beim N- und 1-Durchlauf wird eine Markentabelle durch den Assem-
bler erstellt, die im 2. Durchlauf zur eigentlichen Uebersetzung
benoetigt wird. Der N-Durchlauf loescht eine schon vorhandene
Markentabelle, wogegen der 1. Durchlauf gefundene Marken an eine
schon vorhandene Markentabelle anhaengt. Wird also nur ein ein-
zelner geschlossener Quelltext uebersetzt, entfaellt der 1. 
Durchlauf.
Wenn sich der Assembler nach dem N-(1-)Durchlauf mit einer
Fehlerzahl und einer Durchlaufanforderung zurueckgemeldet hat,
koennen wir den 2. Durchlauf starten. Der 2. Durchlauf ist der
eigentliche Uebersetzungslauf.
Hier kann auch bei Mehrfachuebersetzung die jeweilige Quelltext-
Anfangsadresse mit QXXXX  neu festgelegt werden. 
Mit >CRTL C< (BREAK) bzw. S4-K kann der ASSEMBLER an dieser
Stelle auch verlassen werden.
Es erscheint wieder das Assign-Promtsymbol >A
Entsprechend der Durchlaufsteuerung koennen wir nun verschie-
dene Optionen einstellen. Da wir erst einmal nur eine einfache
Uebersetzung moechten, verzichten wir auf ein Druckprotokoll
(kein P eingeben!).
Wir geben ein L ein, um eine volle Uebersetzungsliste auf dem
Bildschirm zu erhalten und ein T200, damit es beim Uebersetzen
nicht so schnell geht und das Protokoll noch lesbar ist.
Wenn wir spaeter sicherer sind, koennen wir auch auf L und Txxxx
verzichten, und dafuer ein F (nur Fehler werden ausgegeben) ein-
geben, worauf der Assembler mit maximaler Geschwindigkeit arbei-
tet.
Nun muss noch der Offset zur Ablage des Maschinenprogramms
eingegeben werden, da wir wuenschen, dass das fertige Programm
auf der Adresse 1000H laufen soll (ORG 1000H) und an dieser 
Stelle zur Zeit der Assembler selbst steht. Dieser Offset
berechnet sich aus der Differenz von ORG-Adresse und Ablage-
adresse (siehe Punkt Offset). Nehmen wir an, auf Adresse
6000H ist freier Speicher, so geben wir O5000 ein.
Bevor wir die Uebersetzung starten, koennen wir mit dem
Kommado M die Markentabelle ausgeben lassen, um zu wissen,
bis zu welcher Adresse unser Maschinenprogramm geht (!Ori-
ginaladressen!). 
Mit R (RUN) starten wir den 2. Durchlauf und auf dem Bildschirm
laeuft das Protokoll der Uebersetzung. Da wir einen Zeitlauf
gewaehlt haben, koennen wir den Ablauf mit Space anhalten und
weiterlaufen lassen. Fehler werden entsprechen den ->Fehler-
meldungen mit einem Buchstaben angezeigt. Am Ende muss bei
einer fehlerfreien Uebersetzung die Fehlerzahl 0000 stehen.
Die folgende Durchlaufanforderung quitieren wir mit BREAK 
(S4-K, ^C) und haben damit die Uebersetzung beendet. Der
uebersetzte Maschinencode steht nun aber auf Adresse 6000H
auf der er nicht lauffaehig ist. Mit dem T-Kommando des Moni-
tors schieben wir das Maschinenprogramm auf die ORG-Adresse
(in diesem Fall auf die 1000H). Die Laenge konnten wir vorher
der Markentabelle entnehmen.
Ein Start des Programms mit J 1000 zeigt uns den Erfolg der
Uebersetzung.


Durchlaufsteuerung:
===================

N    Neustart (loescht Symboltabelle)
1    1. DL  (nur bei mehreren Teilen, ansonsten entfaellt er)
2    2. DL  (Uebersetzung)
^C   Ende der Nutzung  (CTRL-C = 03H = S4-K)

Es koennen mehrere Programme hintereinander uebersetzt
werden. Ein Programm kann dabei auf Marken aus dem an-
deren Programmen zugreifen.



Laufsteuerung (Anforderung mit 'A >' )
======================================

 Ausgabeformat C   S   Symbolliste  
                       (Zeile - Name - Wert) 
                   H   Hexliste (ohne Quelliste)
                   F   Fehlerliste
                   L   volle Liste
                   M   Symboltabelle ausgeben (ohne Lauf)
                       (Name - Wert ) 
                       (Symboltabelle ist die Markentabelle)
                   P   Zuschalten des Druckprotokolls 
                       waehrend des Laufes
                   V   Seitenvorschub und Abschalten des 
                       Druckers 
                   I   Initialisierung des Druckers 

Zeitsteuerung      N   max. Geschwindigkeit, dabei keine
                       Tastaturabfrage.
              TXXXX    Zuschaltung einer Zeitschleife 
                       (Zeit in ms bis max. 1000)
                       Lauf mit veringerter Geschwindigkeit.

Bei Zeitsteuerung = T kann die Uebersetzung durch SPACE nach 
jeder Zeile unterbrochen werden. Fortgesetzt wird durch 
Betaetigen einer beliebigen Taste.

Adressen      AXXXX    Zwangsadr. fuer ORG
                       (Aenderung der ORG-Anweisung im Dialog) 

Die Eingabe von ORG-Adressen wird gekellert . Es koennen
max. 10 Adressen mit dem A-Kommando eingegeben werden. 
Die Adresse 0000 ruft dabei keine Wirkung hervor.

              OXXXX    Offset zu ORG
                       (ORG+Offset ergibt Speicherbereich,
                       auf dem der MC abgelegt wird)
                       Offsetberechnung wird weiter unten
                       erlaeutert.

              QXXXX    Quellanf.-Adr. (nur bei
                       Mehrfachuebersetzungen im 2. DL)

                  K    Aufhebung der A-Anweisung
  

Lauf              R    Run

                 ^C    Ende der Nutzung


Wahl des Offset's:
==================

Nicht immer kann der MC-File direkt dahin
geschrieben werden, wo er spaeter stehen und laufen
soll, z.B. wenn die Anfangsadresse des MC-Files im
Arbeitsbereich des Assemblers steht.
Die Differenz der beiden Adresen wird mit dem Offset
gegeben. Das heisst, der Assembler uebersetzt das Pro-
gramm mit den Originaladressen auf den Adressbereich,
der sich aus dem Offset ergibt.
Die Offsetberechnung ist nicht einfach der
Abstand zwischen der in der ORG-Anweisung festgeleg-
ten Startadresse des Programmes und der Anfangs-Adres-
se, in der der MC-File abgelegt wird, sondern muss fol-
gendermassen berechnet werden (Zweierkomplement):


BEISPIEL:
_________ 

1.
ORG-Adr.: 0100, 1000H lang - Quelltext 3000H-7000H 
MC-File soll in A100H bis B0FFH abgelegt werden.
OFFSET-ABSTAND: 0100H bis A100H = A000H
Wir geben im 2.Durchlauf  OA000 ein.

2.
ORG-Adr.: F800, 800H lang - Quelltext von 3000H-7C00H
MC-File soll in C000H beginnen:
OFFSET-ABSTAND: F800H bis C000H nicht, wie vermutet 3800H,
sondern weiterzaehlen bis FFFFH und dann von unten bis C000H.
Das ergibt: C800H !!
Wir geben OC800 ein.


Interne Funktionen:
===================

        Marken mit "*" als erstes Zeichen koennen mehrfach 
        verwendet werden. Ihr Wert wird auch im 2.DL veraendert,
        wodurch sie nur fuer Rueckwaertsspruenge zu verwenden 
        sind oder unmittelbar vor ihrer Nutzung zu definieren 
        sind.



Modifikationen: 
===============

Wichtig!
  1) Bei fehlendem Druckeranschluss muss auf den Adresssen
     447H/44WH und 449H/44AH  0D4H/03H eingetragen werden.
     Adresse Druckertreiber in 449H/44AH eintragen.
     Adresse Druckersynchr. in 447H/448H    -"-
     Im Original ist die Druckerschnittstelle ueber den
     Sprungverteiler (SV) realisiert.

DRAKK:  0FFE8H  ;uebergibt Zeichen in AKKU an log. Druckertreib.
DRINI:  0FFCDH  ;Initialisierung des log. Druckertreiber

Der Druckertreiber muss das Steuerzeichen "TAB" (09H) verarbei-
ten koennen !!

  2) Falls die Leange des Symboltabellenbereiches nicht
     ausreicht (bei laengeren Programmen), kann die Lage und 
     Groesse der Symboltabelle durch Veraenderung der folgenden
     Zellen geaendert werden: 

    < 2C02H / 2C03H >  =  Anfangsadresse 
    < 2C04H / 2C05H >  =  Laenge 

     (steht im Original auf 0800H und 7D0H Laenge)


Literaturhinweise:
------------------

/1/   Assemblersprache SYPS K 1520  (Robotron)
      Bezug ueber Industrievertrieb Robotron, im VEB Robotron-
      Vertrieb Erfurt, Juri-Gagarinring 25, Erfurt, 5020
/2/   Baeurich/Barthold: 8-Bit-Mikrorechentechnik, Militaerver-
      lag der DDR  1988 
/3/   Kieser/Meder: Mikroprozessortechnik, Verlag der Technik
      Berlin  3., stark bearbeitete Auflage  1985
/4/   Lampe/Jorke/Wengel: Algorithmen der Mikrorechentechnik
      Verlag der Technik Berlin  2. Auflage  1983
/5/   R.Brosig: Software-Richtlinien fuer den Z1013, FUNKAMA-
      TEUR 2/88, S.
/6/   V.Luehne: Sprungverteiler f. Z1013 - Betriebssystemer-
      weiterungen, FUNKAMATEUR 10/88, S.484 

ACHTUNG: Wir bitten darum, nur Original-Programme weiter zu
geben, und keine von Ihnen geaenderten Versionen. Geben Sie
lieber ein Programm original weiter und Aenderungen dazu
schriftlich, damit sich der Nutzer selbst aendern kann, was er
fuer richtig haelt. Programme stets mit der Beschreibung dazu
weiterreichen. An der Checksumme CRC ist der Originalzustand 
erkennbar.

 
                                       IG-HC der KdT Dresden
                                       a. Informatikzentrum
                                         d. TU-Dresden