Incompatibilidade no The Misha Megademo
Eletrônica

Incompatibilidade no The Misha Megademo


Notei uma inesperada incompatibilidade do "The Misha Megademo" que me impediu de lançar justo agora a versão TAP do AY Demos vol. 8.


Quando tentei rodar o arquivo TAP no TK90X ou TK95 com divIDE, o carregamento era interrompido com mensagem de erro. O comportamento é reproduzido no emulador Fuse com a ROM do TK90X.


A listagem do programa BASIC é protegida contra a listagem, o que me obrigou a usar o Basic Lister para examinar seu conteúdo. Como era esperado, há vários códigos de controle embutido no BASIC e, entre eles, a sequência INK #20 #00 (em decimal 16 32 0) no início das linhas, exceto na linha 0. Estes códigos são interpretados durante a exibição da listagem, como o caso da sequência 16 32 que instrui para imprimir em INK 32 (como este valor de ink está fora da faixa, resulta em código de erro e a listagem é interrompida).

Normalmente tais códigos são ignorados durante a execução do programa BASIC, portanto não afetariam seu funcionamento. Entretanto no caso dos TKs, foi atribuído ao código 0 a palavra-chave UDG (ausente no ZX Spectrum), que não é ignorado pelo interpretador BASIC. Durante a execução, o interpretador encontra o comando UDG e espera um argumento numérico que, por não existir, acaba causando a mensagem de erro de sintaxe. Algo semelhante ocorreria se houvesse um código 1 no meio do programa BASIC, pois corresponde ao comando TRACE. Este é o primeiro caso que vi de um programa incompatível com as ROMs do TK95 (e do TK90X).


A solução para esta incompatibilidade consiste em substituir a sequência de bytes 16 32 0 por 32 32 32 (três espaços). Acrescentando duas linhas BASIC listadas acima e rodando com GOTO 9000, todos os códigos de controle problemáticos são removidos.


A listagem acima é o resultado deste procedimento e, sem os códigos de controle, o conteúdo do BASIC fica todo visível. Agora basta apagar as linhas 9000 e 9010 e salvar o programa BASIC em arquivo TAP. Em testes, o programa assim modificado rodou normalmente com as ROMs dos TKs.

 Irei disponibilizar este demo modificado no AY Demos vol. 8. Aguardem!



loading...

- Ay Demos Vol. 8 Em Tap
Para os felizes possuidores da divIDE, trago o 8º disco da coleção AY Demos convertido para TAP.  Houve um atraso no lançamento deste volume devido ao problema do carregador BASIC do The Misha Megademo. Este demo também é incompatível com...

- Proteger Programa Contra Break
Uma medida obrigatória para proteger um programa e evitar sua listagem é não deixar que seja interrompida. Quando um programa BASIC é executado no TK90X, pode ser interrompido ao se pressionar a tecla BREAK (Caps-shift e Espaço). BREAK reseta computador...

- Reclaim
Experimente digitar o seguinte programa no seu TK90X: Pode ser que a listagem não fique clara na imagem, portanto estou repetindo abaixo:    10 FOR n=50000 TO 50009: READ a: POKE n,a: NEXT n   20 RAND USR 50000   30 DATA 237,91,83,92,42,75,92,195,229,25...

- Proteção De Programas Em Fitas: Constantes Numéricas
Eu já tive oportunidade, na série sobre adaptação de jogos para disquetes Beta 48, mencionar sobre proteção de programas BASIC contra listagem. Na ocasião, recomendei o uso do utilitário STK para poder carregar e listar tais programas. O que eu...

- 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...



Eletrônica








.