Incorporated lots of fixes and suggestions from Bruce and changes to

facilitate the new saver loading/unloading notification interface
in syscons.

daemon_saver:
- M_NOWAIT was wrong, since NULL returns are not handled.  Just use
  M_WAITOK.
- use `ostype' instead of hard-coded "FreeBSD". Now there is no more
  hard-coded string! (But, who will run this screen saver on other
  OS?!)
- put macros and data declarations in a consistent order.
- -DDEAMON_ONLY and -DSHOW_HOSTNAME options added in the previous commit
  are removed. Options of this kind can go stale and no one notices
  because no one uses them. DEAMON_ONLY is just removed. SHOW_HOSTNAME
  is made default.

snake_saver:
- use `ostype' and `osrelease' as in the daemon saver. The string changes
  slightly - there was a hyphen after "FreeBSD"; now there is a space.
  (It is consistent with uname -a, like the daemon server already is.)

all screen savers:
- Use the new add_scrn_saver()/remove_scrn_saver() in syscons.c
  to declare loading/unloading of a screen saver. Removed reference
  to `current_saver' and the variable `old_saver' as they are not
  necessary anymore.
- The blank, fade and green screen savers manipulate VGA registers.
  Module loading should fail for non-VGA cards.
- `scrn_blanked' is consistently treated as a number/counter rather
  than boolean.
- Some savers touch `scp->start' and `scp->end' to force entire screen
  update when stopping themselves. This is unnecessary now because
  syscons.c takes care of that.
- cleared up many unused or unnecessary #include statements.
- Removed -DLKM from Makefiles.

YOU NEED TO RECOMPILE BOTH SCREEN SAVERS AND KERNEL AS OF THIS CHANGE.
This commit is contained in:
yokota 1997-07-15 14:49:39 +00:00
parent 56b7c76d79
commit b00b16c7e8
32 changed files with 320 additions and 452 deletions

View File

@ -1,9 +1,9 @@
# $Id$
# $Id: Makefile,v 1.5 1997/02/22 12:49:02 peter Exp $
KMOD= blank_saver_mod
SRCS= blank_saver.c
NOMAN=
CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
.include <bsd.kmod.mk>

View File

@ -25,23 +25,21 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: blank_saver.c,v 1.8 1997/02/22 12:49:06 peter Exp $
* $Id: blank_saver.c,v 1.9 1997/04/06 10:48:10 dufault Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/exec.h>
#include <sys/sysent.h>
#include <sys/lkm.h>
#include <sys/errno.h>
#include <i386/isa/isa.h>
#include <saver.h>
MOD_MISC(blank_saver);
void (*current_saver)(int blank);
void (*old_saver)(int blank);
static void
blank_saver(int blank)
{
@ -61,18 +59,15 @@ blank_saver(int blank)
static int
blank_saver_load(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
old_saver = current_saver;
current_saver = blank_saver;
return 0;
if (!crtc_vga)
return EINVAL;
return add_scrn_saver(blank_saver);
}
static int
blank_saver_unload(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
current_saver = old_saver;
return 0;
return remove_scrn_saver(blank_saver);
}
int

View File

@ -1,15 +1,9 @@
# $Id: Makefile,v 1.1 1997/05/21 14:18:26 yokota Exp $
# $Id: Makefile,v 1.2 1997/06/24 12:43:18 yokota Exp $
KMOD= daemon_saver_mod
SRCS= daemon_saver.c
NOMAN=
CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
# Omits the bouncing message text and shows only the daemon.
#CFLAGS+= -DDAEMON_ONLY
# Includes the host name in the message text.
#CFLAGS+= -DSHOW_HOSTNAME
CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
.include <bsd.kmod.mk>

View File

@ -25,28 +25,22 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: daemon_saver.c,v 1.4 1997/05/26 01:02:41 yokota Exp $
* $Id: daemon_saver.c,v 1.5 1997/06/24 12:43:18 yokota Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/exec.h>
#include <sys/sysent.h>
#include <sys/lkm.h>
#include <sys/errno.h>
#include <sys/malloc.h>
#include <sys/kernel.h>
#include <sys/sysctl.h>
#include <sys/malloc.h>
#include <machine/md_var.h>
#include <i386/include/pc/display.h>
#include "saver.h"
MOD_MISC(daemon_saver);
void (*current_saver)(int blank);
void (*old_saver)(int blank);
#include <saver.h>
#define CONSOLE_VECT(x, y) \
*((u_short*)(Crtat + (y)*cur_console->xsize + (x)))
@ -54,10 +48,10 @@ void (*old_saver)(int blank);
#define DAEMON_MAX_WIDTH 32
#define DAEMON_MAX_HEIGHT 19
/*
* Define this to disable the bouncing text.
*/
#undef DAEMON_ONLY
MOD_MISC(daemon_saver);
static char *message;
static int messagelen;
/* Who is the author of this ASCII pic? */
@ -152,10 +146,6 @@ draw_daemon(int xpos, int ypos, int dxdir)
}
}
#ifndef DAEMON_ONLY
static char *message;
static int messagelen;
static void
draw_string(int xpos, int ypos, char *s, int len)
{
@ -165,15 +155,12 @@ draw_string(int xpos, int ypos, char *s, int len)
CONSOLE_VECT(xpos + x, ypos) =
scr_map[s[x]]|(FG_LIGHTGREEN|BG_BLACK)<<8;
}
#endif
static void
daemon_saver(int blank)
{
#ifndef DAEMON_ONLY
static int txpos = 10, typos = 10;
static int txdir = -1, tydir = -1;
#endif
static int dxpos = 0, dypos = 0;
static int dxdir = 1, dydir = 1;
static int moved_daemon = 0;
@ -204,7 +191,6 @@ daemon_saver(int blank)
dxpos += dxdir; dypos += dydir;
}
#ifndef DAEMON_ONLY
if (txdir > 0) {
if (txpos == scp->xsize - messagelen)
txdir = -1;
@ -218,18 +204,13 @@ daemon_saver(int blank)
if (typos == 0) tydir = 1;
}
txpos += txdir; typos += tydir;
#endif
draw_daemon(dxpos, dypos, dxdir);
#ifndef DAEMON_ONLY
draw_string(txpos, typos, (char *)message, messagelen);
#endif
} else {
if (scrn_blanked) {
if (scrn_blanked > 0) {
set_border(scp->border);
scrn_blanked = 0;
scp->start = 0;
scp->end = scp->xsize * scp->ysize;
}
}
}
@ -237,36 +218,28 @@ daemon_saver(int blank)
static int
daemon_saver_load(struct lkm_table *lkmtp, int cmd)
{
#ifdef SHOW_HOSTNAME
static const char *freebsd = " - FreeBSD ";
#else
static const char *freebsd = "FreeBSD ";
#endif /* SHOW_HOSTNAME */
int err;
(*current_saver)(0);
old_saver = current_saver;
current_saver = daemon_saver;
messagelen = strlen(hostname) + 3 + strlen(ostype) + 1 +
strlen(osrelease);
message = malloc(messagelen + 1, M_DEVBUF, M_WAITOK);
sprintf(message, "%s - %s %s", hostname, ostype, osrelease);
#ifdef SHOW_HOSTNAME
messagelen = strlen(hostname) + strlen(freebsd) + strlen(osrelease);
message = malloc(messagelen + 1, M_DEVBUF, M_NOWAIT);
sprintf(message, "%s%s%s", hostname, freebsd, osrelease);
#else
messagelen = strlen(freebsd) + strlen(osrelease);
message = malloc(messagelen + 1, M_DEVBUF, M_NOWAIT);
sprintf(message, "%s%s", freebsd, osrelease);
#endif /* SHOW_HOSTNAME */
return 0;
err = add_scrn_saver(daemon_saver);
if (err != 0)
free(message, M_DEVBUF);
return err;
}
static int
daemon_saver_unload(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
current_saver = old_saver;
int err;
free(message, M_DEVBUF);
return 0;
err = remove_scrn_saver(daemon_saver);
if (err == 0)
free(message, M_DEVBUF);
return err;
}
int

