Files
seta75D 2e8a93c394 Init
2021-10-11 18:20:23 -03:00

69 lines
2.4 KiB
C

/* @(#)ardef.h 1.1 92/07/30 SMI */
/*
* Copyright (c) 1984 by Sun Microsystems, Inc.
*/
/*
* Standalone Driver for Archive Intelligent Streaming Tape
* ardef.h
*/
/*
* Interesting tape commands
*/
#define AR_CLOSE 0 /* Close tape: WTM-if-writing, rewind */
#define AR_REWIND 1 /* Rewind (overlapped) */
#define AR_STATUS 2 /* Drive Status */
#define AR_READ 3 /* Read to MB memory */
#define AR_WRITE 4 /* Write to MB memory */
#define AR_WEOF 5 /* Write file mark (EOF) */
#define AR_ERASE 6 /* Erase entire tape */
#define AR_SELECT 7 /* Select drive of interest */
#define AR_DESELECT 8 /* Select no interesting drive */
#define AR_TENSE 9 /* Retension tape */
#define AR_SKIPFILE 10 /* Skip one file forward */
#define AR_CMDOK 11 /* See if ok to do cmd */
/*
* States into which the tape drive can get.
*/
enum ARstates {
FINstate = 0x00, IDLEstate, CMDstate, /* Finished, Idle, Command */
WFMinit, /* Write File Mark */
RFMinit, /* Read to File Mark */
REWinit, /* Rewind tape */
TENSEinit, /* Retension tape */
ERASEinit, /* Erase tape */
SELinit, /* Select a drive */
DESELinit, /* Deselect all drives */
RDSTinit, /* Read status */
CLOSEinit, /* Deassert aronline */
READinit, READcmd, READburst, READfin, READidle, /* Read */
WRinit, WRcmd, WRburst, WRfin, WRidle, /* Write */
CMDOKinit, /* OK to issue commands? */
};
/*
* Software state per tape controller.
*/
struct ar_softc {
enum ARstates sc_state; /* Current state of hard/software */
enum ARstates sc_oldstate; /* Previous state of sc_state */
struct arstatus sc_status; /* Status at last "Read status" cmd */
int sc_size; /* Size of buffer to read/write */
char *sc_bufptr; /* Pointer to buffer to read/write */
char sc_initted; /* Is controller initialized yet? */
char sc_opened; /* Is this drive open? */
char sc_lastiow; /* last op was write */
int sc_count; /* # times to repeat high-level op */
u_char sc_drive; /* Drive # to select/deselect */
u_char sc_histate; /* Higher level state than sc_state */
struct ardevice *sc_addr;/* Address of I/O registers */
u_char sc_qidle; /* =0 if buf in progress, =1 if not. */
char sc_eoflag; /* raw eof flag */
u_char sc_cmdok; /* 0 => can only issue read/RFM/write/WFM */
char sc_selecteddev; /* currently selected drive */
/* When adding new fields to ar_softc, also initialize them in arinit(). */
};