Title:
PROGRAM CONTROLLED DATA PROCESSING SYSTEM
United States Patent 3568157


Abstract:
A program controlled telephone switching system is shown as an example of a real time program controlled data processing system. The system work functions of the telephone switching system are performed at assigned levels of a priority hierarchy. This hierarchy includes a base level at which routine jobs are performed, timed interrupt levels at which input-output jobs, which require a fair degree of timing precision, are performed and a plurality of trouble interrupt levels (maintenance interrupt levels), which are employed to initiate remedial actions in accordance with a prescribed remedial plan. The telephone functions which are performed at the base level are allocated processor time in accordance with a base level executive program frequency table. The base level executive program provides time for execution of certain low priority maintenance functions. In the absence of trouble the processor time is shared by the timed interrupt level programs and the base level programs. The trouble interrupt programs are initiated upon the detection of corresponding classes of trouble.



Inventors:
Downing, Randall W. (Wheaton, IL)
Fabisch, Michael P. (Bronx, NY)
Harr, John A. (Geneva, IL)
Nowak, John S. (Wheaton, IL)
Taylor, Frank F. (West Chicago, IL)
Ulrich, Werner (Glen Ellyn, IL)
Application Number:
04/685642
Publication Date:
03/02/1971
Filing Date:
11/24/1967
Assignee:
BELL TELEPHONE LABORATORIES INC.
Primary Class:
Other Classes:
710/262
International Classes:
G06F9/48; G06F11/00; H04Q3/545; (IPC1-7): G06F9/18
Field of Search:
340/172.5 235
View Patent Images:



Primary Examiner:
Shaw, Gareth D.
Parent Case Data:


CROSS-REFERENCES TO RELATED APPLICATIONS

This is a division of copending application Ser. No. 334,875, filed Dec. 31, 1963 and relates to a program controlled data processing system.
Claims:
We claim

1. In combination:

2. In combination:

3. The combination in accordance with claim 2 wherein:

4. In combination:

5. The combination in accordance with claim 4 wherein:

6. In combination:

7. In combination:

8. The combination in accordance with claim 7 wherein said means for executing said program sequences comprises decoding means responsive to said program order words, and said means responsive to the execution of said go back to normal order word comprises a go back to normal sequencer which generates signals for momentarily inhibiting the operation of said decoding means and enabling said reading means.

9. In combination:

10. In combination:

11. In combination:

12. In combination:

13. In combination:

14. In combination:

15. The combination in accordance with claim 14 wherein a plurality of said interrupt sources are assigned the same relative level of priority; wherein said interrupt program sequences comprise interrupt level program sequences and interrupt source program sequences; and wherein said interrupt sequencer initiates execution of the interrupt level program sequence associated with the enabled interrupt source having the highest relative priority to record in said memory means the contents of a portion of said central control and to examine the states of said plurality of interrupt sources associated with said interrupt level program sequence to generate an output signal defining an interrupt source program sequence associated with an enabled one of said plurality of interrupt sources; and further comprising means responsive to said output signal for initiating execution of the interrupt source program sequence associated with said enabled interrupt source.

16. In combination:

17. A central processor for a program controlled electrical control system comprising:

18. A program controlled data processing system comprising:

19. In combination:

20. The combination in accordance with claim 19 wherein said operational checking means is responsive to the rereading of said data store to check the obtaining of said data words and to generate a fault signal upon detection of trouble in obtaining information by said rereading.

21. In combination:

22. The combination in accordance with claim 21 wherein:

23. In combination:

24. In combination:

25. The combination in accordance with claim 24 wherein said operational checking means is responsive to said information obtained by said remedial means to check the validity of said data and to generate a fault signal upon detection of invalid data.

26. The combination in accordance with claim 25 wherein said central control comprises:

27. In combination:

28. In combination:

29. In combination:

30. he combination in accordance with claim 29 wherein said operational checking means is responsive to said reread data to check the validity of said data and to generate a fault signal upon detection of implausible data.

31. The combination in accordance with claim 30 wherein said central control comprises:

Description:
BACKGROUND OF THE INVENTION

There are many applications for data handling systems which require a careful allocation of data processing time. The extremely high cost of operating data handling systems imposes a requirement that such systems be used to their fullest capacity. Additionally, the nature of the jobs assigned to data handling system may impose even stricter requirements on the utilization of machine time. Data handling systems which must serve a number of input and output devices on a near real time basis and which must be continuously operable because of the nature of job assigned the system exhibit the strictest requirements for careful allocation of machine time. There are many types of data handling systems to which the principles of this invention apply; however, for purposes of illustration, these principles are described with respect to a particular type of data handling system, namely, an electronic program controlled telephone switching system.

By way of illustration a telephone switching system serves a large number of lines and trunks which must be served without unreasonable delays. Every line and trunk comprises a separate input to the data processor and the rendering of service to a line or trunk may be considered to be an individual problem comparable to the problems fed to the data processor of other data handling systems, for example, a computing center. Obviously, in a large telephone switching system having but a single data processor work functions with respect to many calls must be interleaved in time since inordinate delays would occur if each demand from a line or trunk were completely served before moving to other demands.

A telephone switching system is an extreme example of a data handling system which must be continuously operable; however, there are many other data handling systems such as those controlling a production line or critical scientific operations which must similarly be continuously operable. In such systems constant surveillance of system operation must be maintained and whenever a possible trouble is detected remedial maintenance actions must be undertaken. Accordingly, surveillance of the system operation and any resulting remedial maintenance actions are work functions which must be interleaved with the other tasks of the system, in the illustrative example, serving the demands of the lines and trunks of the system.

It is an object of this invention to efficiently allocate the processor time of a program controlled data processing system to meet the demands of continuous real time operation.

SUMMARY OF THE INVENTION

In accordance with this invention the programs for a program controlled telephone switching system comprise: base level program sequences, timed interrupt program sequences and maintenance interrupt program sequences. The processor for the system comprises: interrupt timing arrangements which are responsive to output signals of processor clock circuits and which are arranged to generate timed interrupt signals for timed interrupt sources which, when set, serve to momentarily halt the execution of base level program sequences and initiate execution of the timed interrupt program sequences. The processor further comprises: a plurality of operational checking circuits which generate discrete trouble signals upon detection of faulty system operation and a plurality of maintenance interrupt sources which are responsive to such trouble signals for momentarily halting the execution of both timed interrupt program sequences and base level program sequences and for initiating execution of the maintenance interrupt program sequences.

In accordance with one feature of this invention, the gathering of information from the lines and trunks to detect requests for service call signaling information, hangups, requests for additional service and the transmission of information via trunks, such as the transmission of dial pulses or multifrequency tones, is performed at timed interrupt processor intervals. Advantageously, the necessary timing precision required for these functions is achieved.

In accordance with another feature of this invention, the further processing of information which is gathered from the lines and trunks at timed interrupt time periods is performed at base level processor time intervals. Advantageously, therefore, this subsequent processing does not interfere with the work functions which must be performed with a fair degree of timing precision.

In accordance with another feature of this invention, the maintenance interrupt sources comprise: a plurality of interrupt sources, each source being assigned a relative interrupt priority in an ordered priority plan. The maintenance interrupt program sequences comprise a plurality of different interrupt program sequences discretely assigned to corresponding interrupt sources and the control arrangement is responsive to output signals of the interrupt sources to initiate execution of the interrupt program sequences assigned to the active interrupt source having the highest relative priority.

There is a distinct possibility that several types of trouble will be simultaneously indicated. It is important to limit the amount of processor time in performing remedial actions and the remedial actions must follow an orderly pattern. Advantageously, the assignment of relative priorities insures completion of the remedial actions.

In accordance with another feature of this invention, the data in the memory includes an ordered list of classes of work to be performed, the ordered list defining a base level executive program and comprising a plurality of sublevel entries. Identical sublevel entries are included in the ordered list for each time a class of work of that sublevel is to be performed in the execution of the base level executive program and the base level program sequences in the memory include sequences for performing work functions in accordance with the base level executive program.

Although the work functions which are completed at the base level need not be completed within a rigid framework of time, there is, however, the need to efficiently allocate base level time. Advantageously, the base level executive program, as implemented by the ordered list of classes of work to be performed, serves to efficiently allocate base level time.

BRIEF DESCRIPTION OF THE DRAWING

FIG. 1 is a general block diagram of a telephone switching system as an illustrative data processing system;

FIG. 2 is a general block diagram of a program store which is a portion of the processor of FIG. 1;

FIG. 3 is a general block diagram of a call store which is a portion of the processor of FIG. 1;

FIG. 4 is a general block diagram of the central control of FIG. 1;

FIGS. 5 and 6 are flow charts;

FIGS. 7 through 9, arranged as shown in FIG. 72, illustrate the operation of the processor of FIG. 1;

FIGS. 10 through 63, arranged as shown in FIG. 71, are a detailed diagram of the central control of FIG. 1 and FIG. 4;

FIG. 64 is a time diagram showing the fundamental pulses employed in the central control;

FIG. 65 is a time diagram which illustrates the processing of three successive program order words;

FIG. 66 illustrates the interrupt hierarchy of the illustrative data processor;

FIGS. 67 through 72 are flow charts of control functions; and

FIGS. 73 and 74 are key sheets showing the arrangement of portions of the illustrative embodiment as enumerated earlier herein.

GENERAL DESCRIPTION

FIG. 1 shows the organization of a telephone system which is employed herein as an illustrative data processing system. The Central Processor 100 comprises a Central Control 20 101, the Program Store 102, and the Call Store 103. The work functions of the telephone system are accomplished by the various units of the input-output system, under control of the Central Processor 100.

The input-output system in the case of the illustrative telephone switching system comprises the Central Pulse Distributor 143, the Master Scanner 144, the TELETYPE 145, the program store writer 146, the AMA 147, the various elements of the Switching Network 120, the Junctor Frame 126, including the Junctor Scanner 127, the Signal Distributor 128 and the Cable Receiver 129, and the Trunk Frames 134 and 137, including the associated Trunk Scanner 135 and 139, the Trunk Signal Distributors 136 and 140, and the Cable Receivers 137 and 141. These elements of FIG. 1 correspond to the Input-output System 270 of the generalized block diagram of FIG. 2.

In accordance with the invention, the system work functions are assigned to various levels of a priority hierarchy. FIG. 66 shows the priority or interrupt hierarchy for the system work functions of the illustrative data processor. This hierarchy includes a base level at which routine jobs are performed, timed interrupt levels at which input-output jobs, which require a fair degree of timing precision, are performed and a plurality of system trouble interrupt levels (maintenance interrupt levels), which are employed to initiate remedial actions in accordance with a prescribed remedial plan. The base level jobs are allocated processor time in accordance with the base level executive program frequency table which is described in the application. The base level executive program includes sublevel Le, which provides time for execution of certain maintenance functions. In the absence of trouble, the trouble interrupt levels G through A remain inactive and processor time is shared by the timed interrupt level programs and the base level programs. The trouble interrupts are initiated upon the detection of corresponding classes of trouble. By organizing the troubles into this interrupt hierarchy, the system work functions, both normal call processing and maintenance, can be accomplished within the real time demands of the system.

FIG. 4 is a general block diagram of the central control of the illustrative data processor. The block diagram schematically shows the system elements which are employed in the implementation of this interrupt system. The operational check circuits of FIG. 4 comprise the Error Detection and Correction Circuit 2400, the Call Store Error Detection Circuit 2200 and the Matching Circuits 3121 and 3622. These are merely illustrative examples of trouble sources which may be organized into the interrupt hierarchy of FIG. 66. In this illustrative example, the remedial circuits of FIG. 4 comprise the Error Correction Circuit of 2400, the Call Store Reread Sequencer 5700 and the Program Store Reread Sequencer 5301.

In the absence of an interrupt request, the central control operates at the base level in accordance with the base level executive program. A timed interrupt is initiated by setting the H or J Interrupt Source 5604, 5605. Upon the occurrence of a timed interrupt, the program instruction presently being executed is allowed to go to completion and then a transfer is made to the appropriate timed interrupt program sequence.

In the case of the detection of trouble, one of the Maintenance Interrupt Sources 5209, 5210, 5211 is set to request initiation of the corresponding interrupt level program sequences. The Interrupt Level Activity Register 6302, 6307 serves to assure that the interrupt program sequences are executed within the framework of the interrupt hierarchy. That is, this register assures that an interrupt level program is not interrupted by an interrupt level program of lower priority in the hierarchy and similarly assures that a high level interrupt program sequence does in fact interrupt a lower level interrupt program sequence. In each instance, the Interrupt Sequencer 4901 is the mechanism for initiating the interrupt program sequences.

The Interrupt Inhibit Control Register 6002, 6003 is employed to inhibit selectively the initiation of the interrupt program sequences during certain procedures.

CENTRAL PROCESSOR (100)

The Central Processor 100 is a centralized data processing facility which comprises three basic elements:

1. Central Control 101;

2. Program Store 102;

3. Call Store 103.

Functionally, the Central Control 101 may be divided into three parts:

1. Basic data processing facilities;

2. Facilities for communicating with input and output equipment; and

3. Maintenance facilities.

As far as possible common circuits within the Central Control 101 are employed to accomplish all of these functions.

The Program Store 102, in the illustrative embodiment, is a permanent magnet-magnetic wire memory (Twistor) and therefore affords nondestructive readout of the information stored therein. The Program Store 102, being semipermanent in nature, is employed to store the less volatile system information including the system programs. Information is written into the Program Store 102 by means of the Program Store Card Writer 146.

The Call Store 103, in the illustrative embodiment, is a ferrite sheet memory; therefore, information may be written into or read from the Call Store 103. Since information in the Call Store 103 is readily changed at the normal system speed, the more volatile system information is stored therein.

CENTRAL CONTROL (101)

The Central Control System 101 comprises two independent central controls for purposes of system reliability. The independent central controls are both arranged to perform all of the necessary system actions. In the usual mode of operation both independent central controls carry on the same work functions on the basis of duplicate input information. This is termed the in-step mode of operation. However, only one of the two central controls can alter the system status or control the execution of telephone functions at any given instant. That is, the two independent central controls provide control and maintenance information to the remainder of the system on a mutually exclusive basis. The manner in which the decision is reached as to which of the two central controls is in control of the system at any given instant is described later herein.

In the illustrative embodiment the Central Control 101 executes one order, other than a transfer, a program store data word reading or a variety of work operations which require the use of the special purpose sequence circuits, which are described later herein, per basic 5.5 microsecond instruction cycle, which is the time cycle of the Program Store 102 and of the Call Store 103. A microsecond clock in the Central Control 101 provides one-half microsecond pulses at one-quarter microsecond intervals which pulses permit the Central Control 101 to perform a series of sequential actions within one basic 5.5 microsecond instruction cycle.

The design of the Central Control 101 is predicated upon the demands of real time, the internal functions it must perform and the basic instructions necessary to accomplish these ends.

Communications between major divisions of this system are by way of bus systems and by way of multiple conductor cables which provide discrete communication paths between selected divisions of the system. The buses and cables are detailed later herein.

Communication within a major division of this system, such as a Central Control 101, may be by way of bus systems; however, such internal bus systems comprise a plurality of single rail parallel paths and are not intended to be covered by the following discussion.

A bus system, as defined herein, comprises a plurality of pairs of conductors which may, in many respects, be compared to a tapped delay line. The time delay of a bus system is not necessarily an advantageous aspect of the bus system but, rather, is an inherent characteristic thereof. A bus is a transmission means for transferring information from one or more sources to a plurality of destinations. A bus is transformer coupled to both the information source or sources and to the destination loads. The information sources are connected to the bus conductors in parallel and the loads are coupled to transformers which are serially connected in the bus conductors. Dual winding load transformers are employed and the two windings of the pair of windings are connected in series with the individual conductors of a pair of conductors of a bus. The load is lightly coupled to the bus as are the taps of a delay line and the bus is terminated in its characteristic impedance also in a manner well-known in the manufacture of delay lines.

A bus system is connected to a number of equipments which may be physically separated by distances which are large compared to the distances between taps of a normal delay lines line. Data transmitted over a bus is in pulsed form and in this particular embodiment extremely short pulses in the order of one-half microsecond are transmitted. Information on a bus system is transmitted in parallel, that is, a data word or a command is transmitted in parallel over the plurality of pairs of conductors of the bus and it is important that such parallel data elements arrive at a given load equipment at a common time. Accordingly, the pairs of conductors of a bus system are arranged to follow similar physical paths and their lengths are kept substantially identical.

There are a number of bus systems and these are described with respect to the major divisions of the system along with the general description of those divisions. Although the buses of this illustrative embodiment are shown in the drawing to be a single continuous path from a source to one or more destinations, there are, in fact, many special techniques employed to minimize propagation time from an information source to a destination point and to equalize propagation times between an information source and similar destinations. Such techniques are not discussed herein as they are not essential to an understanding of this invention; however, in a large office the routing of buses and the special techniques which are designed to achieve the above-noted desirable result are relatively important to an optimum system.

A bus system generally comprises two duplicate buses which in the drawing are labeled bus O and bus 1. In that there are a number of bus systems as will be set forth later herein, there are a number of buses labeled bus 0 and bus 1; however, each bus system is identified in the drawing.

In addition to the bus systems there are a plurality of multiple conductor cables which provide discrete communication paths between selected divisions of the switching system. The conductor pairs of these cables are in many instances transformer coupled both to the information source and the destination load; however, there are also a number of cables wherein DC connections are made to both the source and the destination load.

While a bus is a unidirectional transmission means, there are specific instances wherein a cable pair comprises a bidirectional transmission means.

The multiple conductor cables generally provide unduplicated paths between the selected divisions of the system while, as previously noted, the buses of a bus system generally provide duplicated paths between selected divisions of the system.

SWITCHING NETWORK (120)

The Switching Network 120 serves to selectively interconnect through metallic paths lines to lines via junctor circuits, lines to trunks, trunks to trunks, lines and trunks to tones, signal transmitters, signal receivers, am maintenance circuits, and, in the case of lines, to provide connections to coin supervisory circuits, et cetera. Two-wire paths between the above enumerated equipments are provided through the network of this one specific illustrative embodiment.

The Switching Network 120 only provides communication paths, means for establishing such paths and means for supervising such paths. The Central Processor 100 maintains a record of the busy and idle states of all network links and a record of the makeup of every established or reserved path through the network. These records are maintained in the Call Store 103 of the Central Processor 100. The record relating to the busy-idle states of the network elements is generally referred to as the Network Memory Map. The Central Processor 100 interprets requests for connection between specific pieces of equipment and determines a free path through the network by examining the connection requirements and the above-noted busy-idle states of the possible paths.

The network is divided into two major portions, namely, line link networks which terminate lines and junctors (both wire junctors and junctor circuits) and the trunk link networks which terminate trunks and wire junctors, service circuits such as tone circuits, signal receivers, signal transmitters, et cetera. A line link network comprises four switching stages, the first two stages of which are concentrating stages, while a trunk link network comprises four stages generally without concentration. In this one specific illustrative embodiment there is a single path provided between a line and each of a plurality of line link network junctor terminals. There are four paths through a trunk link network between a trunk terminal and each of a plurality of trunk link network junctor terminals.

Certain junctor terminals of each line link network are connected directly through wire junctors (a pair of wires without other circuit elements) to certain junctor terminals of the trunk link networks; others of the line link network junctor terminals are interconnected either by way of junctor circuits (which provide talking battery and call supervision facilities) or, in very large offices, by way of junctor circuits and additional stages of switching.

Junctor terminals of a trunk link network which are not connected to junctor terminals of a line link network are directly interconnected by wire junctors or, in extremely large offices, by way of wire junctors and additional switching stages.

Control of the network and the control and supervision of the elements connected to the network are distributed through a number of control and supervisory circuits. This disbursement provides an efficient and convenient buffer between the extremely high speed Central Processor 100 and the slower network elements. The principal control and supervisory elements are:

1. The network control circuits which accept commands from the Central Processor 100 and, in response to such commands, selectively establish portions of a selected path through the network or, in response to such commands, execute particular test or maintenance functions.

2. The network scanners which comprise a ferrod scanning matrix to which system elements such as lines, trunks and junctor circuits are connected for purposes of observing the supervisory states of the connected elements; the network scanners, in response to commands from the Central Processor 100, transmit to the Central Processor 100 indications of the supervisory states of a selected group of circuit elements.

3. The network signal distributors which, in response to commands from the Central Processor 100, provide an operate or a release signal on a selected signal distributor output terminal which is termed herein a signal distributor point. A signal of a first polarity is an operate signal and a signal of the opposite polarity is a release signal. Signal distributor output signals are employed to operate or release control relays in junctor circuits, trunk circuits, and service circuits. A magnetically latched wire spring relay is used generally throughout the junctor circuits and trunk circuits for purposes of completing the transmission paths through these elements and for circuit control in general. The magnetically latched relay operates in response to an operate signal (-48v.) from a signal distributor and releases in response to a release signal (+24v.) from a signal distributor. The network signal distributors are relatively slow operating devices in that they comprise pluralities of relays. Signal distributor output signals are pulsed signals and a single signal distributor can be addressed to only one of its output points at any given instant.

Of the three above-noted network control and supervisory elements (there are pluralities of each of these) the network controllers and the signal distributors are relatively slow operating devices and to assure completion of a task, each of these devices is addressed at the maximum repetition rate of once every 25 milliseconds. This period of time is sufficient to assure completion of the work function associated with a network controller or signal distributor command. Therefore, there is no need for the Central Processor 100 to monitor these devices to assure completion of their assigned tasks before transmitting a subsequent command to the same controller. However, to assure continued trouble free operation scan points which reflect the successful completion of a preceding order are examined before sending a new command to the controller. The network scanners, however, are relatively fast operating devices and these may be addressed at a maximum rate of once every 11 microseconds.

SUBSCRIBER CIRCUITS

The subscriber sets such as 160, 161 are standard sets such as are employed with present day telephone switching systems. That is, these are sets which connect to the central office via a two-wire line, respond to normal 20 cycle ringing signals and may be arranged to transmit either dial pulses or TOUCH-TONES or may be arranged for manual origination. Subscriber stations comprising one or more subscriber sets such as 160, 161 all terminate at line terminals of a line link network. A subscriber line may have either TOUCH-TONE sets or dial pulse sets or combinations of TOUCH-TONE and dial pulse sets. Information concerning the type of call signaling apparatus associated with a subscriber's line is included in the class of service mark which is maintained normally in the Program Store 102; however, after a recent change this information is found in whole or part in the Call Store 103.

Supervision of a subscriber's line is by way of the line scanners which are located in the vicinity of a line link network. Such scanners, however, are generally employed only to detect requests for service. After a request for service has been served and a subscriber's line has been connected through the network to a trunk or to a service circuit such as a subscriber's dial pulse receiver, subscriber's TOUCH-TONE receiver, a tone source, et cetera, or to another subscriber via a junctor circuit, the scanning element associated with a subscriber's line is disconnected and subsequent supervision for answer and disconnect is transferred either to the trunk, the service circuit, or the junctor circuit. The subscriber's line scanning element is reconnected only after the subscriber's line has been released from the prior connection.

Service circuits such as subscriber call signaling receivers and subscriber information tone sources such as busy tone, ringing tone, ringing induction tone, recorded announcements, vacant level tone, et cetera, are terminated at trunk terminals of the trunk link network. Connections between a subscriber's station and a service circuit such as a dial pulse receiver or a TOUCH-TONE receiver and connections between a subscriber's set and a tone source include the four stages of a line link network and the four stages of a trunk link network.

Communication with a distant office or an operator is by way of two-way trunks, outgoing trunks, incoming trunks, operator trunks, et cetera, which are located in the Trunk Frames 134, 138 and which all terminate at trunk terminals of a trunk link network. In the case of a call between a subscriber's station and a trunk or service circuit, talking battery to the subscriber is provided through the trunk or service circuit and supervision for disconnect is accomplished by scanning the scanning elements of the connected trunk or service circuit.

CENTRAL PULSE DISTRIBUTOR (143)

The Central Pulse Distributor 143 is a high speed electronic translator which provides two classes of output signals in response to commands from the Central Processor 100. The two classes of output signals are termed unipolar signals and bipolar signals and are respectively associated with central pulse distributor output terminals designated CPD unipolar points and CPD bipolar points. Both classes of signals comprise pulses transmitted from the CPD output points to the using devices via individual transmission pairs which are transformer coupled both to the CPD output points and to the load devices.

Central pulse distributors for purposes of reliability are employed in pairs and corresponding bipolar output points of the two central pulse distributors of a pair are employed to address the same circuit element. Similarly, unipolar points are associated in pairs to accomplish related system functions.

The address coding associated with each central pulse distributor is sufficient to define 1,024 CPD points. Of these 1,024 points, 512 are assigned to unipolar points while the other 512 are assigned to 256 pairs of bipolar points.

The most common use of the unipolar signals is to momentarily enable a particular piece of equipment such as a Network Controller 122, a Network Scanner 123, et cetera. The enablement signals comprise relatively important information; therefore, in response to an enablement signal the enabled circuit, shortly after the receipt thereof, tram transmits a verify signal back to the Central Pulse Distributor 143 over the same pair that was used to transmit the enable signal. The verify signal is received at the Central Pulse Distributor 143 and is translated to the same form as the address portion of the command which was transmitted from the Central Control 101 to the Central Pulse Distributor 143. The translated verify signal is transmitted to the Central Control 101 where it is compared against the address which was transmitted. A match assures enablement of the correct unit of equipment. Not all unipolar output signals represent information which is as important as the enable signals; therefore, certain unipolar signals are not verified.

Both unipolar output signals and bipolar output signals comprise pulses and, as in the case of the signal distributors, only one CPD output point, either unipolar or bipolar, can be enabled at any given instant. Unipolar output signals while generally employed to provide transient gating signals to enable the receiving circuit are also used to set and reset flip-flops in particular instances. Bipolar output signals are employed to both selectively set and reset flip-flops at the receiving circuits. A bipolar signal is accompanied by a "WRMI" security signal when employed to control certain critical circuits. A signal of the first polarity serves to set a flip-flop and a signal of the other polarity serves to reset a flip-flop. The system generally has means for verifying the setting or resetting of a flip-flop in response to CPD bipolar signals; therefore, bipolar signals are not directly verified in the manner employed in the case of unipolar signals.

The Central Pulse Distributor 143 is an electronic device; therefore, its output signals are employed to control other relatively high speed circuits. For example, central pulse distributor output signals are employed to control the sending of both multifrequency signals and dial pulses from a switching center to a distant office via a trunk circuit and central pulse distributor output points are also employed to set or reset control flip-flops in a variety of system equipments. Generally these control flip-flops must be set or reset at speeds which approach a basic system instruction cycle; therefore, the slow speed signal distributor output signals are not adequate.

MASTER SCANNER (144)

The Master Scanner System 144 so comprises a ferrod matrix for terminating circuits to be supervised and means for selectively transmitting to Central Control 101 the supervisory states of a selected group of supervised circuits in response to a command from the Central Processor 100. The scanning element employed is the ferrod device. A ferrod comprises an apertured stick of ferromagnetic material having control, interrogate, and readout windings. The control windings are placed in series with electrical connections which indicate the supervisory state of the supervised circuit. For example, where a ferrod is employed to supervise a subscriber's line, the ferrod is placed in series with the line conductors and the subscriber's subset. When the subscriber's subset is in the on-hook state there is no current flowing in the ferrod control winding, while when the subscriber is in the off-hook state current does flow in the ferrod control winding. The interrogate and readout windings merely comprise individual conductors which thread through the two apertures of the ferrod, that is, both the interrogate conductor and the readout conductor are threaded through both apertures of the ferrod. An interrogate signal comprises a bipolar pulse which when applied to the interrogate conductor causes an output signal in the readout conductor of every ferrod which is supervising a circuit which is in the on-hook state. If the ferrod is supervising a circuit in the off-hook state, a readout pulse is not generated due to saturation of the ferrod.

