In Orion the word (the content of one register or drum location) is 48 bits long. These binary digits are numbered from 0 (the most significant) to 47 (the least significant). Within the working store and on the drum a 49th bit is attached for parity checking. This parity bit is not accessible to the programmer.
The programmer may interpret words in many ways, the most common of which are described below.
Each machine instruction occupies the whole of one 48bit word. The bits in the stored instruction are allocated as in the diagram and table below.

7 


2 




4 
3 
1 
1 

S 
F 
TX 
X 
R 
Z 
TY 
Y 

G 
P  RX  RY 
Symbol  Bits  Significance  
S  D0  Signal bit: if zero the instruction may not be obeyed: see section 5.2 page 2  
F  G P 
D1 to D4 D5 to D7 
Function F, group G (0 to 15), position in group P (0 to 7) 
TX  D8  Type (X). 1 if Xaddress is to be modified by z_{m}, or if instruction is of unmodified 2address type  
X  D9 to D23  Xaddress; 0 to 32767  
R  RX RY 
D24 D25 
1 if Xaddress is to be
replaced 1 if Yaddress is to be replaced 
Z  D26 to D31  Zaddress; 0 to 63 (0 if a instruction of unmodified 2address type)  
TY  D32  Type (Y). 1 if Yaddress is to be modified by z_{m}  
Y  D33 to D47  Yaddress; 0 to 21767 
Regarded as a number, a word may be interpreted in several different ways.
a) A FixedPoint Integer
When a word is interpreted in this way, D0 is a sign bit; 0 if the number is non negative and 1 if the number is negative. Integers are held exactly: a single 48bit word can represent any integer in the range:
2^{47} ≤ x_{I} ≤ 2^{47}1 = 140,737,488,355,327
≈ 1.4 x 10^{14}
A negative integer is represented by its complement with respect to 2^{48}.
When a number is regarded as a fraction, the sign of the fraction is given by the m.s. bit, in the same way as with integers. A singlelength word can be regarded as a "fraction" within the range
1.0 ≤ x_{F }≤ 1.0 – 2^{47}
its value being an integral multiple of 2^{47}. (Note also that x_{F} = εx_{I}, where ε = 2^{47}). A negative fraction is represented by its complement with respect to 2.
If it is required to store, single length, a fraction which is not an exact multiple of 2^{47}, the number which is actually stored is the required fraction rounded to the nearest multiple of 2^{47}, or to the numerically greater multiple of 2^{47} if the required number is an odd multiple of 2^{48}.
Since the binary point has significance only to the programmer, and not to the computer, it follows that the programmer can imagine the binary point to be in any desired position. In general, therefore, the binary point can be considered to be n places up from the l.s. end, i.e. between D(47n) and D(48n). Then, with D0 as the sign bit, the (47n) bits D1 to D(47n) may be used to represent an integral part, and the n bits D(48n) to D47 may be used to represent a fractional part, permitting storage of mixed numbers such as +10.7, 1257.813 etc. Denoting the value of a word regarded as a mixed number, by x_{s} it can be expressed as
x_{s} = x_{I} 2^{n} = x_{F}.2^{(47n)}
It is an integral multiple of 2^{n} and lies within the range
–2^{(47n)} ≤ x_{s} ≤ 2^{(47n)} – 2^{n}
(As an alternative to imagining the number as being stored with the binary point somewhere along the word, it can be regarded as being stored as the integer or fraction which represents the mixed number multiplied by a suitable scaling factor; thus
x_{I} = x_{s}.2^{n} and x_{F} = x_{s}.2^{(47n)}
A particular case of the mixed number is the singlelength midpoint number with n = 24. (2^{23} = 8,388,608).
To represent a number in standard floatingpoint form in Orion, the 48bit word is divided into two fields. The first field, D0 to D39, represents the signed fractional argument of the number, and bits D40 to D47 represent the nonnegative "characteristic". The signed integer equal to the characteristic minus 128 is the exponent of the floatingpoint number; the complete floatingpoint number has the value
The argument is zero or lies within one of the ranges ½ ≤ x_{a} < 1 or 1 ≤ x_{a} < ½, depending on its sign, and the exponent lies within the range 128 ≤ x_{e} ≤ 127. Floatingpoint numbers have about 11 or 12 significant decimal digits; the largest numerical value representable in this way has a magnitude of about 10^{38}.
If the contents of two consecutive registers are regarded as parts of a single number, that number is known as a doublelength number. (In general, the full product of two singlelength numbers is a doublelength number.)
A convention normally adopted is that the m.s. bit of the second (l.s.) word is zero, the d.l. number is then said to be in 'standard form'. Regarded as a singlelength number, the l.s. word is therefore nonnegative. As with singlelength numbers, the binary point may be imagined to be in any desired position.
The instruction with function number 126 is specifically designed for use with doublelength numbers.
i) Doublelength integers
Let the values of the m.s. and l.s. words, regarded as singlelength integers, be x_{I} and x_{I}* respectively. Then the value of the doublelength integer formed from x_{I} and. x_{I}* is x:_{I} = x_{I}.2^{47} + x_{I}* and lies within the range 2^{94} ≤ x:_{I} ≤ 2^{94}1 [2^{94} ≈ 1.98 x 10^{28}] if it is in standard form (i.e. with x_{I}* nonnegative).
The principal advantage of using doublelength integers lies in the increase in the permissible magnitude of the number which can be stored.
ii) Doublelength fractions
If x_{F} and x_{F}* are the values of the individual words regarded as single length fractions, the value of the doublelength fraction is x:_{F }= x_{F }+ εx_{F}* where ε = 2^{47}. If it is in standard form, a doublelength fraction lies within the range 1.0 ≤ x:_{F }≤ 1.0  2^{94} and is an integral multiple of 2^{94}
x:_{F} = x:_{I}.2^{94}
Use of doublelength fractions increases the precision to which a general fraction can be represented in the computer.
iii) Doublelength mixed number
By considering the binary point to be at some arbitrary position in the doublelength number, mixed numbers can be held in doublelength form. Let the binary point be m places up from the extreme right hand end of the doublelength number. Then if m ≤ 47, the value x_{s} of the doublelength mixed number is x:_{s} = x:_{I}.2^{m}
It lies within the range 2^{(94m)} ≤ x:_{s} ≤ 2^{(94m)}  2^{m} and is an integral multiple of 2^{m}.
If, on the other hand, m >47, the value of x:_{s} is x:_{s} = x:_{I}.2^{(m1)} and lies within the range 2^{95m} ≤ x:_{s }≤ 2^{95m }– 2^{(m1)}
The difference between the cases m ≤ 47 and m > 47 arises from the special treatment of the signbit of the second (l.s.) word in doublelength working.
A particular case is when m = 47 or 48 (these two cases are equivalent, from the discussion above). The binary point is then, effectively, between the two words; the m.s. word is then regarded as an integer and the l.s. word as a (usually nonnegative) fraction. In this form, known as standard doublelength midpoint representation, the number has the value x:_{M }= x_{I} + x_{F}*
The range of values is –2^{47 }≤ x:_{M} ≤ 2^{47} –2^{47} and the stored number is an exact multiple of 2^{47}.
Doublelength midpoint numbers arise naturally as the full d.l. product (produced in Orion by the 32function) of an integer and a fraction. Doublelength midpoint numbers also arise as the quotient given by the 42instruction.
(iv) Doublelength floatingpoint numbers
If two consecutive words are used to store the standardized fractional argument, and a third word is used to store the exponent, then floatingpoint numbers can be stored with greater precision and with a larger range of exponents than can be attained with the standard packed (singleword) floatingpoint form.
The doublelength argument is standardised to be zero or to lie, usually, within one of the ranges ½ ≤ x:_{F }< 1 or –1 ≤ x:_{F} < ½ or in special circumstances ½ ≤ x:_{F }< ½
The instruction with function number 125 is specifically designed for standardising numbers in this form.
Any of the number types (integer, fraction, mixed or floatingpoint) can be stored in more than two words if desired, to increase the possible magnitude and/or precision of the stored number.
The extensions from the doublelength form to the general multiplelength form are straightforward and not detailed here (in general only the m.s. word of such a fixedpoint number is allowed to be negative).
Generally a character is a numeral, a letter of the alphabet, a symbol (such as + £ / : etc.) or a nonprinting character associated with printing layout (space, newline, tabulate, etc.) The 'character' which is stored within Orion is, in fact, an arrangement of bits used to represent that character inside the computer according to some arbitrary code.
One particular code, which is recommended for use whenever practicable, is the Ferranti Flexowriter Code (see Section 0.5).
Normally the internal code is such that each character is represented by a single 6bit field; eight such fields (characters) can be packed into each 48bit word. The eight characters in a word are conventionally denoted C0, C1, C2....C7, where C0 is that field comprising bits D0 to D5, C1 occupies D6 to D11..... and C7 occupies D42 to D47.
An alternative notation is to denote the eight characters in the word in register X by x_{0}, x_{1}, ......, x_{7}.
The 6bit field representing a particular character can be regarded as a 6bit unsigned binary integer; the value of this integer (0 to 63) is termed the value of the character.
To facilitate the input of characters to Orion, the symbolic input routine allows a line (which may or may not be labelled) on a program sheet to be written in a form typified by 0, 7, 47, 6, 50, 41, 47, 46 i.e. as eight integers in the range 0 to 63 each separated from its neighbours by a comma. Each of the successive 6bit fields in the word is set on input to the 6bit representation of the integer in the corresponding position of the line. Thus in the above case, the settings will be as follows:
D0 to D5;  000000  (0)  
D6 to D11;  000111  (7)  
D12 to D17;  101111  (47)  
D18 to D23;  000110  (6) etc. 
In the standard code, those 6bit fields represent respectively the characters SP, UC, O, LC, R, I, O, N; in effect the computer word represents the English word Orion.
In particular, if this computer word is sent to a 7track papertape punch, and the punched tape is then printed via a Flexowriter, the printing appears as O r i o n , the first letter being preceded by one space.
In certain cases, notably when reading data from punched cards, a computer word is regarded as consisting of eight 6bit fields, but these fields are not characterrepresentations as described above. Nevertheless it is convenient and conventional to refer to such fields as characters.
Radixwords, associated with the 100 and 101instructions, (see Section 3.10) are also regarded as being formed of eight 6bit fields, each of which is sometimes termed a character. When it forms part of a radixword, each character is subdivided into two smaller fields. The second of these subfields, represented by the l.s. 4 bits of the six, is used as a number (0 to 15) in the arithmetical operations of the conversion process. The 2 m.s. bits which constitute the other sub—field are used to control checking (in the 100 instruction) or to determine the treatment of nonsignificant zeros (101instruction).
It is often necessary to store, and possibly operate on, a number or some other item of data which can be represented by comparatively few binary digits. Useful economies in storage requirements can be achieved by packing several items of this type into a single word: there are no restrictions on the length of the fields or on the number of fields within a word (subject, obviously, to the limit imposed by the 48bit word length).
If a field k bits long is used to hold a number, the value of that number (regarded as an integer) lies within one or other of the following ranges:
Thus a 7bit field can represent any unsigned integer in the range 0 ≤ n ≤ 127 or any signed integer in the range –64 ≤ n ≤ 63.
At the programmer's discretion, packed numbers can be interpreted as integers (as above), as mixed numbers or as fractions; in the two latter cases the precision is dictated by the number of bits allocated to the fractional part. It is expected that packed numbers will normally be regarded as integers.
As stated in section 2.0.3 above, the symbolic input routine recognises lines on the program sheet such as 0, 7, 47, 6, 50, 41, 47, 46 setting each of the successive fields to the 6bit representation of the written integers. In fact, each character can be written in other forms. For example, to set a 6bit field to the binary equivalent of 47, any of the following written forms may be used:
The Symbolic Input Routine also accepts forms analogous to the above, to permit setting
four 12bit fields, typically 127, 4095, 7, 100+373
Note that, in format (b) of these, either or both of the packed quantities may be a working store address, a drum address, or the name (geographical or programmer's) of a peripheral device. If the word is to be divided into fields of different lengths, the PACKED NUMBERS Directive (q.v.) of Symbolic Input may be used.
Naturally, the data represented by a given field can be nonnumerical; the actual significance is assigned by the programmer. The use of one bit to record the sex of a person is an example of nonnumerical packed data.
When a word is used as a logical quantity, interest attaches principally to the actual configuration of 0bits and 1bits within the word. It is usually irrelevant to consider the numerical value of the word, or the characters represented by the 6bit fields. (Cases do arise when it is convenient to refer to and treat a number or a set of characters as though it were a logical quantity, e.g. when using instruction 123, or when using instruction 56 or 57 to copy two numbers by a single instruction.)
In particular, the m.s. bit of a logical quantity is not regarded as a sign bit, and does not receive the special treatment normally accorded to the sign bit of a numerical quantity (e.g. in the shift instructions).
One of the most common uses of a logical quantity is as a 'mask' as an operand in one of the logical instructions.
The most direct way to set, on input, the content of a word as a logical quantity is to use the MASK directive (q.v,) of Symbolic Input. Using this directive a mask consisting of ten 1bits followed by twelve 0bits followed by twentysix 1 bits could be set on input by the following lines on the program sheet.
MASK 110, 012, 126
NORMAL Such a word may be labelled if desired.
Other means by which a logical quantity may be set on input are by writing it as:
i) a pseudoinstruction,
ii) a number,
iii) a set of characters.
The contents of two consecutive registers may be regarded as combined to form a doublelength logical quantity. The m.s. bits of the two words are not regarded as sign bits; in particular, the m.s. bit of the l.s. word is not necessarily zero, i.e. there is no "standard form" as there is with doublelength numerical quantities. The instructions 56, 57 and 123 are designed specifically for operations with these doublelength logical quantities