EM400 - konfiguracja

Z MERA 400 wiki
Przejdź do nawigacji Przejdź do wyszukiwania

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:

  • 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 linii poleceń

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:

  • computer - konfiguracja procesora i emulacji
  • 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 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ę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 i na poziomach logowania. Poziom logowania jest liczbą od 0-9, a lista dostępnych komponentów jest następująca:

  • 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, to którego zapisywany będzie log
  • levels - poziomy logowania opisywane w składni: komponent=poziom[,komponent=poziom[,...]]. Ustawione poziomy mówią jakie zdarzenia (do jakiego poziomu w danym komponencie) będą logowane.
  • pname_offset - opcja ma znaczenie, jeśli w emulatorze uruchamiany jest system CROOK-5. Jej użycie powoduje, że dla każdego zdarzenia generowanego w procesorze, będzie logowana nazwa procesu, w którego kontekście znajduje się system operacyjny. W zależności od wersji jądra systemu offset nazwy procesu jest inny: dla wersji "N" wynosi 52, a dla wersji "P" - 54. Logowanie nazwy procesu nie jest w 100% precyzyjne, ponieważ jest ona aktualizowana tylko przy wywołaniach instrukcji LIP i SP.

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: term_console
  • Terminal TCP
    • typ urządzenia: term_tcp
    • argumenty: port TCP
    • przykład użycia: term_tcp:20034
  • 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: term_serial:/dev/ttyS0, 9600, 8, N, 1
  • Dysk MERA 9425
    • typ urządzenia: mera9425
    • argumenty: obraz talerza stałego, obraz talerza wymiennego
    • przykład użycia: mera9425:disk1.img, disk2.img
  • Dysk Winchester
    • typ urządzenia: winchester
    • argumenty: obraz dysku
    • przykład użycia: winchester:winchester.img