![]() The Chilton ICL 1906A in 1971, photograph courtesy Atlas Computer Laboratory, Chilton I worked on the ICL 1900 series machines for several years as both a systems programmer (most of my time) on George 3 support on user sites (maintenance and writing enhancements) and George 2+ development with ICL; as well commercial programming in COBOL and PLAN, with some FORTRAN thrown in for good measure on GINO-F support. The ICL 1900 was a word machine with 24-bit words, containing 4 * 6-bit characters. Instructions were whole words, and a word could be addressed in both 'word' or 'character mode depending on the type of data it held and IMHO a nice instruction set for commercial DP. Typical program sizes were fairly compact, at one site that I worked there was a 'standard' maximum of 20K, which was worked out for efficient multi-programming/swapping. You could do a lot on 20K!! Most 1900 machines were multi-programming under the control of the EXECutive or Operating System, smaller machines still had an EXECutive but were single or dual programming. There were no fixed "partitions" within which programs had to abide, but there was full hardware protection to prevent one program from errantly trespassing in another's space. Likewise all peripherals were available in a general pool and allocated to a program when requested and then released back to the pool when finished with. Every program started at address zero wherever it was located in physical memory, hardware 'datum' and 'limit' registers provided the translation/protection for user programs, which could be moved in memory as other programs altered their size or were deleted. The memory size (core store or later plated wire) was typically 32K, 48K for smaller machines, 64K, 128K, 192K or 256K for larger machines. The biggest that I heard of was 512K and I think that was a University machine. An optional Hardware Floating Point unit was available, but tended not to be fitted on commercial machines. The ICT (later ICL) 1900 series was begat of a Canadian machine called the FP6000 (FP = Ferranti Packard). The main difference was the incorporation of a "standard" physical interface (i.e. a standard kind of plug) for all peripherals, and the use of a single operation code to drive all peripherals rather than having separate instructions to read a card, or print a line or whatever. The "PERI" instruction, an EXTRACODE implemented by the EXECutive, instead pointed to a small group of control words in memory which supplied the details for whatever I/O operation. This instruction caused an interupt/exchange of control to the memory-resident monitor that contained the actual low-level driver code for each type of peripheral. (The FP6000 on the other hand had "hardwired" and distinct op codes for each kind of I/O operation and did not have the concept of a resident monitor through which I/O was mediated). We can be contacted via email at bill@icl1900.co.uk if anybody has any further information, wants to ask anything, or has any memories of 1900 systems. Brian W Spoor MBCS CITP |