1461110720-9afc7a71-a9e3-4120-9af9-7d48a929e1c1

1. A prodrug of an analog of CC-1065, having three subunits linked by amide bonds, wherein the first subunit is a seco-CBI (cyclopropabenzindole) molecule represented by the following formula:
wherein X is halogen, and
wherein the second and third subunits together are represented by the formula (II):
wherein R represents a linking group that enables linkage of said prodrug to a cell binding agent; R1-R6 are each independently hydrogen, C1-C3 linear alkyl, methoxy, hydroxyl, primary amino, secondary amino, tertiary amino, or amido; and R7 is piperazine carbamate, 4-piperidino-piperidino carbamate or phosphate, and
wherein the compound of formula (I) is covalently bonded the compound of formula (II) via the secondary amino group of the pyrrole moiety of the first subunit to the C-2 carboxyl of the second subunit.
2. The prodrug of claim 1, wherein R comprises a thiol or a disulfide bond.
3. The prodrug of claim 1, wherein the linking group is selected from the group consisting of NHCO(CH2)mSZ, NHCOC6H4(CH2)mSZ, NHCOC6H4O(CH2)mSZ, NHCO(CH2)m(OCH2CH2)nSZ, NHCOC6H4(CH2)m(OCH2CH2)nSZ, and NHCOC6H4O(CH2)m(OCH2CH2)nSZ wherein: Z represents H or SR8, wherein R8 represents methyl, linear alkyl, branched alkyl, cyclic alkyl, simple or substituted aryl or heterocyclic selected from the group consisting of furyl, pyrrollyl, pyridyl, and thiophene, m represents an integer of 1 to 10, and n represents an integer of 4 to 1000.
4. The prodrug of claim 1, wherein the linking group is selected from the group consisting of NHCO(CH2)m(OCH2CH2)nSZ, NHCOC6H4(CH2)m(OCH2CH2)nSZ, and NHCOC6H4O(CH2)m(OCH2CH2)nSZ wherein: Z represents H or SR8, wherein R8 represents methyl, linear alkyl, branched alkyl, cyclic alkyl, simple or substituted aryl or heterocyclic selected from the group consisting of furyl, pyrrollyl, pyridyl, and thiophene, m represents an integer of 1 to 10, and n represents an integer from 2 to 1000.
5. The prodrug of claim 3, wherein the linking group is selected from the group consisting of NHCO(CH2)2SH, NHCO(CH2)2SSCH3, NHCO(CH2)2(OCH2CH2)nSH and NHCO(CH2)2(OCH2CH2)nSSCH3.
6. The prodrug of claim 1, wherein the first subunit is represented by formula (I):

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

What is claimed is:

