Los gráficos de forma de onda son un sistema simple de gráficos vectoriales introducido por Digital Equipment Corporation (DEC) en los terminales VT55 y VT105 a mediados de la década de 1970. Se utilizó para producir gráficos de salida de mainframes y miniordenadores . DEC usó el término "gráficos de forma de onda" para referirse específicamente al hardware, pero se usó de manera más general para describir el sistema completo.
El sistema fue diseñado para utilizar la menor cantidad posible de memoria de computadora . En cualquier ubicación X dada, podría dibujar dos puntos en ubicaciones Y dadas, lo que lo hace adecuado para producir dos formas de onda superpuestas , gráficos de líneas o histogramas . Se podían mezclar texto y gráficos, y había herramientas adicionales para dibujar ejes y marcadores.
El sistema de gráficos de forma de onda se usó solo durante un corto período de tiempo antes de ser reemplazado por el sistema ReGIS más sofisticado , introducido por primera vez en el VT125 en 1981. [1] ReGIS permitió la construcción de vectores arbitrarios y otras formas. Mientras que DEC normalmente proporcionaba una solución compatible con versiones anteriores en los modelos de terminales más nuevos, no eligieron hacer esto cuando se introdujo ReGIS y los gráficos de forma de onda desaparecieron de los terminales posteriores.
Descripción
Los gráficos de forma de onda se introdujeron en el terminal VT55 en octubre de 1975, una época en la que la memoria era extremadamente cara. Aunque era técnicamente posible producir una visualización de mapa de bits usando un framebuffer usando tecnología de la época, [a] la memoria necesaria para hacerlo con una resolución razonable estaba típicamente más allá del precio que lo hacía práctico. Se utilizaron todo tipo de sistemas para reemplazar la memoria de la computadora con otros conceptos, como los tubos de almacenamiento utilizados en los terminales Tektronix 4010 , o el sistema de memoria cero que compite con el rayo utilizado en el Atari 2600 . DEC decidió atacar este problema mediante un uso inteligente de un pequeño búfer que representa solo las posiciones verticales en la pantalla. Un sistema de este tipo no podría dibujar formas arbitrarias, pero permitiría la visualización de datos gráficos. [2]
El sistema se basó en una pantalla de 512 por 236 píxeles, [b] produciendo 512 columnas verticales a lo largo del eje X y 236 filas horizontales en el eje Y. [c] Las ubicaciones de Y se contaron desde abajo, por lo que la coordenada 0,0 estaba en la parte inferior izquierda y 511, 235 en la parte superior derecha. [3] Si esto se hubiera implementado usando un framebuffer con cada ubicación representada por un solo bit, se habrían requerido 512 ⨉ 236 x 1 = 120,832 bits, o 15,104 bytes. En ese momento, la memoria costaba alrededor de $ 50 por kilobyte, [4] por lo que el búfer solo costaría más de $ 700, equivalente a $ 3.673 en 2020. [5]
En cambio, el sistema gráfico de forma de onda utilizó un byte de memoria para cada ubicación del eje X, y el valor del byte representa la ubicación Y. Esto requirió solo 512 bytes para cada gráfico, un total de 1024 bytes para los dos gráficos. Dibujar una línea requería que el programador construyera una serie de ubicaciones en Y y las enviara como puntos individuales, [6] el terminal no podía conectar los puntos en sí. Para facilitar esto, el terminal incrementó automáticamente la ubicación X cada vez que se recibió una coordenada Y, por lo que se podría enviar una línea gráfica como una larga cadena de números para ubicaciones Y posteriores en lugar de tener que enviar repetidamente la ubicación X cada vez. El dibujo normalmente se inicia enviando una sola instrucción para establecer la ubicación X inicial, a menudo 0 a la izquierda, y luego enviando datos para toda la curva. [6]
El sistema también incluyó almacenamiento para hasta 512 marcadores en ambas líneas. Estos siempre se dibujaron centrados en el valor Y de la línea con la que estaban asociados, lo que significa que todo lo que se necesitaba era una simple indicación de encendido / apagado para las ubicaciones X, que solo requería 1024 bits, o 128 bytes, en total. Los marcadores se extendían 16 píxeles verticalmente y solo podían alinearse en límites de 16 píxeles, por lo que no estaban necesariamente centrados en el gráfico subyacente. [7] Se usaron marcadores para indicar puntos importantes en el gráfico, donde normalmente se usaría un símbolo de algún tipo. El sistema también permitió trazar una línea vertical para cada ubicación horizontal y una horizontal en cada ubicación vertical. Estos también se almacenaron como bits simples de encendido / apagado, que requerían otros 128 bytes de memoria. Estas líneas se usaron para dibujar ejes y líneas de escala, o podrían usarse para un cursor en forma de cruz que abarca la pantalla. [8] Un conjunto separado de dos registros de 7 bits contenía información adicional sobre el estilo de dibujo y otras configuraciones.
Aunque complejo desde la perspectiva del usuario, este sistema fue fácil de implementar en hardware. Un tubo de rayos catódicos produce una visualización al escanear la pantalla en una serie de movimientos horizontales, moviéndose hacia abajo una línea vertical después de cada escaneo horizontal. [9] En cualquier momento dado durante este proceso, el hardware de la pantalla examina algunas ubicaciones de memoria para ver si es necesario mostrar algo. Por ejemplo, puede determinar si dibujar un marcador en el gráfico 0 examinando el registro 1 para ver si los marcadores están activados, mirando en el búfer de marcadores para ver si hay un 1 en la ubicación X actual y luego examinando la ubicación Y del gráfico 0 para ver si está dentro de los 16 píxeles de la línea de exploración actual. [d] Si todo esto es cierto, se dibuja un punto para presentar esa parte del marcador. Como esto será cierto para 16 ubicaciones verticales durante el proceso de escaneo, se dibujará un marcador de 16 píxeles de alto. [10]
Vendido solo, el VT55 tenía un precio de $ 2,496, [11] equivalente a $ 13,098 en 2020. [5] Al igual que otros modelos de la serie VT50, el terminal podría equiparse con una impresora de papel húmedo opcional en un panel a la derecha del pantalla. Esto agregó $ 800 equivalente a $ 4,198 en 2020 [5] al precio. [12]
DEC también ofreció VT55 en un paquete con un modelo pequeño del PDP-11 para crear un modelo del sistema DEClab 11/03. El DEClab normalmente se vendía por $ 14,000, equivalente a $ 73,467 en 2020 con una impresora DECwriter II (LA36), o $ 15,000, equivalente a $ 73,467 en 2020, con la VT55. [13] El sistema tenía canales de E / S para hasta 15 dispositivos de laboratorio e incluía bibliotecas para FORTRAN y BASIC para leer los datos y crear gráficos. El Manual del programador del VT55, bastante extenso, cubría este último en profundidad. [14]
Comandos y datos
Los datos se enviaron al terminal utilizando un conjunto extendido de códigos similares a los introducidos en el VT52 . Los códigos VT52 generalmente comenzaban con el ESCcarácter (octal 33, decimal 27) y luego iban seguidos de una instrucción de una sola letra. Por ejemplo, la cadena de cuatro caracteres ESCHESCJreposicionaría el cursor en la parte superior izquierda (inicio) y luego limpiaría la pantalla desde ese punto hacia abajo. Estos códigos eran básicamente sin modelo ; desencadenado por el modo de escapeESC resultante salió automáticamente de nuevo cuando se completó el comando. Los códigos de escape se pueden intercalar con texto de visualización en cualquier parte del flujo de datos. [15]
Por el contrario, el sistema de gráficos era completamente modal, con secuencias de escape enviadas para hacer que la terminal entrara o saliera del modo de dibujo de gráficos . Los datos enviados entre estos dos códigos fueron interpretados por el hardware de gráficos, por lo que el texto y los gráficos no se pudieron mezclar en un solo flujo de instrucciones. Se ingresó al modo de gráficos enviando la cadena ESC1y se salió de nuevo con la cadena ESC2. Incluso los comandos dentro del modo gráfico eran modales; Los caracteres se interpretaron como datos adicionales para el carácter de carga anterior (comando) hasta que se vea otro carácter de carga. Diez caracteres de carga estaban disponibles: [16]
@ - sin operación, se usa para decirle al terminal que el último comando ya no está activoA - cargar datos en el registro 0, seleccionando el modo de dibujo para los dos gráficosI - cargar datos en el registro 1, seleccionando otras opciones de dibujoH: carga la posición X inicial (horizontal) para los siguientes comandosB - cargar datos para ubicaciones Y para el gráfico 0 comenzando en la posición H seleccionada anteriormenteJ: cargar datos para ubicaciones Y para el gráfico 1 comenzando en la posición H seleccionada anteriormenteC - almacenar un marcador en el gráfico 0 en la siguiente ubicación XK: almacena un marcador en el gráfico 1 en la siguiente ubicación XD: dibuja una línea horizontal en la ubicación Y dadaL: dibuja una línea vertical en la ubicación X dada
Las ubicaciones X e Y se enviaron como números decimales de 10 bits, codificados como caracteres ASCII , con 5 bits por carácter. Esto significa que cualquier número dentro del espacio numérico 1024 (2 10 ) se puede almacenar como una cadena de dos caracteres. Para garantizar que los caracteres se puedan transmitir a través de enlaces de 7 bits, el patrón 01 se coloca delante de ambos números de 5 bits, lo que produce valores ASCII de 7 bits que siempre están dentro del rango imprimible. Esto da como resultado un algoritmo de codificación algo complejo. [17]
Por ejemplo, si se desea codificar el valor decimal 102, primero se convierte al patrón decimal de 10 bits 0010010010. Luego se divide en partes superior e inferior de 5 bits, 00100 y 10010. Luego, agregue 01 binario para producir Números de 7 bits 0100100 y 0110010. Convierta individualmente de nuevo a 40 y 50 decimales, y luego busque esos caracteres en un gráfico ASCII, y encuentre (y 2. Estos deben enviarse primero al carácter menos significativo de la terminal. usado para establecer la coordenada X, la cadena completa sería H2(. Cuando se usa como ubicaciones X e Y para los gráficos, se ignoran los dígitos adicionales. Por ejemplo, el eje X de 512 píxeles requiere solo 9 bits para codificar, por lo que se ignoró el décimo bit Asimismo, las ubicaciones Y ignoraron los bits noveno y décimo. [18]
Los registros de control siempre contenían 7 bits, siendo los bits más significativos siempre 01. [19] En el registro cero, el bit 0 (el menos significativo) activaba o desactivaba todo el sistema de dibujo de líneas. Los bits 1 y 2 activaban o desactivaban los gráficos individuales 0 o 1, y los bits 3 y 4 controlaban si los gráficos 0 y 1 eran líneas o se rellenaban para hacer histogramas. Por ejemplo, si uno quisiera tener ambos gráficos en pantalla, pero el gráfico 0 sería un histograma y el gráfico 1 sería una línea, el patrón de bits requerido sería 0101111, el 01 inicial es fijo, el siguiente bit que dice que el gráfico 1 es una línea (0), la siguiente en que el gráfico 0 es un histograma (1), que ambos gráficos están en (11) y que todo el sistema de gráficos está habilitado (1). El patrón resultante es equivalente al decimal 47, el carácter /. Este modo estaría habilitado con la cadena A/.
El registro I se cargó utilizando una codificación similar, pero los bits controlaban la visualización de los marcadores y las líneas horizontales y verticales. Al igual que con A, los bits más significativos eran siempre 01, el bit menos significativo activaba o desactivaba las líneas horizontales, el bit 1 era el mismo para la vertical, 2 y 3 si se mostraban o no los marcadores en el gráfico 0 o 1 respectivamente, y configurando el bit 5 borraría todos los datos de los marcadores y las líneas. Eso significaba que se podía borrar la pantalla enviando el patrón de bits 0110000, decimal 48, el carácter 0. Esto produce el comando fácilmente legible I0. [20]
Los marcadores y las líneas solo requerían que se enviara una coordenada, una X o Y. En el caso de un marcador, la ubicación de Y fue definida por los datos previamente establecidos con B o J. Para las líneas, la segunda coordenada abarcó la pantalla. Por ejemplo, se podría colocar una línea vertical en la ubicación 102 en el eje X con la cuerda L2(. Tanto los marcadores como las líneas se pueden borrar configurando el bit 5 del tercer carácter, que de otra manera no se utilizaría. [18]
Ejemplo
El siguiente ejemplo produce un gráfico simple: [21]
ESC1A'I?B1111111111111111H (J6666666666666666C$09K$8D+723L 0?? 8
Los dos primeros caracteres le dicen al terminal que ingrese al modo de gráficos, mientras que los cuatro siguientes configuran los dos registros del modo de dibujo para activar ambas líneas de gráficos, marcadores en ambas y habilitar líneas horizontales y verticales. La B seguida de la cadena de unos produce una línea horizontal de 8 píxeles en la parte inferior izquierda de la pantalla dibujada con el gráfico 0. La ubicación X comienza en la ubicación predeterminada 0 y se mueve sobre una ubicación con cada punto de datos siguiente, que siempre consta de dos personajes. No es necesario volver a escribir B, la cadena es modal y el comando actual sigue siendo B hasta que se encuentre otro. [21]
Eso ocurre cuando se encuentra la H, y los dos caracteres siguientes se utilizan para mover la ubicación X inicial al centro de la pantalla. A esto le sigue un segundo segmento de línea que se dibuja en el gráfico 1 usando la J. Luego se agregan dos marcadores, uno en cada línea, centrados a lo largo de los segmentos. Los segmentos de línea tienen 16 píxeles de ancho y los marcadores siempre tienen 16 píxeles de alto. El resultado son formas de cruz, una en la parte inferior izquierda y otra centrada. Como los marcadores están centrados en límites de 16 píxeles y no se pueden dibujar fuera del área visible, el primer marcador en el segmento inferior aparecerá sobre la línea, creando una forma de T invertida en lugar de una cruz. Los dos últimos comandos, D y L, producen dos líneas horizontales en la parte inferior y central de la pantalla y tres líneas verticales en la izquierda, el centro y la derecha. [21]
En este punto, el terminal todavía está en modo de dibujo de gráfico. Se podría convertir el gráfico 1 en un histograma enviando A7
, haciendo que se dibuje una barra vertical que se extienda hacia abajo desde el centro de la pantalla. El envío ESC2
saldría del modo de gráficos, momento en el que los caracteres adicionales se interpretan como texto normal. [21]
VT105 cambios
El VT105 era muy similar al VT55, pero agregó una serie de características adicionales. Uno fue un modo de formato cuadrado que redujo la pantalla horizontalmente en ocho anchos de caracteres y la extendió verticalmente en una línea para hacerla más cuadrada que el diseño original. Esto dejó espacio adicional a la izquierda para ocho caracteres en lugar de una sola columna vertical, mejorando la visualización de etiquetas. [22] El VT105 también cambió ligeramente el significado de los bits del registro 0; los bits 1 y 2 ya no activan y desactivan todo el gráfico, sino que la visualización de los puntos del gráfico se hace a sí misma. Esto permitió que la pantalla hiciera una línea, un histograma sombreado o un histograma con una línea más brillante en la parte superior. [23] En comparación, en el VT55 el bit de gráfico controlaba la visualización de todo el conjunto de datos, no solo la línea en sí, por lo que desactivar el bit de gráfico haría que el histograma también desapareciera.
Otro cambio fue reutilizar el comando @, anteriormente el noop
, para permitir que se envíe una nueva posición Y como línea de sombra . Esto funcionó junto con el histograma para permitir cambiar la dirección del llenado. En el VT55, el relleno siempre se dibujó hacia abajo desde el gráfico hasta la base de la pantalla, en el VT105 con la línea de sombra configurada, esto podría configurarse para dibujar hasta la parte superior de la pantalla, o más comúnmente, hacia un punto central. en los datos. Por ejemplo, con la línea de sombra configurada en el medio de la pantalla, si se trazara una onda sinusoidal, las áreas por encima del centro se sombrearían hacia abajo y las secciones por debajo del centro hacia arriba, produciendo una forma de onda completa. Habilitar una línea horizontal en el mismo punto agrega una línea de base visual. [24] Había dos líneas de sombra en la memoria, una para cada gráfico, pero solo un comando @. Un bit en el registro 1 controlaba en cuál de los dos búferes se cargaban los datos @. [25]
Otra adición importante fue el concepto de gráficos de tiras , un modo que emulaba los trazadores de lápiz de papel que se movían hacia arriba y hacia abajo mientras el papel se enrollaba debajo de ellos. Estos se usaban comúnmente para registrar datos científicos, pero quizás sean más conocidos en detectores de mentiras más antiguos . A medida que se agregaron nuevos puntos de datos a uno de los gráficos, los datos anteriores se desplazaron hacia la izquierda. Por lo tanto, enviar una serie de valores Y usando B o J primero haría que la línea se dibujara de izquierda a derecha como el VT55, pero los puntos de datos adicionales empujarían los datos anteriores hacia la izquierda. [26] Si se establecieron marcadores o líneas de eje vertical, también se desplazaron, siguiendo los datos. [27] En el modo de doble banda , la adición de datos al gráfico 1 provocó que ambos gráficos se desplazaran al mismo tiempo. [26]
Todas estas nuevas funciones se controlaron mediante segundos caracteres opcionales agregados a los comandos A e I. El primer carácter de datos funcionó como lo había hecho con el VT55 y, por lo tanto, proporcionó compatibilidad con versiones anteriores. [e] El segundo activó las nuevas funciones. El segundo carácter enviado a las líneas de sombreado controladas A y la función de gráfico de bandas; bit menos significativo, bit 0, configura los datos de la línea de sombra enviados con @ para que se carguen en el gráfico 0 o el gráfico 1, mientras que los bits 2 y 3 activan o desactivan la línea de sombreado para el gráfico 0 o 1, respectivamente. La activación del bit 3 permitió el uso de gráficos de bandas, mientras que el bit 4 lo activó para ambos gráficos, la función de bandas dobles. El segundo carácter del comando I tenía solo dos valores,! o espacio; enviando ! coloque el terminal en modo cuadrado, mientras que el espacio, o nada, lo dejó en el formato rectangular compatible con VT55. [25]
Otros detalles
La serie VT50 también incluía un juego de caracteres alternativo, modo gráfico , que se podía activar y desactivar en modo texto. Estos se utilizaron para proporcionar glifos adicionales útiles para el etiquetado y tareas similares. Entre los caracteres estaban el subíndice del 0 al 9 y la parte superior de las fracciones 1 /, 2 /, 3 /, 5 / y 7 /. Estos podrían combinarse para formar, por ejemplo, 3 ⁄ 7 . El conjunto también incluía barras horizontales en cada una de las 8 líneas de exploración en un glifo normal, el símbolo de grado y otros ejemplos comunes. Estos usaban códigos de caracteres separados, por lo que los caracteres gráficos se podían mezclar con el juego de caracteres normal en una sola pantalla. [28]
Notas
- ^ El Cromemco Dazzler es un ejemplo contemporáneo.
- ^ 230 o 240 líneas en el VT105.
- ^ La documentación de VT55 imprime todo en octal, por lo que la resolución es 1000 por 354 en esa notación. Esto puede dificultar las conversiones y comparaciones, y no siempre se indica qué sistema se está utilizando. La documentación del VT105 es mucho más explícita a este respecto.
- ^ Lo que puede hacer rápidamente examinando los bits de orden superior de la ubicación Y, ignorando los 4 bits inferiores.
- ^ Con la excepción del cambio al registro 0, mencionado anteriormente.
Referencias
Citas
- ^ "Las mejoras dan gráficos DEC Minc, unidad de punto flotante" . Computerworld : 47. Agosto de 1981.
- ^ VT55 1976 , p. 5-11.
- ^ VT105 1979 , p. 3-7.
- ^ "Precios de la memoria (1957-2014)"
- ^ a b c 1634 a 1699: Harris, P. (1996). "Inflación y deflación en América temprana, 1634-1860: patrones de cambio en la economía estadounidense británica". Historia de las Ciencias Sociales . 20 (4): 469–505. JSTOR 1171338 . 1700-1799: McCusker, JJ (1992). ¿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 (PDF) . Sociedad Americana de Anticuarios . 1800-presente: Banco de la Reserva Federal de Minneapolis. "Índice de precios al consumidor (estimación) 1800–" . Consultado el 1 de enero de 2020 .
- ↑ a b VT105 , 1979 , p. 3-17.
- ^ VT105 1979 , p. 3-1.
- ^ VT105 1979 , p. 3-4.
- ^ VT55 1976 , p. 4-1.
- ^ VT55 1976 , p. 4-2.
- ^ "El terminal gráfico VT55 de Digital alcanza nuevas alturas" . Computerworld : 26.19 de noviembre de 1975.
- ^ "Copia impresa opcional en la unidad gráfica DEC" . Computerworld : 31.15 de octubre de 1975.
- ^ "Enlaces del sistema a 15 herramientas de laboratorio" . Computerworld : 56.23 de mayo de 1977.
- ^ Manual del programador del VT55 (PDF) . Digital. Febrero de 1977.
- ^ VT55 1976 , p. 4-3.
- ^ VT55 1976 , p. 5-14.
- ^ VT55 1976 , p. 5-17.
- ↑ a b VT55 1976 , p. 5-27.
- ^ VT55 1976 , p. 5-24.
- ^ VT55 1976 , p. 5-25.
- ↑ a b c d VT55 , 1976 , pág. 5-29.
- ^ VT105 1979 , p. 3-86.
- ^ VT105 1979 , p. 3-10.
- ^ VT105 1979 , p. 3-20.
- ↑ a b VT105 , 1979 , p. 3-8.
- ↑ a b VT105 , 1979 , p. 3-25.
- ^ VT105 1979 , p. 3-5.
- ^ VT55 1976 , p. 5-10.
Bibliografía
- Manual del usuario del osciloscopio VT55 DECgraphic (PDF) . Digital. Diciembre de 1976.
- Manual técnico del terminal gráfico VT105 (PDF) . Digital. Septiembre de 1979.