Incompatibilidade da CAS com ROM do TK90X (parte 1)
Eletrônica

Incompatibilidade da CAS com ROM do TK90X (parte 1)


A interface de drive da Cheyenne Advanced Systems (CAS) vem com uma ROM do ZX Spectrum para contornar a incompatibilidade com a do TK90X. Depois do disassembly da ROM da CAS ter ficado completo, fica possível entender a causa.


Mas, antes, eu preciso ter um meio de emular a interface CAS, pois não a possuo. Para isso, utilizei o emulador SpecEmu rodando no Linux com a ajuda do Wine. Este emulador já possui suporte para a CBI-95, então o que fiz foi substituir o arquivo  'CBI-24.BIN' pelo arquivo da ROM da CAS (na verdade usei link simbólico para simplificar). Ao iniciar a emulação, aparece por um breve momento o logotipo acima. Logo na sequência a tela é corrompida e o teclado deixa de responder.


Depois de um longo tempo o TK emulado reseta e aparece o menu inicial, porém não há como entrar os comandos do BASIC.

Para descobrir a causa, lancei mão do debugger do SpecEmu e fui acompanhando a execução da inicialização do DOS até chegar na sub-rotina que trava a emulação. Acabei na sub-rotina da ROM do TK90X no endereço 24, normalmente acessada pela instrução RST 24 (ou RST #16). O fato de ser uma sub-rotina tipo restart (RST) significa que é bastante acessada e, de fato, é a GET-CHAR que é responsável por analisar os caracteres de uma linha BASIC. No ZX Spectrum esta rotina é:
24   LD HL,(23645)
27   LD A,(HL)
28   CALL 125            ; 125/#7D - SKIP_OVER
31   RET NC
A Microdigital modificou na sua ROM da seguinte forma:
24   LD HL,(23645)
27   LD A,(HL)
28   CALL 15611
31   RET NC
Pode-se notar que a sub-rotina em 125 foi substituída por uma em 15611, que contém:
15611   CP 2
15613   CCF
15614   JP 37
Foi inserido o par de instruções CP 2/CCF para que fosse possível introduzir mais duas novas palavras-chaves do BASIC (UDG e TRACE). Depois é dado um salto para o endereço 37 que, por fim, volta ao endereço da sub-rotina 125 e prossegue como no Spectrum:
37   RET NC
38   JR 125
Enfim, foi uma modificação meio feia em cima do código da Sinclair, fica muito difícil tentar convencer que o monitor BASIC não foi totalmente "chupado" do original britânico (mas havia a Reserva de Mercado e aí...).

Voltando à cauda da incompatibilidade, o problema foi a escolha dos endereços 15611 a 15614 para inserir uma modificação. Se esta faixa não é usada no Spectrum, as interfaces Beta 48 empregam a área de 15360 a 15615 para fazer a interface do DOS com o BASIC (por exemplo, no uso de USR 15360 e USR 15363). A interface de drive cuida para que a ROM da Beta seja visível nessa área, mesmo que não haja operações do DOS. Sendo assim, quando se acessa a RST 24, esta sub-rotina não encontra a ROM do TK90X em 15611, mas entra no meio de uma sub-rotina da DOS (INIVARS). Como a GET-CHAR é empregada para analisar os caracteres do BASIC, seu mal funcionamento impede que o computador opere.

Uma vez que foi desvendada a causa da incompatibilidade, resta apontar uma forma de a contornar. Deixarei isto para uma próxima postagem.



loading...

- Tv Panasonic Tx-14s1tc Chassis Z5
Defeito--Sem imagem e sem som. Apenas linhas de retorno. Seguindo a linha dos 33V, verifiquei que ao                                          ...

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

- Detecção De Ram 48/128
Conforme tinha prometido na postagem sobre incompatibilidade do Bubble Bobble, eu vou mostrar a rotina de detecção de tamanho de RAM 48/128K que elaborei na ocasião.  A ideia era fazer uma rotina que não altere o conteúdo da RAM a ser testada;...

- Lsd Megademo (pentagram)
Mais um demo para TK90X com Explorer foi adaptado para a interface de drive padrão Beta 48, o LSD Megademo do grupo Pentagram. Uma dificuldade adicional  na adaptação foi a presença de código de máquina dentro de linha BASIC, prática que...

- Interface De Demo Do Tk90x
Visitando o site do Eduardo Luccas, encontrei um item interessante para download que seria a imagem (dump) da EPROM da interface de demonstração do TK90X. Pela descrição dada, seria uma interface conectada a TK90X em exposição em loja, que ficaria...



Eletrônica








.