# MOS 7501

Il MOS 7501 è un microprocessore ad 8 bit sviluppato da MOS Technology per i computer Commodore della serie 264 che comprende il Commodore Plus/4, il Commodore 16 e il Commodore 116.
Il modello successivo si chiama MOS 8501: rispetto al 7501, realizzato con i transistor HMOS-1 (high-performance n-channel metal-oxide-semiconductor), è costruito utilizzando transistor HMOS-2. I transistor HMOS sono una tipologia di transistor con prestazioni più elevate rispetto ai transistor NMOS dei precedenti chip della serie 65xx.

## Dati tecnici

Il 7501 deriva dal MOS 6510 usato nel Commodore 64, a sua volta evoluzione del fortunato processore MOS 6502 usato in famosi computer come l'Apple II ed il Commodore VIC-20, con cui mantiene la compatibilità a livello di microcodice. Come il 6510, anche il 7501 ha un bus a 16 bit con il quale può indirizzare fino a 64 kB di memoria e, come il 6510, ha 3 soli registri interni: il primo, chiamato "Accumulatore", o più semplicemente "A", è anche il più utilizzato, dato che le istruzioni del processore (56 in tutto) in genere eseguono i calcoli proprio su di esso. Gli altri due registri, chiamati "X" ed "Y", sono per lo più di appoggio. Per sopperire a questa carenza di registri le prime 256 locazioni di memoria del computer, da $0000 a $00FF, chiamate "pagina 0" (zero), sono utilizzate come registri aggiuntivi per memorizzare impostazioni addizionali della macchina. La CPU mappa anche lo stack in memoria, agli indirizzi compresi fra $0124 e $01FF.
Rispetto al 6502, il 7501 presenta un canale I/O bidirezionale a 7 bit (mappato all'indirizzo $0001) usato per il bank switching, una tecnologia che permette di gestire dinamicamente i banchi di memoria mediante la selezione di quelli visibili alla CPU: si possono, cioè, avere 2 banchi, uno ROM ed uno RAM, con lo stesso indirizzo e selezionare di volta in volta quello visibile alla CPU. Questa tecnologia è stata poi ripresa anche nel MOS 8502, la CPU cuore del Commodore 128. La gestione dei banchi avviene in collaborazione con il TED mediante i piedini del bus di I/O, e la locazione di memoria $00FB contiene la configurazione corrente della memoria del computer.
Grazie ai piedini del bus dati realizzati in logica tri-state, la CPU può impostare questi pin in alta impedenza, scollegandoli di fatto dal bus di sistema e permettendo così ad altre periferiche di utilizzarlo per accedere direttamente alla memoria (DMA): nei computer della serie 264 tale accesso è eseguito dal solo MOS TED, il chip deputato alla generazione dei segnali audio e video.
Il clock del 7501 è variabile: può lavorare a 0,89 oppure 1,76 MHz. In condizioni normali il computer opera alla frequenza più bassa: ciò è dovuto al fatto che il TED opera internamente anch'esso a 1,76 MHz ma impegna il bus di sistema per accedere alla memoria con il clock inferiore, rallentando anche il processore. Manipolando i registri del TED si può disattivare il segnale video: in questo modo il TED non impegna più il bus di sistema del computer permettendo alla CPU di operare alla frequenza più elevata.
Dopo un reset il processore legge le locazioni di memoria $FFFC/$FFFD (byte basso/byte alto) e salta ad eseguire il programma all'indirizzo specificato; dopo un interrupt il 7501 legge invece l'indirizzo dalle locazioni $FFFE/$FFFF ed esegue la routine di interrupt lì presente, a meno che l'interrupt non sia stato disabilitato.

## Specifiche tecniche

* Tecnologia: HMOS
* Clock: 0,89 o 1,76 MHz
* Cicli di clock per singola istruzione: da 2 a 7
* Memoria indirizzabile: 64 kB
* Bus indirizzi: 16 bit con three state (DMA)
* Bus dati: 8 bit
* Interrupt: IRQ, NMI, interrupt software con istruzione BRK
* Istruzioni: 56
* Registri:
** Accumulatore (8 bit)
** Registro X (registro indice) (8 bit)
** Registro Y (registro indice) (8 bit)
** Puntatore allo stack (8 bit)
** Registro di stato (8 bit)
** Puntatore per istruzioni (16 bit)
* Porta di I/O ad 8 bit (ma solo 7 utilizzati)