EM400 - konfiguracja: Różnice pomiędzy wersjami

Z MERA 400 wiki
Przejdź do nawigacji Przejdź do wyszukiwania
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>

Wersja z 17:20, 1 gru 2021

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.