1. An inkjet printing system of the type having a replaceable ink supply for providing ink to a printhead, the inkjet printing system comprising:
a semipermanent inkjet printhead having a fluid input for receiving ink and an ejection portion for selectively depositing ink in response to control signals, the inkjet printhead capable of printing a plurality of ink volumes;
a replaceable ink supply for storing one of the plurality of ink volumes, the replaceable ink supply configured for providing ink to the inkjet printhead; and
an accumulator portion in fluid communication with the inkjet printhead and the replaceable ink supply, the accumulator portion compensates for air introduced into the inkjet printhead to maintain the printhead pressure range within an operating range allowing the printhead to print the plurality of ink volumes without purging air from the inkjet printhead.
2. The inkjet printing system of claim 1, wherein the printhead further comprises:
an internal plenum in fluid communication with the ejection portion; and
a regulator valve that receives ink from the fluid input and provides ink to the plenum, the regulator valve opens and closes in response to pressure changes in the plenum to maintain a specified negative pressure in the plenum.
3. The inkjet printing system of claim 1, wherein the printhead includes an internal plenum in fluid communication with the ejection portion, the fluid accumulator including a flexible member having first and second surfaces, the first surface communicating with an outside atmosphere, the second surface communicating with ink in the internal plenum, the flexible member contracts in response to bubble expansion to maintain a negative internal pressure in the plenum.
4. The inkjet printing system of claim 1, further comprising a fluid conduit in fluid communication with the printhead at one end and having the fluid input at the other end.
5. The inkjet printing system of claim 1, wherein the semipermanent printhead is capable of printing over the life of at least five ink supplies.
6. An inkjet printing system comprising:
a replaceable ink supply for providing a supply volume of ink to a printhead; and
a printhead having an ejector portion for ejecting droplets of ink in response to control signals, the printhead including a plenum for providing ink to the ejector portion, the printhead including a valve that provides one way flow of ink from the replaceable ink supply to the printhead, the valve opens and closes in response to pressure changes in the plenum to maintain a negative pressure range in the plenum, the plenum also storing a volume of accumulated air that increases with the use of each replaceable ink supply, the printhead including an accumulator that compensates for expansion of the accumulated air to maintain the negative pressure range in the plenum.
7. The inkjet printing system of claim 6, wherein the valve includes a nozzle for allowing ink into the plenum and a valve seat for sealing the nozzle to halt ink flow into the plenum.
8. The inkjet printing system of claim 7, wherein the valve seat is mounted to a pivotally mounted lever.
9. The inkjet printing system of claim 6, wherein the fluid accumulator includes a flexible member having first and second surfaces, the first surface communicating with an outside atmosphere, the second surface communicating with ink in the internal plenum, the flexible member contracts in response to bubble expansion to maintain a negative internal pressure in the plenum.
10. The inkjet printing system of claim 9, wherein the plenum has a negative internal pressure that provides a bias force on the flexible member, the biase force provides opens the valve when the biase force exceeds a certain threshold.
11. A printing system, comprising:
a replaceable printhead capable of printing a plurality of ink volumes without purging air from the replaceable printhead, the printhead including an ejector portion for ejecting droplets of ink in response to control signals, the printhead including an internal plenum in communication with the ejector portion, the printhead including an accumulator that compensates for expansion of accumulated air in the plenum, the printhead including a fluid inlet that is fluidically coupled to the plenum for providing ink to the plenum;
a fluid conduit having a self-sealing conduit outlet adapted to be fluidically coupled to the fluid inlet, the conduit outlet self-seals when it is uncoupled from the fluid inlet to prevent air from entering the conduit outlet, the fluid conduit including a self-sealing conduit inlet; and
a replaceable ink supply having a fluid outlet adapted to be fluidically coupled to the conduit inlet, the conduit inlet self-seals when it is uncoupled from the fluid inlet to prevent air from entering the conduit inlet, the replaceable ink supply including a fluid reservoir in fluid communication with the fluid outlet for containing one of the plurality of ink volumes.
12. The printing system of claim 11, wherein the fluid conduit includes a portion formed from a high air barrier material having an oxygen permeability characteristic of less than 100 ccmil(11 in2dayatm), at 23 C., 0% Rh.
13. The printing system of claim 12, wherein the high air barrier material is a polymer chosen from the group consisting of polyvinylidene choride copolymer, polychlorotrifluouroethylene, and ethylenechlorotrifluoroethylene.
14. The printing system of claim 11, further comprising a valve fluidically interposed between and fluidically connecting the fluid outlet and the plenum, the valve opens and closes in response to pressure changes in the plenum to maintain a negative pressure in the plenum to assure proper operation of the ejector portion.
15. An apparatus for providing ink to a printing system, the printing system including a semipermanent printhead having an ejector portion for depositing ink in response to control signals, the printhead capable of printing a plurality of ink volumes, the printhead including an internal plenum in communication with the ejector portion, the internal plenum having a negative internal pressure to prevent printhead failure, the plenum including an accumulator portion that is adapted to accommodate expansion and contraction of up to a warehouse volume of air in the plenum while maintaining the negative internal pressure, the internal plenum fluidically coupled to a self-sealing fluid coupling device, the apparatus including:
a reservoir for storing one of the plurality of ink volumes, the reservoir adapted to be releasably mounted to the printing system;
a fluid outlet in communication with the reservoir, the fluid outlet adapted to fluidically couple to the fluid coupling device when the reservoir is releasably mounted to the printing system; and
wherein ink that flows out of the reservoir, through the fluid outlet, and to the internal plenum when the reservoir is releasably mounted to the printing system, the ink carrying dissolved and free air to the plenum, and wherein the reservoir, the fluid outlet, the and the ink are adapted to provide less than the warehouse volume of air during the life of the printhead without purging air from the printing system.
16. The apparatus of claim 15, wherein the accumulator portion includes a flexible member having first and second surfaces, the first surface communicating with an outside atmosphere, the second surface communicating with ink in the internal plenum, the flexible member contracts in response to bubble expansion to maintain a negative internal pressure in the plenum.
17. The apparatus of claim 15, wherein the printhead includes a valve in fluid communication with the plenum, the valve is fluidically coupled to the fluid outlet, the valve opens and closes in response to pressure changes in the plenum to maintain a negative pressure range in the plenum that assure proper operation of the ejector portion.
18. The apparatus of claim 15, wherein the fluid outlet is adapted to introduce less than 0.02 cc of air when it is coupled and uncoupled from the fluid coupling device.
19. The apparatus of claim 15, wherein the fluid coupling device includes a needle including an outlet hole, the needle is surrounded by a sliding collar, the fluid outlet is adapted to engage the needle and the sliding collar to move the sliding collar from a sealed position wherein the sliding collar seals the outlet hole to a unsealed position wherein the outlet hole is fluidically coupled to the fluid outlet.
20. The apparatus of claim 19, wherein the needle and the sliding collar are surrounded by a cylindrical boss, the fluid outlet is sized to be received in the cylindrical boss while providing alignment and proper fluidic connection between the needle and the distal end of the fluid outlet.
21. The apparatus of claim 15, wherein the ink includes an additive that reduces the outgas rate of the ink below that of water.
22. The apparatus of claim 21, wherein the additive is in a concentration of at least 2 weight percent of the ink.
23. The apparatus of claim 22, wherein the additive is in a concentration of at least 10 weight percent of the ink.
24. The apparatus of claim 15, wherein the printing system includes a fluid conduit having a first end that is fluidically coupled to the plenum, a second end fluidically coupled to the self-sealing fluid coupling device, and a flexible portion therebetween to allow the first end to scan with the printhead and the self-sealing couping device to be stationary relative to the printhead.
25. The apparatus of claim 15, wherein the self-sealing fluid coupling device scans with the printhead.
26. An ink delivery apparatus adapted to provide ink to a printing system, the printing system including a printhead having an ejector portion for depositing ink in response to control signals, the printhead including an internal plenum for providing ink to the ejector portion, the printing system including a fluid input associated with the printhead that is fluidicaly coupled to the internal plenum, the printhead capable of printing a plurality of ink volumes, the ink delivery apparatus comprising:
a fluid outlet adapted to fluidically couple to the fluid input; and
a fluid reservoir in fluid communication with the fluid outlet for containing one of the plurality of ink volumes, the fluid reservoir and the internal plenum fluidically couple to form an ink delivery system for the ejector portion when the fluid outlet is fluidically coupled to the fluid input, the ink delivery system including a fluid accumulator that is adapted to accommodate air introduced to the ink delivery system to allow the printhead to print the plurality of ink volumes without purging air from the inkjet printhead.
27. The apparatus of claim 26, wherein the ink delivery system further includes a regulator valve that fluidically couples the fluid reservoir to the printhead, the regulator valve opens and closes in response to pressure changes in the internal plenum to maintain a pressure range that allows proper operation of the ejector portion.
28. The apparatus of claim 26, wherein the fluid accumulator is integral to the printhead.
29. The apparatus of claim 26, wherein the fluid accumulator is integral to the fluid reservoir.
30. The apparatus of claim 29, wherein the fluid accumulator provides an accurate pressure regulation for assuring delivery of ink to the ejector portion having an operating pressure range enabling proper operation of the ejector portion.
31. The apparatus of claim 26, wherein the apparatus is a replaceable ink supply containing between 10 and 100 cc of deliverable ink.
32. An ink delivery method for a printing system, the printing system including a semipermanent printhead, the printhead having a fluid input for receiving ink and an ejector portion for ejecting droplets of ink on media, the printhead including a plenum for providing ink to the ejector portion, the plenum having an initial volume of accumulated air, the printhead including an accumulator, the method comprising:
(a) fluidically coupling a first volume of deliverable ink to the fluid input, a first volume of air added to the plenum while the first volume of ink is provided to the ejector portion;
(b) compensating for expansion of the initial and the first volumes of accumulated air in the printhead to maintain the printhead at a negative pressure within an operating pressure range;
(c) fluidically coupling a second volume of deliverable ink to the fluid input, a second volume of air added to the plenum while the second volume of ink is provided to the ejector portion; and
(d) compensating for expansion of the initial, first, and second volumes of air in the printhead to maintain the printhead at a negative pressure within an operating pressure range.
33. The ink delivery method of claim 32, further including opening and closing a regulator valve in response to pressure changes in the printhead to maintain a negative pressure in the printhead.
34. The ink delivery method of claim 32, wherein the accumulator has first and second surfaces, the first surface in contact with an outside atmosphere, the second surface in contact with the plenum, the plenum exerts a pressure force on the second surface in proportion to the negative gauge pressure in the plenum that tends to pull the second surface into the plenum.
35. The ink delivery method of claim 34, further comprising an accumulator lever that exerts a lever force upon the second surface that opposes the pressure force, the accumulator lever pivots to track motion of the second surface as the accumulator expands and contracts in response to the expansion of the accumulated air.

