Being a soft machine, the command set does not need to have a 1-1 relationship with the hardware itself. The set of commands given here are the basic set defined by the III Displayer program that came with the standard FR80. FR80's with additional facilities had a wider command set and individual organisations could enhance the basic set assuming they had the expertise. By keeping the source code of Displayer to themselves, III reduced the likelihood of this occurring.
FR80 commands are defined as 1, 2 or 3 18-bit words. Output to 7-track tapes is odd parity at 556bpi while 9-track is 1600 bpi. In both cases, the word consists of three characters on the magnetic tape. For 9-track tapes, the top two bits of each character are set to zero. Each tape record is up to 512 18-bit words
Vectors are drawn from the current beam position (CX,CY). Horizontal and vertical line drawing or beam repositioning requires a single-word command while a general vector command takes two words. After each command, the beam position is reset to be the end of the vector just drawn. This is written as (CX',CY'). The general vector command is V(X1,Y1,X2,Y2) which defines a line drawn from the point (X1,Y1) to the point (X2,Y2). After the command has been obeyed, (CX',CY'), the beam position is set to (X2,Y2). The format for the FR80 instructions is shown below.
The first four bits, C, define the type of command while the lower 14 bits define an X or Y value, or increment.
C | A | Formal Description | Name |
---|---|---|---|
0010 | X | CX' = X | ABSOLUTE MOVE HORIZONTAL |
0110 | DX | CX' = CX + DX | RELATIVE MOVE HORIZONTAL |
1010 | X | V(CX,CY,X,CY); CX' = X | ABSOLUTE DRAW HORIZONTAL |
1110 | DX | V(CX,CY,CX+DX,CY); CX' = CX + DX | RELATIVE DRAW HORIZONTAL |
0011 | Y | CY' = Y | ABSOLUTE MOVE VERTICAL |
0111 | DY | CY' = CY + DY | RELATIVE MOVE VERTICAL |
1011 | Y | V(CX,CY,CX,Y);CY' = Y | ABSOLUTE DRAW VERTICAL |
1111 | DY | V(CX,CY,CX,CY+DY);CY' = CY + DY | RELATIVE DRAW VERTICAL |
The two-word commands are similar to the single-word commands but both the X and Y values can be changed.
C | A | B | Formal Description | Name |
---|---|---|---|---|
0010 | X | Y | CX' = X; CY' = Y | MOVE ABSOLUTE |
0110 | DX | DY | CX'= CX + DX; CY' =CY + DY | MOVE RELATIVE |
1010 | X | Y | V(CX,CY,X,Y); CX' = X; CY' = Y | DRAW ABSOLUTE |
1110 | DX | DY | V(CX,CY,CX+DX,CY+DY); CX' = CX + DX; CY' = CY + DY | DRAW RELATIVE |
Special commands are provided for drawing a set of lines in the horizontal or vertical directions. The formats are shown in the figure above.
The VERTICAL FAMILY command draws the lines V(CX,CY,CX,CY+DY) and V(CX+DX,CY,CX+DX,CY+DY) and N equally spaced lines parallel with and in between these two.
The HORIZONTAL FAMILY command draws the lines V(CX,CY,CX+DX,CY) and V(CX,CY+DY,CX+DX,CY+DY) and N equally spaced lines parallel with and in between these two.
In the following commands, the 18-bit word is given as 6 octal digits
215000
A point is plotted at the current beam position (CX,CY).
The FR80 has a hardware character set which can be displayed at one of 64 different character sizes. Characters are defined on a 10 by 14 grid so that the character width is smaller than the character height. The size and spacing between characters is defined by the following commands:
211SSS SET CHARACTER SPACE
This sets the distance between the left edge of one character in a string and the left edge of the next character to SSS raster positions. Thus SSS includes the width of the character as well as the following space.
224HHH SET CHARACTER HEIGHT
This sets the character size to the largest value which is less than HHH raster positions. Note that the spacing SSS should not be smaller than HHH. Otherwise, characters will overlap. Character height defines the size of the character. The width is changed also to keep the aspect ratio the same (14 by 10).
21000R SET CHARACTER ROTATION
All subsequent characters will be rotated by R×45° anti-clockwise. R=0 corresponds to upright characters.
204000 TYPE CHARACTER STRING (MONO-SPACED) AAABBB CCCDDD ...... XXX203
For mono-spaced text, the string of text is output with the lower left-hand corner of the first character at the current beam position (CX,CY). the characters of the string follow the command itself and are packed two per word. Each character other than the termination one must have the top bit set. The lower eight bits give the position in the FR80 character set. The last character in the string must be the End of Message control character 203. If it appears in the left-hand 9-bit character position, the remaining 9 bits should be zero. The current beam position is unchanged by this command.
IF the command code is 204400 followed by the text string, the text is output with proportional spacing.
For proportional text, character space is interpreted as the distance between the right-hand corner of one character and the left-hand corner of the next.
The standard method of vector drawing is as solid lines. However, it is possible to draw both dotted and dashed lines. The mode of subsequent line drawing can be specified by the following commands:
216000 SOLID MODE
Solid vectors are to be drawn, the default.
216001 DASHED MODE 7NNNNN 3FFFFF
Dashed vectors are to be drawn. NNNNN is the approximate number of raster positions that the beam will be on and a line drawn while FFFFF is the number of raster positions that the beam will be switched off. the lengths are measured along the axis having the larger vector component. Both FFFFF and NNNNN must be less than 16383.
216002 DOTTED MODE 3SSSSS
Dotted lines are to be drawn. the spaces between the dots are SSSSS raster positions along the axis having the larger vector component. SSSSS must be less than 16383.
The intensity of all subsequent line drawing, point plotting and character drawing can be specified by the intensity command. There are 256 different intensity levels available on the ACL FR80. However, the command with the machine as delivered only allowed 64 to be specified.
2050IJ SET INTENSITY
All subsequent output will be at an intensity 32×J+4×I.
020000 START JOB
This should be the first command output at the start of a job. it resets the intensity level to the standard value, resets vector drawing to solid lines and resets character rotation to zero.
004010 END JOB
This command should be the last one output by a job.
221M00 SET CAMERA MODE
This command should be output immediately after the START JOB command. If M=4, all output will be generated in cine mode while if M=0 output will be generated in comic mode. These are defined as follows:
034NNN ADVANCE FRAME
The camera is advanced N frames. In the case of the microfiche camera, this means move the fiche on by N pages.
036000 ADVANCE FICHE
This command should only be used with the microfiche camera. It causes an advance to the next fiche ready to output the first page on the next fiche.
000000 NOP
This is the NOP command that does nothing and is used to pad out records.