Dissecando a ULA do TK90X - Parte 6



A INTERFACE ENTRE A ULA E O Z80


Uma parte importante da ULA é a sua interação com a CPU. Nos ZX-Spectrum compatíveis, incluindo ai o TK90X e TK95, temos os primeiros 16Kb da memória RAM compartilhados entre a ULA e a CPU. A ULA lê continuamente essa faixa de endereços como memória de vídeo para desenhar o display gráfico, e esta tem preferência sobre a CPU que é simplesmente parada, suspendendo-se o clock.
A "contenção" da CPU ocorre quando a ULA precisa fazer a leitura dos dados do display e atributos de cores, mas por algum motivo o Z80 também quer acessar a mesma faixa de endereços para suas operações de leitura e escrita. Vamos notar que essa contenção ocorre apenas dentro do "miolo" da tela e nunca durante o desenho da borda ou dos períodos de blanking.

Para facilitar, vamos dividir a explicação em três grupos:

OS SINAIS AUXILIARES


Um sinal que não falamos durante a parte 4 foi o sinal VBorder, que nada mais é do que um indicador se estamos desenhando o miolo ou as bordas.


Note que no esquema ele é formado pelos bits 6, 7 e 8 do contador vertical. U14 é uma porta AND, que assume nivel alto quando os bits 7 e 6 estão alto, logo, 11000000b = 192 e junto com o bit 8 combinado com o OR de U17, teriamos 111000000b = 448. Como vimos anteriormente, esse contador reseta em 261 ou 311, dependo da seleção de 50Hz ou 60Hz, então na prática temos o sinal de VBorder ativo entre 192 e a última contagem, 261/311, dependendo do caso.

Esse valores podem ser compreendidos rapidamente, se levarmos em conta o modo de como os contadores formam a imagem, conforme já explicado na parte 3.