Method and apparatus for performing LZW data compression utilizing an associative memory

- Unisys Corporation

An associative memory is utilized to perform LZW data compression. The respective locations of the memory contain a prefix code field and a character field. A register containing a code field and a character field is associatively compared to the locations of the memory to determine if a match exists therewith. If a match is found, the address of the match is inserted in the code field of the register and the next input character is inserted in the character field thereof. This process is continued until no match occurs. The code existing in the code field of the register is transmitted as the compressed code of the string and the contents of the register is written into the next empty location of the memory. A next cycle is initiated by nulling the code field of the register and repeating the described steps.

Skip to:  ·  Claims  ·  References Cited  · Patent History  ·  Patent History

Claims

1. A data compression method for compressing an input stream of data character signals into a stream of compressed code signals, said data character signals belonging to an alphabet of data character signals containing (A) characters, comprising:

(a) utilizing an associative memory having a plurality of locations for storing string of data character signals, each location having a prefix code field and a character field, each location having an address associated therewith, the address providing a compressed code signal for a stored string,
(b) initializing said memory to contain (A) single character strings of said alphabet by nulling the prefix code fields of (A) locations of said memory and inserting the data character signals of said alphabet into the character fields of said (A) locations, respectively,
(c) utilizing a register having a code field and a character field,
(d) nulling said code field of said register and inserting a data character signal of said input stream into said character field of said register,
(e) associatively comparing the contents of said register with the contents of the locations of said memory to determine a match therewith,
(f) if a match is determined, inserting the address associated with the matched location into said code field of said register and inserting a next data character signal of said input stream into said character field of said register,
(g) repeating steps (e) and (f) until no match is determined, thereby finding the longest stored string in said memory matching said input stream,
(h) when no match is determined in step (e), providing the contents of said code field of said register as a compressed code signal, thereby providing the compressed code signal of said longest matched stored string,
(i) writing the contents of said code field and said character field of said register into the prefix code field and the character field, respectively, of a next empty location in said memory, thereby inserting into said memory an extended string comprising said longest matched stored string extended by the next following data character signal in said input stream, the address of said next empty location providing the compressed code signal for said extended string inserted into said memory,
(j) nulling said code field of said register after inserting said extended string into said memory, and
(k) repeating steps (e) through (j) until no further input stream of data character signals is available to be compressed.

2. The method of claim 1 further including assigning sequential addresses for accessing sequential empty locations of said memory for providing said next empty location of step (i), said sequential addresses beginning with (A)+1.

3. The method of claim 1 wherein said initializing step further comprises:

inserting into the character fields of the locations of said memory, except for said (A) locations, an arbitrary bit pattern not recognized as one of the data character signals of said alphabet.

4. Data compression apparatus for compressing an input stream of data character signals into a stream of compressed code signals, said data character signals belonging to an alphabet of data character signals containing (A) characters, comprising:

(a) an associative memory having a plurality of locations for storing strings of data character signals, each location having a prefix code field and a character field, each location having an address associated therewith, the address providing a compressed code signal for a stored string,
(b) said memory being initialized to contain (A) single character strings of said alphabet by nulling the prefix code fields of (A) locations of said memory and inserting the data character signals of said alphabet into the character fields of said (A) locations, respectively,
(c) a register having a code field and a character field,
(d) means for nulling said code field of said register and inserting a data character signal of said input stream into said character field of said register, and
(e) control means coupled to said memory and said register for operating said memory for associatively comparing the contents of said register with the contents of the locations of said memory to determine a match therewith,
(f) said control means being operative, if a match is determined, for causing the address associated with the matched location to be inserted into said code field of said register and for causing a next data character signal of said input stream to be inserted into said character field of said register,
(g) said control means being operative to repeat (e) and (f) until no match is determined, thereby finding the longest stored string in said memory matching said input stream,
(h) said control means being further operative, when no match is determined in (e), to provide the contents of said code field of said register as a compressed code signal, thereby providing the compressed code signal of said longest matched stored string,
(i) said control means further operating said memory for writing the contents of said code field and said character field of said register into the prefix code field and the character field, respectively, of a next empty location in said memory, thereby inserting into said memory an extended string comprising said longest matched stored string extended by the next following data character signal in said input stream, the address of said next empty location providing the compressed code signal for said extended string inserted into said memory,
(j) said control means being coupled to said means for nulling and being operative for nulling said code field of said register after inserting said extended string into said memory,
(k) said control means being operative to repeat (e) through (j) until no further input stream of data character signals is available to be compressed.

