GEORGE (operating system)


GEORGE was the name given to a series of operating systems released by International Computers and Tabulators in the 1960s, for the ICT 1900 series of computers. These included GEORGE 1, GEORGE 2, GEORGE 3, and GEORGE 4.
Initially the 1900 series machines, like the Ferranti-Packard 6000 on which they were based, ran a simple operating system known as executive which allowed the system operator to load and run programs from a Teletype Model 33 ASR based system console.
In December 1964 ICT set up an Operating Systems Branch to develop a new operating system for the 1906/7. The branch was initially staffed with people being released by the end of work on the OMP operating system for the Ferranti Orion. The initial design of the new system, named George after George E. Felton head of the Basic Programming Division, was based on ideas from the Orion and the spooling system of the Atlas computer.
.
In July 1965 a team from ICT was present at a seminar at NPL describing the CTSS operating system developed for MIT's Project MAC. They decided that the ICT would need to provide multi-access facilities, known to ICT as MOP, "Multiple Online Processing". In November 1965 H. P. Goodman, head of the Operating Systems Branch attended the Fall Joint Computer Conference in Las Vegas where plans for Multics were initially described. Some of the Multics features discussed influenced future development of George, notably the tree structured filestore.
Towards the end of 1965 ICT marketing requested that a simpler operating system be made available quickly, especially for the smaller members of the range. It was decided that two smaller systems, known as George 1 and George 2 be released rapidly, and the larger operating system was renamed George 3.

GEORGE 1 & 2

George 1 was a simple batch processing system, Job descriptions were read from cards or paper tape which controlled the loading and running of programs, either loaded from cards or paper tape or magnetic tape. The job control language allowed definition of the peripherals and files to be used and handling of exception conditions. The job description would be checked for errors before the job was run. George used the trusted program facilities provided by executive to run the user programs.
George 2 added the concept of off line peripheral handling. Several different modules, running in parallel, allowed overlapping of input, processing and output operations:
If the installation was large enough multiple copies of the central module could be run, allowing multiple jobs to be processed in parallel.
The George 2 job control language allowed use of stored macros with conditional facilities.
George 2 provided no file system, the system and user programs relied on the facilities provided by executive. Files on disk were accessed by unique 12 character names and no security other than a "do not erase" bit was provided.
MINIMOP could be run simultaneously with GEORGE 2 on the same machine, to provide on-line time-sharing facilities.

Example George 2 batch job

Here is a, somewhat artificial, example batch for George 2:
JOB PLAN4JOB,30174,BRIAN
IN ED
LOAD #XPLT
IN CR0
ENTER 1
AT HALTED OK,GO TO 1A
DISPLAY 'COMPILATION ERRORS'
GO TO 5END
1A IN ED
LOAD #XPCK
IN CR0/JD
*IN ED
*OUT ED
*LIST
???*
ENTER 1
AT DELETED HH,GO TO 2A
DISPLAY 'CONSOLIDATION ERRORS'
GO TO 5END
2A IN ED
LOAD #HWLD
ENTER 0
5END END
****
DOC SOURCE
PROG
STEER
OUTE
WSF
PLAN
#PRO HWLD40/TEST
#LOW
MESS 12HHELLO WORLD
#PRO
#ENT 0
DISTY '11/MESS'
DEL 2HOK
#END
ENDPROG
****
END BATCH
In a real application the job would probably use a stored macro and be much simpler, this example has been written out longhand in an effort to show some of the features of the JCL.

GEORGE 3 & 4

GEORGE 3 was the main version of the operating system series for the larger machines of the 1900 series. Initially it was released for the 1906/7; eventually it was made available for models down to the 1902T. In contrast to George 1 & 2 which ran as user-mode programs under executive, George 3 was a full operating system, leaving only low-level peripheral and interrupt handling to a cut-down version of executive.
George 3 was implemented as a small memory-resident part and a collection of chapters which were loaded into and removed from memory as needed. Chapters were strictly location-independent, allowing best use of memory. Internally George used cooperative multitasking; context switches could take place at any chapter change, or at other specified places in the code. User-level code was run using preemptive multitasking; context switches were forced on I/O operations or clock ticks.
George was written in a special assembler, GIN, which had richer conditional compilation and macro facilities than the standard PLAN assembler. Macros were heavily used by the code to reduce the effort of programming such a large system in assembly language. In later versions the macro features of GIN were used to add structured programming features to the code. Writing the system was estimated to have taken 75 programmer-years of effort.

Job control

George 3 was a mixed batch and online system. Jobs could be run from cards or tape in the same manner as George 2, or interactively from MOP terminals, either simple Teletype Model 33 ASR terminals or block mode VDU terminals.
The job control language was the same on terminals or in batch jobs and included conditional operations and macro operations. In contrast to Unix systems the job control language was part of the operating system rather than being a user level shell process.
A job could only have one program loaded in to memory at a time, but one job could start other jobs to run concurrently, if system resources and site policy would permit. The system would swap user programs out of memory while they were waiting for input or output if other activities required memory to run.