The Master Scanner System 144 comprises one or more scanners each capable of supervising 512 circuits. The scanners of the Master Scanner 144 are not duplicated; however, there is a complete duplication of access circuitry within a scanner to provide system reliability. The Master Scanner 144 is generally like the Network Scanners (123, 127, 135, 139) which are distributed through the network frames; however, the Master Scanner 144 is employed to supervise certain circuit elements which reflect the operating state of the system and, therefore, the supervisory states of these elements are helpful in system maintenance and trouble diagnosis. For example, scan points of the Master Scanner 144 are employed to monitor the voltage levels of critical voltage supplies, and the states of control relays and logic packages such as flip-flops to assure proper operation thereof. In addition, the Master Scanner 144 is employed to monitor a few circuits which terminate on the Switching Network 120 and which for efficiency of grouping are more conveniently examined by way of the Master Scanner 144.

TELETYPE UNIT (145)

The Teletype Unit 145 provides means for communicating information from maintenance personnel to the switching system and for transmitting information from the switching system to maintenance personnel.

By means of the Teletype Unit 145 maintenance and operating personnel may request limited specific system actions. Included in the system actions is the ability to enter in the Call Store 103 recent change translation information. That is, in the course of daily routine business there are often requirements for changes in directory number to line equipment number translations. For example, when a line is disconnected for any reason, a new line is added, or changes are made in the service afforded a line, a recent change entry is required. Recent change information is held in a Call Store 103 until such time as the coding of a Program Store 102 is changed to reflect the recent change information.

In the course of routine operations the system may encounter abnormal or trouble operating conditions and information relating to such abnormal or trouble conditions is printed out on the teletype for the information of the maintenance personnel.

PROGRAM STORE CARD WRITER (146)

The Program Store Card Writer 146 provides means for coding the information cards of the Program Store 102. Information to be placed on the magnet cards is obtained either from a magnetic tape source or from the Central Processor 100. The card writer serves to magnetize the card magnets whenever a 0 is to be inserted in the memory and to demagnetize the card magnets wherever a 1 is to be inserted in the memory.

MESSAGE ACCOUNTING TAPE UNIT (147)

The automatic Message Accounting Tape Unit 147 is utilized by the system to store telephone charging information. This information is stored in a single complete entry on magnetic tape. The tapes or the information on the tapes are subsequently transmitted to a data processing accounting center where the charge information is employed in computing a subscriber's cumulative charges.

The switching system collects certain data pertaining to both message rate and toll calls and this data is assembled in a Call Store 103. After all of the information which the data processing accounting center will require to compute a subscriber's charge has been collected, the information is transferred from the Call Store 103 to the tape unit.

The tape units are employed in a pairs to assure system reliability.

GENERAL DISCUSSION

The Central Processor 100 always comprises two central controls. In the usual mode of operation both central controls are performing the same work operations. Whenever possible the central controls obtain the same input information from different sources and over different transmission facilities. That is, in that the information in both the Program Stores 102 and the Call Stores 103 is duplicated in separate stores of the respective store systems, the first central control will receive information from a first store having the desired information and via a first bus of a bus system, while the second central control will receive information from the other store having the desired information via the other bus of the bus system. Assuming that the information obtained from the two stores, either Program Store 102 or Call Store 103, is identical and that the communication paths, i.e., buses are operating properly, the two central controls will perform the same work functions. However, at any given instant only one central control can alter the connections through the network or, in general, control the operation of the system. There are a few exceptions whereby the other central control may perform off line work functions which are different from those which are performed by the central control which is in control the of the system functions.

In the normal in-step mode of operation set forth above the two central controls theoretically are operating upon identical input information; therefore, their operation should be identical. Correspondence of action of the two central controls is carefully checked by routinely comparing the flow of data through each central control. In the event that a mismatch is found between the data as it flows through the two central controls, the system is altered.

In addition to matching the flow of data through the two central controls each central control performs a plurality of checks on the data which it processes. That is, information which is obtained from both the Program Store 102 and the Call Store 103 is protected by means of parity bits and, in the case of the Program Store 102, information is further protected by means of Hamming encoding which permits the detection of errors and the correction of single errors. In the event that either central control detects an error, either single or double, in the information received from a program store, the operation of the system is momentarily halted. In the event of a single error, the correction is made and in the case of a double error, the information is reread from the program store information source. In the case of call stores, a parity failure causes the system to momentarily halt and the information is reread from the call store.

At this point it might be well to differentiate between trouble indications which represent errors and faults. An error as defined herein is a malfunction of equipment which the system is not able to reproduce by a systematic logical procedure, while a fault is a malfunction of equipment which the system is able to reproduce repeatedly by a systematic logical procedure. When a trouble indication is first noted it is not known whether this indication represents an error or a fault; therefore, the system must undertake steps to make this determination. For example, as previously noted, if an error is detected in reading the Call Store 103 or an address error or a double error in the case of the Program Store 102, the system temporarily halts and rereads the particular store. If the trouble indication persists, a possible fault is indicated, while if the trouble indication does not persist, a mere transient error is indicated and the central controls proceed with their assigned tasks. It should be noted, however, that the central control increments a physical binary counter each time an error is noted and from time to time this counter is reset. At some time before resetting the counter, however, the output of the counter is examined to assure that the number of errors which have occurred in a fixed unit of time have not exceeded a certain maximum number. This procedure assures that the system is not overly burdened by large numbers of single nonrepeatable errors which probably indicate a system trouble. Nonrepeatable errors reduce the call processing capacity of the system in that the rereading operation requires additional time.

The realization of system maintenance objectives relies heavily on maintenance programs. Upon detection of trouble, a fault recognition program is called upon to recover the system's call processing ability. The fault recognition programs are assigned a high priority; however, their length is held to a minimum to avoid disrupting call processing. The fault recognition programs control any necessary switching or rearrangement of equipment; and request, for subsequent execution, an appropriate low priority diagnostic program which is designed to localize the fault within the faulty unit of equipment. The results of the diagnostic programs are printed out via the Teletype Unit 145 for the use of the maintenance personnel.

In addition to making routine checks on the validity of information which is received from the stores and to making routine checks upon the flow of information through the Central Processor 100, the system also performs a plurality of routine test programs. The test programs have a low execution priority and are designed to search for system faults which are likely to go undetected in normal call processing. The routine test programs can be initiated either automatically on a scheduled basis or as a function of other programs or may be manually requested by means of the Teletype Unit 145.

PROGRAM STORE (102)

The Program Store of the Central Processor comprises a plurality of independent memory units. FIG. 2 is a block diagram of one such independent memory unit.

The Program Store of FIG. 2 is passive in the absence of commands from the Central Control.

In the illustrative embodiment, the Program Store is a permanent magnet-magnetic wire memory (Twistor) which affords nondestructive readout of the information stored therein. The Program Store, being semipermanent in nature, is employed to store certain system data which is changed only at relatively long intervals and the system programs. Information is written into the Program Store by means of the Program Store Card Writer 146 (FIG. 1) under commands from the Central Control 101.

Commands for controlling the Program Store are transmitted from the Central Control to the Program Store via the Bus System 6400, which comprises a 0 bus and an identical 1 bus. As seen in FIG. 2, information can be selectively gated from the 0 bus or the 1 bus to the Control 701 via the Input Path Selection Gates 702 and 703, respectively. The Gates 702 and 703 are selectively enabled in accordance with the contents of the Route Register 501. The Control 701 responds to commands from the Central Control to: (a) enable the Timing Circuit 7800, 7801 to initiate a memory timing cycle, (b) generate control signals for the Access Circuit 7401, 7402, and (c) generate signals for the Operational Check Circuit 7728. Output signals of the Timing Circuit 7800, 7801 serve to advance the Control 701 through a fixed sequence and to provide gating signals for the Access Circuits 7401, 7402 and for the Readout Circuit 7703 through 7706. The Memory 704 of the Program Store of FIG. 2 comprises a plurality of memory (Twistor) modules not to exceed 16 in number. Each memory words a module comprises 8,192 44 bit words. The memory words are associated in pairs at 4096 discrete word pair addresses. The readout circuits 7703 through 7706 have provisions for selecting a chosen 44 bit word of the pair of words which are obtained by addressing one of these discrete word pair addresses. The Operational Check Circuit 7728 monitors the internal operation of the Program Store of FIG. 2 and generates a check signal (termed an all seems well ASW signal), which is returned to the Central Control along with the information which is read from the memory module. Output signals of the Timing Circuit 7800, 7801, along with signals generated within the Control 701, provide gating signals for selectively transmitting information read from the Memory 704 to one of the two identical buses of the Program Store Response Bus System 6500. That is, the Output Path Selection Gates 705 and 706 are selectively enabled to gate the information read from the Memory 704 to the 0 bus and to the 1 bus, respectively.

As seen in FIG. 2, the Route Register 501 is selectively controlled by signals received over the Cables 6700, 6701. The Cables 6700 and 6701 are output cables of the Central Pulse Distributor 143. The Central Pulse Distributor 143 selectively generates output signals on conductors of these cables in ad accordance with commands received from the Central Control 101.

The Central Control 101 manipulates the information in the Route Register 501 to achieve a desired association of an independent Program Store memory unit and the buses of the Command Bus System 6400 and of the Response Bus System 6500.

In summary, the independent Program Store memory unit, such as is shown in FIG. 2, accepts command signals from the Central Control over a selected one of the buses 0 or 1 of the Program Store Command Bus System 6400 and transmits responses to the Central Control via a selected one of the buses 0 or 1 of the Response Bus System 6500. The Program Store of FIG. 2, through the Operational Check Circuit 7728, monitors the internal operation of that program store memory unit and generates check signals for transmission to the Central Control along with information read from the Memory 704. The internal operation of a program store unit is in accordance with timing signals generated by the Timing Circuit 7800, 7801 and information is transmitted to the Central Control at times determined by such internally generated timing signals. The timing circuit is arranged to initiate a timing sequence when a command is received from the Central Control.

The Memory System 371 comprises a plurality of independent Program Stores and a plurality of independent Call Stores. The organization of the long term data and program information into one type of memory unit and the rapidly changing data into the other types of memory units is not essential to the present invention, but rather is a characteristic of the illustrative data processing system which is described herein. That is, the Memory System 371 could comprise a plurality of independent read and write memories in which all of the system information was stored.

The number of Program Stores is determined principally by the size of the switching system, i.e., the number of lines and trunks served by the system and the variety of services rendered the lines and trunks. However, at least two program stores are always used to achieve system dependability through the teachings of this invention.

The information capacity of a program store is divided into a left half and a right half. Where the number of program stores employed exceeds two, the information in the right half of the first store is duplicated in the left half of the second store; the information in the right half of the second store is duplicated in the left half of the succeeding store; and the information in the right half of the last store is duplicated in the left half of the first store. This arrangement permits full duplication of information with either an even or an odd number of stores.

CALL STORE (103)

The Call Store of the Central Processor comprises a plurality of independent memory units. FIG. 3 is a block diagram of one such independent memory unit.

The Call Store of FIG. 3, like the Program Store of FIG. 2, is passive in the absence of commands from the Central Control.

In the illustrative embodiment, a word organized ferrite sheet memory is employed as the memory element of the Call Store 103. The Call Store of FIG. 3 is a destructive readout type memory and information may be read from or written into this memory in a time cycle which corresponds to the time cycle of the Central Control 101. The Call Store, being temporary in nature, is employed to store the system data which is subject to rapid change in the course of processing calls through the system.

Commands for controlling the Call Store are transmitted from the Central Control to the Call Store via the Bus System 6401, which comprises a 0 bus and an identical 1 bus. Such commands comprise an address defining a location within the Memory 8500 of FIG. 3 and an instruction portion which indicates that the command is to read information from the memory or to write information into the memory. In the case of commands to write information into the memory, the data to be placed in memory is transmitted from the Central Control to the Call Store via the Bus System 6402, which comprises a 0 bus and an identical 1 bus. As seen in FIG. 2, information can be selectively gated from the 0 bus and the 1 bus of the Bus Systems 6401 and 6402 for use in controlling the memory unit of FIG. 3. The Gates 802 through 805 are controlled in accordance with the contents of the Route Register 806 of FIG. 3. The Control 801 responds to commands from the Central Control to: (a) enable the Timing Circuit 8800 to initiate a memory timing cycle, (b) generate control signals for the Access Circuit 8501, 8502 and the Readout Circuit 8503, 8504, (c) enable the Operational Check Circuit 807, and (d) provide control signals for the Output Path Selection Gates 808. Output signals of the Timing Circuit 8800 serve to advance the Control 801 through a fixed sequence and to provide gating signals for the Access Circuit, the Readout Circuit and the Operational Check Circuit of FIG. 3. The Output Path Selection Gates 808 are selectively enabled by the Control Circuit 801 in accordance with the state of the Route Register 806 to gate data read from the Memory 8500 to the 0 or the 1 Call Store Response Bus of the Bus System 6501.

As seen in FIG. 3, the Route Register 806, like the Route Register 501 of the Program Store of FIG. 2, is controlled by signals over the Cables 6700, 6701. That is, the Route Register is controlled by output signals of the Central Pulse Distributor 143 in accordance with commands received by the Central Pulse Distributor from the Central Control 101.

The Central Control 101 manipulates the information in the Route Register 806 to achieve a desired association of the independent call store memory units and the buses of the Command Bus System 6401, the Data Bus System 6402 and the Response Bus System 6501.

In summary, an independent call store memory unit, such as is shown in FIG. 3, accepts command signals and a data from the Central Control over a selected one of the buses 0 or 1 of the Call Store Command Bus System 6401 and the Call Store Data Bus System 6402 and transmits responses to the Central Control via a selected one of the buses 0 or 1 of the Response Bus System 6501. The Call Store of FIG. 3, through the Operational Check Circuit 807, monitors the internal operation of the call store memory and generates check signals for transmission to the Central Control along with the information read from the Memory 8500. The internal operation of a Call Store unit is in accordance with timing signals generated by the Timing Circuit 8500 and information is transmitted to the Central Control at times determined by such internally generated timing signals. The Timing Circuit 8500 is arranged to initiate a timing sequence when a command is received from the Central Control 101.

As previously discussed, the Call Store 103 comprises a plurality of independent Call Stores. The number of call stores is determined, like the program store is determined, by the size of the switching system and the variety of services rendered the lines and trunks of the system. At least two call stores are always used to achieve system dependability. The information capacity of a call store is divided into a left half and a right half. Where the number of call stores employed exceeds two, information is duplicated in the stores in the pattern described with respect to the storage of information in the program stores.

EQUIPMENT DESCRIPTION

The drawing employed herein in many instances shows single lines as the connections between blocks; it is to be understood that single lines are merely symbolic and may indicate numerous connections such as a cable or a bus as previously defined herein.

In certain instances, the binary states of a circuit are provided on a pair of output conductors which are alternatively energized. Such an arrangement is called a 2-rail circuit and binary devices which provide individual 0 and 1 state output signals are called 2-rail logic elements herein. In other instances, only one of the two states of a binary device is employed as an output signal, and such arrangements are called single rail circuits. Throughout the drawing gates, symbols of amplifiers, et cetera, are understood to be in many cases a plurality of gates or amplifiers comprising a number of channels equal to the number of individual signals to be transmitted therethrough. For example, in FIG. 11 an the AND gate 1104 when enabled, transmits the 10 information bits A0--A5, S1, S2, W, and CM from the output of the Cable Receiver 1102 to the input of the symbolic plural OR gate 1109. Accordingly, Cable Receiver 1102 comprises 10 transformers and 10 amplifiers; AND gate 1104 comprises 10 AND gates, and OR gate 1109 comprises 10 OR gates. Further, in the drawing there are two types of AND gates such as AND gate 3006 shown in FIG. 30. This symbol represents a plurality of AND gates equal in number to the number of information paths included in a cable. If the cable conveys information on a single rail basis, then there is one AND gate per information bit; however, if the cable conveys information on a 2-rail basis, then the number of AND gates represented by the symbol equals 2 times the number of information bits.

The second type of AND gate which converts information from 1-rail to 2-rail is symbolized in FIG. 30 wherein gate 3008 is shown as a conventional AND gate with a bar included inside the symbol. This type of AND gate is shown in schematic detail in FIG. 30A. The data on cable 30A04 is on a single rail basis, that is, the cable 30A04 comprises one conductor for each of the information bits included in the data and these conductors are energized when a 1 is transmitted and are deenergized or held near ground when a 0 is transmitted. The single rail data on cable 30A04 is inverted on a bit-by-bit basis by the symbolic inverter 30A03, the output conductors of which comprise the input cable to conventional AND gate 30A02. The input signals to the AND gate 30A02 are the complement of the input signals to the AND gate 30A01. The AND gates 30A01 and 30A02 may be enabled by a signal on conductor 30A05 and the output terminals of these gates represent the 1 and 0 rails which are employed to set and reset registers. The symbol for this type of converting AND gate is shown in FIG. 30A and is labeled 30A06.

CENTRAL CONTROL (101)

The Central Control 101, which is shown in simplified block diagrams form in FIG. 4 and in detail in FIGS. 10 through 63, is the system data processing unit. For the purpose of discussion the Central Control 101 may be divided into three basic parts:

1. Basic data processing facilities;

2. Facilities for communicating with central control input sources and output devices; and

3. Maintenance facilities.

The central control performs system data processing functions in accordance with program orders which are stored principally in the Program Store 102. In a few specialized instances program orders are found in the Call Store 103. The program orders are arranged within the memories in ordered sequences. The program orders fall into two general classifications, namely, decision orders and nondecision orders.

Decision orders are generally employed to institute desired actions in response to changing conditions either with regard to lines or trunks served by the switching system or changing conditions with respect to the maintenance of the system.

Decision orders dictate that a decision shall be made in accordance with certain observed conditions and the result of the decision causes central control to advance to the next order of the current sequence of order words or to transfer to an order in another sequence of order words. The decision to transfer to another sequence may be coupled with a further determination that the transfer shall be made to a particular one of a plurality of sequences. Decision orders are also termed conditional transfer orders.

Nondecision orders are employed to communicate with units external to Central Control 101 and to both move data from one location to another and to logically process the data. For example, data may be merged with other data by the logical functions an of AND, OR, EXCLUSIVE-OR, product mask, et cetera, and also data may be complemented, shifted, and rotated.

Nondecision orders perform some data processing and/or communicating actions, and upon completion of such actions most nondecision orders cause the Central Control 101 to execute the next order in the sequence. A few nondecision orders are termed unconditional transfer orders and these dictate that a transfer shall be made from the current sequence of program orders to another sequence of order words without benefit of a decision.

The sequences of order words which are stored principally in the program store comprise ordered lists of both decision and nondecision orders which are intended to be executed serially in time. The processing of data within the central control is on a purely logical basis; however, ancillary to the logical operations, the Central Control 101 is arranged to perform certain minor arithmetic functions. The arithmetic functions are generally not concerned with the processing of data but, rather, are primarily employed in the process of fetching new data from the memories such as from the Program Store 102, the Call Store 103, or particular flip-flop registers within the Central Control 101.

The individual order words are designed to complement the physical characteristics of the central processor and to complement each other. Thus, through careful design of the program order word structure it is possible to maximize the data process capacity of the central processor.

The Central Control 101, in response to the order word sequences, processes data and generates and transmits signals for the control of other system units. The control signals which are called commands are selectively transmitted to the Program Store 102, the Call Store 103, The the Central Pulse Distributor 143, the Master Scanner 144, the network units such as the Network Scanners 123, 127, 135, 139, Network Controllers 122, 131, Network Signal Distributors 128, 136, 140, and the miscellaneous units such as the Teletype Unit 145, the Program Store Card Writer 146, and the AMA Unit 147.

The Central Control 101 is, as its name implies, a centralized unit for controlling all of the other units of the system. A Central Control 101 principally comprises:

A. A plurality of multistage flip-flop registers;

B. A plurality of decoding circuits;

C. A plurality of private bus systems for communicating between various elements of the central control;

D. A plurality of receiving circuits for accepting input information from a plurality of sources;

E. A plurality of transmitting circuits for transmitting commands and other control signals;

F. A plurality of sequence circuits;

G. Clock sources; and

H. A plurality of gating circuits for combining timing pulses with DC conditions derived within the system.

The Central Control 101 is a synchronous system in the sense that the functions within the Central Control 101 are under the control of a multiphase Microsecond Clock 6100 which provides timing signals for performing all of the logical functions within the system. The timing signals which are derived from the Microsecond Clock 6100 are combined with DC signals from a number of sources in the Order Combining Gate Circuit 3901. The details of the Order Combining Gate circuit 3901 are not shown in the drawing as the mass of this detail would merely tend to obscure the inventive concepts of this system.

SEQUENCE OF CENTRAL CONTROL OPERATIONS

All of the system functions are accomplished by execution of the sequences of orders which are obtained from the Program Store 102 or the Call Store 103. Each order of a sequence directs Central Control 101 to perform one operational step. An operational step may include several logical operations as set forth above, a decision where specified, and the generation and transmission of commands to other system units.

The Central Control 101 at the times specified by phases of the Microsecond Clock 6100 performs the operational step actions specified by an order. Some of these operational step actions occur simultaneously within Central Control 101, while others are performed in sequence. The basic machine cycle, which in this one illustrative embodiment is 5.5 microseconds, is divided into three major phases of approximately equal duration. For purposes of controlling sequential actions within a basic phase of the machine cycle each phase is further divided into one-half microsecond periods which are initiated at one-quarter microsecond intervals.

The basic machine cycle for purposes of designating time is divided into one-quarter microsecond intervals, and the beginning instants of these intervals are labeled TO through T22. The major phases are labeled phase 1, phase 2, and phase 3. These phases occur in a 5.5 microsecond machine cycle as follows:

A. Phase 1-- T0 to T8;

B. Phase 2-- T10 to T16;

C. Phase 3-- T16 to T22.

For convenience in both the following description and in the drawing, periods of time are designated bTe where b is the number assigned the instant at which a period of time begins and e the number assigned the instant at which a period of time is ended. For example, the statement 10T16 defines phase 2 which begins at time 10 and ends at time 16. The division of time is shown in FIG. 64.

As seen in FIG. 61, each central control has a 2 2 megacycle Clock Oscillator 6106. The Clock Oscillator 6106 of the active central control serves to drive the Microsecond Clock 6100 in both the active central control and the standby central control. The Oscillator 6106 of the active central control is connected to the input of the Microsecond Clock 6100 of the active central control via AND gate 6108 and OR gate 6110. AND gate 6108 is enabled by a signal on order cable conductor 61AU which indicates that the active unit flip-flop 55AU is in the 1 state. The output of the Oscillator 6106 is transmitted to the other central control via conductor 6111, amplifier 6112, transformer 6113, and an interconnecting transmission pair. In the other central control the oscillator output signal is received via a transformer such as 6114, an amplifier such as 6115, conductor 6116 and in the standby central control this signal is transmitted to the Microsecond Clock 6100 via a path which includes AND gate 6109 and OR gate 6110. AND gate 6109 is enabled by a signal on order cable conductor 61AU. The Microsecond Clock 6100 in the active central control generates a clock phasing pulse labeled Clock Phase-I which is transmitted from the active central control to the standby central control via conductor 6117, amplifier 6118, transformer 6119 and an interconnecting transmission pair. In the standby central control the phasing signal is received over transformer 6120, amplifier 6121 and is transmitted to the microsecond clock reset terminal via AND gate 6122. AND gate 6122 is enabled by a signal on order cable conductor 61AU. The clock phasing signal serves to keep the two microsecond clocks in correspondence.

The Microsecond Clock 6100 generates output signals as shown in FIG. 64. These output signals are transmitted to the Order Combining Gate 3901. Further, the Microsecond Clock 6100 provides input signals to the Millisecond Clock 6101 via conductor 6105. These input signals occur once every 5.5 microseconds.

The Millisecond Clock 6101 comprises 12 binary counter stages along with counter recycling circuitry. The 12 stages are arranged as a series of recycling counters, the output of each counter providing an input to the next succeeding counter. Stages 1 through 4 provide a count of 13 and thus, with 5.5 microsecond input signals, provide an output signal once every 71.5 microseconds. Stages 5 through 7 provide a count of 7 and thus, with an input once every 71.5 microseconds, provide an output once every 500.5 microseconds (once per half millisecond). Stage 8 provides a count of 2 and thus, with a half millisecond input interval, provides an output pulse once every millisecond. Stages 9, 10, and 11 provide a count of 5 and, with input pulses once per millisecond, provide output pulses once every 5 milliseconds. Stage 12 provides a count of 2 and thus, with input pulses once every 5 milliseconds, provides an output pulse once every 10 milliseconds.

The output conductors of the 1 side of each counter stage of the Millisecond Clock 6101 are connected to the Order Combining Gate Circuit 3901 and these conductors appear in FIG. 42 as inputs to symbolic AND gate 4200. Thus, the states of these 12 counters may be gated to the buffer register input bus system via AND gate 4200 when enabled by a signal on order cable conductor 13R-BR.

As explained later herein, the 704 microsecond output conductor of the Millisecond Clock 6101 is employed to count up to 128 machine cycles.

In order to maximize the data processing capacity of Central Control 101 three cycle overlap operation is employed. In this mode of operation central control simultaneously performs:

A. The operational step for one instruction;

B. Receives from the Program Store 102 the order for the next operational step; and

C. Sends an address to the Program Store 102 for the next succeeding order.

This mode of operation is illustrated in FIG. 65. Three cycle overlap operation is made possible by the provision of both a Buffer Order Word Register 2410, an Order Word Register 3403 and their respective decoders, the Buffer Order Word Decoder 3902 and the Order Word Decoder 3904. A Mixed Decoder 3903 resolves conflicts between the program words in the Order Word Register 3403 and the Buffer Order Word Register 2410. The Auxiliary Buffer Order Word Register 1901 absorbs differences in time of program store response.

The initial gating action signals for the order X (herein designated the indexing cycle) are derived in the Buffer Order Word Decoder 3902 in response to the appearance of order X in the Buffer Order Word Register 2410. The order X is gated to the Order Word Register 3403 (while still being retained in the Buffer Order Word Register 2410 for the indexing cycle) during phase 3 of cycle 2; upon reaching the Order Word Register 3403 the final gating actions (herein indicated as the execution cycle) for the order X are controlled via Order Word Decoder 3904.

The indexing cycle and the execution cycle are each less than a 5.5 microsecond machine cycle in duration. In the executing of the operational steps of a sequence of orders like those shown in FIG. 65 each order remains in the Order Word Register 3403 and the Buffer Order Word Register 2410 each for one 5.5 microsecond cycle. The Buffer Order Word Decoder 3902 and the Order Word Decoder 3904 are DC combinational circuits; the DC output signals of the decoders are combined with selected microsecond clock pulses (among those indicated in FIG. 64) in the Order Combining Gate Circuit 3901. This Order Combining Gate Circuit 3901 thus generates the proper sequences of gating signals to carry out the indexing cycle and the execution cycle of each of the sequence of orders in turn as they appear first in the Buffer Order Word Register 2410 and then in the Order Word Register 3403.

The performance of the operational steps for certain orders requires more time than one operational step period, i.e., more than 5.5 microseconds. This requirement for additional time may be specified directly by the order; however, in other instances this requirement for additional time is imposed by indicated trouble conditions which occur during the execution of an order. Where an order specifies that the execution thereof will require more than one operational step period, the additional processing time for that order may be gained by:

1. Performing the additional data processing during and immediately following the indexing cycle of the order and before the execution cycle of the order; or

2. Performing the additional data processing during and immediately after the normal execution cycle of the order.

The performance of these additional work functions is accomplished by way of a plurality of sequence circuits within Central Control 101. These sequence circuits are hardware configurations which are activated by associated program orders or trouble indications and which serve to extend the time in the operational step beyond the normal operational step period illustrated in FIG. 65. The period of time by which the normal operational step period is extended varies depending upon the amount of additional time required and is not necessarily an integral number of machine cycles. However, the sequences which cause delays in the execution of other orders always cause delays which are an integral number of machine cycles.

