Difference between revisions of "Physical colour numbers"

From BeebWiki
Jump to: navigation, search
(Draft page.)
 
m (C64: Used a better monitor to confirm colours.)
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
  7  6  5  4  3  2  1  0
+
[[Category:VDU commands]]
+---+---+---+---+---+---+---+---+
+
Physical colour numbers are used as the short physical colour in the VDU 19
|F/B| B |  |  |  | B | G | R |
+
command, and used in the COLOUR and GCOL commands on platforms without a
+---+---+---+---+---+---+---+---+
+
palette. The colour number is a bitmap of the colour to select. When
  |  |  |  |  |  |  |  |
+
implementing an operating system interface on other platforms this mapping
  |  |  |  |  |  |  |  +---Red
+
must be adhered to.
  |  |  |  |  |  |  +-------Green
 
  |  |  |  |  |  +-----------Blue
 
  |  |  +---+---+---------------Extension
 
  |  +---------------------------Border
 
  +-------------------------------0=Foreground, 1=Background
 
  
 +
===Colour bitmap===
 +
    7  6  5  4  3  2  1  0
 +
  +---+---+---+---+---+---+---+---+
 +
  | L | B | E | F | I | B | G | R |
 +
  +---+---+---+---+---+---+---+---+
 +
    |  |  |  |  |  |  |  |
 +
    |  |  |  |  |  |  |  +---Red
 +
    |  |  |  |  |  |  +-------Green
 +
    |  |  |  |  |  +-----------Blue
 +
    |  |  |  |  +---------------Intense
 +
    |  |  |  +-------------------Flash
 +
    |  |  +-----------------------Extension
 +
    |  +---------------------------Border
 +
    +-------------------------------0=Foreground, 1=Background
 +
 
 +
  This gives:
 +
  0 0 e f i b g r - &00+n - foreground colour
 +
  0 1 e f i b g r - &40+n - extension
 +
  1 0 e f i b g r - &80+n - background colour
 +
  1 1 e f i b g r - &C0+n - border colour
 +
 
 +
  The BBC implements:
 +
  l x x x f b g r - colour
 +
          +-------- flash
 +
 
 +
  The ZX Spectrum implements:
 +
  l b e f i b g r - colour
 +
    | | | +-------- bright
 +
    | | +---------- flash
 +
    | +------------ change only flash/bright
 +
    +-------------- border
 +
 
 +
  The Commodore implements:
 +
  l b x f i b g r - colour
 +
    |  | +-------- bright
 +
    |  +---------- flash
 +
    +-------------- border
 +
 
 +
  DOS/Windows implements:
 +
  l x x f i b g r - colour
 +
        | +-------- bright
 +
        +---------- flash
 +
 
 +
  ANSI terminal implements:
 +
  l b e f i b g r - colour
 +
    | | | +-------- bright
 +
    | | +---------- flash
 +
    | +------------ underline
 +
    +-------------- inverse
  
  0 0 x x x b g r - foreground colour
+
The BBC uses b3=flash, whereas all platforms other than the BBC uses
  0 1 x x x b g r -
+
b4=flash. For visual compatibility, programs could use 0-7 for non-flashing
  1 0 x x x b g r - background colour
+
colours and 24-31 for flashing colours. On the BBC these will be flashing
  1 1 x x x b g r - border colour
+
colours, on other platforms these will be bright flashing colours where
 +
supported.
  
BBC implements:
+
==Implementation details==
  l x x x f b g r - foreground colour
 
          +-------- flash
 
  
Spectrum implements:
+
===Electron/BBC/Master/etc===
  l b x f i b g r - foreground colour
+
  0+n  &00+n - foreground colour
    |  | +-------- bright
+
128+n  &80+n - background colour
    |   +---------- flash
+
 
    +-------------- border
+
  Fore    Back                      Fore    Back
 +
   ground  ground  Colour          ground  ground  Colour
 +
  0 &00  128 &80  Black            8 &08  136 &88  Flashing Black
 +
  1 &01  129 &81  Red              9 &09  137 &89  Flashing Red
 +
  2 &02  130 &82  Green            10 &0A  138 &8A  Flashing Green
 +
  3 &03  131 &83  Yellow          11 &0B  139 &8B  Flashing Yellow
 +
  4 &04  132 &84  Blue            12 &0C  140 &8C  Flashing Blue
 +
  5 &05  133 &85  Magenta          13 &0D  141 &8D  Flashing Magenta
 +
  6 &06  134 &86  Cyan            14 &0E  142 &8E  Flashing Cyan
 +
  7 &07  135 &87  White            15 &0F  143 &8F  Flashing White
  
    Bit 0 - Red
