MULTIX od środka: Różnice pomiędzy wersjami
(→Sprzęt) |
|||
Linia 3: | Linia 3: | ||
= Sprzęt = | = Sprzęt = | ||
MULTIX to komputer zbudowany w oparciu o procesor Intel 8085 | 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 | * CPU: Intel 8085 |
Wersja z 09:50, 12 mar 2014
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 |