Price: 3.50SOS 940 TIME-SHARING SYSTEMTECHNICAL MANUALSDS 90 11 16ANovember 1967SCIE NTIFIC DATA SYSTEMS/1649 Seventeenth Street/Santa Moni co, Cal iforn ia 1967. Scientific Data Systems. IncPnnted In USA.

PREFACEThis preliminary manual describes the Berkeley Time-Sharing System as modified for theSDS 940 Computer. The design and implementation of the system is explained, as wellas certain of its operational features. The manual covers this in three major parts: Monitor, Executive, and subsystems.Chapters 2-11 deal with the Monitor, chapters 12-19 discuss the Executive, and chapters20-28 explain the various system programmed operators (SYSPOPS) and branch systemroutines (BRS) that can be used with this system.Illustrations and explanations are also given of important tables associated with the system, such as the PAC Table, Phantom User Queue Entry, Job Table, Pseudo MemoryTable, etc.This publication is a reference guide for experienced programmers rather than a primerforbeginners. It assumes that the reader is fami Iiar with the basi c concepts of the SDS 940Time-Sharing System. Additional information about the system can be obtained from therelated publications listed below.RELATED PUBLICATIONSTitlePublication No.SDS 940 Computer Reference Manual900640SDS 940 Terminal Users Guide90 11 18SDS 940 FORTRAN II Reference Manual90 00 10SDS 940 BASIC Reference Manual90 11 11SDS 940 TAP Reference Manual90 11 17SDS 940 DDT Reference Manual90 11 13SDS 940 CAL Reference Manuai90 Ii 14SDS 940 QED Reference Manual90 11 12SDS 940 FORTRAN II Technical Notes90 11 42SDS 940 FORTRAN IV Reference Manual90 11 15NOTICEThe specifications of the software system described inthis publication are subject to change without notice. The availability or performance of some features maydepend on a specific configuration of equipment such as additional tape units or larger memory. Customers should consult thei r SDS sales representative for details.ii

CONTENTSl.INTRODUCTION15. SUBSYSTEMS382.THE SCHEDU LER16. MISCELLANEOUS EXECUTIVE FEATURES39ForksThe Program Active TableThe Phantom User11417. MISCELLANEOUS MONITOR BRSs3918. STRING PROCESSING SYSTEM40FORKS AND JOBS519. FLOA TING POINT40Creation of ForksMemory AcquisitionPanic ConditionsJobs56674.PROGRAM INTERRU PTS8Index of BRSs and System Operatorsby NumberIndex of BRSs and SYSPOPs by Type5.THE SWAPPER, MEMORY ALLOCATION ANDRAD ORGANIZATION92l. SCHEDULING, FORKS AND PROGRAMRelabeling93.Operating Characteristics20. BRS AND SYSPOP INDEXESINTERACTION434545475222. INPUT/OUTPUT6523. TELETYPES8424. MEMORY966.MISCELLANEOUS FEATURES117.TELETYPE INPUT/OUTPUT128.ORGANIZATION OF DISC AND BUFFERDEVICES1525. STRING PROCESSING103File Storage on DiscFile BuffersDevicesSystem Data on Outer Arm Positions of Disc1515181926. NUMBERS11327. EXECUTIVE COMMAND OPERATIONS12028. MISCELLANEOUS121SEQUENTIAL FILES19Sequential Disc FilesOther Sequential FilesFile Control BlocksCharacter BuffersPermanently Open Files19212222229.10. SUBROUTINE FILES231l. EXECUTIVE TREATMENT OF FILES2312. EXECUTIVE COMMANDS RELATED TO FILES2713. EXECUTIVE COMMANDS2814. OPERATOR EXECUTIVE ROUTINES29FunctionDescription of Control CommandsOperating ProceduresGeneral Operating InstructionsProgram Loading and Assembly ProcedureDescription of Operator ExecutiveRoutines292930303030APPENDIXESA.GLOSSARY OF TERMS127B.GENERAL DESCRIPTION OF THECOMBINED FILE DIRECTORY129ILLUSTRATIONSl.PAC Tabl e - One Per Fork22.Phantom User Queue Entry43.Significance of Bits in A Register54.Job Tables75.Pseudo Memory Table PMT Entries9iii

