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