0200 3fff 0200 C ... Beschr. EDAS T2
Fortsetzung Beschreibung Editor

Binder

Relativspruenge mit zu grosser Distanz werden durch Absolutspr. ersetzt. Nach jeder 
Fehlerausschrift wird ENTER betätigt, um weitere Fehler zu finden. Erst wenn beim 
Bindelauf keine Fehlerausschrift erfolgte, war dieser erfolgreich und ist das Progr. 
lauffaehig! Die Markentabelle  wird beim Binden nicht verändert.

RAM-Modus

Der RAM-Modus meldet sich mit 64 Datenbytes in folgender Form:
aaaa    00 01 02 03 04 05 06 07 
bbbb>   08 09 0A 0B 0C 0D 0E 0F
        10 11 12>13 14 15 16 17 
        18 19 1A 1B 1C 1D 1E 1F 
        20 21 22 23 24 25 26 27 
        28 29 2A 2B 2C 2D 2E 2F 
        30 31 32 33 34 35 36 37 
        38 39 3A 3B 3C 3D 3E 3F

Die Anfangsadresse steht links  oben (aaaa). Die vor dem Zeichen> stehende Adr bezeichnet 
die RAM-Zelle, auf die sich die naechste Eingabe bezieht. Der Kursor steht nach dem > . 
Hier können Datenbytes als Hexaziffern eingetragen werden. Falsche Eingaben werden mit S4-W 
geloescht. Die Eingabe eines Byte wird mit ENTER vollzogen. Die gleichen Daten koennen durch 
weiteres Betätigen von ENTER auf die nächsten Eingabeadressen gegeben werden. Das Zeichen > 
ist in der Datenbyteausschrift wiederzufinden und kennzeichnet nochmals das aktuell anstehende 
Byte. Es wirkt hier gleichzeitig als Cursor und lässt sich mit  den Kursorsteuertasten bewegen  
(-> <- S4-S S4-R). Am oberen und unteren Bildrand wird gerollt. Das aktuelle Datenbyte bleibt 
so immer im Anzeigebereich. Die Adressen am linken oberen Bildrand werden ständig aktualisiert.  

Kommandos im RAM-Progr.:
                                        
Kdo  Zusatz  Funktion           
________________________________
S4-R         Rollen

S4-S         Rollen

->           Eingabeadr incr.

<-           Eingabeadr decr.

0...9        Eingabedaten
A...F        angeben            
S4-W         

ENTER        Eingabedaten uebernehmen;Adr incr.

I    eeee    Eingabedaten auf        
     ENTER   Bereich ab Eingabeadr bis ausschl. eeee eintragen

M qqqq ENTER Daten ab Adr qqqq    
  eeee ENTER bis ausschliessl. eeee auf Bereich ab Eingabeadr verschieben.

G aaaa ENTER Anzeige der Zieladr aaaa    

OFF       Verlassen des RAM-Mod.

I    }    Ignorieren der Kdo's
M    }OFF
G    }

Das Kommando "I" dient zum Eingeben von Daten im Block bis zu einer Endadresse. Nach dem 
Betätigen von I steht der Cursor in der 3. Zeile. Hier wird die  4-Stellige hexadezimale 
Endadresse verlangt. Die Eingabe   wird mit ENTER abgeschlossen bzw. mit OFF ignoriert. 
Die Übernahme der nach > angegebenen Daten in erfolgt nur bei richtigen Angaben und wenn 
die Endadresse größer als die Anzeigeadresse ist. 

Das Kommando "M" dient dem Verschieben von Bytes. Verschoben  wird auf den Bereich ab 
Anzeigeadresse. Nach "M" werden die Anfangs und die Endadresse des Quellbereiches angefordert. 
Sie werden jeweils mit ENTER bestätigt. Beim Umladen wird der Quellbereich gelöscht (zu FFH). 
Die Überlappung von Quelle und Ziel ist teilweise möglich.

Die Kommandos "M" (move) bzw.   "I" (initialise) entsprechen den Monitorkommandos "T" (Transfer) bzw. "K" (Kill).

Ein besonderer Vorteil des RAM-Modus ist seine Echtzeitfähigkeit (im Gegensatz zu "D" oder  
"M" des Monitors). D.h. die Anzeige der Speicherzellen erfolgt dynamisch, sodass sich ändernde 
RAM-Inhalte beobachtet werden können. Durch die Möglichkeit der Vorbereitung der Dateneing. 
(Ausführung gezielt mit ENTER) kann auch in laufende Programme (Interruptebenen) eingegriffen  
werden. Ebenso ist die Einbindung nur des RAM-Programmes in  ein Echtzeitbetriebssystem denkbar 
(ohne Editor). Damit werden auch Programme beobachtbar, die nicht über Interrupt laufen, sondern 
von dem genannten EZ-BS verwaltet werden. Wie der RAM-  Modus ohne Editor zu handhaben  ist, 
wird im folgenden Abschnitt erlaeutert.