6.Disc Map167.Buffers178.Device Tables181.9.File Control Block222. Fixed File Numbers2211. File Directory Arrangement2512. Hash Table Entry2613. Format Word for Floating Point42ivTABLESActivation Conditions for CurrentlyInactive ForkPanic TableTeletype TableControl NumbersDevice NumbersFile Control for Mag-tapeControl CommandsError Conditions35122021212943

1. INTRODUCTIONThe SDS 940 Time-Sharing System consists of three mainparts: Monitor, Executive, and subsystems.The Monitor is the portion of the system concerned with scheduling input/output operati ons interrupt processing memory allocation swapping of programs and data from disc to core memory control of active programsThe Executive is concerned with the command language through which the user controlsthe system from his teletype identi fi cati on of the vari ous users control of the directory of symbol i c fi I e names, andbackup storage for these fi I esthe specification of the limits of each user's access tothe systemSince the user cannot address the computer directly, the resident SYSPOP and BRS utility routines have been providedto allow him to perform I/o functions and control other system operati ons. When accessed, these routi nes cause atransfer to monitor mode of operati on and a branch to a processing routine. The BRS instruction requires an integer inits address field that specifies the function to be performed.SYSPOP instructions require no such integer. Each SYSPOPname is unique and specifies, by itself, the function desired.Not all of these routines are accessible to every user; specialuser status is required to access some of the routines.Subsystems are maj or processors such as FORTRA N II, CAL,QED, etc. These subsystems are programs that are permanently connected to the main system. Each subsystem is calledby name through the Executive. Tables in the Executive indicate how the subsystem is to be started and where its entries are in the shared memory table.The processors implemented as 940 subsystems have such a highrate of usage that they have been written as reentrant programs,enabl i ng many users to share the same processor si mu I taneousl y.Programming reference information on the major subsystemsis contained in individual manuals listed under related publications in front of this manual.2. THE SCHEDULERFORKSThe 940 Ti me- Shari ng System is pri mari Iy concerned wi thprogram entities called forks. A fork is a self-containedbody of code for performing some process. At any pointduring this process it is possible to activate another fork.Forks are similar to programs and subprograms in other systems, but they differ from their non-time-sharing-systemcounterparts in a number of important respects.A fork can be all or part of a program. It can have one ormore forks or subprograms running concurrently under itsfu II control.A fork can share all, part, or none of its allocated memorywith the controlling program.Forks are similar to subroutines, except that, theoretically,all forks making up a program could be executing simultaneousl yin the ti me-shari ng mode. However, forks can, andfrequently do, exist in a hierarchical relationship with oneanother.There is at least one fork associated with each active userin the system, but a user can have many forks under hiscontrol, each operating independently. There is also a temporary storage area called a TS block that is shared witheach active fork associated with a user.THE PROGRAM ACTIVE TABLEA fork is defined by its entry in the program active table(PAC table or PACT). This table contains all the informati on requi red to speci fy the state of the computer that theuser is programming, except for that contained in the user'smemory or in the system's permanent tabl es. Each PACTentry has the format shown in Figure 1.Note that the PACT contains locations for saving the program counter, P, and the contents of the A register. The Band X registers are saved in the TS block. The PACT 01 socontains two pseudo-relabel ing registers for the user. Athird one, that specifies the monitor map, is kept in the jobtables. Pseudo-relabeling is discussed in detail in Chapter5. The word PTEST determines the conditions under whichthe fork should be reactivated if it is not currently running.The panic table address in PTAB and the three pointers calledPFORK, PDO'vVN and PPAR are discussed in Chapter 3.Introduction/The Scheduler

