1.1 --- a/ULA.txt Sat Dec 22 01:02:20 2012 +0100
1.2 +++ b/ULA.txt Sat Dec 22 02:22:47 2012 +0100
1.3 @@ -305,11 +305,46 @@
1.4 that the palette registers must be updated upon the flash counter - read and
1.5 written by OSBYTE &C1 (193) - reaching zero and that some way of changing the
1.6 colour pairs to be any combination of colours might be possible, instead of
1.7 -having colour complements as pairs. It is conceivable that the interrupt code
1.8 -responsible does the simple thing and merely inverts the current values for
1.9 -colours 8 through 15, and this might be verified by looking for an operation
1.10 -that involves the bit pattern 11001100, since this value would be EORed with
1.11 -the existing palette register values in order to perform this value inversion.
1.12 +having colour complements as pairs.
1.13 +
1.14 +It is conceivable that the interrupt code responsible does the simple thing
1.15 +and merely inverts the current values for any logical colours for which the
1.16 +associated physical colour (as supplied as the second parameter to the VDU 19
1.17 +call) has the top bit of its four bit value set. These top bits are not
1.18 +recorded in the palette registers but are presumably recorded separately and
1.19 +used to build bitmaps as follows:
1.20 +
1.21 + 2 colour 4 colour 16 colour
1.22 + -------- -------- ---------
1.23 + 0 00010001 00010001 00010001
1.24 + 1 01000100 00100010 00010001
1.25 + 2 01000100 00100010
1.26 + 3 10001000 00100010
1.27 + 4 00010001
1.28 + 5 00010001
1.29 + 6 00100010
1.30 + 7 00100010
1.31 + 8 01000100
1.32 + 9 01000100
1.33 + 10 10001000
1.34 + 11 10001000
1.35 + 12 01000100
1.36 + 13 01000100
1.37 + 14 10001000
1.38 + 15 10001000
1.39 +
1.40 +An operation in the interrupt code would then combine the bitmaps for all
1.41 +logical colours in 2 and 4 colour modes, with the 16 colour bitmaps being
1.42 +combined for groups of logical colours as follows:
1.43 +
1.44 + 0, 2, 8, 10
1.45 + 4, 6, 12, 14
1.46 + 5, 7, 13, 15
1.47 + 1, 3, 9, 11
1.48 +
1.49 +These combined bitmaps would be EORed with the existing palette register
1.50 +values in order to perform the value inversion necessary to produce the
1.51 +flashing effect.
1.52
1.53 Palette Definition Lists
1.54 ------------------------