timex-computer.jpg (19841 bytes)

I/O Ports Timex

O Timex Sinclair 2068 tem ports adicionais. Parece que o byte baxo destes endereços estão totalmente descodificados. Não tenho informação sobre outras portas (como o por da UlA) estão descodificados, ou partialmente como o Spectrum.

PORT 255 (REGISTO DE CONTROLO TIMEX):

Saida:
bit D0: Quando D0=0, dos dados do ecrã estão localizados no endereço 16384 (como no Spectrum), ou então no endereço 24576

bit D1: Quando D1=0, os atributos de cor são do tamanho de 8x8 pixeis e ocupam 768 bytes e estão localizados logo a seguir à memoria de video (endereço 22528 como no Spectrum se D0=0, ou 30720 quando D0=1); quando D1=1, os atributos são do tamanho 8x1 pixeis, ocupam 6144 bytes e estão localizados no endereço 24576 (mais preciso, quando D1=0, todos os atributos 8x1 são multiplicados 8 vezes para fazer um atributo de 8x8.)

bit D2: Quando D2=0, os dados de video e de atributos são usados como descrito acima; D2=1 activa a resolução extendidade de 512x192 pixeis (texto 64x24), onde os dados de video (do endereço determinado de D0) irão ser inseridos nas colunas pares (0, 2, 4...), e as colunas impares(1, 3, 5...) serão inseridos valores que normalmente estão conde estaria os atributos de cor, determinados por D1 (isto tem senso apenas com D1=1, quando as colunas impares serão inseridas no endereço 24576); atributos de cor não existem quando D2=1 (então só duas cores existem: INK e PAPER unidos)

bits D3-D5: Selecção da INK e do PAPER na resolução extendida (000=preto/branco, 001=azul/amarelo, 010=vermelho/cyan, 011=magenta/verde, 100=verde/magenta, 101=cyan/vermelho, 110=amarelo/azul, 111=branco/preto); estes bits são ignorados quando D2=0

bit D6: D6=1 proibe a geração de interrupção do Timex

bit D7: Seleciona o banco alternativo de memoria que será activado usando o registo horizontal MMU (0 = DOCK, 1 = EXROM)

Da descrição acima, podemos concluir que só podem existir 4 combinações dos bits D0-D2 que podem ser utilizados:

000 - Dados do video no endereço 16384 e atributos de cor 8x8 no endereço 22528 (como o Spectrum);

001 - Dados do video no endereço 24576 e atributos de cor 8x8 no endereço 30720;

010 - Modo Multicor: dados do video no endereço 16384 e atributo de cor no endereço 24576;

110 - Resolução extendida: sem atributos de cor, colunas pares dos dados de video são tirados do endereço 16384, e colunas impares são tiradas do endereço 24576

Combinações 011, 100, 101 e 111 são possiveis, mas não dão resultados utilizaveis.

Entrada: Retorna o ultimo valor enviado para este port.

PORT 244 (REGISTO HORIZONTAL MMU):

Saida: Todos os bits neste registo estão linkados a um bloco de memória de 8K do espaço de endereçamento do Z80 (64K). O bit D0 corresponde ao endereço 0-8191, D1 ao endereço 8192-16383 e por adiante. Quando um bit é posto a 0, o bloco pertence à Home ROM e quando é posto a 1 pertence ao banco alternativo (DOCK ou EXROM, dependendo do bit D7 no port 255). Note que os bancos DOCK e EXROM nunca posem estar presentes ao mesmo tempo no espaço de endereçamento.

Entrada: Retorna o ultimo valor enviado para este port.

PORT 245 (REGISTO DE SELEÇÃO DO CHIP DE SOM):

Saida: Seleciona o registo activo no chip de som, como o port 65533 no Spectrum 128.

Entrada: Sempre 255.

PORT 246 (REGISTOS DO CHIP DE SOM):

Saida: Escreve o valor no registo activo do chip de som, como o port 49149 no Spectrum 128.

Entrada: Lê o valor do registo activo do chip de som.

Tudo é similar ao Spectrum 128, excepto o uso do registo R14, que é utilizado para leitura do joystick. Então os bits de endereço A8 e A9 determinam se é o joystick esquerdo ou direito que irá ser lido(01=esquerda, 10=direita, 11=ambos, a leitura é OR). Para leitura do joystick, o port 502 é usado e para o joystck direito é usado o port 758 (é claro com o R14 como registo activo). Quando o R14 funciona como port de saida (bit D6=1 no registo R7), os bits no registo R14 têm o seguinte significado:

Saida:
bits D0-D4: leitura dos bits D0-D4 "mascarados" (veja o texto abaixo); também estes bits podem ser usados em periféricos independentes.

bit D5: D5=0 permite o acesso a 16MB de RAM do BEU que parece que nunca foi feito

bits D6-D7: untilizavem em varios periféricos independentes

Entrada:

bit D0: joystick move-se para cima (0=activo)

bit D1: joystick move-se para baixo

bit D2: joystick move-se para a esquerda

bit D3: joystick move-se para a direita

bit D4: estado do botão de disparo do joystick (0=activo)

bits D5-D7: ultimos valores enviados para estes bits

Os bits D0-D4 quandi lidos retornam valores validos quando não estão "mascarados", por exemplo, se a correspondente mascara dos bits é 1, então irão retornar zeros. Quando o registo R14 funciona como port de entrada (bit D6=0 no registo R7, é a unica maneira de ler o joystick), os bits no registo R14 têm o seguinte significado:

Saida: ignogado!

Entrada:
bit D0: joystick move-se para cima (0=activo)

bit D1: joystick move-se para baixo

bit D2: joystick move-se para a esquerda

bit D3: joystick move-se para a direita

bit D4: estado do botão de disparo do joystick (0=activo)

bits D5-D7: sempre 1

Neste caso, os bits D0-D4 não podem ser "mascarados".

MEMÓRIA DE VIDEO

Alternado a leitura e a escrita para este port geral um sinal de strobe para a impressora.
Nos Timex reais é possivel usando uando interrupções baseadas em rotinas para fazer mais que 2 cores no modo de 512x192. Como um simples programa em Basic:

10 OUT 255,6: OUT 255,14: PAUSE 1: GO TO 10

Irá produzir tiras azul em amarelo encruzadas com ecrã preto em branco, no modo de alta resolução. Também é possivel, usando o mesmo método, que parte do ecrã tenha um modo de video e a outra parte tenha outro modo de video. Por exemplo este programa Basic:

10 OUT 255,0: OUT 255,6: PAUSE 1: GO TO 10

irá produzir uma tira em  modo de alta resolução (512x192) no modo de resolução normal (256x192).
Parece que ninguem produziu software que usa-se efeitos como os descritos, mesmo que efeitos como estes fossem muito populares no Commodore 64.

No emulador Warajevo, este efeito não funciona, mas no Multimachine eles funcionam.