From ae16d918a316eb60407be875de416efb373a652f Mon Sep 17 00:00:00 2001 From: yokota Date: Mon, 11 Jan 1999 03:18:56 +0000 Subject: The first stage of console driver reorganization: activate new keyboard and video card drivers. Because of the changes, you are required to update your kernel configuration file now! The files in sys/dev/syscons are still i386-specific (but less so than before), and won't compile for alpha and PC98 yet. syscons still directly accesses the video card registers here and there; this will be rectified in the later stages. --- sys/modules/syscons/blank/blank_saver.c | 41 ++++++++-------- sys/modules/syscons/daemon/daemon_saver.c | 56 ++++++++++------------ sys/modules/syscons/fade/fade_saver.c | 51 ++++++++++++-------- sys/modules/syscons/green/green_saver.c | 36 ++++++++------ sys/modules/syscons/logo/logo_saver.c | 79 ++++++++++++------------------- sys/modules/syscons/rain/rain_saver.c | 65 ++++++++++--------------- sys/modules/syscons/saver.h | 44 ++++++----------- sys/modules/syscons/snake/snake_saver.c | 69 ++++++++++----------------- sys/modules/syscons/star/star_saver.c | 45 ++++++++++-------- sys/modules/syscons/warp/warp_saver.c | 56 +++++++++------------- 10 files changed, 240 insertions(+), 302 deletions(-) (limited to 'sys/modules/syscons') diff --git a/sys/modules/syscons/blank/blank_saver.c b/sys/modules/syscons/blank/blank_saver.c index 9ad6e3f..89dd199 100644 --- a/sys/modules/syscons/blank/blank_saver.c +++ b/sys/modules/syscons/blank/blank_saver.c @@ -25,7 +25,7 @@ * (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.13 1998/09/17 19:40:29 sos Exp $ + * $Id: blank_saver.c,v 1.14 1998/11/04 03:49:38 peter Exp $ */ #include @@ -33,18 +33,18 @@ #include #include +#include + #include #include -static void -blank_saver(int blank) +static int +blank_saver(video_adapter_t *adp, int blank) { u_char val; if (blank) { - scrn_blanked = 1; - cur_console->status |= SAVER_RUNNING; - switch (crtc_type) { + switch (adp->va_type) { case KD_VGA: outb(TSIDX, 0x01); val = inb(TSREG); outb(TSIDX, 0x01); outb(TSREG, val | 0x20); @@ -53,18 +53,18 @@ blank_saver(int blank) /* not yet done XXX */ break; case KD_CGA: - outb(crtc_addr + 4, 0x25); + outb(adp->va_crtc_addr + 4, 0x25); break; case KD_MONO: case KD_HERCULES: - outb(crtc_addr + 4, 0x21); + outb(adp->va_crtc_addr + 4, 0x21); break; default: break; } } else { - switch (crtc_type) { + switch (adp->va_type) { case KD_VGA: outb(TSIDX, 0x01); val = inb(TSREG); outb(TSIDX, 0x01); outb(TSREG, val & 0xDF); @@ -73,24 +73,23 @@ blank_saver(int blank) /* not yet done XXX */ break; case KD_CGA: - outb(crtc_addr + 4, 0x2d); + outb(adp->va_crtc_addr + 4, 0x2d); break; case KD_MONO: case KD_HERCULES: - outb(crtc_addr + 4, 0x29); + outb(adp->va_crtc_addr + 4, 0x29); break; default: break; } - cur_console->status &= ~SAVER_RUNNING; - scrn_blanked = 0; } + return 0; } static int -blank_saver_load(void) +blank_init(video_adapter_t *adp) { - switch (crtc_type) { + switch (adp->va_type) { case KD_MONO: case KD_HERCULES: case KD_CGA: @@ -101,13 +100,17 @@ blank_saver_load(void) default: return ENODEV; } - return add_scrn_saver(blank_saver); + return 0; } static int -blank_saver_unload(void) +blank_term(video_adapter_t *adp) { - return remove_scrn_saver(blank_saver); + return 0; } -SAVER_MODULE(blank_saver); +static scrn_saver_t blank_module = { + "blank_saver", blank_init, blank_term, blank_saver, NULL, +}; + +SAVER_MODULE(blank_saver, blank_module); diff --git a/sys/modules/syscons/daemon/daemon_saver.c b/sys/modules/syscons/daemon/daemon_saver.c index d3f9036..8e45a72 100644 --- a/sys/modules/syscons/daemon/daemon_saver.c +++ b/sys/modules/syscons/daemon/daemon_saver.c @@ -25,7 +25,7 @@ * (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.11 1998/09/17 19:40:30 sos Exp $ + * $Id: daemon_saver.c,v 1.12 1998/11/04 03:49:38 peter Exp $ */ #include @@ -49,6 +49,7 @@ static char *message; static int messagelen; static u_short *window; +static int blanked; /* Who is the author of this ASCII pic? */ @@ -184,8 +185,8 @@ draw_string(int xpos, int ypos, int xoff, char *s, int len) scr_map[s[x]]|(FG_LIGHTGREEN|BG_BLACK)<<8; } -static void -daemon_saver(int blank) +static int +daemon_saver(video_adapter_t *adp, int blank) { static int txpos = 10, typos = 10; static int txdir = -1, tydir = -1; @@ -198,20 +199,19 @@ daemon_saver(int blank) int min, max; if (blank) { - if (!ISTEXTSC(scp)) - return; - if (scrn_blanked == 0) { - scp->status |= SAVER_RUNNING; - window = (u_short *)(*biosvidsw.adapter)(scp->adp)->va_window; + if (adp->va_mode_flags & V_INFO_GRAPHICS) + return ENODEV; + if (blanked == 0) { + window = (u_short *)adp->va_window; /* clear the screen and set the border color */ fillw(((FG_LIGHTGREY|BG_BLACK) << 8) | scr_map[0x20], window, scp->xsize * scp->ysize); set_border(scp, 0); xlen = ylen = tlen = 0; } - if (scrn_blanked++ < 2) - return; - scrn_blanked = 1; + if (blanked++ < 2) + return 0; + blanked = 1; clear_daemon(dxpos, dypos, dxdir, xoff, yoff, xlen, ylen); clear_string(txpos, typos, toff, (char *)message, tlen); @@ -322,39 +322,31 @@ daemon_saver(int blank) draw_daemon(dxpos, dypos, dxdir, xoff, yoff, xlen, ylen); draw_string(txpos, typos, toff, (char *)message, tlen); } else { - if (scrn_blanked > 0) { - set_border(scp, scp->border); - scrn_blanked = 0; - scp->status &= ~SAVER_RUNNING; - } + blanked = 0; } + return 0; } static int -daemon_saver_load(void) +daemon_init(video_adapter_t *adp) { - int err; - 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); - - err = add_scrn_saver(daemon_saver); - if (err != 0) - free(message, M_DEVBUF); - return err; + blanked = 0; + return 0; } static int -daemon_saver_unload(void) +daemon_term(video_adapter_t *adp) { - int err; - - err = remove_scrn_saver(daemon_saver); - if (err == 0) - free(message, M_DEVBUF); - return err; + free(message, M_DEVBUF); + return 0; } -SAVER_MODULE(daemon_saver); +static scrn_saver_t daemon_module = { + "daemon_saver", daemon_init, daemon_term, daemon_saver, NULL, +}; + +SAVER_MODULE(daemon_saver, daemon_module); diff --git a/sys/modules/syscons/fade/fade_saver.c b/sys/modules/syscons/fade/fade_saver.c index 3a2cc0c..70d36c9 100644 --- a/sys/modules/syscons/fade/fade_saver.c +++ b/sys/modules/syscons/fade/fade_saver.c @@ -25,7 +25,7 @@ * (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.14 1998/09/17 19:40:30 sos Exp $ + * $Id: fade_saver.c,v 1.15 1998/11/04 03:49:38 peter Exp $ */ #include @@ -37,18 +37,22 @@ #include -static void -fade_saver(int blank) +static u_char palette[256*3]; +static int blanked; + +static int +fade_saver(video_adapter_t *adp, int blank) { static int count = 0; u_char pal[256*3]; int i; if (blank) { - scrn_blanked = 1; - cur_console->status |= SAVER_RUNNING; - switch (crtc_type) { + blanked = TRUE; + switch (adp->va_type) { case KD_VGA: + if (count <= 0) + save_palette(adp, palette); if (count < 64) { pal[0] = pal[1] = pal[2] = 0; for (i = 3; i < 256*3; i++) { @@ -57,7 +61,7 @@ fade_saver(int blank) else pal[i] = 60; } - load_palette(cur_console, pal); + load_palette(adp, pal); count++; } break; @@ -65,44 +69,44 @@ fade_saver(int blank) /* not yet done XXX */ break; case KD_CGA: - outb(crtc_addr + 4, 0x25); + outb(adp->va_crtc_addr + 4, 0x25); break; case KD_MONO: case KD_HERCULES: - outb(crtc_addr + 4, 0x21); + outb(adp->va_crtc_addr + 4, 0x21); break; default: break; } } else { - switch (crtc_type) { + switch (adp->va_type) { case KD_VGA: - load_palette(cur_console, palette); + load_palette(adp, palette); count = 0; break; case KD_EGA: /* not yet done XXX */ break; case KD_CGA: - outb(crtc_addr + 4, 0x2d); + outb(adp->va_crtc_addr + 4, 0x2d); break; case KD_MONO: case KD_HERCULES: - outb(crtc_addr + 4, 0x29); + outb(adp->va_crtc_addr + 4, 0x29); break; default: break; } - cur_console->status &= ~SAVER_RUNNING; - scrn_blanked = 0; + blanked = FALSE; } + return 0; } static int -fade_saver_load(void) +fade_init(video_adapter_t *adp) { - switch (crtc_type) { + switch (adp->va_type) { case KD_MONO: case KD_HERCULES: case KD_CGA: @@ -117,13 +121,18 @@ fade_saver_load(void) default: return ENODEV; } - return add_scrn_saver(fade_saver); + blanked = FALSE; + return 0; } static int -fade_saver_unload(void) +fade_term(video_adapter_t *adp) { - return remove_scrn_saver(fade_saver); + return 0; } -SAVER_MODULE(fade_saver); +static scrn_saver_t fade_module = { + "fade_saver", fade_init, fade_term, fade_saver, NULL, +}; + +SAVER_MODULE(fade_saver, fade_module); diff --git a/sys/modules/syscons/green/green_saver.c b/sys/modules/syscons/green/green_saver.c index 0491c67..9decd72 100644 --- a/sys/modules/syscons/green/green_saver.c +++ b/sys/modules/syscons/green/green_saver.c @@ -25,7 +25,7 @@ * (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.13 1998/09/17 19:40:30 sos Exp $ + * $Id: green_saver.c,v 1.14 1998/11/04 03:49:38 peter Exp $ */ #include @@ -33,18 +33,21 @@ #include #include +#include + #include #include -static void -green_saver(int blank) +static int +green_saver(video_adapter_t *adp, int blank) { + int crtc_addr; u_char val; + + crtc_addr = adp->va_crtc_addr; if (blank) { - scrn_blanked = 1; - cur_console->status |= SAVER_RUNNING; - switch (crtc_type) { + switch (adp->va_type) { case KD_VGA: outb(TSIDX, 0x01); val = inb(TSREG); outb(TSIDX, 0x01); outb(TSREG, val | 0x20); @@ -66,7 +69,7 @@ green_saver(int blank) } } else { - switch (crtc_type) { + switch (adp->va_type) { case KD_VGA: outb(TSIDX, 0x01); val = inb(TSREG); outb(TSIDX, 0x01); outb(TSREG, val & 0xDF); @@ -86,15 +89,14 @@ green_saver(int blank) default: break; } - cur_console->status &= ~SAVER_RUNNING; - scrn_blanked = 0; } + return 0; } static int -green_saver_load(void) +green_init(video_adapter_t *adp) { - switch (crtc_type) { + switch (adp->va_type) { case KD_MONO: case KD_HERCULES: case KD_CGA: @@ -109,13 +111,17 @@ green_saver_load(void) default: return ENODEV; } - return add_scrn_saver(green_saver); + return 0; } static int -green_saver_unload(void) +green_term(video_adapter_t *adp) { - return remove_scrn_saver(green_saver); + return 0; } -SAVER_MODULE(green_saver); +static scrn_saver_t green_module = { + "green_saver", green_init, green_term, green_saver, NULL, +}; + +SAVER_MODULE(green_saver, green_module); diff --git a/sys/modules/syscons/logo/logo_saver.c b/sys/modules/syscons/logo/logo_saver.c index ff42be0..105fcae 100644 --- a/sys/modules/syscons/logo/logo_saver.c +++ b/sys/modules/syscons/logo/logo_saver.c @@ -25,7 +25,7 @@ * (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: logo_saver.c,v 1.1 1998/12/28 14:22:57 des Exp $ + * $Id: logo_saver.c,v 1.2 1999/01/01 14:40:49 des Exp $ */ #include @@ -34,26 +34,24 @@ #include #include -#include - #include static u_char *vid; static int banksize, scrmode, scrw, scrh; -static u_char save_pal[768]; +static int blanked; #include "logo.c" -#define set_origin(scp, o) (*biosvidsw.set_win_org)((scp)->adp, o) +#define set_origin(adp, o) (*vidsw[(adp)->va_index]->set_win_org)(adp, o) static void -logo_blit(int x, int y) +logo_blit(video_adapter_t *adp, int x, int y) { int d, l, o, p; for (o = 0, p = y * scrw + x; p > banksize; p -= banksize) o += banksize; - set_origin(cur_console, o); + set_origin(adp, o); for (d = 0; d < sizeof logo_img; d += logo_w) { if (p + logo_w < banksize) { @@ -62,12 +60,12 @@ logo_blit(int x, int y) } else if (p < banksize) { l = banksize - p; bcopy(logo_img + d, vid + p, l); - set_origin(cur_console, (o += banksize)); + set_origin(adp, (o += banksize)); bcopy(logo_img + d + l, vid, logo_w - l); p += scrw - banksize; } else { p -= banksize; - set_origin(cur_console, (o += banksize)); + set_origin(adp, (o += banksize)); bcopy(logo_img + d, vid + p, logo_w); p += scrw; } @@ -75,7 +73,7 @@ logo_blit(int x, int y) } static void -logo_update(void) +logo_update(video_adapter_t *adp) { static int xpos = 0, ypos = 0; static int xinc = 1, yinc = 1; @@ -89,62 +87,42 @@ logo_update(void) ypos += yinc; /* XXX Relies on margin around logo to erase trail */ - logo_blit(xpos, ypos); + logo_blit(adp, xpos, ypos); } -static void -logo_saver(int blank) +static int +logo_saver(video_adapter_t *adp, int blank) { - scr_stat *scp = cur_console; - static int saved_mode; int i, pl; if (blank) { /* switch to graphics mode */ - if (scrn_blanked <= 0) { + if (blanked <= 0) { pl = splhigh(); - saved_mode = scp->mode; - scp->mode = scrmode; - scp->status |= SAVER_RUNNING|GRAPHICS_MODE; - save_palette(scp, (char *)save_pal); - set_mode(scp); - load_palette(scp, (char *)logo_pal); - scrn_blanked++; - vid = (u_char *)Crtat; + set_video_mode(adp, scrmode, logo_pal, 0); + blanked++; + vid = (u_char *)adp->va_window; splx(pl); for (i = 0; i < scrw*scrh; i += banksize) { - set_origin(scp, i); + set_origin(adp, i); bzero(vid, banksize); } } - logo_update(); + logo_update(adp); } else { - /* return to previous video mode */ - if (scrn_blanked > 0) { - if (saved_mode) { - pl = splhigh(); - scrn_blanked = 0; - scp->mode = saved_mode; - scp->status &= ~(SAVER_RUNNING|GRAPHICS_MODE); - set_mode(scp); - load_palette(scp, (char *)save_pal); - saved_mode = 0; - splx(pl); - } - } + blanked = 0; } + return 0; } static int -logo_saver_load(void) +logo_init(video_adapter_t *adp) { video_info_t info; - int adp; - adp = cur_console->adp; - if (!(*biosvidsw.get_info)(adp, M_VESA_CG800x600, &info)) { + if (!get_mode_info(adp, M_VESA_CG800x600, &info)) { scrmode = M_VESA_CG800x600; - } else if (!(*biosvidsw.get_info)(adp, M_VGA_CG320, &info)) { + } else if (!get_mode_info(adp, M_VGA_CG320, &info)) { scrmode = M_VGA_CG320; } else { log(LOG_NOTICE, "logo_saver: no suitable graphics mode\n"); @@ -154,14 +132,19 @@ logo_saver_load(void) banksize = info.vi_window_size; scrw = info.vi_width; scrh = info.vi_height; + blanked = 0; - return add_scrn_saver(logo_saver); + return 0; } static int -logo_saver_unload(void) +logo_term(video_adapter_t *adp) { - return remove_scrn_saver(logo_saver); + return 0; } -SAVER_MODULE(logo_saver); +static scrn_saver_t logo_module = { + "logo_saver", logo_init, logo_term, logo_saver, NULL, +}; + +SAVER_MODULE(logo_saver, logo_module); diff --git a/sys/modules/syscons/rain/rain_saver.c b/sys/modules/syscons/rain/rain_saver.c index 0ca46c8..0b4b2ee 100644 --- a/sys/modules/syscons/rain/rain_saver.c +++ b/sys/modules/syscons/rain/rain_saver.c @@ -25,7 +25,7 @@ * (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$ + * $Id: rain_saver.c,v 1.1 1998/12/31 13:41:40 des Exp $ */ #include @@ -34,7 +34,6 @@ #include #include -#include #include #include @@ -45,11 +44,11 @@ static u_char *vid; #define SCRH 200 #define MAX 63 -static u_char save_pal[768]; static u_char rain_pal[768]; +static int blanked; static void -rain_update(void) +rain_update(video_adapter_t *adp) { int i, t; @@ -57,28 +56,21 @@ rain_update(void) for (i = (MAX*3+2); i > 5; i -= 3) rain_pal[i] = rain_pal[i-3]; rain_pal[5] = t; - load_palette(cur_console, rain_pal); + load_palette(adp, rain_pal); } -static void -rain_saver(int blank) +static int +rain_saver(video_adapter_t *adp, int blank) { - scr_stat *scp = cur_console; - static int saved_mode; int i, j, k, pl; if (blank) { /* switch to graphics mode */ - if (scrn_blanked <= 0) { + if (blanked <= 0) { pl = splhigh(); - saved_mode = scp->mode; - scp->mode = M_VGA_CG320; - scp->status |= SAVER_RUNNING|GRAPHICS_MODE; - save_palette(scp, save_pal); - set_mode(scp); - load_palette(scp, rain_pal); - scrn_blanked++; - vid = (u_char *)Crtat; + set_video_mode(adp, M_VGA_CG320, rain_pal, 0); + blanked++; + vid = (u_char *)adp->va_window; splx(pl); bzero(vid, SCRW*SCRH); for (i = 0; i < SCRW; i += 2) @@ -89,33 +81,22 @@ rain_saver(int blank) } /* update display */ - rain_update(); + rain_update(adp); } else { - /* return to previous video mode */ - if (scrn_blanked > 0) { - if (saved_mode) { - pl = splhigh(); - scrn_blanked = 0; - scp->mode = saved_mode; - scp->status &= ~(SAVER_RUNNING|GRAPHICS_MODE); - set_mode(scp); - load_palette(scp, save_pal); - saved_mode = 0; - splx(pl); - } - } + blanked = 0; } + return 0; } static int -rain_saver_load(void) +rain_init(video_adapter_t *adp) { video_info_t info; int i; /* check that the console is capable of running in 320x200x256 */ - if ((*biosvidsw.get_info)(cur_console->adp, M_VGA_CG320, &info)) { + if (get_mode_info(adp, M_VGA_CG320, &info)) { log(LOG_NOTICE, "rain_saver: the console does not support M_VGA_CG320\n"); return ENODEV; } @@ -123,14 +104,20 @@ rain_saver_load(void) /* intialize the palette */ for (i = 3; i < (MAX+1)*3; i += 3) rain_pal[i+2] = rain_pal[i-1] + 4; - - return add_scrn_saver(rain_saver); + + blanked = 0; + + return 0; } static int -rain_saver_unload(void) +rain_term(video_adapter_t *adp) { - return remove_scrn_saver(rain_saver); + return 0; } -SAVER_MODULE(rain_saver); +static scrn_saver_t rain_module = { + "rain_saver", rain_init, rain_term, rain_saver, NULL, +}; + +SAVER_MODULE(rain_saver, rain_module); diff --git a/sys/modules/syscons/saver.h b/sys/modules/syscons/saver.h index 6be8a70..6e4c8f5 100644 --- a/sys/modules/syscons/saver.h +++ b/sys/modules/syscons/saver.h @@ -25,40 +25,24 @@ * (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.13 1998/11/04 03:49:38 peter Exp $ + * $Id: saver.h,v 1.14 1998/12/31 13:40:26 des Exp $ */ #include #include -#include -#include +#include +#include +#include + +#define set_video_mode(adp, mode, pal, border) \ + { \ + (*vidsw[(adp)->va_index]->set_mode)((adp), (mode)); \ + (*vidsw[(adp)->va_index]->load_palette)((adp), (pal)); \ + (*vidsw[(adp)->va_index]->set_border)((adp), (border)); \ + } +#define get_mode_info(adp, mode, buf) \ + (*vidsw[(adp)->va_index]->get_info)((adp), (mode), (buf)) + extern scr_stat *cur_console; -extern u_short *Crtat; -extern u_int crtc_addr; -extern char crtc_type; extern char scr_map[]; -extern int scrn_blanked; -extern int fonts_loaded; -extern char font_8[], font_14[], font_16[]; -extern char palette[]; - -#define SAVER_MODULE(name) \ - static int name ## _modevent(module_t mod, int type, void *data) \ - { \ - switch ((modeventtype_t)type) { \ - case MOD_LOAD: \ - return name ## _load(); \ - case MOD_UNLOAD: \ - return name ## _unload(); \ - default: \ - break; \ - } \ - return 0; \ - } \ - static moduledata_t name ## _mod = { \ - #name, \ - name ## _modevent, \ - NULL \ - }; \ - DECLARE_MODULE(name, name ## _mod, SI_SUB_PSEUDO, SI_ORDER_MIDDLE) diff --git a/sys/modules/syscons/snake/snake_saver.c b/sys/modules/syscons/snake/snake_saver.c index 3100ff3..c7c9ff5 100644 --- a/sys/modules/syscons/snake/snake_saver.c +++ b/sys/modules/syscons/snake/snake_saver.c @@ -25,7 +25,7 @@ * (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.19 1998/09/17 19:40:30 sos Exp $ + * $Id: snake_saver.c,v 1.20 1998/11/04 03:49:39 peter Exp $ */ #include @@ -44,9 +44,10 @@ static char *message; static u_char **messagep; static int messagelen; static u_short *window; +static int blanked; -static void -snake_saver(int blank) +static int +snake_saver(video_adapter_t *adp, int blank) { static int dirx, diry; int f; @@ -57,12 +58,11 @@ snake_saver(int blank) #define savs messagep if (blank) { - if (!ISTEXTSC(scp)) - return; - if (scrn_blanked <= 0) { - scp->status |= SAVER_RUNNING; - window = (u_short *)(*biosvidsw.adapter)(scp->adp)->va_window; - fillw((FG_LIGHTGREY|BG_BLACK)<<8 | scr_map[0x20], + if (adp->va_mode_flags & V_INFO_GRAPHICS) + return ENODEV; + if (blanked <= 0) { + window = (u_short *)adp->va_window; + fillw(((FG_LIGHTGREY|BG_BLACK)<<8) | scr_map[0x20], window, scp->xsize * scp->ysize); set_border(scp, 0); dirx = (scp->xpos ? 1 : -1); @@ -72,16 +72,11 @@ snake_saver(int blank) savs[f] = (u_char *)window + 2 * (scp->xpos+scp->ypos*scp->xsize); *(savs[0]) = scr_map[*save]; - f = scp->ysize * scp->xsize + 5; - outb(crtc_addr, 14); - outb(crtc_addr+1, f >> 8); - outb(crtc_addr, 15); - outb(crtc_addr+1, f & 0xff); - scrn_blanked = 1; + blanked = 1; } - if (scrn_blanked++ < 4) - return; - scrn_blanked = 1; + if (blanked++ < 4) + return 0; + blanked = 1; *(savs[messagelen-1]) = scr_map[0x20]; for (f=messagelen-1; f > 0; f--) savs[f] = savs[f-1]; @@ -99,43 +94,31 @@ snake_saver(int blank) *(savs[f]) = scr_map[save[f]]; } else { - if (scrn_blanked > 0) { - set_border(scp, scp->border); - scrn_blanked = 0; - scp->status &= ~SAVER_RUNNING; - } + blanked = 0; } + return 0; } static int -snake_saver_load(void) +snake_init(video_adapter_t *adp) { - 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; + return 0; } static int -snake_saver_unload(void) +snake_term(video_adapter_t *adp) { - int err; - - err = remove_scrn_saver(snake_saver); - if (err == 0) { - free(message, M_DEVBUF); - free(messagep, M_DEVBUF); - } - return err; + free(message, M_DEVBUF); + free(messagep, M_DEVBUF); + return 0; } -SAVER_MODULE(snake_saver); +static scrn_saver_t snake_module = { + "snake_saver", snake_init, snake_term, snake_saver, NULL, +}; + +SAVER_MODULE(snake_saver, snake_module); diff --git a/sys/modules/syscons/star/star_saver.c b/sys/modules/syscons/star/star_saver.c index 719d502..ca4b588 100644 --- a/sys/modules/syscons/star/star_saver.c +++ b/sys/modules/syscons/star/star_saver.c @@ -25,7 +25,7 @@ * (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.16 1998/09/17 19:40:30 sos Exp $ + * $Id: star_saver.c,v 1.17 1998/11/04 03:49:39 peter Exp $ */ #include @@ -41,13 +41,14 @@ #define NUM_STARS 50 static u_short *window; +static int blanked; /* * Alternate saver that got its inspiration from a well known utility * package for an inferior^H^H^H^H^H^Hfamous OS. */ -static void -star_saver(int blank) +static int +star_saver(video_adapter_t *adp, int blank) { scr_stat *scp = cur_console; int cell, i; @@ -57,15 +58,15 @@ star_saver(int blank) static u_short stars[NUM_STARS][2]; if (blank) { - if (!ISTEXTSC(scp)) - return; - if (scrn_blanked <= 0) { - scp->status |= SAVER_RUNNING; - window = (u_short *)(*biosvidsw.adapter)(scp->adp)->va_window; - scrn_blanked = 1; - fillw((FG_LIGHTGREY|BG_BLACK)<<8|scr_map[0x20], window, - scp->xsize * scp->ysize); + if (adp->va_mode_flags & V_INFO_GRAPHICS) + return ENODEV; + if (!blanked) { + window = (u_short *)adp->va_window; + /* clear the screen and set the border color */ + fillw(((FG_LIGHTGREY|BG_BLACK) << 8) | scr_map[0x20], + window, scp->xsize * scp->ysize); set_border(scp, 0); + blanked = TRUE; for(i=0; ixsize*scp->ysize); @@ -82,24 +83,26 @@ star_saver(int blank) } } else { - if (scrn_blanked > 0) { - set_border(scp, scp->border); - scrn_blanked = 0; - scp->status &= ~SAVER_RUNNING; - } + blanked = FALSE; } + return 0; } static int -star_saver_load(void) +star_init(video_adapter_t *adp) { - return add_scrn_saver(star_saver); + blanked = FALSE; + return 0; } static int -star_saver_unload(void) +star_term(video_adapter_t *adp) { - return remove_scrn_saver(star_saver); + return 0; } -SAVER_MODULE(star_saver); +static scrn_saver_t star_module = { + "star_saver", star_init, star_term, star_saver, NULL, +}; + +SAVER_MODULE(star_saver, star_module); diff --git a/sys/modules/syscons/warp/warp_saver.c b/sys/modules/syscons/warp/warp_saver.c index e84f1ad..ef0afa2 100644 --- a/sys/modules/syscons/warp/warp_saver.c +++ b/sys/modules/syscons/warp/warp_saver.c @@ -25,7 +25,7 @@ * (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: warp_saver.c,v 1.2 1998/12/28 14:20:13 des Exp $ + * $Id: warp_saver.c,v 1.3 1998/12/31 13:38:59 des Exp $ */ #include @@ -40,6 +40,7 @@ #include static u_char *vid; +static int blanked; #define SCRW 320 #define SCRH 200 @@ -47,7 +48,6 @@ static u_char *vid; #define STARS (SPP*(1+2+4+8)) static int star[STARS]; -static u_char save_pal[768]; static u_char warp_pal[768] = { 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, @@ -72,25 +72,18 @@ warp_update(void) } } -static void -warp_saver(int blank) +static int +warp_saver(video_adapter_t *adp, int blank) { - scr_stat *scp = cur_console; - static int saved_mode; int pl; if (blank) { /* switch to graphics mode */ - if (scrn_blanked <= 0) { + if (blanked <= 0) { pl = splhigh(); - saved_mode = scp->mode; - scp->mode = M_VGA_CG320; - scp->status |= SAVER_RUNNING|GRAPHICS_MODE; - save_palette(scp, save_pal); - set_mode(scp); - load_palette(scp, warp_pal); - scrn_blanked++; - vid = (u_char *)Crtat; + set_video_mode(adp, M_VGA_CG320, warp_pal, 0); + blanked++; + vid = (u_char *)adp->va_window; splx(pl); bzero(vid, SCRW*SCRH); } @@ -99,30 +92,19 @@ warp_saver(int blank) warp_update(); } else { - /* return to previous video mode */ - if (scrn_blanked > 0) { - if (saved_mode) { - pl = splhigh(); - scrn_blanked = 0; - scp->mode = saved_mode; - scp->status &= ~(SAVER_RUNNING|GRAPHICS_MODE); - set_mode(scp); - load_palette(scp, save_pal); - saved_mode = 0; - splx(pl); - } - } + blanked = 0; } + return 0; } static int -warp_saver_load(void) +warp_init(video_adapter_t *adp) { video_info_t info; int i; /* check that the console is capable of running in 320x200x256 */ - if ((*biosvidsw.get_info)(cur_console->adp, M_VGA_CG320, &info)) { + if (get_mode_info(adp, M_VGA_CG320, &info)) { log(LOG_NOTICE, "warp_saver: the console does not support M_VGA_CG320\n"); return ENODEV; } @@ -132,13 +114,19 @@ warp_saver_load(void) star[i] = random() % (SCRW*SCRH); } - return add_scrn_saver(warp_saver); + blanked = 0; + + return 0; } static int -warp_saver_unload(void) +warp_term(video_adapter_t *adp) { - return remove_scrn_saver(warp_saver); + return 0; } -SAVER_MODULE(warp_saver); +static scrn_saver_t warp_module = { + "warp_saver", warp_init, warp_term, warp_saver, NULL, +}; + +SAVER_MODULE(warp_saver, warp_module); -- cgit v1.1