Difference between revisions of "VDU 19"
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. | ||
− | + | Screen modes with 256 or more logical colours use other methods to control | |
− | + | the palette. | |
==Parameters== | ==Parameters== | ||
− | * VDU 19,0- | + | * VDU 19, 0-255, p, r,g,b - sets logical colour |
− | * VDU 19,-1 | + | * VDU 19, -1, p, r,g,b - sets border colour (-1 is sent as CHR$255) |
− | * VDU 19,l | + | * VDU 19, l, 0-15, r,g,b - sets to 4-bit [[Physical colour numbers|physical colour]] |
− | * VDU 19,l | + | * VDU 19, l, 16, r,g,b - sets to RGB colour |
− | * VDU 19,l | + | * VDU 19, l, 17, r,g,b - sets first RGB flash colour |
− | * VDU 19,l | + | * VDU 19, l, 18, r,g,b - sets second RGB flash colour |
− | * VDU 19,l | + | * VDU 19, l, 24, r,g,b - sets border RGB colour |
− | * VDU 19,l | + | * VDU 19, l, 25, r,g,b - sets pointer RGB colour |
− | * VDU 19,l | + | * 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.
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>. |
Contents
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
- OSWORD &0B - Read palatte entries
- OSWORD &0C - Write palette entries
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)