5. The apparatus of claim 4 further including an address counter for assigning sequential addresses for accessing sequential empty locations of said memory for providing said next empty location of (i), said sequential addresses beginning with (A)+1.

6. The apparatus of claim 4 wherein said memory is further initialized by inserting into the character fields of the locations of said memory, except for said (A) locations, an arbitrary bit pattern not recognized as one of the data character signals of said alphabet.

7. A data decompression method for decompressing an input stream of compressed code signals to recover a stream of data character signals corresponding thereto, said data character signals belonging to an alphabet of data character signals containing (A) characters, said input stream of compressed code signals being provided by a data compression method operating on an input stream of data character signals, said data compression method including

(a) utilizing an associative memory having a plurality of locations for storing strings of data character signals, each location having a prefix code field and a character field, each location having an address associated therewith, the address providing a compressed code signal for a stored string,
(b) initializing said memory to contain (A) single character strings of said alphabet by nulling the prefix code fields of (A) locations of said memory and inserting the data character signals of said alphabet into the character fields of said (A) locations, respectively,
(c) utilizing a register having a code field and a character field,
(d) nulling said code field of said register and inserting a data character signal of said input stream of data character signals into said character field of said register,
(e) associatively comparing the contents of said register with the contents of the locations of said memory to determine a match therewith,
(f) if a match is determined, inserting the address associated with the matched location into said code field of said register and inserting a next data character signal of said input stream of data character signals into said character field of said register,
(g) repeating steps (e) and (f) until no match is determined, thereby finding the longest stored string in said memory matching said input stream of data character signals,
(h) when no match is determined in step (e), providing the contents of said code field of said register as a compressed code signal, thereby providing the compressed code signal of said longest matched stored string,
(i) writing the contents of said code field and said character field of said register into the prefix code field and the character field, respectively, of a next empty location in said memory, thereby inserting into said memory an extended string comprising said longest matched stored string extended by the next following data character signal in said input stream, the address of said next empty location providing the compressed code signal for said extended string inserted into said memory,
(j) nulling said code field of said register after inserting said extended string into said memory, and
(k) repeating steps (e) through (j) until no further input stream of data character signals is available to be compressed,
wherein the following steps (o) through (y) comprise a decompression cycle of said data decompression method, said data decompression method comprising:
(l) utilizing a decompression memory having a plurality of locations for storing strings of data character signals, each location having a prefix code field and a character field, each location having an address associated therewith, the address providing a compressed code signal for a string stored in said decompression memory,
(m) initializing said decompression memory to contain (A) single character strings of said alphabet by nulling the prefix code fields of (A) locations of said decompression memory and inserting the data character signals of said alphabet into the character fields of said (A) locations, respectively,
(n) utilizing an address register for accessing said locations of said decompression memory,
(o) receiving a compressed code signal into an input code register,
(p) transferring the contents of said input code register to said address register,
(q) utilizing a prior code register for holding the compressed code signal received in the decompression cycle preceding a current decompression cycle,
(r) accessing the location of said decompression memory corresponding to the contents of said address register,
(s) inserting the contents of the character field of the accessed location into a stack, thereby inserting the data character signal in the character field of the accessed location into said stack,
(t) inserting the contents of the prefix code field of the accessed location into said address register,
(u) repeating steps (r) through (t) until the contents of said address register is null, thereby inserting into said stack the data character signals corresponding to the received compressed code signal,
(v) inserting the address of a next empty location into said address register,
(w) writing an update prefix code and an update character into the prefix code field and the character field, respectively, of the location of said decompression memory accessed by said address register, the update prefix code being provided by said prior code register, the update character being provided by the last data character signal inserted into said stack, thereby inserting into said decompression memory an extended string corresponding to the extended string inserted into said associative memory, the address of said next empty location providing the compressed code signal for said extended string inserted into said decompression memory,
(x) outputting the contents of said stack, thereby recovering the string of data character signals corresponding to the received compressed code signal,
(y) transferring the received compressed code signal in said input code register into said prior code register,
(z) repeating steps (o) through (y) until no further stream of compressed code signals is available to be decompressed.

8. The method of claim 7 wherein

