The present Application is related to the following U.S. patent applications: application Ser. No. 09/583,448, filed May 30, 2000, entitled “DISK FORMAT FOR A STORAGE DEVICE”; application Ser. No. 09/583,390, entitled “DEFECT MANAGEMENT SYSTEM FOR A STORAGE DEVICE”, filed May 30, 2000, now abandoned, and application Ser. No. 09/539,841, filed Mar. 31, 2000, entitled “FILE SYSTEM MANAGEMENT EMBEDDED IN A STORAGE DEVICE”; each of which applications is assigned to the assignee of the present invention and each of which is hereby incorporated herein by reference in its entirety.
This invention relates generally to a technique of formatting the data stored on a write-once data storage disk such that the structure of the file system can be changed to emulate a read/write disk. More specifically, this invention relates to a format for accomplishing this on an optical storage disk.
Downloading data via computer networks such as the Internet is becoming increasingly popular. Downloaded data may include movies, music recordings, books, and other media. There are different types and sizes of memory storage devices available to users for storing and accessing the downloaded information. Devices used by consumers for playing music and movies range from home theatre systems to highly portable palmtop devices. Accordingly, there is a need to provide a storage device and storage medium that is compact and portable, yet capable of storing and transmitting large amounts of data for real-time playback. The storage device must also interface with a wide variety of hosts such as personal computer systems, televisions, audio systems, and portable music players. Further, it is important for the storage device to protect content on the storage medium using a digital rights management scheme.
Write Once Read Many (WORM) storage media may be used to meet these requirements. One example of WORM storage medium is disclosed in U.S. patent application Ser. No. 09/560,781, entitled, “WRITEABLE MEDIUM ACCESS CONTROL USING A MEDIUM WRITEABLE AREA”, filed on Apr. 28, 2000, assigned to the common assignee and is incorporated in its entirety herein by reference.
Magnetic and optical data storage systems typically include a controller which interfaces the host device to the data storage device. The controller receives commands and data from, and provides status and data to, the host device. In response to the commands, the data storage device controller provides signals which control the writing of data to and reading of data from the storage medium.
In the prior art, the host device includes a disk operating system or file management system which interfaces file commands of a user (e.g., through user programs) and the commands recognized by the controller of the storage device. Tasks performed by known file management systems include keeping a directory of the location of all files of information data on the storage disk, and keeping track of remaining free space on the disk. In magnetic data storage systems, data written to the magnetic disk can be erased and rewritten, and therefore updated. The file management system therefore causes directory data to be written to predetermined locations on the magnetic disk. As files of information data are added to the magnetic disks, the file management system simply adds directory data to the reserved directory region. If a previously written file is updated, the file management system can erase and update previously written directory data.
Due to the characteristics of WORM data storage systems, the file management systems typically used with magnetic data storage systems are incapable of interfacing the host computer to a WORM disk drive. As a result, a separate file management system must be included within the host computer for WORM data storage systems. In WORM optical disk drive systems, for example, data can only be written once to any location on the optical disk. Directory data cannot, therefore, be updated on previously written locations. Each time one or more new files of information is written to the optical disk of the WORM optical data storage system, the file management system must write directory data associated with these files at a new location on the optical disk. The file management system should also write directory data in a form which enables the most recent versions of updated files to be found.
The present invention provides a method and apparatus for storing, updating, adding, deleting, and locating file system objects on a WORM storage medium, wherein information can be written to, but not erased from, the storage medium.
In one embodiment, the present invention includes a WORM storage medium with a writeable area and a system sector that includes system information regarding the file system objects on the storage medium. The system sector is written starting at one end of the writeable area, and the content of the file system objects is written starting at another end of the writeable area.
When a change is made to one or more of the file system objects in the writeable area, an updated system sector is generated that includes information on the file system objects that changed. Since the previously written system sectors are not erasable, the updated system sector is written in a location where it will be read before any previously written system sectors. Previously written sectors are read for information pertaining to file system objects that were not updated in the most recent system sector. The information included in system sectors may include, for example, the name and identifier for a new file system object, a change to the name of an existing file system object, or a parameter to indicate the fact that a file system object has been deleted.
One feature of each system sector is a header, one or more subheaders, and entries corresponding to the subheaders that include information for each file system object on the storage medium that is accessible from a host device. In one embodiment, the header includes a sector type parameter that identifies the sector as a system sector, an entry count parameter that identifies the number of file system objects that are contained within the system sector, a directory identification parameter that is used to determine when to terminate the process of reading the system sectors, a file identification parameter that is used to determine when to terminate the process of reading the system sectors, and a writeable data block number that is used to determine where the next writeable block is located within the writeable area.
In one embodiment, the subheader information for each entry includes an entry tag to identify the entry, and a parameter indicating the size, such as the number of bytes, of the entry. Each entry includes information for accessing the content of the corresponding file system object such as a type tag to indicate the type of file system object to which the entry pertains, a byte count to indicate the size of the file system object, and linkage information for file system objects that are written on multiple portions of the storage media.
The present invention advantageously emulates the capability to add, delete, and modify file system objects from the standpoint of a host system, even though information cannot be physically erased from the storage media. Thus, file system objects that were formerly accessible, but which have been marked as deleted in the updated system sector, are no longer accessible from the host system even though the content of the file system object still resides on the storage media.
This brief summary has been provided so that the nature of the invention may be understood quickly. A more complete understanding of the invention can be obtained by reference to the following detailed description of the preferred embodiments thereof in connection with the attached drawings.
The use of similar reference numerals in different figures indicates similar or identical items.
With the present invention, information may be pre-loaded on storage disk 130, or a user may download information from a source, such as the Internet, using one type of host system 112. Storage disk 130 containing the downloaded information may then be removed from storage device 114 and used with another compatible storage device 114 capable of reading and/or writing to storage disk 130. Storage device 114 may be embedded in host system 112 or plugged in as an external peripheral device. Accordingly, host system 112 includes the appropriate hardware and software components to transfer, encrypt/decrypt, compress/decompress, receive, record, and/or playback audio, video, and/or textual data, depending on the functionality included in host system 112. Such components may include audio and video controllers, peripheral devices such as audio system speakers, a visual display, keyboards, mouse-type input devices, modems, facsimile devices, television cards, voice recognition devices, and electronic pen devices.
Storage device 114 includes processor 140 coupled to memory 142 which may be one or a combination of several types of memory devices including static random access memory (SRAM), flash memory, or dynamic random access memory (DRAM). Storage device 114 is coupled to host system 112 via bus 144. Alternatively, storage device 114 may be coupled directly to host bus 118 via bus 145, and the functions performed by storage device controller 122 may be performed in processor 116, or another component of host system 112.
Storage device controller 146 receives input from host system 112 and transfers output to host system 112. Processor 140 includes operating system instructions to control the flow of data in storage device 114. In one embodiment, bus 144 is an asynchronous, eight-bit data bus capable of accessing file system objects using a single identifier between host system 112 and storage device 114. A communication protocol for bus 144 is described herein below.
In one embodiment, data is transmitted to and from storage disk 130 via read/write optics 156. In other embodiments, data is transmitted to and from storage disk 130 via read/write electronics (not shown). The data may be converted from analog to digital format, or from digital to analog format, in converters 148. For example, analog data signals from read optics 156 are converted to a digital signal for input to buffer 158. Likewise, digital data is converted from digital to analog signals in converter 148 for input to write optics 156. Buffer 158 temporarily stores the data until it is requested by controller 146.
Servo control system 162 provides control signals for actuators, focus, and spin drivers that control movement of the storage disk 130.
One skilled in the art will recognize that the foregoing components and devices are used as examples for sake of conceptual clarity and that various configuration modifications are common. For example, although host system 112 is shown to contain only a single main processor 116, those skilled in the art will appreciate that the present invention may be practiced using a computer system that has multiple processors. In addition, the controllers that are used in the preferred embodiment may include separate, fully programmed microprocessors that are used to off-load computationally intensive processing from processor 116, or may include input/output (I/O) adapters to perform similar functions. In general, use of any specific example herein is also intended to be representative of its class and the non-inclusion of such specific devices in the foregoing list should not be taken as indicating that limitation is desired.
Referring now to
In the prior art, file and directory manipulation commands typically required full pathnames for identification. One feature of file system 200 is that file system manager 210 parses the pathnames of directories and files, and passes only the name of the directory or file to translator 212. Translator 212 converts the names to unique identifiers that are used by file system manager 210 on subsequent accesses. Translator 212 also constructs packets that include information such as file and directory identifiers to be accessed, and the commands to be performed. The packets are transmitted to hardware device driver 214, as required, depending on the commands issued by application programs 116. File system 200 is further described in the above-referenced application Ser. No. 09/539,841.
Disk Format for Writeable Mastered Media
Beginning at the outer diameter, data storage disk 130 includes a lead-in and disk system area 302. The lead-in portion of area 302 is used to account for any mechanical tolerances, and for initial servo focus and tracking calibration. The disk system portion of area 302 includes the disk format characteristics (e.g., linear and radial density, scan velocity, laser wavelength, data block size), initial parameters for reading and writing data, and layout information for storage disk 130 (e.g., the starting sectors and sizes of the mastered and writeable areas). Also included in the disk system portion of area 302 is a “read channel calibration” area that is used to calibrate an optical read channel for a mastered area 306 (described below). The radius of the data storage area of disk 130, measured to the OD of area 302 could be 15.4 mm, for example.
Storage disk 130 also includes a mastered system area (MSA) 304 that stores file system objects relating to mastered content stored in mastered area 306. Mastered system area 304 stores, for example, directory information, file attributes, file size and other file system information concerning the data stored in mastered area 306. File system objects are written in MSA 304 from the outer diameter (OD) towards the inner diameter (ID) of storage disk 130. Mastered area 306 also stores mastered content from the OD towards the ID of storage disk 130. The mastered content is stored in data blocks which may be, for example, 16 K bytes in size.
In some embodiments, a duplicate of MSA 304 is created adjacent to the inward edge of mastered area 306. The duplicate MSA serves as a backup in case the first MSA 304 cannot be read. The data in mastered areas 304 and 306 is formed by an embossing process in conjunction with the manufacture of storage disk 130 and consists of a spiral track of pits or bumps. The processes used to form mastered disks (e.g., Compact Discs) are well known.
Storage disk 130 also includes a buffer and writeable calibration area 308, which separates the mastered area 306 from a writeable area 310 (described below). The buffer area can include, for example, one track of mastered sectors and three grooved tracks that are used for servo focus and tracking calibration in preparation for reading or writing data in writeable area 310. The writeable calibration area is used to calibrate the read and write channel in writeable area 310. This is required, for example, because the reflectivity of the reflective layer in the pits or bumps of the master areas 304, 306 is different from the reflectivity in the crystalline “pits” in the writeable area 310.
In contrast to the mastered areas 304, 306, no data is written in writeable area 310 at the time the disk is manufactured. Instead, the spiral track takes the form of a groove or “land” (the area between grooves) which is used by a servo system to assure that the read/write head tracks properly as the data is being written. For example, in one embodiment the groove pitch is 0.74 μm±0.03 μm, the depth of the groove is 80 nm±5 nm, the width of the groove is 440 nm±5 nm, and the groove walls are angled between 35 and 45 degrees with respect to horizontal. The servo systems used to provide tracking are widely known in the field. The groove is typically formed in a wobble that generates a sinusoidal signal used to control the rotational speed of the disk and to generate a clock signal (See, e.g., U.S. Pat. Nos. 4,972,410 and 5,682,365 to Carasso et al.) Writeable area 310 has an inner boundary 310A and an outer boundary 310B. The groove may also contain high-frequency wobble marks.
Writeable area 310 is a “write once read many” (WORM) data zone, meaning that data written in writeable area 310 cannot be erased or moved but can be read many times. When storage disk 130 is manufactured, and before any data is written to it, writeable area 310 is a single homogeneous area having a spiral groove as described above.
Inward from writeable area 310 is a second buffer area, which has the same function as the buffer area in buffer and writeable calibration area 308. Next comes a disk system area 312, which is a duplicate of the disk system area lead-in and disk system area 302 at the OD of disk 130. Disk system area 312 is used as a backup in case the disk system area lead-in and disk system area 302, cannot be read. At the ID of disk 130 is a disk format information and lead out area 128. The disk format information area is in the form of a bar code and contains basic information about the disk, such as whether it is a first, second, etc, generation disk. By reading the disk format information area, the drive can quickly determine whether it is capable of reading that media. For example, if a second generation disk is inserted into a first generation drive, the drive would be able to tell immediately that it cannot read the disk. The lead out area ends at the maximum stroke of the optical pick up unit that is used to read and write data on disk 130.
As data is written in writeable area 310, a writeable system area (WSA) 320 adjacent inner boundary 310A and a writeable data area (WDA) 322 adjacent outer boundary 310B are formed. Writeable system area 320 and writeable data area 322 are shown by the dashed lines in
Using this format, the data files are written in writeable data area 322 from the OD towards the ID of writeable area 310, i.e., in a direction inward from the outer boundary 310B. Information regarding the location and size of file system objects is written in system sectors that are stored in writeable system area 320. Each new sector of information is written on the spiral track which spirals in towards the ID of disk 130, but the new sector is appended to the OD side of the last sector written in writeable system area 320. Hence, writeable system area 320 grows outwards from the ID towards the OD of writeable area 310, while writeable data area 322 grows inwards from the OD towards the ID of writeable area 310. As this happens, blank region 324 shrinks in size.
Ultimately, if data files continue to be written to disk 130, writeable system area 320 and writeable data area 322 will merge, and blank region 324 will disappear. The merger will occur at a location that is dependent upon the size of the data files written into writeable data area 322. As shown in
For example, if a data file is 100 Megabytes in size, then a large area is required for content while a smaller area may be required for the file system information. However if there are 20 files 5 Megabytes each, then the file system data files are likely to require a larger memory storage space for storing the file system data compared to the file system data for the 100 Megabyte file. Since the areas for data files and file system information approach each other, the respective sizes of writeable system area 320 and writeable data area 322 vary to meet the needs of the particular situation. Hence, the foregoing format according to the present invention apportions the data files and file system information in writeable area 310 such that writeable area 310 as a whole is efficiently utilized.
As noted above, the data stored on disk 130 is written and read in an inward direction, i.e., in a direction from the OD to the ID of disk 130. As shown in
Generating System Sectors
Information for file system objects is received from host system 112 and cached within memory 142 or data buffer 158 (
The system sector(s) are written adjacent previously written system sectors, forming what is referred to herein as a “media stack.” In the embodiment shown in
Referring now to
When a commit command is executed, file system object information that is being temporarily stored in memory 142 or buffer 158 is transferred to storage disk 130. Transferring the information to storage disk 130 requires generating one or more system sectors that include system information regarding the file system objects that are accessible on storage disk 130 from host system 112 (
Each system sector 402, 404, 406 is made up of a header 408, 410, 412, followed by a number of entries 414, 416, 418, each of which has a unique tag associated with it. The information that is included in headers 408, 410, 412 and entries 414, 416, 418 is discussed hereinbelow.
One embodiment of a process for constructing and writing an updated system area sector 402 that is placed on “top” of media stack 400 is as follows:
2) Once header 408 is initialized, a series of insertion functions, examples of which are shown in Table 1, are called. As shown by insertion phase code block 504 in
3) A series of completion functions, examples of which are shown in Table 1, are called. As shown by completion phase code block 506 in
In order to handle special conditions during the read/write of the writeable system area 320, in one embodiment, a set of flags is defined that track the current state of the writeable area 320 and mastered area 304 read or write operations. These flags are used, for example, by routines in Initialization Phase code block 502, Insertion Phase code block 504, and Completion Phase code block 506 (see
Table 3 shows an example of a structure for system header 408 that is included in each header 408, 410, 412 and is placed on the front of every system area sector 402, 404, 406. This information is filled in by the System Header Initialization functions (See Table 1).
Table 4 shows an example of type tag values that are stored in the subheader 508 for each of entries 414 within system sector 402. Additional tags may be defined for future expansion.
The foregoing format provides flexibility for adding, changing, and removing file system objects on storage disk 130. When a change is made in content information, a new system sector 402 is created and written to the writeable system area 320 of writeable area 310.
Reading Data from System Sectors
Media stack 400 is read from top to bottom (i.e., from OD to ID of writeable system area 320). Information for accessing the most recent version of a file system object is provided in the first occurrence of the system sector, i.e. sector 402. Older information for accessing a particular file system object may be listed in previously written sectors 404, 406. Older information is ignored if it is made obsolete by the newer information for accessing the file system object included in system sector 402.
Referring now to
1) The first block read from the writeable system area 320 contains the most recently written system sector 402 to be found on storage disk 130 (
2) Each entry in entries 414 within system sector 402 has a tag value associated with it which was added during the insertion phase 504 of the sector generation process. For each type of entry in entries 414, there is a corresponding entry handler function 604. As entries 414 are read, they are sent to their corresponding entry handler function 604, according to the tag that is stored with the particular entry 414. The association of tags to handler functions 604 in the present invention is created using an array of pointers to handler functions 604, where the tag value is used as an index into the array.
An advantage of attaching a tag to each entry 414 is that the read-back routine does not have to understand the type of entry that it is processing, it simply looks at the tag and sends the entry 414 to the function 604 associated with the tag. Another advantage is that additional entry types may be created by using the next available tag number, and providing a new insertion function 504 and new handler function 604 to read that entry type.
Media Stack 400 allows for optimization of the process for reading file system objects. Based upon information stored in the topmost system sector header 408, the read process may stop when all the relevant entries 414 have been accounted for, even though every sector 402, 404, 406 in media stack 400 has not been read. In the present invention, this is achieved by counting the number of file system objects that are read from media stack 400, and when the values of Next Directory Identification and Next File Identification from the topmost system header 408 have been reached, the read process is terminated.
An example of the process of finding a file system object with one embodiment of the present invention will now be explained with reference to
With the present invention, only sector 702 is read to access File A, File C, or Directory X. To access File B or Directory Y, sectors 702 and 704 are read. To access File D or Directory Z, sectors 702, 704, and 706 are read until the desired file system object is found.
The steps to find an entry in media stack 400 (
It should be noted that this same mechanism can be used to load entries from the media stack into memory, and then access the objects from memory.
In step 804, if the number of file system object subheaders read is less than the number of file system objects for which access information is available in the sector, then the next subheader is read in step 806 to determine if information for accessing the desired file system object is included in the sector. If so, then the information for accessing the file system object is read from the entries corresponding to the subheader as shown in step 810.
If the subheader does not pertain to information for accessing the desired file system object, then steps 804 and 806 are executed until either the information for accessing the file system object is found in the sector, or the number of file system object subheaders read is greater than or equal to the number of file system objects for which access information is available in the sector. In the latter case, a check is made in step 812 to determine whether there are any previously written sectors to search. If so, then step 814 is executed to read information from the next most recent sector. This information is used to reset the parameters for the number of file system objects for which there is information available in the next sector to be searched, and control is passed to step 804. If there are no more sectors to read in step 812, then an indication that the file system object was not found is returned in step 816.
It is important to note that the file system information required to access all of the file system objects in writeable data area 322 may be included in the most recent system sector 408. Alternatively, the file system information required to access all of the file system objects in writeable data area 322 may be included in two or more system sectors 402, 404, 406. When the information is included in two or more system sectors 402, 404, 406, the first occurrence of the information for a given file system object in media stack 400 is the most recent information, and all subsequent occurrences are ignored.
Furthermore, during the system sector creation process shown in
Advantages
The present invention emulates the capability to add, delete, and modify file system objects from the standpoint of host system 112 (
One advantage of the code flow shown in
Another advantage of the functions in code block 502 is that it creates a common header 408 prior to the insertion of entries 414, hence allowing a plurality of entries 414 to share a common header 408.
Another advantage of the functions in code blocks 502, 504, 506 is that it provides a safe mechanism for the updating of internal status information upon successful writing of the entries to storage media 130. For example, if an insertion function 504 performed the status update for completion phase functions that is done in code block 506, and if a data write operation failed, then the status of entries 414 inserted into system sector 402 would incorrectly indicate a completion status. With the present invention, functions in code block 506 are assured that entries 414 have been successfully written, and hence can safely update their completion status correctly.
While the invention has been described with respect to the embodiments and variations set forth above, these embodiments and variations are illustrative and the invention is not to be considered limited in scope to these embodiments and variations. For example, the writeable system area 320 may be located at the outermost diameter of writeable area 310, while content is written starting at the innermost diameter of writeable area 310. Further, the present invention may be used in other system areas on storage disk 130 to allow modifications to the content stored on other portions of storage disk 130. One example would be using the present invention in mastered file system zone 302 and mastered area 303. Additionally, the media stack 400 may be created and managed via a host driver in host system 112 instead of in storage device 114. Accordingly, various other embodiments and modifications and improvements not described herein may be within the spirit and scope of the present invention, as defined by the following claims.
Number | Name | Date | Kind |
---|---|---|---|
4420828 | Yoshida et al. | Dec 1983 | A |
4791627 | Yonezawa | Dec 1988 | A |
4827462 | Flannagan et al. | May 1989 | A |
4866692 | Saito et al. | Sep 1989 | A |
4901300 | Van Der Zande et al. | Feb 1990 | A |
4960680 | Pan et al. | Oct 1990 | A |
4972401 | Carasso et al. | Nov 1990 | A |
4981743 | Ho | Jan 1991 | A |
4987533 | Clark et al. | Jan 1991 | A |
5023854 | Satoh et al. | Jun 1991 | A |
5023856 | Raaymakers et al. | Jun 1991 | A |
5029125 | Sciupac | Jul 1991 | A |
5040110 | Miki et al. | Aug 1991 | A |
5073887 | Takagi et al. | Dec 1991 | A |
5080736 | Matsui | Jan 1992 | A |
5113512 | Miki et al. | May 1992 | A |
5210734 | Sakurai | May 1993 | A |
5247494 | Ohno et al. | Sep 1993 | A |
5339301 | Raaymakers et al. | Aug 1994 | A |
5347651 | Burke et al. | Sep 1994 | A |
5377178 | Saito et al. | Dec 1994 | A |
5446857 | Russ | Aug 1995 | A |
5448728 | Takano et al. | Sep 1995 | A |
5491807 | Freeman et al. | Feb 1996 | A |
5539724 | Ohtomo | Jul 1996 | A |
5630115 | Mikamo | May 1997 | A |
5634050 | Krueger et al. | May 1997 | A |
5654947 | Roth et al. | Aug 1997 | A |
5656348 | Kudo et al. | Aug 1997 | A |
5666531 | Martin | Sep 1997 | A |
5677953 | Dolphin | Oct 1997 | A |
5682365 | Carasso et al. | Oct 1997 | A |
5709764 | Funawatari et al. | Jan 1998 | A |
5754351 | Kuen et al. | May 1998 | A |
5774440 | Kimura et al. | Jun 1998 | A |
5787460 | Yashiro et al. | Jul 1998 | A |
5850382 | Koishi et al. | Dec 1998 | A |
5874147 | Bojarczuk, Jr. et al. | Feb 1999 | A |
5886985 | Kobayashi et al. | Mar 1999 | A |
5931935 | Cabrera et al. | Aug 1999 | A |
5978812 | Inokuchi et al. | Nov 1999 | A |
5999504 | Aoki | Dec 1999 | A |
6091686 | Caffarelli et al. | Jul 2000 | A |
6108285 | Freeman et al. | Aug 2000 | A |
6117185 | Schmidt | Sep 2000 | A |
6125100 | Sensyu | Sep 2000 | A |
6153063 | Yamada et al. | Nov 2000 | A |
6160778 | Ito et al. | Dec 2000 | A |
6243340 | Ito et al. | Jun 2001 | B1 |
6256642 | Krueger et al. | Jul 2001 | B1 |
6351447 | Takagi et al. | Feb 2002 | B1 |
6389427 | Faulkner | May 2002 | B1 |
6452897 | Van Den Enden | Sep 2002 | B1 |
Number | Date | Country |
---|---|---|
0284037 | Mar 1988 | EP |
0 301 829 | Jul 1988 | EP |
0 301 866 | Jul 1988 | EP |
0 284 037 | Sep 1988 | EP |
0 350 920 | Jul 1989 | EP |
0 386 971 | Mar 1990 | EP |
0 802 530 | Nov 1990 | EP |
0448378 | Mar 1991 | EP |
0 475 197 | Aug 1991 | EP |
0 448 378 | Sep 1991 | EP |
0 488 388 | Nov 1991 | EP |
0 466 389 | Jan 1992 | EP |
0 555 486 | Aug 1992 | EP |
0 541 219 | Sep 1992 | EP |
0643388 | Aug 1994 | EP |
0676761 | Oct 1994 | EP |
0 643 388 | Mar 1995 | EP |
0 718 827 | Jun 1995 | EP |
0 676 761 | Oct 1995 | EP |
0730274 | Feb 1996 | EP |
0730274 | Sep 1996 | EP |
0 786 767 | Jan 1997 | EP |
0 840 296 | Oct 1997 | EP |
0 969 452 | Dec 1997 | EP |
2 203 886 | Oct 1988 | GB |
2 322 555 | Sep 1998 | GB |
WO 0072312 | Nov 2000 | WO |
WO 0079526 | Dec 2000 | WO |
WO 0106510 | Jan 2001 | WO |
WO 0106511 | Jan 2001 | WO |
0193262 | May 2001 | WO |
WO0193262 | Dec 2001 | WO |