⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qduser.h

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * 	@(#)qduser.h	4.1	(ULTRIX)	7/2/90 *//************************************************************************ *									* *			Copyright (c) 1986 by				* *		Digital Equipment Corporation, Maynard, MA		* *			All rights reserved.				* *									* *   This software is furnished under a license and may be used and	* *   copied  only  in accordance with the terms of such license and	* *   with the  inclusion  of  the  above  copyright  notice.   This	* *   software  or  any  other copies thereof may not be provided or	* *   otherwise made available to any other person.  No title to and	* *   ownership of the software is hereby transferred.			* *									* *   The information in this software is subject to change  without	* *   notice  and should not be construed as a commitment by Digital	* *   Equipment Corporation.						* *									* *   Digital assumes no responsibility for the use  or  reliability	* *   of its software on equipment which is not supplied by Digital.	* *									* ************************************************************************//*****************************************************************************	QDUSER...*	This file defines values shared between the driver and a client****************************************************************************//****************************************************************************	revision history:****************************************************************************** 21 jul 86  ram    fixed define of CURSOR_MIN_Y* 25 nov 85  longo  added macro and bit defines for DMA error flags* 11 nov 85  longo  renamed _vs_eventqueue to "qdinput" struct* 23 oct 85  longo  added more defines to the DMA stuff* 17 oct 85  longo  changed "struct rgb" chars to be unsigned* 16 oct 85  longo  added new TABLET support definitions* 15 oct 85  longo  re-wrote DMA queue access macros* 08 oct 85  longo  added status flag manipulation macros to DMA stuff* 02 oct 85  longo  added support for color map write buffer loading* 26 sep 85  longo  removed adder sertup params from DMA request struct* 23 sep 85  longo  added DMA queue access macros* 30 aug 85  longo  fixed crock in "qdiobuf" struct compile-time sizing. Also*		    removed DMAcontrol struct from DMA buffer for field test* 26 aug 85  longo  put in conditional include of "qevent.h" for user prg's* 18 jul 85  longo  changed semantics so that head is tail and tail is head* 12 jul 85  longo  moved "mouse_report" struct and defs over to qd_data.c* 11 jul 85  longo  added device coordinate to gate array cursor coordinate*		    transformation macros* 03 jul 85  longo  changed kernel typdef's for data types to long-hand* 10 may 85  longo  created****************************************************************************/#ifdef KERNEL#include "../io/uba/qevent.h"		/* include event struct defs */#else#include <io/uba/qevent.h>#endif/*---------------------* QDSS device map */	struct qdmap {			/* map of register blocks in QDSS */	    char *template;	    char *adder;	    char *dga;	    char *duart;	    char *memcsr;	    char *red;	    char *blue;	    char *green;	};/*--------------------------------------------* DGA CSR bit definitions and register map */#define DMADONE		0x8000		/* DMA done status */#define SET_DONE_FIFO	0x4000		/* set DMADONE when FIFO empty.. */					/* ..AND count = 0 */#define PTOB_ENB	0x0600		/* host-to-bitmap DMA xfer */#define BTOP_ENB	0x0400		/* bitmap-to-host DMA xfer */#define DL_ENB		0x0200		/* display list DMA xfer */#define HALT		0x0000		/* halt DGA */#define BYTE_DMA	0x0100		/* byte/word DMA xfer */#define DMA_ERR		0x0080		/* DMA error bits */#define PARITY_ERR	0x0040		/* memory parity error in DMA */#define BUS_ERR		0x0020		/* bus timeout error in DMA */#define GLOBAL_IE	0x0004		/* global interrupt enable */#define DMA_IE		0x0002		/* DMA interrupt enable */#define CURS_ENB	0x0001		/* cursor enable *//* QDSS memcsr bit definitions */#define	UNBLANK			0x0020#define SYNC_ON			0x0008	struct dga {	    unsigned short csr;	    unsigned short adrs_lo;	/* destination address of bitmap to */	    unsigned short adrs_hi;	/*   host DMA */	    unsigned short bytcnt_lo;	/* byte length of requested DMA */	    unsigned short bytcnt_hi;	/* (WO = bytcnt) (RO = fifo count) */	    unsigned short fifo;	/* FIFO register */	    unsigned short x_cursor;	/* cursor position registers */	    unsigned short y_cursor;	    unsigned short ivr;		/* interrupt vector register */	    unsigned short memadr;	/* memory base address register */	};/*-------------------------------------------------------------------------* macros to transform device coordinates to hardware cursor coordinates */#define CURS_MIN_X 	232	/* device coordinate x = 0 */#define CURS_MIN_Y 	16	/* device coordinate y = 0 */#define TRANX(x) ( -(((int)(x)+CURS_MIN_X) & ~0x0003) | \		   (((int)(x)+CURS_MIN_X) & 0x0003) )#define TRANY(y) ( -((y)+CURS_MIN_Y) )/***********************************************************************	EVENT QUEUE DEFINITIONS************************************************************************ most of the event queue definitions are found in "qevent.h".  But a* few things not found there are here.  */ 	/* The event queue header */	typedef struct qdinput {	    struct _vs_eventqueue header;  /* event queue ring handling */	    /* for VS100 and QVSS compatability reasons, additions to this	    *  structure must be made below this point.  */	    struct _vs_cursor curs_pos;	/* current mouse position */	    struct _vs_box curs_box;	/* cursor reporting box */	};	/* vse_key field.  definitions for mouse buttons */#define VSE_LEFT_BUTTON		0#define VSE_MIDDLE_BUTTON	1#define VSE_RIGHT_BUTTON	2/* vse_key field.  definitions for mouse buttons */#define VSE_T_LEFT_BUTTON	0#define VSE_T_FRONT_BUTTON	1#define VSE_T_RIGHT_BUTTON	2#define VSE_T_BACK_BUTTON	4#define VSE_T_BARREL_BUTTON	VSE_T_LEFT_BUTTON#define VSE_T_TIP_BUTTON	VSE_T_FRONT_BUTTON/*--------------------------------------------------------------------------*   These are the macros to be used for loading and extracting from the event* queue.  It is presumed that the macro user will only use the access macros* if the event queue is non-empty ( ISEMPTY(eq) == FALSE ), and that the* driver will only load the event queue after checking that it is not full* ( ISFULL(eq) == FALSE ).  ("eq" is a pointer to the event queue header.)**   Before an event access session for a particular event, the macro users* must use the xxxBEGIN macro, and the xxxEND macro after an event is through* with.  As seen below, the xxxBEGIN and xxxEND macros maintain the event* queue access mechanism.** First, the macros to be used by the event queue reader */#define ISEMPTY(eq)	  ((eq)->header.head == (eq)->header.tail)#define GETBEGIN(eq)	  (&(eq)->header.events[(eq)->header.head]) #define GET_X(event)	  ((event)->vse_x)  	     /* get x position */#define GET_Y(event)	  ((event)->vse_y)  	     /* get y position */#define GET_TIME(event)	  ((event)->vse_time) 	     /* get time */#define GET_TYPE(event)	  ((event)->vse_type)	     /* get entry type */#define GET_KEY(event)	  ((event)->vse_key)  	     /* get keycode */#define GET_DIR(event)	  ((event)->vse_direction)     /* get direction */#define GET_DEVICE(event) ((event)->vse_device)        /* get device */#define GETEND(eq)        (++(eq)->header.head >= (eq)->header.size ? \			   (eq)->header.head = 0 : 0 )/*------------------------------------------------* macros to be used by the event queue loader  */	/* ISFULL yields TRUE if queue is full */#define ISFULL(eq)	((eq)->header.tail+1 == (eq)->header.head ||   \			 ((eq)->header.tail+1 == (eq)->header.size &&  \			  (eq)->header.head == 0))	/* get address of the billet for NEXT event */#define PUTBEGIN(eq)	(&(eq)->header.events[(eq)->header.tail])#define PUT_X(event, value)  	((event)->vse_x = value)    /* put X pos */#define PUT_Y(event, value)   	((event)->vse_y = value)    /* put Y pos */#define PUT_TIME(event, value)	((event)->vse_time = value)   /* put time */#define PUT_TYPE(event, value)	((event)->vse_type = value) /* put type */#define PUT_KEY(event, value)	((event)->vse_key = value) /* put input key */#define PUT_DIR(event, value)	((event)->vse_direction = value) /* put dir */#define PUT_DEVICE(event, value) ((event)->vse_device = value)   /* put dev */#define PUTEND(eq)     (++(eq)->header.tail >= (eq)->header.size ?  \			(eq)->header.tail = 0 : 0) /********************************************************************	DMA I/O DEFINITIONS*******************************************************************//*---------------------------------------------------------------------* The DMA request queue is implemented as a ring buffer of "DMAreq"  structures.  The queue is accessed using ring indices located in the  "DMAreq_header" structure.  Access is implemented using access macros  similar to the event queue access macros above.  */	struct DMAreq {	    short DMAtype;		/* DMA type code (for QDSS) */	    short DMAdone;		/* DMA done parameter */	    char  *bufp;		/* virtual adrs of buffer */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -