PDP-8 - PDP-8

PDP-8
Cyfrowy 556-spłaszczony4.svg
PDP-8 (1).jpg
PDP-8 na wystawie w Bletchley Park w Bletchley w Anglii. Ten przykład pochodzi z pierwszej generacji PDP-8, zbudowanych z dyskretnych tranzystorów, a później znanych jako Straight 8 .
Deweloper Digital Equipment Corporation
Produkt rodzinny Zaprogramowany procesor danych
Rodzaj Minikomputer
Data wydania 22 marca 1965 ; 56 lat temu ( 1965-03-22 )
Cena wprowadzająca 18 500 USD , co odpowiada około 151 900 USD w 2020 roku
Sprzedane jednostki 50 000+
Platforma DEC 12-bitowy
Poprzednik PDP-5
Następca PDP-12

PDP-8 to 12-bitowy minikomputer , który został wyprodukowany przez Digital Equipment Corporation (DEC) . Był to pierwszy komercyjny minikomputer, który odniósł ponad 50 000 sprzedanych egzemplarzy w całym okresie życia modelu. Jego podstawowa konstrukcja jest zgodna z pionierskim LINC, ale ma mniejszy zestaw instrukcji , który jest rozszerzoną wersją zestawu instrukcji PDP-5 . Podobne maszyny firmy DEC to PDP-12, który jest unowocześnioną wersją koncepcji PDP-8 i LINC oraz system sterownika przemysłowego PDP-14 .

Przegląd

Otwarte PDP-8/E z modułami logicznymi za przednim panelem i jednym podwójnym napędem DECtape TU56 na górze

Najwcześniejszy model PDP-8, nieformalnie znany jako „Straight-8”, został wprowadzony 22 marca 1965 r. w cenie 18 500 USD (równowartość około 150 000 USD w 2020 r.). Zastosowano w nim logikę diodowo-tranzystorową umieszczoną na kartach z chipem typu flip chip w maszynie wielkości małej domowej lodówki . Był to pierwszy komputer, który został sprzedany za mniej niż 20 000 USD, co czyniło go wówczas najlepiej sprzedającym się komputerem w historii. Straight-8 został wyparty w 1966 roku przez PDP-8/S, który był dostępny w modelach stacjonarnych i montowanych w szafie. Zastosowanie jednobitowej szeregowej jednostki arytmetyczno-logicznej (ALU) pozwoliło, aby PDP-8/S był mniejszy i tańszy, choć wolniejszy niż oryginalny PDP-8. Podstawowy model 8/S został sprzedany za mniej niż 10 000 USD, jako pierwsza maszyna, która osiągnęła ten kamień milowy.

Późniejsze systemy (PDP-8/I i /L, PDP-8/E, /F i /M oraz PDP-8/A) powróciły do ​​szybszej, w pełni równoległej implementacji, ale wykorzystują znacznie mniej kosztowne tranzystory – logika tranzystorowa (TTL) logika MSI . Większość zachowanych PDP-8 pochodzi z tej epoki. PDP-8/E jest powszechny i ​​szanowany, ponieważ dostępnych było dla niego wiele typów urządzeń I/O . Ostatnie komercyjne modele PDP-8 wprowadzone w 1979 roku noszą nazwę „CMOS-8”, oparte na mikroprocesorach CMOS . Nie były konkurencyjne cenowo, a oferta nie powiodła się. Intersil sprzedawał układy scalone komercyjnie do 1982 roku jako rodzina Intersil 6100 . Dzięki technologii CMOS miały niskie wymagania dotyczące mocy i były używane w niektórych wbudowanych systemach wojskowych.

Głównym inżynierem , który zaprojektował początkową wersję PDP-8 był Edson de Castro , który później założył Data General .

Znaczenie architektoniczne

PDP-8 łączy w sobie niski koszt, prostotę, możliwość rozbudowy i staranną inżynierię dla wartości. Największym historycznym znaczeniem było to, że niski koszt i duża pojemność PDP-8 sprawiły, że komputer stał się dostępny dla wielu nowych klientów i mógł być wykorzystywany do wielu nowych zastosowań. Jego stałe znaczenie jest historycznym przykładem projektowania komputerów z wykorzystaniem inżynierii wartości.

Niska złożoność przyniosła inne koszty. Uczyniło to programowanie kłopotliwym, co widać na przykładach w tym artykule oraz w dyskusji na temat „stron” i „pól”. Znaczna część kodu wykonywała wymaganą mechanikę, w przeciwieństwie do ustalania algorytmu. Na przykład odjęcie liczby obejmuje obliczenie jej uzupełnienia do dwóch, a następnie dodanie go; pisanie skoku warunkowego polega na napisaniu pominięcia warunkowego wokół skoku, przy czym pominięcie koduje warunek ujemny do pożądanego. Niektóre ambitne projekty programistyczne nie zmieściły się w pamięci lub rozwinęły defekty projektowe, których nie można było rozwiązać. Na przykład, jak zauważono poniżej , nieumyślna rekurencja podprogramu powoduje defekty, które są trudne do odnalezienia w danym podprogramie.

W miarę jak postępy w projektowaniu zmniejszały koszty logiki i pamięci, czas programisty stał się stosunkowo ważniejszy. Kolejne projekty komputerów kładły nacisk na łatwość programowania, zazwyczaj przy użyciu większych i bardziej intuicyjnych zestawów instrukcji.

Ostatecznie większość kodu maszynowego została wygenerowana przez kompilatory i generatory raportów. Komputer ze zredukowanym zestawem instrukcji powrócił do pełnego okręgu, w którym PDP-8 kładł nacisk na prosty zestaw instrukcji i osiąganie wielu działań w jednym cyklu instrukcji, w celu zmaksymalizowania szybkości wykonywania, chociaż nowsze komputery mają znacznie dłuższe słowa instrukcji.

Opis

Rejestry PDP-8
1 1 1 0 9 8 7 6 5 4 3 2 1 0 (pozycja bitowa)
Główne rejestry
AC akumulator AC
Licznik programu
PC P ROGRAM C ounter
Flagi stanu
  L Rejestr atramentów L
Rejestry wewnętrzne (niedostępne kodem)
MBR Rejestr bufora pamięci
ZNISZCZYĆ Rejestr pamięciowo-adresowy

PDP-8 maszyny wolne od kilku poprzedników 12-bitowych, przede LINC zaprojektowany przez WA Clark i CE Molnar , która była inspirowana przez Seymour Cray jest CDC 160 minikomputer.

