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
O valor de 8 bits enviado à porta 32765 serve para configurar:
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
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
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:
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:
ou, se estiver no modo 128 BASIC:
Um vez neste modo, não há como retornar ao modo 128 a não ser desligando a alimentação ou acionando o reset.
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.
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.