+
===ZX Spectrum===
    Bit 1 - Green
+
  0+n  &00+n  %000FIBGR - foreground colour, bright and flash
    Bit 2 - Blue
+
  32+n  &20+n  %001xxBGR - foreground colour, without changing flash and bright
    Bit 3 - Bright
+
  64+n  &40+n  %010xIxxx - bright without changing current colour
    Bit 4 - Flash
+
  96+n  &60+n  %011Fxxxx - flash without changing current colour
    Bit 5 - Change colour only, don't change Flash and Bright
+
128+n  &80+n  %100FIBGR - background colour, bright and flash
     Bit 6 - Change Flash and Bright only, don't change colours
+
160+n  &A0+n  %101xxBGR - background colour, without changing flash and bright
    Bit 7 - 0=Set foreground or flash/bright, 1=Set background or border
+
192+n  &C0+n  %11xxxBGR - border colour
 +
 
 +
  Fore    Back                              Fore    Back
 +
  ground  ground  Border  Colour          ground  ground  Colour
 +
  0 &00  128 &80  192 &C0  Black            16 &10  144 &90  Flashing Black
 +
  1 &01  129 &81  193 &C1  Red              17 &11  145 &91  Flashing Red
 +
  2 &02  130 &82  194 &C2  Green            18 &12  146 &92  Flashing Green
 +
  3 &03  131 &83  195 &C3  Yellow          19 &13  147 &93  Flashing Yellow
 +
  4 &04  132 &84  196 &C4  Blue            20 &14  148 &94  Flashing Blue
 +
  5 &05  133 &85  197 &C5  Magenta          21 &15  149 &95  Flashing Magenta
 +
  6 &06  134 &86  198 &C6  Cyan            22 &16  150 &96  Flashing Cyan
 +
  7 &07  135 &87  199 &C7  White            23 &17  151 &97  Flashing White
 +
  8 &08  136 &88          Bright Black    24 &18  152 &98  Flashing Bright Black
 +
  9 &09  137 &89          Bright Red      25 &19  153 &99  Flashing Bright Red
 +
  10 &0A  138 &8A          Bright Green    26 &1A  154 &9A  Flashing Bright Green
 +
  11 &0B  139 &8B          Bright Yellow    27 &1B  155 &9B  Flashing Bright Yellow
 +
  12 &0C  140 &8C          Bright Blue      28 &1C  156 &9C  Flashing Bright Blue
 +
  13 &0D  141 &8D          Bright Magenta  29 &1D  157 &9D  Flashing Bright Magenta
 +
  14 &0E  142 &8E          Bright Cyan     30 &1E  158 &9E  Flashing Bright Cyan
 +
  15 &0F  143 &8F          Bright White    31 &1F  159 &9F  Flashing Bright White
 +
 
 +
  32 &20  160 &A0          Black, without changing flash/bright
 +
  33 &21  161 &A1          Red, without changing flash/bright
 +
  34 &22  162 &A2          Green, without changing flash/bright
 +
  35 &23  163 &A3          Yellow, without changing flash/bright
 +
  36 &24  164 &A4          Blue, without changing flash/bright
 +
  37 &25  165 &A5          Magenta, without changing flash/bright
 +
  38 &26  166 &A6          Cyan, without changing flash/bright
 +
  39 &27  167 &A7          White, without changing flash/bright
 +
 
 +
  64 &40                    Bright off      96 &60          Flash off
 +
  72 &48                    Bright on      112 &70          Flash on
  
   This results in the colour being set as follows:
+
===Commodore===
 +
   0+n  &00+n - foreground colour
 +
128+n  &80+n - background colour
 +
