MOS Technology 6502

Historie og bruk

6502 var designet mer eller mindre av de samme som designet Motorola 6800 i 1975. Omtrent hele ingeniørteamet bak 6800 sluttet hos Motorola, og startet heller hos MOS Technology. De designet 6501 som var helt lik som 6502 internt, men var pin-kompatibel med Motorola 6800 (det vil si at 6501 passet i kretskort laget for 6800.) Dette likte ikke Motorola, og saksøkte MOS med en gang. Resultatet var den lovlige 6502, en 6501 med en omplassering av de forskjellige pinnene slik at den ikke kunne brukes i maskinvare for Motorola 6800. 
Da den ble lansert i 1975, kostet den bare en sjettedel av prisen på andre CPU-er. Mens 6502 startet på rundt $25, lå andre gjerne på en pris på opp i mot $200. Intel 8080 kostet f.eks. $179. Grunnen til denne enorme prisforskjellen var et hemmelig triks MOS hadde: CPU-kjernen tegnes på et stort "kart" eller oversiktsbilde, som senere forminskes og brukes til å lage selve kjernen. Et slikt forminsket bilde kalles en maske. På 70-tallet var dette en vanskelig prosess, og mange av maskene hadde feil fordi forminskingsprosessen ofte førte til feil, på samme måte som når man kopierer ark i en kopimaskin. Opp til 70% av maskene inneholdt som regel feil, noe som førte til at 70% av prosessorene måtte kastes. MOS derimot, utviklet en måte å fikse maskene på etter de var laget. Dette reduserte antallet ødelagte masker (og dermed prosessorer) drastisk. Hos MOS var det bare 30% som var ødelagt og måtte kastes. Dette gjorde at MOS kunne selge 6502 til den vanvittige prisen. Folk visste ikke om dette trikset til MOS, og derfor fikk den en seig start. De trodde til å begynne med at 6502 var priset feil, men da Intel og en rekke andre produsenter senket prisene sine til $69 for å konkurrere med MOS, fikk folk øynene opp for 6502, og den solgte raskt forbi mange av konkurrentene.

Datamaskiner med 6502

Den første maskinvaren som brukte 6502, var MOS sin egen KIM-1-maskin. Den var laget for at teknikere og ingeniører kunne teste 6502 før de eventuelt designet et system for den. Til en viss overraskelse, ble KIM-1 svært populær blant hobbybyggere, mye på grunn av at den var lett å utvide med både terminal, tastatur, mer minne, og kasettdrev.  Rockwell AIM-65 var en utvidet versjon av denne som også oppnådde en viss popularitet som basis for dataloggere, måleinstrumenter osv. 
En av de første komplette datamaskinene med tastatur og skjermutgang, som brukte 6502, var Apple I i 1976. En annen tidlig maskin med 6502, var spillkonsollen Atari 2600. Men Atari 2600 brukte en nedstrippet versjon av 6502; 6507. Den hadde en 13-bits adressebuss (mot 6502s 16-bits), som gjorde at den bare kunne aksessere 8KB RAM. Videre ble 6502 brukt i Apple II, Commodore PET, og en rekke andre datamaskiner. Den ble også brukt som hjelpeprosessor i en del maskinvaredeler som diskettstasjoner. Andre varianter av 6502, utenom 6507, ble også produsert. De mest kjente er 6510 og Ricoh 2A03. 6510 var en forbedret versjon av 6502 med en separat I/O-buss for kommunikasjon med ekstern maskinvare, og ble i hovedsak brukt i Commodore 64. 2A03 var en modifisert versjon produsert av Ricoh, med innebygd DMA-kontroller og lydprosessor som ble brukt i Famicom/NES. 
Britiske Acorn computers' BBC micro, Electron m.fl var også populære hjemmedatamaskiner med 6502 prosessor. 
MOS Technology lisensierte også 6502-arkitekturen til andre produsenter, og dermed dukket det også opp flere andre CPU-er som var basert på 6502, men som ikke var designet av MOS selv. Senere ble det også produsert 16- og 32-bits versjoner av 6502-arkitekturen. Man finner bl.a. Nintendo SA-1, en 16-bits 6502-kompatibel CPU, i SNES.

Teknisk beskrivelse og arkitektur

6502 er en 8-bits prosessor. Den har registre på 8 bit internt, og en 8-bits databuss, men har en adressebuss på 16 bit, noe som gjør at den har et adresseområde på 65535 bytes, eller 64KB. Den kjører på samme klokkehastighet både internt i prosessorkjernen og eksternt på bussene, en hastighet som som regel ikke er på mer enn 1 – 2 MHz. Likevel er den ofte like rask som andre CPU-er med høyere hastighet. Dette skyldes at 6502 har en mye enklere logikk internt, noe som gjør at den kan få gjort mer per klokkesyklus enn andre prosessorer fra samme tid. Det at den kan kjøre på en såpass lav hastighet (1 – 2 MHz), førte på tiden da den ble lansert, til at billige minnebrikker og ROM-brikker, som ikke var designet for høye klokkehastigheter, kunne brukes i lag med den, noe som gjorde den enda mer attraktiv.
I likhet med forgjengeren Motorola 6800, har 6502 en enkel arkitektur. Den har bare seks registre, i motsetning til mange andre CPU-er fra den tiden, f.eks. Intel 8080 og Zilog Z80. Disse registrene er: Akkumulatoren (A), to indeks-registre (X og Y), program-pekeren (PC), stack-pekeren (S), og prosessorstatus-registeret (P). Til sammenligning har dagens x86-prosessorer gjerne opp i mot 30 til 40 registre. A er hovedregisteret som brukes i alle matte- og bit-operasjoner. X- og Y-registrene har som hovedmål å fungere som indekser inn i et gitt minneområde. Dette gjør det lett å operere med datastrukturer som tabeller (arrays). PC peker alltid til instruksjonen som utføres, S peker til neste ledige element på stacken, og P holder statusinformasjon, bl.a. en rekke statusflagg som blir satt på visse kriterier. Alle registrene er 8 bit store, utenom PC, da det skal dekke over hele det 16 bit store adresseområdet.