Eletrônica
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 do bloco seguinte. Assim, o programa seria interrompido e o seu conteúdo seria disponível para listagem e edição.
Entretanto é possível fazer com que um programa não possa ser interrompido, modificando certas variáveis de sistema; um BREAK nestas condições produz travamento do computador. Para contornar esta proteção, pode-se carregar o programa com MERGE ""
, ao invés do LOAD. Entretanto é possível criar um programa BASIC protegido contra o MERGE, alterando via POKE o número de uma linha ou o valor de seu comprimento.
Um método eficaz quando se está usando um emulador foi explicado anteriormente neste blog. Outro método igualmente eficaz, mas que funciona também no TK90X real, é usar o programa STK que também foi comentado anteriormente. Uma vez instalado o utilitário na RAM, use o comando Z BLOAD para carregar um programa BASIC sem que seja automaticamente executado.
Agora que foi encontrada uma forma de parar o programa BASIC logo após seu carregamento, o problema estaria resolvido, certo? Não, pois existem formas de proteção que é precisamente tornar a sua listagem ilegível.
Protegendo programas contra listagem
Para entender como desproteger um programa, é instrutivo aprender como fazer sua proteção. Digite o seguinte programa no TK90X:
10 REM xxxxxxx
20 LET b=PEEK 23635+256*PEEK 23636+6
30 FOR e=b TO b+6: READ a: POKE e,a: NEXT e
40 DATA 22,0,0,16,7,17,7
Logo após digitá-lo, use o comando
LIST
para ver a listagem que deve ser igual ao que está acima. Em seguida rode-o com
RUN
e liste novamente. Não será mais possível ver nada da listagem anterior. O truque situa-se na linha
REM
, em que cada caractere x (xis) foi substituído, via
POKE
, em códigos de controle de impressão do TK90X. Os códigos 22, 0 e 0 correspondem a
AT 0,0;
que posiciona o cursor no início da tela, os códigos 16 e 7 correspondem a
INK 7
(branco) e os código 17 e 7 a
PAPER 7
(branco).
Experimenta agora apagar a linha 10, digitando
10
seguido de
ENTER
. Novamente a listagem reaparecerá, porém sem (obviamente) a linha 10, pois os códigos de controle foram removidos. Entretanto num cenário mais real, esses códigos de controles estarão espalhados em várias linhas, o que torna sua remoção mais trabalhosa. Portanto o ideal seria poder obter uma listagem "limpa", em que não haja a interferência desses códigos.
Novamente é o utilitário STK é que vem a nos salvar, com o comando
L LIST. Como no comando homônimo do BASIC, LIST admite especificar o número de linha a partir da qual será feita a listagem, sem que os códigos de controle obscureçam o conteúdo.
Por exemplo, o relançamento do
Fairlight pela
Micro Selection não é protegido com o esquema
Alkatraz do original da
The Edge, mas seu carregador BASIC está protegido contra a listagem. Carregue inicialmente a primeira parte da fita com o comando
Z BLOAD do STK. Uma vez no BASIC, fica evidente que não se pode ver nada com o LIST. Entre outra vez no STK e acione o comando
L LIST que terá fácil acesso à listagem:
1 PAPER 0: INK 0: BORDER 0: POKE 23624,0: CLEAR 25499: POKE 23659,0:
PRINT AT 11,8; PAPER 6;"LOADING FAIRLIGHT": LOAD "raven"SCREEN$ :
PAPER 8: INK 8: BRIGHT 8: OVER 1: PRINT AT 0,0: LOAD ""CODE: RAND USR
50300
A partir deste ponto, a adaptação será facilmente feita com as técnicas já citadas anteriormente. O jogo já adaptado pode ser encontrado no Google Drive e no 4 Shared, experimente examinar sua listagem para aprender mais.
loading...
-
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....
-
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...
-
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 3)
Na parte 2 eu prometi comentar os esquemas de proteção de jogos gravados em fitas cassetes mas, como interlúdio, abordarei um assunto igualmente importante: o consumo de memória. Uma das dificuldades encontradas na adaptação de programas...
-
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