Physical colour numbers

From BeebWiki
Revision as of 23:56, 28 March 2015 by Jgharston (talk | contribs) (Draft page.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
 7   6   5   4   3   2   1   0

+---+---+---+---+---+---+---+---+ |F/B| B | | | | B | G | R | +---+---+---+---+---+---+---+---+

 |   |   |   |   |   |   |   |
 |   |   |   |   |   |   |   +---Red
 |   |   |   |   |   |   +-------Green
 |   |   |   |   |   +-----------Blue
 |   |   +---+---+---------------Extension
 |   +---------------------------Border
 +-------------------------------0=Foreground, 1=Background


 0 0 x x x b g r - foreground colour
 0 1 x x x b g r -
 1 0 x x x b g r - background colour
 1 1 x x x b g r - border colour

BBC implements:

 l x x x f b g r - foreground colour
         +-------- flash

Spectrum implements:

 l b x f i b g r - foreground colour
   |   | +-------- bright
   |   +---------- flash
   +-------------- border
    Bit 0 - Red
    Bit 1 - Green
    Bit 2 - Blue
    Bit 3 - Bright
    Bit 4 - Flash
    Bit 5 - Change colour only, don't change Flash and Bright
    Bit 6 - Change Flash and Bright only, don't change colours
    Bit 7 - 0=Set foreground or flash/bright, 1=Set background or border
  This results in the colour being set as follows:
    &00+n (0-63)    - text foreground colour
    &40+n (64-127)  - flash and bright without changing colours
    &80+n (128-191) - text background colour
    &C0+n (192-255) - border colour
      Fore    Back
     ground  ground    Border    Colour
     0 &00   128 &80   192 &C0   Black
     1 &01   129 &81   193 &C1   Red
     2 &02   130 &82   194 &C2   Green
     3 &03   131 &83   195 &C3   Yellow
     4 &04   132 &84   196 &C4   Blue
     5 &05   133 &85   197 &C5   Magenta
     6 &06   134 &86   198 &C6   Cyan
     7 &07   135 &87   199 &C7   White

Spectrum Colour Numbers with BBC BASIC support


b0: Red b1: Green b2: Blue b3: Intense b4: Flash b5: 0=change F/I 1=don't change F/I b6: 0=change RGB 1=don't change RGB b7: 0=foreground or F/I 1=background or border


 0  &00  %000FIBGR - foreground colour
32  &20  %001xxBGR - foreground colour, don't change current F and I
64  &40  %010FIxxx - set F and I without changing current colours
96  &60  %011xxxxx - don't change anything!

128 &80  %100FIBGR - background colour 160 &A0  %101xxBGR - background colour, don't change current F and I 192 &C0  %110xxBGR - border colour (no F or I anyway) 224 &E0  %111xxBGR - border colour, don't change current F and I


%000IFBGR - foreground colour


 0 black ink
 1 red ink
 2 green ink
 3 yellow ink
 4 blue ink
 5 magenta ink
 6 cyan ink
 7 white ink
 8 black ink, bright
 9 red ink, bright
10 green ink, bright
11 yellow ink, bright
12 blue ink, bright
13 magenta ink, bright
14 cyan ink, bright
15 white ink, bright
16 black ink, flash
17 red ink, flash
18 green ink, flash
19 yellow ink, flash
20 blue ink, flash
21 magenta ink, flash
22 cyan ink, flash
23 white ink, flash
24 black ink, bright, flash
25 red ink, bright, flash
26 green ink, bright, flash
27 yellow ink, bright, flash
28 blue ink, bright, flash
29 magenta ink, bright, flash
30 cyan ink, bright, flash
31 white ink, bright, flash

%001xxBGR - foreground colour, don't change current F and I


32 black ink, bright unchanged, flash unchanged
33 red ink, bright unchanged, flash unchanged
34 green ink, bright unchanged, flash unchanged
35 yellow ink, bright unchanged, flash unchanged
36 blue ink, bright unchanged, flash unchanged
37 magenta ink, bright unchanged, flash unchanged
38 cyan ink, bright unchanged, flash unchanged
39 white ink, bright unchanged, flash unchanged

%010FIxxx - set I and F without changing current colours


64 flash off, bright off
72 flash off, bright on
80 flash on, bright off
88 flash on, bright on

%011xxxxx - reserved - don't change current F/I or RGB


%100IFBGR - background colour


128 black paper 129 red paper 130 green paper 131 yellow paper 132 blue paper 133 magenta paper 134 cyan paper 135 white paper

136 black paper, bright 137 red paper, bright 138 green paper, bright 139 yellow paper, bright 140 blue paper, bright 141 magenta paper, bright 142 cyan paper, bright 143 white paper, bright

144 black paper, flash 145 red paper, flash 146 green paper, flash 147 yellow paper, flash 148 blue paper, flash 149 magenta paper, flash 150 cyan paper, flash 151 white paper, flash

152 black paper, bright, flash 153 red paper, bright, flash 154 green paper, bright, flash 155 yellow paper, bright, flash 156 blue paper, bright, flash 157 magenta paper, bright, flash 158 cyan paper, bright, flash 159 white paper, bright, flash

%101xxBGR - foreground colour, don't change current F and I


160 black paper, bright unchanged, flash unchanged 161 red paper, bright unchanged, flash unchanged 162 green paper, bright unchanged, flash unchanged 163 yellow paper, bright unchanged, flash unchanged 164 blue paper, bright unchanged, flash unchanged 165 magenta paper, bright unchanged, flash unchanged 166 cyan paper, bright unchanged, flash unchanged 167 white paper, bright unchanged, flash unchanged

%110FIxxx - border colour (but border doesn't have flash or bright)


192 black border 193 red border 194 green border 195 yellow border 196 blue border 197 magenta border 198 cyan border 199 white border

%111xxBGR - reserved - border colour, don't change current F and I



Commodore implements

 l b x f i b g r - foreground colour
   |   | +-------- bright
   |   +---------- flash
   +-------------- border
 %00xxxbgr - &00+num - foreground colour
 %01xxxbgr - &40+num - reserved
 %10xxxbgr - &80+num - background colour
 %11xxxbgr - &C0+num - border colour

The Commodore 64 has 16 physical colours, so this gives the following colours:

     Fore     Back
    ground   ground    Border    Colour
     0 &00   128 &80   192 &C0   Black
     1 &01   129 &81   193 &C1   Red
     2 &02   130 &82   194 &C2   Green
     3 &03   131 &83   195 &C3   Yellow
     4 &04   132 &84   196 &C4   Blue
     5 &05   133 &85   197 &C5   Magenta
     6 &06   134 &86   198 &C6   Cyan
     7 &07   135 &87   199 &C7   White
     8 &08   135 &88   200 &C8   Orange
     9 &09   136 &89   201 &C9   Light Red
    10 &0A   137 &8A   202 &CA   Light Green
    11 &0B   138 &8B   203 &CB   Light Grey
    12 &0C   139 &8C   204 &CC   Light Blue
    13 &0D   140 &8D   205 &CD   Grey
    14 &0E   141 &8E   206 &CE   Dark Grey
    15 &0F   142 &8F   207 &CF   Brown


DOS: COLOUR 0 COLOUR 128 Black COLOUR 1 COLOUR 129 Red COLOUR 2 COLOUR 130 Green COLOUR 3 COLOUR 131 Yellow COLOUR 4 COLOUR 132 Blue COLOUR 5 COLOUR 133 Magenta COLOUR 6 COLOUR 134 Cyan COLOUR 7 COLOUR 135 White COLOUR 8 COLOUR 136 Intensified Black COLOUR 9 COLOUR 137 Intensified Red COLOUR 10 COLOUR 138 Intensified Green COLOUR 11 COLOUR 139 Intensified Yellow COLOUR 12 COLOUR 140 Intensified Blue COLOUR 13 COLOUR 141 Intensified Magenta COLOUR 14 COLOUR 142 Intensified Cyan COLOUR 15 COLOUR 143 Intensified White

The border is specified by using -1 as the logical colour number.

The following example sets the border colour to green.

   VDU 19,-1,2,0,0,0


The alternative mode provides an 'analogue' palette by allowing you to set the Red, Green and Blue intensities to any value between 0 and 63. The format of the VGA 'analogue' colour palette command is shown below.

   VDU 19,logical,-1,red,green,blue


If bit 7 of the logical colour number is set (values 128 to 143), then the enhanced palette is used and the physical colour is taken to be the IBM colour value.

For example, the following command will set logical colour 1 to green.

   VDU 19,129,2,0,0,0

The text enhanced palette is the same as the graphics enhanced palette.

6-bit RGB colours In the 6-bit RGB mode you set the physical colour by specifying the values of the individual red, green and blue components as numbers in the range 0 (minimum) to 63 (maximum). Hence the value 0,0,0 corresponds to black and the value 63,63,63 corresponds to peak (intensified) white.

To select a logical colour to one of these physical colours you must use the VDU 19 command:

   VDU 19,logical,-1,red,green,blue

This mode is provided for compatibility with BBC BASIC (86).

8-bit RGB colours In the 8-bit RGB mode you set the physical colour by specifying the values of the individual red, green and blue components as numbers in the range 0 (minimum) to 255 (maximum). Hence the value 0,0,0 corresponds to black and the value 255,255,255 corresponds to peak (intensified) white.

To select a logical colour to one of these physical colours you use either the VDU 19 command or the COLOUR statement:

   VDU 19,logical,16,Red,Green,Blue
   COLOUR logical,Red,Green,Blue


 0 1 x x x b g r -
 1 0 x x x b g r - background colour
 1 1 x x x b g r - border colour