Como computadores mais antigos, como o Commodore 64, emitiram para um monitor?

1

Eu tenho pensado sobre isso por um tempo agora. Eu entendo que as placas de vídeo agora armazenam as informações de pixel em sua memória dedicada e produzem essas informações através do cartão e na tela. O comodoro 64 e a maioria dos computadores mais antigos, pelo que entendi, não tinham essas placas de vídeo com memória dedicada. Suponho que eles poderiam ter reservado uma parte da memória do sistema como uma espécie de buffer de quadros. O processador pode calcular valores de pixels e armazenar os dados nesse buffer de quadros e, em seguida, gerar essas informações na tela. É assim que os computadores mais antigos funcionavam ou é algum outro processo completamente diferente?

    
por user3211355 03.11.2014 / 09:57

3 respostas

3

Sim, basicamente, como as saídas de vídeo foram feitas nos próximos dias. Houve memória entre 1 e 8 kB reservada como buffer de vídeo, a CPU calculou a saída e salvou na RAM.

No entanto, existem algumas diferenças em uma placa de vídeo moderna:

  • Não havia interfaces de alta resolução, como HDMI ou VGA. Geralmente, o vídeo composto com esquema de cores NTSC ou PAL era usado para computadores domésticos conectados a uma televisão.
  • Para o modo de texto, apenas o código ASCII foi salvo byte para byte na memória. O circuito de vídeo tinha uma pequena ROM contendo as matrizes de 5x7 pontos de cada personagem. Dessa forma, uma tela de 40x25 caracteres pode ser salva em apenas 1 kB.
  • Havia chips especiais como o intel 8275 que integra tudo (acesso a memória buffer, geração de clock de pixel e sincronização para monitores NTSC, acesso a ROM de matrizes de ponto de caractere e assim por diante), mas às vezes toda a lógica de vídeo foi construída com TTL ICs lógicos (exemplo: Apple II).
  • Como a RAM foi compartilhada, o circuito de vídeo usou o DMA ou outro método para interromper a CPU para acesso à RAM. O circuito de vídeo quase sempre tinha prioridade mais alta, já que não havia pipelines para armazenar os dados, e a saída de pixels do sinal de vídeo era crítica no tempo.
por 03.11.2014 / 10:25
1

Suponho que você esteja falando de computadores domésticos do final dos anos 70 / início dos anos 80. Esses computadores funcionaram praticamente como você conjeturou. Houve algumas complicações, como sprites de hardware, caracteres redefiníveis e layouts de memória não-linear, mas basicamente todos esses computadores tinham pelo menos um modo de texto em que os caracteres eram armazenados como bytes na memória; e mais tarde e os mais sofisticados tinham gráficos de cores e bitmap.

No entanto, havia um tipo mais antigo de exibição gráfica, a exibição de vetores , que exigia apenas que o computador mantivesse o coordenadas de pontos visíveis na memória. Isso era vantajoso quando fabricantes e consumidores não podiam arcar com a memória necessária para manter até mesmo um bitmap de baixa resolução.

    
por 05.11.2014 / 21:59
0

O microprocessador 6502 precisa usar seu barramento de memória para metade de cada ciclo; muitos computadores do final dos anos 1970 e início dos anos 80 aproveitaram-se disso construindo seu sistema de memória para conectar o 6502 à memória durante uma metade do ciclo e conectar os circuitos de vídeo durante a outra metade. É interessante notar que o Apple II, o Vic-20 e o Commodore 64, adotaram diferentes abordagens para o tempo de vídeo.

O Apple II buscou um byte de memória de vídeo por ciclo de CPU, que determinou qual caractere deveria ser exibido. Os caracteres eram oito linhas de varredura altas, então cada byte de dados de caracteres seria buscado oito vezes por quadro - uma vez em cada uma das oito linhas consecutivas. Os seis bits do byte de caractere buscado seriam então usados, juntamente com os 3 bits inferiores de um caractere de varredura, como um endereço em uma ROM de 512x5 bits. Os dois bits superiores do byte de caractere buscado selecionam o modo normal, inverso ou intermitente.

O VIC-20 usava caracteres mais amplos e buscava um caractere a cada outro ciclo de CPU; no ciclo após cada busca de caractere, ele levaria os 8 bits de dados de caractere junto com 3 bits de contagem de linha de varredura, adicionaria esse valor a um valor programado em um registrador, buscaria um byte desse endereço e exibiria isso como oito pixels consecutivos. Essa abordagem significava que as formas de caracteres poderiam ser armazenadas na RAM em vez de na ROM, e reprogramadas de forma conveniente (o endereço de memória de caracteres também poderia ser configurado para ROM, se desejado, para salvar 2 K de RAM).

O Commodore 64 precisava buscar dois bytes por caractere como o VIC-20, mas precisava de caracteres de saída para a tela duas vezes mais rápido (como a Apple). Para equilibrar essas necessidades, enquanto mostra a primeira linha de varredura de cada linha de texto, ele alterna entre busca de caracteres e busca de suas formas enquanto a CPU não tem permissão para fazer nada. Como está buscando os dados de caractere, no entanto, o chip de vídeo também copia para um buffer de 40 bytes. Enquanto as próximas sete linhas de varredura de texto são mostradas, o chip de vídeo busca dados de caractere daquele buffer ao invés de RAM, permitindo assim que a CPU compartilhe seus ciclos. Isso possibilita que o sistema mostre mais texto, como a Apple, enquanto também permite fontes de caracteres reprogramáveis, como a VIC-20. Infelizmente, ele bloqueia a CPU 25 vezes a cada quadro, por 41-43 ciclos a cada vez (iniciar / parar a CPU adiciona 3 ciclos de incerteza) - uma decisão de design que era razoável na época, mas teve algumas conseqüências infelizes (a pior das o que era que a unidade de disquete deveria esperar o suficiente depois de enviar cada bit que as comunicações não seriam corrompidas se o chip de vídeo interrompesse a CPU por 43 ciclos).

    
por 09.09.2015 / 20:09