1461110709-ecb28e95-4afc-4c3b-aaf9-53b12e63406e

In the claims:

1. A method of reducing power dissipation in a communications system having a plurality of adaptive filters each having a plurality of taps, said method comprising the steps of:
specifying a threshold error for the system; and
periodically adjusting the transfer function of at least one of the adaptive filters by selectively deactivating taps while ensuring that the error of the communications system does not exceed the threshold error.
2. The method of claim 1 wherein the step of periodically adjusting the transfer function of at least one of the adaptive filters comprises the step of determining whether to deactivate a tap.
3. The method of claim 2 wherein the step of determining whether to deactivate a tap comprises the steps of:
computing the tap error produced by deactivating such tap; and
if the tap error is less than a prespecified acceptable level of tap error, deactivating the tap.
4. The method of claim 2 wherein the step of determining whether to deactivate a tap comprises the steps of:
computing the filter error produced by deactivating such tap; and
if the filter error is less than a prespecified acceptable level of filter error, deactivating the tap.
5. The method of claim 4 wherein the step of computing the filter error comprises the steps of:
determining the tap error of each individual tap; and
summing the individual tap errors.
6. The method of claim 2 wherein the step of determining whether to deactivate a tap comprises the steps of:
computing the system error produced by deactivating such tap; and
if the system error is less than the threshold error, deactivating the tap.
7. The method of claim 6 wherein the step of computing the system error comprises the steps of:
determining the filter error of each adaptive filter; and
summing the individual filter errors.
8. The method of claim 7 wherein the step of computing the filter error comprises the steps of:
determining the tap error of each individual tap; and
summing the individual tap errors.
9. The method of claim 1 wherein the step of periodically adjusting the transfer function of at least one of the adaptive filters further comprises the step of determining whether to activate a previously deactivated tap.
10. The method of claim 9 wherein the step of determining whether to activate a previously deactivated tap comprises the steps of:
periodically activating previously deactivated taps;
computing the tap error produced by deactivating such taps; and
if the tap error is less than a prespecified acceptable level of tap error, deactivating the tap.
11. The method of claim 1 wherein the filter has a sufficient number of taps to accommodate for delay due to the length of the communications line.
12. The method of claim 11 wherein a select plurality of taps positioned at the input end of the filter are not subject to deactivation.
13. The method of claim 11 further comprising the step of partitioning the taps into a plurality of blocks each having at least one tap and wherein the step of adjusting the transfer function of the adaptive filter is performed on a block-by-block basis.
14. The method of claim 13 wherein the blocks are adjusted in a sequential manner starting at the input end of the filter.
15. The method of claim 1 wherein the communications system comprises at least one echo canceller having at least one adaptive filter.
16. The method of claim 1 wherein the communications system comprises at least one NEXT canceller having at least one adaptive filter.
17. The method of claim 1 wherein the communications system comprises at least one FEXT canceller having at least one adaptive filter.
18. A method for reducing power dissipation within a communications system having at least one adaptive filter with a plurality of taps, each tap switchable between an active and an inactive state, each tap having a coefficient, said method comprising the steps of:
a) specifying an acceptable level of error for the filter;
b) for each active tap, setting a tap threshold;
c) for each active tap, deactivating those taps having a coefficient with an absolute value less than the tap threshold set for the active tap;
d) computing a filter error;
e) comparing the computed filter error to the acceptable filter error;
f) if the computed filter error is less than the acceptable filter error, increasing, the tap threshold for each active tap; and
g) repeating steps c) through f) until the computed filter error approaches the acceptable filter error without exceeding the acceptable filter error.
19. The method of claim 18 wherein the determination of whether to deactivate a tap is done in a sequential manner starting at the input end of the filter.
20. The method of claim 18 further comprising the steps of:
periodically activating previously deactivated taps; and
repeating steps b) through g).
21. The method of claim 20 wherein the previously deactivated taps are activated in a sequential manner starting at the input end of the filter.
22. The method of claim 18 wherein each tap threshold is substantially the same.
23. The method of claim 18 wherein each tap threshold is initially set equal to the tap coefficient having the minimum absolute value.
24. The method of claim 18 wherein each tap threshold has a different value.
25. The method of claim 18 wherein the taps are partitioned into a plurality of blocks, each block having at least one tap and the tap threshold for each tap within each of the blocks is substantially the same.
26. The method of claim 18 wherein the step of computing the filter error comprises the steps of:
determining the error of each individual tap; and
summing the individual errors.
27. The method of claim 26 wherein the error of each individual tap is the mean square error for the tap and is determined by multiplying the absolute value of the tap coefficient by the average energy signal.
28. A method for reducing power dissipation within a communications system having a plurality of adaptive filters with a plurality of taps, each tap switchable between an active and an inactive state, each having a coefficient, said method comprising the steps of:
a) specifying an acceptable error for the system;
b) for each active tap, setting a tap threshold;
c) for each active tap, deactivating those taps having a coefficient with an absolute value less than the tap threshold set for the active tap;
d) computing a system error;
e) comparing the computed system error to the acceptable system error;
f) the computed system error is less than the acceptable system error, increasing the tap threshold for each active tap; and
g) repeating steps c) through f) until the computed system error approaches the acceptable system error without exceeding the acceptable system error.
29. The method of claim 28 wherein the determination of whether to deactivate a tap is done in a sequential manner starting at the input end of the filter.
30. The method of claim 28 further comprising the steps of:
periodically activating previously deactivated taps;
repeating steps b) through g).
31. The method of claim 30 wherein the previously deactivated taps are activated in a sequential manner starting at the input end of the filter.
32. The method of claim 28 wherein the step of computing the system error comprises the steps of:
determining the error of each individual filter; and
summing the individual filter errors.
33. The method of claim 32 wherein the step of computing the filter error comprises the steps of:
determining the error of each individual tap; and
summing the individual tap errors.
34. The method of claim 33 wherein the error of each individual tap is the mean square error for the tap and is determined by multiplying the absolute value of the tap coefficient by the average energy signal.
35. The method of claim 28 further comprising the steps of:
specifying an acceptable level of error for the taps;
for each active tap, calculating the error of deactivating the tap; and
if the calculated error is less than the acceptable error, deactivating the tap.
36. The method of claim 35 wherein said steps are performed prior to steps a) through g).
37. A method for reducing power dissipation within a communications system having at least one adaptive filter with a plurality of taps, each tap switchable between an active and an inactive state, each tap having a coefficient, said method comprising the steps of:
a) computing an initial system error
b) for each active tap, setting a tap error threshold;
c) for each active tap, deactivating those taps having a coefficient with an absolute value less than the tap error threshold set for the active tap;
d) computing a subsequent system error;
e) if the difference between the subsequent system error and the initial system error is less than a prespecified value, increasing the tap error threshold for each active tap; and
f) repeating steps c) through e) until the difference between the subsequent system error and the initial system error exceeds the prespecified value.
38. The method of claim 37 wherein the determination of whether to deactivate a tap is done in a sequential manner starting at the input end of the filter.
39. The method of claim 37 wherein each tap threshold is initially set equal to the tap coefficient having the minimum absolute value.
40. The method of claim 37 wherein the tap error threshold is the substantially the same for each tap in the filter.
41. A method for reducing power dissipation within a communications system having at least one adaptive filter with a plurality of taps, each tap switchable between an active and an inactive state, each tap having a coefficient, said method comprising the steps of:
specifying an acceptable error for each tap;
selectively deactivating those taps which, if deactivated, would produce an error less than the specified acceptable error;
specifying an acceptable error for the system;
calculating a system error;
selectively deactivating those taps which, if deactivated, would result in the calculated system error being less than the acceptable system error.
42. The method of claim 41 wherein the step of selectively deactivating those taps which, if deactivated, would produce an error less than the specified acceptable error comprises the steps of:
for each active tap, calculating the error of deactivating the tap; and
if the calculated error is less than the acceptable error, deactivating the tap.
43. The method of claim 42 wherein the step of calculating the error of deactivating the tap comprises the step of multiplying the absolute value of the tap coefficient by the average energy signal.
44. A method claim 41 wherein the step of selectively deactivating those taps which, if deactivated, would cause the calculated system error to remain below the acceptable system error comprises the steps of:
a) setting a tap threshold;
b) deactivating those taps having a coefficient with an absolute value less than the tap threshold set for the active tap;
c) computing a system error;
d) comparing the computed system error to the acceptable system error;
e) if the computed system error is less than the acceptable system error, increasing the tap threshold for each active tap; and
f) repeating steps b) through e) until the computed system error approaches the acceptable system error without exceeding the acceptable system error.
45. A communications system comprising:
a communications line;
a plurality of adaptive filters responsive to signals carried by the communications line, each adaptive filter having a plurality of taps each having a coefficient, each tap switchable between an active and an inactive state;
means for specifying a threshold error for the system;
means for setting the state of each tap;
means for calculating a present error for the system; and
means for comparing the present error to the threshold error.
46. The communications system of claim 45 wherein the means for setting the state of each tap comprises:
means for specifying a tap threshold for each tap;
means for comparing for each tap the absolute value of the tap coefficient with the tap threshold; and
means for deactivating those taps having a coefficient with an absolute value less than the tap threshold.
47. The communications system of claim 46 wherein the means for setting the state of each tap further comprises:
means for periodically activating previously deactivated taps.
48. The communications system of claim 46 further comprising means for increasing the tap threshold when the present error is less than the threshold error.
49. The communications system of claim 46 wherein a select plurality of taps positioned at the input end of the adaptive filter are not subject to deactivation.
50. The communications system of claim 45 wherein the adaptive filter has a sufficient number of taps to accommodate for signal delay due to the length of the communications line.
51. The communications system of claim 45 wherein the taps are equally spaced within the adaptive filter such that the time between successive sampling of the input signal is substantially equal.
52. The communications system of claim 45 wherein the communications system comprises at least one echo canceller having at least one adaptive filter.
53. The communications system of claim 45 wherein the communications system comprises at least one NEXT canceller having at least one adaptive filter.
54. The communications system of claim 45 wherein the communications system comprises at least one FEXT canceller having at least one adaptive filter.
55. A power dissipation reduction system for use in a communication system having at least one adaptive filter having a plurality of taps each having a coefficient, each tap switchable between an active and an inactive state, said power dissipation reduction system comprising:
means for specifying a threshold error for the system;
means for setting the state of each tap;
means for calculating a present error for the system; and
means for comparing the present error to the threshold error.
56. The communications system of claim 55 wherein the means for setting the state of each tap comprises:
means for specifying a tap threshold for each tap;
means for comparing for each tap the absolute value of the tap coefficient with the tap threshold; and
means for deactivating those taps having a coefficient with an absolute value less than the tap threshold.
57. The communications system of claim 56 wherein the means for setting the state of each tap further comprises:
means for periodically activating previously deactivated taps.
58. The communications system of claim 56 further comprising means for increasing the tap threshold when the present error is less than the threshold error.
59. The communications system of claim 56 wherein a select plurality of taps positioned at the input end of the adaptive filter are not subject to deactivation.
60. The communications system of claim 55 wherein the taps are equally spaced within the adaptive filter such that the time between successive sampling of the input signal is substantially equal.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