192+n  &C0+n - border colour
 +
 
 +
  Fore    Back                              Fore    Back
 +
  ground  ground  Border  Colour          ground  ground  Colour
 +
  0 &00  128 &80  192 &C0  Black            16 &10  144 &90  Flashing Black
 +
  1 &01  129 &81  193 &C1  Red/Brown        17 &11  145 &91  Flashing Red/Brown
 +
  2 &02  130 &82  194 &C2  Green            18 &12  146 &92  Flashing Green
 +
  3 &03  131 &83  195 &C3  Yellow/Orange    19 &13  147 &93  Flashing Yellow/Orange
 +
  4 &04  132 &84  196 &C4  Blue            20 &14  148 &94  Flashing Blue
 +
  5 &05  133 &85  197 &C5  Magenta/Purple  21 &15  149 &95  Flashing Magenta/Purple
 +
  6 &06  134 &86  198 &C6  Cyan            22 &16  150 &96  Flashing Cyan
 +
  7 &07  135 &87  199 &C7  Light Grey      23 &17  151 &97  Flashing Light Grey
 +
  8 &08  136 &88  200 &C8  Dark Grey        24 &18  152 &98  Flashing Dark Grey
 +
  9 &09  137 &89  201 &C9  Bright Red      25 &19  153 &99  Flashing Bright Red
 +
  10 &0A  138 &8A  202 &CA  Bright Green    26 &1A  154 &9A  Flashing Bright Green
 +
  11 &0B  139 &8B  203 &CB  Bright Yellow    27 &1B  155 &9B  Flashing Bright Yellow
 +
  12 &0C  140 &8C  204 &CC  Bright Blue      28 &1C  156 &9C  Flashing Bright Blue
 +
  13 &0D  141 &8D  205 &CD  Bright Magenta  29 &1D  157 &9D  Flashing Bright Magenta
 +
  14 &0E  142 &8E  206 &CE  Light Grey      30 &1E  158 &9E  Flashing Light Grey
 +
  15 &0F  143 &8F  207 &CF  White            31 &1F  159 &9F  Flashing White
  
    &00+n (0-63)    - text foreground colour
+
===DOS/Windows===
    &40+n (64-127) - flash and bright without changing colours
+
  0+n  &00+n - foreground colour
    &80+n (128-191) - text background colour
+
128+n  &80+n - background colour
     &C0+n (192-255) - border colour
+
 
 +
  Fore    Back                      Fore    Back
 +
  ground  ground  Colour          ground  ground  Colour
 +
  0 &00  128 &80  Black            16 &10  144 &90  Flashing Black
 +
  1 &01  129 &81  Red              17 &11  145 &91  Flashing Red
 +
  2 &02  130 &82  Green            18 &12  146 &92  Flashing Green
 +
  3 &03  131 &83  Yellow          19 &13  147 &93  Flashing Yellow
 +
  4 &04  132 &84  Blue            20 &14  148 &94  Flashing Blue
 +
  5 &05  133 &85  Magenta          21 &15  149 &95  Flashing Magenta
 +
  6 &06  134 &86  Cyan            22 &16  150 &96  Flashing Cyan
 +
  7 &07  135 &87  White            23 &17  151 &97  Flashing White
 +
  8 &08  136 &88  Bright Black    24 &18  152 &98  Flashing Bright Black
 +
  9 &09  137 &89  Bright Red      25 &19  153 &99  Flashing Bright Red
 +
  10 &0A  138 &8A  Bright Green    26 &1A  154 &9A  Flashing Bright Green
 +
  11 &0B  139 &8B  Bright Yellow    27 &1B  155 &9B  Flashing Bright Yellow
 +
  12 &0C  140 &8C  Bright Blue     28 &1C  156 &9C  Flashing Bright Blue
 +
  13 &0D  141 &8D  Bright Magenta  29 &1D  157 &9D  Flashing Bright Magenta
 +
  14 &0E  142 &8E  Bright Cyan      30 &1E  158 &9E  Flashing Bright Cyan
 +
  15 &0F  143 &8F  Bright White    31 &1F  159 &9F  Flashing Bright White
  
      Fore    Back
+
===ANSI Terminal===
      ground  ground   Border    Colour
+
  0+n  &00+n - foreground colour
      0 &00   128 &80   192 &C0  Black
+
128+n  &80+n - background colour
      1 &01   129 &81   193 &C1  Red
+
 
      2 &02   130 &82   194 &C2  Green
+
  Fore    Back                      Fore    Back
      3 &03   131 &83   195 &C3  Yellow
+
  ground  ground  Colour          ground  ground   Colour
      4 &04   132 &84   196 &C4  Blue
+
  0 &00 128 &80 Black            16 &10  144 &90  Flashing Black
      5 &05   133 &85   197 &C5  Magenta
+
  1 &01 129 &81 Red              17 &11  145 &91  Flashing Red
      6 &06   134 &86   198 &C6  Cyan
+
  2 &02 130 &82 Green            18 &12  146 &92  Flashing Green
      7 &07   135 &87  199 &C7   White
+
  3 &03 131 &83 Yellow          19 &13  147 &93  Flashing Yellow
 +
  4 &04 132 &84 Blue            20 &14  148 &94  Flashing Blue
 +
  5 &05 133 &85 Magenta          21 &15  149 &95  Flashing Magenta
 +
  6 &06 134 &86 Cyan            22 &16  150 &96  Flashing Cyan
 +
  7 &07 135 &87 White            23 &17  151 &97  Flashing White
 +
  8 &08  136 &88  Bright Black    24 &18  152 &98  Flashing Bright Black
 +
  9 &09  137 &89  Bright Red      25 &19  153 &99  Flashing Bright Red
 +
  10 &0A  138 &8A  Bright Green    26 &1A  154 &9A  Flashing Bright Green
 +
   11 &0B  139 &8B  Bright Yellow    27 &1B  155 &9B  Flashing Bright Yellow
 +
   12 &0C  140 &8C  Bright Blue      28 &1C  156 &9C  Flashing Bright Blue
 +
  13 &0D  141 &8D  Bright Magenta  29 &1D  157 &9D  Flashing Bright Magenta
 +
  14 &0E  142 &8E  Bright Cyan      30 &1E  158 &9E  Flashing Bright Cyan
 +
  15 &0F  143 &8F  Bright White     31 &1F  159 &9F  Flashing Bright White
 +
 
 +
  32+n  &20+n      Underlined text
 +
  64+n  &40+n      Inverse text
  
Spectrum Colour Numbers with BBC BASIC support
+
[[User:Jgharston|Jgharston]] ([[User talk:Jgharston|talk]]) 23:06, 16 June 2016 (UTC)
----------------------------------------------
 
 
 
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
 

Latest revision as of 19:05, 8 June 2020

Physical colour numbers are used as the short physical colour in the VDU 19 command, and used in the COLOUR and GCOL commands on platforms without a palette. The colour number is a bitmap of the colour to select. When implementing an operating system interface on other platforms this mapping must be adhered to.

Colour bitmap

   7   6   5   4   3   2   1   0
 +---+---+---+---+---+---+---+---+
 | L | B | E | F | I | B | G | R |
 +---+---+---+---+---+---+---+---+
   |   |   |   |   |   |   |   |
   |   |   |   |   |   |   |   +---Red
   |   |   |   |   |   |   +-------Green
   |   |   |   |   |   +-----------Blue
   |   |   |   |   +---------------Intense
   |   |   |   +-------------------Flash
   |   |   +-----------------------Extension
   |   +---------------------------Border
   +-------------------------------0=Foreground, 1=Background
 
 This gives:
  0 0 e f i b g r - &00+n - foreground colour
  0 1 e f i b g r - &40+n - extension
  1 0 e f i b g r - &80+n - background colour
  1 1 e f i b g r - &C0+n - border colour
 
 The BBC implements:
  l x x x f b g r - colour
          +-------- flash
 
 The ZX Spectrum implements:
  l b e f i b g r - colour
    | | | +-------- bright
    | | +---------- flash
    | +------------ change only flash/bright
    +-------------- border
 
 The Commodore implements:
  l b x f i b g r - colour
    |   | +-------- bright
    |   +---------- flash
    +-------------- border
 
 DOS/Windows implements:
  l x x f i b g r - colour
        | +-------- bright
        +---------- flash
 
 ANSI terminal implements:
  l b e f i b g r - colour
    | | | +-------- bright
    | | +---------- flash
    | +------------ underline
    +-------------- inverse

The BBC uses b3=flash, whereas all platforms other than the BBC uses b4=flash. For visual compatibility, programs could use 0-7 for non-flashing colours and 24-31 for flashing colours. On the BBC these will be flashing colours, on other platforms these will be bright flashing colours where supported.

Implementation details

Electron/BBC/Master/etc

  0+n  &00+n - foreground colour
