Assembly 6507 para Atari 2600 – Parte 2

Acessado 238 vezes.
Como citar esse artigo: VERTULO, Rodrigo Cesar. Assembly 6507 para Atari 2600 – Parte 2. Disponível em: <http://labdeeletronica.com.br/atari-2600/assembly-6507-para-atari-2600-parte-2/>. Acessado em: 14/10/2024.


Dessa vez decidi brincar um pouco com o que já aprendi sobre a linguagem Assembly para o microprocessador 6507 do Atari 2600 e me desafiei a criar um degradê de vermelho para preencher a tela. Como eu já sabia que existem 192 scanlines usadas para “desenhar” na área visível da tela e que as cores vemelhas contemplam 16 valores entre os números 40 e 4F em hexadecimal, dividi 192 por 16 para descobrir que cada faixa do meu degradê seria formada por 12 scanlines. A partir disso alterei meu código Assembly do artigo anterior para que ele desenhasse 12 linhas para cada tom de vermelho.

Confesso que não foi simples, principalmente por que ainda estou me acostumando com a linguagem Assembly. Durante o desenvolvimento descobri que eu poderia usar os bytes existentes entre os endereços 80 e FF (em hexadecimal) para armazenar valores de variáveis. Isso me ajudou bastante durante a criação do loop responsável por controlar quando a cor de cada faixa do degradê deveria ser alterada.

Entre as lições mais importantes aprendidas com esse desafio, além da questão do armazenamento de variáveis descrita acima, é que sempre que eu for utilizar a instrução de pulo condicional BNE, que salta sempre que o “bit de zero” do registrador de status está setado, é que eu devo me preocupar em verificar se antes da chamada do BNE não existe alguma instrução que tenha alterado o “bit de zero” do registrador de status alterando o comportamento esperado. Outra lição que eu aprendi é a extrema importância em se controlar a quantidade de ciclos de CPU que cada instrução demanda, pois isso impacta diretamente no tempo que temos para implementar a lógica do programa antes de cada scanline. No código que criei, minha sincronização não está perfeita, pois na última scanline notei que havia uma “sujeira” que provavelmente aconteceu por alguma falha no meu gerenciamento dos ciclos de CPU antes do WSYNC. Como o objetivo desse exercício não era focado nesse controle, não me preocupei muito com isso.

Resultado do programa que gera um degradê em vermelho na tela.

De modo geral fiquei satisfeito com o resultado que obtive, pois consegui desenhar o degradê que eu esperava e acabei aprendendo lições importantes. Se você ainda não viu o artigo anterior dessa série, clique aqui e confira. Nos vemos no próximo artigo.

Se você gostou desse artigo, não deixe de conferir a parte três. Nos vemos em breve!

Eletrônica Simples Para Projetos Complexos
Deixe de ser alguém que fica copiando e colando circuitos da Internet e passe a ser um projetista capaz de criar soluções inovadoras com esse poderoso componente.

Comentários