|
|
(Nie pokazano 11 pośrednich wersji utworzonych 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. Domyślne EM400 próbuje załadować następuące pliki konfiguracyjne: | | 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'''. |
| * '''em400.cfg''' (w katalogu bieżącym)
| |
| * '''~/.em400/em400.cfg''' (konfiguracja użytkownika)
| |
| * '''/etc/em400.cfg''' (konfiguracja systemowa)
| |
| Jeśli jeden z plików uda się poprawnie załadować, dalesze nie są sprawdzane. Powyższa lista plików jest ignorowana, jeśli użytkownik użyje przełącznika '''-c''' w [[EM400 - linia poleceń|linii poleceń]]
| |
|
| |
|
| = 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. Elementy objęte konfiguracją to:
| |
| | |
| * '''cpu''' - procesor
| |
| * '''memory''' - pamięć
| |
| | |
| == Procesor ==
| |
| | |
| Dostępne sa następujące opcje konfigurujące działanie procesora:
| |
| | |
| * '''speed''' - prędkość emulacji procesora. Dostępne warianty:
| |
| ** '''max''' - emulacja z maksymalną możliwą prędkością
| |
| ** '''real''' - emulator stara się zachować oryginalne czasy wykonania instrukcji, czasy dostępu do pamięci i urządzeń zewnętrznych
| |
| * '''timer_step''' - okres [[Przerwanie_zegarowe|zegara systemowego]] (w milisekundach)
| |
| * '''mod_17bit''' - włącz/wyłącz modyfikację sprzętową CPU pozwalającą na 17-bitowe adresowanie bajtów (domyślnie włączone)
| |
| * '''mod_sint''' - włącz/wyłącz modyfikację sprzętową dodającą przerwanie programowe o wysokim priorytecie (domyślnie włączone)
| |
| | |
| Przykładowy blok konfiguracji CPU:
| |
| | |
| cpu {
| |
| speed = max
| |
| timer_step = 10
| |
| mod_17bit = true
| |
| mod_sint = false
| |
| }
| |
| | |
| == Pamięć ==
| |
| | |
| Każdy z szesnastu fizycznych modułów [[Pamięć operacyjna|pamięci operacyjnej]] może zostać skonfigurowany niezależnie. Dołączone zostaną tylko moduły o numerach podanych w konfiguracji, pozostałe będą z punktu widzenia systemu nieobecne. Konfiguracja pojedynczego modułu pamięci opisana jest w następujący sposób:
| |
| | |
| module <nr_modułu> = <typ>:<il_segmentów>
| |
| | |
| Gdzie:
| |
| * '''nr_modułu''' - kolejny numer modułu pamięci z zakresu 0-15 (moduł 0 to moduł pamięci systemu operacyjnego, musi mieć rozmiar przynajmniej 2 segmentów)
| |
| * '''typ''' - typ modułu pamięci. Dostępne typy to:
| |
| ** '''elwro''' - pamięć ferrytowa
| |
| ** '''[[MEGA|mega]]''' - pamięć półprzewodnikowa
| |
| * '''il_segmentów''' - ilość 4k-słowowych segmentów w module (liczba z zakresu 1-16)
| |
| | |
| Przykładowy blok konfiguracji pamięci:
| |
| | |
| memory {
| |
| module 0 = elwro:8
| |
| module 1 = mega:16
| |
| module 2 = mega:5
| |
| }
| |
| | |
| == 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>
| |