PDP-8 używa 12 bitów do rozmiaru słowa i arytmetyki (na liczbach całkowitych bez znaku od 0 do 4095 lub na liczbach całkowitych ze znakiem od -2048 do +2047). Jednak oprogramowanie może wykonywać arytmetykę z wielokrotną precyzją . Interpreter był dostępny dla operacji zmiennoprzecinkowych , na przykład, który używał 36-bitowej reprezentacji zmiennoprzecinkowej z dwuwyrazowym (24-bitowym) znaczeniem (mantysa) i jednowyrazowym wykładnikiem. Z zastrzeżeniem ograniczeń szybkości i pamięci, PDP-8 może wykonywać obliczenia podobne do droższych współczesnych komputerów elektronicznych, takich jak IBM 1130 i różnych modeli IBM System/360 , będąc jednocześnie łatwiejszym w połączeniu z urządzeniami zewnętrznymi.

Przestrzeń adresowa pamięci również ma 12 bitów, więc podstawowa konfiguracja PDP-8 ma pamięć główną na 4096 (2 12 ) słów dwunastobitowych. Opcjonalna jednostka rozszerzająca pamięć może przełączać banki pamięci za pomocą instrukcji IOT. Pamięć jest pamięcią z rdzeniem magnetycznym o czasie cyklu 1,5 mikrosekundy (0,667 MHz ), dzięki czemu typowa dwucyklowa instrukcja pamięci (Fetch, Execute) działa z prędkością 0,333 MIPS . Kieszonkowa karta referencyjna z 1974 roku dla PDP-8/E zapewnia podstawowy czas instrukcji wynoszący 1,2 mikrosekundy lub 2,6 mikrosekundy dla instrukcji odwołujących się do pamięci.

PDP-8 został zaprojektowany po części do obsługi współczesnej telekomunikacji i tekstu. Sześciobitowe kody znakowe były wówczas w powszechnym użyciu, a dwunastobitowe słowa PDP-8 mogą efektywnie przechowywać dwa takie znaki. Ponadto, sześciobitowy kod dalekopisowy zwany teleskładem lub kodem TTS był szeroko stosowany przez serwisy informacyjne, a wczesna aplikacja dla PDP-8 polegała na składaniu tekstu przy użyciu tego kodu.

Instrukcje PDP-8 mają 3-bitowy kod, więc jest tylko osiem instrukcji. Asembler dostarcza programiście więcej mnemoników instrukcji, tłumacząc instrukcje I/O i trybu pracy na kombinacje kodów operacyjnych i pól instrukcji. Ma również tylko trzy rejestry widoczne dla programisty : 12-bitowy akumulator (AC), licznik programu (PC) i flagę przeniesienia zwaną „rejestrem łącza” (L).

Dla wejścia i wyjścia, PDP-8 ma jedno przerwanie współdzielone przez wszystkie urządzenia, magistralę I/O dostępną przez instrukcje I/O oraz kanał bezpośredniego dostępu do pamięci (DMA). Zaprogramowany szyna I / O typowo przebiega od niskiej do średniej prędkości peryferyjnych, takich jak drukarki , dalekopisów , taśmę papieru stempli oraz czytników, gdy DMA jest wykorzystywane do kineskopu ekranów z pióra świetlnego , analogowo-cyfrowe , cyfrowo konwertery na analogowe , napędy taśmowe i dyski .

Aby zaoszczędzić pieniądze, w projekcie wykorzystano niedrogą pamięć główną do wielu celów, które są obsługiwane przez droższe rejestry typu flip-flop w innych komputerach, takie jak liczniki pomocnicze i połączenia podprogramów.

Modele podstawowe wykorzystują oprogramowanie do mnożenia i dzielenia. Aby przyspieszyć matematykę, rozszerzony element arytmetyczny (EAE) zapewnia instrukcje mnożenia i dzielenia z dodatkowym rejestrem, rejestrem mnożnika/ilorazu (MQ). EAE był opcją w oryginalnym PDP-8, 8/I i 8/E, ale jest integralną częścią mikroprocesora Intersil 6100 .

PDP-8 jest zoptymalizowany pod kątem prostoty konstrukcji . W porównaniu z bardziej złożonymi maszynami niepotrzebne funkcje zostały usunięte, a logika jest udostępniana, gdy tylko było to możliwe. Instrukcje używają autoinkrementacji, automatycznego czyszczenia i dostępu pośredniego, aby zwiększyć szybkość oprogramowania, zmniejszyć zużycie pamięci i zastąpić niedrogą pamięć kosztownymi rejestrami.

Elektronika podstawowego PDP-8 CPU ma tylko czterech rejestrów 12-bitowych: akumulator, licznik programu rejestru pamięci bufora i rejestru adres w pamięci . Aby zaoszczędzić pieniądze, służyły one wielu celom w różnych punktach cyklu operacyjnego. Na przykład rejestr bufora pamięci zapewnia argumenty arytmetyczne, jest częścią rejestru instrukcji i przechowuje dane w celu przepisania pamięci podstawowej . (Przywraca to podstawowe dane zniszczone przez odczyt).

Ze względu na swoją prostotę, wczesne modele PDP-8 były tańsze niż większość innych dostępnych na rynku komputerów. Użyli jednak kosztownych metod produkcji, często stosowanych w prototypach. Wykorzystali tysiące bardzo małych, ustandaryzowanych modułów logicznych ze złotymi złączami, zintegrowanymi z kosztowną, skomplikowaną płytą montażową owiniętą przewodami w dużej obudowie.

W późniejszym modelu 8/S, wprowadzonym w sierpniu 1966, dwa różne napięcia logiczne zwiększyły rozrzut niedrogiej logiki diodowo-tranzystorowej . 8/S zmniejszył również liczbę bramek logicznych, wykorzystując szeregową, jednobitową ścieżkę danych do wykonywania operacji arytmetycznych. Procesor PDP-8/S ma tylko około 519 bramek logicznych . Dla porównania małe mikrokontrolery (stan na 2008 r.) mają zwykle 15 000 lub więcej. Redukcja elektroniki pozwoliła na znacznie mniejszą obudowę, mniej więcej wielkości pudełka na chleb. Model 8/S został zaprojektowany przez Saula Dinmana.

Jeszcze późniejszy PDP-8/E jest większym komputerem o większych możliwościach, ale dodatkowo przeprojektowanym w celu uzyskania lepszej wartości. Wykorzystuje szybszą logikę tranzystor-tranzystor w układach scalonych. Przeprojektowano pamięć rdzeniową. Umożliwia rozbudowę przy mniejszych kosztach, ponieważ wykorzystuje OMNIBUS zamiast owiniętej drutem płyty montażowej we wcześniejszych modelach. (Osobisty opis rozwoju PDP-8/E można przeczytać na Wiki historii inżynierii i technologii).

Wersje PDP-8

Panel przedni PDP-8/S
Panel przedni PDP-8/L
Panel przedni PDP-8/I
Panel przedni PDP-8/E
Panel przedni PDP-8/F
Panel przedni PDP-8/A 400

Całkowita wielkość sprzedaży rodziny PDP-8 została oszacowana na ponad 300 000 maszyn. Wyprodukowano następujące modele:

Podsumowanie modeli PDP-8
Model Opis Rok Cena Wyprodukowana ilość Waga
PDP-8 Części półdyskretne. Użyłem niektórych hybrydowych układów scalonych . DTL . 1965 18 000 zł 1450 250 funtów (113 kg)
LINC-8 Można uruchomić kod LINC lub PDP-8 1966 38 500 $ 142
PDP-8/S Tańsza wersja szeregowa PDP-8 1966 10 000 USD 1024 84 funty (38 kg)
PDP-8/I Pierwszy PDP-8 wykonany ze standardowych układów TTL 1968 12.800$ 3698 250 funtów (110 kg)
PDP-8/L Tańszy odpowiednik PDP-8/I 1968 8500 USD 3902 80 funtów (36 kg)
PDP-12 PDP-8/I z obsługą instrukcji LINC (zastąpił LINC-8) 1969 27 900 USD 755
PDP-8/E Mniej większych płyt, aby poprawić cenę i wydajność 1970 6500$ 90 funtów (41 kg) (typowo)
PDP-8/F Tańszy odpowiednik PDP-8/E 1972 57 funtów (26 kg) (typowo)
PDP-8/M OEM PDP-8/F ze zmienionym panelem przednim 1972 5000 USD 57 funtów (26 kg) (typowo)
PDP-8/A Logika LSI pozwoliła procesorowi zmieścić się na jednej płycie 1974 $1,835
Intersil 6100 Jednoukładowy mikroprocesor kompatybilny z PDP-8 (używany w VT78 ) 1975
Harris 6120 Jednoukładowy mikroprocesor CMOS zgodny z PDP-8 (używany w procesorach tekstu DECmate ) 1976

Wdrożenia w dniach ostatnich

PDP-8 jest łatwo emulowany , ponieważ jego zestaw instrukcji jest znacznie prostszy niż nowoczesne architektury. Entuzjaści stworzyli całe PDP-8 przy użyciu pojedynczych urządzeń FPGA .

W Internecie dostępnych jest kilka symulacji oprogramowania PDP-8, a także reimplementacje sprzętu typu open source . Najlepsze z nich poprawnie uruchamiają systemy operacyjne i oprogramowanie diagnostyczne firmy DEC. Symulacje oprogramowania często symulują późne modele PDP-8 ze wszystkimi możliwymi urządzeniami peryferyjnymi. Nawet te wykorzystują tylko niewielki ułamek pojemności współczesnego komputera osobistego.

Jedna z pierwszych komercyjnych wersji maszyny wirtualnej PDP-8/S działała na Kaypro 386 (komputer oparty na 80386) i została napisana w języku komputerowym C (przed sfinalizowaniem standardu ANSI-C) i asemblerem autorstwa Davida Beechera z Denver w stanie Kolorado. Zastąpił on niesprawny komputer PDP-8/S, który obsługiwał maszynę do obsługi paliwa w reaktorze nr 85, elektrownię zasilaną paliwem jądrowym Platteville w stanie Kolorado, Ft. Św. Został poddany przeglądowi przez Rockwell International i działał bez zarzutu przez 2,5 roku podczas pracy maszyny do obsługi paliwa, podczas gdy był używany do usuwania paliwa z rdzenia reaktora i likwidacji instalacji. Zawierał symulowaną ładowarkę taśmy papierowej i panel przedni.

Wejście wyjście

Systemy I/O przeszły ogromne zmiany w erze PDP-8. Wczesne modele PDP-8 wykorzystują interfejs na panelu przednim , czytnik taśmy papierowej i dalekopis z opcjonalnym dziurkaczem taśmy papierowej. Z biegiem czasu dodano systemy I/O, takie jak taśma magnetyczna , terminale RS-232 i pętli prądowej , czytniki kart perforowanych i dyski z głowicą stałą . Pod koniec ery PDP-8, dyskietki i napędy kasetowe z ruchomą głowicą były popularnymi urządzeniami I/O. Współcześni entuzjaści stworzyli standardowe adaptery dysków twardych IDE w stylu PC dla prawdziwych i symulowanych komputerów PDP-8.

Obsługiwanych jest kilka typów wejść/wyjść:

  • In- Magistrala przeznaczone szczeliny dla kontrolerów wejść / wyjść
  • Magistrala I/O „ujemna” (wykorzystująca sygnalizację napięcia ujemnego)
  • „Dodatnia” magistrala we/wy (ta sama architektura wykorzystująca sygnalizację TTL)
  • Omnibus (płyta bazowa niededykowanych slotów magistrali systemowej ) wprowadzony w PDP-8/E. (Szczegóły opisano w wymienionym poniżej artykule IEEE).

Obsługiwana jest uproszczona, niedroga forma DMA zwana "trzycyklową przerwą na dane"; wymaga to pomocy procesora. Metoda „przerwania danych” przenosi część wspólnej logiki potrzebnej do implementacji wejść/wyjść DMA z każdego urządzenia we/wy do jednej wspólnej kopii logiki w procesorze. „Przerwa w danych” powoduje, że procesor jest odpowiedzialny za utrzymywanie rejestrów adresów DMA i liczby słów. W trzech kolejnych cyklach pamięci procesor aktualizuje liczbę słów, aktualizuje adres transferu i przechowuje lub pobiera rzeczywiste słowo danych we/wy.

Jednocyklowe przerwanie danych skutecznie potraja szybkość transferu DMA, ponieważ tylko dane docelowe muszą być przesyłane do i z pamięci rdzenia. Jednak urządzenia we/wy potrzebują więcej logiki elektronicznej do zarządzania własną liczbą słów i rejestrami adresów transferowych. Do czasu wprowadzenia PDP-8/E, logika elektroniczna stała się tańsza, a „jednocyklowa przerwa danych” stała się bardziej popularna.

Możliwości programowania

Wczesne systemy PDP-8 nie miały systemu operacyjnego, a jedynie panel przedni z przełącznikami uruchamiania i zatrzymywania. Systemy rozwoju oprogramowania dla serii PDP-8 rozpoczęły się od najbardziej podstawowego wpisu na panelu przednim surowego binarnego kodu maszynowego ( wpis rozruchowy ).

W średniowieczu opracowano różne „systemy operacyjne” taśm papierowych. Wiele programów użytkowych stało się dostępnych na taśmie papierowej. Kod źródłowy języka asemblera PAL-8 był często przechowywany na taśmie papierowej, odczytywany w pamięci i zapisywany na taśmie papierowej. PAL zmontowany z papierowej taśmy w pamięci. Dostępne były papierowe wersje kilku języków programowania, w tym interpreter DEC FOCAL oraz kompilator i środowisko wykonawcze 4K FORTRAN .

Pod koniec ery PDP-8 systemy operacyjne, takie jak OS/8 i COS-310, umożliwiły stworzenie tradycyjnego edytora trybu wiersza i systemu rozwoju kompilatora wiersza poleceń przy użyciu języków takich jak asembler PAL-III, FORTRAN, BASIC i DIBOL .

Dostępny był dość nowoczesny i zaawansowany system operacyjny czasu rzeczywistego (RTOS) oraz wielozadaniowe wywłaszczające systemy wieloużytkownikowe: dostępny był system czasu rzeczywistego (RTS-8), podobnie jak wieloużytkownikowe systemy komercyjne (COS-300 i COS-310) oraz dedykowany system przetwarzania tekstu dla jednego użytkownika (WPS-8).

Dostępny był również system podziału czasu TSS-8 . TSS-8 umożliwia wielu użytkownikom logowanie się do systemu za pośrednictwem terminali o szybkości 110 bodów oraz edycję, kompilację i debugowanie programów. Języki obejmują specjalną wersję BASIC, podzbiór FORTRAN podobny do FORTRAN-1 (bez podprogramów lub funkcji napisanych przez użytkownika), podzbiór ALGOL , FOCAL i asembler zwany PAL-D.

Spora ilość podarowanego przez użytkowników oprogramowania dla PDP-8 była dostępna od DECUS , stowarzyszenia użytkowników Digital Equipment Corporation i często zawierała pełne wykazy źródeł i dokumentację.

Zestaw instrukcji

Trzy bity wyższego rzędu 12-bitowego słowa instrukcji (oznaczone bity od 0 do 2) to kod operacji. Dla sześciu operacji, które odnoszą się do pamięci, bity od 5 do 11 zapewniają adres 7-bitowy. Bit 4, jeśli jest ustawiony, mówi o uzupełnieniu adresu przy użyciu 5 bitów wyższego rzędu rejestru licznika programu (PC), co oznacza, że ​​adresowana lokalizacja zawierała te same 128 słów co instrukcja. Jeśli bit 4 jest czysty, używane są zera, więc adresowana lokalizacja znajduje się w obrębie pierwszych 128 słów pamięci. Bit 3 określa pośredni; jeśli jest ustawiony, adres uzyskany w sposób opisany do tej pory wskazuje na 12-bitową wartość w pamięci, która daje rzeczywisty adres efektywny dla instrukcji; dzięki temu operandy mogą znajdować się w dowolnym miejscu pamięci kosztem dodatkowego słowa. JMP instrukcja nie działa na słowie pamięci, chyba że pośrednie jest określona, ale ma te same pola bitowe.

0 2 3 4 5 11
Operacja i Z Zrównoważyć
Strony pamięci

Ta użycie słowa instrukcji dzieli pamięć 4096-słowo w słowo 128 stron ; bit 4 instrukcji wybiera albo bieżącą stronę albo stronę 0 (adresy 0000–0177 ósemkowo ). Pamięć na stronie 0 jest na wagę złota, ponieważ umieszczone tutaj zmienne mogą być adresowane bezpośrednio z dowolnej strony. (Ponadto adres 0000 jest miejscem, w którym musi rozpocząć się każda procedura obsługi przerwań, a adresy 0010–0017 mają specjalną właściwość autoinkrementacji poprzedzającej wszelkie pośrednie odwołanie przez nie.)

Standardowy asembler umieszcza stałe wartości dla arytmetyki na bieżącej stronie. Podobnie przeskoki między stronami i wywołania podprogramów używają adresu pośredniego na bieżącej stronie.

Ważne było, aby napisać procedury tak, aby zmieściły się na stronach o długości 128 słów, lub zorganizować procedury w celu zminimalizowania przejść między stronami, ponieważ odwołania i przeskoki poza bieżącą stronę wymagają dodatkowego słowa. W rezultacie wiele czasu spędzili sprytnie zachowując jedno lub kilka słów. Programiści celowo umieścili kod na końcu strony, aby uzyskać swobodne przejście do następnej strony w miarę zwiększania PC.

Podstawowe instrukcje

000 – AND – AND operand pamięci z AC.
001 – TAD – Uzupełnienie do dwóch ADd argument pamięci do <L,AC> ( 12-bitowa wartość ze znakiem (AC) z przeniesieniem w L).
010 – ISZ – Zwiększ operand pamięci i Pomiń następną instrukcję, jeśli wynikiem jest zero.
011 – DCA – Włóż AC do operandu pamięci i Wyczyść AC.
100 – JMS – Skok do podprogramu (przechowywanie adresu zwrotnego w pierwszym słowie podprogramu!).
101 – JMP – Skok.
110 – IOT – Transfer wejścia/wyjścia (patrz poniżej).
111 – OPR – mikrokodowane operacje (patrz niżej).

Instrukcje IOT (Input-Output Transfer)

Procesor PDP-8 zdefiniował kilka instrukcji IOT, ale po prostu zapewnił strukturę. Większość instrukcji IOT została zdefiniowana przez poszczególne urządzenia I/O.

0 2 3 8 9 11
6=IOT Urządzenie Funkcjonować
Urządzenie

Bity od 3 do 8 instrukcji IOT wybierają urządzenie we/wy. Niektóre z tych adresów urządzeń są ustandaryzowane zgodnie z konwencją:

  • 00 jest obsługiwany przez procesor i nie jest wysyłany do żadnego urządzenia I/O (patrz poniżej).
  • 01 to zwykle szybki czytnik taśmy papierowej.
  • 02 to szybki dziurkacz do taśmy papierowej.
  • 03 to klawiatura konsoli (i powiązany z nią czytnik taśmy papierowej o małej prędkości).
  • 04 to drukarka konsolowa (i wszelkie powiązane dziurkacze do taśmy papierowej o małej prędkości).

Instrukcje dla urządzenia 0 wpływają na procesor jako całość. Na przykład ION (6001) włącza przetwarzanie przerwań, a IOFF (6002) wyłącza je.

Funkcjonować

Bity od 9 do 11 instrukcji IOT wybierają funkcje wykonywane przez urządzenie. Proste urządzenia (takie jak czytnik i dziurkacz taśmy papierowej oraz klawiatura i drukarka konsoli) używają bitów w standardowy sposób:

  • Bit 11 powoduje, że procesor pomija następną instrukcję, jeśli urządzenie we/wy jest gotowe.
  • Bit 10 czyści AC.
  • Bit 9 przenosi słowo między AC a urządzeniem, inicjuje kolejny transfer we/wy i czyści flagę „gotowe” urządzenia.

Operacje te odbywają się w ściśle określonej kolejności, która daje użyteczne wyniki, jeśli ustawiony jest więcej niż jeden bit.

Bardziej skomplikowane urządzenia, takie jak napędy dysków, używają tych 3 bitów w sposób specyficzny dla urządzenia. Zazwyczaj urządzenie dekoduje 3 bity, dając 8 możliwych kodów funkcji.

OPR (OPeRate)

Wiele operacji jest osiąganych za pomocą OPR, w tym większość warunków warunkowych. OPR nie dotyczy lokalizacji w pamięci; wykonanie warunkowe uzyskuje się poprzez warunkowe pominięcie jednej instrukcji, którą zazwyczaj jest JMP.

Mówiono, że instrukcja OPR jest „mikrokodowana”. Nie oznaczało to, co to słowo oznacza dzisiaj (że program niższego poziomu pobierał i interpretował instrukcję OPR), ale oznaczało, że każdy bit słowa instrukcji określa określoną akcję, a programista mógł wykonać kilka akcji w jednym cyklu instrukcji ustawiając wiele bitów. W użyciu, programista może napisać kilka mnemoników instrukcji obok siebie, a asembler łączy je z OR, aby wymyślić właściwe słowo instrukcji. Wiele urządzeń I/O obsługuje „mikrokodowane” instrukcje IOT.

Działania mikrokodowane odbywają się w ściśle określonej kolejności, zaprojektowanej tak, aby zmaksymalizować użyteczność wielu kombinacji.

Instrukcje OPR są dostarczane w grupach. Bity 3, 8 i 11 identyfikują Grupę instrukcji OPR, więc nie jest możliwe łączenie mikrokodowanych działań z różnych grup.

Grupa 1

        00 01 02 03 04 05 06 07 08 09 10 11
        ___________________________________
       | 1| 1| 1| 0|  |  |  |  |  |  |  |  |
       |__|__|__|__|__|__|__|__|__|__|__|__|
                   |CLA   CMA   RAR   BSW
                       CLL   CML   RAL   IAC

    Execution order  1  1  2  2  4  4  4  3
7200 – CLA – Wyczyść akumulator
7100 – CLL – Wyczyść bit L
7040 – CMA – Akumulator Ones Complement
7020 – CML – Uzupełnienie L Bit
7001 – IAC – Przyrost <L,AC>
7010 – RAR – Obróć <L,AC> w prawo
7004 – RAL – Obróć <L,AC> w lewo
7012 – RTR – Obróć <L,AC> w prawo dwa razy
7006 – RTL – Obróć <L,AC> w lewo dwa razy
7002 – BSW – Byte Swap 6-bitowe „bajty” (PDP 8/e i wyższe)

W większości przypadków operacje są uporządkowane tak, aby można je było łączyć w najbardziej użyteczny sposób. Na przykład połączenie CLA (Clear Accumulator), CLL (CLear Link) i IAC (Increment ACcumulator) najpierw czyści AC i Link, a następnie zwiększa akumulator, pozostawiając go ustawionym na 1. Dodanie RAL do miksu (więc CLA CLL IAC RAL) powoduje wyczyszczenie akumulatora, inkrementację, a następnie obrót w lewo, pozostawiając go na poziomie 2. W ten sposób w akumulatorze umieszczono małe stałe całkowite za pomocą jednej instrukcji.

Kombinacja CMA IAC, którą asembler pozwala skrócić jako CIA, daje arytmetyczną odwrotność AC: negację dopełnienia do dwóch. Ponieważ nie ma instrukcji odejmowania, tylko dodawanie z uzupełnieniem do dwóch (TAD), obliczanie różnicy dwóch argumentów, wymaga najpierw zanegowania odejmowania.

Instrukcja OPR grupy 1, która nie ma żadnego z zaprogramowanych bitów, nie wykonuje żadnego działania. Programista może napisać NOP (No Operation) w celu złożenia takiej instrukcji.

Grupa 2 lub Grupa

         00 01 02 03 04 05 06 07 08 09 10 11
        ___________________________________
       | 1| 1| 1| 1|  |  |  |  | 0|  |  | 0|
       |__|__|__|__|__|__|__|__|__|__|__|__|
                   |CLA   SZA      OSR
                       SMA   SNL      HLT

                     2  1  1  1     3  3
7600 – CLA – Bezbarwny AC
7500 – SMA – Pomiń AC < 0 (lub grupa)
7440 – SZA – Pomiń AC = 0 (lub grupa)
7420 – SNL – Przejdź na L ≠ 0 (lub grupa)
7404 – OSR – logicznie „lub” przełączniki na panelu przednim z AC
7402 – HLT – Halt

Gdy bit 8 jest czysty, pominięcie jest wykonywane, jeśli którykolwiek z określonych warunków jest spełniony. Na przykład „SMA SZA”, kod operacji 7540, pomija się, jeśli AC ≤ 0.

Instrukcja OPR grupy 2, która nie ma żadnego zestawu bitów mikroprogramowanych, jest kolejną instrukcją No-Op.

Grupa 2 i grupa

         00 01 02 03 04 05 06 07 08 09 10 11
        ___________________________________
       | 1| 1| 1| 1|  |  |  |  | 1|  |  | 0|
       |__|__|__|__|__|__|__|__|__|__|__|__|
                   |CLA   SNA      OSR
                       SPA   SZL      HLT

                     2  1  1  1     3  2
7410 – SKP – Pomiń bezwarunkowo
7610 – CLA – Bezbarwny AC
7510 – SPA – Pomiń na AC ≥ 0 (i grupuj)
7450 – SNA – Pomiń na AC ≠ 0 (i grupuj)
7430 – SZL – Pomiń L = 0 (i grupuj)

Gdy bit 8 jest ustawiony, warunek pominięcia Grupy 2, Or jest odwrócony, zgodnie z prawami De Morgana : pominięcie nie jest wykonywane, jeśli którykolwiek z warunków grupy 2, Or jest prawdziwy, co oznacza, że wszystkie określone warunki pominięcia muszą być prawdziwe. Na przykład „SPA SNA”, kod operacji 7550, pomija się, jeśli AC > 0. Jeśli żaden z bitów 5–7 nie jest ustawiony, pominięcie jest bezwarunkowe.

Grupa 3

Niewykorzystane kombinacje bitów OPR są definiowane jako trzecia grupa mikroprogramowanych działań mających wpływ głównie na rejestr MQ (mnożnik/iloraz). Rejestr MQ i instrukcje rozszerzonego elementu arytmetycznego (EAE) są opcjonalne i istnieją tylko wtedy, gdy zakupiono opcję EAE.

        00 01 02 03 04 05 06 07 08 09 10 11
        ___________________________________
       | 1| 1| 1| 1|  |  |  |  |  |  |  | 1|
       |__|__|__|__|__|__|__|__|__|__|__|__|
                   |CLA   SCA   \_    _/
                   |   MQA   MQL  CODE

                     1* 2  2  2     3
7601 – CLA – Bezbarwny AC
7501 – MQA – Iloraz mnożnika z AC (logiczny lub MQ na AC)
7441 – SCA – Obciążenie licznika kroków do AC
7421 – MQL – Obciążenie ilorazu mnożnika (przeniesienie AC do MQ, wyczyszczenie AC)
7621 – CAM – CLA + MQL czyści zarówno AC, jak i MQ.

Zazwyczaj CLA i MQA były łączone w celu przeniesienia MQ do AC. Inną przydatną kombinacją jest MQA i MQL, do wymiany dwóch rejestrów.

Trzy bity określały instrukcję mnożenia/dzielenia do wykonania:

7401 – Brak operacji
7403 – SCL – Obciążenie licznika kroków (następuje natychmiastowe słowo, PDP-8/I i więcej)
7405 – MUY – Mnożenie
7407 – DVI – Dzielenie
7411 – NMI – Normalizuj
7413 – SHL – Przesunięcie w lewo (następuje natychmiastowe słowo)
7415 – ASR – przesunięcie arytmetyczne w prawo
7417 – LSR – Logiczne przesunięcie w prawo

Kontrola pamięci

Stos pamięci rdzenia PDP-8/I
Jeden z trzech połączonych ze sobą modułów, które tworzą płaszczyznę pamięci rdzenia PDP-8.
Jeden z trzech połączonych ze sobą modułów, które tworzą płaszczyznę pamięci rdzenia PDP-8. Jest to środek z trzech i zawiera szereg rzeczywistych rdzeni ferrytowych.
Jeden z trzech połączonych ze sobą modułów, które tworzą płaszczyznę pamięci rdzenia PDP-8.

Słowo 12-bitowe może mieć 4096 różnych wartości i jest to maksymalna liczba słów, do których oryginalny PDP-8 może adresować pośrednio poprzez wskaźnik słowa. 4096 12-bitowych słów reprezentuje 6144 bajty we współczesnej terminologii, czyli 6 kB. Ponieważ programy stawały się coraz bardziej złożone, a cena pamięci spadała, pożądane stało się rozszerzenie tego limitu.

Aby zachować kompatybilność z wcześniej istniejącymi programami, nowy sprzęt poza oryginalnym projektem dodawał bity wysokiego rzędu do efektywnych adresów generowanych przez program. Kontroler rozszerzenia pamięci rozszerza adresowalną pamięć 8 razy, do 32 768 słów. Uznano, że rozszerzenie to jest wystarczające, ponieważ przy kosztach pamięci rdzenia około 50 centów za słowo, pełne 32 KB pamięci równałoby się kosztowi procesora.

Każde 4K pamięci nazywa się polem. Kontroler rozszerzenia pamięci zawiera dwa trzybitowe rejestry: DF (pole danych) i IF (pole instrukcji). Rejestry te określają pole dla każdego odniesienia do pamięci procesora, umożliwiając łącznie 15 bitów adresu. Rejestr IF określa pole do pobierania instrukcji i bezpośrednich odwołań do pamięci; rejestr DF określa pole dla pośredniego dostępu do danych. Program działający w jednym polu może odwoływać się do danych w tym samym polu przez adresowanie bezpośrednie i odwoływać się do danych w innym polu przez adresowanie pośrednie.

Zestaw instrukcji we/wy z zakresu od 6200 do 6277 jest obsługiwany przez kontroler rozszerzenia pamięci i daje dostęp do rejestrów DF i IF. Instrukcja 62X1 (CDF, ​​Change Data Field) ustawia pole danych na X. Podobnie 62X2 (CIF) ustawia pole instrukcji, a 62X3 ustawia oba. Wcześniej istniejące programy nigdy nie wykonałyby CIF ani CDF; rejestry DF i IF wskazywałyby na to samo pole, jedno pole, do którego te programy były ograniczone. Efekt instrukcji CIF został opóźniony tak, aby pokrywał się z następną instrukcją JMP lub JMS, tak aby wykonanie CIF nie powodowało przeskoku.

W przypadku programów wielopolowych bardziej skomplikowane było radzenie sobie z granicami pól oraz rejestrami DF i IF, niż gdyby mogły po prostu generować adresy 15-bitowe, ale projekt zapewniał kompatybilność wsteczną i jest zgodny z architekturą 12-bitową używane w całym PDP-8. Porównaj późniejszy Intel 8086 , którego 16-bitowe adresy pamięci są rozszerzane do 20 bitów przez połączenie ich z zawartością określonego lub domniemanego rejestru segmentowego .

Rozszerzony schemat pamięci umożliwia istniejącym programom obsługę zwiększonej pamięci przy minimalnych zmianach. Na przykład 4K FOCAL normalnie zawierało około 3K kodu, a na program użytkownika i dane pozostało tylko 1K. Dzięki kilku łatkom FOCAL mógłby wykorzystać drugie pole 4K dla programu użytkownika i danych. Co więcej, dodatkowe pola 4K mogą zostać przydzielone oddzielnym użytkownikom, zmieniając 4K FOCAL w system współdzielenia czasu dla wielu użytkowników.

Wirtualizacja

