Eletrônica
Caracteres de 6 bits
 
 
O demo BR?-TK-HUE! foi um excelente exercício de programação assembly no TK90X, que me rendeu   aprendizados preciosos. Se prestar atenção na fonte dos caracteres rolando (scroll) na tela em magenta, pode-se perceber que é mais estreita que o padrão do BASIC. 
A fonte da ROM do TK90X - gravada a partir do endereço 15616 (#3D00) - é constituída por caracteres de 8×8 pixels. A matrix representando os pixels é armazenada em 8 bytes, sendo que a posição horizontal é dada pelos bits 0 a 7 e a vertical, pelos bytes 0 a 7. 
| Bit  | 7  | 6  | 5  | 4  | 3  | 2  | 1  | 0  | 
|---|
| Sub-linha 0 | Byte 0 | 0  | 0  | 0  | 0  | 0  | 0  | 0  | 0  | 
| Sub-linha 1 | Byte 1 | 0  | 1  | 1  | 1  | 1  | 1  | 0  | 0  | 
| Sub-linha 2 | Byte 2 | 0  | 1  | 0  | 0  | 0  | 0  | 1  | 0  | 
| Sub-linha 3 | Byte 3 | 0  | 1  | 0  | 0  | 0  | 0  | 1  | 0  | 
| Sub-linha 4 | Byte 4 | 0  | 1  | 1  | 1  | 1  | 1  | 0  | 0  | 
| Sub-linha 5 | Byte 5 | 0  | 1  | 0  | 0  | 0  | 1  | 0  | 0  | 
| Sub-linha 6 | Byte 6 | 0  | 1  | 0  | 0  | 0  | 0  | 1  | 0  | 
| Sub-linha 7 | Byte 7 | 0  | 0  | 0  | 0  | 0  | 0  | 0  | 0  | 
Os caracteres usados na rotina de scroll do demo são mais estreitos, com 6×8 pixels. Se fosse criar uma nova fonte para os 96 caracteres ASCII, seriam necessários 768 bytes de RAM. Julguei este consumo de memória excessivo e resolvi usar outra abordagem. Na verdade, a técnica descrita a seguir foi baseado no capítulo 6 do livro "Machine code sprites and graphics for the ZX Spectrum: a complete guide to sprite coding" de John Durst (acessível neste link). 
Para converter um caractere de 8  para 6 bits, a solução é óbvia: basta descartar dois 
bits, o que pode ser feito facilmente com as instruções de deslocamento e rotação de 
bits do Z80. Como os caracteres do TK90X possuem espaçamento dos dois lados, poderia ser removido um deles, o 
bit 0 ou 7. Faltaria então remover somente mais um bit mas, qualquer que seja, acaba descartando parte do caractere. No livro citado, sugere-se remover o 
bit 4 que, especialmente para letras maiúsculas, não deforma tanto os caracteres, exceto as letras I, T e Y:
Observa-se ainda que os algarismos também ficam bons, exceto por 1 que fica assimétrico e 7, que é cortado.
Se for removido o 
bit 1, as letras minúsculas ficam melhores, exceto por b: 
Além disso, este é o melhor formato possível para o Y, embora fique meio baixinho. A solução neste caso, não muito elegante, é alterar diretamente um dos bytes desta letra. 
A remoção do 
bit 6 resulta formato melhor para vários dos símbolos, os algarismos 1 e 7 e as letras I e b: 
Finalmente, 0 e N, por terem uma linha oblíqua, somente fica bons se for removido o 
bit 2:
Elaborei a sub-rotina 
MakeChr6, disponível no código fonte  "BR-TK-HUE-P2.asm", que faz um modelo de caractere 6×8 a partir do modelo da ROM, descartando o 
bit 7 e um outro 
bit, a escolher entre 1, 2, 4 ou 6. Somente no caso da letra Y é feita uma modificação adicional no 
byte 1 para aumentar sua altura. O resultado fica quase perfeito: 
a não ser pelos símbolos & e ©, mas como não são tão importantes, foram deixados como estão. Na figura, a parte superior mostra os caracteres processados pela rotina e, na inferior, os originais da ROM. Na minha opinião, os caracteres 6×8 são mais agradáveis aos olhos.
A título de esclarecimento, caracteres de dimensão 6×8 não são algo inédito, pois há as bem conhecidas rotinas que imprimem de 40 a 42 colunas. O que considero como algo novo é o fato de não usar uma matriz extra de caracteres, economizando centenas de 
bytes de RAM. 
  
	loading...
	
  
- 
Grotesk
Apesar do nome sugerir algo grotesco, não é nada disso, trata-se de uma fonte FZX para o TK90X.   Esta é uma fonte bem grande, com altura de 32 pontos que corresponde a 8 linhas da fonte normal do TK90X. Grotesk é a maior das fontes FZX que conheço.... 
  
- 
Fzx Scroll Demo
Criei a rotina FZX Scroll para permitir o rolamento de um texto na tela do TK90X, usando fontes FZX. A ideia era que esta rotina fosse incorporada em um programa.   Para auxiliar quem não tem familiaridade em mexer com assembler, lanço agora o FZX Scroll... 
  
- 
Término
Eu fiz uma nova fonte em padrão FZX inspirada na Terminus.   Procurei restringir a altura dos caracteres em 8 pontos, para que possa caber dentro de uma linha de atributos de cores. Apesar dos pixels na tela do TK90X serem de alta resolução (192×256),... 
  
- 
Fontes Fzx Roundel
Roundel é um par de fontes (com e sem serifa) em padrão FZX com formato arredondado e de tamanho grade.   Roundel Sans Roundel Serif Originalmente estas fontes continham apenas caracteres do códigos 32 (espaço) a 127 (copyright). Para torná-las... 
  
- 
Editando Telas No Zx Paintbrush (parte 1)
O demo BR?-TK-HUE! resultou de um exercício para exibir figuras coloridas de dimensões maiores que o da tela do TK90X. Não digo que fui inteiramente bem sucedido, pois há problemas que causa cintilação na tela, o que me obriga a repensar sobre temporização. ... 
Eletrônica