fade_saver.c revision 12276
1130365Smlaier/*- 2130365Smlaier * Copyright (c) 1995 S�ren Schmidt 3130365Smlaier * All rights reserved. 4130365Smlaier * 5130365Smlaier * Redistribution and use in source and binary forms, with or without 6130365Smlaier * modification, are permitted provided that the following conditions 7130365Smlaier * are met: 8130365Smlaier * 1. Redistributions of source code must retain the above copyright 9130365Smlaier * notice, this list of conditions and the following disclaimer 10130365Smlaier * in this position and unchanged. 11130365Smlaier * 2. Redistributions in binary form must reproduce the above copyright 12130365Smlaier * notice, this list of conditions and the following disclaimer in the 13130365Smlaier * documentation and/or other materials provided with the distribution. 14130365Smlaier * 3. The name of the author may not be used to endorse or promote products 15130365Smlaier * derived from this software withough specific prior written permission 16130365Smlaier * 17130365Smlaier * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18130365Smlaier * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19130365Smlaier * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20130365Smlaier * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21130365Smlaier * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22130365Smlaier * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23130365Smlaier * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24130365Smlaier * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25130365Smlaier * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26130365Smlaier * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27130365Smlaier * 28130365Smlaier * $Id: fade_saver.c,v 1.4 1995/11/13 07:18:48 bde Exp $ 29130365Smlaier */ 30130365Smlaier 31130365Smlaier#include <sys/param.h> 32130365Smlaier#include <sys/systm.h> 33130365Smlaier#include <sys/conf.h> 34130365Smlaier#include <sys/exec.h> 35130365Smlaier#include <sys/sysent.h> 36130365Smlaier#include <sys/lkm.h> 37130365Smlaier#include <sys/errno.h> 38130365Smlaier#include <saver.h> 39130365Smlaier 40130365SmlaierMOD_MISC(fade_saver); 41130365Smlaier 42130365Smlaiervoid (*current_saver)(int blank); 43130365Smlaiervoid (*old_saver)(int blank); 44130365Smlaier 45130365Smlaierstatic void 46130365Smlaierfade_saver(int blank) 47130365Smlaier{ 48130365Smlaier static int count = 0; 49130365Smlaier int i; 50130365Smlaier 51130365Smlaier if (blank) { 52130365Smlaier scrn_blanked = 1; 53130365Smlaier if (count < 64) { 54130365Smlaier outb(PIXMASK, 0xFF); /* no pixelmask */ 55130365Smlaier outb(PALWADR, 0x00); 56130365Smlaier outb(PALDATA, 0); 57130365Smlaier outb(PALDATA, 0); 58130365Smlaier outb(PALDATA, 0); 59130365Smlaier for (i = 3; i < 768; i++) { 60130365Smlaier if (palette[i] - count > 15) 61130365Smlaier outb(PALDATA, palette[i]-count); 62130365Smlaier else 63130365Smlaier outb(PALDATA, 15); 64130365Smlaier } 65130365Smlaier inb(crtc_addr+6); /* reset flip/flop */ 66130365Smlaier outb(ATC, 0x20); /* enable palette */ 67130365Smlaier count++; 68130365Smlaier } 69130365Smlaier } 70130365Smlaier else { 71130365Smlaier load_palette(); 72130365Smlaier count = scrn_blanked = 0; 73130365Smlaier } 74130365Smlaier} 75130365Smlaier 76130365Smlaierstatic int 77130365Smlaierfade_saver_load(struct lkm_table *lkmtp, int cmd) 78130365Smlaier{ 79130365Smlaier (*current_saver)(0); 80130365Smlaier old_saver = current_saver; 81130365Smlaier current_saver = fade_saver; 82130365Smlaier uprintf("fade screen saver installed\n"); 83130365Smlaier return 0; 84130365Smlaier} 85130365Smlaier 86130365Smlaierstatic int 87130365Smlaierfade_saver_unload(struct lkm_table *lkmtp, int cmd) 88130365Smlaier{ 89130365Smlaier (*current_saver)(0); 90130365Smlaier current_saver = old_saver; 91130365Smlaier uprintf("fade screen saver removed\n"); 92130365Smlaier return 0; 93130365Smlaier} 94130365Smlaier 95130365Smlaierint 96130365Smlaierfade_saver_mod(struct lkm_table *lkmtp, int cmd, int ver) 97130365Smlaier{ 98130365Smlaier DISPATCH(lkmtp, cmd, ver, fade_saver_load, fade_saver_unload, 99130365Smlaier lkm_nullcmd); 100130365Smlaier} 101130365Smlaier