Changes

Jump to: navigation, search

CRTC

416 bytes added, Wednesday at 03:59
/* Overflow during HSYNC */
The HSYNC width value is interpreted differently between CRTCs. On CRTCs 0/1, if 0 is programmed no HSYNC is generated. On CRTCs 2/3/4, if 0 is programmed this gives a HSYNC width of 16.
 
During an HSYNC, if HSYNC width is changed with a value less than the current HSC, then HSC is overflowing. The only exception is for CRTC 1 with a value of 0, which cancels the current HSYNC.
CRTCs 1/2 have a fixed VSYNC width value of 16. VSYNC width can be configured with Register 3 on CRTCs 0/3/4. If 0 is programmed this gives 16 lines of VSYNC.
* See the document "Extra CPC Plus Hardware Information" for more details.
 
<br>
 
=== Overflow during HSYNC ===
 
During an HSYNC, if HSYNC Width (R3l) is changed with a value less than the current HSC, then HSC is overflowing. The only exception is for CRTC 1 with a value of 0, which cancels the current HSYNC.
 
<br>
 
=== Overflow during Vertical Adjustment ===
 
During vertical adjustment, if Vertical Total Adjust (R5) is changed with a value less than the current VTAC, then:
* on CRTCs 0/1/2, VTAC overflows and continues to count up to 0 to reach new R5 value
* on CRTC 3/4, the line is considered the last and additional management ends
 
<br>
=== Horizontal and Vertical Sync (R3) ===
*Bits 7..4 define Vertical Sync Width. If 0 is programmed this gives 16 lines of VSYNC.
*Bits 3..0 define Horizontal Sync Width. If 0 is programmed this gives a HSYNC width of 16.
 
<br>
=== Interlace and Skew (R8) ===
* In interlace sync and video mode, alternating lines are displayed in the even and odd field to double the resolution. In this mode, it is necessary to reprogram the CRTC as if we were building a frame of 624 lines. The 625th line is managed automatically by the CRTC
[[File:CRTC Interlace modes.png]]
 
<br>
=== R31 on Type 1 ===
R31 doesn't exist on types 0,2,3,4.
 
<br>
=== R12/R13 on Type 1 ===
In demos 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>
=== Status register on Type 1 ===
All the other bits read as 0 and don't have any function.
 
<br>
=== R10/R11 on ASIC/Pre-ASIC ===
|(C9=R9 and C0=R0) or (C9=0 and C0=0 to R0-1)
|}
 
<br>
=== Reading from CRTC registers on ASIC/Pre-ASIC ===
== Unused clones ==
* [[CM607P]] a Bulgarian clone made in Pravetz factory
* [[Media:EF6845P.pdf|EF6845PEF6845]] by Thomson Semiconductors
* [[Media:UM6845E-UMC.pdf|UM6845E]] by UMC
* [[Media:F6845.pdf|F6845]] by Fairchild
5,912
edits