![]()  | 
			|||
| HSG | 
		    
  | 
		
Der Einfachheit halber werden alle Befehle des BONSAI-Lehrcomputers nur mit einem Byte kodiert. Für vier Befehle (der HLT-Befehl wurde "wegrationalisiert", mehr dazu weiter unten) werden 2 Bit benötigt, so dass für den Adressteil 6 Bit übrigbleiben. Es können also Adressen zwischen 010 = 0000002 und 6310 = 1111112 verwendet werden. 1)
Mehr-Wort-Befehle (ein 'Wort' ist in diesem Rechner ein Byte lang) werden nicht verwendet.
Die Befehle sind einfach durchnummeriert:
INC → 002, DEC → 012, JMP → 102, TST → 112
              Operationscode, opcode
              |
«Befehl»  =  «op» «adr»
                   |
                   Adresse
zum Beispiel: 10 000101 bedeutet : JMP 5 (opcode=2, adr=5)
Ein kleines Beispiel für die Kodierung (Additionsprogramm):
        Assembler:                     Maschinenprogramm:
                                       Adresse          Datum
        0 JMP 3         Befehle        0000 0000        10 000011
        1 INC 7                        0000 0001        00 000111
        2 DEC 8                        0000 0010        01 001000
        3 TST 8                        0000 0011        11 001000
        4 JMP 1                        0000 0100        10 000001
        5 JMP 5 *                      0000 0101        10 000101
        6     0         Lücke          0000 0110        00000000
        7     3         Daten          0000 0111        0000 0011
        8     2                        0000 1000        0000 0010
Der * weist auf eine Besonderheit hin: Der entfallene HLT-Befehl wird durch einen Sprung "auf sich selbst" ersetzt. Der Rechner wird also durch eine Endlosschleife abgefangen, deren Auftreten an einem stabilen Bitmuster im Befehlsregister (hier: 10 000101) zu erkennen ist. Außerdem sieht man im "leuchtenden" Mikroprogramm, dass immer wieder nach dem fetch-cycle nur noch der JMP-Befehl abgearbeitet wird.
Als weiteres Beispiel für die Binärkodierung sei die Übersetzung des weiter vorne systematisch aus PASCAL entwickelten Multiplikationsprogramms angeführt:
        MULTIPLI.BMA                  MULTIPLI.BIN
        dezimal                       binär
        0        40020                00000000        11 010100  Befehle
        1        30003                00000001        10 000011
        2        3   2 *              00000010        10 000010
        3        40019                00000011        11 010011
        4        30006                00000100        10 000110
        5        30010                00000101        10 001010
        6        20019                00000110        01 010011
        7        10021                00000111        00 010101
        8        10022                00001000        00 010110
        9        30003                00001001        10 000011
        10       40022                00001010        11 010110
        11       30013                00001011        10 001101
        12       30016                00001100        10 010000
        13       20022                00001101        01 010110
        14       10019                00001110        00 010011
        15       30010                00001111        10 001010
        16       20020                00010000        01 010100
        17       30000                00010001        10 000000
        18       0                    00010010        00000000    Lücke
        19       13                   00010011        00001101    Daten
        20       17                   00010100        00010001
        21       0                    00010101        00000000
        22       0                    00010110        00000000
Die Übersetzungen in die verschiedenen Darstellungen liefert
z.B. das Python-Skript bon2bma.py.
In Wirklichkeit ist der Speicher der Hardware 2 KByte groß, die Beschränkung auf 6 Adressbits erlaubt aber keine andere Adressierung. Es ist jedoch möglich durch Setzen der Jumper auf der Speicherplatine bis zu 8 verschiedene Programme im Speicher zu halten. Diese Programme bleiben bei einem eingebauten Zero-Power-Ram auch nach dem Abschalten der Versorgungsspannung erhalten.