The Graphics Option Controller (GOC) was designed at Surrey University and the firmware for the microprocessor based system was written by Harley Quilliam (Computer Unit). The GOC is now manufactured by Sigma Electronics Ltd and Harley Quilliam acts as a consultant for the company .
Features to be available on the new ROM for the GOC and clarification of existing features were discussed with Harley Quilliam.
There are now eight models of GOC, namely black and white, grey level, multi-ground, and colour, each of these being available as 256×256 or 512×512. For the colour GOC, 8 or 16 colour versions are available normally. However, there is an option to have 2 sets of 8 colours swappable by a manually operated hardware switch. The colours may be defined before purchase but are fixed for a given GOC. Flashing colours are included in the available range of colours. (Currently we have a 256×256 black and white GOC with an old ROM which is shortly to be replaced with the final ROM. On order we have a 256×x256 black and white GOC and a 256×256 colour GOC.) If future versions of the ROM in the GOC are produced they will have to be purchased at an approximate cost of £50 - £100. If serious bugs are found in the ROM an updated version will probably be supplied free.
A hardcopy unit is being developed (for £1000 - £1200) to produce a picture 41" square. It is based on an exciting matrix plotter.
On the new ROM there will be 25 programmable character sizes. Character size 1 is the present character size defined on a 10×6 rectangle where the character is expected to be in the top left 7×5. The rest of the rectangle is for character and line spacing. A character of size n is produced by replacing each dot of the original rectangle by a rectangle of n×n dots. Character size 25 is thus 250×150 dots.
Characters may be drawn in the four cardinal directions but automatic <cr><lf> at the edge of the area is only performed if left to right is being used. In the other directions further characters are ignored.
An option will be available where <cr><lf> can be plotted as legitimate characters within strings (normally <cr><lf> terminates a string). They are interpreted as a move to the appropriate edge of the graphics screen (for the character drawing direction) a line space "below" the previous line.
We learnt that it is currently possible to draw text and its immediate background in inverse video while maintaining normal video for the rest of the picture. This is achieved by selecting the option to erase the character box before drawing the character (BJ), setting global erase (FB), and plotting the characters in text mode (BA text). On the colour GOC it is possible to select a colour wash for the background of the character.
Inverse video in colour is defined as complementing the colour number specified before the conversion to red, green, blue for the monitor ie. the inverse of a colour is another of the 8 or 16 available colours.
Incremental dot plotting is available. A command is available to put the GOC into this mode and is followed by a sequence of hexadecimal digits. Each digit describes a movement of the pen to one of the eight neighbouring points which then becomes the current point. The digits 0-7 indicate draws to the point and 8-F indicate moves.
A line dot plotting facility allows a dot to be plotted at the end of a line which then becomes the current point (ie equivalent to a move to a point and plot a dot at the point).
The way in which moves and draws are differentiated on the 256×256 GOC is not extendible to the 512×512 GOC. Hence, pen up and pen down commands have been implemented on the 512×512. It is not yet known if they will be included in the new ROMH for the 256×256 GOC. If they are not, there will be a compatibility problem between the two devices.
Parity and stop bits will be redefinable by software.
Line speeds up to 9600 will be available from later this year, 1200/75 is not currently available but could possibly be introduced. A limiting factor is the number of pins into the microprocessor from thumb wheels. The lack of 1200/75 means that over a dial-up line the GOC can only be used at a maximum of 300 baud, which is unsatisfactory for graphics.
There is a 256 character input buffer in the GOC and this is normally adequate for the GOC not to get overloaded. However, at line speeds greater than 1200, if the GOC is obeying several expansion commands (eg drawing large characters or shaded blocks) handshaking may be necessary. This can be done by sending a number of characters (eg 250) followed by a request for the cursor coordinates (always available even if the cursor is not displayed) and waiting until they are received before sending any more. However, now stop and start characters are being introduced which may optionally be used, a stop character would be sent when the buffer is more than n% full and a start character when it has been sufficiently cleared.
Listing of GINO-2D and GINO-F drivers for the GOC were obtained from A Pavanantham (Computer Unit) and details are attached.
Some work will need to be done in mounting these because of the restrictions but a rough and ready version should not take too long.
Available drawing area:
256mm #215; 256mm
The hardware characters are available and the size are:
cell size: 10mm #215; 6mm
character size: 7mm #215; 5mm
The hardware arcs are not available on S5250.
The cursor facilities are not being implemented.
To nominate the GOC as the graphics output device
CALL S5250
If a line speed different from the default (1200 bauds) setting is used, it is advantageous to change the value by CALL DEVSPE(IBAUD) where IBAUD is the transmission rate of the line being used in bauds.
To use selective erase facility
CALL PENSEL(ICOL,WIDTH,ITYPE)
The first two parameters are immaterial but must be specified. For selective erase ITYPE should be set to 6 and to return to drawing mode ITYPE is set to 0.
BROKEN lines
GINO-2D The hardware broken line facilities are not implemented. The broken lines are drawn by software. GINO-F The hardware broken line facilities of the GOC are invoked by calls to BROKEN, with a non-zero argument value, as follows: argument value style of broken line 1 dashed 2 dotted 3 chained
Whichever line type is specified will remain until changed by a subsequent call to BROKEN.
A Pavanantham
12 January 1978