summaryrefslogtreecommitdiff
path: root/sys/arch/hp300/dev/diofb_mono.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch/hp300/dev/diofb_mono.c')
-rw-r--r--sys/arch/hp300/dev/diofb_mono.c245
1 files changed, 0 insertions, 245 deletions
diff --git a/sys/arch/hp300/dev/diofb_mono.c b/sys/arch/hp300/dev/diofb_mono.c
deleted file mode 100644
index 7b7790e5e44..00000000000
--- a/sys/arch/hp300/dev/diofb_mono.c
+++ /dev/null
@@ -1,245 +0,0 @@
-/* $OpenBSD: diofb_mono.c,v 1.3 2006/08/11 18:33:13 miod Exp $ */
-
-/*
- * Copyright (c) 2005, Miodrag Vallat.
- * All rights reserved.
- *
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
- *
- */
-/*
- * Copyright (c) 1996 Jason R. Thorpe. All rights reserved.
- * Copyright (c) 1991 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 and Mark Davies of the Department of Computer
- * Science, Victoria University of Wellington, New Zealand.
- *
- * 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. 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: grf_hy.c 1.2 93/08/13$
- *
- * @(#)grf_hy.c 8.4 (Berkeley) 1/12/94
- */
-
-/*
- * Graphics routines for real 1bpp frame buffers (i.e. pixels not being
- * byte-addressed)
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-
-#include <dev/wscons/wsconsio.h>
-#include <dev/wscons/wsdisplayvar.h>
-#include <dev/rasops/rasops.h>
-
-#include <hp300/dev/diofbreg.h>
-#include <hp300/dev/diofbvar.h>
-
-#include <dev/rasops/rasops_masks.h>
-#include <hp300/dev/maskbits.h>
-
-int
-diofb_mono_windowmove(struct diofb *fb, u_int16_t sx, u_int16_t sy,
- u_int16_t dx, u_int16_t dy, u_int16_t cx, u_int16_t cy, int16_t rop,
- int16_t planemask /* ignored */)
-{
- int width; /* add to get to same position in next line */
-
- unsigned int *psrcLine, *pdstLine;
- /* pointers to line with current src and dst */
- unsigned int *psrc; /* pointer to current src longword */
- unsigned int *pdst; /* pointer to current dst longword */
-
- /* following used for looping through a line */
- unsigned int startmask, endmask; /* masks for writing ends of dst */
- int nlMiddle; /* whole longwords in dst */
- int nl; /* temp copy of nlMiddle */
- int xoffSrc; /* offset (>= 0, < 32) from which to
- fetch whole longwords fetched in src */
- int nstart; /* number of ragged bits at start of dst */
- int nend; /* number of ragged bits at end of dst */
- int srcStartOver; /* pulling nstart bits from src
- overflows into the next word? */
-
- width = fb->fbwidth >> 5;
-
- if (sy < dy) { /* start at last scanline of rectangle */
- psrcLine = ((u_int *)fb->fbkva) + ((sy + cy - 1) * width);
- pdstLine = ((u_int *)fb->fbkva) + ((dy + cy - 1) * width);
- width = -width;
- } else { /* start at first scanline */
- psrcLine = ((u_int *)fb->fbkva) + (sy * width);
- pdstLine = ((u_int *)fb->fbkva) + (dy * width);
- }
-
- /* x direction doesn't matter for < 1 longword */
- if (cx <= 32) {
- int srcBit, dstBit; /* bit offset of src and dst */
-
- pdstLine += (dx >> 5);
- psrcLine += (sx >> 5);
- psrc = psrcLine;
- pdst = pdstLine;
-
- srcBit = sx & 0x1f;
- dstBit = dx & 0x1f;
-
- while (cy--) {
- getandputrop(psrc, srcBit, dstBit, cx, pdst, rop);
- pdst += width;
- psrc += width;
- }
- } else {
- maskbits(dx, cx, startmask, endmask, nlMiddle);
- if (startmask)
- nstart = 32 - (dx & 0x1f);
- else
- nstart = 0;
- if (endmask)
- nend = (dx + cx) & 0x1f;
- else
- nend = 0;
-
- xoffSrc = ((sx & 0x1f) + nstart) & 0x1f;
- srcStartOver = ((sx & 0x1f) + nstart) > 31;
-
- if (sx >= dx) { /* move left to right */
- pdstLine += (dx >> 5);
- psrcLine += (sx >> 5);
-
- while (cy--) {
- psrc = psrcLine;
- pdst = pdstLine;
-
- if (startmask) {
- getandputrop(psrc, (sx & 0x1f),
- (dx & 0x1f), nstart, pdst, rop);
- pdst++;
- if (srcStartOver)
- psrc++;
- }
-
- /* special case for aligned operations */
- if (xoffSrc == 0) {
- nl = nlMiddle;
- while (nl--) {
- if (rop == RR_CLEAR)
- *pdst = 0;
- else
- *pdst = *psrc;
- psrc++;
- pdst++;
- }
- } else {
- nl = nlMiddle + 1;
- while (--nl) {
- if (rop == RR_CLEAR)
- *pdst = 0;
- else
- getunalignedword(psrc,
- xoffSrc, *pdst);
- pdst++;
- psrc++;
- }
- }
-
- if (endmask) {
- getandputrop(psrc, xoffSrc, 0, nend,
- pdst, rop);
- }
-
- pdstLine += width;
- psrcLine += width;
- }
- } else { /* move right to left */
- pdstLine += ((dx + cx) >> 5);
- psrcLine += ((sx + cx) >> 5);
- /*
- * If fetch of last partial bits from source crosses
- * a longword boundary, start at the previous longword
- */
- if (xoffSrc + nend >= 32)
- --psrcLine;
-
- while (cy--) {
- psrc = psrcLine;
- pdst = pdstLine;
-
- if (endmask) {
- getandputrop(psrc, xoffSrc, 0, nend,
- pdst, rop);
- }
-
- nl = nlMiddle + 1;
- while (--nl) {
- --psrc;
- --pdst;
- if (rop == RR_CLEAR)
- *pdst = 0;
- else
- getunalignedword(psrc, xoffSrc,
- *pdst);
- }
-
- if (startmask) {
- if (srcStartOver)
- --psrc;
- --pdst;
- getandputrop(psrc, (sx & 0x1f),
- (dx & 0x1f), nstart, pdst, rop);
- }
-
- pdstLine += width;
- psrcLine += width;
- }
- }
- }
-
- return (0);
-}