terça-feira, 2 de fevereiro de 2016

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!

4 comentários:

  1. Show Flavio!!!! Fico lendo suas explicações quase sem nunca entender kkkk ASM não é para os fracos!!! :)))

    ResponderExcluir
  2. Amigos, obrigado pelas suas palavras. Vocês encorajam-me a manter este blog. ;)

    ResponderExcluir

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