Houve uma aura mítica sobre o código de máquina e o
assembly, pelo qual eu também era deslumbrado. Talvez ainda hoje haja esse deslumbramento entre os fãs de retrocomputação. O interessante em aprender esta linguagem é que permite conhecer bem o funcionamento do computador, mas, para ser sincero, é bastante difícil ser produtivo e fazer algo de útil. No fundo, o que o Z80 faz é transferir bytes de um lugar para outro (registradores, memória ou periféricos), algumas operações simples (adição, subtração e operações booleanas) e desvios no execução do código de máquina. Os desvios (JP, JR, CALL e RET) são particularmente complicados, em especial os condicionais que se baseiam nos
flags, cujos comportamentos não são muito intuitivos. Em outras palavras, os desvios condicionais não tem a clareza de uma cláusula "IF ... THEN GOTO ..." (apesar dos cientistas da computação abominarem o GOTO).
Na hora de programar, é muito mais fácil usar uma linguagem de alto nível, como o próprio BASIC do TK90X. Nas linguagens de alto nível, várias operações e funções estão já prontas e disponíveis, a depuração é mais fácil pois vários erros são detectados pelo monitor, existem estruturas sofisticadas de controle de fluxo de execução (IF e THEN, FOR e NEXT, GOSUB, etc.) e, portanto, torna-se mais fácil escrever um programa. Em
assembly, as operações e funções devem ser elaboradas praticamente a partir do zero. O uso de rotinas prontas ajuda bastante mas, se não houver uma boa documentação, fica muito difícil entender o que elas fazem, pois decifrar algo em
assembly feito por outro programador é um grande desafio.
Apesar disto existe uma grande vantagem de um programa de código em máquina, que é a sua grande velocidade de execução. Linguagens interpretadas como o BASIC Sinclair, apesar de poder em tese fazer praticamente tudo que se faz em
assembly, é bastante lenta face às limitações da máquina. Uma solução intermediária seria usar uma linguagem de alto nível em que o programa é compilado, isto é, convertido para a linguagem de máquina. Existem alguns bons compiladores BASIC para o TK90X. Mesmo assim, a programação direta em
assembly consegue produzir rotinas melhor otimizadas em velocidade e consumo de memória.
Confesso que nunca fiz projetos grandes em
assembly, exceto pelo programa
Beta Boot Menu. Mesmo assim é um conhecimento importante, especialmente para quem quer modificar programas. Para quem quiser aprender esta linguagem, uma sugestão é baixar a versão em português (apesar dos termos lusos
écran ou
ficheiro) do livro no
World of Spectrum.
Devo mencionar ainda que o Cláudio Cassens, quando esteve aqui em Curitiba, presenteou-me com o livro original inglês, o
"Mastering machine code on your ZX Spectrum". Foi uma grande alegria ter recebido este presente, guardo-o com carinho na minha estante. Qualquer hora eu tenho que comparar os livros, para ver se na tradução alguma coisa foi perdida.
Dados bibliográficos
BAKER, TONI. O domínio do código de máquina no ZX Spectrum. Tradução de Maria da Luz Martins. Lisboa/São Paulo: Editorial Verbo, 1985.
loading...
Embora tenha havido (ainda há, talvez) certa mistificação em torno da programação assembly, não é algo tão difícil aprender a usar as instruções do Z80. O problema maior é que estas instruções fazem operações muito elementares, o que obriga...
BR-Linux, Slashdot e outros sites comemoraram adiantado os 50 anos da linguagem BASIC, completados hoje, no dia do Trabalho. Na figura acima, há uma listagem com um exemplo de programa em BASIC no TK90X. Certamente um número enorme de pessoas...
Depois de dominar o BASIC do TK90X, o sonho de muitos usuários era dominar o assembly (também conhecido como assembler, mas este termo é mais apropriado para se referir ao programa que converte os mnemônicos para o código de máquina). ...
Um dos livros que eu uso com grande frequência é O sistema operativo do Spectrum: ROM disassembly de Ian Logan e Franck O'Hara. Pela capa do meu exemplar dá para notar que foi bastante manuseado e, mesmo encapado em plástico, está judiado....
Até a parte anterior apresentamos procedimentos como se fosse efetuados em um TK90X real, os quais valem também para qualquer emulador. Na sequência, estaremos cada vez mais explorando os programas que têm algum esquema de proteção de gravação...