Difference between revisions of "VDU 19"

From BeebWiki
Jump to: navigation, search
(Rewrote to clarify parameters.)
m (Added Prisma Graphics.)
Line 68: Line 68:
 
numbers 16-31 to set red/green/blue colour components. It also supports
 
numbers 16-31 to set red/green/blue colour components. It also supports
 
using logical colour -1 to set the border colour.
 
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.
  
 
===Amstrad CPC===
 
===Amstrad CPC===
Line 74: Line 79:
 
It also supports the following to set colours to the native 3*3*3 Amstrad
 
It also supports the following to set colours to the native 3*3*3 Amstrad
 
colour levels:
 
colour levels:
 
 
* VDU 19,l,128+x,y,0,0 - flash between Amstrad colour x and y
 
* VDU 19,l,128+x,y,0,0 - flash between Amstrad colour x and y
  

Revision as of 17:02, 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 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.

With screen modes with 256 or more logical colours other methods are used to control the palette.

Parameters

  • VDU 19,0-63,p ,r,g,b - sets logical colour
  • VDU 19,-1 ,p ,r,g,b - sets border colour
  • 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.

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)