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