File store

George 3 provided a tree structured file store, inspired in part by Multics.
Every user of the system had a home directory with as many sub directories as needed under it. A users home directory could be accessed directly, for example the directory for user JOHN could be referred to as :JOHN, or by a full path, for example if JOHN was in the computer science department his home directory might be :MANAGER.USERS.COMPSCI.JOHN.
Access control lists were used for security, a user could permit or deny any user or group of users access to his files or directories.
File data storage was two-level: files could be either currently on disk, or, if the system was low on disk space they could be automatically relegated to magnetic tape. If an attempt was made to access a currently off line file the job would be suspended and the operators requested to load the appropriate tape. When the tape was made available the file would be brought back to disk and the job resumed.

George 4

Starting with the 1904A, a paging unit was available for larger 1900 processors and George 4 was written to take advantage of it. George 4 remained compatible with George 3. It was common to alternate George 3 and 4 on the same machine and filestore, running George 3 during the day for small, interactive workloads and George 4 at night for large, memory intensive, jobs.
George 4 introduced the concept of a sparse program, a program that had an addressing space larger than its allocated memory and read-only data and code regions. New versions of the consolidator and compilers were provided to use these facilities.
The source code of George 3 and 4 were the same; conditional compilation facilities of the GIN assembler were used to select which version of the system was being compiled.
As the 1900 paging feature was not emulated by the 2900 series machines used by later George installations, George 4 fell out of use before George 3.

Examples

Here are some simple examples of George use

Example batch job

The job is modelled on the George 2 job above, and like that job is somewhat artificial as in real use most of the work would be done by a pre-stored macro command.
The job would be read in from a card or paper tape reader. With minor changes it could be stored in a file and run from an interactive terminal.
JB PLAN4JOB,:BRIAN,T####
WE COMERR,GO 5CE
MZ 20K
CE !
IN !,T////
PROG
STEER
OUTE
WSF
PLAN
#PRO HWLD40/TEST
#LOW
MESS 12HHELLO WORLD
#PRO
#ENT 0
DISTY '11/MESS'
DEL 2HOK
#END
ENDPROG
////
LO :LIB.PROGRAM XPLT
RM
IF NOT HAL,GO 1F
AS *CR0,!
ER !
CE !
AS *LP0,!
MN ON, OPEN
EN 1
IF NOT MONITOR, GO 1F
CE !
AS *DA2,!
RM
IF HAL,GO 1A
1F DP 0,COMPILATION ERRORS
GO 5EX
1A DL
CE !
IN !
*IN ED
*OUT ED
*LIST
****
LO :LIB.PROGRAM XPCK
RM
IF NOT HAL,GO 2F
AS *CR0,!
ER !
AS *LP0,!1
LF !1,*LP,PA
ER !1
AS *DA1,!
ER !
CE !
AS *DA13,!
ER !
CE PROGRAM HWLD
AS *DA14,PROGRAM HWLD
EN 1
IF DEL,GO 2A
2F DP 0,CONSOLIDATION ERRORS
GO 5EX
2A LO PROGRAM HWLD
EN 0
DP 0,JOB COMPLETED
GO 5EX
5CE DP 0,COMMAND ERROR IN JOB
5EX IF COR,DL
EJ ALL
####

Example MOP session

