In the R1 (mostly written in [or before] 1994, and archived by the Wayback Machine on a date indicated [by "20080224"] in the URL) Iliffe and his colleagues introduced a protection scheme for all data objects. The manipulation of references to memory (termed codewords) was restricted to privileged code, preventing some types of program error. Codewords referenced vectors of data items, sequences of instructions or other codewords . Storage was accessed by reference to a codeword and this was resolved to a conventional address or program counter giving direct access to store when necessary. The system provided functions to create, manage and update codewords, for example changing them to reflect storage management decisions. It also supported an algebraic programming language (called Genie) which was implemented using object-oriented design concepts in 1961. The Genie compiler and associated assembler were unusual in enabling the entire system to be treated as an object-management discipline. Genie was also amongst the first languages to include intrinsic operations on real and complex vectors and matrices.
