Section 2.6

Pseudo-Registers

2.6.0

The pseudo-registers are a number of auxiliary registers containing useful constants or the state of switches inside or outside the machine.  They can be read from but it is not possible to write to them.  They are referred to by the instructions 20-27, 66, 67 and 112 (see sections 3.2, 3.6 and 3.11) - these instructions take the same time as the corresponding instructions (00-07, 60, 61 and 110) for ordinary registers.  Pseudo-registers are available to all programs impartially - they are not subject to lockout or reservation checking.  The Yth pseudo-register is referred to as PY, and its contents as pY.

2.6.1   Contents of Pseudo-registers

The contents of even-numbered pseudo-registers from P0 to P18 are given below; for odd number registers p(2n+1) = ¬p(2n), i.e. the contents of each odd numbered pseudo-register is the inverse of the contents of the preceding even numbered register.

  p0 = 0

  p2 = Local civil time - see section 2.6.3 for details of the code.

  p4 = Zero if overflow clear, all ones if overflow set.
        Any instruction referring to p4 or p5 clears overflow.

  p6 is as p4 except it is not cleared when used.

  p8 = upper half word mask - i.e. 24 ones followed by 24 zeros.

p10 = -1.0 i.e. one followed by 47 zeros.

p12 = ½, i.e. a zero, a one followed by 46 zeros.

p14 = Mask for X address, i.e. 9 zeros, 15 ones, 24 zeros.

p16 = Mask for Z address, i.e. 26 zeros, 6 ones, 16 zeros.

p18 = Handswitches.  The handswitches are a set of 48 keys which are provided for the use of the engineers; their use by programmers is not recommended except in very special circumstances - e.g. Pegasus simulator.  It is the operator’s responsibility to ensure that only one program using the handswitches is in the machine at once.

2.6.2   Unallocated Pseudo-Registers

At present pseudo-registers 20-31 inclusive contain zero for even numbers and all ones for odd numbers. Pseudo-register numbers above 31 are taken modulo 32, i.e. only the least significant five bits are decoded. Programmers are strongly recommended not to use either of these facts as they may be changed if it is decided to add further pseudo-registers to the machine.

2.6.3   Local Civil Time

The digital clock in Orion is a 24-hour clock in hours, minutes and seconds. It is stored in a one out of n code, i.e. in each field which has n possible values one and only one of n bits is a 1. In each case the m.s. bit of the field represents 0, the next 1, the next 2 and so on. The fields are as follows:

D0 to D2 tens of hours
D3 to D12 hours
D13 to D18 tens of minutes
D19 to D28 minutes
D29 to D34 tens of seconds
D35 to D44 seconds
D45 to D47 not used (always zero)

e.g. the time 17.08.23 is represented by 1-bits in digits:

1, 10, 13, 27, 31, 38

and 0-bits elsewhere.

 

Third Character   Fourth Character
(Twelves of Hours)     (Hours)  
Value Binary Decimal   Value Binary Decimal
  Code Code     Code Code
0 000000 0   0 000000 0
1 000001 1   1 000001 1
        2 000011 3
        3 000010 2
        4 000110 6
        5 000111 7
        6 001111 15
        7 001110 14
        8 001010 10
        9 001011 11
        10 001001 9
        11 001000 8
        0 001000 8
        1 001001 9
        2 001011 11
        3 001010 10
        4 001110 14
        5 001111 15
        6 000111 7
        7 000110 6
        8 000010 2
        9 000011 3
        10 000001 1
        11 000000 0
             
             
Fifth Character   Sixth Character
(Tens of Minutes)   (Minutes)
Seventh Character   Eighth Character
(Tens of Seconds)   (Seconds)
Value Binary Decimal   Value Binary Decimal
  Code Code     Code Code
0 000000 0   0 000000 0
1 000001 1   1 000001 1
2 000011 3   2 000011 3
3 000111 7   3 000111 7
4 000101 5   4 000101 5
5 000100 4   5 001101 13
0 000100 4   6 001111 15
1 000101 5   7 001011 11
2 000111 7   8 001001 9
3 000011 3   9 001000 8
4 000001 1   0 001000 8
5 000000 0   1 001001 9
        2 001011 11
        3 001111 15
        4 001101 13
        5 000101 5
        6 000111 7
        7 000011 3
        8 000001 1
        9 000000 0