The sequence circuits share control of data processing within the Central Control 101 with the decoders, i.e., the Buffer Order Word Decoder 3902 (BOWD), the Order Word Decoder 3904 (OWD), and the Mixed Decoder 3903 (MXD). In the case of orders in which the additional work functions are performed before the beginning of the execution cycle, the sequence circuit or, as more commonly referred to, the "sequencer" controls the Central Control 101 to the exclusion of decoders BOWD, OWD, and MXD. However, in the case of orders in which the additional work functions are performed during and immediately after the execution cycle of the order, the sequencer and the decoders jointly and simultaneously share control of the Central Control 101. In this latter case there are a number of limitations placed on the orders which follow an order which requires the enablement of a sequencer. Such limitations assure that the central control elements which are under the control of the sequencer are not simultaneously under control of the program order words.

Each sequence circuit contains a counter circuit, the states of which define the gating actions to be performed by the sequence circuit. The activation of a sequence circuit consists of starting its counter. The output signals of the counter stages are combined with other information signals appearing within Central Control 101 and with selected clock pulses in the Order Combining Gate Circuit 3901 to generate gating signals. These signals carry out the required sequence circuit gating actions and cause the counter circuit to advance through its sequence of internal states.

Sequence circuits which extend the period of an operational step by seizing control of a Central Control 101 to the exclusion of the decoders BOWD, OWD, and MXD are arranged to transmit the address of the next succeeding program order word concurrently with the completion of the sequencer gating actions. Thus, although the execution of the order immediately succeeding an order which enabled the sequencer of the above character is delayed, the degree of overlap shown in FIG. 65 is maintained.

Sequence circuits which do not exclude the decoders BOWS BOWD, OWD, and MXD provide additional overlap beyond that shown in FIG. 65. That is, the transmission of the address of and acceptance of the order immediately succeeding an order, which enabled a sequencer, are not delayed. The additional gating actions required by such sequence circuits are carried out not only concurrently with the indexing cycle of the immediately succeeding order, but also concurrently with at least a portion of the execution cycle of the immediately succeeding order.

A few examples will serve to illustrate the utility of the sequence circuits. A program order which is employed to read data from the Program Store 102 requires an additional two 5.5 microsecond machine cycle periods for completion. This type of order gains the additional two cycles by delaying the acceptance of the immediately succeeding order and performs the additional work operations after termination of the indexing cycle of the current order and before the execution cycle of the current order.

When errors occur in the reading of words from the Program Store 102, the Program Store Correct-Reread Sequencer 5301 is enabled to effect a correction or a rereading of the Program Store 102 at the previously addressed location. This sequence circuit is representative of the type of sequence circuit which is enabled by a trouble indication and which seizes control of the Central Control 101 to the exclusion of the decoders.

The Command Order Sequencer 4902 which serves to transmit network commands to the Switching Network 120 and to the miscellaneous network units, i.e., Master Scanner 144, AMA Tape Unit 147, and Card Writer 146, is representative of the sequence circuits which, when enabled, increase the degree of overlap beyond that shown in FIG. 65. That is, the transmission of network commands extends into the execution cycle of the order following the network command order.

In the processing of certain multicycle orders a plurality of sequence circuits may be activated so that the processing of the multicycle order may include both kinds of gating actions; first additional gating cycles may be inserted between the indexing cycle and the execution cycle of the order, and then a second sequence circuit may be activated to carry out gating actions which extend the degree of overlap to an additional cycle or cycles.

CENTRAL CONTROL RESPONSES TO PROGRAM ORDER WORDS

FIG. 4, which is a simplified sketch of the Central Control 101, aids in understanding the basic operational step actions that are performed by Central Control 101 in response to various program order words. Each program order word comprises an operational field, a data-address field, and Hamming error detecting and correcting bits.

The operation field is a 14 or a 16 bit binary word which defines the order and specifies the operational step actions to be performed by the Central Control 101 in response to the order. The operation field is 14 or 16 bits long, depending on the particular order which is defined by the operation field.

There are sets of "options" that may be specified with each of the program order words. The operational step of each order consists of a specific set of gating actions to process data contained in Central Control 101 and/or communicate information between the Central Control 101 and other units in our system. When an option is specified with the program order being executed, additional data processing is included in the operational step. The specific gating actions and the data processing performed for each of the options are described elsewhere herein. Accordingly, a portion of the 14 or 16 bit operation field of a program order word specifies the program order, and the remaining portion of the field may select one or more of the options to be executed.

Certain of the options are compatible with and provide additional data processing for nearly all of the orders. An example of such an option is that of "indexing" in which none or one of seven flip-flop registers within Central Control 101 are selected for additional data processing. In the orders which permit indexing a three bit portion of the operation field is reserved as the indexing field to indicate the choice of none or the one of seven registers to be employed.

Other options are limited to those orders for which the associated gating actions do not conflict with other portions of the operational step and are also excluded from those orders to which the options do not provide useful additions. Accordingly, portions of the operation field are reserved for those options only where applicable. That is, Central Control 101 is responsive to such options only if the program order word being executed is one to which the options are applicable. If an option is not applicable, then that portion of the operation field instead serves in the specification of other program orders or options. The assignment of the binary codes in portions of the operation field to options is therefore selectively conditioned upon the accompanying program order if the option is to have limited availability. This conditional assignment advantageously permits the inclusion of a larger variety of orders and options than could otherwise be included in the 14 to 16 bit operation field.

The data-address field of a program order word is either a 23 bit data word to be placed in a selected flip-flop register in Central Control 101 or a 21 bit word which may be used directly or with indexing to form a code-address for addressing memory. In all order words the sum of the bits of the operation field (16 or 14) plus the bits of the data-address field 21 or 23 is always 37 bits. If the order word has a 16 bit operation field, its data-address field will be 21 bits long; if the operation field is 14 bits long, the data-address is a 23 bit number. The shortened DA field is utilized to obtain more combinations in the correspondingly lengthened operation field and therefore a larger and more powerful collection of program order words.

The Central Control 101 performs the operational steps for most orders at the rate of one order per 5.5 microsecond cycle. Although such orders are designated single cycle orders, the total time involved in obtaining the order word and the central control responses thereto is in the order of three 5.5 microsecond cycles. The overlap operation previously noted herein permits Central Control 101 to achieve the stated rate of performing one such single cycle order every 5.5 microseconds.

The sequence of gating actions for a typical order, order X, and their relationship to the gating actions for the preceding order, order X-1, and a succeeding order, order X+1, are shown in FIG. 65. As shown on line 2 of FIG. 65, during phase 1 of a 5.5 microsecond cycle that is arbitrarily designated cycle 1, the code and address of program order word X appears in the Program Address Register 4801 (PAR) and is gated to the Program Store 102 via the Program Store Address Bus 6400. The code and address is interpreted by the Program Store 102 and the order word X is returned to central control over the Program Store Response Bus 6500 sometime during phase 3 of cycle 1 or phase 1 of cycle 2. The operation field portion of the program order word is gated into the Auxiliary Buffer Order Word Register 1901 (ABOWR), and the data-address field, and the Hamming bits of the order word are gated into the Buffer Order Word Register 2410 (BOWR).

The operation field is first gated into the Auxiliary Buffer Order Word Register 1901 (ABOWR) since it is possible that the program order word which is returned from the Program Store 102 reaches Central Control 101 prior to completion of the gating actions by the Buffer Order Word Decoder 3902 (BOWD) on the preceding order word, in this case order word X-1. This may be seen by reference to FIG. 65 where in the line labeled X-1, the gating directed by the Buffer Order Word Decoder 3902 (BOWD) for the order word X-1 is completed at the end of phase 3 of cycle 1; and, as shown in the line labeled X, the program order word X may reach central control in the latter portion of phase 3 of cycle 1. The Auxiliary Buffer Order Word Register 1901 (ABOWR) resolves this conflict. The same situation does not obtain with respect to either the Hamming encoding bits or the data-address word as by the end of phase 2 of cycle 1 all of the actions with respect to both the Hamming encoding bits and the data-address bits for the order X-1 have been completed.

The time at which a program order word reaches the Central Control 101 is subject to variation as a result of a number of factors. For example, since there are two central controls and a number of program stores, the physical distance between particular central control and each of the program stores is different and this difference is reflected in both the Program Store Address Bus 6400 and in the Program Store Response Bus 6500. Further, there may be differences in the response times of the various program stores and their access circuits and these variations may be cumulative with the differences in bus lengths.

The decoded outputs of the Buffer Order Word Decoder 3902 (BOWD) are combined with selected clock pulses from the Microsecond Clock 6100 (CLK) in the Order Combining Gate Circuit 3901 (OCG) which operates selected gates within Central Control 101 in the proper time sequence during phase 2 and phase 3 of the second cycle to perform indexing, index modification, and certain other gating actions with respect to order X.

During phase 3 of the second cycle the operation field of order X (FIG. 65) is gated from the Buffer Order Word Register 2410 (BOWR) to the Order Word Register 3403 (OWR). The Order Word Decoder 3904 (OWD) decodes the operation field of the order X which is in the Order Word Register 3403 (OWR) for the performance of the remaining gating actions. DC output signals from the Order Word Decoder 3904 (OWD) are combined with selected pulses from the Microsecond Clock 6100 (CLK) in the Order Combining Gate 3901 (OCG) to complete the gating actions of the single cycle order X during phase 1 and phase 2 of the third cycle.

During phase 2 of the third cycle order X is completing its last gating action from the Order Word Register 3403 (OWR) and the Order Word Decoder 3904 (OWD), and order X+1 is simultaneously performing the indexing step from the Buffer Order Word Register 2410 (BOWR) and the Buffer Order Word Decoder 3902 (BOWD). Since the simultaneous gating actions may conflict in the use of the flip-flop registers such as XR, YR, ZR, et cetera, the Mixed Decoder 3903 (MXD) decodes the contents of both the Buffer Order Word Register 2410 (BOWR) and the Order Word Register 3403 (OWR). The Mixed Decoder 3903 (MXD) outputs, which are DC signals, are combined with the outputs of the Buffer Order Word Decoder 3902 (BOWD) in the Order Combining Gates 3901 (OCG) to modify gating actions so as to resolve conflicts in the two operational steps.

A conflict which is resolved by the Mixed Decoder 3903 occurs when a first order specifies a particular one of the index registers as the destination register for a memory word obtained by the execution of that order while the immediately succeeding order specifies that the contents of that same index register be employed in indexing. In the performance of indexing, the contents of the specified index register are normally gated from the output of the specified index register to the Unmasked Bus 2014 and from there to the Augend Register 2908. However, where successive orders specify the same index register as a destination register for memory reading and as a source register, there is insufficient time to complete the transfer of the information to the destination register; therefore, the Mixed Decoder 3903 in these instances transfers the desired information from the Masked Bus 2011 directly to the Augend Register 2908 at the same time that this information is being transmitted to the specified destination index register.

MASK AND COMPLEMENT CIRCUIT 2000 (M&C)

The internal data processing structure is built around two multiconductor buses, the Unmasked Bus 2014 (UB) and the Masked Bus 2011 (MB), which provide a link for moving a multibit word of data from one of a specific group of flip-flop registers to another. This group consists of the K Index Registers 2601 (BR), 5801 (FR), 5802 (JR), 4001 (KR), 2501 (XR), 3001 (YR), and 3002 (ZR) and the Logic Register 2508 (LR).

The Mask and Complement Circuit 2000 (M&C) connects the Unmasked Bus UB to the Masked Bus MB and provides means for logically operating upon the data as it passes from the Unmasked Bus UB to the Masked Bus MB. The logical operation to be performed, product masking (AND), union masking (OR), exclusive OR masking (EXCLUSIVE-OR), and complementing is prescribed by the operation field of the program order as decoded by either the Buffer Order Word Decoder BOWD or the Order Word Decoder OWD. Only one masking operation may be performed in a single pass of data through the circuit M&C however, the masking operation may be followed by a complementing operation in gating data through the circuit M&C. Each of the masking operations requires two operands and the contents of the Logic Register LR always comprises one of the operands.

The Mask and Complement Circuit M&C (2000) which is shown in greater detail in FIG. 20 also provides a convenient means for connecting the Data Buffer Register 2601 and the Index Adder Output Register 3401 to the Masked Bus 2011. The data word which appears at one of the input AND gates 2001--2003 of the Mask and Complement Circuit 2000 may be selectively gated directly to the Masked Bus 2011 without alteration or may be a masked and/or complemented during transmission through the mask and complement circuit. The AND-OR Circuit 2005 serves to "Union" mask or "Product" mask the input data word when enabled by order cable signals on conductors 20UMASK and 30PMASK, respectively. The word appearing at the output of the AND-OR Circuit 2005 may be complemented in the Complement Circuit 2006 by enabling order cable conductor 20COMP or may be transmitted directly to the Masked Bus 2011 by enabling order cable conductor 20MPASS.

The input data word may be gated directly to the Masked Bus 2011 by enabling AND gate 2012 by an order cable signal on conductor 20PASS or may be complemented in the Complement Circuit 2007 by enabling order cable conductor 20COMP.

Exclusive OR masking may be achieved in the EXCLUSIVE-OR Circuit 2008 by enabling order cable conductor 20XMASK. It should be noted that it is not possible to complement the data word appearing at the output of the EXCLUSIVE-OR Circuit 2008.

K REGISTER 4001 (KR); K LOGIC (KLOG; DETECT FIRST-ONE CIRCUIT 5415 (DFO)

The K Register KR, the K Logic KLOG, and the Detect First-One Circuit 5415 (DFO) provide a second major internal data processing facility. The K Logic KLOG comprises input and output circuitry surrounding the K Register 4001. The K Logic KLOG includes the K A Input Register 3502, the K B Input Register 3504, the K Input Logic 3505, the K Logic Homogeneity Circuit 4502; and at the output of the K Register 4001 the Rotate Shift Circuit 4500 and the K Register Homogeneity Circuit 4503. The K Logic KLOG may be directed by output signals of the Order Combining Gate OCG to perform one of four logical operations on two operands. One operand is the content of the K Register KR; the other is the information on the Masked Bus MB. The Order Word Decoder OWD and the K Register Sequence Circuit (part of SEQ) generate signals which cause the K Logic KLOG to combine the two operands in the operations of AND, OR, EXCLUSIVE-OR, or ADDITION. The word resulting from the logical combination, according to the order in the Order Word Register OWR, may either be gated to the K Register KR or to the Control Homogeneity Circuit CH and the Control Sign Circuit CS.

A word appearing on the Masked Bus MB may in some instances be gated directly to the K Register KR via the K Logic KLOG. The K Register KR may thereby be employed as a simple destination register for data like other flip-flop registers in central control such as XR, YR, ZR, et cetera.

In carrying out the ADDITION operation in the K Logic KLOG the two operands are treated as 22 bit signed numbers. The 23 bit of each operand is the sign bit. If this bit has the value 0 the number is positive, and the magnitude of the number is given by the remaining 22 bits. If the sign bit is 1 the number is negative, and the magnitude of the number is given by the one's complement of the remaining 22 bits. (The magnitude is determined by inverting each bit of the 22 bit number.) The add circuit within K Logic KLOG can correctly add any combination of positive and negative operands as long as the magnitude of the algebraic sum of the two operands is equal to or less than 2hu 22 -1.

The K Logic KLOG and the K Register KR can perform other logical operations on the contents of the K Register KR. One of these operations is given the name "SHIFT." The gating action performed by SHIFT is based, in part, on the least significant six bits of the number that appears in the Index Adder IA at the time the shift is to be performed. The least significant five bits constitute a number that indicates the magnitude of the shift, and the sixth bit determines the direction of the shift. A 0 in the sixth bit is interpreted as a shift to the left, and the remaining five bits indicate the magnitude of this shift. A 1 in the sixth bit is interpreted as a shift to the right, and the one's complement of the remaining five bits indicates the magnitude of the shift to the right. Although in shifts to the right the least significant five bits contain the one's complement of the magnitude of the shift, the six bit number will be referred to hereafter as comprising a sign and a magnitude.

A shift of one to the left results in the contents of each flip-flop in the K Register KR being gated to the adjacent flip-flop to the left where the register is viewed as in FIG. 40. (The most significant bit of the K Register KR, bit 22, is on the extreme left; and the least significant bit, bit 0, is on the extreme right.) A 0 replaces the contents of the least significant bit position of the K Register KR (there is no flip-flop to the right of the 0 position flip-flop) and the most significant bit is shifted out of the register. That is, the bit 22 flip-flop has no flip-flop to its left and the information is not retained.

A shift of two to the left is equivalent to two successive shifts of one to the left, a shift of three to the left is equivalent to three successive shifts of one to the left, et cetera. A shift of 23 to the left causes all zeros to be placed in the K Register KR. A shift of one to the right results in the contents of each flip-flop in the K Register KR being gated to the adjacent flip-flop to the right. A 0 replaces the contents of the most significant bit of the K Register KR, and the original least significant bit of the K Register KR is thus not retained.

A shift of two to the right is equivalent to two successive shifts of one to the right, a shift of three to the right is equivalent to three successive shifts of one to the right, a shift of 23 to the right results in the contents of the K Register KR being made all zeros.

A logical operation similar to the shift is the operation "ROTATE." As in shifting, the six bits of the Index Adder IA are treated as a direction and magnitude for the rotation just as described for the shift.

A rotate of one to the left is identical to a shift of one to the left except for the gating of the flip-flops at each end of the K Register KR. In a rotation of one to the left the content of bit 22 is not lost as in the shift but instead replaces the content of the least significant zero bit of the K Register KR. A rotate of two to the left is identical to two rotates of one to the left in succession, a rotate of three to the left is identical to three rotates of one to the left, et cetera. A rotate of 23 to the left has the same effect on the K Register KR as no rotation. A rotation to the right bears a similar relation to a shift to the right.

In summary, the gating action of rotation is identical to that of shift except that the register is arranged in a circular fashion wherein the most significant bit is treated as being to the right of the least significant bit of the K Register KR.

A complement option may be employed with shift and rotate orders and, where specified, the significance of the sign bit is inverted, that is, where the complement option is specified a 0 in the sixth bit is interpreted as a shift to the right while a 1 in the sixth bit is interpreted as a shift to the left.

A special purpose rotate order applies rotation to only bits 6 through 21 of the K Register KR and leaves the remaining positions of the K Register KR unchanged.

Another logical gating action is the determination of the rightmost one in the contents of the K Register KR. This action is accomplished by gating the contents of the Detect First-One Circuit DFO to the F Register FR via the Unmasked Bus UB, the Mask and Complement Circuit M&C, and the Masked Bus MB. The number gated is a five bit binary number corresponding to the first stage (reading from the right) in the K Register KR which contains a 1. If the least significant bit of the K Register KR contains a 1, zero is the number gated to the F Register FR. If the first 1 reading from the right is in the next position, one is the number gated to the F Register FR. If the only 1 appearing in the K Register KR is in the most significant position, 22 is the number gated to the F Register FR. If the K register contains no 1's, then nothing is gated to the F Register FR.

INDEX ADDER (IA)

A third major data processing configuration within the Central Control 101 is the Index Adder IA which is used to:

1. Form a quantity designated herein as the indexed DAR word consisting of the sum of the DA field of the program order word being executed and the contents of an index register specified in an order; or

2. To perform the task of a general purpose adder; the operands in this latter instance may be the contents of two index registers or the DA field and the contents of an index register.

The outputs of the Index Adder IA are selectively connected to the Program Address Register PAR, the Memory Address Decoder MAD, and the Call Store Address Bus System 6401 when employed for indexing; the outputs of the adder may also be connected to the Masked Bus MB via the Mask and Complement Circuit M&C when employed as a general purpose adder. Access to the Masked Bus MB permits the word formed to be employed for a number of purposes, for example:

1. Data to be placed in the K Register KR without modification or to be combined with the contents of the K Register KR in the K Logic KLOG;

2. A number for determining the magnitude and direction of a shift or rotate;

3. Data to be placed in a specified index register;

4. Data to be transmitted over the Network Command Bus 6406 via the K Logic KLOG and the Network Translator NETW-T;

5. Data to be sent to the Central Pulse Distributor 143 via the F Register FR and the Central Pulse Distributor Translator CPD-T.

Indexing is the adding of two numbers in the Index Adder IA. The D-A field of the order as it appears in the Buffer Order Word Register BOWR is one operand used in indexing and the other operand, if required, is the contents of one of the seven Index Registers BR, FR, JR, KR, XR, YR, and ZR. For orders which include the indexing option a three bit number within the operation field specifies either 1) no indexing, or 2) indexing on one of the seven flip-flop registers according to the following table. ##SPC1##

If no register is specified for indexing, then only the DA field is gated to the Index Adder IA and the output of the Index Adder IA will be the DA field (the sum of the DA field and zero). If an index register is specified, the contents thereof are normally gated onto the Unmasked Bus UB and from there directly into the Index Adder IA.

If the order X specifies indexing, and if the index constant is obtained by a memory reading operation of the preceding order X-1, then the Mixed Decoder MXD substitutes the Masked Bus MB for the index register. The Mixed Decoder MXD insures that the Index Adder IA always has the correct operands to perform the timely addition to complete the operational step for order X.

A number of the orders have as an option specified by a combination of bits in the operation field the loading of the DA field into the Logic Register LR. This option permits the placing of specified new data into the Logic Register LR for use in subsequent masking operations. If the DA field is used to load the Logic Register LR, then it is considered not available for indexing and the only operand gated to the Index Adder IA is the contents of a specified index register.

The sum appearing at the output of the Index Adder IA is referred to as the DAR address or word. If indexing is not specified in an order, the DAR address or word is the DA field of that order. If indexing is specified and the DA field is not gated to the Logic Register LR, the DAR address or word will be the sum of the DA field and the contents of the specified index register. If the DA field is used for loading the Logic Register LR, the DAR will be the contents of the specified index register.

The Index Adder IA, as well as the add circuit within the K Logic KLOG, utilizes one's complement binary arithmetic. All inputs of the index adder are treated as 22 bit numbers with the 23rd bit a sign bit. A positive number is indicated by a 0 in the 23rd bit and a negative number by a 1 in the 23rd bit. End-around-carry is provided so that the Index Adder IA can correctly handle all four combinations of positive and negative operands as long as the algebraic sum of the two operands does not exceed 222 -1.

Some orders, as previously mentioned, have a 23 bit DA field, and others have a 21 bit DA field. If the DA field is only 21 bits long, then the 21st bit is treated as the sign bit; this bit is expanded to also become the 22nd and 23rd bits of the effective DA field gated to the Index Adder IA. Expansion converts a 21 bit DA field to an effective 23 bit DA field for indexing. Expansion preserves the end-around-carry for indexing with 21 bit DA fields.

DECISION LOGIC 3906 (DECL)

The Central Control 101 in the execution of a decision order in a sequence of orders either continues with the current sequence of orders or transfers to a new sequence of orders. The decision is made by the Decision Logic 3906 (DECL) in accordance with the order being processed. The order specifies the information to be examined and the basis for the decision. The information may be obtained from the Control Homogeneity Flip-Flop 5020 of the Control Homogeneity Circuit CH, the Control Sign Flip-Flop 5413 of the Control Sign Circuit CS or selected outputs of the K Logic KLOG. The basis of the decision may be that the information examined is (or is not) arithmetic zero, less than zero, greater than zero, et cetera. A decision to advance does not disturb the current sequence of obtaining and executing orders. A decision to transfer to a new sequence of orders is coupled in accordance with the particular word being executed to a determination of whether the transfer is an "early transfer" or a "late transfer." Accordingly, if the decision is made to transfer, either the early transfer conductor ETR or the late transfer conductor LTR will be energized and thereby activate the Transfer Sequencer 4401. Transfer signals from these conductors lead to the gating of the transfer address to the Program Address Register PAR. This causes the next program order word to be obtained from a new sequence of order words. The transfer address may be obtained from a number of sources and the source is indicated by the order being executed. In the case of "early transfer" orders, the transfer address comprises the contents of a preselected one of the J Register JR or the Z Register ZR. In the case of "late transfer" orders the transfer address may be obtained directly, in which case the DAR code-address which is formed in the index adder is employed, or indirectly, in which case the transfer address comprises a memory reading at the location specified by the DAR code-address which is formed in the Index Adder IA. This latter case is referred to herein as indirect addressing.

The distinction between "early transfer" and "late transfer" orders is based on whether or not the decision order requires a memory reading or writing in the event of an advance. A decision order which requires a memory to be read or written into after a decision to advance is an "early transfer" order. If the decision on such an early transfer order is to advance, then the memory reading or writing operation is carried out as a normal gating action under control of the Buffer Order Word Decoder BOWD and the Order Word Decoder OWD. However, if the decision is to transfer, the decision is advantageously made "early" to inhibit the gating associated with the memory reading or writing operation.

Other transfer orders which do not require a memory reading operation but which do require extensive data processing prior to making the decision are termed "late transfer" orders. These orders cannot employ the early transfer timing sequence in that the data processing operations required thereby are not necessarily completed by the time the early transfer signal would be generated.

Two input information sources for the decision logic comprise the output signals of the control homogeneity flip-flop and the control sign flip-flop which are employed to register homogeneity and sign information which is obtained from a number of locations. For example, a 23 bit data word appearing on the Masked Bus MB may be transmitted to the Control Homogeneity Circuit CH. If the data word comprises either all 0's or all 1's, the Control Homogeneity Flip-Flop 5020 will be set to its 1 state, otherwise the flip-flop will be reset. The Control Sign Circuit CS serves to retain the sign of the data word; the Control Sign Flip-Flop 5413 is set if the word is negative and is reset if the word is positive.

The Control Homogeneity Circuit CH and the Control Sign Circuit CS are utilized by some decision orders by gating the output of a selected index register onto the Unmasked Bus UB, through the Mask and Complement Circuit M&C, onto the Masked Bus MB, and from there into the Control Homogeneity Circuit CH and the Control Sign Circuit CS. The contents of one of the seven index registers specified in the decision order being processed are thereby summarized in the Control Homogeneity Flip-Flop 5020 and Control Sign Flip-Flop 5413. Further gating actions associated with a decision order carry out the transfer or advance according to the output of the Decision Logic DECL.

Similar homogeneity and sign circuits comprise part of the K Logic KLOG to provide facilities for a class of decision orders which transfer or advance according to combinations of the homogeneity and sign of 23 bit words contained in the K register KR.

COMMUNICATION BETWEEN THE CENTRAL CONTROL 101 AND CONNECTING UNITS

A second base function of Central Control 101 is the communication between itself and various other units such as the various memories within the Central Processor 100, the Switching Network 120, the Master Scanner 144, the Central Pulse Distributor 143, et cetera. Generally, communication is accomplished by way of the various bus systems of FIGS. 64--69 and logic circuits which are located in both Central Control 101 and the connecting units.

This communication consists of three general classes. The first class comprises the obtaining of program order words which determine the sequence of actions within Central Control 101. Program order words are primarily obtained from the Program Store 102; however, in special instances program order words for limited actions may be obtained from a Call Store 103. The second class comprises the obtaining of data (excluding program order words) from the memory units within the Central Processor 100, and the third class comprises the generation and transmission of commands to the various network units such as the Switching Network 120, the Master Scanner 144, the Central Pulse Distributor 143, et cetera.

The several memories within the Central Processor 100, namely the Program Store 102, the Call Store 103, the Auxiliary Buffer Registers 3105, 3118, 3605, 3617, 4103, 4603, 5105--5107, 5500, 5902, 6205, 3206, 3703--3708, 4206, 4211, 4717, 4725, 5201, 5209--5211, 5604, 5605, 6002, 6003, 6302 and 6307 (ABR-1...ABR-N [FIG. 9]), and certain other special locations within Central Control 101 are treated as a memory unit and distinct blocks of addresses are individually assigned to each of the memories. There are a number of memory orders which are employed to selectively obtain information from the above memories and to place this information in selected registers within Central Control 101; these are memory reading orders. There are other memory orders which are employed to selectively transmit data from designated registers within Central Control 101 to one of the above memories; these are memory writing orders. The order structure is thus simplified since access to all of the above-mentioned memory locations is by way of a single memory address format.

