Infelizmente, nenhum programa meu de 1997 sobreviveu. Foram muitas mudanças, disquetes estragados e HDs com bad blocks. Os mais antigos que sobreviveram são de outubro de 2000: macros escritas em VBA para o Excel. Mas lembro de alguns que eu fiz naquele ano.

A totalidade deles, claro, não tinha propósito prático. Todos eram exercícios: era só para ver o que e como as coisas podiam ser feitas.

Um deles era um jogo de corrida. Não se animem! Era feito em modo texto mesmo. O corredor era representado por uma carinha feliz. Como eu conseguia uma carinha feliz? Muito simples, o QBASIC trazia na documentação a primeira tabela ASCII que eu vi:

A carinha feliz ficava, verticalmente, no centro da tela. O usuário podia deslocar a carinha para a esquerda e para a direita. A pista vinha de cima para baixo e não era de largura constante. Usando minhas lembranças de River Raid, o combustível ia acabando e você tinha que passar por cima de um postinho de gasolina para reabastecer. As pistas eram lidas de arquivos de configuração. Claro que este tipo de programa já demandava funcionalidades que não eram explicadas pelo Micro Computador – Curso Básico. Mas a ajuda do QBASIC era excelente e eu lia com avidez. Veja um exemplo para tratar teclas do teclado:

Um dia descobri que era possível tocar não apenas um som simples com o comando BEEP. Era possível tocar melodias inteiras com o comando PLAY. Quem escreveu a documentação gostava de Beethoven (não que eu soubesse disso à época) então havia exemplos como MBT180o2P2P8L8GGGL2E-P24P8L8FFFL2D (ouça) e MBo3L8ED+ED+Eo2Bo3DCL2o2A e (ouça). Como eu entendia menos ainda de música do que entendo hoje, eu não sabia fazer musiquinhas bonitas. Mas uma vez fiz um piano. Eu mudava o modo de tela (SCREEN 2?) e desenhava um piano toscão e depois aguardava o usuário digitar teclas que correspondessem às notas musicais.

Eu fuçava muito na questão da memória. O QBASIC, embora se de alto nível, permite que você leia e escreva endereços de memória de forma direta usando PEEK e POKE. Eu escriva programas que varriam a memória em busca de coisas interessantes… em geral não dava em nada. Eu descobri também que existia a instrução BLOAD, que carrega um arquivo e joga ele numa posição específica da memória.

De posse dos meus conhecimentos prévios acerca da estrutura dos arquivos de imagem, eu resolvi fazer uns testes. Uma vez eu criei um texto tridimensional num dos programas do CorelDRAW. Eu rotacionava um pouco o texto ao longo de um dos eixos e exportava uma imagem; após repetir o processo várias vezes, eu tinha uma animação completa do texto. No QBASIC, eu lia os dados das imagens, convertia para um formato mais apropriado e depois salvava em arquivos. Por fim, era só usar o BLOAD para jogar o conteúdo do arquivo exatamente na região da memória responsável pela saída de vídeo. Usando este mecanismo, era possível exibir a animação bem rápido na tela, um contraste com todo o resto no QBASIC, que era bem lento.

Não sei dizer como eu encontrei o endereço certo de memória para jogar os arquivos. Talvez tenha sido um pouco depois de 1997… mas com certeza antes de eu ter acesso à internet.

Por fim, teve um programa que eu fiz — bem simples, mas com um efeito visual que eu gostava: ele desenhava círculos de cores aleatórias, que iam crescendo. Recriei o CIRCULOS.BAS:

SCREEN 12

FOR I = 1 TO 50
  X = CINT(RND(1) * 639)
  Y = CINT(RND(1) * 479)
  RAIO = 10 + CINT(RND(1) * 200)

  FOR R = 1 TO RAIO
    COR = 1 + CINT(RND(1) * 14)
    CIRCLE (X, Y), R, COR
    IF INKEY$ <> "" THEN
      GOTO SAIR
    END IF
  NEXT R

NEXT I

SAIR:

O resultado é este: