/* * Copyright (c) 1993, 1994 Steve Gerakines * * This is freely redistributable software. You may do anything you * wish with it, so long as the above notice stays intact. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * ftreg.h - QIC-40/80 floppy tape driver header * 06/03/94 v0.9 * Changed seek load point to QC_SEEKLP, added reqseg to SegReq structure. * * 10/30/93 v0.3 * More things will end up here. QC_VENDORID and QC_VERSION now used. * * 08/07/93 v0.2 release * Things that should've been here in the first place were moved. * Tape geometry and segment request types were added. * * 06/03/93 v0.1 Alpha release * Initial revision. Many more things should be moved here. */ /* QIC-117 command set. */ #define QC_RESET 1 /* reset */ #define QC_NEXTBIT 2 /* report next bit */ #define QC_PAUSE 3 /* pause */ #define QC_STPAUSE 4 /* step pause */ #define QC_TIMEOUT 5 /* alt timeout */ #define QC_STATUS 6 /* report status */ #define QC_ERRCODE 7 /* report error code */ #define QC_CONFIG 8 /* report config */ #define QC_VERSION 9 /* report version */ #define QC_FORWARD 10 /* logical forward */ #define QC_SEEKSTART 11 /* seek to track start */ #define QC_SEEKEND 12 /* seek to track end */ #define QC_SEEKTRACK 13 /* seek head to track */ #define QC_SEEKLP 14 /* seek load point */ #define QC_FORMAT 15 /* format mode */ #define QC_WRITEREF 16 /* write reference */ #define QC_VERIFY 17 /* verify mode */ #define QC_STOP 18 /* stop tape */ #define QC_STEPUP 21 /* step head up */ #define QC_STEPDOWN 22 /* step head down */ #define QC_SEEKREV 25 /* seek reverse */ #define QC_SEEKFWD 26 /* seek forward */ #define QC_RATE 27 /* select data rate */ #define QC_DIAG1 28 /* diagnostic mode 1 */ #define QC_DIAG2 29 /* diagnostic mode 2 */ #define QC_PRIMARY 30 /* primary mode */ #define QC_VENDORID 32 /* vendor id */ #define QC_TSTATUS 33 /* report tape status */ #define QC_EXTREV 34 /* extended skip reverse */ #define QC_EXTFWD 35 /* extended skip forward */ /* Colorado enable/disable. */ #define QC_COL_ENABLE1 46 /* enable */ #define QC_COL_ENABLE2 2 /* unit+2 */ #define QC_COL_DISABLE 47 /* disable */ /* Mountain enable/disable. */ #define QC_MTN_ENABLE1 23 /* enable 1 */ #define QC_MTN_ENABLE2 20 /* enable 2 */ #define QC_MTN_DISABLE 24 /* disable */ /* Segment I/O request. */ typedef struct segq { unsigned char buff[QCV_SEGSIZE];/* Segment data; first for alignment */ int reqtype; /* Request type */ long reqcrc; /* CRC Errors found */ long reqbad; /* Bad sector map */ long reqblk; /* Block request starts at */ long reqseg; /* Segment request is at */ int reqcan; /* Cancel read-ahead */ struct segq *next; /* Next request */ } SegReq; typedef int ftu_t; typedef int ftsu_t; typedef struct ft_data *ft_p;