FZX Length
Eletrônica

FZX Length


Uma dificuldade de fontes proporcionais como FZX é o fato de não ser fácil calcular o tamanho que um string irá ocupar quando impresso na tela.


No BASIC do TK90X, existe a função LEN que permite calcular o tamanho de um string. Como os caracteres da ROM do BASIC têm as mesmas larguras (8 pixels), fica fácil saber qual e espaço ocupado por um certo número de caracteres. Também é conhecido que uma linha da tela comporta um máximo de 32 caracteres. Com tais dados, fica fácil criar alguns efeitos na impressão, como a centralização ou alinhamento à margem direita.

Entretanto cada caractere de uma fonte proporcional tem largura diferente, portanto não basta saber o número de caracteres para formatar a impressão, pois é necessário saber seu comprimento de número de pixels. Criei a sub-rotina em linguagem de máquina FZX_Length para esta finalidade que, fornecendo os dados da string (HL=endereço inicial e BC=comprimento), retorna no par de registrador DE o comprimento em número de pixels. A fonte desta sub-rotina encontra-se no arquivo FZX_Length.asm, que pode ser incluído em programas assembly.

Nem todo programador tem intimidade com o assembly, portanto criei também uma interface com o BASIC que é o FZXLength_Basic. Uma vez com o FZX Driver instalado e inicializado e com uma fonte FZX localizada no endereço 60000, deve-se carregar FZXLength_Basic a partir de 59800. Para usá-lo, dever-se ter uma função definida pelo usuário no BASIC, como no exemplo:

  10 DEF FN l(a$)=USR 59800

Esta função pode ser empregado a qualquer momento no programa BASIC, retornando o número de pixels ocupado por um string. Por exemplo:

  50 LET a$="Qualquer string": PRINT FN l(a$)

imprimirá na tela o comprimento do string a$.

Com o uso desta função e do comando AT, é possível alinhar um string no centro:

  60 PRINT #4; AT 20,128-FN l(a$)/2;a$

ou na margem direita:

  70 PRINT #4; AT 20,256-FN l(a$);a$

Assim, creio que tenha ficado claro como foi impresso strings na tela da figura no topo desta postagem. Um lembrete: o PRINT #4 é empregado no FZX Driver para imprimir caracteres em fonte FZX na tela.

Para baixar o arquivo ZIP contendo  FZX_LengthFZXLength_Basic,  programa demo, documentação e código fonte, acesse este link. Agora não há mais desculpas para imprimir no TK90X com a fonte sem graça da ROM do BASIC.



loading...

- 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. ...

- Número Aleatório Por Xor-shift
Apresento a sub-rotina de geração de número pseudoaleatório que foi usada na minha parte do demo Mission Highly Improbable.  Anteriormente mostrei a sub-rotina de Phantom Club para a mesma finalidade, porém a qualidade da sequência gerada...

- Fzx
FZX é uma nova especificação para arquivo de fontes para TK90X, que permite maior flexibilidade de tamanho e providencia impressão com espaçamento proporcional. Este padrão foi criado por Andrew Owens e toda a especificação está contido nos...

- Reclaim
Experimente digitar o seguinte programa no seu TK90X: Pode ser que a listagem não fique clara na imagem, portanto estou repetindo abaixo:    10 FOR n=50000 TO 50009: READ a: POKE n,a: NEXT n   20 RAND USR 50000   30 DATA 237,91,83,92,42,75,92,195,229,25...

- Adaptação De Jogos De Fita Para Beta 48 (parte 2)
Na parte 1 dei o ponta-pé inicial falando sobre a correspondência de comandos entre o BASIC do TK90X e o DOS Beta (ou TRDOS). Entretanto estamos longe de termos adaptado algum jogo, pois os arquivos devem ainda ser salvos no disco. As...



Eletrônica








.