All user input is shown in lower case. All output from George is in upper case.
THIS IS GEORGE 3 MARK 8.67 ON 21MAR11
21.21.23← ln :john,mopjob
TYPE PASSWORD← password
STARTED :JOHN,MOPJOB,21MAR11, 21.21.35 TYPE:MOP
21.21.35← mk hellodir
21.28.10← dy hellodir
21.28.16← newcopyin
21.28.32 JOB IS NOW FULLY STARTED
21.28.32 0.03 CORE GIVEN 4736
WAITING FOR MT 123457
ERROR IN PARAMETER 2 IN OL IN NEWCOPYIN: MT CORRECTLY IDENTIFI
ED BUT NOT AVAILABLE
DISPLAY: ERROR IN NEWCOPYIN. MACRO ABANDONED
21.28.58 FREE *CR0, 0 TRANSFERS
21.28.58 0.05 DELETED,CLOCKED 0.00
0.05 :DELETED
END OF MACRO
21.28.58← newcopyin
21.32.21 0.06 CORE GIVEN 4736
WAITING FOR MT 123456
21.32.34 USED U31 AS *MT0, MT
hello,hello
****
21.32.52 FREE *CR0, 2 TRANSFERS
DISPLAY : 1 PARAMETER ACCEPTED
DISPLAY
0.08: MONITOR
DISPLAY : INPUT TAPE * 123456.
DISPLAY
0.08: MONITOR
21.32.52 FREE *FH0, 1 TRANSFERS
21.32.52 FREE U31,8 TRANSFERS
0.10 :DELETED : OK
21.32.52 0.10 DELETED,CLOCKED 0.00
END OF MACRO
21.32.52← lf hello
#PRO HWLD40/TEST
#LOW
MESS 12HHELLO WRLD
#PRO
#ENT 0
DISTY '11/MESS'
DEL 2HOK
#END
21.33.01← ed hello
EDITOR IS READY
0.0← tc/wrld/
2.0← r/wrld/world/
2.29← e
21.43.46← plancomp *cr hello,*idhelo
FILES ALREADY ONLINE: :LIB.SUBGROUPS-RS :LIB.PROGRAM XPCK
:LIB.PROGRAM XPLT
21.43.58 0.58 CORE GIVEN 18944
0.58 :HALTED : LD
DISPLAY : START JOB HELO,
OPEN *DA2 N CA 1641 M=#00100 FN=SEMICOMPILED
1.00: MONITOR
21.43.58 FREE *CR0, 8 TRANSFERS
DISPLAY : COMP OK 84 #HELO
21.43.58 FREE *DA2, 9 TRANSFERS
1.01 :DELETED : FI #XPCK
21.43.58 FREE *TR0, 7 TRANSFERS
21.43.58 FREE *LP0, 83 TRANSFERS
21.43.58 1.01 DELETED,CLOCKED 0.00
21.43.59 1.07 CORE GIVEN 11392
21.43.59 FREE *CR0, 5 TRANSFERS
21.43.59 FREE *DA14,20 TRANSFERS
21.43.59 FREE *DA1, 9 TRANSFERS
21.43.59 FREE *DA2, 2 TRANSFERS
21.43.59 FREE *DA13,7 TRANSFERS
1.07 :DELETED : HH
21.43.59 FREE *LP0, 32 TRANSFERS
21.43.59 FREE *DA15,0 TRANSFERS
21.43.59 1.07 DELETED,CLOCKED 0.00
DISPLAY: PLAN COMPILATION/CONSOLIDATION OKAY
END OF MACRO
21.43.59← lo program helo
21.44.06← en
21.44.07 1.09 CORE GIVEN 64
DISPLAY : HELLO WORLD
1.09 :DELETED : OK
21.44.07 1.09 DELETED,CLOCKED 0.00
21.44.07← lt
MAXIMUM ONLINE BS USED 252 KWORDS
21.44.12 1.09 FINISHED : 0 LISTFILES
BUDGET USED LEFT
TIME 70 -97797
MONEY 35 80327
21.44.12←

Documentation

GEOrge was well documented internally in a series of looseleaf folders, distributed as an initial version plus amendments. Eventually all the original pages were replaced, so any new copy of the manuals consisted of a box of empty looseleaf folders and a pile of amendments. The first amendment was a list of contributors, and the technical reason for the amendment was described as "to keep everyone happy".

Modified Versions

A modified version of George 3 was supplied to the University of Manchester Regional Computer Centre. This linked George 3 to a CDC Cyber machine, to which George supplied the offline I/O and Job queueing functions. Online support was supplied by both ICL and Cyber for both hardware and software. The Cyber support team worked in an office with the name "Cybermen" on the door.

End of life

Obsolescence

With the release of ICL's "new range", the 2900 series with its VME operating system George became obsolete. However, due to the legacy of investment in software for George, ICL released options to run 1900 series software, including George, on 2900 series machines, initially the Direct Machine Environment, later the Concurrent Machine Environment which allowed simultaneous running of 1900 and 2900 code on the same system.
New versions of George 3 continued to be released for the 2900. The last version was 8.67, released in 1983.
As of 2005 at least one site in Russia was still running George 3 under DME.
In November 2014 George 3 was run on a reconditioned ICL 2966 at the National Museum of Computing.

Emulation

and Delwyn Holroyd obtained copies of George 3 issue tapes when the last live site in the UK, at British Steel Corporation, was being decommissioned and wrote an emulator for the 1900 hardware and executive that allows running of George on Microsoft Windows and Linux as part of a project for the Computer Conservation Society. The emulator includes an emulation of Executive and a Java emulation of an ICL7903 Communications Processor making it possible to run MOP sessions by telnetting to port 2023.

George 3 Executive Emulator
by David Holdsworth & Delwyn Holroyd
Build: May 15 2014
Memory size: 256K
Exec command: DA GEORGE3A
Waiting for a console telnet connection on port 1900


ICL 7903 Communications Controller emulator
by David Holdsworth & Delwyn Holroyd
Build: Feb 23 2014
-? for usage info
Listening for TTY connections on port 2023 - 4 available
Listening for VDU connections on port 7181 - 4 available
Listening for host connection on port 7903

Tests with the emulator show that George 3 is Y2K compliant.