128+n  &80+n - background colour
 
  Fore    Back                      Fore    Back
 ground  ground   Colour           ground  ground   Colour
  0 &00  128 &80  Black             8 &08  136 &88  Flashing Black
  1 &01  129 &81  Red               9 &09  137 &89  Flashing Red
  2 &02  130 &82  Green            10 &0A  138 &8A  Flashing Green
  3 &03  131 &83  Yellow           11 &0B  139 &8B  Flashing Yellow
  4 &04  132 &84  Blue             12 &0C  140 &8C  Flashing Blue
  5 &05  133 &85  Magenta          13 &0D  141 &8D  Flashing Magenta
  6 &06  134 &86  Cyan             14 &0E  142 &8E  Flashing Cyan
  7 &07  135 &87  White            15 &0F  143 &8F  Flashing White

ZX Spectrum

  0+n  &00+n  %000FIBGR - foreground colour, bright and flash
 32+n  &20+n  %001xxBGR - foreground colour, without changing flash and bright
 64+n  &40+n  %010xIxxx - bright without changing current colour
 96+n  &60+n  %011Fxxxx - flash without changing current colour
128+n  &80+n  %100FIBGR - background colour, bright and flash
160+n  &A0+n  %101xxBGR - background colour, without changing flash and bright
192+n  &C0+n  %11xxxBGR - border colour
 
  Fore    Back                               Fore    Back
 ground  ground   Border   Colour           ground  ground   Colour
  0 &00  128 &80  192 &C0  Black            16 &10  144 &90  Flashing Black
  1 &01  129 &81  193 &C1  Red              17 &11  145 &91  Flashing Red
  2 &02  130 &82  194 &C2  Green            18 &12  146 &92  Flashing Green
  3 &03  131 &83  195 &C3  Yellow           19 &13  147 &93  Flashing Yellow
  4 &04  132 &84  196 &C4  Blue             20 &14  148 &94  Flashing Blue
  5 &05  133 &85  197 &C5  Magenta          21 &15  149 &95  Flashing Magenta
  6 &06  134 &86  198 &C6  Cyan             22 &16  150 &96  Flashing Cyan
  7 &07  135 &87  199 &C7  White            23 &17  151 &97  Flashing White
  8 &08  136 &88           Bright Black     24 &18  152 &98  Flashing Bright Black
  9 &09  137 &89           Bright Red       25 &19  153 &99  Flashing Bright Red
 10 &0A  138 &8A           Bright Green     26 &1A  154 &9A  Flashing Bright Green
 11 &0B  139 &8B           Bright Yellow    27 &1B  155 &9B  Flashing Bright Yellow
 12 &0C  140 &8C           Bright Blue      28 &1C  156 &9C  Flashing Bright Blue
 13 &0D  141 &8D           Bright Magenta   29 &1D  157 &9D  Flashing Bright Magenta
 14 &0E  142 &8E           Bright Cyan      30 &1E  158 &9E  Flashing Bright Cyan
 15 &0F  143 &8F           Bright White     31 &1F  159 &9F  Flashing Bright White
 
 32 &20  160 &A0           Black, without changing flash/bright
 33 &21  161 &A1           Red, without changing flash/bright
 34 &22  162 &A2           Green, without changing flash/bright
 35 &23  163 &A3           Yellow, without changing flash/bright
 36 &24  164 &A4           Blue, without changing flash/bright
 37 &25  165 &A5           Magenta, without changing flash/bright
 38 &26  166 &A6           Cyan, without changing flash/bright
 39 &27  167 &A7           White, without changing flash/bright
 
 64 &40                    Bright off       96 &60           Flash off
 72 &48                    Bright on       112 &70           Flash on

Commodore

  0+n  &00+n - foreground colour
128+n  &80+n - background colour
192+n  &C0+n - border colour
 
  Fore    Back                               Fore    Back
 ground  ground   Border   Colour           ground  ground   Colour
  0 &00  128 &80  192 &C0  Black            16 &10  144 &90  Flashing Black
  1 &01  129 &81  193 &C1  Red/Brown        17 &11  145 &91  Flashing Red/Brown
  2 &02  130 &82  194 &C2  Green            18 &12  146 &92  Flashing Green
  3 &03  131 &83  195 &C3  Yellow/Orange    19 &13  147 &93  Flashing Yellow/Orange
  4 &04  132 &84  196 &C4  Blue             20 &14  148 &94  Flashing Blue
  5 &05  133 &85  197 &C5  Magenta/Purple   21 &15  149 &95  Flashing Magenta/Purple
  6 &06  134 &86  198 &C6  Cyan             22 &16  150 &96  Flashing Cyan
  7 &07  135 &87  199 &C7  Light Grey       23 &17  151 &97  Flashing Light Grey
  8 &08  136 &88  200 &C8  Dark Grey        24 &18  152 &98  Flashing Dark Grey
  9 &09  137 &89  201 &C9  Bright Red       25 &19  153 &99  Flashing Bright Red
 10 &0A  138 &8A  202 &CA  Bright Green     26 &1A  154 &9A  Flashing Bright Green
 11 &0B  139 &8B  203 &CB  Bright Yellow    27 &1B  155 &9B  Flashing Bright Yellow
 12 &0C  140 &8C  204 &CC  Bright Blue      28 &1C  156 &9C  Flashing Bright Blue
 13 &0D  141 &8D  205 &CD  Bright Magenta   29 &1D  157 &9D  Flashing Bright Magenta
 14 &0E  142 &8E  206 &CE  Light Grey       30 &1E  158 &9E  Flashing Light Grey
 15 &0F  143 &8F  207 &CF  White            31 &1F  159 &9F  Flashing White

