Zmiany

Przejdź do nawigacji Przejdź do wyszukiwania
Utworzono nową stronę "W emulatorze EM400, oprócz uruchomienia systemu operacyjnego CROOK-5 z obrazu dysku, można uruchomić dowolny program napisany dla MERY-400. Najpro..."
W emulatorze EM400, oprócz [[CROOK-5 w EM400|uruchomienia systemu operacyjnego CROOK-5]] z obrazu dysku, można uruchomić dowolny program napisany dla MERY-400. Najprostszym przypadkiem jest uruchomienie programu działającego w obszarze systemu operacyjnego, czyli w bloku pamięci 0. W repozytorium ze źródłami assemblera EMAS znajdują się [https://github.com/jakubfi/emas/tree/master/examples dwa przykładowe programy], których uruchomienie zostało poniżej opisane.

= Wymagania =

Do uruchomienia przykładów potrzebne są:
* zainstalowany emulator EM400 wraz z emulatorem terminala e4term,
* zainstalowany assembler EMAS.

= Assemblacja przykładów =

Pierwszym krokiem do uruchomienia [https://github.com/jakubfi/emas/tree/master/examples przykładowych programów] jest ich zassemblowanie do postaci binarnego kodu wynikowego. Po pobraniu obu źródeł, można to zrobić wydając dwa polecenia:

emas loops.asm -O raw -o loops.bin
emas print.asm -O raw -o print.bin

Tak przygotowane pliki '''loops.bin''' i '''print.bin''' są gotowe do załadowania w emulatorze EM400.

= Uruchomienie programów =

Aby uruchomić emulator EM400, potrzebny będzie plik konfiguracyjny. Poniżej przedstawiona jest przykładowa, minimalna konfiguracja, pozwalająca uruchomić oba przykładowe programy. Zapisać ją należy do pliku '''em400.ini''' w katalogu, w którym znajdują się oba zassemblowane przykłady. Z tej lokalizacji będzie również uruchamiany emulator.

[log]
enabled = false

[cpu]
fpga = false
speed_real = false
throttle_granularity = 10
clock_period = 10
clock_start = false
stop_on_nomem = true
user_io_illegal = false
awp = true
modifications = false
kb = 0

[memory]
elwro_modules = 1
mega_modules = 0
hardwired_segments = 2

[sound]
enabled = false

[io]
channel_15 = char

[dev15.0]
type = terminal
transport = tcp
port = 32000
speed = 9600

== loops.bin ==

Program '''loops.bin''' jest prostym programem prezentującym różne sposoby iterowania z użyciem instrukcji assemblera. Można go uruchomić bez konieczności podłączania terminala, a jego efekty można obserwować jedynie w interfejsie debugera emulatora EM400. Aby uruchomić emulator i załadować program '''loops.bin''', należy wydać polecenie:

em400 -c em400.ini -p loops.bin

Po uruchomieniu emulatora w oknie terminala pojawi się podstawowy interfejs użytkownika EM400 - debuger systemu.

[[File:Em400 loops.png|center|1000px|Interfejs EM400 z załadowanym programem loops.bin]]

Jeśli nie są widoczne wszystkie elementy interfejsu użytkownika, należy zwiększyć rozmiar okna terminala lub zmniejszyć czcionkę.

W takim stanie program jest załadowany do pamięci emulowanego komputera, ale procesor jest zatrzymany, o czym informuje pole "CPU status" w lewym dolnym rogu okna terminala. Ten przykładowy program przeznaczony jest do wykonania krokowego. Wykonanie pojedynczej instrukcji programu możliwe jest po wydaniu polecenia '''cycle'''. Można wtedy w oknie "ASM" obserwować wykonanie kolejnych instrukcji, a w oknach "System registers" i "User registers" zmiany stanów rejestrów maszyny. Program wykonuje kilka pętli po 10 kroków każda.

Ostatnią instrukcją programu jest instrukcja "hlt 000". Ponieważ procesor jest cały czas zatrzymany, a poleceniem "cycle" wymuszane są kolejne kroki pracy CPU, to nie będzie miała ona żadnego praktycznego efektu. Ale program można oczywiście uruchomić nie-krokowo. Można to zrobić ustawiając licznik rozkazów ponownie na adres 0 poleceniem '''ic=0''', resetując system poleceniem '''clear''', a następnie uruchamiając procesor poleceniem '''start'''.

== print.bin ===

Program '''print.bin''' jest przykładowym programem wypisującym (w najprostszy możliwy sposób) ciąg znaków na terminalu podłączonym do emulatora. Aby go uruchomić, należy wydać polecenie podobne do poprzedniego, ale z programem '''print.bin''' jako argumentem przełącznika '''-p''':

em400 -c em400.ini -p print.bin

Następnie, w osobnym okienku, należy uruchomić emulator terminala e4term, podłączając go do działającego emulatora EM400:

e4term 127.0.0.1 32000

e4term łączy się z EM400 na porcie 32000, który w pliku konfiguracyjnym został wcześniej zdefiniowany jako port dla urządzenia 0 w kanale znakowym 15, które jest terminalem.

Po podpięciu terminala, w debugerze EM400 można wydać polecenie "start" - w oknie z podłączonym terminalem powinien pojawić się napis "Hello world!". Podobnie jak w przypadku programu '''loops.bin''' i ten program można wykonać krokowo.

Menu nawigacyjne