We claim:

1. A method for converting an OLD computer file into an updated NEW computer file, said method comprising the steps of:
a. identifying differences between said OLD file and a NEW computer file by passing both files through a patch build program, wherein said NEW file is divided into b locks of fixed size and each block is successively compared to a contiguous group of blocks of fixed size in said OLD file;
b. creating a patch file based on identified differences, wherein said patch file incorporates matched strings in said OLD file and matched strings in the prior portion of said NEW file; and
c. combining said OLD file and said patch file by passing both files through a patch apply program to obtain said NEW file.
2. The method of claim 1 wherein said patch build program comprises the steps of:
a. initializing an empty NEW string table;
b. selecting a plurality of adjacent blocks from beginning of said OLD file;
c. processing each selected block with a string table preparation subroutine thereby creating an OLD string table from each block;
d. selecting a block from beginning of said NEW file;
e. processing selected block of said NEW file, said NEW string table, and said OLD string tables with a match table preparation subroutine thereby creating a match table and updating said NEW string table;
f. transferring said match table to said patch file creation method;
g. processing said OLD string tables with a window advancement subroutine thereby possibly selecting a plurality of blocks from said OLD file and processing each block with said string table preparation subroutine;
h. processing said OLD string tables with a window trimming subroutine thereby possibly deleting a plurality of said OLD string tables which are no longer required and deleting memory containing portions of said NEW file which are no longer referenced by NEW string table;
i. selecting next unprocessed block from said NEW file; and
j. repeating steps (e) through (i) until said NEW file has been entirely processed.
3. The method of claim 2 wherein said match table preparation subroutine identifies exactly matching strings and approximately matching strings.
4. The method of claim 3 wherein said match table preparation subroutine defines two strings as approximately matching when the ratio of mismatches to total characters is less than a selected proportion and each block of adjacent characters contains fewer mismatches than a fixed value.
5. The method of claim 3 wherein said match table preparation subroutine optimizes the lengths of the approximate or exact matches prior to patch file building, said optimization based on estimates of the relative coding efficiency of matches and mismatches.
6. The method of claim 5 wherein said patch file creation method uses variable-length codes selected separately for each block of said NEW file.
7. The method of claim 6 wherein said patch file creation method encodes each block using either approximate matches or exact matches, with the decision based on which method produces a smaller coded block.
8. The method of claim 3 wherein said match table preparation subroutine proceeds by locating a fixed-length exact match using said NEW string table and said OLD string tables, then extending said exact match to a longer approximate match in the forward and reverse directions.
9. The method of claim 2 wherein said string table preparation subroutine records and indexes fixed-length substrings whose positions within said selected block are a multiple of a fixed granularity, which is selected from a plurality of integer values.
10. The method of claim 2 wherein said match table preparation subroutine, after examining a string in said NEW file, will then advance by an amount which is calculated from the length of the longest exactly matching string and the length of the longest approximately matching string.
11. The method of claim 2 wherein said match table preparation subroutine, after examining a string in said NEW file, will advance by an amount which is at least a certain fixed minimum advancement increment, which is selected from a plurality of integer values.
12. The method of claim 2 wherein said match table preparation subroutine limits the number of identical fixed-length substrings which will be examined in any one OLD or NEW string table to a certain fixed maximum chain length amount, which is selected from a plurality of integer values.
13. The method of claim 2 wherein said match table preparation subroutine has special provisions to efficiently process strings in said OLD file or in said NEW file consisting of repeated patterns of at least one of a plurality of lengths of characters, said special provisions to avoid repeatedly comparing substrings comprising said repeated patterns.
14. The method of claim 6 wherein said patch file creation method uses separate variable-length code tables for characters, displacements and lengths, said character code table to be used for encoding characters which are not a part of any match, as well as for encoding special codes indicating matches, which are followed by lengths and optional displacements or differences, coded using the length and displacement code tables, respectively.
15. The method of claim 14 wherein said special code for matches is selected from the group consisting of:
a. a match in a prior portion of said NEW file, with length and displacement;
b. a match in a prior portion of said OLD file, with length and displacement;
c. a match in a prior portion of said OLD file in which the displacement exceeds the displacement of the previous prior OLD file match, with length and difference;
c. a match in a prior portion of said OLD file in which the displacement is less than the displacement of the previous prior OLD file match, with length and difference;
c. a match in a prior portion of said OLD file in which the displacement is equal to the displacement of the previous prior OLD file match, with length only;
d. a match in a later portion of said OLD file, with length and displacement;
e. a match in a later portion of said OLD file in which the displacement exceeds the displacement of the previous later OLD file match, with length and difference;
f. a match in a later portion of said OLD file in which the displacement is less than the displacement of the previous later OLD file match, with length and difference;
g. a match in a later portion of said OLD file in which the displacement is equal to the displacement of the previous later OLD file match, with length only; and
h. a match at the same position of said OLD file, with length only.
16. The method of claim 14 wherein said patch file creation method uses special character table encodings for mismatches of at least one of a plurality of lengths of characters surrounded by an otherwise matching string, said character table encoding followed by the appropriate number of characters to indicate mismatch contents, followed by a displacement table encoding of the distance between the beginning of said mismatch and the end of the previous mismatch in said surrounding string, or beginning of said surrounding string if this is the first mismatch in surrounding string.
17. The method of claim 16 wherein said patch file creation method, in producing said mismatch encodings, encodes the difference between the actual character in said NEW file and the expected character in said surrounding matching string.
18. The method of claim 16 wherein said patch file creation method maintains a list of recently used mismatch differences for each mismatch size and uses special character table encodings to represent mismatches for which the mismatch difference is identical to one of the recently used mismatches, said encodings to be followed by an index into said list and a displacement table encoding representing the position of said mismatch as described in claim 15.
19. The method of claim 14 wherein said patch file creation method encodes each block using one of the following encoding methods, with the decision based on which method produces the smallest encoded block:
a. character, displacement and length code tables computed optimally for this block and with the tables included in the block encoding;
b. fixed character, displacement and length tables which are optimal for equally-likely codewords;
c. the character, displacement and length code tables which were used for the previous block; or
d. bypass encoding, in which the block in the new file is transmitted in its entirety.
20. The method of claim 1 wherein said patch apply program comprises the steps of:
a. reconstructing any necessary variable-length code tables from information in patch file;
b. interpreting coded data in patch file to recover character, match and mismatch information; and
c. building said NEW file from said OLD file and said character, match and mismatch information.
21. An apparatus for controlling a general purpose computer so as to compare an OLD file and a NEW file, to construct a patch file containing the differences between said files, and subsequently enabling a general purpose computer provided with said patch file to construct said NEW file from said OLD file and said patch file, comprising:
a. file input storage means for storing two currently selected blocks of said NEW file and a plurality of currently selected blocks of said OLD file;
b. string table storage means for storing a plurality of OLD string tables and a NEW string table, each comprising a plurality of fixed-length substrings and associated indices within a currently selected block of OLD or NEW file;
c. a string table preparation circuit selecting and indexing successive portions of a currently selected block of OLD file so that contents of said string table storage means are constructed based on said selected block;
d. match table storage means for storing data structures describing approximate matches between regions of currently selected block of NEW file and:
i. earlier regions of said currently selected block of NEW file or
ii. regions of previously selected block of NEW file or
iii. regions of one of a plurality of currently selected blocks of OLD file;

