|
|
(Nie pokazano 1 pośredniej wersji utworzonej przez tego samego użytkownika) |
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 i opis poszczególnych opcji znajduje się [https://github.com/jakubfi/em400/blob/master/cfg/em400.ini.template tutaj] |
| | |
| 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:
| |
| | |
| * '''computer''' - konfiguracja procesora i emulacji
| |
| * '''log''' - konfiguracja logowania
| |
| * '''channel n''' - konfiguracja kanałów dla n = 0...15
| |
| | |
| == Komputer ==
| |
| | |
| Dostępne sa następujące opcje konfigurujące działanie procesora:
| |
| | |
| * '''speed_real''' - zachowanie prędkości emulacji odpowiadającej prawdziwej MERZE-400 (true/false).
| |
| * '''timer_step''' - okres [[Przerwanie_zegarowe|zegara systemowego]] (w milisekundach)
| |
| * '''timer_start''' - uruchom zegar systemowy przy starcie emulatora (true/false)
| |
| * '''cpu_mod''' - włącz modyfikacje procesora do zgodności z MX-16 (true/false)
| |
| * '''cpu_user_io_illegal''' - instrukcje IN/OU nielegalne dla programów użytkownika (true/false)
| |
| * '''cpu_awp''' - dołącz [[Arytmometr Wielokrotnej Precyzji]] (true/false)
| |
| * '''mem_elwro''' - ilość bloków pamięci Elwro (bloki 32ksłowa)
| |
| * '''mem_mega''' - ilość bloków [[Pamięć MEGA|pamięci MEGA]] (bloki 64ksłowa)
| |
| * '''mem_mega_prom''' - nazwa pliku z obrazem pamięci PROM MEGA
| |
| * '''mem_mega_boot''' - boot systemu z pamięci MEGA (true/false)
| |
| * '''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:
| |
| | |
| computer {
| |
| speed_real = false
| |
| timer_step = 10
| |
| timer_start = true
| |
| cpu_user_io_illegal = true
| |
| cpu_awp = true
| |
| cpu_mod = false
| |
| mem_elwro = 1
| |
| mem_mega = 16
| |
| mem_mega_prom = mega_prom.img
| |
| mem_mega_boot = true
| |
| mem_os_segments = 2
| |
| }
| |
| | |
| == 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 zdefiniowania dla niego bloku konfiguracji w sposób następujący:
| |
| | |
| 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).
| |
| | |
| === Urządzenia ===
| |
| | |
| Konfiguracja emulowanych urządzeń definiowana jest następująco:
| |
| | |
| 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>
| |