Hi All,
	As some of you already know, I'm working part time for Paul again,
making various 'scu' enhancements.  I'll be sending out periodic updates as
new functionality is completed.

	I'll be keeping a test version of 'scu' in the following directory:

wasted% ls -ls nscu.d
total 1606
   2 -rwxr-xr-x   1 rmiller  staff       1769 Apr 20 18:12 Scu*
   6 -rw-r--r--   1 rmiller  staff       5737 Apr 26 14:11 ToDoList
1472 -rwxr-xr-x   1 rmiller  staff    1507328 Apr 27 09:21 scu*
  11 -rw-r--r--   1 rmiller  staff      10428 Apr 12 15:32 scu-V2-Features
 112 -rw-r--r--   1 rmiller  staff     110324 Apr 17 16:29 scu.hlp
   3 -rwxr-xr-x   1 rmiller  staff       2642 Apr 20 16:24 scu.ksh*
wasted% 

	While I realize everyone is pretty busy, I'd appreciate any help
youall can give me testing the new 'scu', and any feedback you may have.

	As you can see above, there's a scu-V2-Features list, that several
of us put together.  Please feel free to review this, and send me any other
features you'd like to see incorporated.

	The files Scu & scu.ksh are Korn shell scripts which communicate
with 'scu' via pipes.  This allows one to use Korn shell command line editing
features and history mechanism, among other things.

	The latest 'scu' changes are summarized below, and test logs are
attached showing this new functionality.

	What's New as of April 27, 1995
	-------------------------------

     o	10-byte Mode Sense/Select now used to obtain all mode pages, if the
	device supports this optional CDB. Single pages are still done using
	6-byte CDB's.

     o	The "show inquiry" command displays drive serial number and dumps
	additional data bytes in hex.  Currently 100 bytes requested.
	[ NOTE:  "show device" still displays only 36 bytes of inquiry
	  since this is all we store in the CAM EDT. ]

     o	Display of sense information (after errors), is now more informative
	and it displays additional vendor unique data (useful for debug).

     o	Output of "show nexus" and "show edt" now displays device name.

     o	The "show pages supported" command gives a mode page summary.

     o	Information in mode parameter headers & pages are now decoded.
	[ NOTE:  Not all pages are complete yet as this takes time. ]

     o	Display of Control Mode Page 0xA is now supported (see below).

     o	Problems with non-SCSI-2 mode page sizes has been corrected.
	[ NOTE:  Corrects problem with RZ29B & RZ25M Cache Control Page.]

     o	Debug & CAM debug output has been altered.  Debug displays CDB
	and data information, while CAM debug also displays CAM CCB's.
	[ NOTE: "set cam debug on" now used to enable CAM debug info. ]

     o	Added the ability to execute shell commands via "! cmd" & "shell"
	commands (useful for single user more or in Bourne shell).

     o	I've also enhanced the CD-ROM support for our RRD43/44 (Toshiba)
	drives, so vendor unique modes and block sizes can be selected.
	[ NOTE:  This support allows audio data to be read (see below). ]

	While testing has been limited, I believe 'scu' is pretty stable.
Please send me mail if you encounter any problems (no QARs are necessary).

Cheers,
Robin
==============================================================================

og% scu -f /dev/rrz1c
scu> show nexus
Device: RZ29B, Bus: 0, Target: 1, Lun: 0, Type: Direct Access
scu> show edt lun 0
CAM Equipment Device Table (EDT) Information:

    Device: RZ28    Bus: 0, Target: 0, Lun: 0, Type: Direct Access
    Device: RZ29B   Bus: 0, Target: 1, Lun: 0, Type: Direct Access
    Device: RZ26    Bus: 0, Target: 2, Lun: 0, Type: Direct Access
    Device: RZ28    Bus: 0, Target: 3, Lun: 0, Type: Direct Access
    Device: TLZ06   Bus: 0, Target: 5, Lun: 0, Type: Sequential Access
    Device: RRD43   Bus: 0, Target: 6, Lun: 0, Type: Read-Only Direct Access
