sexta-feira, 9 de setembro de 2022

Programa para fazer grade na tela e USR "a"

No artigo sobre a estrutura da tela do TK90X, fiz um programa BASIC para criar a tela abaixo.

Segue a respectiva listagem:

 10 FOR n=0 TO 7
 20 LET u=BIN 10000000: IF n=0 THEN LET u=BIN 11111111
 30 POKE USR "a"+n,u
 40 NEXT n
 50 PRINT AT 0,0;
 60 FOR n=1 TO 704: PRINT CHR$ 144;: NEXT n
 70 PRINT #0;AT 0,0;
 80 FOR n=1 TO 64: PRINT #0;CHR$ 144;: NEXT n
 90 LET p=0: OVER 1: PRINT AT 0,0;0
100 FOR n=0 TO 31
110 PRINT AT 0,n;p;
120 IF n<22 THEN PRINT AT n,0;p;
130 LET p=p+1: IF p=10 THEN LET p=0
140 NEXT n
150 PRINT #0; OVER 1;AT 0,0;2;AT 1,0;3
160 PAUSE 0

No lugar de PLOT ou LINE, optei por usar um gráfico definido pelo usuário, o famoso UDG. A construção do UDG é feita nas linhas 10 a 40 do programa.

USR string

Talvez o leitor estranhe a linha 30, se considerar que a função USR executa um código de máquina a partir do endereço fornecido como argumento. Então o que seria esse USR que aceita um string como argumento?

Uma outra sintaxe pouco conhecida de USR é que pode aceitar como argumento um string. O string deve conter um caractere de "a" a "u" (pode ser letra maiúscula ou minúscula) e a função irá retornar o endereço do primeiro byte do respectivo caractere. Por exemplo, PRINT USR "u" irá imprimir normalmente o endereço 65528 no TK90X de 48K.

A utilidade dessa forma de se usar USR é para facilitar o POKE na hora de definir os UDGs. Um exemplo dessa aplicação está no próprio programa apresentado acima.

Um comentário:

Seu comentário é bem vindo, mas peço que use este espaço adequadamente.