domingo, 3 de junho de 2012

Debugger do Fuse (Parte 2)

Dando sequência à série de postagens sobre o debugger do Fuse, desta vez trago informações sobre o comando set.


O comando set, semelhante ao LET da linguagem BASIC do TK90X, serve para atribuir valor para uma posição da memória, um registrador do Z80 ou uma variável. Na postagem passada mencionou-se que os argumentos numéricos podem ser números, expressões e registradores do Z80. Além destes, podem ser incluídas variáveis, sobre as quais haverá explicações mais adiante.

set [endereço] [valor]

Coloca valor de 8 bits na memória no endereço especificado, de forma semelhante ao POKE do BASIC. Esta forma permite alterar códigos de máquina presente na memória, inclusive os famosos POKEs de vidas infinitas em jogos. O endereço para o Spectrum de 16KB compreende a faixa entre 16384 a 32767 e, para 48KB, entre 16384 a 65535.

set [registrador] [valor]

Permite atribuir diretamente um valor a um registrador do Z80, que pode ser de uso geral isolado (A, F, B, C, D, E, H e L), par de registradores de uso geral (AF, BC, DE e HL), registrador alternativo (A', F', B', C', D', E', H', L', AF', BC', DE' e HL') ou registrador especial (PC, SP, IX, IY). Infelizmente não é possível atribuir os registradores especiais I e R , o registrador interno do modo de interrupção (IM 0, IM 1 ou IM 2), nem IFF1 e IFF2.

Deve-se lembrar que alterações erradas nos registradores poderá travar o Spectrum emulado, portanto use com cautela.

set $[variável] [valor]

O debugger admite armazenar variáveis cujo nome começa com cifrão seguido de letras. Uma variável pode ser criada e atribuída com o comando no formato acima. Depois de atribuída, a variável pode ser usada em todos os comandos (incluindo set) que aguardam um valor numérico ou uma expressão numérica.

As variáveis são úteis para armazenar valores frequentemente usados, numa forma mais fácil de memorizar. Por exemplo, ao invés de memorizar o endereço 23635, fica mais fácil atribuir um nome fácil de decorar com o comando set $PROG 23635, para depois se referir a esta variável do sistema BASIC como simplesmente $PROG.

Conclusão

O set tem bastante utilidade quando se faz hack de programas, nem que seja só para introduzir POKEs de jogos normalmente destinados à Multiface 1. Entretanto este comando pode ser empregado em diversas situações, de forma bastante proveitosa. Em postagens futuras eu mostrarei alguns exemplos práticos.

Atualização: continua na parte 3

Nenhum comentário:

Postar um comentário

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