Método utilizado en los primeros equipos de vídeo en modo texto para emular gráficos rasterizados
Los semigráficos , pseudográficos o gráficos de caracteres basados en texto son un método primitivo utilizado en los primeros hardware de video en modo texto para emular gráficos rasterizados sin tener que implementar la lógica para dicho modo de visualización.
Existen dos formas diferentes de lograr la emulación de gráficos rasterizados. La primera consiste en crear un modo de direccionamiento de todos los puntos de baja resolución utilizando un conjunto de caracteres especiales con todas las combinaciones binarias de una determinada matriz de subdivisión del tamaño de los caracteres del modo texto ; este método se conoce como gráficos de bloques [1] o, a veces, gráficos de mosaico [2] [3] .
La segunda es utilizar formas especiales en lugar de glifos (letras y figuras) que aparecen como si estuvieran dibujados en modo de gráficos rasterizados, a veces denominados semigráficos o pseudográficos ; un ejemplo importante de esto son los caracteres de dibujo de cajas .
Los caracteres semigráficos (incluidos algunos elementos de bloque) todavía se incorporan a la BIOS de cualquier tarjeta de video compatible con VGA , por lo que cualquier PC puede mostrar estos caracteres desde el momento en que se enciende, incluso cuando aún no se ha cargado ningún sistema operativo. Todavía se suelen dibujar líneas simples y dobles con este método cuando el sistema utiliza el modo texto; por ejemplo, al ejecutar el programa de configuración de la BIOS.
Por ejemplo, un carácter de 8×12 píxeles podría dividirse verticalmente en dos mitades y horizontalmente en tres partes, y luego asignar valores de "tinta" y "fondo" a los elementos de la matriz en un patrón binario, correspondiente a la secuencia binaria de la posición en la tabla de fuentes de una matriz de mosaico de bloques de 2×3 [5] de los llamados squots (puntos cuadrados) [6] o sextantes . [7] Las versiones menos utilizadas utilizan una "matriz" de 1×6, en cuyo caso estos seis "píxeles" a veces se denominan sixels . [8] Pero dividir un carácter de 8×8 en "píxeles" de 2×2 llamados cuadrantes [7] también era común (se utilizó, por ejemplo, en el Sinclair ZX81 ).
En ocasiones, los caracteres semigráficos del texto se incorporan simplemente al conjunto de fuentes del sistema; en ocasiones, se utiliza un hardware de vídeo especial para convertir directamente el patrón de bits de la memoria de vídeo en píxeles. En casos excepcionales, una matriz de caracteres no era divisible verticalmente por tres; por ejemplo, en una matriz de 8x8, el mosaico a veces se divide de forma que utilice un esquema de líneas de exploración de 3:2:3. El modo gráfico del Galaksija es un ejemplo, aunque con un esquema de 4:5:4, el efecto de distorsión era mínimo. [9]
El uso seminal de esta tecnología fue en el TRS-80 donde la única manera de obtener píxeles discretos en la pantalla que pudieran encenderse y apagarse individualmente (todos los puntos direccionables) era mediante el uso de una matriz de 2×3 píxeles de gráficos de bloques. En el caso del TRS-80 estos gráficos de bloques no se incorporaron a una ROM de fuente, como luego se convirtió en la norma, sino que se generaron directamente a partir del patrón lógico de seis bits de la RAM de video utilizando un circuito dedicado hecho de puertas lógicas . [10] Un sistema anterior que usaba la misma matriz pseudográfica de una matriz de 2 por 3 fue la Interfaz de Terminal de Video (VTI) del Poly-88 de polymorphic systems , un sistema basado en bus S-100 anterior al TRS-80.
Si el sistema también admitía color, la resolución de color de los píxeles resultantes normalmente era igual a la resolución del texto, lo que a menudo generaba conflictos de atributos , ya que el color de un píxel no se podía cambiar píxel por píxel, sino solo a un color de "tinta" y un color de "fondo" para todos los píxeles dentro de una posición de carácter.
A veces, el número de caracteres de la fuente, dedicada a los gráficos de bloque, se podía reducir a la mitad si el sistema también admitía un atributo "invertir", ya que la mitad de los caracteres de un conjunto de fuentes de gráficos de bloque completo son el inverso lógico de la otra mitad del conjunto de fuentes. Otros trucos que se usaban para disminuir el número de caracteres necesarios eran usar un espacio para el carácter "todos los bits son cero" y usar el carácter 7F hexadecimal para el carácter "todos los bits están activados", ya que el carácter 7F hexadecimal (decimal 127) a menudo se definía como un carácter de "todos los píxeles activados" (esto se debía a que al usar cinta de papel para perforar los siete agujeros, se creaba el "byte" 7F hexadecimal que se consideraba el carácter "DEL" o "borrado" ). [ cita requerida ] La asignación en ASCII del carácter de borrado (al punto de código 127) llevó a los diseñadores de VDU a usar "borrado" para un cuadrado de caracteres lleno de "tinta", que a menudo se usaba para representar el cursor. [ cita requerida ]
Ejemplos de uso de gráficos de bloques
Otros ejemplos de sistemas que se basan en el uso de gráficos de bloques son:
Los conjuntos de caracteres ZX80 y ZX81 , donde se utilizaba una matriz de 2×2 píxeles, con los trucos de los atributos de espacio e inversión para mantener el número de caracteres en la ROM necesarios en tan solo 7 (de los 16 necesarios). [11] El ZX Spectrum también admitía gráficos de bloques, así como gráficos "reales" de mayor resolución. Además, en el Spectrum la fuente del sistema (almacenada en su ROM) podía cambiarse de forma fácil e instantánea a una almacenada en la RAM, lo que permitía a los programadores definir sus propios caracteres semigráficos para satisfacer sus necesidades.
Otros sistemas que utilizaban una matriz de 2x2 eran el Panasonic JR-200 y el Mattel Aquarius . Este último no solo admitía semigráficos de matriz 2x2, sino también de matriz 2x3, aunque de forma imperfecta, ya que los píxeles de los semigráficos en la fila central de un carácter eran menos altos que los de las filas superior e inferior, debido a la división imperfecta de la matriz de caracteres de 8x8 píxeles.
El Commodore PET también tenía algunos caracteres para admitir semigráficos de texto 2x2 en su conjunto de caracteres PETSCII . El PET también fue uno de los primeros sistemas que dependía en gran medida de caracteres semigráficos para obtener cualquier tipo de gráficos en pantalla.
La computadora en color TRS-80 y la Dragon 32/64 son buenos ejemplos de sistemas que utilizan semigráficos en color de matriz 2x2. Pero su Motorola 6847 VDC también admitía un modo semigráfico de 6 bloques poco utilizado. [12] [13]
Los sistemas de videotexto y teletexto utilizaban una matriz de 2x3 y un color de primer plano ("tinta") y un color de fondo, normalmente de un conjunto de ocho colores (incluido el blanco y el negro). Muchos sistemas utilizaban " gráficos de videotexto ". Uno de los ejemplos más conocidos es el modo de gráficos predeterminado de Acorn BBC Micro ( modo 7 ). [14] Otros sistemas que utilizaban gráficos similares a los de "videotexto" son: el ABC 80 , el Grundy NewBrain , muchos de los sistemas Acorn Eurocard y el Philips P2000T , que en realidad utilizaba un chip de teletexto diseñado para sus televisores.
El PC-8001 logró combinar texto normal con un conjunto completo de 256 "caracteres" semigráficos de texto en una matriz de 2×4; el sistema distinguía el conjunto de 256 patrones semigráficos del conjunto de 256 caracteres utilizado para fuentes "normales" a través de bytes de atributos de caracteres . [19]
Uno de los últimos sistemas de vídeo en los que los semigráficos de texto eran una opción útil fue el Color Graphics Adapter (CGA). Este adaptador gráfico para los primeros IBM-PC sólo admitía cuatro colores en su modo gráfico de alta resolución, pero en el modo de texto podía mostrar 16 colores diferentes. Aunque la ROM de fuentes del adaptador CGA no contenía todos los caracteres semigráficos de texto típicos, aún era posible crear un modo de semigráficos de texto CGA de 160 × 100 utilizando un truco semidocumentado. [20]
Personajes semigráficos
Los caracteres semigráficos son también caracteres de una fuente que tienen como objetivo dar la impresión de que un sistema puede admitir gráficos de alta resolución, mientras que, de hecho, el sistema funciona en modo texto. Los caracteres como los que dibujan cuadros , los círculos y los puntos, los símbolos de cartas como ♠, ♣, ♥ y ♦, y las formas geométricas de "bloques gráficos" como los triángulos dieron a estos sistemas esa apariencia.
Uno de los primeros sistemas que utilizó dichos caracteres, el ejemplo canónico que otros siguieron, fue el Commodore PET , que tenía muchos de ellos dentro de su conjunto de fuentes PETSCII . [21] El PET original dependía hasta tal punto de estos caracteres que los imprimía en su teclado, como se puede ver aquí, un ejemplo que otros sistemas pronto copiaron.
Otro buen ejemplo de un sistema que dependía de caracteres semigráficos es el venerable Sharp MZ80K , que no tenía gráficos de alta resolución ni caracteres reprogramables, sino que dependía completamente de un conjunto de fuentes extendido con muchos caracteres pseudográficos. [22] Con estos todavía era posible generar juegos que parecieran que el sistema tenía gráficos de alta resolución. [23]
Algunos de los sistemas que tenían un conjunto de fuentes programable, pero no tenían un hardware de gráficos rasterizados de alta resolución real, venían con conjuntos de caracteres predeterminados para ser cargados en la RAM de conjuntos de caracteres, y estos conjuntos a menudo incorporaban las ideas mencionadas aquí, aunque a menudo también se definían caracteres semigráficos dedicados según fuera necesario.
Sistemas que se basaban en caracteres semigráficos
Ejemplos de sistemas que dependían en gran medida de caracteres semigráficos para sus gráficos son:
El Commodore PET fue uno de los primeros sistemas que dependió en gran medida de caracteres semigráficos para obtener cualquier forma de gráficos en pantalla (ver PETSCII ).
El Aquarius de Mattel dependía completamente de su conjunto de caracteres para los juegos, aunque se comercializaba a través de jugueterías. Nunca llegó a ser un éxito comercial en parte debido a esta limitación, que en su momento ya estaba obsoleta (véase el conjunto de caracteres Aquarius de Mattel ). [24]
La Compukit UK101 (clon de la popular superplaca Ohio Scientific) también fue uno de los primeros sistemas que se basó en su conjunto de 256 caracteres.
Los modos de texto de los ordenadores Apple II posteriores, a partir del Apple IIc y la versión mejorada del Apple IIe , admitían el conjunto de caracteres MouseText , que reemplazaba a los caracteres en mayúsculas intermitentes cuando estaba habilitado. Aunque estos sistemas Apple no dependían de estos conjuntos de caracteres, sí desempeñaban un papel en la simulación de gráficos tipo GUI de sus miembros más avanzados de la familia, mientras aún estaban en modo texto.
^ "RTRussell: BBC BASIC para Windows". www.bbcbasic.co.uk .
^ Freytag (c), Asmus (13 de octubre de 2020). "Gráficos en mosaico separados por teletexto".
^ Especificación de teletexto mejorado (PDF) . Instituto Europeo de Normas de Telecomunicaciones. 1997. pág. 6.
^ El estándar Unicode, versión 15.1: formas geométricas (PDF) . Unicode, Inc. 2023.
^ ETS 300 072 - Equipo terminal (TE); Protocolo de capa de presentación de videotex Sintaxis de datos de la capa de presentación de videotex (PDF) . Instituto Europeo de Normas de Telecomunicaciones (publicado en 1996). 1990.
^ Goldklang, Ira (2015). "Consejos y trucos gráficos". Archivado desde el original el 2017-07-29 . Consultado el 2017-07-29 .
^ ab Ewell, Doug ; Bettencourt, Rebecca G.; Bánffy, Ricardo; Everson, Michael ; Silva, Eduardo Marín; Mårtenson, Elias; Shoulson, Mark; Steele, Shawn; Turner, Rebecca (4 de enero de 2019). "5. Caracteres gráficos". Propuesta para añadir caracteres de ordenadores antiguos y teletexto al UCS (PDF) . Grupo de trabajo sobre terminales (TWG), Organización Internacional de Normalización . p. 3. L2/19-25. Archivado (PDF) desde el original el 24 de diciembre de 2020 . Consultado el 11 de enero de 2021 . p. 3: La palabra "sextante" se utiliza en este documento, por analogía con "cuadrante" (un término utilizado para ciertos caracteres del UCS desde 1999) para referirse a un bloque semigráfico que consta de seis bloques más pequeños o "celdas" dispuestos en dos columnas y tres filas. En la especificación del teletexto, los caracteres de este grupo se pueden mostrar con las celdas unidas, como en el caso de los caracteres de cuadrante existentes, o con un espacio estrecho entre las celdas. Un emulador de teletexto podría interpretar el carácter de control U+001A ("gráficos separados") para mostrar el espacio entre celdas, o U+0019 ("gráficos contiguos") para volver a la apariencia unida predeterminada.{{cite book}}: |work=ignorado ( ayuda )
^ "Eventos semanales de JayceLand en Rochester n.° 191: Sixel completamente blanco". jayceland.com .
^ "Museo OLD-COMPUTERS.COM ~ GALAKSIJA Software y capturas de pantalla de Galaksija". Vea la segunda imagen de arriba. La imagen muestra una pequeña diferencia en la altura de algunos "píxeles" . Consultado el 27 de enero de 2014 .
^ "Descripción de los gráficos del bloque TRS-80".
^ Detalles técnicos Conjunto de caracteres y gráficos en bloque del ZX-81
^ "Modo de visualización CoCo Semi-graphics-6".
^ "Modo de visualización Semi-graphics-6". 14 de febrero de 2021. Archivado desde el original el 14 de febrero de 2021.
^ "RTRussell: BBC BASIC para Windows". www.bbcbasic.co.uk .
^ "MATRA HACHETTE > ALICE". old-computers.com . Archivado desde el original el 2021-10-03 . Consultado el 2021-10-03 .
^ "MATRA HACHETTE > ALICE 90". old-computers.com . Archivado desde el original el 2021-10-03 . Consultado el 2021-10-03 .
^ Hervier, Carl; Vanlierde, Stéphane (204). "el VG5000μ". La página de ventiladores del VG5000μ . Archivado desde el original el 21 de agosto de 2021 . Consultado el 3 de octubre de 2021 .
^ EF9345 - PROCESADOR DE PANTALLA SEMIGRÁFICA DE UN SOLO CHIP HMOS2 (PDF) . SGS-THOMSON Microelectronics. Marzo de 1995.
^ Programación PC-8801 - Información de VRAM (Fuente en japonés; la oración relevante es "アトリビュートに開始位置とセミグラフィック指定ビット=1 を立てて、テキスト VRAM には文字コードの代わりにドットパターンを書き込みます。" Esto se traduce aproximadamente como "En la posición inicial del modo semigráfico, una vez que el bit de atributo relevante se establece en uno, se muestra un patrón de puntos se escribirá en la VRAM el código de carácter en lugar de [la letra gráfica predeterminada]". )
^ Referencia técnica de IBM PC XT, IBM, 1983, pág. 1-142 , consultado el 24 de agosto de 2018
^ Manual de Commodore C64: Guía de referencia para programadores de Commodore 64, Commodore, 1983, pág. 379 , consultado el 24 de agosto de 2018
^ "old-computers.com La entrada sobre el Sharp MZ80K menciona la falta de capacidades gráficas".
^ "Sharp MZ80K - Juego BASE ZERO". 29 de enero de 2010 – vía www.youtube.com.