segunda-feira, 12 de outubro de 2026

Garbage Collector (2)

 Cartão de 80 colunas na porta de joystick para MSX

Este projeto é baseado no terminal de vídeo com AVR que foi projetado pelo Daryl Rictor e se tornou popular pelas melhorias implementadas pelo Grant Searle. Posteriormente David Curran (Tynemouth Softare) que implementou a comunicação I2C, na qual o presente projeto se baseia. 

A saída de vídeo foi simplificada e compatibilizada com a norma RS170, e o circuito foi acomodado numa placa de 1x1 polegada.



O protocolo I2C é implementado em software (bitbang) no MSX, e foram necessárias algumas sessões de debug para identificar um problema relacionado a 'clock stretching' - um aspecto que normalmente não é implementado, principalmente quando se quer obter o maximo de performance. Infelizmete neste caso foi necessário, o que fez a taxa de comunicação cair pra aproximadamente 2170 bytes / segundo. 




O maior limitante na velocidade, contudo, é que o acesso é feito via PSG, que utiliza registros diferentes para os pinos de saída e os de entrada das portas de joystick o que demanda uma escrita a no registrador de endereço toda vez que se alterna entre leitura e escrita dos bits.



O código que envia os dados ocupa menos de 300 bytes depois de compilado, sendo pequeno o suficiente para ser colocado em qualquer lugar da memória e ser usado como display auxiliar pra debug. 

O programa de teste é baseado numa rotina em assembly que, uma vez carregada, permite escrever na tela auxiliar uma string passada como parâmetro para uma função USR().