Descoberto segundo bug na Explorer
Eletrônica

Descoberto segundo bug na Explorer


Wesley Camargo (autor desta mod) alertou da incompatibilidade da Explorer dele com os programas Sokoban e New Wave. No equipamento dele, um bug descoberto anteriormente já teria sido consertado. 


O Sokoban nem rodava, resultando em reset, e o demo New Wave travava.  Ele atribuiu este comportamento à alteração na Explorer para consertar o primeiro bug. Ao desfazer a modificação, constatou que os programas rodavam sem problemas. O vídeo de sua autoria demonstrando este fato encontra-se em: http://youtu.be/ZGo7xCzUfYo http://youtu.be/apR685uwx54.

Este comportamento não fazia sentido,  pois a mod descrito no site do Victor Trucco é para tornar a Explorer III e IV mais compatível com o ZX Spectrum 128. Como um programa para Spectrum não poderia rodar nela? Entretanto era fato que, sem esta mod, os programas rodavam.
 
Olhando o esquema da Melodik, encontrei finalmente a explicação. O problema é que havia mais um bug, que não era exposto porque ficava "atrás" do primeiro bug. Explicando rapidamente, as Explorer I, III e IV não possuem a porta de entrada 65533. No caso da Explorer III e IV, existe a porta de entrada 49149, que pode ser movida para 65533 com  poucas modificações. A decodificação da porta de entrada não faz uso da linha /RD do Z80, mas aparentemente isso não seria problema, pois bastaria interpretar de forma invertida o sinal /WR; se /IORQ estiver ativo e /WR desativado, com certeza estar-se-ia lendo o periférico, não escrevendo nele.

O raciocínio acima é bastante inteligente, porém deixou passar um fato que quase é nota de rodapé do manual do Z80. No modo de interrupção 2 (IM 2), o microprocessador espera que algum periférico passe 8 bits no barramento, para definir o vetor de interrupção (isto é, o endereço do elemento de uma tabela de sub-rotinas). Neste estado, o /RD não é ativado e nem /WR, porém /IORQ é  ativado (e /M1 também, mas não vem ao caso na discussão).

O que acontece com a Explorer "consertada"? Ela vê que /IORQ está ativada mas /WR não; pensa então que se está solicitando um dado no barramento e... pimba! Tasca um byte que é recolhido pelo Z80.

Se o programador é mais cuidadoso ou conhece melhor o Spectrum, teria feito uma tabela em que não é necessário que este byte seja 255 (#FF); mas não é o caso do Sokoban, pelo que vi no disassembly. Portanto se o valor deste byte é qualquer outro, o vetor de interrupção está completamente errado e a sub-rotina chamada pode ir para qualquer endereço (no Sokoban, #0000, que inicializa o TK).

Existem duas soluções possíveis:

1) alteração de software, isto é, construir uma tabela de sub-rotinas mais robusta;
2) alteração de hardware, isto é, fazer com que a decodificação (74LS138 e 74LS00) seja igual ao da Melodik.

Acredito que mais um bug da Explorer foi desvendado. Da minha parte, eu acho que prefiro montar uma Melodik para mim.



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

- Debug Da Explorer Iv
Eu não possuo a Explorer IV, portanto não tenho como fazer o debug desta interface. A foto abaixo é o resultado após consertar o primeiro bug que foi encontrado nestas interfaces. O problema é que este conserto faz com que o segundo bug se manifeste. ...

- Explorer × Tk90x + Tkmem-128
Parece que o Fairlight 128, que roda no TK90X graças ao TKMEM-128, não se dá muito bem com a Explorer. O som fica bastante distorcido, bem diferente do que ouço no emulador. Fiz algumas tentativas para entender o que está acontecendo. Frequência...

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

- Interface Explorer
Eu possuo uma interface Explorer para gerar sons de 3 canais no TK90X com o circuito integrado PSG AY-3-8912, como pode ser visto no meu site Cantinho do TK90X. Acredito que eu seja possuidor da primeira versão desta interface.  Depois surgiu a...



Eletrônica








.