Difference between revisions of "GCOL"

From BeebWiki
Jump to: navigation, search
m (1 revision)
m (Slight tweeks.)
(3 intermediate revisions by 2 users not shown)
Line 9: Line 9:
 
| rowspan="2" | [[BASIC metasyntax|Syntax]]
 
| rowspan="2" | [[BASIC metasyntax|Syntax]]
 
| BASIC I-IV
 
| BASIC I-IV
| <code>GCOL</code> &lt;numeric&gt;<code>,</code>&lt;numeric&gt;
+
| <code>GCOL</code> <numeric><code>,</code><numeric>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
 
| BASIC V
 
| BASIC V
| <code>GCOL</code> &lt;numeric&gt;<code>,</code>&lt;numeric&gt;<nowiki>
+
| <code>GCOL</code> <numeric><code>,</code><numeric><nowiki>
</nowiki>[<code>TINT</code> &lt;numeric&gt;]
+
</nowiki>[<code>TINT</code> <numeric>]
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
 
| Token (hex)
 
| Token (hex)
Line 21: Line 21:
 
| Description
 
| Description
 
| BASIC I-V
 
| BASIC I-V
| If bit 7 of the second &lt;numeric&gt; is 0 <nowiki>
+
| If bit 7 of the second <numeric> is 0 <nowiki>
</nowiki>then <code>GCOL</code> sets the foreground graphics paint mode to the first &lt;numeric&gt; <nowiki>
+
</nowiki>then <code>GCOL</code> sets the foreground graphics paint mode to the first <numeric> <nowiki>
</nowiki>and the foreground graphics colour to the second &lt;numeric&gt; [[MOD|modulo]] 128.<br><nowiki>
+
</nowiki>and the foreground graphics colour to the second <numeric> [[MOD|modulo]] 128.<br><nowiki>
</nowiki>If bit 7 of the second &lt;numeric&gt; is 1 <nowiki>
+
</nowiki>If bit 7 of the second <numeric> is 1 <nowiki>
 
</nowiki>then <code>GCOL</code> sets the colour and paint mode of background graphics instead.<br><nowiki>
 
</nowiki>then <code>GCOL</code> sets the colour and paint mode of background graphics instead.<br><nowiki>
 
</nowiki>The current contents of the screen are not affected.<br><nowiki>
 
</nowiki>The current contents of the screen are not affected.<br><nowiki>
Line 36: Line 36:
  
 
= Description =
 
= Description =
This statement sets the colour to be used by all subsequent graphics operations. It can set the foreground and background graphics colours. It also specifies how the colour is to be placed on the screen.
+
This statement sets the colour to be used by all subsequent graphics
 +
operations. It can set the foreground and background graphics colours. It
 +
also specifies how the colour is to be placed on the screen.
  
 
The first number specifies the mode of action.
 
The first number specifies the mode of action.
 +
* 0 plot the specified colour
 +
* 1 OR the colour with the colour already there
 +
* 2 AND the colour with the colour already there
 +
* 3 XOR (exclusive-OR) the colour with the colour already there
 +
* 4 NOT (invert) the colour already there
 +
* 5 no change to colour already there (not initially documented)
 +
* 6 clear the colour - set it to colour 0 (not initially documented)
 +
* 7 various actions resulting from a table overflow
  
0 plot the specified colour
+
With the Graphics Extension ROM, Master and later:
 +
* 16*n+k - select fill pattern n
  
1 OR the colour with the colour already there
+
On Arthur and later:
 +
* 6 sets the pixel to (NOT colour AND the colour already there)
 +
* 7 sets the pixel to (NOT colour OR the colour already there)
 +
* 8+k - fill pattern uses a transparent background
 +
* 16*5+k - select a fill pattern made from all four fill patterns in a block
  
2 AND the colour with the colour already there
+
The second number specifies the logical colour. If the number is less than 128
 +
then it defines the graphics foreground colour. If the number is greater than
 +
127 then it defines the graphics background colour.
  
3 Exclusive-OR the colour with the colour already there
+
GCOL simply sends <code>[[VDU 18]],action,colour</code>. Some versions of
 +
BASIC allow <code>GCOL <colour></code> which sends VDU 18,0,colour.
  
4 invert the colour already there.
+
The BBC VDU driver does no range checking on the GCOL action, so using
 
+
out-of-range actions can cause odd effects.
The second number specifies the logical colour. If the number is less than 128 then it defines the graphics foreground colour. If the number is greater than 127 then it defines the graphics background colour.
 
 
 
In the two-argument form it is simply a veneer for <code>[[VDU 18]]</code>.
 

Revision as of 12:52, 17 October 2020

GCOL is used to select the logical colours used by graphics statements.

GCOL
Availability Present in all original versions of BBC BASIC.
Syntax BASIC I-IV GCOL <numeric>,<numeric>
BASIC V GCOL <numeric>,<numeric> [TINT <numeric>]
Token (hex) BASIC I-V E6 (statement)
Description BASIC I-V If bit 7 of the second <numeric> is 0 then GCOL sets the foreground graphics paint mode to the first <numeric> and the foreground graphics colour to the second <numeric> modulo 128.
If bit 7 of the second <numeric> is 1 then GCOL sets the colour and paint mode of background graphics instead.
The current contents of the screen are not affected.
In BASIC V the TINT argument sets the foreground or background tint.
Associated keywords CLG, CLS, COLOUR, MODE, PLOT

Description

This statement sets the colour to be used by all subsequent graphics operations. It can set the foreground and background graphics colours. It also specifies how the colour is to be placed on the screen.

The first number specifies the mode of action.

  • 0 plot the specified colour
  • 1 OR the colour with the colour already there
  • 2 AND the colour with the colour already there
  • 3 XOR (exclusive-OR) the colour with the colour already there
  • 4 NOT (invert) the colour already there
  • 5 no change to colour already there (not initially documented)
  • 6 clear the colour - set it to colour 0 (not initially documented)
  • 7 various actions resulting from a table overflow

With the Graphics Extension ROM, Master and later:

  • 16*n+k - select fill pattern n

On Arthur and later:

  • 6 sets the pixel to (NOT colour AND the colour already there)
  • 7 sets the pixel to (NOT colour OR the colour already there)
  • 8+k - fill pattern uses a transparent background
  • 16*5+k - select a fill pattern made from all four fill patterns in a block

The second number specifies the logical colour. If the number is less than 128 then it defines the graphics foreground colour. If the number is greater than 127 then it defines the graphics background colour.

GCOL simply sends VDU 18,action,colour. Some versions of BASIC allow GCOL <colour> which sends VDU 18,0,colour.

The BBC VDU driver does no range checking on the GCOL action, so using out-of-range actions can cause odd effects.