summaryrefslogtreecommitdiff
path: root/chips/bt478.c
diff options
context:
space:
mode:
Diffstat (limited to 'chips/bt478.c')
-rw-r--r--chips/bt478.c243
1 files changed, 0 insertions, 243 deletions
diff --git a/chips/bt478.c b/chips/bt478.c
deleted file mode 100644
index 841728f..0000000
--- a/chips/bt478.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Mach Operating System
- * Copyright (c) 1991,1990,1989 Carnegie Mellon University
- * All Rights Reserved.
- *
- * Permission to use, copy, modify and distribute this software and its
- * documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
- * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie Mellon
- * the rights to redistribute these changes.
- */
-/*
- * File: bt478.c
- * Author: Alessandro Forin, Carnegie Mellon University
- * Date: 9/90
- *
- * Routines for the bt478 Cursor/RAMDAC chip
- */
-
-#include <platforms.h>
-
-#include <chips/bt478.h>
-#include <chips/screen.h>
-
-#ifdef DECSTATION
-
-typedef struct {
- volatile unsigned char addr_mapwa;
- char pad0[3];
- volatile unsigned char addr_map;
- char pad1[3];
- volatile unsigned char addr_mask;
- char pad2[3];
- volatile unsigned char addr_mapra;
- char pad3[3];
- volatile unsigned char addr_overwa;
- char pad4[3];
- volatile unsigned char addr_over;
- char pad5[3];
- volatile unsigned char addr_xxxx;
- char pad6[3];
- volatile unsigned char addr_overra;
- char pad7[3];
-} bt478_padded_regmap_t;
-
-#else /*DECSTATION*/
-
-typedef bt478_regmap_t bt478_padded_regmap_t;
-#define wbflush()
-
-#endif /*DECSTATION*/
-
-
-/*
- * Cursor color
- */
-static
-bt478_load_cc(bt478, bg, fg)
- register bt478_padded_regmap_t *bt478;
- unsigned int *bg, *fg;
-{
- register int i;
-
- /* See init function for gotchas */
-
- bt478->addr_overwa = 4;
- wbflush();
- for (i = 0; i < 3; i++) {
- bt478->addr_over = (*bg++) >> 8;
- wbflush();
- }
-
- bt478->addr_overwa = 8;
- wbflush();
- bt478->addr_over = 0x00;
- wbflush();
- bt478->addr_over = 0x00;
- wbflush();
- bt478->addr_over = 0x7f;
- wbflush();
-
- bt478->addr_overwa = 12;
- wbflush();
- for (i = 0; i < 3; i++) {
- bt478->addr_over = (*fg++) >> 8;
- wbflush();
- }
-
-}
-
-
-bt478_cursor_color(bt478, color)
- bt478_padded_regmap_t *bt478;
- cursor_color_t *color;
-{
- register int i;
- register unsigned int *p;
-
- /* Do it twice, in case of collisions */
-
- bt478_load_cc(bt478, color->Bg_rgb, color->Fg_rgb);
-
- p = color->Bg_rgb;
- for (i = 0; i < 3; i++) {
- bt478->addr_over = (*p++) >> 8;
- wbflush();
- }
-
- p = color->Fg_rgb;
- for (i = 0; i < 3; i++) {
- bt478->addr_over = (*p++) >> 8;
- wbflush();
- }
-
- bt478_load_cc(bt478, color->Bg_rgb, color->Fg_rgb);
-}
-
-/*
- * Color map
- */
-bt478_load_colormap( regs, map)
- bt478_padded_regmap_t *regs;
- color_map_t *map;
-{
- register int i;
-
- regs->addr_mapwa = 0;
- wbflush();
- for (i = 0; i < 256; i++, map++) {
- regs->addr_map = map->red;
- wbflush();
- regs->addr_map = map->green;
- wbflush();
- regs->addr_map = map->blue;
- wbflush();
- }
-}
-
-bt478_load_colormap_entry( regs, entry, map)
- bt478_padded_regmap_t *regs;
- color_map_t *map;
-{
- regs->addr_mapwa = entry & 0xff;
- wbflush();
- regs->addr_map = map->red;
- wbflush();
- regs->addr_map = map->green;
- wbflush();
- regs->addr_map = map->blue;
- wbflush();
-}
-
-/*
- * Video on/off (unused)
- */
-bt478_video_on(pregs, up)
- bt478_padded_regmap_t **pregs;
-{
- (*pregs)->addr_mask = 0xff;
-}
-
-bt478_video_off(pregs, up)
- bt478_padded_regmap_t **pregs;
-{
- (*pregs)->addr_mask = 0;
-}
-
-/*
- * Initialization
- */
-static
-bt478_overlay(regs, plane)
- bt478_padded_regmap_t *regs;
- unsigned char *plane;
-{
- *plane = 0xff;
-
- /* Overlay planes 0 and 1 are wired zero, overlay plane 2
- is plane "B" of the cursor (second half of it), plane 3
- is plane "A" of the cursor. Soo, we get three colors
- for the cursor, at map entries 4, 8 and 12 */
-# define ovv(i,r,g,b) \
- regs->addr_overwa = i; wbflush(); \
- regs->addr_over = r; wbflush(); \
- regs->addr_over = b; wbflush(); \
- regs->addr_over = g; wbflush();
-
- ovv(4,0,0,0); ovv(8,0,0,0x7f); ovv(12,0xff,0xff,0xff);
-
-# undef ovv
-
- /* enable data input */
- regs->addr_mask = 0xff;
-}
-
-bt478_init_bw_map(regs, plane)
- bt478_padded_regmap_t *regs;
-{
- register int i;
-
- /* Set overlay color registers */
- bt478_overlay(regs, plane);
-
- /* loadup vdac map */
-# define mvv(i,v) { \
- regs->addr_mapwa = i; wbflush(); \
- regs->addr_map = v; wbflush(); \
- regs->addr_map = v; wbflush(); \
- regs->addr_map = v; wbflush();}
-
- for (i = 0; i < 128; i++) mvv(i,0x00);
- for (i = i; i < 256; i++) mvv(i,0xff);
-
-}
-
-bt478_init_color_map( regs, plane)
- bt478_padded_regmap_t *regs;
-{
- register int i;
-
- bt478_overlay(regs, plane);
-
- mvv(0,0);
- mvv(1,0xff);
- mvv(255,0xff);
-
-# undef mvv
-}
-