home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1993 #2 / Image.iso / os2 / gtak212b.zip / SOURCE.ZIP / OS2-ST01 / st_tape.doc < prev    next >
Text File  |  1992-05-23  |  7KB  |  215 lines

  1. ST01 setup:
  2. -----------
  3.  
  4. See ST01FIX.TXT for necessary hardware fixes. An unpatched ST01 will
  5. not work with the Tandberg series 3600 tape drives. Some ST01 version
  6. do not have the interrupt jumper installed, since DOS does not require
  7. interrupts. This driver *does* require interrupts. It might be wise to
  8. install the termination resistors too, although it might be sufficient
  9. to have a termination on one side (the drive) only, if the cable is
  10. short.
  11.  
  12. Interrupt:    5
  13. ST01 SCSI ID:    6
  14. Tape SCSI ID:    4
  15.  
  16. These values are defined near the top of ST_IO.ASM.
  17.  
  18. Source code layout and possible modifications:
  19. ----------------------------------------------
  20.  
  21. makefile.mk:    For DMake.
  22.  
  23.         SCSI_LVL=0    Tandberg's non-standard Request Sense block
  24.         SCSI_LVL=1    Standard Request Sense block layout.
  25.  
  26. defs.inc:    trace=0 completely disables debugging trace.
  27.         trace=1 generates MDA debugging display, which can be
  28.         controlled by DosDevIOCtl calls.
  29.  
  30. debug.inc/asm:    Device driver debugging helpers for output on
  31.         monochrome(!) card.
  32.  
  33. st_tape.asm:    High level device driver interface
  34.  
  35. st_io.asm:    Low level ST01 input/output
  36.  
  37.     EnableFast    If the driver hangs your system when used, set
  38.             this constant to 0 to relax the critical i/o
  39.             timing. If it works now (probably very slow),
  40.             try to fine-tune the corresponding fast-I/O
  41.             loops/block-transfers (see below).
  42.  
  43.     EnableBlock    If set to 1, maximum-speed block transfers are
  44.             used for data transfer. This proved unusable in
  45.             a 486 system, but might be reliable on 386
  46.             systems. If set to 0, the transfer timing is
  47.             somewhat relaxed, suitable for at least one
  48.             486-33MHz system.
  49.  
  50.             The critical code for EnableFast and EnableBlock
  51.             is located behind the labels "x_fast_in:" and
  52.             "x_fast_out:".
  53.  
  54.     PhysIO        Physical address of the ST01 I/O ports. In a
  55.             ST01 equipped with 8KB ROMs this should be set
  56.             to the ROM base address + 1A00h. While I know
  57.             there are cards equipped with 16KB ROMs, I
  58.             have not seen such a beast yet. You have to
  59.             look for the addresses yourself, but probably
  60.             the I/O addresses are at ROM-base + 3A00h.
  61.  
  62.     IRQnum        The interrupt number to which the ST01 is
  63.             connected.
  64.  
  65.     TargetID    The SCSI ID of the streamer.
  66.  
  67. Implemented char device driver functions:
  68. -----------------------------------------
  69.  
  70.     Read
  71.     Write
  72.     IOCtl
  73.  
  74. Since reads and writes are checked for transfer lengths of a multiple
  75. of 512, it is not possible to access the drive in DOS mode (DOS mode
  76. transfers 1 byte at a time). Likewise it is usually not possible to copy
  77. a file to the device (the last block will most likely fail). Use the
  78. tape utility instead.
  79.  
  80. Read/Write command return codes:
  81. --------------------------------
  82.  
  83. EOF (0 bytes):        - Filemark detected.
  84.  
  85. Change disk:        - Unit attention. Reported on the next command
  86.             following a power-up, reset or media change.
  87.  
  88. Character I/O call    - The operation was interrupted due to signal
  89. interrupted:        (Ctrl-C/Break), process death or the like.
  90.  
  91. Read fault:        - Reached logical EOM.
  92.  
  93. Write fault:        - Reached physical EOM.
  94.             - A write operation was attempted in a position
  95.             between BOT and logical EOM.
  96.  
  97. Not ready:        - Drive reports "not ready", "not loaded",
  98.             "hardware error" or bus parity error.
  99.             - Drive reports reservation conflict.
  100.             - Drive did not respond to abort or reset 
  101.             message request (triggers bus reset).
  102.  
  103. CRC error:        - Bad block (read, verify).
  104.             - Uncorrectable data error (write).
  105.             - Compare operation failed (verify).
  106.  
  107. Sector not found:    - No data on the media.
  108.  
  109. Write proteced:        - Media is write-protected.
  110.  
  111. General failure:    - Driver error. Usually due to bus phase 
  112.             sequencing timeout.
  113.             - The specified CDB or data length differs
  114.             from the length expected by the target.
  115.  
  116. Invalid command:    - Invalid IOCtl code.
  117.             - Invalid SCSI command.
  118.  
  119. Unknown media:        - Command received "check condition" status but
  120.             the "request sense" command failed or returned
  121.             an unknown error code.
  122.  
  123. Invalid parameter:    - R/W data length not a multiple of 512 (DOS mode).
  124.             IOCtl pointer validation check failed.
  125.  
  126.  
  127. IOCtl commands:
  128. ---------------
  129.  
  130. Category 11, function 01h:    Flush input buffer.
  131.  
  132.     Ignored.
  133.  
  134. Category 11, function 02h:    Flush output buffer.
  135.  
  136.     Ignored.
  137.  
  138. Category 11, function 41h:    Session switch notification.
  139.  
  140.     Ignored.
  141.  
  142. Category 11, function 60h:    Query monitor support.
  143.  
  144.     Returns "monitor calls not supported".
  145.  
  146. Category 80h, function 0:    SCSI command, slow data transfer.
  147. Category 80h, function 1:    SCSI command, fast data transfer.
  148.  
  149.     Parameter block is SCSI CDB (command descriptor block)
  150.     (read-only). Data block is SCSI data transfer block
  151.     (read-write). Since the length specifications of the 
  152.     parameter and data areas are required, you have to use 
  153.     DevIOCtl2. If there is no data transfer, the data pointer
  154.     must be 0.
  155.  
  156.     If the command fails, the status byte is returned as 
  157.     "user defined error code" (0FF02h for "check status"). 
  158.     There is no implied REQUEST SENSE command.
  159. -->    BUG: The current version never return 0FF02. Always
  160.     issue REQEST SENSE after an IOCtl CDB command.
  161.  
  162.     The "fast data transfer" function is only to be used for
  163.     SCSI commands with high speed block transfer. Commands
  164.     with delays between successive bytes might give    unexpec-
  165.     ted results or might even crash the system. The fast data 
  166.     transfer mode waits for new data every 512 bytes. It 
  167.     should not be used for operations other than standard
  168.     read or write - even the "inquiry" command is a slow
  169.     command on Tandberg 3600. Additionally it requires the
  170.     tape block size to be a multiple of 512.
  171.  
  172. Category 80h, function 2:    Bus reset.
  173.  
  174.     Resets the SCSI bus and all connected devices.
  175.     Parameter and data block is neither checked nor used.
  176.  
  177. Category 80h, function 3:    Device reset.
  178.  
  179.     Resets the target device only.
  180.     Parameter and data block is neither checked nor used.
  181.  
  182. Category 80h, function 4:    Set trace level.
  183.  
  184.     Parameter block is a single byte containing the trace level.
  185.     Trace output is written directly to MPA/MGA screen at
  186.     physical address 0B0000h.
  187.     0    = no trace
  188.     1    = errors only
  189.     2    = individual commands
  190.     3-20    = the higher the level the more detailed the trace
  191.  
  192.     The trace code is currently disabled. To enable the trace 
  193.     code, set TRACE=1 (or whatever non-zero trace level you 
  194.     want as default) in DEFS.INC and reassemble all modules.
  195.  
  196. Special IOCtl command return codes:
  197. -----------------------------------
  198.  
  199. 0xFF00..0xFF13    Standard device driver error code.
  200. 0xFF80..0xFFFF    SCSI status byte.
  201.         0xFF82 = check status (request sense command required)
  202.         0xFF88 = device busy
  203.         0xFF98 = reservation conflict
  204.  
  205. SCSI standard considerations:
  206. -----------------------------
  207.  
  208. The driver is built for the Trandberg TDC 3600 series tape drives.
  209. These drives do NOT conform to SCSI-1: The error codes within the
  210. REQUEST SENSE data are placed at offsets 14+15 instead of 12+13.
  211. However, the mechanically indentical IBM RS/6000 tape drive 7207-001
  212. conforms to SCSI-1 (in this respect). To enable a SCSI-1 conformant
  213. error detection, set SCSI_LVL=1 within MAKEFILE.MK and reassemble
  214. ST_TAPE.ASM.
  215.