HSG |
|
Der Compiler mpc übersetzt MiniPython in Bonsai-Assembler. Bonsai-Assembler kann mit Hilfe des Programms bon2bma.py (Bonsai-zu-Bonsai-Maschinensprache) in das Format *.bma, das das alte Bonsai-Programm lesen kann, oder in eine binäre Darstellung zur Eingabe in die Bonsai-Hardware, oder in eine spezielle hexadezimale Darstellung *.rom für die Hades-Simulation des Bonsai-Computers übersetzt werden.
Das einfache Additionsprogramm add0.bon
tst 2 jmp 4 jmp 7 dec 2 inc 1 jmp 1 hlt # 2 a # 3 b
wird je nach Parameter dezimal,
mk@x2:~/Arbeitsfläche/Technotag2012$ python3 bon2bma.py -d add0.bon 40009 30003 30006 20009 10008 30000 50006 0 2 3
binär
mk@x2:~/Arbeitsfläche/Technotag2012$ python3 bon2bma.py -b add0.bon 00000000 11001001 00000001 10000011 00000010 10000110 00000011 01001001 00000100 00001000 00000101 10000000 00000110 10000110 00000111 0 00001000 00000010 00001001 00000011
oder hexadezimal 'assembliert'.
mk@x2:~/Arbeitsfläche/Technotag2012$ python3 bon2bma.py -h add0.bon 0000:c9 0001:83 0002:86 0003:49 0004:08 0005:80 0006:86 0007:xx 0008:02 0009:03
Natürlich lassen sich die Ausgaben auch in die entsprechenden Dateien umleiten, z.B.
mk@x2:~/Arbeitsfläche/Technotag2012$ python3 bon2bma.py -h add0.bon > add0.rom
Der Parameter -d wäre richtig, um ein *.bma-Programm für die alte Bonsai-Simulation zu erzeugen. Wird das auf einem 'Unix-System' gemacht, so muss für die DosBox der richtige Zeilensprung eingefügt werden.
mk@x2:~/Arbeitsfläche/Technotag2012$ sed -r 's/$/\r/g' wurzel.bma > wurzeld.bma
Das Programm rechnete in den Standardeinstellungen der DosBox etwa drei Stunden, um schließlich korrekt die Wurzel aus 225 berechnet zu haben.
Der Bonsai-Interpreter bi braucht dafür nur den Bruchteil einer Sekunde
mk@x2:~/Arbeitsfläche/Technotag2012$ ./bi.py wurzel.bon n = 225 , w = 0 , h = 0 , u = 1 , __h1 = 0 , __h2 = 0 1860 inc 1815 dec 3034 jmp 0 jmp() 1671 tst 1 hlt 8381 gesamt n = 225 , w = 15 , h = 0 , u = 31 , __h1 = 0 , __h2 = 0