PETSCII ( Código estándar de intercambio de información PET ), también conocido como CBM ASCII , es el conjunto de caracteres utilizado en las computadoras domésticas de 8 bits de Commodore Business Machines .
Este conjunto de caracteres fue utilizado por primera vez por el PET en 1977, y posteriormente fue utilizado por el CBM-II , VIC-20 , Commodore 64 , Commodore 16 , Commodore 116 , Plus/4 y Commodore 128 . Sin embargo, la familia de computadoras personales Amiga utiliza el estándar ISO/IEC 8859-1 .
El conjunto de personajes fue diseñado en gran parte por Leonard Tramiel (el hijo del director ejecutivo de Commodore, Jack Tramiel ) y el diseñador de PET, Chuck Peddle . [1] [2] [3] Los caracteres gráficos de PETSCII fueron una de las extensiones que Commodore especificó para Commodore BASIC cuando presentó los cambios deseados al 6502 BASIC existente de Microsoft para Ric Weiland de Microsoft en 1977. [4] El VIC-20 usó el La misma fuente píxel por píxel que el PET, aunque los caracteres parecían más anchos debido a la pantalla de 22 columnas del VIC. El Commodore 64, sin embargo, utilizó una fuente en mayúsculas pesada y ligeramente rediseñada, esencialmente una versión más gruesa de la PET, para evitar artefactos de color creados por la pantalla de mayor resolución de la máquina. Los caracteres en minúscula del C64 son idénticos a los caracteres en minúscula de la fuente de las computadoras Atari de 8 bits (lanzada 2,75 años antes).
Peddle afirma que la inclusión de símbolos de palos de cartas fue impulsada por la demanda de que fuera fácil escribir juegos de cartas en el PET (como parte de la lista de especificaciones que recibió). [2]
PETSCII "sin cambios" se basa en la versión de 1963 de ASCII (en lugar de la versión de 1967, que es la que utiliza la mayoría, si no todos, los demás conjuntos de caracteres de computadora basados en ASCII). Solo tiene letras mayúsculas , una flecha hacia arriba ⟨ ↑⟩ en lugar de un signo de intercalación ⟨^⟩ en 0x 5E y una flecha hacia la izquierda ⟨←⟩ en lugar de un guión bajo ⟨_⟩ en 0x5F. En todas las versiones, excepto en el Commodore PET original, también tiene un signo de libra británica ⟨£⟩ en lugar de la barra invertida ⟨\⟩ en 0x5C. Otros caracteres agregados en ASCII-1967 (letras minúsculas, acento grave , llaves , barra vertical y tilde) no existen en PETSCII. Los códigos 0xA0–0xDF se asignan a caracteres gráficos en bloques específicos de CBM : líneas horizontales y verticales, sombreados, sombras, triángulos, círculos y palos de cartas .
PETSCII también tiene un modo "desplazado" (también llamado "modo comercial"), que cambia las letras mayúsculas en 0x41–0x5A a minúsculas y cambia los gráficos en 0xC1–0xDA a letras mayúsculas. Las mayúsculas y minúsculas se intercambian desde donde las tiene ASCII. El modo se cambia manteniendo presionada una de las teclas SHIFT y luego presionando y soltando la tecla Commodore . El cambio se puede realizar POKEando la ubicación 59468 con el valor 14 para seleccionar el conjunto alternativo o 12 para volver al estándar. En el Commodore 64, los conjuntos se alternan invirtiendo el bit 2 del byte 53272. En algunos modelos de PET, esto también se puede lograr mediante un código de control especial PRINT CHR$(14)
que ajusta el espacio entre líneas y cambia el conjunto de caracteres; el método POKE todavía está disponible y no altera el interlineado. [5]
En PETSCII se incluyen códigos de control de cursor y pantalla, como {HOME}
, {CLR}
, {RVS ON}
y {RVS OFF}
(los dos últimos activan/desactivan la visualización de caracteres de vídeo inverso). Los códigos de control aparecían en listados de programas como caracteres gráficos de vídeo inverso, aunque algunas revistas de informática, en sus esfuerzos por proporcionar listados más legibles, imprimieron los códigos utilizando sus nombres reales entre llaves, como en los ejemplos anteriores. Esto no es ambiguo ya que PETSCII no tiene caracteres de llave.
Se utilizan diferentes asignaciones para almacenar caracteres (la asignación de "intercambio", como la usa CHR$()
) y mostrar caracteres (la asignación de "vídeo"). Por ejemplo, para mostrar los caracteres "@ABC" en la pantalla escribiéndolos directamente en la memoria de la pantalla , se deben PINCHAR los valores decimales 0, 1, 2 y 3 en lugar de 64, 65, 66 y 67. [6] [ 7]
De forma predeterminada, el teclado proporciona acceso a la mitad inferior de la página de códigos. Al presionar Shift y una tecla se obtiene el punto de código de la mitad superior correspondiente. Algunos puntos de código PETSCII no se pueden imprimir y sólo se utilizan para la entrada del teclado (por ejemplo, F1, RUN/STOP).
Las tablas siguientes representan la codificación PETSCII de "intercambio", tal como la utiliza CHR$()
.
Los caracteres de control se definen en los rangos 0x00–0x1F y 0x80–0x9F, aunque los caracteres de control se definen y cómo se definen varían entre sistemas. Las tablas siguientes excluyen los caracteres de control; la codificación de los caracteres de control se analiza en la sección Caracteres de control.
Los rangos 0x60–0x7F y 0xE0–0xFF son rangos duplicados, aunque lo que duplican varía entre sistemas. En el Commodore PET, duplican 0x20–0x3F y 0xA0–0xBF, respectivamente; en el Commodore VIC-20, 64, 16 y 128 duplican 0xC0–0xDF y 0xA0–0xBF, respectivamente. [6] Si bien estos personajes están visualmente duplicados, son semánticamente diferentes; por ejemplo, en Commodore PET, los puntos de código 0x2C y 0x6C producen un carácter de coma, pero solo 0x2C funciona como delimitador entre campos de entrada. [8]
Los caracteres gráficos son en su mayoría idénticos en todos los sistemas, con las excepciones de 0x5C (que está \
en Commodore PET y £
en otros sistemas), 0xD0 (que es U+1FB95 CHECKER BOARD FILL en Commodore PET y VIC-20, y U+1FB96 INVERSE CHECKER BOARD FILL en otros sistemas) y el rango 0x60–0x7F (que duplica un rango diferente en Commodore PET). Además, en el conjunto de caracteres desplazados de Commodore PET 2001 , las letras mayúsculas y minúsculas se intercambian en relación con otros sistemas.
Los símbolos de compatibilidad para caracteres PETSCII se agregaron a Unicode 13.0 como parte del bloque Símbolos para computación heredada . [9]
Las siguientes tablas representan la codificación PETSCII utilizada en Commodore VIC-20, 64, 16 y 128.
Si bien los personajes gráficos se compartían principalmente entre los sistemas Commodore, los personajes de control variaban con frecuencia. La siguiente tabla describe lo que representan los caracteres de control en Commodore PET 2001 , Commodore PET 8032, VIC-20 , Commodore 64 , Commodore 16 , Commodore 128 (modos de 40 y 80 columnas).
Los colores del VIC-20 y C64/128 se enumeran en el artículo VIC-II .
De los primeros 192 códigos de PETSCII, hay 128 caracteres gráficos: 32–127 y 160–192. Esto permite codificaciones de estilo "base128" en declaraciones de DATOS, o quizás entre máquinas que hablan PETSCII. Esto también puede incluir caracteres de control, que son visibles cuando se citan, aunque los caracteres de control definidos varían según el sistema.
La aplicación principal para una codificación "Base 128" son las declaraciones de DATOS en Commodore BASIC. Los datos binarios se pueden almacenar con una sobrecarga relativamente baja, lo que permite que un carácter de datos codifique siete bits de datos. En una línea estándar de 80 caracteres, normalmente se utilizan cuatro caracteres para el número de línea y dos caracteres para la declaración de DATOS tokenizada. Dado que la coma y los dos puntos son importantes para BASIC, también se necesita una comilla, dejando 73 caracteres para los datos. A siete bits por carácter, una línea de DATOS podría almacenar 511 bits de datos binarios, con una eficiencia del 79%. Si se utilizan números de línea de tres dígitos, la eficiencia aumenta al 80%. Si se utilizan números de línea de dos dígitos, la eficiencia es del 82%.
Para almacenar datos binarios en Commodore BASIC, parece que los números de línea de dos o tres dígitos suelen ser la mejor opción.
Se pueden representar 164 caracteres PETSCII entre comillas; Teóricamente, entonces, la Base 164 es posible. Esto agrega los valores de color, las teclas de función y los controles del cursor.
Q $195) En máquinas CBM anteriores a la VIC-20, el código chr$ genera el mismo carácter que chr$(44), la coma.
A $195) 108.
P $196) ¿El personaje descrito en $195 tiene alguna utilidad?
A $196) Para poner comas en cadenas leídas vía INPUT. Recuerde, INPUT trata una coma (chr$(44)) como un delimitador entre campos de entrada, pero chr$(108) no produce el mismo efecto, por lo que puede reemplazar 44 con 108 en los datos escritos en el disco y leerlos en con ENTRADA.