This paper defines a subset of the FR80 tape commands which should be sufficient for reprogramming existing SD4020 packages. Other commands are available but, because of ambiguity in the documentation, it is sensible to keep to this subset until a full definition can be produced. Details of the FR80 hardware can be found in FR80 User Note 1.
Commands consist of one or more 18-bit words. Output to 7-track tapes must be odd parity and the standard density used will be 556 bpi. Each 18-bit word occupies three consecutive 6-bit characters. Output to 9-track tapes must be 1600 bpi. Each 18-bit word is split into three 6-bit characters which are stored as the lower 6 bits of three consecutive 8-bit bytes with the top two bits or each byte set to zero.
Tape records must not be greater than 512 18-bit words in length.
In the following sections, 18-bit words will be written as 6 octal digits.
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. In the following description, (CX',CY') is the new beam position after the command has been obeyed and V(X1,Y1,X2,Y2) defines a line drawn between the two points (X1,Y1) and (X2,Y2).
The format of FR80 commands is as follows:
The first four bits 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 one-word commands.
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 |
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.
Special commands are provided for drawing a set of lines in the horizontal or vertical direction. The vertical family draws the lines V(CX,CY,CX,CY+DY), V(CX+DX,CY,CX+DX,CY+DY) and N equally-spaced lines parallel with and in between these two. The horizontal command draws the lines V(CX,CY,CX+DX,CY), V(CX,CY+DY,CX+DX,CY+DY) and N equally-spaced lines parallel with and in between these two.
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 (see Appendix III of FR80 Use Note 1). 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 (Appendix V of FR80 User Note 1). 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. For example:
204000 501502 203000
outputs the string AB.
The current beam position is unchanged by this command.
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. For example, if I = 0 the intensity levels specified by the different values of J are:
0 32 64 96 128 160 192 224
If no intensity level is specified, a standard value will be used for all output.
The following commands are used to set up a job and change frames:
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.