A memory code-address within Central Control 101 always comprises a 20 bit word consisting of:

1. A code to define a block of information; and

2. An address within the specified block.

The code and the address each vary in length according to the memory unit addressed. For example, the codes for specifying information blocks in the program store are 4 bits long, and the corresponding address is 16 bits long; the codes for specifying information blocks in the Call Store 103 are 8 bits long and are accompanied by 12 bit addresses. However, as will be seen later, the code-address which is transmitted to the Call Store 103 comprises an 18 bit portion of the word, namely a 6 bit code and a 12 bit address.

PROGRAM ORDER WORDS

The communication between the Central Control 101 and the Program Store 102 to obtain program order words may be understood generally with reference to FIG. 4 and in greater detail through a consideration of the central control detail drawings FIGS. 10 through 63 and the timing diagram FIG. 65. The Program Address Register 4801 (PAR FIG. 9) and the Auxiliary Storage Register 4812 (ASR FIG. 9) are selectively employed in transmitting commands to the Program Store 102. The Program Address Register 4801 is employed in the absence of uncorrectable program store reading errors. The Auxiliary Storage Register 4812 is employed whenever a Program Store 102 must be reread. When a command is transmitted from the Program Address Register 4801 to the Program Store Address Bus System 6400 the code-address of the command is also transmitted to the Auxiliary Storage Register 4812. The Auxiliary Storage Register 4812 thus serves to temporarily hold the code-address which is employed in the performance of Hamming error checks. These checks are supplied simultaneously to the order returned and the address employed in obtaining the order. Commands to the Program Store 102 to read information from the memory proper as opposed to test points within the memory access and control circuitry comprise 25 bits as follows:

A. 16 address bits AO through A15;

B. 4 code bits KO through K3;

C. 4 mode bits CM, HM, GM, CRW;

D. a single synchronizing bit SYNC.

The code bits KO through K3 define the block of information in which the selected program store word is located and the address bits AO through A15 define the memory location within the above defined block of information. The four mode bits specify the mode of operation of the program stores as set forth below. It should be noted that the Program Store 102 is always operated in the normal mode in the course of obtaining program order words. The two maintenance modes and the read control and write control modes are reserved for obtaining from the program store information which is to be treated as data as opposed to program order words. ##SPC2##

The sync pulse SYNC (FIG. 33) is employed as a gating signal at the program stores and serves to reduce the time during which the program stores are vulnerable to noise signals on their command buses.

The code and address portions of the program store commands are obtained from the Program Address Register 4801 or the Auxiliary Storage Register 4812 and the four mode bits and the synchronizing bit are obtained from the Order Cable 3900. The four mode bits are required to be selectively other than 0 in all modes other than the normal mode and in these modes the mode bits are defined by the program order word being executed.

The contents of the Program Address Register 4801 (PAR) or the contents of the Auxiliary Storage Register 4812 (ASR) are selectively gated via AND gates 4805 and 4813, respectively, to the input terminals of the OR gate 4806. AND gate 4805 is enabled by an order cable signal on conductor 48PAPS and AND gate 4813 is enabled by an order cable signal on conductor 48ASPS. Information appearing on selected output conductors of OR gate 4806 is encoded, and the encoded information is transmitted to the cable 4804. Bits 0 through 11 and 13 through 15 are passed without modification; however, bits 6 and 12 are combined in the EXCLUSIVE-OR gate 4803 to form bit 12 of the command address. The EXCLUSIVE-OR function involving bits 6 and 12 of the address provides information which is required at the program store to choose the appropriate program store tape, i.e., the A tape or the B tape. Bits 16 through 19 as received from the OR gate 4806 are translated from the 4 bit binary code to a 2-out-of4 code in the Translator 4802. As previously explained, the Program Store 102 is arranged to selectively respond to 2-out-of-4 code signals.

The translated code-address is transmitted via cable 4804 to the Program Store Transmit Bus Selection Gates 3300. The remaining information signal inputs to the Program Store Transmit Bus Selection Gates 3300 comprise the mode bits CM, HM, GM, and CRW which are received from the Order Cable 3900 via conductor group 3317 and the synchronizing bits PS-BIT (FIG. 33) and PS-BOT (FIG. 33).

The Program Store Transmit Bus Selection Gates 3300 are divided into two groups, namely, those employed for transmitting to the 0 bus 3306 of the Program Store Address Bus System 6400 and those associated with the 1 bus 3307 of the Program Store Address Bus System 6400. The command information is selectively transmitted to the 0 bus and/or the 1 bus of the Program Store Address Bus System 6400 in accordance with the Program Store 102-Central Control 101 bus configuration which is being employed. That is, if information is being transmitted from the Central Control 101 to the Program Store 102 via the 0 bus 3306, AND gates 3302, 3308, and 3312 and amplifier 3310 are employed; however, if commands are being transmitted by the 1 bus 3307, AND gates 3303, 3309, and 3313 and amplifier 3311 are employed. The address bits AO through A15 are selectively gated through the AND gates 3302 and 3303 by signals on order cable conductors ADRPS-BO and ADRPS-B1 (FIG. 33), respectively. Similarly, the K bits KO through K3 and the mode bits are selectively transmitted via AND gates 3308, 3312, 3309 and 3313 by order cable signals on conductors PS-BOT and PS-B1T, respectively. Signals on PS-BOT and PS-B1T are also transmitted through their associated amplifiers 3310 and 3311 to provide the synchronizing bit of the program store command.

The output conductors of AND gates 3302, 3308, and 3312 and amplifier 3310 are transmitted via the Cable Driver 3304 to the 0 bus 3306; and the output conductors of AND gates 3303, 3309 and 3313 and amplifier 3311 are transmitted via the Cable Driver 3305 to the 1 bus 3307. The Cable Drivers 3304 and 3305 each comprise a plurality of pulse inverting amplifiers and transformers which couple the Program Store Transmit Bus Selection Gates 3300 to the 0 bus 3306 and the 1 bus 3307.

The Program Store Transmit Bus Selection Gates 3300 are selectively enabled in accordance with the setting of the central pulse distributor controlled status and routing register flip-flops Au, PBO, PBA, and PBT (FIG. 55). The state of flip-flop AU indicates which of the two units is the active central control. The flip-flops PBO, PBA, and PBT (except for commands to read or write control or maintenance data) have the following significance: ##SPC3##

In the above table the X indicates that the standby CC is to send on neither the 0 nor the 1 bus as the active CC is engaged in transmitting to both buses.

The status and routing flip-flops AU, PBO, PBA, and PBT are selectively set and reset by pulses received from the Central Pulse Distributor 143 via selected pairs of the Bipolar Cable 6700, the transformer 1707, amplifiers 1708 and 1711, AND gates 1709 and 1712 and the CPD cable 1719.

The flip-flops PBO, PBA, and PBT in the two central controls are driven by the same CPD points, that is, when the flip-flop PBO in the first central control is set its counterpart PBO in the other central control is also set. The flip-flops AU (active unit) in the two central controls are controlled by a single central pulse distributor bipolar signal point; however, the bipolar signal which serves to set the AU flip-flop in the first central control serves to reset the AU flip-flop in the second central control. Similarly, the CPD signal which serves to reset the AU flip-flop in the first central control serves to set the AU flip-flop in the second central control.

The information required to define the code-address of a program store command is transmitted to the Program Address Register 4801 by one of three possible paths, the chosen path being determined by the sequence of events which lead to the determination of the desired address and code. The desired code-address is selectively obtained by one of the following methods:

A. In the course of executing a sequence of program order words and in the absence of a transfer decision, the code-address of the next order word in the sequence is obtained by incrementing the code-address of the preceding order word by a count of 1. This incrementing function is accomplished by means of the Add-One Register 4304 and the Add-One Logic 4305. The contents of the Program Address Register 4801 are transmitted via cable 4821, AND gate 4301, and OR gate 4303 to the Add-One Register 4304. The AND-gate 4301 is enabled by an order cable signal on conductor PAAO (FIG. 43) at time OT2. The code-address in the Add-One Register 4304 comprises the input to the Add-One Logic 4305 which when enabled by signals on conductor INCR (FIG. 43) serves to increment the input word by a count of 1. The output of the Add-One Logic 4305 is gated to the Program Address Register 4801 via AND-gate 4807 and OR-gate 4808 at time 3T5 by a signal on order cable conductor AOPA (FIG. 48).

From the above sequence it is seen that a very small portion of the 5.5 microsecond operational step cycle is employed in incrementing the address in the Program Address Register 4801. That is, the total time required to increment the address and to return the incremented address to the PAR 4801 is the period of time OT5. Completion of address incrementing in this period of time frees the Add-One Register 4304 and the Add-One Logic 4305 to permit their use for other work functions during the remainder of the cycle. The Add-One Register 4304 and the Add-One Logic 4305 are arranged to operate with 23 bit words for these other work functions.

B. The second source of program store code-address words is the Index Adder Output Register 3401. The Index Adder Output Register 3401 is provided to store the DAR word as described earlier herein. The contents of the Index Adder Output Register 3401 are transmitted via cable 3402, AND gate 4307, and OR gate 4808 to the Program Address Register 4801. This transfer of information is accomplished by enabling order cable conductor IRPA (FIG. 43).

C. The third source of code-address information is the Masked Bus 2011, the contents of which are gated to the Program Address Register 4801 via cable 4313, AND gate 4308, and OR gate 4808 at time 3T5 by enabling order cable conductor MBPA (FIG. 43). This path is employed in the case of interrupts to gate code-address words to the Program Address Register 4801 from the Interrupt Address Source 3411 and is also employed on early transfer orders to gate the contents of the J register 5802 or the Z Register 3002 to the Program Address Register 4801.

The transmittal of commands from the Central Control 101 to the Program Store 102 and the transmittal of the program store responses to the central Control 101 may be understood by reference to FIG. 65. In FIG. 65 the three horizontal lines represent functions which occur with respect to arbitrary orders X-1, X, and X+1, respectively. A machine cycle, as employed in the time scale of this FIG., comprises a 5.5 microsecond period of time. A portion of an arbitrary cycle 1 and all of the following cycles 2 and 3 are shown. As seen in FIG. 65, the period of time between the transmission of the command to the Program Store 102 and the completion of the operational step associated with that command require greater than one 5.5 microsecond machine cycle. However, also as seen in FIG. 65, there are work functions relating to three separate orders being simultaneously performed; therefore, it is possible to complete single cycle orders at the rate of one order per 5.5 microsecond cycle.

At line X of FIG. 65 the code-address of order X is shown as being transmitted to the Program Store 102 during phase 1 of cycle 1 and the program store response thereto returned to the central Control 101 sometime during the latter portion of cycle 1 or the early portion of cycle 2. The program store response comprises parallel one-half microsecond pulses which represent the 44 bit program order word, the response synchronizing signal and the All Seems Well signal.

The exact time at which the program store response arrives at the Central Control 101 depends on central control response times, the lengths of the buses connecting the Central Control 101 and the Program Store 102 and the variations in the response times of the program stores of the Program Store System 102. These variations can result in the program store response arriving at the Central Control 101 as early as T19 of the same cycle in which the program store command was transmitted or as late as T6 of the following cycle. Accordingly, the Program Store Response Bus Selection Gates 1200 are activated by order cable signals on conductors PSBO and PSB1 (FIG. 12) in the period 19T8. This assures the acceptance of the full pulse width (approximately .5 microseconds) of the program store response. The Program Store Response Bus Selection Gates 1200 are selectively enabled to accept the response from the 0 bus 6500-0 or from the 1 bus 6500-1 of the Program Store Response Bus System 6500. The particular gates enabled are determined in accordance with the setting of the CPD controlled status and routing flip-flops, as enumerated in the earlier table. If the response is to be accepted over the 0 bus 6500-0, the AND-gates 1204, 1206, and 1208 are enabled by a signal on order cable conductor PSBO and if the response from the 1 bus 6500-1 is to be accepted, the AND-gates 1203, 1205, and 1207 are enabled by a signal on order cable conductor PSB1.

The 44 bit response word is transmitted through OR-gate 1209 and cable 1210 for insertion in the Auxiliary Buffer Order Word Register 1901 and the Buffer Order Word Register 2410. Bits 0 through 20 (the data-address field) and bits 37 through 43 (the Hamming encoding bits) are gated directly into the Buffer Order Word Register 2410 via AND gates 1907 and 1906, and OR gates 2428 and 2425, respectively. Bits 21 through 36 (the operation field) are inserted into the Auxiliary Buffer Order Word Register 1901 via AND gate 1905. The synchronizing signal is transmitted through OR gate 1211 and is employed to enable AND gates 1905, 1906, and 1907 which serve to gate the received 44 bit word to the Auxiliary Buffer Order Word Register 1901 and the Buffer Order Word Register 2410.

The All Seems Well Signal, if received from the 0 bus 6500-0, serves to set flip-flop 1214 to its 1 state and if received from the 1 bus 6500-1, sets the flip-flop 1213 to its 1 state. The flip-flops 1213 and 1214 comprise two of the inputs to the Error Detection and Correction Circuit 2400. Failure to receive an All Seems Well signal along with a program store response is an indication of possible trouble within the Program Store 102 therefore the validity of the response is in question. The All Seems Well signals summarize a number of hardware checks made within the Program Store 102, and the utilization of the All Seems Well signal as a maintenance tool is discussed later herein.

The data-address field and the Hamming encoding bits are gated directly to the Buffer Order Word Register 2410 as the portions of the register which are employed to store this information are no longer required by the immediately preceding order; however, the work operations with respect to the operation field of the preceding order may not have been completed by the time the program store response has arrived at the Central Control 101. Therefore the operation field is first inserted into the Auxiliary Buffer Order Word Register 1901 and then at time 6T8 by means of signal on order cable conductor AUBO (FIG. 19) is gated via AND gate 1900, cable 1903 and OR gates 2426, and 2427 to the Buffer Order Word Register 2410.

The information which is received both by the Auxiliary Buffer Order Word Register 1901 and the Buffer Order Word Register 2410 is on a single rail basis; therefore, both the Auxiliary Buffer order Word Register 1901 and all of the portions 2401, 2402, 2403 of the Buffer Order Word Register 2410 are selectively reset prior to the time of the inserting of new information. A signal on order cable conductor REBB (FIG. 24) at time 19T20 serves to reset the data address portion 2403 and the Hamming portion 2401 of the Buffer Order Word Register 2410 and to reset the Auxiliary Buffer Order Word Register 1901. An order cable signal on conductor REBA (FIG. 24) at time 3T5 serves to reset the operation field 2402 of the Buffer Order Word Register 2410.

In a few special instances (principally in the course of maintenance actions) a transfer may be made to one of a number of short sequences of program orders which are located in the Call Store 103. The program sequences in the Call Store 103 may be reached through a system interrupt or through a transfer. In either event, the call store code-address corresponding to the first program order word of the sequence is gated into the Index Adder Output Register 3401 and from there to the Call Store Transmit Bus Selection Gates 1000. The detailed control of the call store bus selection gates will be described with respect to the reading and writing of data from and into the Call Store 103. The call store, in response to a program order command, returns a 23 bit reading to the Central Control 101 via the Call Store Response Bus System 6501. This response is gated through the Call Store Response Bus Selection Gates 1300 to the Buffer Order Word Register 2410.

The Call Store 103 returns approximately one-half of a program order word with a single reading. Therefore, two successive call store locations must be read. Conveniently, the Program Address Register 4801 and the add-one circuit comprising the Add-One Register 4304 and the Add-One Logic 4305 are employed to obtain the second code-address and subsequently the code-addresses for the following program order words to be obtained from a Call Store 103. To provide protection against an unwanted response from a Program store 102 the call store code-addresses are not gated from the Program Address Register 4801 to the Program Store Address Bus System 6400.

The first call store word of a pair of words comprising a program order word is transmitted from OR gate 1309 via cable 1310, the right AND gate 1909, cable 1913 and the OR gates 2427 and 2428 to bits 22 through 0 of the Buffer Order Word Register 2410. The second call store word of the pair os transmitted from the OR gate 1309 via cable 1310, the left AND gate 1910, cable 1912 and the OR gates 2425 and 2426 to the bits 43 through 23 of the Buffer Order Word Register 2410. The reading of program order words from the Call Store 103 is most unusual. Two successive readings are required to obtain a single program order word. Therefore, the fetching of program order words from the Call Store 103 is under the control of the Call Store Program Sequencer 5302 which is described in greater detail later herein. It should be noted that Call Store Program order word responses are gated directly to the Buffer Order Word Register 2410 and not via the Auxiliary Buffer Order Word Register 1901. This simplification is permissible since the code-addresses for the next succeeding order are not transmitted until after the operational step for the preceding order has been completed.

DATA WORDS

As previously described, a large body of information organized as data words as opposed to program order words is stored principally in the Call Store 103 and the Program Store 102. The more volatile information is stored principally in the Call Store 103, while the more stable information is stored in the Program Store 102. Additionally, maintenance data which is stored internally in the control and access circuits of the Program Store 102, the Call Store 103, and the standby central control is treated as data for purposes of communication.

Data words may be read from a memory location or written into a memory location by the execution of program orders termed "memory orders." Includes in this term are "memory read orders" and "memory write orders." Memory orders cause the generation and transmission of commands to the various memory locations as follows: ##SPC4##

The above table shows that both memory read and memory write commands apply to many of the data memories; however, memory write commands cannot be employed with respect to the memory proper of the Program Store 102 nor can memory read commands be employed with respect to the standby Central Control 101.

CALL STORE MEMORY ORDERS

Memory reading (writing) orders which obtain (store) data from the Call Store 103 include call store reading (writing) commands as part of their operational step. The operational step of such orders is indicated by the example of order X in FIG. 65; in that example call store commands are generated and transmitted during phase 3 of the indexing cycle. If X is a memory reading order, the call store response will be transmitted from the Call Store 103 to the Data Buffer Register 2601 during phase 1 of the execution cycle; if X is a memory writing order, the word to be stored is transmitted from the Data Buffer Register 2601 to the Call Store 103 during phase 1 of the execution cycle. Call Store commands are also generated for multicycle orders under control of sequence circuits, but the command and data generation and transmission have the same format and relative time sequence as described below.

A call store command comprises:

A. 12 address bits AO through A11;

B. 6 code bits KO through K5;

C. 3 mode bits HM, GM, CM;

D. A first synchronizing bit Sync 1;

E. 2 order bits R and W;

F. 1 address parity bit;

G. A second synchronizing bit Sync 2.

The code bits KO through K5 define the block of information in which the selected call store data word is located and the address bits AO through A11 define the memory location within the above defined block of information. The code bits KO through K5 and the address bits AO through A11 comprise the call store code-address. The three mode bits specify the mode of operation of the Call Store 103 and the order bits specify whether the command is to read or to write. It should be noted that the Call Store 103 is always operated in the normal mode in the execution of memory read and memory write commands relating to call processing. The maintenance read and write commands and the control read and write commands are reserved for obtaining information from the Call Store 103 and writing into the Call Store 103 in the execution of special memory read and memory write orders relating to system maintenance. Pulses on the leads HM, GM, and CM specify the mode of operation of the Call Store 103 as follows: ##SPC5##

Pulses on the R and W conductors specify that the order is a call store read command or a call store write command, respectively.

The twelve address bits AO through A11, the six code bits KO through K5, and the address parity bit comprise a 19 bit segment of the command in which odd parity is maintained.

The first synchronizing signal Sync 1 accompanies the address, code, and mode bits and the second synchronizing signal Sync 2 accompanies the information on the R, W, and parity conductors. The synchronizing pulse S1 and S2 are employed as gating signals at the Call Store 103 and serve to reduce the time during which the Call Store 103 is vulnerable to noise signals on its command buses.

The execution of memory orders by Central Control 101 to move data words between the Call Store 103 and the Central Control 101 is initiated by the transmission of call store commands from Central Control 101 to the Call Store 103 via the Call Store Address Bus System 6401. If the command is to write a data word into the Call Store 103, then the command is followed by the transmission of the data word via the Call Store Write Data Bus System 6402. If the command is to read a data word, then the call store read command is followed by the transmission of the data word from the Call Store 103 to Central Control 101 via the Call Store Response Bus System 6501.

In executing a call store command the code-address is always composed in the Index Adder Output Register 3401 which is connected to the Call Store Transmit Bus Selection Gates 1000 via the cable 3402. Bits 17 through 12 of the index adder output register comprise the code portion of the command and bits 11 through 0 comprise the address portion of the command. The three mode bits, the synchronizing bits, and the read-write bits are all obtained from the Order Cable 3900. The three mode bits are required to be selectively other than zero in all modes other than the normal mode and in these modes the mode bits are defined by the program order word being executed. In all mode of operation the read and write bits and the synchronizing bits are also obtained from the Order Cable 3900 according to the call store command required.

The parity signal generated as part of the call store command is generated in the Index Adder Parity Generator 2415 in response to the code-address appearing at the outputs of the Index Adder Outputs Register 3401 and transmitted thereto via the cable 3402.

The Call Store Transmit Bus Selection Gates 1000 are divided into two groups, namely, those employed for transmitting to the 0 bus 1004 of the Call Store Address Bus System 6401 and those associated with the 1 bus 1003 of the Call Store Address Bus System 6401. The command information is selectively transmitted to the 0 bus 1004 or the 1 bus 1003 in accordance with the Call Store 103--Central Control 101 bus configuration which is being employed. That is, whenever information is being transmitted from the Central Control 101 to the Call Store 103 via the 0 bus 1004, AND gates 1006, 1008, 1012, 1014, and 1016 and amplifiers 1010, 1018 are employed; however, when commands are transmitted via the 1 bus 1003, AND-gates 1005, 1007, 1011, 1013 and 1015 and amplifiers 1009 and 1017 are employed. The address bits AO through A11 and the code bits KO through K5 are selectively transmitted through AND-gates 1016 and 1015 enabling order cable conductors ADRCSBO and ADRCSB1 (FIG. 10), respectively. Similarly, the mode bits HM, GM, and CM and the first of the two synchronizing pulses S1 are transmitted to the 0 and 1 buses under the control of the same order cable conductors. It should be noted that the order cable conductors ADRCSBO and ADRCSB1 are enabled at time 17T19. Order cable conductors RWCSBO and RWCSB1 are enabled at time 19T21 and serve to gate the READ, the WRITE, the ADDRESS PARITY and SYNC 2 pulses to their respective buses.

The Call Store Transmit Bus Selection Gates 1000 are selectively enabled in accordance with the setting of the central pulse distributor controlled status and routing register flip-flops AU, CBO, CBA, and CBT (FIG. 55). The state of flip-flop AU indicates which of the two central controls is active. The flip-flops CBO, CBA, and CBT (except for commands to read or write maintenance data) have the following significance: ##SPC6##

In the above table the X indicates that the standby CC is to send on neither the 0 nor the 1 bus as the active CC is engaged in transmitting to both buses.

The status and routing flip-flops AU, CBO, CBA, CBT are selectively set and reset by pulses from the Central Pulse Distributor 143 which are received via selected pairs of the Bipolar Cable 6700, the transformer 1707, amplifier 1708 and 1711, AND gates 1709 and 1712, and the CPD cable 1719.

CALL STORE WRITING COMMAND

A call store writing command utilizes as data to be stored a 23 bit word in the Data Buffer Register 2601. The outputs of the Data Buffer Register 2601 are transmitted via the cable 2606 to the Call Store Write Data Bus Selection Gates 1020, and from there to the selected one, or both, of the duplicated buses of the Call Store Write Data Bus System 6402. The selection of the 0 bus or the 1 bus for the transmission of data is determined by the appearance of signals on the order leads BRCSB0 and BRCSB1 (FIG. 10). The selection of signals on one, or both, of BRCSB0 and BRCSB1 is determined by the setting of the CPD controlled status and routing flip-flops as enumerated in the send column of the earlier table. In the execution of the call store command to write data into the memory signals appear on one or both, of BRCSBO or BRCSB1 during 5T7 following the transmission of the initial parts of the call store command onto the Call Store Address Bus System 6401. Accordingly, a synchronizing signal, S3, is transmitted via the amplifiers 1024 or 1023, and the 23 bit data word is transmitted via the AND-gates 1028 or 1027, and a data parity signal is transmitted via the AND gates 1026 or 1025.

THE D A PARITY GENERATOR (2609)

The 12 address bits A0 through A11, the 6 code bits KO through K5, the 23 bit data word DO through D22, and the data parity bit comprise a 42 bit command segment in which odd parity is maintained. The signal on the conductor DA PARITY (FIG. 26) is generated by the DA Parity Generator 2609 as required to maintain odd parity for call store writing commands. The Index Adder Parity Generator 2415 serves to examine the 18 bit segment of the command which comprises the 12 address bits and the 6 code bits and provides an appropriate output signal on conductor 2418. If the parity of the code-address bits at the input of the Index Adder Parity Generator 2415 are even, a signal will appear on conductor 2418; however, if the parity of these bits is odd, there will be no signal on conductor 2418. Conductor 2418 thus serves to summarize the parity of the code-address bits and is employed as an input signal to the DA Parity Generator 2609 along with the data bits at the output of the Data Buffer Register 2601. All 24 bits of the Data Buffer Register 2601, that is, bits 0 through 23, are connected to the input of the DA Parity Generator 2609; however, the 24th bit which appears in the Data Buffer Register 2601 is always a zero as stage 23 is reset at time 21T1 by enabling cable conductor REBRP (FIG. 26). Summarizing, in executing a call store writing command the DA Parity Generator 2609 provides the data parity signal on conductor DA PARITY which is transmitted along with the data from the output of the Data Buffer Register 2601 via cable 2606 to the Call Store Write Data Bus Selection Gates 1020.

The DA Parity Generator 2609 is also employed in the execution of call store reading commands which either (1) obtain a data word and store that word in the Data Buffer Register 2601, or (2) obtain a transfer code-address which is placed in the Buffer Order Word Register 2410. In the case of indirect addressing bits 0 through 22 of the Buffer Order Word Register 2410 and the state of the Parity Flip-Flop 1911 are employed as the input signals to the DA Parity Generator 2609. An order cable signal on conductor CSDACK (FIG. 26) serves to substitute these conductors for the contents of the Data Buffer Register 2601. In checking a call store response for data readings the contents of the Data Buffer Register 2601 serve as the input information to the DA Parity Generator 2609.

ALL SEEMS WELL SIGNALS

In response to call store commands (both reading and writing), the Call Store 103 executes the command and, upon the successful completion of the execution responds by transmitting All Seems Well and synchronizing signals via the Call Store Response Bus System 6501 to Central Control 101. These signals are transmitted via Cable Receivers 1302 and 1301 (according to their appearance on the 0 bus 6501-0 or 1 bus 6501-1, respectively) to conductors SYNCO, AWSO, and SYNC1 and ASW1 (FIG. 13). The synchronizing and All Seems Well signals appearing at the inputs of AND gates 1308 and 1307 generate corresponding signals to set the flip-flops 1314 and 1313. Since the All Seems Well and the synchronizing signals are provided on a single rail basis, these flip-flops are previously reset in preparation by enabling order cable conductor RECER. The All Seems Well signals summarize a number of hardware checks which are made within the Call Store 103; the utilization of these signals as a maintenance tool is discussed later herein.

CALL STORE READING COMMANDS

In the execution of call store reading commands the response includes a 24 bit word of data, an All Seems Well signal, and a synchronizing signal appearing as one-half microsecond pulses on the Call Store Response Bus System 6501. The 24 bit word includes 23 bits of information to be utilized for data processing within Central Control 101 and a data parity bit. The call store response signals appear in parallel at the input terminals of the Call Store Response Bus Selection Gates 1300. The Call Store Response Bus Selection Gates 1300 are selectively enabled to accept the response from the 0 bus 6501-0 or from the 1 bus 6501-1, and the gates enabled are determined in accordance with the setting of the CPD control status and routing flip-flops as enumerated in the earlier table. If the response is to be accepted from the 0 bus 6501-0, the AND-gates 1304 and 1306 are enabled by a signal on order cable conductor CSBO and if the response from the 1 bus 6501-1 is to be accepted, the AND gates 1303 and 1305 are enabled by a signal on conductor CSB1.

