Difference between revisions of "VDU 19"

From BeebWiki
Jump to: navigation, search
m (Added Prisma Graphics.)
m (Tweeked content.)
Line 18: Line 18:
 
<code>'''VDU 19'''</code> sets the logical colour, used in GCOL ([[VDU 18]])
 
<code>'''VDU 19'''</code> sets the logical colour, used in GCOL ([[VDU 18]])
 
or COLOUR ([[VDU 17]]) to the provided physical colour. The physical colour
 
or COLOUR ([[VDU 17]]) to the provided physical colour. The physical colour
is set with a [[Physical colour numbers|physical colour]] or, on 32-bit
+
is set with a [[Physical colour numbers|physical colour]] number or, on 32-bit
 
platforms and compatible extensions for 8-bit systems, the individual
 
platforms and compatible extensions for 8-bit systems, the individual
 
red/green/blue colour levels set with the last three parameters.
 
red/green/blue colour levels set with the last three parameters.
Line 29: Line 29:
 
or individual flash colours.
 
or individual flash colours.
  
With screen modes with 256 or more logical colours other methods are used to
+
Screen modes with 256 or more logical colours use other methods to control
control the palette.
+
the palette.
  
 
==Parameters==
 
==Parameters==
* VDU 19,0-63,p   ,r,g,b - sets logical colour
+
* VDU 19, 0-255, p,   r,g,b - sets logical colour
* VDU 19,-1 ,p   ,r,g,b - sets border colour
+
* VDU 19, -1,   p,   r,g,b - sets border colour (-1 is sent as CHR$255)
* VDU 19,l   ,0-15,r,g,b - sets to 4-bit [[Physical colour numbers|physical colour]]
+
* VDU 19, l,     0-15, r,g,b - sets to 4-bit [[Physical colour numbers|physical colour]]
* VDU 19,l   ,16 ,r,g,b - sets to RGB colour
+
* VDU 19, l,     16,   r,g,b - sets to RGB colour
* VDU 19,l   ,17 ,r,g,b - sets first RGB flash colour
+
* VDU 19, l,     17,   r,g,b - sets first RGB flash colour
* VDU 19,l   ,18 ,r,g,b - sets second RGB flash colour
+
* VDU 19, l,     18,   r,g,b - sets second RGB flash colour
* VDU 19,l   ,24 ,r,g,b - sets border RGB colour
+
* VDU 19, l,     24,   r,g,b - sets border RGB colour
* VDU 19,l   ,25 ,r,g,b - sets pointer RGB colour
+
* VDU 19, l,     25,   r,g,b - sets pointer RGB colour
* VDU 19,l   ,0-63,r,g,b - sets to 6-bit [[Physical colour numbers|physical colour]]
+
* VDU 19, l,     0-63, r,g,b - sets to 6-bit [[Physical colour numbers|physical colour]]
  
 
==Calling from BBC BASIC==
 
==Calling from BBC BASIC==
Line 72: Line 72:
 
The Prima Graphics System supports:
 
The Prima Graphics System supports:
 
* VDU 19,l,p,0,0,0 - sets to physical non-flashing colour if red/green/blue are zero
 
* VDU 19,l,p,0,0,0 - sets to physical non-flashing colour if red/green/blue are zero
* VDU 19,l,p,r,g,b - sets to red/green/blue colour components if any are non-zero.
+
* VDU 19,l,p,r,g,b - sets to red/green/blue colour components if any are non-zero, ignoring p.
  
 
===Amstrad CPC===
 
===Amstrad CPC===

Revision as of 17:29, 17 June 2016

Define Logical Colour.

VDU 19
Syntax VDU 19,<logical>,<physical>,<red>,<green>,<blue>
Character stream (hex) &13 <logical> <physical> <red> <green> <blue>
Description Set the logical colour <logical> to be the physical colour <physical>.

Description

VDU 19 sets the logical colour, used in GCOL (VDU 18) or COLOUR (VDU 17) to the provided physical colour. The physical colour is set with a physical colour number or, on 32-bit platforms and compatible extensions for 8-bit systems, the individual red/green/blue colour levels set with the last three parameters.

The logical colour value is MODed by the number of colours in the screen mode, so in a four colour mode, defining colour 4 will alter colour 0.

Some platforms support a logical colour of -1 to set the border colour. Some platforms use a physical colour of 16+ to set the border or pointer colours or individual flash colours.

Screen modes with 256 or more logical colours use other methods to control the palette.

Parameters

  • VDU 19, 0-255, p, r,g,b - sets logical colour
  • VDU 19, -1, p, r,g,b - sets border colour (-1 is sent as CHR$255)
  • VDU 19, l, 0-15, r,g,b - sets to 4-bit physical colour
  • VDU 19, l, 16, r,g,b - sets to RGB colour
  • VDU 19, l, 17, r,g,b - sets first RGB flash colour
  • VDU 19, l, 18, r,g,b - sets second RGB flash colour
  • VDU 19, l, 24, r,g,b - sets border RGB colour
  • VDU 19, l, 25, r,g,b - sets pointer RGB colour
  • VDU 19, l, 0-63, r,g,b - sets to 6-bit physical colour

Calling from BBC BASIC

On BASIC V and later, and equivalent:

  • COLOUR l,p sends VDU 19,l,p,0,0,0
  • COLOUR l,r,g,b sends VDU 19,l,16,r,g,b

Some implementations support setting the border colour with:

  • COLOUR l,r,g,b sends VDU 19,l,24,r,g,b if l<0

Implementations

Programs should use VDU 19,-1,24,r,g,b to set the border colour to be compatible across different platforms.

BBC/Master/Electron

The native 8-bit Acorn computers only support using 4-bit physical colour numbers, and do not support setting the border colour. Expansions such as the Chamelion and the Prisma support using red/green/blue colour components.

RISC OS

RISC OS supports 4-bit physical colour numbers and using physical colour numbers 16-31 to set red/green/blue colour components.

DOS/Windows

DOS/Windows supports 4-bit physical colour numbers and using physical colour numbers 16-31 to set red/green/blue colour components. It also supports using logical colour -1 to set the border colour.

Millipede Prisma Graphics System

The Prima Graphics System supports:

  • VDU 19,l,p,0,0,0 - sets to physical non-flashing colour if red/green/blue are zero
  • VDU 19,l,p,r,g,b - sets to red/green/blue colour components if any are non-zero, ignoring p.

Amstrad CPC

Amstrad CPC supports 4-bit physical colour numbers translated to the Amstrad 3*3*3 colour palette and using logical colour -1 to set the border colour. It also supports the following to set colours to the native 3*3*3 Amstrad colour levels:

  • VDU 19,l,128+x,y,0,0 - flash between Amstrad colour x and y

See also

On a BBC/Master, VDU 19 performs similar actions to OSBYTE &9B and will update the ULA colour registers. It will automatically invert the physical colour value as required by the ULA.

--Tautology 13:10, 1 May 2011 (UTC) Jgharston (talk) 23:10, 16 June 2016 (UTC)