MOS 6502: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Recupero di 1 fonte/i e segnalazione di 0 link interrotto/i.) #IABot (v2.0.8.8 |
m smistamento lavoro sporco e fix vari |
||
Riga 47:
}}
Il '''MOS 6502''' è un [[microprocessore]] a [[8 bit]] presentato da [[MOS Technology]] nel settembre del [[1975]].
Assieme allo [[Zilog Z80]] del luglio 1976 venne usato in molti prodotti commercializzati tra la fine degli [[anni 1970|anni settanta]] e gli [[anni 1980|anni ottanta]], come [[videogioco arcade|giochi arcade]] e [[console (videogiochi)|console domestiche]], [[personal computer|personal]] ed [[home computer]], quali l'[[Apple II]] ed il [[Commodore VIC-20]].<ref name="longley">{{cita|Longley, Shain|p. 147|longley}}.{{Citazione|Fino a poco tempo fa le macchine ad 8 bit furono dominate da 2 microprocessori: lo Z80 ed il 6502.||Until recently 8 bit machines were dominated by two microprocessors — the Z80 and the 6502|lingua=en}}</ref> Venne prodotto su licenza da molte ditte, fra cui [[Rockwell International]] e [[Synertek]]. Dal MOS 6502 derivano diversi processori, tra cui si annoverano il [[MOS 6507]], usato nella console [[Atari 2600]], il [[MOS 6509]], usato nella linea di computer [[Commodore CBM]], ed il [[MOS 6510]], utilizzato come CPU del [[Commodore 64]].<ref>{{cita web|url=http://www.cpu-collection.de/?l0=co&l1=MOS&l2=6510|titolo=MOS 6510|editore=cpu-collection.de|accesso=24 settembre 2015}}{{citazione|Il MOS 6510 è un 6502 con una porta I/O a 6 bit aggiuntiva. (…) Il 6510 che era incluso nel C64 lavorava a 1 MHz (…)|Cpu-collection.de|The MOS6510 is a 6502 with an additional 6 Bit bidirectional I/O Port. (…) The 6510 that was built in the C64 ran at 1 Mhz (…)|lingua=en}}</ref><ref>{{cita testo|editore=Commodore Semiconductor Group|titolo=Scheda tecnica del MOS 6510
==Storia==
===Le origini e il progetto in Motorola===
[[File:BreakNES MOS 6502.jpg|thumb|left|Il [[Die (elettronica)|Die]] del MOS 6502.]]
Il [[circuito integrato|chip]] fu progettato dallo stesso gruppo che aveva sviluppato il [[MOS 6501]] e che comprendeva diversi degli ingegneri che avevano lavorato dal 1971 sul [[Motorola 6800]], tra cui [[Chuck Peddle]] e [[Bill Mensch]], usciti in massa da [[Motorola]] nel [[1974]].<ref name="Bagnall 2006">{{Cita libro | cognome = Bagnall | nome = Brian | titolo = On the Edge: The Spectacular Rise And Fall of Commodore | editore = Variant Press | anno = 2006 |città= Winnipeg, Manitoba |
Peddle aveva promosso commercialmente il 6800 ed aveva visitato molti potenziali clienti per presentare il microprocessore, pensato per un impiego in sistemi embedded. Nonostante le favorevoli impressioni, il processore non vendeva come previsto perché il prezzo di lancio di 360$ era considerato eccessivamente alto: molti clienti consideravano equo un prezzo di $ 25 a chip. Peddle propose perciò a Motorola di sviluppare una versione depotenziata del 6800 da poter vendere a quel prezzo, ma la dirigenza non accolse il suo suggerimento.<ref>{{cita web|url=http://www.computerhistory.org/collections/accession/102702020|titolo= Motorola 6800 Oral History |anno=2008|p= 18|editore=ComputerHistory.org|accesso=7 febbraio 2011|urlarchivio=https://web.archive.org/web/20120402231428/http://www.computerhistory.org/collections/accession/102702020
Nonostante il disinteresse dei vertici societari, Peddle iniziò per proprio conto a lavorare a quell'idea. Il nuovo processore era simile al 6800: come questo usava pochi [[Registro (informatica)|registri]] ma aveva un solo [[Accumulatore (informatica)|accumulatore]] (il 6800 ne aveva 2: registri A e B). Rispetto al 6800, il 6502 introduceva diversi nuovi modi di indirizzamento, permettendo di utilizzare i suoi registri indice e lo stack in maniera molto efficiente: ad esempio, con lo stack era possibile accedere alle celle di memoria poste nell'intervallo di indirizzo 256-511 (esadecimale: $100-$1FF), mentre alcune istruzioni potevano accedere direttamente alle celle di memoria nell'intervallo 0-255 (esadecimale: $00-$FF), la cosiddetta "''pagina zero''", utilizzando 1 solo byte come indirizzo.<ref>{{cita web|url=http://www.cpushack.com/CPU/cpu1.html|titolo=Section One: Before the Great Dark Cloud - Part V: The 650x, Another Direction (1975)…|editore=CPU Shack|accesso=25 settembre 2015|lingua=en}}{{citazione|A differenza dell'[Intel]8080 e dei chip simili, il 6502 (ed il 6800) aveva molti pochi registri. Era un processore ad 8 bit, con un bus indirizzi a 16 bit. Al suo interno c'era un registro per i dati ad 8 bit, 2 registri indice ad 8 bit ed un puntatore allo stack ad 8 bit (lo stack era preimpostato dall'indirizzo 256 (esad. $100) a 511 ($1FF)). Usava questi registri indice e lo stack efficacemente, con più modalità di indirizzamento, inclusa una modalità pagina zero che accedeva gli [[indirizzi di memoria]] da 0 a 255 ($FF) con un indirizzo ad 8 bit che velocizzava le operazioni (non doveva caricare un secondo byte per l'indirizzo).|CPU Shack|Unlike the 8080 and its kind, the 6502 (and 6800) had very few registers. It was an 8 bit processor, with 16 bit address bus. Inside was one 8 bit data register, two 8 bit index registers, and an 8 bit stack pointer (stack was preset from address 256 ($100 hex) to 511 ($1FF)). It used these index and stack registers effectively, with more addressing modes, including a fast zero-page mode that accessed memory addresses from address 0 to 255 ($FF) with an 8-bit address that speeded operations (it didn't have to fetch a second byte for the address). |lingua=en}}</ref> Il nuovo chip era inoltre capace di eseguire calcoli in aritmetica [[Binary-coded decimal|BCD]] (''Binary-coded decimal'')<ref name=bcd>{{cita web|url=http://www.6502.org/tutorials/decimal_mode.html|titolo=Decimal Mode|editore=6502.org|accesso=25 settembre 2015|lingua=en}}</ref> ed aveva un generatore di [[clock]] interno.<ref name=datasheet>{{cita articolo|editore=Commodore Semiconductor Group|titolo=6500 microprocessors
Nonostante la disapprovazione dei vertici di Motorola, il gruppo guidato da Peddle continuava a lavorare sul progetto, cominciando a maturare nel contempo malcontento per l'assenza di supporto che ricevevano. Alla fine, la dirigenza decise di fermare lo sviluppo del nuovo chip: come risposta, Peddle e molti dei suoi colleghi lasciarono Motorola alla ricerca di una società che fosse stata interessata a produrre tale chip.<ref name=Matthews/>
Riga 67:
Peddle ed il suo gruppo terminarono lo sviluppo della loro idea che prese corpo in 2 nuovi microprocessori che erano compatibili con i chip periferici di Motorola: il [[MOS 6501]], progettato da Rod Orgill, che poteva essere inserito negli zoccoli del 6800 perché compatibile a livello di [[piedinatura]] con quest'ultimo, ed il MOS 6502, progettato da Bill Mensch, simile al precedente ma con una piedinatura differente ed un circuito generatore di clock integrato. Questi chip non potevano eseguire i programmi scritti per il 6800 perché avevano un'architettura ed un insieme di istruzioni differenti.
I nuovi processori furono largamente pubblicizzati su diverse riviste del settore: un annuncio apparve sul numero di luglio di ''Electronics''<ref name="Electronics July 24 1975">{{Cita pubblicazione | titolo = Microprocessor line offers 4, 8,16 bits | rivista = Electronics | volume = 48 | numero = 15 | p = 118 | editore = McGraw-Hill |città= New York | data = 24 luglio 1975}}</ref>, un altro su quello di agosto di ''EE Times'',<ref name="6502 EE Times 1975">{{Cita pubblicazione | cognome = Sugarman | nome = Robert | titolo = Does the Country Need A Good $20 Microprocessor? | rivista = EE Times | p = 25 | editore = CMP Publications | città = Manhasset, New York | data = 25 agosto 1975 | url = http://www.commodore.ca/gallery/magazines/misc/mos_605x_team_eetimes_august_1975.pdf | accesso = 6 febbraio 2011 | urlarchivio = https://web.archive.org/web/20070203105724/http://www.commodore.ca/gallery/magazines/misc/mos_605x_team_eetimes_august_1975.pdf
===La presentazione del 6502===
[[File:MOS 6501 6502 Ad Sept 1975.jpg|thumb|Pubblicità dei MOS 6501 e 6502.]]
Al WESCON il 6502 fu prezzato a $ 25. MOS Technology aveva uno stand con un grosso contenitore pieno di chip. Dato che non era riuscita a portare un numero sufficiente di esemplari funzionanti, decise di riempire il contenitore con i chip difettosi e mettere quelli funzionanti in cima, dando così l'impressione che i propri stabilimenti fossero già in grado di reggere una produzione in quantitativi industriali.<ref name="Bagnall">{{cita libro|autore=Brian Bagnall|titolo= On the Edge: The Spectacular Rise and Fall of Commodore |editore=Variant Press|anno=2005|p=24}}</ref> Nella stessa fiera il 6800 e l'[[Intel 8080]] erano in vendita a $ 179.<ref name="James Ad">{{cita pubblicazione | autore = James | titolo = James Advertisement | rivista = Popular Electronics | volume = 8 | numero = 3 | p = 107 | data = settembre 1975}}{{Citazione|James è adesso Jameco Electronics. La CPU 8080 era a $ 149,95, la CPU 8008 era a $ 29,95. Un chip di RAM statica 2102 da 1 Kbit era a $ 4,95. Il loro prezzo per l'8080A era $ 37,95 nel numero di giugno del 1976.||James is now Jameco Electronics. The 8080 CPU was $149.95, the 8008 CPU was 29.95. A 2102 1K bit static RAM was $4.95. Their price for a 8080A CPU was 37.95 in the June 1976 issue.|lingua=en}}</ref> Il MOS 6502 fu messo in vendita, ad un prezzo di 25 dollari,<ref name="commons.wikimedia.org">{{Cita pubblicazione | titolo = MOS 6502 the second of a low cost high performance microprocessor family | rivista = Computer | volume = 8 | numero = 9 | pp = 38–39 | editore = IEEE Computer Society | data = settembre 1975 | url = https://commons.m.wikimedia.org/wiki/File:MOS_6501_6502_Ad_Sept_1975.jpg |doi= 10.1109/C-M.1975.219074 }}</ref> era la più economica [[CPU]] disponibile sul mercato, costando meno di un sesto dei modelli concorrenti: ad esempio, il [[Motorola 6800]] era venduto a $ 175.<ref>{{Cita pubblicazione | autore = Motorola | titolo = All this and unbundled $69 microprocessor | rivista = Electronics | volume = 48 | numero = 22 | p = 11 | editore = McGraw-Hill | data = 30 ottobre 1975 | url = https://commons.wikimedia.org/wiki/File:Motorola_MC6800_microprocessor_ad_1975.jpg }}</ref> all'inizio le persone pensarono che il prezzo del 6502 fosse sbagliato o ci fosse dietro un imbroglio ma durante lo svolgimento della fiera esse videro che sia Motorola che Intel abbassarono il prezzo dei loro chip a $ 69.<ref>{{Cita pubblicazione | autore = Motorola | titolo = All this and unbundled $69 microprocessor | rivista = Electronics | volume = 48 | numero = 22 | p = 11 | editore = McGraw-Hill | data = 30 ottobre 1975 | url = https://commons.wikimedia.org/wiki/File:Motorola_MC6800_microprocessor_ad_1975.jpg }}{{Citazione|Il prezzo per un singolo MC6800 fu ridotto da $ 179 a $ 69. Il precedente prezzo per quantitativi da 50 a 99 chip era di $ 125 cad.||The quantity one price for the MC6800 was reduced from $179 to $69. The previous price for 50 to 99 units was $125.|lingua=en}}</ref><ref name="Digi-Key Ad">{{cita pubblicazione | autore = Digi-Key | titolo = Pubblicità di Digi-Key | rivista = Popular Electronics | volume = 8 | numero = 6 | p = 124 |data = dicembre 1975}}{{Citazione|La CPU 8080A era a $ 69,50. Un chip di RAM statica 2102 da 1 Kbit era a $ 3,50. Il prezzo di Digi-Key per un 8080A era di $ 34,95 nel numero di giugno del 1976.||The 8080A CPU was $69.50. A 2102 1K bit static RAM was $3.50. Digi-Key's price for a 8080A was $34.95 in the June 1976 issue.|lingua=en}}</ref>
Questa riduzione dei prezzi legittimò il 6502, che cominciò ad essere venduto a centinaia di unità.<ref name=Bagnall />
=== La causa tra Motorola e MOS Technology ===
Dopo il WESCON MOS Technology fu [[atto di citazione|citata]] nel mese di novembre del 1975 da Motorola:<ref name="MD Dec 1975 6502 Law Suit">{{Cita pubblicazione | titolo = Motorola Sues MOS Technology | rivista = Microcomputer Digest | volume = 2 | numero = 6 | p = 11 | editore = Microcomputer Associates | città = Cupertino CA | data = dicembre 1975 | url = http://www.bitsavers.org/pdf/microcomputerAssociates/Microcomputer_Digest_v02n06_Dec75.pdf | urlmorto = sì | accesso = 6 febbraio 2011
La causa si risolse nel mese di maggio del [[1976]] con MOS Technology che decise di eliminare il chip 6501 che poteva essere montato negli zoccoli del 6800 e di acquistare le licenze dei chip periferici di Motorola.<ref name="MD May 1976 6501 dropped">{{Cita pubblicazione | titolo = MOS Technology Drops 6501 | rivista = Microcomputer Digest | volume = 2 | numero = 11 | p = 4 | editore = Microcomputer Associates | città = Cupertino CA | data = maggio 1976 | url = http://www.bitsavers.org/pdf/microcomputerAssociates/Microcomputer_Digest_v02n11_May76.pdf | accesso = 18
===Il MOS KIM-1===
Riga 105:
La bassa frequenza di clock riduceva i vincoli sulle velocità delle periferiche collegate alla CPU, dato che solo il 50% del ciclo di clock era disponibile per l'accesso alla memoria (a causa del progetto asincrono della CPU, questa percentuale varia molto tra le diverse versioni del chip). Ciò era importante in un periodo in cui le memorie affidabili avevano tempi di accesso nell'ordine dei 450-250 ns. Il 6502 era stato progettato per essere infatti semplice ed economico, ed abbassare i costi dell'intero sistema era un fattore molto importante per concorrere nei mercati degli home computer e delle console per videogiochi.
Come il suo precursore, il [[Motorola 6800]], il 6502 aveva pochi [[registro (informatica)|registri]]: all'epoca in cui il 6502 fu progettato il numero di transistor contenuti in un integrato influivano molto sul suo costo e mantenerne il loro numero basso contribuiva a contenere i costi. Inoltre la [[RAM]] esterna era più veloce di una CPU, quindi era sensato ottimizzare l'architettura per l'accesso alla memoria piuttosto che incrementare il numero dei registri del chip. Il 6502 fu progettato con l'obiettivo di essere molto economico: perciò furono usati circa 4.000 transistor contro i circa 2.300 dell'[[Intel 4004]] del 1971 ed i circa 8.500 dello [[Z80]].<ref>{{cita web|url=http://www.classiccmp.org/pipermail/cctalk/2001-May/170250.html|titolo="How many transistors in the 6502 processor?"|data=5 maggio 2001|accesso=7 febbraio 2011|urlmorto=sì|urlarchivio=https://web.archive.org/web/20100925064849/http://www.classiccmp.org/pipermail/cctalk/2001-May/170250.html
Il progetto originario del 6800 prevedeva una superficie di silicio di 4.572 mm di lato pari a 20,9 mm² diventati 5.4 mm pari a 29 mm² <ref>Motorola 6800 Oral History (2008), p. 10</ref> mentre il progetto del 6502 prevedeva 3.9 x 4.3 mm pari a 16.6 mm².
Riga 183:
[[Mitsubishi]] realizzò il 65816, un [[microcontrollore]] con un'architettura simile a quella del 65C816, anche se non compatibile al 100% con essa.
[[Synertek]] pubblicò la scheda tecnica dell''''SY6516''', una versione a 16 bit del 6502 che però non fu mai messa in commercio.<ref>{{cita web|url=http://homepage.mac.com/jorgechamorro/a2things/PDFs/65xxx.txt|titolo="Syntertek SY6516 - The chip that never existed"|editore=Apple II Things|accesso=7 febbraio 2011|urlmorto=sì|urlarchivio=https://web.archive.org/web/20100628154615/http://homepage.mac.com/jorgechamorro/a2things/PDFs/65xxx.txt
== Problemi nel progetto ==
Riga 198:
Le istruzioni di lettura/modifica/scrittura ad un particolare indirizzo eseguono 1 ciclo di lettura e 2 di scrittura. Ciò può causare problemi durante il secondo ciclo di scrittura nel caso si acceda ad hardware che opera durante la scrittura. Questo difetto è stato risolto nella versione CMOS del 6502, in cui il processore esegue 2 cicli di lettura ed 1 di scrittura.
I flag di stato "N" (risultato negativo), "V" (segnalazione di [[Arithmetic overflow|overflow]]) e "Z" (risultato pari a zero) non sono validi quando il processore esegue operazioni aritmetiche in modalità BCD, dato che questi flag riflettono lo stato delle operazioni in modalità binaria e non in quella BCD. Questa limitazione è stata rimossa nelle versioni CMOS. Questo bug è stato in passato utilizzato come test per verificare se la CPU fosse in logica NMOS oppure CMOS.<ref>{{cita web|url=http://www.s-direktnet.de/homepages/k_nadj/cputest.html|editore=Pagina su Web.Archive.org|accesso=7 febbraio 2011|titolo=Test di verifica CMOS/NMOS per i 6502|urlmorto=sì|urlarchivio=https://web.archive.org/web/20080102014138/http://www.s-direktnet.de/homepages/k_nadj/cputest.html
Quando il processore si trova in modalità BCD mentre viene eseguito un interrupt hardware, esso non torna in modalità binaria. Questo difetto può generare nel codice delle routine di interrupt dei bug difficili da scovare se esse non deselezionano la modalità BCD prima di eseguire qualunque operazione aritmetica. Un sistema operativo affetto da questo problema era il [[KERNAL]] del Commodore 64, che non gestiva correttamente questo difetto del processore. Anch'esso fu risolto nelle versioni CMOS.
Riga 217:
Diversi utenti iniziarono a cercare modi di velocizzare i propri computer. Siccome il 6502 preleva il clock dall'esterno, aumentarne la velocità era più semplice che cercare un chip più veloce che fosse compatibile. Molti costruttori iniziarono a fabbricare dispositivi "acceleratori" composti da un piccolo quantitativo di RAM ad alta velocità e dalla circuiteria necessaria a sincronizzare il 6502 "accelerato" con la RAM e le periferiche originali dei computer. Ad esempio, il [[floppy disk drive]] dell'[[Apple II]] aveva tempi di accesso molto precisi, sincronizzati tramite la gestione diretta dei registri di I/O del processore: per questo motivo gli acceleratori per l'Apple II riportavano la frequenza della CPU al valore originale di 1 MHz durante le operazioni di accesso ai dischi.
I primi acceleratori furono realizzati come schede aggiuntive ma diversi acceleratori che comparvero in seguito integrarono in un package delle dimensioni del chip originale non solo il 6502 ma anche tutta la circuiteria accessoria. Un esempio di questo tipo di acceleratori è lo ''Zip Chip'' per l'Apple II, che in un unico package inseribile nello zoccolo del 6502 in formato [[Dual in-line package|DIP40]] integrava la CPU e 350 circuiti accessori. Lo Zip Chip elevava la frequenza del 6502 a 4 od 8 MHz, a seconda dei modelli.<ref>{{cita pubblicazione|url=http://apple2online.com/web_documents/zipchip_instruction_manual.pdf|titolo=Manuale utente dello Zip Chip|editore=ZIP Technology|accesso=7 febbraio 2011}}</ref><ref>{{cita web|url=http://www.nekochan.net/weblog/archives/2009/04/ebay-and-zip-ch.html|titolo=Foto dello Zip Chip e della sua confezione|accesso=7 febbraio 2011|urlarchivio=https://web.archive.org/web/20110127120051/http://www.nekochan.net/weblog/archives/2009/04/ebay-and-zip-ch.html
==Simulatori==
Un simulatore funzionante del 6502 è stato realizzato in JavaScript dal gruppo visual6502.org utilizzando la tecnica del reverse engineering. Infatti gli schemi tecnici originali della MOS sono stati disegnati a mano e andati perduti. Il gruppo diretto da Michael Steil è riuscito nell'intento ricavando delle immagini ad alta definizione dei vari strati del processore mediante acidi e fotografando gli stessi mediante micro fotografia. Il tutto è stato presentato alla ventisettesima edizione del [[Chaos Communication Congress]] a Berlino.<ref>{{Cita web|url=http://visual6502.org/images/6502/index.html|titolo=6502 Images|sito=visual6502.org|accesso=
==Nella cultura di massa==
Riga 255:
* {{Cita libro|titolo=Microprocessori|url=https://archive.org/details/Microprocessori/page/n143|autore=|editore=Gruppo Editoriale Jackson|anno=1988|ISBN=88-256-0068-2|pp=143-162}}
=== Articoli in rivista ===
* {{cita pubblicazione|lingua=en|cognome=Sugarman|nome=Robert|titolo=Does the Country Need a Good $20 Microprocessor?|rivista=Electrical Engineering Times|p=25|data=25 agosto 1975|url=http://www.commodore.ca/gallery/magazines/misc/mos_605x_team_eetimes_august_1975.pdf|accesso=8 febbraio 2011|urlarchivio=https://web.archive.org/web/20070203105724/http://www.commodore.ca/gallery/magazines/misc/mos_605x_team_eetimes_august_1975.pdf
* {{cita pubblicazione|lingua=en|titolo=3rd Generation Microprocessor|rivista=Microcomputer Digest|volume=2|numero=2|pp=1-3|editore=Microcomputer Associates|città=Cupertino, California|data=08/1975|url=http://bitsavers.org/magazines/Microcomputer_Digest/Microcomputer_Digest_v02n02_Aug75.pdf|accesso=5 maggio 2021
* {{cita pubblicazione|lingua=en|cognome=Fylstra|nome=Daniel|titolo=Son of Motorola (or the $20 CPU Chip)|rivista=BYTE|volume=1|numero=3|pp=56-62|editore=Green Publishing|città=Peterborough, New York|data=11/1975}}
* {{RivistaVG|bit|5|35-40|11/12|1979|titolo=Parliamo un po' del 6502}}
Riga 268:
===Caratteristiche del set di istruzioni===
* {{cita web |
* {{cita web |
===Emulatori e simulatori===
* {{cita web|url=http://www.visual6502.org|titolo=Simulazione visuale a livello di transistor del 6502}}
* [http://www.zophar.net/6502.html Elenco degli emulatori software del 6502] (zophar.net)
* [http://atarihq.com/danb/6502.shtml Simulatore del 6502 per Windows] (atarihq.com)
* {{cita web|url=http://6502asm.com|titolo=Compilatore ed emulatore del 6502 per browser scritto in JavaScript}}
===Primi computer basati sul 6502===
* [http://www.applefritter.com/apple1 Apple I Owners Club] - Club dei possessori dell'Apple I (applefritter.com)
* [http://oldcomputers.net/kim1.html Schema del KIM-1 schematics] (oldcomputers.net)
* {{cita web|url=http://www.oldcomputers.arcula.co.uk/65021.htm#6502_microprocessor|titolo=Rockwell AIM 65}}
===Acceleratori hardware===
Riga 292:
{{Interprogetto}}
[[Categoria:Microprocessori MOS]]▼
{{Controllo di autorità}}
{{Portale|informatica}}
▲[[Categoria:Microprocessori MOS]]
|