Eletrônica
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 origina-se no consumo maior de RAM pelo
Beta DOS (
TRDOS). Quando o sistema é inicializado, 112 bytes são consumidos, para conter as diversas variáveis necessárias ao funcionamento. As operações com disco consomem temporariamente 256 bytes do
buffer de impressora e, no caso de comandos como COPY e MOVE, mais 256 a 4096 bytes são alocados, dependendo da memória disponível.
No caso do
Motos, a instrução
CLEAR 24575
faz com que haja 821 bytes disponíveis para o BASIC, sem o DOS. Descontando os 112 bytes das variáveis do TR-DOS, restariam apenas 709 bytes, o que é um espaço muito pequeno. Portanto o programa BASIC deve ser otimizado para consumir menos memória possível.
Existem alguns procedimentos que economizam memória, quando for escrever um programa BASIC:
- cada linha de programa consome 5 bytes, portanto se deve colocar o máximo de comandos na mesma linha, separados por dois pontos (:);
- cada constante numérica possui associada 6 bytes ocultos da listagem, portanto é interessante que seja substituída por string correspondente (por exemplo, a constante
24575
deve ser substituída pela expressão VAL "24575"
); - deve-se evitar o uso de variáveis com nome maior que uma letra;
- a constante 0 pode ser substituída por NOT PI;
- a constante 1 pode ser substituída por SGN PI;
- a constante 2 pode ser aproximada por SQR PI;
- a constante 3 pode ser aproximada por PI ou INT PI;
- a constante 10 pode ser aproximada por PI*PI;
- a constante 23 pode ser aproximada por EXP PI.
Seguindo as recomendações, a listagem abaixo:
10 CLEAR 24575
20 RAND USR 15363: REM : LOAD "MOTOS1"CODE 16384
30 INK 0: PAPER 0: PRINT AT 0,0;
40 RAND USR 15363: REM: LOAD "MOTOS2"CODE
50 RANDOMIZE USR 32768
torna-se:
10 CLEAR VAL "24575" : RAND USR VAL "15363": REM : LOAD "MOTOS1"CODE 16384
20 INK NOT PI: PAPER NOT PI: PRINT AT NOT PI,NOT PI;
30 RAND USR VAL "15363": REM: LOAD "MOTOS2"CODE
40 RANDOMIZE USR VAL "32768"
Não se pode deixar todos os comandos na mesma linha por causa do USR 15363 que invoca as rotinas do TR-DOS, pois o que vem depois de REM não seria interpretado pelo BASIC. Por outro lado, a linha 20 pode ser suprimida, pois serve só para evitar que a tela seja arruinada durante o carregamento da fita. Como este problema não ocorre no carregamento do disco, pode ser deletada e economizar mais memória:
10 CLEAR VAL "24575" : RAND USR VAL "15363": REM : LOAD "MOTOS1"CODE 16384
30 RAND USR VAL "15363": REM: LOAD "MOTOS2"CODE
40 RANDOMIZE USR VAL "32768"
Para saber a quantidade de memória ocupada por um programa BASIC, digite o comando:
PRINT PEEK 23627+256*PEEK 23628-PEEK 23635-256*PEEK 23636
loading...
-
Menor Valor De Ramtop Com Beta 48/128
Uma das aplicações de compressores como Lerm Code Compressor 1 ou o mais recente ZX7, é liberar espaço para o carregador BASIC. Sobra a pergunta: qual espaço mínimo é necessário para o programa BASIC? Fonte: Wikipédia O endereço de início do...
-
Auf Wiedersehen Monty
Eu adaptei o Auf Wiedersehen Monty da Gremlin Graphics para Beta 48 (e 128 também). Em modo 128K, este jogo tem som para a Explorer. O carregador BASIC detecta quando há RAM extra, seja no Spectrum 128, ou com a TKMEM-128. A listagem é: 10...
-
Midnight Resistance: Adaptando Jogo Para Tkmem 128 E Beta 48
A adaptação de jogos para Spectrum 128 para um TK90X com a TKMEM 128 e a Beta 48 envolve procedimentos bastante parecidos com os que foram explicados nos tutoriais anteriores. O principal diferencial é a necessidade de carregar os diferentes banco...
-
Dica: Programa Que Funciona Para Beta 48 E 128
Fonte: World of Spectrum As interfaces de drives Beta 48, comuns no Brasil, e Beta 128, amplamente adotadas no leste europeu possuem pontos de entrada para comandos do DOS em endereços diferentes. Por exemplo, o programa BASIC para o Beta...
-
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...
Eletrônica