Nutzung des RAM-Programms ohne Editor

Das RAM-Programm benutzt die   Zellen 00D4 und 00D5 als Arbeitszellen. Es ist als Unterprogr. 
geschrieben, endet also mit RET. Die Startadresse ist 2EBE.
Zuerst wird der Editor V8 geladen. Zum Start des Pr. werden2 MC-Befehle auf beliebigen Adr.(zB. 0200H) benötigt:

0200    CALL 2EBEH
0203    JMP 0F000H

Wird nun mit dem Monitor-Kdo.

 # J 0200  

gestartet, ist der RAM wie im Editor manipulierbar. Die Betätigung der OFF-Taste führt in das BS 
zurück. Diese Nutzungsmoegl. hat den Nachteil, dass der gesamte Editorbereich (2C00-3FFF)belegt 
ist. Das RAM-Pr. lässt  sich durch folgende Schritte im Monitor einfach auf 1K (2C00-2FFF) abrüsten. 
Damit steht der Bereich 3000-3FFF wieder zur freien Verfügung. 

# M 3B77      ENTER                                               
  E5 # 12 2C; ENTER                                             
# M 3B7B      ENTER
  E5 # 12 2C  ENTER
# T 3B74 2C2F 0B ENTER          
# M 2C28         ENTER
  74 # 2F 2C;    ENTER          
# K 3000 3FFF FF ENTER

Diese Reihenfolge ist einzuhalten. Nun kann wieder wie oben beschrieben gestartet werden. Es 
ist weiterhin möglich, vor dem Start die gewünschte Anzeigeadr in 00D4 und 00D5 (L-H) einzutragen.

SPEICHERBELEGUNG EDITOR

002B  Kursorpos.
002C  Zwischensp. Kursor

00D0- Tabulatoren               
00D3             

00D4  Merkzellen f."RAM"
00D5

0100- Stack                     
01FF

2C00- Unterpr.f.Editor u."RAM"
2EBD  

2EBE- "RAM"-Pr.d.Editors
2FFF

3000- Editor
3BFF

3C00- Listen f. Editor          
3FFF  

ED00- Bildwiederholspeicher     
EDFF

Außer den hier angegebenen Speichern werden mit Ausnahme der MTB(+20H Byte) keine weiteren benötigt, benutzt oder geändert. 

Bei Nutzung nur des RAM-Pr. wird der Anwenderstack des Z1013 genutzt. Bei Nichtausreichen des Stacks, 
insbesondere in Verbindung mit Interruptroutinen, ist dieser entspr. auf einen größeren Adressraum zu verlegen. 

Vom Betriebssystem des Z1013 werden die Routinen OUTCH u. INKEY genutzt.
                                                             
         VIEL ERFOLG BEI DER             
         ERSTELLUNG VON MA-              
         SCHINENPROGRAMMEN!!     

Ende

Änderungen und Hinweise nach Redaktionsschluss
——————————————————————— 
- als Cursorzellen werden statt 2BH und 2CH die Zellen D6H und D7H genutzt.
- die Beschreibung bezieht sich auf die Version 9 (ohne Test)
- Namen von gestrichenen Marken sollten notiert werden. Sie können mit 
  gleichem Namen spaeter wiederverwendet werden. Nur so ist die Nutzung aller
  127 moeglichen Marken realisierbar.
- externe Marken sollten ausserhalb des Speicherbereiches liegen, auf dem das
  Progr. geschrieben wird. Andernfalls wer  den diese bei Nutzung der Kdos  
  E# und S# mit verschoben. Erforderlichenfalls muss hier die Zuweisung der 
  Adressen unmittelbar vor dem Binden erfolgen bzw mit G#0 überprüfen
- ein mit EXT vereinbarter Markenname bleibt extern, auch nach Streichung und
  Wiederverwendung. Eine einfache Marke kann in eine EXT-Marke geändert werden.
- für eigene Erweiterungen des Editors stehen im Anzeigemodus  die Kdo's "X" 
  und "C" zur Verfügung. Diese werden auf 3127 bzw. 3122H abgefragt und können
  von dort mit JPZ verzweigt werden:

3122  CMP 043H  ;"C"?
3122  CMP 043H 
      JPZ CCC
3127  CMP 058H
      JPZ XXX                   
Damit verändert sich die Prüfsumme. Diese wird ab 2C2FH berechnet (Summe über gesamten 
Programmspeicher = 0).Im Anschl. an die Prüfsummenberechnung folgt das erforderliche 
Ausgl.-byte( nach RET). Die eigenen Erweiterungen müssen mit RET enden und führen in 
den Anzeigemodus zurück.

