Ekran został podzielony na trzy części:
W dalszym opisie pozwolę sobie pominąć rzeczy oczywiste (np. do czego służy przycisk wyczyść konsolę
), by nie obrażać inteligencji szanownego czytelnika.
Konsola tekstowa jest używana przez kompilator i emulator do wypisywania komunikatów; komunikaty zostały podzielone na trzy klasy:
halt
, definicja etykiety do której nie ma odwołania w programie.Komunikaty można przekierować zarówno do okienka tekstowego, jak również do wyskakującego okienka. Dla każdej z wyżej wymienionych klas istnieje możliwość wyboru sposobu prezentacji, służą do tego przełączniki na konsole
oraz do okienka
.
Kompilator odczytuje tekst źródłowy programu z okienka tekstowego. Przycisk kompilacja
inicjuje kompilację. Jeśli przeszła ona bezbłędnie, to włączany jest tryb emulacji: możliwość edycji/kompilacji zostaje zablokowana, włączany jest interfejs emulatora.
Interfejs emulatora został podzielony na cztery części: Maszyna, Rejestry, Taśma wejściowa, Taśma wyjściowa.
Naciśnięcie przycisku wykonaj instrukcję
powoduje wykonanie bieżącej instrukcji. W okienku znajdującym się poniżej wyświetlane są trzy kolejne linie kodu, bieżąca instrukcja jest oznaczona przez =>
. Wszystkie linie są poprzedzone fizycznym numerem linii (maksymalnie 3-cyfrowym), niezależnie od tego czy w kodzie występuje numer linii, czy nie. Może to wyglądać np. tak:
5: add 0 # r0 *= 2 => 6: add 5 7: read 1
Naciśnięcie przycisku reset
powoduje wyzerowanie rejestrów i przejście na początek programu. Zawartość taśm nie jest zmieniana.
Naciśnięcie przycisku stop
powoduje zakończenie trybu emulacji i przejście w tryb edycji.
W polu tekstowym wyświetlane są wartości obserwowanych rejestrów.
Naciśnięcie przycisku obserwuj rejestry...
(ang. watch) powoduje wyświetlenie okienka, w którym można wpisać listę wyrażeń (wyrażenia oddziela się spacją/spacjami); zawsze na początku wyświetlany jest akumulator. Wszystkie błędnie zapisane wyrażenia są ignorowane.
wyrażenie | wyświetlany tekst pole wyświetl numery rejestrów: | |
wyłączone | włączone | |
r0=xxx
| r0=xxx
| |
numer rejestru | ||
numer | r0=xxx rnumer=yyy
| r0=xxx rnumer=yyy
|
nazwany rejestr | ||
nazwa=numer | r0=xxx nazwa=yyy
| r0=xxx nazwa(numer)=yyy
|
tablica (zakres rejestrów) | ||
lo:hi | r0=xxx a[lo:hi]=[yyy,zzz,...,vvv]
| r0=xxx a[lo:hi]=[yyy,zzz,...,vvv]
|
nazwana tablica | ||
tablica=lo:hi | r0=xxx tablica=[yyy,zzz,...,vvv]
| r0=xxx tablica[lo:hi]=[yyy,zzz,...,vvv]
|
Oto dość rozbudowany przykład. Niech rejestry mają następujące wartości:
r0=777, r1=111, r2=222, r3=333, r4=-5, r5=-6, r6=-7, r7=12, r8=13
Wyrażenie wpisane do okienka ma następującą postać
2 3 n=0 zmienna=7 8 tab=4:6 0:4 tab2=5a zostanie wyświetlone tak (pole
wyświetl numery rejestrówwyłączone)
r2=222 r3=333 n=777 zmienna=12 r8=13 tab=[-5,-6,-7] a[0:4]=[777,111,222,333,-5] tab2=-6
Naciśnięcie przycisku dopisz do taśmy...
powoduje wyświetlenie okienka, w którym można wpisać kolejne liczby (oddzielone spacjami lub przecinkami) - zostaną one dopisane do taśmy. Innym sposobem dodania nowych wartości do taśmy jest naciśnięcie przycisku wylosuj
- do taśmy dopisywana jest liczba wylosowana z przedziału określonego w polach obok (domyślnie jest to przedział od 0 do 100).
W okienku poniżej wyświetlana jest zawartość taśmy wejściowej - pierwsza liczba od lewej jest tą, która zostanie odczytana przy następnym wywołaniu instrukcji read
. Próba odczytu z pustej taśmy nie kończy się błędem - do taśmy dopisywana jest przypadkowa wartość.
Nie ma możliwości przewijania widoku taśmy, jeśli więc trzeba zobaczyć jej zawartość, można nacisnąć przycisk na konsolę
. Spowoduje to wypisanie wszystkich elementów taśmy na konsolę.
Ostatnia liczba z prawej jest ostatnio zapisaną przez rozkaz write
.
Podobnie jak dla taśmy wejściowej, tak i tu nie ma możliwości przewijania widoku. Uwagi j.w.