Next queue or next program on queue 0 next ro ram 0 next10PNEXToPLueue23Saved (P)o1 2 3238 9 10Saved (A)PAo23RllFirst pseudo-relabel ing registero23RL2Second pseudo-relabeling registero23PDOWNPPTRPFORK or chain for free entries11 12023Test word addrs., or into no., or statusof dead forkPTEST23I I 11oPQU01QRIWI IIJOb No.oH2EXEXBQRQTABLMEX1TSTPNTIEMXPBTOThe Program Active Table10 :1110XPB17 18ITO20 2123Add no memoryTermination pending (checks for rubout)Non-terminabi I ityInterrupt enable mask1-4System interrupt5- 10 Program interrupt11 Interrupt on di sc errorsIndex to PB in TS blockTi me out interrupt armedPAC Table - One Per ForkThe word PTAB contains the number of the job to which thefork belongs in bits 3 through 8. The top of PQU containsinformation about the amount of time that the fork is allowedto compute before it is dismissed. Six bits of QR count thenumber of clock cycles remaining before the fork is dismissed, and three bits of QTAB point to a table specifyingthe length of time that the fork should be allowed to runwhen it is activated. All times in the discussion are measured in periods of the 60-cycle computer clock.22314 15USei mode (1)OverflowExecutive programExec BRSAmount of long quantum leftIndex for long quantumLocal memorySubsystem statusTS block assignedFigure 1.Panic Table AddressIEM3 4:567891 2 3 4UMOV238 9 101 2 3I I 1 1oI1oPIM11 128 91 2 3PTABPPARQTABWhen a fork is activated, the number in QR is put intoTTIME. This number is the unused portion of the fork's longtime quantum. The long time quantum is the maximum lengthof time a fork can run before the scheduler checks for otherforks to be run. This checking is necessary because of thepossibility that some other routine is in a condition to beactivated. The length of a long quantum is the same for allusers. Simultaneously, with the assignment of a new longquantum, the user is assigned a new short time quantum.

