Abstract:
An improved relay actuating processor for a system that remotely control distributed electrical loads. The relay module is a part of a transceiver decoder that receives commands from a central controller for controlling the state of latching relays for controlling the power circuits of the loads. The improvements include: the use of a progressively variable pulse length relay actuation signal to shorten perceived response time; the provision of automatic power and reset detective and annunciation; a matrix arrangement for pulsing relays that minimizes the number of relay drivers required for a given number of relays to be controlled; utilizing a power clamp limiting circuit for protecting relay drivers from overcurrent; automatic verification of a control actuation command from the central controller; the use of an improved watch dog reset including AC coupling; warning (flicker) mode operation which provides a warning that lights in a given area will soon go off; and a multi-mode reset arrangement permitting the automatic testing of relays.

Description:
BACKGROUND OF THE INVENTION 
     There has been developed a system for remotely controlling electrical loads distributed over a wide area (such as a large office building or factory) from a microprocessor based central controller. That system is disclosed in U.S. Pat. No. 4,367,414--Miller et al, issued Jan. 4, 1983. The information disclosed in that patent is incorporated by reference thereto as if fully set forth herein. In the Miller &#39;414 system, control instructions are issued by the central controller 50 and are transmitted to various transceiver-decoders 56 via a twisted pair cable 58 constituting a bidirectional communications channel. A particular transceiver-decoder that is &#34;addressed&#34; carries out the command by actuating one or more particular relays to make or break an electrical connection as desired. The central controller issues its control instructions in accordance with a predetermined schedule, in response to a measured parameter (such as light level or temperature) or in response to a user switch actuation sensed by a switch processor in the transceiver decoder and transmitted to the central controller over the bi-directional communications link, or in response to a user command telephonically transmitted to the central controller. 
     Although the Miller &#39;414 system operates effectively as disclosed, further enhancements are now possible. This patent is directed to improvements in the transceiver-decoder, particularly to a relay control module for energizing remote control relays. 
     The enhanced transceiver-decoder is configured in a modular fashion. Separate switch and relay &#34;modules&#34; are provided to allow a user of the product to configure a remote control panel to meet his specific application needs. This modular construction is field adaptable allowing an electrician who has no electronic expertise to easily install, replace and service the panels. To do this, small modules are developed so that they can be easily handled and configured in the field. Therefore, a reduction in component count over the Miller &#39;414 arrangement is achieved for driving the same amount of remote control relay loads. The response of a transceiver to relay actuation commands from the central controller is improved. The response time is increased to improve human acceptable perception of relay actuation. Furthermore, compensation for parametric shifts in relay characteristics is made to reduce the propensity for perceived failures of the remote control relay. This compensation is made in the actuating signal provided to the relay. 
     There is also provided improved protection circuitry to insure that faulty relays do not destroy the more expensive electronic modules. Since these remote control relays are actuated by electronic circuitry means, a short in the relay or an external wire can cause excessive current to be delivered causing a self-destruction of the electronic device. A power limiting circuit is needed which reduces this propensity and can annunciate relay faults so they can be traced and quickly replaced. Improved diagnostics is also provided to insure the integrity of the load actuation data base and speed the tracing of system faults. 
     There is also provided a special warning pulse sequence (flicker or warning mode operation) to warn the remote occupant that lights are about to go off. This will give the occupant time to call the computer to keep the lights on. 
     SUMMARY OF THE INVENTION 
     This invention relates to improvements in transceiver-decoders 56 shown in FIG. 1 of Miller &#39;414. Now, each transceiver-decoder has separate processors for carrying out switch functions (sensing a condition charger or a user initiated contact closure and sending a message to central controller 50 and relay control functions (receiving a command from central controller 50 and controlling in response to that command, one or more relays in the power circuits of electrical loads to be controlled. 
     The transceivers according to this invention have some physical and functional differences from those of the Miller &#39;414 patent. The notable physical and functional improvements are listed below: 
     Power Supply 
     A universal power input circuit is provided for all products rated for an input voltage range of 100 VAC to 347 VAC (RMS) at 47 to 100 Hz. 
     The power dissipation of the transceiver is kept as low as possible to eliminate the need of costly cooling techniques. 
     Watchdog Reset 
     A watchdog reset circuit is provided to reset the microcomputer chip in the unlikely event noise causes it to adversely execute erroneous instructions and latchings in a closed loop. The watchdog reset electrically resets the computer causing it to execute a power-up sequence described below. 
     Relay Control Protocol 
     The following is the protocol to be used when energizing an RR7 type latching relay on a given transceiver. 
     Only one relay is to be enabled at any given time. This will ensure the maintenance of proper design margins on the relay driver electronics. 
     The relays are to be individually pulsed with a minimum of 26 VDC for 3 progressive pulsing cycles as follows: 
     Cycle #1: 12 msec&#39;s per relay 
     Cycle #2: 24 msec&#39;s 
     Cycle #3: 48 msec&#39;s 
     The progressive control sequence provides the utmost in system throughput while compensating for an inherent failure mode in the relay. Since the nature of the centralized control system is based on specifying the state of all 16 relays of a transceiver, each relay is to be individually cycled in numerical order from number 1 to 16. The first sequencial cycling of these relays is defined as &#34;cycle #1&#34; with the indicate timing above. That is, relay #1 is pulsed for 12 msec&#39;s, then relay #2 to relay #16. Therefore, it will take less than 200 msec&#39;s to pulse all 16 relays of a transceiver in cycle #1. Since all normal relays will respond in less than 8 msec&#39;s, the throughput of the system will be maintained compared to the present product response of 200 to 400 msec&#39;s to pulse all 16 relays. 
     After completing cycle #1 of 12 msec&#39;s per relay, cycle #2 of 24 msec&#39;s and #3 of 48 msec&#39;s are to follow in the same sequence. The auxiliary cycles 2 and 3 are needed to compensate for a shift in the relays operating characteristics. A fault in the relay can be compensated for by increasing the time duration of the energizing pulse to the relays. The auxiliary cycles are an attempt to reduce perceived failures due to relay faults. A relay that fails to operate during cycle #1 may be caught during the longer auxiliary cycles 2 and 3. Therefore, it can take approximately 1.4 seconds to fully complete the cycling of all relays in a 16 relay bank of a transceiver. 
     For a 32 relay (double address) transceiver, the relay processing is to be delivered in a similar fashion as indicated above. However, to ensure a reasonable system throughout or response an alternating cycling method can be used depending on which address is received first. The addressed that is received first is the one processed first. Once a cycle for a given bank of 16 relays is started, i.e. cycle #1, 2 or 3, the transceiver must complete the cycle before a decision can be made to start cycling the other band of 16 relays. If a subsequent transmission is received for the other bank of relays while the first bank is in a relay processing cycle, the other bank is to immediately start relay processing with cycle #1 upon the completion of the present cycle of the first bank of relays. Once the other bank of relays finishes its first cycle, the next cycle #2 or #3 is to continue on the first bank of relays. This process of alternating relay banks and incrementing to the next cycle continues until both banks have completed all three relay processing cycles. 
     When processing individual relay commands it is acceptable to use one pulse of 48 msec&#39;s in duration per relay. 
     Relay Driver Circuit Considerations 
     The relay drivers are derated over the operating temperature range to ensure that a minimum of 20% design margin is maintained. Furthermore, the relay driver circuits are protected against short circuits in relay wiring with the appropriate current limiting to ensure that safe operating limits are not violated. Appropriate noise filtering and static discharge protection must be included in the design to protect the integrity of the transceiver board. Relays can be remotely mounted up to 500 feet away from the transceiver panel via the standard 20 AWG remot control wire. 
     The following is a list of particular objectives of the present invention relating to the relay module. 
     1. To provide a pulsed output matrix process for relay actuation. An 8×8 source/sink switching matrix is provided to control up to 32 remote control relays. This allows the energizing of 64 separate coils utilizing just two monolithic integrated circuits. These two circuits contain 8 sink drivers for sinking current and 8 source drivers for sourcing current to each of the selected coils. 
     2. The pulsed output matrix relay control scheme provides the ability to group two wires with a single source/sink combination selecting one out of the 64 relay coils. Therefore, there are 64 combinations of two wires out of 96 wires chosen by this 8×8 selection matrix. This reduces device count providing a smaller size highly reliable lower cost product offering while allowing modular construction with fewer interconnecting points. The ability to select 2 out of 96 points to control 64 relays is novel and distinguishable over the prior art where individual coils were separately energized. 
     3. Provide a means to actuate relays utilizing a progressive variable pulse length actuation signal. This progressive variable pulse length signal to actuate momentarily controlled remote control latching relays will provide the utmost in system throughput while compensating for the varying electromechanical characteristics of the relay. The progressive pulse width process impresses a multiplicity of pulses of varying widths to drive a given relay. These pulses compensate for shifts in mechanical characteristics of the relay. The variable length of each pulse cycle, as described below, allows for a fast throughput since all good relays will respond in the first cycle. Those relays that have experienced a parametric shift will be caught in subsequent cycles without penalizing the overall response of the system. Therefore, both short pulses for throughput purposes and long pulses to compensate for shifting relay characteristics are provided to drive the relay to insure the utmost in system throughput and response while reducing the propensity for perceived relay failures. In this manner all 16 relays of a transceiver can be energized with 200 msec. In a 32 relay panel all 32 relays can be energized in 400 msec as opposed to 1.6 sec in the prior art. 
     4. Provide a staggering relay actuation scheme increasing the response of a double address (32 relays) transceiver module. It is possible for a transceiver to be configured as two logical 16 relay addresses. Since the relay module is physically one device but responding to two unique addresses, as described in the prior art, the throughput of the relays waiting to be processed in the second address often is forced to wait for the completion of the processing of the first address. A staggering of the first cycle of relay actuation has been provided to allow a faster throughput of all relays on a given transceiver panel. 
     5. To provide a relay actuation power drive clamp and current foldback to protect the driver circuits. The invention provides a power limiting circuit to protect the relay drivers so that they operate within safe operating ranges. This eliminates the need for further heat sinking and provides fault tolerance to handle faults due to installation errors that may result in short circuits on relay driver lines. This short circuit may be caused by installation problems or through faulty controlled devices such as relays. In addition to a power clamp limiting the power delivered to drive the relay a current foldback means is provided to shut off the relay drivers upon the sensing of an over-current condition. The current foldback technique reduces the need for power dissipating elements and further increases the reliability of the driver electronics. Therefore, once a fault is detected it is immediately removed from the circuit. An additional overcurrent and undercurrent sensor is provided to allow the detection and annunciation of relay driver line faults caused by faulty relays or short circuits. This annunciation is available through the central controller means to allow easy and quick fault isolation. 
     6. To provide an automatic feedback and verification of relay actuation. A means has been provided to verify proper relay actuation at the completion of the relay actuation process. This automatic verification is self-initiated by the transceiver and thereby eliminates the need for polling of relay states by the central controller means. This reduces communication traffic on the data link connecting all transceivers back to the central controller. Furthermore, over-current detection and relay fault detection are also automatically provided and annunciated over the data link back to the central controller so that system problems can be easily traced. Fault detection and traceability are greatly enhanced by this automatic annunciation of relay actuation. 
     7. To provide an automatic power-up and reset detection annunciation. Upon the application of power or through an internal or externally generated reset the transceiver module immediately communicates its condition back to the central controller means. This annunciation of power-up reset conditions will allow the central controller to correct relay states and insure data base agreement and integrity between the central controller and remotely located transceiver panels. The automatic annunciation of system resets can detect remote use or tampering and provide a self-correcting function insuring that relay states are in the pre-programmed condition. The automatic reset annunciation will further allow the central controller means to detect transceiver malfunctions and annunciate problems. Furthermore, it allows the restoration of the transceiver panels to the proper state. 
     8. To provide a multi-mode reset for providing power-ON reset, under-voltage detection and clearing, CPU watchdog reset and manually initiated reset of the transceiver electronics and/or relay states. A manually initiated reset is provided to provide a backup control and a circuit checkout function during installation. The manual reset function has 3 basic modes of operation. They are: group ON/OFF control, individual circuit control, and automatic cycling of individual circuit controls. The individual circuit control allows the installer to insure the proper circuit connection to the numbered relays controlled by the transceiver panel. The group ON/OFF control provides the user with the ability to force the relays into a desired state backing up the central controller means. A watchdog reset is provided to force the computing device into a known state. This watchdog reset circuit is initiated after an absence of the sequential device missing a predetermined cycle. Furthermore, an under-voltage detection can also trip this watchdog circuit protecting against erroneous operation during a power brown-out. A reset apparatus is A.C. coupled to detect missing pulses using a hysteresis compensated comparator connected to an oscillator in a wired ORed tied to the under-voltage detection ANDed with the pulse reset input. The A.C. coupling of this watchdog reset function insures that a malfunction of the sequential Mealy-Moore machine will not defeat the reset function since it is independent of the D.C. steady state of the device. Sequential machines would fail to operate in a proper program sequence which would cause its input/output pins to remain in a steady state condition. The prolonged continuous output will trigger the reset. 
     9. A method by which specified relays would be pulsed off for a short (approx. 1 sec) period then put back on so as to flick the lights warning the occupant of a light shutoff typically 1 minute later. 
     These objectives are achieved by providing an improved remote load control relay module. The transceiver of the Miller &#39;414 system is modularized with separate switch, relay and power supply modules. This invention relates to the improvements over the prior art in the relay control module known as a transceiver previously disclosed in Miller &#39;414. The invention provides a new method and apparatus to energize remote control relays to increase the system&#39;s reliability, lower product cost and increase the overall product&#39;s response to control actuation commands. This relay transceiver is configured so as to plug into a mother board of a transceiver-decoder and is capable of controlling 16 or 32 relays. As in the Miller &#39;414 system, the transceiver connects to a low voltage twisted pair data communication line which is routed around a facility connecting the remotely located transceivers or load control processors to the central controller means. The transceiver is responsible for forcing in a relay state as commanded by the central control means. Furthermore, two way communication is provided to insure verification of relay actuation and annunciation of any system faults. In addition to the new relay control process, improved diagnostics are included to provide easy fault isolation, detection and annunciation. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of the relay module according to the present invention; 
     FIG. 2 is a schematic diagram of a latching relay of the type to be operated by the relay module according to the present invention; 
     FIG. 3 (including FIGS. 3a-3c) is a schematic diagram of the relay module with the data line transceiver omitted. A schematic diagram of the data line transceiver portion of the relay module can be found in the Miller &#39;414 patent, FIG. 8, incorporated by reference into this application; 
     FIG. 4 is a block diagram showing the various functional blocks of the firmware associated with the relay processor (microcomputer) shown in FIG. 1; 
     FIG. 5 is a further block diagram illustrating the function of firmware associated with the relay processor (microcomputer) shown in FIG. 1; 
     FIGS. 6-51 are detailed flow charts illustrating the functions carried out by firmware associated with the relay processor; and 
     APPENDIX 1 is a complete listing of the object code associated with the relay processor which carries the functions illustrated in FIGS. 4-51. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     Referring now to FIG. 1, there is shown a block diagram of the relay module, also known as a &#34;relay output module&#34;, according to the present invention. 
     The central controller (reference numeral 50 shown in FIG. 1 of the Miller &#39;414 patent) communicates with a plurality of transceiver decoders via a bi-directional communication link. In the preferred embodiment, this bi-directional communication link is constituted by a twisted pair 58 (corresponding to twisted pair 58 shown in FIG. 1 of the Miller &#39;414 patent). A relay processor 300, preferably an 8049 microcomputer, receives commands from twisted pair 58 and sends information to the twisted pair via a data line transceiver 400. Data line transceiver 400 was shown in detail in FIG. 8 of the Miller &#39;414 patent and therefore will not be detailed in schematic form. 
     Data line tranceiver 400 couples relay processor 300 to the common communication link (twisted pair 58) used to transmit serial data to and from the central controller (not shown but corresponding to central controller 50 in the Miller &#39;414 patent). Data line transceiver 400 contains both a receiver and a transmitter to facilitate bidirectional data communication. Both the transmitter and receiver are optically isolated from any ground reference thereby providing a noise immuned balanced driver capable of rejecting common mode disturbances and receiving differential signals. Serial data is transmitted in a similar fashion as described in the Miller &#39;414 patent and is received from the data line over the SID line. Transmitted, output data is impressed onto the data line via the SOD line. 
     Associated with processor 300 is a watchdog reset circuit 500 including a watchdog timer 500 and associated circuitry. Watchdog reset circuit 500 is responsible for causing or generating a reset pulse to processor 300 under the following conditions: 
     A. Power on: when power to the system is first applied. 
     B. Low power: when the power to the system falls below a predetermined operating voltage. 
     C. Watchdog Time-Out which results when the processor 300 fails to retrigger  the watchdog timer 550 within a predetermined time interval. The trigger to the watchdog timer is reset every time processor 300 causes a pulse on the watchdog out line. This line is AC coupled to the watchdog circuit to insure only transitions cause a reset. By forcing processor 300 to pulse its watchdog output line, it is insured that the system will remain in a deterministic state. If for any reason processor 300 fails to reset the watchdog timer within a predetermined time interval, timer 500 will force a reset on the reset line of processor 300 in an attempt to restart it. This will self correct the system to a deterministic state reducing the system&#39;s vulnerability to spurious signals. 
     D. Manual Reset Switch: There is provided a manual reset switch 560 which when activated causes a reset pulse to appear on a reset line 562 and a manual reset line 564. Processor 300 can execute one of three reset modes or sequences determined by the manual user. A reset pulse is generated periodically until the watchdog reset signal appears acknowledging the proper operation of processor 300. After a reset, processor 300 will enunciate the occurrence on the data line. 
     A jumper selection matrix 600 is used to select an operating mode of a relay module. This allows a multiplicity of functions to be achieved with essentially one apparatus configuration. By the use of the jumper selection matrix 600, the apparatus can be particularly configured for a special application. The jumpers are: 
     W1 (not applicable) 
     W2 (not applicable) 
     W3 (not applicable) 
     W4 (communication, new or old format) 
     W5 (not applicable) 
     W6 (16 or 32 relays). 
     An address input multiplexer 700 provides for the multiplexing of address bits into processor 300. This allows the multiple use of a common set of input/output lines to processor 300. 
     Relay source drivers 800 and relay sink drivers 850 together constitute the driver circuitry for operating latching relays ultimately controlling the distributed electric loads. Drivers 800 and 850 provide a multiplying matrix used to energize 2 out of 96 relay lines from an 8×8 driver circuit. This reduces the number of costly interconnections and driver electronics necessary to energize the bank of 32 latching (3 wire) relays. (It is contemplated that the relay driver circuitry will operate latching reays of the type showing schematically in FIG. 2.) 
     There is provided relay power, driver protect and fault detection circuitry 900. This circuitry regulates the power delivered to the relays. It provides current limiting to protect the relay driver electronics from shorted relays or faults. It also flags processor 300 to alert it to fault conditions on the under and over current lines so that the processor can immediately shut off relay drivers 800 and 850 to avoid damage and reduce the need for heat sinking of the driver electronics. Furthermore, processor 300 will enunciate any system fault over the data line. 
     There is further provided a five volt regulator 950 for supplying power to the logic circuits. 
     Relay processor 300 functions as a sequential logic machine that is configured by firmware to perform all the control and communication processes discussed above. 
     Referring now to FIG. 3 (including FIGS. 3a-3c) there is shown a detailed schematic diagram of the relay module shown in block form in FIG. 1. 
     Watchdog Circuit 500 
     Watchdog reset circuit 500 has several functions. The first function is a power-on reset function. The second function is a voltage monitoring function that holds processor 300 in reset whenever its power goes below predetermined limits. The third function is to act as a watchdog for processor 300. In normal operation, processor 300 will send a string of signals through its Pin 25, the Prog pin, to constantly reset an RC combination. Should the microprocessor get hung up in an endless loop, or get &#34;lost&#34; in its program, the RC combination will time out and provide a series of reset pulses to processor 300, allowing the system to restart without manual intervention by the customer. The watchdog sequence starts with pulses appearing on processor Pin 25. This pin is under software control in the processor. It is directly connected to Pin 9 of U-2 which is an inverter. Inverter U-2 in this case is used as a buffer. This buffer drives C-10, a 470 picofarad capacitor which in turn drives the base of Q-10 a 2N2907. When processor 300 signal goes high causing the inverted buffered signal to go low, the base of Q-10 conducts current pushing a pulse of current into C-7 through the collector of Q-10 and charging C-7. R-15 is the constant determining resistor. The combination of R-15 and C-7 determine how often the pulses must come from the microprocessor to prevent a watchdog reset. In this case, the time constant is 100 milliseconds. R-14 is connected across the base emitter junction of Q-10 and serves to turn off Q-10. CR-2 provides a current path to the current on C-10 when the signal from the buffer inverter is a high level going signal. The primary purpose of C-10 is to provide DC isolation of the reset signals from the microprocessor. In this type of coupling it is not the absolute level of the signal from the microprocessor that determines when a watchdog reset occurs, rather it is the period between transitions of the microprocessor signal that determines when a watchdog reset will occur. Assuming a high level voltage on C-7, R-15, this high level voltage appears on the minus input Pin 8 of a comparator U-6. Since the minus input is at a higher voltage than the positive input, then the output of this comparator will be low. This low level signal is directly connected to the minus input of comparator input Pin 10, another section of U-6, and since in this case the minus input is less than the positive input, the output of this comparator section on Pin 13 will go into the high impedance state allowing R-13 to pull up the reset line, although delayed by C-18. C-18&#39;s prime function is to provide a power-on reset. It will hold the processor invest upon the event of power-on for approximately 500 milliseconds. Should the watchdog pulses cease to occur, Q-10 will stop charging C-7; C-7 will discharge thru R-15 and the voltage on Pin 8 will drop below the voltage on Pin 9 of the comparator, forcing Pin 14 into a high impedance state. R-12 will charge C-6 until the point that the voltage on Pin 10, the minus input of the comparator, will exceed that of Pin 11, the positive input of the comparator. The comparator will then clamp low on the output Pin 13 and put the processor into a reset state. It will be held in that reset state until R-12 discharges C-6. This time constant is approximately 20 milliseconds. Thus when the processor fails to give watchdog pulses, the reset line will be given a series of 20 millisecond reset pulses. The rise time on this reset pulse will be determined by R-13 and C-18 and will be very slow as a result. This is of no consequence to the processor which has built in reset hysteresis. R-10 and R-11 provide hysteresis in the comparator circuit for the RC time constant just as R-9 and R-13 provide the hysteresis for the oscillator function. The savings of two resistors was achieved by using R-7 and R-5 combination as a voltage reference. This provides the voltage reference of approximately 2.5 volts and is used in several instances. The low voltage reset circuit operates using R-20 and CR-4 as a 4.3 volt reference into the comparator U-9. This voltage reference is fed into a minus input Pin 10 and is compared to the 5 volt supply of the processor on Pin 11, the positive input. When the processor supply drops below 4.3 volts, the processor is held in reset through this comparator output Pin 13. In this module a reset can also be manually initiated by pushing on the reset button which is coupled through the voltage monitor circuit via C-13. Thus pressing the reset button puts a low level signal on C-13 and pulls Pin 11 the positive input of the comparator to a low level, generating a reset pulse to processor 300. The processor can distinguish this pulse from a watchdog pulse because this signal is also fed to the positive input Pin 7 of U-6 whose output drives Pin 1 of the processor 300. Processor 300, by monitoring this Pin 1, can tell whether a reset was initiated by the watchdog circuit or by manual intervention. The timing of this reset pulse is not critical and is determined by the C-13, R-21 combination which provides a 1 millisecond pulse to the reset line. Minus input of this reset button comparator is tied to 21/2 volt reference previously mentioned. The output of this comparator is called the relay-bar output. 
     Jumper Select Section of the Relay Module 600 
     The only jumper allowed to go offboard is the size-select jumper. Since it is going offboard, it must be buffered and is buffered using a comparator Pin 5 positive input on U-6 with a pull-up resistor R-6. The minus Pin 4 is connected to the 2.5 volt reference. The Pin 2 the output of this comparator is fed to Pin 24 of processor 300. When no connection is made to Pin 5 of the comparator, Pin 2 of the comparator feeds the microprocessor a high level. This indicates a 32 relay module. When the jumper is installed to ground on Pin 5, Pin 2 also goes low indicating a 16 relay module. The other jumpers use the internal pullups of processor 300 and are activated by putting jumpers to ground. The first jumper is called the feature jumper. The second jumper W-2 is not used. The third jumper W-3 is the type jumper. The fourth jumper W-4 is the communications mode jumper and the fifth jumper is not applicable to the relay-only module. With the relay-only module all jumpers are omitted. One other connection is made to this same port is using a dip switch and is address bit 8 of the address select. It feeds Pin 21 of processor 300. C-8 and C-9 are the start-up and harmonic filters for the crystal Y-1. 
     Address Decode Circuitry 700 
     The address decoder circuit 700 decodes the address bits one at a time using a 74LS156 as a decode mechanism. The 74LS156 is used in the dual two-line to four-line decoding mode. This is necessary because it shares control lines with the relay sink driver U-7. Pins 3 and 13 are used as the data input while Pin 15, Pin 1, and Pin 2, Pin 14 connected together are used as enable lines. Using these three lines of control enable allows the multiplexing of control information and address information. The combination of Pin 2 and 14 can be viewed as an overall chip enable. It is active low. Pin 1 can be viewed as the enable pin for the first two-line-to-four-line converter. It is active high and enables the outputs on Pins 7 through 14. The second two-to-four converter enable pin is Pin 15 and is active low. In order to determine which address lines are set on the dip switch pull Pin 2 and 14 low and then choose one of the two banks of two-to-four converters. For example, one might put Pin 1 high enabling the first bank of two-to-four conversion. If then both Pins 2 and 13 were zeroes, that is low levels, then Pin 7 would be activated by a pulled low on the output. If the address line zero dip switch is closed, the output of the LS 156 pulls the input line going to port 1, data bit 4, low. If that address line dip switch is open, the pull-up resistor connected in conjunction with this dip switch pulls the line high and a high-level signal would be read. If one now wanted to read the next address bit location, one again pulls Pin 2 and 14 low as a chip enable, put Pin 1 high as the first bank oif two-to-four selector enable while leaving Pin 15 high to disable the second bank of two-to-four conversion, set Pin 3 address 1 input low and set Pin 13 a zero input high. This would enable Pin 6 low on the output side which is connected through the address switch selector to port 1, data bit 4, input. Similarly, the other address lines may be read when using the second two-line to four-line converter. Pin 1 is put in a low state, Pin 2 and 14 are enabled and Pin 15 is put into a low state to enable the second bank, that is, outputs 9 through 12. Pin 1 and 15 could not be tied together and Pin 2 and 14 used as the enable lines because when 1 and 15 are tied together, one of the two decoders will always be enabled. When a relay is being pulsed, this output could interfere with proper pulsing of the relays. 
     Relay Output and Control 
     The data bus port is used to control the source drivers 800 for the relays. The data bus outputs are isolated using CMOS buffers for the purpose of providing adequate drive to the source driver, a Sprague UDN2981A. A high level source current approximately 1.35 milliamps is required to drive the 2981. This high level of source current is not available in TTL type of buffers. The UDN2981A is rated for maximum output of 500 milliamps, however, it is specified at 350 milliamps. Therefore a selected version of the UDN2981A is required. It must be specified at 500 milliamps with a known forward drop. 
     Port 1 is used to drive sink drivers 850. They are also buffered using CMOS buffers for the same reason as for the source driver case. The sink driver, 9 ULN2813A, is manufactured by Sprague, and is rated for 600 milliamps of current and is specified at 500 milliamps. This is adequate for this application. 
     To activate a particular relay, first the source driver for the blue wire of the relay is activated, followed by the activation of the proper sink driver (red or black wire). Diodes are provided on the mother board to block current leakage paths. 
     Driver Protection Circuitry 900 
     The drivers are protected by a combined current limit circuit and interrupt circuit for processor 300. The purpose is to limit current to the relay drivers as well as to interrupt the processor in the event of an overcurrent condition so that the processor will shut off the appropriate drivers. By involving the processor in the loop, two ends are achieved. One is that the processor is made aware that there is a fault condition somewhere in the relay control loop and secondly, by using the processor to turn off the drivers, no heat sink is needed on the pass transistor used in the driver protection circuit. The protection circuit uses a single sense resistor but two separate sensing circuits. 
     One sensing circuit involving Q-7 and R-19 is a linear circuit. It takes the voltage generated across R-18 and converts it into a current. This current is transformed into a voltage by R-3. This voltage is fed into two comparator inverting inputs. The overcurrent comparator has its positive reference set at approximately 600 millivolts by the combination of R-30 and CR-1. The second comparator has its voltage reference set at approximately 300 millivolts by the combination of R-33 and R-4 driven by the 600 millivolt voltage reference. This sets an overcurrent indication when the current-clear driver exceeds about 690 milliamps. Conversely, the end of current indicator is triggered whenever the current goes below approximately 340 milliamps. The overcurrent output Pin 1 and U-9 directly drives the interrupt pin of the microprocessor and causes an interrupt of the normal processor routine. The output of the undercurrent indicator Pin 1 of U-9 drives T0 of the microprocessor which is polled in the microprocessor&#39;s software. R-1 and R-2 serve as pullups for the respective comparators. 
     Q-8 is the pass transistor for which all current for relay driving must pass. It is normally turned on via R-16. It does not require any other drive because it is a PNP transistor. Q-9 acts as a non-linear switch to shunt off base drive in the event of an overcurrent situation. The threshold for this switching action is determined by the combination of CR-8, CR-9, and the base emitter drop of Q-9. R-17 serves to limit the base current through Q-9 in the event of a direct short circuit being applied to the collector of Q-8. When the voltage across R-18 the current sense resistor exceeds approximately 1.8 volts, Q-9 conducts shunting current to the base and turning off Q-8. It was found to be necessary to have this Q-8, Q-9 combination even though the microprocessor responded approximately 12 microseconds to the interrupt. The source drivers and the sink drivers could not withstand the current supplied by the power supply if there is a dead short from source driver to sink driver. This current would be in excess of 1 amp, and it was found that in approximately 4 to 5 microseconds, the drivers went into unrecoverable second breakdown. The Q-8, Q-9 combination circuit then protects the drivers for that time without the necessity of heat sinking Q-8. This circuit is designed as a saturation type circuit, that is, normally Q-8 is saturated on and Q-9 is completely cut off. Only in a fault condition does Q-9 switch full conducting switching Q-8 completely off. Of course, in prolonged situations, a balance would be reached with Q-9 and Q-8 both partially conducting and in a high power dissipating mode. However, the microprocessor will have responded to the interrupt caused by the overcurrent condition and turned off the sink and source drivers and Q-8 dissipates very little power. 
     There is provided a 5 volt regulator (not shown in FIG. 3) which consists of a 3 terminal regulator, a 78M05, and associated decoupling capacitors. Worse case power dissipation occurs with a 20% error on the high side of the 9 volt source. In a worse case current draw of 150 milliamperes is 0.7 watt. This would mean that without a heat sink this regulator will have a 43° C. rise in temperature. This is acceptable given that the ambient environment will not exceed 60° C. and the rated junction operating temperature is 150° C. We will safely be at 100° C. worse case operating temperature. 
     The following is a descriptive of the software for the 8049 microprocessor for use in the Enhanced Transceiver Decoder. The software listing in object code form is reproduced in full in Appendix No. 1, forming a part of this patent. 
     Software To Hardware Interface Specification 
     The following table provides a function for each PIN of the relay processor: 
     
         ______________________________________Pin    Function      Pin      Function______________________________________ 1     RELAY/UNDCUR  21       ADDR8 2     XTAL1         22       N.C./MODE 3     XTAL2         23       COMM 4     RESET         24       SIZE 5     N.C.          25       WDSTB 6     OVRCUR        26       VCC 7     GND           27       RON1/G2ADRS 8     N.C.          28       ROFF1/ADRIN1 9     N.C.          29       RON2/ADRIN010     N.D.          30       ROFF2/ADRSEN11     N.C.          31       RON3/ADRINP12     R0SRC1        32       ROFF3/G1ADRS13     R0SRC2        33       RON414     R0SRC3        34       ROFF415     R0SRC4        35       N.C.16     R1SRC1        36       N.C.17     R1SRC2        37       N.C.18     R1SRC3        38       SOD19     R1SRC4        39       SID20     GND           40       VCC______________________________________ COMM 0 = NEW SIZE 0 = ONE ADDR 1 = NEW/OLD 1 = TWO ADDR 
    
     The following table is a relay selection matrix: 
     
         __________________________________________________________________________BANK 0 (LOW ADDR)     BANK 1 (HIGH ADDR)RLY   ON       OFF       RLY                    ON       OFF__________________________________________________________________________1  ROSRC1   RON1       ROSRC1            ROFF1                 1  RlSCR1                         RON1                             RlSCR1                                  ROFF12  ROSCR1   RON2       ROSCR1            ROFF2                 2  RlSCR1                         RON2                             RlSCR1                                  ROFF23  ROSCR1   RON3       ROSCR1            ROFF3                 3  RlSCR1                         RON3                             RlSCR1                                  ROFF34  ROSCR1   RON4       ROSCR1            ROFF4                 4  RlSCR1                         RON4                             RlSCR1                                  ROFF45  ROSCR2   RON1       ROSCR2            ROFF1                 5  RlSCR2                         RON1                             RlSCR2                                  ROFF16  ROSCR2   RON2       ROSCR2            ROFF2                 6  RlSCR2                         RON2                             RlSCR2                                  ROFF27  ROSCR2   RON3       ROSCR2            ROFF3                 7  RlSCR2                         RON3                             RlSCR2                                  ROFF38  ROSCR2   RON4       ROSCR2            ROFF4                 8  RlSCR2                         RON4                             RlSCR2                                  ROFF49  ROSCR3   RON1       ROSCR3            ROFF1                 9  RlSCR3                         RON1                             RlSCR3                                  ROFF110 ROSCR3   RON2       ROSCR3            ROFF2                 10 RlSCR3                         RON2                             RlSCR3                                  ROFF211 ROSCR3   RON3       ROSCR3            ROFF3                 11 RlSCR3                         RON3                             RlSCR3                                  ROFF312 ROSCR3   RON4       ROSCR3            ROFF4                 12 RlSCR3                         RON4                             RlSCR3                                  ROFF413 ROSCR4   RON1       ROSCR4            ROFF1                 13 RlSCR4                         RON1                             RlSCR4                                  ROFF114 ROSCR4   RON2       ROSCR4            ROFF2                 14 RlSCR4                         RON2                             RlSCR4                                  ROFF215 ROSCR4   RON3       ROSCR4            ROFF3                 15 RlSCR4                         RON3                             RlSCR4                                  ROFF316 ROSCR4   RON4       ROSCR4            ROFF4                 16 RlSCR4                         RON4                             RlSCR4                                  ROFF4__________________________________________________________________________ For example, BANK 1 RLY 13 ON = RlSRC4, RON1 BANK 0 RLY 7 OFF = ROSCR2, ROFF3 
    
     The following table represents address input multiplexing: 
     
         __________________________________________________________________________ADR1NP G1ADRS G2ADRS ADRIN1                      ADRIN0                            ADRSEN__________________________________________________________________________A0     0      1      0     0     0A1     0      1      0     1     0A2     0      1      1     0     0A3     0      1      1     1     0A4     1      0      0     0     0A5     1      0      0     1     0A6     1      0      1     0     0A7     1      0      1     1     0.sup.  1  1      1      x     x     0.sup.  1  x      x      x     x     1__________________________________________________________________________ 
    
     Referring now to FIGS. 4 and 5 there is shown in general block diagram form the functional units carried out by firmware associated with processor 300 shown in FIG. 1. This firmware is embodied in the object code listing set forth in complete form in Appendix 1. The function shown in FIGS. 4 and 5 are detailed further in FIGS. 6-50. 
     The relay transceiver is comprised of the previously described hardware apparatus and several software or firmware procedures and processes described below. The block diagram of the relay transceiver is depicted in FIGS. 4 and 5 and provides a functional description of each of the software process blocks. 
     Referring now to FIG. 4, the sequential control unit is formed by the TIMINT (timer interrupt service routine) and the executive (EXEC) routines. The purpose of this section is to provide the timing (6 msec timer) and monitor the status of the various other processes. It is further responsible for the task dispatching to all process functions. 
     The address input sequence and address and jumper buffer holding registers described in the MODIDN process provides a means of uniquely identifying a relay transceiver, as well as configuring the product via user or manufacturing installed jumpers to support various selectable features. 
     The command decoder operates upon data contained in the memory buffer area consisting of messages received from the data line receiver. The DECODE process checks the validity of the messages (through parity or checksum calculations), the proper address (ADRCHK process) and the command type. The command decoder will place the proper data into the memory buffer area and status registers of the sequential control unit for subsequent dispatching to the proper task to perform the desired action. The decoding of a valid message results in the incrementing of a good message count register used for internal system diagnostics. 
     A receiver means (RCVSRV) similar to that described in Miller &#39;414 can be utilized in order to convert the incoming serial data stream into a parallel form in the memory buffer area suitable for command decoding. 
     In addition, a transmitting means (XMTSRV) similar to that described in Miller &#39;414 can be utilized in order to convert parallel data from the memory buffer area to the serial format of the common data line. 
     FIG. 5 details the operation of the relay service process. A relay output sequencer (RLYSRV) determines the proper timing intervals for pulses of relay actuation current in conjunction with the TIMINT timer interrupt service routine. Once the proper relay for service is determined by the output sequencer (and the SETABX and FNXTRL process), commands are given to the relay source output buffer and relay sink output buffer (described in the SETSRC and SETSNK process) in order to actuate the relay multiplexing hardware and install the desired relay state. 
     An overcurrent protect control function is shown on the diagram and is comprised of the external overcurrent detect and limiting hardware and the OVCINT overcurrent interrupt service routine which stops the flow of current should an overcurrent condition be detected. 
     Finally, a relay test sequencer exists which can be invoked by a user in order to assist in proper installation of the product and diagnose faulty wiring or relays. This function is described in the RLYTST process. 
     Relay Handler Module (Firmware That Controls Relay Drive Circuits and Driver Protection Circuit) 
     The Relay Handler is a collection of several software procedures whose purpose is to install desired ON/OFF states onto mechanically latching relays. A typical relay transceiver is comprised of 16 or 32 mechanically latching relays. Each group of 16 relays has a bank associated with it resulting in a maximum of 2 banks for 32 relay transceivers. The 2 banks correspond to addresses assigned to each relay transceiver. Therefore, each relay transceiver can respond to up to 2 addresses. The even address is associated with Bank 0 while the odd address is associated with Bank 1. If a transceiver is defined to have a single address for response, that address will be equal to the binary selection applied by the user to the address switch on the transceiver. This address, in the case of a single address TRD, can be either even or odd. 
     Relay processing occurs in a sequential fashion beginning with the first relay of a bank and continuing in order through the last relay of a bank. Three passes of installation will be made for each bank. These three passes, numbered 1, 2, 3, correspond to progressively increasing current pulse duration applied to the relay coil (pass 1 is a duration of 12 milliseconds; pass 2 is a duration of 24 milliseconds; and pass 3 is a duration of 48 milliseconds). 
     Since a normally functioning mechanically latching relay will respond to a state change within the shortest interval of time (pass 1), the throughput is determined by this pass and corresponds to 12 milliseconds per relay. However, due to possible parametric shifts of relay characteristics, it is possible that some relays might not change their state within the pulse duration of pass 1. Subsequent passes of increasing pulse width are then applied in order to change the state of any relay which may be responding in a more &#34;sluggish&#34; manner. The 48 millisecond pulse width of pass 3 was determined to be the maximum time required for a change in state to occur in a mechanically latching relay with an abnormal shift in its parameters. 
     An entire bank of relays is serviced within a given pass. At the end of each pass, an attempt is made to install any data for the other bank of relays. By swapping banks of relays every pass it is possible to maximize the observable throughput for both banks. This is because a bank of relays does not have to wait for the other bank&#39;s three passes of 12, 24 and 48 milliseconds to complete in order to begin servicing for its initial pass. (However, it must wait for the current pass to complete.) 
     In addition to installing desired states onto the up to two banks of mechanically latching relays, the relay handler will perform the required multiplexing for the 64 ON/OFF coils of the relays through its 8 bit output structures and associated relay multiplexing hardware. In addition, the handler also maintains a register of states for the relays containing the ON/OFF indications, and provides for infinite queing of commands received over the common data line for altering the states of relays. Either individual relays, multiple relays or entire banks of 16 relays can be altered. And, finally, the relay handler will recongize both overcurrent and undercurrent detections from the associated relay multiplexing hardware which may or may not be indicating an abnormal condition. 
     Before further analysis of the relay handler can be undertaken, it will be necessary to describe the data structures used in the servicing of relays. These data structures are utilized in such a manner as to allow the pulsing of a single relay coil at a time. The data structures are used in order to remember which relay coil is being pulsed as well as the desired duration of that pulse and information necessary to pulse additional relays in the future. By coupling this information together with a proper interval timer, it is then possible for the microprocessor to initiate the pulsing of a relay coil and then continue with other non-related tasks such as communicating over the common data line. After the proper interval of pulsing has transpired, it is then possible to restore the state of the relay handler, by utilizing the data structures, and continue pulsing further relays. 
     There is a master status register (known as the Relay Module Status Register) which indicates if relay servicing has been active in the past and if so, which of the two banks were active. In addition to this master status register, there are additional registers which are duplicated for each bank of the transceiver. They are: the relay status register for a bank; the relay holding register for a bank; the relay working register for a bank and the relay states register for a bank. 
     The relay status register for each bank contains information indicating if that bank was active (in other words, was having relay states installed by the relay handler) as well as an indication if data is awaiting installation in the relay holding buffer. Also contained in the relay status register, for a bank that is active, is the number of the relay that was last serviced, a pass number from 1 to 3 (which indicate the duration of the pulses to be applied to relay coils) and, if necessary, a flag indicating that the first relay of a given bank for a particular pass is to be installed without delay (this would indicate a need for immediate servicing of that relay without waiting the customary amount of time between servicing of relays). 
     Queuing of commands which affect the state of relays is achieved by placing the required data for the relay service into a relay holding register. This register is broken into two parts. The first part, or mask portion of the holding register, is used to indicate the presence of a desired action for a given relay. A &#34;1&#34; value in the mask portion of the register indicates a need to service the relay number corresponding to that position (the first bit, data bit 0, corresponds to relay number 1; the last bit, or data bit 15 of the register, corresponds to relay number 16). The second portion of the holding register contains the states desired for particular relays. A value of &#34;1&#34; will indicate a desired ON action, while a value of &#34;0&#34; will indicate a desired OFF action. 
     The relay working register is similar to the holding register in that it is broken into two parts, a mask and a state portion. However, it contains the actions which are to be installed onto the currently active bank of relays. Since this information is maintained separately from the holding register, it is then possible for an initial set of relay actions to be installed from the working register while future actions are being held in the relay holding register. The current actions on an active bank of relays will proceed to completion before information in the holding buffer will be acted upon. 
     The final data structure used by the relay handler module is a relay states register for each bank of relays. This 16 bit register will contain a &#34;1&#34; value in each position corresponding to a relay that is in the ON state and a &#34;0&#34; value in each position corresponding to a relay in the OFF state. Data Bit DB0 through DB15 correspond to relays numbered 1 through 16. 
     The primary procedure of the relay handler module is the Relay Service Routine, RLYSRV. The Relay Service Routine is a procedure invoked by the main executive of the relay transceiver. Its purpose is to control the actions of the relay handler, manipulate and maintain the required data structures, and perform relay pulsing as needed. A flow diagram depicting the relay service process is indicated in FIGS. 6, 7 and 8. 
     Referring to FIG. 6, on entry to the relay service routine, a test is made to determine if relays were being serviced in the past by checking the relay module status register. If relay processing was indeed active in the past, then the bank that was active is restored by the SETABX routine such that the pass number, last relay number and immediate service requirement flag reflect the last action performed on that bank. If relays had not been servicing in the past, then the SETABX routine is invoked in order to process any relay data that may be waiting in the holding buffer for the low bank of relays. If that process is successful, then flow continues as indicated in FIG. 6. If it is not possible to make the low bank of relays active, a test is made to determine if the transceiver is a two-Bank (32 relay) transceiver. If the second bank of relays does not exist, then the process completes and control returns to the executive. However, if the transceiver does contain two banks of relays, then the SETABX routine is called once more in order to process any relay actions that might be waiting in the holding buffer for the high bank of relays. If no data is awaiting servicing, then the process completes and control returns to the executive. Otherwise, the pass number, last relay number, and flag indicating a need for immediate service has been established as indicated for the bank of relays that is now active. If immediate service for the bank is required, then the first relay to be serviced within that bank is established by the FNXTR0 process. If a relay is found, then the flow continues at connector B of FIG. 7. Otherwise, if a relay is not found then the process continues with connector C of FIG. 8. 
     If immediate servicing for a bank is not required, then a selection is made of the time interval required before further servicing can occur. This corresponds to an interval of 12 milliseconds for pass 1, 24 milliseconds for pass 2 or 48 milliseconds for pass 3. If the required interval of time indicated by the pass number has not elapsed, then the process completes and control returns to the executive. Otherwise, the flow continues as indicated on FIG. 7 at connector A. 
     The flow description of the relay service module continues with FIG. 7. At connector A the process FNXTRL, or Find the Next Relay, is invoked in order to select the next relay to service. If a relay to service cannot be found, this indicates the end of a pass and the process continues with connector C, FIG. 8. Otherwise, continuing to connector B, the state for the relay found is assumed to be OFF. The state bit corresponding to the relay number to service in the working buffer is then tested to see if an ON state is desired. If the relay is indeed to be turned ON, then the state to service register is set to ON and flow continues as indicated in FIG. 7. 
     Both the source and sink drivers are turned to their OFF or no current condition. The overcurrent detection hardware is disabled and an undercurrent flag is set in the STATUS register if needed by the procedure RELAY 9. SETSNK is then invoked in order to turn on the sink driver for the relay to service. SETSRC turns on the source driver for the relay to service and following this test a test of the state to service is performed. If the relay was set to an ON condition, then a pointer is set to the low portion of the relay states register and a bit is set corresponding to the relay to service in the relay state register by the procedure SETBIT. On the other hand, if the relay was turned off then the low portion of the relay states register is pointed to and a bit is cleared corresponding to the relay to service in the relay state register by the procedure CLRBIT. Flow continues for both states by saving the relay to service as the last relay, dropping any immediate service requirement, and updating the relay status register for the proper bank. The procedure is then complete and control returns to the executive. 
     The final figure for the relay service module is FIG. 8 which begins at connector C. This process is entered whenever the end of a pass has been detected. Both source drivers are turned OFF and the overcurrent detection hardware is disabled. If needed, a flag corresponding to an undercurrent detection is set in the STATUS register of the transceiver by the procedure RELAY 9. The pass number is then incremented (to pass 2 or 3). A test is then performed to determine if the service for the bank is now complete (on completion of pass 3). If the service has completed, then the status byte for the bank and the status byte for the relay module are cleared to indicate that the bank is no longer active. A test is then performed to see if the tranmit buffer is currently in use. If so, then the process continues as indicated by the figure. Otherwise, a desire for deferred transmission is indicated and the relay state register is moved to the proper transmit buffer along with a flag indicating a transmission of relay states. The process then continues as indicated in the figure. 
     If the test for completion of relays service determines that there are more passes to be performed on the bank, then the flag indicating a need for immediate service is set, the new pass number is saved, and the last relay number is set to 0 in the proper relay bank status register. A test is then made to determine if the transceiver contains two banks of relays. If not, then the process completes. Otherwise, the opposite bank is requested and the procedure SETABX is invoked in order to attempt to make the opposite bank active for the next relay service. The procedure RLYSRV is then complete and control returns to the executive. 
     The routine, SETABX, or Set Active Bank X, is invoked by the relay service module, in order to activate a bank of relays for servicing. SETABX performs this task by restoring the required information for relay servicing and performing a transfer of relay data from the relay holding register to the relay working register, if required. 
     Referring to FIG. 9, the flow description of the process SETABX, the status register for the desired bank is fetched. A test is then made to determine if that bank of relays was active for relay servicing in the past. If so, then the last relay serviced, the pass number and the flag indicating an immediate service request is restored and flow continues as indicated. Otherwise, a further test is performed to determine if there is relay data waiting servicing in the relay holding register. If not, it is indicated that the bank cannot be made active and the process ends. 
     If there is data waiting servicing in the the bank is updated to show an active indication and the flag indicating holding data available is cleared. Next the immediate service request flag is set, the pass number is initialized to pass 1 and the relay number is set to 0. The holding buffer is then copied to the working buffer and an indication is given that the bank of relays is now active for servicing in the relay module status register (RLMODS). This completes the description of the SETABX routine. 
     The routine FNXTRL, or Find the Next Relay, is responsible for scanning the mask portion of the working register in order to detect relay positions that have been indicated for servicing. A flow chart for this routine is indicated in FIG. 10. 
     The FNXTRL routine begins by checking the last relay serviced to see if it was relay 15. If so, then there are no more relays to be serviced and a flag is set to indicate that no relay is found. The process then aborts. If the last relay serviced was not number 15, then the mask portion of the working register is isolated corresponding to any relay position greater than the current relay. A test is then performed to determine if any relays remain to be serviced in the bank. If not, an indication is made that no relay can be found and the reoutine exits. Otherwise, a 1 value is added to the relay register and the portion of the working register mask corresponding to the relay number in the relay register is isolated. A test is then performed to determine if there is a relay action present in that position. If so, then a flag is set to indicate that the relay number in the relay register has been found and the process exits successfully. If no relay action was present then the loop of adding 1 to the relay register and isolating the bit position corresponding to the number in the relay register and the test for relay action present in that position continues until such time that a relay is found to be active in that position. 
     As was described above in the RLYSRV module, whenever the initial service for a bank is made, a special procedure entitled FNXTR0 is called in order to find the first relay to service for a given bank. Referring again to FIG. 10 for the FNXTR0 label; the relay register is set to relay number 0. Then the mask position of the working register corresponding to relay number 0 is isolated and a test is performed to determine if there is relay action present in that position. If not, the flow continues as indicated on the diagram. If so, then an indication is made that the relay number in the relay register has been found and the procedure exits. This completes the description for the FNXTRL routine. 
     The procedure RELAY9 is called by the relay service module in order to complete the servicing of a relay for a previous relay service. As indicated in FIG. 11, the overcurrent detection hardware is disabled and a test is performed to determine if an undercurrent condition occurred while servicing the relay. If it did, then a bit is set in the STATUS register of the transceiver corresponding to an undercurrent detection. Otherwise, both the sink and source driver are turned off as indicated completing the process. 
     SETSNK, or the Set Sink Driver routine described in FIG. 12, is responsible for enabling the sink driver hardware for a relay service. As indicated, it will get a byte to output to the sink driver hardware (obtained form a lookup table) corresponding to the relay to service taking into account the ON/OFF indication. The byte is then output to the sink driver and the process completes. 
     The SETSRC, or Set Source Driver routine described in FIG. 13 operates in a similar fashion for setting the source driver to the desired condition. The byte to output to the source driver (obtained from a lookup table) corresponding to the relay to service and the bank indication is output to the source driver. Following this, the overcurrent detection hardware is enabled completing the process. 
     The SETBIT and CLRBIT routines are two utilities responsible for setting a desired bit within a register or clearing a desired bit as needed. A flow description for the SETBIT routine is given in FIG. 14. A mask with a single 1 value in the position corresponding to the position to set is retrieved from a table. The desired bit is then set in the register by ORing the above value with the desired register. The new value is then saved as the updated register contents, completing the process which then exits to the calling routine. 
     FIG. 15 depicts the flow for the Clear Bit routine. A mask with a single 1 value in the position corresponding to the position to clear is obtained from a table. This mask is next converted such that there is a single 0 value in the position to be cleared. The desired bit is then cleared by ANDing the above value with the desired register. This new value is then saved as the updated register, completing the process. 
     FIG. 16 describes the overcurrent interrupt service routine which is entered whenever the external hardware detects an overcurrent condition while servicing relays. As depicted in the figure, the source driver is turned OFF following by the sink driver resulting in 0 current flow through the relay coil. A bit is then set within the STATUS register corresponding to an overcurrent detection. The overcurrent detection hardware is then disabled to avoid further detection of the same overcurrent condition. The process then completes and control returns to the procedure in progress before the overcurrent detection interrupt occurred. 
     This completes the description of the Relay Handler Module. In summary, the Relay Handler provides a means of installing desired states onto mechanically latching relays; a means of performing the required multiplexing for actuation of the external hardware; a means of identifying and controlling two separate banks of relays; a means of staggered service of banks in order to maximize throughput; a means of maintaining a register of relay states; a means for infinitely queuing commands for altering the relay states; a means for performing actions on individual, multiple or entire banks of relays; a means of recognizing and indicating a detection of an undercurrent indication while servicing a relay; and finally, a means of recognizing and indicating the detection of an overcurrent condition and also disabling the relay multiplexing hardware in order to protect it from damage due to the overcurrent condition. 
     Momentary Pulsed Output for Mechanically Latching Relays 
     In order to provide a group of pulsed output devices from a normally mechanically latching relay transceiver, modifications to the previously described relay handler module were required. The object is to synthesize a pulsed output from a mechanically latching relay. In the normal relay service, each relay will receive three pulses of current in order to cause a state change to occur. These three pulses are of varying lengths in order to accommodate shifting relay parameters, as previously described. In order to implement the pulsed output TRD, it was decided that the first two passes would proceed as normal allowing standard relay installation to occur with 12 and 24 millisecond pulses. However, for pass three, an additional procedure is invoked in order to force all of the relays OFF. This is done because a pulsed output is a mono-stable device (the device is normally in the OFF condition and will be pulsed to the ON condition brierfly followed by a return to the OFF condition). 
     Referring back to FIG. 7, there are locations indicated on the diagram for insertion of two procedures in order to implement the pulsed output TRD. 
     Referring now to FIG. 17, there is a description of INS #1. The desired relay state is saved in a temporary register. Next, the desired relay state is set equal to the OFF condition. A test is then performed to determine if the pass number for relay installation is equal to 3 (the final pass of 48 millisecond duration). If not, then the relay state desired is restored from the temporary register to its original OFF or ON value and the code continues at the point where the first insertion was made. On the other hand, if the pass was equal to 3, then the desired relay state is left in the forced OFF condition and the process continues at the point where the routine was inserted in the relay service module. The effect of this process is to allow normal OFF/ON state changes to occur on passes 1 and 2 while forcing an OFF state change to occur on the final pass (3). 
     The second insertion (INS #2) required to implement the pulsed output is described in FIG. 18. The desired relay state is restored from the temporary register to its original OFF or ON condition completing the inserted process. The program continues with the code remaining at the end of the second insertion. The original relay state is restored in the second insertion in order to insure that the relay state registers will have the proper OFF or ON indications built into them. Had this not been performed, the relay states would indicate the monostable condition for the pulsed output (OFF). It was desired to allow the relay table to indicate reception and processing of a relay pulse command and not to indicate the actual ON/OFF state of the relays (which for the pulsed output would normally be the OFF condition). 
     By providing an alternate method, as described in the two insertions, for installing relay states it is possible to provide a means of simulating a monostable output device with a bistable output device, i.e., a mechanically latching relay. This modification allows the actuation of contactor type load devices which would normally require a pulsed actuated start or stop signal. 
     Warning Mode (Flicker) for Imminent Load Level Changes 
     There is a need to provide a warning for imminent load changes. In a typical installation, for example, a small office with no windows and only a door, might contain only one lighting circuit. This circuit can have two possible conditions--either ON or OFF. In a typical scheduled control application the lights or some other load for that office might be turned immediately to the OFF state resulting in a potential safety hazard for the occupant of that closed office space. A traditional means for solving this problem would be to provide two or more lighting circuits enabling them to be controlled independently in such a means as to warn the occupant of an upcoming change in the load condition. However, this method has a drawback in that it requires additional expense for extra controls and wiring. 
     This section describes a means of using a single point control circuit (typically lighting) in order to warn an occupant of an upcoming change in load condition. The warning indication consists of five steps. First, all desired loads are turned OFF. Next, a delay of 11/2 seconds follows. Third, all desired loads are turned back ON. Following this, a 30 second delay is entered. Finally, in the fifth step, all desired loads are turned back OFF. The OFF--Delay 11/2 Seconds--ON cycle serves to flick the lights and issues a warning to the occupant. The 30 second delay allows time for the occupant to override a pending load change. Finally, the command to turn the loads OFF insures that unoccupied offices will have their lights turned off as desired. 
     In order to provide the warning function it was necessary to modify three previously described routines. To begin with, due to the long time delays involved, an additional timer similar to the first timer described, was created with 16 bit resolution for 6 millisecond timer interrupts in order to timeout the 1.5 and 30 second time delay. 
     FIG. 19 describes the modification to the relay service routine (of FIG. 6) in order to provide warning mode. All that was necessary was the addition of an additional test, so indicated on the diagram, to determine if the relay service module was servicing a warning mode in the past. If not, then the flow continues as indicated on the diagram. Otherwise, the procedure continues with WARNS, the Warning Service Routine. 
     FIG. 20 describes the modifications required for the SETABX routine (of FIG. 9). To begin with, if the bank was previously active then an additional flag indicating either relay servicing or warning servicing must be established, as indicated on the diagram. In addition, if the bank was not active and relay data was not available in the holding register, then a test is made to determine if there is warning data waiting in the holding register. If not, then service is not active. Otherwise, as indicated on the diagram, the status register for the desired bank is set to indicate active warning service. The warning buffer holding flag is then cleared, pass 0 is set and the immediate first service flag is reset to 0. Next the warning holding buffer is copied to the mask portion of the working buffer and finally an active warning service is indicated for the proper bank in the relay module status. 
     FIG. 21 describes the WARNS or Warning Service procedure. On entry to this process SETABX is invoked in order to active the desired bank for warning indication. A test is then performed to determine which pass number is currently in process. Control branches to Connectors 0 or 1 of FIG. 22 or 2, 3 or 4 of FIG. 23, as indicated. 
     Pass 0 is described on FIG. 22 at Connector 0. The purpose of this pass is to setup the relay holding buffer with the final relay states to be installed at the end of the warning. In addition, other operations necessary to perform the warning process are carried out. On entry to Pass 0 a pointer is established to the mask portion of the proper relay holding buffer and additionally to the current relay states buffer. Following this, all positions of the mask portion of the relay holding buffer are set to 1&#39;s. Next, a pointer is established to the state portion of the relay holding buffer and proper bank warning holding buffer. The state portion of the relay holding buffer is then set equal to the original relay state word ANDed with the inverse of the warning buffer. Finally, a warning service is indicated, the immediate first service bit is set, and the pass counter is set to Pass 1. 
     The purpose of Pass 1 is to turn all desired relays OFF using 48 milliseconds width pulses, as indicated in FIG. 22 connector 1. The immediate first service flag is checked. If it is not set, then a test is performed to determine if 48 milliseconds has passed since the last warning service. If not, then the process exists, as indicated. Otherwise, the process continues as it would in the case where the immediate first service bit had been set to a 1. The desired relay to install is found from the mask portion of the working buffer (by invoking FNXTRL) and is then turned OFF. Following this, the relay number is incremented and a test is performed to see if there are more relays to do. If there are, then the process exits, as indicated, otherwise the 16 bit timer is cleared and the pass counter is set to Pass 2, completing the actions required for Pass 1. 
     FIG. 23 describes the actions required for Pass 2. The 16 bit timer is tested to determine if 11/2 seconds have transpired. If not, then the process completes. Otherwise the pass indicator is set to 3 and the routine exists. 
     Pass 3 is a dual of Pass 1. It is identical with the exception that relays are turned ON and that on completion of Pass 3 the pass indicator is set to number 4. Connector 3 describes the process for Pass 3. 
     The final actions required for warning indications are described at Connector 4 of FIG. 23. As indicated in the diagram, a test is performed to determine if 30 seconds have transpired since the relays were turned to the ON state by Pass 3. If not, then the process exits. Otherwise, all indications of active servicing and warning are removed from the bank status. Following this, the process SETABX is invoked in order to make the final relay state determined during Pass 0 active for normal relay servicing. This completes the warning service which then exits so as to allow the installation of the final relay state as a normal relay service. 
     This completes the description of the warning service process which allows: a means for warning a human occupant of an upcoming change in load status using a single point of control; a means for providing a 30 second delay interval for the occupant to countermand an upcoming change in load status; a means for reducing the data communication traffic requirements for indicating a warning action. 
     Decoder Handler 
     The purpose of the decoder handler is to monitor the receiver buffer and determine when a valid message has been received for decoding. When it is determined that a message is awaiting decoding, the message is verified for correctness of format, proper address and the proper check or parity word at the end of the message. Once the validity of the message has been determined, the decoder will recognize various commands for the device in question. The desired actions are then performed which might include the manipulation of internal data buffers and possible transmission of messages to the controlling device via the common data line. 
     The Decoder Handler includes three main routines: the DECODE routine, responsible for decoding the flag portion of the messages as well as performing other supervisory tasks; the Address Check routine, ADRCHK, responsible for verifying the proper address and checksum or parity word; and the Transmission routine, SENDIT, which is responsible of the transmission of data requiring immediate or interactive transmission. 
     The Decode, DECODE, routine is invoked by the executive and is described in FIG. 24 for the relay transceiver. Beginning with the entry point, a test is made of the RVSTAT register to determine if the RCVFLG is set indicating the presence of a message in the receiver buffer. If not, then control continues to Connector B or DECODE2 which is an abort from the Decode utility that will clear the RCVFLG bank indicators and new/old mode bits from RVSTAT and then return to the executive. If it is determined that there is a message to be decoded in the Receiver Buffer, then the utility ADRCHK is invoked in order to check the address and parity or checksum word of the message and build the flag, DF0 and DFl storage register as required. At Connector A, DECOD0, a test is performed on the RVSTAT register to determine if there is a message waiting decoding for either bank 0 or bank 1. If not, then the routine aborts through Connector B. Otherwise, the proper bank, either 0 or 1, is indicated (by setting or resetting the flag F0). A test is then made to determine if the message is in a new format. If so, the control continues at Connector D of FIG. 26. Otherwise, a test is made to determine if the COMM jumper has been set indicating new format messages only. If so, then the utility aborts through Connector B. Otherwise, the decoding of the two possible old mode flags continues as indicated. If the flag is equal to lCH (Mode 0) then a command to set an entire bank of relays has been received and control continues at Connector E of FIG. 27. Otherwise, a test is performed to determine if the flag received was equal to 8CH (Mode 4). If not, then the DECODE aborts through Connector B. Otherwise, further processing of the mode 4 command is required and the procedure continues with Connector C of FIG. 25. 
     The DECODE routine continues on FIG. 25 at Connector C. The receiver buffer pointer is incremented to point the data field DF0 for decoding of the Mode 4 or auxiliary flag commands. A test is then made to determine if the auxiliary flag is equal to F0H. If so, then an individual relay OFF command is being issued and control continues with Connector G of FIG. 28. Otherwise, a test is made to determine if the auxiliary flag is equal to a value of E1H in which case an individual relay ON command is being specified and control continues at Connector H of FIG. 28. If not, then a further test is performed for an auxiliary flag value equal to B4H or 69H. If no auxiliary flag decodes, then the routine aborts as indicated by passing control to Connector B of FIG. 24. Auxiliary flags B4H and 69H correspond to a relay state request. A desire to transmit two bytes of data is indicated along with a collision line free and the flag is set to A8H (an old mode flag). Continuing, a test is then performed to determine if an overcurrent condition has been detected and so indicated in the TRD STATUS register. If so, then the flag is corrected to a value of 60H indicating an overcurrent detection in the new format for transmission. Otherwise, the proper bank of relay states is pointed to and the process continues at Connector L on FIG. 30. 
     FIG. 26 describes the decoding used for new type commands. Beginning with Connector D, the received flag is shifted two positions to the right in order to skip over the FAFB bits. A test is then performed to determine if the adjusted flag is equal to a value of 0. If so, then a reset command has been issued and the procedure continues with the reset algorithm. Otherwise, a test is made to determine if the flag is equal to 1 indicating a desire to read data with an immediate or interactive transmission (continuing at Connector N of FIG. 31). If the flag is equal to a value of 2, then a command requiring data to be read and retransmitted in a deferred method is indicated and control continues at Connector 0 of FIG. 31. For a flag value equal to 3, the process continues at Connector E of FIG. 27 indicating a command to set an entire bank of 16 relay states. A final test is performed for the new type commands for a flag value equal to 4 indicating a desire to set an individual relay state. The relay and desired state are fetched from DF0 and control continues at Connector K of FIG. 28, as indicated. If it is not possible to decode a new type flag, then the procedure aborts at Connector B. 
     The SET16R or routine to set an entire bank of relays is described in FIG. 27. As indicated, the STATUS register of the TRD is cleared and pointers are set to the holding buffer and relay module status register for the proper bank of relays. Next, the mask portion of the holding buffer is set to a value of FFFFH indicating desired actions on all 16 relays. The relay holding buffer active flag is then set in the relay module status and data field 0 and 1 are copied into the state portion of the holding buffer. The procedure continues at Connector F which is the CLRBNK or Clear Bank process. The good message counter is incremented to indicate the decoding of a proper command and the bank indicator corresponds to the command just decoded is cleared in RVSTAT. Control then continues at Connector A of FIG. 24 in order to process any information for the other bank. 
     The individual relay OFF command is described in FIG. 28 at Connector G. The relay number to be altered is fetched from DF1 and control continues at Connector I. Connector H describes the individual relay ON function. The relay number to be altered is fetched from DF1 and bit DB7 is set to indicate an ON action. Control continues at Connector I where the relay number to be altered is decremented by 1 to result in a range of 0 to 15 (consistent with the new mode of individual relay control). Continuing with Connector K, the relay number to be serviced is saved and control continues to the individual relay set command SET1ND. A pointer is established for both the holding buffer and relay module status for the indicated bank. A test is then made to determine if the holding buffer is currently active. If so, then control continues at Connector J of FIG. 29. If the holding buffer was not active, then the holding buffer active bit is set within the relay module status and the mask portion of the holding buffer is cleared to eliminate any previous actions and control continues at Connector J. 
     At Connector J (FIG. 29), the individual relay set command continues by setting a bit in the mask portion of the holding buffer corresponding to the relay number to service. A test is then performed of bit DB7 of the relay to service to determine the ON/OFF indication. If the action is to be OFF, then the CLRBIT routine is invoked in order to clear a bit in the state portion of the holding buffer corresponding to the relay number to service, at which point control continues at Connector F of FIG. 27. On the other hand, if an ON action was desired, then the SETBIT routine is invoked in order to set a bit in the state portion of the holding buffer corresponding to the relay number to service. The process continues at Connector F. 
     The read status in new format command is described in FIG. 30 at Connector Q. The TEMP0 register is set equal to the A8JUMP value containing address bit A8 and the jumper definition for the TRD. TEMP1 is set equal to the STATUS register of the TRD. The flag register is then set to a value of 18H and a pointer to TEMP0 is established. Continuing at Connector L, an indication is made that two bytes of data are to be transmitted and the process continues at Connector M. 
     Connector R describes the read threshold in new format process. The IBGTHR register is pointed to and the flag is set equal to a value of 20H. Continuing through Connector U, four bytes of data are indicated to be sent. At Connector M, the previously determined line free requirement and the number of bytes to send are merged together. The process continues with the SENDIT routine described in FIG. 33. 
     Connector N of FIG. 31 is entered whenever there is an immediate or interactive request for data. A collision line free requirement is indicated and control continues at Connector P. Connector O is entered whenever there is a deferred request for data and a deferred line free requirement is indicated when control continuing at Connector P. 
     Connector P describes the decoding performed on the auxiliary flags for the read data request. Data Field DF0 is pointed to and a test is made of the auxiliary flag in that position to determine if it is equal to 0. If so, then a request for system status is indicated and control continues at Connector Q of FIG. 30. If the auxiliary flag is equal to 1, then receiver thresholds are being requested and control continues at Connector R of FIG. 30. An auxiliary flag value of 2 indicates a desire to return the data line counters (good or bad message counts) and control continues at Connector T of FIG. 32. An auxiliary flag value of 3 indicates a request for ROM code version handled at Connector V of FIG. 32. Finally, an auxiliary flag equal to 4 indicates a desire to return relay states. The flag is set equal to a value of 2CH and control continues at Connector S of FIG. 25. If no auxiliary flag can be decoded, then the decode routine aborts to Connector B of FIG. 24. 
     FIG. 32, Connector T describes the process for returning the data line counters. The GODMSG register is pointed to and the flag is set to a value of 24H with control continuing at Connector U of FIG. 30. 
     The return ROM code version request is handled at Connector V. A pointer to TEMP0 is established and TEMP0 is then set equal to the ROM code version number. One byte of data to be sent is indicated, and the flag is set to a value of 28H. Control continues at Connector M of FIG. 30. 
     The SENDIT routine is described in FIG. 33. It is responsible for placing data required for transmission into the output buffers and then determining if immediate transmission requirements are needed. If SENDIT performs the actual transmission of a message in an interactive data transmission, then it will test the line free requirements in order to clear out previously established receiver thresholds if the line goes free upon successful transmission of the data. 
     SENDIT places the data being pointed to into the proper output buffer using the flag, line free request, and number of bytes to send by invoking the BLDTBF routine. A test is then performed in order to determine if a deferred line free requirement is needed. If so, then the process CLRBNK is invoked, which is described in FIG. 27 Connector F. Otherwise, if an immediate transmission is required, then a test is performed in order to determine if both banks are being requested. If so, then the immediate transmission of the first bank is postponed and the process continues with the CLRBNK routine. If only one bank of information is to be transmitted, then the line low timeout is set equal to the maximum interblock gap time and the line high timer is set to the minimum. The BITINP routine is then invoked in order to wait for the final IBG of the interactive transmission message to complete; at which point the transmit process is invoked in order to transmit out the required data. If at any time during the transmission a collision is detected, then the process will continue as indicated on the diagram. Otherwise, a delay will be invoked in order to allow the line to go from its low impedance state (from the final IBG) to the high impedance state (50 microseconds). The line high timeout is then set equal to the line free threshold value and the process BITIN4 is invoked in order to determine if the line is active. If the line does not go active, then RVSTAT is cleared indicating a line free condition and the process continues as indicated. If the line did go active then the controlling device has reestablished control of the data line. Therefore, the receiver thresholds are not to be cleared. The good message counter is incremented and the process continues at the DECOD2, FIG. 24 Connector B. 
     The address check routine ADRCHK is described in FIG. 34. It is responsible for verifying that a message in the receiver buffer is, in fact, addressed to the proper transceiver decoder. In addition, it will verify the correctness of the message by performing a nibble parity check or checksum verification of the message. If both the address and check portions of the message are correct, then three registers will be set to the proper values for the flag, data field 0, and data field 1. 
     The description of ADRCHK begins with FIG. 34. The proper receiver buffer is pointed to for the desired bank along with the A8JUMP register. The head of the buffer is fetched in order to get the flag. A test is then performed to determine if this is a possible new mode message by examining the FA bit (or bit DB1) of the flag to see if it is set. If so, then control continues at Connector G of FIG. 36. Otherwise, address bit A8 of the transceiver decoder is compared with that received. If there is not an A8 match, then continuing with Connector A, the RCVFLG bank and mode indication are cleared from RVSTAT and the address check routine returns. Otherwise, if there is an address A8 match, then a further test is performed to determine if it is a two address TRD. If so, then control continues at Connector E of FIG. 35. If the transceiver decoder is a single address device, then the address field is pointed to and compared with the TRD ADRLOW register by the ADRCHD procedure. If there is not a low address match, then the process aborts through Connector A. Otherwise, continuing through Connector B, an old mode bank 0 message is indicated. At Connector C, the parity word in the receiver buffer is pointed to and saved for later comparison. Next a nibble parity check is performed by the PARITY routine and a test is performed to determine if the received and calculated parity agree. If not, then ADRCHD aborts and clears the receiver flag RCVFLG at Connector A. Otherwise, the process continues at Connector D of FIG. 35. 
     Continuing with the description of the ADRCHK process at Connector D of FIG. 35, the valid flag from the receiver buffer is saved and data field 0 in the buffer is pointed to along with DF0 storage by the ADRCHC procedure. At Connector F, the copy routine is invoked in order to copy the received data (0, 1 or 2 bytes) from the receiver buffer to the DF0 and DF1 storage registers as required. The desired mode bits and bank bits are then set within RVSTAT by dispatching through the RVSORL routine. 
     Connector E is entered whenever an old mode two address TRD is to be verified. The process ADRCHD is invoked in order to point to the address field in the buffer and compare this with the TRD ADRLOW. Data bit DB0 of the result is then masked out. (This least significant bit determines the bank that the message was intended for in a two addredd TRD. DB0 equals to 0 corresponds to bank 0 and DB0 equals to 1 corresponds to bank 1.) If there is no address match, then the process aborts at Connector A of FIG. 34. Otherwise, the old mode type message for bank 1 is indicated. A test is then performed to determine if the message in fact was to bank 1 by testing at DB0 of the received address field. If it was to bank 1, then the process continues at Connector C of FIG. 34. Otherwise, the process continues at Connector B of FIG. 34. 
     Connector G of FIG. 36 is entered whenever there is a possible new mode message. A test is performed on Bit FB (DB0 of the flag word) to determine if it is a 1. If so, then the new mode addressing is not being used and the process aborts via Connector A of FIG. 34. Otherwise, a test is performed of the universal address bit U within the high address word. If U is equal to 1, then the process continues at Connector I of FIG. 38. Otherwise, universal addressing is not being used. The high address word is fetched from the buffer and it is compared with address bit A8 of the TRD. If there is not a match, then the process aborts at Connector A. Otherwise, the low address field is pointed to in the buffer and compared to the ADRLOW storage register by the routine ADRCHD. A test is then performed to determine if the transceiver is a single address type. If so, then a test is made to determine if the low address received and that contained in the ADRLOW register compare. If not, the process aborts at Connector A. Otherwise, it continues as indicated on the diagram. If the device was a two address TRD, then Bit DB0 of the result of the comparison of ADRLOW and the received low address field is masked off. If the remaining address bits do not compare then the process aborts at Connector A. Otherwise, a new mode message for bank 1 is indicated and a test is performed on address bit A0 to see if it is set to 0 indicating a bank 0 message. If so, then the indication is changed to a new mode bank 0 message. Otherwise, it is left as a new mode bank 1 message and control continues at Connector H of FIG. 37. 
     Continuing with the description of the new mode address checking at Connector H of FIG. 37, the head of the receiver buffer is pointed to. Following this, the number of bytes received is calculated by taking the 1&#39;s complement of the sum of the down-counting byte counter register plus the 1&#39;s complement of 7. The number of data fields received is calculated by subtracting 4 from the total number of bytes received. Next the checksum register is initialized to a value of 80H. A byte from the receiver buffer is then summed into the checksum register and the pointer to the receiver buffer is incremented to the next byte. The number of bytes received is decremented and a test is made to determine if there are any additional bytes to sum into the checksum. If so, then the process of summing the bytes incrementing the pointer, and decrementing the byte count continues until all bytes have been summed into the checksum. When all bytes have been checked, then a test is made to determine if the final checksum value is equal to 0. If not, then the process aborts at Connector A of FIG. 34. Otherwise, the head of the buffer is saved as a valid flag, the low address field is pointed to and data field storage register is pointed to by the process ADRCHC. Data field 0 is then pointed to in the receiver buffer by incrementing the buffer pointer and control continues at Connector F of FIG. 35. 
     Whenever it is determined that universal addressing is being used within a new mode, Connector I of FIG. 38 is entered. A test is performed in order to determine if all bits other than the U (or DB7) bit of the high address field is equal to 0. If so, then a Family universal address is being used and control continues at Connector K of FIG. 39. Otherwise, a test is made of the high address field to determine if all of the bits are equal to 1. If not, and an improper address has been received then the routine aborts at Connector A of FIG. 34. Otherwise, the low address field is pointed to and a further test is performed to insure that it also is equal to all 1&#39;s. If not, the process aborts. Otherwise, it continues at Connector J. A new mode transmission for bank 0 is indicated and a test is performed to determine if the device is a single address TRD. If so, then control continues at Connector H of FIG. 37. Otherwise, the indicator is updated to reflect a new mode transmission for both banks 0 and 1. (A universally addressed message transmitted to a two bank TRD will result in actions being performed on both banks of that transceiver decoder.) 
     FIG. 39 describes the testing involved for a Family type universal address. At Connector K, the low address field is pointed to and a test is made of that field to determine if it is equal to 0. If so, then a Family address for a relay transceiver has been issued and control continues at Connector J of FIG. 38. Otherwise, the address check utility aborts at Connector A of FIG. 34. 
     FIG. 40 describes the two subroutines required by the ADRCHK process. ADRCHC points to the head of the receiver buffer, gets the received flag word, masks out the two least significant bits FAFB and saves the result as the flag. Next, DFO storage register is pointed to. Finally a value of 2 is added to the receiver buffer pointer such that it will point to data field 0 if an old type message or the low address field if it is a new type message. This completes the subroutine which then returns. ADRCHD is used to order the point to the ADRLOW storage register of the transceiver decoder, point to the low address field by incrementing the receiver buffer pointer and to compare the low address in the buffer with the ADRLOW storage register. This completes the routine which then returns to the invoking procedure. 
     This completes the description of the Decoder Handler Module which provides a means of verifying the address of a message received; a means of distinguishing between one of two banks for a message received; a means of recognizing two formats of messages (old and new); a means of aborting the decode of a message if an invalid format is used; a means of decoding multiple flag words; a means of selecting which group of flags are to be decoded based on the presence or absence of a manufacturing installed jumper; a means of eliminating the response to old format commands by evaluating the presence or absence of a COMM jumper which can be Manufacturing installed; a means of allowing multiple number of data bytes to be input from the common data line; a means for decoding auxiliary flag commands for various types of devices which may or may not be jumper selectable; a means for indicating immediate or deferred response to requests for data transmission; a means of passing control of the data line from one device to the transceiver decoder in an immediate mode of transmission; a means of determining if the controlling device desires to regain control of the data line upon completion of an immediate transmission of data from the transceiver decoder; a means of deferring an immediate request for data if that request is to both banks simultaneously (as would be the case if a universal address command was used); a means for performing a modified checksum against the received message with an initial value of 80H in order to avoid the proper decoding of a message with all 0 or all 1 values; a means of performing a nibble parity check as required for the old format messages; a means for providing the proper setup of the following buffers: the relay buffer for either 16 or individual relay commands, and the switchleg mask buffer; a means of reading the following TRD data registers: the relay state register, the transceiver status, the receiver threshold register, the data line counter register, and the ROM code version; a means of counting the number of properly decoded messages by incrementing a good message counter; a means of automatically clearing the status register of the transceiver decoder upon reception of a command to reestablish the relay data; a means of allowing individual relay control; and a means of generating a special flag on the request for relay states or automatic transmission of relay states to indicate the detection of an overcurrent condition on the relay transceiver decoder. This information can be used by a controlling device to annunciate a failure or take corrective action. 
     Power-Up Executive and Miscellaneous Modules 
     Processor 300, on Powerup or user initiated reset, begins to execute its internal ROM memory code beginning with Address 0 (which corresponds to the PWRUP routine). The powerup routine is responsible for proper initialization of the microprocessor and associated external hardware and for placing a powerup/reset message into the transmitter output buffer for subsequent transmission over the common data line. FIG. 41 describes the powerup routine, PWRUP, for the relay transceiver. The external overcurrent detection hardware is disabled by disabling the external interrupt. Next the internal timer (which is set for six millisecond timer interrupt intervals) is disabled. The stack is then reset and the proper bank of working registers is selected. Continuing with the description, the watchdog protection circuit hardware is recharged to avoid a protective reset of the microprocessor by issuing 50 pulses to the recharge line. At this point the RESET routine is invoked in order to initialize the I/O and internal registers of the microprocessor (including the proper memory registers) and identify the transceiver decoder module type. Next, powerup/reset indication is set into the status register of the TRD. A test is then made to determine if the origin of the reset was manual or not. If a manual reset (button actuated by operator) was detected then a relay test function is required and the process RLYTST is invoked (FIG. 48). Otherwise, the microprocessor enters a delay period of 25 seconds in order to allow the system to stabilize and to give the proper interval of time for the relay test functions. At the end of the 25 second delay, the relay test status is cleared and the relay drivers are turned to their OFF or no current condition. The register TEMP0 is set equal to the A8JUMP register; register TEMP1 is set equal to STATUS; the flag register is set equal to 18H; a pointer is established to the TEMP0 register; a high priority message with two data bytes and collision line free requirement is indicated and finally the powerup reset message is placed into the output buffer for transmission by the previously described BLDTBF routine. This completes the powerup procedure which then continues by entering the executive. 
     The reset procedure, RESET, is described in FIG. 42 for the relay TRD. It is responsible for initializing the I/O and all memory required by the microprocessor device. It will identify the module, indicate a line free error in order to require receiver resynchronization and start the appropriate timers. Beginning with the entry to RESET both the sink and source drivers are turned to their OFF or no current condition. A pointer is then established to the first byte in the microprocessor RAM above the relay states. All RAM and registers above the relay states but below the TESTST register arecleared to a 0 value. ADRLOW and A8JUMP along with the flag indicating single or dual address TRD&#39;s is established by the procedure MODIDN. Following this, the TRD STATUS register is cleared and RVSTAT is set equal to a line free error in order to require receiver resynchronization on a maximum line free interval before subsequent reception of any additional data over the common data line. RESET completes by restarting the 6 millisecond elapsed timer by invoking the procedure invoking procedure. It should be noted that the RESET procedure does not alter the state of either the relay states register of the TESTST register. 
     The executive is the main working procedure of the transceiver decoder. It is entered upon completion of the powerup procedure. Once the executive has been invoked, the only exit from the endless loop of the executive is via a reset (which would occur on power up/watchdog or operator initiated manual button reset). However, it is possible for the activity controlled by the executive to be suspended for a brief interval of time in order to service either the internal timer interrupt or an external interrupt indicating an overcurrent detection for the relay transceiver. It should be noted that the internal timer is set for a 6 millisecond interval and is always active. 
     FIG. 43 describes the EXEC executive routine used by the relay transceiver. The stack is reset and the working set of registers selected. Following this, the watchdog timer is recharged by issuing 10 strobes to the appropriate hardware. At this point, a receiver service is performed in order to input any possible data from the data line by invoking the previously described RCVSRV routine (in Miller &#39;414). On completion of this task, the DECODE process is invoked in order to decode any received data and to perform the desired actions. Following the decode of data a transmitter service is performed in order to output any possible data to the data line by calling the routine XMTSRV (described in Miller &#39;414). Next a relay service is invoked in order to update any desired relays by the RLYSRV subroutine. Finally, the module is reidentified in order to keep the transceiver address and jumper registers set to the most current position (it is possible to change the jumper or address configuration at any time). On completion of the MODIDN process, the executive continues to recharge the watchdog timer and invoke the 5 main subroutines until such time that the microprocessor is reset due to a powerup, watchdog or operator initiated button reset. 
     FIG. 44 describes the module identification routine used by the relay TRD. Since each transceiver decoder has a user selectable address to which it will respond as well as user and manufacturing installed jumpers which configure the method in which the transceiver decoder operates, the module identification routine is necessary in order to input the desired address and jumper configurations for subsequent later action and processing by the TRD. On entry to the MODIDN procedure, a test is performed to determine if either relays are being serviced or if the data line is active. If so, then the MODIDN process aborts as indicated. (It would not be desirable to reidentify the module due to the lengthy process involved if the data line was active. Also, due to the multiplexed time sharing nature of the address input and relay driver hardware, to attempt to identify the module while servicing relays would result in improper action on the relays themselves.) If, on the other hand, no current data line or relay activity was indicated, then the source and sink drivers would then be turned to their OFF or no current condition. The jumper hardward would be enabled for input and the A8JUMP register would be set to the value obtained by inputting the jumper configuration. The jumper input hardware is then disabled in order to reduce power consumption and a flag is set indicating a one or two address TRD based on the configuration of the size jumper. A temporary register is then established and cleared and an indication is made to input 8 bits of address data. Beginning with the loop on FIG. 44, the temporary register is rotated one bit position to the left in order to position its contents for the next address bit to be input. Following this, an input word is fetched from a table of values described in the address input multiplexing table based on the current bit number. The address multiplexer hardware is then enabled and a single bit of address data is input. This address bit is isolated and &#34;ORed&#34; with other bits in the temporary register. The updated temporary is then saved and a test is performed to determine if all bits have been input. This procedure of rotating the temporary, selecting an output word to enable the proper address multiplexer, inputting the bit and merging it with a temporary continues until such time that all bits have been input. Once all address bits are in, a test is made to determine if the device is a single address TRD. If not, then bit DB0 of the temporary is cleared. (A two address device will respond to two addresses. The even address, i.e., when DB0 equals 0 corresponds to Bank 0; the odd address when DB1 equals 1 corresponds to Bank 1.) On the other hand, if the device was a single address TRD, then DB0 would not be altered and the resulting address could be either even or odd. ADRLOW is then set equal to the 8 least significant address bits contained in the temporary and then the address multiplex hardware is turned off. This completes the module identification process which then returns to the invoking utility. 
     As mentioned above, the transceiver decoder has a continuously running internal 6 millisecond timer which is used to sequence desired actions. The timer is an internal programmable device which generates a timer interrupt whenever a programmed register has been incremented to a 0 value. This timer runs continuously and is disabled only when being serviced or updated. 
     FIG. 45 describes the timer interrupt service routine TIMINT. The purpose of this routine is to service a timer interrupt which occurs every 6 milliseconds and to increment by 1 an elapsed timer counter. On detection of a timer interrupt, the timer is stopped and the timer registers are selected (this is Register Set 1 of processor 300). The current accumulator value is saved in order to free the accumulator for other usages and the 6 millisecond timer value is fetched. Following this, the timer is initialized for the next 6 millisecond interrrupt and the accumulator is restored to its value on entry to the TIMINT procedure. The elapsed timer counter is then incremented by 1 and the internal hardware timer flag is cleared in case it remains set. Upon exit from the timer interrupt service procedure, the previously active working register bank is restored (this is the standard register bank or register bank 0 of processor 300). 
     The elapsed timer is continuously updated by the 6 millisecond timer interrupts. One or more additional timers can be driven off this elapsed time counter in such a way that they may be maintained current by summing in the elapsed time counts. This is the responsibility of the TIMSRV procedure described in FIG. 46. On entry to the TIMSRV process the timer interrupt is disabled and the bank of timer registers are selected. Timer 0 is then set equal to the initial value of timer 0 plus the elapsed timer counter. The elapsed timer counter is then cleared and a test is made of the internal hardware timer flag to determine if it was set. If so, an immediate branch is taken to the TIMINT procedure (the internal timer flag would be set if a timer interrupt occurred coincidentally with the entry to the TIMSRV process). If the timer interrupt flag was not set, then the working register bank would be restored and the procedure would complete and return to the invoking process. It should be noted that the TIMSRV process is asynchronous of the timer interrupts and could be entered at any time. A maximum delay of up to 256 of the 6 millisecond timer counts could expire before losing accuracy in the timer 0 counter. 
     A process exists, described in FIG. 47, called CLRST0 for initializing and starting the timer 0 counter. The timer bank of registers is selected and the counts needed for the 6 millisecond interrupt duration are initialized. Following this, the timer is started by calling the TIMINT process. Next, the elapsed timer and timer 0 are both cleared and set equal to 0. Finally, the timer interrupt is enabled and on exit from the routine the working bank of registers is restored. 
     As described above, as part of the powerup procedure of the relay transceiver, a test is performed to determine if the reset initiating the powerup was manually invoked via an operator depressed button. If that was the case, then a procedure called RLYTST (FIG. 8) is invoked in order to test the mechanically latching relays associated with the TRD. The relay test procedure allows for three modes of testing relays. Due to the single button (i.e., the reset button) used for initiating the relay test functions, a somewhat involved sequence of actions must take place in order to change from one mode to another. The three modes of relay testing are as follows: A11 ON/A11 OFF, individual relay test and automatic relay test. In the first case, an assumption is made that the transceiver decoder was last reset at some interval in the past greater than 25 seconds. If the operator depresses the reset button and then releases it (for approximately one second) one of two actions will take place. If any relay on the transceiver decoder is in an OFF position, then all relays on the transceiver decoder will be turned ON. On the other hand, if all relays on the transceiver were already OFF, then depressing the reset button momentarily would cause all relays to turn to the ON condition. It is possible to alternate between two possible states by allowing at least 25 seconds to transpire between actuations of the reset button. This mode of testing might also be utilized by a building operator in order to turn all loads ON or OFF as desired in the emergency condition that might result from a failure of a controlling device. 
     The second mode of relay test is known as the individual relay test. This function is actuated by multiple depressions of the reset button the transceiver decoder was last reset in an interval of time no less than 25 seconds. The first depression of the reset button will cause all relays to turn ON or OFF as described above. However, any subsequent actuations of the reset button by the operator that occur less than 25 seconds apart will cause entry to the individual relay test. In this mode, a single relay will be turned ON and all other relays OFF. Every subsequent action of the reset button will cause the next relay to go ON and all others to go OFF. This action will continue from relay #1 to #16, in order, for each of the two possible banks of relays. (If the device is a two bank TRD, then relays 1 to 16 of the low address bank will cycle first followed by relays 1 to 16 of the high address bank.) The individual relay actuations will continue until such time that the operator allows the transceiver decoder to remain idle for a period of time greater than 25 seconds. (No reset button acutations.) It should be noted that this mode of testing would be useful during the installation of a transceiver decoder for testing individual circuit actuations. 
     The final test mode is the automatic test mode. Once again it is assumed that the transceiver decoder has been inactive for a period of at least 25 seconds. To enter the automatic test cycle, the operator must depress and hold the reset button for a period in excess of 10 seconds. On the initial &#34;make&#34; actuation of the reset switch the TRD will turn all relays ON or OFF (depending on their current state) as described for the first test mode. At the end of the 10 second period, the relays will begin to cycle automatically, in order, from relay 1 to 16 of the first bank followed by relays 1 to 16 of the second bank, if present. The button need not be held beyond the point that this automatic cycling begins. However, to continue for another pass of the automatic cycle, it would be necessary to again depress and hold the reset button before the last relay is cycled. If this is the case then another pass will take place up to a maximum of three passes. At that point, the machine will exit the relay test procedure and begin normal activities. (This is done in order to avoid a failure mechanism in which the reset button would remain in its closed condition, potentially locking out the transceiver decoder from programmable commands.) The automatic test cycle was intended for use by the Manufacturing facility in order to test the completed assembly of the transceiver decoder. 
     It should be noted that on completion of any of the three relay test modes the transceiver decoder will transmit a Powerup status message indicating to a controlling device that the transceiver was reset and that the reset occurred due to a manual operator initiated button actuation. Because of this, a controlling device would then be able to reestablish the proper relay patterns for the transceiver decoder that were in effect before the device was manipulated by the operator. 
     FIG. 48 describes the first portion of the RLYTST routine which begins by setting the TRD STATUS register to show a reset and manual button entry. A test is then performed to determine if the register TESTST (the status register for the relay test module) is not equal to 0. If this condition is met, then the process continues at Connector B of FIG. 49. On the other hand, if TESTST was equal to 0, then a test is made of the relay states register to determine if it is not equal to 0. If the relay test register is not equal to 0, then a test is made to determine if all relays are ON. If not, then the process continues as indicated on the diagram. If not, then the process continues as indicated on the diagram. Otherwise, a desire to turn all relays OFF is indicated and the process continues as indicated on the diagram. On the other hand, if the relay states register was equal to 0 (indicating that all relays were currently OFF) then it is desirable to turn all relays ON and that is so indicated. Following this, the procedure INSTA0 is invoked in order to install the desired delay state. A test is then performed to determine if the reset button is still being held by the operator. If not, then the process continues at Connector E of FIG. 49. Otherwise, if the button is still held, then the 10 second delay is entered. It should be noted that there are two possible ways to exit this 10 second delay. One would be by completing the 10 second delay which would imply that the reset button was still being held. The other would be if the reset button was released and depressed again. This would cause new entry through the beginning of the RLYTST routine until such time that the button is detected to be no longer depressed. (The inherent delay required to install 16 to 32 relays yields enough time for the operator to depress and release the button in order for it to be detected on the next pass through the RLYTST procedure. It is for this reason that it is essential that the operator depress and release the button during the first or second test mode before the last relay is updated. This corresponds to approximately a one second button depression. If this is not the case, then at the conclusion of the 10 second delay, the test will assume to be in automatic, all relays will turn OFF and the process will abort.) At the end of the 10 second delay, an automatic test is indicated for relay 0 pass 0. Following this, at Connector A, all relays are turned OFF by the INSTA0 process. The relay number is then set equal to 0 and a test is made to determine if the last pass is complete. If so, the process continues at Connector C. Otherwise, a further test is performed to determine if the button is still depressed. If not, then the process continues at Connector C. Otherwise, it continues at Connector B of FIG. 49. 
     The relay test module continues at Connector B of FIG. 49 where a desire to turn OFF all relays except the relay number to be turned ON is indicated and then installed by the INSTAL process. Following this, a test is made to determine if the first bank of 16 relays has completed processing. If not, then a further test is performed to determine if the last bank of 16 relays has completed processing. If so, then the process continues at Connector D. If neither the first bank nor the last bank of 16 relays has completed processing then the procedure continues as indicated on the diagram. However, if the first bank of 16  relays had completed processing then a test is performed to determine if the device was a single address TRD. If so, a branch is taken to Connector D. Otherwise, the relay number is incremented and a test is made to determine if the individual test mode flag is ON. If not, then the process continues the loop of automatically cycling all relays until the end of either the first or second bank is detected. On the other hand, if an individual test mode was selected, then the process aborts through Connector C which returns. At Connector D, which is entered at the end of a pass of 16 or 32 relays, depending on the TRD size, a test is made of the individual relay test flag. If it is set, then the individual relay test flag is set and the relay number is set equal to 0, completing the process. On the other hand, if the individual relay test flag was not set, then the device must have been automatically cycling and the pass count is incremented with the process continuing at Connector A of FIG. 48. 
     FIG. 50 describes the procedure invoked in order to install the desired relay states. At entry to INSTA0, the routine will insure that all relays are turned OFF. At entry to INSTAL, all relays with the exception of one relay to be turned ON are turned OFF. A pointer is established to bank 0 working buffers and status registers for the relay service module. The SETUP routine is invoked in order to set up the working and status buffers as required by relay service. A check is then made to determine if the device is a single address TRD. If not, the same two steps of pointing to the working buffers and status registers for bank 1 and setting up the buffers by invoking the Setup procedure for bank 1 are repeated. Otherwise, in continuing with the process, a test is made to determine if there is any relay to turn ON. If so, then a bit corresponding to the relay number to turn ON is set in the desired state portion of the relay working buffer. Otherwise, a watchdog strobe is performed followed by the installation of the desired relay states by the RLYSRV process. Next a test is made to determine if the end of the relay service has been reached. If not, the pulsing of the watchdog strobe and invocation of the RLYSRV module continues until such time that the relay service has reached its conclusion. At this time, the relay module status registers are cleared and the installation procedure returns to the invoking process. 
     Finally, FIG. 51 describes the Setup procedure used to initialize the working register and relay module status register to their proper values for relay installation. The mask portion of the relay buffer is set to an all 1 value indicating a service requirement for all relays. The state portion of the working buffer is then cleared to 0 indicating an all OFF condition. Next an active relay service is indicated in the relay module status along with pass equals to 2 and relay number equals to 0. (It was decided to use the shorter interval of time for processing of relay cycles in order to shorten the length of time needed to make an entire pass while automatically cycling the relays.) This completes the Setup routine which then returns. 
     This completes the description of the Powerup, executive, reset and other miscellaneous modules. The Powerup routine provides for the following: a means of generating a Powerup/Status message for subsequent transmission to a monitoring or controlling device; a means of invoking a reset procedure to initialize I/O devices and internal registers; a means of initialing the watchdog reset heardware; a means of initializing the machine to a known internal state; a means of indicating a manually initiated reset action; and a means of invoking a relay test procedure. 
     The executive provides for: a means of periodically strobing a watchdog timer in order to indicate normal operation; a means of resetting the stack and working register bank in order to counteract any possible incorrect action due to spurious signals which may have altered the machine state; and a means of providing the functionality of the transceiver decoder by executing an executive loop of the desired functions forever. 
     The reset process provides for: a means of initializing I/O to a known condition; a means for initializing all desired memory registers to 0; a means of allowing the relay state register to retain its current value in the case of a relay TRD; a means of causing the receiver to resynchronize on a maximum line free timeout; a means of clearing the good and bad message counters to 0 values; a means of starting and clearing the proper timer counters; and a means of halting any current actions that might be pending in the transceiver decoder (such as relay processing in progress or messages awaiting decoding in the receiver buffer). 
     The timer routines provide for: a means of establishing a periodic 6 millisecond interval timer; a means for counting the timer interrupts and retaining a sum of the number of times the interrupt has occurred in an 8 bit elapsed timer counter; a means of providing one or more counters to which the elapsed time counter is added in order to provide for long intervals to be times; a means of clearing to 0 and restarting one or more timer counters; and a means of deferring until a convenient time the servicing of the elapsed time counter. 
     The module identifier provides for: a means of inputting a set of 8 user or manufacturing installed jumpers to dynamically or statically configure the transceiver decoder; a means of operating a multiplexer circuit in order to allow the inputting of 8 user selectable address lines; a means of identifying via a flag a one or two address transceiver decoder; a means of disabling the jumper input hardware in order to reduce power consumption; a means of multiplexing the address input circuit with the relay driver circuitry; a means of detecting and avoiding a conflict with the operation of the address multiplexer circuit and other external hardware; and a means of allowing the address inputs or mode selector jumpers to be dynamically varied by the user and detected and acted upon the transceiver decoder. 
     Finally, the relay test module provides for: a means of turning all relays ON or all relays OFF; a means of individually turning one relay ON while all others are turned OFF; and a means for automatically cycling each relay ON then OFF. 
     While the invention has been described in connection with what is presently considered to be the most practical and preferred embodiments, it is to be understood that the invention is not to be limited to the disclosed embodiments but on the contrary, is intended to cover various modifications and equivalent arrangements included within the spirit and scope of the appended claims which scope is to be accorded the broadest interpretation so as to encompass all such modifications and equivalent structures. 
     
         ______________________________________ENHANCED TRD RELAY MODULE ROMCODE - VER 2.7 - GEC PROPRIETARYALL DATA VALUES ARE IN HEXADECIMAL FORMATADDRESS   DATA         ADDRESS   DATA______________________________________.0..0..0..0.     15           .0..0..0.1                            E4.0..0..0.2     B.0.         .0..0..0.3                            88.0..0..0.4     FF           .0..0..0.5                            .0.4.0..0..0.6     11           .0..0..0.7                            D5.0..0..0.8     65           .0..0..0.9                            2F.0..0..0.A     62           .0..0..0.B                            55.0..0..0.C     2F           .0..0..0.D                            1E.0..0..0.E     16           .0..0..0.F                            1.0..0..0.1.0.     93           .0..0.11  89.0..0.12  FF           .0..0.13  D5.0..0.14  28           .0..0.15  43.0..0.16  .0.2         .0..0.17  28.0..0.18  15           .0..0.19  93.0..0.1A  35           .0..0.1B  D5.0..0.1C  FD           .0..0.1D  6E.0..0.1E  AD           .0..0.1F  BE.0..0.2.0.     .0..0.       .0..0.21  25.0..0. 22 16           .0..0.23  .0.7.0..0.24  93           .0..0.25  14.0..0.26  F6           .0..0.27  F2.0..0.28  91           .0..0.29  FB.0..0.2A  53           .0..0.2B  8F.0..0.2C  A1           .0..0.2D  B9.0..0.2E  56           .0..0.2F  B6.0..0.3.0.     33           .0..0.31  B9.0..0.32  5E           .0..0.33  FA.0..0.34  12           .0..0.35  37.0..0.36  19           .0..0.37  FB.0..0.38  47           .0..0.39  53.0..0.3A  .0.7         .0..0.3B  AD.0..0.3C  14           .0..0.3D  DC.0..0.3E  B9           .0..0.3F  54.0..0.4.0.     B6           .0..0.41  44.0..0.42  B9           .0..0.43  5C.0..0.44  B8           .0..0.45  4E.0..0.46  FA           .0..0.47  12.0..0.48  4D           .0..0.49  23.0..0.4A  .0.2         .0..0.4B  .0.4.0..0.4C  5.0.         .0..0.4D  F.0..0..0.4E  53           .0..0.4F  .0.1.0..0.5.0.     AF           .0..0.51  FA.0..0.52  53           .0..0.53  FC.0..0.54  4F           .0..0.55  A1.0..0.56  19           .0..0.57  FA.0..0.58  12           .0..0.59  5F.0..0.5A  F.0.         .0..0.5B  53.0..0.5C  .0.1         .0..0.5D  A1.0..0.5E  19           .0..0.5F  C8.0..0.6.0.     B6           .0..0.61  67.0..0.62  F.0.         .0..0.63  43.0..0.64  .0.1         .0..0.65  .0.4.0..0.66  68           .0..0.67  F.0..0..0.68  A1           .0..0.69  FA.0..0.6A  12           .0..0.6B  71.0..0.6C  FD           .0..0.6D  69.0..0.6E  17           .0..0.6F  .0.4.0..0.7.0.     74           .0..0.71  F9.0..0.72  .0.3         .0..0.73  .0.3.0..0.74  A8           .0..0.75  A9.0..0.76  FA           .0..0.77  12.0..0.78  92           .0..0.79  FD.0..0.7A  .0.3         .0..0.7B  .0.3.0..0.7C  AE           .0..0.7D  23.0..0.7E  8.0.         .0..0.7F  C8.0..0. 8.0.     6.0.         .0..0.81  EE.0..0.82  7F           .0..0.83  37.0..0.84  17           .0..0.85  A1.0..0.86  F8           .0..0.87  37.0..0.88  17           .0..0.89  69.0..0.8A  17           .0..0.8B  B8.0..0.8C  4F           .0..0.8D  B6.0..0.8E  9.0.         .0..0.8F  18.0..0.9.0.     A.0.         .0..0.91  83.0..0.92  14           .0..0.93  97.0..0.94  FF           .0..0.95  .0.4.0..0.96  85           .0..0.97  BF.0..0.98  .0..0.       .0..0.99  BE.0..0.9A  .0.4         .0..0.9B  C8.0..0.9C  F.0.         .0..0.9D  47.0..0.9E  14           .0..0.9F  A6.0..0.A.0.     F.0.         .0..0.A1  14.0..0.A2  A6           .0..0.A3  EE.0..0.A4  9B           .0..0.A5  83.0..0.A6  53           .0..0.A7  .0.F.0..0.A8  .0.3         .0..0.A9  B.0..0..0.AA  A3           .0..0.AB  2F.0..0.AC  E7           .0..0.AD  4F.0..0.AE  2F           .0..0.AF  83.0..0.B.0.     .0..0.       .0..0.B1  .0.1.0..0.B2  .0.1         .0..0.B3  .0..0..0..0.B4  .0.1         .0..0.B5  .0..0..0..0.B6  .0..0.       .0..0.B7  .0.1.0..0.B8  .0.1         .0..0.B9  .0..0..0..0.BA  .0..0.       .0..0.BB  .0.1.0..0.BC  .0..0.       .0..0.BD  .0.1.0..0.BE  .0.1         .0..0.BF  .0..0..0..0.C.0.     F.0.         .0..0.C1  C6.0..0.C2  CD           .0..0.C3  37.0..0.C4  17           .0..0.C5  6A.0..0.C6  A.0.         .0..0.C7  18.0..0.C8  F.0.         .0..0.C9  37.0..0.CA  7B           .0..0.CB  A.0..0..0.CC  83           .0..0.CD  6A.0..0.CE  A7           .0..0.CF  .0.4.0..0.D.0.     C6           .0..0.D1  97.0..0.D2  F.0.         .0..0.D3  67.0..0.D4  AB           .0..0.D5  A.0..0..0.D6  C8           .0..0.D7  F.0..0..0.D8  67           .0..0.D9  AA.0..0.DA  A.0.         .0..0.DB  83.0..0.DC  C6           .0..0.DD  E5.0..0.DE  AC           .0..0.DF  F.0..0..0.E.0.     A1           .0..0.E1  18.0..0.E2  19           .0..0.E3  EC.0..0.E4  DF           .0..0.E5  83.0..0.E6  B8           .0..0.E7  48.0..0.E8  .0.4         .0..0.E9  EC.0..0.EA  B8           .0..0.EB  46.0..0.EC  F.0.         .0..0.ED  .0.3.0..0.EE  .0.1         .0..0.EF  A.0..0..0.F.0.     18           .0..0.F1  F.0..0..0.F2  13           .0..0.F3  .0..0..0..0.F4  A.0.         .0..0.F5  83.0..0.F6  B9           .0..0.F7  52.0..0.F8  B6           .0..0.F9  FB.0..0.FA  19           .0..0.FB  F1.0..0.FC  83           .0..0.FD  B8.0..0.FE  4.0.         .0..0.FF  B9.0.1.0..0.     4E           .0.1.0.1  F.0..0.1.0.2  32           .0.1.0.3  35.0.1.0.4  D1           .0.1.0.5  12.0.l.0.6  26           .0.1.0.7  F1.0.1.0.8  72           .0.1.0.9  28.0.1.0.A  37           .0.1.0.B  52.0.1.0.C  26           .0.1.0.D  34.0.1.0.E  93           .0.1.0.F  96.0.11.0.  26           .0.111    BB.0.112    6.0.         .0.113    B8.0.114    44           .0.115    F.0..0.116    AD           .0.117    14.0.118    97           .0.119    FD.0.11A    DF           .0.11B    96.0.11C    26           .0.11D    34.0.11E    87           .0.11F    23.0.12.0.  .0.2         .0.121    14.0.122    DC           .0.123    FB.0.124    44           .0.125    A3.0.126    C4           .0.127    29.0.128    34           .0.129    93.0.12A    53           .0.12B    FE.0.12C    96           .0.12D    26.0.12E    BB           .0.12F    A.0..0.13.0.  F.0.         1.0.31    12.0.132    13           .0.133    24.0.134    11           .0.135    12.0.136    26           .0.137    18.0.138    F.0.         .0.139    F2.0.13A    6C           .0.13B    F1.0.13C    D.0.         .0.13D    12.0.13E    26           .0.13F    34.0.14.0.  93           .0.141    76.0.142    68           .0.143    53.0.144    FE           .0.145    96.0.146    26           .0.147    BB.0.148    8.0.         .0.149    F.0..0.14A    12           .0.14B    4E.0.14C    BB           .0.14D    4.0..0.14E    B8           .0.14F    4.0..0.15.0.  23           .0.151    F8.0.152    6E           .0.153    37.0.154    AE           .0.155    .0.3.0.156    FC           .0.157    E6.0.158    26           .0.159    AA.0.15A    23           .0.15B    8.0..0.15C    6.0.         .0.15D    18.0.15E    EE           .0.15F    5C.0.16.0.  96           .0.161    26.0.162    34           .0.163    87.0.164    18           .0.165    FA.0.166    24           .0.167    21.0.168    96           .0.169    26.0.16A    24           .0.16B    4C.0.16C    53           .0.16D    7E.0.16E    C6           .0.16F    81.0.17.0.  F.0.         .0.171    17.0.172    96           .0.173    26.0.174    18           .0.175    F.0..0.176    17           .0.177    96.0.178    26           .0.179    BB.0.17A    4.0.         .0.17B    76.0.17C    4E           .0.17D    BB.0.17E    C.0.         .0.17F    24.0.18.0.  4E           .0.181    18.0.182    F.0.         .0.183    96.0.184    26           .0.185    24.0.186    79           .0.187    B8.0.188    4.0.         .0.189    B9.0.18A    4A           .0.18B    F.0..0.18C    53           .0.18D    FC.0.18E    A1           .0.18F    18.0.19.0.  18           .0.191    19.0.192    83           .0.193    C9.0.194    18           .0.195    F.0..0.196    D1           .0.197    83.0.198    B8           .0.199    24.0.19A    F.0.         .0.19B    B8.0.19C    39           .0.19D    4.0..0.19E    96           .0.19F    D4.0.1A.0.  34           .0.1A1    E9.0.1A2    3A           .0.1A3    .0.A.0.1A4    B8           .0.1A5    4E.0.1A6    A.0.         .0.1A7    9A.0.1A8    8.0.         .0.1A9    A5.0.1AA    72           .0.1AB    AD.0.1AC    B5           .0.1AD    BF.0.1AE    .0..0.       .0.1AF    BE.0.1B.0.  .0.8         .0.1B1    FF.0.1B2    E7           .0.1B3    AF.0.1B4    23           .0.1B5    C7.0.1B6    6E           .0.1B7    A3.0.1B8    39           .0.1B9    .0.9.0.1BA    53           .0.1BB    1.0..0. 1BC   4F           .0.1BD    AF.0.1BE    EE           .0.1BF    B1.0.1C.0.  76           .0.1C1    C4.0.1C2    53           .0.1C3    FE.0.1C4    C8           .0.1C5    A.0..0.1C6    24           .0.1C7    E9.0.1C8    F.0.         .0.1C9    F4.0.1CA    F2           .0.1CB    F6.0.1CC    D1           .0.1CD    D5.0.1CE    D3           .0.1CF    D7.0.1D.0.  EF           .0.1D1    D.0..0.1D2    EE           .0.1D3    D.0..0.1D4    83           .0.1D5    34.0.1D6    E9           .0.1D7    B8.0.1D8    24           .0.1D9    BC.0.1DA    42           .0.1DB    B4.0.1DC    F1           .0.1DD    34.0.1DE    98           .0.1DF    B8.0.1E.0.  39           .0.1E1    B.0..0.1E2    .0.3         .0.1E3    B8.0.1E4    18           .0.1E5    B.0..0.1E6    .0..0.       .0.1E7    84.0.1E8    21           .0.1E9    23.0.1EA    FF           .0.1EB    .0.2.0.1EC    39           .0.1ED    83.0.1EE    BA           .0.1EF    4D.0.1F.0.  BB           .0.1F1    .0.2.0.1F2    BC           .0.1F3    .0.A.0.1F4    BD           .0.1F5    .0.2.0.1F6    44           .0.1F7    BB.0.1FA    8A           .0. 1FB   8.0..0.1FC    BB           .0.1FD    .0.F.0.1FE    EB           .0.1FF    FE.0.2.0..0.     56           .0.2.0.1  .0.A.0.2.0.2  EE           .0.2.0.3  .0..0..0.2.0.4  9A           .0.2.0.5  .0..0..0.2.0.6  EF           .0.2.0.7  .0.4.0.2.0.8  97           .0.2.0.9  83.0.2.0.A  BB           .0.2.0.B  .0.3.0.2.0.C  46           .0.2.0.D  .0..0..0.2.0.E  EB           .0.2.0.F  .0.C.0.21.0.  97           .0.211    A7.0.212    83           .0.213    BE.0.214    .0.4         .0.215    BF.0.216    3F           .0.217    34.0.218    D.0.         .0.219    8A.0.21A    8.0.         .0.21B    83.0.21C    B8           .0.21D    39.0.21E    F.0.         .0.21F    12.0.22.0.  2D           .0.221    46.0.222    2C           .0.223    B9.0.224    .0.3         .0.225    46.0.226    2C           .0.227    E9.0.228    25           .0.229    43.0.22A    .0.1         .0.22B    A.0..0.22C    83           .0.22D    32.0.22E    43           .0.22F    52.0.23.0.  33           .0.231    44.0.232    51           .0.233    72.0.234    41           .0.235    54.0.236    AE           .0.237    E6.0.238    2C           .0.239    32.0.23A    3F           .0.23B    23.0.23C    .0.8         .0.23D    44.0.23E    A3           .0.23F    54.0.24.0.  A8           .0.241    44.0.242    EC           .0.243    8A.0.244    8.0.         .0.245    56.0.246    2C           .0.247    BC.0.248    14           .0.249    BD.0.24A    .0.3         .0.24B    54.0.24C    D3           .0.24D    E6.0.24E    2C           .0.24F    44.0.25.0.  A8           .0.251    BC.0.252    .0.C         .0.253    B8.0.254    3A           .0.255    B4.0.256    F1           .0.257    BA.0.258    C8           .0.259    BB.0.25A    2.0.         .0.25B    34.0.25C    F2           .0.25D    F6.0.25E    A1           .0.25F    BE.0.26.0.  .0.4         .0.261    34.0.262    EE           .0.263    F6.0.264    A1           .0.265    B8.0.266    3A           .0.267    F.0..0.268    6A           .0.269    A.0..0.26A    18           .0.26B    F.0..0.26C    7B           .0.26D    A.0..0.26E    18           .0. 26F   F.0..0.27.0.  6C           .0.271    A.0..0.272    18           .0.273    F.0..0.274    7D           .0.275    A.0..0.276    EE           .0.277    61.0.278    B8           .0.279    3A.0.27A    BA           .0.27B    4A.0.27C    BB           .0.27D    .0.9.0.27E    14           .0.27F    C.0..0.28.0.  14           .0.281    D1.0.282    B8           .0.283    3C.0.284    BA           .0.285    28.0.286    BB           .0.287    .0.8.0.288    14           .0.289    C.0..0.28A    14           .0.28B    D1.0.28C    B8           .0.28D    3E.0.28E    FA           .0.28F    A.0..0.29.0.  18           .0.291    FB.0.292    A.0.         .0.293    14.0.294    D1           .0.295    18.0.296    1.0.         .0.297    B8.0.298    3B           .0.299    1.0..0.29A    B8           .0.29B    3D.0.29C    1.0.         .0.29D    23.0.29E    .0.4         .0.29F    44.0.2A.0.  A3           .0.2A1    23.0.2A2    .0.2         .0.2A3    B8.0.2A4    39           .0.2A5    4.0..0.2A6    A.0.         .0.2A7    83.0.2A8    27           .0.2A9    B8.0.2AA    39           .0.2AB    5.0..0.2AC    A.0.         .0.2AD    83.0.2AE    B8           .0.2AF    3A.0.2B.0.  F.0.         .0.2B1    AA.0.2B2    18           .0.2B3    F.0..0.2B4    AB           .0.2B5    18.0.2B6    F.0.         .0.2B7    AC.0.2B8    18           .0.2B9    F.0..0.2BA    AD           .0.2BB    FA.0.2BC    C6           .0.2BD    C2.0.2BE    46           .0.2BF    C9.0.2C.0.  EA           .0.2C1    BE.0.2C2    EB           .0.2C3    BE.0.2C4    23           .0.2C5    .0.1.0.2C6    97           .0.2C7    A7.0.2C8    83           .0.2C9    B8.0.2CA    .0.3         .0.2CB    56.0.2CC    BE           .0.2CD    E8.0.2CE    CB           .0.2CF    FA.0.2D.0.  96           .0.2D1    D3.0.2D2    1B           .0.2D3    FC.0.2D4    C6           .0.2D5    DA.0.2D6    56           .0.2D7    E.0..0.2D8    EC           .0.2D9    D6.0.2DA    ED           .0.2DB    D6.0.2DC    23           .0.2DD    .0.2.0.2DE    44           .0.2DF    C6.0.2E.0.  B8           .0.2E1    .0.3.0.2E2    46           .0.2E3    D6.0.2E4    E8           .0.2E5    E2.0.2E6    FC           .0.2E7    96.0.2E8    EA           .0.2E9    1D.0.2EA    97           .0.2EB    83.0.2EC    B9           .0.2ED    4.0..0.2EE    BE           .0.2EF    .0.6.0.2F.0.  BF           .0.2F1    8.0..0.2F2    BA           .0.2F3    C8.0.2F4    BB           .0.2F5    2.0..0.2F6    B8           .0.2F7    3C.0.2F8    F.0.         .0.2F9    AC.0.2FA    18           .0.2FB    F.0..0.2FC    AD           .0.2FD    54.0.2FE    BB           .0.2FF    E6.0.3.0..0.     .0.7         .0.3.0.1  64.0.3.0.2  3F           .0.3.0.3  54.0.3.0.4  AE           .0.3.0.5  F6.0.3.0.6  3B           .0.3.0.7  B8.0.3.0.8  3E           .0.3.0.9  FC.0.3.0.A  C6           .0.3.0.B  28.0.3.0.C  37           .0.3.0.D  17.0.3.0.E  6.0.         .0.3.0.F  18.0.31.0.  FD           .0.311    37.0.312    7.0.         .0.313    FF.0.314    67           .0.315    AF.0.316    E6           .0.317    .0.3.0.318    A1           .0.319    19.0.31A    BF           .0.31B    8.0..0.31C    54           .0.31D    AE.0.31E    F6           .0.31F    2C.0.32.0.  EE           .0.321    .0.7.0.322    23           .0.323    F7.0.324    54           .0.325    A9.0.326    .0.4         .0.327    E6.0.328    6.0.         .0.329    A7.0.32A    64           .0.32B    .0.F.0.32C    12           .0.32D    32.0.32E    14           .0.32F    E6.0.33.0.  44           .0.331    A8.0.332    23           .0.333    FC.0.334    6E           .0.335    F6.0.336    26           .0.337    23.0.338    1.0.         .0.339    44.0.33A    A3           .0.33B    32.0.33C    2E           .0.33D    .0.4.0.33E    E6           .0.33F    32.0.34.0.  3.0.         .0.341    23.0.342    .0.2         .0.343    54.0.344    A3           .0.345    .0.4.0.346    E6           .0.347    B8.0.348    51           .0.349    B9.0.34A    39           .0.34B    F1.0.34C    C6           .0.34D    54.0.34E    B.0.         .0.34F    .0..0..0.35.0.  23           .0.351    .0.1.0.352    44           .0.353    A3.0.354    74           .0.355    AD.0.356    96           .0.357    92.0.358    F.0.         .0.359    52.0.35A    BA           .0.35B    32.0.35.0.  7F           .0.35D    12.0.35E    77           .0.35F    B8.0.36C    .0.4         .0.361    B9.0.362    3D           .0.363    27.0.364    21           .0.365    AD.0.366    C6           .0.367    69.0.368    CD           .0.369    C9.0.36A    27           .0.36B    21.0.36C    AC           .0.36D    BA.0.36E    CA           .0.36F    BB.0.37.0.  .0.8         .0.371    14.0.372    C.0.         .0.373    BA.0.374    .0.1         .0.375    64.0.376    85           .0.377    BC.0.378    F4           .0.379    BD.0.37A    .0.2         .0.37B    BA.0.37C    .0.3         .0.37D    64.0.37E    85           .0.37F    BC.0.38.0.  3F           .0.381    BD.0.382    .0.4         .0.383    BA.0.384    .0.7         .0.385    54.0.386    D3           .0.387    E6.0.388    4E           .0.389    B8.0.38A    51           .0.38B    F.0..0.38C    4A           .0.38D    A.0..0.38E    74           .0.38F    AD.0.39.0.  C6           .0.391    BA.0.392    9A           .0.393    .0..0..0.394    14           .0.395    F6.0.396    74           .0.397    DE.0.398    F6           .0.399    A1.0.39A    B8           .0. 39B   51.0.39C    27           .0.39D    A.0..0.39E    A1           .0.39F    44.0.3A.0.  13           .0.3A1    B8.0.3A2    51           .0.3A3    F1.0.3A4    F2           .0.3A5    A8.0.3A6    64           .0.3A7    4E.0.3A8    43           .0.3A9    .0.1.0.3AA    A1           .0.3AB    64.0.3AC    4E           .0.3AD    F.0..0.3AE    B9           .0.3AF    53.0.3B.0.  85           .0.3B1    76.0.3B2    B6           .0.3B3    51.0.3B4    96           .0.3B5    BB.0.3B6    95           .0.3B7    C9.0.3B8    F.0.         .0.3B9    51.0.3BA    83           .0.3BB    12.0.3BC    BA           .0.3BD    C9.0.3BE    F1           .0.3BF    19.0.3C.0.  12           .0.3C1    B6.0.3C2    F1           .0.3C3    32.0.3C4    BA           .0.3C5    C9.0.3C6    F1           .0.3C7    19.0.3C8    32           .0.3C9    B6.0.3CA    F1           .0.3CB    83.0.3DE    BD           .0.3DF    .0.7.0.3E.0.  BE           .0.3E1    .0.8.0.3E2    BF           .0.3E3    CA.0.3E4    34           .0.3E5    D.0..0.3E6    BE           .0.3E7    29.0.3E8    BF           .0.3E9    29.0.3EA    34           .0.3EB    FA.0. 3EC   F6           .0.3ED    BA.0.3EE    ED           .0.3EF    E6.0.3F.0.  BE           .0.3F1    .0.4.0.3F2    BF           .0.3F3    3F.0.3F4    34           .0.3F5    D.0..0.3F6    B8           .0.3F7    4F.0.3F8    B6           .0.3F9    FB.0.3FA    18           .0.3FB    F.0..0.3FC    AD           .0.3FD    B8.0.3FE    54           .0.3FF    B6.0.4.0..0.     .0.3         .0.4.0.1  B8.0.4.0.2  5C           .0.4.0.3  BC.0.4.0.4  .0.8         .0.4.0.5  F.0..0.4.0.6  AA           .0.4.0.7  FA.0.4.0.8  77           .0.4.0.9  AA.0.4.0.A  F2           .0.4.0.B  12.0.4.0.C  BE           .0.4.0.D  1B.0.4.0.E  BF           .0.4.0.F  29.0.41.0.  84           .0.411    16.0.412    BE           .0.413    37.0.414    BF           .0.415    29.0.416    34           .0.417    FA.0.418    F6           .0.419    2.0..0.41A    EC           .0.41B    .0.7.0.41C    18           .0.41D    ED.0.41E    .0.3         .0.41F    97.0.42.0.  83           .0.421    D5.0.422    BF           .0.423    83.0.424    14           .0. 425   .0.7.0.426    BD           .0.427    .0..0..0.428    BE           .0.429    .0..0..0.42A    25           .0.42B    93.0.42C    BB           .0.42D    .0..0..0.42E    23           .0.42F    .0.1.0.43.0.  5.0.         .0.431    96.0.432    6C           .0.433    84.0.434    3E           .0.435    23.0.436    F1           .0.437    6B.0.438    F6           .0.439    6E.0.43A    .0.3         .0.43B    .0.8.0.43C    F6           .0.43D    56.0.43E    FB           .0.43F    .0.3.0.44.0.  79           .0.441    A3.0.442    5.0.         .0.443    96.0.444    49           .0.445    BB.0.446    .0.7         .0.447    84.0.448    56           .0.449    1B.0.44A    FB           .0.44B    72.0.44C    55           .0.44D    .0.3.0.44E    71           .0.44F    A3.0.45.0.  5.0.         .0.451    C6.0.452    49           .0.453    84.0.454    6C           .0.455    CB.0.456    18           .0.457    FB.0.458    53           .0.459    .0.7.0.45A    .0.3         .0.45B    79.0.45C    A3           .0.45D    5.0..0.45E    C6           .0.45F    6E.0.46.0.  1B           .0.461    FB.0.462    92           .0.463    6E.0.464    53           .0.465    .0.7.0.466    .0.3         .0.467    71.0.468    A3           .0.469    5.0..0.46A    C6           .0.46B    6.0..0.46C    97           .0.46D    83.0.46E    97           .0.46F    A7.0.47.0.  83           .0.471    .0.1.0.472    .0.2         .0.473    .0.4.0.474    .0.8         .0.475    1.0..0.476    2.0.         .0.477    4.0..0.478    8.0.         .0.479    FE.0.47A    FC           .0.47B    F8.0.47C    F.0.         .0.47D    E.0..0.47E    C.0.         .0.47F    8.0..0.48.0.  FF           .0.481    72.0.482    85           .0.483    84.0.484    86           .0.485    18.0.486    53           .0.487    .0.7.0.488    .0.3         .0.489    71.0.48A    A3           .0.48B    83.0.48C    94           .0.48D    81.0.48E    4.0.         .0.48F    A.0..0.49.0.  83           .0.491    94.0.492    81           .0.493    37.0.494    5.0.         .0.495    A.0..0.496    83           .0.497    53.0.498    .0.C         .0.499    77.0. 49A   77           .0.49B    .0.3.0.49C    A4           .0.49D    A3.0.49E    B6           .0.49F    A1.0.4A.0.  47           .0.4A1    .0.2.0.4A2    .0.5         .0.4A3    83.0.4A4    EF           .0.4A5    DF.0.4A6    BF           .0.4A7    7F.0.4A8    53           .0.4A9    .0.3.0.4AA    .0.3         .0.4AB    B3.0.4AC    A3           .0.4AD    ED.0.4AE    B.0.         .0.4AF    77.0.4B.0.  39           .0.4B1    1D.0.4B2    83           .0.4B3    FD.0.4B4    F7           .0.4B5    DF.0.4B6    7F           .0.4B7    F4.0.4B8    E9           .0.4B9    F.0..0.4BA    12           .0.4BB    C.0..0.4BC    52           .0.4BD    DB.0.4BE    84           .0.4BF    6E.0.4C.0.  18           .0.4C1    F.0..0.4C2    53           .0.4C3    .0.F.0.4C4    AB           .0.4C5    F.0..0.4C6    47           .0.4C7    53.0.4C8    .0.F         .0.4C9    AC.0.4CA    B8           .0.4CB    24.0.4CC    23           .0.4CD    .0.5.0.4CE    B6           .0.4CF    D2.0.4D.0.  23           .0.4D1    .0.9.0.4D2    A.0.         .0.4D3    B8.0.4D4    31           .0.4D5    B6.0.4D6    D9           .0.4D7    B8.0.4D8    35           .0.4D9    97.0.4DA    83           .0.4DB    36.0.4DC    .0.1         .0.4DD    18.0.4DE    B.0.         .0.4DF    9.0..0.4E.0.  B9           .0.4E1    31.0.4E2    B8           .0.4E3    29.0.4E4    B6           .0.4E5    EA.0.4E6    B9           .0.4E7    35.0.4E8    B8           .0.4E9    2D.0.4EA    23           .0.4EB    .0.4.0.4EC    14           .0.4ED    DC.0.4EE    BB           .0.4EF    .0..0..0.4F.0.  BC           .0.4F1    .0.9.0.4F2    84           .0.4F3    CA.0.5.0..0.     B8           .0.5.0.1  24.0.5.0.2  F.0.         .0.5.0.3  12.0.5.0.4  13           .0.5.0.5  85.0.5.0.6  95           .0.5.0.7  94.0.5.0.8  B7           .0.5.0.9  E6.0.5.0.A  1B           .0.5.0.B  76.0.5.0.C  12           .0.5.0.D  85.0.5.0.E  94           .0.5.0.F  B7.0.51.0.  E6           .0.511    1B.0.512    83           .0.513    85.0.514    72           .0.515    17.0.516    95           .0.517    94.0.518    B7           .0.519    F6.0.51A    7A           .0.51B    FC.0.51C    AF           .0.51D    72.0.51E    2E           .0.51F    14.0.52.0.  1A           .0.521    23.0.522    .0.1         .0.523    E7.0.524    EF           .0.525    23.0.526    B9           .0.527    1D.0.528    37           .0.529    17.0.52A    61           .0.52B    F6.0.52C    38           .0.52D    83.0.52E    FC           .0.52F    53.0.53.0.  .0.7         .0.531    AC.0.532    94           .0.533    2C.0.534    F6           .0.535    66.0.536    A4           .0.537    3C.0.538    94           .0.539    35.0.53A    F6           .0.53B    66.0.53C    18           .0.53D    18.0.53E    BD           .0.53F    .0..0..0.54.0.  5.0.         .0.541    C6.0.542    44           .0.543    1D.0.544    B4           .0.545    8F.0.546    FB           .0.547    94.0.548    A8           .0.549    FB.0.54A    94           .0.54B    97.0.54C    B8           .0.54D    2.0..0.54E    B6           .0.54F    52.0.55.0.  B8           .0.551    22.0.552    FB           .0.553    ED.0.554    59           .0.555    94.0.556    8C           .0.557    A4.0.558    5B           .0.559    94.0.55A    91           .0. 55B   94.0.55C    21           .0.55D    F4.0.55E    E9           .0.55F    18.0.56.0.  F.0.         .0.561    53.0.562    7.0.         .0.563    6B.0.564    A.0.         .0.565    83.0.566    B4           .0.567    8F.0.568    FC           .0.569    53.0.56A    .0.3         .0.56B    17.0.56C    52           .0.56D    7A.0.56E    43           .0.56F    .0.8.0.57.0.  47           .0.571    F4.0.572    E9           .0.573    18.0.574    A.0.         .0.575    76.0.576    65           .0.577    95.0.578    84           .0.579    B7.0.57A    F4           .0.57B    E9.0.57C    F.0.         .0.57D    53.0.57E    .0.4         .0.57F    A.0..0.58.0.  B8           .0.581    24.0.582    B.0.         .0.583    .0..0..0.584    14           .0.585    F6.0.586    F1           .0.587    96.0.588    75           .0.589    BB.0.58A    .0.4         .0.58B    B4.0.58C    A4           .0.58D    A4.0.58E    75           .0.58F    15.0.59.0.  26           .0.591    97.0.592    D5           .0.593    28.0.594    43           .0.595    .0.4.0.596    28           .0.597    34.0.598    E9           .0.599    93.0.59A    B8           .0.59B    64.0.59C    B.0.         .0.59D    27.0.59E    BA           .0.59F    28.0.5A.0.  23           .0.5A1    1.0..0.5A2    C4           .0.5A3    E4.0.5A4    BA           .0.5A5    2C.0.5A6    B8           .0.5A7    18.0.5A8    F.0.         .0.5A9    37.0.5AA    32           .0.5AB    AE.0.5AC    BA           .0.5AD    6.0..0.5AE    B8           .0.5AF    2.0..0.5B.0.  B6           .0.5B1    B4.0.5B2    B8           .0.5B3    22.0.5B4    C4           .0.5B5    DA.0.5B6    14           .0.5B7    25.0.5B8    FB           .0.5B9    52.0.5BA    EB           .0.5BB    B8.0.5BC    39           .0.5BD    F.0..0.5BE    53           .0.5BF    C.0..0.5C.0.  D3           .0.5C1    C.0..0.5C2    C6           .0.5C3    EB.0.5C4    BA           .0.5C5    C8.0.5C6    BB           .0.5C7    2.0..0.5C8    BC           .0.5C9    .0.1.0.5CA    BD           .0.5CB    .0.1.0.5CC    54           .0.5CD    BB.0.5CE    74           .0.5CF    92.0.5D.0.  F6           .0.5D1    E5.0.5D2    46           .0.5D3    D8.0.5D4    BB           .0.5D5    .0.F.0.5D6    EB           .0.5D7    D6.0.5D8    B8           .0.5D9    3C.0.5DA    F.0.         .0.5DB    AC.0.5DC    18           .0.5DD    F.0..0.5DE    AD           .0.5DF    54.0.5E.0.  D3           .0.5E1    E6.0.5E2    E5           .0.5E3    54.0.5E4    A8           .0.5E5    14.0.5E6    EA           .0.5E7    B8.0.5E8    39           .0.5E9    C4.0.5EA    29           .0.5EB    C4.0.5EC    9B           .0.5ED    23.0.5EE    FF           .0.5EF    A4.0.5F.0.  F3           .0.5F1    23.0.5F2    .0..0.       .0.5F3    A.0..0.5F4    18           .0.5F5    EC.0.5F6    F3           .0.5F7    83.0.6.0..0.     B8           .0.6.0.1  39.0.6.0.2  F.0.         .0.6.0.3  37.0.6.0.4  92           .0.6.0.5  29.0.6.0.6  14           .0.6.0.7  FD.0.6.0.8  B9           .0.6.0.9  4E.0.6.0.A  F1           .0.6.0.B  37.0.6.0.C  AF           .0.6.0.D  B9.0.6.0.E  4A           .0.6.0.F  F.0..0.61.0.  53           .0.611    C.0..0.612    C6           .0.613    29.0.614    85           .0.615    F2.0.616    18           .0.617    95.0.618    F.0.         .0.619    37.0.61A    B2           .0.61B    44.0.61C    FF           .0.61D    52.0.61E    29           .0.61F    F1.0.62.0.  D3           .0.621    1C.0.622    C6           .0.623    85.0.624    F1           .0.625    D3.0.626    8C           .0.627    C6.0.628    2D           .0.629    23.0.62A    .0.F         .0.62B    44.0.62C    A9           .0.62D    19.0.62E    F1           .0.62F    D3.0.63.0.  F.0.         .0.631    C6.0.632    6F           .0.633    F1.0.634    D3           .0.635    E1.0.636    C6           .0.637    73.0.638    F1           .0.639    D3.0.63A    B4           .0.63B    C6.0.63C    7F           .0.63D    F1.0.63E    D3           .0.63F    69.0.64.0.  C6           .0.641    7F.0.642    C4           .0.643    29.0.644    F1           .0.645    77.0.646    77           .0.647    C6.0.648    FE           .0.649    .0.7.0.64A    C6           .0.64B    57.0.64C    .0.7         .0.64D    C6.0.64E    5B           .0.64F    .0.7.0.65.0.  C6           .0.651    85.0.652    .0.7         .0.653    C6.0.654    7B           .0.655    C4.0.656    29           .0.657    BB.0.658    .0.1         .0.659    C4.0.65A    5D           .0.65B    BB.0.65C    .0.4         .0.65D    19.0.65E    F1           .0.65F    C6.0.66.0.  D8           .0.661    .0.7.0.662    C6           .0.663    DE.0.664    .0.7         .0.665    C6.0.666    E8           .0.667    .0.7.0.668    C6           .0.669    FC.0.66A    .0.7         .0.66B    96.0.66C    29           .0.66D    A4.0.66E    A4           .0.66F    19.0.67.0.  F1           .0.671    C4.0.672    77           .0.673    19.0.674    F1           .0.675    43.0.676    8.0.         .0.677    .0.7.0.678    AA           .0.679    C4.0.67A    B6           .0.67B    19.0.67C    F1           .0.67D    C4.0.67E    78           .0.67F    BB.0.68.0.  21           .0.681    BA.0.682    A9           .0.683    A4.0.684    A6           .0.685    B8.0.686    18           .0.687    B.0..0.688    .0..0.       .0.689    D4.0.68A    AB           .0.68B    BC.0.68C    .0.2         .0.68D    B4.0.68E    ED           .0.68F    F1.0.69.0.  43           .0.691    .0.4.0.692    A1           .0.693    F8.0.694    A9           .0.695    B8.0.696    4B           .0.697    23.0.698    .0.2         .0.699    14.0.69A    DC           .0.69B    14.0.69C    EA           .0.69D    B8.0.69E    39           .0.69F    F.0..0.6A.0.  B6           .0.6A1    A6.0.6A2    53           .0.6A3    7F.0.6A4    C4           .0.6A5    A8.0.6A6    53           .0.6A7    BF.0.6A8    A.0.         .0.6A9    C4.0.6AA    .0.8         .0.6AB    B8.0.6AC    29           .0.6AD    B9.0.6AE    25           .0.6AF    B6.0.6B.0.  B5           .0.6B1    B8.0.6B2    2D           .0.6B3    B9.0.6B4    27           .0.6B5    83.0.6B6    D4           .0.6B7    AB.0.6B8    F1           .0.6B9    52.0.6BA    C4           .0.6BB    43.0.6BC    .0.4         .0.6BD    A1.0.6BE    BC           .0.6BF    .0.2.0.6C.0.  B4           .0.6C1    F1.0.6C2    C8           .0.6C3    C8.0.6C4    FA           .0.6C5    94.0.6C6    8C           .0.6C7    FA.0.6C8    B8           .0.6C9    2B.0.6CA    B6           .0.6CB    CE.0.6CC    B8           .0.6CD    2F.0.6CE    F2           .0.6CF    D4.0.6D.0.  94           .0.6D1    91.0.6D2    C4           .0.6D3    9B.0.6D4    94           .0.6D5    8C.0.6D6    C4           .0.6D7    9B.0.6D8    D4           .0.6D9    EE.0.6DA    23           .0.6DB    2.0..0.6DC    C4           .0.6DD    E4.0.6DE    B8           .0.6DF    3A.0.6E.0.  BA           .0.6E1    2.0..0.6E2    23           .0.6E3    4.0..0.6E4    4B           .0.6E5    AB.0.6E6    A4           .0.6E7    B6.0.6E8    B8           .0.6E9    46.0.6EA    BA           .0.6EB    24.0.6EC    C4           .0.6ED    E2.0.6EE    BA           .0.6EF    18.0.6F.0.  B8           .0.6F1    65.0.6F2    B9           .0.6F3    18.0.6F4    F1           .0.6F5    A.0..0.6F6    C8           .0.6F7    B9.0.6F8    4E           .0.6F9    F1.0.6FA    A.0.         .0.6FB    83.0.6FC    A4           .0.6FD    9A.0.6FE    24           .0.6FF    D5.0.7.0..0.     B1           .0.7.0.1  .0.9.0.7.0.2  F.0.         .0.7.0.3  96.0.7.0.4  32           .0.7.0.5  B8.0.7.0.6  2.0.         .0.7.0.7  F.0..0.7.0.8  96           .0.7.0.9  .0.E.0.7.0.A  97           .0.7.0.B  A7.0. 7.0.C E4           .0.7.0.D  17.0.7.0.E  37           .0.7.0.F  96.0.71.0.  .0.A         .0.711    18.0.712    F.0.         .0.713    37.0.714    96           .0.715    .0.A.0.716    97           .0.717    F4.0.718    5D           .0.719    B8.0.71A    66           .0.71B    BC.0.71C    64           .0.71D    36.0.71E    5A           .0.71F    F4.0.72.0.  A4           .0.721    B.0..0.722    .0..0.       .0.723    97.0.724    F4           .0.725    5D.0.726    B8           .0.727    66.0.728    F.0.         .0.729    53.0.72A    6.0.         .0.72B    A.0..0.72C    D3           .0.72D    6.0..0.72E    C6           .0.72F    5C.0.73.0.  36           .0.731    5C.0.732    B8           .0.733    66.0.734    F.0.         .0.735    53.0.736    1F           .0.737    17.0.738    AA           .0.739    97.0.73A    F4           .0.73B    5F.0.73C    B8           .0.73D    66.0.73E    F.0.         .0.73F    53.0.74.0.  1F           .0.741    D3.0.742    .0.F         .0.743    96.0.744    4E           .0.745    76.0.746    52           .0.747    F.0..0.748    17           .0.749    A.0..0.74A    F2           .0.74B    5C.0.74C    E4           .0.74D    32.0.74E    D3           .0.74F    1.0..0.75.0.  96           .0.751    47.0.752    F.0.         .0.753    F2.0.754    5A           .0.755    .0.3.0.756    2.0.         .0.757    A.0..0.758    E4           .0.759    23.0.75A    B.0.         .0.75B    8.0..0.75C    83           .0.75D    BA.0.75E    .0..0.       .0.75F    B8.0.76.0.  31           .0.761    B9.0.762    25           .0.763    F4.0.764    94           .0.765    76.0.766    6D           .0.767    B8.0.768    35           .0.769    B9.0.76A    27           .0.76B    F4.0.76C    94           .0.76D    FA.0.76E    C6           .0.76F    79.0.77.0.  .0.7         .0.771    B8.0.772    37           .0.773    92.0.774    77           .0.775    B8.0.776    33           .0.777    94.0.778    8C           .0.779    8C.0.77A    B4           .0.77B    .0..0..0.77C    BA           .0.77D    3.0..0.77E    76           .0.77F    87.0.78.0.  B8           .0.781    28.0.782    F.0.         .0.783    5A.0.784    DA           .0.785    96.0.786    79           .0.787    B8.0.788    26           .0.789    F.0..0.78A    5A           .0.78B    DA.0.78C    96           .0.78D    79.0.78E    B8           .0.78F    24.0.79.0.  BC           .0.791    .0.5.0.792    A4           .0.793    F1.0.794    BC           .0.795    .0.2.0.796    B4           .0.797    ED.0.798    F6           .0.799    9B.0.79A    37           .0.79B    A.0..0.79C    18           .0.79D    A.0..0.79E    B1           .0.79F    .0.1.0.7A.0.  19           .0.7A1    B1.0.7A2    A.0.         .0.7A3    83.0.7A4    BB           .0.7A5    64.0.7A6    BA           .0.7A7    A6.0.7A8    8C           .0.7A9    EA.0.7AA    A8           .0.7AB    EB.0.7AC    A6           .0.7AD    EC.0.7AE    A4           .0.7AF    83.0.7B.0.  35           .0.7B1    27.0.7B2    D7           .0.7B3    34.0.7B4    E9           .0.7B5    BC.0.7B6    32           .0.7B7    8C.0.7B8    EC           .0.7B9    B7.0.7BA    34           .0.7BB    D5.0.7BC    B8           .0.7BD    66.0.7BE    B9           .0.7BF    18.0.7C.0.  B1           .0.7C1    .0.1.0.7C2    36           .0.7C3    C6.0.7C4    F4           .0.7C5    .0..0..0.7C6    BC           .0.7C7    FA.0.7C8    F4           .0.7C9    A4.0.7CA    B.0.         .0.7CB    .0..0..0.7CC    34           .0.7CD    E9.0.7CE    D4           .0.7CF    EE.0.7D.0.  BB           .0.7D1    A1.0.7D2    85           .0.7D3    95.0.7D4    14           .0.7D5    25.0.7D6    27           .0.7D7    D7.0.7D8    BA           .0.7D9    .0.A.0.7DA    8C           .0.7DB    EA.0.7DC    DA           .0.7DD    54.0.7DE    1C           .0.7DF    D4.0.7E.0.  .0..0.       .0.7E1    74.0.7E2    47           .0.7E3    B4.0.7E4    .0..0.       .0.7E5    34.0.7E6    98           .0.7E7    E4.0.7E8    D6           .0.7E9    B8.0.7EA    25           .0.7EB    B6.0.7EC    EF           .0.7ED    B8.0.7EE    27           .0.7EF    83.0.7F.0.  28           .0.7F1    43.0.7F2    29           .0.7F3    2.0..0.7F4    47           .0.7F5    45.0.7F6    2.0.         .0.7F7    31.0.7F8    39           .0.7F9    38.0.7FA    32______________________________________ NOTE: ALL UNSPECIFIED ADDRESSES FROM .0. TO 7FFH ARE FILLED WITH DATA BYT = .0..0..