Difference between revisions of "VDU 25"

From BeebWiki
Jump to: navigation, search
m (1 revision)
(Tidied up plot command bitmap.)
Line 15: Line 15:
 
|}
 
|}
  
<pre>
+
==Plot commands==
Plot Numbers
+
The plot command is a bitmap indicating what action to perform.
------------
 
b0-b1: 00 move
 
      01 plot in current foreground colour
 
      10 plot in logical inverse colour
 
      11 plot in current background colour
 
b2  : 0  relative coords
 
      1  absolute coords
 
  
b6-b7=00 - draw line:
+
  +---+---+---+---+---+---+---+---+
b3   : 0 last point not omitted
+
  | 7 | 6 | 5 | 4 | 3 | 2 | 1  0 |      Draw Line
      1 last point omitted
+
  +---+---+---+---+---+---+---+---+
b4   : 0 solid line
+
    |  |  |  |  |  |  |  |
      1 dot-dash line
+
    |  |  |  |  |  |  +---+---00   Move
b5   : 0 first point not omitted
+
    |  |  |  |  |  |          01    Plot in foreground colour
      1 first point omitted
+
    |  |  |  |  |  |          10    Plot in inverse colour
 +
    |  |  |  |  |  |          11    Plot in background colour
 +
    |  |  |  |  |  +----------- 0    Relative coordinates
 +
    |  |  |  |  |                1    Absolute coordinates
 +
    |   |  |  |  +--------------- 0   Last point not omitted
 +
    |  |  |  |                    1   Last point omitted
 +
    |   |  |  +------------------- 0   Solid line
 +
    |  |  |                        1   Dot-dash line
 +
    |  |   +----------------------- 0   First point not omitted
 +
    |  |                            1   First point omitted
 +
    +---+---------------------------00    Draw line
 +
 
 +
  +---+---+---+---+---+---+---+---+
 +
  | 7 | 6 | 5 | 4 | 3 | 2 | 1  0 |      Plot points
 +
  +---+---+---+---+---+---+---+---+
 +
    |  |  |  |  |  |  |  |
 +
    |  |  |  |  |  |  +---+---00    Move
 +
    |  |  |  |  |  |          01    Plot in foreground colour
 +
    |  |  |  |  |  |          10    Plot in inverse colour
 +
    |  |  |  |  |  |          11    Plot in background colour
 +
    |  |  |  |  |  +----------- 0    Relative coordinates
 +
    |  |  |  |  |                1    Absolute coordinates
 +
    +---+---+---+---+---------------&40+n Plot point
 +
                                    &48+n Fill to non-background
 +
                                    &50+n Fill triangle
 +
                                    &58+n Fill to background
 +
                                    &60+n Fill rectangle
 +
                                    &68+n Fill to foreground
 +
                                    &70+n Fill parallelogram
 +
                                    &78+n Fill to non-foreground
 +
 
 +
  +---+---+---+---+---+---+---+---+
 +
  | 7 | 6 | 5 | 4 | 3 | 2 | 1  0 |      Fill area and other actions
 +
  +---+---+---+---+---+---+---+---+
 +
    |  |  |  |  |  |  |  |
 +
    |  |  |  |  |  |  +---+---00    Move
 +
    |  |  |  |  |  |          01    Plot in foreground colour
 +
    |  |  |  |  |  |          10    Plot in inverse colour
 +
    |  |  |  |  |  |          11    Plot in background colour
 +
    |  |  |  |  |  +----------- 0    Relative coordinates
 +
    |  |  |  |  |                1    Absolute coordinates
 +
    +---+---+---+---+---------------&80+n Flood to non-background
 +
                                    &88+n Flood to foreground
 +
                                    &90+n Circle outline
 +
                                    &98+n Circle fill
 +
                                    &A0+n Circle arc
 +
                                    &A8+n Circle segment
 +
                                    &B0+n Circle sector
 +
                                    &B8+n Block copy/move/swap:
 +
                                          b0-b1: 00 no action
 +
                                                01 copy
 +
                                                10 move
 +
                                                11 swap (copy and move)
 +
                                    &C0+n Ellipse outline
 +
                                    &C8+n Ellipse fill
 +
                                    &D0+n Font plot
 +
                                    &D8+n Reserved
 +
                                    &E0+n Reserved
 +
                                    &E8+n Sprite plot (BBFW: block swap)
 +
                                    &F0+n User plot
 +
                                    &F8+n User plot
  
b6-b7<>00:
+
==Calling from BBC BASIC==
40 Plot point
+
  PLOT k,x,y                         sends  VDU 25,k,x;y;
48 Fill to non-background
+
  MOVE x,y                           sends  PLOT 4,x,y
50 Fill triangle
+
  DRAW x,y                           sends  PLOT 5,x,y
58 Fill to background
+
 
60 Fill rectangle
+
On BASICs that support the commands:
68 Fill to foreground
+
  MOVE BY x,y                       sends  PLOT 0,x,y
70 Fill parallelogram
+
  DRAW BY x,y                       sends  PLOT 1,x,y
