ICL 1900 Series Computers

Peripheral Modes

On a 1900 series machine, all peripheral transfers were initiated by a PERI instruction referencing a control block, which was an 'extracode' handled by the EXECutive. This meant that programs could handle transfers on all types of peripherals in a similar manner, with specific device driver code in the EXECutive for the type/model concerned and programmers need not worry about differences between say a 7-track tape unit and 9-track tape unit.

This was taken even further with Direct Access (discs) devices with UDAS (Unified Direct Access Standard), in that all types of exchangable discs from TEDS through EDS4/8, EDS30/60 to EDS100/200 and fixed discs (*FD) could be accessed as a Direct Access (*DA) unit, utilising the same PERI control area/modes as an Exchangeable Disc (*ED). The program did not need to know which type of device the file was held on and could be run on different machines/disc hardware without being re-compiled.

Normal Application Programs, generally, used the SUSBY (Suspend While Busy) instruction after a PERI to initiate the peripheral action. However, a DRM (Direct Response Mode) additive was also available enabling the program to continue with other actions or suspend itself awaiting an interrupt (SUSIN). This was normally used by 'system' programs, communications programs and operating systems.

The basic PERI control block is 4 words in length, but this could vary according to the type of peripheral and action
Word 0 Type/Mode Set up as a counter modifier, B0-B8 Type & B9-B23 Mode.
The Type being in decimal and the Mode in Octal.
Word 1 Reply If B0 set (i.e. word is negative) the transfer is still in progress and the remainder of the word is undefined.
After the transfer has completed, the remaining bits give a status for the transfer, the actual bits set being dependant on the type/mode.
Word 2 Count The maximum number of Characters or Words to transfer, depending on the Peripheral Type.
Word 3 Address The address of the buffer area for the data transfer.
This was always on a word boundary, except for Printers in normal print mode where it pointed to character 3 of a Word, which held the PFCC and the actual data started in character 0 of the next word.
 
*TR - Paper Tape Reader
Word 0 Type/Mode 0/#0 - Normal Read starting in alpha shift
Additive Mode #2 - read N characters or to stop character
Additive Mode #4 - start in previous shift
Additive Mode #10 - graphic set modes
Additive Mode #20 - all characters mode
Word 1 Reply B0=1 Transfer in Progress
B3=1 Transfer Error
Word 2 Count 128 (Characters)
Word 3 Address Character Address
 
*TP - Paper Tape Punch
Word 0 Type/Mode 1/#0 - Normal Write starting in alpha shift
Additive Mode #4 - start in previous shift
Additive Mode #10 - graphic set modes
Additive Mode #20 - punch blanks (runout)
Word 1 Reply B0=1 Transfer in Progress
B3=1 Transfer Error
Word 2 Count 128 (Characters)
Word 3 Address Character Address
 
*LP - Line Printer
Word 0 Type/Mode 2/#0 - Normal Mode
2/#2 - Automatic Write (available on 1933 & 2430 printers only)
2/#4 - Extended Mode (available only on 2430 train printer)
Word 1 Reply B0=1 Transfer in Progress
B1=1 Overflow
B2=1 Paper Low
B3=1 Transfer Error
Word 2 Count Mode 0 - For 1933 printers only, the count is the number of characters to be printed plus one for the PFCC. The maximum number of characters is limited by the number of print positions available on the printer. If the count is greater than the number of print positions, then the excess characters are ignored.
For all other printers, the count must be one more than the number of print positions available on the printer. If the count is greater than the number of print positions, then the excess characters are ignored.

Mode 2 - This mode is only available on the 1933 & 2430 printers. The value of the count is the number of printable and control characters to be sent to the printer. There is no maximum value except that implied by the program's limit address in the store.

Mode 4 - This mode is only available on the 2430 printer. The value of the count is the number of characters to be printed plus one for the PFCC. This mode allows shift characters to be included in the data to make use of the optional extended 96-character set available on the printer.
Word 3 Address Character Address
for mode #0 this must be character 3
for mode #2 this must be a word address
 
