SPROGS Paper No 48: Accessing the FR80 using SPROGS
R E Thomas
August 30 1974
It will be a simple matter to include the FR80 as just another device,
but this will not allow access to a number of powerful features of
the magnetic tape order code. This paper discusses some of the problems,
with ideas for their solution.
A number of unknowns still face us. In particular, it is not clear how
much of the order code is interpreted by software in the FR80, and which may
therefore be slower than using the main machine to generate equivalent orders.
It may also be possible to program the
FR80 to acccpt other (as yet undefined) codes which will effectively fit
the FR80 to SPROGS. This has the drawback of providing a non-standard FR80.
One possible example of the latter would be the inclusion of routines to
handle the Region Chain in the FR80. This would avoid all the
clip and convert problems, but would most likely be very slow with
no floating-point hardware. Such a scheme would involve REGION, RGLIN, etc
passing region parameters direct to the FR80, and TODXYF etc bypassing the
region chain for this device.
The following features require special consideration:
Intensity
The FR80 allows a different intensity per
colour. It would be possible to provide
an array within SPROGS to accomplish this.
Colour
etails of the colour selection would have
to be sent to the FR80.
Repeat
The FR80 Repeat order allows nested repetition
of any sequence of orders. ADVRPT can be
modified to make use of this order (rather
than basic files), but this does not give the
flexibility.
New display routines could be incorporated
to call the Repeat order direct. These would
be ignored by the other devices. Its use
within a complex sequence list, however,
might give odd results.
The following set can only be used successfully if no clipping or conversion is required.
This implies detecting the current region as FR80 base region, with visibility inside and outside as 1.
Dotting
This order can replace the line splitting.
Thick
The vector family order could be used, with calculation of the outside lines of the cluster.
Dotting and Thick can also be handled by adding extra markers to the line segment queue,
and performing the function at the base region level. This would make no allowance for accurate
clipping on Thick, or on consistent dotting. Two possible methods are:
(1) Only use the marker for FR8O lines. If other devices are selected, the lines are
split as normal. If the FR80 is selected (possibly
as well as others), the line is added to the queue with a marker.
(2) A separate system is specified which requests low-level Thick and Dotted.
If selected, all lines are marked, the details are passed to the handlers,
who either select hardware or simulate with software.
ARC
This could be a display routine which passes direct to FR80, or calls VEC. It may be possible to
pass arc orders at a lower level in the chain if a clip of a curved line is introduced.
Picture
If a picture file makes no use of index variables (and no clipping or conversion is required),
it should be possible to output the whole file as a Picture, mark the fact in
the file header, and, subsequently, each
DRAW will output a Picture order. Basic
files can be treated in the same way. Care must be taken on FIDF type, however.
Text
TEXT is not a display routine at the moment because of the problems associated
with an unknown number of arguments, and the saving of text in a file.
Outside a file, TEXT could call the various Text orders instead of DRAs.
Alternatively, any file with a single character name (or NL, BS) can be treated
as a character. DRAWing, such a
file will send the character name to the FR80.
The handler can store these in a buffer and output them in the correct form.
TEXPAN can give size and spacing. However, there is no current mechanism for making
use of proportional spacing, rotation, etc.
Character definition
A routine DEFNT (X) could generate a string
of character definitions from all the files
in store with single character names. Files will be interpreted in the condensed character code.
Vectors
The FR80 has a considerable wealth of different absolute, relative line drawing orders.
It will thus be necessary to know what generated the order in the first place, so that the
correct vector can be selected.
The orders also allow the FR80 'current position' to be left at either end of the
vector. It would be possible to optimise on this,
but this would entail waiting for the next line before outputting the current
one.
The following flowcharts give the overall structure of display routines,
line output to devices and DRAW. They are included to show how facilities
are provided at the moment.