Naquele ano de 1997 eu também descobri que existiam arquivos binários.

Quando o Djalma vinha instalar ou consertar alguma coisa, eu ficava fazendo perguntas para ele — e um dia lembro de explicar a ele que eu abria certos arquivos no Word (arquivos executáveis, por exemplo) e eu só via páginas e mais páginas de lixo. Depois perguntei a ele: o que são essas páginas todas?

Mas o Djalma já estava de saída e disse muito brevemente algo do tipo, “é isso que faz o computador funcionar.”

Eu ficava intrigado com aquilo e ao longo do tempo fui entendendo que aqueles arquivos continham código de máquina. Já no primeiro fascículo daquele Micro Computador – Curso Básico, eles diziam:

“Como esse tipo de programação é difícil e cansativo, alguns técnicos elaboraram programas (em linguagem de máquina) que traduzem palavras inglesas, como PRINT (imprimir), BEEP (alarme), LOAD (carregar) e LIST (listar), em instruções de código de máquina que o computador pode usar.”

Eu também descobri que modificar arquivos binários no Word não era uma boa ideia. Nem no QBASIC. Eles simplesmente estragavam os arquivos.

Mas aos poucos eu fui entendendo o que era DOS e Windows, o que era uma interface gráfica e o que era uma de texto, e também para que servia a linha de comando. E um dia então meus problemas foram resolvidos: encontrei o EDIT.

O EDIT era um editor que tinha a opção de abrir arquivos em modo binário. E ele não apenas não estragava o arquivo quando ele era salvo, mas também mostrava o valor do byte em que o cursor estava. E, de quebra, ele tinha a opção de abrir um arquivo em modo binário pela linha de comando; eu lembro de usar muito o EDIT /78, que instrui o EDIT a abrir o arquivo em modo binário e mostrar os dados em 78 colunos (80 menos as bordas laterais).

Com este editor eu podia fazer alguns experimentos.

Por exemplo, eu executava EDIT /78 MK.EXE e “traduzia” os textos do programa, assim:

Outra coisa que eu fazia era editar arquivos de imagens (extensões BMP, ICO, CUR) para entender qual era a estrutura do arquivo. Então quando eu abria uma imagem no EDIT, digamos esta:

O EDIT me mostrava isso:

No terceiro e quarto bytes, por exemplo, o EDIT informa que os valores são 62 e 150. Não por coincidência, 150 × 256 + 62 = 38.462, que é justamente o tamanho do arquivo. Mais para frente, no décimo-nono e vigésimo bytes, os valores são 2 × 256 + 128 = 640, que é a largura da imagem. Eu alterava os pixels das imagens e depois abria no paint para ver o que acontecia, como os valores RGB são codificados, etc. Muita coisa de little endian, alinhamento na memória, esse tipo de coisa, eu aprendi dentro do EDIT.