CA1315008C - System permitting peripheral interchangeability - Google Patents

System permitting peripheral interchangeability

Info

Publication number
CA1315008C
CA1315008C CA000574585A CA574585A CA1315008C CA 1315008 C CA1315008 C CA 1315008C CA 000574585 A CA000574585 A CA 000574585A CA 574585 A CA574585 A CA 574585A CA 1315008 C CA1315008 C CA 1315008C
Authority
CA
Canada
Prior art keywords
peripheral
host
connector
peripherals
box
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CA000574585A
Other languages
French (fr)
Inventor
Bruce Eric Newman
Steven D. Dipirro
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Application granted granted Critical
Publication of CA1315008C publication Critical patent/CA1315008C/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Abstract

ABSTRACT OF THE DISCLOSURE

In a system including a processor and at least one connector for providing inputs to the processor, which one of a plurality of different types of peripherals is plugged into the connector is determined by sensing any change in the connection of a peripheral to said connector, upon initial start-up of the system and each time a change from not plugged in to plugged in is detected interrogating the peripheral to obtain its type and storing the type of peripheral which is plugged in.

Description

13~008 1 6129~-186 RELATED APPLICATIONS AND PATENTS
This appllcation ls related to the followlng appllcations and patents. These applications and patents contain, at least in part, common dlsclosure regardlng an embodiment of a perlpheral repeater box. Each, however, contains clalms to a dlfferent inventlon:
Canadlan patent appllcatlon serlal No. 574,394 filed August 11, 1988, entitled "Peripheral Repeater Box" corresponding to U.S. patent No. 4,905,232; Canadlan patent appllcatlon serlal No. 574,576 filed August 12, 1988, entltled "D.C. Power Monltor"
corresponding to U.S. patent No. 4,797,608; U.S. patent No.
4,837,565 entltled "Tri-State Functlon Indlcator"; U.S. patent No.
4,860,292 entltled "Communlcatlons Protocol"; and Canadlan patent appllcatlon serlal No. 574,290 flled August 10, 1988, entltled "Method of Packetlzlng Data".
BACKGROUND OF THE INV~NTION
Thls lnventlon relates to computer systems ln general and more partlcularly, to a system whlch permlts lnterchanglng perlpherals connected to a perlpheral repeater box to whlch a plurality of perlpherals can be connected.
In large computer systems, and particularly ln systems whlch provlde graphlcs dlsplays, a plurallty of dlfferent types of perlpheral devlces for providing input to the computer system are provided. For example, a single system may have as inputs a keyboard, a mouse, a tablet, a light pen, dial boxes, switch boxes and so forth. In a system with a plurality of such peripherals it is advantageous to have a device which can collect inputs from each of these peripherals and then retransmit the various inputs over a single line to the computer system. Such a device is referred to herein as a peripheral repeater box in that it acts as a repeater for each of the individual peripherals.

Very often, different peripherals have the same type of plug. In typical systems of the prior art there is a requirement that each peripheral be plugged into a speci~lc connection. If by mistake two different peripherals which have the same type of plug are mixed up, the inputs no longer react properly. There is thus, a need for in a peripheral repeater box the ability to plug different type of peripherals into the same connector and still be able to recognize which peripheral is connected.

Variou~ peripherals are capable of operating at different baud rates. It is sometimes necessary to change baud rates. In systems using a peripheral repeater box, resetting of baud rates must be done both in the peripheral and the peripheral repeater box. In particular, there is a need to provide a system in which baud rates can be reset when peripherals are changed.
SUMMARY OF THE INVENTION
The system of the present invention permits interchanging peripherals.
The peripheral Repeater box (PR Box) of the present invention is, first of all, used to allow the peripherals to be powered at the Monitor site. The PR box collects the various peripheral signals using, a conventional RS-232-C or RS-423 connection, from seven periph~ral channels, which are ~hen packetized and sent to a host, e.g. a computer and~or g.raphics control processor, using RS-232-C signals. Transmissions to the peripherals are handled in a like manner from the host, i.e., receiving packets from the host, unpacking the data and channeling data to an appropriate peripheral serial line unit (SLU).
The peripheral repeater box of the present invention is particularly suited for use in a graphics system of the type disclosed in copending Canadian Application Serial No. 574,288, entitled Console Emulation For A Graphics Workstation.

13l5oo8 The communications between the PR Box and host are carried out with a novel protocol, which provides for reliable error free transmission.

The PR Box uses a system with circular queues and buffers to buffer incoming and outgoing messages to and from the peripherals. Messages are arranged in packets for transmission. The completion of a message from a peripheral is detected by counting bytes. Alternatively if the time between received bytes exceeds a predetermîned amount, this is used to sense the end of a message.
To keep communications active between the PR Box and the system, a ~Keep alive~ timer is used. This causes a ~keep alive~ message to be sent if there has been no other communication within a predetermined amount of time.

Peripherals which are supported by the dislocsed embodiment of the PR box include:
a keyboard;
a mouse;
a tablet; and a dial abox.

In addition, in the illustrated embodiment, three other channels are provided for future expansion to provide for a button box channel, a spare keyboard channel and a general spare RS-232-C
channel.

131~008 61293-1~6 The PR box of the present invention permits interchangeability of the different peripherals. In other words, peripherals with the same type plug can be plugged into any of the peripherals ports and it is not necessary to ensure that a particular peripheral is plugged into a particular port. On power-up and each time a peripheral is plugged in or removed, the host checks the peripherals to determine what type of device it is and keeps track of that information.
A further feature of the present invention is the ability to change baud rates when peripherals are changed. In accordance with the present invention, a command from the host to change baud rates automatically resets the baud rate of the receiver in the peripheral box for the particular channel and another command sets the baud rate of the peripheral itself.
First, a message is sent through the PR box to the peripheral.
Then a co~,mand is sent to the PR box to change the baud rate of a UART ~Universal Asynchronous Receiver/Transmitter) associated with that peripheral.
In accordance with the present invention there is provided in a system including a host processor and a peripheral repeater having a processor and at least one connector, a method of determining which of a plurality of different types of peripherals having a peripheral type are plugged into said connector, comprising: a) sensing any change in the connection of a peripheral to said connector by the peripheral repeater; b) generatlng an interrupt at said peripheral repeater processor when a change is sensed; c) upon initial start-up of the system, each A

5a 61293-186 time a change from not plugged in to plugged in is detected, and in response to an interrupt, interrogating the connector by said host to obtain a result including the peripheral type if a peripheral is present; and d) storing in a table the type of peripheral which is plugged in to allow different types of peripherals to be interchangeably coupled to said connector during system start-up and in system operation.
In accordance with the present invention there is also provided in a system including a processor and at least one pr~
o B connector for proving an input to said processorr an apparatus for detecting which of a plurality of different peripherals is plugged into said connector comprising: a) means for detecting a current path through said connector for indicating that a peripheral is plugged into said connector, said means providing an output; b) said processor including means responslve to said output for sending interrogatlon commands to said connector; and c) means for storing data, coupled to said processor, for storing a type of peripheral plugged lnto said connector wherein different types of peripherals can be interchangeably coupled to the connector during system operation.
BRIEF DESCRIPTION OF THE DRAWINGS
Fig. 1 is a block diagram of a computer system in which the PR box of the present invention may be used.

1315~08 Fig. 2 is a basic block diagram of the PR
box of the present invention.

Figs. 3A-C are a flow diagram of the firmware running in the PR box of the present invention.

Figs. 4A-H illustrate the transmission of packets through the use of circular queues and circular buffers according to the present invention.

