Conjunto de caracteres ZX Spectrum - ZX Spectrum character set

El juego de caracteres de ZX Spectrum como se representa en la fuente del sistema (sin incluir los caracteres de gráficos definidos por el usuario).

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 DELse reemplazan por ↑, £ y ©. También difiere en el uso de los códigos de control C0 distintos del común BSy 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

Captura de pantalla de un programa Sinclair BASIC que muestra todos los puntos de código imprimibles, incluidas las palabras clave BASIC y los caracteres gráficos definidos por el usuario (definidos por defecto como copias de AU).

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 SPECTRUMy 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 PRINTque 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 PRINTen 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 PRINTdeclaraciones 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 USRcon 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 BSy de CRcó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 10podrí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 ZXSpectrum80.svg (A) (Q) VAL USR FORMATO LPRINT LISTA
_1 PAPEL ! 1 A Q a q ZXSpectrum81.svg (B) (R) LEN STR $ MOVERSE LLIST DEJAR
_2 DESTELLO " 2 B R B r ZXSpectrum82.svg (C) (S) PECADO CHR $ BORRAR DETENER PAUSA
_3 BRILLANTE # 3 C S C s ZXSpectrum83.svg (D) (T) COS NO ABIERTO # LEER SIGUIENTE
_4 verdadero video INVERSO PS 4 D T D t ZXSpectrum84.svg (MI) (U) BRONCEARSE COMPARTIMIENTO CERCA # DATOS DAR UN TOQUE
_5 inv video ENCIMA % 5 mi U mi tu ZXSpectrum85.svg (F) RND ASN O UNIR RESTAURAR IMPRESIÓN
_6 Bloq Mayús coma A Y 6 F V F v ZXSpectrum86.svg (GRAMO) INKEY $ ACS Y VERIFICAR NUEVO GRÁFICO
_7 editar PESTAÑA ' 7 GRAMO W gramo w ZXSpectrum87.svg (H) Pi ATN <= BIP FRONTERA CORRER
_8 izquierda izquierda ( 8 H X h X ZXSpectrum88.svg (I) FN LN > = CIRCULO SEGUIR AHORRAR
_9 derecho derecho ) 9 I Y I y ZXSpectrum89.svg (J) PUNTO Exp <> TINTA OSCURO ALEATORIZAR
_A abajo * : J Z j z ZXSpectrum8a.svg (K) PANTALLA $ EN T LÍNEA PAPEL movimiento rápido del ojo SI
_B arriba + ; K [ k { ZXSpectrum8b.svg (L) ATTR SQR LUEGO DESTELLO POR CLS
_C Eliminar , < L \ l | ZXSpectrum8c.svg (METRO) A SGN A BRILLANTE IR DIBUJAR
_D ingresar ingresar - = METRO ] metro } ZXSpectrum8d.svg (NORTE) PESTAÑA abdominales PASO INVERSO IR SUB CLARO
_MI ampliar número . > norte norte ~ ZXSpectrum8e.svg (O) VAL $ OJEADA DEF FN ENCIMA APORTE REGRESO
_F gráficos / ? O _ o © ZXSpectrum8f.svg (PAG) CÓDIGO EN GATO FUERA CARGA COPIAR

Ver también

Notas

Referencias

enlaces externos