# Motorola 6845

El Motorola 6845, MC6845 o també conegut com CRTC6845 (Cathode Ray Tube Controller 6845), és un generador d'adreces de vídeo, introduït primerament per Motorola. Encara que el 6845 va ser desenvolupat per als dissenys basats en el Motorola 6800 i tenia un nombre de peça relacionat amb aquesta família, va ser emprat juntament amb molts altres processadors.
El 6845 va ser usat als adaptadors vídeo MDA, CGA i Plantronics Colorplus dels primers ordinadors personals d'IBM i els seus compatibles, com també en els ordinadors Amstrad CPC i BBC Micro o a les targetes Videx VideoTerm per a Apple II. La funcionalitat del 6845 va ser duplicada i ampliada mitjançant circuits personalitzats en els adaptadors de vídeo per a PC EGA i VGA.

## Disseny

Dissenyat originalment per Hitachi com a HD46505. Les versions construïdes per Hitachi es troben en una àmplia varietat d'ordinadors japonesos, des de Sony, Sharp, Panasonic i Casio. Clonat posteriorment com a MB89321A per Fujitsu. També se'l coneix com 6845 CRTC o CRTC6845, que significa "controlador de tub de raigs catòdics". Aquesta versió es va utilitzar en l'Apricot PC i en el Victor 9000 per tal de proporcionar una pantalla monocromàtica amb resolució de 800x400. Un clon comú d'aquest controlador CRT és el controlador CRT United Microelectronics Corporation (UMC) UM6845E. El 6845 era molt similar i estava relacionat amb el posterior 6545 fabricat per MOS Technology (Commodore Semiconductor Group) i Rockwell (en dues versions).

## Descripció

El 6845 crea els senyals necessaris per a generar la trama d'una pantalla però no és capaç de mostrar cap píxel. És a dir genera correctament els senyals per a la sincronització horitzontal i vertical i proporciona la direcció de memòria en la qual el proper píxel o conjunt de píxels ha de ser llegit. El procés de llegir aquest valor, convertint-lo en píxels i enviar-los a un CRT es deixa per a altres circuits.
Suporta els modes de sortida de vídeo entrellaçats i no entrellaçats, igual que un cursor de text per per a la pantalla Es proporciona un latch que quan era disparat duplicava i conserva una còpia de la direcció de vídeo que hi havia en aquell moment per poder ser llegida més endavant per la CPU. Això permetia el funcionament de dispositius de senyalització com el llapis òptic i la pistola de llum que enviaven un senyal al 6845 quan el feix electrònic passava pel lloc on estaven apuntant, permetent així que un programa pogués saber la localització assenyalada.
Ja que tots els aspectes de la sincronització de vídeo só programables, una sola màquina pot canviar entre les sincronitzacions NTSC i PAL mitjançant un programa. El xip també pot ser usat per a controlar monitors o qualsevol altre tipus de pantalla.

## Registres

El xip té un total de 18 registres de 8 bits que controlen tots els aspectes de les sincronitzacions vídeo. Només dues adreces queden exposades als components externs, una que era un índex per seleccionar quin registre intern ha de ser accedit, i una altra per accedir el registre seleccionat, ja sigui en lectura o en escriptura.
| N. º de Registre | Funció |
| 0 | Total horitzontal, en nombre de caràcters |
| 1 | Nombre de caràcters horitzontals mostrats per fila |
| 2 | Posició de sincronització horitzontal |
| 3 | Ample de sincronització horitzontal, en nombre de caràcters |
| 4 | Total vertical |
| 5 | Ajustament del total vertical, en nombre de línies d'escaneig |
| 6 | Nombre de files mostrades (verticalment) |
| 7 | Posició de sincronització vertical, a # de files de caràcters |
| 8 | Mode d'entrellaçat |
| 9 | Màxima direcció de línies d'escaneig |
| 10 | Inici del cursor, en línia d'escaneig |
| 11 | Final del cursor, en línia d'escaneig |
| 12 | Adreça inicial de la pantalla (High) |
| 13 | Adreça inicial de la pantalla (Low) |
| 14 | Adreça del cursor (High) |
| 15 | Adreça del cursor (Low) |
| 16 | Adreça del Light Pen (High) |
| 17 | Adreça del Light Pen (Low) |
El 6845 es va dissenyar per a visualitzadors basats en caràcters. Cada adreça que generava es componia de dues parts, una adreça del caràcter, de 14 bits, i una adreça de la fila (línia scan del caràcter), de 5 bits. No obstant això, el 6845 es podia fer servir també per generar gràfics.
La direcció del caràcter augmentava linealment. Quan el xip assenyalava la sincronització horitzontal (final de la línia), s'incrementava la direcció de la línia. Si l'adreça de la fila no igualava el nombre programàticament fixat de línies per caràcter, llavors la direcció del caràcter es reseteja per tenir el mateix valor que tenia al principi de la línia d'escaneig actual. L'adreça de la línia es reseteja a zero després d'escanejar l'última línia del caràcter, per preparar-se a escanejar la primera línia de la següent fila de caràcters.
Si la direcció del caràcter era usada per mirar una referència del caràcter en RAM i la direcció de la línia per indexar una taula de gràfics que representaven el caràcter a la ROM, es construïa una visualització ordinària de mode de text.