Fig. 5 is a table tabulating the default baud rates for the different peripherals use~ in the preferred embodiment of the present invention.

Fig. 6 is a table showing the character times associated with each baud rate for use in interpacket timing according to the present invention.

7~-C
Fig. ~ is a flow diagram illustrating the basic timing utilized for interpacket timing.

~31~0~

Fig. 8 is a diagram showing the configuration of the header byte field utilized with the present invention.

Figs. 9A-C are diagrams showing the message transmission protocol o the present invention.

DETAILEn DE8C~IPTION

Svstem Overview Fig. 1 is a block diagram of a computer system showing where the peripheral repeater box of the present invention fit3 into the system. The illustrated system i8 a graphics system. However, the pre~ent invention i5 applicable to other computer systems. Thus, there is illustrated a monitor 11 which receives video input from a RGB
coax 13 which is coupled to computing apparatus 14 which does the graphic computations. Included in apparatus 14, as illustrated, is a graphics engine or graphics processor 15, a main computer 17, e.g.
A a Vax 8250 system, and a computer 19 acting as a control processor, which may be a Microvax computer. Computer 17 is host to computer 19 and computer 19 is host to the PR box 21 described below. Thus, hereinafter, where reference is made to a host, the reference is to computer 19. The ~rv~ ~r 1~

, 131~008 ~ 61293-186 operation of this part of ~he system is more fully described in Canadian Application Serial No. 574,288, entitled Console Emulation For A Graphics Worksta~ion. The peripheral repeater box 21 is illustrated in Fig. 1 along with the various peripherals which may be plugged into it. These include a keyboard 23, a mouse 25, a tablet 27, knobs 29, i.e. a dial box, buttons 31, a spare RS232 channel 33 and a spare keyboard input 35.
The peripheral repeater box is a self-contained microprocessor system which, in the illustrated embodiment, is located underneath the monitor. It is responsible for handling information flowing between the host and peripheral devices. This is a free running sub-system that performs a self-check of its own lnternal status at power up. After completing this task it initializes itself and continuously scans for activity from the host or peripherals.
Four peripheral channels (for keyboard 23, mouse 25, tablet 27 and knobs 29) and one command channel (for communications with the host) are provided to connect all the supported peripherals. In addition three spare channels for future expansion or special peripherals, e.g. the spare keyboard 35, button bo~ 31, and spare 33 of Fig. 1 have been provided.

The sub-system is composed of a minimal system as shown in Fig. 2. Thus, there is illustrated an 8031 microprocessor CPU 41 which, in conventional fashion, has a associated with it a clock/reset unit 43 with a 12 mHz cyrstal oscillator. Coupled to the 8031 CPU is a conventional control decode block 45 which couples the CPU to a bus 47. Bus 47 couples the CPU to memory 49 which includes 16K of RAM 51 and 8K of ROM 53. The 8031 has no on chip ROM and insufficient on chip RAM. For this reason, the 8031 is used in an expanded bus configuration utilizing three of the four available general purpose ports for address, data and control. These are coupled through block 45 to bus 47. Enabling the external addressing capability for the expanded bu~ configuration is accomplished by grounding (through a jumper) the EA, external access, pin.

The low order address and data are multiplexed on the 8031, the address is latched during address time with a 74LS373 Octal latch strobed via the ALE (address latch enable) signal output from the 8031.

Bus 47 is also connected to a diagnostic register 55. Diagnostic register provides an output to a display 57 comprising 8 LEDs. Also coupled to bus 47 is a function register 59 which provides its output to a tricolor LED 61 to be described in more detail below. Also shown in Fig.

131500~
2 is the DC power monitor 63 which provides its output to a bicolor LED 64 to indicate under or over voltage conditions as explained in detail below.

Bus 47 also connects to Serial Line Units (SLU) 0-7 along with a modem control contained in block 62. Block 62 is what is known as an octal asynchronous receiver/transmitter or OCTALART.
Such a device is manufactured by Digital Equipment Corporation of Maynard, MA. as a DC 349.
Basically, the OCTALART comprises eight identical communication channels (eight UARTS, in effect) and two registers which provide summary information on the collective modem control signals and the interrupting channel definition for interrupts.
Serial line units 0-6 are coupled to the seven peripherals indicated in Fig. 1. SLU 7 is the host link shown in Fig. 1. The outputs of the SLUs are coupled through transceivers 69, the outputs of which in turn are connected to a distribution panel 71 into which the various connectors are plugged.
Block 69 includes EIA Line drivers, 9636 type, operating off a bipolar supply of +/-12 volts which translate the signals from TTL levels to a bipolar RS-232-C compatible signal level of approximately ~/- 10 volts.

The host channel (SLU 7), keyboard channel and spare channel do not have device detection capability. The other five channels have an input ~r~ r~r K

-- ll - i315008 line that is connected to the DCD (Data Carrier Detect) pin of the corresponding SLU of the OCTALART 62. When the pin is at the channel connector side is grounded the input side of the OCTALART is high indicating that a device is present on that channel.

A data set change summary register in blocX
62 will cause an interrupt if the status of one of these pins changes, i.e. high to low, or low to high level change. This indicates a device being added or removed after the system has entered operating mode. On power up the 8031 reads this register to determine which devices that have this capability are connected and enter this information into a configuration byte (a storage area in software) and is sent to the host as part of the self test report. This capability permits knowing which peripherals are connected to which ports and thus allows interchangeability of peripherals. The PR box, each time a peripheral is plugged in or unplugged~ sends a message to the host allowing it to interrogate a peripheral and update a table which it maintains.

In the free running operational mode the PR
box accepts data packets from the host through SLU
7 and verifies the integrity of that data. If the data is good then the PR box sends an ACK to the host, strips out the data or command from the packet and channels it to the designated peripheral through its associated SLU. If the data is bad, i.e. checksum error, the PR box sends a NAK to the host to request a re-transmission and throws away the packet it had received. These communications are described in detail below in connection with Figs. 5C through llC.

The PR box can also receive commands to test itself and report status/configuration to change the diagnostic LEDs and to change baud rates while in operational mode.

Self-test mode verifies the integrity of the microprocessor sub-system. After termination of the internal loopback of the OCTALART, the sub-system will re-initialize itself and return to operational mode. Self-test is entered on power-up or by receipt of an executed self-test command from the host. This will check the functionality of the PR box logic.

An internal loopback sub-test is provided in the self-test, allowing the system to verify the integrity of the PR box logic under software control. While the self test is in operation there is no logical connection between the host and the PR box. This is true only during self-test. There is no ef~ect on the peripherals when the PR box is running the internal loopback poxtion of self-test because no data is output at the transmit pins of the UART lines in OCTALART 67. Additionally data , ... .

' - 13 - 131~0~8 coming in from the peripherals will have no effect on the PR box during loopback test since all data at the UART receive pins of OCTALART 67 is ignored.

External loopback testing may be performed on an individual peripheral channel using the appropriate loopback on the channel to be tested.
This is done from the host firmware. The peripheral repeater is transparent from this operation. This is the testing, explained further below which allows peripheral interchangeability.

A manufacturing test moded is provided by a jumper in the host channel loopback connector.
This jumper is sensed on an 8031 on the power-up.
In this mode the module runs all tests (as in self-test) on all channels and a device present test, and an external peripheral channel loopback test, continually. Loop on error functionality has been implemented to aid in repair.

