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_Length, FZXLength_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