Conjunto de caracteres ZX Spectrum - ZX Spectrum character set

O conjunto de caracteres ZX Spectrum conforme renderizado na fonte do sistema (não incluindo caracteres gráficos definidos pelo usuário).

O conjunto de caracteres ZX Spectrum é a variante do ASCII usado na família de computadores britânicos Sinclair ZX Spectrum . É baseado em ASCII-1967, mas os caracteres ^, `e DELsão substituídos por ↑, £ e ©. Ele também difere no uso de códigos de controle C0 diferentes do comum BSe CR, e faz uso dos 128 caracteres de bit alto além da faixa ASCII. O conjunto principal de caracteres imprimíveis e fontes do sistema do ZX Spectrum também são usados ​​pelo computador Jupiter Ace .

Caracteres imprimíveis

Captura de tela de um programa Sinclair BASIC que demonstra todos os pontos de código imprimíveis, incluindo palavras-chave BASIC e os caracteres gráficos definidos pelo usuário (definidos por padrão como cópias de AU).

US-ASCII padrão, 0x20–0x7F, está incluído no conjunto de caracteres Spectrum, exceto que o ponto de código 0x5E é uma seta para cima (↑) em vez de um circunflexo (^), 0x60 é o sinal de libra (£) em vez do acento grave (`) e 0x7F é o símbolo de copyright (©) em vez do caractere de controle DEL . Observe que o uso de 0x5E como ↑ também era o caso na versão 1963 mais antiga do ASCII. O sinal £ não foi mapeado para 0x23 como na variante britânica do ASCII ( ISO-646-GB ), permitindo o sinal de libra e o sinal numérico (#) simultaneamente. O caractere ↑ é o operador de exponenciação no BASIC do Spectrum , assim como o ^ que substitui em comparação com ASCII-1967 é usado para exponenciação em muitos outros dialetos do BASIC e outras linguagens de programação.

Além de 0x7F, o conjunto de caracteres Spectrum usa o intervalo de bits altos 0x80–0xFF para fins especiais. 0x80–0x8F contém os mesmos caracteres gráficos de bloco 2 × 2 que o conjunto de caracteres ZX80 e o conjunto de caracteres ZX81 possuem (em outros locais), também disponíveis no bloco Unicode de Elementos de Bloco. No entanto, o conjunto de caracteres padrão do ZX Spectrum não inclui os caracteres gráficos de bloco ZX80 / 81 50% pontilhados 1 × 2. Os pontos de código 0x90–0xA4 contêm os 21 caracteres gráficos definidos pelo usuário (UDG) originalmente e 0xA5–0xFF contêm palavras-chave BASIC com token como pontos de código únicos. No modo 128 BASIC introduzido posteriormente, isso foi alterado para 19 caracteres UDG terminando em 0xA2 seguidos pelos dois novos tokens SPECTRUMe PLAY. Código aponta 0xC7-0xC9 são os operadores de dois caracteres <=, >=e <>, da mesma forma tokenized em pontos de código individuais. Esses tokens permitem que um comando BASIC PRINTseja inserido com o pressionamento de uma única tecla Pno início de uma linha (ou seja, no modo de comando), que gerou 0xF6. Isso é exibido como a palavra PRINT- chave completa na tela, mas apenas um token de byte único é armazenado, de forma que apenas esse byte único precise ser analisado pelo interpretador ou salvo / carregado de armazenamento externo, como fita.

Todos os caracteres não-UDG Spectrum podem ser mapeados para Unicode . Os três caracteres não ASCII-1967 ↑, £ e © estão em U + 2191, U + 00A3 e U + 00A9. Os caracteres gráficos do bloco 2 × 2 estão no bloco Elementos do Bloco em U + 2580 – U + 259F, embora o suporte de fonte para o último não seja universal.

A forma dos caracteres UDG é mapeada para uma área de memória RAM e é inicializada para cópias de caracteres AU, mas pode ser redefinida arbitrariamente, por exemplo, usando o comando BASIC POKE. Como todos os caracteres na fonte do sistema, eles usam uma grade de 8 × 8 pixels armazenada em 8 bytes. Redefini-los altera sua aparência nas PRINTinstruções subsequentes , mas não altera nenhum caractere UDG já desenhado na tela. A localização da definição de um personagem UDG pode ser determinada com a função BASIC USRcom o personagem como o argumento, por exemplo, USR "A"para o primeiro. Por padrão, isso aponta para os últimos 168 (21 × 8) bytes de RAM nos endereços de memória 65368 (0xFF58) a 65535 (0xFFFF) para um espectro de 48K. A localização é apontada pela variável de sistema UDG, que pode ser encontrada no endereço de memória 23675/6 (0x5C7B / C) e pode ser alterada. O TK90X , um clone brasileiro do ZX Spectrum incluiu um aplicativo em ROM para editar graficamente esses caracteres UDG, junto com a funcionalidade de pré-carregar com letras acentuadas usadas em português. (Para isso, o TK90X definiu dois comandos básicos extras nos códigos 0 e 1, respectivamente "trace" e "udg")

A definição da fonte principal do sistema, 32 (espaço) a 127 (copyright), são referenciadas pela variável de sistema CHARS que pode ser encontrada no endereço de memória 23606/7 (0x5C36 / 7). É definido como 256 bytes menor que o primeiro byte do caractere de espaço, simplificando a fórmula para localizar um caractere para CHARS + 8 × ponto de código . O valor CHARS padrão é o valor 15360 (0x3C00), com a fonte do sistema no final da ROM do Spectrum no endereço 15616 (0x3D00) para 16383 (0x3FFF). Fontes alternativas inteiras podem ser carregadas na RAM e a variável CHARS re-apontada de acordo.

Códigos de controle

Na área de códigos de controle (a faixa C0), o Spectrum usa principalmente controles proprietários, como INK e PAPER para controlar a cor do primeiro plano e do plano de fundo. No entanto, os pontos comuns BSe de CRcódigo são iguais aos do ASCII. O cursor para baixo (0x0A, ASCII Line Feed) pode ser simulado com 32 espaços impressos com OVER 1 (sobreposição transparente) e o cursor para cima 0x0B (Tabulação vertical ASCII) pode ser simulado com 32 backspaces. A ROM do sistema tem uma falha que impede o funcionamento do cursor à direita em 0x09 (cf ASCII Horizontal Tabulation).

O código de controle 0x0E é usado para indicar que um número de ponto flutuante segue, para acelerar o processamento de texto. Em um programa Sinclair BASIC , as constantes numéricas são armazenadas como ASCII seguidas por um byte 0x0E e uma representação de ponto flutuante binário de 5 bytes. Ao listar um programa BASIC, apenas a parte ASCII é usada, mas em tempo de execução apenas a representação binária é usada. Alguns programas Spectrum exploram isso para ofuscar números, enquanto outros o fazem para economizar memória. Por exemplo, uma linha BASIC exibida como GO TO 10poderia conter os caracteres ASCII para os dígitos 1 e 0 seguidos por um byte 0x0E e a representação de ponto flutuante de 100 em vez de 10. Qualquer pessoa listando esse programa viu o número 10, mas quando executado o programa saltou para a linha 100.

Códigos indefinidos

Os intervalos 0x00–0x05, 0x07, 0x0A – 0x0C, 0x0F e 0x17–0x1F são indefinidos. Na maioria dos casos, eles produzirão um ponto de interrogação se impressos no visor. No entanto, eles podem ser usados ​​para representar seus valores numéricos literais em conjunto com certos códigos de controle: por exemplo, 0x10 + 0x07 define a cor da tinta (texto do primeiro plano) para a cor número 7 (branco).

Conjunto de caracteres

Conjunto de caracteres do espectro
0_ keypress 0_ personagem 1_ 2_ 3_ 4_ 5_ 6_ 7_ 8_ 9_ UMA_ B_ C_ D_ E_ F_
_0 TINTA   0 @ P £ p ZXSpectrum80.svg (UMA) (Q) VAL USR FORMATO LPRINT LISTA
_1 PAPEL ! 1 UMA Q uma q ZXSpectrum81.svg (B) (R) LEN STR $ MOVER LLIST DEIXAR
_2 INSTANTÂNEO " 2 B R b r ZXSpectrum82.svg (C) (S) PECADO CHR $ APAGAR PARE PAUSA
_3 BRILHANTE # 3 C S c s ZXSpectrum83.svg (D) (T) COS NÃO ABRIR # LEITURA NEXT
_4 video verdadeiro INVERSO $ 4 D T d t ZXSpectrum84.svg (E) (VOCÊ) BRONZEADO BIN PERTO # DADOS CUTUCAR
_5 vídeo inv SOBRE % 5 E você e você ZXSpectrum85.svg (F) RND ASN OU MERGE RESTAURAR IMPRESSÃO
_6 Caps Lock vírgula NO E 6 F V f v ZXSpectrum86.svg (G) INKEY $ ACS E VERIFICAR NOVO TRAMA
_7 editar ABA ' 7 G C g C ZXSpectrum87.svg (H) PI ATN <= BIP FRONTEIRA CORRE
_8 deixou deixou ( 8 H X h x ZXSpectrum88.svg (EU) FN LN > = CÍRCULO PROSSEGUIR SALVE 
_9 direito direito ) 9 eu Y eu y ZXSpectrum89.svg (J) APONTAR EXP <> TINTA DIM ALEATÓRIA
_UMA baixa * : J Z j z ZXSpectrum8a.svg (K) SCREEN $ INT LINHA PAPEL REM E SE
_B pra cima + ; K [ k { ZXSpectrum8b.svg (EU) ATTR SQR ENTÃO INSTANTÂNEO PARA CLS
_C excluir , < eu \ eu | ZXSpectrum8c.svg (M) NO SGN PARA BRILHANTE VAMOS PARA DESENHAR
_D entrar entrar - = M ] m } ZXSpectrum8d.svg (N) ABA abdômen PASSO INVERSO GO SUB CLARO
_E ampliar número . > N n ~ ZXSpectrum8e.svg (O) VAL $ OLHADINHA DEF FN SOBRE ENTRADA RETORNA
_F gráficos / ? O _ o © ZXSpectrum8f.svg (P) CÓDIGO DENTRO GATO FORA CARREGAR CÓPIA DE

Veja também

Notas

Referências

links externos