User manual
28
Adresse Befehl Daten Kommentar
00 6 9 A = AD1
01 5 4 Port = A
02 7 A A = Not A
03 5 9 PWM = A
04 2 6 Warte 100 ms
05 3 5 Springe –5
69 54 7A 59 26 35
Listing 14: Invertieren
12 Sprünge und Verzweigungen
Bisher gab es nur einen einfachen Rücksprung (Befehl 3), der maximal 15 Adressen zurückreichte. Nun
kommt ein absoluter Sprung (Jump) hinzu. Da das Sprungziel nur mit 4 Bit angegeben werden kann, gibt es
einen zusätzlichen Befehl, der das High-Nibble der Adresse festlegt. Damit hat man den Adressraum 0–255.
Das ist mehr, als benötigt wird, denn das EEPROM des Controllers fasst nur 128 Bytes, also den Bereich 00
bis 7F (dezimal 0 bis 127). Der Speicher ist damit praktisch in acht Seiten, Seite 0 bis Seite 7 (Page 0–7), ein-
geteilt. Vor einem absoluten Sprung muss die Seite des Sprungziels festgelegt werden.
Zwei Zählschleifen mit den Variablen C und D führen ebenfalls absolute Sprünge aus, wobei auch hier zuvor
die Seite der Adresse festgelegt werden muss.
Die bedingten Sprünge arbeiten als Skip-Befehle (Auslassen, Überspringen). Wenn die jeweilige Bedingung
wahr ist, wird eine Adresse übersprungen. Dort könnte z. B. ein Sprungbefehl oder auch ein Rechenbefehl
stehen. Als Bedingungen stehen Vergleiche zwischen A und B sowie direkte Bit-Abfragen des Eingangs-Ports
zur Verfügung.
Außerdem gibt es noch einen Unterprogrammaufruf (Call) und den dazugehörenden Rücksprungbefehl
(Return). Es sind zwar mehrere Unterprogramme erlaubt, aber aus einem Unterprogramm darf kein weiteres
Unterprogramm aufgerufen werden, weil der Interpreter sich immer nur eine Rücksprungadresse merkt.
80–8F: Adr-high = 0–15
90–0F: direkter Sprung (Jump) auf Adr-high, Adr-low (0–15)
A0–AF: Zählschleife C-mal Adr-high, Adr-low (0–15)
B0–BF: Zählschleife D-mal Adr-high, Adr-low (0–15)
C1–CF: bedingter Sprung: wenn (Bedingung 1–15) dann überspringe
C1: if A > B then Adr = Adr + 1
C2: if A < B then Adr = Adr + 1
C3: if A = B then Adr = Adr + 1
C4: if Din.0 = 1 then Adr = Adr + 1