said data decompression method includes an exception processing method invoked when a received compressed code signal does not have a corresponding string stored in said decompression memory, said received compressed code signal thereby being unrecognized, said exception processing method comprising:
creating an exception extended string comprising the string corresponding to the compressed code signal in said prior code register extended by said update character,
outputting said exception extended string, thereby outputting the string corresponding to said unrecognized compressed code signal, and
storing said exception extended string in said decompression memory, said unrecognized compressed code signal providing the compressed code signal corresponding to said stored exception extended string.

9. The method of claim 8 wherein said exception processing method comprises:

inserting said update character into said stack,
transferring the contents of said prior code register to said address register,
performing steps (r) through (x), thereby creating said exception extended string, outputting said exception extended string and storing said exception extended string in said decompression memory with the address of step (v) providing said unrecognized compressed code signal for said exception extended string, and
continuing said decompression method with step (y).

10. The method of claim 9 wherein

steps (e) through (j) comprise a compression cycle of said data compression method, and
said data compression method includes performing a current compression cycle following performing a prior compression cycle, said data compression method providing said unrecognized compressed code signal when the data compression method in the current compression cycle provides the compressed code signal of the extended string inserted into said associative memory in step (i) of the prior compression cycle.

11. The method of claim 10 wherein said data decompression method further includes:

utilizing an address counter for assigning sequential addresses for accessing sequential empty locations of said decompression memory, thereby providing the address of said next empty location of step (v), said sequential empty locations beginning with (A)+1, and
invoking said exception processing method in accordance with a comparison between a received compressed code signal in said input code register and the contents of said address counter.

12. The method of claim 7 wherein said data decompression method further includes assigning sequential addresses for accessing sequential empty locations of said decompression memory, thereby providing the address of said next empty location of step (v), said sequential empty locations beginning with (A)+1.

13. The method of claim 7 wherein said outputting step comprises outputting the data character signals from said stack in an order reversed from the order in which the data character signals were inserted into said stack.

14. A data decompression method for decompressing an input stream of compressed code signals to recover a stream of data character signals corresponding thereto, said data character signals belonging to an alphabet of data character signals containing (A) characters, said input stream of compressed code signals being provided by a data compression method operating on an input stream of data character signals utilizing an associative memory, the following steps (d) through (n) comprising a decompression cycle of said data decompression method, said data decompression method comprising:

(a) utilizing a decompression memory having a plurality of locations for storing strings of data character signals, each location having a prefix code field and a character field, each location having an address associated therewith, the address providing a compressed code signal for a string stored in said decompression memory,
(b) initializing said decompression memory to contain (A) single character strings of said alphabet by nulling the prefix code fields of (A) locations of said decompression memory and inserting the data character signals of said alphabet into the character fields of said (A) locations, respectively,
(c) utilizing an address register for accessing said locations of said decompression memory,
(d) receiving a compressed code signal into an input code register,
(e) transferring the contents of said input code register to said address register,
(f) utilizing a prior code register for holding the compressed code signal received in the decompression cycle preceding a current decompression cycle,
(g) accessing the location of said decompression memory corresponding to the contents of said address register,
(h) inserting the contents of the character field of the accessed location into a stack, thereby inserting the data character signal in the character field of the accessed location into said stack,
(i) inserting the contents of the prefix code field of the accessed location into said address register,
(j) repeating steps (g) through (i) until the contents of said address register is null, thereby inserting into said stack the data character signals corresponding to the received compressed code signal,
(k) inserting the address of a next empty location into said address register,
(l) writing an update prefix code and an update character into the prefix code field and the character field, respectively, of the location of said decompression memory accessed by said address register, the update prefix code being provided by said prior code register, the update character being provided by the last data character signal inserted into said stack, thereby inserting into said decompression memory an extended string corresponding to an extended string inserted into said associative memory, the address of said next empty location providing the compressed code signal for said extended string inserted into said decompression memory,
(m) outputting the contents of said stack, thereby recovering the string of data character signals corresponding to the received compressed code signal,
(n) transferring the received compressed code signal in said input code register into said prior code register,
(o) repeating steps (d) through (n) until no further stream of compressed code signals is available to be decompressed,
said data decompression method further including an exception processing method invoked when a received compressed code signal does not have a corresponding string stored in said decompression memory, said received compressed code signal thereby being unrecognized, said exception processing method comprising:
creating an exception extended string comprising the string corresponding to the compressed code signal in said prior code register extended by said update character,
outputting said exception extended string, thereby outputting the string corresponding to said unrecognized compressed code signal, and
storing said exception extended string in said decompression memory, said unrecognized compressed code signal providing the compressed code signal corresponding to said stored exception extended string.

