📄 fguser.h
字号:
/* * @(#)fguser.h 4.1 (ULTRIX) 7/2/90 *//************************************************************************ * * * Copyright (c) 1986, 87 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. * * * ************************************************************************//*********************************************************************** * * Modification History: * * 21-Jan-88 -- rafiey (Ali Rafieymehr) * Created this header file for the Firefox driver. * **********************************************************************/#ifdef KERNEL#include "../io/uba/qevent.h" /* include event struct defs */#else#include <io/uba/qevent.h>#endif/* * Firefox device map */ struct fgmap { /* map of register blocks in Firefox */ char *boot_rom; char *weitek_code; char *reserv1; char *dram; char *i_vram; char *x_vram; char *i_pattern_mem; char *x_pattern_mem; char *tchip; char *dchip; char *achip; char *reserv2; char *fbic; char *alpha; char *console; char *scb; };struct fgcurstabupd { short x; /* new curstab x value */ short y; /* new curstab y value */ short hot_x; /* new curstab hot_x value */ short hot_y; /* new curstab hot_y value */ char flags; /* bit0 => update x, bit1 => update y, bit2 => update hot_x, bit3 => update hot_y */ };typedef struct _fg_commarea_desc { long int nsegs; struct { long int nbytes; char *VA; long int PhysOffset; } MemSeg [4]; } fg_commarea_desc;typedef struct _fg_timinginfo { unsigned short int csr; unsigned short int display_x; unsigned short int display_y; unsigned short int table_x; unsigned short int table_y; unsigned char table_width; unsigned char table_L1; unsigned char table_L2; unsigned char pipe; unsigned short int VBS; unsigned short int VBF; unsigned short int VSS; unsigned short int VSF; unsigned short int HBS; unsigned short int HBF; unsigned short int HSS; unsigned short int HSF; unsigned short int HS2; unsigned short int PVI; unsigned short int interrupt; } fg_timinginfo;/* * constants for updating cursor, hot spots */#define UPDATE_X 1#define UPDATE_Y 2#define UPDATE_HOTX 4#define UPDATE_HOTY 8/* * constants used in font operations */#define CHARS 190 /* # of chars in the font */#define CHAR_HEIGHT 21 /* char height in pixels */#define CHAR_WIDTH 12 /* char width in pixels*/#define FONT_WIDTH (CHAR_WIDTH * CHARS) /* font width in pixels */#define FONT_HEIGHT 32#define FONT_X 0 /* font's off screen adrs */#define FONT_Y (2048 - CHAR_HEIGHT)#define ROWS CHAR_HEIGHT/* * constants used for cursor */#define MAX_CUR_X 1280 /* max cursor x position */#define MAX_CUR_Y 1024 /* max cursor y position */#define ACC_OFF 0x01 /* acceleration is inactive */#define CURS_ENB 0x0001 /* cursor on *//* * VAXstar interrupt controller register bits * */#define SINT_VS 0x0004#define SINT_VF 0x0008/* * Cursor Command Register bits * */#define ENPA 0000001#define FOPA 0000002#define ENPB 0000004#define FOPB 0000010#define XHAIR 0000020#define XHCLP 0000040#define XHCL1 0000100#define XHWID 0000200#define ENRG1 0000400#define FORG1 0001000#define ENRG2 0002000#define FORG2 0004000#define LODSA 0010000#define VBHI 0020000#define HSHI 0040000#define TEST 0100000/* * Line Prameter Register bits * */#define SER_KBD 000000#define SER_POINTER 000001#define SER_COMLINE 000002#define SER_PRINTER 000003#define SER_CHARW 000030#define SER_STOP 000040#define SER_PARENB 000100#define SER_ODDPAR 000200#define SER_SPEED 006000#define SER_RXENAB 010000/* * FCC register and bit definitions */#define IIDLE 0x0001 /* status of "Pixel transfer idle" interrupt */#define ENIDLE 0x0002 /* enable "Pixel transfer idle" interrupt */#define ENTHRSH 0x0040 /* enable FIFO threshold interrupt */#define ITHRESH 0x0080 /* status of "FIFO pass threshold" interrupt *//* * Color board general CSR bit definitions */#define IDLE 0x8000 /* FIFO has data or not */#define FLUSH 0x4000 /* FIFO complete current operation */#define ADDREQ 0x2000 /* ADDER requesting I/O */#define PTB_DECOM_ENB 0x1F00 /* host-to-bitmap (use decompression) */#define PTB_UNPACK_ENB 0x0700 /* host-to-bitmap (unpack bytes) */#define PTB_ENB 0x0600 /* host-to-bitmap xfer */#define BTP_COM_ENB 0x1D00 /* bitmap-to-host (use compression) */#define BTP_PACK_ENB 0x0500 /* bitmap-to-host (pack bytes) */#define BTP_ENB 0x0400 /* bitmap-to-host xfer */#define DL_ENB 0x0200 /* display list to ADDER */#define HALT 0x0000 /* halt */#define DIAG 0x0080 /* diagnostic mode */#define CTESTH 0x0040 /* TEST bit from the cursor chip */#define INTMPH 0x0020 /* status bit */#define FADR16 0x0002 /* fifo address bit 16 */#define FADR15 0x0001 /* fifo address bit 15 *//* Software pointer into the VAXstar FIFO */u_short sg_next_fifo;#define SYNC_ON 0x0008 struct fcc { unsigned short cbcsr; /* color board general CSR */ unsigned short icsr; /* interrupt control and status reg. */ unsigned short fcsr; /* fifo control and status register */ unsigned short fwused; /* fifo words used */ unsigned short thresh; /* threshold for comparing with fwused*/ unsigned short zoo; /* not used */ unsigned short put; /* put pointer for fifo control */ unsigned short get; /* get pointer for fifo control */ unsigned short diag; /* data for diagnostics modes */ unsigned short cmpa; unsigned short cmpb; unsigned short cmpc; /* pla address bits */ unsigned short pad[116]; };/* cursor registers */ struct color_cursor { u_short cmdr; /* command register */ u_short xpos; /* x position Register */ u_short ypos; /* y position register */ u_short xmin1; /* xmin1 active region register */ u_short xmax1; /* xmax1 active region register */ u_short ymin1; /* ymin1 active region register */ u_short ymax1; /* ymax1 active region register */ u_short pad[4]; u_short xmin2; /* xmin2 active region register */ u_short xmax2; /* xmax2 active region register */ u_short ymin2; /* ymin2 active region register */ u_short ymax2; /* ymax2 active region register */ u_short cmem; /* cursor memory register */ };/* * macros to transform device coordinates to hardware cursor coordinates */#define CURS_MIN_X 216 /* device coordinate x = 0 */#define CURS_MIN_Y 38 /* device coordinate y = 0 *//********************************************************************* * * 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 fginput { 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])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -