El PDP-8 es una familia de minicomputadoras de 12 bits producida por Digital Equipment Corporation (DEC). Lanzada en 1965, fue la primera minicomputadora en venderse por menos de 20 000 dólares, y el precio de 25 000 dólares para un sistema completo se convertiría posteriormente en una característica definitoria de la clase de minicomputadoras. [ 1 ] Se vendieron más de 50 000 unidades durante la vida útil del modelo. [ 2 ]
Su diseño básico sigue el de LINC, pionero en su campo , pero con un conjunto de instrucciones más reducido , que es una versión ampliada del conjunto de instrucciones del PDP-5 . [ 3 ] Para reducir el costo de implementación, el sistema omite varias funciones de uso común que deben escribirse mediante combinaciones de otras instrucciones. Esto da como resultado programas complejos.
El PDP-12 es una variante del PDP-8 con un procesador capaz de ejecutar programas para los sistemas PDP-8 y LINC. El sucesor de la línea PDP-8 es el PDP-11 , que contaba con un conjunto de instrucciones mucho más completo y no era retrocompatible.
Descripción general


El primer modelo PDP-8, conocido posteriormente de forma informal como "Straight-8", se presentó el 22 de marzo de 1965 a un precio de 18.500 dólares [ 4 ] ( equivalente a unos 189.000 dólares en 2025 [ 5 ] ). Utiliza lógica de diodo-transistor empaquetada en tarjetas flip-chip en una máquina del tamaño aproximado de un pequeño frigorífico doméstico . Fue el primer ordenador que se vendió por menos de 20.000 dólares [ 6 ] , lo que lo convirtió en el ordenador más vendido de la historia en aquel momento [ 7 ] [ 8 ] .
El Straight-8 fue reemplazado en 1966 por el PDP-8/S, disponible en modelos de escritorio y para montaje en rack. El uso de una unidad aritmético-lógica (ALU) serie de un bit permitió que el PDP-8/S fuera más pequeño y económico, aunque más lento que el PDP-8 original. Un 8/S básico se vendía por menos de 10 000 dólares, siendo la primera máquina en alcanzar ese precio. [ 6 ] [ 9 ]
Los sistemas posteriores (PDP-8/I y /L, PDP-8/E, /F y /M, y PDP-8/A) retomaron una implementación más rápida y totalmente paralela, pero utilizaron lógica MSI de transistor-transistor (TTL) , mucho menos costosa. La mayoría de los PDP-8 que aún existen pertenecen a esta época. El PDP-8/E es común y goza de buena reputación debido a la disponibilidad de numerosos dispositivos de entrada/salida .
Los últimos modelos comerciales PDP-8, lanzados en 1979, se denominaban "CMOS-8" y se basaban en microprocesadores CMOS . Su precio no era competitivo y la oferta fracasó. Intersil comercializó los circuitos integrados hasta 1982 bajo la denominación Intersil 6100. Gracias a su tecnología CMOS, tenían bajos requisitos de energía y se utilizaron en algunos sistemas militares integrados.
El ingeniero jefe que diseñó la versión inicial del PDP-8 fue Edson de Castro , quien más tarde fundó Data General . [ 10 ]
Importancia arquitectónica
El PDP-8 combina bajo costo, [ 4 ] simplicidad, capacidad de expansión e ingeniería cuidadosa para ofrecer valor. Su mayor importancia histórica radica en que su bajo costo y alto volumen de producción permitieron que muchos clientes nuevos accedieran a una computadora para diversos usos. Su relevancia perdura como ejemplo histórico de diseño de computadoras con enfoque en el valor [ 11 ] .
La baja complejidad trajo consigo otros costos. Hizo que la programación fuera engorrosa, como se ve en los ejemplos de este artículo y en la discusión sobre "páginas" y "campos". Gran parte del código realizaba la mecánica requerida, en lugar de definir el algoritmo. Por ejemplo, restar un número de otro requiere calcular el complemento a dos del primer número y luego sumar el segundo, ya que no existe una instrucción de resta; y realizar un salto condicional implica realizar un salto condicional alrededor de un salto incondicional, donde la condición de salto es la negación de la deseada para el salto, ya que no existen instrucciones de salto condicional. Algunos proyectos de programación ambiciosos no cabían en la memoria o desarrollaron defectos de diseño que no se pudieron solucionar. Por ejemplo, como se indica más adelante , la recursión inadvertida de una subrutina produce defectos que son difíciles de rastrear hasta la subrutina en cuestión.
A medida que los avances en el diseño redujeron los costos de la lógica y la memoria, el tiempo del programador se volvió relativamente más importante. [ 12 ] Los diseños de computadoras posteriores enfatizaron la facilidad de programación, generalmente utilizando conjuntos de instrucciones más grandes e intuitivos. [ 13 ]
Finalmente, la mayor parte del código máquina fue generado por compiladores y generadores de informes. [ 14 ] La computadora con conjunto de instrucciones reducido volvió al punto de partida del énfasis del PDP-8 en un conjunto de instrucciones simple y en lograr múltiples acciones en un solo ciclo de instrucción, con el fin de maximizar la velocidad de ejecución, aunque las computadoras más nuevas tienen palabras de instrucción mucho más largas.
Descripción
El predecesor del PDP-8 fue el PDP-5 . También utilizó ideas de varios predecesores de 12 bits, como el LINC diseñado por WA Clark y CE Molnar , quienes se inspiraron en la minicomputadora CDC 160 de Seymour Cray . [ 3 ] [ 15 ] El LINC había sido diseñado específicamente para ser fácilmente interconectado con equipos de laboratorio, y el PDP-5 y el PDP-8 incluían características similares.

El PDP-8 utiliza 12 bits para el tamaño de palabra y la aritmética, lo que significa que internamente puede trabajar con enteros sin signo de 0 a 4095 o enteros con signo de -2048 a +2047. Para admitir el trabajo con números más grandes y valores de punto flotante , se utilizó un intérprete que almacenaba un único valor con una mantisa ( significando ) de dos palabras y 24 bits y un exponente de una palabra y 12 bits. [ 16 ] Aunque el uso de este formato era lento, permitía al PDP-8 ejecutar el mismo tipo de programas que máquinas mucho más caras como el IBM 1130 y el IBM System/360 , a la vez que facilitaba mucho la interfaz con dispositivos externos.
El espacio de direcciones de memoria también es de 12 bits, por lo que la configuración básica del PDP-8 tiene una memoria principal máxima de 4096 ( 2¹² ) palabras de doce bits, o 6 KiB en términos modernos. Una unidad de expansión de memoria opcional puede cambiar bancos de memoria usando una instrucción IOT . La memoria es de núcleo magnético con un tiempo de ciclo de 1,5 microsegundos (0,667 MHz ), por lo que una instrucción típica de referencia de memoria de dos ciclos (Captura, Ejecución) se ejecuta a una velocidad de 0,333 MIPS . La tarjeta de referencia de bolsillo de 1974 para el PDP-8/E da un tiempo de instrucción básico de 1,2 microsegundos, o 2,6 microsegundos para instrucciones que hacen referencia a la memoria.
El PDP-8 fue diseñado en parte para gestionar las telecomunicaciones y el texto de la época. Los códigos de caracteres de seis bits eran de uso generalizado en aquel entonces, y las palabras de doce bits del PDP-8 podían almacenar eficientemente dos de estos caracteres. Además, un código de teleimpresor de seis bits, denominado código de telecomposición o código TTS, era de uso común entre las agencias de noticias, y una de las primeras aplicaciones del PDP-8 fue la composición tipográfica mediante este código. [ 17 ]
Las instrucciones del PDP-8 tienen un código de operación de tres bits, por lo que solo hay ocho instrucciones principales. El programador puede usar muchos mnemónicos de instrucciones adicionales, que el ensamblador traduce a instrucciones OPR o IOT específicas. El PDP-8 tiene solo tres registros visibles para el programador: el acumulador de 12 bits (AC), el contador de programa de 12 bits (PC) y un indicador de acarreo de un bit llamado "registro de enlace" (L). Los registros adicionales no visibles para el programador son un registro de búfer de memoria y un registro de dirección de memoria . Para ahorrar dinero, estos cumplen múltiples funciones en diferentes puntos del ciclo operativo. Por ejemplo, el registro de búfer de memoria proporciona operandos aritméticos, forma parte del registro de instrucciones y almacena datos para reescribir la memoria principal , que se borra al leerse.
Para la entrada y salida, el PDP-8 cuenta con una única interrupción compartida por todos los dispositivos, un bus de E/S al que se accede mediante instrucciones de E/S y un canal de acceso directo a memoria (DMA). El bus de E/S programado suele utilizarse para periféricos de baja a media velocidad, como impresoras , teletipos , perforadoras de cinta de papel y lectores, mientras que el DMA se utiliza para pantallas de tubo de rayos catódicos con lápiz óptico , convertidores analógico-digitales , convertidores digital-analógicos , unidades de cinta y unidades de disco .
Para ahorrar dinero, el diseño utiliza memoria principal económica para muchos propósitos que en otras computadoras se realizan con registros flip-flop más caros, [ 18 ] como contadores auxiliares y enlace de subrutinas.
Los modelos básicos utilizan software para realizar multiplicaciones y divisiones. Para cálculos más rápidos, el Elemento Aritmético Extendido (EAE) proporciona instrucciones de multiplicación y división con un registro adicional, el registro Multiplicador/Cociente (MQ). El EAE era una opción en el PDP-8 original, [ 19 ] el 8/I, [ 20 ] y el 8/E, pero es una parte integral del microprocesador Intersil 6100 , una implementación de un solo chip del PDP-8.
El PDP-8 está optimizado para un diseño sencillo . En comparación con máquinas más complejas, se eliminaron funciones innecesarias y se comparte la lógica siempre que es posible. Las instrucciones utilizan autoincremento, autoborrado y acceso indirecto para aumentar la velocidad del software, reducir el uso de memoria y sustituir los costosos registros por memoria de bajo costo.
Debido a su simplicidad, los primeros modelos PDP-8 eran menos costosos que la mayoría de las demás computadoras disponibles comercialmente. Al igual que las máquinas contemporáneas de IBM [ 21 ] y Burroughs [ 22 ], Digital utilizó tecnología de cableado semiautomatizado para cablear los backplanes de los primeros modelos PDP-8. La CPU PDP-8 original, excluyendo el elemento aritmético extendido y otras opciones, requería 75 módulos pequeños y 25 módulos de doble tamaño, todos menos 2 de la familia de módulos Flip-Chip de la serie R [ 23 ] .
El modelo PDP-8/S, presentado en agosto de 1966, [ 9 ] también utilizaba principalmente módulos Flip-Chip de la serie R , [ 24 ] pero redujo el número de puertas lógicas mediante el uso de una ruta de datos serial de un bit de ancho para realizar operaciones aritméticas. La CPU del PDP-8/S tiene solo unas 519 puertas lógicas . En comparación, los microcontroladores pequeños (a partir de 2008) suelen tener 15 000 o más. Las reducciones en la electrónica permitieron una carcasa mucho más pequeña, del tamaño aproximado de una caja de pan. El 8/S fue diseñado por Saul Dinman. [ 25 ]
El PDP-8/E es un ordenador más grande y potente, rediseñado para ofrecer una mejor relación calidad-precio. Emplea lógica transistor-transistor más rápida en circuitos integrados. La memoria principal se rediseñó. Permite una expansión más económica gracias al uso del bus OMNIBUS en lugar del plano posterior cableado de los modelos anteriores. (Puede consultarse un relato personal del desarrollo del PDP-8/E en la Wiki de Historia de la Ingeniería y la Tecnología. [ 26 ] )
Modelos
Se estima que la cifra total de ventas de la familia PDP-8 supera las 300.000 máquinas. [ 27 ] Se fabricaron los siguientes modelos:
Implementaciones de última época

Debido en parte a su simplicidad, el PDP-8 se puede emular fácilmente .
En internet se encuentran disponibles varias simulaciones de software del PDP-8, así como reimplementaciones de hardware de código abierto . Las mejores ejecutan correctamente los sistemas operativos y el software de diagnóstico de DEC. Estas simulaciones suelen recrear modelos recientes del PDP-8 con todos los periféricos posibles. Incluso estas utilizan solo una pequeña fracción de la capacidad de un ordenador personal moderno.
Los entusiastas han creado PDP-8 completos utilizando dispositivos FPGA individuales. [ 37 ]
Entrada/salida
Los sistemas de E/S experimentaron grandes cambios durante la era del PDP-8. Los primeros modelos del PDP-8 utilizaban una interfaz de panel frontal , un lector de cinta de papel y una impresora de teletipo con perforadora de cinta opcional. Con el tiempo, se añadieron sistemas de E/S como cinta magnética , terminales tontas RS-232 y de bucle de corriente , lectores de tarjetas perforadas y discos de cabezal fijo . Hacia el final de la era del PDP-8, los disquetes y las unidades de disco de cartucho de cabezal móvil se convirtieron en dispositivos de E/S populares. Los entusiastas modernos han creado adaptadores de disco duro IDE estándar de estilo PC para ordenadores PDP-8 reales y simulados.
Se admiten varios tipos de E/S:
- Ranuras dedicadas en el panel posterior para controladores de E/S.
- Un bus de E/S "negativo" (que utiliza señalización de voltaje negativo)
- Un bus de E/S "positivo" (la misma arquitectura que utiliza señalización TTL)
- El Omnibus (un plano posterior con ranuras de bus de sistema no dedicadas ) se introdujo en el PDP-8/E. (Los detalles se describen en el artículo de IEEE al que se hace referencia a continuación).
Se admite una forma simplificada y económica de DMA denominada "interrupción de datos de tres ciclos"; esta requiere la asistencia del procesador. El método de "interrupción de datos" traslada parte de la lógica común necesaria para implementar la E/S DMA de cada dispositivo de E/S a una copia común de la lógica dentro del procesador. La "interrupción de datos" asigna al procesador la responsabilidad de mantener los registros de dirección DMA y de conteo de palabras. En tres ciclos de memoria sucesivos, el procesador actualiza el conteo de palabras, actualiza la dirección de transferencia y almacena o recupera la palabra de datos de E/S real.
La interrupción de datos en un ciclo triplica la velocidad de transferencia DMA, ya que solo es necesario transferir los datos de destino desde y hacia la memoria principal. Sin embargo, los dispositivos de E/S requieren lógica electrónica adicional para gestionar sus propios registros de conteo de palabras y direcciones de transferencia. Para cuando se lanzó el PDP-8/E, la lógica electrónica se había abaratado y la interrupción de datos en un ciclo se había popularizado.
Instalaciones de programación
Los primeros sistemas PDP-8 se distribuían sin software preinstalado; cada vez que se encendía el PDP-8, el usuario introducía manualmente las instrucciones mediante un banco de 12 interruptores. Normalmente, estas instrucciones consistían en un cargador de arranque para leer un programa desde el lector de cinta de papel de un Teletype Modelo 33. A continuación, se podía continuar con el desarrollo del programa, utilizando la entrada y salida de la cinta de papel.
Se pusieron a disposición versiones en cinta de papel de varios lenguajes de programación, incluido el intérprete FOCAL de DEC [ 38 ] y un compilador y entorno de ejecución de FORTRAN 4K.
Hacia el final de la era del PDP-8, sistemas operativos como OS/8 y COS-310 permitieron un editor de modo de línea tradicional y un sistema de desarrollo de compiladores de línea de comandos que utilizaba lenguajes como el lenguaje ensamblador PAL-III, FORTRAN, BASIC y DIBOL .
Se disponía de sistemas operativos en tiempo real (RTOS) y sistemas multiusuario multitarea con prioridad bastante modernos y avanzados : un sistema en tiempo real (RTS-8), sistemas comerciales multiusuario (COS-300 y COS-310) y un sistema de procesamiento de textos dedicado para un solo usuario (WPS-8).
También estaba disponible un sistema de tiempo compartido , TSS-8 . TSS-8 permite que varios usuarios inicien sesión en el sistema mediante terminales de 110 baudios, y editen, compilen y depuren programas. Los lenguajes incluyen una versión especial de BASIC, un subconjunto de FORTRAN similar a FORTRAN-1 (sin subrutinas ni funciones escritas por el usuario), un subconjunto de ALGOL , FOCAL, y un ensamblador llamado PAL-D.
DECUS , la Sociedad de Usuarios de Digital Equipment Corporation, ofrecía una cantidad considerable de software donado por los usuarios para el PDP-8 , que a menudo venía acompañado de listados completos del código fuente y documentación.
Conjunto de instrucciones
Los tres bits de orden superior de la palabra de instrucción de 12 bits (etiquetados del 0 al 2) constituyen el código de operación. Para las seis operaciones que hacen referencia a la memoria, los bits del 5 al 11 proporcionan una dirección de siete bits. El bit 4, si está activado, indica que se complete la dirección utilizando los cinco bits de orden superior del registro del contador de programa (PC), lo que significa que la ubicación direccionada se encuentra dentro de las mismas 128 palabras que la instrucción. Si el bit 4 está desactivado, se utilizan ceros, por lo que la ubicación direccionada se encuentra dentro de las primeras 128 palabras de memoria. El bit 3 especifica la indirección; si está activado, la dirección obtenida como se ha descrito hasta ahora apunta a un valor de 12 bits en la memoria que proporciona la dirección efectiva real para la instrucción; de esta manera, los operandos pueden estar en cualquier lugar de la memoria a costa de una palabra adicional. La instrucción JMP no opera sobre una palabra de memoria, excepto si se especifica la indirección, pero tiene los mismos campos de bits.
- Páginas de memoria
Este uso de la palabra de instrucción divide la memoria de 4096 palabras en páginas de 128 palabras ; el bit 4 de la instrucción selecciona la página actual o la página 0 (direcciones 0000–0177 en octal ). La memoria en la página 0 es muy valiosa, ya que las variables ubicadas allí pueden ser direccionadas directamente desde cualquier página. (Además, la dirección 0000 es donde debe comenzar cualquier rutina de servicio de interrupción, y las direcciones 0010–0017 tienen la propiedad especial de autoincrementarse antes de cualquier referencia indirecta a través de ellas).
El ensamblador estándar coloca los valores constantes para las operaciones aritméticas en la página actual. Del mismo modo, los saltos entre páginas y las llamadas a subrutinas utilizan una dirección indirecta en la página actual.
Era importante escribir rutinas que se ajustaran a páginas de 128 palabras o bien organizarlas para minimizar las transiciones entre páginas, ya que las referencias y los saltos fuera de la página actual requerían una palabra adicional. Por consiguiente, se dedicaba mucho tiempo a ahorrar ingeniosamente una o varias palabras. Los programadores colocaban deliberadamente el código al final de una página para lograr una transición fluida a la página siguiente a medida que se incrementaba el contador de programa.
Instrucciones básicas
- 000 – AND – AND bit a bit del operando de memoria con AC.
- 001 – TAD – Complemento a dos , suma el operando de memoria a <L, AC> (un valor con signo de 12 bits (AC) con acarreo en L).
- 010 – ISZ – Incrementa el operando de memoria y omite la siguiente instrucción si el resultado es cero.
- 011 – DCA – Depositar AC en el operando de memoria y borrar AC.
- 100 – JMS – Saltar a la subrutina (almacenando la dirección de retorno en la primera palabra de la subrutina).
- 101 – JMP – Salto.
- 110 – IoT – Transferencia de entrada/salida (ver más abajo).
- 111 – OPR – Operaciones microcodificadas (ver más abajo).
Instrucciones IOT (Transferencia de Entrada/Salida)
El procesador PDP-8 definía pocas instrucciones de E/S, limitándose a proporcionar un marco de trabajo. La mayoría de las instrucciones de E/S estaban definidas por los dispositivos de E/S individuales.
- Dispositivo
Los bits 3 al 8 de una instrucción IOT seleccionan un dispositivo de E/S. Algunas de estas direcciones de dispositivo están estandarizadas por convención:
- El valor 00 es gestionado por el procesador y no se envía a ningún dispositivo de E/S (véase más abajo).
- El 01 suele ser el lector de cinta de papel de alta velocidad.
- 02 es la perforadora de cinta de papel de alta velocidad.
- 03 es el teclado de la consola (y cualquier lector de cinta de papel de baja velocidad asociado).
- 04 es la impresora de la consola (y cualquier perforadora de cinta de papel de baja velocidad asociada).
Las instrucciones para el dispositivo 0 afectan al procesador en su conjunto. Por ejemplo, ION (6001) habilita el procesamiento de interrupciones e IOFF (6002) lo deshabilita.
- Función
Los bits 9 a 11 de una instrucción IOT seleccionan la(s) función(es) que realiza el dispositivo. Los dispositivos simples (como el lector y perforador de cinta de papel y el teclado y la impresora de la consola) utilizan los bits de forma estándar:
- El bit 11 hace que el procesador omita la siguiente instrucción si el dispositivo de E/S está listo.
- El bit 10 borra la CA.
- El bit 9 transfiere una palabra entre AC y el dispositivo, inicia otra transferencia de E/S y borra el indicador de "listo" del dispositivo.
Estas operaciones se realizan en un orden bien definido que proporciona resultados útiles si se activa más de un bit.
Los dispositivos más complejos, como las unidades de disco, utilizan estos 3 bits de forma específica. Normalmente, un dispositivo decodifica los 3 bits para generar 8 códigos de función posibles.
OPR (Operar)
Muchas operaciones se realizan mediante OPR, incluyendo la mayoría de las condicionales. OPR no accede a una ubicación de memoria; la ejecución condicional se logra omitiendo condicionalmente la instrucción siguiente, que suele ser un JMP.
Se decía que la instrucción OPR estaba "microcodificada". Esto no significaba lo que significa hoy en día (que un programa de nivel inferior obtuviera e interpretara la instrucción OPR), sino que cada bit de la palabra de instrucción especificaba una acción determinada, y el programador podía realizar varias acciones en un solo ciclo de instrucción configurando múltiples bits. En la práctica, un programador puede escribir varios mnemónicos de instrucción uno al lado del otro, y el ensamblador los combina con la operación OR para generar la palabra de instrucción propiamente dicha. Muchos dispositivos de E/S admiten instrucciones IOT "microcodificadas".
Las acciones microcodificadas se ejecutan en una secuencia bien definida, diseñada para maximizar la utilidad de múltiples combinaciones.
Las instrucciones OPR vienen en grupos. Los bits 3, 8 y 11 identifican el grupo de una instrucción OPR, por lo que es imposible combinar las acciones microcodificadas de diferentes grupos.
Una acción (y su bit correspondiente) que es la misma en todos los grupos es el bit 4, CLA. Si está activado, el acumulador se borra.
Grupo 1
00 01 02 03 04 05 06 07 08 09 10 11 ___________________________________ | 1| 1| 1| 0| | | | | | | | | |__|__|__|__|__|__|__|__|__|__|__|__| CLA CMA RAR BSW LLC LMC RAL IAC Orden de ejecución 1 1 2 2 4 4 4 3
- 7200 – CLA – Acumulador transparente
- 7100 – CLL – Borrar el bit L
- 7040 – CMA – Acumulador de complemento a uno
- 7020 – CML – Bit Complemento L
- 7001 – IAC – Incremento <L,CA>
- 7010 – RAR – Rotar <L,AC> a la derecha
- 7004 – RAL – Girar <L,AC> Izquierda
- 7012 – RTR – Girar <L,AC> a la derecha dos veces
- 7006 – RTL – Girar <L,AC> dos veces a la izquierda
- 7002 – BSW – Intercambio de bytes de 6 bits (PDP 8/e y posteriores)
En la mayoría de los casos, las operaciones se secuencian para poder combinarlas de la forma más útil. Por ejemplo, al combinar CLA (Borrar Acumulador), CLL (Borrar Enlace) e IAC (Incrementar Acumulador), primero se borran el acumulador y el enlace, y luego se incrementa el acumulador, dejándolo en 1. Al añadir RAL a la secuencia (es decir, CLA CLL IAC RAL), el acumulador se borra, se incrementa y luego se rota a la izquierda, quedando en 2. De esta forma, se colocaban pequeñas constantes enteras en el acumulador con una sola instrucción.
La combinación CMA IAC, que el ensamblador permite abreviar como CIA, produce la inversa aritmética de AC: la negación en complemento a dos. Dado que no existe una instrucción de resta, para calcular la diferencia es necesario negar el sustraendo antes de realizar la suma en complemento a dos (TAD).
Una instrucción OPR del Grupo 1 que no tiene ninguno de los bits microprogramados activados no realiza ninguna acción. El programador puede escribir NOP (Sin Operación) para generar dicha instrucción.
Grupo 2, o Grupo
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 – Aire acondicionado limpio
- 7500 – SMA – Saltar si AC < 0 (o grupo)
- 7440 – SZA – Saltar en AC = 0 (o grupo)
- 7420 – SNL – Saltar en L ≠ 0 (o grupo)
- 7404 – OSR – Interruptores de panel frontal OR bit a bit con CA
- 7402 – HLT – Alto
Tres de los bits (CLA, OSR, HLT) realizan acciones si están activados. Otros tres bits (SMA, SZA, SNL) codifican las condiciones de omisión; se realiza una omisión si alguna de las condiciones especificadas es verdadera. Por ejemplo, "SMA SZA", código de operación 7540, se omite si AC ≤ 0 .
Una instrucción OPR del Grupo 2 que no tiene ninguno de los bits microprogramados activados es otra instrucción No-Op.
Grupo 2 y Grupo
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 – Saltar incondicionalmente
- 7610 – CLA – Aire acondicionado limpio
- 7510 – SPA – Saltar en CA ≥ 0 (y grupo)
- 7450 – SNA – Saltar en AC ≠ 0 (y grupo)
- 7430 – SZL – Saltar en L = 0 (y grupo)
Cuando el bit 8 está activado, la condición de omisión del Grupo 2 se invierte; la omisión no se realiza si alguna de las condiciones del grupo es verdadera. Según las leyes de De Morgan , esto significa que la omisión se realiza si todas las condiciones invertidas especificadas son verdaderas. Por ejemplo, "SPA SNA", código de operación 7550, se omite si AC > 0. Si ninguno de los bits 5 a 7 está activado, la omisión es incondicional.
Las acciones (CLA, OSR, HLT) no se ven afectadas por el bit 8.
Grupo 3
Las combinaciones de bits no utilizadas de OPR se definen como un tercer grupo de acciones microprogramadas que afectan principalmente al registro MQ (Multiplicador/Cociente). El registro MQ y las instrucciones de elementos aritméticos extendidos (EAE) son opcionales y solo existen cuando se adquirió la opción EAE. [ 39 ]
00 01 02 03 04 05 06 07 08 09 10 11 ___________________________________ | 1| 1| 1| 1| | | | | | | | 1| |__|__|__|__|__|__|__|__|__|__|__|__| |CLA SCA \_ _/ | CÓDIGO MQL MQA 1* 2 2 2 3
- 7601 – CLA – Aire acondicionado limpio
- 7501 – MQA – Cociente multiplicador con CA (lógico o MQ en CA)
- 7441 – SCA – Carga del contador de pasos en CA
- 7421 – MQL – Carga de cociente multiplicador (Transferir CA a MQ, borrar CA)
- 7621 – CAM – CLA + MQL liquida tanto AC como MQ.
Normalmente, CLA y MQA se combinaban para transferir MQ a AC. Otra combinación útil es MQA y MQL, para intercambiar los dos registros.
Tres bits especificaban una instrucción de multiplicación/división a realizar:
- 7401 – Sin funcionamiento
- 7403 – SCL – Carga del contador de pasos (sigue inmediatamente la palabra, PDP-8/I y superiores)
- 7405 – MUY – Multiplicar
- 7407 – DVI – Dividir
- 7411 – NMI – Normalizar
- 7413 – SHL – Desplazamiento a la izquierda (sigue la palabra inmediatamente)
- 7415 – ASR – Desplazamiento aritmético a la derecha
- 7417 – LSR – Desplazamiento lógico a la derecha
Control de memoria




Una palabra de 12 bits puede tener 4096 valores diferentes, y este es el número máximo de palabras que el PDP-8 original puede direccionar indirectamente mediante un puntero de palabra. 4096 palabras de 12 bits representan 6144 bytes en la terminología moderna, o 6 kB. A medida que los programas se volvieron más complejos y el precio de la memoria disminuyó, se hizo conveniente ampliar este límite.
Para mantener la compatibilidad con los programas preexistentes, el nuevo hardware, ajeno al diseño original, añadió bits de orden superior a las direcciones efectivas generadas por el programa. El controlador de extensión de memoria amplía la memoria direccionable en un factor de 8, hasta un total de 32 768 palabras. Se consideró que esta ampliación era suficiente, ya que, con la memoria principal costando entonces unos 50 céntimos por palabra, 32 KB de memoria equivaldrían al coste de la CPU.
Cada bloque de 4 KB de memoria se denomina campo. El controlador de extensión de memoria contiene dos registros de tres bits: el DF (Campo de Datos) y el IF (Campo de Instrucciones). Estos registros especifican un campo para cada referencia de memoria de la CPU, lo que da un total de 15 bits de dirección. El registro IF especifica el campo para la búsqueda de instrucciones y las referencias directas a memoria; el registro DF especifica el campo para los accesos indirectos a datos. Un programa que se ejecuta en un campo puede acceder a datos en el mismo campo mediante direccionamiento directo y acceder a datos en otro campo mediante direccionamiento indirecto.
El controlador de extensión de memoria gestiona un conjunto de instrucciones de E/S en el rango 6200 a 6277, que dan acceso a los registros DF e IF. La instrucción 62X1 (CDF, Change Data Field) establece el campo de datos en X. De forma similar, la instrucción 62X2 (CIF) establece el campo de instrucciones, y la 62X3 establece ambos. Los programas preexistentes nunca ejecutarían CIF ni CDF; los registros DF e IF apuntarían al mismo campo, un único campo al que estos programas estaban limitados. El efecto de la instrucción CIF se difería para que coincidiera con la siguiente instrucción JMP o JMS, de modo que la ejecución de CIF no provocara un salto.
Para los programas con múltiples campos, manejar los límites de los campos y los registros DF e IF era más complicado que si simplemente pudieran generar direcciones de 15 bits, pero el diseño proporcionaba compatibilidad con versiones anteriores y era coherente con la arquitectura de 12 bits utilizada en todo el PDP-8. Compárese con el posterior Intel 8086 , cuyas direcciones de memoria de 16 bits se expanden a 20 bits combinándolas con el contenido de un registro de segmento especificado o implícito .
El esquema de memoria extendida permitió que los programas existentes manejaran mayor memoria con cambios mínimos. Por ejemplo, FOCAL 4K normalmente tenía alrededor de 3 KB de código, con solo 1 KB disponible para el programa y los datos del usuario. Con algunas modificaciones, FOCAL podía usar un segundo campo de 4 KB para el programa y los datos del usuario. Además, se podían asignar campos adicionales de 4 KB a diferentes usuarios, convirtiendo a FOCAL 4K en un sistema de tiempo compartido multiusuario.
- Virtualización
En los modelos PDP-8/E y posteriores, el controlador de extensión de memoria se mejoró para permitir la virtualización de la máquina. Un programa diseñado para utilizar todos los recursos de un PDP-8 puede coexistir con otros programas similares en el mismo PDP-8 bajo el control de un gestor de máquinas virtuales. El gestor puede hacer que todas las instrucciones de E/S (incluidas las que operan en el controlador de extensión de memoria) generen una interrupción (una interrupción gestionada por el gestor). De esta forma, el gestor puede asignar referencias de memoria, campos de datos o instrucciones y redirigir las E/S a diferentes dispositivos. Cada programa original tiene acceso completo a una "máquina virtual" proporcionada por el gestor.
Las nuevas instrucciones de E/S al controlador de extensión de memoria recuperan el valor actual de los campos de datos e instrucciones, lo que permite al software guardar y restaurar la mayor parte del estado de la máquina tras una interrupción. Sin embargo, un programa no puede detectar si la CPU está postergando el efecto de una instrucción CIF (es decir, si ha ejecutado una CIF pero aún no la instrucción de salto correspondiente). El gestor debe incluir un emulador completo de PDP-8 (lo cual no es difícil para una máquina de 8 instrucciones). Cada vez que una instrucción CIF llega al gestor, este debe emular las instrucciones hasta el siguiente salto. Afortunadamente, como un salto suele ser la siguiente instrucción después de CIF, esta emulación no ralentiza mucho los programas, pero supone una solución compleja para una deficiencia de diseño aparentemente pequeña.
Para cuando apareció el PDP-8/A, los precios de la memoria habían bajado lo suficiente como para que se deseara una memoria superior a 32 KB. El 8/A incorporó un nuevo conjunto de instrucciones para gestionar más de ocho campos de memoria. Ahora, el número de campo podía ubicarse en el controlador de acceso (AC), en lugar de estar codificado directamente en la instrucción. Sin embargo, para entonces, el PDP-8 estaba en declive, por lo que se modificó muy poco software estándar para aprovechar estas nuevas funciones.
Ejemplos
Los siguientes ejemplos muestran código en lenguaje ensamblador PDP-8 , tal como se escribiría para el ensamblador PAL-III.
Comparar dos números
El siguiente fragmento de código muestra lo que se necesita para comparar dos números:
/ Comparar los números en memoria en OPD1 y OPD2 CLA CLL / Debe comenzar con 0 en AC y enlace TAD OPD1 / Cargar el primer operando en AC (sumándolo a 0); el enlace sigue siendo claro CIA / Complemento, luego incrementa AC, negándolo TAD OPD2 / AC ahora tiene OPD2-OPD1; si OPD2≥OPD1, la suma se desborda y se establece el enlace. SZL / Saltar si el enlace está claro JMP OP2GT / Saltar a algún lugar en caso de que OPD2≥OPD1; / De lo contrario, continúe con el código que aparece a continuación.
Como se muestra, gran parte del texto de un programa típico para PDP-8 se centra no en el algoritmo previsto por el autor, sino en la mecánica de bajo nivel. Este ejemplo ilustra un problema adicional de legibilidad: para lograr un salto condicional (JMP), es necesario codificar una instrucción de salto (para omitir el JMP) que resalte el sentido lógico opuesto de la prueba deseada.
OR lógico
El PDP-8 carecía de muchas operaciones comunes de bajo nivel, incluida la instrucción lógica OR. Una solución típica consistía en utilizar las leyes de De Morgan y almacenar los pasos intermedios en la memoria. Este código realiza la operación OR sobre los operandos en OPD1 y OPD2, utiliza la ubicación de memoria TMP para el almacenamiento y deja el resultado OPD1 OR OPD2en AC:
CLA / aire acondicionado limpio TAD OPD1 / carga el primer operando en AC (sumándolo a 0) CMA / complemento AC DCA TMP / guarde eso en la ubicación de memoria TMP y borre AC TAD OPD2 / carga el segundo valor en AC (sumándolo a 0) CMA / complementar el resultado Y TMP / AC = no(M) Y no(TMP) CMA / resultado complementario
Salida de cadena
Este programa completo en lenguaje ensamblador para PDP-8 imprime "¡Hola, mundo!" en la teleimpresora.
*10 / Establezca el origen del ensamblaje actual en la dirección 10, STPTR, STRNG-1 / Un registro de autoincremento (uno de los ocho ubicados entre 10 y 17) *200 / Establecer el origen del ensamblaje actual en el área de texto del programa HOLA, CLA CLL / Borrar AC y volver a enlazar (necesario cuando volvamos a la conexión TLS) TAD IZ STPTR / Obtener el siguiente carácter, indirectamente a través de la dirección de autoincremento PRE desde la página cero SNA / Saltar si no es cero (no es el final de la cadena) HLT / De lo contrario, detenerse en cero (fin de cadena) TLS / Enviar el carácter del AC al teletipo TSF / Saltar si el teletipo está listo para el carácter JMP .-1 / De lo contrario, retrocede e inténtalo de nuevo. SALTAR HOLA / Saltar hacia atrás para el siguiente personaje FUERTE, 310 / H 345 / e 354 / l 354 / l 357 / o 254 /, 240 / (espacio) 367 / w 357 / o 362 / r 354 / l 344 / d 241 / ! 0 / Fin de la cadena $HOLA /TERMINADOR PREDETERMINADO
Subrutinas
El procesador PDP-8 no implementa una pila para almacenar registros u otro contexto cuando se llama a una subrutina o se produce una interrupción . (Una pila puede implementarse por software, como se muestra en la siguiente sección). En su lugar, la instrucción JMS simplemente almacena el contador de programa (PC) actualizado (que apunta más allá de JMS, a la dirección de retorno) en la dirección efectiva y salta a la dirección efectiva más uno. La subrutina regresa a quien la llamó mediante una instrucción JMP indirecta que apunta a la primera palabra de la subrutina.
Por ejemplo, aquí está "Hello, World!" reescrito para usar una subrutina. Cuando la instrucción JMS salta a la subrutina, modifica el 0 codificado en la ubicación OUT1:
*10 / Establezca el origen del ensamblaje actual en la dirección 10, STPTR, STRNG-1 / Un registro de autoincremento (uno de los ocho ubicados entre 10 y 17) *200 / Establecer origen del ensamblaje (dirección de carga) BUCLE, TAD I STPTR / Preincrementar la ubicación de memoria 10, obtener indirectamente para obtener el siguiente carácter de nuestro mensaje SNA / Omitir en CA distinto de cero HLT / De lo contrario, detenerse al final del mensaje. JMS OUT1 / Escribir un carácter BUCLE DE SALTO / Y vuelve al bucle para más OUT1, 0 / Será reemplazado por la PC actualizada del llamante TSF / Saltar si la impresora está lista JMP .-1 / Esperar bandera TLS / Enviar el carácter en el AC CLA CLL / Borrar AC y enlace para el siguiente pase JMP I SALIDA1 / Devolver a la persona que llamó FUERTE, "H / Un mensaje bien conocido "e / "l / NOTA: "l / "o / Las cadenas en PAL-8 y PAL-III eran de "seis bits" ", / Para usar ASCII, lo deletreamos, carácter por carácter." " / "con / "o / "r / "l / "d / "! / 015 / 012 / 0 / Marca el final de nuestra cadena terminada en nulo (¡ASCIZ aún no se había inventado!)
El hecho de que la instrucción JMS utilice la palabra justo antes del código de la subrutina para almacenar la dirección de retorno evita la reentrada y la recursión sin trabajo adicional por parte del programador. También dificulta el uso de la ROM con el PDP-8, ya que el almacenamiento de direcciones de retorno de lectura y escritura se mezcla con el almacenamiento de código de solo lectura en el espacio de direcciones. Los programas destinados a ser almacenados en ROM abordan este problema de varias maneras:
- Se copian a sí mismos en la memoria de lectura y escritura antes de su ejecución, o
- Se colocan en tarjetas ROM especiales que proporcionan unas pocas palabras de memoria de lectura/escritura, a las que se accede indirectamente mediante el uso de un decimotercer bit de bandera en cada palabra de la ROM.
- Evitan el uso de subrutinas o utilizan código como el siguiente, en lugar de la instrucción JMS, para colocar la dirección de retorno en la memoria de lectura y escritura:
JUMPL, DCA TEMP / Deposite el acumulador en algún lugar temporal. TAD JUMPL+3 / Cargar la dirección de retorno en el acumulador: codificado JMP SUBRO / Ir a la subrutina y hacer que gestione el salto hacia atrás (a JUMPL+3)
El uso de la instrucción JMS dificulta la depuración. Si un programador comete el error de que una subrutina se llame a sí misma, ya sea directamente o a través de una subrutina intermedia, la dirección de retorno de la llamada externa se sobrescribe con la dirección de retorno de la llamada subsiguiente, lo que genera un bucle infinito. Si un módulo se codifica con una dirección incorrecta u obsoleta para una subrutina, no solo fallará la ejecución de toda la secuencia de código de la subrutina, sino que podría modificar una palabra del código de la subrutina, depositando una dirección de retorno que el procesador podría interpretar como una instrucción durante una llamada correcta posterior a la subrutina. Ambos tipos de error pueden manifestarse durante la ejecución de código escrito correctamente.
Pila de software
Aunque el PDP-8 no tiene una pila de hardware , las pilas se pueden implementar en software. [ 40 ] Aquí hay ejemplos de subrutinas PUSH y POP, simplificadas para omitir problemas como la comprobación de desbordamiento y subdesbordamiento de pila:
*100 /hacer que las rutinas sean accesibles para el siguiente ejemplo EMPUJAR, 0 DATOS DE DCA CLA CMA / -1 TAD SP DCA SP DATOS TAD DCA I SP JMP EMPUJAR /Regresar POP, 0 LLC TAD I SP ISZ SP JMP I POP DATOS, 0 SP, 0
Y aquí está "Hola Mundo" con esta "pila" implementada y la subrutina "OUT":
*200 PRINCIPAL, CLA CLL /Establecer el puntero de mensajes TAD (MESSG /Al principio del mensaje (literal) DCA SP BUCLE, JMS POP SNA / Detener la ejecución si es cero HLT JMS SALIDA /De lo contrario, imprime un carácter BUCLE DE SALTO MENSAJE, "H "mi "l "l "o ", " "w "o "r "l "d "¡! 015 012 0 SALIDA, 0 / Será reemplazado por la PC actualizada del llamante TSF / Saltar si la impresora está lista JMP .-1 / Esperar bandera TLS / Enviar el carácter en el AC CLA CLL / Borrar AC y enlace para el siguiente pase SALIDA / Devolver a la persona que llamó
Lista enlazada
Otra posible subrutina para el PDP-8 es una lista enlazada.
GETN, 0 / Obtiene el número al que apunta el puntero y lo mueve. CLA CLL /Borrar acumulador TAD I PTR /Obtiene el número al que apunta DCA TEMP /Guardar valor actual Puntero ISZ /Incrementar puntero TAD I PTR /Obtener la siguiente dirección DCA PTR /Introducir puntero JMP I GETN /retorno PTR, 0 TEMP, 0
Interrumpe
El bus de E/S del PDP-8 dispone de una única línea de interrupción . El procesador gestiona cualquier interrupción deshabilitando las interrupciones posteriores y ejecutando una instrucción JMSen la dirección 0000. Dado que es difícil escribir subrutinas reentrantes, resulta complicado anidar interrupciones, algo que generalmente no se hace; cada interrupción se ejecuta por completo y vuelve a habilitar las interrupciones justo antes de ejecutar la JMP I 0instrucción que la origina.
Debido a que solo hay una línea de interrupción en el bus de E/S, la ocurrencia de una interrupción no informa al procesador sobre su origen. En cambio, la rutina de servicio de interrupción debe sondear secuencialmente cada dispositivo de E/S activo para determinar si es el origen. El código que realiza esta tarea se denomina cadena de salto, ya que consiste en una serie de instrucciones de E/S del PDP-8 de "prueba y omisión si el indicador está activado". (No era raro que una cadena de salto llegara a su fin sin encontrar ningún dispositivo que necesitara servicio). La prioridad relativa de interrupción de los dispositivos de E/S viene determinada por su posición en la cadena de salto: si varios dispositivos generan una interrupción, el dispositivo probado anteriormente en la cadena de salto se atiende primero.
Libros
Un libro de texto de ingeniería popular en la década de 1980, *El arte del diseño digital*, de David Winkel y Franklin Prosser, contiene un ejemplo práctico que abarca varios capítulos, en el que los autores demuestran el proceso de diseño de una computadora compatible con la PDP-8/I. Se explica la función de cada componente. Si bien no se trata de un diseño de producción, ya que utiliza componentes SSI y MSI más modernos y memoria de estado sólido en lugar de memoria de núcleo magnético, el ejercicio proporciona una descripción detallada del funcionamiento de la computadora.
clones sin licencia
La URSS fabricó los miniordenadores Saratov-1 y Saratov-2, que clonaban los PDP-8 y PDP-8/E , respectivamente.
Existió un miniordenador llamado IZOT-0310, fabricado en Bulgaria en los años 70 y 80, que clonaba el PDP-8L.
En Cuba, el Instituto Central de Investigación Digital ( ICID ), ahora COMBIOMED , produjo en los años 70 las minicomputadoras CID-201 , CID 201-A y CID 201-B , clones parciales (arquitectura e instrucciones) de PDP-8/S y PDP-8/L.
Referencias
- ↑ Smith, William D. (5 de abril de 1970). "Las computadoras maxi se enfrentan a un mini conflicto: una mini tendencia llega a las computadoras" . The New York Times .
- ↑ "Los inicios de la informática en los NIH - Oficina de Historia de los NIH y Museo Stetten" . history.nih.gov . Archivado del original el 9 de mayo de 2020. Consultado el 17 de julio de 2024 .
- 1 2 "Resumen de modelos y opciones del PDP-8" . Sección: ¿Qué es un PDP-5?
- 1 2 Douglas W. Jones . "The Digital Equipment Corporation PDP-8 -- Preguntas frecuentes" .
- ↑ 1634–1699: McCusker, JJ (1997). ¿Cuánto es eso en dinero real? Un índice de precios histórico para usar como deflactor de valores monetarios en la economía de los Estados Unidos: Addenda et Corrigenda (PDF) . American Antiquarian Society .1700–1799: McCusker, JJ (1992). ¿Cuánto es eso en dinero real? Un índice de precios histórico para usar como deflactor de los valores monetarios en la economía de los Estados Unidos (PDF) . American Antiquarian Society .1800–presente: Banco de la Reserva Federal de Minneapolis. "Índice de precios al consumidor (estimación) 1800–" . Consultado el 29 de febrero de 2024 .
- 1 2 Schein, Edgar H. (2004). DEC ha muerto, ¡viva DEC!: el legado perdurable de Digital Equipment Corporation . San Francisco, California: Berrett-Koehler Publishers. pág. 271. ISBN 1576753050.
- ↑ Douglas W. Jones. "The Digital Equipment Corporation PDP-8" .
- ↑ "PDP-8 1965" . History Wired . Institución Smithsonian . 16 de marzo de 2012. Archivado del original el 17 de febrero de 2015. Consultado el 17 de febrero de 2015 .
- 1 2 "PDP-8/S #1" . Museo de Computación de Rhode Island . 18 de agosto de 2020. Archivado del original el 26 de febrero de 2021. Recuperado el 7 de mayo de 2021 .
- ↑ Glenn Rifkin; George Harrar (1988). El emprendedor por excelencia: la historia de Ken Olsen y Digital Equipment Corporation . Contemporary Books. ISBN 978-1-55958-022-9.
- ↑ Manual de computadoras pequeñas, NUEVA edición PDP 8/I (Prólogo) . Digital Equipment Corporation . 1968.
- ↑ "Evaluación comparativa de lenguajes" . PC Magazine . Vol. 4, n.º 22. 29 de octubre de 1985. pág. 112.
El mejor uso del recurso informático más valioso de la actualidad: el tiempo de un programador...
- ↑ una frase utilizada en la Sección 1.1 de "Introducción a la Unidad Central de Procesamiento (CPU)" de un documento de 2007 sobre un microordenador de Texas Instruments. "TMS320C28x CPU and Instruction Set (Rev. F)" (PDF) .
- ↑ Torben Ægidius Mogensen (20 de agosto de 2010). Fundamentos del diseño de compiladores (PDF) . pág. 1.
Otra ventaja de usar un lenguaje de alto nivel es que el mismo programa se puede compilar a muchos lenguajes de máquina diferentes y, por lo tanto, se puede ejecutar en muchas máquinas diferentes.
- ↑ C. Gordon Bell ; JC Mudge; JE McNamara (1978). Ingeniería informática: Una perspectiva DEC del diseño de sistemas de hardware (PDF) . Digital Press . págs. 175 , 178-179 . ISBN 0-932376-00-2.
- ↑ Manual de referencia para programadores del sistema de punto flotante PDP-8 (PDF) . Digital Equipment Corporation. Septiembre de 1969. DEC-08-YQYB-D.
- ↑ "Sistema de composición tipográfica PDP-8" (PDF) . Digital Equipment Corporation. 1965.
- ↑ C. Gordon Bell, et al.; Estructuras, principios y organización de computadoras, 1982, capítulo PDP-8
- ↑ "Capítulo 8: Elemento aritmético extendido tipo 182" . Manual del usuario de PDP-8 . Digital Equipment Corporation. 1966. pág. 41.
- ↑ "Capítulo 4: Descripción y funcionamiento del sistema". Introducción a la programación (PDF) . Digital Equipment Corporation. 1969. págs. 4–22.
- ↑ "IBM 1130" .
- ↑ "Anuncio de Pensalt Chemicals" . Electrónica . 6 de abril de 1964. pág. 23. El anuncio se centra en una fotografía de un técnico inspeccionando un backplane B5000.
- ↑ "Medio backplane de la CPU" .
- ↑ Manual de mantenimiento del PDP-8/S (PDF) . Digital Equipment Corporation. 1967.
- ↑ "PDP-8/S" . Tecnología PDP-8 antes del milenio . Archivado del original el 23 de octubre de 2000. Consultado el 13 de mayo de 2021 .
- ↑ Remo J. Vogelsang (2013). "De primera mano: PDP-8/E OMNIBUS Ride" .
- ↑ "Preguntas frecuentes sobre el DEC PDP-8 de Doug Jones" . homepage.cs.uiowa.edu . Consultado el 24 de marzo de 2024 .
- ↑ " Resumen de modelos y opciones del PDP-8 (publicado cada dos meses)" . www.faqs.org
- ↑ "PDP-8 - Un ordenador digital de alta velocidad" (PDF) . 1965. pág. 18.
- ↑ Manual de mantenimiento del PDP-8/S (PDF) (5.ª ed.). Octubre de 1970. págs. 1-2.
- ↑ "Tabla 11. Datos de instalación". Manual de computadoras pequeñas (PDF) (ed. 1967-68 ). 1968. pág. 290 (300).
- ↑ "Tabla 13-1 Datos de instalación". Manual de computadoras pequeñas (PDF) ( ed. 1970). 1970. pág. 277 (291).
- 1 2 3 "Especificaciones de la familia PDP-8". Folleto de ventas PDP-8/e/f/m (PDF) . pág. 17.
- ↑ "Museo de Computadoras System Source: PDP-8M" .
- ↑ "La explosión 1975-1976 » AntiqueTech" . AntiqueTech.com. 21 de abril de 2009. Archivado del original el 3 de julio de 2017. Consultado el 19 de junio de 2017 .
- 1 2 Bell, Gordon (1980), Árbol genealógico de las computadoras de Digital , (Póster), Digital Equipment Corporation , consultado el 19 de junio de 2017
- ↑ "PDP-8/I en una FPGA" . Archivado del original el 30 de septiembre de 2023.
- ↑ Manual de programación FOCAL para PDP-8, PDP-8/S, PDP-8/I, LAB-8, LINC-8 (PDF) . Digital Equipment Corporation. 1968. DEC-08-AJAB-D.
- ↑ Manual de computadoras pequeñas 1967–1968 (PDF) . Digital Equipment Corporation. 1968. págs. 130–136 .
- ↑ Mark Smotherman (2002). "Subrutinas DEC PDP-8" .
- C. Gordon Bell ; Allen Newell (1971). "Capítulo 5 El DEC PDP-8 ". Estructuras de computadoras: lecturas y ejemplos . Nueva York: McGraw-Hill Book Company. págs. 120–136 . Con suficiente detalle como para que un ingeniero eléctrico pudiera construir uno (si lograra encontrar las piezas).
Enlaces externos
- Documentación del pdp-8: El Manual de Computadoras Pequeñas (Edición de 1966), Secciones 1 y 2 y otros están disponibles en la Universidad Simon Fraser.
- "Preguntas frecuentes sobre el PDP-8" . Archivo de preguntas frecuentes de Internet . 27 de marzo de 2014. Consultado el 16 de diciembre de 2018 .
- Digital Equipment Corporation PDP-8, 1965 – Colección de Historia de la Computación del Smithsonian
- Explicación de Steve Gibson, de Digital Equipment Corporation, sobre cómo funciona la PDP-8 y cómo programarla.
- Minicomputadoras DEC
- Computadoras transistorizadas
- computadoras de 12 bits
- Introducciones relacionadas con la informática en 1965
- Computadoras seriales
- Computadoras diseñadas en los Estados Unidos