# Motorola 6845

Il Motorola 6845, comunemente noto come MC6845, fu un chip grafico originariamente prodotto da Motorola. Fu clonato da Hitachi nel 46505, usato nelle schede grafiche UltraTerm di Videx e con variazioni irrisorie da MOS Technology nel MOS 6545.
Fu utilizzato in diversi prodotti fra cui le schede grafiche VideoTerm di Videx per i computer Apple II, le schede MDA, CGA ed EGA per i PC IBM compatibili, negli home computer Amstrad CPC e BBC Micro. Le sue funzionalità furono poi duplicate ed estese nell'adattatore video VGA.
Il chip fu noto anche come 6845 CRTC o CRTC6845, con CRTC che stava per Catode Ray Tube Controller.
Nonostante fosse stato sviluppato per essere utilizzato sui sistemi basati sulla CPU Motorola 6800, da cui il relativo numero, fu ampiamente utilizzato anche con altri processori.

## Caratteristiche

Il chip generava il segnale necessario per interfacciarsi con un display raster ed il cursore ma, per contro, non generava i pixel dell'immagine. Poteva generare i segnali di sincronizzazione orizzontale e verticale ed il segnale per accendere o spegnere i singoli pixel. Gestiva anche i puntatori alla memoria video per indirizzare l'area da cui leggere i dati per i successivi pixel da disegnare: come detto, il 6845 non disegnava i pixel per cui la lettura dei dati, la generazione dei pixel e la successiva loro visualizzazione era effettuata da altri circuiti. Il 6845 supportava anche la modalità interlacciata. Il chip permetteva la lettura dei dati video, utili per gestire penne ottiche e dispositivi simili.
Siccome tutti i tempi di sincronizzazione del segnale video erano programmabili, il chip poteva passare dalla modalità NTSC a quella PAL via software: il 6845 poteva così gestire qualsiasi tipo di monitor o display per computer.
Internamente il chip aveva 18 registri ad 8 bit che controllavano ogni aspetto del segnale video. Esternamente tali registri erano accessibili usando 2 soli indirizzi: uno per indicare quale registro era da gestire ed uno per accedere al suo contenuto.
Il 6845 era stato progettato per gestire immagini testuali: ogni locazione della memoria era indirizzabile usando un indirizzo del carattere a 14 bit ed un indirizzo di riga a 5 bit, per un totale di 512 kB di memoria totale gestibile (2$^{14+5}$ = 524.288 byte). Per ricreare uno schermo testuale veniva usato l'indirizzo dei caratteri per puntare alla RAM e l'indirizzo di riga per indirizzare una mappa di caratteri in ROM.
Il 6845 non era in grado di fornire dei framebuffer di grandi dimensioni. Un metodo per aggirare questo limite era quello di utilizzare solo i 14 bit dell'indirizzo dei caratteri ed impostare il numero di righe per caratteri ad 1 ma così si poteva indirizzare solo 16 kB di memoria.
Un altro metodo fu usato nell'Amstrad CPC: i progettisti combinarono l'indirizzo di riga e di carattere per ottenere delle linee di scansione all'interno di un buffer non lineare. In questa maniera ottennero una gestione semplificata per le modalità grafiche (non testuali) ed uno scorrimento orizzontale fluido: per contro questa tecnica non permetteva la gestione dello scorrimento verticale.

## Differenze con il MOS 6545

Nonostante i 2 chip fossero per la maggior parte compatibili, esistevano comunque delle piccole differenze fra il Motorola 6845 ed il MOS 6545, la più rilevante delle quali era che quest'ultimo poteva essere configurato per accedere solo al bus di indirizzi della memoria video. Per ottenere ciò erano stati aggiunti 2 registri per impostare il bus del chip se in accesso alla CPU o se in output per fornire i dati per la generazione dell'immagine.
Una differenza secondaria era che il chip di MOS, ed anche una variante di Rockwell, non aveva il supporto per le immagini interlacciate.
Il 6545 poteva inoltre essere impostato per operare in modalità lineare a 14 bit usando un semplice bit di stato (sul 6845 tale funzionalità doveva essere impostata mediante l'aggiustamento dell'altezza dei caratteri).