Signals on order cable conductors CSBO and CSB1 occur at time OT11.

In FIG. 65 it is indicated that within Central Control 101 the data processing of reading from a memory other than a Program Store 102 occurs in phase 2 during the execution cycle and with the Call Store Response Bus Selection Gates 1300 enabled for the time OT11 the call store response is returned prior to this time, that is, it is returned during phase 1 during the execution cycle. It should be noted that the Call Store Response Bus Selection Gates 1300 are enabled for a period of time which greatly exceeds the period, i.e., one-half microsecond of the call store response signals. This greater period of time permits acceptance of the full pulse width (approximately .5 microseconds) of the call store bus response signals without regard for variations in time of response of the Call Store 103 and variations in length of cable connecting the Call Store 103 and the Central Control 101.

The 24 bit response word is transmitted through OR gate 1309, cable 1310, and AND gate 2102. The synchronizing signal is similarly transmitted to AND gate 2102. When the call store response is to be placed in the Data Buffer Register 2601 the gating of data readings from the Call Store Response Bus System 6501 via AND gate 2102 and OR gate 2106 is controlled by enabling order cable conductor CSBR (FIG. 21).

The information which is received both by the Data Buffer Register 2601 and the special flip-flops 1313 and 1314 is on a single rail basis; therefore, the Data Buffer Register 2601 and the special flip-flops 1313 and 1314 are reset prior to the time at which the information is received. Enabling order cable conductors REBR and REBRP (FIG. 26) resets the Data Buffer Register 2601, and a signal appearing on the order cable conductor 13RECER resets the special flip-flops 1313 and 1314. Both of these signals occur during OT1 prior to the receipt of information from the Call Store Response Bus System 6501.

CALL STORE ERROR DETECTION CIRCUIT 2200

In the performance of obtaining data from the Call Store 103 for memory reading orders the DA Parity Generator 2609 is utilized to check the parity of the data received and the address transmitted to obtain that data. The state of conductor 2418 indicates the parity of the 18 bit code-address, and the contents of the Data Buffer Register 2601 including the 24th bit comprise the remaining inputs to the DA Parity Generator 2609. The parity of the returned data and the address which was employed in obtaining that data should be odd. In the event of failure of parity, a signal on the PF conductor 2607 is transmitted to the Call Store Error Detection Circuit 2200.

The Call Store Error Detection Circuit 2200 serves to summarize the hardware checks which are made in carrying out call store commands. The input signals to the Call Store Error Detection Circuit 2200 comprise the call store synchronizing signal conductors CSS1 and CSSO (FIG. 13), the call store All Seems Well conductors ASWCSO and ASWCS1, the Parity Failure conductor 2607 and order cable conductor CSCK, and READCK (FIG. 22) The Call Store Error Detection Circuit 2200 is enabled by a signal on order cable conductor CSCK and if the parity check of a data reading is to be made order cable conductor READCK (FIG. 22) is also enabled. If one or more of the hardware checks enumerated above fails, the Call Store Error Detection Circuit 2200 enables output conductor CERI (FIG. 22). A signal on conductor CERI sets the CSEI flip-flop 2201 which in turn activates the Call Store Reread Sequencer 5700, the operation of which will be described later herein. The AND-gate 2700 is enabled by a signal on order cable conductor CSX and serves to transmit to the other terminal control the error indication on conductor CERI. The Call Store Error Detection Circuit 2200 is enabled for normal call store memory commands; it is not enabled for maintenance and control read and write commands.

PROGRAM STORE MEMORY ORDERS

Memory reading orders may also address memory locations within the Program Store 102. In such instances the indexing step produces a code-address corresponding to a program store memory location to be read. Memory reading orders for obtaining the data from a Program Store 102 utilize the same channels for addressing the store and for receiving the response employed in obtaining program order words. When data is to be read from a Program Store 102 the Data Reading Sequencer 4903 is activated. The sequencer is required since the obtaining of data from a Program Store 102 must be interleaved with the obtaining of program order words. Accordingly, this sequencer responds by storing the code-address of the next program order word temporarily in the Add-One Register 4304 and placing into the Program Address Register 4801 the data code-address by gating the outputs of the Index Adder Output Register 3401 thereto. The Data Reading Sequencer 4903 extends the processing time of a memory reading order by two 5.5 microsecond cycles. These two cycles are inserted in the operational step as set forth in FIG. 65 at the end of the indexing cycle and before the execution cycle. In the first cycle injected by the Data Reading Sequencer 4903 the order following the memory reading order is ignored and the data code-address is transmitted to the Program Address Register 4801. From there this code-address is transmitted as part of a program store command onto the Program Store Address Bus System 6400. In the second machine cycle injected by the Data Reading Sequencer 4903 the data reading is returned from the Program Store 102 via the Program Store Response Bus System 6500 to the Buffer Order Word Register 2410. From there a selected half of the 44 bit data reading is transmitted to the Data Buffer Register 2601, the selected half determined by bit 20 of the code-address formed in the indexing step of the order. When these functions are completed the Data Reading Sequencer 4903 is returned to the inactive state, and the memory reading order proceeds to its execution cycle wherein the data (now appearing in the Data Buffer Register 2601) is utilized to complete the operational step.

AUXILIARY BUFFER REGISTER MEMORY ORDERS

Memory reading and writing orders may also address a selected one of the auxiliary buffer registers such as DRO (3118), ARO (3105) (FIG. 31), DR1 (3617) (FIG. 36), et cetera. In such instances the DAR word is a code-address corresponding to the selected one of the auxiliary buffer registers. This code-address appears in the Index Adder Output Register 3401 and is utilized to transmit data from the Data Buffer Register 2601 to a selected one of the auxiliary buffer registers for memory writing orders or to transmit data from a selected one of the auxiliary buffer registers to the Data Buffer Register 2601 for memory reading orders.

A memory reading order which addresses a selected one of the auxiliary buffer registers selects by means of a signal appearing on one of the order cable leads ARO-BR, DRO-BR (FIG. 31), AR1-BR (FIG. 36), et cetera, to transmit the contents of a selected one of the auxiliary buffer registers via the AND gates 3108, 3120, 3608, et cetera, via the Buffer Register Input Bus 3209 and the OR gate 2106 to the inputs of the Data Buffer Register 2601. This gating action occurs during OT8 (phase 1) of the execution cycle.

Memory writing orders which place data into a selected one of the auxiliary buffer registers utilize the contents of the Index Adder Output Register 3401 to generate a signal on a selected one of the order leads BR-ARO, BR-DRO, BR-AR1, et cetera, to transmit the contents of the selected one of the registers via the Data Buffer Register 2601 and the Buffer Register Output Bus 2600 to a selected one of the AND-gates 3103, 3116, 3601, et cetera, to the inputs of the selected one of the auxiliary buffer registers ARO, DRO, AR1, et cetera. In that certain of the auxiliary buffer registers 3105, 3118, 3605, and 3617, have a 24 bit capacity as opposed to the 23 bit length of data words as processed within Central Control 101, the additional bit is provided in one of the bits of the indexed code-address as it appears in the Index Adder Output Register 3401.

The address which selects the particular auxiliary buffer register for reading or writing appears in bit positions 1 through 5 of the Index Adder Output Register 3401 during the execution of the memory order. When a memory writing order specifies a 24 bit auxiliary buffer register, then bit 0 of the code-address appearing in the Index Adder Output Register 3401 serves as the 24th bit of data. Order cable conductor 23 or 23 of cable 2611 is enabled according to contents of the least significant bit of the Index Adder Output Register 3401 thereby supplying the 24th bit of data on the Buffer Register Output Bus 2600. The 24th bit of this bus is transmitted whenever a memory writing order specifies one of the Match Registers ARO, AR1, DRO and DR1 (FIGS. 31, 36).

Memory writing orders which place data into a selected one of the auxiliary buffer registers utilize the contents of the Index Adder Output Register 3401 to generate a signal on a selected one of the order leads BR-AR0, BR-DR0, BR-AR1, et cetera, to transmit the contents of bits 0 through 22 of the Data Buffer Register 2601 via the cable 2600 to a selected one of the AND gates 3103, 3116, 3601, et cetera, to the inputs of the selected one of the auxiliary buffer registers AR0 3105, DRO 3118, AR1 3605, et cetera.

COMMUNICATION VIA COMMAND ORDERS

The third major class of communication involves the generation and transmission of "commands" to the Central Pulse Distributor 143, the Switching Network 120, the Master Scanner 144, et cetera. These commands are employed in controlling the noted units in the performance of both telephone and maintenance functions.

The Central Control 101 utilizes program orders designated herein as "command" orders to generate such commands. Certain of these orders generate commands to be transmitted only to the Central Pulse Distributor 143; these orders are designated herein as "CPD orders" and the commands associated with these orders are designated as "CPD commands." Other command orders generate information on the Network Command Bus 6406; these are designated as "network command orders" and the generation of information on the Network Command Bus 6406 is designated herein as "network commands." Network command orders are utilized to transmit information to not only the Switching Network 120 but to all units connected to the Central Control 101 via the Network Command Bus 6406 such as the Master Scanner 144, the Teletype Unit 145, et cetera. For convenience these units which are controlled by way of the Network Command Bus System 6406 are termed "Network Command Units" herein. The network command order employs the CPD command to designate a particular network command unit which is to respond to the network command.

In that the Central Pulse Distributor 143 is employed in the execution of both CPD orders and network command orders, communication with the Central Pulse Distributor 143 will be described first. The Central Pulse Distributor 143 is a high speed electronic translator which provides two classes of output signals in response to CPD commands. The first class of output signals is termed unipolar signals and the second class is termed bipolar signals. Commands are transmitted from the Central Control 101 to the Central Pulse Distributor 143 in the form of half microsecond pulses. The information required to control a Central Pulse Distributor 143 is transmitted in three successive waves which are each separated by 1.25 microseconds. The bus choice information which indicates that the central pulse distributors are to accept information from either the 0 or 1 bus of the CPD Address Bus System 6403 is transmitted in the first wave to all central pulse distributors via the CPD Bus Choice Bus 6405. This bus choice information is determined by the state of flip-flops CPDB (FIG. 59) and OL1 (FIG. 55) as described subsequently herein. The second wave consists of the CPD address transmitted on a selected 0 or 1 bus of the CPD Address Bus System 6403 to all central pulse distributors. The CPD address consists of signals which are to be translated by the Central Pulse Distributor 143 into a half microsecond output pulse appearing on a selected unipolar or bipolar output. The third wave consists of a half microsecond execute pulse transmitted on one of a plurality of cable pairs in the Execute Cable 6404. Corresponding to each cable pair in the execute cable is a discrete unit of the Central Pulse Distributor 143, and the execute pulse serves to select the unit which is to carry out the translation of the CPD address signals. The central pulse distributor units which do not receive the execute pulse do not carry out this translation, and the third wave serves thereby as part of the translation of the coded data within Central Control 101 into a pulse appearing on a selected discrete unipolar or bipolar output of the Central Pulse Distributor 143.

The operational step of command orders includes the information of data to specify the CPD address, the CPD execute signal, and/or the network command information. If, for example, the order X in FIG. 65 is a command order, the data is placed in the appropriate flip-flop registers within Central Control 101 during phase 2 of cycle 3, and accordingly the second and third wave information is generated only after this data is so registered. The generation of the three waves of CPD command information for the order X is correspondingly generated during 10T12, 15T17, and 20T22 of cycle 3.

The Central Pulse Distributor 143 in executing commands returns responses to the Central Control 101 as half microsecond pulses; the time of arrival of these pulses at Central Control 101 is dependent on the response time of the Central Pulse Distributor 143 and the lengths of the buses connecting the Central Control 101 and the Central Pulse Distributor 143. In the example of FIG. 65 gating signals lasting from T19 of cycle 3 until T12 of cycle 4 (a 3.75 microsecond span) are employed to gate these responses of the Central Pulse Distributor 143. It may be noted that this last gating action as well as the transmission of the second and third waves of the CPD command are generated after the order X has been replaced by the orders X+1 and X+2 in the Central Control 101; the Command Order Sequencer 4902 is therefore activated in the execution of the order X to carry out those gating actions.

If the order X is a network command order, the Command Order Sequencer 4902 is also employed to carry out the gating actions associated with the CPD command, and further the gating actions associated with the transmission of address information to the network command bus. In the execution of network command orders the network command unit returns responses to the Central Control 101 within a span of time that may extend to T5 of cycle 5. Accordingly, the Command Order Sequencer 4902 remains active to carry out all of the gating actions of the network command order which may extend to the end of phase 1 of cycle 5. It is with the aid of the Command Order Sequencer 4902 that the Central Control 101 extends the degree of overlap beyond that exhibited in FIG. 65. If the order X is a network command order, then gating actions associated with the operational step of order X will be simultaneously occurring with the execution cycle of the order X+2, at the time the order X+3 is arriving at the Buffer Order Word Register 2410, and at the time the address of the order X+4 is being transmitted on the Program Store Address Bus System 6400.

CPD COMMAND GATING ACTIONS

The choice of the 0 or 1 of the CPD address bus system is made according to the state of special flip-flops CPDB (FIG. 59) and OL1 (FIG. 55) within the Central Control 101. These flip-flops are set and reset under control of program sequences to indicate the routing of CPD address information as indicated in the following table: ##SPC7##

In the above table the entry X indicates that the command is transmitted on neither bus. According to the choice of bus, signals appear on one of the order cable conductors BCO or BC1 (FIG. 38) during 10T12 and are transmitted via the Cable Driver 3801 to the Bus Choice Bus 6405.

Signals to select a unipolar or bipolar output (the CPD address) are generated either by the CPD translator 5422 in response to the binary representation of the CPD address appearing in a portion of the First-One Register 5801 or (according to the command order) the CPD address is generated directly from outputs of portions of the K Register 4001 and the KA Input Register 3502. The CPD translator 5422 is employed in most instances; the outputs of the K Register 4001 and the KA input Register 3502 are used in transmitting special test or control signals to the Central Pulse Distributor 143.

A signal appearing on the order cable lead CPDA (FIG. 54) causes the CPD translator 5422 to generate the CPD address on the output conductors 5425 which is transmitted to the OR gate 4004 onto a second bus 4005 and from there to the input of the CPD Transmit Bus Selection Gates 3812. The CPD address is in this instance determined by the contents of bit positions 9, 14--22 of the First-One Register 5801 which are transmitted to the CPD translator via connecting cable 5810. Here the "bus choice" is implemented by the appearance of a signal on AOB or A1B (FIG. 38) during 15T17 to transmit the CPD address via the AND gates 3814 and 3815 and the Cable Driver 3802 to the 0 bus 3804 or via the AND-gates 3816 and 3817 and the Cable Driver 3803 to the 1 bus 3805.

A signal appearing on the order cable conductor 3810 and signals appearing on the output conductors 7, 8 and 9 of the First-One Register 5801 indicates the alternative of deriving the CPD address or special signals TEST or RESET (FIG. 38) from information contained in portions of the K Register 4001 and the KA Input Register 3502. The outputs of the K Register 4001 and the KA Input Register 3502 are gated via the buses 4006 and 3519, the AND-gates 4002 and 4003 (and in part via the OR-gate 4004) to the bus 4005. From there the gating of the CPD address, TEST and RESET signals to the CPD Address Bus System 6403 is as previously described.

The third wave of information is generated by the appearance of a signal on CPDX (FIG. 54) during 20T22; the execute signal appears on one of the conductors 5426 according to the contents of bit positions 10 through 13 of the F Register 5801. The execute signal is transmitted via the conductors 5426 and the Cable Driver 3800 to the CPD Execute Cable 6404.

In the execution of CPD commands the bipolar output signals are in some instances accompanied by a synchronizing security signal (WRMI). In such instances the CPD command utilizes the outputs of the CPD translator 5422 and the appearance of the synchronizing security signal is specified by the appearance of a 1 in bit position 8 of the First-One Register 5801. if the synchronizing security signal is so specified, a pulse appears during 20T22 on order cable conductor CPD INPUT SYNC (FIG. 38) and is transmitted through the Cable Drivers 3806 and 3807 to both the 0 bus 3808 and the 1 bus 3809 of the CPD Input Sync Bus System 6702.

In response to the bus choice, CPD address, and execute signals the Central Pulse Distributor 143 generates an output pulse on the selected unipolar or bipolar output point. In addition, the Central Pulse Distributor 143 generates maintenance signals that are transmitted to the Central Control 101 to permit a check on the execution of the CPD command. These signals comprise the execute response signals transmitted via the Execute Response Bus System 6502, an All Seems Well signal transmitted via the CPD Verify Bus System 6704, and CPD maintenance signals transmitted via the CPD Maintenance Response Bus 6904.

The execute response signals appear as half microsecond pulses on the Execute Response Bus 6502 and are transmitted through the Cable Pulse Receivers 1600. Signals appearing on the order cable conductor CPDEW (FIG. 16) during 19T12 (a 3.75 microsecond interval from time T19 of one machine cycle to time T12 of the following machine cycle) transmit the execute response through AND-gate 1601 to the CPD Execute Response Cable 1605 and the set inputs of bit positions 0 through 15 of the Command Order Maintenance Summary Register 6205. The All Seems Well signal is returned to the Central Control 101 via the 0 bus or 1 bus of the CPD Verify Bus System 6704 and the Cable Receivers 1502 or 1501. A signal appearing on CPDEW (FIG. 15) serves to transmit these All Seems Well signals through the AND gates 1506 and 1505 and the OR gate 1509 of the CPD Verify Bus Selection Gates 1500 to conductor 1510 of the Error Summary Cable 1218. The further appearance of the same signal on order cable conductor CPDEW (FIG. 62) transmits the All Seems Well signal from the Error Summary Cable 1218 and the bus 6200 through the AND gate 6203 to the set input of the flip-flop 62ASW CPD.

The maintenance response of a Central Pulse Distributor 143, appearing as the signals APAR, BPAR, CPAR, and M1 (FIG. 16), is returned via the CPD Maintenance Response Bus 6904 and the Cable Receiver 1603 to the Error Summary Cable 1218. From there these signals are transmitted as previously described to the set inputs of the flip-flops PCA, PCB, PCC, and MCE, respectively.

The execute response signals, the All Seems Well signals, et cetera, appear on the Error Summary Cable 1218 and the CPD Execute Response Cable 1605 as single rail half microsecond pulses sometime within the previously defined 3.75 microsecond interval 19T12. Accordingly, bits 0 through 21 of the Command Order Maintenance Summary Register 6205 are reset prior to this interval by the appearance of a signal on the order cable conductor RCPD (FIG. 62) during 17T19.

CPD COMMAND HARDWARE CHECKS

In the execution of CPD commands the proper response of the Central Pulse Distributor 143 includes the transmitting of the All Seems Well signal to Central Control 101 and the transmission of execute response signals which match the execute signals sent in the third wave of the CPD command. Accordingly, the command order sequencer interrogates the flip-flop ASW CPD (FIG. 62) and the output of the Execute Match Circuit 5033 sometime after the 3.75 microsecond interval 19T12 in which the execute response and All Seems Well information appear. The Execute Match Circuit 5033 compares the signals appearing on the conductors 5424 (the execute signals appearing at the output of the CPD translator 5422) and the signals appearing on conductor 6210 (the execute response as registered in bits 0 through 15 of the Command Order Maintenance Summary Register 6205). If a match occurs, a signal appears on the conductor EXM (FIG. 20), and if the All Seems Well signal is returned to Central Control 101, a signal appears on ASW CPD (FIG. 62). Failure of Signals to appear on these leads causes the Command Order Sequencer 4902 to set the flip-flop PUEI (FIG. 52) which results in ensuing maintenance program designated to determine the nature and location of the trouble.

The response of the Central Pulse Distributor 143 stored in the flip-flops MCE, PCA, PCB, and PCC (FIG. 62) are not examined by the Command Order Sequencer 4902, but serve as additional maintenance information in the event of troubles indicated by improper execute response signals or the failure of the appearance of an All Seems Well signal.

NETWORK COMMAND GATING ACTIONS

The operational step of network command orders include the generation of a network command on cable 3516 and the transmission of these signals through the Network Command Transmit Bus Selection Gates 2800 to the Cable Drivers 2804 and 2805 and the bus 0 2806 and bus 1 2807 of the Network Command Bus System 6406. If the order X in FIG. 65 is a network command order, then signals appearing on NCTBO or NCTB1 (FIG. 28) during 4T6 of cycle 4 (not shown in FIG. 65) transmits the command to the or 1 bus, respectively, of the Network Command Bus System 6406. The selection of the duplicate bus for transmission is controlled by the state of the flip-flops OL2 (FIG. 55) and bit position 14 of the First-One Register F14 as indicated in the following table: ##SPC8##

In the above table the entry X indicates that the command is transmitted on neither bus.

The network command generated on the cable 3516 is obtained from portions of the contents of either the KA input Register 3502 or the K Register 4001 and the K A Input Register 3052 depending on the command order being executed and the contents of bit positions 7, 8, and 9 of the First-One Register 5801. That is, according to the combination of signals on 7, 7, 8, 8, 9, and 9 conductors of cable 5811 and the state of order cable conductors 10, FINH, and SR (FIG. 35), the network command is obtained from:

1. Portions of the KA Input Register 3502 via AND gates 3511, 3512 and OR gates 3514, 3515;

2. Portions of the K Register 4001 and the KA Input Register 3502 via AND gates 3513, 3511 and OR gates 3514, 3515; or

3. From portions of the KA Input Register 3502 via the command Translator 3509 and OR gates 3515.

In the last instance, signals on cable 5811 further select the portion of the KA Input Register 3502 that are translated and the translation to be employed.

Whenever a network command is generated it is simultaneously transmitted to all network command units. The CPD command performed in the execution of a network command order serves to select which of the network command units is to execute the network command. Associated with each of the network command units are distinct unipolar outputs of the Central Pulse Distributor 143. A pulse appearing on a selected one of these unipolar outputs causes the corresponding network command unit to execute the transmitted network command. In carrying out this network command certain of the network command units transmit responses to the Central Control 101. These responses may include verify signals transmitted on the CPD Verify Bus System 6704 and data transmitted on the Scanner Answer Bus System 6600. With reference to FIG. 65, if the order X is a network command order, these responses appear as half microsecond signals within a 6.25 microsecond span of time beginning with T4 of cycle 4 and ending with T7 of cycle 5. The time interval is designated herein as 4T29 to emphasize that the time interval is in excess of one machine cycle.

The enable verify signals appear on the 0 bus 6704-0 or 1 bus 6704-1 of the CPD Verify Bus System 6704 and are transmitted via the Cable Receivers 1502 and 1501, respectively, to the CPD Verify Bus Selection Gates 500. Accordingly, signals appearing on the order cable conductors CPDBO or CPDB1 (FIG. 15) during 4T29 serve to transmit the CPD verify signals through the AND gate 1504 or 1503 and the OR gate 1507 to the cable 1508. Single rail signals appearing on the bus 1508 are thereby transmitted to the set inputs of the Y Register 3001 via the AND gate 3004 and the OR gate 3005. A signal on order cable conductor VBYR (FIG. 30) enables AND gate 3004. The CPD verify signals so placed in the Y Register 3001 must be identical in form to the CPD address appearing on the output leads 5423 of the CPD Translator 5422. The leads 5423 and the outputs of the Y register (transmitted on the cable 3013) are inputs to the Enable Verify Match Circuit 5027. In the performance of network commands orders for which the CPD verify signals are to be placed in the Y Register 3001 the Command Order Sequencer 4902 interrogates the output of the Enable Verify Match Circuit 5027 upon the receipt of the CPD verify signals. This interrogation serves as a check on the proper operation of the network command; if improper operation is indicated by a mismatch, this mismatch information appearing on the lead EVM is transmitted under control of the Command Order Sequencer 4902 to set the interrupt source flip-flop PUEI (FIG. 52). The setting of this flip-flop may lead to an ensuing interrupt program designed to determine the circuit trouble causing the detected improper operation.

The selection of the 0 bus or the 1 bus as determined by the appearance of signals on the order cable leads CPDBO or CPDB1 (FIG. 15) are determined by the state of flip-flop CPDB (FIG. 59). This flip-flop serves to indicate the state of connections of the CPD Verify Bus System 6704 and indicates that the 0 bus is to be used if the flip-flop is reset, otherwise the 1 bus is to be examined for CPD verify signals.

The operational step of certain of the network command orders results in the returning of data on the Scanner Answer Bus System 6600 to the Central Control 101. In such instances gating signals under the direction of the Command Order Sequencer 4902 transmit scanner answers from the 0 bus 6600-0 or 1 bus 6600-1 through the Scanner Answer Bus Selection Gates 1400 onto the bus 1408 through the AND gate 2100 to the inputs of the Logic Register 2508. The 0 bus 6600-0 or 1 bus 6600-1 is examined by the appearance of signals on the order cable lead SCAO or SCA1 (FIG.14), respectively, during 4T29. The scanner answer is transmitted through the AND gate 1404 or 1403 and the OR gate 1407 to the bus 1408. The simultaneous appearance of a signal on the order lead SCLR (FIG. 21) transmits these single rail signals through the AND gate 2100 to the set inputs of the Logic Register 2508.

The selection of the 0 bus or 1 bus is determined by the states of flip-flops AU (FIG. 55), SCBA and 59SCBB according to the following table. ##SPC9##

In the execution of network command orders on All Seems Well signal is returned in some instances via ASWO or ASW1 of the Scanner Answer Bus System 6600. This signal serves to indicate the proper response to the command by the selected network command unit. In such instances a signal on order cable conductor SCAO or SCA1 (FIG. 14) transmits the All Seems Well signal through the AND gates 1406 or 1405 and the OR gates 1409 to the Error Summary Cable 1218. The All Seems Well signal is thereby transmitted to the set input of the flip-flop ASWS (FIG. 62). When specified by a network command order being executed, the output of the flip-flop ASWS is interrogated by the Command Order Sequencer 4902 to determine the appearance of the All Seems Well signal; if this signal is not so registered in the flip-flop further gating actions are undertaken by the Command Order Sequencer 4902 which lead to an ensuing interrupt program to examine the system for the cause of the trouble.

The CPD verify signals, and information returned on the Scanner Answer Bus System 6600 appear as single rail half microsecond pulses which are to set selected flip-flop registers within Central Control 101. To prepare for the reception of such single rail information the corresponding flip-flop registers are previously reset. If information is to be transmitted from the Scanner Answer Bus System 6600 to the Logic Register 2508, then a signal appearing on the order lead RELR (FIG. 25) during 4T6 of cycle 4 resets that register. Similarly, signals appearing on order cable leads REYR (FIG. 30) and RASWS (FIG. 62) provide the initial resetting of the Y Register 3001 and the flip-flop ASWS (FIG. 62)

CROSS-CONNECTION OF ERROR SIGNALS IN CENTRAL CONTROL 101

The Central Control 101 is duplicated, and at any time one of the two units is designated the "active unit" and the remaining unit is referred to as the "standby unit." The active unit serves to execute all of the call processing and most of the maintenance program sequences. That is, in most instances the control of the telephone switching system emanates from the execution of program sequences within the active central control unit; the standby central control unit may also be executing the same program sequences, but the standby central control unit does not transmit CPD commands or network commands and therefore has no direct influence in the operation of the telephone switching system.

When difficulties in the operation of the Central Processor 100 are detected by one of more of hardware or program checks remedial maintenance programs are called in which may determine that the difficulty lies within the active central control unit. If this is the case the Emergency Action Sequencer 5702 or a program sequence executed in the active central control "switches" the units. That is, the active central control unit is made to be the standby unit, and the standby central control unit is simultaneously designated the active unit. This switch is made by a CPD command which simultaneously changes the states of the CPD command which simultaneously changes the states of the CPD controlled status flip-flops AU (FIG. 55) in both central control units. The state of this flip-flop places its central control in the standby or active state. By resetting flip-flop AU an active central control is switched to the standby state.

