Eletrônica
Bug na Explorer III
Conforme mencionei em postagem passada, a minha interface Explorer não fornece valor do registrador do PSG AY-3-8912 na porta 65533, como ocorre no ZX Spectrum 128. Isto traz uma incompatibilidade que não é percebida na maioria dos programas, mas me deparei com o demo "The Last 48" que simplesmente fica travado na tela abaixo.
Achei a parte do programa que trava quando não há um valor esperado na porta 65533. A listagem assembly é a seguinte:
41294 LD A,8 ; Seleciona registrador 8 do PSG.
LD BC,65533 ; BC aponta a porta 65533.
OUT (C),A
IN A,(C) ; Lê conteúdo do registrador 8 e verifica se é
CP 14 ;igual a 14.
CALL Z,41898 ; Se for, chama sub-rotina em 41898.
41308 POP BC ; Recupera todos os registradores.
... ...
41320 POP IY
41322 JP 56 ; Endereço da rotina de interrupção mascarável
;em 56/#38.
O que se pode ver acima é que IN faz a leitura da porta 65533 e somente se a leitura resultar no valor 14, chama uma sub-rotina. Na minha Explorer, isto nunca ocorrerá e o programa fica esperando para sempre. A propósito, testei em dois emuladores e, se a PSG estiver ausente (portanto a porta não fornece o valor), o demo trava da mesma forma.
Pedi na postagem anterior para que alguém me ajudasse a testar as suas interfaces e relatasse o resultado. Somente uma pessoa fez isso (obrigado, José Roberto) e me disse que nem a interface antiga, nem a nova acusaram leitura na porta 65533. Num outro teste, ele relatou que nem faz leitura da porta 49149.
Eu não esperava tal resultado, pois pelo esquema da Explorer II, era para acusar leitura na porta 65533. Porém depois foi descoberto que na Explorer III há um erro na descodficação que faz com que a porta 49149 seja lida no lugar. O Daniel (Danjovic) prontamente criou uma correção para Explorer III, disponível na lista TK90X, que envolve em mexer um pouco na placa de circuito impresso. Não tenho como testar esta correção pois a minha interface está coberta de Durepóxi (um dia ainda faço outra interface para mim). Ainda assim, na minha modesta opinião, considero melhor a solução adotada na interface Melodik (o esquema elétrico pode ser encontrado no site ZX Magazín).
Concluindo, creio que a maioria das Explorer produzidas tenham que ser modificadas, se o usuário quiser obter maior compatibilidade. Talvez a origem de certos travamentos misteriosos em programas venham daí.
loading...
-
Dica Tv Electronia 20nt Chassis 11ak30
Defeito--Não liga. Led vermelho aceso. Ao tentar ligar, o led passa a verde mas, no mesmo instante, o led volta para vermelho e a fonte da tv não arma.Valores ...
-
Dica Tvs Panasonic Tx-25xd3e Chassis Euro 2m
Defeito--Este tv estava em protecção, trazia o transístor de saída de linhas (2SD1577- LB) em curto. Depois de o substituir, o tv arrancou apresentando o seguinte ...
-
Número Aleatório Por Xor-shift
Apresento a sub-rotina de geração de número pseudoaleatório que foi usada na minha parte do demo Mission Highly Improbable. Anteriormente mostrei a sub-rotina de Phantom Club para a mesma finalidade, porém a qualidade da sequência gerada...
-
Outra Rotina De Detecção De Ram 48/128k
Eu publiquei nesta postagem, uma rotina que faz a detecção no TK90X da configuração com ou sem a TKMEM-128 (128 ou 48K de RAM). Modifiquei-a e consegui fazer com que ficasse menor ainda (25 bytes). Esta rotina testa se ocorre chaveamento entre...
-
Thundercats V. 2 Para Basic 128
Mal acabei de lançar uma adaptação do Thundercats para Beta e TKMEM-128 e estou com a versão 2. A versão anterior tinha um problema: não consegue carregar a partir do BASIC 128, portanto tinha que dar um 'USR 0' antes. Na versão 2 não...
Eletrônica