Home | History | Annotate | Line # | Download | only in common
ite_gb.c revision 1.6.106.2
      1  1.6.106.2   bouyer /*	$NetBSD: ite_gb.c,v 1.6.106.2 2011/02/17 11:59:41 bouyer Exp $	*/
      2        1.1  thorpej 
      3        1.1  thorpej /*
      4  1.6.106.2   bouyer  * Copyright (c) 1988 University of Utah.
      5        1.1  thorpej  * Copyright (c) 1990, 1993
      6        1.1  thorpej  *	The Regents of the University of California.  All rights reserved.
      7        1.2      agc  *
      8        1.2      agc  * This code is derived from software contributed to Berkeley by
      9        1.2      agc  * the Systems Programming Group of the University of Utah Computer
     10        1.2      agc  * Science Department.
     11        1.2      agc  *
     12        1.2      agc  * Redistribution and use in source and binary forms, with or without
     13        1.2      agc  * modification, are permitted provided that the following conditions
     14        1.2      agc  * are met:
     15        1.2      agc  * 1. Redistributions of source code must retain the above copyright
     16        1.2      agc  *    notice, this list of conditions and the following disclaimer.
     17        1.2      agc  * 2. Redistributions in binary form must reproduce the above copyright
     18        1.2      agc  *    notice, this list of conditions and the following disclaimer in the
     19        1.2      agc  *    documentation and/or other materials provided with the distribution.
     20        1.2      agc  * 3. Neither the name of the University nor the names of its contributors
     21        1.2      agc  *    may be used to endorse or promote products derived from this software
     22        1.2      agc  *    without specific prior written permission.
     23        1.2      agc  *
     24        1.2      agc  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
     25        1.2      agc  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     26        1.2      agc  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     27        1.2      agc  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
     28        1.2      agc  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     29        1.2      agc  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     30        1.2      agc  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     31        1.2      agc  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     32        1.2      agc  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     33        1.2      agc  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     34        1.2      agc  * SUCH DAMAGE.
     35        1.2      agc  *
     36        1.2      agc  * from: Utah $Hdr: ite_gb.c 1.9 92/01/20$
     37        1.2      agc  *
     38        1.2      agc  *	@(#)ite_gb.c	8.1 (Berkeley) 6/10/93
     39        1.2      agc  */
     40        1.1  thorpej 
     41        1.1  thorpej #ifdef ITECONSOLE
     42        1.1  thorpej 
     43        1.1  thorpej #include <sys/param.h>
     44        1.1  thorpej 
     45  1.6.106.1   bouyer #include <hp300/stand/common/itereg.h>
     46  1.6.106.1   bouyer #include <hp300/stand/common/grf_gbreg.h>
     47        1.1  thorpej 
     48        1.1  thorpej #include <hp300/stand/common/samachdep.h>
     49        1.1  thorpej #include <hp300/stand/common/itevar.h>
     50        1.1  thorpej 
     51        1.3  tsutsui void gbox_windowmove(struct ite_data *, int, int, int, int, int, int, int);
     52        1.1  thorpej 
     53        1.1  thorpej void
     54        1.4  tsutsui gbox_init(struct ite_data *ip)
     55        1.1  thorpej {
     56        1.3  tsutsui 	struct gboxfb *regbase = (void *)ip->regbase;
     57        1.3  tsutsui 
     58  1.6.106.2   bouyer 	ip->bmv = gbox_windowmove;
     59  1.6.106.2   bouyer 
     60        1.3  tsutsui 	regbase->write_protect = 0x0;
     61        1.3  tsutsui 	regbase->interrupt = 0x4;
     62        1.3  tsutsui 	regbase->rep_rule = RR_COPY;
     63        1.3  tsutsui 	regbase->blink1 = 0xff;
     64        1.3  tsutsui 	regbase->blink2 = 0xff;
     65        1.3  tsutsui 	regbase->sec_interrupt = 0x01;
     66        1.1  thorpej 
     67        1.1  thorpej 	/*
     68        1.1  thorpej 	 * Set up the color map entries. We use three entries in the
     69        1.1  thorpej 	 * color map. The first, is for black, the second is for
     70        1.1  thorpej 	 * white, and the very last entry is for the inverted cursor.
     71        1.1  thorpej 	 */
     72        1.3  tsutsui 	regbase->creg_select = 0x00;
     73        1.3  tsutsui 	regbase->cmap_red    = 0x00;
     74        1.3  tsutsui 	regbase->cmap_grn    = 0x00;
     75        1.3  tsutsui 	regbase->cmap_blu    = 0x00;
     76        1.3  tsutsui 	regbase->cmap_write  = 0x00;
     77        1.3  tsutsui 	gbcm_waitbusy(regbase);
     78        1.3  tsutsui 
     79        1.3  tsutsui 	regbase->creg_select = 0x01;
     80        1.3  tsutsui 	regbase->cmap_red    = 0xFF;
     81        1.3  tsutsui 	regbase->cmap_grn    = 0xFF;
     82        1.3  tsutsui 	regbase->cmap_blu    = 0xFF;
     83        1.3  tsutsui 	regbase->cmap_write  = 0x01;
     84        1.3  tsutsui 	gbcm_waitbusy(regbase);
     85        1.3  tsutsui 
     86        1.3  tsutsui 	regbase->creg_select = 0xFF;
     87        1.3  tsutsui 	regbase->cmap_red    = 0xFF;
     88        1.3  tsutsui 	regbase->cmap_grn    = 0xFF;
     89        1.3  tsutsui 	regbase->cmap_blu    = 0xFF;
     90        1.3  tsutsui 	regbase->cmap_write  = 0x01;
     91        1.3  tsutsui 	gbcm_waitbusy(regbase);
     92        1.1  thorpej 
     93        1.1  thorpej 	ite_fontinfo(ip);
     94  1.6.106.2   bouyer 	ite_fontinit8bpp(ip);
     95        1.1  thorpej 
     96        1.1  thorpej 	/*
     97        1.1  thorpej 	 * Clear the display. This used to be before the font unpacking
     98        1.1  thorpej 	 * but it crashes. Figure it out later.
     99        1.1  thorpej 	 */
    100        1.1  thorpej 	gbox_windowmove(ip, 0, 0, 0, 0, ip->dheight, ip->dwidth, RR_CLEAR);
    101        1.3  tsutsui 	tile_mover_waitbusy(regbase);
    102        1.1  thorpej 
    103        1.1  thorpej 	/*
    104        1.1  thorpej 	 * Stash the inverted cursor.
    105        1.1  thorpej 	 */
    106        1.1  thorpej 	gbox_windowmove(ip, charY(ip, ' '), charX(ip, ' '),
    107        1.1  thorpej 			ip->cblanky, ip->cblankx, ip->ftheight,
    108        1.1  thorpej 			ip->ftwidth, RR_COPYINVERTED);
    109        1.1  thorpej }
    110        1.1  thorpej 
    111        1.1  thorpej void
    112  1.6.106.2   bouyer gbox_scroll(struct ite_data *ip)
    113        1.3  tsutsui {
    114        1.3  tsutsui 	struct gboxfb *regbase = (void *)ip->regbase;
    115        1.3  tsutsui 
    116        1.3  tsutsui 	tile_mover_waitbusy(regbase);
    117        1.3  tsutsui 	regbase->write_protect = 0x0;
    118        1.1  thorpej 
    119  1.6.106.2   bouyer 	ite_dio_scroll(ip);
    120        1.1  thorpej }
    121        1.1  thorpej 
    122        1.1  thorpej void
    123        1.6  tsutsui gbox_windowmove(struct ite_data *ip, int sy, int sx, int dy, int dx, int h,
    124        1.6  tsutsui     int w, int mask)
    125        1.1  thorpej {
    126        1.3  tsutsui 	struct gboxfb *regbase = (void *)ip->regbase;
    127        1.3  tsutsui 	int src, dest;
    128        1.1  thorpej 
    129        1.1  thorpej 	src  = (sy * 1024) + sx;	/* upper left corner in pixels */
    130        1.1  thorpej 	dest = (dy * 1024) + dx;
    131        1.1  thorpej 
    132        1.3  tsutsui 	tile_mover_waitbusy(regbase);
    133        1.3  tsutsui 	regbase->width = -(w / 4);
    134        1.3  tsutsui 	regbase->height = -(h / 4);
    135        1.1  thorpej 	if (src < dest)
    136        1.3  tsutsui 		regbase->rep_rule = MOVE_DOWN_RIGHT|mask;
    137        1.1  thorpej 	else {
    138        1.3  tsutsui 		regbase->rep_rule = MOVE_UP_LEFT|mask;
    139        1.1  thorpej 		/*
    140        1.1  thorpej 		 * Adjust to top of lower right tile of the block.
    141        1.1  thorpej 		 */
    142        1.1  thorpej 		src = src + ((h - 4) * 1024) + (w - 4);
    143        1.1  thorpej 		dest= dest + ((h - 4) * 1024) + (w - 4);
    144        1.1  thorpej 	}
    145        1.1  thorpej 	FBBASE[dest] = FBBASE[src];
    146        1.1  thorpej }
    147        1.1  thorpej #endif
    148