6845 - Motorola CRT Controller


	3B0-3BB Monochrome Monitor Adapter
	3D0-3DC Color Graphics Adapter (mapped similarly)

	3B0/3D0  port address decodes to 3B4/3D4
	3B1/3D1  port address decodes to 3B5/3D5
	3B2/3D2  port address decodes to 3B4/3D4
	3B3/3D3  port address decodes to 3B5/3D5
	3B4/3D4  6845 index register, selects which register [0-11h]
		 is to be accessed through port 3B5/3D5
	3B5/3D5  6845 data register [0-11h] selected by port 3B4/3D4,
		 registers 0C-0F may be read.  If a read occurs
		 without the adapter installed, FFh is returned.
	3B6/3D6  port address decodes to 3B4/3D4
	3B7/3D7  port address decodes to 3B5/3D5
	3B8/3D8  6845 mode control register
	3B9/3D9  color select register on color adapter
	3BA/3DA  status register (read only)
	3BB/3DB  light pen strobe reset
	    3DC  preset light pen latch
	    3DF  CRT/CPU page register (PCjr only)

	Registers: Accessed through ports 3B5 & 3D5    VALID VALUES
						    MONO CO40 CO80 GRPH
	00 - Horiz. total characters		     61   38   71   38
	01 - Horiz. displayed characters per line    50   28   50   28
	02 - Horiz. synch position		     52   2D   5A   2D
	03 - Horiz. synch width in characters	     0F   0A   0A   0A
	04 - Vert. total lines			     19   1F   1F   7F
	05 - Vert. total adjust (scan lines)	     06   06   06   06
	06 - Vert. displayed rows		     19   19   19   64
	07 - Vert. synch position (character rows)   19   1C   1C   70
	08 - Interlace mode			     02   02   02   02
	09 - Maximum scan line address		     0D   07   07   01
	0A - Cursor start (scan line)		     0B   06   06   06
	0B - Cursor end (scan line)		     0C   07   07   07
	0C - Start address (MSB)		     00   00   00   00
	0D - Start address (LSB)		     00   00   00   00
	0E - Cursor address (MSB) (read/write)	     00   --   --   --
	0F - Cursor address (LSB) (read/write)	     00   --   --   --
	10 - Light pen (MSB)   (read only)	     --   --   --   --
	11 - Light pen (LSB)   (read only)	     --   --   --   --

	- Registers 00-0D are write only, registers 0E-0F are read/write and
	  registers 10-11 are read only
	- Cursor address is calculated with using the following (row*80)+col

6845 - Port 3B8 (Monochrome)


	|7|6|5|4|3|2|1|0|  3B8 CRT Control Port
	 | | | | | | | `---- 1 = 80x25 text
	 | | | | | `------- unused
	 | | | | `-------- 1 = enable video signal
	 | | | `--------- unused
	 | | `---------- 1 = blinking on
	 `------------- unused

6845 - Port 3D8 (Color)


	|7|6|5|4|3|2|1|0|  3D8 Mode Select Register
	 | | | | | | | `---- 1 = 80x25 text, 0 = 40x25 text
	 | | | | | | `----- 1 = 320x200 graphics, 0 = text
	 | | | | | `------ 1 = B/W, 0 = color
	 | | | | `------- 1 = enable video signal
	 | | | `-------- 1 = 640x200 B/W graphics
	 | | `--------- 1 = blink, 0 = no blink
	 `------------ unused

6845 - Port 3D9 Color Text Modes


	|7|6|5|4|3|2|1|0|  3D9 Color Select Register (3B9 not used)
	 | | | | | `-------- screen/border RGB
	 | | | | `--------- select intensity setting
	 | | | `---------- background intensity
	 `--------------- unused

6845 - Port 3D9 Color Graphics Modes


	|7|6|5|4|3|2|1|0|  3D9 Color Select Register (3B9 not used)
	 | | | | | `-------- RGB for background
	 | | | | `--------- intensity
	 | | | `---------- unused
	 | | `----------- 1 = palette 1, 0=palette 0 (see below)
	 `-------------- unused

	  Palette 0 = green, red, brown
	  Palette 1 = cyan, magenta, white

6845 - Port 3DA Status Register


	|7|6|5|4|3|2|1|0|  3DA Status Register
	 | | | | | | | `---- 1 = display enable, RAM access is OK
	 | | | | | | `----- 1 = light pen trigger set
	 | | | | | `------ 0 = light pen on, 1 = light pen off
	 | | | | `------- 1 = vertical retrace, RAM access OK for next 1.25ms
	 `-------------- unused