View File

@ -1,9 +1,9 @@
# $Id$
# $Id: Makefile,v 1.5 1997/02/22 12:49:09 peter Exp $
KMOD= fade_saver_mod
SRCS= fade_saver.c
NOMAN=
CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
.include <bsd.kmod.mk>

View File

@ -25,23 +25,21 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: fade_saver.c,v 1.9 1997/02/22 12:49:10 peter Exp $
* $Id: fade_saver.c,v 1.10 1997/04/06 10:48:18 dufault Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/exec.h>
#include <sys/sysent.h>
#include <sys/lkm.h>
#include <sys/errno.h>
#include <i386/isa/isa.h>
#include <saver.h>
MOD_MISC(fade_saver);
void (*current_saver)(int blank);
void (*old_saver)(int blank);
static void
fade_saver(int blank)
{
@ -76,18 +74,15 @@ fade_saver(int blank)
static int
fade_saver_load(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
old_saver = current_saver;
current_saver = fade_saver;
return 0;
if (!crtc_vga)
return EINVAL;
return add_scrn_saver(fade_saver);
}
static int
fade_saver_unload(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
current_saver = old_saver;
return 0;
return remove_scrn_saver(fade_saver);
}
int

View File

@ -1,9 +1,9 @@
# $Id$
# $Id: Makefile,v 1.5 1997/02/22 12:49:13 peter Exp $
KMOD= green_saver_mod
SRCS= green_saver.c
NOMAN=
CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
.include <bsd.kmod.mk>

View File

@ -25,23 +25,21 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: green_saver.c,v 1.8 1997/02/22 12:49:15 peter Exp $
* $Id: green_saver.c,v 1.9 1997/04/06 10:49:13 dufault Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/exec.h>
#include <sys/sysent.h>
#include <sys/lkm.h>
#include <sys/errno.h>
#include <i386/isa/isa.h>
#include <saver.h>
MOD_MISC(green_saver);
void (*current_saver)(int blank);
void (*old_saver)(int blank);
static void
green_saver(int blank)
{
@ -65,18 +63,15 @@ green_saver(int blank)
static int
green_saver_load(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
old_saver = current_saver;
current_saver = green_saver;
return 0;
if (!crtc_vga)
return EINVAL;
return add_scrn_saver(green_saver);
}
static int
green_saver_unload(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
current_saver = old_saver;
return 0;
return remove_scrn_saver(green_saver);
}
int

View File

@ -25,18 +25,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: saver.h,v 1.7 1997/02/22 12:49:00 peter Exp $
* $Id: saver.h,v 1.8 1997/05/21 14:18:00 yokota Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/tty.h>
#include <i386/include/pc/display.h>
#include <i386/include/console.h>
#include <i386/include/apm_bios.h>
#include <i386/i386/cons.h>
#include <i386/isa/isa.h>
#include <i386/isa/isa_device.h>
#include <machine/apm_bios.h>
#include <machine/console.h>
#include <i386/isa/syscons.h>
extern scr_stat *cur_console;

View File

@ -1,9 +1,9 @@
# $Id$
# $Id: Makefile,v 1.5 1997/02/22 12:49:18 peter Exp $
KMOD= snake_saver_mod
SRCS= snake_saver.c
NOMAN=
CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
.include <bsd.kmod.mk>

View File

@ -25,47 +25,52 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: snake_saver.c,v 1.13 1997/02/22 12:49:19 peter Exp $
* $Id: snake_saver.c,v 1.14 1997/04/06 10:49:22 dufault Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/exec.h>
#include <sys/sysent.h>
#include <sys/lkm.h>
#include <sys/errno.h>
#include <sys/malloc.h>
#include <sys/kernel.h>
#include <sys/sysctl.h>
#include <machine/md_var.h>
#include <i386/include/pc/display.h>
#include "saver.h"
#include <saver.h>
MOD_MISC(snake_saver);
void (*current_saver)(int blank);
void (*old_saver)(int blank);
static char *message;
static u_char **messagep;
static int messagelen;
static void
snake_saver(int blank)
{
const char saves[] = {"FreeBSD-3.0-CURRENT"};
static u_char *savs[sizeof(saves)-1];
static int dirx, diry;
int f;
scr_stat *scp = cur_console;
/* XXX hack for minimal changes. */
#define save message
#define savs messagep
if (blank) {
if (!scrn_blanked) {
if (scrn_blanked <= 0) {
fillw((FG_LIGHTGREY|BG_BLACK)<<8 | scr_map[0x20],
Crtat, scp->xsize * scp->ysize);
set_border(0);
dirx = (scp->xpos ? 1 : -1);
diry = (scp->ypos ?
scp->xsize : -scp->xsize);
for (f=0; f< sizeof(saves)-1; f++)
for (f=0; f< messagelen; f++)
savs[f] = (u_char *)Crtat + 2 *
(scp->xpos+scp->ypos*scp->xsize);
*(savs[0]) = scr_map[*saves];
*(savs[0]) = scr_map[*save];
f = scp->ysize * scp->xsize + 5;
outb(crtc_addr, 14);
outb(crtc_addr+1, f >> 8);
@ -76,8 +81,8 @@ snake_saver(int blank)
if (scrn_blanked++ < 4)
return;
scrn_blanked = 1;
*(savs[sizeof(saves)-2]) = scr_map[0x20];
for (f=sizeof(saves)-2; f > 0; f--)
*(savs[messagelen-1]) = scr_map[0x20];
for (f=messagelen-1; f > 0; f--)
savs[f] = savs[f-1];
f = (savs[0] - (u_char *)Crtat) / 2;
if ((f % scp->xsize) == 0 ||
@ -89,15 +94,13 @@ snake_saver(int blank)
(random() % 20) == 0)
diry = -diry;
savs[0] += 2*dirx + 2*diry;
for (f=sizeof(saves)-2; f>=0; f--)
*(savs[f]) = scr_map[saves[f]];
for (f=messagelen-1; f>=0; f--)
*(savs[f]) = scr_map[save[f]];
}
else {
if (scrn_blanked) {
if (scrn_blanked > 0) {
set_border(scp->border);
scrn_blanked = 0;
scp->start = 0;
scp->end = scp->xsize * scp->ysize;
}
}
}
@ -105,18 +108,32 @@ snake_saver(int blank)
static int
snake_saver_load(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
old_saver = current_saver;
current_saver = snake_saver;
return 0;
int err;
messagelen = strlen(ostype) + 1 + strlen(osrelease);
message = malloc(messagelen + 1, M_DEVBUF, M_WAITOK);
sprintf(message, "%s %s", ostype, osrelease);
messagep = malloc(messagelen * sizeof *messagep, M_DEVBUF, M_WAITOK);
err = add_scrn_saver(snake_saver);
if (err != 0) {
free(message, M_DEVBUF);
free(messagep, M_DEVBUF);
}
return err;
}
static int
snake_saver_unload(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
current_saver = old_saver;
return 0;
int err;
err = remove_scrn_saver(snake_saver);
if (err == 0) {
free(message, M_DEVBUF);
free(messagep, M_DEVBUF);
}
return err;
}
int

View File

@ -1,9 +1,9 @@
# $Id$
# $Id: Makefile,v 1.5 1997/02/22 12:49:21 peter Exp $
KMOD= star_saver_mod
SRCS= star_saver.c
NOMAN=
CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
.include <bsd.kmod.mk>

View File

@ -25,26 +25,22 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: star_saver.c,v 1.10 1997/02/22 12:49:22 peter Exp $
* $Id: star_saver.c,v 1.11 1997/04/06 11:07:01 dufault Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/exec.h>
#include <sys/sysent.h>
#include <sys/lkm.h>
#include <sys/errno.h>
#include <machine/md_var.h>
#include <i386/include/pc/display.h>
#include "saver.h"
#include <saver.h>
MOD_MISC(star_saver);
void (*current_saver)(int blank);
void (*old_saver)(int blank);
#define NUM_STARS 50
/*
@ -62,7 +58,7 @@ star_saver(int blank)
static u_short stars[NUM_STARS][2];
if (blank) {
if (!scrn_blanked) {
if (scrn_blanked <= 0) {
scrn_blanked = 1;
fillw((FG_LIGHTGREY|BG_BLACK)<<8|scr_map[0x20], Crtat,
scp->xsize * scp->ysize);
@ -83,11 +79,9 @@ star_saver(int blank)
}
}
else {
if (scrn_blanked) {
if (scrn_blanked > 0) {
set_border(scp->border);
scrn_blanked = 0;
scp->start = 0;
scp->end = scp->xsize * scp->ysize;
}
}
}
@ -95,18 +89,13 @@ star_saver(int blank)
static int
star_saver_load(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
old_saver = current_saver;
current_saver = star_saver;
return 0;
return add_scrn_saver(star_saver);
}
static int
star_saver_unload(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
current_saver = old_saver;
return 0;
return remove_scrn_saver(star_saver);
}
int

View File

@ -25,23 +25,21 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: blank_saver.c,v 1.8 1997/02/22 12:49:06 peter Exp $
* $Id: blank_saver.c,v 1.9 1997/04/06 10:48:10 dufault Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/exec.h>
#include <sys/sysent.h>
#include <sys/lkm.h>
#include <sys/errno.h>
#include <i386/isa/isa.h>
#include <saver.h>
MOD_MISC(blank_saver);
void (*current_saver)(int blank);
void (*old_saver)(int blank);
static void
blank_saver(int blank)
{
@ -61,18 +59,15 @@ blank_saver(int blank)
static int
blank_saver_load(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
old_saver = current_saver;
current_saver = blank_saver;
return 0;
if (!crtc_vga)
return EINVAL;
return add_scrn_saver(blank_saver);
}
static int
blank_saver_unload(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
current_saver = old_saver;
return 0;
return remove_scrn_saver(blank_saver);
}
int

View File

@ -25,28 +25,22 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: daemon_saver.c,v 1.4 1997/05/26 01:02:41 yokota Exp $
* $Id: daemon_saver.c,v 1.5 1997/06/24 12:43:18 yokota Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/exec.h>
#include <sys/sysent.h>
#include <sys/lkm.h>
#include <sys/errno.h>
#include <sys/malloc.h>
#include <sys/kernel.h>
#include <sys/sysctl.h>
#include <sys/malloc.h>
#include <machine/md_var.h>
#include <i386/include/pc/display.h>
#include "saver.h"
MOD_MISC(daemon_saver);
void (*current_saver)(int blank);
void (*old_saver)(int blank);
#include <saver.h>
#define CONSOLE_VECT(x, y) \
*((u_short*)(Crtat + (y)*cur_console->xsize + (x)))
@ -54,10 +48,10 @@ void (*old_saver)(int blank);
#define DAEMON_MAX_WIDTH 32
#define DAEMON_MAX_HEIGHT 19
/*
* Define this to disable the bouncing text.
*/
#undef DAEMON_ONLY
MOD_MISC(daemon_saver);
static char *message;
static int messagelen;
/* Who is the author of this ASCII pic? */
@ -152,10 +146,6 @@ draw_daemon(int xpos, int ypos, int dxdir)
}
}
#ifndef DAEMON_ONLY
static char *message;
static int messagelen;
static void
draw_string(int xpos, int ypos, char *s, int len)
{
@ -165,15 +155,12 @@ draw_string(int xpos, int ypos, char *s, int len)
CONSOLE_VECT(xpos + x, ypos) =
scr_map[s[x]]|(FG_LIGHTGREEN|BG_BLACK)<<8;
}
#endif
static void
daemon_saver(int blank)
{
#ifndef DAEMON_ONLY
static int txpos = 10, typos = 10;
static int txdir = -1, tydir = -1;
#endif
static int dxpos = 0, dypos = 0;
static int dxdir = 1, dydir = 1;
static int moved_daemon = 0;
@ -204,7 +191,6 @@ daemon_saver(int blank)
dxpos += dxdir; dypos += dydir;
}
#ifndef DAEMON_ONLY
if (txdir > 0) {
if (txpos == scp->xsize - messagelen)
txdir = -1;
@ -218,18 +204,13 @@ daemon_saver(int blank)
if (typos == 0) tydir = 1;
}
txpos += txdir; typos += tydir;
#endif
draw_daemon(dxpos, dypos, dxdir);
#ifndef DAEMON_ONLY
draw_string(txpos, typos, (char *)message, messagelen);
#endif
} else {
if (scrn_blanked) {
if (scrn_blanked > 0) {
set_border(scp->border);
scrn_blanked = 0;
scp->start = 0;
scp->end = scp->xsize * scp->ysize;
}
}
}
@ -237,36 +218,28 @@ daemon_saver(int blank)
static int
daemon_saver_load(struct lkm_table *lkmtp, int cmd)
{
#ifdef SHOW_HOSTNAME
static const char *freebsd = " - FreeBSD ";
#else
static const char *freebsd = "FreeBSD ";
#endif /* SHOW_HOSTNAME */
int err;
(*current_saver)(0);
old_saver = current_saver;
current_saver = daemon_saver;
messagelen = strlen(hostname) + 3 + strlen(ostype) + 1 +
strlen(osrelease);
message = malloc(messagelen + 1, M_DEVBUF, M_WAITOK);
sprintf(message, "%s - %s %s", hostname, ostype, osrelease);
#ifdef SHOW_HOSTNAME
messagelen = strlen(hostname) + strlen(freebsd) + strlen(osrelease);
message = malloc(messagelen + 1, M_DEVBUF, M_NOWAIT);
sprintf(message, "%s%s%s", hostname, freebsd, osrelease);
#else
messagelen = strlen(freebsd) + strlen(osrelease);
message = malloc(messagelen + 1, M_DEVBUF, M_NOWAIT);
sprintf(message, "%s%s", freebsd, osrelease);
#endif /* SHOW_HOSTNAME */
return 0;
err = add_scrn_saver(daemon_saver);
if (err != 0)
free(message, M_DEVBUF);
return err;
}
static int
daemon_saver_unload(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
current_saver = old_saver;
int err;
free(message, M_DEVBUF);
return 0;
err = remove_scrn_saver(daemon_saver);
if (err == 0)
free(message, M_DEVBUF);
return err;
}
int

View File

@ -25,23 +25,21 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: fade_saver.c,v 1.9 1997/02/22 12:49:10 peter Exp $
* $Id: fade_saver.c,v 1.10 1997/04/06 10:48:18 dufault Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/exec.h>
#include <sys/sysent.h>
#include <sys/lkm.h>
#include <sys/errno.h>
#include <i386/isa/isa.h>
#include <saver.h>
MOD_MISC(fade_saver);
void (*current_saver)(int blank);
void (*old_saver)(int blank);
static void
fade_saver(int blank)
{
@ -76,18 +74,15 @@ fade_saver(int blank)
static int
fade_saver_load(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
old_saver = current_saver;
current_saver = fade_saver;
return 0;
if (!crtc_vga)
return EINVAL;
return add_scrn_saver(fade_saver);
}
static int
fade_saver_unload(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
current_saver = old_saver;
return 0;
return remove_scrn_saver(fade_saver);
}
int

View File

@ -25,23 +25,21 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: green_saver.c,v 1.8 1997/02/22 12:49:15 peter Exp $
* $Id: green_saver.c,v 1.9 1997/04/06 10:49:13 dufault Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/exec.h>
#include <sys/sysent.h>
#include <sys/lkm.h>
#include <sys/errno.h>
#include <i386/isa/isa.h>
#include <saver.h>
MOD_MISC(green_saver);
void (*current_saver)(int blank);
void (*old_saver)(int blank);
static void
green_saver(int blank)
{
@ -65,18 +63,15 @@ green_saver(int blank)
static int
green_saver_load(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
old_saver = current_saver;
current_saver = green_saver;
return 0;
if (!crtc_vga)
return EINVAL;
return add_scrn_saver(green_saver);
}
static int
green_saver_unload(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
current_saver = old_saver;
return 0;
return remove_scrn_saver(green_saver);
}
int

View File

@ -25,47 +25,52 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: snake_saver.c,v 1.13 1997/02/22 12:49:19 peter Exp $
* $Id: snake_saver.c,v 1.14 1997/04/06 10:49:22 dufault Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/exec.h>
#include <sys/sysent.h>
#include <sys/lkm.h>
#include <sys/errno.h>
#include <sys/malloc.h>
#include <sys/kernel.h>
#include <sys/sysctl.h>
#include <machine/md_var.h>
#include <i386/include/pc/display.h>
#include "saver.h"
#include <saver.h>
MOD_MISC(snake_saver);
void (*current_saver)(int blank);
void (*old_saver)(int blank);
static char *message;
static u_char **messagep;
static int messagelen;
static void
snake_saver(int blank)
{
const char saves[] = {"FreeBSD-3.0-CURRENT"};
static u_char *savs[sizeof(saves)-1];
static int dirx, diry;
int f;
scr_stat *scp = cur_console;
/* XXX hack for minimal changes. */
#define save message
#define savs messagep
if (blank) {
if (!scrn_blanked) {
if (scrn_blanked <= 0) {
fillw((FG_LIGHTGREY|BG_BLACK)<<8 | scr_map[0x20],
Crtat, scp->xsize * scp->ysize);
set_border(0);
dirx = (scp->xpos ? 1 : -1);
diry = (scp->ypos ?
scp->xsize : -scp->xsize);
for (f=0; f< sizeof(saves)-1; f++)
for (f=0; f< messagelen; f++)
savs[f] = (u_char *)Crtat + 2 *
(scp->xpos+scp->ypos*scp->xsize);
*(savs[0]) = scr_map[*saves];
*(savs[0]) = scr_map[*save];
f = scp->ysize * scp->xsize + 5;
outb(crtc_addr, 14);
outb(crtc_addr+1, f >> 8);
@ -76,8 +81,8 @@ snake_saver(int blank)
if (scrn_blanked++ < 4)
return;
scrn_blanked = 1;
*(savs[sizeof(saves)-2]) = scr_map[0x20];
for (f=sizeof(saves)-2; f > 0; f--)
*(savs[messagelen-1]) = scr_map[0x20];
for (f=messagelen-1; f > 0; f--)
savs[f] = savs[f-1];
f = (savs[0] - (u_char *)Crtat) / 2;
if ((f % scp->xsize) == 0 ||
@ -89,15 +94,13 @@ snake_saver(int blank)
(random() % 20) == 0)
diry = -diry;
savs[0] += 2*dirx + 2*diry;
for (f=sizeof(saves)-2; f>=0; f--)
*(savs[f]) = scr_map[saves[f]];
for (f=messagelen-1; f>=0; f--)
*(savs[f]) = scr_map[save[f]];
}
else {
if (scrn_blanked) {
if (scrn_blanked > 0) {
set_border(scp->border);
scrn_blanked = 0;
scp->start = 0;
scp->end = scp->xsize * scp->ysize;
}
}
}
@ -105,18 +108,32 @@ snake_saver(int blank)
static int
snake_saver_load(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
old_saver = current_saver;
current_saver = snake_saver;
return 0;
int err;
messagelen = strlen(ostype) + 1 + strlen(osrelease);
message = malloc(messagelen + 1, M_DEVBUF, M_WAITOK);
sprintf(message, "%s %s", ostype, osrelease);
messagep = malloc(messagelen * sizeof *messagep, M_DEVBUF, M_WAITOK);
err = add_scrn_saver(snake_saver);
if (err != 0) {
free(message, M_DEVBUF);
free(messagep, M_DEVBUF);
}
return err;
}
static int
snake_saver_unload(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
current_saver = old_saver;
return 0;
int err;
err = remove_scrn_saver(snake_saver);
if (err == 0) {
free(message, M_DEVBUF);
free(messagep, M_DEVBUF);
}
return err;
}
int

View File

@ -25,26 +25,22 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: star_saver.c,v 1.10 1997/02/22 12:49:22 peter Exp $
* $Id: star_saver.c,v 1.11 1997/04/06 11:07:01 dufault Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/exec.h>
#include <sys/sysent.h>
#include <sys/lkm.h>
#include <sys/errno.h>
#include <machine/md_var.h>
#include <i386/include/pc/display.h>
#include "saver.h"
#include <saver.h>
MOD_MISC(star_saver);
void (*current_saver)(int blank);
void (*old_saver)(int blank);
#define NUM_STARS 50
/*
@ -62,7 +58,7 @@ star_saver(int blank)
static u_short stars[NUM_STARS][2];
if (blank) {
if (!scrn_blanked) {
if (scrn_blanked <= 0) {
scrn_blanked = 1;
fillw((FG_LIGHTGREY|BG_BLACK)<<8|scr_map[0x20], Crtat,
scp->xsize * scp->ysize);
@ -83,11 +79,9 @@ star_saver(int blank)
}
}
else {
if (scrn_blanked) {
if (scrn_blanked > 0) {
set_border(scp->border);
scrn_blanked = 0;
scp->start = 0;
scp->end = scp->xsize * scp->ysize;
}
}
}
@ -95,18 +89,13 @@ star_saver(int blank)
static int
star_saver_load(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
old_saver = current_saver;
current_saver = star_saver;
return 0;
return add_scrn_saver(star_saver);
}
static int
star_saver_unload(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
current_saver = old_saver;
return 0;
return remove_scrn_saver(star_saver);
}
int

View File

@ -1,9 +1,9 @@
# $Id$
# $Id: Makefile,v 1.5 1997/02/22 12:49:02 peter Exp $
KMOD= blank_saver_mod
SRCS= blank_saver.c
NOMAN=
CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
.include <bsd.kmod.mk>

View File

@ -25,23 +25,21 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: blank_saver.c,v 1.8 1997/02/22 12:49:06 peter Exp $
* $Id: blank_saver.c,v 1.9 1997/04/06 10:48:10 dufault Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/exec.h>
#include <sys/sysent.h>
#include <sys/lkm.h>
#include <sys/errno.h>
#include <i386/isa/isa.h>
#include <saver.h>
MOD_MISC(blank_saver);
void (*current_saver)(int blank);
void (*old_saver)(int blank);
static void
blank_saver(int blank)
{
@ -61,18 +59,15 @@ blank_saver(int blank)
static int
blank_saver_load(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
old_saver = current_saver;
current_saver = blank_saver;
return 0;
if (!crtc_vga)
return EINVAL;
return add_scrn_saver(blank_saver);
}
static int
blank_saver_unload(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
current_saver = old_saver;
return 0;
return remove_scrn_saver(blank_saver);
}
int

View File

@ -1,15 +1,9 @@
# $Id: Makefile,v 1.1 1997/05/21 14:18:26 yokota Exp $
# $Id: Makefile,v 1.2 1997/06/24 12:43:18 yokota Exp $
KMOD= daemon_saver_mod
SRCS= daemon_saver.c
NOMAN=
CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
# Omits the bouncing message text and shows only the daemon.
#CFLAGS+= -DDAEMON_ONLY
# Includes the host name in the message text.
#CFLAGS+= -DSHOW_HOSTNAME
CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
.include <bsd.kmod.mk>

View File

@ -25,28 +25,22 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: daemon_saver.c,v 1.4 1997/05/26 01:02:41 yokota Exp $
* $Id: daemon_saver.c,v 1.5 1997/06/24 12:43:18 yokota Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/exec.h>
#include <sys/sysent.h>
#include <sys/lkm.h>
#include <sys/errno.h>
#include <sys/malloc.h>
#include <sys/kernel.h>
#include <sys/sysctl.h>
#include <sys/malloc.h>
#include <machine/md_var.h>
#include <i386/include/pc/display.h>
#include "saver.h"
MOD_MISC(daemon_saver);
void (*current_saver)(int blank);
void (*old_saver)(int blank);
#include <saver.h>
#define CONSOLE_VECT(x, y) \
*((u_short*)(Crtat + (y)*cur_console->xsize + (x)))
@ -54,10 +48,10 @@ void (*old_saver)(int blank);
#define DAEMON_MAX_WIDTH 32
#define DAEMON_MAX_HEIGHT 19
/*
* Define this to disable the bouncing text.
*/
#undef DAEMON_ONLY
MOD_MISC(daemon_saver);
static char *message;
static int messagelen;
/* Who is the author of this ASCII pic? */
@ -152,10 +146,6 @@ draw_daemon(int xpos, int ypos, int dxdir)
}
}
#ifndef DAEMON_ONLY
static char *message;
static int messagelen;
static void
draw_string(int xpos, int ypos, char *s, int len)
{
@ -165,15 +155,12 @@ draw_string(int xpos, int ypos, char *s, int len)
CONSOLE_VECT(xpos + x, ypos) =
scr_map[s[x]]|(FG_LIGHTGREEN|BG_BLACK)<<8;
}
#endif
static void
daemon_saver(int blank)
{
#ifndef DAEMON_ONLY
static int txpos = 10, typos = 10;
static int txdir = -1, tydir = -1;
#endif
static int dxpos = 0, dypos = 0;
static int dxdir = 1, dydir = 1;
static int moved_daemon = 0;
@ -204,7 +191,6 @@ daemon_saver(int blank)
dxpos += dxdir; dypos += dydir;
}
#ifndef DAEMON_ONLY
if (txdir > 0) {
if (txpos == scp->xsize - messagelen)
txdir = -1;
@ -218,18 +204,13 @@ daemon_saver(int blank)
if (typos == 0) tydir = 1;
}
txpos += txdir; typos += tydir;
#endif
draw_daemon(dxpos, dypos, dxdir);
#ifndef DAEMON_ONLY
draw_string(txpos, typos, (char *)message, messagelen);
#endif
} else {
if (scrn_blanked) {
if (scrn_blanked > 0) {
set_border(scp->border);
scrn_blanked = 0;
scp->start = 0;
scp->end = scp->xsize * scp->ysize;
}
}
}
@ -237,36 +218,28 @@ daemon_saver(int blank)
static int
daemon_saver_load(struct lkm_table *lkmtp, int cmd)
{
#ifdef SHOW_HOSTNAME
static const char *freebsd = " - FreeBSD ";
#else
static const char *freebsd = "FreeBSD ";
#endif /* SHOW_HOSTNAME */
int err;
(*current_saver)(0);
old_saver = current_saver;
current_saver = daemon_saver;
messagelen = strlen(hostname) + 3 + strlen(ostype) + 1 +
strlen(osrelease);
message = malloc(messagelen + 1, M_DEVBUF, M_WAITOK);
sprintf(message, "%s - %s %s", hostname, ostype, osrelease);
#ifdef SHOW_HOSTNAME
messagelen = strlen(hostname) + strlen(freebsd) + strlen(osrelease);
message = malloc(messagelen + 1, M_DEVBUF, M_NOWAIT);
sprintf(message, "%s%s%s", hostname, freebsd, osrelease);
#else
messagelen = strlen(freebsd) + strlen(osrelease);
message = malloc(messagelen + 1, M_DEVBUF, M_NOWAIT);
sprintf(message, "%s%s", freebsd, osrelease);
#endif /* SHOW_HOSTNAME */
return 0;
err = add_scrn_saver(daemon_saver);
if (err != 0)
free(message, M_DEVBUF);
return err;
}
static int
daemon_saver_unload(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
current_saver = old_saver;
int err;
free(message, M_DEVBUF);
return 0;
err = remove_scrn_saver(daemon_saver);
if (err == 0)
free(message, M_DEVBUF);
return err;
}
int

View File

@ -1,9 +1,9 @@
# $Id$
# $Id: Makefile,v 1.5 1997/02/22 12:49:09 peter Exp $
KMOD= fade_saver_mod
SRCS= fade_saver.c
NOMAN=
CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
.include <bsd.kmod.mk>

View File

@ -25,23 +25,21 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: fade_saver.c,v 1.9 1997/02/22 12:49:10 peter Exp $
* $Id: fade_saver.c,v 1.10 1997/04/06 10:48:18 dufault Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/exec.h>
#include <sys/sysent.h>
#include <sys/lkm.h>
#include <sys/errno.h>
#include <i386/isa/isa.h>
#include <saver.h>
MOD_MISC(fade_saver);
void (*current_saver)(int blank);
void (*old_saver)(int blank);
static void
fade_saver(int blank)
{
@ -76,18 +74,15 @@ fade_saver(int blank)
static int
fade_saver_load(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
old_saver = current_saver;
current_saver = fade_saver;
return 0;
if (!crtc_vga)
return EINVAL;
return add_scrn_saver(fade_saver);
}
static int
fade_saver_unload(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
current_saver = old_saver;
return 0;
return remove_scrn_saver(fade_saver);
}
int

View File

@ -1,9 +1,9 @@
# $Id$
# $Id: Makefile,v 1.5 1997/02/22 12:49:13 peter Exp $
KMOD= green_saver_mod
SRCS= green_saver.c
NOMAN=
CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
.include <bsd.kmod.mk>

View File

@ -25,23 +25,21 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: green_saver.c,v 1.8 1997/02/22 12:49:15 peter Exp $
* $Id: green_saver.c,v 1.9 1997/04/06 10:49:13 dufault Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/exec.h>
#include <sys/sysent.h>
#include <sys/lkm.h>
#include <sys/errno.h>
#include <i386/isa/isa.h>
#include <saver.h>
MOD_MISC(green_saver);
void (*current_saver)(int blank);
void (*old_saver)(int blank);
static void
green_saver(int blank)
{
@ -65,18 +63,15 @@ green_saver(int blank)
static int
green_saver_load(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
old_saver = current_saver;
current_saver = green_saver;
return 0;
if (!crtc_vga)
return EINVAL;
return add_scrn_saver(green_saver);
}
static int
green_saver_unload(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
current_saver = old_saver;
return 0;
return remove_scrn_saver(green_saver);
}
int

View File

@ -25,18 +25,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: saver.h,v 1.7 1997/02/22 12:49:00 peter Exp $
* $Id: saver.h,v 1.8 1997/05/21 14:18:00 yokota Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/tty.h>
#include <i386/include/pc/display.h>
#include <i386/include/console.h>
#include <i386/include/apm_bios.h>
#include <i386/i386/cons.h>
#include <i386/isa/isa.h>
#include <i386/isa/isa_device.h>
#include <machine/apm_bios.h>
#include <machine/console.h>
#include <i386/isa/syscons.h>
extern scr_stat *cur_console;

View File

@ -1,9 +1,9 @@
# $Id$
# $Id: Makefile,v 1.5 1997/02/22 12:49:18 peter Exp $
KMOD= snake_saver_mod
SRCS= snake_saver.c
NOMAN=
CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
.include <bsd.kmod.mk>

View File

@ -25,47 +25,52 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: snake_saver.c,v 1.13 1997/02/22 12:49:19 peter Exp $
* $Id: snake_saver.c,v 1.14 1997/04/06 10:49:22 dufault Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/exec.h>
#include <sys/sysent.h>
#include <sys/lkm.h>
#include <sys/errno.h>
#include <sys/malloc.h>
#include <sys/kernel.h>
#include <sys/sysctl.h>
#include <machine/md_var.h>
#include <i386/include/pc/display.h>
#include "saver.h"
#include <saver.h>
MOD_MISC(snake_saver);
void (*current_saver)(int blank);
void (*old_saver)(int blank);
static char *message;
static u_char **messagep;
static int messagelen;
static void
snake_saver(int blank)
{
const char saves[] = {"FreeBSD-3.0-CURRENT"};
static u_char *savs[sizeof(saves)-1];
static int dirx, diry;
int f;
scr_stat *scp = cur_console;
/* XXX hack for minimal changes. */
#define save message
#define savs messagep
if (blank) {
if (!scrn_blanked) {
if (scrn_blanked <= 0) {
fillw((FG_LIGHTGREY|BG_BLACK)<<8 | scr_map[0x20],
Crtat, scp->xsize * scp->ysize);
set_border(0);
dirx = (scp->xpos ? 1 : -1);
diry = (scp->ypos ?
scp->xsize : -scp->xsize);
for (f=0; f< sizeof(saves)-1; f++)
for (f=0; f< messagelen; f++)
savs[f] = (u_char *)Crtat + 2 *
(scp->xpos+scp->ypos*scp->xsize);
*(savs[0]) = scr_map[*saves];
*(savs[0]) = scr_map[*save];
f = scp->ysize * scp->xsize + 5;
outb(crtc_addr, 14);
outb(crtc_addr+1, f >> 8);
@ -76,8 +81,8 @@ snake_saver(int blank)
if (scrn_blanked++ < 4)
return;
scrn_blanked = 1;
*(savs[sizeof(saves)-2]) = scr_map[0x20];
for (f=sizeof(saves)-2; f > 0; f--)
*(savs[messagelen-1]) = scr_map[0x20];
for (f=messagelen-1; f > 0; f--)
savs[f] = savs[f-1];
f = (savs[0] - (u_char *)Crtat) / 2;
if ((f % scp->xsize) == 0 ||
@ -89,15 +94,13 @@ snake_saver(int blank)
(random() % 20) == 0)
diry = -diry;
savs[0] += 2*dirx + 2*diry;
for (f=sizeof(saves)-2; f>=0; f--)
*(savs[f]) = scr_map[saves[f]];
for (f=messagelen-1; f>=0; f--)
*(savs[f]) = scr_map[save[f]];
}
else {
if (scrn_blanked) {
if (scrn_blanked > 0) {
set_border(scp->border);
scrn_blanked = 0;
scp->start = 0;
scp->end = scp->xsize * scp->ysize;
}
}
}
@ -105,18 +108,32 @@ snake_saver(int blank)
static int
snake_saver_load(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
old_saver = current_saver;
current_saver = snake_saver;
return 0;
int err;
messagelen = strlen(ostype) + 1 + strlen(osrelease);
message = malloc(messagelen + 1, M_DEVBUF, M_WAITOK);
sprintf(message, "%s %s", ostype, osrelease);
messagep = malloc(messagelen * sizeof *messagep, M_DEVBUF, M_WAITOK);
err = add_scrn_saver(snake_saver);
if (err != 0) {
free(message, M_DEVBUF);
free(messagep, M_DEVBUF);
}
return err;
}
static int
snake_saver_unload(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
current_saver = old_saver;
return 0;
int err;
err = remove_scrn_saver(snake_saver);
if (err == 0) {
free(message, M_DEVBUF);
free(messagep, M_DEVBUF);
}
return err;
}
int

View File

@ -1,9 +1,9 @@
# $Id$
# $Id: Makefile,v 1.5 1997/02/22 12:49:21 peter Exp $
KMOD= star_saver_mod
SRCS= star_saver.c
NOMAN=
CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys
.include <bsd.kmod.mk>

View File

@ -25,26 +25,22 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: star_saver.c,v 1.10 1997/02/22 12:49:22 peter Exp $
* $Id: star_saver.c,v 1.11 1997/04/06 11:07:01 dufault Exp $
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/exec.h>
#include <sys/sysent.h>
#include <sys/lkm.h>
#include <sys/errno.h>
#include <machine/md_var.h>
#include <i386/include/pc/display.h>
#include "saver.h"
#include <saver.h>
MOD_MISC(star_saver);
void (*current_saver)(int blank);
void (*old_saver)(int blank);
#define NUM_STARS 50
/*
@ -62,7 +58,7 @@ star_saver(int blank)
static u_short stars[NUM_STARS][2];
if (blank) {
if (!scrn_blanked) {
if (scrn_blanked <= 0) {
scrn_blanked = 1;
fillw((FG_LIGHTGREY|BG_BLACK)<<8|scr_map[0x20], Crtat,
scp->xsize * scp->ysize);
@ -83,11 +79,9 @@ star_saver(int blank)
}
}
else {
if (scrn_blanked) {
if (scrn_blanked > 0) {
set_border(scp->border);
scrn_blanked = 0;
scp->start = 0;
scp->end = scp->xsize * scp->ysize;
}
}
}
@ -95,18 +89,13 @@ star_saver(int blank)
static int
star_saver_load(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
old_saver = current_saver;
current_saver = star_saver;
return 0;
return add_scrn_saver(star_saver);
}
static int
star_saver_unload(struct lkm_table *lkmtp, int cmd)
{
(*current_saver)(0);
current_saver = old_saver;
return 0;
return remove_scrn_saver(star_saver);
}
int