Electrologica X1

Electrologica X1
Detail of a 1Kb ferrite core RAM-module of an 1960s Electrologica X1 computer.jpg
Pamięć X1
Znany również jako EL X1
Deweloper Centrum Matematyczne w Amsterdamie
Producent Electrologica
Typ Komputer tranzystorowy
Data wydania 1958 ; 65 lat temu ( 1958 )
Przerwane 1965 ; 58 lat temu ( 1965 )
Jednostki sprzedane około 30
Następca Elektrologica X8

Electrologica X1 był komputerem cyfrowym zaprojektowanym i wyprodukowanym w Holandii w latach 1958-1965. Około trzydziestu zostało wyprodukowanych i sprzedanych w Holandii i za granicą.

X1 został zaprojektowany przez Mathematical Center w Amsterdamie , organizację akademicką zajmującą się projektowaniem komputerów od 1947 roku, i wyprodukowany przez Electrologica NV, firmę utworzoną specjalnie w celu produkcji tej maszyny.

X1 był półprzewodnikowym komputerem binarnym („całkowicie tranzystorowym”) z pamięcią rdzenia magnetycznego . Długość słowa wynosiła 27 bitów, a urządzenia peryferyjne obejmowały taśmę dziurkowaną i magnetyczną. Był to jeden z pierwszych komputerów europejskich, który miał przerwania .

X1 był tematem doktoratu Edsgera Dijkstry. rozprawa doktorska i cel pierwszego kompletnego działającego kompilatora ALGOL 60 , ukończonego przez Dijkstrę i Jaapa Zonnevelda. W 1965 roku X1 został zastąpiony przez X8 . Kilka lat później firma Electrologica została przejęta przez firmę Philips .

Zestaw instrukcji

X1 umożliwiał warunkowe wykonanie każdej instrukcji, a nie tylko rozgałęzień, jak ma to miejsce w większości komputerów. Podobna możliwość istniała w Zuse Z22 i ZEBRA , a znacznie później w architekturze ARM . Podejście zastosowane w X1 jest bardziej elastyczne niż te inne: uzależnia wykonanie od bieżącego stanu flagi warunku, która jest ustawiona przez poprzednią instrukcję, jeśli zawiera modyfikator do tego celu, ale nietknięta w inny sposób. W rezultacie wykonanie warunkowe może opierać się na testach wykonanych pewną liczbę wierszy wcześniej, zamiast być warunkowe tylko na podstawie wyniku ostatniej operacji arytmetycznej. Pozwoliło to na zwarte wyrażanie programów. Poniższy przykład demonstruje ładowanie wartości pamięci pod adresem n do akumulatora A , wywołanie podprogramu (który przypuszczalnie używa tej wartości w A ) i ostatecznie ustawienie A jako wartości bezwzględnej odczytanej liczby:

 2A n P // skopiuj [  n  ] do A, ustaw flagę warunku na „tak”, jeśli jest dodatnia 6T fn 0 // wywołaj funkcję w  fn  , która powróci z zachowaną flagą warunku N 5P AA // jeśli flaga warunku to „ nie”, skopiuj -A do A 

Operatory arytmetyczne X1 wykorzystywały arytmetykę dopełnień binarnych do jedynek .

Monter

X1 zawierał prosty asembler w swojej pamięci tylko do odczytu . Ma raczej podstawowe cechy: można definiować adresy symboliczne, ale symbole mają tylko dwie litery. Nazwy instrukcji są kombinacją cyfry oznaczającej operację i litery oznaczającej rejestr, na którym ma być wykonana operacja, lub jednej lub dwóch liter wskazujących klasę operacji. Na przykład „0A” oznacza „dodaj zawartość pamięci do akumulatora A”, a „5P” oznacza „ustaw akumulator na minus innego akumulatora”. Normalnym zastosowaniem adresów symbolicznych jest nazywanie „akapitów”, tj. powiązanych bloków kodu lub danych. Adresy symboliczne byłyby modyfikowane przez „numer linii” (przesunięcie numeryczne) i „numer strony” (liczba z zakresu od 0 do 31). Na przykład „3 FE 6” to wiersz numer 3, numer strony 6, reprezentujący przesunięcie o 195 (6 * 32 + 3) od początku akapitu WF. Ta notacja adresu jest osobliwością asemblera; adresowanie sprzętowe po prostu wykorzystuje adresy 15-bitowe.