Zmiany

Przejdź do nawigacji Przejdź do wyszukiwania
Usunięte 660 bajtów ,  17:20, 1 gru 2021
brak opisu edycji
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 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 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>

Menu nawigacyjne