SicTools
SicTools je zbirnik in simulator za računalnik SIC/XE (dokumentacija, primeri programov). Za uporabo rabimo OpenJDK ali katero drugo implementacijo Jave.
Simulator
SicTools implementira navidezni stroj za računalnik SIC/XE s podporo za vhodno/izhodne (angl. I/O) in pomnilniške (angl. memory-mapped) naprave.
Datoteko z izvorno ali objektno kodo lahko v SicTools naložimo z ukazom
java -cp sictools.jar sic.Sim primer.asm # prevede in naloži izvorno kodo v zbirniku
java -cp sictools.jar sic.Sim primer.obj # naloži že prevedeno kodo
Program lahko zaženemo tudi brez grafičnega vmesnika z ukazom
java -cp sictools.jar sic.VM primer.obj
SIC/XE podpira 256 I/O naprav, ki jih uporabljamo z ukazi RD
, WD
in TD
. SicTools naprave 0, 1 in 2 rezervira za standardni vhod, izhod in napako. Vsebino ostalih naprav bere in piše v datoteke v delovnem imeniku, npr. 1A.dev za napravo 1A
.
Tipkovnica je pomnilniška naprava, ki vrednost zadnje tipke zapisuje na naslov 0xC000
.
Tekstovni zaslon izrisuje črke (ASCII), ki jih zapišemo v tabelo na pomnilniškem naslovu 0xB800
. Privzeta velikost zaslona je 80×25. Pomnilniški naslov vsebine celice na (x, y) izračunamo z
address = origin + y*cols + x
Grafični zaslon izrisuje piksle, ki jih zapišemo v tabelo na pomnilniškem naslovu 0xA000
. Privzeta velikost zaslona je 64×64. Barvo vsakega piksla določa en bajt. Pomnilniški naslov in barvo piksla z vrednostjo iirrggbb
na (x, y) izračunamo z
address = origin + y*cols + x
red, green, blue = (rr, gg, bb) * 20*(ii+1)
Zbirnik
Program primer.asm prevedemo v strojno kodo z ukazom
java -cp sictools.jar sic.Asm primer.asm
ki objektno kodo zapiše v datoteko primer.obj. Poleg tega zapiše disassembly v primer.lst, simbole in druge informacije pa v primer.log. Program lahko podamo tudi na standardnem vhodu:
java -cp sictools.jar sic.Asm <<EOF
start LDA #6
LDB #9
MULR A,B
EOF
Več datotek s strojno kodo a.obj, b.obj in c.obj povežemo (angl. link) v izhodno datoteko output.obj z ukazom
java -cp sictools.jar sic.Link -o output.obj -m main a.obj b.obj c.obj
Vse opcije za zbirnik dobimo z -help
. Uporabna je opcija -obj-slack
, ki med posamezne strojne ukaze vstavi presledek za lažje branje.