*CR - Card Reader
Word 0 Type/Mode 3/#0 - Normal Decode Mode
3/#2 - Column Image Mode
Word 1 Reply B0=1 Transfer in Progress
B3=1 Transfer Error
Word 2 Count Mode 0 - 80 (Characters)
Mode 2 - 160 (Characters)
Word 3 Address Word Address
 
*CP - Card Punch
Word 0 Type/Mode 4/#0
Word 1 Reply B0=1 Transfer in Progress
B3=1 Transfer Error
Word 2 Count 80 (Characters)
Word 3 Address Word Address
 
*MT - Magnetic Tape (Read/Write Modes)
Word 0 Type/Mode 5/#0 - Read
5/#1 - Write
5/#2 - Read Reverse
5/#3 - Backspace
5/#4 - Skip Forward Past Tape Mark
5/#5 - Write Tape Mark
5/#6 - Skip Back Past Tape Mark
5/#7 - Rewind
Word 1 Reply B0=1 Transfer in Progress
B1=1 Long Block (modes 0 & 2)
B2=1 Corrected Error (9-track modes 0 & 2)
B3=1 Transfer Error
B4=1 End of Tape (modes 1 & 5) or Tape Mark (modes 0 & 2)
B6 to B23 Address of next work to be read or written if transfer had not terminated (modes 0, 1 & 2)
Word 2 Count Maximum 32,768 (Words) Modes 0, 1 & 2 only
Word 3 Address Word Address
*MT - Magnetic Tape (Open/Close Modes)
Word 0 Type/Mode 5/#100 - Open Labelled Tape for Reading (no WPR check)
5/#200 - Open Labelled Tape for Reading (check WPR absent)
5/#300 - Open Labelled Tape for Reading and Writing
5/#400 - Open Output Tape and Label for Retention
5/#500 - Relabel Opened Tape
5/#600 - Open Work Tape
5/#1000 - Close Tape (Rewind: de-allocate deck but do not disengage
5/#1007 - Close Tape (Rewind: de-allocate and disengage deck
Word 1 Reply Open Modes:
B0=0 Tape successfully opened
B1 to B23 Tape Serial Number if Open successful
Close Modes:
B0 to B23 undefined
Words 2-4 Filename 12 Character Filename (alphanumeric)
Word 5 RSN Reel Sequence Number (binary)
Word 6 FGN File Generation Number (binary)
Word 7 RP Retention Period (binary days)
Word 8 DW Date Written (binary days from 01Jan1900)
 
