2. FEATURES OF THE ICL 1900/2900 SYSTEMS

The architecture of the ICL series 1900/2900 computers differs in essential characteristics from the IBM/Siemens industry standard.

2.1 Data- and Address-Structure

The data hierarchy of ICL 1900/2900 computers is based on octal digits of 3 bits. 2 octal digits constitute 1 character (6 bits) and 4 characters one word (24 bits). Printable characters of the ICL 64 character set are of 6 bit size. (Neither ASSEMBF nor the IBM/Siemens hardware can handle octal numbers directly). 

The basic directly addressable unit of data is one word, but a few machine instructions can interpret an additional 2-bit pointer to allow for addressing at character level. Machine instructions which manipulate data in main memory (non-branch instructions) are only capable of directly addressing 4096 data words in the so-called LOWER data area. In order to overcome this restriction, programs can address an UPPER data area by means of "modifiers" (index registers), which must be maintained by the user. An assembler-supported method of single or multiple base register assignment as with ASSEMBF is not available. 

In "compact mode" physical memory addresses (i.e. addresses after modification) are truncated to 15 bits. An "extended mode" (22-bit address mode) is provided in which modified addresses are truncated to 22 bits; however, ConPLAN does not currently support this mode . ICL branch instructions permit a program to branch directly to any word-location between 8 and 32767 (15-bit addresses). In "extended branch mode" 22-bit addresses are employed to extend the scope of destination addresses, Again, the extended mode is currently not supported as there has so far been no demand for it. It could be implemented easily, as ConPLAN uses 32-bit address constants for branches already.


2.2 Accumulators

Eight 24-bit accumulators (X0-X7) are available on 1900/2900  mainframes. Siemens provides sixteen 32-bit multi-purpose registers (R0...R15) plus four 8-byte floating point registers. ConPLAN takes care of the difference in register length by simulating the ICL accumulators in eight 3-byte memory locations starting at address 0 of the virtual user memory. ICL index registers X1, X2 and X3 are split into 2 parts: a count field (9 bits) and a modifier (15 bits), These two parts can be loaded individually through PLAN instructions unavailable on Siemens hardware. Certain other instructions use and alter the count field while at the same time using the modifier part as index address which is left unchanged. Again, a similar function is not available on Siemens mainframes, requiring emulation in software.
A further ICL feature is the character index word, where the most significant 2 bits of the count field are divided off and used as "character modifier". This acts as a pointer with certain instructions to specify the character position within a word to be operated on.