scu> 
scu> show pages supported
Mode Pages Supported by Device /dev/rrz1c (RZ29B):

           Error Recovery Page (0x01), Page Length 10 (0x0a), Saveable Yes
     Disconnect/Reconnect Page (0x02), Page Length 14 (0x0e), Saveable Yes
     Direct Access Format Page (0x03), Page Length 22 (0x16), Saveable Yes
      Rigid Disk Geometry Page (0x04), Page Length 22 (0x16), Saveable Yes
    Verify Error Recovery Page (0x07), Page Length 10 (0x0a), Saveable Yes
            Cache Control Page (0x08), Page Length 18 (0x12), Saveable Yes
             Control Mode Page (0x0a), Page Length  6 (0x06), Saveable Yes
      Notch and Partition Page (0x0c), Page Length 22 (0x16), Saveable Yes
            CD-ROM Device Page (0x0d), Page Length 10 (0x0a), Saveable Yes
          Vendor Specific Page (0000), Page Length  2 (0x02), Saveable Yes

scu> set paging off
scu> show pages

Mode Parameter Header:

                 Mode Data Length: 170
                      Medium Type: 0 (Default Medium Type)
        Device Specific Parameter: 0x10 (Target Supports DPO & FUA bits)
          Block Descriptor Length: 8

Mode Parameter Block Descriptor:

                     Density Code: 0
         Number of Logical Blocks: 8380080
             Logical Block Length: 512

Error Recovery Parameters (Page 1 - current values):

Page Header:
                        Page Code: 0x1
               Parameters Savable: Yes
                      Page Length: 10
         Disable Correction (DCR): No
  Disable Transfer on Error (DTE): No
     Post Recoverable Error (PER): Yes
    Enable Early Correction (EEC): No
             Read Continuous (RC): No
              Transfer Block (TB): Yes
 Automatic Read Allocation (ARRE): No
Automatic Write Allocation (AWRE): No
                 Read Retry Count: 33
                  Correction Span: 48 bits
                Head Offset Count: 0
         Data Strobe Offset Count: 0
                Write Retry Count: 3
              Recovery Time Limit: 65535ms

Disconnect/Reconnect Parameters (Page 2 - current values):

Page Header:
                        Page Code: 0x2
               Parameters Savable: Yes
                      Page Length: 14
                Buffer Full Ratio: 128/256 (50%)
               Buffer Empty Ratio: 128/256 (50%)
             Bus Inactivity Limit: 1000us
            Disconnect Time Limit: 0 (No Limit)
               Connect Time Limit: 0 (No Limit)
               Maximum Burst Size: 0 (No Limit)
       Data Transfer Disc Control: 0 (Disconnect control not used)

Direct Access Format Parameters (Page 3 - current values):

Page Header:
                        Page Code: 0x3
               Parameters Savable: Yes
                      Page Length: 22
                  Tracks per Zone: 21
       Alternate Sectors per Zone: 9
        Alternate Tracks per Zone: 0
      Alternate Tracks per Volume: 21
                Sectors per Track: 113
   Data Bytes per Physical Sector: 512
                       Interleave: 1
                       Track Skew: 9
                    Cylinder Skew: 16
               Surface Addressing: 0
                  Removable Media: No
               Hard Sector Format: Yes

Rigid Disk Geometry Parameters (Page 4 - current values):

