summaryrefslogtreecommitdiff
path: root/sys/arch/hp300/stand/itevar.h
diff options
context:
space:
mode:
authorMichael Shalayeff <mickey@cvs.openbsd.org>1996-05-04 16:47:21 +0000
committerMichael Shalayeff <mickey@cvs.openbsd.org>1996-05-04 16:47:21 +0000
commit26c9277ff33206ca4fa70e7500c94ce42da5952f (patch)
tree1c3e145f73c2e3aff2fe216df020c12c88d3e862 /sys/arch/hp300/stand/itevar.h
parent2362af25f630b99da3d5d042b3c182d0b687ace5 (diff)
add files missed from 0418 sync.
Diffstat (limited to 'sys/arch/hp300/stand/itevar.h')
-rw-r--r--sys/arch/hp300/stand/itevar.h231
1 files changed, 231 insertions, 0 deletions
diff --git a/sys/arch/hp300/stand/itevar.h b/sys/arch/hp300/stand/itevar.h
new file mode 100644
index 00000000000..cebbb2ec6cd
--- /dev/null
+++ b/sys/arch/hp300/stand/itevar.h
@@ -0,0 +1,231 @@
+/* $NetBSD: itevar.h,v 1.1 1996/03/03 04:23:42 thorpej Exp $ */
+
+/*
+ * Copyright (c) 1988 University of Utah.
+ * Copyright (c) 1990, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * the Systems Programming Group of the University of Utah Computer
+ * Science Department.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * from: Utah $Hdr: itevar.h 1.15 92/12/20$
+ *
+ * @(#)itevar.h 8.1 (Berkeley) 6/10/93
+ */
+
+/*
+ * Standalone version of hp300 ITE.
+ */
+
+#define ITEUNIT(dev) minor(dev)
+
+#define getbyte(ip, offset) \
+ ((*(ip)->isw->ite_readbyte)(ip, offset))
+
+#define getword(ip, offset) \
+ ((getbyte(ip, offset) << 8) | getbyte(ip, (offset) + 2))
+
+#define writeglyph(ip, offset, fontbuf) \
+ ((*(ip)->isw->ite_writeglyph)((ip), (offset), (fontbuf)))
+
+struct ite_data {
+ int flags;
+ struct tty *tty;
+ struct itesw *isw;
+ struct grf_data *grf;
+ caddr_t regbase, fbbase;
+ short curx, cury;
+ short cursorx, cursory;
+ short cblankx, cblanky;
+ short rows, cols;
+ short cpl;
+ short dheight, dwidth;
+ short fbheight, fbwidth;
+ short ftheight, ftwidth;
+ short fontx, fonty;
+ short attribute;
+ u_char *attrbuf;
+ short planemask;
+ short pos;
+ char imode, escape, fpd, hold;
+ caddr_t devdata; /* display dependent data */
+};
+
+struct itesw {
+ int ite_hwid;
+ void (*ite_init) __P((struct ite_data *));
+ void (*ite_deinit) __P((struct ite_data *));
+ void (*ite_clear) __P((struct ite_data *, int, int, int, int));
+ void (*ite_putc) __P((struct ite_data *, int, int, int, int));
+ void (*ite_cursor) __P((struct ite_data *, int));
+ void (*ite_scroll) __P((struct ite_data *, int, int, int, int));
+ u_char (*ite_readbyte) __P((struct ite_data *, int));
+ void (*ite_writeglyph) __P((struct ite_data *, u_char *, u_char *));
+};
+
+/* Flags */
+#define ITE_ALIVE 0x01 /* hardware exists */
+#define ITE_INITED 0x02 /* device has been initialized */
+#define ITE_CONSOLE 0x04 /* device can be console */
+#define ITE_ISCONS 0x08 /* device is console */
+#define ITE_ACTIVE 0x10 /* device is being used as ITE */
+#define ITE_INGRF 0x20 /* device in use as non-ITE */
+#define ITE_CURSORON 0x40 /* cursor being tracked */
+
+#define attrloc(ip, y, x) \
+ (ip->attrbuf + ((y) * ip->cols) + (x))
+
+#define attrclr(ip, sy, sx, h, w) \
+ bzero(ip->attrbuf + ((sy) * ip->cols) + (sx), (h) * (w))
+
+#define attrmov(ip, sy, sx, dy, dx, h, w) \
+ bcopy(ip->attrbuf + ((sy) * ip->cols) + (sx), \
+ ip->attrbuf + ((dy) * ip->cols) + (dx), \
+ (h) * (w))
+
+#define attrtest(ip, attr) \
+ ((* (u_char *) attrloc(ip, ip->cury, ip->curx)) & attr)
+
+#define attrset(ip, attr) \
+ ((* (u_char *) attrloc(ip, ip->cury, ip->curx)) = attr)
+
+/*
+ * X and Y location of character 'c' in the framebuffer, in pixels.
+ */
+#define charX(ip,c) \
+ (((c) % (ip)->cpl) * (ip)->ftwidth + (ip)->fontx)
+
+#define charY(ip,c) \
+ (((c) / (ip)->cpl) * (ip)->ftheight + (ip)->fonty)
+
+/*
+ * The cursor is just an inverted space.
+ */
+#define draw_cursor(ip) { \
+ WINDOWMOVER(ip, ip->cblanky, ip->cblankx, \
+ ip->cury * ip->ftheight, \
+ ip->curx * ip->ftwidth, \
+ ip->ftheight, ip->ftwidth, RR_XOR); \
+ ip->cursorx = ip->curx; \
+ ip->cursory = ip->cury; }
+
+#define erase_cursor(ip) \
+ WINDOWMOVER(ip, ip->cblanky, ip->cblankx, \
+ ip->cursory * ip->ftheight, \
+ ip->cursorx * ip->ftwidth, \
+ ip->ftheight, ip->ftwidth, RR_XOR);
+
+/* Character attributes */
+#define ATTR_NOR 0x0 /* normal */
+#define ATTR_INV 0x1 /* inverse */
+#define ATTR_UL 0x2 /* underline */
+#define ATTR_ALL (ATTR_INV | ATTR_UL)
+
+/* Keyboard attributes */
+#define ATTR_KPAD 0x4 /* keypad transmit */
+
+/* Replacement Rules */
+#define RR_CLEAR 0x0
+#define RR_COPY 0x3
+#define RR_XOR 0x6
+#define RR_COPYINVERTED 0xc
+
+#define SCROLL_UP 0x01
+#define SCROLL_DOWN 0x02
+#define SCROLL_LEFT 0x03
+#define SCROLL_RIGHT 0x04
+#define DRAW_CURSOR 0x05
+#define ERASE_CURSOR 0x06
+#define MOVE_CURSOR 0x07
+
+#define KBD_SSHIFT 4 /* bits to shift status */
+#define KBD_CHARMASK 0x7F
+
+/* keyboard status */
+#define KBD_SMASK 0xF /* service request status mask */
+#define KBD_CTRLSHIFT 0x8 /* key + CTRL + SHIFT */
+#define KBD_CTRL 0x9 /* key + CTRL */
+#define KBD_SHIFT 0xA /* key + SHIFT */
+#define KBD_KEY 0xB /* key only */
+
+#define KBD_CAPSLOCK 0x18
+
+#define KBD_EXT_LEFT_DOWN 0x12
+#define KBD_EXT_LEFT_UP 0x92
+#define KBD_EXT_RIGHT_DOWN 0x13
+#define KBD_EXT_RIGHT_UP 0x93
+
+#define TABSIZE 8
+#define TABEND(ip) ((ip)->tty->t_winsize.ws_col - TABSIZE)
+
+extern struct ite_data ite_data[];
+extern struct itesw itesw[];
+extern int nitesw;
+
+/*
+ * Prototypes.
+ */
+u_char ite_readbyte __P((struct ite_data *, int));
+void ite_writeglyph __P((struct ite_data *, u_char *, u_char *));
+
+/*
+ * Framebuffer-specific ITE prototypes.
+ */
+void topcat_init __P((struct ite_data *));
+void topcat_clear __P((struct ite_data *, int, int, int, int));
+void topcat_putc __P((struct ite_data *, int, int, int, int));
+void topcat_cursor __P((struct ite_data *, int));
+void topcat_scroll __P((struct ite_data *, int, int, int, int));
+
+void gbox_init __P((struct ite_data *));
+void gbox_clear __P((struct ite_data *, int, int, int, int));
+void gbox_putc __P((struct ite_data *, int, int, int, int));
+void gbox_cursor __P((struct ite_data *, int));
+void gbox_scroll __P((struct ite_data *, int, int, int, int));
+
+void rbox_init __P((struct ite_data *));
+void rbox_clear __P((struct ite_data *, int, int, int, int));
+void rbox_putc __P((struct ite_data *, int, int, int, int));
+void rbox_cursor __P((struct ite_data *, int));
+void rbox_scroll __P((struct ite_data *, int, int, int, int));
+
+void dvbox_clear __P((struct ite_data *, int, int, int, int));
+void dvbox_putc __P((struct ite_data *, int, int, int, int));
+void dvbox_cursor __P((struct ite_data *, int));
+void dvbox_scroll __P((struct ite_data *, int, int, int, int));
+
+void hyper_init __P((struct ite_data *));
+void hyper_clear __P((struct ite_data *, int, int, int, int));
+void hyper_putc __P((struct ite_data *, int, int, int, int));
+void hyper_cursor __P((struct ite_data *, int));
+void hyper_scroll __P((struct ite_data *, int, int, int, int));
+