In the absence of trouble the various duplicate units (the Central Control 101, the Program Store 102, the Call Store 103, and connecting address and response bus systems) may be assembled into two distinct or partially shared duplicates of a central processor. The active central control unit is the nucleus for an "Active Central Processor," and the standby central control serves in the "Standby Central Processor." The duplicate central processors are advantageously used in our system in two modes. The first mode is the running of the duplicate central processors in "step." That is, both active and standby central processors are executing the same program sequences (from the same or duplicate program store units), reading and writing data (from the same or duplicate call store units), but only the active central processor is controlling the Central Pulse Distributor 143 and the network command units. In the second mode of operation the active central processor is carrying on the call processing function using one set of program sequences while the standby central processor is performing diagnostic exercises utilizing different program sequences and only "unshared" units of the duplicate central processors.

In the first mode the execution of program sequences in duplicate within the Central Processor 100 is employed to detect the occurrence of circuit troubles therein by periodically matching strategic data processing modes in both central control units. (In this embodiment two pairs of words are matched per 5.5 microsecond cycle.) The nodes matched include the Unmasked Bus 2014, the Masked Bus 2011, the Index Adder Output Register 3401, and the Data Buffer Register 2601, the Program Address Register 4801, the Buffer Order Word Register 2410, and sequencer test points.

When circuit troubles occur in one central processor unit and cause the data processing to be altered this alteration results in a mismatch of two like nodes in the duplicate central processors. The detection of the mismatch will lead to a maintenance interrupt and program sequences designed to determine the unit in trouble. It should be noted that the matching scheme works only if the duplicate program sequences are running in step. That is, if the execution of one program sequence falls behind its "twin," then mismatches of like nodes may occur as a result of different data processing steps rather than circuit troubles. The result would be the occurrence of the C level maintenance interrupt leading to the above-mentioned program sequences which is not only unnecessary but also may cause subscriber dissatisfaction by a lengthy interruption of call processing to execute exhaustive program sequences which search for a nonexistent trouble.

As previously indicated, there exist partially or wholly independent "loops" of communication between the two central control units and two or more units in the Program Store 102 and/or the Call Store 103. It is therefore possible that an error be generated in one such loop while no corresponding error occurs in the duplicate loop. For example, one central control unit may detect an error in reading program words or data while the second unit receives a valid word of program or data. In such instances one central processor unit inserts one or more 5.5 microsecond cycles to correct or reread the program or data word; to keep the two program sequences in step, for purposes of matching, the duplicate unit must also insert the same one or more 5.5 microsecond cycles. The duplicate central processors are kept in step by the "cross-connecting" of error information so that correction or rereading actions are initiated in both central processors in response to hardware troubles detected in either duplicate central processor. That is, when one central control unit detects a failure of one or more hardware checks in reading or writing words in the Program Store 102 or the Call Store 103 or in executing a CPD command and/or a network command, the information is transmitted to the second central control unit. A similar transmission of information from the second central control unit to the first is included to provide the "cross-connection."

This cross connection of trouble information is only relevant when the two central controls are running in step. When the central processors are executing independent programs matching is dropped. In this independent mode trouble information transmitted from one central control unit to another is irrelevant and must be ignored. This is accomplished by setting the CPD controlled status flip-flop DI (FIG. 55) which, as described below, disables the cross connection.

The hardware check of program or data words read from the Program Store 102 by the Central Control 101 is performed in the Error Detection and Correction Circuit 2400. Checks are also made therein of program words obtained from the Call Store 103. When a correctable error is detected, a signal appears on the I Correct conductor 2420; when an error requiring a rereading is detected, a signal appears on the I Reread conductor 2421.

A signal appearing on conductor 2420 sets the I correct flip-flop 2312, and a signal on conductor 2421 sets the I Reread flip-flop 2313. The flip-flops 2312 and 2313 serve as the indication of hardware check failures within the central control unit. The setting of either of these flip-flops results in a signal being transmitted through the OR gate 2317 and the conductor 2322 to the Error Detection and Correction Circuit 2400 which in turn generates signals leading to the required actions of correcting or rereading.

Signals appearing on conductors 2420 and 2421 are transmitted through the AND-gates 2302 and 2303, respectively, by the appearance of a signal on order cable conductor PSX (FIG. 23) during 12T14 of the 5.5 microsecond cycle in which the program store reading is being checked. These signals are thereby transmitted as half microsecond pulses through the Cable Drivers 2304 and 2305 and the bus 2300 to the other central control unit. The bus 2300 in each central control unit is the bus 2301 in the other central control unit; the half microsecond signals corresponding to conductors 2420 and 2421 generated in one central control unit appear on the bus 2301 of the other central control unit and are transmitted via the Cable Receivers 2310 and 2311 to the set inputs of the E Correct flip-flop 2314 and the E Reread flip-flop 2315, respectively. The setting of either the E Correct or E Reread flip-flops causes a signal to be transmitted via the OR gate 2317 and the conductor 2322 to the Error Detection and Correction Circuit 2400. Thus errors detected in reading the Program Store 102 for program words or data or the Call Store 103 for program words within one central control unit are transmitted to the other central control unit to cause the Program Store Correct-Reread Sequencer 5301 or the Call Store Program Sequencer 5302 in both units to insert the same number of machine cycles and thereby keep the program execution in step.

When the duplicate central processors are executing different program sequences the flip-flop DI (FIG. 55) must previously be set in both central control units; a signal then continually appears on the order cable lead DI (FIG. 23) and is transmitted through the OR gate 2316 to the reset inputs of the E Correct and E Reread flip-flops. This reset signal overrides any trouble signals transmitted from the other central control so that the Error Detection and Correction Circuit 2400 does not respond to any externally generated trouble signals.

A similar cross connection applies to the reading or writing of data from the Call Store 103. In this instance hardware check failures are summarized in the Call Store Error Detection Circuit 2200 and appear as a signal on the CERI output conductor 2220 which sets the CSEI flip-flop 2201 and is transmitted via the AND-gate 2700 and Cable Driver 2701 to the bus 2706. The bus 2706 in each central control unit is connected to the bus 2208 of the other central control unit; the call store error signal generated as a half microsecond pulse in AND gate 2700 of one central control is thereby transmitted through Cable Receiver 2205 of the other central control unit to the CERE conductor 2212 and to the set input of the CSEE flip-flop 2202. The setting of either the CSEI or CSEE flip-flops cause a signal to be transmitted through the OR gate 2203 to the conductor CER (FIG. 22); a signal appearing on CER leads to the activation of the Call Store Reread Sequencer 5700.

Setting the flip-flop DI (FIG. 55) causes a signal to continually appear on DI (FIG. 22) and be transmitted through the OR gate 2209 to the reset input of the CSEE flip-flop 2202; the setting of DI (FIG. 55) serves to disable the cross connection of call store error information.

A cross connection of hardware check failure information is also provided as part of the execution of CPD commands and network commands. These commands and the hardware checks are executed under control of the Command Order Sequencer 4902; upon completion of a CPD command or a network command any hardware check failures are summarized as a half microsecond pulse appearing on the order cable conductor PUEI (FIG. 27) which is connected via the bus 5205 to the set input of the Maintenance Interrupt Source Flip-Flop PUEI (FIG. 52). This same signal is transmitted via the Cable Driver 2701 and bus 2706 to the other central control unit. This signal is transmitted to the bus 2208 of the other central control unit and within that unit through the Cable Receiver 2205 to the conductor PUEE (FIG. 22). Unless the flip-flop DI (FIG. 55) is set the signal appearing on PUEE (FIG. 22) is transmitted through the AND gate 5218 to the set input of the Maintenance Interrupt Source Flip-Flop PUEE (FIG. 52); setting either PUEI or PUEE leads to a level F maintenance interrupt and interrupt program sequences which investigate difficulties in CPD command or network command communications.

INTERRUPT LEVELS

Each of the telephone and maintenance program sequences which are initiated via the interrupt system are ranked in one of nine levels according to the relative urgency of the components. These levels are designated herein Level A, Level B...Level J (level I is excluded) in descending order. Corresponding to each of these levels is a discrete program sequence to which program control is transferred whenever the Interrupt Sequencer 4901 is activated, and this transfer is accompanied by the setting of a corresponding flip-flop in the Interrupt Level Activity Register 6302. For example, when the Interrupt Sequencer 4901 is activated to transfer control to a level E interrupt program sequence, order cable conductor 63LE S is enabled to set the level E activity flip-flop 63LE. Accordingly, each time an interrupt is generated the "level" of that interrupt is recorded in the Interrupt Level Activity Register 6302.

When the Central Control 101 is not executing any of its interrupt program sequences all of the flip-flops in the Interrupt Level Activity Register 6302 are reset and the Central Control 101 is said to be executing its "main program" and is operating in the "base level." When a specific program sequence is required, then a corresponding one of the flip-flops in the Maintenance Interrupt Sources 5209, 5210, 5605, and the H and J Clock Interrupt Sources 5604 is set. The setting of the Interrupt source flip-flop, unless inhibited by a means described elsewhere herein, activates the Interrupt Sequencer 4901 to effect the required interrupt.

INTERRUPT SOURCE FLIP-FLOPS

Each of the above-mentioned interrupt source flip-flops is associated with a discrete interrupt level. However, there may be a number of interrupt source flip-flops assigned to a particular level. For example, there are two interrupt source flip-flops 52MMI1 and 52 MMI0 both associated with the C level. Setting either of these flip-flops constitutes a request for a C level interrupt. The C level interrupt program sequences include orders to examine the interrupt source flip-flops 52MMI1 and 52 MMI0 to determine a specific set of program sequences to which a transfer is to be made, the sequence transferred to depending on the interrupt source flip-flop which was set to initiate the interrupt.

The assignment of interrupt source flip-flops to the corresponding level is as indicated below. ##SPC10## It is to be noted that there is no A level interrupt source flip-flop. The A level interrupt program sequences are generally employed only for initial testing of program sequences. An A level interrupt is initiated by operating a manual switch not shown which directly activates the Interrupt Sequencer 4901.

The activation of the Interrupt Sequencer 4901 depends not only on the setting of one of the above listed interrupt source flip-flops but also upon the states of the Interrupt Level Activity Register 6302 and the Interrupt Inhibit Control Register 6002, 6003. Assuming first that all of the flip-flops within the Interrupt Inhibit control Register 6002, 6003 are reset, then an interrupt is generated whenever an interrupt source flip-flop is set unless (with exceptions to be noted) the level activity flip-flop in the Interrupt Level Activity Register 6302 corresponding to that level or any higher level as indicated in the above table is set. This "lock-out" control of the interrupt levels is accomplished by combining the outputs of the Interrupt Source Flip-Flops 5209, 5210, 5604, and 5605 via conductors 5216 and 5608 and the OCG Cable 1812 and outputs of the Interrupt Level Activity Register 6302 as transmitted via cable 6303 and the OCG Cable 1812 within the Order Combining Gate Circuit 3901. Accordingly, when an interrupt request is registered and not "locked-out," order cable conductor 49IS GO is enabled to activate the Interrupt Sequencer 4901.

The Interrupt Inhibit Control Register 6002, 6003, permits the selective inhibition of interrupt requests as registered in the interrupt source flip-flops. For example, if the flip-flop 60I05 is set, then setting of the interrupt source flip-flop 56-ODD 5 is inhibited from activating the Interrupt Sequencer 4901. The assignment of inhibit signals to the flip-flops within the Interrupt Inhibit Control Register 6002, 6003 are as shown in the following table. ##SPC11##

In the performance of particular telephone and maintenance functions the occurrence of certain selected level interrupts are to be inhibited and be delayed or not executed. In these instances memory writing orders serve to selectively set one or more of the flip-flops in the Interrupt Inhibit Control Register 6002, 6003 as required. A subsequent resetting of the flip-flops in this register returns the ability to request interrupts to the corresponding interrupt source flip-flops.

As noted above, the setting of flip-flops in the Interrupt Level Activity Register 6302, with exceptions to be noted, serve to lockout subsequent interrupts corresponding to that level and all levels below. For example, the setting of the interrupt level activity flip-flop 63LG in the execution of a level G interrupt prevents further response of the Interrupt Sequencer 4901 to the setting of any interrupt source flip-flops corresponding to the levels G, H, and J. However, the Interrupt Sequencer 4901 remains responsive to the setting of interrupt source flip-flops corresponding to levels F or higher. If one of the higher level interrupt source flip-flops is set, the Interrupt Sequencer 4901 will execute the transfer of program control from the G level interrupt program sequences to the interrupt program sequence corresponding to the higher level. The sequencer also carries out the storing of the return code-address and other information and a pair of locations in the Call Store 103 reserved for this higher level. The occurrence of the higher level interrupt is also recorded by setting the appropriate flip-flop in the Interrupt Level Activity Register 6302.

The base level program may be interrupted in the manner just described to begin execution of any one of the nine level interrupt programs, and once one of these program sequences is initiated it, in turn, may be interrupted to permit the performance of higher level interrupt functions. However, with two exceptions noted below any given level interrupt program sequence may not be interrupted to perform an interrupt function of the same or lower level.

The Interrupt Level Activity Register 6302 serves to completely record the history (unless the noted exceptions occur) of any such occurrence of interrupts upon interrupts. Accordingly, even when such interrupts upon interrupts occur, when each of the interrupt program sequences are completed the Central Control 101 can be returned to the state it enjoyed at the time of the associated interrupt (including the resetting of the appropriate flip-flop in the Interrupt Level Activity Register 6302) and program control be returned to the lower level interrupted program.

The above-noted exceptions to the hierarchy of interrupt levels may occur in the execution of A and/or B level interrupts. The A level interrupt program sequences are provided as a tool in the initial testing of program sequences; the Interrupt Sequencer 4901 may be activated to generate an A level interrupt by manual means not shown. This program test sequence is assigned to the highest interrupt level so that it can be initiated to an interrupt and examine the state of Central Control 101 for any program sequence being tested. The programs to be tested can therefore include all interrupt program sequences other than the A level interrupt program sequence itself.

The B level interrupt is generated whenever the Emergency Action Sequencer 5702 is activated, and the B level interrupt program sequence continues the execution of the emergency action functions initiated by the Emergency Action Sequencer 5702. In some instances the functions performed by the Emergency Action Sequencer 5702 and the B level interrupt program sequences will not resolve the difficulty; in such instances hardware and/or program checks result in the reactivation of the Emergency Action Sequencer 5702. In such instances the Interrupt Sequencer 4901 must again be activated to reinitiate the B level interrupt program sequences. Accordingly, B level interrupts are allowed to interrupt both A level and B level program sequences as indicated in FIG. 66.

INTERRUPT ADDRESS SOURCE (3411)

Associated with each interrupt level are three discrete code-addresses; for the nine interrupt levels there are a total of 27 such code-addresses, no two of which are alike. Two of the code-addresses associated with each interrupt level correspond to the pair of reserved call store locations used by the Interrupt Sequencer 4901 for the storage of the contents of the Data Buffer Register 2601, the Auxiliary Storage Register 4812, et cetera. The third code-address comprises the transfer code-address which corresponds to the location of the first program order word in the interrupt program sequence.

The Interrupt Address Source 3411 generates these code-addresses under control of the Interrupt Sequencer 4901 and in response to the state of the Interrupt Level Activity Register 6302 which indicates the level of the interrupt being executed. The Interrupt Address Source 3411 receives these indications via order cable conductors 3420 and generates the required outputs as follows:

1. During the first machine cycle of the interrupt the call store code-address of the first reserved storage location is generated and transmitted to the Index Adder Output Register 3401 via AND gate 3412 and the OR gate 3410. The Interrupt Sequencer 4901 enables the order cable conductor 34ISIR to effect this step; the code-address is then transmitted as part of the call store writing command;

2. During the second machine cycle of the interrupt, the Interrupt Address Source 3411 responds to the corresponding internal state of the Interrupt Sequencer 4901 to generate the second call store code-address; and

3. Signals on order cable conductors 34INMB and 43MBPA transmit the transfer code-address from the outputs of the Interrupt Address Source 3411 via the Masked Bus 2011 to the Program Address Register 4801 to effect the transfer.

MODIFIED INTERRUPT ADDRESS FLIP-FLOP (4717)

In performing the maintenance functions within our system various interrupt program sequences carry out the required remedial actions. To perform these actions certain portions of the hardware within Central Control 101 must be functioning properly at the time the remedial action is required. Since these remedial actions are required at random instances, a number of base level program sequences are periodically executed tp perform various "preventive" maintenance functions. These functions include the testing or "exercising" of those portions of the central control hardware not otherwise used in call processing program sequences but which must be functioning properly to carry out remedial maintenance functions. These exercises include check of the Interrupt Sequencer 4901 utilizing the Modified Interrupt Address Flip-Flop 4717 for such exercises.

In our system it is possible to cause a setting of a selected one of the maintenance interrupt source flip-flops even when the system has in reality no associated circuit troubles. For example, the successive execution of the orders BMOP and MB to the same call store location result in the experiencing of a rereading failure by the Call Store Rereading Sequencer 5700 and the subsequent setting of the D level interrupt source flip-flop 52CSRRF. Accordingly, the ability of the interrupt system to respond to the setting of 52CSRRF can be exercised; however, to avoid burdening the D level interrupt program with determining whether the interrupt was initiated as a result of the preventive maintenance test or as a result of a trouble condition in communication with the Call Store 103 the modified interrupt address flip-flop 4717 is provided.

In the exercising of the Interrupt Sequencer 4901 the Modified Interrupt Address Flip-Flop 4717 is first set and then the setting of the selected interrupt source flip-flop is achieved shortly thereafter. As a result all of the steps of the interrupt are performed by the Interrupt Sequencer 4901, but one bit of the transfer code-address generated in the Interrupt Address Source 3411 is changed so that a transfer is made not to the maintenance interrupt program sequence but to a special program interrupt sequence which is part of the program sequences to exercise the Interrupt Sequencer 4901.

After the transfer code-address is placed in the Program Address Register 4801 the Interrupt Sequencer 4901 resets the Modified Interrupt Address Flip-Flop 4717. Thus, the access to the maintenance interrupt program sequences is rapidly and conveniently returned to maximize the security of access to the remedial maintenance functions.

DELAYS IN ACTIVATING THE INTERRUPT SEQUENCER (4901)

Whenever an interrupt source flip-flop is set and the state of the Interrupt Level Activity Register 6302 and the Inhibit Interrupt Control Register 6002, 6003 do not otherwise lockout or inhibit the interrupt request, the Interrupt Sequencer 4901 is activated to perform the corresponding level interrupt. This response may occur within one machine cycle after the setting of the interrupt source flip-flop or a delay of several machine cycles may be experienced. This delay is dependent on the state of Central Control 101 as follows:

1. If the Central Control 101 is executing a multicycle program order in the Order Word Register 3403 when the interrupt request is registered, the corresponding interrupt is delayed until the operational step of that order is completed and the Buffer Order Word Decoder 3902 and the Mixed Decoder 3903 are inhibited to prevent the processing of the next order in sequence. Thus, the interrupt follows the completion of the order in the Order Word Register 3403 but occurs before the next program order in sequence is processed.

2. Whenever the Central Control 101 is rereading and/or correcting program order words or data, any interrupt request are not served until the corresponding sequencer actions are completed.

3. When the Central Control 101 is executing an EXC order any simultaneous occurrence of the setting of an interrupt source flip-flop is not recognized by the Interrupt Sequencer 4901 until the order word specified by the EXC order has either been obtained and executed or encounters a rereading failure. This delay is provided so that the code-address stored by the interrupt always comprises the correct return code-address.

In addition, when the execution of any of the orders ENTJ, MCII, and MKII are accompanied by simultaneous H or J level interrupt requests, the interrupt is delayed until the order following the ENTJ, MCII, or MKII is executed. It is to be noted that maintenance interrupts (Level G or higher) are not delayed so that circuit troubles detected in the execution of any of these order words leads to the immediate occurrence of the required interrupt.

The delay for the ENTJ order is provided for reasons similar to that stated above for the order EXC. That is, the appropriate return code-address can be determined only with the aid of a special program sequence. The operational delay provided for levels H and J eliminates the need for executing the special program sequence in returning to the base level from the H or J interrupt levels. Thus, the time consumed for the noncall processing portions of the frequently executed H and J level interrupt programs is reduced.

The orders MCII and MKII are also provided with this delay feature to circumvent a different problem. In the base level there are program sequences which read certain data words from the Call Store 103 and with the following program order modify and return the modified data to the same location in the Call Store 103. The program sequence would consist of a memory reading order followed by a memory writing order.

The H and/or J level interrupt level program sequences may also modify this data word in a similar manner. If the base level program sequence is interrupted to perform such an H or J level function after the data has been read in the base level program sequence but prior to the modification and writing of that data word, then upon return to the base level the execution of the memory writing order will destroy the modification of data performed at the H or J level. By utilizing the order MCII or the order MKII of the above-mentioned two word base level program sequence the H and J level interrupts are delayed until the memory writing order following MCII or MKII is completed thereby eliminating the hazard described above.

RETRIAL OF INTERRUPT STORING OPERATIONS

When the Interrupt Sequencer 4901 carries out the two call store writing operations each operation is accompanied by a hardware check and if either of these checks fail, the Call Store Reread Sequencer 5700 is enabled. The Call Store Reread Sequencer 5700 provides an automatic retrial of the storage operation. If the retrial succeeds, the Call Store Reread Sequencer 5700 returns to the inactive state and the interrupt proceeds as previously described. If, however, the retrial fails, the interrupt also proceeds to completion but before the Call Store Reread Sequencer 5700 is returned to the inactive state sets the maintenance interrupt source flip-flop 52CSRRF and a special flip-flop 63CSFI associated with the failure of the retrial of interrupt storage actions.

The D level interrupt program sequences interrogate the flip-flop 63CSFI to determine if the interrupt had been generated in response to the repeated failure of one or both of the storage operations for an interrupt. The state of the flip-flop 63CSFI serves as a warning related to the information contained in the storage locations reserved for interrupts. The D level interrupt program sequences thereby recognize situations in which circuit troubles have led to the potential loss of the return code-address of one or more interrupt program sequences. In such instances upon completion of the D level interrupt program the interrupt storage locations in the Call Store 103 are not used to obtain the return code-address. Instead program control is returned to a convenient beginning point in the base level program, the point selected to minimize adverse effects on call processing and subscriber satisfaction.

PROTECTED AREA

A "protected area" is provided as a part of our system, and this protected area refers to a selected block of memory within the Call Store 103. Unless the Protected Area Flip-flop 5201 is set, the execution of a call store writing command to a code-address within the "protected block" cannot be transmitted from the Central Control 101. The call store writing command is converted into a call store reading command before transmission to the Call Store 103 to preserve the information in the Call Store 103, and the maintenance interrupt source flip-flop 52 PTAV is set.

Critical data such as recent change information relating to equipment number or directory number translations are placed in the protected area. Thus, difficulties in the Central Processor 100 may momentarily cause the Central Processor 100 to lose its sanity, but even in these instances the information stored in the protected area is safeguarded against protection.

Since new information must be placed in the protected area from time to time, the Protected Area Flip-flop 5201 may be set and once this flip-flop is set, then call store writing commands can be addressed to the protected area.

To maximize the security provided by the protected area the Protected Area Flip-Flop 5201 should be set only for short intervals of time and only as required to modify information contained in the protected area. Accordingly, whenever an interrupt occurs the Interrupt Sequencer 4901 first stores the state of the Protected Area Flip-flop 5201 and then resets this flip-flop so that the above-mentioned security is maintained in the presence of randomly occurring interrupts.

INTERRUPT HAS OCCURRED FLIP-FLOP 63IHO

In the performance of certain work operations Central Control 101 executes program sequences for which the execution must be performed in near-real-time. That is, if the time elapsed between the beginning and end of such a program sequence is greatly increased by the occurrence of an intervening interrupt, then the function may be incorrectly performed. The Interrupt Has Occurred Flip-Flop 63IHO is included to permit the detection of the occurrence of the intervening interrupts. Program sequences requiring this detection execute a memory writing order which serves to reset flip-flop 63IHO. The program sequence then continues with the required work operation. However, before the conclusive steps of this program sequence are executed a memory reading order interrogates the state of flip-flop 63IHO. If flip-flop 63IHO is reset, then it is determined that the program sequence was not interrupted and control can proceed to those conclusive steps. If, however, flip-flop 63IHO is set, the occurrence of an intervening interrupt is indicated and, according to the work operation being performed, the program sequence may be repeated immediately or abandoned for subsequent convenient repetition.

ORDER GBN AND THE GO BACK SEQUENCER (5300)

Whenever an interrupt is initiated under control of the Interrupt Sequencer 4901 a number of special actions are taken as follows:

1. Store information pertinent to the interrupted program into the call store locations which are discrete to the interrupt level and which are reserved for this purpose;

2. Update the Interrupt Level Activity Register 6302; and

3. Generate a transfer address which is then placed in the Program Address Register 4801 to effect the transfer to the interrupt program.

In many instances, upon completion of the interrupt program, control is to be returned to the interrupted program; therefore, certain of the flip-flop registers within Central Control 101 must be returned to the state they had at the time the interrupt occurred. The flip-flop registers to be restored include the Interrupt Level Activity Register 6302, the Control Sign Flip-Flop 5413, the Control Homogeneity Flip-Flop 5020, the Protected Area Flip-Flop 5201, and the Data Buffer Register 2601. In addition, the code-address of the return order word of the interrupted sequence must be placed in the Program Address Register 4801 to effect return to the interrupted program. The return to the interrupted program is most conveniently accomplished by the provision of the Go Back Sequencer 5300.

When all tasks in a given level interrupt level program are completed, and it is determined that program control is to be returned to the interrupted program, then the order GBN is executed to activate the Go Back Sequencer 5300 by enabling order cable conductor 53GBS GO.

In response to this signal the Go Back Sequencer 5300 is activated and remains active for two or more 5.5 microsecond cycles during which time it generates signals on its output conductors 53GBS, 53GBS1, et cetera, to carry out the following:

1. Inhibit the decoder outputs until control has been returned to the interrupted program. 2. In the first cycle of operation read the Call Store 103 at the second reserved location to obtain the return program code-address and the information to be placed in the PTA Flip-Flop 5201, the Control Sign Flip-Flop 5413, and the Control Homogeneity Flip-Flop 5020. The Interrupt Address Source 3411 is utilized to obtain the code-address of the first reserved location.

The reading so obtained is placed in the Data Buffer Register 2601 and moved from there via the Mask and Complement Circuit 2000 to the Masked Bus 2011. From there the 20 bit return code-address is transmitted via the AND-gate 4308 and the OR gate 4808 to the inputs of the Program Address Register 4801. The information appearing on bit 21 of the Masked Bus 2011 is transmitted to the Control Homogeneity Flip-Flop 5020, the information appearing on bit 22 is transmitted to the Control Sign Flip-Flop 5413, and the information appearing on bit 20 enables the appropriate one of the two order cable conductors 52PTA S and 52PTA R. 3. In the second 5.5 microsecond cycle the Go Back Sequencer 5300 again utilizes the Interrupt Address Source 3411 to obtain the code-address of the first reserved memory location. The Go Back Sequencer 5300 places the reading obtained at this code-address in the Data Buffer Register 2601 which is the state this register enjoyed at the time of the interrupt. 4. The Go Back Sequencer 5300 resets the flip-flop in the Interrupt Level Activity Register 6302 associated with the interrupt program from which the return is being made and returns to the inactive state.

DETAILED TELEPHONE AND MAINTENANCE FUNCTIONS

We have described the major divisions of a telephone switching office in accordance with our invention as shown in FIG. 1 and have explained in general terms the completion of intraoffice and interoffice calls with respect thereto.

All of the work functions mentioned above are implemented by means of the various program orders which have been previously described herein. The present discussion is without regard for detailed discussion of the program steps employed as such detail would merely tend to obscure an understanding of the inventive concepts of this system. Further, the detailed manner in which work operations are interleaved is also omitted on the same basis.

