Eletrônica
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.
loading...
-
Registradores I E R No Fuse
O debugger do Fuse não permitia atribuir valores diretamente aos registradores I e R do Z80. Comentei sobre isto no fórum do World of Spectrum e logo fui atendido. Na última versão disponível no repositório Subversion já é possível atribuir...
-
Porta 32765 (#7ffd)
Apesar de já ter comentado sobre esta porta de entrada e saída (I/O) do Spectrum 128 e da TKMEM-128, julguei conveniente repetir, pois ajudará na compreensão da listagem BASIC publicada ontem. Fonte: Wikipédia Esta é uma das novas portas introduzidas...
-
Desativando A Autoexecução De Um Programa Basic
Esta postagem mostra uma aplicação prática de uso do debugger do emulador Fuse. Para examinar o conteúdo de um programa BASIC faz-se necessário interromper sua execução, mas nem sempre isto é possível, especialmente quando ele foi salvo com...
-
Debugger Do Fuse (parte 3)
Nesta 3ª parte desta série de postagens sobre o debugger do emulador Fuse, falarei sobre uma importantíssima ferramenta chamada breakpoint. Normalmente, para entrar no debugger e pausar a emulação, o usuário deve intervir manualmente acionando o...
-
Debugger Do Fuse (parte 1)
Lá nos idos dos anos 1980-90 hackear um jogo do TK90X significava carregar (da fita cassete!) programas tipo monitor/debugger e ficar copiando listagens disassembly a mão, num caderno. Depois criar os hacks e digitar num assembler para salvar... novamente...
Eletrônica