The short time quantum is the minimum lengthwill run before the scheduler checks for otherrun that were dismissed for I/o operati ons.(short quantum) and TTIME (long quantum) areat every clock cycle.of time a forkforks to beBoth TIMEdecrementedWhen a fork is activated, it is first allowed to run for ashort quantum. During this time it cannot be dismissed except by its own request.When TIME goes negative, a short quantum has expired, anda word call ed ACTR is checked to determine whether anyfork that is dismissed for I/o can be run. If ACTR is stillnegative the fork is allowed to continue. At each subsequent clock cycle the fork may be dismissed if any fork dismissed for I/o is ready to run. It may also be dismissedwhen the long quantum is exhausted if any other forks arewaiting to run. In this case, it is said to be dismissed forlong quantum overflow. If ACTR indicates that anotherfork dismissed for I/o is ready to run at the end of the shortquantum, the fork is dismissed for short quantum overflow.To allow an efficient implementation of this scheme ACTRis incremented by every routine that takes any action thatwill allow a fork that was previously waiting for I/o to run.Si nce ACTR is set to -1 when a fork is activated, this meansthat the clock interrupt can execute the following code inorder to check both the conditions which may require further action.SKRTIMEBRU* 3SKNACTRBRU* 3SKRTTIMEBRIof interrupts from I/o devices. These interrupts cause thecomputer to enter system mode and are processed i ndependently of the currently runni ng program. The interruptsnever take direct action to disturb the running of the activefork, although they may set up conditions in memory thatwi II cause some other fork to be activated when the presentlyrunning one is dismissed. Interrupt routines always run insystem mode.Other codes that may be running but not belonging to thecurrently active fork are the system programmed operators(SYSPOPS) or branch system routines (BRS). These routinesare not reentrant and, therefore, can not be dismissed bythe cI ock. To ensure that they wi II not be, the conventi onis establ ished that the cI ock wi II not dismiss a program running in system mode. To guarantee that a user will not monopolize the machine by executing a large number ofSYSPOPS, the user mode trap is turned on when the clockindicates that a fork is to be dismissed. The trap will occurand cause dismissal as soon as the fork returns to user mode.The PACT word called PTEST contains the activation condition for a currently inactive fork. The condition for activation is contained in the six opcode bits of this word, whilethe address field normally contains the absolute address of aword to be tested for the specified condition. It is possible,however, for the address to hold a number indi cating wh ichprogram interrupt has occurred. Note that the value 7 givenin Table 1 can be used for forks, and not all conditions pertain to activation. For example, value 71 implies that thefork is already in operation.The following conditions are possible in PTEST.Table 1.Ready to di smi ssBits 3-8oReturn to programIf ACTR is positive or the short quantum has not run out, itis of course ignored, as noted in the above example.When a fork is dismissed for I/o, TTIME is put into OR.When the fork is reactivated, TTIME is set from OR. TIMEis reset to the full short quantum. That is, the long quantumis allowed to run down while a program computes, regardless of whether it has to wait for I/o between computations.However, a fork is always given a full short quantum. If afork is dismissed for quantum overflow, it is given a newlong quantum when it is reactivated.There are two operati ons avai lable to the user that are connected with the quantum overflow mechanism. BRS 45 causesthe user to be dismissed as though he had overflowed hisquantum. BRS 57 guarantees to the user upon return at least16 msec of uninterrupted computation. This feature is implemented by dismissing the user if less than 16 msec remainin his quantum.Ordinarily, the code that is being executed at any particu I ar instant is that belonging to the currently active fork.This situation may be disturbed, however, by the occurrenceActivation Conditions for Currently Inactive ForkActivati on Condi tionsWord greater than 0Word less than or equal to 02Word greater than or equal to 03Word less than or equal to teletype earlywarning4Special test. The address points to a specialactivation test routine.5Interrupt occurred. The address contains thenumber of the interrupt whi ch occurred.6Word less than or equal to Real- Time.7Special address o dead1runni ngBRS 3123BRS 1064Executive BRS5BRS 1096BRS 9 (User Program)10Do not activate11Vvord 20000000 '- 0 (buffer ready)12Worn I es ; them 0The Program Active Table3

An Executive program can dismiss itself explicitly by puttinga queue number (O to 3) in X, a dismissal condition in Bandexecuting BRS 72. The address of a dismissal condition mustbe absolute.There is normally one running fork in the system, i. e., afork that is executing instructions, or will be executing instructions after the currently pending interrupts have beenprocessed. An active fork (i. e., a PACT entry) that is notrunning is said to be dismissed, and is kept track of in oneor two ways.If it is dismissed with BRS 9, 31, 106 or 109 (see Chapter 3)it is said to be in "Iimbo" and is pointed to only by thePFORK, PDOWN, and PPAR of the neighboring forks in thefork structure.If it has been dismissed for any other reason, it is on one ofthe schedule queues. Thereare fourqueuesof dismissed programs. In order, they areQTIPrograms dismissed for teletype input/outputQIOPrograms dismissed for other I/OQSQPrograms dismissed for exceeding their shortquantumQQEPrograms dismissed for exceeding their longquantum.Programs within the queues are chained together in PNEXT,and the last program in each queue points to the beginningof the next queue.When it is time to activate a new program, the old programis put on the end of the appropriate queue. The schedulethen begins at QTI and scans through the queue structurelooking for a program whose activation condition is satisfied.When one is found, it is removed from the queue structureand turned over to the swapper to be read in and run. Ifthere are no programs that can be activated, the schedulersimply continues scanning the queue structure.Programs reactivated for various reasons having to do withforks (interrupts, escapes, panics) are put onto QIO with animmediate activation condition. They take priority over allprograms dismissed for quantum overflow.THE PHANTOM USERThere is a permanent entry on the teletypequeue for an entitycalled the phantom user. The activation condition for thisentry is a type 4 condition that tests for two possibilities:1.The cell PUCTR is nonzero.2.Three seconds have elapsed since the last activation ofthe phantom user for this condition.When the phantom user is activated by (2.) it scans the system checking that everything is functioning properly. Inparticular, it checks that the W-buffer has not been waitingfor an interrupt for an unusual Iength of ti me, and that allteletype output is proceeding normally. If the phantom useris activated by (1.), it scans the phantom user queue lookingfor tasks to do. A phantom user queue entry is displayed inFigure 2. It is essentially an abbreviated PAC table entry.Pointer to next entry in queue02300PU TestNo·1no2 3I0I000IILo,JTTY Line No.8 9Data forRoutine8 92 323Data set on interrupt2Data set off interrupt3Escape keyFigure 2.The Program Active Table23TTY Line No.Data for Routine4")')7Data forRoutine2 3IRouti ne Addressf'IPhantom User Queue Entry

