/* BTNtape include file, version 2.0 */

/* Operations supported by TapeIO */
#define TSENSE  0    /* request sense */
#define TREADY  1    /* test unit ready */
#define TREAD   2    /* read blocks */
#define TWRITE  3    /* write blocks */
#define TREWIND 4    /* rewind tape */
#define WFMARK  5    /* write file mark */
#define TSKIP   6    /* skip over files */
#define INQUIRY 7    /* read device info */
#define MDSET   8    /* mode-set */
#define MDSNS   9    /* mode-sense */
#define USRMODE 10   /* user mode-set */
#define RDCAP   11   /* read capacity */
#define RAWCMD  12   /* send user scsi command to tape */
#define TFINISH 13   /* wait for last operation to finish */

/* these control how fast TapeIO returns to the caller */
#define CTLWAIT 0    /* return when operation is done */
#define CTLIMM  1    /* return immediately */

/* Supported device types (from INQUIRY) */
#define SEQ    (inq[0]==0x01) /* sequential */
#define DAC    (inq[0]==0x10) /* direct-access */
#define BADLUN (inq[0]==0x7f) /* oops */

/* inline message print functions */
#define MPR0(XYZ)           sprintf(dbb,XYZ);           MonPrint()
#define MPR1(XYZ,V1)        sprintf(dbb,XYZ,V1);        MonPrint()
#define MPR2(XYZ,V1,V2)     sprintf(dbb,XYZ,V1,V2);     MonPrint()
#define MPR3(XYZ,V1,V2,V3)  sprintf(dbb,XYZ,V1,V2,V3);  MonPrint()

/* function prototypes */
void _main(void);
long   TapeIO(int,int,int);
int    DoSense(long);
long   wrteot(int,int,long);
void   freestuff(void);
int    getstart(long *);
void   MonPrint(void);
void   toUPPER(char *);
long   NewTape(void);
void   returnpkt(struct DosPacket *, ULONG, ULONG);
struct DosPacket *taskwait(void);
