Fiquei um tempo sem postar, mas não quer dizer que estava parado no hobby. Eu e o Eduardo Luccas estivemos testando a interface de 128KB para o TK90X, a TKMEM-128, para vermos as suas possibilidades e limitações. Interessante é que nós nunca nos encontramos pessoalmente, e muito menos com o autor original da expansão, o Velesoft da República Tcheca.
Fonte: Wikipédia. |
Por eu ainda não possuir esta expansão, todo o trabalho tem sido feito no emulador Fuse. Para simular o TK90X com TKMEM, seleciono o modo Spectrum 128 (Machine > Select > Spectrum 128K):
com ambas as ROMs definidas como de TK90X (Options > Select ROMs > Spectrum 128K...).
Não há como desativar a 2ª página de vídeo (shadow video) na emulação, característica que está ausente no TK90X com TKMEM. Outra incompatibilidade é a ausência da interface Beta 48, por isso eu uso como quebra-galho a emulação da Beta 128. Concluindo, o fato de funcionar no emulador não é garantia de sucesso no TK real.
O funcionamento das 128K de RAM está bem descrito neste FAQ (em inglês), mas farei mesmo assim uma descrição resumida. O Z80 consegue endereçar no máximo 65536 bytes (64 KB), portanto no Spectrum 128 foi criado um circuito extra para contornar esta deficiência. Para entender melhor, é necessário introduzir alguns conceitos.
O primeiro conceito é o de página de memória. Uma página é uma região contínua de endereço de memória diretamente acessível ao microprocessador. No Spectrum 128 uma página é composta de 16384 bytes (16 KB), portanto existem 4 páginas acessíveis:
Como o número de bancos de RAM é maior do que o número de páginas disponíveis, é impossível acessar todos eles simultaneamente; o que o circuito do Spectrum faz é atribuir um banco de memória para cada página. A página 1 está associada permanentemente ao banco 5 e a página 2, ao banco 2.
A página 3 é a única em que se pode atribuir qualquer um dos 8 bancos de RAM, inclusive os bancos 2 e 5 (estes já se encontram nas páginas 2 e 1, respectivamente). A seleção do banco da página 3 é feita pela porta 32765 (ou #7FFD) no modo de escrita (OUT). Os bits D0, D1 e D2 especificam qual banco entre 0 (0) a 7 (%111) ocupará esta página.
A porta 32765 tem outras funções. Em resumo:
Na TKMEM-128 há algumas diferenças. Não háa ROM do BASIC 128, nem o shadow video. Outra diferença é que o banco 5 realmente não aparece na página 1, pois os 16KB desta região é a RAM do próprio TK90X. O banco 5 do TKMEM pode ser utilizado de forma independente, portanto há no total 144 KB ao invés de 128 KB.
Atualização em 02/02/2013: na versão da TKMEM-128 foi implementada a ROM 128, ativada através de jumpers.
Não há como desativar a 2ª página de vídeo (shadow video) na emulação, característica que está ausente no TK90X com TKMEM. Outra incompatibilidade é a ausência da interface Beta 48, por isso eu uso como quebra-galho a emulação da Beta 128. Concluindo, o fato de funcionar no emulador não é garantia de sucesso no TK real.
O funcionamento das 128K de RAM está bem descrito neste FAQ (em inglês), mas farei mesmo assim uma descrição resumida. O Z80 consegue endereçar no máximo 65536 bytes (64 KB), portanto no Spectrum 128 foi criado um circuito extra para contornar esta deficiência. Para entender melhor, é necessário introduzir alguns conceitos.
O primeiro conceito é o de página de memória. Uma página é uma região contínua de endereço de memória diretamente acessível ao microprocessador. No Spectrum 128 uma página é composta de 16384 bytes (16 KB), portanto existem 4 páginas acessíveis:
- página 0 (0-16383 ou #0000-#3FFF) ocupada pela ROM;
- página 1 (16384-32768 ou #4000-#7FFF) com RAM;
- página 2 (32768-49151 ou #8000-#BFFF) com RAM;
- página 3 (49152-65535 ou #C000-#FFFF) com RAM.
Como o número de bancos de RAM é maior do que o número de páginas disponíveis, é impossível acessar todos eles simultaneamente; o que o circuito do Spectrum faz é atribuir um banco de memória para cada página. A página 1 está associada permanentemente ao banco 5 e a página 2, ao banco 2.
A página 3 é a única em que se pode atribuir qualquer um dos 8 bancos de RAM, inclusive os bancos 2 e 5 (estes já se encontram nas páginas 2 e 1, respectivamente). A seleção do banco da página 3 é feita pela porta 32765 (ou #7FFD) no modo de escrita (OUT). Os bits D0, D1 e D2 especificam qual banco entre 0 (0) a 7 (%111) ocupará esta página.
A porta 32765 tem outras funções. Em resumo:
- D0-D2: seleciona banco de RAM da página 3;
- D3: seleciona para exibição, o vídeo normal (0) ou o shadow video (1);
- D4: seleciona ROM 0 (BASIC 128) ou ROM 1 (BASIC 48) da página 0;
- D5: uma vez que este bit receba valor 1, a porta não aceitará mais nenhum comando até o Spectrum ser desligado ou sofrer reset;
- D6-D7: usados em computadores como Pentagon.
OUT 32765,16
seleciona banco 0, OUT 32765,17
seleciona banco 1 e assim por diante, até OUT 32765,23
para o banco 7. Alguns cuidados devem ser tomados enquanto se troca o banco da página 3: as interrupções devem ser desativas no modo BASIC 128, e o apontador de pilha do Z80 (SP) deve localizar-se em endereço abaixo de 49152. Na TKMEM-128 há algumas diferenças. Não há
Atualização em 02/02/2013: na versão da TKMEM-128 foi implementada a ROM 128, ativada através de jumpers.
Nenhum comentário:
Postar um comentário
Seu comentário é bem vindo, mas peço que use este espaço adequadamente.