/*********************************************************************** * * * File name: hpib.int.h * * Description: "h" file for Pisces HP-IB Interface Driver: hpib.c * * Engineer: Andy Rood; HP PCD (from original by: * * Mike Jones; Hewlett-Packard Personal Computer Division) * * Last revised: 06/30/83 * * * ************************************************************************ * * * @ Copyright Hewlett-Packard Company, 1984. All rights reserved. * * Copying or other reproduction of this program except for archival * * purposes is prohibited without written consent of Hewlett-Packard * * Company. * * * ***********************************************************************/ /* * include the ALL_xxx definitions from a common area */ #include "sys/ioctl.ALL.h" /*********************************************************************** * 9914A register template * ***********************************************************************/ struct reg_9914A { char dummy0, reg1, dummy2, reg3, dummy4, reg5, dummy6, reg7, dummy8, reg9, dummy10, reg11, dummy12, reg13, dummy14, reg15; }; /*********************************************************************** * driver information data structure --- one per open interface * ***********************************************************************/ #define BUF_SIZE 256 /* driver buffer size */ /*********************************************************************** * Miscellaneous Definitions * ***********************************************************************/ #define DVR_ID 'h' /* HP-IB Interface Driver ID */ #define DVR_TYPE 0 /* type code for an interface driver */ #define DVR_VERSION 1200 /* driver version number */ #define MAX_PORT 32 /* maximum port number */ #define SONY_PORT 1 /* port number of internal SONY disc */ #define HPIB_PORT 3 /* port number of internal HP-IB */ #define DEFAULT_ADDR 0x15 /* default HP-IB address */ #define LINE_FEED 0x0A /* ASCII line feed */ #define INT_MODE 0 /* interrupt transfer mode */ #define FLG_MODE 1 /* flag driven transfer mode */ #define INVAL_SEC 0 /* reject secondary address */ #define VALID_SEC 1 /* accept secondary address */ #define CLOSED 0 /* port is closed when open_flag = CLOSED */ #define OPEN 1 /* port is open when open_flag = OPEN */ #define PAR_MASK 0x7F /* parity bit mask */ /* * #define port(mdev) ((short) (((mdev) & 0x00FF0000) >> 16)) */ #define cic (hpib_ctl & CIC_BIT) /* #define sys_ctl (*((char *) (port_to_base(SONY_PORT)+1)) & SC_BIT) */ #define sys_ctl 1 /* for test purposes only */ #define MTA 0x5e /* my talk address */ #define MLA 0x3e /* my listen address */ /*********************************************************************** * 9914A read register pointer definitions * ***********************************************************************/ #define int_stat0 ptr_9914A->reg1 #define int_stat1 ptr_9914A->reg3 #define addr_stat ptr_9914A->reg5 #define bus_stat ptr_9914A->reg7 #define cmd_pass ptr_9914A->reg13 #define data_in ptr_9914A->reg15 /*********************************************************************** * 9914A write register pointer definitions * ***********************************************************************/ #define int_mask0 ptr_9914A->reg1 #define int_mask1 ptr_9914A->reg3 #define aux_cmd ptr_9914A->reg7 #define addr_ctl ptr_9914A->reg9 #define ser_poll ptr_9914A->reg11 #define par_poll ptr_9914A->reg13 #define data_out ptr_9914A->reg15 /*********************************************************************** * driver information data structure pointer definitions * ***********************************************************************/ #define error_code ptr_info->errorcode #define dvr_event ptr_info->dvrevent #define cmd_mode ptr_info->cmdmode #define data_mode ptr_info->datamode #define out_ctl ptr_info->outctl #define in_ctl ptr_info->inctl #define term_char ptr_info->termchar #define hpib_ctl ptr_info->hpibctl #define hpib_addr ptr_info->hpibaddr #define par_resp ptr_info->parresp #define ser_resp ptr_info->serresp #define upr_mask ptr_info->uprmask #define lwr_mask ptr_info->lwrmask #define upr_stat ptr_info->uprstat #define lwr_stat ptr_info->lwrstat #define time_out3 ptr_info->timeout3 #define time_out2 ptr_info->timeout2 #define time_out1 ptr_info->timeout1 #define time_out0 ptr_info->timeout0 #define open_flag ptr_info->openflag #define dvr_int0 ptr_info->dvrint0 #define dvr_int1 ptr_info->dvrint1 #define buf ptr_info->buffer #define hpib_op ptr_info->hpibop #define timer_id ptr_info->timerid /*********************************************************************** * logical register masks for masking off undefined bits * ***********************************************************************/ #define DVR_EVENT_MASK 0x07 #define CMD_MODE_MASK 0x01 #define DATA_MODE_MASK 0x01 #define OUT_CTL_MASK 0x01 #define IN_CTL_MASK 0x03 #define HPIB_CTL_MASK 0x01 #define HPIB_ADDR_MASK 0x1F /*********************************************************************** * driver error codes * ***********************************************************************/ #define ERROR2 -2 /* non interface specific error */ #define ERROR1 -1 /* interface specific error */ #define NO_ERROR 0 /* no error; good return */ #define INVALID_OP 1 /* invalid operation attempted */ #define INVALID_PARAM 2 /* invalid parameter */ #define NO_TIMER 15 /* no timer available */ #define NOT_SYS_CTL 16 /* not system controller */ #define SYS_CTL 17 /* system controller */ #define NOT_CIC 18 /* not controller-in-charge */ #define CANNOT_CTL 19 /* cannot assert ATN synchronously */ #define NOT_LISTENER 20 /* not addressed to listen */ #define NOT_TALKER 21 /* not addressed to talk */ #define LISTENER 22 /* addressed to listen */ #define TIMEOUT 23 /* time out */ #define SELFTEST 100 /* selftest failure */ /*********************************************************************** * 9914A auxiliary commands * ***********************************************************************/ #define SWRST_SELECT 0x80 /* select soft reset */ #define SWRST_CLEAR 0x00 /* clear soft reset */ #define DACR_PULSE 0x01 /* clear ACDS holdoff */ #define RHFD_PULSE 0x02 /* release RFD holdoff */ #define HDFA_SELECT 0x83 /* select holdoff on all data */ #define HDFA_CLEAR 0x03 /* clear holdoff on all data */ #define HDFE_SELECT 0x84 /* select holdoff on END */ #define HDFE_CLEAR 0x04 /* clear holdoff on END */ #define NBAF_PULSE 0x05 /* set new byte available false */ #define RTL_SELECT 0x87 /* select return to local */ #define RTL_CLEAR 0x07 /* clear return to local */ #define FEOI_PULSE 0x08 /* force end or identify (EOI) */ #define LON_SELECT 0x89 /* select listen only mode */ #define LON_CLEAR 0x09 /* clear listen only mode */ #define TON_SELECT 0x8A /* select talk only mode */ #define TON_CLEAR 0x0A /* clear talk only mode */ #define GTS_PULSE 0x0B /* go to standby...release ATN */ #define TCA_PULSE 0x0C /* take control asynchronously */ #define TCS_PULSE 0x0D /* take control synchronously */ #define RPP_SELECT 0x8E /* select request parallel poll */ #define RPP_CLEAR 0x0E /* release parallel poll */ #define SIC_SELECT 0x8F /* select send IFC */ #define SIC_CLEAR 0x0F /* clear IFC */ #define SRE_SELECT 0x90 /* select send REN */ #define SRE_CLEAR 0x10 /* clear REN */ #define RQC_PULSE 0x11 /* request control */ #define RLC_PULSE 0x12 /* release control */ #define DAI_SELECT 0x93 /* select disable all interrupts */ #define DAI_CLEAR 0x13 /* clear disable all interrupts */ #define PTS_PULSE 0x14 /* pass through next secondary */ #define STDL_SELECT 0x95 /* select short T1 delay */ #define STDL_CLEAR 0x15 /* clear short T1 delay */ #define SHDW_SELECT 0x96 /* select shadow handshake mode */ #define SHDW_CLEAR 0x16 /* clear shadow handshake mode */ #define VSTDL_SELECT 0x97 /* select very short T1 delay */ #define VSTDL_CLEAR 0x17 /* clear very short T1 delay */ #define SRM2_SELECT 0x98 /* select request service mode 2 */ #define SRM2_CLEAR 0x18 /* clear request service mode 2 */ /*********************************************************************** * 9914A register bit mask definitions * ***********************************************************************/ #define INT0_BIT 0x80 #define INT1_BIT 0x40 #define BI_BIT 0x20 #define BO_BIT 0x10 #define END_BIT 0x08 #define SPAS_BIT 0x04 #define RLC_BIT 0x02 #define MAC_BIT 0x01 #define GET_BIT 0x80 #define ERR_BIT 0x40 #define UCG_BIT 0x20 #define APT_BIT 0x10 #define DCAS_BIT 0x08 #define MA_BIT 0x04 #define SRQ_BIT 0x02 #define IFC_BIT 0x01 #define REM_BIT 0x80 #define LLO_BIT 0x40 #define ATN_BIT 0x20 #define LPAS_BIT 0x10 #define TPAS_BIT 0x08 #define LADS_BIT 0x04 #define TADS_BIT 0x02 #define ULPA_BIT 0x01 #define ATNX_BIT 0x80 #define DAV_BIT 0x40 #define NDAC_BIT 0x20 #define NRFD_BIT 0x10 #define EOI_BIT 0x08 #define SRQX_BIT 0x04 #define IFCX_BIT 0x02 #define REN_BIT 0x01 #define RQS_BIT 0xBF /*********************************************************************** * logical register bit mask definitions * ***********************************************************************/ #define TOUT_BIT 0x04 #define TERM_BIT 0x02 #define INT_BIT 0x01 #define CTM_BIT 0x01 #define DTM_BIT 0x01 #define EOIOUT_BIT 0x01 #define TRMCHR_BIT 0x02 #define EOIIN_BIT 0x01 #define SC_BIT 0x80 #define CIC_BIT 0x40 #define CA_BIT 0x80 #define PPCCHG_BIT 0x40 #define MTA_BIT 0x20 #define MLA_BIT 0x10 #define ADRCHG_BIT 0x01 #define UUC_BIT 0x20 #define SCG_BIT 0x10 #define DEVCLR_BIT 0x08 #define UAC_BIT 0x04 /* * added by alr 1-23-84 */ #define SET_TIMEOUT ( ('a' << 8) | 7 ) #define READ_TIMEOUT ( ('a' << 8) | 8 ) #define SET_DELAY ( ('a' << 8) | 9 ) #define HPIB_PPOLL ( ('h' << 8) | 0 ) #define HPIB_INBOUND ( ('h' << 8) | 1 ) #define HPIB_OUTBOUND ( ('h' << 8) | 2 ) #define HPIB_UNLISTEN ( ('h' << 8) | 3 ) #define HPIB_UNTALK ( ('h' << 8) | 4 ) #define HPIB_RESUME ( ('h' << 8) | 5 ) #define HPIB_SEND ( ('h' << 8) | 6 ) #define HPIB_CLEAR ( ('h' << 8) | 7 ) #define HPIB_ABORT ( ('h' << 8) | 8 ) #define HPIB_LISTEN ( ('h' << 8) | 9 ) #define HPIB_TALK ( ('h' << 8) | 10 ) #define HPIB_RELEASE ( ('h' << 8) | 11 ) #define HPIB_SPOLL ( ('h' << 8) | 12 ) #define HPIB_TRIGGER ( ('h' << 8) | 13 ) #define HPIB_REMOTE ( ('h' << 8) | 14 ) #define HPIB_LOCAL ( ('h' << 8) | 15 ) #define HPIB_LLOCKOUT ( ('h' << 8) | 16 ) #define HPIB_PPC ( ('h' << 8) | 17 ) #define HPIB_PPUD ( ('h' << 8) | 18 ) #define HPIB_PASSCTL ( ('h' << 8) | 19 ) #define HPIB_OPEN ( ('h' << 8) | 20 ) /* op code for open */ #define HPIB_CLOSE ( ('h' << 8) | 21 ) /* op code for close */ #define HPIB_READ ( ('h' << 8) | 22 ) /* op code for read */ #define HPIB_WRITE ( ('h' << 8) | 23 ) /* op code for write */ #define HPIB_MYTALK ( ('h' << 8) | 24 ) #define HPIB_MYLISTEN ( ('h' << 8) | 25 ) #define HPIB_REN ( ('h' << 8) | 26 ) /* enable remote enable line */ #define HPIB_RDIS ( ('h' << 8) | 27 ) /* clear remote enable line */ #define HPIB_IFC ( ('h' << 8) | 28 ) /* send an IFC on the bus */ #define HPIB_ALLHOLD ( ('h' << 8) | 29 ) /*********************************************************************** * addressed HP-IB commands * ***********************************************************************/ #define SDC 0x04 /* selected device clear */ #define GET 0x08 /* group execute trigger */ #define GTL 0x01 /* go to local */ #define PPC 0x05 /* parallel poll configure */ #define TCT 0x09 /* take control */ /*********************************************************************** * universal HP-IB commands * ***********************************************************************/ #define LLO 0x11 /* local lockout */ #define DCL 0x14 /* device clear */ #define PPU 0x15 /* parallel poll unconfigure */ #define SPE 0x18 /* serial poll enable */ #define SPD 0x19 /* serial poll disable */ /*********************************************************************** * listen address group * ***********************************************************************/ #define LAG 0x20 /* listen address group mask */ #define LAD_MASK 0xBF /* listen address mask */ #define UNL 0x3F /* unlisten */ #define mla hpib_addr | LAG /* my listen address */ /*********************************************************************** * talk address group * ***********************************************************************/ #define TAG 0x40 /* talk address group mask */ #define TAD_MASK 0xDF /* talk address mask */ #define UNT 0x5F /* untalk */ #define mta hpib_addr | TAG /* my talk address */ /*********************************************************************** * secondary command group * ***********************************************************************/ #define PPE 0x60 /* parallel poll enable */ #define PPD 0x70 /* parallel poll disable */ #define PPE_MASK 0x8F /* parallel poll enable message mask */ /*********************************************************************** * ioctl com structures * ***********************************************************************/ struct csdata { short regnum; /* logical register number for HPIB */ char data; /* read/write register value */ };