This list was created to enable Caprice Reloaded to support all the CRTC types. It gathers infos from Quasar CPC 21, Amslive 16, 18 and 19 (Madram articles), Grimware, and should be completed with any other info (quasar 11, 12 & others). This list may or may not be correct, we're looking for advice, particularly for things marked (?).
Type | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
BExx and BFxx ports | |||||
Reg 12 and 13 readable on port BFxx | Yes | No (get 0) | No (get 0) | Yes | Yes |
Reg number on port BFxx is fully decoded | Yes (reg4 reads 0) | Yes | Yes | No (reg 4 reads reg 12) | No |
Reading reg31 on port BFxx | 0 | Hi-Z (unpredictable value) | 0 | reg 15 | reg 15 |
Read VBL end on REG10 bit 5 port BFxx | No | No | No | Yes | Yes |
Read block count on reg11 port BFxx | No | No | No | Yes | Yes |
Status info on port BExx (VBL, border) | No (Hi-Z) | Yes | No (Hi-Z) | No (mirrors BFXX) | No (mirrors BFxx) |
Registers | |||||
R1 > R0 removes all border | No | Yes | No | No? | No? |
R2+R3=R0+1 | Shift screen down | Shift screen down | No VBL | Ok? | Ok? |
R2+R3>R0+1 | Ok | Ok | Only border | Ok? | Ok? |
R2+R3=R0 | Ok | Ok | No VBL | Shift screen down | Shift screen down |
R3 bit 7 changes VBL duration | Yes (1=normal, 2=double length) | No (always double) | No | Yes | Yes |
R6=0 leaves artifacts on screen | Yes | No | No | No | No |
R8 allows interleave mode | Bad 100Hz screen | Good 100Hz screen | Ok | ? | ? |
R8 allows border shifting (bits 4 and 5) | Yes | No | No | Yes | Yes |
Special demomakers tricks | |||||
Split border | Reg 8 | Reg 6 | Not possible | Reg 6 | Reg 6 |
"Display enable" bug (?) | Yes | No | Yes | No | No |
Offset reg validation | Next screen | Immediate | Next screen | Next screen | Next screen |
R9 and R4 validation | Buffered | Immediate | Buffered | Buffered | Buffered |
Line to line splitting (R9=R4=0) | Yes | Yes | No | Yes | Yes |
R0 minimal value | 1 | 0 | 0 (with C4>0) | 0 | 0 |
PPI (used in CRTC tests, but does not really belongs here otherwise) | |||||
Setting up PPI resets port value | Yes | Yes | Yes | No | Yes |
PPI port B can be used as output | No | No | No | Yes | No |