EM400 - uruchamianie programów: Różnice pomiędzy wersjami
(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...") |
|||
Linia 68: | Linia 68: | ||
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'''. | 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 | == 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''': | 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''': |
Wersja z 16:09, 13 gru 2021
W emulatorze EM400, oprócz 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ę 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 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.
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.