src@scuzzy.uucp (Heiko Blume) (07/15/90)
I've previously asked what all those parameters in the SCSI hard disk drive control pages mean exactly, but didn't get any answers. I now have gathered some documentation about these parameters, and i thought many people might be interested that don't have it. With this knowledge it is possible to increase throughput with SCSI hard disks and in general make having SCSI devices (more) worthwile. On the other hand it is possible to LOOSE all data on a drive if you're not careful. You can change these parameters by issueing the SCSI Mode Select command to the SCSI bus or, much more convenient, with the utilities that Roy Neese from Adaptec, inc. wrote if you have a machine that can run MS/PC-DOS and has the Adaptec AHA-154x scsi host adapter installed. If you don't have a DOS machine you might consider taking your hard disk to someone that has a DOS machine with that host adapter and perform the parameter changes there. To use the following information you might have to get hold of the ANSI proposed draft standard for SCSI X3T9/82-2 Revision 7b or later to roll your own program for issueing mode select commands to your SCSI bus. However this might not help you too much if you don't know how to talk to your SCSI host adapter so you can really issue SCSI commands to the bus. If you have the beforementioned utilities (they are free!!) you can ignore all the stuff talking about `bit 2 of byte 3' etc. If someone doesn't have the utilities or the SCSI standard i'd be happy to supply these (i have the SCSI standard in WordStar files), although this might only be feasible if you're in europe, 'cause i live in germany. I pulled this especially from the Quantum ProDrive series manual, but nearly every parameter should be available in most SCSI hard disks. For instance the first four control pages are similar in the drives from Seagate (i.e. ST296N) and from CD/Imprimis/Seagate (i.e. WREN V). If a parameter is Quantum specific this will be noted explicitly. Also note that drives that use Zone Bit Recording won't allow you to change the number of sectors per track because those drives tracks use different numbers of sectors per track depending on the physical length of the tracks to squeeze more capacity out of the same surface. Numbers like 0x17 are hex (base 16). Now for the real info! First the general structure of the mode select command: ======================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Opcode = 0x15 | ------------------------------------------------------------------------ 1 | Logical Unit Number | Reserved = 0 | SP | ------------------------------------------------------------------------ 2 | Reserved = 0 | ------------------------------------------------------------------------ 3 | Reserved = 0 | ------------------------------------------------------------------------ 4 | Parameter List Lenght (Bytes) | ------------------------------------------------------------------------ 5 | VU = 0 | Reserved = 0 | F | L | ------------------------------------------------------------------------ Save Parameters (SP) Bit: if the save paramters bit is set to one, only the saveable pages of the current mode table will be copied to the save mode table. The parameter list lenght specifies the length in bytes of the mode select parameter list that shall be transferred during the data out phase (see below). Mode select header: (the mode select parameter list contains a four byte header followed by zero or more one block descriptors followed by zero or more 'pages'). ======================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Reserved = 0 | ------------------------------------------------------------------------ 1 | Medium Type = 0 | ------------------------------------------------------------------------ 2 | Reserved = 0 | ------------------------------------------------------------------------ 3 | Block Descriptor Length (Bytes) | ======================================================================== Block Descriptor: ======================================================================== 0 | Density Code = 0 | ------------------------------------------------------------------------ 1 | (MSB) Number of Blocks = 0 | ------------------------------------------------------------------------ 2 | Number of Blocks = 0 | ------------------------------------------------------------------------ 3 | (LSB) Number of Blocks = 0 | ------------------------------------------------------------------------ 4 | Reserved = 0 | ------------------------------------------------------------------------ 5 | (MSB) Block Length | ------------------------------------------------------------------------ 6 | Block Length | ------------------------------------------------------------------------ 7 | (LSB) Block Length | ======================================================================== Page Descriptor(s): ======================================================================== 0 | Reserved = 0 | Page Code (see below) | ------------------------------------------------------------------------ 1 | Page Length | ------------------------------------------------------------------------ 2 | Refer to page defintion below | to n | | ======================================================================== Medium type: The medium type is always set to zero which stands for the the currently mounted medium, which is correct because hard disks are non-removable. Block Descriptor Length: The block descriptor length specifies the length in bytes of all the block descriptors. It is equal to the number of block descriptors times eight and does not include the pages if any. The block descriptor specifies the logical block length for the drive. it contains a density code, a number of blocks, and a block length. Density Code: Always zero for non-removable hard disks. Number of Blocks: Always zero to indicate that all of the remaining logical blocks of the medium have the characteristics specified by the block descriptor. Block Length: Specifies the length in bytes of each logical block described by the block descriptor. Common values are 512, 1024, 2048. Page Code: Pages may optionally be included (immediately following the block descriptor, if any) in any order. To avoid having to specify all mode parameters each time a mode select comand is issued, the mode parameters are divided into pages. A page is the minimum unit that can be specified in a mode select. Each time a page is referenced, ALL the parameters must be specified. Now a table of the available control pages: =========================================== Page Description ---------------------------------------------------------- 0x01 Read/Write Error Recovery Parameters 0x02 Disconnect/Reconnect Control Parameters 0x03 Direct Access Device Format Paramters 0x04 Rigid Disc Drive Geometry Parameters 0x37 Quantum Unique Control Parameters 0x39 Quantum Unique Drive Control Parameters Note: The last table seems to be really quantum specific, although the parameters might be appropriate for any disk. Most of the paramters in page 0x37 are also found in other drives like the big CDC/Imprimis/Seagate drives. However, which parameters are supported by your drive depends on the manufacturer. If you use the adaptec utilities you will discover, that you simply can't change them, or that the device doesn't have that page. Page Length: The page length indicates the number of bytes of the page that will follow, starting with the first byte of flags or values and con- tinuing consecutively. The page length shall be set to the exact same value returned by the drive in the Mode Sense Page Length byte. otherwise a Check Condition status with a sense key of Illegal Request will result. Error Recovery Parameters ------------------------- ======================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Reserved = 0 | Page Code = 0x1 | ------------------------------------------------------------------------ 1 | Page Length = 0x6 | ------------------------------------------------------------------------ 2 | AWRE | ARRE | TB | RC | EEC | PER | DTE | DCR | ------------------------------------------------------------------------ 3 | Retry Count | ------------------------------------------------------------------------ 4 | Correction Span = 0 | ------------------------------------------------------------------------ 5 | Head Offset Count = 0 | ------------------------------------------------------------------------ 6 | Data Strobe Offset Count = 0 | ------------------------------------------------------------------------ 7 | Revocery Time Limit = 0 | ======================================================================== - Disable Correction (DCR) = bit 0 of byte 2 A disable correction bit set to one indicates that the data shall be transferred without correction, whether or not it is actually possible to correct the data. A DCR bit of zero indicates, that the data shall be corrected if possible. Uncorrectable data is transferred with no attempt to apply correction. if RC (bit 4 of byte 2) is set to one this bit is ignored. - Disable Transfer On Error (DTE) = bit 1 of byte 2 A disable transfer on error bit set to one indicates that the drive shall create the 'Check Condition' status immediately upon detection of an error, if PER (bit 2 of byte 2) is set to one. The data transfer to the initiator shall be terminated. The block in error may or may not be transferred to the initiator dependant upon the setting of the TB bit. A DTE bit set to zero enables data transfer for any data which can be recovered within the limits of the error recovery flags. Any errors that would be posted are not posted until the transfer length is exhausted. If PER is zero, or RC is one, this bit is ignored. - Post Error (PER) = bit 2 of byte 2 A post error bit set to zero indiactes that the drive shall not create the 'Check Condition' status for errors recovered within the limits established by the other error recovery flags. Recovery procedures exceeding those limits shall be posted accordingly. The transfer may terminate prior to exhausting the transfer length depending on the error and state of the other flags. A PER bit set to one shall enable the reporting of the 'Check Condition' status for detected errors, with the appropriate sense key. - Enable Early Error Correction (EEC) = bit 3 of byte 2 An EEC bit set to one indicates that the drive will use its ECC algorithm immediately upon detection of a data error. The drive will not perform read retries before applying correction unless the error is determined to be uncorrectable. An EEC bit set to zero indicates that the drive will use its normal recovery procedures when an error occurs. If the RC bit is one this bit is ignored. - Read Continous (RC) = bit 4 of byte 1 A RC bit set to one requests the drive to transfer the requested length without adding delays which would ensure data integrity (i.e. by error recovery schemes). This implies that the drive shall send data which may be erroneous in order to maintain a continous flow of data and avoid delays, and that ignored errors will create the 'Check Condition' status. An RC bit set to zero indicates that time consuming operations for error recovery are acceptable during the data transfer. - Transfer Block (TB) = bit 5 of byte 2 A transfer block bit set to one when DTEis set to one, indicates that the failing block data (recovered or unrecoverable) shall be transferred to the initiator. A TB bit of zero , when DTE is set to one, indicates that the failing block shall not be transferred to the initiator. If DTE is zero, or RC is one, this bit is ignored. - Automatic Read Reallocation Enabled (ARRE) = bit 6 of byte 2 An automatic read reallocation enabled bit set to one indicates that the target shall enable automatic reallocation of bad blocks. The execution of the automatic reallocation is similar to the function of the 'reassign blocks' command, but is initiated by the drive when a hard error is encountered. An ARRE bit set to zero indicates that the target shall not perform automatic reallocation of bad blocks. If RC is one, this bit is ignored. - Automatic Write Reallocation Enabled (AWRE) Same as ARRE, but for write errors. - Retry Count Retry count is the number of times the drive shall attempt to recover from data errors by rereading before applying correction. This parameter is ignored if both the DTE and PER bits are set to one, or if the RC bit is one, or if the EEC bit is one. - Correction Span - Head offset count - Data strobe offset - recovery time limit I still don't know much about these parameters, if you know anything about them, please let me know !! Disconnect/Reconnect Control Parameters --------------------------------------- ======================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Reserved = 0 | Page Code = 0x2 | ------------------------------------------------------------------------ 1 | Page Length = 0xa | ------------------------------------------------------------------------ 2 | Buffer Full Ratio | ------------------------------------------------------------------------ 3 | Buffer Empty Ratio | ------------------------------------------------------------------------ 4 | Bus inactivity Limit (MSB) = 0 | ------------------------------------------------------------------------ 5 | Bus inactivity Limit (LSB) = 0 | ------------------------------------------------------------------------ 6 | Disconnect Time Limit (MSB) = 0 | ------------------------------------------------------------------------ 7 | Disconnect Time Limit (LSB) = 0 | ------------------------------------------------------------------------ 8 | Connect Time Limit (MSB) = 0 | ------------------------------------------------------------------------ 9 | Connect Time Limit (LSB) = 0 | ------------------------------------------------------------------------ 10 | Reserved | ------------------------------------------------------------------------ 11 | Reserved | ------------------------------------------------------------------------ - Buffer Full Ratio This indicates to the drive , for commands requiring data transfers to the initiator (READ) how full the buffer shall be prior to reconnecting (unless the buffer contains all of the required data). The drive disconnects on a Read when there is no data in the buffer. The value represents the percentage of the buffer that will fill prior to reconnection; i.e. 255 (0xff) represents 100% full, 128 (0x80) represents 50% full etc. Each bit is equal to 1/256th of the maximum buffer size. The default value is 0 which is interpreted to mean that at least 512 bytes must be transferred to the buffer before re- connection. - Buffer Empty Ratio This indicates to the drive, for commands requiring data transfer from the initiator, how empty the buffer shall be prior to reconnecting to fetch more data (unless the buffer can contain all of the required data). The value represents the percentage of the buffer that will empty; i.e. 255 (0xff) represents 100% empty, 128 (0x80) represents 50% etc. Each bit represents 1/256th of the maximum buffer size. The deafult value is 0 which is inter- preted to mean that there is space in the buffer for at least 512 bytes before reconnection. Both the buffer full and empty ratio are rounded (down or up respectivly) by the drive to the nearest multiple of 512 bytes for commands requiring logical block transfer. Direct Access Device Format Parameters -------------------------------------- ======================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Reserved = 0 | Page Code = 0x3 | ------------------------------------------------------------------------ 1 | Page Length = 0x16 | ------------------------------------------------------------------------ Handling of defect fields ======================================================================== 2 | (MSB) Tracks Per Zone (0) | ------------------------------------------------------------------------ 3 | (LSB) Tracks Per Zone (6) | ------------------------------------------------------------------------ 4 | (MSB) Alternate Sectors per Zone (0) | ------------------------------------------------------------------------ 5 | (LSB) Alternate Sectors per Zone (1) | ------------------------------------------------------------------------ 6 | (MSB) Alternate Tracks per Zone (0) | ------------------------------------------------------------------------ 7 | (LSB) Alternate Tracks per Zone (0) | ------------------------------------------------------------------------ 8 | (MSB) Alternate Tracks per Volume (0) | ------------------------------------------------------------------------ 9 | (LSB) Alternate Tracks per Volume (0) | ======================================================================== Track format field ======================================================================== 10 | (MSB) Selector per Tracks (0) | ------------------------------------------------------------------------ 19 | (LSB) Selector per Tracks (0) | ======================================================================== Sector Format Fields ======================================================================== 12 | (MSB) Data Bytes Per Physical Sector (2) | ------------------------------------------------------------------------ 13 | (LSB) Data Bytes Per Physical Sector (0) | ------------------------------------------------------------------------ 14 | (MSB) Interleave (0) | ------------------------------------------------------------------------ 15 | (LSB) Interleave (1) | ------------------------------------------------------------------------ 16 | (MSB) Track Skew Factor (0) | ------------------------------------------------------------------------ 17 | (LSB) Track Skew Factor (5) | ------------------------------------------------------------------------ 18 | (MSB) Cylinder Skew Factor (0) | ------------------------------------------------------------------------ 19 | (LSB) Cylinder Skew Factor (0xf) | ------------------------------------------------------------------------ Drive Type Field ======================================================================== 20 | SSEC | HSEC-0 | RMB=0 | SURF=0| INS=0 | Reserved=0 | ------------------------------------------------------------------------ 21 | Reserved=0 | ------------------------------------------------------------------------ 22 | Reserved=0 | ------------------------------------------------------------------------ 23 | Reserved=0 | ======================================================================== - Tracks per Zone The tracks per zone field indicates the number of tracks per defect zone on the drive. - Alternate Sectors per Zone This field indicates the number of sectors per zone that the drive shall from the initiator addressable blocks during the 'format unit' command. These sectors will be available as replacements sectors for defective sectors. - Alternate Tracks per Zone This field indicates the number of tracks the drive shall deallocate from the initiator addressable blocks during the 'format unit' command. These tracks will be available as replacements tracks for defective tracks. - Alternate Tracks per Volume This field indicates the number of tracks that the drive shall deallocate from initiator addressable blocks during the 'format unit' command. These tracks will be available as replacements tracks for defective tracks. Track Format Field ------------------ - Sectors per Tracks This field indicates the numbers of physical sectors that the drive allocates per disk track. Sector Format Field ------------------- - Data bytes per physical sector This field indicates the number of data bytes that the drive shall allocate per physical sector. This value may be different from the logical block size in the block descriptor section of the mode select data. This implies that the drive set an equal number of tracks per sector accordingly. - Interleave This field indicates the sector interleave to use on each track. However most (all?) SCSI disks have an interleave of 1. You should NOTE that Micropolis drives MAY have a factory (or whatever) interleave of 2! You can order your vendor to have these drives formatted for interleave 1. I'm not sure if you can do this yourself, i.e. if the drive allows you to set the interleave. In any case you should find out at what interleave your drive is formatted with the SCSI Mode Sense command. - Track Skew Factor This field indicates the number of physical sectors between the last logical block of one track and the first logical block on the next sequential track of the the same cylinder. - Cylinder Skew Factor This field indicates the number of physical sectors between between the last logical block of one cylinder and the first logical block of the next se- quential cylinder. - Soft Sector (SSEC) = bit 2 of byte 20 A SSEC set to one indicates that the drive shall use soft sector formatting. - Hard Sector = bit 6 of byte 20 This bit set to one indicates that the drive shall use hard sector formatting. - Removable (RMB) - bit 5 of byte 20 A RMB bit set to one indicates that the logical unit is removable. A RMB bit set to 0 indicates that the logical unit is removable. This should be zero for hard disks. - Surface (SURF) = bit 4 of byte 20 This bit indicates how the drive shall map the logical block addressing into physical block addressing. A SURF bit set to one indicates that the drive shall allocate progressive addresses to all sectors on a surface prior to allocating sector addresses to the next surface. A SURF bit set to 0 indicates that the drive shall allocate progressive addresses to all sectors within a cylinder prior to allocating sector addresses to the next cylinder. - Inhibit Save (INS) = bit 2 of byte 20 This bit set to one indicates that the drive shall inhibit the saving of any parameters during the successful completion of the next 'Format Unit' command. The INS bit set to zero indicates that the parameters of the page defined by page code 4 shall be saved by the drive as a read only page. Now for some special control parameters! these are mostly for the quantum drives but the CDC/Imprimis/Seagate Drives implement some of the following. especially the 'cache enable' is *VERY* interesting! If you use the utilities from Roy Neese you will have no trouble setting these important parameters. If you can't employ these utilities you might have to get hold of the programmers reference manual (or whatever its called) for you drive. Unique Control Parameters ------------------------- ======================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Page Code = 0x37 | ------------------------------------------------------------------------ 1 | Page Length = 0x0e | ------------------------------------------------------------------------ 2 | Reserved=0 | PSM | SSM | WIE | PO | PE | CE | ------------------------------------------------------------------------ 3 | Number of cache segments | ------------------------------------------------------------------------ 4 | Minimum Prefetch | ------------------------------------------------------------------------ 4 | Maximum Prefetch | ------------------------------------------------------------------------ 5 | Reserved=0 | ------------------------------------------------------------------------ . . all Reserved = 0 . ------------------------------------------------------------------------ 15 | Reserved=0 | ------------------------------------------------------------------------ - Preserved Synchronous Mode (PSM) = bit 5 of byte 2 A PSM bit set to one indicates that the drive will not clear the table of synchronous mode parameters for all initiators when the drive is reset. A PSM bit of zero will cause all these parameters to be cleared when the drive is reset. - Send Synchronous Message = bit 4 of byte 2 If this bit is set to one indicates that the drive will initiate sending the Extended Message (01) Synchronous Data Transfer Request to the initiator. A SSM bit of zero indicates that the drive that the initiator must initiate sending the Synchronous Data Transfer Request Message. - Write Index Enable = bit 3 of byte 2 All data from Writes create a cache segment stored in the cache and indexed by the cache table. A WIE bit set to zero indicates that the drive will overwrite this segment in the cache on the next 'Read' or 'Write'. a WIE bit set to one indicates that the drive will treat this segment as if it had been generated from 'Read's. A WIE bit set to zero preserves more data in the cache from 'Read's increasing the likelihood that the requested data lies in cache (the magnitude of this increase depends on the size and frequency of write requests). - Prefetch Only (PO) = bit 2 of byte 2 A PO bit set to one indicates that the drive will only keep prefetch data in the cache. The originally requested data will be overwritten with prefetched data. A PO bit set to zero indicates that both original read data and prefetched data will be in the segment. - Prefetch Enable (PE) = bit 1 of byte 2 A PE bit set to one indicates that the drive will perform prefetching. A PE bit set to zero indicates that no prefetching will occur. The CE bit must be set to one to enable use of the PE bit. - Cache Enable (CE) = bit 0 of byte 2 A CE bit set to one indicates that the drive will activate caching on all 'Read's. A CE bit set to 0 indicates that the drive will use the cache RAM as a transfer buffer only. - Number of Cache Segments = Byte 3 Indicates to the drive the number of segments to index in the cache i.e. the number of entries in the cache tables. Valid entries are 1, 2, 4, 8, 16. - Minimum Prefetch = Byte 4 Minimum prefetch indicates to the drive the minimum number of logical blocks to prefetch on a cache miss for a Read command. The valid range is 0 to 116. - Maximum Prefetch = Byte 5 Indicates to the drive the maximum number of logical blocks to prefetch on a cache miss for a Read command. The valid range is 0 to 116. ======================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Page Code = 0x39 | ------------------------------------------------------------------------ 1 | Page Length = 0x6 | ------------------------------------------------------------------------ 2 | DIO | DII | FDB | RUEE | FDPE | R=0 | DUA | DRT | ------------------------------------------------------------------------ 3 | DDIS | DELDIS | Reserved = 0 | SSID | SCSIADR | ------------------------------------------------------------------------ 4 | Reserved=0 | ------------------------------------------------------------------------ 5 | Reserved=0 | ------------------------------------------------------------------------ 6 | Reserved=0 | ------------------------------------------------------------------------ 7 | Reserved=0 | ------------------------------------------------------------------------ - Disable Identify Out (DIO) = bit 7 of byte 2 A DIO bit set to 1 indicated that the drive will not require an IDENTIFY message from the initiator in order to be able to disconnect and reconnect. A DIO bit set to 0 indicates that the drive will require the initiator to send the IDENTIFY message in order to be able to disconnect. - Disable Identify In (DII) = bit 6 of byte 2 This bit set to 1 indicates that the drive will not send an IDENTIFY message after reconnecting to an initiator. Set to 0 this bit indicates that the drive will send the IDENTIFY message after reconnecting. - Fast Deassertion of Busy (FDB) = bit 5 of byte 2 this is for comaptibility with quantums q200 drives. - Reallocate Uncorrectable Error Enabled (RUEE) = bit 4 of byte 2 This bit set to one indicates that if the ARRE bit in Page 1 od the Error Recovery Parameters is set, the drive will automatically reallocate uncorrec- table hard errors. The uncorrectable (bad) data is written to a new block and a new ECC (one that is correct for the BAD data) is appended. This permits the new block to be read without errors. If this bit is set to 0 the drive will not attempt automatic reallocation. - Fill Data Pattern Enable (FDPE) = bit 3 of byte 2 Set to one this causes the drive to write the data pattern in byte 2 of the Format Unit command into every user-accessible sector of the drive, when the Format Unit command is issued. If set to 0 the data pattern will be ignored. - Disable Unit Attention (DUA) = bit 1 of byte 2 Set to one this bit indicates that the drive will not issue a Check Condition status with the Unit Attention sense key on the first command after a reset. The first command issued after a reset will be executed as usual. Set to zero this indicates that the unit attention condition will exist after the drive has been powered-on or reset (by a Bus Device Reset or a 'hard' reset con- dition). - Disable Reselection Timeout (DRT) = bit 0 of byte 2 Set to 1 this indicates that the drive will not timeout during a reselection request. If set to 0 the drive will clear the bus if there is no BSY response from the initiator after waiting a selection time out period (250 ms). - Disable Connections (DDIS)= bit 7 of byte 3 set to 1 this causes the suppression of disconnection and reconnection during a data transfer (r/w). The initial disconnection due to the implied Seek of a Read command is not prevented, but no other disconnections will occur. The write command will also allow the initial disconnection due to the seek and prevent any further disconnects; however the Write command starts the data transfer from the host prior to initiating the seek so that the data transfer is already in progress at the time of the seek. This means that the drive may disconnect once at the start of the write command (after the data transfer has started), but will not disconnect again. Set to 0 this bit causes no action to occur. - Delay of Disconnection (DELIDS) = bit 6 of byte 3 this is for comaptibility with quantums q200 drives. - Software Selectable ID (SSID) = bit 3 of byte 3 Set to 0 this indiactes that the drive SCSI ID will be determined by the jumpers on the drives PCB at all times. Set to 1 this indicates that the drive SCSI ID will be determined by the value of the SCSISDR bits (bits 0 to 2 of byte 3), and the jumpers will be ignored. When this bit is set to one, the ID will not be altered until the next Reset or power up of the drive. If upon initial power-up the SSID bit is set (was previously set and saved to the disk), then the SCSIADR bits will determine the ID. Otherwise the ID will be that determined by the jumpers. i hope this helps some people! -- Heiko Blume c/o Diakite blume@scuzzy.mbx.sub.org FAX (+49 30) 882 50 65 Kottbusser Damm 28 blume@netmbx.UUCP VOICE (+49 30) 691 88 93 D-1000 Berlin 61 blume@netmbx.de TELEX 184174 intro d "Have you bugged your source today?"