Such an entry is made when the system has some activitythat it wants to carry out independently of any user PACtabl e entry, test for tape ready {on rewi nd}, or card readerready, and processing of escapes {an interrupt routine typeof activity, but too time-consuming}. The second word ofthe entry is the activation condition. PUCTR contains thenumber of entri es on the phantom user queue.The pointers or counters listed below are utilized by thephantom user to perform its tasks.PUCTBeginning of phantom user queue.FPULSTFirst free entry in PU queue.PUBPTRPoi nter to fi rst active entry.points to PUBPTR.PUCTRNumber of PU entri es.PUEPTRLast PU entry.PUCTRlEntry counter during PU processing.PUCPTRPointer to active entry during PU processing.PUPACPACPTR of task being processed by PU.Last entry3. FORKS AND JOBSCREATION OF FORKSA fork may create new, dependent, entri es in the PAC tabl eby executing BRS 9. This BRS takes its argument in the Aregister, which contains the address of a seven-word panictable with the format given in Table 2.Table 2.WordPanic Table0Program counter1A register2B register3X register4First relabeling register5Second relabeling register6Status-2Dismissed for i nput/output-1RunningDismissed on escape or BRS 10Dismissed on illegal instruction panic2oDismissed on memory panicThe panic table address must not be the same for two dependent forks of the same fork, or overlap a page boundary.If it is, BRS 9 is illegal. The first six bits of the A'registerhave the following significance as shown in Figure 3.Signifi canceMake fork Executive if current fork is Executive.Set fork relabel ing from panic table. Otherwise,use current relabel ing.2Propagate escape assignment to fork {see BRS 90}.3Make fork fi xed memory. It is not allowed toobtain any more memory than it is started with.4Make fork local memory. New memory wi II beassigned to it independently of the controllingfork.5Make fork Exec type 1 if cu rrent fork is Exec.ContentsThe status word may beoBitFigure 3.Significance of Bits in A RegisterWhen BRS 9 is executed, a new entry in the PAC table iscreated. This new fork is said to be a fork of the fork creating it. Thisiscalled the controlling fork. The fork is saidto be lower in the hierarchy of forks'than the controllingfork. The latter may itself be a fork of some still higherfork. A job may have a maximum of eight forks includingthe executive. The A, B and X registers for the fork are setup from the current contents of the panic table. The addressat which execution of the fork is to be started is also takenfrom the panic table. The relabeling registers are set upeither from the current contents of the panic table or fromthe relabeling registers of the currently running program.An executive fork may change the relabeling. A user forkis restricted to changing relabeling in the manner permittedby BRS 44. The status word is set to -1 by BRS 9. The forknumber that is assigned is kept in PIM. This number is anindex to the fork parameters kept in the TS block.The fork structure is kept track of by pointers in PACT. For eachfork PFORK points to the control I ing fork, PDOWN to one of thesubsidiary forks, and PPAR to a fork on the same I evel. All thesubsidiary forks of a single fork are chained in a list.Forks and Jobs5

