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...
Defeito--Sem imagem e sem som. Apenas linhas de retorno. Seguindo a linha dos 33V, verifiquei que ao ...
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...
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;...
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...
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...