OS/8
OS/8 es el sistema operativo principal utilizado en la minicomputadora PDP-8 de Digital Equipment Corporation.
Los sistemas operativos PDP-8 que preceden a OS/8 incluyen:
- R-L Monitor, también denominado MS/8.
- P?S/8, requiriendo sólo 4K de memoria.
- PDP-8 4K Sistema de monitor de disco
- PS/8 ("sistema de programación/8"), que requiere 8K. Esto se convirtió en OS/8 en 1971.
Otros sistemas operativos DEC/relacionados son OS/78, OS/278 y OS/12. Este último es una versión prácticamente idéntica de OS/8 y se ejecuta en la computadora PDP-12 de Digital.
Imágenes OS/8 publicadas en formato digital para fines no comerciales que se pueden emular a través de SIMH.
Resumen
OS/8 proporciona un entorno operativo simple que es acorde en complejidad y escala con las computadoras PDP-8 en las que se ejecutó. La E/S se admite a través de una serie de controladores suministrados que utilizan técnicas de sondeo (no controladas por interrupciones). Los controladores de dispositivos deben escribirse de manera inteligente, ya que solo pueden ocupar una o dos páginas de memoria de 128 palabras de 12 bits y deben poder ejecutarse en cualquier página en el campo 0. Esto a menudo requiere una inteligencia considerable, como el uso de la instrucción OPR (7XXX) para pequeñas constantes negativas.
La "huella" residente en la memoria de OS/8 tiene solo 256 palabras; 128 palabras en la parte superior del Campo 0 y 128 palabras en la parte superior del Campo 1. El resto del sistema operativo (USR, "Rutinas de servicio de usuario") entra y sale de la memoria de forma transparente (con respecto a el programa del usuario) según sea necesario.
El lenguaje de comandos conciso
Las primeras versiones de OS/8 tienen un intérprete de línea de comandos muy rudimentario con muy pocos comandos básicos: GET, SAVE, EJECUTAR, ASIGNAR, DEASSIGN y ODT. Con la versión 3, agregan una superposición más sofisticada llamada CCL (Concise Command Language) que implementa muchos más comandos. La CCL de OS/8 sigue directamente el modelo de la CCL que se encuentra en los sistemas PDP-10 de Digital que ejecutan TOPS-10. De hecho, gran parte del sistema de software OS/8 está diseñado deliberadamente para imitar, en la medida de lo posible, el entorno operativo TOPS-10. (El lenguaje de comandos CCL se usa en computadoras PDP-11 que ejecutan RT-11, RSX-11 y RSTS/E, lo que proporciona un entorno operativo de usuario similar en las tres arquitecturas: PDP-8s, PDP-10s y PDP-11s.)
El sistema operativo básico y CCL implementan muchos comandos bastante sofisticados, muchos de los cuales aún no existen en los lenguajes de comandos modernos, ni siquiera en los sistemas operativos MS-DOS, Windows o similares a Unix.
Por ejemplo, el comando COMPILE encuentra automáticamente el compilador correcto para un archivo fuente determinado e inicia el ciclo de compilación/ensamblaje/enlace.
Los comandos ASSIGN y DEASSIGN permiten el uso de nombres de dispositivos lógicos en un programa en lugar de nombres físicos (como se requiere en MS-DOS). Por ejemplo, un programa puede escribir en el dispositivo FLOP:AAA.TXT, y con una inicial "ASSIGN FLOP: RXA2:" luego, el archivo se crea en el dispositivo físico RXA2 (la segunda unidad de disquete). VAX/VMS y el sistema operativo AmigaOS de Amiga (y otros sistemas operativos basados en TRIPOS) hacen un uso considerable de esta función.
El comando SET es capaz de configurar muchas opciones del sistema parcheando ubicaciones en el código binario del sistema. Uno de ellos, un comando bajo OS-78, es SET SYS OS8, que vuelve a habilitar los comandos MONITOR que no forman parte de OS-78.
El comando BUILD puede reconfigurar el sistema operativo sobre la marcha, incluso agregando controladores de dispositivos, a menudo sin tener que reiniciar el sistema operativo.
El sistema operativo puede iniciarse desde un disco duro y presentar el símbolo del sistema en menos de medio segundo.
El sistema de archivos OS/8
OS/8 admite un sistema de archivos simple y plano en una variedad de dispositivos de almacenamiento masivo, incluidos:
- TU56 DECtapes
- DF32 discos de cabeza fija de 32KW
- RF08 256KW discos de cabeza fija
- RK01/02/03/04/05 unidades de disco cartucho
- unidades de disco de cartucho RL01/02
- Unidades de disquete RX01/02
Los nombres de archivo en el PDP-8 toman la forma de FFFFFF.XX donde "F" representa un carácter alfanumérico en mayúsculas del nombre del archivo y "X" representa un carácter alfanumérico en mayúsculas de la extensión (tipo de archivo).
- .PA: idioma de la Asamblea
- .SV: imagenes centrales salvadas (programas ejecutables)
- . FT: Archivo fuente de Fortran
- . DA: Archivos de datos
El contenido de cualquier archivo dado se almacena de forma contigua en una sola "extensión". PIP incluye una opción para comprimir ("apretar") el sistema de archivos, de modo que todo el espacio no asignado se mueva a una sola extensión al final del disco. Esto puede ser invocado por el comando CCL SQuish, al igual que MUNG puede usarse para ejecutar una macro TECO.
Los volúmenes de OS/8 tienen un tamaño de almacenamiento máximo limitado (4096 bloques de 256 palabras de doce bits) y el disco de cabezal móvil RK05 (2,4 MB) supera este tamaño: "1,6 millones de palabras de almacenamiento". Debido a esto, los cartuchos RK05 se dividen en dos particiones. Por ejemplo, el primer RK05 en un sistema se conoce como RKA0: (SY:) y RKB0:. Esta división se refiere a "los cilindros exteriores" y "los cilindros interiores".
Archivos ASCII
Los archivos ASCII se almacenan como tres caracteres de 8 bits por par de palabras de 12 bits. Los dos primeros caracteres (marcados con los bits a0–a7 y b0–b7 a continuación) se almacenan completos en sus palabras, mientras que el tercer carácter (bits c0–c7) se almacena con la mitad de sus bits en la palabra 1 y la otra mitad en la palabra 2.
- WORD 1: c0 c1 c2 c3 Silencio a0 a1 a2 a3 a5 a7
- WORD 2: c4 c5 c6 c7 Silencio b0 b1 b2 b4 b5 b6 b7
Los archivos ASCII terminan con un CTRL/Z (ASCII 232).
Formato de fecha OS/8
OS/8 asigna las palabras de 12 bits del PDP-8 para almacenar fechas por:
- 4 bits para el mes
- 5 bits para la fecha en ella
- 3 bits para el año.
La insuficiencia de un campo de año de tres bits, capaz de almacenar solo ocho años, se reconoció cuando se desarrolló COS-310.
OS/8 CUSP (programas de utilidad)
Los CUSP (programas de sistema de uso común, es decir, utilidades) suministrados con OS/8 incluyen:
- BUILD (el programa para instalar un sistema OS/8 configurado en almacenamiento masivo)
- DIR (el programa de lista de directorios)
- EDIT (Un editor de línea)
- MACREL (Un ensamblador que, a diferencia de PAL, implementa macros. Escrito por Stanley Rabinowitz del Grupo de Sistemas Pequeños de la DEC. Stan tenía una imagen de arte ASCII de un pez en su oficina que decía "MACREL ES A FISH")
- FLAP (Un ensamblador absoluto derivado de RALF)
- FORTRAN-II.
- FOTP (File-Oriented Transfer Program, an alternative to PIP)
- PAL (El montante)
- PIP (Programa de Intercambio Periférico, utilizado para copiar archivos)
- PIP10 (una versión de PIP utilizada para copiar archivos desde PDP-10 DECtapes)
- RALF (Otro ensamblador de reubicación para el FPP)
- TECO (Text Editor y COrrector, un editor sofisticado). El comando MUNG dirige macros TECO.
- CCL, el intérprete de línea de comandos, suministrado en forma de fuente y extensible por el usuario.
Lenguajes de programación
BÁSICO
Un BASIC de usuario único y dos versiones de BASIC multiusuario están disponibles como opciones.
El BASIC de usuario único utiliza varias superposiciones para proporcionar la funcionalidad completa del lenguaje; cuando se arranca OS/8 desde una DECtape, se producía un retraso notable cada vez que se necesitaba BASIC para cambiar las superposiciones, ya que debían leerse desde la cinta.
Las versiones multiusuario de BASIC (EDU20 y EDU25) difieren solo en si admiten o no dispositivos reemplazables por bloques (DECtape o disco). Debido a limitaciones de costos, muchos PDP-8 tienen lectores de cinta de papel perforado como su único dispositivo de E/S de almacenamiento masivo. EDU20 se carga desde una cinta de papel y puede enviar una salida a una grabadora de cinta de papel si la máquina tiene una, mientras que EDU25 comprende la estructura de un sistema de archivos, puede cargar desde DECtape o disco y puede crear archivos en DECtape o disco. Ambos pueden ejecutar múltiples programas BASIC simultáneamente usando un programador de tareas primitivo que rota entre las terminales conectadas. La memoria siempre es escasa porque el PDP-8 usa memoria central, que era extremadamente costosa en comparación con la tecnología RAM. En 8K de palabras de 12 bits, EDU20 puede admitir hasta 4 terminales a la vez, aunque se recomienda más memoria. EDU25 requiere un banco de memoria adicional de 4K (para un mínimo de 12K) porque el código contiene un controlador de dispositivo de disco y un controlador de sistema de archivos. Mientras se ejecutan, EDU20 y EDU25 son programas autónomos que no usan ninguna llamada al sistema OS/8. Inmediatamente después de ser invocados desde el intérprete de comandos de OS/8, sobrescriben toda la parte residente de OS/8: las 256 palabras. Al iniciar, EDU25 guarda el contenido de la memoria en DECtape o disco y lo restaura al salir. Pero EDU20 no puede hacer esto ya que está dirigido a configuraciones de hardware sin ningún dispositivo reemplazable por bloque.
FORTRAN
Además de un compilador FORTRAN II disponible gratuitamente, también hay disponible un compilador FORTRAN IV bastante completo. Este compilador genera código para el procesador de punto flotante FPP-8 opcional, que es esencialmente una CPU separada, que solo comparte memoria con la CPU PDP-8. Con la opción FPP-8 instalada, el código de tiempo de ejecución FORTRAN lo detecta y usa el FPP-8 para ejecutar el código del programa principal, y la CPU PDP-8 se ejecuta como un procesador de E/S. Al carecer del FPP-8, el código de tiempo de ejecución llama a un intérprete FPP-8 que se ejecuta en la CPU PDP-8, por lo que el programa se ejecuta a velocidad reducida.
Este compilador de FORTRAN IV en la versión 1 tiene el error interesante de que los bucles DO cuentan incorrectamente: los bucles DO contarían 1,2,3,5,6,7,… (saltándose 4). Se lanzó un parche rápido para solucionar esto.