*DA (*ED/*FD) - Direct Access Devices (Read/Write Modes)
Word 0 Type/Mode 6/#0 - Read n Words (Max. 1 Bucket)
6/#1 - Write n Words (Max. 1 Bucket)
6/#2 - Read n Words (Max. 1 Seek Area)
6/#3 - Write n Words (Max. 1 Seek Area)
6/#400 - (Additive Mode) Suppress Check Read
Word 1 Reply B0=1 Transfer in Progress
B1=1 End of Cylinder (or Card)
B2=1 Auxilliary Control Area Full
B3=1 Transfer Error
B4=1 Bucket not in Auxilliary Control Area
B5=1 Bucket Number Out of Range or Zero
Word 2 Count Words, Maximium 1 Bucket or 1 Seek Area
Word 3 Address Word Address
Word 4 Bucket Logical Bucket Number
*DA (*ED/*FD) - Direct Access Devices (Open/Close Modes)
Word 0 Type/Mode 6/#100 - Open as Overlay File (read/write)
6/#200 - Open as Input File
6/#300 - Open as Output File
6/#400 - Open at End of File
6/#500 - Expand or Contract File
6/#600 - Open Work File
6/#700 - Rename a File
6/#1000 - Close File
Word 1 Reply B0=0 File Successfully Opened
B0=1 File Not Successfully Opened
Words 2-4 Filename 12 Character Filename (alphanumeric)
Word 5   Set to Zero
Word 6 FGN File Generation Number (binary)
Word 7 RP Retention Period (binary days)
Word 8 NFGN New File Generation Number (binary)
 
*MC - Magnetic Card File
See *DA for modes. *MC Type=7
 
*DS - Data Store (Read/Write Modes)
Word 0 Type/Mode 8/#0 - Read
8/#1 - Write
8/#5 - Write
Word 1 Reply B0=1 Transfer in Progress
Word 2 Count No. 64 Word Sectors
Word 3 Address Word Address
Word 4 Drum Sector Starting sector for read, relative to the first sector of file for start of transfer - starts at zero
*DS - Data Store (Open/Close Modes)
Word 0 Type/Mode 8/#100 - Open for Reading and Writing
8/#200 - Open for Reading
8/#400 - Open (create) Permanent Output File
8/#600 - Open (create) Work File
8/#1000 - Close File
8/#1400 - Close File and Abandon It
Word 1 Reply B0=0 File Successfully Opened
B0=1 File Not Successfully Opened
Words 2-5 Filename 16 Character Filename (alphanumeric)
Word 6 FSN File Serial Number (binary)
Word 7 RP Retention Period (binary days)
Word 8 DW Date Last Written (reply from open)
Word 9 File Size No. sectors/128 in file
 
*DR - Magnetic Drum (Read/Write Modes)
Word 0 Type/Mode 9/#0 - Read
9/#1 - Write
Word 1 Reply B0=1 Transfer in Progress
B3=1 Transfer Error
Word 2 Count Words, Maximium Drum File Size or Program Limit
Word 3 Address Word Address
Word 4 Drum Address Word Address, relative to the first word of file for start of transfer
*DR - Magnetic Drum (Open/Close Modes)
Word 0 Type/Mode 9/#100 - Open for Reading and Writing
9/#200 - Open for Reading
9/#400 - Open (create) Permanent Output File
9/#600 - Open (create) Work File
9/#1000 - Close File
9/#1400 - Close File and Abandon It
Word 1 Reply B0=0 File Successfully Opened
B0=1 File Not Successfully Opened
Words 2-4 Filename 12 Character Filename (alphanumeric)
Word 5 File Size Multiples of 1024 words (B14 - B23 ignored)
For modes #100/#200 Actual File Size after successful open
 
*FD - Fixed Disc
See *DA for modes. *FD Type=13
 
*UX (*IT) - Uniplexor
Word 0 Type/Mode 10/#0 - No significance (provided for additive mode #2000)
10/#1 - Write
10/#2 - Read
10/#3 - Write and Read
10/#4 - Cancel
10/#1000 - Close and Release channel
10/#2000 - Unset Flag (additive mode)
10/#4001 - Assign Flag Area
Word 1 Address of reply word (1st transfer) Modes 1, 2 & 3
In mode #4000 (*UX), start address of Flag Area
In mode #4001 (*IT), start address of Flag Area
Word 2 Count (1st transfer) Maximum 128 (Characters) Modes 1, 2 & 3 only
Word 3 Address (1st transfer) Character Address
Word 4 Address of reply word (2nd transfer) Mode 3 only
Word 5 Count (2nd transfer) Maximum 128 (Characters) Modes 1, 2 & 3 only
Word 6 Address (2nd transfer) Character Address
Reply Word   B0=1 Transfer in Progress
B2=1 Input terminated without EOM
B3=1 Transfer terminated with error
B4=1 Instruction cancelled
B5=1 TTY operable when instruction terminated
B17 to B23 Unexpired character count
 
*MX - Multiplexor
Word 0 Type/Mode 11/#0 - No significance (provided for additive mode #2000)
11/#1 - Write
11/#2 - Read
11/#3 - Write and Read
11/#4 - Cancel
11/#11 - Write in presence of Read Request
11/#13 - Write in presence of Read Request followed by Read
11/#21 - Continuation Write
11/#22 - Continuation Read
11/#26 - Double Read
11/#1000 - Close and Release channel
11/#2000 - Unset Flag (additive mode)
11/#4000 - Assign Flag Area
Word 1 Address of reply word (1st transfer) Modes 1, 2, 3, #11, #13, #21, #22 & #26
In mode #4000, start address of Flag Area (4 words)
Word 2 Count (1st transfer) Maximum 128 (Characters) Modes 1, 2, 3, #11, #13, #21, #22 & #26 only
Word 3 Address (1st transfer) Character Address
Word 4 Address of reply word (2nd transfer) Modes 3, #13 & #26 only
Word 5 Count (2nd transfer) Maximum 128 (Characters) Modes 3, #13 & #26 only
Word 6 Address (2nd transfer) Character Address
Reply Word   B0=1 Transfer in Progress
B2=1 Input terminated without EOM
B3=1 Transfer terminated with error
B4=1 Instruction cancelled
B5=1 TTY operable when instruction terminated
B17 to B23 Unexpired character count
 
*CT - Cassette Tape (Read/Write Modes)
Word 0 Type/Mode 12/#0 - Read
12/#1 - Write
12/#2 - Erase a section of Tape
12/#7 - Align
Word 1 Reply B0=1 Transfer in Progress
B1=1 Long Block (modes 0 & 2)
B3=1 Transfer Error
B4=1 End of Tape (modes 0, 1 & 2)
B6 to B23 Address of next work to be read or written if transfer had not terminated (modes 0 & 1)
Word 2 Count Maximum 32,768 (Words) Modes 0, 1 & 2 only
Word 3 Address Word Address
*CT - Cassette Tape (Open/Close Modes)
Word 0 Type/Mode 12/#100 - Open Labelled Tape for Reading (no WPR check)
12/#200 - Open Labelled Tape for Reading (check WPR absent)
12/#300 - Open Labelled Tape for Reading and Writing
12/#400 - Open Output Tape and Label for Retention
12/#500 - Relabel Opened Tape
12/#600 - Open Work Tape
12/#1000 - Close Tape (Rewind: de-allocate deck but do not disengage
12/#1007 - Close Tape (Rewind: de-allocate and disengage deck
Word 1 Reply Open Modes:
B0=0 Tape successfully opened
B1 to B23 Tape Serial Number if Open successful
Close Modes:
B0 to B23 undefined
Words 2-4 Filename 12 Character Filename (alphanumeric)
Word 5 RSN Reel Sequence Number (binary)
Word 6 FGN File Generation Number (binary)
Word 7 RP Retention Period (binary days)
Word 8 DW Date Written (binary days from 01Jan1900)
 
*ID - Alphanumeric Visual Display Unit Controller
Word 0 Type/Mode 14/#0 - No significance (provided for additive mode #2000)
14/#1 - Initial Write
14/#2 - Read
14/#21 - Continuation Write
14/#22 - Continuation Read
14/#1000 - Close and Release channel
14/#2000 - Unset Flag (additive mode)
14/#4000 - Assign Flag Area
Word 1 Address of reply word Modes 1, 2, #21 & #22
In mode #4000, start address of Flag Area
Word 2 Count Maximum 2088 (Characters, multiple of 4)
Modes 1, 2, #21 & #22 only
Word 3 Address Character Address
Reply Word (Write)   B0=1 Transfer in Progress
B1=1 Time out
B2=1 Rejected Input Message waiting
B3=1 Error (frame overflow/wrong mode)
B5=1 AVDU operable
B6 to B23 Not used
Reply Word (Read)   B0=1 Transfer in Progress
B2=1 Message not complete
B4=1 Not implemented (no message available)
B9 to B23 Unexpired character count
 
*GP - Digital Incremental Plotter
Word 0 Type/Mode 20/#0
Word 1 Reply B0=1 Transfer in Progress
B3=1 Transfer Error
Word 2 Count Maximium 32,767 Characters
Word 3 Address Word Address
 
*GD - General Purpose Visual Display Unit
Word 0 Type/Mode 21/#0 - No significance (provided for additive mode #2000)
21/#1 - Write
21/#2 - Read
21/#3 - Write and Read
21/#4 - Cancel
21/#1000 - Close and Release device
21/#2000 - Unset Flag (additive mode)
21/#4000 - Assign Flag Area
Word 1 Address of reply word (1st transfer) Modes 1, 2 & 3
In mode #4000, address of Flag Area
Word 2 Count (1st transfer) Maximum 32,767 (Characters) Modes 1, 2 & 3 only
Word 3 Address (1st transfer) Character Address
Word 4 Address of reply word (2nd transfer) Mode 3 only
Word 5 Count (2nd transfer) Maximum 32,768 (Characters) Modes 1, 2 & 3 only
Word 6 Address (2nd transfer) Character Address
Reply Word   B0=1 Transfer in Progress
B3=1 Camera Fail?
B4=1 Not Implemented
B5=1 Operable when instruction terminated
B17 to B23 Unexpired character count
 
*UD - Universal Document Reader
Word 0 Type/Mode 23/#2 - Read Document (OMR mode)
23/#4 - Read Document (OCR mode)
23/#6 - Read Document (OMR & OCR modes)
23/#10 - Stacker Select
23/#20 - Specify OCR Format Area
Word 1 Reply B0=1 Transfer in Progress
B3=1 Transfer Error
B4=1 Warning
B5=1 Operable
Word 2 Count Mode #2 - characters (multiple of 8)
Mode #4 - characters
Mode #6 - OCR characters
Mode #10 - not used
Mode #20 - Number of Format Specifying Characters
Word 3 Address Word Address of Buffer
Mode #10 - Stacker Address (0-11)
Word 4 Reply Mode #6 Only - OMR reply
Word 5 Count Mode #6 Only - OMR characters (multiple of 8)
Word 6 Address Mode #6 Only - Word Address of OMR Buffer
 
*CC - 7900 Communications Controller (IPB)
Word 0 Type/Mode 24/#1 - Write
24/#2 - Read
24/#5 - Write Cancel Read
24/#11 - End Write
24/#12 - End Read
24/#15 - End Write Cancel Read
24/#1000 - Close and Release channel
Word 1 Reply Word B0=1 Action not completed
B4=1 Rejected, IPB operable
B5=1 Rejected, IPB inoperable
Else Accepted, in progress

B0=0 Accepted and action complete
B1=1 Timed out
B2=1 Input terminated on limit
B3=1 Error in transfer
B4=1 Order cancelled
B5=1 IPB operable
B15 to B23 Unexpired word count
Word 2 Count Maximum 511 (Words)
Word 3 Address Word Address
 
*HD - High Speed Drum
See *DR for modes. *HD Type=25
 
*PB - Inter-Program Communications Link (Read/Write Modes)
Word 0 Type/Mode 28/#0 - Read
28/#1 - Write
28/#21 - Double-length Write
28/#4 - Cancel Transfer
Word 1 Reply B0=1 Transfer in Progress
B1=1 Time Out
B2=1 Long Block
B3=1 Transfer Error
B4=1 Link Inoperable
B5=1 Link Operable
B6=1 Not Established
B15-23=1 Remainder Count
Word 2 Count Words, Maximium 511
Word 3 Address Word Address
Word 4 Count Words, Maximium 511 (Mode #21 only)
Word 5 Address Word Address (Mode #21 only)
*PB - Inter-Program Communications Link (Open/Close Modes)
Word 0 Type/Mode 28/#200 - Open Link for Reading
28/#400 - Open Link for Writing
28/#1000 - Close Link
Word 1 Reply Direct Response only - Accepted/Rejected
Words 2-4 Filename 12 Character Filename (alphanumeric)
 
*FR - File Reader (George 3 Virtual Device)
Word 0 Type/Mode 50/#2 - Read Record
50/#12 - Read File Details
Word 1 Reply B1=1 Incomplete Record Read
B6 - B23 Address of next word to be read (if equal to buffer address EOF reached)
Word 2 Count 1 - 511 Words
Word 3 Address Word Address
 
*FW - File Writer (George 3 Virtual Device)
Word 0 Type/Mode 51/#1 - Write Record
Word 1 Reply B0=1 Command Failed
Word 2 Count 1 - 511 Words
Word 3 Address Word Address
 
*FH - File Handler (George 3 Virtual Device)
Word 0 Type/Mode 52/#1 - Write Record
52/#2 - Read Record
52/#3 - Re-write last record read
52/#4 - Position file and insert record
52/#5 - Delete last record read
52/#6 - Delete all records not yet read
52/#7 - Reposition read pointer
52/#11 - Write Directory Header Information
52/#12 - Read Directory Header Information
52/#21 - Write Block
52/#22 - Read Block
52/#30 - Indexed Read of Directory Entry
52/#32 - Read Next Directory Entry
52/#33 - Rewrite Last Directory Entry Read
52/#34 - Position and Insert New Directory Entry
52/#37 - Backspace Over One Directory Entry
52/#73 - Normal Write to System Journal
52/#74 - Unanticipated Write to System Journal
52/#76 - Read Record of Dictionary Updating
52/#77 - Update Dictionary Entries
Word 1 Reply B0=1 Command Failed
B1=1 Incomplete Record Read
B9 - B23 Address of next word to be read (if equal to buffer address EOF reached)
Word 2 Count Words
Word 3 Address Word Address
 
*CI - Command Issuer (George 3 Virtual Device)
Word 0 Type/Mode 60/#1 - Write a Command (unanticipated)
60/#2 - Read a Program Parameter
60/#3 - Effect a break-in
60/#11 - Write a Command (anticipated)
60/#12 - Read Output from George
60/#13 - Break-in or Start Up
Word 1 Reply B0=1 Channel Busy
B4=1 Command Error
B15 - B23 Unexpired character count
Word 2 Count 1 - 511 Characters
Word 3 Address Word Address

PFCC - Print Feed Control Character

Most ICL 1900 Series printers had paper tape 'form loops' (electronic on some of the later printers), which defined the size of the paper and where TOP and BOP were within the page. The loop was made to the length of the paper, i.e. for standard 11" paper (66 lines at 6lpi) the loop had 66 sprocket holes.

The TOP was marked with a hole in position 1 (channel-1) and the BOP was marked with a hole in position 8. Other positions (2-7) could be marked for specific places on pre-printed stationary. You could also have the same line marked as more than one channel. For example, if you had 3 x 22 line forms on a page, you would mark TOP as both channel-1 and channel-2 and the other 2 positions as channel-2 only. The program could use channel-2 for TOF and then TOP at the end to clear the printer.

The PFCC characters are:
#40 - @ Print after moving 0 lines   #00 - 0 Move 0 lines
#41 - A Print after moving 1 line   #01 - 1 Move 1 line
#42 - B Print after moving 2 lines   #02 - 2 Move 2 lines
#51 - I Print after Channel-1 i.e. TOP   #11 - 9 Skip to Channel-1 i.e. TOP
#52 - J Print after Channel-2   #12 - : Skip to Channel-2
#53 - K Print after Channel-3   #13 - ; Skip to Channel-3
#54 - L Print after Channel-4   #14 - < Skip to Channel-4
#55 - M Print after Channel-5   #15 - = Skip to Channel-5
#56 - N Print after Channel-6   #16 - > Skip to Channel-6
#57 - O Print after Channel-7   #17 - ? Skip to Channel-7

AUTOMATIC WRITE

This was a method whereby a program could set up a complete page (or multiple lines) and send it to the printer in a single transfer, using control codes embedded within the data. It was only available on the 1933 Line Printers and I never came across any instances where it was actually being used.

Character Octal Meaning
Escape (←) #77 Next character is a control character, except that, if the following character is another #77, treat the second as a data character and print it.
Printout (↑) #76 Print out whatever is in the buffer (end of line) and load the next data character into position 1 of the buffer unless otherwise instructed.
Vertical
paper
movement
00
01
02
11 to 17
No movement
Feed one line
Feed two lines
Throw to channel 1 to 7
Horizontal
tabulation
54/55
40 to 51
60 to 71
Hundreds (0 or 1)
Tens (0 to 9)
Units (0 to 9)
Buffer position of next character to be printed, where 0 is the first print position and 95/119/159 the last.