A telephone switching system in performing the telephone functions must accurately respond to input signals from information sources such as lines and trunks without delay. In our telephone switching system a single Central Control 101 is time-shared not only by a large number of input sources such as lines and trunks but also by the maintenance requirements of the system. In order to assure timely performance of all of the telephone functions which are required to render service to customers on a near real time basis and the timely performance of the necessary maintenance functions, a system or hierarchy of interrupt actions is provided. The interrupt hierarchy is shown schematically in FIG. 66. This hierarchy comprises three basic sections, namely:

A. The base level;

B. The 5 millisecond clock interrupts; and

C. The maintenance interrupts.

The interrupt plan employed herein is termed a graceful interrupt system in that when an interrupt is indicated, the interrupt action is momentarily delayed until the order which is being processed is completed.

The work functions which must be performed by the telephone switching system may be broadly divided into two classes, namely, deferrable work functions and nondeferrable work functions. Both of these classes include both telephone work functions and maintenance work functions. The nondeferrable telephone work functions are repetitive actions which must be done at set intervals of time such as examining dial pulse and TOUCH-TONE receivers, the control of outpulsing on trunks, other tasks involving the collection of information from both lines and trunks and the control of trunks and the network controllers. Deferrable telephone functions include the processing of information which has been previously collected by means of the nondeferrable telephone functions.

The nondeferrable maintenance functions include the immediate steps which are undertaken upon detection of possible trouble within the system and the necessary remedial actions required to bring the system into proper operation. The nondeferrable maintenance functions are implemented by means of fault recognition program sequences and the priority assigned such program sequences exceeds the priority assigned any normal call handling sequence. The fault recognition program sequences are kept as short as possible and their actions are limited to the steps required to determine if the possible trouble is indeed a fault and to take the faulty duplicate unit out of service. If a fault is detected in the currently active unit the standby unit is switched to the active state and the active unit to the standby state. After the high priority fault recognition and remedial functions have been completed the Central Control 101 immediately returns to the processing of calls. The deferrable maintenance functions include routine preventive maintenance programs and the detailed diagnosis of a fault which was previously detected by means of a nondeferrable maintenance function. The deferrable maintenance functions are implemented by means of program sequences which have a lower priority than the lowest priority assigned to call handling program sequences.

As noted earlier herein the terms "trouble," "error," and "fault" have definite meanings as follows:

1. Trouble is defined as a failure to perform an expected action. For example, a program order for reading information from a store location fails and this failure is considered to be a trouble.

2. Error is defined as a trouble which cannot be reproduced by fault check program sequences.

3. Fault is defined as a trouble which can be reproduced by fault check program sequences.

INTERRUPT PLAN

The system interrupt plan provides for 10 work levels which are designated A through L with I and K omitted. The highest priority is assigned level A with priorities descending to L which is the "base level." Levels A through G are associated with the maintenance interrupts, Levels H and J are assigned the odd and even 5 millisecond clock interrupts and L is the lowest or base level.

Corresponding to each interrupt level is a program sequence, which, when executed, causes the Central Control 101 to perform specific sequences of maintenance and/or telephone functions. For each interrupt level there is a different set of such functions and corresponding programs; a request for one of these functions is made by the occurrence of signals which set a corresponding one of the interrupt source flip-flops. The Central Control 101 responds to interrupt source signals by activating the Interrupt Sequencer 4901, which initiates the following actions:

1. The data which is found in the Data Buffer Register 2601 is stored in a reserved location in the Call Store 103;

2. The code-address of the next program order word in the interrupted sequence and the states of the C Flip-Flops 5020, 5413 and the Protected Area Flip-Flop 5201 are stored in a second reserved location in the Call Store 103;

3. Transfers program control to the interrupt level program corresponding to the energized interrupt source flip-flop.

The above-noted first and second reserved locations are associated in pairs in the Call Store 103 and there is one such pair for each of the nine interrupt levels excluding the base level L. In addition, for each of the interrupt levels G, H, and J there are blocks of word organized memory capacity comprising eight words each. These are also found in the Call Store 103. Similarly, there is a larger block of words which is common to the six interrupt levels A through F inclusive. This word block of memory capacity is provided to permit the interrupting program to preserve data which is found within Central Control 101 at the time the interrupt program assumed control of Central Control 101. This transfer of information under program control is limited to the transfer of information which clears the Central Control 101 elements which are required in the execution of the interrupt programs.

The interrupt plan includes a means for attending to the functions performed by the interrupt level program sequences in order of their urgency and maintains an orderly execution of these sequences.

The interrupt action just described, is initiated only if the transfer is to a higher level program sequence than the one currently being executed within Central Control 101.

BASE LEVEL

Within the base level of the interrupt plan the executive program (a) establishes the rate at which the various types of base level jobs are served, (b) serves to examine or monitor job requests and, in the event of a job request, to initiate the appropriate program subroutines. This relationship is illustrated in FIG. 66 under the heading "base level." The base level executive program initiates job supervisory programs under which job activity registers which are located in the store memory are examined to determine whether or not there are jobs of a particular class to be performed. The term "job" as defined herein is a system work operation which is performed at the base level. Each type of job requires a separate program subroutine for execution of that job, and job activity memory locations are assigned in the Call Store 103 to the various classes of jobs. The number of job activity memory locations assigned is a function of the call handling capacity of the particular office. If in the course of the execution of the job supervisory program it is determined that there are no jobs of a particular class to be performed, the supervisory program indicates "no job" and the executive program immediately advances to a different supervisory program. However, if in the course of execution of a supervisory program it is determined that there are jobs to be performed, the supervisory program will serve to initiate performance of such jobs up to a predetermined maximum number of jobs within a class and then return control to the executive program. When it is determined that a job is to be performed, the supervisory program initiates execution of a job program subroutine for each of the jobs to be performed. Upon completion of the subroutine the supervisory program advances through the activity memory associated with the particular class of job under consideration until either all jobs of that class have been completed by means of successive execution of the job program subroutine or until the fixed maximum number of jobs have been performed. At these times the job supervisory program returns control to the executive program by an indication that "job or jobs are done."

Within the base or L level there are five sublevels designated La through Le and the jobs served at each of these sublevels are performed at rates which are discrete to the sublevel. There are more than five types of jobs to be performed at the base level; however, the various types of jobs are grouped in the five individual sublevels for administrative purposes. The grouping within base sublevels is in accordance with the frequency with which the job buffers must be examined to determine whether or not there are any jobs to be performed. That is, jobs which are handled at sublevel La are associated with buffers which are examined more frequently than the buffers which are examined during sublevels Lb and Lc, et cetera. The base level executive program is implemented by means of a table of L level frequency addresses. This table comprises the list of the head address positions within the program store of each of the program subroutines required to execute the various sublevel job supervisory subroutines. The length of the table is determined by the rate at which the lowest or Le sublevel supervisory job was monitored. The following ordered list shows the relative frequencies at which the buffers associated with the various sublevels are considered:

SUBLEVEL FREQUENCY LIST

A, B, A, C, A, B, A, D, A, B, A, C, A, B, A, B, A, C, A, B, A, D, A, B, A, C, A, B, A, E.

Here it is seen that the supervisory programs for sublevel La occur most frequently in the table and sublevels Lb, Lc, and Ld occur less frequently and sublevel Le occurs only once in the table. The table is reentrant and, after the job supervisory program for sublevel Le had been executed, the table is again entered at the beginning.

As previously noted above herein, within each base sublevel there are a number of types of jobs which may be performed. Certain of these types may statistically require attention each time the associated sublevel job supervisory program is executed, while other jobs which are considered for performance during a particular sublevel job supervisory program may occur infrequently and randomly, and still other jobs require only attention at relatively long time intervals. To efficiently handle these three types of jobs which may be handled by any given sublevel job supervisory program, three different techniques are employed, as follows:

1. Jobs which statistically and consistently require attention are considered for activity during each occurrence of the associated sublevel supervisory program.

2. The jobs which occur infrequently and randomly are considered by the sublevel job supervisory program only on demand from other program sequences which indicate a need for this particular job performance. That is, if in the course of executing a program sequence it is determined that a job of a particular class is required, a flag, which comprises a memory cell associated with a particular job buffer, is marked and subsequently during the associated sublevel job supervisory program, this mark is recognized and such jobs are considered for execution.

3. The third type of job which requires infrequent but regular attention is initiated by means of long interval timing sequences which periodically request consideration of this type of job by the associated job supervisory program. Such a request is indicated by placing in a general purpose buffer located in the call store the address within the program store of the job subroutine which is required to perform the requested job.

In addition to these three types of jobs which are handled at the base level there are certain jobs which generally require a relatively few machine cycles to execute and which must be executed with only a moderate degree of timing precision. To accommodate such jobs a function termed herein "interject" is employed. The interject function is implemented by means of an interject register which is located in the Call Store 103. The interject register comprises an activity spot which is flagged if an interject job is requested and further comprises memory space to record sufficient information to perform the interject job. During the course of execution of the base level executive program the activity spot of the interject register is examined from time to time to determined determine whether or not an interject job request is present. If such a request is present the interject is served. However, the interject job may be accomplished without the time consuming enablement of the Interrupt Sequencer 4901. Similarly, in the course of execution of relatively long time sublevel job supervisory programs, the interject register is examined to determined determine whether or not an interject request is present and if present, it is served.

Jobs are planted in the interject register conveniently during the course of H or J level interrupt sequences. The H and J level interrupt sequences occur at five millisecond intervals. Thus it is possible to plant interject requests with a fair degree of timing precision.

CLOCK INTERRUPTS

In the absence of detection of a fault the H and J clock interrupt levels of operation take control away from the base level executive program to perform the nondeferrable telephone functions, i.e., those functions associated with the gathering of information concerning calls, for example, dial pulse and TOUCH-TONE supervisory scans, outpulsing scans, et cetera. The clock interrupts occur at 5 millisecond intervals and for the purpose of assigning work functions to be performed at a particular clock interrupt level these interrupts are divided into odd and even interrupts, H and J each occurring at independent 10 millisecond repetition rates. While most such jobs are performed at a 10 millisecond rate or at a rate that is some multiple of 10 milliseconds, and are thus associated only with the odd or the even interrupts, some jobs are performed every 5 milliseconds and are therefore performed during both 5 millisecond interrupts.

Indications of the jobs to be done at any given H or J interrupt are derived from counters. Jobs which are to be performed at regular intervals are discretely associated with the states of these counters. For example, there is a 100 millisecond counter which is incremented every 10 milliseconds. This counter comprises a plurality of cells in the call store and is recycled after 10 intervals, that is, after 100 milliseconds. This action is illustrated in FIG. 67. The states of the 100 millisecond counter serve to initiate job jobs which are performed regularly at intervals such as 10 milliseconds, 20 milliseconds, 30 milliseconds, et cetera.

When the 100 millisecond counter is recycled other counters comprising other cells in the call store are incremented to count fractions of a second, et cetera, to provide indications of times when jobs which are performed at longer intervals are to be initiated.

Associated with each discrete state of these counters are the starting addresses of the programs which are to be executed at the associated interrupt level to perform the desired jobs.

MAINTENANCE INTERRUPTS

The seven maintenance interrupts, levels A through G, are assigned to specific classes of potential trouble. Level A, which has the highest interrupt priority, is reserved for manual interrupts which are employed at the time the system is first installed and occasionally during the life of the system in the diagnosis of troubles which may escape automatic detection.

Level B, which is the highest automatic interrupt level, is associated with the "emergency action" functions. The emergency action functions are always associated with an active central control and program store. The Emergency Action Sequencer 5702 modifies the active combinations of program stores, central controls and the connecting bus circuits to achieve an operable combination of these elements.

As shown in FIG. 66, the A level programs and the B level programs are of approximately equal importance as it is possible for an A level program to interrupt a B level program and, similarly, it is possible for a B level program to interrupt an A level program. Furthermore, a B level interrupt may interrupt a B interrupt level program. If an A level program interrupts a B level program, the A level program is completed and central control proceeds to operate at an appropriate lower interrupt level and does not return to the B level program. Similarly, when a B level interrupt occurs during either an A level or a B level interrupt program the B level program is completed and the central control then continues with a lower level program rather than returning to the interrupted A or B level program.

Level C is associated with the Central Control Match Circuits 3122 and 3621. The dependability of program controlled telephone switching systems which employ highly time-shared control instrumentalities is greatly enhanced by operating the two central controls of the Central Control System 101 in the normal "in-step mode" of operation, which is also known as the "match mode" of operation. In this mode of operation the two central controls process identical input data and one of the two central controls, which is designated the active central control, is arranged to control the network. However, both central controls, while operating in this mode, read information from their associated stores such as the program store and the call store, and individually process the information so derived.

The program orders, for the purpose of defining the points within Central Control 101 to be matched, are divided into five classes. The internal points within the Central Control 101 which are to be routinely matched are defined by the order being executed. In the event that the matching of identical internal points within the paired central controls results in a mismatch indication, a C level interrupt is generated which initiates nondeferrable maintenance actions. These actions determine whether an error or a fault is present and if a fault is present, steps are taken to eliminate faulty elements from the active combination of equipments.

Level D is associated with a call store reread failure. As previously described herein, a number of hardware trouble indications such as parity failure, absence of an "All Seems Well" signal, et cetera, will initiate a call store reread function by means of the Call Store Reread Sequencer 5700. If the same or other trouble indication occurs in response to the reread function, a D level interrupt is immediately generated as the data which was derived from the Call Store 103 or the data which was written into the Call Store 103 is suspected. The D level program is calculated to isolate the source of trouble and to eliminate faulty apparatus from the central control, call store, bus combinations. After the D level interrupt program actions have been completed, the Central Control 101 returns to a lower level program.

Level E is associated with a program store reread failure. As previously noted, a number of hardware trouble indications, such as detection of a double error in a word obtained from the Program Store 102, or absence of a program store "All Seems Well" signal, will initiate a program store reread function by means of the Program Store Correct-Reread Sequencer 5301. The Program Store Correct-Reread Sequencer 5301 serves to extend the operating cycle of an order word both to correct single errors and to initiate a reread function upon the occurrence of one of the trouble conditions such as noted above. The E level interrupt programs, like a D level interrupt program, undertakes maintenance actions to isolate the source of trouble and take steps to rearrange the central control, program store, bus combinations to permit trouble-free operation.

Level F is associated with an indicated trouble in the execution of a command to one of the network units such as the Network Controllers 122, 131, Signal Distributors 128, 136, 140, Scanners 123, 127, or one of the miscellaneous frames being addressed via the network command bus, or the Central Pulse Distributor 143 and, in addition, is initiated upon detection of a "protected area violation" in the writing of data into the c Call Store 103. Upon completion of a level F interrupt program, the central control returns to the interrupted lower level work or to a program reference point in the base level.

Level G interrupts are special demand programs which are initiated by abnormal conditions such as a high rate of errors in the reading of the program store or a high rate of call store reading errors. G level interrupt programs are employed to isolate the sources of indicated trouble and, upon completion of such programs, the central control returns to the lower level of operation which was interrupted.

CONNECTION TO CALL SIGNAL RECEIVER AND DIAL TONE

One of the base level Lb checks initiated by the job supervisory program, as seen in FIG. 68, is the interrogation of the service request buffer area in the Call Store 103 to determine whether or not there are any service request jobs to be performed. If a service request was previously detected and recorded by the service request recording program, then the job supervisory program must initiate a program to serve the recorded request. This information is referred to herein as a service request program. This program, among other functions, assigns a section of the call store memory, which is called an originating register, to provide means for recording information associated with a service request. The originating register is a collection of memory cells with the call store memory.

The originating registers are functionally divided into two major portions. The first portion is referred to herein as a basic originating register and the second portion as an auxiliary originating register. The basic originating registers are associated on a one-to-one basis with call signal receivers and are employed to collect information relating to service requests and, in the case of dial pulse calls, are employed in the counting of dial pulses and interdigital time-out.

The auxiliary originating registers are selectively associated with the basic originating registers as the requirement for their use is determined. An auxiliary originating register is employed to assemble the call signal information which has been detected under the control of the basic originating register, and is further employed during the time that the desired call is being established as it serves to store and thus provide the information required to determine the necessary network paths.

The basic originating registers each comprise a plurality of memory cells within the Call Store 103. The originating registers are arranged in groups of sixteen each and the memory locations associated with a register are distributed in an ordered fashion throughout an assigned portion of a Call Store 103. Each group of sixteen basic originating registers comprises:

A. Five call store words wherein one bit of each of the words is discretely part of a particular basic originating register;

B. Two call store words which are common to a group of sixteen basic registers; and

C. Three call store auxiliary words per register.

The first bit of each of the five common words is part of the first basic originating register, the second bit of each of the five words is part of the second basic originating register, et cetera. The five bits, which are so organized are assigned the following functions:

1. Supervisory last look spot;

2. Supervisory change spot;

3. Supervisory change last look spot;

4. Permanent signal-partial dial spot; and

5. Register activity spot.

The other two call store words, which are common to a group of 16 basic originating registers, are employed to register:

1. The identity or scanner address of the master scanner scan points, which are employed to supervise the signal present scan points on TOUCH-TONE receivers and looping scan points on dial pulse receivers; and

2. The call store starting address of the first basic originating register auxiliary words.

The auxiliary words are arranged in three word groups within the Call Store 103, that is, the first of the three words for all of the basic originating registers of a group are arranged in a first memory block, the second words for all of the registers of a group are in a second block, et cetera. These words are employed to store the following information:

Word 1. The program store address of the program which is required to perform the functions associated with the basic register;

Word 2. The call store address of the auxiliary register which has been assigned to the basic register and a four bit counter for accumulating dial pulses; and

Word 3. The scanner address of the TOUCH-TONE numerical interrogation points of a TOUCH-TONE call signal receiver which has become associated with the basic register.

The service request program locates an idle basic originating register and its associated call signal receiver by examining a linked list which is associated therewith. As previously noted herein, the basic originating registers and the call signal receivers are associated on a one-for-one basis and therefore a single linked list is employed to show the availability of a particular type of both basic originating registers and call signal receivers. Separate linked lists are employed to show the availability of dial pulse call signal receivers and combined dial pulse TOUCH-TONE call signal receivers. The type of call signal receiver which is assigned to a particular call is predicated upon the type of equipment which is located at the subscriber's premises, i.e., dial pulse subscriber station or TOUCH-TONE subscriber station, or in certain instances a subscriber may be served by both dial pulse subscriber sets and TOUCH-TONE subscriber sets on a single line. In the latter two cases, the subscriber's combined dial pulse TOUCH-TONE receiver is assigned to the call. In the case of dial pulse call signal receivers, a single basic originating register, as set forth before herein, is associated with a dial pulse call signal receiver. However, in the case of combined dial pulse TOUCH-TONE receivers, two basic originating registers, as set forth before herein, are associated with a single combined call signal receiver. The two originating registers are always employed on a mutually exclusive basis as one of the registers is employed when the receiver is responding to TOUCH-TONE signals and the other register is employed when the receiver is responding to dial pulse signals.

The linked list is stored in the Call Store 103 and comprises a two-word entry which is common to the list and numerical entries which are individual to each of the articles which may be assigned, i.e., in this case, basic originating registers. The two-word entry comprises the identities of the next article to be assigned and the most recently released article. The numerical entries are linked in that the entry associated with an article identifies the next article in the group which is to be assigned after the present article has been seized. After each article seizure the numerical entries are altered to continuously reflect the availability of articles within the group.

After an idle call signal receiver and an associated basic originating register have been found, these must both be assigned to the specific service request and the records in the Call Store 103 altered to reflect the change from busy to idle. That is, upon the seizure of an article from the list, the list is altered in accordance with the rules set forth above. The type of apparatus which is found at a subscriber's premises is stored in the Program Store 102 in a memory location which is discretely associated with the subscriber's line equipment number identification. In our telephone switching system, subscribers' lines are randomly assigned equipment locations on the network without regard for the directory number which is assigned to a subscriber's line. Separate translation tables are employed for call origination and for call termination. In the case of call originations, the memory location which is discretely associated with a subscriber's line is ordered in the memory in accordance with the subscriber's line equipment number identification. The translation information which is required for call origination is commonly called "originating class of service information." This information describes not only the type of call signal receiver which is required to serve an origination from the associated subscriber's line but, in addition, provides other information such as subscriber "denied service" or subscriber "manual origination", both of which indicate to the system that the call origination must be handled in a manner which is uniquely different from normal call originations. A subscriber with manual origination class of service (usually someone suffering from a physical handicap) is connected directly to an operator who will then set up the desired call. A person who is "denied service" is not connected to a receiver.

In a highly flexible telephone switching system such as ours there are a large variety of types of equipment which may be associated with a subscriber's line and a large number of special services which may be offered. By way of example only, in this one specific illustrative embodiment separate class of service information characterizes the equipment and services rendered a subscriber's line for call origination and call termination. For example, for purposes of call origination a six bit binary class of service indication is employed in the most usual instances. This six bit binary number is stored in the Program Store 102 in association with a seventeen bit number from which the subscriber's directory number can be obtained. Where a six bit binary number is not adequate to define the subscriber's class of service, the space normally reserved for translation information which comprises a six bit class of service indication and the seventeen bit directory number information is employed instead to store an indication that the class of service and directory number information is located elsewhere in the memory and to set forth that other memory location address.

The six bits which comprise the class of service mark are adequate to define up to 56 separate combinations of equipments and services rendered, while reserving eight combinations to indicate that the information in the class of service mark area is, in fact, part of an address at which the complete class of service information will be found.

The six bit class of service is expanded by program use of a look up table into a much larger group of bits which detail information on subjects such as the following:

1. Type of receiver (TOUCH-TONE, dial pulse, or both);

2. Special treatment at time of origination (PBX lines, two-party lines, denied service, manual origination);

3. Special services which the customer may have (abbreviated dialing, privilege of having the calls transferred to another number); and

4. Special routing information associated with unusual classes of service (wide area telephone service, PBX whose lines may only dial local calls, et cetera).

A discussion of the class of service indications and their significance on terminating calls is detailed later herein.

DIAL TONE CONNECTION

In order to set up a connection from a line requesting service to a call signal receiver we must first hunt for a path through the network between these two terminals. The path hunt operation is accomplished through the use of the Call Store 103 memory map of the present state of the network. The memory map comprises an ordered set of information wherein one memory bit position is associated with each link in the network.

The end product of the line link network path hunt and the trunk link network path hunt is an indication of the links and the junctor which may be employed in establishing a path between a selected line switch frame line termination and trunk switch frame trunk termination. These links must then be marked busy so that they will not be seized by subsequent path hunts and a series of instructions to the network must be created which will operate the crosspoints connecting these links. These instructions are then stored in the network command buffer which serves as a discipline to send instructions to network frames at the appropriate time and with the appropriate guard intervals between instructions.

When a path has been found and selected in memory we must not only mark the links of the path busy but we must also keep a record of the path in a special section of memory called the path memory. This consists of one word per trunk terminal and one word per line link network junctor terminal. The word contains the number of the junctor or line connected with this trunk or junctor terminal. This memory is necessary in order to release the proper links at the time when a path may be cleared.

FIG. 69 shows how the contents of the network command buffer are used to set up connections in the network. Every 20 milliseconds as determined by the clock interrupt programs of the H and J levels, a string of orders may be sent to the network controllers and the signal distributor controllers. The discipline of the command program is such that only one instruction is sent to an individual network controller or signal distributor controller in a given 20 millisecond interval. That is, a plurality of commands may be sent in a string, however, only one command of each string is directed to a single controller either network or signal distributor. Subsequently approximately 20 milliseconds are allowed to elapse in order to insure that all controllers have finished their present task before giving them another command. After the commands have been transmitted and executed by the respective controllers a trunk signal distributor command is generated to connect the call signaling receiver. The trunk signal distributor command is delayed for a period of time which is sufficient to assure that the network ferreed contacts have operated. Thus the current path between the originating subscriber and the call signal receiver is closed by the relays in the call signal receiver and not by the contacts of the ferreeds.

The operation of the network command program is such that it proceeds independently of the originating register which requested the connections set forth in the buffer and the command program only informs the originating register when it has completed the requested task or when it has gathered information of interest to the register.

The following is a detailed description of how a command is generated by means of the network command buffer. The network command buffer (illustrated in FIG. 69) comprises a group of work lists, each work list comprising a number of consecutive call store words, each work list being associated at any particular time with only one call. In addition, a master work location file within the call store comprises one word per work list.

If, while examining the work location file, an active entry is found, a transfer is made to a program which carries out the following steps: The first step is to read data word at the code-address specified by the work location file. If the word so read is positive (bit 22 of that word is a 1) the word is the address of central pulse distributor enable information for the particular controller to be employed in executing the subject network command.

Since some of the actions required by the information which is found in the work list are not simply requests to send a command to a network controller or a signal distributor controller but may, in addition, require additional actions such as a delay or a request for a scanner command, this information is placed in the J Register 5802.

A work list may also contain the addresses of programs for carrying out a particular function as opposed to code-addresses as indicated above. A program entry as opposed to a command is indicated when the first entry is negative rather than positive.

The second step is to make a decision based on the sign bit of the word read in the first step. If the result of the previous reading was a negative value, an earlier transfer to a program order at the code-address stored in the J register is indicated. This address is the address that was set up by the previously described order.

If the word at the first entry is positive, it is the address of the enable information and memory reading to the F register is a carried out. The address of the enable information is determined on the basis of which controller is to be enabled. For example, in the case of a signal distributor the first 384 points are normally controlled by its 0 controller whereas the last 384 points are normally controlled by the 1 controller. In the case of trouble, the 0 controller or the 1 controller may be arranged to control all of the points. Thus the enable information must be selected on the basis of whether the selected point is within the first 384 points or the last 384 points. In addition, where two identical enable entries occur, steps must be taken to assure that the controller to be enabled is used only once per 20 milliseconds cycle.

Thus the busy-idle indication is determined by considering which controller is actually to be used not by which unit is being requested.

Associated with each controller, both network and signal distributor, is a busy-idle word. This word is at a constant displacement from the enable information normally associated with the controller. The word which stores the enable information also stores whether the 0 or 1 controller is being used and this information is stored in the least significant bit.

By use of an instruction, which has the designation MCLF, a reading is made of the busy-idle word associated with the controller actually being used. For example, if the 0 controller is defective and the 1 controller is being used for the entire single distributor, then the enable information for both the 0 and the 1 controllers would point to controller 1. The order MCLF is used for reading this information and by substituting the least significant bit of the contents of the F Register 5801 for the second least significant bit of the DAR word, a reading of either enable information leads to the busy-idle word of the 1 controller. The busy-idle words of the 0 and the 1 controllers are stored at locations which are separated by three intervening addresses. That is, the busy-idle word of the 0 controller is at an address having a 0 in the second least significant bit while the busy-idle word of the 1 controller is at a location whose code address has a 1 in the second least significant bit. Thus, by means of the MCLF order a masked reading of the busy-idle word is gated to the control flip-flops.

The next step is to transfer to an order, the code-address of which is found in the Z register if the state of the Control Flip-Flops 5020 and 5413 indicate that the word examined by the preceding order was other than arithmetic zero. The program which is located at the address specified by the contents of the Z Register 3002 is the program associated with encountering a particular controller which had already received a command in the current 20 millisecond interval. This program adjusts the address in the work location file so that in the succeeding 20 millisecond interval an attempt will again be made to generate and transmit this command.

If the Homogeneity Flip-Flop 5020 is in the 1 state, the contents of the Logic Register 2508 are stored back in the location reserved for the busy-idle word. By this means the subject controller is made busy for the current 20 millisecond interval so that if a subsequent request to use this controller is made during this same interval, the latter request will encounter a busy controller.

As the program advances from one 20 millisecond interval to the next, the contents of the logic register during the execution of the word list are changed. The contents always comprise a word in which one, and only one bit, is equal to 1 and as the program advances from one interval to the next, the position of this bit is rotated by one position.

Having ascertained that the controller is idle, the busy-idle word for that controller is altered to make the controller appear busy.