If the fork executing a BRS 9 is a user fork, it is dismisseduntil the lower fork terminates. If it has Exec status, itcontinues execution at the instruction after the BRS 9. Thefork established by the BRS 9 begins execution at the location specified in the panic table and continues independentlyuntil it is terminated by a panic, which is a signal to thesystem to break execution of a fork. The panic is connectedto its controlling fork in three ways:1.The control Ii ng fork may exami ne its state and controlits operation with the following six instructions:BRS 30reads the current status of a lower fork intothe panic table. It does not influence theoperation of the fork in any way.BRS 31causes the control I ing fork to be dismisseduntil the lower fork causes a panic. When itdoes, th e control I i ng fork is reacti vated atthe instruction following the BRS 31, and thepanic table contains the status of the fork onits dismissal. The status is also put in X.BRS 32causes a lower fork to be unconditionally terminated and its status to be read into thepani c table.All of these instructions require the panic table addressof the fork in A. They are illegal if this address is notthat of a pani c table for some fork.BRS 31 and BRS 32 return the status word in the X register, as well as leaving it in the panic table. Thismakes it convenient to do an indexed jump with thecontents of the status word. BRS 31 returns the pani ctable address in A.BRS 106 causes the control I ing fork to be dismissed until any subsidiary fork causes a panic. Whenit does, the controlling fork is reactivated atthe following instruction with the panic tableaddress in A, and the panic table contains thestatus of the fork at its dismissal.BRS 107 causes BRS 30 to be executed for all subsidiaryforks.BRS 108 causes BRS 32 to be executed for all subsidiaryforks.MEMORY ACQUISITIONIf the fork addresses a block of memory that is not assignedto it, a check is made to determine whether the machinesize specified by the user has been exceeded. If so, a memory panic is generated. If the fork is fixed memory, a memory panic is also generated. Otherwise, a new block is assigned to the fork so that the illegal address becomes legal.For a local memory fork, a new block is always assigned.Otherwise, the following algorithm is used.The number, n, oftherelabeling byte for the block addressedby the instruction causing the memory trap is determined. Ascan is made upwards through the fork structure to (and including) the first local memory fork. If all the forks encountered during this scan have Rn {the nth relabeling byte} equalto 0, a new entry is created in PMT for a new block of usermemory. The address of this entry is put into Rn for all theforks encountered during the scan.If a fork with nonzero Rn is encountered, its Rn is propagateddownward to all the forks between it and the fork causingthe trap. If any fixed memory fork is encountered before anonzero Rn is found, a memory panic occurs.This arrangement permits a fork to be started with less memory than its controlling fork in order to minimize the amountof swapping required during its execution. If the fork laterproves to require more memory, it can be reassigned thememory of the controlling fork in a natural way. It is, ofcourse, possible to use this machinery in other ways, for instance, to permit the user to acquire more than 16K of memory and to run different forks with nonoverlapping or almostnonoverlapping memory.PANIC CONDITIONSThe three kinds of panic conditions that may cause a fork tobe terminated are listed in the description of the status wordabove. When any of these conditions occur, the PACT entryfor the fork being terminated is returned to the free programlist.The panic that returns a status word of zero is called a forkpanic and may be caused by either of two conditions:1.2.If interrupt 3 is armed in the controlling fork, the termination of any subsidiary fork will cause that interruptto occur. The interrupt takes precedence over a BRS 31.If the interrupt occurs and control is returned to aBRS 31 after processing the interrupt, the fork will bedismissed until the subsidiary fork specified by the restored (A) term i nates.3.The forks can share memory. The creating fork can, asalready indicated, set the memory of the subsidiaryfork when the latter is started. In addition, there issome interaction when the subsidiary fork attempts toacquire memory.6Creati on of ForksThe status of the fOik is read into its panic table in thecontrolling fork. If the fork being terminated has a subsidiary fork, it too is terminated. This process will cause thetermination of all the lower forks in the hierarchy.The escape button on the controlling teletype is pushedor an off interrupt occurs. This terminates a fork with afork panic. A fork may declare that it is the one to beterminated by executing BRS 90. In the absence ofsuch a declaration the highest user fork is terminated.When a fork is terminated in this way its controllingfork becomes the one to be terminated. If a user forkis terminated by escape, the teletype input buffer iscleared. If the controlling fork of the one terminatedis executive, the output buffer is aiso cleared.If the fork which can be terminated by escape has armedinterrupt 1, this interrupt will occur instead of a termination. The tel etype buffers wi II not be affected.