## Framebuffers lineals

Com s'ha descrit abans, el 6845 ordinàriament no pot proporcionar grans framebuffers lineals. Un disseny només podia fer servir l'adreça de caràcters de 14 bits i ajustar el nombre de línies per caràcter a 1 però estaria restringit a 16 KB de memòria adreçable. Es pot apreciar en una mostra de codi.
Una solució de compromís es trobava a l'Amstrad CPC que combinava la direcció de files i la direcció dels caràcters conjuntament, de manera de proporcionar scanlines lineals dins d'un buffer no lineal. Això tenia els avantatges d'una programació més fàcil per a la visualització i un moviment suau horitzontal, però impedeix severament el moviment en sentit vertical.

## Modes de vídeo

| Mode | Resolució | Colors | Bytes |
| Alphanumeric Internal | 32 x 16 | 1 + Negre | 512 |
| Alphanumeric External | 32 x 16 | 1 + Negre | 512 |
| Semigraphics 4 | 64 x 32 | 8 + Negre | 512 |
| Semigraphics 6 | 64 x 48 | 4 + Negre | 512 |
| Color Graphics 1 | 64 x 64 | 4 | 1024 |
| Resolution Graphics 1 | 128 x 64 | 1 + Negre | 1024 |
| Color Graphics 2 | 128 x 64 | 4 | 2048 |
| Resolution Graphics 2 | 128 x 96 | 1 + Negre | 1536 |
| Color Graphics 3 | 128 x 96 | 4 | 3072 |
| Resolution Graphics 3 | 128 x 192 | 1 + Negre | 3072 |
| Color Graphics 6 | 128 x 192 | 4 | 6144 |
| Resolution Graphics 6 | 256 x 192 | 1 + Negre | 6144 |

## Diferències amb el 6545

Tot i que en gran part eren compatibles, existien un nombre de petites variacions entre el 6845 i el 6545. La diferència més gran era que el 6545 podia ser configurat de manera que tingués accés únic al bus d'adreces per a la memòria de vídeo. Eren inclosos dos registres addicionals per ajustar qualsevol adreça que la CPU volgués llegir i el xip s'alternava entre fer sortir adreces per a la generació de la visualització i l'ajust de visualització per a l'accés de la CPU.
Petites diferències eren que el MOS Technology i una variació del Rockwell 6545 no tenien suport per a sortida entrellaçada i tots els 6545 van incloure un ajust opcional de la direcció, que si s'activava, endarreria l'activació de la visualització per un caràcter. Aquesta segona característica va ser incorporada a les últimes variacions del Motorola 6845. El 6545 es podia ajustar, usant un bit d'estat, per treballar en mode lineal de 14 bits. El 6845 es requeria l'ajust de l'alçada del caràcter.

## Trucs

El 6845 llegia la direcció del començament per a la visualització de vídeo una vegada per frame. No obstant això, si els valors de la sincronització interna al xip eren alterats en el temps correcte, es podia fer que es preparés per a un nou frame sense acabar l'actual, creant un salt no continu de les direccions generades a meitat del camí de la visualització. Això era comunament usat pels jocs per proporcionar una àrea mòbil de visualització (generalment el camp de joc), i una àrea estàtica (generalment una visualització d'estat).
El desplaçament en sentit vertical era restringit perquè només la direcció d'inici del caràcter podia ser ajustada i la direcció de la fila es posava sempre a zero a l'inici del frame, però ajustant els temps de la vora era possible desplaçar, per a increments de caràcters sencers, la posició en què el framebuffer era mostrat a la pantalla. Amb el dibuix de píxels en blanc a les vores de la pantalla, això podia fer-se invisible a l'usuari, creant just la il·lusió d'un desplaçament vertical suau.

## Referències

* ↑ PC Mag julio de 1983, p. 435, a Google Books
* 1 2 3 «The 6845 Cathode Ray Tube Controller (CRTC)». www.tinyvga.com. [Consulta: 18 novembre 2022].
* ↑ «Datasheets-hitachi:hd4650». [Consulta: 22 febrer 2024].
* ↑ «CRTC (6845, 6545, 46505)». web.archive.org, 29-12-2003. Arxivat de l'original el 2003-12-29. [Consulta: 22 febrer 2024].
* ↑ «Datasheet Archive: MB89321AP datasheet by Fujitsu». Datasheet Archive Search Engine. [Consulta: 22 febrer 2024].
* ↑ «The 6845 Cathode Ray Tube Controller (CRTC)». web.archive.org, 28-01-2006. Arxivat de l'original el 2006-01-28. [Consulta: 22 febrer 2024].
* ↑ «MC6845 compatible CRTC». web.archive.org, 30-08-2002. Arxivat de l'original el 2002-08-30. [Consulta: 22 febrer 2024].
* ↑ «Differences of CRTC models». www.6502.org. [Consulta: 18 novembre 2022].
* ↑ MC6847 Display Modes Overview(anglès)
* ↑ «Differences of CRTC models». www.6502.org. [Consulta: 18 novembre 2022].
* ↑ Fachat, André. «Differences of CRTC models». 6502.org, 02-11-2013. [Consulta: 22 febrer 2024].

## Enllaços externs

* Zipped TIFs of the 6845 data sheets
* Synertek 6545 Application Note