Page Header:
                        Page Code: 0x4
               Parameters Savable: Yes
                      Page Length: 22
      Maximum Number of Cylinders: 3708
          Maximum Number of Heads: 20
  Write Precomp Starting Cylinder: 0
   Reduced Write Current Cylinder: 0
                  Drive Step Rate: 0 (Targets' default)
            Landing Zone Cylinder: 0 (Targets' default)
      Rotational Position Locking: 0 (Disabled or not supported)
                Rotational Offset: 0 (Not used)
             Medium Rotation Rate: 7200 rpm

Verify Error Recovery Parameters (Page 7 - current values):

Page Header:
                        Page Code: 0x7
               Parameters Savable: Yes
                      Page Length: 10
                           Byte 2: 0
                           Byte 3: 0x21
                           Byte 4: 0x30
                           Byte 5: 0
                           Byte 6: 0
                           Byte 7: 0
                           Byte 8: 0
                           Byte 9: 0
                          Byte 10: 0xff
                          Byte 11: 0xff

Cache Control Parameters (Page 8 - current values):

Page Header:
                        Page Code: 0x8
               Parameters Savable: Yes
                      Page Length: 18
         Read Cache Disable (RCD): No
       Multiplication Factor (MF): No
         Write Cache Enable (WCE): No
         Write Retention Priority: 0 (Not distiguished)
   Demand Read Retention Priority: 0 (Not distiguished)
 Disable Prefetch Transfer Length: 65535 blocks
                 Minimum Prefetch: 0 blocks
                 Maximum Prefetch: 159 blocks
         Maximum Prefetch Ceiling: 612 blocks

Control Mode Parameters (Page A - current values):

Page Header:
                        Page Code: 0xa
               Parameters Savable: Yes
                      Page Length: 6
   Report Log Exception Condition: No
              Disable Tag Queuing: No
           Queue Error Management: No
         Queue Algorithm Modifier: 0x1 (Unrestricted re-ordering allowed)
         Error Asynchronous Event: No
       Unit Attention Async Event: No
           Unit Ready Async Event: No
   Extended Contingent Allegiance: Disabled
    Unit Ready AEN Holdoff Period: 0ms

Notch and Partition Parameters (Page C - current values):

Page Header:
                        Page Code: 0xc
               Parameters Savable: Yes
                      Page Length: 22
                           Byte 2: 0x80
                           Byte 3: 0
                           Byte 4: 0
                           Byte 5: 0x1d
                           Byte 6: 0
                           Byte 7: 0
                           Byte 8: 0
                           Byte 9: 0
                          Byte 10: 0
                          Byte 11: 0
                          Byte 12: 0
                          Byte 13: 0xe
                          Byte 14: 0x7f
                          Byte 15: 0x14
                          Byte 16: 0
                          Byte 17: 0
                          Byte 18: 0
                          Byte 19: 0
                          Byte 20: 0
                          Byte 21: 0
                          Byte 22: 0x10
                          Byte 23: 0

CD-ROM Device Parameters (Page D - current values):

Page Header:
                        Page Code: 0xd
               Parameters Savable: Yes
                      Page Length: 10
      Inactivity Timer Multiplier: 0 = Stay in hold track state for Vendor Specific
    Number of S-units per M-units: 0
    Number of F-units per S-units: 0

Vendor Specific Parameters (Page 0 - current values):

Page Header:
                        Page Code: 0
               Parameters Savable: Yes
                      Page Length: 2
                           Byte 2: 0x20
                           Byte 3: 0
scu> set debug on
scu> set page cache
SCSI Cmd = 'mode sense', CDB length = 6, CDB bytes: 1a 0 48 0 20 0
'mode sense' completed, CAM status = 0x1 (CCB request completed w/out error)
Data received for 'mode sense' command:

    0x140048aa0  1f 00 10 08 00 7f de b0 00 00 02 00 88 12 0d 00
    0x140048ab0  00 00 ff ff ff ff 00 00 a0 ff 00 00 00 00 00 00

Completing 'mode sense' command with status 0 (SUCCESS).
SCSI Cmd = 'mode sense', CDB length = 6, CDB bytes: 1a 0 88 0 20 0
'mode sense' completed, CAM status = 0x1 (CCB request completed w/out error)
Data received for 'mode sense' command:

    0x140048a70  1f 00 10 08 00 7f de b0 00 00 02 00 88 12 00 00
    0x140048a80  ff ff 00 00 00 9f 02 64 80 03 00 00 00 00 00 00

Completing 'mode sense' command with status 0 (SUCCESS).
Setting Cache Control Parameters (Page 8)
SCSI Cmd = 'mode select', CDB length = 6, CDB bytes: 15 11 0 0 20 0
Data sent for 'mode select' command:

    0x140048ad0  00 00 00 08 00 7f de b0 00 00 02 00 08 12 00 00
    0x140048ae0  ff ff 00 00 00 9f 02 64 80 03 00 00 00 00 00 00

'mode select' completed, CAM status = 0x1 (CCB request completed w/out error)
Completing 'mode select' command with status 0 (SUCCESS).
scu> ! pwd
scu> shell
#
# exit
scu> sw /dev/rrz0c
Switching to device entry /dev/rrz0c (RZ28)...
scu> show inquiry
SCSI Cmd = 'inquiry', CDB length = 6, CDB bytes: 12 0 0 0 64 0
'inquiry' completed, CAM status = 0x1 (CCB request completed w/out error)
Data received for 'inquiry' command:

    0x140060180  00 00 02 02 5b 00 00 16 44 45 43 20 20 20 20 20
    0x140060190  52 5a 32 38 20 20 20 20 20 28 43 29 20 44 45 43
    0x1400601a0  34 34 32 44 30 30 30 30 34 32 38 35 34 30 36 36
    0x1400601b0  00 00 00 00 00 00 13 21 06 00 00 00 00 00 00 00
    0x1400601c0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x1400601d0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Completing 'inquiry' command with status 0 (SUCCESS).
Command 'get inquiry data' completed with residual count of 4.
Inquiry Information:

           Peripheral Device Type: Direct Access
             Peripheral Qualifier: Peripheral Device Connected
             Device Type Modifier: 0
                  Removable Media: No
                     ANSI Version: SCSI-2 Compliant
                     ECMA Version: 0
                      ISO Version: 0
             Response Data Format: ANSI SCSI-2
            Terminate I/O Process: 0
        Asynchronous Notification: 0
                Additional Length: 91
               Soft Reset Support: No
          Command Queuing Support: Yes
          Target Transfer Disable: Yes
           Linked Command Support: No
       Synchronous Data Transfers: Yes
     Support for 16 Bit Transfers: No
     Support for 32 Bit Transfers: No
      Relative Addressing Support: No
            Vendor Identification: DEC     
           Product Identification: RZ28     (C) DEC
          Firmware Revision Level: 442D
              Drive Serial Number: 000042854066
             Vendor Specific Data: 30 30 30 30 34 32 38 35 34 30 36 36
                                   00 00 00 00 00 00 13 21 06 00 00 00
                                   00 00 00 00 00 00 00 00 00 00 00 00
                                   00 00 00 00 00 00 00 00 00 00 00 00
                                   
scu> exit

==============================================================================

% scu -f /dev/rrz9c
scu> help set
	.
	.
	.
set audio 

    Set parameters for a CD-ROM audio device.
  
      Format:
  
                       { address format { lba | msf }         }
        scu> set audio { density { hex-code | density-code }  }
                       { length block-length                  }
                       { volume [ channel-{ 0 | 1 } ] level n }
  
      Notes:
        o  Some CD-ROM's do not permit altering the density and/or
           block length fields.  For example, the DEC RRD42 (Sony
           CDU-541) CD-ROM does not allow this, while the DEC RRD43/
           RRD44 (Toshiba) CD-ROM's do allow this.
  
      Aliases:
        The alias 'cdrom' is accepted for the 'audio' keyword', since
        this commands now controls both audio and CD-ROM parameters.
  

  Subtopics available:

  address             density             length              volume

set audio subtopic: density

set audio density 

    Allows the density and/or block length to be changed.  In the case
    of the Toshiba XM-3401TA (RRD43/RRD44) CD-ROM's, setting the correct
    density allows audio data to be read via the 'read media' command.
    [ Hmmm... now that I can read this data what should I do with it? ]
  
      Format:
  
        scu> set cdrom density { hex-code | density-string }
  
      Where 'density-string' is one of the following:
  
        String      Density Code      Block Length
        ------      ------------      ------------
        default         0x0                512
        xa-support      0x81              2048
        cd-da           0x82              2352
        mode1-xa        0x83              2048
  
      Notes:
        o  The hex codes > 0x80 are vendor unique (Toshiba here).
        o  You must set the density to 'cd-da' to read audio data.
        o  Reading of audio data can only be done with 'read media'
           at this time, since 'scu' honors the device block size.
        o  If you set the density to 'cd-da', you will NOT be able
           to access the CD-ROM with the normal CAM disk driver.
           [ The disk driver doesn't change the density code, so
             attempts to set the block size to 512 will fail. ]
        o  To be safe, set the density code to 'default' when you
           are done reading audio data.
  
scu> show inquiry
Inquiry Information:

           Peripheral Device Type: Read-Only Direct Access
             Peripheral Qualifier: Peripheral Device Connected
            Device Type Qualifier: 0
                  Removable Media: Yes
                     ANSI Version: SCSI-2 Compliant
                     ECMA Version: 0
                      ISO Version: 0
             Response Data Format: ANSI SCSI-2
            Terminate I/O Process: 0
        Asynchronous Notification: 0
                Additional Length: 91
               Soft Reset Support: No
          Command Queuing Support: No
           Linked Command Support: Yes
       Synchronous Data Transfers: Yes
     Support for 16 Bit Transfers: No
     Support for 32 Bit Transfers: No
      Relative Addressing Support: Yes
            Vendor Identification: TOSHIBA 
           Product Identification: CD-ROM XM-3401TA
          Firmware Revision Level: 1094
             Vendor Specific Data: 48 52 47 49 57 47 57 52 00 00 00 00
                                   00 00 00 00 00 00 00 00 00 00 00 00
                                   00 00 00 00 00 00 00 00 00 00 00 00
                                   00 00 00 00 00 00 00 00 00 00 00 00
                                   00 00 00 00 00 00 00 00 00 00 00 
scu> show audio toc
Table of Contents Summary:

    Track 1: Audio Track, Time: 06:53, LBA:      0, Length: 124141
    Track 2: Audio Track, Time: 05:13, LBA: 124140, Length: 93781
    Track 3: Audio Track, Time: 05:21, LBA: 217920, Length: 96389
    Track 4: Audio Track, Time: 07:00, LBA: 314308, Length: 125873
    Track 5: Audio Track, Time: 04:38, LBA: 440180, Length: 83329
    Track 6: Audio Track, Time: 03:24, LBA: 523508, Length: 61253
    Track 7: Audio Track, Time: 06:56, LBA: 584760, Length: 124949
    Track 8: Audio Track, Time: 03:33, LBA: 709708, Length: 63753
    Track 9: Audio Track, Time: 07:38, LBA: 773460, Length: 137629

There are 9 audio tracks and 0 data tracks, with a total time of 50:36.
scu> show mode

Mode Parameters (Page 0 - current values):

Mode Parameter Header:

                 Mode Data Length: 11
                      Medium Type: 0 = Default Medium Type
        Device Specific Parameter: 0
          Block Descriptor Length: 8

Mode Parameter Block Descriptor:

                     Density Code: 0x83 = Mode-1 and XA Form-1 Support
         Number of Logical Blocks: 0
             Logical Block Length: 512
scu> set cdrom density cd-da
scu> show mode

Mode Parameters (Page 0 - current values):

Mode Parameter Header:

                 Mode Data Length: 11
                      Medium Type: 0 = Default Medium Type
        Device Specific Parameter: 0
          Block Descriptor Length: 8

Mode Parameter Block Descriptor:

                     Density Code: 0x82 = CD-DA SCSI Transfer Mode
         Number of Logical Blocks: 0
             Logical Block Length: 2352
scu> 
scu> set watch off
scu> read media starting 0 length 100 compare off > audio.dat
Reading 100 blocks on /dev/rrz9c (RZxx)...
scu> set cdrom density default
scu> show mode

Mode Parameters (Page 0 - current values):

Mode Parameter Header:

                 Mode Data Length: 11
                      Medium Type: 0 = Default Medium Type
        Device Specific Parameter: 0
          Block Descriptor Length: 8

Mode Parameter Block Descriptor:

                     Density Code: 0 = Default Density Code
         Number of Logical Blocks: 0
             Logical Block Length: 512
scu> exit
% ls -ls audio.dat
240 -rw-r--r--   1 rmiller  system    235200 Dec 22 12:07 audio.dat
% 
