Um bug de décadas do C64

save_vsp_320x200

Um dos truques que se pode fazer com um Commodore 64 envolve a manipulação do chip de vídeo, o VIC-II, deslocando o ponteiro de memória usado para indicar a área da RAM usada para o vídeo. Isto permite criar um efeito de scroll horizontal que é chamado de VSP (Variable Screen Position, de Posição Variável da Tela). Porém, em algumas máquinas, o uso do VSP simplesmente as travava sem nenhum motivo aparente e a razão para isto era um mistério… era, pois não é mais! 🙂

A partir de 15MiB de dados de um crash de VSP “gravados” por um analisador lógico e levando cerca de um ano de trabalho Linus Akesson conseguiu encontrar a raiz do problema e do motivo pelo qual alguns C64 capotam e outros não. A explicação, bem, ele aproveitou para fazer um demo com um scroller de 10 minutos explicando o motivo e apresentando um VSP seguro de ser utilizado em qualquer “caixa de pão”.

Mas eu vou tentar resumir : A culpa é das memórias DRAM, que precisam constantemente sofrer um refresh para manter os dados que armazenam — os tais ciclos de RAS e CAS — e acontece que o VSP é um truque que força o chip de vídeo a acessar o barramento no meio  deste procedimento, obtendo valores errados e com consequências catastróficas.

Aliás, quem conseguir um conceber um entendimento melhor que o meu pode colocar nos comentários. 🙂

[ OSNews ]