Eletrônica
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 autoexecução ativada (comando SAVE "nome" LINE linha_inicio).
Existem várias maneiras de se fazer isto, como usar o comando MERGE "" com a RAM limpa. Entretanto o MERGE não é infalível, pois o TK90X trava se houver um número de linha ilegal. Um jeito interessante é usar o comando Z (BLOAD) do utilitário STK (pode ser encontrado no World of Spectrum). Aliás o STK foi produzido por um brasileiro e é um excelente utilitário, merece uma postagem própria. Apesar de tudo isso, a proposta desta postagem é apenas mostrar como fazer algo equivalente com o debugger.
Antes de qualquer coisa, entre no debugger (no menu: Machine > Debugger...). Crie um breakpoint (endereço em que a emulação é interrompida quando executada) no endereço 2053, digitando o comando br 2053. Saia do debugger e carregue o programa desejado com o comando LOAD ""; a emulação é interrompida logo em seguida à carga e abre-se a tela do debugger.
Digite então o comando set 23619 128 e saia do debugger. Magicamente retorna-se à linha de edição do BASIC e o programa se torna disponível para ser listado e editado.
Eu vou explicar melhor. O endereço 2053 na ROM fica imediatamente após um programa ser carregado da fita, antes de voltar para ao interpretador BASIC. O comando set do debugger do Fuse é igual ao POKE do BASIC do TK90X e, neste caso, altera a variável de sistema LNJMP/NEWPPC desviar a execução para uma linha acima de 32768, que não deve existir em nenhum programa real (números de linhas legais compreendem valores entre 1 a 9999).
Acredito que esta dica pode ser usada em qualquer emulador com funcionalidade de debugger, mas não posso dizer com propriedade, pois só uso o Fuse.
loading...
-
Adaptação De Jogos De Fita Para Beta 48 (parte 9)
O método mais seguro para quebrar as proteções de jogos salvos em fitas é analisar o carregamento desde o início, incluindo um exaustivo disassembly do código de máquina. Entretanto por vezes é vantajoso economizar esforços com alguns truques....
-
Adaptação De Jogos De Fita Para Beta 48 (parte 8)
Hoje eu fiz a adaptação de Rogue Trooper para o Beta 48 e, como venho elaborando uma série mostrando como se faz isto, aproveito para apresentar mais uma técnica. Deste vez abordarei como usar visualizador de memória do emulador Fuse. Apesar de mostrar...
-
Adaptação De Jogos De Fita Para Beta 48 (parte 4)
Na parte 3, o jogo Motos teria sido adaptado para funcionar em disquete Beta 48. Só que ficou faltando um detalhe: como ter acesso à listagem do programa carregador em BASIC? A resposta mais simplista seria pressionar BREAK antes que ocorra o carregamento...
-
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