Those who have knowledge of low-level programming in the ICT/ICL 1900 series machines will have used the PERI instruction. This instruction is not actually a hardware instruction but a form of subroutine call, but with the target routine residing within executive, also a state switch occurs on entry to exec where the machine's privileged instructions become available.
When using the ICL executives one instruction, opcode 157, known as PERI is used to call an executive routine which examines the users parameters to the PERI instruction (typically the address and length of the associated buffer) for validity, checks the device is ready etc, and initiates the transfer. Control is passed back to the program and it may either use another instruction (150 , known as SUSBY to tell executive to suspend the program until the previously initiated I/O is completed. - The program may elect to perform other useful work whilst waiting for the transfer to finish.
On the FP6000 as originally created in Canada, with its original executive program, a different set of I/O instructions were employed.
First, in general a program may have a number of peripherals of different types, e.g. a compiler might have a paper tape reader, a line printer and a card punch. It was also possible to have multiple peripherals of one type, e.g. line printers. Peripheral types were given unique ID numbers:
| Type | Description | Number |
| TR | Tape Reader (paper) | 0 |
| TP | Tape Punch (paper) | 1 |
| LP | Line Printer | 2 |
| CR | Card Reader | 3 |
| CP | Card Punch | 4 |
| MT | Magnetic Tape | 5 |
| ?? | Operators' Console Typewriter | 7 |
The above numbers were assigned by Ferranti Packard for the FP6000 and except for the Operators' Console, they are still the same on 1900 except ICT & ICL added new ones in the range 6 to 63.
Under the ICT and ICL executives, the programmer used the PERI instruction, which addressed a (typically) 4-word 'control area' which described the location of the buffer, its length as well as some optional modes etc, where applicable. Also the accumulator, or X field of the instruction defined a device number, so if you wanted to write to card punch 3 you would code:
PERI 3 CPAREA
That would cause a card to be punched on the card punch allocated to the program's channel 3.
Now, for the FP6000 Executive's Modus Operandi.
The 157 instruction was not employed. The FP6000 and the 1900's that followed had a 7-bit field in the instruction word, allowing a maximum of 128 unique instruction codes. It was standard for these machines to state instructions as octal values, the 157 (PERI) instruction was just an example of that. - Remember that all instruction code whose octal values were >= 140(octal) were never harware instruction but what were called 'extracodes' and effectively were mode-changing subroutine calls that called a routine directly or indirectly in executive and with the machine in executive mode.
The FP6000 original executive used the same Type codes as above (well they did invent them). Hoever instead of the four-word control block holding the type code, length and address, the last eight order code values octal 170 through 177 were employed to make the call to exec. Easiest to give some examples:
'172 0 LPAREA [ START A TRANSFER ON LP (170+2) using channel 0,
[with the length and location of the buffer in a word in lower storage called LPAREA/
'173 1 CR2IN [ START A TRANSFER ON CR1 (170+3), using channel 1.
That is, each peripheral type used a different instruction. The use of the X field of the instruction to denote which unit of the type wanted was to be used. This limited FP6000 FPC systems to having a maximum of eigth peripheral types (including the mandatory console). - THis is the reason for the introduction of the PERI order and its control area.
In all cases, the action of executive are similar
At this point executive will return control to the requesting program, using another executive privileged instruction.
The program will need to know if the transfer has complete and whether or not it was successful. This is done on ICL executives using the 150 order, which will suspend the program and wait for the transfer to complete. A status for the transfer will be placed into the control area for the program to examine.
For the FP6000 executive, a different extracode is used to request that status, and the program can decide to wait again or to take remedial action.
Further information may be found in the FP6000 Programming manual in chapter 4, page 7.