The eight bit diagnostic register 55 with eight LEDs 57 attached provides the PR box status and some system ctatus, (assuming some basic functionality of the main system). This register is used by the PR box to indicate its dynamic status duriny self-test or manufacturing test, to indicate, on entry to operational mode, any soft or hard error that may have occurred. The MSB, (bit 7) is used to indicate that a PR box error has occurred, bit 6 is used to indicate that a system - 14 - ~31~8 error is displayed. If bit 6 is lit then the error code displayed is the system error, regardless of bit 7. This leaves 6 bits for providing encoded error responses. (The LED Error Codes are listed below.) The Power Monitor Circuit The circuitry 63 to monitor the plus and minus 12v supplies operates from the +5v. supply.
A single red/green bicolor led 64 is connected to the output of the power monitor circuit 63. The output indicators are as follows:

LED Indication Description Green All voltages present and within range Red Either plus, minus or both 12 volt supplies are approximately 15% out of spec or dropped out completely None +5v supply, all supply voltages dropped out or no AC

The DC power monitor is a set of four comparators to check undervoltage and overvoltage out of range approximately 15% at nominal for the plus and minus 12 volt supplies. The circuit runs from plu8 five volts and uses a plu~ two volt precision reference applied to the appropriate - 15 - 13150~8 reference input of each comparator. The output is connected to bicolor LED 64. Precision resistor dividers connected to the other input of each comparator, scale the test voltage down to ths same range as the reference input.

The Function Monitor As shown in Fig. 2, a tristate LED 61 is connected to the output of two bit function register 59. This is used to give visual indication of what mode or function the PR box is performing at that time.

LED Indication Descri~tion Yellow Self-test mode being executed Red Manufacturing test being performed Green Operational mode active PR Box operat~on overvie~

The PR box ROM 53 containC self-test and operational firmware. This firmware i8 contained in 4K bytes of ROM, though there is 8K bytes reserved for it. A listing of the firmware is set out in Appendix A. A flow diagram for the firmware is set out in Figs. 3A-C.

On power-up indicated by block 301, the on board diagnostics will have control of the PR box as indicated in block 303. The diagnostics will perform tests on the PR box logic and do an external loopback and test if pin 7 on the 8031 port 1 is grounded (signifying manufacturing mode).
In manufacturing mode the diagnostics will loop forever via loop 305 and not ~ into operational mode. This is done via detection of the loopback connector (pin 7) on power up. If an error is encountered during manufacturing mode, the diagnostics will loop forever on the test that encountered the error.

Registers 55 and 59 with LEDs 57 and 61 ~see Fig. 2) attached can be viewed from the outside of the system box. Diagnostic register 55 as noted above i8 8 bits wide with Red LEDs. These LEDs report errors for the PR box and/or the system. As also described, the function register 59 is two bits wide with a single red/yellow/green LED. When in manufacturing mode, the function LED
is red as indicated in block 303. On power-up, during other than manufacturing mode, the function LED will be yellow. In operational mode it will be green.

- 17 - ~ ~15008 The various tests performed on power up are indicated by blocks 307-314. If in manufacturing mode, as checked in block 315 of Fig. 3B, the test of blocks 316 and 317 are also performed before entering block 318 to loop 305.

If, on power up, the PR box has an error that will make the PR system unusable, i.e.
interrupt, 8031 errors, the function LED will stay yellow, an attempt to put the error code in the diagnostic register will be made, and the PR box will not go into operational mode.

If there are no errors or errors that will not make the system unuseable, and the system is not in manufacturing mode, path 320 will be followed to block 401 of Fig. 3C and the function LED will turn green and wait for the host to ACK/NAK, the diagnostic report to establish the link between the host and the PR box. If the link is never established, the error code for N0 host is placed into the diagnostic LEDs, and the PR box will go into operational mode. If the communications link is later established, the error code will be cleared.

If there are soft errors (diagnostic register or function register) the PR box will go into operational mode of Fig. 3C and carryout the background process. However, any LED indication may be incorrect. Except for a dead system, i.e.

- 18 - ~31~3 8031 failures, the PR box will attempt to go operational mode, displaying , if possible, the point at which it failed the self-test, (test number).

After the power-up diagnostics have been completed, control is passed to the operational firmware. In this mode, the firmware will keep the link between the host and the PR box active, and mux/demux commands/data between the peripherals and the host. This operation is described in detail below.

The diagnostics/operating system of this system are ROM based and run out of the 8031 microprocessor. The PR box firmware is compatible with the existing peripherals, and adheres to a communications protocol developed for the hest PR
box link discussed below.

The diagnostics are the first part of the firmware to run on power-up of the PR box. The diagnostics leave the system in a known state before passing control to the operating firmware.
Upon completion of testing the PR box, the system RAM 51 i9 initialized, queues are cleared, the UARTs in in OCTALART 67 are set to the default speed~ and data formats, the diagnostic and mode registers 55 and 57 are set with the appropriate values, and a system status area is set up that contains the status of the PR box.

, ... . .

- 19 - 13l~oo8 once the diagnostics are complete, the diagnostic report is sent to the host, and the PR
box goes into operational mode. If there are no other messages to send, the PR box will wait 10 seconds for an ACK/NAK before placing an error code for "No communications link~ into the diagnostic register 55. An ACK/NAK timer is provided for all other packets and times out at 20 mSec. Once operational, the UARTS are enabled to allow communications between the peripherals and the host. A keep-alive timer is also enabled in order to keep the host link active.

Operational Mode In this mode, the PR box 21 is the central communications device sitting between the peripherals and the host 19. (Refer to Figure 1 block diagram). Before detailing this mode, some basic terminology and memory allocation utilized on the PR box must be discussed.

A page of memory is 256 bytes in len~th.
The low order address of the beginning page of memory is zero, the upper byte is fro~ 0 to 255.
In this description, the term ~port~ is used interchangeably with ~channel~ and refers to the peripheral port.

The 8031 has 128 bytes of on-chip RAM. Of the 128 bytes, 36 are utilized for front, rear/
receive and transmit queue pointers. There is a front and rear queue pointer for each receive and transmit queue. Receive and transmit queues ar~
allocated for each SLU port and the command queue to the PR box. There are eight ports and one command channel, thus, there are 18 queues and 36 pointers. Listed below are the names given to the respective queue pointers.

REAR_RX_QUE_PTR A table containing the rear receive queue pointers for ports 0-7, &
the cmd que 8 FRONT_RX_QUE_PTR A table containing the front receive queue pointers for ports 0-7, &
the cmd que 8 REAR_TX_QUE_PTR A table containing the rear transmit queue - 21 - 131~008 pointers for ports 0-7, & the cmd que 8 FRONT_TX_QUE_PTR A table containing the front transmit queue pointers for ports 0-7, &
the cmd que 8 The receive and transmit queues are maintained in off-chip RAM. Each queue entry is an address of the buffer received, or the buffer ready to be transmitted. Each entry is a word in length, a word being 16 bits. The first byte is the low order address, and the second byte is the high order address. No buffers are moved, only buffer addresses. Listed below are the names assigned to critical memory locations.

RX_i_QUE Whsre i=O to 7, and the CMD que-1 page (256 bytes-128 msg ptrs) TX_i_QUE WHERE i=O to 7, and the CMD que-1 page (256 bytes-128 msg ptrs) 13l~o8 C~i_BUFFER Where i=O to 7.
Buffer space for each port. Ports O to 7 are the following sizes 3/4K, 2K, 2K, 1.5K, 3/4K, 3/4K, 3/4K, ~.75K
respectively.

RX_BUFFERS 16 bytes (8 addresses, one for each SLU, there is no buffer associated with the command queue) - Contains the next free byte in each ports buffer.