If there is only one fork active, control goes to the location EXECP in the Executive. Executive programscan turn the escape button off with BRS 46 and turn itback on with BRS 47. An escape occurring in the meantime wi II be stacked. A second one wi II be ignored.A program which is running with escape turned off issaid to be nonterminable and cannot be terminated bya higher fork. BRS 26 skips if there is an escape pending.scan is terminated and all forks passed by are terminated. If an executive program is reached before thecount is 0, then all the user programs below it areterm i nated.The panic which returns a status word of 1 is caused bythe execution of an illegal instruction in the fork.There are two kinds of illegal instructions.If two escapes occur within about .12 seconds, the entire fork structure wi II be cleared and the job left executing wi II be the top level Executive fork. This device permits a user trapped in a malfunctioning lowerfork to escape. Closely spaced escapes can be conveniently generated with the repeat button on the teletype.Th is type of escape wi II cause a user to I ose memory,and should be followed by a RESET. An off interruptfrom the teletype is treated like a high-speed escape.2.a.Machine instructions that are privileged.b.SYSPOPs that are forbidden to the user or thathave been provided with unacceptable arguments.A status word of 2 is returned by a memory panic. Th ismay be caused by an attempt to address more memorythan is permitted by the machine size that the user hasset, or by an attempt to store into a read-only page.If interrupt 2 is armed, it wi II occur instead of thememory panic.A BRS 10 can be executed in the lower fork. This condition can be distinguished from a panic caused by theescape button by the fact that in the former case, theprogram counter in the panic table points to a wordcontaining BRS 10.JOBSEvery complete fork structure is associated with a job. Thejob is the fundamental entity thought of as a user of the system, from the system's own point of view. The job numberappears in the PAC table entry for every fork in the job'sfork structure.As an extension of this system there is one way in whichseveral forks may be terminated at once by a lowerfork. This may be done by BRS 73, which provides acount in the A register. A scan is made upward throughthe fork structure, decrementing this count by one eachtime a fork is passed. When the count goes to 0, theIn addition, there are several tables indexed by job numbers. These are displayed in Figure 4 and indicate what isspecifically associated with each job.oPMTPStart of jobs PM To9 10PMA23Blocks leftBlocks usedLength of PM T2317 18ooRL3oTTNO. Teletype associatedwith this jobETTBNPDBDSo11 121 2 3I ITemporary storageblock relabeling17 1823o789ITTY No.17 1823Amount of CPU time used when not actively servicing a user.Do not charge memory against machine size.Disc busy bit for BRS BE l,2Disc status bit for BRS 1 and 2Figure 4.Job TablesCreation of Forks7

4. PROGRAM INTERRUPTSA facility is provided in the Monitor to simulate the existence of hardware interrupts. There are eleven possibleinterrupts; five are reserved for special purposes and sixare avai lable to the programmer for general use. A forkmay arm the interrupts by executing BRS 78 with an 11-bitmask in the A register. This causes the appropriate bits inPIM to be set or cleared according to whether the corresponding bit in the mask is 1 or O. Bit 4 of A correspondsto interrupt number 1, etc. No other action is taken atthis time. When an interrupt occurs (in a manner to bedescribed) the execution of an SBRM* to location 200 plusinterrupt number is simulated in

SOS 940 TIME-SHARING SYSTEM TECHNICAL MANUAL SDS 90 11 16A November 1967 . Phantom User Queue Entry, Job Table, Pseudo Memory Table, etc. This publication is a reference guide for experienced programmers rather than a primerfor . will run before the scheduler checks for other forks to be run that were dismissed for I/o operati ons. Both .