W modelach PDP-8/E i nowszych kontroler rozszerzenia pamięci został ulepszony, aby umożliwić wirtualizację maszyn. Program napisany w celu wykorzystania wszystkich zasobów PDP-8 może współistnieć z innymi tego typu programami na tym samym PDP-8 pod kontrolą menedżera maszyny wirtualnej. Menedżer może sprawić, że wszystkie instrukcje we/wy (w tym te, które działają na kontrolerze rozszerzenia pamięci) powodują pułapkę (przerwanie obsługiwane przez menedżera). W ten sposób menedżer może mapować odniesienia do pamięci, mapować pola danych lub instrukcji oraz przekierowywać wejścia/wyjścia do różnych urządzeń. Każdy oryginalny program ma pełny dostęp do „maszyny wirtualnej” zapewnianej przez menedżera.

Nowe instrukcje we/wy do kontrolera rozszerzenia pamięci pobierają bieżącą wartość pól danych i instrukcji, umożliwiając oprogramowaniu zapisanie i przywrócenie większości stanu maszyny w pułapce. Jednak program nie może wykryć, czy procesor jest w trakcie odraczania efektu instrukcji CIF (czy wykonał CIF i jeszcze nie wykonał pasującej instrukcji skoku). Menedżer musi dołączyć kompletny emulator PDP-8 (nietrudny jak na maszynę 8-instrukcyjną). Za każdym razem, gdy instrukcja CIF trafia w pułapkę menedżera, musi emulować instrukcje aż do następnego skoku. Na szczęście, ponieważ skok jest zwykle następną instrukcją po CIF, ta emulacja nie spowalnia programów za bardzo, ale jest dużym obejściem pozornie małego niedociągnięcia projektowego.

Do czasu wydania PDP-8/A ceny pamięci spadły na tyle, że pożądana była pamięć przekraczająca 32 KB. 8/A dodał nowy zestaw instrukcji do obsługi więcej niż ośmiu pól pamięci. Numer pola można teraz umieścić w AC, a nie na stałe zakodować w instrukcji. Jednak w tym czasie PDP-8 podupadał, więc bardzo niewiele standardowego oprogramowania zostało zmodyfikowane w celu wykorzystania tych nowych funkcji.

Przykłady

Poniższe przykłady pokazują kod w asemblerze PDP-8 , tak jak można napisać dla asemblera PAL-III.

Porównywanie dwóch liczb

Poniższy fragment kodu pokazuje, co jest potrzebne do porównania dwóch liczb:

    /Compare numbers in memory at OPD1 and OPD2
            CLA CLL     /Must start with 0 in AC and link
            TAD OPD1    /Load first operand into AC (by adding it to 0); link is still clear
            CIA         /Complement, then increment AC, negating it
            TAD OPD2    /AC now has OPD2-OPD1; if OPD2≥OPD1, sum overflows and link is set
            SZL         /Skip if link is clear
            JMP OP2GT   /Jump somewhere in the case that OPD2≥OPD1;
                        /Otherwise, fall through to code below.

Jak pokazano, większość tekstu typowego programu PDP-8 koncentruje się nie na zamierzonym przez autora algorytmie, ale na mechanice niskiego poziomu. Dodatkowym problemem z czytelnością jest to, że w skokach warunkowych, takich jak ten pokazany powyżej, instrukcja warunkowa (która pomija JMP) podkreśla przeciwieństwo interesującego warunku.

Wyjście ciąg

Ten kompletny program w języku asemblerowym PDP-8 wyświetla "Hello, world!" do teledrukarki.

    *10                   / Set current assembly origin to address 10,
    STPTR,    STRNG-1     / An auto-increment register (one of eight at 10-17)

    *200                  / Set current assembly origin to program text area
    HELLO,  CLA CLL       / Clear AC and Link again (needed when we loop back from tls)
            TAD I Z STPTR / Get next character, indirect via PRE-auto-increment address from the zero page
            SNA           / Skip if non-zero (not end of string)
            HLT           / Else halt on zero (end of string)
            TLS           / Output the character in the AC to the teleprinter
            TSF           / Skip if teleprinter ready for character
            JMP .-1       / Else jump back and try again
            JMP HELLO     / Jump back for the next character

    STRNG,  310           / H
            345           / e
            354           / l
            354           / l
            357           / o
            254           /,
            240           / (space)
            367           / w
            357           / o
            362           / r
            354           / l
            344           / d
            241           / !
            0             / End of string
    $HELLO                /DEFAULT TERMINATOR

Podprogramy

Procesor PDP-8 nie implementuje stosu, na którym można przechowywać rejestry lub inny kontekst, gdy wywoływany jest podprogram lub występuje przerwanie . (Stos można zaimplementować w oprogramowaniu, jak pokazano w następnej sekcji). Zamiast tego instrukcja JMS po prostu przechowuje zaktualizowany komputer PC (wskazując za JMS, na adres zwrotny) pod adresem efektywnym i przeskakuje do adresu efektywnego plus jeden. Podprogram powrócił do swojego wywołującego za pomocą pośredniej instrukcji JMP, która odnosi się do pierwszego słowa podprogramu.