15. The method of claim 14 wherein said exception processing method comprises:

inserting said update character into said stack,
transferring the contents of said prior code register to said address register,
performing steps (g) through (m), thereby creating said exception extended string, outputting said exception extended string and storing said exception extended string in said decompression memory with the address of step (k) providing said unrecognized compressed code signal for said exception extended string, and
continuing said decompression method with step (n).

16. The method of claim 15 wherein said data decompression method further includes:

utilizing an address counter for assigning sequential addresses for accessing sequential empty locations of said decompression memory, thereby providing the address of said next empty location of step (k), said sequential empty locations beginning with (A)+1, and
invoking said exception processing method in accordance with a comparison between a received compressed code signal in said input code register and the contents of said address counter.

17. The method of claim 14 wherein said data decompression method further includes assigning sequential addresses for accessing sequential empty locations of said decompression memory, thereby providing the address of said next empty location of step (k), said sequential empty locations beginning with (A)+1.

18. The method of claim 14 wherein said outputting step comprises outputting the data character signals from said stack in an order reversed from the order in which the data character signals were inserted into said stack.

19. Data decompression apparatus for decompressing an input stream of compressed code signals to recover a stream of data character signals corresponding thereto, said data character signals belonging to an alphabet of data character signals containing (A) characters, said input stream of compressed code signals being provided by data compression apparatus responsive to an input stream of data character signals, said data compression apparatus including

(a) an associative memory having a plurality of locations for storing strings of data character signals, each location having a prefix code field and a character field, each location having an address associated therewith, the address providing a compressed code signal for a stored string,
(b) said memory being initialized to contain (A) single character strings of said alphabet by nulling the prefix code fields of (A) locations of said memory and inserting the data character signals of said alphabet into the character fields of said (A) locations, respectively,
(c) a register having a code field and a character field,
(d) means for nulling said code field of said register and inserting a data character signal of said input stream of data character signals into said character field of said register, and
(e) control means coupled to said memory and said register for operating said memory for associatively comparing the contents of said register with the contents of the locations of said memory to determine a match therewith,
(f) said control means being operative, if a match is determined, for causing the address associated with the matched location to be inserted into said code field of said register and for causing a next data character signal of said input stream of data character signals to be inserted into said character field of said register,
(g) said control means being operative to repeat (e) and (f) until no match is determined, thereby finding the longest stored string in said memory matching said input stream of data character signals,
(h) said control means being further operative, when no match is determined in (e), to provide the contents of said code field of said register as a compressed code signal, thereby providing the compressed code signal of said longest matched stored string,
(i) said control means further operating said memory for writing the contents of said code field and said character field of said register into the prefix code field and the character field, respectively, of a next empty location in said memory, thereby inserting into said memory an extended string comprising said longest matched stored string extended by the next following data character signal in said input stream of data character signals, the address of said next empty location providing the compressed code signal for said extended string inserted into said memory,
(j) said control means being coupled to said means for nulling and being operative for nulling said code field of said register after inserting said extended string into said memory,
(k) said control means being operative to repeat (e) through (j) until no further input stream of data character signals is available to be compressed,
wherein the following (o) through (y) define a decompression cycle of said data decompression apparatus, said data decompression apparatus comprising:
(l) a decompression memory having a plurality of locations for storing strings of data character signals, each location having a prefix code field and a character field, each location having an address associated therewith, the address providing a compressed code signal for a string stored in said decompression memory,
(m) said decompression memory being initialized to contain (A) single character strings of said alphabet by nulling the prefix code fields of (A) locations of said decompression memory and inserting the data character signals of said alphabet into the character fields of said (A) locations, respectively,
(n) an address register for accessing said locations of said decompression memory,
(o) an input code register for receiving a compressed code signal,
(p) means for transferring the contents of said input code register to said address register,
(q) a prior code register for holding the compressed code signal received in the decompression cycle preceding a current decompression cycle,
(r) a stack,
(s) decompression control means coupled to said decompression memory, to said address register, to said input code register, to said prior code register and to said stack for operating said decompression memory for accessing the location of said decompression memory corresponding to the contents of said address register,
(t) said decompression control means being operative for causing the contents of the character field of the accessed location to be inserted into said stack, thereby inserting the data character signal in the character field of the accessed location into said stack,
(u) said decompression control means being operative for causing the contents of the prefix code field of the accessed location to be inserted into said address register,
(v) said decompression control means being operative to repeat (s) through (u) until the contents of said address register is null, thereby inserting into said stack the data character signals corresponding to the received compressed code signal,
(w) said decompression control means being further operative to insert the address of a next empty location into said address register and to write an update prefix code and an update character into the prefix code field and the character field, respectively, of the location of said decompression memory accessed by said address register, the update prefix code being provided by said prior code register, the update character being provided by the last data character signal inserted into said stack, thereby inserting into said decompression memory an extended string corresponding to the extended string inserted into said associative memory, the address of said next empty location providing the compressed code signal for said extended string inserted into said decompression memory,
(x) said decompression control means being further operative to output the contents of said stack, thereby recovering the string of data character signals corresponding to the received compressed code signal,
(y) said decompression control means being further operative to transfer the received compressed code signal in said input code register into said prior code register,
(z) said decompression control means being operative to repeat (o) through (y) until no further stream of compressed code signals is available to be decompressed.

