MULTIX od środka

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

Dokumentacja techniczna MULTIX-a prawdopodobnie dziś już nie istnieje. Niniejsza strona jest próbą odtworzenia tego, jak MULTIX działał i jaka była jego architektura.

Sprzęt

MULTIX to komputer zbudowany w oparciu o procesor Intel 8085, z programem sterującym (firmware) zapisanym w pamięci ROM. Z punktu widzenia MULTIX-a, MERA-400 jest jednym z jego urządzeń zewnętrznych. Komunikacja z nią odbywa się przy użyciu przerwania (zgłoszenie polecenia wysyłane przez MERĘ-400) i DMA (wymiana danych między MERĄ-400 a MULTIX-em).

  • CPU: Intel 8085
  • Timer: Intel 8253
  • I/O równoległe: Intel 8255
  • I/O szeregowe: Intel 8251
  • I/O floppy:
    • kontroler Zilog Z0765A08PSC + Intel 8257
    • pamięć Hitachi HM6264LP 8KB static RAM (150ns)
  • I/O winchester:
    • kontroler Intel C82062
    • pamięć: Hitachi HM6264LP 8KB static RAM (150ns)
  • DMA: Intel 8257
    • kanał 1: MERA-400
    • kanał 2: taśma
    • kanał 3: autoload
  • ROM (firmware) 24KB?
  • RAM 16KB? + 8KB (floppy) + 8KB (winchester)

Mapa pamięci

Adres Nazwa Zawartość
0x0000-0x5fff ROM? (24KB)
0x6000 RAM RAM (16KB?)
0x6000+154 STACK koniec stosu, początek dostępnej RAM
0xa000-0xbfff RAMW8 RAM floppy dysku (8KB)
0xc000-0xdfff RAMW6 RAM winchestera (8KB)
0xff00-0xffff AD we/wy widziane jako pamięć

I/O

Adres R/W Nazwa Znaczenie
0-1 R DANEI dane odczytane z MERA-400 (MSB, LSB)
0-1 W DANEO dane do przesłania rozkazem "pisz do PAO" (MSB, LSB)
2-3 R PSARG argument polecenia sterującego (MSB, LSB)
2-3 W ADRES adres w PAO MERA-400 (MSB, LSB)
4 R POLST specyfikacja polecenia sterującego
4 W NBPN nr bloku PAO, nr procesora
5 R POLST+1 ID linii
5 W KWINT pokwitowanie przerwań
6 W SPECI specyfikacja przerwania do MERA-400
7 W SPECI+1 specyfikacja przerwania: numer linii
8 W KOTRA Rozkaz "koniec transmisji"
10 W PISZB Rozkaz "pisz blok przez DMA do MERA-400"
11 W CZYTB Rozkaz "czytaj blok przez DMA z MERA-400"
12 W PISZP Rozkaz "pisz do MERA-400"
13 W CZYTP Rozkaz "czytaj z MERA-400"
14 W INTR0 Rozkaz "zgłoś przerwanie do MERA-400 (procesor 0)
15 W INTR1 Rozkaz "zgłoś przerwanie do MERA-400 (procesor 1)
0x38 W KOPRQ pokwitowanie OPRQ
0x4e W WUUPG ustawienie maski przerwań 'INTR'
0x50 RW CLOCK zegar
0x51 RW CLDZI dzielnik zegara (we=1536kHz)
0x52 RW CLUSA dzielnik dla USART (we=1536kHz, wy=153,6kHz)
0x64-0x65 RW DMAD1 DMA kanał 1: rejestr adresu
0x66-0x67 RW DMCO1 DMA kanał 1: licznik, typ pracy
0x68-0x69 RW DMAD2 DMA kanał 2: rejestr adresu
0x6a-0x6b RW DMCO2 DMA kanał 2: licznik, typ pracy
0x6c-0x6d RW DMAD3 DMA kanał 3: rejestr adresu
0x6e-0x6f RW DMCO3 DMA kanał 3: licznik, typ pracy
0x70 RW DMAST DMA: sterowanie
0x80 RW INFTR informacja do/z linii szeregowej
0x81 RW INFST status i sterowanie linii szeregowej
0x80 RW PARIO PORT A = parzysty nr. linii
0x81 RW PARIO+1 PORT B = nieparzysty nr. linii
0x82 RW PARIO+2 port C = sygnały handshake i gotowości
0x83 R PARIO+3 sterowanie
... ... ... kolejne linie szeregowe/równoległe

Przerwania wewnętrzne

Nr Oznaczenie Opis Pokwitowanie
1 IKWIT MERA-400 przyjęła przerwanie zapis 1 DO "KWINT"
2 IZEGA zegar zapis "MODE" do "CLCON"
3 IOPRQ zgłoszenie OPRQ zapis "KOPRQ"
4.5 ITRAP dla testowania odczyt "PTRAP"
5.5 IPOST polecenie sterujące odczyt "POLST+1"
6 ITAP taśma magnetyczna odczyt specyfikacji
6.5 IKASE kaskada serial odczyt/zapis informacji
7 IKAPA kaskada parallel odczyt/zapis informacji
7.5 IDMA DMA odczyt DMAST

Przerwania do MERA-400

Przerwania wysyłane do MERY-400 opisane są tutaj. Rzeczy, o których wspomniana dokumentacja nie mówi:

Kolejka przerwań wysyłanych z MULTIX-a do MERY-400 ma długość 32 pozycje.

ID linii dla przerwania "niesprawny kanał" zawiera informację o przyczynie niesprawności:

  • 1 - błąd sumy kontrolnej ROM
  • 3 - za mała pamięć RAM
  • 5 - przesunięcie SP
  • 11 - RST 4
  • 13 - RST 5 gdy WIN=0
  • 15 - RST 6 gdy TAP=0
  • 17 - niekompletny program: brak 5 (koniec RAM), SETKO, TESTU
  • 19 - błąd transmisji przy POST-MORT po ITRAP
  • 2*N dla N=0-32 - niedozwolona specyfikacja przerwania linii fizycznej nr N, gdzie:
    • (STBOT) - adres ostatniej pozycji stosu
    • ostatnia pozycja - 2*N, specyfikacja

Przerwania, o których nie wspomina dokumentacja:

Oznaczenie Nr Opis
IEPS0 35 nieznane polecenie sterujące, KOD=0
IEPS6 36 nieznane polecenie sterujące, KOD=6
IEPS7 37 nieznane polecenie sterujące, KOD=7
IEPS8 38 nieznane polecenie sterujące, KOD=8
IEPSC 39 nieznane polecenie sterujące, KOD=C
IEPSD 40 nieznane polecenie sterujące, KOD=D
IEPSE 41 nieznane polecenie sterujące, KOD=E
IEPSF 42 nieznane polecenie sterujące, KOD=F