78 Fill to non-foreground
+
  PLOT BY x,y                       sends  PLOT 65,x,y
 
+
  PLOT x,y                           sends  PLOT 69,x,y
80 Flood to non-background
+
  FILL BY x,y                       sends  PLOT 129,x,y
88 Flood to foreground
+
  FILL x,y                           sends  PLOT 133,x,y
90 Circle outline
+
  LINE x1,y1,x2,y2                   sends  MOVE x1,y1:DRAW x2,y2
98 Circle fill
+
  CIRCLE x,y,r                       sends  MOVE x,y:PLOT 145,r,0
A0 Circle arc
+
  CIRCLE FILL x,y,r                  sends  MOVE x,y:PLOT 153,r,0
A8 Circle segment
+
  ELLIPSE x,y,a,b                    sends  MOVE x,y:MOVE a,0:PLOT 193,0,b
B0 Circle sector
+
  ELLIPSE FILL x,y,a,b              sends  MOVE x,y:MOVE a,0:PLOT 201,0,b
B8 Block copy/move/swap:
+
  RECTANGLE FILL x,y,w,h             sends  MOVE x,y:PLOT 101,x+w,y+h
    b0-b1: 00 no action
+
  RECTANGLE FILL x1,y1,w,h TO x2,y2 sends  MOVE x1,y1:MOVE x1+w,y1+h:PLOT 189,x2,y2
          01 copy
+
  RECTANGLE x1,y1,w,h TO x2,y2      sends  MOVE x1,y1:MOVE x1+w,y1+h:PLOT 190,x2,y2
          10 move
+
  RECTANGLE x1,y1,w,h TO x2,y2       sends  MOVE x1,y1:MOVE x1+w,y1+h:PLOT 191,x2,y2
          11 swap (copy and move)
+
  RECTANGLE SWAP x1,y1,w,h TO x2,y2 sends  MOVE x1,y1:MOVE x1+w,y1+h:PLOT 191,x2,y2
 
+
  RECTANGLE x,y,w,h                  sends  MOVE x,y:PLOT 13,x+w,y:PLOT 13,x+w,y+h:PLOT 13,x,y+h:PLOT 13,x,y
C0 Ellipse outline
 
C8 Ellipse fill
 
D0 Font plot
 
D8 Reserved
 
E0 Reserved
 
E8 Sprite plot (BBFW: block swap)
 
F0 User plot
 
F8 User plot
 
 
 
PLOT k,x,y                       -> VDU 25,k,x;y;
 
 
 
MOVE x,y                         -> PLOT 4,x,y
 
DRAW x,y                         -> PLOT 5,x,y
 
 
 
CIRCLE x,y,r                      -> MOVE x,y:PLOT 145,r,0
 
CIRCLE FILL x,y,r                -> MOVE x,y:PLOT 153,r,0
 
DRAW BY x,y                       -> PLOT 1,x,y
 
ELLIPSE x,y,a,b                  -> MOVE x,y:PLOT 0,a,0:PLOT 193,0,b
 
ELLIPSE FILL x,y,a,b              -> MOVE x,y:PLOT 0,a,0:PLOT 201,0,b
 
FILL x,y                         -> PLOT 133,x,y
 
FILL BY x,y                       -> PLOT 129,x,y
 
LINE x1,y1,x2,y2                 -> MOVE x1,y1:DRAW x2,y2
 
MOVE BY x,y                      -> PLOT 0,x,y
 
PLOT x,y                          -> PLOT 69,x,y
 
PLOT BY x,y                       -> PLOT 65,x,y
 
RECTANGLE x,y,w,h                -> MOVE x,y:PLOT 13,x+w,y:PLOT 13,x+w,y+h:PLOT 13,x,y+h:PLOT 13,x,y
 
RECTANGLE FILL x,y,w,h           -> MOVE x,y:PLOT 101,x+w,y+h
 
RECTANGLE FILL x1,y1,w,h TO x2,y2 -> MOVE x1,y1:MOVE x1+w,y1+h:PLOT 189,x2,y2
 
RECTANGLE SWAP x1,y1,w,h TO x2,y2 -> MOVE x1,y1:MOVE x1+w,y1+h:PLOT 191,x2,y2
 
RECTANGLE x1,y1,w,h TO x2,y2     -> MOVE x1,y1:MOVE x1+w,y1+h:PLOT 190,x2,y2
 
</pre>
 

Revision as of 00:39, 14 June 2016

PLOT commands

VDU 25
Syntax VDU 25,<numeric>,<numeric>;<numeric>;
Character stream (hex) 19 <command> <Xlow> <Xhigh> <Ylow> <Yhigh>
Description Performs a vector graphics operation.

Plot commands

