Memórias no Spectrum128 e no TKMEM-128
Eletrônica

Memórias no Spectrum128 e no TKMEM-128


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:
  1. página 0 (0-16383 ou #0000-#3FFF) ocupada pela ROM;
  2. página 1 (16384-32768 ou #4000-#7FFF) com RAM;
  3. página 2 (32768-49151 ou #8000-#BFFF) com RAM;
  4. página 3 (49152-65535 ou #C000-#FFFF) com RAM.
Outro conceito importante é o de banco de memória, que corresponde a uma porção contínua dentro da memória física existente. No Spectrum 128, a RAM física é dividida em 8 bancos de 16 KB cada. Cada banco é identificada por um número entre 0 a 7.

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. 
Para selecionar os diferentes bancos de RAM, deve-se usar a instrução OUT no assembly Z80 ou no BASIC com o bit D4 levantado (caso contrário, ativa-se a ROM 0). Portanto: 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á 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



loading...

- Detecção De Ram 48/128
Conforme tinha prometido na postagem sobre incompatibilidade do Bubble Bobble, eu vou mostrar a rotina de detecção de tamanho de RAM 48/128K que elaborei na ocasião.  A ideia era fazer uma rotina que não altere o conteúdo da RAM a ser testada;...

- 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...

- Knightmare Zx
Quando se fala em Knighmare, vem à minha mente este jogo da Activision, mas não é o caso desta vez. O Knightmare a que estou me referindo é um grande sucesso do MSX que agora foi finalmente portado para o ZX Spectrum, mas somente para o modelo 128K....

- 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...

- 48 E 128 Basic
O TKMEM-128 não tem a ROM 0 do Spectrum 128, mas não é muito difícil gravar uma EPROM e fazer uma mod na interface. Com isto, o TK90X ficaria mais semelhante ao Spectrum 128 e seria possível usar o BASIC 128. Aqueles que usam o emulador obrigatoriamente...



Eletrônica








.