Physical colour numbers

From BeebWiki
Revision as of 12:50, 12 June 2016 by Jgharston (talk | contribs) (Formatting)
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 - &00+n - foreground colour
  0 1 x x x b g r - &40+n - extension
  1 0 x x x b g r - &80+n - background colour
  1 1 x x x b g r - &C0+n - 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

Commodore implements
  l b x f i b g r - foreground colour
    |   | +-------- bright
    |   +---------- flash
    +-------------- border

DOS/Windows implements
  l x x x i b g r - foreground colour
          +-------- bright

ANSI Terminal implements
  l x x f i b g r - foreground colour
        | +-------- bright
        +---------- flash



Details
-------

Spectrum 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

     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