The enable information is found in the F Register 5801. Three bits (bits 7, 8, 9) of the enable information in conjunction with the output of the Order Word Decoder 3904 specify the type of unit, i.e., network controller, signal distributor controller, and if a network controller, the type of frame served by that controller. Therefore, this information determines the form of the command which is transmitted.

FIG. 70 illustrates the process of detecting and counting dial pulses. This process is accomplished during the H and J level interrupt programs. Every 10 10 milliseconds each group of sixteen call signal receivers is scanned. Associated with these 16 receivers is a 16 bit entry in the Call Store 103 and in this entry there is retained a record of the supervisory state of the receivers as determined by the immediately preceding scan. Dial pulses are detected by checking for off-hook to on-hook transitions and if there is disagreement between the previous state of the receiver and the present state, as determined by the most recent scan, this fact is recorded as it indicates a dial pulse. The scanning program marks the change bit in each basic originating register for which a change has been recognized and updates the call store memory cells associated with the digit receiver scan points to reflect the states recognized by the last scan. Further, when off-hook to on-hook transitions are recognized, a transfer is made to a subroutine for recording such changes in the basic originating registers. The subroutine increments the pulse counters in each of the basic originating registers in which the change spot was marked.

At the time that the first change from off-hook to on-hook is detected, dial tone must be removed. The program for accumulating digits recognizes this fact and initiates a request for the removal of dial tone by making an entry in the dial tone remover buffer. This entry comprises the address of the basic originating register assigned to this call.

FIG. 71 illustrates the process of removing dial tone. The job supervisory program of sublevel Lb checks to determine if there are any requests entered in the dial tone removal buffer. If a request is found, the dial toe tone removal program must be entered. The address of the originating register associated with the call requesting removal of the dial tone is obtained from the dial tone removal buffer. This originating register is interrogated to find the identity of the call signaling receiver which is associated with the call. The dial tone removal program then generates a signal distributor command to release relay 102A in the selected call signaling receiver. The signal distributor command is placed in the network command order buffer and this command is subsequently transmitted under control of the network command program.

FIG. 72 illustrates the process of recognizing the end of a digit in the case of dial pulse signaling. Every 100 milliseconds (as indicated by a count of 20 successive 5 millisecond intervals in the H and J interrupt programs) an interdigital timing program is initiated at the base level by means of an interject. This program examines the dial pulse activity spot associated with each active dial pulse receiver to detect digit receivers which did not experience a change during the last 100 millisecond interval but which did experience a change during the immediately preceding 100 millisecond interval. This condition is considered to represent the completion of a digit and upon detection thereof the pulse count accumulated in the originating register is transferred to the proper digit location in the auxiliary originating register and the pulse count is restored to 0 in preparation for receipt of the next digit. The transfer of pulse count information is accomplished by way of a digit buffer in which the pulse count obtained from the basic originating register is a stored along with the address of the originating register associated with that digit. Subsequently, the digit buffer program which is executed at sublevel lb examines the digit buffer. If there is an entry therein, the digit buffer program serves to transfer the digit to the appropriate auxiliary originating register wherein the other digits that have been previously accumulated are also stored. The digit location counter of the auxiliary originating register is incremented by a count of 1 to summarize the number of digits which have been received.

An analysis must be made of the digits that have been dialed at several key points in the receipt of these digits (see FIGS. 5 and 6). For example, after the first digit is dialed a check must be made to see if the first digit was a zero since an initial zero completely defines the destination of the call as an operator call. For other calls the first three digits are examined and in accordance with the translation of these digits it is determined how many digits will be forthcoming. Subsequently, when all digits have been received, a further translation is made which indicates the routing and treatment to be afforded the call. For example, it must be determined whether the call is an intraoffice call or an interoffice call since different control actions taken place under these circumstances. If the call is an interoffice call, the following information must be obtained in order to complete the call:

1. The identity of a trunk group connecting the originating office to the terminating office;

2. An indication of how many digits must be sent to the terminating office;

3. The type of pulsing which is used in communicating with the terminating office and, thus, the type of call signaling transmitter which is to be connected to the selected trunk for outpulsing; and

4. Other information necessary to indicate to the system whether or not the calling subscriber is permitted to be connected to the terminating office.

The first three elements of information are obtained by a translation of the office code digits, while the fourth element is obtained from the combination of the class of service information associated with the originating subscriber and the office code translation information.

If the call is an intraoffice call, a terminating translation must be made. That is, the class of service information associated with the called subscriber will give the following information:

1. If the called party is on a party line, it gives the type of ringing to be used to reach the desired party;

2. If the called number is that of a PBX, it provides a list of line equipments associated with the PBX so that these line equipments may be examined to find an identical one;

3. If the called line is one that has requested that incoming calls be transferred to another line, it provides the directory number of the line to be transferred to; and

4. If the called line is one which has associated therewith a series completion feature, it provides the directory number of the line to which the call may be completed if the called line is busy.

If the called number is neither a valid intraoffice nor interoffice code but, rather, some nonexistent number, the translation indicates that the calling subscriber is to be connected to no such number tone and/or announcement circuit.

Assuming that examination of the registered call signaling information indicates an intraoffice call to another subscriber's line served by the office and assuming that examination shows that this line is idle, steps must be taken to signal the called subscriber. The busy-idle condition of the called subscriber's line is determined by examining the busy-idle bit associated with the called line.

The called line is signaled by means of a ringing connection. That is, two paths are established through the network to supply ringing current to the called subscriber and to supply ringing induction to the calling subscriber. In order to establish these connections, path hunts must be made to find idle paths between the originating subscriber and a tone circuit for applying ringing induction and a path between the called subscriber's station and a ringing circuit. Further, in order to assure that once the called subscriber answers that a path exists between the originating and terminating subscribers, a path between these two stations must be sought and reserved in the memory (this reserve path cannot be set up immediately as each subscriber is connected to a different service circuit at the trunk link network). If the path hunts are successful, central control generates the network commands for:

1. Disconnecting the calling line from the call signaling receiver;

2. Connecting the calling line to the tone circuits supplying ringing induction; and

3. Connecting the called line to the ringing circuit. The instructions for setting up these connections are placed in the network command buffer and subsequently the network command buffer program will send these commands in proper sequence to the network controllers and to the signal distributors. At the same time a ringing register, which comprises a group of memory bits in the call store, is seized and assigned to the call. Central control places in the ringing register the addresses of both the originating and terminating subscriber lines and the identities of the ringing circuit and the tone circuit. In addition, the program modifies the linked lists associated with the ringing circuit and the tone circuit which are employed in this connection and modifies the trunk busy-idle bits.

When the above two connections are established, supervision of both the calling line and the called line is transferred to the tone circuit and to the ringing circuit, respectively.

One of the sublevel Lc programs initiated by the job supervisory program is a trunk supervisory scan program. This program is arranged to detect seizures and disconnects on trunk circuits. Among the trunks scanned by this program are the tone circuits which apply ringing induction and ringing circuit. Service circuits such as the tone circuit of FIG. 106 and the ringing circuit of FIG. 109 are not capable of accepting bids or requests for service; however, these circuits are arranged to supervise the connected lines or trunks to detect disconnect. If the trunk supervisory scan program recognizes that a disconnect has taken place on a busy trunk or service circuit, or that a seizure has occurred on an idle trunk, it enters a record in the trunk disconnect buffer or the trunk service request buffer, respectively.

Another one of the sublevel Lb programs initiated by the job supervisory program is a program for serving the trunk seizure and the trunk disconnect buffers. When this program recognizes that a trunk or service circuit disconnect has taken place it examines the record in the call store path memory associated with that trunk or service circuit. In the event that the trunk scan program detects that the called subscriber as monitored by the ringing circuit has gone from the on-hook to the off-hook state, steps must be taken to break down the connections between the calling subscriber and the connected tone circuit and between the called subscriber and the connected ringing circuit and to establish a talking path between the calling and called subscribers. In this event, the program will examine the ringing register associated with the call to initiate a program for making the transition from the ringing connection to the talking connection. That is, this program will generate commands to be placed in the network command buffer and these commands will:

1. Serve to release the tone circuit which was employed to provide ringing induction to the calling subscriber;

2. Release the ringing circuit which was employed in supplying ringing current to the called subscriber; and

3. To break the connections to both the originating and terminating subscribers at the first stage of the line link network.

Further, commands will be generated and placed in the network command buffer to establish a connection between the calling and called subscribers via a junctor circuit. After the paths are established through the network the junctor circuit is enabled to complete the transmission path between the calling and called subscribers and supervision of both the calling and called lines is transferred to the junction circuit. Further, at this time the ringing register is released.

When one or both of the subscribers hangs up, the supervisory scan of the junctor circuits detects this condition and registers a request for disconnection in the disconnect buffer. Subsequently, a sublevel Ld program is initiated by the base level supervisory program and this program serves to generate and place in the network command buffer the commands which are required to restore the originating and terminating subscriber's lines to the idle state, to disconnect these lines from the network by opening the first stage crosspoints which were associated with the released call, and to release the junctor circuit which was employed in the call.

MAINTENANCE

A commercial telephone switching system is measured on the basis of both subscriber satisfaction and economic considerations. The illustrative data handling system comprises many major elements or subsystems and, generally, these major elements or subsystems are time-shared by a large number of subscribers and by the maintenance functions of the system. Accordingly, a failure in any of the major elements or subsystems may result in complete system failure or severe degradation of service.

In prior art electromagnetic telephone switching systems, such as the Bell System crossbar systems, a plurality of control circuits, i.e., markers are provided in sufficient numbers to serve the traffic requirements of the switching center. Each marker is time-shared by a large number of lines and trunks. However, in such arrangements any marker may serve any line or trunk and the loss of a single marker, or of a relatively few markers of the group, results only in a reduction in system traffic handling capacity and such a loss is not fatal to system operation.

Subscriber satisfaction demands that calls be handled accurately without unreasonable delays. Further, a commercial telephone switching system must be continuously available during all hours of the night and the day.

Before describing the measures which we have taken to insure subscriber satisfaction in an economically feasible system, it is necessary to define a number of terms which will be employed in the following description:

System Dependability, as employed herein, is a measure of the system's ability to continue to accurately perform its assigned functions (both call processing and maintenance), even in the presence of component and subsystem failures.

Maintainability, as employed herein, is a measure of the ease with which component and subsystem failures can be detected, diagnosed, and repaired.

Reliability of an item, i.e., component (as opposed to a subsystem) is a measure of the probability that the item will perform a specified function for a required period of time without a failure.

System dependability requires that even though the system may experience both component and subsystem failures, the existence of these failures is not reflected in the service which is rendered to a subscriber.

Maintainability is closely related to the economics of a switching system since a system which is easily maintainable requires a minimum of operating manpower. In addition, maintainability is also directly related to system dependability. That is, if a system has a high degree of maintainability, system components and subsystems are out of service a minimum amount of time, and it is recognized that subsystem downtime must be minimized if duplication of facilities is to be effective. That is, statistically two subsystems may fail simultaneously or within an extremely short period of each other. Therefore, it is important that, once a subsystem fault has been recognized, this fault be cleared and the subsystem returned to readiness to provide effective subsystem redundancy.

We have economically achieved system dependability by a number of measures which we will now describe. Certain of these measures are similar to techniques employed in prior art systems. However, as will be seen from the following description, even where similar measures are employed, we have devised improved techniques for implementing these known measures.

The first and most obvious measure to achieve system dependability is redundancy or subsystem duplication. As in any telephone switching system, certain redundancy or equipment duplication is inherent in a subsystem. For example, a telephone switching network provides inherent redundancy both in the switching paths which serve the individual subscriber lines and in the trunks and service circuits which are always provided in groups large enough to handle the system traffic requirements. For example, each subscriber's line has access to four A links in the line switch frame of the line link network in which that subscriber's line is terminated. Accordingly, in the event of a failure of one of the crosspoints which serves to connect a subscriber's line to a particular A link, there remain three other paths available for providing connections to that subscriber. Therefore, a plurality of paths remain available to connect the subscriber to the midpoint of the network, i.e., to the junctor terminals of the line junctor switch frame.

Similarly, since it is possible to have a plurality of simultaneous connections to any given trunk group or to any given type of service circuit, both trunk circuits and service circuits are provided in groups rather than on an individual basis. The loss of a single trunk circuit or a single service circuit, therefore, will not cause system failure, but rather merely decrease the system traffic handling capacity of that one particular trunk group or service circuit group.

It should be noted that, as is the practice in other telephone switching systems, apparatus which is individual to a subscriber is not duplicated since failure of this equipment affects the service to a single subscriber. Furthermore, the apparatus which is provided on a per subscriber basis is generally extremely rugged and reliable and therefore does not pose a major problem in providing system dependability.

In the illustrative embodiment entire subsystems or portions of subsystems are duplicated to provide system dependability. The following is a summary of the various subsystems of our switching system which is an illustration of a data handling system and the duplication employed with respect to each of these subsystems.

1. Central Control 101 Central controls are always provided in pairs. Further, the more important input and output communication paths (buses), are duplicated and provision is made for switching between certain duplicated buses at system cycle speeds (within one basic 5.5 microsecond system cycle).

2. Program Store 102 Program stores are provided in accordance with the semipermanent memory capacity requirements of the system. However, there are always at least two program stores employed in a system to provide duplicate copies of the information stored. Further, as in the case of the central control, both the input and output communication paths (the buses which connect the program stores to central control) are duplicated and provision is made for rapidly switching between both input and output buses.

3. Call Store 103 The number of call stores employed is based upon the temporary memory requirements of the system. However, again there are always at least two call stores employed in a system and in the absence of trouble all of the information stored is duplicated. Furthermore, both the input and the output communication paths are duplicated.

4. Network Units The network control and supervisory units comprise the Network Controllers 122, 131; the Network Scanners 123, 127, 135, 139; and the Network Signal Distributors 136, 140. The network controllers are provided in pairs and these pairs are each associated with a relatively small segment of the network. Further, one controller of a pair normally controls approximately one half of its associated network, while the other member of the pair normally controls the remaining portion of the network. However, in the event of failure of one member of a pair, the other member may be called upon to control the entire associated network portion. Similarly, the network signal distributors are provided in pairs and normally one member of the pair of signal distributors serves a first portion of associated circuits, while the other member serves the remaining portion of associated circuits. Again, however, in event of failure of either of the members of the pair, the remaining member may be called upon to control all of the associated circuits. This is true both in the case of the Signal Distributor 128 which serves the Junctor Frame 126 and the Signal Distributors 136 and 140 which serve the universal trunk frame and the miscellaneous trunk frame, respectively.

The Network Scanners 123, 135, and 139, are not duplicated in their entirety. The ferrod matrix which comprises a plurality of ferrods which are individual to the supervised circuit are not duplicated. However, the access circuitry which comprises core matrices for interrogating the ferrods and the control circuitry associated with the individual core matrices are completely duplicated as a failure in either a core matrix or its associated control circuitry would seriously affect system operation.

Further, in the case of all of the network elements, namely, the network controllers, the network scanners, and the network signal distributors, duplicated command communication paths are employed; and in the case of the network scanners a pair of scanner response communication paths are also provided.

5. Master Scanner 144 The master scanner comprises a number of independent scanners sufficient in number to serve the system capacity. However, entire scanners are not duplicated, but rather the arrangement set forth with respect to the network scanners is followed.

6. Central Pulse Distributor 143 Central pulse distributors are provided in numbers sufficient to serve the traffic handling capacity of the system. There is a complete duplication of central pulse distributors. Further, all of the central pulse distributors are connected to the Central Control 101 by means of a duplicated command communication bus system.

7. Miscellaneous Units The Automatic Message Accounting Apparatus 147, the Program Store Card Writer 146, and the Teletype Unit 145 comprise the miscellaneous units. The Automatic Message Accounting facilities 147 are provided in duplicate and there are a plurality of teletypewriters. Certain of the teletypewriters are assigned specific tasks such as maintenance, traffic records and service while others, while which are primarily employed for maintenance, may on request be used for any of the normal teletypewriter functions. However, the Program Store Card Writer 146 is not duplicated. Furthermore, all of the miscellaneous units employ the duplicated command transmission paths which serve the various network units and there is provision for rapidly switching between the input communication paths.

As seen from the above summary in the illustrative embodiment, system elements which affect a single line are not duplicated. There is inherent redundancy in certain other portions of the system, for example, in the network and the trunk circuits and service circuits. However, major elements, the failure of which would affect a large number of subscribers or would cause either a major degradation in service or a complete failure of service, are duplicated.

The manner, however, in which the duplicated facilities of our system are pressed into service advantageously differs markedly from the arrangements employed in prior art systems. That is, in prior art telephone switching systems and, similarly, in data processing systems which are somewhat analogous to our invention, subsystems which are duplicated are generally categorized as regular and standby and such subsystems are connected to and disconnected from other system subsystems by way of either manual switches or multicontact relays. These arrangements are not satisfactory in a system such as ours as the time required to switch between subsystems is inherently too long to be practical since not only is system data processing capacity or traffic handling capacity markedly decreased, but, also, there may be a substantial loss of important transient input data. For example, if dial pulse or TOUCH-TONE scanning is interrupted for periods of time sufficient to permit manual or relay switching of subsystems, calls are mutilated and this is reflected in subscriber dissatisfaction. Furthermore, mechanical contact switching of subsystems may generate random noise on the switched conductors which can introduce errors in system operation.

Accordingly, in our system a number of private communication bus systems provide the necessary input and output communication paths to the various subsystems and these communication paths are transformer coupled to both the subsystem sources and the subsystem loads. Transformer coupling serves to isolate subsystem faults from the communication paths serving that subsystem, the connecting subsystems and the duplicate of that subsystem.

Furthermore, the use of transformer coupled communication paths permits different subsystems to address a particular communication path without incurring switching time delay and permits addressed subsystems to accept commands over either one of a pair of duplicated communication paths again without incurring switching time delays.

In addition to equipment redundancy, a number of other system measures are employed in this one illustrative embodiment of our invention to enhance both system dependability and system maintainability. These measures may be divided into two major classes, each of which includes a number of subclasses. The two major classes are (1) hardware measures and (2) program measures.

Both of these classes include equipment checks which provide indications of trouble and, also, both of these classes include remedial steps which are calculated to keep a system running even in the presence of a detected trouble. The program measures also include actions which serve to not only isolate faults to a particular system or subsystem but also serve to accurately locate a fault within a subsystem. These more detailed program actions are directly reflected in the evaluation of the maintainability of our system and, as previously explained, are indirectly reflected in the dependability of our system as the rapid localization of trouble leads to rapid repair of a fault and thus makes duplicate subsystems available for service a high percentage of the time.

We have previously explained above herein the hardware checks hardware checks which are performed on the various subsystems of our system and have noted that program checks are employed also to detect troubles. The hardware checks will not be discussed at this time. However, further reference to the details of these checks will be made later herein as will a more detailed reference be made to the program checks which we employ. Both of these checks, i.e., hardware checks and program checks, lead to indications which are called "detected trouble." The action paths which are followed in the presence of hardware check and program check detected troubles are quite different. However, both of these paths merge at a point in the sequence at which a transfer is made to a nondeferrable fault recognition program.

If the detected trouble is in the operation of a Call Store 103 or a Program Store 102 the path to a sequence action called "retrial" is taken and if a successful call store or program store action accompanies a retrial action, the active combination of subsystems, i.e., call stores, program stores, central controls, and buses, is considered to be acceptable (pass) and the current sequence of program actions is continued. It should be noted, however, that even though a call store or program store retrial may be successful, the fact that a retrial was necessary is recorded and a large number of retrial actions within a limited period of time will lead to maintenance actions which are calculated to find the cause of repeated call store and program store reading errors or call store writing errors. If the call store or program store retrial action does not pass, a path is taken which leads to the maintenance action of setting an interrupt source flip-flop. This action is similarly taken when the detected trouble was other than a call store or program store trouble. There are a plurality of interrupt source flip-flops and these flip-flops are individual to the various sources of trouble.

The setting of an interrupt source flip-flop enables the Interrupt Sequencer 4901 which causes the current program sequence to be interrupted and to store in a reserved area in the Call Store 103 data which is found in a number of the registers of central control. Such data is preserved to permit in certain instances a subsequent return to the interrupted program where such return is both feasible and advisable, and in other cases to provide information which may be helpful in the course of the fault recognition program.

If the interrupt source flip-flop which is set indicates that the detected trouble is in one of the elements of the Central Processor 100, namely, the Central Control 101, the Program Store 102, or the Call Store 103, the Emergency Action 40 Millisecond Timer of the Real Time Check 5703 is enabled before transfer is made to the fault recognition program. When the interrupt source flip-flop which is set indicates a detected trouble in other than the Central Processor 100, a transfer is immediately made to the fault recognition program without enabling the emergency action timer.

If the detected trouble is indicated to be in either the Central Control 101 or the Call Store 103, a transfer is made to the fault recognition program located in the Program Store 102. However, if the detected trouble is in the Program Store 102, steps are taken to operate the Central Control 101 by means of a program which is found in the Call Store 103. That is, if a trouble is detected with respect to the operation of a Program Store 102, it does not appear reasonable to attempt to perform a fault recognition program based upon information derived from a Program Store 102; therefore, a relatively short fault recognition program is obtained from the Call Store 103. The call store program fault recognition sequence is initiated by enabling the Call Store Program Sequencer 5302.

When trouble is detected by means of program checks, a transfer is directly made to the fault recognition program which is specified by the detected trouble. It is not necessary to initiate an interrupt as was required when a hardware check detected trouble.

The fault recognition programs have the highest execution priority in our system as they are calculated to recover the system's call processing abilities. The fault recognition programs, however, are held to a minimum length to avoid disrupting call processing and are limited to steps which isolate the faulty subsystems and the necessary control actions which serve to remove the faulty subsystems from the active combination of subsystems. The first function of a nondeferrable fault recognition program is to determine whether the detected trouble represents a system error or a system fault. If the trouble cannot be reproduced by means of the fault recognition program, the detected trouble is considered to be an error and the system returns to call processing. However, before returning to call processing, a record is made which indicates that an error did occur since this information is required to determine whether or not a high error rate is occurring. As seen above, whenever an error occurs, it is necessary to transfer to a fault recognition program and this transfer reduces the call processing capacity of the central control. Therefore, a high error rate detracts from the efficience of our Control Processor 100.

If the fault recognition program is capable of reproducing the detected trouble, a fault is indicated and the fault recognition program proceeds to isolate the fault to a specific subsystem. It should be recognized that the fault may be found in either the active or the standby subsystem and that different program actions are required to recover system call processing.

If the fault occurs in a Central Control 101, a Call Store 103, or a Program Store 102, only a limited period of time (40 milliseconds) is allowed for the fault recognition program to isolate the fault to a specific subsystem. If the fault recognition program cannot isolate the fault within the prescribed period of time to a specific subsystem and it is known that the fault lies in the Central Control 101, Call Store 103, or Program Store 102, the fault recognition program records a request to subsequently initiate a deferred fault recognition program which will isolate the fault to a specific subsystem and then the nondeferrable fault recognition program rearranges the configurations of the central processor equipments which are related to the subsystem, i.e., Central Control 101, Call Store 103, or Program Store 102, which has an indicated fault.

If the nondeferrable fault recognition program isolates the fault to a specific subsystem it must be determined whether the subsystem which has failed is in the active or standby combination of equipments and appropriate action taken thereafter. If the active unit fails, the program serves to switch the standby unit into the active combination of equipments since this change is required to recover the system's call processing ability.

After a faulty subsystem has been switched to standby or after it has been determined that a standby subsystem is faulty, the fault recognition program operates trouble indicating flip-flops within the faulty subsystem or, in the case of a Network Controller 122, 131 or Signal Distributor 128, 136, 140, sets the faulty subsystem to a quarantine mode of operation.

Further, the nondeferrable fault recognition program marks a flag in the job supervisory register associated with the deferred fault recognition program which is required to pinpoint the trouble within the faulty subsystem.

After the call processing ability of the system is recovered by means of a program rearrangement of configurations of elements of the Central Processor 100 either after registering the request for a deferred fault recognition program or after isolating the fault to a particular subsystem, the fault recognition program resets the Emergency Action 40 Millisecond Timer of 5703. This was enabled when it was determined that a trouble had been detected which involved one of the elements of the Central Processor 100. If the call processing ability of the system is not recovered prior to time-out of the timer of 5703, specific emergency actions, which are described elsewhere herein, result in a B level program interrupt and ordered rearrangements of Central Control 101, Program Store 102, and their interconnecting buses.

When the Emergency Action 40MS Timer is reset before the end of its time-out period, the fault recognition program causes a transfer to a "Restart Program". The restart program, in accordance with prescribed rules, determines whether it is both feasible and advisable to return to the interrupted program. If return to the interrupted program is not advisable, the restart program will select one of several reference points within the H level program, the J level program, or the base level executive program to reinstitute call processing. If it is determined that it is possible to return to the interrupted program, the Go Back Sequencer 5300 is enabled to, on a wired basis, reinstitute call processing.

An example of a situation wherein it is feasible to return to the interrupted program is where a standby subsystem is found to be faulty; therefore, there has been no possibility of mutilation of data or either misdirection or misinterpretation of system commands. An example of an instance wherein it is not advisable to return to an interrupted program is where an active central control was found to be faulty and therefore there may be problems in accurately returning to the interrupted program. If the change from the fault recognition program to call processing is accomplished by way of the restart program rather than by way of the Go Back Sequencer 5300, the program serves to perform similar functions to those which the Sequencer 5300 performs on a wired basis; that is, the interrupt activity flip-flop is reset and the program then determines an appropriate reference point within one of the call processing levels H, J, or L to reinstitute call processing. The program places the code-address of the reference point in the Program Address Register 4801 and transfers to the program.

The recovery of call processing at the reference point does not require any prior history such as is required when an interrupted program sequence is reentered.

As previously discussed, base level work with the exception of work performed by interject is performed cyclically in accordance with the frequency list and there are no priorities associated with base level jobs. That is, each time the base level executive program is entered the job supervisory programs for all sublevels are performed and no one job supervisory program has priority over another. Within sublevel La through Ld the job supervisory programs serve all of the various types of sublevel jobs associated therewith. However, within sublevel Le which is devoted entirely to maintenance routines a priority scheme is employed. Maintenance actions are executed in their order of urgency and if urgent maintenance jobs remain undone, less urgent jobs are omitted. This is illustrated in FIG. 9 wherein the vertical line shows this priority arrangement. As seen at the top of FIG. 9, the maintenance, i.e., sublevel Le job supervisory program first determines whether or not there is a deferred fault recognition job to be performed. As previously described, a deferred fault recognition program is requested whenever a program rearrangement occurs without fully defining the faulty subsystem or pinpointing the fault to a subsystem. If there is a request for a deferred fault recognition program, the branch path is taken and such a program is executed. A deferred fault recognition program generally is rather lengthy and thus must be completed during several successive occurrences of sublevel Le processing. After thy action relating to the deferred fault recognition program has been completed, control is returned to the base level executive program. The deferred fault recognition program may include a special mode of operation termed the "simulated interrupt mode". In this mode of operation the program includes steps which simulate the conditions present during a maintenance interrupt.

If a deferred fault recognition request did not exist, the sublevel Le job supervisory program determines whether or not there are any diagnostic job requests present. Again, if such requests do exist, action is taken and control returned to the base level executive program. If no such jobs exist, the job supervisory program proceeds to determine whether or not there are requests for routine exercises of equipment. That is, from time to time maintenance personnel may enter requests for routine exercises of equipment by way of the teletypewriter. If such requests exist, action is taken and then control returned to the base level executive program. If no such requests exist, the job supervisory program determines whether or not there are any automatically scheduled routine jobs to be performed. That is, purely on a basis of time, certain routine tests are performed. Finally if all of the above jobs have been completed, the job supervisory program makes a time check and schedules routine jobs in accordance with the present time and then, after this has been completed, proceeds to so-called low order gap filling maintenance jobs.

It must be understood that at each successive execution of the sublevel Le job supervisory program the same priority is applied and it is possible that demand routine exercises, automatically scheduled routine jobs, etc., may not be served by many successive executions of the Le job supervisory program.