Folgende Unterprogramme können zum Dialog auf dem kleinen BS des Editors genutzt werden:
BSS 2C06     BBZ 2C1E
BSL 2C09     TXS 2C21
BKS 2C0C     BSZ 2C24
BKL 2C0F     HDS 2C27
HBS 2C12     BSN 2C2D
HDA 2C15
ZLE 2C18     Erläuterungen     
BBS 2C1B     folgen

UP      EING-REG    AUSG-REG    
--------------------------------
BSN     A           A           
BSS     A,DE        -           
BSL     DE          A           
BKS     DE          -           
BKL     -           DE          
HBS     A,DE        -  
HDS     HL,DE       -            
HBA     DE          A            
HDA     DE          HL           
ZLE     A,DE        HL,AF        
BSZ     A,DE,C      -            
BBS     -           Cy           
BBZ     DE,C        Cy           
TXS     HL          HL;A=undef.

Funktionen:                     
BSN Zeichen auf Cursorposition bzw. Steuerzeichen ausführen    
BSS Zeichen schreiben           
BSL   -"-   lesen               
BKS Cursor setzen               
BKL  -"-  -pos. lesen           
HBS Byte schreiben             
HDS Doppelbyte schreiben        
HBA Byte lesen (mit Anforderg.) 
HDA Doppelbyte wie HBA          
ZLE Zahl lesen;bit7,A=1->HEX  
                     =0->DEZ    
BSZ Zeichen in Zeile schreiben  
BBS Taste auf BS bis ENTER/OFF  
BBZ Taste auf Zeile (wie BBS)  
TXS Text ausschreiben

Reg.DE gibt eine Displayposition an nach: D=Zeile  (0-7)                 
                                          E=Spalte (0-31);E>32->                   
                                                   next line

Um alle möglichen Steuerzeichen zu nutzen, sollte die Tastaturroutine des Editors (2C2AH) verwendet werden.                  
BSN: schreibt das Zeichen in A (ASCII) ab Cursor auf Bildschirm und rückt den Cursor.Steuerzeichen werden ausgeführt:
08 Cursor links
09   -"-  rechts
0A   -"-  nach unten
0B   -"-  -"-  oben
0C CLS
0D Cursor an Zeilenanfang
1A Zeichen streichen
18 Zeile löschen ; 
02 home
BBS: schreibt Zeichen in A auf Position DE
BSL: liest Zeichen von Pos. DE  nach A
BKS: setzt Cursor auf Pos. DE
BKL: liest Cursorposition nach DE
HBS: schreibt Zahl aus A in 2 Hexaziffern auf Pos. DE
HDS: schreibt Zahl aus HL ab Position DE
HDA: fordert hex.Zahlenwert in  Form von 4 Hexaziffern ab Position DE (aktiviert Tastatur)
ZLE: liest beliebig lange Zahl hex oder dez ab Position DE. Maximal zu lesende Ziffernzahl wird in Bit
     0...6,A übergeben. Bit7,A=0 als Dezimalzahl; Bit7,A=1 als Hexazahl. Gelesener Wert in HL   
     Cy Z  A  HL   Kommentar         
     0  0  *1 Zahl mit allen Ziff gel
     0  1  *1 00   Zahl ist 0        
     1  0  *2 Zahl weniger Ziff geles
     1  1  0  00   1.Pos.keine Ziffe
     *1 (A)=ASCII des letzten Zeichen
     *2 (A)=Anzahl der gelesenen Ziffern (binär)
BSZ: ASCII-Zeichen in A auf Cursorposition, wenn Cursor auf einer Pos. der Zeile D und der Spalten
     E bis E+C befindet.
BBS: Taste auf Bildschirm bis ENTER oder OFF betätigt wurde  Cy=1:OFF betätigt; Cy=0:ENTER
BBZ: wie BBS, aber in Grenzen wie BSZ
TXS: Schreiben eines durch HL gezeigerten Textes (Folge von ASCII und Steuerzeichen). Das 1. und das
     letzte Byte des Textes wird durch Bit 7=1 markiert.
TNS: nummerierten Text schreiben; wie TXS, nur dass mehrere mit Bit7 gekennzeichnete Texte 
     hintereinander stehen. HL zeigert den Anfang der Texttabelle; A gibt die lfd. Nr. des Textes an.
     (verwendet TXS)

Die Beschreibung der Unterprogramme ist als Hinweis zu verstehen und erhebt keinen Anspruch auf Vollständigkeit!!!!

Sie ist sozusagen eine Hacker-Hilfe.