| Entry | |
|---|---|
| R0 | Plot command code, |
| R1 | X co-ordinate |
| R2 | Y co-ordinate |
| Exit | |
|---|---|
| R0 | Corrupted |
| R1 | Corrupted |
| R2 | Corrupted |
The purpose of this call is to perform a direct VDU call.
| # | Description | Sequence of moves |
|---|---|---|
| 0 | Solid line including both end points | Line |
| 8 | Solid line excluding the final end point | Line |
| 16 | Dotted line including both end points (pattern restarted) | Line |
| 24 | Dotted line excluding the final end point (pattern restarted) | Line |
| 32 | Solid line excluding 1^st^ point | Line |
| 40 | Solid line excluding both end points | Line |
| 48 | Dotted line excluding 1^st^ point (pattern continued) | Line |
| 56 | Dotted line excluding both end points (pattern continued) | Line |
| 64 | Point plot | |
| 72 | Horizontal line fill (left and right) to non-background | |
| 80 | Triangle fill | Triangle |
| 88 | Horizontal line fill (right only) to background | |
| 96 | Rectangle fill | Rectangle |
| 104 | Horizontal line fill (left and right) to foreground | |
| 112 | Parallelogram fill | Parallelogram |
| 120 | Horizontal line fill (right only) to non-foreground | |
| 128 | Flood to non-background | |
| 136 | Floor to foreground | |
| 144 | Circle outline | Circle |
| 152 | Circle fill | Circle |
| 160 | Circular arc | Arc |
| 168 | Segment | Segment |
| 176 | Sector | Sector |
| 184 | Block copy/move | Block copy/move |
| 192 | Ellipse outline | Ellipse |
| 200 | Ellipse fill | Ellipse |
| 208 | Font printing (do not use) | |
| 216 | Reserved | |
| 224 | Reserved | |
| 232 | Sprite Plot | |
| 240 | Reserved | |
| 248 | Reserved |
Some shapes need to be defined by a sequence of points. The VDU drivers use the previous positions of the graphics cursor to define these. These can be specified by a sequence of absolute or relative moves (commands 64 or 68).
| Shape | Sequence of moves |
|---|---|
| Arc | To plot an arc move to centre, move to start, then plot arc to a point on the line joining centre to end. The arc will be plotted anticlockwise |
| Block copy/move | First define the source rectangle: move to one corner, then move to diagonally opposite corner. Then plot bottom left corner of destination |
| Circle | To plot a circle, move to centre, then plot circle to a point on the circumference |
| Ellipse | To plot an ellipse, move to centre, move to point on circumference with same Y co-ordinate as centre, then plot ellipse to the lowest or highest point on the circumference |
| Line | To plot a line, move to one endpoint, then plot line to other endpoint |
| Parallelogram | To plot a parallelogram, move to vertex, move to next vertex, then plot parallelogram to third vertex. Fourth vertex will be opposite second |
| Rectangle | To plot a rectangle, move to one corner, then plot rectangle to diagonally opposite corner |
| Sector | To plot a sector, move to centre, move to start, then plot sector to a point on the line joining centre to end. The sector will be plotted anticlockwise |
| Segment | To plot a segment, move to centre, move to start, then plot segment to a point on the line joining centre to end. The segment will be plotted anticlockwise |
| Triangle | To plot a triangle, move to vertex, move to next vertex, then plot triangle to third vertex |
The plot commands use the top 5 bits. The bottom 3 bits are used to specify the ‘modifier’. Most plot command codes use the standard modifier codes, however, a special set of modifiers are available for block copy/move commands.
| # | Standard modifier type |
|---|---|
| 0 | Move relative |
| 1 | Plot relative, foreground |
| 2 | Plot relative, inverse |
| 3 | Plot relative, background |
| 4 | Move absolute |
| 5 | Plot absolute, foreground |
| 6 | Plot absolute, inverse |
| 7 | Plot absolute, background |
| # | Block copy/move modifier type |
|---|---|
| 0 | Move relative |
| 1 | Relative rectangle move |
| 2 | Relative rectangle copy |
| 3 | Relative rectangle |
| 4 | Move absolute |
| 5 | Absolute rectangle move |
| 6 | Absolute rectangle copy |
| 7 | Absolute rectangle copy |
The action performed depends on the plot command code value in R0.
Unknown plot codes (216-231,240-255) are sent to the unknown plot vector?, which by default does nothing.
The dash pattern is set with VDU 23,6? and can be read with OS_Word 10,6?. Its length is set and read with OS_Byte 163.