This instruction has the effect "copy word Y of my directory to X". It enables the program to find out information set by the job tape as stored by the monitor program in the directory - e.g. what peripherals are reserved for the job. X must be a working store address within reservations and Y must lie in the range -1 ≤ Y ≤ 8+n where n is the number of peripherals reserved for the job. Violation of these restrictions causes suspension due to reservation violation or impermissible operand respectively.
Y = -1 (or 32767) Drum Reservations. x'm = drum datum point, x'u = -N where N is the number of words on the drum reserved for the job. If N=1 this means that the job is monitoring on drum transfers; it is then only possible to find out the drum reservations by switching this monitoring off.
Y = 0 produces no useful information.
Y = 1 Time available x'=-t where t is the amount of time (in units of 16 microsecs) reserved for the job till the next timing flag.
Y = 2 Link x'm = address of the 150/15 instruction (or the beginning of the string leading to it). x's = the state of overflow before the instruction was obeyed.
Y = 3 Job Name x' = the job name in character form, left justified.
Y = 4 produces no useful information.
Y = 5 Reservations and Monitoring The X address position gives the datum point and the Y address the upper reservation. D0, 1, 24, 25 are 1 if the job is monitoring on signals, overflow, jumps and floating point overflow respectively. D26 is 1 if the job is doing unrounded floating point operations.
Y = 6 Time used x' = T where the time used by the job (in units of 16 microsecs) is T-t. To find the time used add the contributions for Y = 1 and Y = 6.
Y = 7 Miscellaneous Information D0 is a 1 if the program is monitoring on *OWN - in which case the Y-address position is one less than the address jumped to on program failures. D24-26 are zero if the program is not branched, otherwise they give the branch number. D28-32=m, where m is zero if the job has no monitoring peripheral other than the Flexowriter, otherwise a 150/15 instruction with Y-address m will yield the peripheral word corresponding to the monitoring peripheral.
Y = 8 First Peripheral Word x'u = programmers name for the first peripheral reserved for the job. D24 is 1 if the job is monitoring transfers on this peripheral. The integer contained in D40-47 has the value 253 if the peripheral is floating.
Y = 9,10,..7+n give the corresponding information for the second, third...nth peripheral reserved for the program.
Y = 8+n x'=0. To find
the value of n obey 150/15 instructions with Y = 8, 9, etc. until a zero word is
e.g. 150 *APE *IFG 16
00S A125 20 1
The instruction and the word in the register after it provide information which cause OMP to printout up to 20 words of either core or drum store in various styles onto the job's monitoring peripheral.
The first word
e.g. 150 *AI 0 16
The X and Y address fields specify the styles of printing required. Permissible styles are APEIPG; impermissible styles or no style specified will cause impermissible operand action.
The second word specifies drum or core, the starting address of the region, the length and the condition Z (i.e. whether the printing of clear words is to be suppressed).
Drum or core
If Z = 2 bit (i.e. D30) of this word is 0 then the core is specified, if this bit is 1 then the drum is.
If RX bit (D24) of this word is 0 then the upper half (D0 to D23) of this word gives the starting address of the region to be printed.
If RX bit (D24) of this word is 1 then the X-address field (D9 to D23) of this word is the address of the core-store register containing in its l.s. half, the starting address of the region.
The region specified must be within reservations otherwise reservation violation action will occur.
If RY bit (D25) of this word is 0, then the Y-address field (D33 to D47) gives the length of the region.
If RY bit (D25) of this word is 1 then the Y-address field is the address of the core-store register containing in its l.s. half, the length.
The length specified must be non-zero and not greater than 20, otherwise impermissible operand action will occur.
If Z = 1 bit (i.e. D31) is 1, then the printing of clear words is suppressed otherwise not.
Styles and their printout
(i) A - prints the address of the register referred to (8 characters)
e.g. A5 for core-store register A5, D106 for drum-store register 106.
(ii) P - prints the content as program (29 characters)
e.g. 80S 0 83 0
The function is output followed by X, Y or S if necessary; 140 and 141 functions with the mode preceded by full stop.
The X and Y address fields are printed as core-store addresses if within reservations e.g. A51; if not these are printed as integers; they are printed as negative integers if greater than 32192; Y-address field for 140 and 141 is printed in the appropriate form e.g. *MT3. Replaced addresses will be bracketed. The Z-address field is printed unless TX = 1 and TY = 0 and Z = 0 (i.e. the instruction is 2-address unmodified). Otherwise the Z-address field is printed and unless it is zero or unless the instruction is a 150, it is printed as a core-store address e.g. A5.
(iii) E - prints the contents in octal 16 characters)
(iv) I - prints the contents as a signed integer (16 characters)
(v) F - prints the contents as a signed fraction (16 characters)
(vi) G - prints the contents in floating - point form (16 characters)
Non-standard numbers are printed as *
e.g. +1421085471 -14
For each register, the required styles are printed on one line with two spaces between each style.
Printout is to the monitoring
peripheral. If the job has no monitoring peripheral and more than one word or
one word with more than 4 styles specified is to be output, then the job is
halted and the message NO MON.PER is printed on the Flexowriter. If only one
word with fewer than 5 styles is specified is to be output and the job has no
monitoring peripheral then the printout of the word will be to the Flexowriter.
e.g. 150 0 0 17
X is 0 or 1
Y-address field must be zero
This will output information about the job's directory. If X = 0 and the job has a monitoring peripheral the information is output on it, otherwise on the Flexowriter. If X = 1 the information is only to the Flexowriter even if the job has a monitoring peripheral.
The information given is
(i) the amount of core, the datum point and the amount of drum reserved,
e.g. CORE 2736 DATUM 4096 DRUM 8704
(ii) the control number, state of OVR and state of the job,
e.g. CN A126 OVR 0 HALTED
(iii) the mill time used and the time left,
e.g. USED 0.01.30 LEFT 0.00.57
where time used includes the time used by OMP for the job, as well as the time used by the job itself; time left is time asked for minus time used by the job itself;
(iv) the events being monitored in a style other than 0,
e.g. MON S J F
(v) the peripherals reserved and devices allocated to the job,
e.g.*SP1 SPB *MT1 MTB *MT3
The state of the job given in line (ii) may be HALTED, WT.DOC, WT.RERUN, SUSPEND, WT.ANS, WT.SBP, WT.SPACE, WT.MASTR (for weak reservations), otherwise the job is going.
The letters in line (iv) may be S (signal), J (jumps), O (overflow), F (floating-point overflow), D (Drum), I (impermissible operand), R (program failure), T (timer), U (unrounded), P (priority), B (baseload), X (strong reservations - weak reservation machines), H (high density job - high density installations), Q (quick jumps), OWN followed by the address.
For branched programs (ii), (iii) and (iv) are given for each branch, together with the branch number and the number of the branch, if any for which it is waiting. If output is to the monitoring peripheral then information about all the branches is output whereas if to the Flexowriter information is about that branch only.
Line (ii) e.g. .2 ON A313 OVR 0 AWTS .3
X must be 0 or 1 otherwise impermissible operand action occurs.
If the monitoring peripheral is
disengaged, then the ENGAGE message is output on the Flexowriter and output
continues when this is done.
e.g. 150 *SIG 2 20
X is an event
Y is a style
This instruction has the effect "set monitoring on event X in style Y".
Events. This is one of
Own monitoring (see 5.4)
Floating point overflow
*DRU or peripheral name
Rounding floating point
Weak reservations (see 5.3.4)
If X is zero, then the effect is to restore monitoring on all events to the default styles.
If X is neither zero nor a recognised event then impermissible operand action will occur.
In a branched program only one branch may monitor on transfers to a particular peripheral (drum included) at any one time; if another branch attempts to set up monitoring to the same peripheral then impermissible operand action occurs, unless the first branch has previously set its monitoring style on this peripheral to Style 0.
If Y is not a permitted style or Y and Y-1 are not within reservations then reservation violation action will occur.
If X=*URG a message is printed on the Flexowriter informing the operator of the change of urgency e.g.
jobname *URG 2
0 is normal, 1 is baseload and 2
is top priority.
e.g. 150 A100 A200 21
X is the address of a core-store register.
Y is the address of a core-store register or 0.
This informs OMP that should a specified incident (event or failure) occur on a specified peripheral then because of this interruption OMP is to enter the job's peripheral incident routine at Y with 0VR clear. OMP, if the incident occurs also records the job as being in a "pushed down" state; a 150/25 in the routine should be obeyed to "pull up". Exit from the restart in general will be by a 150/25.
Storing of the link information, the failure information and output of the message are optional.
Possible incidents that may occur on a particular type of peripheral device have been given code numbers (see 5.5).
The Specified Incident and Peripheral Device
OMP obtains these from the word in X as follows:
If RX bit (D24) is 0 then the X-address field. (D9 to D23) is the code number of the incident being specified. If RX is 1 then the X-address field is the address of the register containing at the l.s. end, the code number of the incident.
Specified Peripheral Device
If RY (D25) is 0 then the Y-address field (D33 to D47) is the programmer's peripheral name of the peripheral being specified. If RY is 1 then the Y-address field is the address of the register containing at the l.s. end, the programmer's name of the peripheral.
Link Information, Failure Information and Output of a Message
The Z-address field in X is looked at by OMP to see if the programmer wants these, should the incident occur.
This is stored in the Link address i.e. in the register whose address is Y-1. The sign bit records the state of OVR and the modifier half is the control number of the job at the time of the interruption. Note that if incidents occur simultaneously the restarts are chained.
This is stored in the register whose address is Y-2. Certain bits record the state of the device and addresses concerned with the transfer (see 5.5)
Output of Message
This is on the Flexowriter and is of the form
jobname Geographical Name of Device Type of Incident
If D31 (i.e. Z = 1 bit) of the word in X is 0, then the message will be output; if 1 then not.
If D30 (i.e. Z = 2 bit) is 0, then both link and failure information will be stored; if 1 then neither.
If D29 (i.e. Z = 4 bit) is 1 then the device (except for magnetic tape decks) will be disengaged. Magnetic tape decks are left engaged except in the case of deck fail when the deck is disengaged.
If the code number obtained is zero, then all possible incidents on the specified device will be set, so any incident will cause a jump to Y etc.
If Y = 0 (in the 150/21 instruction) then the standard (default) action on the specified incident will be set. The standard action is to halt or suspend the job and output a message (see 5.5 and 5.8.4).
Branched Programs - see also 5.3.25 and 10.1. In this case if the incident occurs the program is also temporarily unbranched (i.e. OMP remembers the branch interlocks and switches off each branch as waiting for Branch 1) and if the link is required OMP uses Branch 1's control number as the link for the program.
The following checking takes place for the 150/21 instruction; X and Y and other registers that may be referred to must be within reservations otherwise reservation violation action will take place. The peripheral name obtained must be meaningful otherwise impermissible operand action will occur. The code number must be one permitted (see 5.5) otherwise impermissible operand action will occur.
If X is the register after the one with the 150/21 then return is to X + 1 i.e. with X = V2 + 1, return is to V2 + 2.
Note that this incident restart
information will be lost by OMP if the peripheral (e.g. *MT2) is relinquished or
wronged. This incident restart information is not lost if the peripheral is
subsequently floated or its name is changed.
e.g. 150 *SP1 0 22
X is a programmer's peripheral name or 0
Y-address field must be zero.
This instruction sets X as the monitoring peripheral for the job.
X must be the programmer's peripheral name of a slow output device already reserved for the job. This instruction makes sure that the allocated device is in fact engaged (by asking the operator to engage it if not). It also refills the code buffer with the standard code table for line printers and punches.
Monitoring information will come out on this output device from then onwards. If this peripheral is subsequently relinquished, then monitoring information will come out on the Flexowriter.
If X = 0 then this instruction sets the Flexowriter as the monitoring peripheral. This is the default action. Only a limited amount of monitoring information is allowed on the Flexowriter.
If X is a programmer's peripheral name for an output device which is not reserved for the job then reservation violation action will take place.
If X is a programmerís peripheral
name for an input device or a magnetic tape deck or is not a meaningful
programmer's peripheral name, then impermissible operand action will take place.
e.g. 150 *SIG A197 23
This is usually used after monitoring some program event in Style 7. The effect is to obey the instruction whose address is ym and set OVR according to ys and the current state of overflow, as though monitoring on X were switched off (suppressed or ignored). It enables, for example signalled instructions to be obeyed although the program is monitoring on signals. Y is normally one less than the Y of the 150/20 instruction which set up the monitoring style.
X maybe one of the following events; these are arranged in a hierarchy (*OWN is low) such that if monitoring on one event is suppressed then so is monitoring on lower events, monitoring on higher events remaining active. The hierarchy is
*DRU or peripheral name
*PFP or *PFN
Thus if, for example, an instruction which is both a signal and sets OVR (where the program is monitoring ob both *SIG and *OVR in Style 7) will first jump to the *SIG routine which will end with a 150/23 with X as *SIG, and then the *OVR routine will be entered, this will end with a 150/23 with X as *OVR, so that the instruction will now be obeyed and the program will continue.
X must be one of the above events otherwise impermissible operand action will occur, in particular X=*TIM, *UNR or *URG will cause this action.
Y and ym must be within reservations, otherwise reservation violation action will occur.
If the program is monitoring
overflow, *OVR in Style 7 then a 150/23 instruction which overflows will not
cause entry to the *OVR routine (if this were done the program would get into a
This instruction has two main uses
(a) to set
up a new branch of a program
or (b) to change the control address of an existing branch.
e.g. 150 2 A200 24
This asks OMP to set up a new branch of the program and to give this new branch the branch number X and to set its entry-point as Y, there previously not being a branch numbered X. X must be an integer in the range 2 to 7.
If the program has not been previously branched, then the current branch is set up as branch 1.
The new branch is recorded as switched off waiting for the current branch (it can be switched on by a branch interlock instruction when required).
When a new branch is set up its directory-entry is put in the high-numbered registers of the program's reserved region, the program's reserved region is thus reduced. The monitoring conditions are set to default and the branch's timer is set to 1 minute. Its jobname is composed of the original jobname together with the branch number, e.g. BLOGGS2, note that the jobname of Branch 1 is BLOGGS and that BLOGGS1 is illegal.
If there is already a total of 15 branches in the machine, then a message of the following form is output to the Flexowriter,
jobname CANNOT BRANCH
and the job is halted.
In this case X is the number of an existing branch (X must lie between 1 and 7) and must not be the current branch. This asks OMP to set X's control address as Y and switch X off waiting for the current branch.
150.1 X Y 24
has the specification switch branch X off waiting for the current branch and put branch X's control address into Y. If branch X does not exist Y is set to zero.
If X does not lie between 1 and 7, or if X is the current branch then impermissible operand action will occur.
Y must be within reservations,
otherwise reservation violation action will occur.
e.g. 150 A199 0 25
X is the address of a core-store register.
Y - address field must be zero.
This instruction is associated with peripheral incident routines and with Primary Input ENTER (with a link) routine, to cause "pull up" action and in the general case to return (cf 87 instruction), restoring the program to the state it was in before the incident occurred or ENTER (with a link) was read.
If the incident occurs or ENTER (with a link) is read OMP before entering the routine, if asked to will store link information in the link address specified. Besides storing the link in the modifier half and the state of OVR in the sign bit OMP also stores other information about the state of the job in the upper half. OMP also records the job as being in a "pushed down" state. The routine is then entered.
A 150/25 causes one level of "pulling up" action. X (if not A0) is the address of the register containing the link information; OMP sets xm as the control number and set OVR according to xs and the current state of OVR, and then restores the program to the state it was in before the incident occurred or ENTER (with a link) was read.
150 A0 0 25
causes one level of "pulling up" action to take place, i.e. no jumping takes place. The instruction after this 150/25 is the next instruction to be obeyed.
If a job is already in a "pushed down" state when an incident occurs or ENTER (with a link) is read, then there is a further level of "pushing down" action. The 150/25 of the second routine will pull up one level and, if not A0, returns to the first routine etc.
Non branched Programs
If a peripheral incident routine or ENTER (with a link) routine (also see 18.104.22.168) is entered OMP records the program as being in a "pushed down" state, and any previous pushing down is remembered. ENTER (without a link) does not cause "push down" action and causes any previous "pushing down" to be forgotten.
Branched Programs (see also 10.1.9)
If a peripheral incident routine or ENTER (with a link) routine is entered OMP records the program as being in a "pushed down" state and in this case OMP temporarily unbranches the program (i.e. the branch interlocks are remembered and all branches are switched off awaiting Branch 1). If already "pushed down" OMP remembers this.
If the link for the program is required then Branch 1's control number is used. The routine is considered as being Branch 1. The 150/25 of the first routine will restore the branch interlocks and return to the main program. The control number for the current branch (150/25 can appear in any branch but it is usually Branch 1) is set to xm and state of OVR according to xs and the current state of OVR. ENTER (without a link) does not cause "pushing down" action and causes OMP to switch off all branches awaiting Branch 1; any temporarily unbranched state is forgotten as is any "pushing down".
Rerun 150/10 with Y = 2 causes the program to be temporarily unbranched (i.e. the branch interlocks are remembered and all branches are switched off awaiting Branch 1).
A use of the dummy 150/25 i.e. with X = A0 is in restarts within restarts for example.
Chained Peripheral Incidents (see also 5.5)
If separate peripheral incident routines (with links) for several incidents have been specified and more than one of these incidents occur simultaneously then the routines will be chained, so that the 150/25 of one will cause entry to the next restart and so on.
X and xm must be
within reservations otherwise reservation violation action will occur.