Linia 1: |
Linia 1: |
| 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.cfg'''. | | 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 = | | = Składnia pliku konfiguracyjnego = |
|
| |
|
| Konfiguracja składa się z bloków opisujących poszczególne elementy systemu. Definicja bloku rozpoczyna się jego nazwą, po czym w nawiasach wąsowych występuje zero lub więcej dostępnych opcji konfiguracyjnych dla elementu. Dozwolone są następujace bloki: | | 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: |
|
| |
|
| * '''computer''' - konfiguracja procesora i emulacji | | * '''cpu''' - konfiguracja emulacji procesora |
| | * '''memory''' - konfiguracja emulacji pamięci |
| * '''log''' - konfiguracja logowania | | * '''log''' - konfiguracja logowania |
| * '''channel n''' - konfiguracja kanałów dla n = 0...15 | | * '''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 |
|
| |
|
| == Komputer == | | == CPU == |
|
| |
|
| Dostępne sa następujące opcje konfigurujące działanie procesora: | | 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_real''' - zachowanie prędkości emulacji odpowiadającej prawdziwej MERZE-400 (true/false). |
| * '''timer_step''' - okres [[Przerwanie_zegarowe|zegara systemowego]] (w milisekundach) | | * '''speed_factor''' - współczynnik prędkości emulacji |
| * '''timer_start''' - uruchom zegar systemowy przy starcie emulatora (true/false) | | * '''throttle_granularity''' - kwant czasu (w mikrosekundach) używany do śledzenia prędkości emulacji |
| * '''cpu_mod''' - włącz modyfikacje procesora do zgodności z MX-16 (true/false) | | * '''clock_period''' - okres [[Przerwanie_zegarowe|zegara systemowego]] (w milisekundach) |
| * '''cpu_user_io_illegal''' - instrukcje IN/OU nielegalne dla programów użytkownika (true/false) | | * '''clock_start''' - uruchom zegar systemowy przy starcie emulatora (true/false) |
| * '''cpu_awp''' - dołącz [[Arytmometr Wielokrotnej Precyzji]] (true/false) | | * '''modifications''' - włącz modyfikacje procesora do zgodności z MX-16 (true/false) |
| * '''mem_elwro''' - ilość bloków pamięci Elwro (bloki 32ksłowa) | | * '''user_io_illegal''' - instrukcje IN/OU nielegalne dla programów użytkownika (true/false) |
| * '''mem_mega''' - ilość bloków [[Pamięć MEGA|pamięci MEGA]] (bloki 64ksłowa)
| | * '''awp''' - dołącz [[Arytmometr Wielokrotnej Precyzji]] (true/false) |
| * '''mem_mega_prom''' - nazwa pliku z obrazem pamięci PROM MEGA
| | * '''stop_on_nomem''' - procesor przechodzi w stan STOP przy odwołaniu to nieskonfigurowanego segmentu pamięci w bloku 0 (true/false) |
| * '''mem_mega_boot''' - boot systemu z pamięci MEGA (true/false)
| | * '''kb''' - wartość do ustawienia na kluczach pulpitu technicznego przy starcie emulatora |
| * '''cpu_stop_on_nomem''' - procesor przechodzi w stan STOP przy odwołaniu to nieskonfigurowanego segmentu pamięci w bloku 0 (true/false)
| |
| * '''mem_os_segments''' - liczba segmentów zarezerwowanych dla systemu operacyjnego (1 lub 2) | |
|
| |
|
| Przykładowy blok konfiguracji komputera: | | Przykładowy blok konfiguracji procesora: |
|
| |
|
| computer { | | [cpu] |
| speed_real = false
| | fpga = false |
| timer_step = 10
| | speed_real = false |
| timer_start = true
| | speed_factor = 1 |
| cpu_user_io_illegal = true
| | throttle_granularity = 10 |
| cpu_awp = true
| | clock_period = 10 |
| cpu_mod = false
| | clock_start = true |
| mem_elwro = 1
| | stop_on_nomem = true |
| mem_mega = 16
| | user_io_illegal = true |
| mem_mega_prom = mega_prom.img
| | awp = true |
| mem_mega_boot = true
| | modifications = false |
| mem_os_segments = 2
| | kb = 0 |
| }
| | |
| | == Pamięć == |
| | |
| | * '''elwro_modules''' - ilość bloków pamięci Elwro (bloki 32ksłowa) |
| | * '''mega_modules''' - ilość bloków [[Pamięć MEGA|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 == | | == Logowanie == |
Linia 71: |
Linia 93: |
| === Kanały === | | === Kanały === |
|
| |
|
| Dołączenie emulacji kanału wymaga zdefiniowania dla niego bloku konfiguracji w sposób następujący: | | 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.: |
| | |
| channel <nr_kanału> = <typ_kanału> { ... }
| |
| | |
| Gdzie:
| |
| * '''nr_kanału''' - kolejny numer kanału w systemie
| |
| * '''typ_kanału''' - typ kanału, dostępne typy to:
| |
| ** '''char''' - kanał znakowy
| |
| ** '''mem''' - kanał pamięciowy
| |
| ** '''plix''' - procesor peryferyjny [[PLIX]]
| |
| ** '''multix''' - procesor peryferyjny [[MULTIX]]
| |
|
| |
|
| W nawiasach wąsowych występują definicje kolejnych urządzeń podłączonych do kanału (patrz niżej).
| | [io] |
| | channel_15 = char |
|
| |
|
| === Urządzenia === | | === Urządzenia === |
|
| |
|
| Konfiguracja emulowanych urządzeń definiowana jest następująco: | | Konfiguracja emulowanych urządzeń definiowana jest w osobnych sekcjach nazwanych '''devX.Y''', gdzie X jest numerem kanału, a Y numerem urządzenia. |
| | |
| unit <nr_urządzenia> = <typ_urządzenia> [: argument [, argument [...]]]
| |
| | |
| Gdzie:
| |
| * '''nr_urządzenia''' - kolejny numer urządzenia w kanale
| |
| * '''typ_urządzenia''' - jeden z obsługiwanych typów urządzenia.
| |
| * '''argument''' - opcjonalne argumenty będące parametrami dołączanego urządzenia
| |
| | |
| === Emulowane urządzenia peryferyjne ===
| |
| | |
| * Terminal w konsoli emulatora:
| |
| ** typ urządzenia: '''term_console'''
| |
| ** argumenty: brak
| |
| ** przykład użycia: <tt>term_console</tt>
| |
| * Terminal TCP
| |
| ** typ urządzenia: '''term_tcp'''
| |
| ** argumenty: port TCP
| |
| ** przykład użycia: <tt>term_tcp:20034</tt>
| |
| * Terminal szeregowy
| |
| ** typ urządzenia: '''term_serial'''
| |
| ** argumenty: urządzenie, prędkość, ilość bitów w słowie, parzystość, ilosć bitów stopu
| |
| ** przykład użycia: <tt>term_serial:/dev/ttyS0, 9600, 8, N, 1</tt>
| |
| * Dysk MERA 9425
| |
| ** typ urządzenia: '''mera9425'''
| |
| ** argumenty: obraz talerza stałego, obraz talerza wymiennego
| |
| ** przykład użycia: <tt>mera9425:disk1.img, disk2.img</tt>
| |
| * Dysk [[Winchester]]
| |
| ** typ urządzenia: '''winchester'''
| |
| ** argumenty: obraz dysku
| |
| ** przykład użycia: <tt>winchester:winchester.img</tt>
| |