GEORGE (operating system)
Encyclopedia
GEORGE was the name given to a series of operating system
s released by International Computers and Tabulators
(ICT) in the 1960s, for the ICT 1900 series
of computers.
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 public it was claimed that George stood for GEneral ORGanisational Environment, but contemporary sources say that was a backronym
).
In July 1965 a team from ICT was present at a seminar at NPL
describing the CTSS operating system developed for MITs 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.
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 (spooling
). 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.
JOB PLAN4JOB,30174,BRIAN
IN ED(PROGRAM COMP)
LOAD #XPLT
IN CR0(SOURCE)
ENTER 1
AT HALTED OK,GO TO 1A
DISPLAY 'COMPILATION ERRORS'
GO TO 5END
1A IN ED(PROGRAM COMP)
LOAD #XPCK
IN CR0/JD
*IN ED(SEMICOMPILED)
*OUT ED(PROGRAM TEST)
*LIST
???*
ENTER 1
AT DELETED HH,GO TO 2A
DISPLAY 'CONSOLIDATION ERRORS'
GO TO 5END
2A IN ED(PROGRAM TEST)
LOAD #HWLD
ENTER 0
5END END
****
DOC SOURCE
PROG(HWLD)
STEER(LIST,OBJECT)
OUTE(SEMICOMPILED(0))
WSF(HWLD)
PLAN(CR)
#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 was implemented as a small memory resident part and a collection of chapters (overlays
) 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 switch
es could take place at any chapter change (call from one chapter to another), 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 (George INput), 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.
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.
.
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 :MASTER.USERS.COMPSCI,JOHN.
Access control list
s were used for security, a user could permit or deny any user or group of users access to his files or directories.
The file store was two-level, files could be either currently on disk, or, if the system was low on disk space they would be archived to 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 reloaded and the job resumed.
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 (pure) data and code regions. New versions of the consolidator (linker) 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.
The job would be read in from a card
or paper tape
reader. With minor changes (removal of the first "JB" command) it could be stored in a file and run from an interactive (MOP) terminal.
JB PLAN4JOB,:BRIAN,T####
WE COMERR,GO 5CE
MZ 20K
CE !
IN !,T////
PROG(HWLD)
STEER(LIST,OBJECT)
OUTE(SEMICOMPILED(0))
WSF(HWLD)
PLAN(CR)
#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(LD),GO 1F
AS *CR0,!
ER !
CE !
AS *LP0,!
CE !(*DA,BUCK1,KWOR40)
AS *DA2,!(WRITE)
EN 1
IF HAL(OK),GO 1A
1F DP 0,COMPILATION ERRORS
GO 5EX
1A DL
CE !
IN !,T////
*IN ED(SEMICOMPILED)
*OUT ED(PROGRAM TEST)
*LIST
////
LO :LIB.PROGRAM XPCK
RM
IF NOT HAL(LD),GO 2F
AS *CR0,!
ER !
AS *LP0,!1(APPEND)
LF !1,*LP,PA
ER !1
AS *DA1,!
ER !
CE !(*DA,BUCK1,KWOR10)
AS *DA13,!(WRITE)
ER !
CE PROGRAM HWLD(*DA,BUCK1,KWOR5)
AS *DA14,PROGRAM HWLD(WRITE)
EN 1
IF DEL(HH),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
####
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 (123457)
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 (123457) 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 (123456)
21.32.21 0.06 CORE GIVEN 4736
WAITING FOR MT 123456
21.32.34 USED U31 AS *MT0 , MT (123456,HELLOTAPE(0/0))
← hello,hello(/plan)
← ****
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(/plan),*idhelo
FILES ALREADY ONLINE: :LIB.SUBGROUPS-RS(1/V3) :LIB.PROGRAM XPCK(1/V12K)
:LIB.PROGRAM XPLT(1/V8C)
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(M) 70 -97797
MONEY 35 80327
21.44.12←
Versions of George 3 before release 8 were provided in binary form. Any modifications needed to the system were made as binary patches. To simplify the process most George chapters included an empty MEND area at the end.
Starting with release 8 the source of George was distributed with the binary, both on magnetic tape and microfiche. A system of source level patches, known as MENDITS was used to modify the system and an existing chapter could be completely replaced by the new modified chapter.
The George user group set up a "MEND exchange scheme" to share interesting modifications to George. Some modifications were distributed freely, others were available for a fee. When ICL produced a new version of George they would sometimes include modifications produced by the users.
For the last released version, 8.67, most of the patches from the MEND exchange scheme were included in the standard George source, switched off by conditional compilation
. They can be turned on as part of the standard process of tailoring George for a site.
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.
David Holdsworth and Delwyn Holroyd obtained copies of George 3 issue tapes when the last live site in the UK, at British Steel
, was being decommissioned and wrote an emulator for the 1900 hardware and executive that allows running of George on Microsoft Windows
as part of a project for the Computer Conservation Society
.
Tests with the emulator show that George 3 is Y2K
compliant.
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...
s released by International Computers and Tabulators
International Computers and Tabulators
International Computers and Tabulators or ICT was formed in 1959 by a merger of the British Tabulating Machine Company and Powers-Samas. In 1963 it also added the business computer divisions of Ferranti...
(ICT) in the 1960s, for the ICT 1900 series
ICT 1900 series
ICT 1900 was the name given to a series of mainframe computers released by International Computers and Tabulators and later International Computers Limited during the 1960s and '70s...
of computers.
Initially the 1900 series machines, like the Ferranti-Packard 6000
Ferranti-Packard 6000
The FP-6000 was a second generation mainframe computer developed and built by Ferranti-Packard in the early 1960s. It is particularly notable for supporting multitasking, being one of the first commercial machines to do so...
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
Teletype Corporation
The Teletype Corporation, a part of American Telephone and Telegraph Company's Western Electric manufacturing arm since 1930, came into being in 1928 when the Morkrum-Kleinschmidt Company changed its name to the name of its trademark equipment...
Model 33 ASR based system console
System console
The system console, root console or simply console is the text entry and display device for system administration messages, particularly those from the BIOS or boot loader, the kernel, from the init system and from the system logger...
.
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
Ferranti Orion
The Orion was a mid-range mainframe computer introduced by Ferranti in 1959 and installed for the first time in 1961. Ferranti positioned Orion to be their primary offering during the early 1960s, complementing their high-end Atlas and smaller systems like the Sirius and Argus...
. 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
Spooling
In computer science, spool refers to the process of placing data in a temporary working area for another program to process. The most common use is in writing files on a magnetic tape or disk and entering them in the work queue for another process. Spooling is useful because devices access data at...
system of the Atlas
Atlas Computer (Manchester)
The Atlas Computer was a joint development between the University of Manchester, Ferranti, and Plessey. The first Atlas, installed at Manchester University and officially commissioned in 1962, was one of the world's first supercomputers, considered to be the most powerful computer in the world at...
computer.
(In public it was claimed that George stood for GEneral ORGanisational Environment, but contemporary sources say that was a backronym
Backronym
A backronym or bacronym is a phrase constructed purposely, such that an acronym can be formed to a specific desired word. Backronyms may be invented with serious or humorous intent, or may be a type of false or folk etymology....
).
In July 1965 a team from ICT was present at a seminar at NPL
National Physical Laboratory, UK
The National Physical Laboratory is the national measurement standards laboratory for the United Kingdom, based at Bushy Park in Teddington, London, England. It is the largest applied physics organisation in the UK.-Description:...
describing the CTSS operating system developed for MITs Project MAC. They decided that the ICT would need to provide multi-access
Time-sharing
Time-sharing is the sharing of a computing resource among many users by means of multiprogramming and multi-tasking. Its introduction in the 1960s, and emergence as the prominent model of computing in the 1970s, represents a major technological shift in the history of computing.By allowing a large...
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
Multics
Multics was an influential early time-sharing operating system. The project was started in 1964 in Cambridge, Massachusetts...
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 languageJob Control Language
Job Control Language is a scripting language used on IBM mainframe operating systems to instruct the system on how to run a batch job or start a subsystem....
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 (spooling
Spooling
In computer science, spool refers to the process of placing data in a temporary working area for another program to process. The most common use is in writing files on a magnetic tape or disk and entering them in the work queue for another process. Spooling is useful because devices access data at...
). Several different modules, running in parallel, allowed overlapping of input, processing and output operations:
- Jobs were read from cards or paper tape to temporary files on magnetic disk or tape by an input module.
- A central module executed the user programs, taking input from the temporary input files and writing program output to temporary files.
- An output module wrote the temporary output files to physical printers and punches.
- A module was also available for entering jobs from remote job entryRemote Job EntryRemote job entry is the term used to describe the process of sending jobs to Mainframe computers from remote workstations, and by extension the process of receiving output from mainframe jobs at a remote workstation....
stations, the output of the job could be printed on the remote printer.
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
MINIMOP
MINIMOP was an operating system which ran on the International Computers Limited 1900 series of computers. MINIMOP provided an on-line, time-sharing environment . Batch facilities could be provided by simultaneously running George 2 on the same machine...
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:- The batch starts with a job description which specifies a job name, the account code used by George for billing and a user name:
JOB PLAN4JOB,30174,BRIAN
- The job first loads the program #XPLT from a disk file named PROGRAM COMP (XPLT is the assembler). The document SOURCE is used as input to #XPLT on a virtual card reader CR0.
IN ED(PROGRAM COMP)
LOAD #XPLT
IN CR0(SOURCE)
ENTER 1
- If #XPLT finishes with the message HALT OK then the job continues at label 1A, otherwise the job displays COMPILATION ERRORS and jumps to 5END.
AT HALTED OK,GO TO 1A
DISPLAY 'COMPILATION ERRORS'
GO TO 5END
- At label 1A the program #XPCK is loaded and run with an in-line document available on its virtual card reader. (XPCK is the linker). (The in-line document is the text between the line IN CR0/JD and the terminator ???*).
1A IN ED(PROGRAM COMP)
LOAD #XPCK
IN CR0/JD
*IN ED(SEMICOMPILED)
*OUT ED(PROGRAM TEST)
*LIST
???*
ENTER 1
AT DELETED HH,GO TO 2A
DISPLAY 'CONSOLIDATION ERRORS'
GO TO 5END
- If #XPCK finishes without error then the program #HLWD is run.
2A IN ED(PROGRAM TEST)
LOAD #HWLD
ENTER 0
5END END
****
- After the job a source document is read in, this will be used as input to the job.
DOC SOURCE
PROG(HWLD)
STEER(LIST,OBJECT)
OUTE(SEMICOMPILED(0))
WSF(HWLD)
PLAN(CR)
#PRO HWLD40/TEST
#LOW
MESS 12HHELLO WORLD
#PRO
#ENT 0
DISTY '11/MESS'
DEL 2HOK
#END
ENDPROG
****
- Finally the end of batch is signaled. At this point all the jobs in the batch will be run in order.
- All output from the batch will be printed on the system printer.
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
Job Control Language
Job Control Language is a scripting language used on IBM mainframe operating systems to instruct the system on how to run a batch job or start a subsystem....
.
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 (overlays
Overlay (programming)
In a general computing sense, overlaying means "replacement of a block of stored instructions or data with another" Overlaying is a programming method that allows programs to be larger than the computer's main memory...
) 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 switch
Context switch
A context switch is the computing process of storing and restoring the state of a CPU so that execution can be resumed from the same point at a later time. This enables multiple processes to share a single CPU. The context switch is an essential feature of a multitasking operating system...
es could take place at any chapter change (call from one chapter to another), 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 (George INput), 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
Structured programming
Structured programming is a programming paradigm aimed on improving the clarity, quality, and development time of a computer program by making extensive use of subroutines, block structures and for and while loops - in contrast to using simple tests and jumps such as the goto statement which could...
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 (Multiple Online Processing) terminals, either simple TeletypeTeletype Corporation
The Teletype Corporation, a part of American Telephone and Telegraph Company's Western Electric manufacturing arm since 1930, came into being in 1928 when the Morkrum-Kleinschmidt Company changed its name to the name of its trademark equipment...
Model 33 ASR terminals or block mode
Block-oriented terminal
A block-oriented terminal is a type of computer terminal that communicates with its host in blocks of data, usually chunks of text, as opposed to a character-oriented terminal that communicates with its host one character at a time...
VDU terminals.
The job control language
Job Control Language
Job Control Language is a scripting language used on IBM mainframe operating systems to instruct the system on how to run a batch job or start a subsystem....
was the same on terminals or in batch jobs and included conditional operations and macro operations. In contrast to Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
systems the job control language was part of the operating system rather than being a user level shell
Shell (computing)
A shell is a piece of software that provides an interface for users of an operating system which provides access to the services of a kernel. However, the term is also applied very loosely to applications and may include any software that is "built around" a particular component, such as web...
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
Swapping
Swapping can mean:* In computer systems, an older form of memory management, similar to Paging* Swapping * Hot swapping* Book swapping* Wife swapping* Cumswapping...
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 MulticsMultics
Multics was an influential early time-sharing operating system. The project was started in 1964 in Cambridge, Massachusetts...
.
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 :MASTER.USERS.COMPSCI,JOHN.
Access control list
Access control list
An access control list , with respect to a computer file system, is a list of permissions attached to an object. An ACL specifies which users or system processes are granted access to objects, as well as what operations are allowed on given objects. Each entry in a typical ACL specifies a subject...
s were used for security, a user could permit or deny any user or group of users access to his files or directories.
The file store was two-level, files could be either currently on disk, or, if the system was low on disk space they would be archived to 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 reloaded and the job resumed.
George 4
Starting with the 1904A, a pagingPaging
In computer operating systems, paging is one of the memory-management schemes by which a computer can store and retrieve data from secondary storage for use in main memory. In the paging memory-management scheme, the operating system retrieves data from secondary storage in same-size blocks called...
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 (pure) data and code regions. New versions of the consolidator (linker) and compilers were provided to use these facilities.
The source code of George 3 and 4 were the same; conditional compilation
Conditional compilation
In computer programming, conditional compilation is compilation implementing methods which allow the compiler to produce differences in the executable produced controlled by parameters that are provided during 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.
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
Punched card
A punched card, punch card, IBM card, or Hollerith card is a piece of stiff paper that contains digital information represented by the presence or absence of holes in predefined positions...
or paper tape
Punched tape
Punched tape or paper tape is an obsolete form of data storage, consisting of a long strip of paper in which holes are punched to store data...
reader. With minor changes (removal of the first "JB" command) it could be stored in a file and run from an interactive (MOP) terminal.
- As with the George 2 example the job starts with a JOB command (all built-in commands had a long form and a two letter abbreviation, here "JB" is the abbreviation for "JOB"). The JOB command gives a job name, the user to bill for the job, :BRIAN, and the terminator for the job, "####".
JB PLAN4JOB,:BRIAN,T####
- WHENEVER (WE) a command fails with error the job will continue at label 5CE for error recovery. The MAXSIZE (MZ) of memory used by this job will be 20K words.
WE COMERR,GO 5CE
MZ 20K
- The CREATE (CE) comamnd is used to make a workfile, "!". The INPUT (IN) command then copies all text up to the terminator, "////" into the workfile.
CE !
IN !,T////
PROG(HWLD)
STEER(LIST,OBJECT)
OUTE(SEMICOMPILED(0))
WSF(HWLD)
PLAN(CR)
#PRO HWLD40/TEST
#LOW
MESS 12HHELLO WORLD
#PRO
#ENT 0
DISTY '11/MESS'
DEL 2HOK
#END
ENDPROG
////
- The LOAD (LO) command loads PROGRAM XPLT (the assembler) from the directory :LIB, it is then started by the RESUME (RM) command. If the run does not HALT with the output LD the job continues at label 1F for error handling.
LO :LIB.PROGRAM XPLT
RM
IF NOT HAL(LD),GO 1F
- The ASSIGN (AS) command is used to connect virtual card reader unit 0 to the workfile created above, which is then erased by the ERASE (ER) command. (The erase will delayed until the file is closed).
AS *CR0,!
ER !
- A new workfile is created and the virtual line printer unit 0 assigned to it.
CE !
AS *LP0,!
- A new, direct access, workfile is created with 128 word buckets and an initial size of 40K words. The virtual disk channel *DA2 is assigned to it.
CE !(*DA,BUCK1,KWOR40)
AS *DA2,!(WRITE)
- The program in memory (PROGRAM XPLT) is started at location 21. If it HALTs with the output OK the job continues at label 1A, if not an error message is displayed and the job exits.
EN 1
IF HAL(OK),GO 1A
1F DP 0,COMPILATION ERRORS
GO 5EX
- The DELETE (DL) command deletes the assembler from memory.
1A DL
- Yet another workfile is created to hold the instructions for the linker.
CE !
IN !,T////
*IN ED(SEMICOMPILED)
*OUT ED(PROGRAM TEST)
*LIST
////
- The linker, :LIB.PROGRAM XPCK is loaded and intialised.
LO :LIB.PROGRAM XPCK
RM
IF NOT HAL(LD),GO 2F
- The virtual card reader is attached to the workfile holding the linker instructions, which is then erased.
AS *CR0,!
ER !
- The virtual lineprinter is then assigned in append mode to the last but one workfile created and not yet erased (workfiles are held in a stack, "!" is the top of the stack, "!1" the one under that and so on). The LISTFILE (LF) command is used to print the file on the system printer (the listing will start when the file is closed). The file is then erased (the erase will be delayed until the listing is finished). The virtual disk channel *DA1 is assigned to the top workfile (holding the assembler output) and yet another workfile is created for the linker.
AS *LP0,!1(APPEND)
LF !1,*LP,PA
ER !1
AS *DA1,!
ER !
CE !(*DA,BUCK1,KWOR10)
AS *DA13,!(WRITE)
ER !
- A file is created to hold the linker output and attached to virtual disk channel *DA14. The linker is then started at location 21 and if it finishes with the message HH the job continues at label 2A, otherwise an error message is displayed and the job exits.
CE PROGRAM HWLD(*DA,BUCK1,KWOR5)
AS *DA14,PROGRAM HWLD(WRITE)
EN 1
IF DEL(HH),GO 2A
2F DP 0,CONSOLIDATION ERRORS
GO 5EX
- At label 2A the program written by the linker is loaded into memory and run starting at location 20, a success message is displayed and the job exits.
2A LO PROGRAM HWLD
EN 0
DP 0,JOB COMPLETED
GO 5EX
- If any command failed the WHENEVER command given at the start of the job will force a jump to label 5CE which displays an error message and exits.
5CE DP 0,COMMAND ERROR IN JOB
- When the job gets to label 5EX if it has a currently loaded program it is deleted from memory and the ENDJOB (EJ) command terminates the job.
5EX IF COR,DL
EJ ALL
- The end of the job is signalled by the terminator string defined by the JOB command.
####
Example MOP session
All user input is shown in lower case. All output from George is in upper case.- The user types control-A on an idle Teletype attached to George, George replies with its identification banner and prompt (the time, followed by the invitation to type, a back-arrow. The user then logs in using the LOGIN (LN) command. He is prompted for his password, which will be echoed as the terminal is connected in half duplex mode with local echoEcho (computing)In computing, echo is a command in DOS, OS/2, Microsoft Windows, Singularity, Unix and Unix-like operating systems that places a string on the computer terminal...
. The job then starts.
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
- A directory is created with the MAKEDIR (MK) command and the current directory is changed to the new one with the DIRECTORY (DY) command.
21.21.35← mk hellodir
21.28.10← dy hellodir
- The system macro NEWCOPYIN is used to read from the tape serial number 123457. As the NEWCOPYIN macro loads a program the session becomes fully started (if the system was heavily loaded it might wait at this point).
21.28.16← newcopyin (123457)
21.28.32 JOB IS NOW FULLY STARTED
21.28.32 0.03 CORE GIVEN 4736
WAITING FOR MT 123457
- Apparently the system operator couldn't find the tape and used the CANTDO command to refuse to load it, the NEWCOPYIN fails.
ERROR IN PARAMETER 2 IN OL IN NEWCOPYIN: MT (123457) 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
- The user tries again with the correct serial number this time. When the tape becomes available he is prompted for the file to load. The list of files is terminated by "****".
21.28.58← newcopyin (123456)
21.32.21 0.06 CORE GIVEN 4736
WAITING FOR MT 123456
21.32.34 USED U31 AS *MT0 , MT (123456,HELLOTAPE(0/0))
← hello,hello(/plan)
← ****
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
- The file has been loaded from tape. The LISTFILE (LF) command is used to examine its contents
21.32.52← lf hello
#PRO HWLD40/TEST
#LOW
MESS 12HHELLO WRLD
#PRO
#ENT 0
DISTY '11/MESS'
DEL 2HOK
#END
- There seems to be an error, so the user uses the EDIT (ED) command to fix it. The editor subcommand TC is used to position to the line containing "WRLD", the R command replaces "WRLD" by "WORLD", then the E command writes out the file.
21.33.01← ed hello
EDITOR IS READY
0.0← tc/wrld/
2.0← r/wrld/world/
2.29← e
- The system macro PLANCOMP is used to compile the file HELLO(/PLAN) to PROGRAM HELO
21.43.46← plancomp *cr hello(/plan),*idhelo
FILES ALREADY ONLINE: :LIB.SUBGROUPS-RS(1/V3) :LIB.PROGRAM XPCK(1/V12K)
:LIB.PROGRAM XPLT(1/V8C)
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
- The newly compiled PROGRAM HELO is loaded into memory by the LOAD (LD) command, then started with the ENTER (EN) command. It displays the traditional message then deletes itself from memory.
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
- Todays arduous work being finished, the user logs out with the LOGOUT (LT) command. The mill timeCPU timeCPU time is the amount of time for which a central processing unit was used for processing instructions of a computer program, as opposed to, for example, waiting for input/output operations. The CPU time is often measured in clock ticks or as a percentage of the CPU's capacity...
and money used and remaining are displayed.
21.44.07← lt
MAXIMUM ONLINE BS USED 252 KWORDS
21.44.12 1.09 FINISHED : 0 LISTFILES
BUDGET USED LEFT
TIME(M) 70 -97797
MONEY 35 80327
21.44.12←
Source code
George was distributed in a form that allowed a site to modify large parts of the system. A compilation of the system was started, then interrupted just before the end and dumped to magnetic tape. The GIN compiler allowed the compilation to be continued from this point at the user site, possibly modifying code already compiled.Versions of George 3 before release 8 were provided in binary form. Any modifications needed to the system were made as binary patches. To simplify the process most George chapters included an empty MEND area at the end.
Starting with release 8 the source of George was distributed with the binary, both on magnetic tape and microfiche. A system of source level patches, known as MENDITS was used to modify the system and an existing chapter could be completely replaced by the new modified chapter.
The George user group set up a "MEND exchange scheme" to share interesting modifications to George. Some modifications were distributed freely, others were available for a fee. When ICL produced a new version of George they would sometimes include modifications produced by the users.
For the last released version, 8.67, most of the patches from the MEND exchange scheme were included in the standard George source, switched off by conditional compilation
Conditional compilation
In computer programming, conditional compilation is compilation implementing methods which allow the compiler to produce differences in the executable produced controlled by parameters that are provided during compilation...
. They can be turned on as part of the standard process of tailoring George for a site.
End of life
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 (DME), later the Concurrent Machine Environment (CME) 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
Russia
Russia or , officially known as both Russia and the Russian Federation , is a country in northern Eurasia. It is a federal semi-presidential republic, comprising 83 federal subjects...
was still running George 3 under DME.
David Holdsworth and Delwyn Holroyd obtained copies of George 3 issue tapes when the last live site in the UK, at British Steel
British Steel
British Steel was a major British steel producer. It originated as a nationalised industry, the British Steel Corporation , formed in 1967. This was converted to a public limited company, British Steel PLC, and privatised in 1988. It was once a constituent of the FTSE 100 Index...
, was being decommissioned and wrote an emulator for the 1900 hardware and executive that allows running of George on Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
as part of a project for the Computer Conservation Society
Computer Conservation Society
The Computer Conservation Society is a British organization, founded in 1989. It is under the joint umbrella of the British Computer Society, the Science Museum in London, and the Museum of Science and Industry in Manchester. Many of the society's meetings are held at the Science Museum...
.
Tests with the emulator show that George 3 is Y2K
Year 2000 problem
The Year 2000 problem was a problem for both digital and non-digital documentation and data storage situations which resulted from the practice of abbreviating a four-digit year to two digits.In computer programs, the practice of representing the year with two...
compliant.