Tutorial de TSS-8 en la DEC PDP-8 Este fichero documenta el uso de http://tss8.sdf.org El TSS/8 es un sistema operativo de tiempo compartido para la DEC PDP-9 diseñado originalmente por Adrian van de Goor, y estudiante graduado de CMU y luego mejorado y comercializado como sistema completo por DEC a partir de 1968. Originalmente requería una PDP-8, 8I u 8E con una unidad de control RP08 o DF32 asociada a al menos una unidad RS08 o DS32 para tareas de intercambio y para almacenamiento. Cada usuario tendrá acceso a una PDP-8 virtual con 4KW de memoria, y un directorio en disco para almacenamiento de archivos. Conectarse: Luego de conectarse, se encontrará en el prompt de login “.”. Ingrese LOGIN Sustituya su PPN y contraseña. Nada de lo ingresado hará eco en la terminal. Si lo hace, significa que se ha conectado a una sesión que no ha sido abandonada adecuadamente. En tal caso tipee "LOGOUT" para abandonar la sesión remota e intente conectarse nuevamente. Desconectarse: El comando LOGOUT o KJOB le permitirá abandonar la sesión del sistema. Puede usarse K como un atajo a este comando. Es importante abandonar sesión antes de desconectar la terminal, ya que el sistema no lo quitará automáticamente de los usuarios conectados. Si por alguna razón parece estar detenido, intente ^BS o CTRL-B S. Se ofrecen más adelante mayores detalles sobre lo que hace ^B en la sección Detener un programa en Ejecución. Ejecutar programas Para ejecutar un programa de la librería de sistema o desde su directorio puede lograrse mediante el comando R: R CAT Ejecutará el programa CATALOG, presentando los contenidos de su directorio. Los programas actualmente disponibles en la librería del sistema son: DISK FILES FOR USER 0, 2 ON 19-DEC-79 NAME SIZE PROT DATE PALD .SAV 16 12 31-MAR-76 - Ensamblador de PAL LOADER.SAV 4 12 31-MAR-76 - Cargador de binarios FORT .SAV 6 12 31-MAR-76 - FORTRAN II FOSL .SAV 6 12 31-MAR-76 - Sistema FORTRAN PIP .SAV 10 12 31-MAR-76 - Programa de Intercambio de periféricos SYSTAT.SAV 5 12 31-MAR-76 - Presenta status de sistema EDIT .SAV 8 12 31-MAR-76 - Editor de texto orientado a lineas. FOCAL .SAV 16 12 31-MAR-76 - Intérprete de lenguaje FOCAL BASIC .SAV 38 12 31-MAR-76 - Intérprete de lenguaje BASIC CAT .SAV 6 12 31-MAR-76 - Catálogo de disco PUTR .SAV 21 12 3-FEB-84 - Utilidad de Transferencia de ficheros ODTHI .SAV 2 12 29-FEB-84 - Depurador ODT FLAP .SAV 1 12 7-APR-84 - Ensamblador Absolute PTLOAD.SAV 1 12 29-APR-84 - Cargador de cinta de papel perforado CHESS .SAV 17 12 11-NOV-74 - Programa de ajedrez CHEKMO II ALGOL .SAV 32 12 21-NOV-79 - TSS/8 ALGOL (DECUS 8-330) ACTUNG.SAV 5 12 21-NOV-79 - Presenta un lindo mensaje Detener un programa en ejecución Al presionar CTRL-B le indicará al sistema que desea enviar un comando al Intérprete TSS/8 Monitor. Una vez que oprima Ctrl+b, la siguiente entrada que envíe al Monitor será ejecutada. Para detener cualquier programa mientras está corriendo, tipee Ctrl+b seguido de S y Retorno de Carro (tecla Intro). S es el comando STOP ("detener") del Monitor, y introducirlo provocará que el programa en ejecución actualmente se detenga. Podrá reiniciar la ejecución del programa desde el Monitor con el comando START. Chatear con otros Usuarios El programa TALK puede usarse para enviar mensajes a otras terminales. Use primero SYSTAT para ver que otros usuarios están conectados al sistema, por ejemplo: .SYSTAT STATUS OF TSS/8.24 DEC PDP-8 #1 AT 12:47:30 ON 19 DEC 79 UPTIME 19:06:31 JOB WHO WHERE WHAT STATUS RUNTIME 1 10, 0 K00 BASIC KEY ^Q 00:00:04 2 10, 0 K01 SYSTAT ^BS ^Q 00:00:00 4 10, 0 K04 HI ^BS ^Q 00:00:00 5 0, 2 K06 CAT ^BS ^Q 00:00:00 6 0, 1 K07 SYSTAT RUN ^Q 00:00:00 AVAILABLE CORE 4K FREE CORE=252 BUSY DEVICES NONE 3269 FREE DISK SEGMENTS La columna “WHERE” informa a qué consola (de la K00 a la K07) está conectado el usuario. Para enviar un mensaje a una consola específica, tipee: TALK Por ejemplo, TALK 2 VIVA PERON CARAJO! ...enviará un mensaje amistoso a la consola K02. Documentación La Guía de Usuario de Edusystem-50 ofrece una documentación bastante precisa para TSS/8 versión 24 que se usa en el Living Computer Museum. Cubre las actividades relacionadas con el usuario en el sistema operativo y también incluye el uso del ensamblador PAL-D, BASIC, FOCAL y numerosas utilidades. La información detallada de BASIC para la PDP8 está disponible en Manual de Programación de BASIC-8. La documentación de ALGOL puede encontrarse en el Manual de ALGOL de DECUS en tanto que esta versión detalla las diferencias específicas de dicho lenguaje en TSS/8. LISP está documentado en http://svn.so-much-stuff.com/svn/trunk/pdp8/src/decus/8-102a/decus-8-102A.pdf Conectarse Conéctese usando el siguiente comando: LOGIN NOMBREDEUSUARIO CONTRSEÑA El comando login no hace eco en la terminal. Abarcaremos más sobre la administración de usuarios más adelante en este artículo, incluyendo cómo crear y modificar usuarios. Para loguearse como el usuario 1 (el usuario del sistema) ingrese: TSS/8.24 JOB 01 [01,10] K00 12:12:36 SYSTEM IS DOWN, INC. El ls primitivo, CAT ("catálogo") El Monitor de TSS/8 dispone de una biblioteca de ficheros en disco para cada usuario. El programa CAT de la Liberaría de Sistema se usa para obtener un listado de catálogo que detalla los contenidos de esta biblioteca. CAT presentará el tamaño de cada Fichero en unidades de segmentos de disco. El tamaño de los segmentos de disco pueden variar entre las diferentes instalaciones. Generalmente, es de 256 Words decimanles de almacenamiento de disco. También se mostrará el código de protección para el archivo. (Ver la sección del comando PROTECT del Monito (Capítulo 9 del Manual) para una explicación precisa de los códigos de protección). Si el programa fue creado por cualquiera de los Programas de la Biblioteca de Sistema, tendrá un código de protección de 12, lo que singicica que otros usuarios pueden leer el Fichero, pero sólo su poseedor puede modificarlo. Cuando el ADMINISTRADOR DE SISTEMA (usuario 1) utiliza el programa CAT, este presentará la infomación de conteo. Este reporte consiste en el tiempo acumulado (en horas, minutos y segundos) de uso del procesador central, y el tiempo de conexión, así como la cantidad de segmentos de disco en uso actualmente. Para ver los contenidos de la biblioteca de usuarios, corra el programa .R CAT:L. Esto le solicitará un número de cuenta, tras lo cual presentará el directorio de usuarios. De esta manera puede rastrear qué usuarios están haciendo uso anormal de espacio de disco. Si inicia sesión como el usuario 2, podrá ejecutar el siguiente comando para ver los contenidos del disco: .R CAT Salida: DISK FILES FOR USER 0, 2 ON 1-JAN-75 NAME SIZE PROT DATE PALD .SAV 16 12 31-MAR-76 LOADER.SAV 4 12 31-MAR-76 FORT .SAV 6 12 31-MAR-76 FOSL .SAV 6 12 31-MAR-76 PIP .SAV 10 12 31-MAR-76 TSTLPT.SAV 2 12 31-MAR-76 LOGOUT.SAV 6 12 31-MAR-76 SYSTAT.SAV 5 12 31-MAR-76 EDIT .SAV 8 12 31-MAR-76 FOCAL .SAV 16 12 31-MAR-76 BASIC .SAV 38 12 31-MAR-76 COPY .SAV 10 12 31-MAR-76 CAT .SAV 6 12 31-MAR-76 GRIPE .SAV 5 12 31-MAR-76 LOGID .SAV 4 12 31-MAR-76 PUTR .SAV 21 12 3-FEB-84 ODTHI .SAV 2 12 29-FEB-84 FLAP .SAV 1 12 7-APR-84 PTLOAD.SAV 1 12 29-APR-84 BLANK .SAV 1 12 9-JUN-84 DTTEST.SAV 2 12 26-JUN-84 INIT .SAV 17 12 29-JUL-84 BAS000.TMP 1 17 1-JAN-84 BAS100.TMP 1 17 1-JAN-84 INTER .BAS 1 12 1-JAN-75 REMY .ASC 1 12 1-JAN-75 TOTAL DISK SEGMENTS: 189 QUOTA: 1575 System Status Con el comando SYSTAT obtendrá una impresión completa de lo que está haciendo el sistema, quién está conectado y mucha información adicional: SYSTAT STATUS OF TSS/8.24 DEC PDP-8 #1 AT 12:19:14 ON 1 JAN 75 UPTIME 00:07:14 JOB WHO WHERE WHAT STATUS RUNTIME 1 0, 2 K00 FOCAL ^BS ^Q 00:00:01 2 1,50 K01 SYSTAT RUN ^Q 00:00:00 AVAILABLE CORE 16K FREE CORE=312 BUSY DEVICES NONE 103 FREE DISK SEGMENTS Hay dos usuarios conectados; usuario 2 en la terminal teletipo 0, y el usuario 50 en la teleltipo 1. El usuario 2 corría FOCAL pero ahora se encuentra en el propto (STATUS ^BS significa modo Monitor, ese es el prompt). El Usuario 50 está ejecutando el comando SYSTAT. El manual contiene mayor información sobre SYSTAT, listada aquí para mayor conveniencia. Con frecuencia es útil conocer el status del sistema como un todo; cuántos usuarios hay en línea, donde están, qué están haciendo, etcétera. El programa SYSTAR ofrece esta funcionalidad. SYSTAT responde imprimiendo en la primera línea la versión del intérprete de comandos TSS/8 Moniitor que esté corriendo, la fecha y la hora. SYSTAT reporta el tiempo de encendido que es la duración en horas, minutos y segundos desde que el sistema fue puesto en línea. SYSTAT lista todos los usuarios en línea. Cada usuario será identificado por su número de cuenta. El número de trabajo asignado a él y el número de consola que está empleando también se indican, así como el Programa de Sistema particular que esté corriendo. El estado de ejecución actual de cada usuario también se indica, tanto si está actualmente ejecutando un programa (RUN), tipeando en su terminal (KEY) o desconectado (TTY), si está realizado Entrada/Salida a otro dispositivo de sistema (IO o RIP), o si no está ejecutando (iB). Se presenta al cantidad de tiempo de computadora utilizado por cada usuario desde que se ha conectado. Si se conectan en línea más cantidad de usuario que los que podrían debido a los Campos de Núcleo disponibles, se reportará el hecho de que el sistema está utilizando memoria de intercambio. Se presentará también la cantidad de bloques líbres de memoria de núcleo usados internamente por el Monitor TSS/8 para el almacenamiento intermedio operativo de las teletipos y varios otros propósitos varios. Luego SYSTAT reportará cualquier dispositivo que no se encuentre disponible. Por ejemplo, los dispositivos que han sido asignados a un usuario individual. El Trabajo al cual están asociados y su status (por ejemplo, AS si han sido asignados pero no están activos, AS+INIT si han sido asignados y están activos) Finalmente, reporta la cantidad de segmentos de disco disponible para almacenamiento. Para ver la hora en la que se ha conectado ingrese: .TIME 00:00:20 Para ver la hora del sistema: .TIME 0 12:20:44 FOCAL69 Puede iniciar el entorno de programación FOCAL69 con el comando R FOCAL, cuya salida se presenta a continuación: .R FOCAL SHALL I RETAIN LOG, EXP, ATN ?:NO SHALL I RETAIN SINE, COSINE ?:NO PROCEED. *_TYPE "HELLO DUDE" HELLO DUDE* Para salir de FOCAL, presione CTRL+B seguido por la S. Su prompt volverá nuevamente a ser un punto (.): *^BS . Chatear Puede usar el comando TALK para chatear con otros usuarios conectados. Active la terminal TELNET en el puerto 4000, o bién conéctese como useres 2, y 1,50 (contraseña JERK). En la terminal 1,50, ingrese el siguiente comando para chatear con el administrador del sistema (presente en la terminal teletipo: 0). .TALK 0 AYUDA POR FAVOR!!! En la sesión de telnet 2 podrá observar esto: ** K01 [01,50] ** AYUDA POR FAVOR!!! Podrá ahora responder: .TALK 1 VIVA PERON! Telnet 1,50 recibirá esta cadena de texto: ** K00 [00,02] ** VIVA PERON! BASIC-8 TSS/8 cuenta con el ambiente de programación BASIC-8. Para iniciarlo use el comando R BASIC. Se le preguntará si desea crear un nuevo fichero ("NEW"( o cargar uno antiguo ("OLD"). He aquí un programa de ejemplo, extraído del manual de TSS/8 pensado para calcular el interés de un préstamo. Primero ingrese el número de línea seguido por la instrucción. Luego almacene el programa en disco en un fichero llamado INTER.BAS, gracias al comando SAVE. Finalmente ejecute el programa con el comando RUN. .R BASIC NEW OR OLD--NEW NEW PROGRAM NAME--INTER READY 10 REM - PROGRAMA PARA CALCULAR INTERES EN UN PRESTAMO 20 PRINT "INTERES EN PORCENTAJE"; 30 INPUT J 40 LET J=J/100 50 PRINT "CANTIDAD EN PRESTAMO"; 60 INPUT A 70 PRINT "CANTIDAD DE ANYOS"; 80 INPUT N 90 print "CANTIDAD DE PAGOS POR ANYO"; 100 INPUT M 110 LET N=N*M 120 LET I=J/M 130 LET B=1+I 140 LET R = A*I/(1-1/B^N) 150 PRINT "PAGO MENSUAL ="R 160 PRINT "TOTAL DE INTERES ="R*N-A 170 END SAVE INTER RUN INTERES EN PORCENTAJE? 8 CANTIDAD EN PRESTAMO? 25000 CANTIDAD DE ANYOS? 20 CANTIDAD DE PAGOS POR ANYO? 12 PAGO MENSUAL = 209.1103 TOTAL DE INTERES = 25186.46 READY Command Action BYE Vuelve al Monitor TSS/8 CAT Cataloga los ficheros del disco DELETE n Borra la línea número n DELETE n1,n2 Borra los números de línea n1 hasta n2 LIST Lista el programa actual LIST n Lista una línea específica NEW BASIC Preguntará por un nuevo nombre de programa. OLD BASIC preguntará por un el nombre de un programa ya almacenado en el disco y lo cargará en memoria. RUN Compila y corre el programa actualmente localizado en memoria. SAVE Almacena los contenidos de memoria a disco empleando el nombre actual SAVE [nombre] Almacena los contenidos en memoria al disco usando el nombre dado. UNSAVE Elimina el programa con el nombre actual del disco (requerido antes de guardar una versión nueva con el mismo nombre). Ctrl+B,S Detiene un programa en ejecución (presione Ctrl+b y luego la tecla s). EDIT, el editor de líneas Como usuario de sistema, dispondrá de una poderosa herramienta para crear y modificar ficheros de código fuente en línea: el TSS/8 Editor. EDIT le permitirá insertar, cambiar y agregar líneas de texto; y luego puede obtener un listado limpio del fichero actualizado. EDIT también usa comandos para buscar cadenas de texto determinadas dentro del fichero. Página 56, 6-1, Guía de Usuario de DEC TSS/8 EDIT considera que un fichero está dividido en unidades lógicas, denominadas páginas. Una página generalmente almacena unas 50/60 líneas de longitud, y por tanto corresponde a una impresión física del listado de un programa. Por ejemplo, un programa escrito en FORTRAN-D suele tener 1/3 páginas de longitud, en tanto que un programa escrito en ensamblador PAL-D podría contener varias páginas de longitud. EDIT opera en una página por vez, lo que permite al usuario relacionar su edición a las páginas físicas del listado. EDIT lee una página de texto del fichero de entrada y la almacena en la memoria intermedia, donde estará disponible para su edición. Cuando la página ha sido completamente actualizada, será almacenada en el fichero de salida en disco, y se cargará la siguiente página de entrada en memoria intermedia. El programa EDIT prevee varios comandos potentes para "paginar" a través de un fichero de código fuente de manera rápida y convenientemente. El final de una página de texto está denotado por un caracter ASCII de Alimentación de Formulario (CTRL+L). Estos caracteres de Alimentación de Formulario (Form feed) resultan ignorados completamente por todos los procesadores de lenguajes de TSS/8. He aquí la tabla resumida con los coamndos de EDIT del manual: R Lee texto desde el fichero de salida y lo agrega al buffer hasta encontrar un caracter de Alimientación de Formulario. A Agrega el texto proveniente del teclado a cualquiera que se encuentre en el buffer hasta encontrar un caracter de Alimentación de Formulario. L Presenta ("lista") el buffer entero. nL Presenta la Linea n. m,nL Presenta las líneas m hasta n inclusive P Da salida a los contenidos del buffer al fichero de salida, seguido por un caracter de Alimentación de Formulario. nP Da salida a la Linea n, seguido por un caracter Ctrl+l. n,mP Da salida a los contenidos de la línea n hasta la m inclusive, seguida por un caracter de Alimentación de Formulario. T Cierra el fichero de salida y retorna al intérprete TSS/8 Monitor. N Da salida al búffer entero y ofrece una Alimentación de Formpulario, borra el búffer y lee la siguiente página. nN Hace lo anterior n veces. nD Borra la línea n del texto. n,mD Borra la líneas m hasta n inclusive. I Inserta texto a través del teclado en la línea 1, hasta que se ingrese Ctrl+l. nI Inserta antes que la línea n hasta que se presione Ctrl+l. nC Borra la línea n, la reemplaza con cualquier número de líneas del teclado hasta que presione Ctrl+l. m,nC Borra líneas de m hasta n, y las reemplaza con lo ingresado con el teclado hasta que presione Ctrl+l. m,n$kM Mueve las líneas de m a n inclusive hasta antes de la línea k. G Obtiene y lista la siguiente línea que comience con una etiqueta. S Busca en el búffer entero por el caracter especificado (pero que no hace eco) luego del retorno de carro. nS Permite buscar en la línea n, como se indicó arriba, y permite modificación. E Presenta el contenido del búffer. Lee cualquier página restante en el fichero de entrada, y le da salida al fichero de salida. Cuando todo el contenido del fichero de entrada se ha movido al de salida, lo cierra y vuelve al Monitor TSS/8. E es equivalente a una cantidad suficiente de Ns seguido por el comando T. Ctrl+C Detiene el listado y vuelve al Modo de Comandos. Usando el comando I puede insertar texto. Con Ctrl+L puede abandonar el modo Inserción. Guarde su fichero con E.