e. a match table preparation circuit forming contents of said match table storage means by:
i. using contents of string table storage means to locate copies of fixed-length substrings of said selected block of NEW file in:
(a) earlier portions of said currently selected block of NEW file or
(b) previously selected block of NEW file or
(c) One of said currently selected blocks of OLD file,

ii. extending said matches to longer approximate matches in the forward and reverse directions,
iii. recording said approximate matches and mismatch information, and
iv. updating said NEW string table as portions of said NEW file are processed;

f. a match table optimization circuit controlling the lengths of the approximate matches in the data structures in the match table storage means to produce a minimized patch file, said optimization based on estimates of relative coding efficiency of matches and mismatches;
g. a patch file encoding circuit producing successive blocks of said patch file from optimized match table; and
h. a patch file apply circuit combining said patch file and said OLD file, producing said NEW file.
22. The apparatus of claim 21 wherein said match table preparation circuit defines two strings as approximately matching when the ratio of mismatches to total characters is less than a selected proportion and each block of adjacent characters contains fewer mismatches than a fixed value.
23. The apparatus of claim 21 wherein said patch file encoding circuit uses variable-length codes selected separately for each block of said NEW file.
24. The apparatus of claim 21 wherein said patch file encoding circuit encodes each block using either approximate matches or exact matches, with the decision based on which method produces a smaller coded block.
25. The apparatus of claim 21 wherein said string table preparation circuit records and indexes fixed-length substrings whose positions within said selected block are a multiple of a fixed granularity, which is selected from a plurality of integer values.
26. The apparatus of claim 21 wherein said match table preparation circuit, after examining a string in said NEW file, will then advance by an amount which is calculated from the length of the longest exactly matching string and the length of the longest approximately matching string.
27. The apparatus of claim 21 wherein said match table preparation circuit, after examining a string in said NEW file, will advance by an amount which is at least a certain fixed minimum advancement increment, which is selected from a plurality of integer values.
28. The apparatus of claim 21 wherein said match table preparation circuit limits the number of identical fixed-length substrings which will be examined in any one OLD or NEW string table to a certain fixed maximum chain length amount, which is selected from a plurality of integer values.
29. The apparatus of claim 21 wherein said match table preparation circuit has special provisions to efficiently process strings in said OLD file or in said NEW file consisting of repeated patterns of at least one of a plurality of lengths of characters, said special provisions to avoid repeatedly comparing substrings comprising said repeated patterns.
30. The apparatus of claim 23 wherein said patch file encoding circuit uses separate variable-length code tables for characters, displacements and lengths, said character code table to be used for encoding characters which are not a part of any match, as well as for encoding special codes indicating matches, which are followed by lengths and optional displacements or differences, coded using the length and displacement code tables, respectively.
31. The apparatus of claim 30 wherein said special codes for matches comprise the following:
a. a match in a prior portion of said NEW file, with length and displacement;
b. a match in a prior portion of said OLD file, with length and displacement;
c. a match in a prior portion of said OLD file in which the displacement exceeds the displacement of the previous prior OLD file match, with length and difference;
d. a match in a prior portion of said OLD file in which the displacement is less than the displacement of the previous prior OLD file match, with length and difference;
e. a match in a prior portion of said OLD file in which the displacement is equal to the displacement of the previous prior OLD file match, with length only;
f. a match in a later portion of said OLD file, with length and displacement;
g. a match in a later portion of said OLD file in which the displacement exceeds the displacement of the previous later OLD file match, with length and difference;
h. a match in a later portion of said OLD file in which the displacement is less than the displacement of the previous later OLD file match, with length and difference;
i. a match in a later portion of said OLD file in which the displacement is equal to the displacement of the previous later OLD file match, with length only; and
j. a match at the same position of said OLD file, with length only.
32. The apparatus of claim 30 wherein said patch file encoding circuit uses special character table encodings for mismatches of at least one of a plurality of lengths of characters surrounded by an otherwise matching string, said character table encoding followed by the appropriate number of characters to indicate mismatch contents, followed by a displacement table encoding of the distance between the beginning of said mismatch and the end of the previous mismatch in said surrounding string, or beginning of said surrounding string if this is the first mismatch in surrounding string.
33. The apparatus of claim 32 wherein said patch file encoding circuit, in producing said mismatch encodings, encodes the difference between the actual character in said NEW file and the expected character in said surrounding matching string.
34. The apparatus of claim 33 wherein said patch file encoding circuit maintains a list of recently used mismatch differences for each mismatch size and uses special character table encodings to represent mismatches for which the mismatch difference is identical to one of the recently-used mismatches, said encodings to be followed by an index into said list and a displacement table encoding representing the position of said mismatch as described in claim 32.
35. The apparatus of claim 30 wherein said patch file encoding circuit encodes each block using one of the following encoding methods, with the decision based on which method produces the smallest encoded block:
a. character, displacement and length code tables computed optimally for this block and with the tables included in the block encoding;
b. fixed character, displacement and length tables which are optimal for equally-likely codewords;
c. the character, displacement and length code tables which were used for the previous block; or
d. bypass encoding, in which the block in the new file is transmitted in its entirety.
36. The apparatus of claim 21 wherein said patch apply circuit performs the functions of:
a. reconstructing any necessary variable-length code tables from information in patch file;
b. interpreting coded data in patch file to recover character, match and mismatch information; and
c. building said NEW file from said OLD file and said character, match and mismatch information.
37. A system for converting an OLD computer file into an updated NEW computer file, the system comprising:
a. means for identifying differences between said OLD file and a NEW computer file by passing both files through a patch build program, wherein said NEW file is divided into blocks of fixed size and each block is successively compared to a contiguous group of blocks of fixed size in said OLD file;
b. creating a patch file based on identified differences, wherein said patch file incorporates not only matched strings in said OLD file but also matched strings in the prior portion of said NEW file; and
c. combining said OLD file and said patch file by passing both files through a patch apply program to obtain said NEW file.
38. A method of updating a computer file from an old file into a new file comprising the steps of:
blocking the new file and the old file into fixed-size blocks;
maintaining a collection of contiguous blocks for each file on which lookup preprocessing has been performed; and
performing match processing on each new file block in turn by comparing against both the old and new contiguous blocks using a key-sampling technique combined with approximate matching.