Changes
CRTC
,/* DISPTMG (aka Display Enable) */
The border has higher priority than pixels but lower priority than the black colour output when HSYNC/VSYNC are active.
The DISPTMG signal is composited from its 3 internal subcomponents: HBORDER (Horizontal), VBORDER (Vertical), IBORDER (Immediate) by using the NOR function. DISPTMG can be immediately forced to 0 by using R8 (DISPTMG Skew) on type CRTCs 0,/3 and /4 or by setting R6=0 on type CRTC 1. It is not possible to force the DISPTMG on type CRTC 2.
<br>
<br>
== The 6845 Registers CRTC registers ==
The Internal registers of the 6845 are:
|}
On CRTCs 0/2, registers 18-31 read as 0, on type 0 and 2. On CRTC 1, registers 18-30 read as 0 on type1, register 31 reads as 0xff.
Details about Reg. 12 and Reg. 13 specifically:
<br>
== CRTC Differences register differences == In this section I will attempt to identify all the differences between each CRTC.
The following tables list the functions that can be accessed for each type:
<br>
=== R31 on Type 1 Vertical Displayed (R6) ===
<br>
=== R12/R13 R31 on Type 1 ===
<br>
=== R10/R11 on ASIC/Pre-ASIC ===
The cursor raster registers R10/R11 act as status registers when read on Types CRTCs 3 & /4. They behave as normal cursor raster registers upon write.
{| class="wikitable sortable"
=== Reading from CRTC registers on ASIC/Pre-ASIC ===
On CRTC Types CRTCs 3 and /4, only the 3 least significant bits of the selected register number are considered to read a register according to the following table:
{|{{Prettytable|width: 700px; font-size: 2em;}}
== Internal Counters ==
{| class="wikitable sortable"
! Counter name
No matter its type, the CRTC never buffers its counters.
The only value that is saved in a buffer in the CRTC is the video pointer MA because it is reloaded at each raster line start. The exception is the CRTC 1 for which the MA is reloaded with R12/R13 instead of MA' as long as C4=0.
<br>
== CRTC counter differences ==
=== VSC (C3h) overflow ===
During a VSYNC on CRTCs 0/3/4, if VSYNC Width (R3h) is changed with a value less than the current VSC, then VSC overflows and will continue to count up to its maximum value (15) before looping backand counting up again until it reaches the new value of R3h.
On CRTCs 1/2, the VSYNC width is fixed to 16 characters. It is not possible to modify it. Therefore, VSC cannot be overflowed.
<br>
=== HSC (C3l) overflow ===
During an HSYNC, if HSYNC Width (R3l) is changed with a value less than the current HSC, then HSC overflows and will continue to count up to its maximum value (15) before looping back and counting up again until it reaches the new value of R3l.
The only exception is for CRTC 1 with a value of 0, which immediately cancels the current HSYNC.
<br>
On all CRTCs, if Vertical Total (R4) is changed with a value less than VCC, then:
* if this update was done when VCC < R4, then VCC overflows and will continue to count up to its maximum value (127) before looping backand counting up again until it reaches the new value of R4
* if this update was done when VCC = R4, the current character line was already decided to be the last one of the current frame. No update to R4 will make the CRTC change its mind for the current frame
If Horizontal Total (R0) is changed with a value less than the current HCC, then:
* on CRTCs 0/1/2, HCC overflows and will count up to its maximum value (255) before looping backand counting up again until it reaches the new value of R0
* on CRTCs 3/4, the current line is considered finished and HCC is immediately reset to 0 on the next line
If Number of Scan Lines (R9) is changed with a value less than the current VLC, then:
* on CRTCs 0/1/2, VLC overflows and will count up to its maximum value (31) before looping backand counting up again until it reaches the new value of R9* on CRTCs 3/4, the current line is considered the last one of this CRTC character and VLC changes will reset to 0 on the next line
<br>
=== VTAC (C5/C9) overflow ===
During vertical adjustment mode, if Vertical Total Adjust (R5) is changed with a value less than the current VTAC, then:
* on CRTCs 0/1/2, VTAC overflows and will continue to count up to its maximum value (31) before looping backand counting up again until it reaches the new value of R5* on CRTCs 3/4, the current line is considered the last one of the current frame and vertical adjustment endswill end
<br>
<br>
== Hitachi Block Diagram Diagrams == === Hitachi ===
[[File:CRTC Block Diagram.png]]
<br>
=== UMC Block Diagram ===
[[File:UMC CRTC Block Diagram.png]]
<br>
=== Motorola Block Diagram ===
[[File:Motorola CRTC Block Diagram.png]]
<br>
=== Unused clones ===
* [[CM607P]] a Bulgarian clone made in Pravetz factory
* [[Media:EF6845P.pdf|EF6845]] by Thomson Semiconductors