Na przykład tutaj jest „Witaj, świecie!” przepisany, aby użyć podprogramu. Gdy instrukcja JMS przeskakuje do podprogramu, modyfikuje 0 zakodowane w lokalizacji OUT1:

    *10                     / Set current assembly origin to address 10,
    STPTR,  STRNG-1         / An auto-increment register (one of eight at 10-17)

    *200                    / Set assembly origin (load address)
    LOOP,   TAD I STPTR     / Pre-increment mem location 10, fetch indirect to get the next character of our message
            SNA             / Skip on non-zero AC
            HLT             / Else halt at end of message
            JMS OUT1        / Write out one character
            JMP LOOP        / And loop back for more
    OUT1,   0               / Will be replaced by caller's updated PC
            TSF             / Skip if printer ready
            JMP .-1         / Wait for flag
            TLS             / Send the character in the AC
            CLA CLL         / Clear AC and Link for next pass
            JMP I OUT1      / Return to caller
    STRNG, "H               / A well-known message
           "e               /
           "l               / NOTE:
           "l               /
           "o               /   Strings in PAL-8 and PAL-III were "sixbit"
           ",               /   To use ASCII, we spell it out, character by character
           "                /
           "w               /
           "o               /
           "r               /
           "l               /
           "d               /
           "!               /
           015              /
           012              /
           0                / Mark the end of our null-terminated string (.ASCIZ hadn't been invented yet!)

Fakt, że instrukcja JMS używa słowa tuż przed kodem podprogramu do zdeponowania adresu zwrotnego, zapobiega ponownemu wejściu i rekursji bez dodatkowej pracy programisty. Utrudnia to również korzystanie z pamięci ROM z PDP-8, ponieważ przechowywanie adresu zwrotnego do odczytu i zapisu jest pomieszane z przechowywaniem kodu tylko do odczytu w przestrzeni adresowej. Programy przeznaczone do umieszczenia w ROM-ach podchodzą do tego problemu na kilka sposobów:

  • Kopiują się do pamięci do odczytu i zapisu przed wykonaniem lub
  • Są one umieszczane na specjalnych kartach ROM, które zapewniają kilka słów pamięci do odczytu/zapisu, do których dostęp uzyskuje się pośrednio poprzez użycie trzynastego bitu flagi w każdym słowie ROM.
  • Unikają stosowania podprogramów; lub użyj kodu takiego jak poniższy zamiast instrukcji JMS, aby umieścić adres powrotu w pamięci do odczytu i zapisu:
    JUMPL, DCA TEMP         / Deposit the accumulator in some temporary location
           TAD JUMPL+3      / Load the return address into the accumulator: hard coded
           JMP SUBRO        / Go to the subroutine, and have it handle jumping back (to JUMPL+3)

Użycie instrukcji JMS utrudnia debugowanie. Jeśli programista popełni błąd polegający na tym, że sam wywoła wywołanie podprogramu, bezpośrednio lub przez pośredni podprogram, to adres powrotu wywołania zewnętrznego zostanie zniszczony przez adres powrotu kolejnego wywołania, co prowadzi do nieskończonej pętli. Jeśli jeden moduł jest zakodowany z niepoprawnym lub przestarzałym adresem dla podprogramu, nie tylko nie wykona całej sekwencji kodu podprogramu, ale może zmodyfikować słowo kodu podprogramu, umieszczając adres powrotu, który procesor może zinterpretować jako instrukcja podczas kolejnego poprawnego wywołania podprogramu. Oba typy błędów mogą się ujawnić podczas wykonywania kodu, który został napisany poprawnie.

Pakiet oprogramowania

Chociaż PDP-8 nie posiada stosu sprzętowego , stosy mogą być implementowane programowo. Oto przykładowe podprogramy PUSH i POP, uproszczone w celu pominięcia problemów, takich jak testowanie przepełnienia i niedopełnienia stosu:

    *100              /make routines accessible for next example
    PUSH, 0
          DCA DATA
          CLA CMA     / -1
          TAD SP
          DCA SP
          TAD DATA
          DCA I SP
          JMP I PUSH     /Return

    POP,  0
          CLA CLL
          TAD I SP
          ISZ SP
          JMP I POP

    DATA, 0
    SP, 0

A oto „Hello World” z zaimplementowanym „stosem” i podprogramem „OUT”:

    *200
    MAIN,  CLA CLL         /Set the message pointer
           TAD (MESSG      /To the beginning of the message (literal)
           DCA SP

    LOOP,  JMS POP
           SNA             /Stop execution if zero
           HLT
           JMS OUT         /Otherwise, output a character
           JMP LOOP

    MESSG, "H
           "e
           "l
           "l
           "o
           ",
           "
           "w
           "o
           "r
           "l
           "d
           "!
           015
           012
           0

    OUT,    0               / Will be replaced by caller's updated PC
            TSF             / Skip if printer ready
            JMP .-1         / Wait for flag
            TLS             / Send the character in the AC
            CLA CLL         / Clear AC and Link for next pass
            JMP I OUT       / Return to caller

Połączona lista

Innym możliwym podprogramem dla PDP-8 jest połączona lista.

     GETN, 0     /Gets the number pointed to and moves the pointer
     CLA CLL     /Clear accumulator
     TAD I PTR   /Gets the number pointed to
     DCA TEMP    /Save current value
     ISZ PTR     /Increment pointer
     TAD I PTR   /Get next address
     DCA PTR     /Put in pointer
     JMP I GETN  /return
     PTR,  0
     TEMP, 0

Przerwania

Na magistrali we/wy PDP-8 znajduje się pojedyncza linia przerwań . Procesor obsługuje każde przerwanie wyłączając dalsze przerwania i wykonując a JMSdo lokalizacji 0000. Ponieważ trudno jest napisać podprogramy reentrant, trudno jest zagnieździć przerwania i zwykle się tego nie robi; każde przerwanie działa do końca i ponownie włącza przerwania tuż przed wykonaniem JMP I 0instrukcji, która powraca z przerwania.

Ponieważ na magistrali I/O jest tylko jedna linia przerwań, wystąpienie przerwania nie informuje procesora o źródle przerwania. Zamiast tego, procedura obsługi przerwań musi seryjnie odpytywać każde aktywne urządzenie we/wy, aby sprawdzić, czy jest ono źródłem. Kod, który to robi, nazywa się łańcuchem pomijania, ponieważ składa się z serii instrukcji we/wy PDP-8 „przetestuj i pomiń, jeśli ustawiono flagę”. (Nie było niczym niespotykanym, że łańcuch pomijania osiągnął swój koniec bez znalezienia żadnego urządzenia wymagającego obsługi.) Względny priorytet przerwań urządzeń I/O jest określany przez ich pozycję w łańcuchu pomijania: Jeśli kilka urządzeń przerywa przerwanie, urządzenie testowane wcześniej w łańcuchu pomijania jest najpierw serwisowane.

Książki

Popularny w latach 80. podręcznik inżynierski The Art of Digital Design autorstwa Davida Winkela i Franklina Prossera zawiera przykładowy problem obejmujący kilka rozdziałów, w których autorzy demonstrują proces projektowania komputera zgodnego z PDP-8/I. Wyjaśniona jest funkcja każdego komponentu. Chociaż nie jest to projekt produkcyjny, ponieważ wykorzystuje bardziej nowoczesne komponenty SSI i MSI , ćwiczenie zawiera szczegółowy opis działania komputera.

Nielicencjonowane klony

ZSRR wyprodukował minikomputery Saratow-1 i Saratow-2, odpowiednio PDP-8 i PDP-8/E .

Bibliografia

  • C. Gordon Bell i Allen Newell , 1971, Struktury komputerowe: odczyty i przykłady , McGraw-Hill Book Company, Nowy Jork. Rozdział 5 DEC PDP-8 , strony 120–136. Z wystarczającą ilością szczegółów, aby inżynier elektryk mógł go zbudować (jeśli jest w stanie znaleźć części).

Zewnętrzne linki