DOS/Windows

  0+n  &00+n - foreground colour
128+n  &80+n - background colour
 
  Fore    Back                      Fore    Back
 ground  ground   Colour           ground  ground   Colour
  0 &00  128 &80  Black            16 &10  144 &90  Flashing Black
  1 &01  129 &81  Red              17 &11  145 &91  Flashing Red
  2 &02  130 &82  Green            18 &12  146 &92  Flashing Green
  3 &03  131 &83  Yellow           19 &13  147 &93  Flashing Yellow
  4 &04  132 &84  Blue             20 &14  148 &94  Flashing Blue
  5 &05  133 &85  Magenta          21 &15  149 &95  Flashing Magenta
  6 &06  134 &86  Cyan             22 &16  150 &96  Flashing Cyan
  7 &07  135 &87  White            23 &17  151 &97  Flashing White
  8 &08  136 &88  Bright Black     24 &18  152 &98  Flashing Bright Black
  9 &09  137 &89  Bright Red       25 &19  153 &99  Flashing Bright Red
 10 &0A  138 &8A  Bright Green     26 &1A  154 &9A  Flashing Bright Green
 11 &0B  139 &8B  Bright Yellow    27 &1B  155 &9B  Flashing Bright Yellow
 12 &0C  140 &8C  Bright Blue      28 &1C  156 &9C  Flashing Bright Blue
 13 &0D  141 &8D  Bright Magenta   29 &1D  157 &9D  Flashing Bright Magenta
 14 &0E  142 &8E  Bright Cyan      30 &1E  158 &9E  Flashing Bright Cyan
 15 &0F  143 &8F  Bright White     31 &1F  159 &9F  Flashing Bright White

ANSI Terminal

  0+n  &00+n - foreground colour
128+n  &80+n - background colour
 
  Fore    Back                      Fore    Back
 ground  ground   Colour           ground  ground   Colour
  0 &00  128 &80  Black            16 &10  144 &90  Flashing Black
  1 &01  129 &81  Red              17 &11  145 &91  Flashing Red
  2 &02  130 &82  Green            18 &12  146 &92  Flashing Green
  3 &03  131 &83  Yellow           19 &13  147 &93  Flashing Yellow
  4 &04  132 &84  Blue             20 &14  148 &94  Flashing Blue
  5 &05  133 &85  Magenta          21 &15  149 &95  Flashing Magenta
  6 &06  134 &86  Cyan             22 &16  150 &96  Flashing Cyan
  7 &07  135 &87  White            23 &17  151 &97  Flashing White
  8 &08  136 &88  Bright Black     24 &18  152 &98  Flashing Bright Black
  9 &09  137 &89  Bright Red       25 &19  153 &99  Flashing Bright Red
 10 &0A  138 &8A  Bright Green     26 &1A  154 &9A  Flashing Bright Green
 11 &0B  139 &8B  Bright Yellow    27 &1B  155 &9B  Flashing Bright Yellow
 12 &0C  140 &8C  Bright Blue      28 &1C  156 &9C  Flashing Bright Blue
 13 &0D  141 &8D  Bright Magenta   29 &1D  157 &9D  Flashing Bright Magenta
 14 &0E  142 &8E  Bright Cyan      30 &1E  158 &9E  Flashing Bright Cyan
 15 &0F  143 &8F  Bright White     31 &1F  159 &9F  Flashing Bright White
 
 32+n  &20+n      Underlined text
 64+n  &40+n      Inverse text

Jgharston (talk) 23:06, 16 June 2016 (UTC)