home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 2: PC / frozenfish_august_1995.bin / bbs / d09xx / d0935.lha / AmiCDROM / AmiCDROM.doc next >
Text File  |  1993-12-20  |  21KB  |  560 lines

  1. AmiCDROM - a CDROM filesystem for the Commodore Amiga
  2. -----------------------------------------------------
  3.  
  4. Version 1.7    06-Dec-93   (C) 1993 by Frank Munkert
  5.                            (ln_fmu@pki-nbg.philips.de)
  6.  
  7. * IMPORTANT NOTICE FOR USERS OF VERSIONS 1.0, 1.1 and 1.2:
  8. *
  9. * The format of the Mountlist 'Startup' field has been changed.
  10. * Please consult the section "THE 'STARTUP' FIELD" for further information.
  11.  
  12. INTRODUCTION
  13.  
  14.   AmiCDROM is a CDROM disk filing system for the Commodore
  15.   Amiga. It supports the ISO-9660 standard, the Rock Ridge
  16.   Interchange Protocol and the Macintosh HFS format.
  17.  
  18.   The CDROM drive is mounted as a DOS device (e.g. CD0:). You
  19.   can access files and directories on a CDROM disk by the usual
  20.   syntax, e.g. "type cd0:foo/readme.txt".
  21.  
  22. DISCLAIMER
  23.  
  24.   This software is provided as-is, without warranty of any kind,
  25.   either expressed or implied. In no event will the author be liable
  26.   for direct, indirect, incidental or consequential damages or data
  27.   loss resulting from the use or application of this software. The
  28.   entire risk as to the results and performance of this software is
  29.   assumed by the user.
  30.  
  31. REQUIREMENTS
  32.  
  33.   AmiCDROM should work with any Amiga model which has a "SCSI-direct"
  34.   compatible SCSI bus adapter. (It might also work with SCSI drivers
  35.   that have no SCSI-direct feature; see 'T'áoption.)
  36.  
  37.   The running handler requires about 60K of memory (with default parameter
  38.   settings).
  39.  
  40. INSTALLATION
  41.  
  42.   1. Copy the 'cdrom-handler' file to L:cdrom-handler.
  43.  
  44.   2a If you use Workbench 2.0:
  45.  
  46.      Create an entry in DEVS:MountList like this:
  47.  
  48.      CD0:    Handler = L:cdrom-handler
  49.         Stacksize = 10000
  50.         Priority = 5
  51.         GlobVec  = -1
  52.         Mount = 1
  53.         Startup = "scsi.device 1 ROCKRIDGE LOWERCASE" /* see below */
  54.      #
  55.  
  56.      You can choose any name you like for "CD0".
  57.  
  58.      Install the handler in DOS using the CLI command "Mount CD0:".
  59.      If there is a problem during mounting, AmiCDROM will put up a
  60.      requester with an error message.
  61.      If you use AmiCDROM regularily, you might consider to put
  62.      "Mount CD0:" in the user startup-sequence.
  63.   
  64.   2b If you use Workbench 2.1 or higher:
  65.      
  66.      Edit the file CD0. It contains a Mountlist as described in step 2a
  67.      (with the exception that "CD0:" and "#" are missing).
  68.      If you don't like the name "CD0", rename this file and the file
  69.      CD0.info. Use the Workbench to move the icon CD0 into the drawer
  70.      sys:Storage/DOSDrivers. Now enter the command "Mount CD0:" to
  71.      install the handler.
  72.      If you use AmiCDROM regularily, you might consider to put
  73.      the icon in the drawer WBStartup or Devs:DOSDrivers; all files in these
  74.      drawers will be mounted at startup. If the icon is in the WBStartup
  75.      drawer, the Workbench will not wait until "CD0:" is mounted; if the
  76.      icon is in Devs:DOSDrivers, the Workbench will wait. The first
  77.      method is recommendable if you want your system to come up as fast
  78.      as possible. The second method has to be used if you want to refer
  79.      to "CD0:" in your s:user-startup sequence.
  80.      
  81.   IMPORTANT:
  82.      Make sure, that all assigned volume names (such as "L:") are known
  83.      at the time of mounting. Otherwise, the handler will not be
  84.      mounted, and no error message will be issued.
  85.      
  86.      If you have put CD0 into DEVS:DosDrivers and the handler does not
  87.      auto-mount, then you probably have a wrong filename in the 'Handler'
  88.      or 'Startup' field.
  89.  
  90. The 'Startup' field
  91.  
  92.   The 'Startup' field in the MountList is a string with the following
  93.   template:
  94.   
  95.     D=DEVICE,U=UNIT/N,F=FAST/S,L=LOWERCASE/S,
  96.     R=ROCKRIDGE/S,T=TRACKDISK/S,MI=MACTOISO/S,CS=CONVERTSPACES/S,
  97.     SV=SHOWVERSION/S,HF=HFSFIRST/S,SB=STDBUFFERS/K/N,FB=FILEBUFFERS/K/N,
  98.     DE=DATAEXT/K,RE=RESOURCEEXT/K,SI=SCANINTERVAL/K/N,PC=PLAYCDDA/K
  99.  
  100.   The first field (DEVICE) contains the name of your SCSI device.
  101.   
  102.   The second field (UNIT) contains the target ID (aka "SCSI-ID")
  103.   of your CDROM drive. If your CDROM drive supports multiple logical units,
  104.   such as the Pioneer DRM-604X six disk changer drive, then the 10s digit
  105.   of the number in this field should be the LUN of the desired disk.
  106.  
  107.   The following options may be used:
  108.   
  109.   L            Map ISO-9660 names to lower case
  110.   LOWERCASE
  111.        
  112.   R            Use Rock Ridge file names, if possible.
  113.   ROCKRIDGE
  114.        
  115.   T            Use trackdisk-device calls instead of SCSI-direct calls.
  116.   TRACKDISK    (Some SCSI boards do not support Commodore's HD_SCSICMD
  117.            command. If you set the 'T' option, only the normal
  118.            CMD_READ is used, which will be translated by the SCSI driver
  119.            into the corresponding SCSI commands.)
  120.  
  121.   F            Use fast memory for SCSI buffers. Please note, that some 
  122.   FAST         SCSI devices can only read from or write to chip memory.
  123.            (The A3000 scsi.device is able to use fast memory.)
  124.  
  125.   MI           Convert Mac characters into ISO-Latin-1 (Amiga) characters.
  126.   MACTOISO     (The conversion applies only to the filenames, not to
  127.                the contents of the files.) Additionally, the character
  128.            ':' will be converted into a '.', and '/' will be
  129.            converted into '-'; this is necessary because AmigaDOS cannot
  130.            handle filenames containing those characters.
  131.  
  132.   CS           Convert spaces in MacHFS filenames into underscores ('_').
  133.   CONVERTSPACES
  134.   
  135.   SV           Show version numbers.
  136.   SHOWVERSION
  137.   
  138.   HF           If a new disk is mounted, AmiCDROM normally tests first
  139.   HFSFIRST     if the new disk is a ISO-9660 disk. If the option "HF"
  140.                is given, then the disk is first examined for a HFS
  141.            partition.
  142.            This option is useful if you have a "multi-platform"
  143.            disk with both a ISO-9660 and a HFS partition. Without
  144.            the option you get the ISO partition; with the option
  145.            you get the HFS partition.
  146.  
  147.   SB           Number of 2048 byte buffers for general access to the
  148.   STDBUFFERS   CDROM drive. Default = 5 buffers
  149.  
  150.   FB           Number of 2048 byte buffers for file access with the
  151.   FILEBUFFERS  AmigaDOS Read() call. Default = 5 buffers
  152.  
  153.   DE           Extension for the data fork of a file on MacHFS disks.
  154.   DATAEXT
  155.  
  156.   RE           Extension for the resource fork of a file on MacHFS disks.
  157.   RESOURCEEXT  (If neither DE nor RE are given, DE is set to the empty
  158.                string and RE is set to ".rsrc".)
  159.  
  160.   SI           Time between two successive diskchange checks.
  161.   SCANINTERVAL Default = 3 seconds.
  162.                If the value of this option is 0, then no diskchange
  163.            checks will be performed; in this case, you have to use
  164.            the DISKCHANGE command in order to inform AmiCDROM that
  165.            a disk has been changed.
  166.  
  167.   PC           Name of the command to be executed if the user double-
  168.   PLAYCDDA     clicks at the "CD-DA" icon. If you want to execute
  169.                a command with parameters, you have to create
  170.            a script file containing the command plus parameters.
  171.            The name of the script file has to be passed as an
  172.            argument to the PC option. Don't forget to set the
  173.            "S" protection bit of the script file.
  174.  
  175.   I recommend to specify at least LOWERCASE and ROCKRIDGE, for better
  176.   readability.
  177.  
  178.   Example:
  179.   
  180.          Startup = "foo.device 3 ROCKRIDGE SB=10 FB=10 DE=.1 RE=.2"
  181.  
  182.     Use the device "foo.device" and unit number 3. Use Rock Ridge
  183.     if possible and use 10 buffers for standard SCSI access (SB=10) and
  184.     for file access (FB=10). In HFS filenames, mark the data fork with
  185.     the extension ".1" (DE=.1) and the resource fork with the
  186.     extension ".2" (RE=.2).
  187.  
  188.   Older Mount commands (e.g. those distributed with Workbench 2.0)
  189.   cannot handle space characters and "=" signs within startup
  190.   parameters. In AmiCDROM, the following workaround has been made
  191.   available: every '-' sign will be replaced internally by a space
  192.   character. This means that
  193.   
  194.          Startup = "foo.device-3-ROCKRIDGE-SB-10-FB-10-DE-.1-RE-.2"
  195.  
  196.   is equivalent to the example above.
  197.  
  198.   If you really need a '-' character in the startup field (e.g. if
  199.   the name of your device is "my-scsi.device"), then you have
  200.   to write '--' instead of '-', e.g.
  201.   
  202.          Startup = "my--scsi.device-3"
  203.  
  204. USING AMICDROM
  205.  
  206.   You may use "CD0:" as if were an ordinary volume, i.e. you may
  207.   execute commands such as:
  208.   
  209.          dir cd0:
  210.      cd cd0:
  211.      type cd0:readme.txt
  212.   
  213.  
  214. CDROM FILENAMES (ISO-9660 and RockRidge)
  215.  
  216.   A standard CDROM disk ("volume") contains a ISO-9660 directory tree.
  217.   ISO file names have the following format:
  218.  
  219.                 FILENAME.EXTENSION;VERSION
  220.  
  221.   e.g.  README.TXT;1
  222.  
  223.   The filenames may contain upper-case letters, digits and underscores.
  224.  
  225.   AmiCDROM normally ignores the version number of a file. If you
  226.   specify the option "SV", however, the version numbers will be
  227.   displayed. If you have to supply a file name, you may or may not
  228.   specify a version number. E.g. in order to type the contents of the file
  229.   README.TXT;1 you might use one of the following commands:
  230.   
  231.                 type readme.txt
  232.         type "readme.txt;1"
  233.  
  234.   (don't forget the quotation marks!)
  235.   If a directory contains more than one file with the same name (and
  236.   different version numbers), then you have to supply the version number
  237.   in order to be able to choose the version you want.
  238.  
  239.   Filenames may be mapped to lower-case by specifying the startup option "L".
  240.   Lower-case names are generally easier to read than upper-case names.
  241.  
  242.   ISO filenames have a limited length and format. To overcome this
  243.   restriction, the Rock Ridge Group has devised the Rock Ridge Interchange
  244.   Protocol which allows arbitrary filenames. Rock Ridge filenames
  245.   are stored in so-called "system use areas" within the ISO-9660
  246.   filesystem.
  247.   
  248.   By specifying the startup option "R", AmiCDROM recognizes Rock Ridge
  249.   filenames on a Rock Ridge CDROM disk.
  250.  
  251. DISKCHANGE RECOGNITION
  252.  
  253.   In order to recognize a "disk changed" condition, the CDROM drive is
  254.   periodically (each 3 seconds) queried by the filesystem handler.
  255.   
  256.   On some Amigas this may cause the "Hard Disk" LED to flash every
  257.   3 seconds. Obviously, the "Hard Disk" LED isn't actually connected to
  258.   a hard disk drive; it is simply an indicator for SCSI bus activity.
  259.  
  260.   The time between two successive diskchange checks can be modified
  261.   with the SCANINTERVAL option. If this option is set to 0, no diskchange
  262.   checks will be performed. This might especially be useful for BBS
  263.   systems, where disks aren't changed very often.
  264.  
  265.   You may force a diskchange check with the AmigaDOS DISKCHANGE
  266.   command, e.g. "DISKCHANGE CD0:".
  267.  
  268. FILE ATTRIBUTES
  269.  
  270.   In the current version of AmiCDROM, only the "creation date"
  271.   attribute of a CDROM file is supported (e.g. if you say "list cd0:").
  272.   
  273.   Protection bits will be supported in a later version of AmiCDROM.
  274.  
  275. MACINTOSH HFS FORMAT
  276.  
  277.   Each MacHFS file consists of two parts: a "data fork" and a "resource
  278.   fork". Each fork may be regarded as an individual file. Both the
  279.   data fork and the resource fork may be empty.
  280.  
  281.   AmiCDROM treats each fork as an individual file. While other CDROM
  282.   filesystems may require you to switch between the modes "show only
  283.   data forks" and "show only resource forks", AmiCDROM displays both
  284.   data and resource forks in one directory. If either of the two forks
  285.   is empty, it will not be displayed.
  286.  
  287.   By default, the resource fork is marked with the extension ".rsrc".
  288.   You may change the extensions with the options DATAEXT and RESOURCEEXT.
  289.  
  290.   MacHFS file names tend to contain lots of space characters. If you
  291.   don't like this, you may use the switch CONVERTSPACES to convert
  292.   all space characters into underscores.
  293.   
  294.   The Macintosh uses a slightly different character set than the
  295.   Amiga. The upper 128 characters in the Amiga character set
  296.   correspond to the ISO-Latin-1 standard. The upper 128 characters in
  297.   the Macintosh character set, however, are specific to the Mac.
  298.   If you want to convert Mac characters in filenames into ISO-Latin-1
  299.   characters, you should use the MACTOISO option.
  300.  
  301. AUDIO DISKS (CD-DA)
  302.  
  303.   If a disk that contains one or more audio tracks is inserted into the
  304.   drive, AmiCDROM will display an icon with the name "CD-DA". If you
  305.   double-click on this icon, the CDROM drive will start to play the
  306.   first track on the disk. If you double-click on this icon again, the
  307.   CDROM drive stops playing.
  308.  
  309.   If you want to use a more sophisticated way to handle audio disks,
  310.   you may provide the name of a CD-DA player program as an argument
  311.   to the PLAYCDDA option. Recommendable programs are "JukeBox" by
  312.   F-J. Reichert, which uses a CD-player like user-interface, and
  313.   "PlayCDDA" by the author of AmiCDROM. PlayCDDA is suitable only
  314.   for Toshiba 3401 CDROM drives; these drives can send CD-DA data
  315.   over the SCSI bus. PlayCDDA reproduces the sound which is recorded
  316.   on the disk on the Amiga's audio.device.
  317.  
  318.   You can use this feature only if the TRACKDISK option is not
  319.   enabled, and if your CDROM drive supports audio commands.
  320.  
  321. BUGS AND NOT SUPPORTED FEATURES
  322.  
  323.   Bugs: If you find any bugs, please send an e-mail message to:
  324.        ln_fmu@pki-nbg.philips.de
  325.  
  326.   Not supported features:
  327.   
  328.     - Interleaved mode (ISO)
  329.     - Multi-disk volumes (ISO)
  330.     - Multi-volume disks (ISO)
  331.     - Deep directory relocation (Rock Ridge)
  332.  
  333.     These features aren't unsupported because of laziness of the
  334.     author. He hasn't simply been able to find a CDROM disk which
  335.     uses any of the above features. If you know of such a disk,
  336.     please send e-mail to the above address.
  337.  
  338. THE 'CDCONTROL' PROGRAM
  339.   
  340.   The 'cdcontrol' lets the user change parameters of the CDROM handler
  341.   while the handler is running. These changes are only temporary, and
  342.   persist only as long as the handler is running.
  343.   
  344.   'cdcontrol' is invoked as
  345.   
  346.        cdcontrol device: command
  347.   
  348.   where 'command' may be one of the following commands:
  349.   
  350.     lowercase on        Convert ISO filenames to lowercase
  351.     
  352.     lowercase off       Don't convert ISO filenames
  353.  
  354.     mactoiso on         Convert Mac to Amiga characters
  355.     
  356.     mactoiso off        Don't convert Mac filenames
  357.     
  358.     convertspaces on    Convert HFS spaces into underscores
  359.     
  360.     convertspaces off   Don't convert spaces in HFS filenames
  361.     
  362.     hfsfirst on         Look for a HFS partition first
  363.     
  364.     hfsfirst off        Look for an ISO partition first
  365.     
  366.     dataext <name>      Set extension for HFS data forks
  367.     
  368.     resourceext <name>  Set extension for HFS resource forks
  369.  
  370.   Example:
  371.   
  372.     cdcontrol CD0: dataext ".data"
  373.  
  374.   All command names may be abbreviated to the one- or two-letter
  375.   abbreviations shown in the section "The 'Startup' field".
  376.  
  377.  
  378. THE 'CDROM' PROGRAM
  379.  
  380.   The 'cdrom' program is mainly for developers of AmiCDROM.
  381.   However, there are some features which might be useful to
  382.   everyone.
  383.   
  384.   In order to use 'cdrom' you have to set the following
  385.   environment variables:
  386.   
  387.      CDROM_DEVICE     Name of your SCSI device, e.g. "scsi.device"
  388.      
  389.      CDROM_UNIT       SCSI-ID of your CDROM drive, e.g. "2"
  390.  
  391.      CDROM_TRACKDISK  Has to be set to any value if you want to use
  392.                       trackdisk commands only.
  393.  
  394.      CDROM_FASTMEM    Has to be set to any value if you want to use
  395.                       fast memory instead of chip memory for buffers.
  396.  
  397.   Here are some useful commands:
  398.   
  399.      cdrom a          Show information on the CDROM drive.
  400.   
  401.      cdrom d[rl] dir  Show directory 'dir'.
  402.                    Option r: also show subdirectories.
  403.               Option l: show additional information.
  404.  
  405.      cdrom e[rl] dir  Show directory 'dir' using Rock Ridge names.
  406.                    Option r: also show subdirectories.
  407.               Option l: show additional information.
  408.  
  409.      cdrom i          Show the format (ISO, RR or HFS) of the current disk.
  410.      
  411.      cdrom s num      Read the contents of sector 'num'.
  412.  
  413.      cdrom v          Show the primary volume descriptor of the CDROM disk.
  414.      
  415.      cdrom z          Test if the CDROM drive is ready.
  416.      
  417. THANKS
  418.  
  419.   I would like to send many thanks for their help and encouragement to:
  420.   
  421.     Thomas Baetzler
  422.     Stefan Becker
  423.     Johanna Berewinkel
  424.     Dirk-Michael Brosig
  425.     Richard L. Dyson
  426.     Phillip Eastham
  427.     Jos Fries
  428.     Oliver Graf
  429.     Christoph Guelicher
  430.     Carsten Hammer
  431.     Rainer Hess
  432.     Martin Jahner
  433.     Stephan Kohler
  434.     Roy S. Laufer
  435.     W. R. Leach
  436.     Bo Najdrovsky
  437.     Dylan McNamee
  438.     Thomas J. Moore
  439.     Henning Schmiedehausen
  440.     Bill Seymour
  441.     Mark Tomlinson
  442.     Roy Trevino
  443.     Jim Zepeda
  444.  
  445.   Especially I would like to thank
  446.   
  447.     Olaf Barthel
  448.   
  449.   for his many valuable hints on how to improve AmiCDROM.
  450.  
  451. CONTACTING THE AUTHOR
  452.  
  453.   Please send bug reports and suggestions to:
  454.  
  455.   Email:   ln_fmu@pki-nbg.philips.de
  456.  
  457.   Mail:    Frank Munkert
  458.            Zum Froschbruecklein 5
  459.            90411 Nuernberg
  460.            Germany
  461.  
  462.   If you want to report an error, please describe your system
  463.   configuration (Amiga model, SCSI device name, CDROM drive model)
  464.   and include your MountList entry for the "CD0:" device.
  465.  
  466. ----------------------------------------------------------------------
  467.  
  468. TODO:
  469. =====
  470.  
  471. * Support for multisession disks (such as PhotoCDs).
  472. * AmigaDOS protection bits should reflect the protection status as
  473.   stored on the disk (especially for RR disks).
  474. * Support for symbolic links on RockRidge disks.
  475.  
  476. HISTORY:
  477. ========
  478.  
  479. Changes in V1.7:
  480.  
  481. * Some packets are now handled even if no disk is inserted (e.g. the
  482.   ACTION_INHIBIT packet). Otherwise WB would bring up the requester "No Disk
  483.   in drive CD0:" when the system is booted without a CD in the drive.
  484. * Improved "cdrom d" and "cdrom e" commands.
  485. * Removed call to GetDefDiskObject(). This call sometimes caused a crash,
  486.   because GetDefDiskObject sends/receives DOS packets. A DOS handler isn't
  487.   allowed to do this.
  488. * Added custom CD-DA icon.
  489. * Support for logical block sizes of 512, 1024 and 2048 bytes.
  490. * Fixed bug in HFS module.
  491. * Option MACTOISO now also converts ':' and '/' characters.
  492. * Options MACTOISO and CONVERTSPACES now also apply to volume names.
  493.  
  494. Changes in V1.6:
  495.  
  496. * CD-DA support; new option: PLAYCDDA.
  497. * New option: SCANINTERVAL (user-programmable diskchange check interval).
  498. * Better support for ACTION_INHIBIT packet.
  499. * Allows ISO filenames with ';' characters.
  500. * Can now be compiled with DICE 2.07.56R.
  501.  
  502. Changes in V1.5:
  503.  
  504. * Make Toshiba-3401 drives switch between XA and normal mode, depending
  505.   on the inserted disk. (Useful for PhotoCDs.)
  506. * New option: SHOWVERSION.
  507. * New option: HFSFIRST.
  508. * Fixed a bug which caused an enforcer hit with the "cdrom" program.
  509. * "cdcontrol" control program.
  510.  
  511. Changes in V1.4:
  512.  
  513. * Added Mac HFS support.
  514. * The path table of ISO disks is no longer examined. This results in a
  515.   little speed increase. Furthermore, the FishMarket V2.0 disk by AsimWare
  516.   (which has a corrupted path table) can now be read with AmiCDROM.
  517. * Bug fix: if a there is a disk change immediatedly before mounting AmiCDROM,
  518.   the new disk will now be recognized.
  519. * SAS/C support for debug process (dbproc.a).
  520.  
  521. Changes in V1.3:
  522.  
  523. * Improved caching algorithm.
  524. * New buffering options 'STDBUFFERS' and 'FILEBUFFERS'.
  525. * Fixed bug with locks containing wrong fl_Volume entry. Now the AmigaDOS
  526.   shell should show the correct volume prompt.
  527. * New format for the Mountlist 'Startup' field.
  528. * Compiled with small memory model.
  529. * Uses utility.library in order to reduce the size of the executable.
  530. * Recognizes if a non-ISO disk is in the CDROM drive and creates a
  531.   'no DOS disk' volume node. This solves some problems with Audio-CDs.
  532. * The volume node now contains the volume creation date.
  533. * Can now be compiled with SAS/C and DICE in addition to Aztec C.
  534.  
  535. Changes in V1.2:
  536.  
  537. * Support for new packets: ACTION_SAME_LOCK, ACTION_IS_FILESYSTEM,
  538.   ACTION_CURRENT_VOLUME.
  539. * Send 'disk inserted' or 'disk removed' event, so that the Workbench
  540.   detects disk changes faster.
  541. * Added fast memory option 'F'.
  542. * Writing ACTIONs now return a 'write protected' error status.
  543. * Unload handler after ACTION_DIE.
  544. * Immediately terminate program if called from CLI.
  545. * Set volume label to "Unnamed" for disks without name.
  546. * Added support for LUNs other than 0.
  547. * Included an icon for the Mountlist.
  548. * DOS list changes now bracketed by Forbid() and Permit().
  549. * Corrected another ACTION_SEEK bug.
  550. * Handler cannot be killed if locks or filehandles are in use.
  551.  
  552. Changes in V1.1:
  553.  
  554. * Bug in ACTION_SEEK handling fixed.
  555. * Bug with top-level ACTION_EXAMINE_OBJECT for Rock Ridge disks fixed.
  556. * Added code to detect whether a lock stems from the current volume
  557.   or from another volume which has been removed from the drive.
  558.   (In this case the error 'object not found'á(205) is reported.)
  559. * Added support for trackdisk calls. (Startup option 'T')
  560.