EM400 - konfiguracja
Plik konfiguracyjny EM400 pozwala skonfigurować parametry sprzętowe emulowanej maszyny i jest wymagany do uruchomienia emulatora. Jeśli użytkownik podał nazwę pliku konfiguracyjnego w linii poleceń (używając przełącznika -c), zostanie on użyty. Jeśli nie, domyślnie używany jest plik ~/.em400/em400.ini.
Składnia pliku konfiguracyjnego
Konfiguracja składa się z sekcji opisujących poszczególne elementy systemu. Definicja sekcji rozpoczyna się jego nazwą, po czym występują opcje konfiguracji dla danej sekcji. Rozpoznawane są następujące sekcje:
- cpu - konfiguracja emulacji procesora
- memory - konfiguracja emulacji pamięci
- log - konfiguracja logowania
- ui - ustawienia interfejsu użytkownika
- sound - konfiguracja dźwięku
- fpga - konfiguracja połączenia ze sprzętową implementacją procesora
- io - konfiguracja kanałów I/O systemu
- devX.Y - konfiguracja urządzeń w kanałach, gdzie X jest numerem kanału, a Y numerem urządzenia
CPU
Dostępne sa następujące opcje konfigurujące działanie procesora:
- fpga - używanie sprzętowej implementacji procesora (true/false)
- speed_real - zachowanie prędkości emulacji odpowiadającej prawdziwej MERZE-400 (true/false).
- speed_factor - współczynnik prędkości emulacji
- throttle_granularity - kwant czasu (w mikrosekundach) używany do śledzenia prędkości emulacji
- clock_period - okres zegara systemowego (w milisekundach)
- clock_start - uruchom zegar systemowy przy starcie emulatora (true/false)
- modifications - włącz modyfikacje procesora do zgodności z MX-16 (true/false)
- user_io_illegal - instrukcje IN/OU nielegalne dla programów użytkownika (true/false)
- awp - dołącz Arytmometr Wielokrotnej Precyzji (true/false)
- stop_on_nomem - procesor przechodzi w stan STOP przy odwołaniu to nieskonfigurowanego segmentu pamięci w bloku 0 (true/false)
- kb - wartość do ustawienia na kluczach pulpitu technicznego przy starcie emulatora
Przykładowy blok konfiguracji procesora:
[cpu] fpga = false speed_real = false speed_factor = 1 throttle_granularity = 10 clock_period = 10 clock_start = true stop_on_nomem = true user_io_illegal = true awp = true modifications = false kb = 0
Pamięć
- elwro_modules - ilość bloków pamięci Elwro (bloki 32ksłowa)
- mega_modules - ilość bloków pamięci MEGA (bloki 64ksłowa)
- mega_prom - nazwa pliku z obrazem pamięci PROM MEGA
- mega_boot - boot systemu z pamięci MEGA (true/false)
- hardwired_segments - liczba segmentów zarezerwowanych dla systemu operacyjnego (1 lub 2)
- preload - program ładowany do bloku 0 pamięci przy starcie emulatora
Przykładowy blok konfiguracji pamięci:
[memory] elwro_modules = 1 mega_modules = 0 hardwired_segments = 2 mega_prom = mega0.bin mega_boot = false preload = program.bin
Logowanie
EM400 pozwala na logowanie zdarzeń do pliku. Zadrzenia występują w obrębie komponentów. Lista dostępnych komponentów jest następująca:
- em4h - emulator
- reg, mem, cpu, op, int - rejestry, pamieć, procesor i wykonywane instrukcje, przerwania
- io, mx, px, cchr, cmem - wejście/wyjście i kanały
- term, wnch, 9045, flop, pnch, pnrd - urządzenia zewnętrzne
- crk5 - CROOK-5
- all - komponent specjalny, zawiera wszystkie pozostałe komponenty
Konfiguracja logowania obejmuje następujące opcje:
- enabled - aktywuj logowanie (true/false)
- file - plik, do którego zapisywany będzie log
- components - określa które komponenty będą logowane
- line_buffered - pozwala włączyć buforowanie linii
Przykładowy blok konfiguracji logowania:
[log] enabled=true file=em400.log components=em4h line_buffered=true
Urządzenia zewnętrzne
Kanały
Dołączenie emulacji kanału wymaga podania w sekcji io nazw kanałów jako wartości dla kluczy channel_X', gdzie X jest numerem kanału, np.:
[io] channel_15 = char
Urządzenia
Konfiguracja emulowanych urządzeń definiowana jest w osobnych sekcjach nazwanych devX.Y, gdzie X jest numerem kanału, a Y numerem urządzenia.