The plot command is a bitmap indicating what action to perform.

 +---+---+---+---+---+---+---+---+
 | 7 | 6 | 5 | 4 | 3 | 2 | 1   0 |       Draw Line
 +---+---+---+---+---+---+---+---+
   |   |   |   |   |   |   |   |
   |   |   |   |   |   |   +---+---00    Move
   |   |   |   |   |   |           01    Plot in foreground colour
   |   |   |   |   |   |           10    Plot in inverse colour
   |   |   |   |   |   |           11    Plot in background colour
   |   |   |   |   |   +----------- 0    Relative coordinates
   |   |   |   |   |                1    Absolute coordinates
   |   |   |   |   +--------------- 0    Last point not omitted
   |   |   |   |                    1    Last point omitted
   |   |   |   +------------------- 0    Solid line
   |   |   |                        1    Dot-dash line
   |   |   +----------------------- 0    First point not omitted
   |   |                            1    First point omitted
   +---+---------------------------00    Draw line
 
 +---+---+---+---+---+---+---+---+
 | 7 | 6 | 5 | 4 | 3 | 2 | 1   0 |       Plot points
 +---+---+---+---+---+---+---+---+
   |   |   |   |   |   |   |   |
   |   |   |   |   |   |   +---+---00    Move
   |   |   |   |   |   |           01    Plot in foreground colour
   |   |   |   |   |   |           10    Plot in inverse colour
   |   |   |   |   |   |           11    Plot in background colour
   |   |   |   |   |   +----------- 0    Relative coordinates
   |   |   |   |   |                1    Absolute coordinates
   +---+---+---+---+---------------&40+n Plot point
                                   &48+n Fill to non-background
                                   &50+n Fill triangle
                                   &58+n Fill to background
                                   &60+n Fill rectangle
                                   &68+n Fill to foreground
                                   &70+n Fill parallelogram
                                   &78+n Fill to non-foreground
 
 +---+---+---+---+---+---+---+---+
 | 7 | 6 | 5 | 4 | 3 | 2 | 1   0 |       Fill area and other actions
 +---+---+---+---+---+---+---+---+
   |   |   |   |   |   |   |   |
   |   |   |   |   |   |   +---+---00    Move
   |   |   |   |   |   |           01    Plot in foreground colour
   |   |   |   |   |   |           10    Plot in inverse colour
   |   |   |   |   |   |           11    Plot in background colour
   |   |   |   |   |   +----------- 0    Relative coordinates
   |   |   |   |   |                1    Absolute coordinates
   +---+---+---+---+---------------&80+n Flood to non-background
                                   &88+n Flood to foreground
                                   &90+n Circle outline
                                   &98+n Circle fill
                                   &A0+n Circle arc
                                   &A8+n Circle segment
                                   &B0+n Circle sector
                                   &B8+n Block copy/move/swap:
                                         b0-b1: 00 no action
                                                01 copy
                                                10 move
                                                11 swap (copy and move)
                                   &C0+n Ellipse outline
                                   &C8+n Ellipse fill
                                   &D0+n Font plot
                                   &D8+n Reserved
                                   &E0+n Reserved
                                   &E8+n Sprite plot (BBFW: block swap)
                                   &F0+n User plot
                                   &F8+n User plot

Calling from BBC BASIC

 PLOT k,x,y                         sends  VDU 25,k,x;y;
 MOVE x,y                           sends  PLOT 4,x,y
 DRAW x,y                           sends  PLOT 5,x,y
 
On BASICs that support the commands:
 MOVE BY x,y                        sends  PLOT 0,x,y
 DRAW BY x,y                        sends  PLOT 1,x,y
 PLOT BY x,y                        sends  PLOT 65,x,y
 PLOT x,y                           sends  PLOT 69,x,y
 FILL BY x,y                        sends  PLOT 129,x,y
 FILL x,y                           sends  PLOT 133,x,y
 LINE x1,y1,x2,y2                   sends  MOVE x1,y1:DRAW x2,y2
 CIRCLE x,y,r                       sends  MOVE x,y:PLOT 145,r,0
 CIRCLE FILL x,y,r                  sends  MOVE x,y:PLOT 153,r,0
 ELLIPSE x,y,a,b                    sends  MOVE x,y:MOVE a,0:PLOT 193,0,b
 ELLIPSE FILL x,y,a,b               sends  MOVE x,y:MOVE a,0:PLOT 201,0,b
 RECTANGLE FILL x,y,w,h             sends  MOVE x,y:PLOT 101,x+w,y+h
 RECTANGLE FILL x1,y1,w,h TO x2,y2  sends  MOVE x1,y1:MOVE x1+w,y1+h:PLOT 189,x2,y2
 RECTANGLE x1,y1,w,h TO x2,y2       sends  MOVE x1,y1:MOVE x1+w,y1+h:PLOT 190,x2,y2
 RECTANGLE x1,y1,w,h TO x2,y2       sends  MOVE x1,y1:MOVE x1+w,y1+h:PLOT 191,x2,y2
 RECTANGLE SWAP x1,y1,w,h TO x2,y2  sends  MOVE x1,y1:MOVE x1+w,y1+h:PLOT 191,x2,y2
 RECTANGLE x,y,w,h                  sends  MOVE x,y:PLOT 13,x+w,y:PLOT 13,x+w,y+h:PLOT 13,x,y+h:PLOT 13,x,y