Conjunto de caracteres ZX Spectrum - ZX Spectrum character set
El juego de caracteres ZX Spectrum es la variante de ASCII utilizada en las computadoras de la familia británica Sinclair ZX Spectrum . Está basado en ASCII-1967 pero los caracteres ^, `y DEL
se reemplazan por ↑, £ y ©. También difiere en el uso de los códigos de control C0 distintos del común BS
y CR
, y hace uso de los 128 caracteres de bits altos más allá del rango ASCII. La computadora Jupiter Ace también utiliza el conjunto principal de caracteres imprimibles y la fuente del sistema de ZX Spectrum .
Caracteres imprimibles
El estándar US-ASCII, 0x20–0x7F, se incluye en el conjunto de caracteres Spectrum, excepto que el punto de código 0x5E es una flecha hacia arriba (↑) en lugar de un signo de intercalación (^), 0x60 es el signo de almohadilla (£) en lugar del acento grave (`) y 0x7F es el signo de copyright (©) en lugar del carácter de control DEL
. Tenga en cuenta que el uso de 0x5E como ↑ también fue el caso en la versión anterior de 1963 de ASCII. El signo £ no se asignó a 0x23 como en la variante británica de ASCII ( ISO-646-GB ), lo que permite tanto el signo de libra como el signo de número (#) simultáneamente. El carácter ↑ es el operador de exponenciación en BASIC de Spectrum , al igual que ^ que reemplaza en comparación con ASCII-1967 se usa para exponenciación en muchos otros dialectos de BASIC y otros lenguajes de programación.
Más allá de 0x7F, el juego de caracteres Spectrum usa el rango de bits alto 0x80–0xFF para propósitos especiales. 0x80–0x8F contienen los mismos caracteres gráficos de bloque 2 × 2 que tienen el juego de caracteres ZX80 y el juego de caracteres ZX81 (en otras ubicaciones), también disponibles en el bloque Unicode de elementos de bloque. Sin embargo, el conjunto de caracteres estándar del ZX Spectrum no incluye los caracteres gráficos de bloque 1 × 2 con 50% difuminado del ZX80 / 81 . Los puntos de código 0x90–0xA4 contienen los 21 caracteres originales de gráficos definidos por el usuario (UDG) y 0xA5–0xFF contienen palabras clave BÁSICAS tokenizadas como puntos de código único. En el modo 128 BASIC introducido más adelante, esto se cambió a 19 caracteres UDG que terminan en 0xA2 seguidos de los dos nuevos tokens SPECTRUM
y PLAY
. Código señala 0xC7-0xC9 son los operadores de dos caracteres <=
, >=
y <>
, tokens de manera similar en los puntos de código individuales. Estos tokens permiten PRINT
que se ingrese un comando BÁSICO con solo presionar una tecla Pal comienzo de una línea (es decir, en el modo de comando), lo que generó 0xF6. Eso se muestra como la palabra clave completa PRINT
en la pantalla, pero solo se almacena un token de un solo byte, por lo que el intérprete solo debe analizar ese byte o guardarlo o cargarlo desde un almacenamiento externo, como una cinta.
Todos los caracteres de Spectrum que no pertenecen a UDG se pueden asignar a Unicode . Los tres caracteres no ASCII-1967 ↑, £ y © están en U + 2191, U + 00A3 y U + 00A9. Los caracteres gráficos de bloque 2 × 2 están en el bloque Elementos de bloque en U + 2580 – U + 259F, aunque el soporte de fuentes para este último no es universal.
La forma de los caracteres UDG se asigna a un área de memoria RAM y se inicializa a copias de caracteres AU, pero se puede redefinir arbitrariamente, por ejemplo, usando el comando BASIC POKE
. Como todos los caracteres de la fuente del sistema, utilizan una cuadrícula de 8 × 8 píxeles almacenada en 8 bytes. Redefinirlos cambia su apariencia en PRINT
declaraciones posteriores , pero no cambia ningún carácter UDG ya dibujado en la pantalla. La ubicación de la definición de un carácter UDG se puede determinar con la función BASIC USR
con el carácter como argumento, por ejemplo, USR "A"
para el primero. De forma predeterminada, esto apunta a los últimos 168 (21 × 8) bytes de RAM en las direcciones de memoria 65368 (0xFF58) a 65535 (0xFFFF) para un espectro de 48K. La ubicación es señalada por la variable de sistema UDG que se puede encontrar en la dirección de memoria 23675/6 (0x5C7B / C) y se puede cambiar. El TK90X , un clon brasileño del ZX Spectrum incluyó una aplicación en ROM para editar gráficamente estos caracteres UDG, junto con la funcionalidad para precargar luego con letras acentuadas usadas en portugués. (Para esto, el TK90X definió dos comandos básicos adicionales en los códigos 0 y 1, respectivamente "trace" y "udg")
La definición de la fuente del sistema principal, 32 (espacio) a 127 (derechos de autor), está referenciada por la variable de sistema CHARS que se puede encontrar en la dirección de memoria 23606/7 (0x5C36 / 7). Se define como 256 bytes por debajo del primer byte del carácter de espacio, lo que simplifica la fórmula para ubicar un carácter en CHARS + 8 × punto de código . El valor de CHARS tiene por defecto el valor 15360 (0x3C00), con la fuente del sistema al final de la ROM del Spectrum en la dirección 15616 (0x3D00) a 16383 (0x3FFF). Se pueden cargar fuentes alternativas completas en la RAM y la variable CHARS volver a apuntar en consecuencia.
Códigos de control
En el área de códigos de control (rango C0), el Spectrum utiliza principalmente controles patentados, como INK y PAPER para controlar el color de primer plano y de fondo. Sin embargo, los puntos comunes BS
y de CR
código son los mismos que en ASCII. El cursor hacia abajo (0x0A, ASCII Line Feed) se puede simular con 32 espacios impresos con OVER 1 (sobreimpresión transparente) y el cursor hacia arriba 0x0B (tabulación vertical ASCII) se puede simular con 32 retrocesos. La ROM del sistema tiene una falla que impide que funcione el cursor a la derecha en 0x09 (cf Tabulación horizontal ASCII).
El código de control 0x0E se usa para indicar que sigue un número de punto flotante, para acelerar el procesamiento de texto. En un programa Sinclair BASIC , las constantes numéricas se almacenan como ASCII seguidas de un byte 0x0E y una representación de punto flotante binario de 5 bytes. Cuando se lista un programa BASIC, solo se usa la parte ASCII, pero en tiempo de ejecución solo se usa la representación binaria. Algunos programas de Spectrum explotaron esto para ofuscar números, mientras que otros lo hicieron para ahorrar memoria. Por ejemplo, una línea BÁSICA mostrada como GO TO 10
podría contener los caracteres ASCII para los dígitos 1 y 0 seguidos de un byte 0x0E y la representación de punto flotante de 100 en lugar de 10. Cualquiera que enumere ese programa vio el número 10, pero cuando se ejecutó el programa saltó a la línea 100.
Códigos indefinidos
Los rangos 0x00–0x05, 0x07, 0x0A – 0x0C, 0x0F y 0x17–0x1F no están definidos. En la mayoría de los casos, producirán un signo de interrogación si se imprimen en la pantalla. Sin embargo, pueden usarse para representar sus valores numéricos literales junto con ciertos códigos de control: por ejemplo, 0x10 + 0x07 establece el color de la tinta (texto de primer plano) en el color número 7 (blanco).
Conjunto de caracteres
Conjunto de caracteres de espectro | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0_ pulsación de tecla | 0_ carácter | 1_ | 2_ | 3_ | 4_ | 5_ | 6_ | 7_ | 8_ | 9_ | A_ | B_ | C_ | D_ | MI_ | F_ | |
_0 | TINTA | 0 | @ | PAG | £ | pag | (A) | (Q) | VAL | USR | FORMATO | LPRINT | LISTA | ||||
_1 | PAPEL | ! | 1 | A | Q | a | q | (B) | (R) | LEN | STR $ | MOVERSE | LLIST | DEJAR | |||
_2 | DESTELLO | " | 2 | B | R | B | r | (C) | (S) | PECADO | CHR $ | BORRAR | DETENER | PAUSA | |||
_3 | BRILLANTE | # | 3 | C | S | C | s | (D) | (T) | COS | NO | ABIERTO # | LEER | SIGUIENTE | |||
_4 | verdadero video | INVERSO | PS | 4 | D | T | D | t | (MI) | (U) | BRONCEARSE | COMPARTIMIENTO | CERCA # | DATOS | DAR UN TOQUE | ||
_5 | inv video | ENCIMA | % | 5 | mi | U | mi | tu | (F) | RND | ASN | O | UNIR | RESTAURAR | IMPRESIÓN | ||
_6 | Bloq Mayús | coma | A | Y | 6 | F | V | F | v | (GRAMO) | INKEY $ | ACS | Y | VERIFICAR | NUEVO | GRÁFICO | |
_7 | editar | PESTAÑA | ' | 7 | GRAMO | W | gramo | w | (H) | Pi | ATN | <= | BIP | FRONTERA | CORRER | ||
_8 | izquierda | izquierda | ( | 8 | H | X | h | X | (I) | FN | LN | > = | CIRCULO | SEGUIR | AHORRAR | ||
_9 | derecho | derecho | ) | 9 | I | Y | I | y | (J) | PUNTO | Exp | <> | TINTA | OSCURO | ALEATORIZAR | ||
_A | abajo | * | : | J | Z | j | z | (K) | PANTALLA $ | EN T | LÍNEA | PAPEL | movimiento rápido del ojo | SI | |||
_B | arriba | + | ; | K | [ | k | { | (L) | ATTR | SQR | LUEGO | DESTELLO | POR | CLS | |||
_C | Eliminar | , | < | L | \ | l | | | (METRO) | A | SGN | A | BRILLANTE | IR | DIBUJAR | |||
_D | ingresar | ingresar | - | = | METRO | ] | metro | } | (NORTE) | PESTAÑA | abdominales | PASO | INVERSO | IR SUB | CLARO | ||
_MI | ampliar | número | . | > | norte | ↑ | norte | ~ | (O) | VAL $ | OJEADA | DEF FN | ENCIMA | APORTE | REGRESO | ||
_F | gráficos | / | ? | O | _ | o | © | (PAG) | CÓDIGO | EN | GATO | FUERA | CARGA | COPIAR |
Ver también
- Conjunto de caracteres ZX80
- Conjunto de caracteres ZX81
- PETSCII
- ATASCII
- Juego de caracteres Atari ST
- ASCII extendido
Notas
Referencias
enlaces externos
- Sinclair Spectrum + 48K Character Set Del sitio web de Michael Zaretski
- Tabla de mapeo de Sinclair Spectrum + 48K Character Set a Unicode Desde el mismo sitio
- El paquete de punto flotante