Changes

Jump to: navigation, search

CRTC

787 bytes added, 4 July
/* 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>
|}
On CRTCs 0/2, registers 18-31 read as 0, on type 0 and 2On CRTC 1, registers 18-30 read as 0 on type1, register 31 reads as 0xff.
Details about Reg. 12 and Reg. 13 specifically:
<br>
=== R31 on Type 1 Vertical Displayed (R6) ===
R31 On CRTCs 0/1/2, the condition VCC=R6 is described in considered immediately to activate the UM6845R documentation as "Dummy Register"VBORDERIts use The only exception is described in the documentation for the Rockwell R6545 in combination CRTC 1 with R18a value of 0, R19 and R8 and which triggers an immediate BORDER without the Status Register. In the UM6845R it appears to have no effect. Reading and writing does nothing. Reading it returns 0x0ffcondition VCC=R6 being required.
R31 doesn't exist on types 0,2,On CRTCs 3/4,4the condition VCC=R6 is tested only at new character line start. The update of R6 during the character line is therefore not considered.
<br>
=== R12/R13 R31 on Type 1 ===
The UM6845R differs to other CRTC R31 is described in respect of R12/R13the UM6845R documentation as "Dummy Register".
When VCC=0, R12/R13 Its use is re-read at described in the start of each line. R12/R13 can therefore be changed documentation for each scanline when VCC=0the Rockwell R6545 in combination with R18, R19 and R8 and the Status Register.
Just like other CRTCs when RC==(R9-1), In the current MA is captured for the next char-lineUM6845R it appears to have no effect. Reading and writing does nothing. Reading it returns 0x0ff.
In demos to make a display compatible with all R31 doesn't exist on CRTCs, program R12/R13 when VCC!=0. This will then take effect at the next frame start/2/3/4.
<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;}}
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.  R12/R13 is loaded only once per frame, in MA and MA', at the first raster line start of the frame. The counter MA is then reloaded with the value of MA' at each raster line start. And at each new character line start, MA' captures the current value of MA. The exception is the CRTC 1 for which the MA is reloaded at each raster line start with R12/R13 instead of MA' as long as C4VCC=0. This is a major source of incompatibility if the programmer does not take care of this discrepancy. In demos and games, to make a display compatible with all CRTCs, program R12/R13 when VCC!=0. This will then take effect at the next frame start.
<br>
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>
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
6,130
edits