quarta-feira, novembro 29, 2017

O Microprocessador 6502

O 6502 é um outro microprocessador famoso dos anos 70, tendo sido usado em alguns produtos de grande sucesso: o Atari 2600, Commodore 64, Nintendo Entertainment System e, é claro, no Apple II.Continua sendo fabricado em grande quantidade até hoje.



História

No começo dos anos 70, a Motorola desenvolveu o microprocessador 6800. Vários dos seus projetistas ficaram descontentes pelo que consideravam o descaso da Motorola com ideias de aperfeiçoamento e pela perspectiva de uma mudança de cidade. O resultado foi que um grupo deles saiu da Motorola para a MOS Technology onde iniciaram um projeto de desenvolvimento de um microprocessador de menor custo.

A ideia básica era usar um novo processo de fabricação e simplificar o projeto para reduzir o tamanho do chip. Reduzindo o tamanho, mais chips poderiam ser fabricados em um wafer, reduzindo os custos. Os primeiros microprocessadores da Intel e Motorola eram comercializados por US$360 (peças unitárias) e os projetistas do 6502 viam isto como o principal empecilho para o uso generalizado.

Numa estratégia que hoje parece esquisita, foram projetados dois chips: o 6501 que era eletricamente compatível com o 6800 e o 6502 que tinha uma pinagem diferente. Digo esquisita, porque do ponto de vista de programação o 6501 e 6502 não eram compatíveis com o 6800. Ou seja, estavam considerando que o custo de projeto do hardware era mais importante que o do software.

O projeto correu bem e em 1975 o 6501 e 6502 foram anunciados com preços de US$20 e US$25. Ao contrário de outras companhias, a MOS Technology procurou divulgar bastante os integrados e a sua documentação, inclusive para hobbistas.

O lançamento foi um sucesso, levando a Motorola a baixar o preço do 6800 e processar a MOS Technology, que não teve opção senão chegar a um acordo (ainda mais depois que documentos confidenciais da Motorola foram achados na MOS). Quando a poeira abaixou, no começo de 1976, o 6501 estava descontinuado e o 6800 custava U$35, mas o 6502 seguia firme e agora sem preocupações legais.

Ainda em 1976 foi anunciado o Apple I. No ano seguinte foram lançados o Apple II e o Commodore Pet, colocando o 6502 no topo do nascente mercado de computadores pessoais.

Hardware

O 6502 trabalhava inicialmente com clocks na faixa de 1 a 2 MHz, o que pode parecer baixo comparado com os os clocks do 8080 e Z80. Entretanto, ele usa internamente circuitos combinatórios (que independem do clock) onde os outros usavam circuitos sequenciais. O resultado é que as instruções do 6502 necessitam de cerca da metade dos ciclos de clock quando comparado com os x80.

Com 16 linhas de endereço, o 6502 pode endereçar até 64K posições de memória. Não existem sinais nem instruções para acesso a dispositivos, tudo precisa ser mapeado na memória.

O 6502 possui dois pinos de interrupção, um para interrupção normal e outro para a interrupção não mascarável. Aceita uma interrupção, o controle é desviado para o endereço armazenado em uma posição fixa (0xFFFE para IRQ e 0xFFFA para NMI); o tratamento da interrupção precisa interrogar os dispositivos para descobrir a origem. No Reset o programa é iniciado no endereço armazenado em 0xFFFC. Nos três casos, o endereço ocupa dois bytes, sendo o primeiro o menos significativo. Este arranjo requer a presença de uma memória não volátil na parte alta da memória.

Programação

Do ponto de vista de programação, o 6502 é bastante semelhante ao 6800, mas com diferenças importantes. Enquanto que o 6800 tem dois acumuladores (de 8 bits) e um registrador de indexação de 16 bits, o 6502 tem um único acumulador e dois registradores de indexação de 8 bits.  O 6800 usa o registrador de de indexação de 16 bits junto com um deslocamento de 8 bits contido na instrução, no 6502 os registradores de indexação de 8 bits são usados junto com um deslocamento de 16 bits na instrução. Estas pequenas mudanças tornaram o 6502 mais flexível e foram usadas com maestria por muitos programadores.


Para compensar a pequena quantidade de registradores, o 6502 é capaz de endereçar de uma forma curta e rápida os primeiros 256 bytes da memória (a "página zero"). Os 256 bytes seguintes são normalmente usados para a pilha, pois o stack pointer possui a parte alta fixa em 0x01, permitindo ao programador mudar apenas os oito bits menos significativos. Como consequência, normalmente temos Ram na parte baixa da memória.

Nos próximos post vou montar na protoboard um computador feito com o 6502.


Um comentário:

Jean Ricart disse...

Nossa 6502 ,era o motor do meu antigo TK2000 da finada Microfibras.
Gostei muito da matéria,deu saudade.