sábado, 2 de fevereiro de 2013

Porta 32765 (#7FFD)

Apesar de já ter comentado sobre esta porta de entrada e saída (I/O) do Spectrum 128 e da TKMEM-128, julguei conveniente repetir, pois ajudará na compreensão da listagem BASIC publicada ontem.

Fonte: Wikipédia

Esta é uma das novas portas introduzidas no Spectrum 128 para acessar os hardwares que foram adicionados (no Spectrum 48 só havia a porta 254). Esta porta é somente de saída, isto é, só admite a operação de escrita através da instrução OUT do BASIC ou do Assembly.

O valor de 8 bits enviado à porta 32765 serve para configurar: 
  • bits 0 a 2 selecionam o banco de RAM da página 3;
  • bit 3 seleciona para exibição, o vídeo normal (0) ou o shadow video (1);
  • bit 4 seleciona ROM 0 (BASIC 128) ou ROM 1 (BASIC 48) da página 0;
  • bit 5, uma vez enviado valor 1, a porta 32765 não aceitará mais nenhum comando até o Spectrum ser desligado ou sofrer reset
  • D6-D7 não tem uso no Spectrum mas são usados no Pentagon e alguns outros clones.
O chaveamento da página 3 da memória, que compreende os endereços 49152-65535, é feito através do envio do valor binário entre 0 a %111, para selecionar os bancos de RAM de 0 a 7. Portanto o comando BASIC OUT 32765,3 ou OUT 32765,BIN 00000011 seleciona o banco de RAM 3.

O chaveamento de RAM requer alguns cuidados. Da forma como foi descrito o comando do exemplo acima, acaba-se selecionando a ROM 0 pois o bit 4 está com valor 0. Normalmente isto não é desejável e o melhor seria usar OUT 32765,19 ou OUT 32765,BIN 00010011 para selecionar o banco de RAM 3.

Após executado OUT para a porta 32765, todo o conteúdo de RAM nos endereços 49152-65535 são trocados devido ao chaveamento. Haverá problemas se a pilha de máquina do Z80 estiver nessa faixa, portanto a sua posição deve ser mudada através de comando como CLEAR 49151 (ou endereço menor).

Mais um cuidado a ser tomado, quando se está no modo 128 BASIC,  é atualizar a variável de sistema em 23388 com o último valor enviado para a porta 32765. Assim, para que funcione tanto no BASIC tanto na versão 48 com 128, é mais correto empregar:

POKE 23388,19: OUT 32765,19

A seleção entre o vídeo normal ou shadow, definido pelo bit 3 da porta 32765, não é muito útil na programação BASIC, pois não existe comando para imprimir no vídeo secundário. Além disto, não funciona no TK90X com a TKMEM e, assim, não será abordada nesta postagem.

O bit 5 desativa por completo a porta 32765 e deixa o computador no modo 48, sem acesso ao 128 BASIC nem aos 128KB de RAM. Neste modo a compatibilidade com o modelo antigo é máxima, o que é requerido por certos softwares. Pode ser feito com o comando:

OUT 32765,48

ou, se estiver no modo 128 BASIC:

SPECTRUM

Um vez neste modo, não há como retornar ao modo 128 a não ser desligando a alimentação ou acionando o reset.

Nenhum comentário:

Postar um comentário

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