ROM e Porta 254 (parte 1)
Eletrônica

ROM e Porta 254 (parte 1)


Nas investigações sobre as ROMs do TK90X/95 promovidas por mim e Einar Saukas, com a ajuda de vários amigos, verificamos que o bit 7 da porta de entrada 254 pode interferir na seleção do idioma entre português e espanhol. O TK90X com a ROM mais antiga faz uso deste valor para esta finalidade e, nos computadores brasileiros, o diodo D1 serve para manter o bit 7 em nível lógico 0 (idioma português).

Einar pediu para que os usuários do TK testassem a porta 65534, para descobrir o comportamento da referida porta de entrada. A escolha do endereço 65534 ao invés de 254, é porque o valor lido não terá a interferência do teclado. Eu fiz um programa que faz este teste em diferentes combinações de atributos de cores da tela, que está disponível para fita ou disco Beta neste diretório.

No emulador Fuse, conforme esperado para o ZX Spectrum, o resultado é sempre 191 (todos os bits em nível lógico 1, exceto o bit 6). Porém no meu TK90X, com o diodo D1 removido, não foi o que pude observar:


Ocorrem oscilações de valores porque o ULA contamina o barramento de dados. No TK90X os bits 0 a 4 têm valores definidos em 1, por causa dos sinais do U10 (74LS365) ligados ao teclado. O bit 6 será também 1 pois, por estar ligado ao transistor Q7 que apenas conduz se houver um sinal C.A. no EAR, fica obrigado a estar em nível lógico alto (+ 5V) pelo resistor R74.

Esquema do TK90X, fonte: DataCassete
Não consta o diodo D1 no esquema elaborado pelo Jorge Braga, mas seu papel é o de ligar o bit 7 da porta 254 em nível 0. Como no meu caso este diodo foi removido, o bit 7 fica oscilando. Outro bit que oscila, dependendo do cor do fundo (PAPER) da tela, é o 5 que não está ligado a nada.

Na hora que o ULA acessa a RAM de vídeo para pegar os atributos de cores, este byte permanece no barramento e acaba afetando na leitura da porta 254. Portanto o bit 5 e, no caso de não haver o D1, o bit 7 também, reflete o último valor da RAM lido pelo ULA.

São possíveis casos em que não ocorre oscilação nenhuma (FLASH 1, PAPER>3):



que ocorre oscilação apenas no bit 7 (FLASH 0, PAPER>3):


que ocorre oscilação apenas no bit 5 (FLASH 1  e PAPER<4):


e que ocorre oscilação em ambos os bits 5 e 7 (FLASH 0 e PAPER<4):


O programa que faz o teste é simples, escrito apenas em BASIC:

10 FOR i=0 TO 255: DIM b$(640)
20 FOR n=1 TO 640 STEP 4: LET b$(n TO n+3)=STR$ IN 65534: NEXT  n
40 POKE 23693,i: BORDER INT (i/8-8*INT (i/64)): POKE 23624,i: CLS : PRINT AT 2,0;b$
60 NEXT i: GO TO 10



loading...

- Modo De Interrupção 2
Interrupção para o Z80 refere-se a um evento em que o processamento normal é interrompido, para que uma rotina de serviço de interrupção (ISR - Interrupt Service Routine) seja executada. Existem dois tipos de requisição de interrupção neste...

- Mais Investigações Sobre O "efeito Rodland"
Fiz mais algumas investigações sobre o bug detectado na ULA clonada. Na tela acima, observa-se uma linha vertical clara logo à direita da fadinha ruiva (fica mais visível sob ampliação). Deixando todos os atributos em branco e preto (PAPER 7 e...

- Rom E Porta 254 (parte 2)
Após investigação sobre a ROM original do TK90X, ficou claro que o bit 7 da porta de entrada 254 define qual idioma - português ou espanhol - seria exibido nas mensagens.  Resolvi fazer um teste nos emuladores de que disponho, usando a imagem...

- Disassembly Das Roms
Einar Saukas está analisando os dump das ROMs de TK90X e TK95 e as diferenças entre elas estão sendo desvendadas. A primeira ROM parece ter sido a 9128B como a minha, que está na foto acima (clique aqui para baixar o dump)  O seu disassembly...

- The Fury (martech)
Estive trabalhando na adaptação do jogo The Fury para TK90X da Martech, para funcionar na interface de drive Beta 48. Eu achava que ia ser fácil, pois o programa não era protegido, porém a incompatibilidade da porta 254 novamente fez estragos. Após...



Eletrônica








.