TX_BUFFERS 16 bytes (8 addresses, one for each SLU, there is no buffer associated with the command queue) - Contains the next byte to t~ansmit for each port.
~ (Transmitter ! interrupt sets this up) TX SIZE_TBL Number of bytes left to transmit for each channel. (8 locations) RX_TIME OUT Timer bytes for each receiver channel.
For inter-character timing. (8 locations) 131~008 PORT_TIME_OUT Timers for each channel. Set to lOmS
when a queue is overflowed. (Port is turned off for lOmS) (8 locations) KA _ TIMER Xeep alive timer. A
10 second timer which is reset to 10 whenever a packet is sent to the host. If the timer times out, a keep alive packet is sent to the host.

ACK NACK_TIMER Timer s~t to 20~S
a~ter the checksu~ on a packet is sent to the host. (~he timer i8 cleared if it receive~ an ACK or a NACX in this time period. I~ an ACK/NACR i~ not received, an èrror ~ED is set on the PR
Box.) The method by which al} pointers, queues, buffer~, and table~ are acces~ed i~ by getting the base address (or base page), and adding in the current channel number (or 2 multiple o~ the channel number). For example, to access channel 3 queue, the base page of the receive quQues are taken. The upper address e.g. BASE_Rx PAGE, which is the base for all front queues is taken and the channel number is added to it (3 in this case) .
.
, ', . ; ~, :

, 131~oo8 Once this is done, the value pointed to by FRONT_RX
QUE_PTR plus the offset of 3 is used as the lower address for the front pointer of channel 3. The channel number is obtained easily by reading it from a register in the OCTALART which, while in an OCTALART intarrupt, stores the number of the channel causing an interrupt. Thus, for exmaple, if data come~ in from channel 3, it causes an OCTALART interrupt. The channel (3) is ~tored in an OCTALART register. The PR box reads this register and add its value (3) to the base values and this way quickly and easily obtains the necessary addresses for the pointers etc. for channel 3. Thus, all the queues, buffers, etc. can be treated generically by common subroutines, and interrupt routines, with the exception of Channel 7, which is treated slightly differently because it i8 the channel to which the host is connected.

