quarta-feira, 18 de abril de 2012

Sound Demo 04 para Beta 48

Desta vez a adaptei para disco padrão Beta 48 para TK90X, o programa de autoria de Theo Devil, intitulado Sound Demo 04. Este beep demo faz parte de uma coleção feita para a revista Sinclair User, num total de 10 volumes, mas nem todos foram publicados devido ao cancelamento do periódico. 

Um problema adicional deste programa é ser disponível somente em formato Z80 que, ao contrário de TAP ou TZX, não é imagem de fita cassete. O arquivo Z80 é um snapshot, isto é, uma representação instantânea de toda a RAM do TK90X, mais dos registradores do microprocessador. Faz-se necessário portanto uma certa investigação para poder transferir o conteúdo para o disco. 

Logo depois de carregar o arquivo SDEMO04.Z80, aparece a tela abaixo e ouve-se um BEEP longo.


Na sequência, abre-se a tela do demo. 



Para descobrir sobre o conteúdo do arquivo Z80, a primeira tentativa é o utilitário listbasic que acompanha o emulador Fuse. Quando se executa este utilitário no shell do Linux, aparece:


Existem alguns comandos LOAD e SAVE não usuais, provavelmente para Microdrives ou discos do Spectrum +3. O importante é que na linha 2 aparece uma instrução BEEP, pois há uma chance de que o snapshot tenha sido congelado justamente durante a sua execução. Se assim for, há uma chance de interromper o programa pressionando a tecla BREAK. Foi isto que ocorreu, sendo possível então listar o programa BASIC que se torna visível após INK 9:


Fica claro que o código de máquina está localizado acima do endereço 24500 (#5FB4), então bastaria salvar toda a RAM a partir deste ponto. Entretanto isto poderia representar um desperdício de espaço de disco, pois seria pouco provável que esta demo ocupasse toda essa memória. 

Utilizando a opção Machine > Memory browser do menu do Fuse, torna-se possível varrer toda a RAM acima de 24500:


Observou-se que o último byte do código de máquina situa-se em #9B53 (39763), pois acima deste a RAM está limpa. Na verdade no final da RAM, a partir de #FF0A (65290), há alguns bytes diferentes de 0, certamente os mapa de bits dos caracteres UDG e resíduos da pilha da CPU antes da instrução CLEAR. Portanto para salvar o código de máquina no disco TRD virtual, basta usar no DOS o comando:
SAVE "SDEMO04"CODE 24500,39764-24500.

Isto feito, basta criar um pequeno carregador BASIC, cuja listagem é dada a seguir, e salvá-lo no disco.


Talvez alguns leitores não estejam tão interessados em todo esse papo e queira só baixar os arquivos. Os arquivos em formato Hobeta estão disponíveis neste link do 4 Shared (infelizmente é necessário ter uma conta lá, mas o registro é gratuito).

Nenhum comentário:

Postar um comentário

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