                                                     11.Jan.2026
================================================================
Die Test-Steckkarte in Slot 4
=============================

Man lese erst auf der Seite Hardware den Abschnitt zur
Testkarte.   Kommandos zu RS232 und SD-Karte siehe dort.
4SERI, 4SERO, 4SDS /nn, 4SDR /nn

Das Zeichen 40/hb wird hier durch einen Punkt dargestellt.
Der Kleinbuchstabe o vor Mikronamen steht für das Zeichen 25.
Alle Zahlen sind hexadezimal.

----------------------------------------------------------------
Das Kommando  4DEMO  lädt den Quelltext eines
Demonstrations-Programms in die Seite E des Text-RAM.

Bei Eingabe von 4DEMO # wird der Quelltext automatisch
compiliert und das Programm gestartet. Das setzt voraus,
dass Stacks C und D leer sind und noch keine Variablen
mit Namen PGM und EDI vorhanden sind. Beim Testen des
Demonstrations-Programms beachten: Bei OPA ist stets
das Vorzeichen anzugeben. OPB ist ohne Vorzeichen.

----------------------------------------------------------------
4TTE    var var    (e0 Zyklen)  teste var1 = var2
4TTL    var var    (e0 Zyklen)  teste var1 < var2
4COPYN  var var    (c0 Zyklen)  kopiert 1..4 Byte (endbündig)
4COPYS  var var   (380 Zyklen)  kopiert String  (startbündig)
4PRINTN /nn var    (c0 Zyklen)  Ausgabe Zahl   in Seite C
4PRINTS /nn var   (200 Zyklen)  Ausgabe String in Seite C
4INPUTN /nn var                 Eingabe Zahl   in Seite C
4INPUTS /nn var                 Eingabe String in Seite C
4SETLOC /nn        (40 Zyklen)  setzt Positionsmarke = nn
4ADDLOC /nn        (40 Zyklen)  addiert nn zu Posmarke (mod 100)
4APPCX  var       (200 Zyklen)  schreibt String in die CX-Datei

4LFEED  /nn      (6040 Zyklen)  Linefeed in Seite C  (nn=00..3f)

       falls /nn fehlt: führt 1 Lfeed in Zeilen LF..3f aus
       falls  nn=00   : setzt LF=01 und führt 1 Lfeed aus
       falls  nn>00   : setzt LF=nn und führt 40-nn Lfeeds aus

Bei PRINTx, INPUTx ist Position auf dem Display =
                       Positionsmarke*4 + nn  (mod 400)

Bei TTE und TTL wird 0|1 von oben auf den TF-Merker
geschoben falls das Testergebnis true|false ist.

Zahl ist 1/2/4 Byte (unsigned/unsigned/signed)

----------------------------------------------------------------
String/Wert- und Wert/String-Konversionsroutine konvertieren
String und signed-Zahl (Vorzeichen angeben / min 3 Ziffern)

Init-Sequenz setzt Positionsmarke = c0

----------------------------------------------------------------
Der Formelinterpreter arbeitet mit den Registern Z4, P4 (4 Byte)
und IX (2 Byte).   var ist 1/2/4 Byte (unsigned/unsigned/signed)

oSTO           ( 40 Zyklen)   P4 erhält Z4
oGET           ( 40 Zyklen)   Z4 erhält P4
oAND           ( 40 Zyklen)   Z4 wird   Z4 and P4
oLOR           ( 40 Zyklen)   Z4 wird   Z4  or P4
oXOR           ( 40 Zyklen)   Z4 wird   Z4 xor P4
oADD           ( 40 Zyklen)   Z4 wird   Z4  +  P4
oSUB           ( 40 Zyklen)   Z4 wird   Z4  -  P4
oMUL           (300 Zyklen)   Z4 wird   Z4  *  (P4+1)
oDIV           (380 Zyklen)   Z4 wird   Z4 div (P4+1)

oSTO var       ( 80 Zyklen)   var erhält Z4
oGET var       ( 80 Zyklen)   Z4 erhält var
oAND var       ( 80 Zyklen)   Z4 wird   Z4 and var
oLOR var       ( 80 Zyklen)   Z4 wird   Z4  or var
oXOR var       ( 80 Zyklen)   Z4 wird   Z4 xor var
oADD var       ( 80 Zyklen)   Z4 wird   Z4  +  var
oSUB var       ( 80 Zyklen)   Z4 wird   Z4  -  var
oMUL var       (340 Zyklen)   Z4 wird   Z4  *  (var+1)
oDIV var       (3c0 Zyklen)   Z4 wird   Z4 div (var+1)

oSTO /nn box   ( c0 Zyklen)   box(IX+rn) erhält Z4
oGET /nn box   ( c0 Zyklen)   Z4 erhält box(IX+rn)
oAND /nn box   ( c0 Zyklen)   Z4 wird   Z4 and box(IX+rn)
oLOR /nn box   ( c0 Zyklen)   Z4 wird   Z4  or box(IX+rn)
oXOR /nn box   ( c0 Zyklen)   Z4 wird   Z4 xor box(IX+rn)
oADD /nn box   ( c0 Zyklen)   Z4 wird   Z4  +  box(IX+rn)
oSUB /nn box   ( c0 Zyklen)   Z4 wird   Z4  -  box(IX+rn)
oMUL /nn box   (380 Zyklen)   Z4 wird   Z4  *  (box(IX+rn)+1)
oDIV /nn box   (400 Zyklen)   Z4 wird   Z4 div (box(IX+rn)+1)

oNEG /nn       ( 40 Zyklen)   Z4 wird   ssssssnn - Z4
oGET /nn       ( 40 Zyklen)   Z4 erhält nn
oAND /nn       ( 40 Zyklen)   Z4 wird   Z4 and nn
oLOR /nn       ( 40 Zyklen)   Z4 wird   Z4  or nn
oXOR /nn       ( 40 Zyklen)   Z4 wird   Z4 xor nn
oADD /nn       ( 40 Zyklen)   Z4 wird   Z4  +  nn +1
oSUB /nn       ( 40 Zyklen)   Z4 wird   Z4  -  nn -1
oMUL /nn       (300 Zyklen)   Z4 wird   Z4  *  (nn+1)
oDIV /nn       (380 Zyklen)   Z4 wird   Z4 div (nn+1)

oLDX            (40 Zyklen)   IX erhält  Z4
oSTX            (40 Zyklen)   Z4 erhält  IX
oLDX var        (80 Zyklen)   IX erhält var
oSTX var        (80 Zyklen)   var erhält IX

oLDX /nn        (a0 Zyklen)   IX erhält  Z4 *(nn+1)
oADX /nn        (a0 Zyklen)   IX erhält  IX + Z4 *(nn+1)
oLDX /nn var    (e0 Zyklen)   IX erhält  var*(nn+1)
oADX /nn var    (e0 Zyklen)   IX erhält  IX + var*(nn+1)

----------------------------------------------------------------
ssssssnn ist der 4-Byte-Wert, welcher aus der Konstanten /nn
durch Vervielfachung von Bit 7 entsteht.

box(IX+rn) ist  s-Byte-Wert ab Position IX+rn.   s= 1|2|3|4
Die Anzahl s wird durch die oberen 2 Bit der Konstanten /nn
festgelegt.    rn sind die unteren 6 Bit der Konstanten /nn

Bei MUL|DIV ist Multiplikator|Divisor = 2-Byte-Wert +1
Bei DIV erhält IX den Divisionsrest

Eigendauer = Summe der Dauern der MicroOps + 18 Zyklen

================================================================
Weitere Kommandos
----------------------------------------------------------------
1GOL    startet Conway's Game of Life.

SIZE:  Mit Zifferntaste 1/2  Größe des Spielfelds auswählen.
Als Startbild wird die erste Hälfte von Textseite E importiert.

RULE:  Mit Zifferntaste 8/c Regelmodus auswählen. Dann mit
Cursortasten und Taste hb eine Regel erstellen. EN drücken.

Run mit Taste hb. Break mit Taste CR oder anderer Taste.
Einzelschritt mit Leertaste. Scrollen mit Cursortasten.
Ende mit EN (Enter).