20. The apparatus of claim 19 wherein

said decompression control means is operative to operate said data decompression apparatus in an exception processing mode invoked when a received compressed code signal does not have a corresponding string stored in said decompression memory, said received compressed code signal thereby being unrecognized, said decompression control means being operative in said exception processing mode to:
create an exception extended string comprising the string corresponding to the compressed code signal in said prior code register extended by said update character,
output said exception extended string, thereby outputting the string corresponding to said unrecognized compressed code signal, and
store said exception extended string in said decompression memory, said unrecognized compressed code signal providing the compressed code signal corresponding to said stored exception extended string.

21. The apparatus of claim 20 wherein said decompression control means is operative in said exception processing mode to:

insert said update character into said stack,
transfer the contents of said prior code register to said address register,
perform (s) through (x), to thereby create said exception extended string, output said exception extended string and store said exception extended string in said decompression memory with the address of (w) providing said unrecognized compressed code signal for said exception extended string, and
continue the decompression cycle with (y).

22. The apparatus of claim 21 wherein

(e) through (j) define a compression cycle of said data compression apparatus, said data compression apparatus performing a current compression cycle following performing a prior compression cycle, said data compression apparatus providing said unrecognized compressed code signal when said data compression apparatus in the current compression cycle provides the compressed code signal of the extended string inserted into said associative memory in (i) of the prior compression cycle.

23. The apparatus of claim 21 wherein said data decompression apparatus further includes:

an address counter for assigning sequential addresses for accessing sequential empty locations of said decompression memory, thereby providing the address of said next empty location of (w), said sequential empty locations beginning with (A)+1, and
means for comparing a received compressed code signal in said input code register with the contents of said address counter,
said decompression control means operative to invoke said exception processing mode in accordance with said comparison between said received compressed code signal in said input code register and said contents of said address counter.

24. The apparatus of claim 19 wherein said data decompression apparatus further includes an address counter for assigning sequential addresses for accessing sequential empty locations of said decompression memory, thereby providing the address of said next empty location of (w), said sequential empty locations beginning with (A)+1.

25. The apparatus of claim 19 wherein said decompression control means is further operative to output the data character signals from said stack in an order reversed from the order in which the data character signals were inserted into said stack.

26. Data decompression apparatus for decompressing an input stream of compressed code signals to recover a stream of data character signals corresponding thereto, said data character signals belonging to an alphabet of data character signals containing (A) characters, said input stream of compressed code signals being provided by data compression apparatus responsive to an input stream of data character signals, said data compression apparatus operating on said input stream of data character signals utilizing an associative memory, wherein the following (d) through (n) define a decompression cycle of said data decompression apparatus, said data decompression apparatus comprising:

