terça-feira, 14 de junho de 2016

Disassembly da ROM da interface de drive CAS

Depois de um longuíssimo tempo, finalmente um clone brasileiro da interface de drive Beta 48 tem sua ROM totalmente desmontada (disassembly) e analisada.


O primeiro trabalho que tenho conhecimento nesse sentido é o disassembly comentado da ROM da interface IDS-91 do Jorge Braga, com última modificação datada de 2004. Embora esteja longe de estar completo, foi um início na tentativa de desvendar o sistema operacional da Beta (DOS). Fiz algumas tentativas de prosseguir o trabalho com IDS e CBI, mas somente agora consegui ir até o fim.

A escolha pela interface da Cheyenne Advanced Systems (CAS) não foi por acaso; ela é a que mais se aproxima da Beta 48 original (por sua vez, também pouco conhecida ao contrário da Beta 128, mesmo no exterior). Os arquivos binários foram fornecidos pelo Eduardo Luccas (meus sinceros agradecimentos), que teve um trabalho adicional de decodificar a EPROM, cujos pinos de dados estão embaralhados devido ao leiaute da placa de circuito impresso.

A listagem do disassembly foi relativamente fácil de se produzir, usei o utilitário z80dasm v. 1.1.3 da distribuição GNU/Linux. Porém a parte mais trabalhosa foi a análise de toda a listagem e a edição dos comentários. Igualmente extenuante foi criar rótulos para as rotinas, sub-rotinas, variáveis e constantes, para auxiliar na legibilidade do disassembly. Pode ser que as escolhas nem sempre foram as mais felizes, mas foi o que eu consegui. Como compensação, tive a oportunidade de estudar bastante e aprendi muita coisa; não é exagero dizer que sempre consigo aprender alguma coisa com estes equipamentos antigos. Foram meses revirando o disassembly da ROM do ZX Spectrum, o Guia Avançado para o Spectrum, artigos do Toni Baker sobre streams e canais na ZX Computing e cheguei até a consultar disassembly do Shadow ROM da Interface 1 (impressionante o cuidado para que a Beta 48 funcionasse em harmonia com a Interface 1 e o sistema de microdrives). A parte mais complicada foi o tratamento de streams e canais, um assunto pouco explorado no manual do TK90X e do ZX Spectrum, sendo igualmente pouco mencionado nos manuais dos clones brasileiros da Beta 48. Não obstante a dificuldade, esta parte me causou admiração, pois a Beta dotou um tratamento bastante completo para streams que é uma ferramenta bastante poderosa, capaz de permitir que um programa BASIC possa manipular centenas de quilobytes de dados no disco. Infelizmente não foi um recurso muito conhecido, nem aproveitado.

A listagem encontra-se neste link, não deixei claro o licenciamento uma vez que a ROM da CAS deve ser ilegal, além dos direitos da Technology Research estarem em situação desconhecida. Só recomendo que usem o arquivo com bom senso.

Nenhum comentário:

Postar um comentário

Seu comentário é bem vindo, mas peço que use este espaço adequadamente.