All queues and buffers are circular. The queues are circular by virtue of the fact that they are only one page in length. The upper page address is loaded directly into the P2 register of the 8031. The front/rear receiv~r/transmit queue pointers are loaded directly into register R~ or R1 of the 8031 which can be used for external accesses. Since the pointers are 1 byte, (R0/Rl) when they are incremented (by 2~ from FE hex they will automatically be set to 0. (FE hex + 2 = 100 hex, but since it is a byte value the 1 i8 tossed ' 131 ~008 away.) No data checking is necessary because P2 and RO/Rl are separate registers and the one does not carry to the upper address byte (P2).

once in operational mode, the PR box will initialize all the channels to default baud rates for the peripherals it expects to be on a specific channel. The default baud rates are set out in the table of Fig. 5. upon this expectation, the PR
box will also allocate buffer sizes to achieve maximum processing of data received from and transmitted to the respective peripherals. The buffer size is chosen to provide for storage of a maximum of 256 packets without overwriting buffer space. This comprises 128 packets in a gueue ready to transmit to the host and another 128 packets in a peripheral receive queue waiting to be moved to the host transmit queue. For example, channel 0 buffer is initialized to 768 bytes, (3/4 K), to accommodate a keyboard which is a single character device. Each packet stored in the buffer received from the keyboard will be comprised of three bytes:
channel number, size byte, and the data byte. To store 256 packets, the buffer allocated is 256 x 3 = 768 bytes (3/4 K) long. Once communication is established between the host and the PR box, the host will then interrogate each peripheral to ascertain what type of peripheral is connected and make adjustments to the baud rate if necessary.

The main routine which the PR box runs is the background process noted above. Fi~. 3C is a flowchart which describes the background process.
First, in block 401, on entering this part of the firmware the function register output is turned to green.

Then, as shown by block 403 this process scans the receive and transmit queues to see if they are empty. It does this by comparing the front queue pointer to the rear queue pointer for each queue. If the front equals the rear, the queue is empty, if they are not equal, then some action must be taken. The value 1 used in the background routine is, of course, the channel number. In this case, i i~ added to the base values to gst the necessary addresses for checking the front and rear pointers.
r Figs. 4A-E illustrate what occurs when data i8 received in a receive queue from a peripheral and al80 illustrate the use of circular queues and circular burrers accordlng to the present invention. Fig. 4A depicts the state the queues and bufPers are in initially before a packet is received. Illustrated is the queue 410 for ahannel 2~ ths channel 2 buffer 415 and a table 417 containing pointers for the next available memory location for each of the rQceive channels RxO-Rx7 and transmit channels TxO-Tx7. As noted previously, data i8 not moved from buffer to ~31~00~

buffer, only the addresses are moved from queue to queue. Thus, for channel 2, buffer 2 receives the data and it is also from this buffer that data is transmitted to the host. At the start of the receive for this packet, queue 410 is empty, i.e., the front pointer 411 equals the rear pointer 412.
There may have been many packets received b~fore the front and rear pointers 410 and 411 are at the top of the receive queue 410 (Rx_2_Queue). The pointer 416 for Rx2 in table 417 is pointing to the next free buffer space in buffer 415 which is 44FD
Hex.

Figure 4B depicts what occurs after the first receive interrupt on channel 2 occurs.
Addresses are obtained in the manner described above by adding the channel number (2), the base addresses. A character i8 read, which in this example is ~A~. The ~x_Buffer pointer 416 address is moved into the Rx_2_Queue 410. The packet is loaded into Channel_2_Buffer 415, along with the channel number 418, the size of the packet 419, which i8 initialized to 1, and the character read, ~An as indicated at 420. This act causes the inter-character timer, to be explained in more detail below, for channel 2 to start.

The next free buffer space is saved in table 417 of pointer 416. The next free buffer space pointer is at 3D00 Hex. The last free buffer space pointer was at 44FF Hex which was the end location of the buf~er. Instead of just bumping the free buffer space pointer to 4500 Hex and thereby going into the next SLUs data space and losing data, the free buffer space is wrapped to the start of Channel_2_Buffer. No overrun will occur because of the size of the packet and number of packets allowed as described below. This demonstrates the use of circular buffers in the PR
box software.

The same sequence of events as described above and depicted in Fig. 4B are repeated as shown in Fig. 4C and Fig. 4D. The character (B and C) are read and stored at the start of the channel 2 buffer 415 and the packet size 419 is incremented accordingly. Each character i8 moved to the address in Channel 2_Buffer 415 that pointer 416 (~ree buffer space pointer) o~ the table 417 indicates. Pointer 416 is incremented and the inter-character timer is re-started. This sequence of events continues until the inter-character timer expires.

Figs. 4A-E have been simplified to show only one packet in each queue at a time. In reality, each queue may have multiple entries and each port may be receiving/transmitting packets concurrently. Having a transmit queue, a receive queue, a buffer and associated pointers dedicated to each channel in the PR box makes this operation possible.

.

Fig. 4E shows that once the inter-character timer expires, the rear pointer, 412, is bumped to the next free location (FE Hex + 2 = 00). This brinys the rear pointer to the start of the queue thus again demonstrating the use of circular queues in PR box software as a result of the previously explained use of the P2 and RO/Rl registers.

All received and transmitted data from the PR box is handled by interrupt routines. There are routines, which occur for example, during the steps of Figs. 4A-4E, to set up the data packets to be sent from the peripherals to the host. These packets are considered complete if the number of characters received for that peripheral equals the maximum packet size allowed, which is six bytes, or if there is a timeout of the inter-character timer for that peripheral. For example, the tablet report size i8 5 bytes so after the fifth byte it will time out and be a completed packet. Inter-character timeout occurs if approximately two character times pass without reception of a byte.

Peripheral timeout is handled by inter-character timers that are initialized before the initialization code starts. The value that is loaded into the timer is related to the baud rate.
There is a timer location for each channel. Table of Fig. 6 contains a list of the timer values used for the different baud rates. The timer values are decremented in a timer O interrupt routine, , .
, . ,, . , ....................... ~- .. ~ .

.

.. ~ . .,, ~, .. ~ ..

i31~8 described in detail below in connection with Fig.
7. For example, consider the case where the tablet sends a report which is 5 bytes long at 4800 baud.
At 4800 baud and 11 bits per character, it will take approximately 2.3 msecs per character for transmission. Then in the case of this report being sent, the timer would expire after about 5 msec and the buffer would be marked as complete.

As disclosed above in connection with Fig.
4B, when the first character is received on ports 0 - 6 (peripheral ports), the address of the first free space in that ports' buffer 415 is stored in the queue 410. The current port number is stored in that location at 418. The next buffer location 419 is the size, and will be initialized to l.
Finally, the character which was read in e.g. A, is stored in the buffer. Subsequent byte~ are be stored in the buffer 415, and the size byte 419 is incremented.

Thus, after each byte is read, a timer for that port is initialized to approximately twice the transmit time ~or a single character. This inter-character timer value is adjusted if the host changes the baud rate on any channel. The packet i8 closed, and the ith rear pointer 412 of Fi~.
4A-E is bumped by 2 when the timer counts to zero (times out), or the size equals 6, where i is the channel number, as shown in Fig. 6E.

131~08 After the background process sees a non-empty Rx queue, e.g. as in Fig. 4E the buffer address at the front 411 of the receive queue is moved to the rear 422 of the Tx-7 queue (host) 420.
The front receiver pointer 411 or the Rx queue is bumped to the next location (which may or may not have any more data buffers to send), and the rear 422 of the Tx_7_Que is bumped to the next free location. This is shown in Fig. 4F.

In qeneral, the transmitter is turned on for port 7, if it is not already on, if an ACK/NACK
or a Keep Alive needs to be sent, or the queue is not empty. If the command queue is not empty, then the command parser is executed. Transmitter interrupts turn themselves off when the last character is sent. The background routine, tran~mit, receive, and time interrupts all run asynchronously to each other.

Thus, if the receive queue is not empty and the queue is for port 0 - 6 or the command queue, then the queue entry at the front of that gueue is pushed onto the rear 422 of the transmit queue 420 for port 7. The front 411 of the receive queue at which the entry was just taken off is incremented by two as explained above in connectlon with Fig. 4F. What has just been described is how information is received from a peripheral into a buffer and the buffer locations stored in a receive (Rx) queue and then transferred to the Tx_7_Que to be transmitted to the host.

Packets from the host for the peripherals (0-6) or the PR box (the command channel) are handled in similar fashion, first with the locations stored in the RX_7 queue and then being transferred to a respective Tx queue.

If the receive queue for port 7, Rx_7_Que (the host) is not empty, then the first byte of the buffer (at the queue entry~ contains the port where the entry should be directed. That port value is used to select the appropriate transmit queue, and the buffer address+l is the value which is pushed onto that transmit queue. If the destination is for port 7 (i.e., a command to the PR Box), then this is pushed onto the command queue.

The first character received on port 7 must be an ACK, NACK, or an SOH. If it is an SOH, the PR Box will expect to receive a packet. All ~ollowing characters are stored in the channel 7 buffer. After the last data character i8 read, the received checksum is compared with the calculated checksum. If they are equal, an ACK is sent to the host, and the rear pointer for channel 7 is bumped by 2. If the checksum does not match, or the inter-character timer expires (10 msec for the ~,.
' - 33 - 1315~8 host), a NACK is sent to the host, and the rear pointer for channel 7 is not incremented (The PR
Box ignores the data it stored).

Once an entry is pushed onto a transmit queue for ports 0-6 and it is not empty, the transmitter interrupt is turned on for this channel, if it is not already on.

A transmit interrupt on ports 0 - 6 will take the address at the ith transmitter queue front pointer for the buffer to transmit. The first byte is the size, which is not transmitted, but the subsequent bytes are transmitted until the size is zero. When the interrupt is finished transmitting all the data bytes, the front pointer for the ith transmitter is bumped by two, and the interrupt for that port is turned off.

A transmit interrupt on port 7 could be for a few reasons such as, to send an ACK, NACK, or a packet to the host. A transmit interrupt on port 7 (Host port) will reinitialize the keep alive timer to 10 seconds.

If the PR box is to send a packet to the host, the first time in the interrupt, it will send an SOH. The second time in the interrupt routine it will get the packet address pointed to by the front pointer 421 for the channel 7 transmitter queue 420 as shown in Fig. 4G. The first byte at , _ 34 _ 1315008 that address will be the channel which the packet is from. The PR box takes this byte, sends it and stores t~e address of the next byte to send in Tx_Buffers table 417 at the location for channel 7.
For example, Fig. 4G illustrates transmitting the information for channel 2 which was obtained as shown in Eigs. 4A-E. The next time in, it will send the size of the packet, and use the size to send the subsequent data bytes, until the size is zero. As each byte is sent, the Tx buffer t7) is incremented to point to the next byte. As each byte is sent, it is also calculated into the checksum, and the checksum is then sent when the size is zero. After the checksum is sent, a timer is initialized to 20mSec in order to wait for an ACK or a NACK, and the interrupt i8 turned off. If an ACK ie received, the front pointer for channel 7 will bs bumped by two as shown in Fig. 6H. If the timer expires, this pointer will be bumped by two, and the LEDs will have the error code to indicate the host did not respond. Another packet cannot be sent to the host until an ACK/NACK is received, or the timer expires.

As noted above, the host sends data to a physical channel address. The host keeps a table indicating which device is plugged into a particular channel. The host can tell which device is on a particular channel by requesting the device to send a self-test report. This is done for devices having common connectors that can be 131~0()8 interchanged (i.e., the mouse and tablet, dial box and digit box, etc.). The PR box tries to determine if a device is connected to a channel by looking for the device present bit. The mouse, tablet, buttons box, dial box, and spare keyboard channels have device present bits. By using these, the PR box can tell that there is a device out there, but not what device it is.

When the PR box sends the self-test report, one byte is the current configuration of the system (only those devices that have a device present bit). There is no attempt made to try to identify if there is a device on the spare channel, host channel, or the keyboard channel.

A receive interrupt will occur on channels 1 - 4 and 6 if a device is plugged/unplugged. If this occurs, a message is sent to the host. The host then interrogates that port to see which peripheral, if any, is present and records that information in a table. It then sets baud rates by sending a command to the peripheral and then a command to the PR box to set the UART baud rate for the port in question. Baud rates may be reset at other times by the host to, for example, slow down transmission of a data where excessive transmission errors are encountered.

- 36 - 1315~B

The Timer 0 interrupt contains the counters for the inter-character timers, counters for a port which was previously turned off, and the ACK/NACK
counter. Fig. 7 is a flow diagram illustrating the Timer 0.

As indicated by Fig. 7, the timer interrupt occurs approximately every 1.38 msec. Upon the occurrence of an interrupt, as indicated by block 501, registers are saved and the register banks changed. The time to the next interrupt is then loaded as 1.38 msec. as indicated by block 503.
The next step is to get the base address of the receiver timeout table of intercharacter timers.
This table contains the same information which is contained in Figs. 5 and 6 hereof, i.e. for each channel it gives the value for the intercharacter timing. The next block indicates that the process starts with i equal to 0. In other words, as block 507 indicates, it starts with channel 0. A
decision block 509 is entered in which, the first time through, a check is made to see if the timeout for receiver i is equal to 0. If it is not equal to 0, block 511 is entered and the timeout is decremented by 1. A check is made again in decision block 513 to see if timeout has reached 0.
If the answer is yes then it is the end of the message as indicated by block 515 and, as indicated above, the rear of queue i is bumped. In decision block 509 if timeout is equal to 0 this means there is nothing to be done for this channel. If the answer in decision block 513 is no, this means that timeout has not occurred. In either case, block 517 is entered and i is incremented to the next channel. Following this a decision block 519 is entered to see if i is equal to 7. If not, the program loops back by a loop 520 to decision block 509 to check timeout for the next channel. When channel 7 is reached, as indicated by a yes answer from block 519, decision block 521 is entered.
Here a check is made to find out if the PR box is receiving on the host channel. If it is, according to block 521 timeout is decremented by 1. Then in block 523 a check is made to see if timeout is equal to 0. If it is, there is a timeout on the host channel and a number of steps are taken as indicated in block 525. If timeout has not occurred, the program proceeds directly to block 527. As indicated therein, a check is then~made for a timeout on a port which was turned off. This i8 done using the same series of steps just described.

After passing through block 527, a decision block is entered to see whether or not the PR box is waiting for an ACK or NACK. If the answer in decision block 529 is no, block 531 is entered immediately which indicates that the registers are restored and a return from the interrupt to the main program. If the PR box is waiting then block 533 is entered and the ACK/NACK timer is decremented. Next, a check is made in block 535 to ,~ .

131~00~

see if the timer is at 0. If it is not, block 531 is entered. Otherwise, if it is o, the wait for ACK/NACK and the transmitter 7 flag is cleared and the front pointer for the transmitter 7 queue is bumped as indicated by block 537. Next, block 539 is entered and if it is not system start up the host gone error is lighted in the LEDs 52 of Fig.
2. After this, block 531 is again entered. As shown in Fig. 9C, when end message 515 is encountered, as shown by block 541, the rear pointer for the receiver associated with the ith channel for which the message had ended is incremented by 2. Next, as indicated by block 543, the receive in progress flag is cleared followed by clearing of the receive timeout as indicated by block 545. Next, a check is made in decision block 547 to see if i is equal to the host channel. If it is, the actions taken in block 549 are carried out. When this done, or if the answer in block 547 was no, then the program returns to block 517 of Fig. 9A. (END_MSG is used elsewhere in the firmware also.~

A timer is only decremented if it is non-zero. If it is non-zero, and transitions to zero, some action is taken. If an inter-character timer expires, then the rear pointer 412 for the ith receiver is bumped by two. If a timer for a port which was previously off expires, then that port is turned on. A port is turned off when it gets too much data, and overflows its queue. The port is _ 39 _ 1 31 5 then turned off for 10mSec. If the ACK/NACK timer expires, then the front pointer 421 for channel 7 transmitter is bumped by twol and the error for the host not responding is placed in the LEDs 57.

The Timer 1 interrupt contains the counter for the ~keep alive~ timer. It is decremented by 1 on each entry. If it transitions to zero, a flag is set so the background process of Fig. 5C will send a "keep alive~ message to the host.

The interrupt routines to receive packets from the host, thus, set them up in memory for the background process of Fig. 5C to decipher. This background process also sets up the process for the interrupt routines to send data packets to the host and the peripherals.

Packet Definition As noted above, bytes received by the PR
box from a peripheral are grouped into a packet to be sent to the host. The packet definition is as follows:

SOH 1 byte: Decimal 1 Header 1 byte: See Fig. 10 ...,, . , . ~

i31~008 Byt~ Count 1 byte: Number of message/
Message/Data Text data bytes Message/Report/Data bytes, length dependent on peri-. pheral device Checksum 1 byte: Checksum for total transmisison Response to the above packet:
ACK/NAK 1 byte: Decimal 6/21 The header byte field is illustrated in Fig. 8.

The three bit device code utilizes all available bits. There are device codes for the keyboard, mouse, tablet, dial box, button box, PR
box system and two spare ports. The host channel is considered to be part of the PR box sytem, i.e.
the host channel uses a DEV ID of 111.

Code Device 000 Keyboard (DEC LK201) 001 Mouse 010 Tablet 011 Dial Box 100 Button Box 101 Spare Channel 110 Spare keyboard - 41 - 13~o~

111 PR Box including Host Channel The reception error bit of Fig. 8 is used to indicate a problem with the associated device identified by the device code. This bit will be set when the PR box sees a parity, framing, or hardware overrun error on the UART associated with the device.

Reception Error Bit = logical 1 to indicate an error has occured.

The Reply bit is used to indicate the host that the PR box is responding to a request made by the host and that the report or data following is not being originated by the PR box or peripheral device. This bit i8 uaed for a response to the command~ T and R discussed below under Self Test Command and Status Report Command, respectively.

Reply Bit = logical 1 to indicate this is a response to a previous request from the host. Used only for PR box commands.

; The Keep Alive bit is used to send null transmissions to the host within a specified time (e.g. 10 seconds) if there has been no transaction in that time period. The host watchdog timer is set to 10 seconds. This functionality tells the 13150~8 host that the PR box is still connected but has not data to transmit. The host resets its watchdog timer and starts the cycle again.

Keep Alive - logical 1 to indicate keep alive function only.

The Device Change bit is set to indicate that a device with a device present bit has been connected/disconnected to/from the PR box. When this bit is set, the packet contains one message byte. This is the configuration byte. The configuration byte will have one bit set for every device that has a device present pin that is plugged into the system.

Device Change Bit - logical 1 to indicate a device has changed state.

The System Error bit is used to send error reports to the host. When this bit is set, there is one data byte in the pacXet. That data byte is the error code. The error codes that currently exist are:
1. OlH - Bad command sent from host.
2. 02H Device Queue has had an overflow.

Two methods of error detection are utilized:
1. Checksum for the transmission (add with carry) ~,.

_ 43 _ ~ 31~ 0 08 2. Odd parity for each byte.

If the Xeep Alive bit is set, the Reply bit and Error bit are ignored by the host. The DEV ID
with Keep Alive must be the PR box device.

Tho Transmission Protocol . . .

The transmission protocol is as follows:
The originating device sends its data and waits for an ACK (all OK) or a NAK (something doesn't track, retransmit). Status information is a little bit different, in that the originating device, host will be expecting something other than the ASCII ACK/NAK character back. This is where the Reply bit is used.

If a NAX is received by either the PR box or the host, the source device will retransmit the previous transmission. The device which sent the NAX will flush the previous transmission and respond to the re-transmission as a new request.

Illustrative diagrams are shown in Fig.
llA-C which respectively show host originated data;
PR box originated data and a report request by the host.

When a self-test command is transmitted directly to a peripheral, i.e. as regular data, the response coming back will be handled the same way, 131~00~

i.e. as data, and the Reply bit will not be set and the DEV ID will be that of the peripheral device.
The PR box has no special commands to individually test individual peripherals.

When a device overrun error occurs, data may be lost. When the PR box gets an overrun error, and continues to receive data from that device before it can empty out it's queue, the receive for that device is turned o~f for 10 mSec.

After 10 mSec., the receive is turned on again, and the data that comes in is placed in the queue to send to the host. During the 10 mSec.
that receive is off, datà is lost~

Data ~rom a peripheral is limited by the PR
box to a ~aximum of six bytes per packet. If a peripheral sends out more than six consecutive data bytes without any null time period between the bytes, the PR box will make separate packets with a maximum of six data bytes. The packets from the host to the PR box do not have a data limit check.
However, the host should limit the data size in a packet to nine data bytes for safety. The PR box can safely store up to 256 packets of nine data bytes, and warn the host on a queue overflow condition. lf the host sends larger packets, it should send them less frequently, i.e. 128 packets of 18 data bytes, etc., with a bigger time gap between packets.

~ :

i31~0~8 As explained above, packeting of data from devices is handled by timers. When the PR box "seesn a ~nulln time period equal to two times the character length of a peripheral, the packet is closed off and placed in the queue to send to the host. (See the example above.) There is also a default for a transmission from the host of 10 mSec. null time in between two bytes of a packet.
If this timer expires a NAK will be sent to the host. If the default speed of the host is changed, the timer will revert to a time period of two times the character length.

As previously described, there are also timers for the ~eep Alive (about 10 SEC) and ACK/NAR (about 20 mSec) Commands to tho PR ~o~ ~r Self-Test Command T - Test PR System and send the self-test report (including the configuration).
Note: Test T will temporarily disconnect the PR Box from the host for less than 10 seconds.

8t~tus Report Command R - Report status of PR System, including Peripherals configuraiton.

Change Baud R~te ComMnnd (two forms) 0 Cnx - where ~nn is the channel number (0 - keyboard...7-PR-Host link), and nx~ is the baud rate.
0 Cnxyz - where nn~ is the spare channel (5), "x~ is the baud rate, ~yn is the parity (ASCII
O (Hex 4F) - for odd, ASCII E (Hex 45) - for even, or ASCII N (Hex 4E) - for none), and ~zn is the bits/char (Hex 5, 6, 7, or 8)/.
Note: The Parity and Bits/char can only be changed on the spare port, however, th~ baud rate on the spare channel can be changed without changing the parity and bits/char. The other ports can only have the baud rate changed.

The following is the table of baud rates (x):

Baud Rate Hex Code 134.5 03 i31~0~

2000 og

Claims (6)

1. In a system including a host processor and a peripheral repeater having a processor and at least one connector, a method of determining which of a plurality of different types of peripherals having a peripheral type are plugged into said connector, comprising:
a) sensing any change in the connection of a peripheral to said connector by the peripheral repeater;
b) generating an interrupt at said peripheral repeater processor when a change is sensed;
c) upon initial start-up of the system, each time a change from not plugged in to plugged in is detected, and in response to an interrupt, interrogating the connector by said host to obtain a result including the peripheral type if a peripheral is present; and d) storing in a table the type of peripheral which is plugged in to allow different types of peripherals to be interchangeably coupled to said connector during system start-up and in system operation.
2. The method according to claim 1, wherein a plurality of connectors are provided for a plurality of peripherals and further including sensing said change in the connection for any of said plurality of connectors, interrogating said connectors and updating said table with said results to allow interchangeability of different types of peripherals during system operation.
3. The method according to claim 2, wherein said peripheral repeater receives inputs from said peripherals and resends them to said host processor and receives inputs from said host and resending them to said peripherals and further comprising:
a) sending a single message to said host processor from said peripheral repeater processor indicating which peripheral connector has caused the interrupt; and b) interrogating said connector, through said peripheral repeater, from said host processor.
4. In a system including a processor and at least one connector for providing an input to said processor, an apparatus for detecting which of a plurality of different peripherals is plugged into said connector comprising:
a) means for detecting a current path through said connector for indicating that a peripheral is plugged into said connector, said means providing an output;
b) said processor including means responsive to said output for sending interrogation commands to said connector;
and c) means for storing data, coupled to said processor, for storing a type of peripheral plugged into said connector wherein different types of peripherals can be interchangeably coupled to the connector during system operation.
5. Apparatus according to claim 4, wherein said output comprises an interrupt and said means for detecting including means for generating an interrupt when a change in said current path is sensed.
6. Apparatus according to claim 5, wherein said system includes a host processor and a peripheral repeater having a processor, said peripheral repeater receiving inputs through a plurality of said connectors for a plurality of peripherals and resending them to said host and receiving inputs from said host and resending them to said peripherals and further including said means for detecting which is adapted to sense said change in the current path at any of said connectors, and wherein said means for detecting includes a register for storing a number associated with the connector where a change was sensed and said means for storing includes locations for storing a peripheral type for each of said connectors and further wherein:
a) said means for generating said interrupt is located at said peripheral repeater processor, and b) said means for sending interrogation commands comprises said host processor.
CA000574585A 1987-08-13 1988-08-12 System permitting peripheral interchangeability Expired - Fee Related CA1315008C (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US085,105 1987-08-13
US07/085,105 US4862355A (en) 1987-08-13 1987-08-13 System permitting peripheral interchangeability during system operation

Publications (1)

Publication Number Publication Date
CA1315008C true CA1315008C (en) 1993-03-23

Family

ID=22189500

Family Applications (1)

Application Number Title Priority Date Filing Date
CA000574585A Expired - Fee Related CA1315008C (en) 1987-08-13 1988-08-12 System permitting peripheral interchangeability

Country Status (8)

Country Link
US (1) US4862355A (en)
EP (1) EP0310788B1 (en)
JP (1) JPH01152556A (en)
KR (1) KR930002329B1 (en)
AU (1) AU600160B2 (en)
CA (1) CA1315008C (en)
DE (1) DE3855599T2 (en)
IL (1) IL87400A (en)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5263148A (en) * 1988-09-09 1993-11-16 Compaq Computer Corporation Method and apparatus for configuration of computer system and circuit boards
JPH03144716A (en) * 1989-10-31 1991-06-20 Toshiba Corp Personal computer
FR2664380B1 (en) * 1990-07-03 1994-04-15 Cogema MULTIFUNCTIONAL MEASURING APPARATUS.
US5265238A (en) * 1991-01-25 1993-11-23 International Business Machines Corporation Automatic device configuration for dockable portable computers
US5551012A (en) * 1991-04-22 1996-08-27 Acer Incorporated Single socket upgradeable computer motherboard with automatic detection and socket reconfiguration for inserted CPU chip
US5761479A (en) * 1991-04-22 1998-06-02 Acer Incorporated Upgradeable/downgradeable central processing unit chip computer systems
EP0510241A3 (en) * 1991-04-22 1993-01-13 Acer Incorporated Upgradeable/downgradeable computer
EP0529142A1 (en) * 1991-08-30 1993-03-03 Acer Incorporated Upgradeable/downgradeable computers
JP2986299B2 (en) * 1992-04-15 1999-12-06 インターナショナル・ビジネス・マシーンズ・コーポレイション Peripheral device connection detection system
US5289372A (en) * 1992-08-18 1994-02-22 Loral Aerospace Corp. Global equipment tracking system
EP0640978A3 (en) * 1993-08-31 1998-10-07 Ohmeda Inc. Non-invasive software update apparatus
US5682529A (en) * 1994-03-14 1997-10-28 Apple Computer, Inc. System for dynamically accommodating changes in display configuration by notifying changes to currently running application programs to generate information by application programs to conform to changed configuration
JPH09190267A (en) * 1995-08-23 1997-07-22 Toshiba Corp System and method for dynamically reconstituting keyboard allocation based on external event
US5940586A (en) * 1995-10-16 1999-08-17 International Business Machines Corporation Method and apparatus for detecting the presence of and disabling defective bus expansion devices or Industry Standard Architecture (ISA) adapters
US5787019A (en) * 1996-05-10 1998-07-28 Apple Computer, Inc. System and method for handling dynamic changes in device states
US6065069A (en) * 1996-07-15 2000-05-16 Micron Electronics, Inc. Circuit for sensing and automatically switching between an internal and external user I/O device
JP3366808B2 (en) 1996-07-18 2003-01-14 株式会社日立製作所 Electronic wallet
US6012103A (en) 1997-07-02 2000-01-04 Cypress Semiconductor Corp. Bus interface system and method
US6935946B2 (en) * 1999-09-24 2005-08-30 Igt Video gaming apparatus for wagering with universal computerized controller and I/O interface for unique architecture
US7043641B1 (en) 2000-03-08 2006-05-09 Igt Encryption in a secure computerized gaming system
US7988559B2 (en) 2001-03-08 2011-08-02 Igt Computerized gaming system, method and apparatus
CA2402389A1 (en) 2000-03-08 2002-09-19 Shuffle Master, Inc. Computerized gaming system, method and apparatus
KR100454674B1 (en) * 2000-08-28 2004-11-03 엘지전자 주식회사 Apparatus and method for automatic router configuration
US7203841B2 (en) * 2001-03-08 2007-04-10 Igt Encryption in a secure computerized gaming system
US6754725B1 (en) 2001-05-07 2004-06-22 Cypress Semiconductor Corp. USB peripheral containing its own device driver
US7618317B2 (en) 2001-09-10 2009-11-17 Jackson Mark D Method for developing gaming programs compatible with a computerized gaming operating system and apparatus
US6902481B2 (en) 2001-09-28 2005-06-07 Igt Decoupling of the graphical presentation of a game from the presentation logic
US8708828B2 (en) 2001-09-28 2014-04-29 Igt Pluggable modular gaming modifiers and configuration templates for gaming environments
US7931533B2 (en) 2001-09-28 2011-04-26 Igt Game development architecture that decouples the game logic from the graphics logics
US7689724B1 (en) 2002-08-16 2010-03-30 Cypress Semiconductor Corporation Apparatus, system and method for sharing data from a device between multiple computers
US7293118B1 (en) 2002-09-27 2007-11-06 Cypress Semiconductor Corporation Apparatus and method for dynamically providing hub or host operations
US7653123B1 (en) 2004-09-24 2010-01-26 Cypress Semiconductor Corporation Dynamic data rate using multiplicative PN-codes
US8315269B1 (en) 2007-04-18 2012-11-20 Cypress Semiconductor Corporation Device, method, and protocol for data transfer between host device and device having storage interface
TWI448902B (en) * 2007-08-24 2014-08-11 Cypress Semiconductor Corp Bridge device with page-access based processor interface
US8090894B1 (en) 2007-09-21 2012-01-03 Cypress Semiconductor Corporation Architectures for supporting communication and access between multiple host devices and one or more common functions
US7895387B1 (en) 2007-09-27 2011-02-22 Cypress Semiconductor Corporation Devices and methods for sharing common target device with two different hosts according to common communication protocol
US8447845B1 (en) 2011-02-10 2013-05-21 Flir Systems, Inc. Setting a network device to default settings

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1505535A (en) * 1974-10-30 1978-03-30 Motorola Inc Microprocessor system
US4025906A (en) * 1975-12-22 1977-05-24 Honeywell Information Systems, Inc. Apparatus for identifying the type of devices coupled to a data processing system controller
JPS57146330A (en) * 1981-03-03 1982-09-09 Fujitsu Ltd Channel controlling system
GB2101370A (en) * 1981-06-26 1983-01-12 Philips Electronic Associated Digital data apparatus with memory interrogation
US4562535A (en) * 1982-04-05 1985-12-31 Texas Instruments Incorporated Self-configuring digital processor system with global system
EP0104545A3 (en) * 1982-09-27 1985-12-04 Kabushiki Kaisha Toshiba Input and output port control unit
JPS59186020A (en) * 1983-04-07 1984-10-22 Fanuc Ltd Data transfer controlling system
US4773036A (en) * 1984-07-13 1988-09-20 Ibm Corporation Diskette drive and media type determination
JPS61229146A (en) * 1985-04-03 1986-10-13 Nec Corp System for discriminating peripheral device
US4760553A (en) * 1985-06-03 1988-07-26 International Business Machines Corporation Terminal system configuration tracing method and apparatus
US4750136A (en) * 1986-01-10 1988-06-07 American Telephone And Telegraph, At&T Information Systems Inc. Communication system having automatic circuit board initialization capability
JPS62159260A (en) * 1986-01-08 1987-07-15 Canon Inc Supervisory device for peripheral equipment
AU606854B2 (en) * 1986-01-10 1991-02-21 Wyse Technology, Inc. Virtual peripheral controller
US4905232A (en) 1987-08-13 1990-02-27 Digital Equipment Corporation Peripheral repeater box
US4903218A (en) 1987-08-13 1990-02-20 Digital Equipment Corporation Console emulation for a graphics workstation
US4797608A (en) 1987-08-13 1989-01-10 Digital Equipment Corporation D.C. power monitor
US5123091A (en) 1987-08-13 1992-06-16 Digital Equipment Corporation Data processing system and method for packetizing data from peripherals

Also Published As

Publication number Publication date
EP0310788B1 (en) 1996-10-09
IL87400A0 (en) 1989-01-31
KR890004239A (en) 1989-04-20
AU600160B2 (en) 1990-08-02
IL87400A (en) 1991-12-15
DE3855599D1 (en) 1996-11-14
EP0310788A3 (en) 1991-05-15
JPH01152556A (en) 1989-06-15
US4862355A (en) 1989-08-29
AU2090988A (en) 1989-02-16
DE3855599T2 (en) 1997-05-15
KR930002329B1 (en) 1993-03-29
EP0310788A2 (en) 1989-04-12

Similar Documents

Publication Publication Date Title
CA1315008C (en) System permitting peripheral interchangeability
US5123091A (en) Data processing system and method for packetizing data from peripherals
US4860292A (en) Communication protocol
US5230071A (en) Method for controlling the variable baud rate of peripheral devices
EP0188522B1 (en) Polling method for data processing system
US5619722A (en) Addressable communication port expander
CA1078965A (en) Remote controlled test interface unit
US4106091A (en) Interrupt status indication logic for polled interrupt digital system
US5289474A (en) Communication network interface testing system
GB1494841A (en) Data communications system
CN100365994C (en) Method and system for regulating ethernet
EP0085437A2 (en) Monitor for transmission line
US4568161A (en) Computer controlled slide projector interface arrangement
US5684960A (en) Real-time ring bandwidth utilization calculator by sampling over a selected interval latch's states set by predetermined bit pattern on the transmission medium
US5101477A (en) System for high speed transfer of data frames between a channel and an input/output device with request and backup request count registers
CN107168834A (en) Method and device for detecting computer startup fault
EP0303288B1 (en) Peripheral repeater box
US6016309A (en) Apparatus for an automatic speed and data length selection of an asychronous data link
GB2062419A (en) Improvements in or relating to information retrieval
KR830008236A (en) Data processing system with device of communication subsystem to establish byte synchronization
US5287534A (en) Correcting crossover distortion produced when analog signal thresholds are used to remove noise from signal
CN114970428A (en) Verification system and method for Flexray bus controller in SoC
CN111930582A (en) System management bus detection platform, processor and system management bus detection method
US6944176B1 (en) Method and apparatus for bit level network data multiplexing
JP2564982B2 (en) General-purpose interface controller

Legal Events

Date Code Title Description
MKLA Lapsed