(a) a decompression memory having a plurality of locations for storing strings of data character signals, each location having a prefix code field and a character field, each location having an address associated therewith, the address providing a compressed code signal for a string stored in said decompression memory,
(b) said decompression memory being initialized to contain (A) single character strings of said alphabet by nulling the prefix code fields of (A) locations of said decompression memory and inserting the data character signals of said alphabet into the character fields of said (A) locations, respectively,
(c) an address register for accessing said locations of said decompression memory,
(d) an input code register for receiving a compressed code signal,
(e) means for transferring the contents of said input code register to said address register,
(f) a prior code register for holding the compressed code signal received in the decompression cycle preceding a current decompression cycle,
(g) a stack,
(h) decompression control means coupled to said decompression memory, to said address register, to said input code register, to said prior code register and to said stack for operating said decompression memory for accessing the location of said decompression memory corresponding to the contents of said address register,
(i) said decompression control means being operative for causing the contents of the character field of the accessed location to be inserted into said stack, thereby inserting the data character signal in the character field of the accessed location into said stack,
(j) said decompression control means being operative for causing the contents of the prefix code field of the accessed location to be inserted into said address register,
(k) said decompression control means being operative to repeat (h) through (j) until the contents of said address register is null, thereby inserting into said stack the data character signals corresponding to the received compressed code signal,
(l) said decompression control means being further operative to insert the address of a next empty location into said address register and to write an update prefix code and an update character into the prefix code field and the character field, respectively, of the location of said decompression memory accessed by said address register, the update prefix code being provided by said prior code register, the update character being provided by the last data character signal inserted into said stack, thereby inserting into said decompression memory an extended string corresponding to an extended string inserted into said associative memory, the address of said next empty location providing the compressed code signal for said extended string inserted into said decompression memory,
(m) said decompression control means being further operative to output the contents of said stack, thereby recovering the string of data character signals corresponding to the received compressed code signal,
(n) said decompression control means being further operative to transfer the received compressed code signal in said input code register into said prior code register,
(o) said decompression control means being operative to repeat (d) through (n) until no further stream of compressed code signals is available to be decompressed,
said decompression control means being further operative to operate said data decompression apparatus in an exception processing mode invoked when a received compressed code signal does not have a corresponding string stored in said decompression memory, said received compressed code signal thereby being unrecognized, said decompression control means being operative in said exception processing mode to:
create an exception extended string comprising the string corresponding to the compressed code signal in said prior code register extended by said update character,
output said exception extended string, thereby outputting the string corresponding to said unrecognized compressed code signal, and
store said exception extended string in said decompression memory, said unrecognized compressed code signal providing the compressed code signal corresponding to said stored exception extended string.

27. The apparatus of claim 26 wherein said decompression control means is operative in said exception processing mode to:

insert said update character into said stack,
transfer the contents of said prior code register to said address register,
perform (h) through (m), to thereby create said exception extended string, output said exception extended string and store said exception extended string in said decompression memory with the address of (l) providing said unrecognized compressed code signal for said exception extended string, and
continue the decompression cycle with (n).

28. The apparatus of claim 27 wherein said data decompression apparatus further includes:

an address counter for assigning sequential addresses for accessing sequential empty locations of said decompression memory, thereby providing the address of said next empty location of (l), said sequential empty locations beginning with (A)+1, and
means for comparing a received compressed code signal in said input code register with the contents of said address counter,
said decompression control means operative to invoke said exception processing mode in accordance with said comparison between said received compressed code signal in said input code register and said contents of said address counter.

29. The apparatus of claim 26 wherein said data decompression apparatus further includes an address counter for assigning sequential addresses for accessing sequential empty locations of said decompression memory, thereby providing the address of said next empty location of (l), said sequential empty locations beginning with (A)+1.

30. The apparatus of claim 26 wherein said decompression control means is further operative to output the data character signals from said stack in an order reversed from the order in which the data character signals were inserted into said stack.

Referenced Cited
U.S. Patent Documents
5339076 August 16, 1994 Jiang
5369605 November 29, 1994 Parks
5373290 December 13, 1994 Lempel et al.
5455576 October 3, 1995 Clark, II et al.
5469161 November 21, 1995 Bezek
5485526 January 16, 1996 Tobin
5532693 July 2, 1996 Winters et al.
Patent History
Patent number: 5838264
Type: Grant
Filed: May 29, 1997
Date of Patent: Nov 17, 1998
Assignee: Unisys Corporation (Blue Bell, PA)
Inventor: Albert B. Cooper (New York, NY)
Primary Examiner: Brian K. Young
Assistant Examiner: Jason L. W. Kost
Attorneys: Albert B. Cooper, Mark T. Starr
Application Number: 8/864,753
Classifications