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