Date: Tue, 10 Apr 2012 02:17:58 +0000 (UTC) From: Marcel Moolenaar <marcel@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r234082 - in user/marcel/vtc.sys/dev/vtc: . vtout vtout/gmch vtout/vga Message-ID: <201204100217.q3A2HwiC097109@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: marcel Date: Tue Apr 10 02:17:58 2012 New Revision: 234082 URL: http://svn.freebsd.org/changeset/base/234082 Log: Add the vtc(4) driver. A driver for standard VGA is provided for the low-level console. A logo of beastie (4.4BSD daemon without the Sun) is displayed when vtc(4) is not the console and the vga driver attaches. Added: user/marcel/vtc.sys/dev/vtc/ user/marcel/vtc.sys/dev/vtc/vtc.h user/marcel/vtc.sys/dev/vtc/vtc_con.c user/marcel/vtc.sys/dev/vtc/vtc_con.h user/marcel/vtc.sys/dev/vtc/vtc_core.c user/marcel/vtc.sys/dev/vtc/vtc_font.c user/marcel/vtc.sys/dev/vtc/vtc_logo.c user/marcel/vtc.sys/dev/vtc/vtc_te.c user/marcel/vtc.sys/dev/vtc/vtc_te.h user/marcel/vtc.sys/dev/vtc/vtc_te_if.m user/marcel/vtc.sys/dev/vtc/vtc_te_vt102.c user/marcel/vtc.sys/dev/vtc/vtc_vtout.h user/marcel/vtc.sys/dev/vtc/vtc_vtout_if.m user/marcel/vtc.sys/dev/vtc/vtout/ user/marcel/vtc.sys/dev/vtc/vtout/gmch/ user/marcel/vtc.sys/dev/vtc/vtout/gmch/gmch.c user/marcel/vtc.sys/dev/vtc/vtout/gmch/gmch.h user/marcel/vtc.sys/dev/vtc/vtout/gmch/gmch_bus_pci.c user/marcel/vtc.sys/dev/vtc/vtout/vga/ user/marcel/vtc.sys/dev/vtc/vtout/vga/vga.c user/marcel/vtc.sys/dev/vtc/vtout/vga/vga.h user/marcel/vtc.sys/dev/vtc/vtout/vga/vga_bus_isa.c user/marcel/vtc.sys/dev/vtc/vtout/vga/vga_bus_pci.c user/marcel/vtc.sys/dev/vtc/vtout/vga/vga_con.c user/marcel/vtc.sys/dev/vtc/vtout/vga/vga_cpu_ia64.c user/marcel/vtc.sys/dev/vtc/vtout/vga/vga_cpu_sparc64.c user/marcel/vtc.sys/dev/vtc/vtout/vga/vga_cpu_x86.c Added: user/marcel/vtc.sys/dev/vtc/vtc.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/marcel/vtc.sys/dev/vtc/vtc.h Tue Apr 10 02:17:58 2012 (r234082) @@ -0,0 +1,55 @@ +/*- + * Copyright (c) 2005 Marcel Moolenaar + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _DEV_VTC_H_ +#define _DEV_VTC_H_ + +#define SI_SUB_VTC (SI_SUB_SMP + 0xf00000) + +/* BitBlt operations. */ +#define BITBLT_CTOFB 0x0001 +#define BITBLT_H1TOFB 0x0002 +#define BITBLT_H4TOFB 0x0003 +#define BITBLT_H8TOFB 0x0004 +#define BITBLT_H16TOFB 0x0005 +#define BITBLT_H24TOFB 0x0006 +#define BITBLT_H32TOFB 0x0007 +#define BITBLT_FBTOFB 0x0008 + +/* Beastie logos. */ +extern int vtc_logo4_width; +extern int vtc_logo4_height; +extern unsigned char vtc_logo4_image[]; + +/* Built-in fonts. */ +extern unsigned char vtc_font_8x16[]; + +/* Miscellaneous. */ +extern char vtc_device_name[]; + +#endif /* !_DEV_VTC_H_ */ Added: user/marcel/vtc.sys/dev/vtc/vtc_con.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/marcel/vtc.sys/dev/vtc/vtc_con.c Tue Apr 10 02:17:58 2012 (r234082) @@ -0,0 +1,181 @@ +/*- + * Copyright (c) 2005 Marcel Moolenaar + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/kernel.h> +#include <machine/bus.h> +#include <sys/bus.h> +#include <sys/cons.h> +#include <sys/kdb.h> +#include <sys/rman.h> +#include <sys/tty.h> + +#include <dev/vtc/vtc.h> +#include <dev/vtc/vtc_con.h> + +static cn_getc_t vtc_cngetc; +static cn_grab_t vtc_cngrab; +static cn_init_t vtc_cninit; +static cn_probe_t vtc_cnprobe; +static cn_putc_t vtc_cnputc; +static cn_term_t vtc_cnterm; +static cn_ungrab_t vtc_cnungrab; + +static int vtc_cncol = 0; +static int vtc_cnrow = 0; +static int vtc_cnmute = 0; + +CONSOLE_DRIVER(vtc); + +static void +vtc_cnprobe(struct consdev *cp) +{ + struct vtc_conout *cur_vc, *vc, **iter; + int cur_pri, pri; + + cur_pri = -1; + cur_vc = NULL; + SET_FOREACH(iter, vtc_conout_set) { + vc = *iter; + pri = (vc->vtc_con_probe != NULL) ? vc->vtc_con_probe(vc) : -1; + if (pri > cur_pri) { + cur_pri = pri; + cur_vc = vc; + } + } + strlcpy(cp->cn_name, vtc_device_name, sizeof(cp->cn_name)); + cp->cn_arg = cur_vc; + cp->cn_pri = (cur_vc != NULL) ? CN_INTERNAL : CN_DEAD; +} + +static void +vtc_cninit(struct consdev *cp) +{ + struct vtc_conout *vc = cp->cn_arg; + + vc->vtc_consdev = cp; + vc->vtc_con_init(vc); +} + +static void +vtc_cnterm(struct consdev *cp) +{ +} + +static void +vtc_cnputc(struct consdev *cp, int c) +{ + struct vtc_conout *vc = cp->cn_arg; + int ch, width; + u_char *glyph; + + /* Sanity check. */ + if (c <= 0 || c >= 0x7f) + return; + + /* Allow low-level console output to be surpressed. */ + if (vtc_cnmute && !kdb_active) + return; + + width = vc->vtc_con_width; + switch (c) { + case 8: /* BS */ + if (vtc_cncol > 0) + vtc_cncol--; + ch = ' '; + break; + case 9: /* HT */ + vtc_cncol = (vtc_cncol + 7) & 7; + if (vtc_cncol >= 80) + vtc_cncol = 79; + ch = 0; + break; + case 10: /* LF */ + case 11: /* VT (processed as LF) */ + case 12: /* FF (processed as LF) */ + vtc_cncol = 0; + vtc_cnrow++; + ch = 0; + break; + case 13: /* CR */ + vtc_cncol = 0; + ch = 0; + break; + default: + ch = (c >= ' ') ? c : 0; + break; + } + + if (ch != 0) { + glyph = vtc_font_8x16 + ((ch - ' ') * 16); + vc->vtc_con_bitblt(vc, BITBLT_H1TOFB, (uintptr_t)glyph, + width * vtc_cnrow * 16 + vtc_cncol * 8, 8, 16, 0, 7); + if (c != 8) + vtc_cncol++; + } + + if (vtc_cncol >= 80) { + vtc_cncol = 0; + vtc_cnrow++; + } + if (vtc_cnrow >= 30) { + vc->vtc_con_bitblt(vc, BITBLT_FBTOFB, width * 16, 0, width, + 29 * 16); + vc->vtc_con_bitblt(vc, BITBLT_CTOFB, 0, width * 29 * 16, width, + 16); + vtc_cnrow = 29; + } +} + +static int +vtc_cngetc(struct consdev *cp) +{ + + return (-1); +} + +static void +vtc_cngrab(struct consdev *cp) +{ +} + +static void +vtc_cnungrab(struct consdev *cp) +{ +} + +static void +vtc_cnfinalize(void *data __unused) +{ + + /* Shut the low-level console up. */ + vtc_cnmute = 1; +} +SYSINIT(cnfinalize, SI_SUB_VTC, SI_ORDER_ANY, vtc_cnfinalize, NULL); Added: user/marcel/vtc.sys/dev/vtc/vtc_con.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/marcel/vtc.sys/dev/vtc/vtc_con.h Tue Apr 10 02:17:58 2012 (r234082) @@ -0,0 +1,63 @@ +/*- + * Copyright (c) 2005 Marcel Moolenaar + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _DEV_VTC_CON_H_ +#define _DEV_VTC_CON_H_ + +struct vtc_conout; + +typedef void vtc_con_bitblt_f(struct vtc_conout *, int, uintptr_t, uintptr_t, + int, int, ...); +typedef void vtc_con_init_f(struct vtc_conout *); +typedef int vtc_con_probe_f(struct vtc_conout *); + +struct vtc_conout { + struct consdev *vtc_consdev; + device_t vtc_busdev; + const char *vtc_con_name; + vtc_con_probe_f *vtc_con_probe; + vtc_con_init_f *vtc_con_init; + vtc_con_bitblt_f *vtc_con_bitblt; + void *vtc_con_cookie; + int vtc_con_width; + int vtc_con_height; + int vtc_con_depth; +}; + +#define VTC_CONOUT(name, probe, init, bitblt) \ + static struct vtc_conout name##_vtc_conout = { \ + .vtc_con_name = #name, \ + .vtc_con_probe = probe, \ + .vtc_con_init = init, \ + .vtc_con_bitblt = bitblt, \ + }; \ + DATA_SET(vtc_conout_set, name##_vtc_conout) + +SET_DECLARE(vtc_conout_set, struct vtc_conout); + +#endif /* !_DEV_VTC_CON_H_ */ Added: user/marcel/vtc.sys/dev/vtc/vtc_core.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/marcel/vtc.sys/dev/vtc/vtc_core.c Tue Apr 10 02:17:58 2012 (r234082) @@ -0,0 +1,303 @@ +/*- + * Copyright (c) 2003-2005 Marcel Moolenaar + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/conf.h> +#include <sys/cons.h> +#include <sys/kernel.h> +#include <sys/kobj.h> +#include <sys/malloc.h> +#include <sys/module.h> +#include <sys/tty.h> + +#include <dev/vtc/vtc.h> +#include <dev/vtc/vtc_con.h> +#include <dev/vtc/vtc_te.h> +#include <dev/vtc/vtc_vtout.h> + +#include "vtc_te_if.h" + +char vtc_device_name[] = "vtc"; + +TAILQ_HEAD(, vtc_te_softc) vtc_te_devs = + TAILQ_HEAD_INITIALIZER(vtc_te_devs); +TAILQ_HEAD(, vtc_vtout_softc) vtc_vtout_devs = + TAILQ_HEAD_INITIALIZER(vtc_vtout_devs); + +MALLOC_DEFINE(M_VTC, "VTC", "VTC driver"); + +extern struct vtc_te_class vt102_class; + +static int +vtc_tty_open(struct tty *tp) +{ + struct vtc_te_softc *te; + + te = tty_softc(tp); + if (te == NULL) + return (ENXIO); + + /* XXX notify the TE that we're opened? */ + return (0); +} + +static void +vtc_tty_close(struct tty *tp) +{ + struct vtc_te_softc *te; + + te = tty_softc(tp); + if (te == NULL) + return; + + wakeup(te); +} + +static void +vtc_tty_outwakeup(struct tty *tp) +{ + char txbuf[4]; + struct vtc_te_softc *te; + __wchar_t utf32; + size_t nchars, bufidx; + int c, utfbytes; + + te = tty_softc(tp); + if (te == NULL) + return; + + bufidx = 0; + nchars = ttydisc_getc(tp, txbuf, sizeof(txbuf)); + utf32 = te->te_utf32; + utfbytes = te->te_utfbytes; + while (bufidx < nchars) { + c = txbuf[bufidx++]; + /* + * Conditionalize on the two major character types: + * initial and followup characters. + */ + if ((c & 0xc0) != 0x80) { + /* Initial characters. */ + if (utfbytes != 0) + VTC_TE_WRITE(te, -1); + if ((c & 0xf8) == 0xf0) { + utf32 = c & 0x07; + utfbytes = 3; + } else if ((c & 0xf0) == 0xe0) { + utf32 = c & 0x0f; + utfbytes = 2; + } else if ((c & 0xe0) == 0xc0) { + utf32 = c & 0x1f; + utfbytes = 1; + } else { + KASSERT((c & 0x80) == 0x00, ("oops")); + utf32 = c & 0x7f; + utfbytes = 0; + } + } else { + /* Followup characters. */ + KASSERT((c & 0xc0) == 0x80, ("oops")); + if (utfbytes > 0) { + utf32 = (utf32 << 6) + (c & 0x3f); + utfbytes--; + } + else if (utfbytes == 0) + utfbytes = -1; + } + if (utfbytes == 0) + VTC_TE_WRITE(te, utf32); + } + te->te_utf32 = utf32; + te->te_utfbytes = utfbytes; +} + +static void +vtc_tty_inwakeup(struct tty *tp) +{ + struct vtc_te_softc *te; + + te = tty_softc(tp); + if (te == NULL) + return; +} + +static int +vtc_tty_ioctl(struct tty *tp, u_long cmd, caddr_t data, struct thread *td) +{ + struct vtc_te_softc *te; + + te = tty_softc(tp); + if (te == NULL) + return (ENXIO); + + return (ENOTTY); +} + +static int +vtc_tty_param(struct tty *tp, struct termios *t) +{ + struct vtc_te_softc *te; + + te = tty_softc(tp); + if (te == NULL) + return (ENODEV); + + return (0); +} + +static int +vtc_tty_modem(struct tty *tp, int biton, int bitoff) +{ + + return (0); +} + +static void +vtc_tty_free(void *arg) +{ +} + +static struct ttydevsw vtc_tty_class = { + .tsw_flags = TF_INITLOCK|TF_CALLOUT, + .tsw_open = vtc_tty_open, + .tsw_close = vtc_tty_close, + .tsw_outwakeup = vtc_tty_outwakeup, + .tsw_inwakeup = vtc_tty_inwakeup, + .tsw_ioctl = vtc_tty_ioctl, + .tsw_param = vtc_tty_param, + .tsw_modem = vtc_tty_modem, + .tsw_free = vtc_tty_free, +}; + +int +vtc_vtout_attach(device_t dev, vtout_init_f init, vtout_bitblt_f bitblt, + int width, int height) +{ + struct vtc_vtout_softc *vo; + + vo = malloc(sizeof(*vo), M_VTC, M_WAITOK|M_ZERO); + TAILQ_INSERT_TAIL(&vtc_vtout_devs, vo, vo_alldevs); + vo->vo_dev = dev; + vo->vo_init = init; + vo->vo_bitblt = bitblt; + vo->vo_width = width; + vo->vo_height = height; + return (0); +} + +int +vtc_vtout_console(device_t dev) +{ + struct vtc_conout *vc, **iter; + + SET_FOREACH(iter, vtc_conout_set) { + vc = *iter; + if (vc->vtc_busdev == dev) + return (1); + } + return (0); +} + +/* + * Create the initial VT. + */ +static void +vtc_initial(void *data __unused) +{ + struct tty *tp; + struct vtc_conout *vc, **iter; + struct vtc_te_softc *te; + + printf("%s: create initial VT\n", vtc_device_name); + + if (TAILQ_EMPTY(&vtc_vtout_devs)) + return; + + te = malloc(vt102_class.size, M_VTC, M_WAITOK|M_ZERO); + kobj_init((kobj_t)te, (kobj_class_t)&vt102_class); + TAILQ_INSERT_TAIL(&vtc_te_devs, te, te_alldevs); + TAILQ_INIT(&te->te_vodevs); + + VTC_TE_RESET(te); + + te->te_tty = tp = tty_alloc(&vtc_tty_class, te); + tty_makedev(tp, NULL, "V%r", 0); + SET_FOREACH(iter, vtc_conout_set) { + vc = *iter; + if (vc->vtc_consdev != NULL) { + strcpy(vc->vtc_consdev->cn_name, "ttyV0"); + tty_init_console(tp, 0); + } + } +} +SYSINIT(vtc_initial, SI_SUB_INT_CONFIG_HOOKS, SI_ORDER_ANY, vtc_initial, NULL); + +/* + * Preempt the low-level console driver with the accelerated driver. + */ +static void +vtc_finalize(void *data __unused) +{ + struct vtc_te_softc *te; + struct vtc_vtout_softc *vo; + + printf("%s: finalize initial VT\n", vtc_device_name); + + te = TAILQ_FIRST(&vtc_te_devs); + if (te == NULL) + return; + + TAILQ_FOREACH(vo, &vtc_vtout_devs, vo_alldevs) { + if (vo->vo_init == NULL || (*vo->vo_init)(vo->vo_dev) == 0) + TAILQ_INSERT_TAIL(&te->te_vodevs, vo, vo_tedevs); + } +} +SYSINIT(vtc_finalize, SI_SUB_VTC, SI_ORDER_FIRST, vtc_finalize, NULL); + +static int +vtc_modevent(module_t mod, int type, void *data) +{ + + switch (type) { + case MOD_LOAD: + printf("%s: <console, video terminal>\n", vtc_device_name); + return (0); + + case MOD_UNLOAD: + return (0); + + case MOD_SHUTDOWN: + return (0); + } + + return (EOPNOTSUPP); +} +DEV_MODULE(vtc, vtc_modevent, NULL); Added: user/marcel/vtc.sys/dev/vtc/vtc_font.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/marcel/vtc.sys/dev/vtc/vtc_font.c Tue Apr 10 02:17:58 2012 (r234082) @@ -0,0 +1,130 @@ +/*- + * Copyright (c) 2005 Marcel Moolenaar + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> + +#include <dev/vtc/vtc.h> + +unsigned char vtc_font_8x16[95 * 16] = { +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x18,0x3c,0x3c,0x3c,0x18,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00, +0x00,0x66,0x66,0x66,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x6c,0x6c,0xfe,0x6c,0x6c,0x6c,0xfe,0x6c,0x6c,0x00,0x00,0x00,0x00, +0x18,0x18,0x7c,0xc6,0xc2,0xc0,0x7c,0x06,0x06,0x86,0xc6,0x7c,0x18,0x18,0x00,0x00, +0x00,0x00,0x00,0x00,0xc2,0xc6,0x0c,0x18,0x30,0x60,0xc6,0x86,0x00,0x00,0x00,0x00, +0x00,0x00,0x38,0x6c,0x6c,0x38,0x76,0xdc,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00, +0x00,0x30,0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x0c,0x18,0x30,0x30,0x30,0x30,0x30,0x30,0x18,0x0c,0x00,0x00,0x00,0x00, +0x00,0x00,0x30,0x18,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x18,0x30,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x66,0x3c,0xff,0x3c,0x66,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x7e,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x30,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x02,0x06,0x0c,0x18,0x30,0x60,0xc0,0x80,0x00,0x00,0x00,0x00, +0x00,0x00,0x38,0x6c,0xc6,0xc6,0xd6,0xd6,0xc6,0xc6,0x6c,0x38,0x00,0x00,0x00,0x00, +0x00,0x00,0x18,0x38,0x78,0x18,0x18,0x18,0x18,0x18,0x18,0x7e,0x00,0x00,0x00,0x00, +0x00,0x00,0x7c,0xc6,0x06,0x0c,0x18,0x30,0x60,0xc0,0xc6,0xfe,0x00,0x00,0x00,0x00, +0x00,0x00,0x7c,0xc6,0x06,0x06,0x3c,0x06,0x06,0x06,0xc6,0x7c,0x00,0x00,0x00,0x00, +0x00,0x00,0x0c,0x1c,0x3c,0x6c,0xcc,0xfe,0x0c,0x0c,0x0c,0x1e,0x00,0x00,0x00,0x00, +0x00,0x00,0xfe,0xc0,0xc0,0xc0,0xfc,0x06,0x06,0x06,0xc6,0x7c,0x00,0x00,0x00,0x00, +0x00,0x00,0x38,0x60,0xc0,0xc0,0xfc,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00, +0x00,0x00,0xfe,0xc6,0x06,0x06,0x0c,0x18,0x30,0x30,0x30,0x30,0x00,0x00,0x00,0x00, +0x00,0x00,0x7c,0xc6,0xc6,0xc6,0x7c,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00, +0x00,0x00,0x7c,0xc6,0xc6,0xc6,0x7e,0x06,0x06,0x06,0x0c,0x78,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x30,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x06,0x0c,0x18,0x30,0x60,0x30,0x18,0x0c,0x06,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x60,0x30,0x18,0x0c,0x06,0x0c,0x18,0x30,0x60,0x00,0x00,0x00,0x00, +0x00,0x00,0x7c,0xc6,0xc6,0x0c,0x18,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x7c,0xc6,0xc6,0xde,0xde,0xde,0xdc,0xc0,0x7c,0x00,0x00,0x00,0x00, +0x00,0x00,0x10,0x38,0x6c,0xc6,0xc6,0xfe,0xc6,0xc6,0xc6,0xc6,0x00,0x00,0x00,0x00, +0x00,0x00,0xfc,0x66,0x66,0x66,0x7c,0x66,0x66,0x66,0x66,0xfc,0x00,0x00,0x00,0x00, +0x00,0x00,0x3c,0x66,0xc2,0xc0,0xc0,0xc0,0xc0,0xc2,0x66,0x3c,0x00,0x00,0x00,0x00, +0x00,0x00,0xf8,0x6c,0x66,0x66,0x66,0x66,0x66,0x66,0x6c,0xf8,0x00,0x00,0x00,0x00, +0x00,0x00,0xfe,0x66,0x62,0x68,0x78,0x68,0x60,0x62,0x66,0xfe,0x00,0x00,0x00,0x00, +0x00,0x00,0xfe,0x66,0x62,0x68,0x78,0x68,0x60,0x60,0x60,0xf0,0x00,0x00,0x00,0x00, +0x00,0x00,0x3c,0x66,0xc2,0xc0,0xc0,0xde,0xc6,0xc6,0x66,0x3a,0x00,0x00,0x00,0x00, +0x00,0x00,0xc6,0xc6,0xc6,0xc6,0xfe,0xc6,0xc6,0xc6,0xc6,0xc6,0x00,0x00,0x00,0x00, +0x00,0x00,0x3c,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3c,0x00,0x00,0x00,0x00, +0x00,0x00,0x1e,0x0c,0x0c,0x0c,0x0c,0x0c,0xcc,0xcc,0xcc,0x78,0x00,0x00,0x00,0x00, +0x00,0x00,0xe6,0x66,0x66,0x6c,0x78,0x78,0x6c,0x66,0x66,0xe6,0x00,0x00,0x00,0x00, +0x00,0x00,0xf0,0x60,0x60,0x60,0x60,0x60,0x60,0x62,0x66,0xfe,0x00,0x00,0x00,0x00, +0x00,0x00,0xc6,0xee,0xfe,0xfe,0xd6,0xc6,0xc6,0xc6,0xc6,0xc6,0x00,0x00,0x00,0x00, +0x00,0x00,0xc6,0xe6,0xf6,0xfe,0xde,0xce,0xc6,0xc6,0xc6,0xc6,0x00,0x00,0x00,0x00, +0x00,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00, +0x00,0x00,0xfc,0x66,0x66,0x66,0x7c,0x60,0x60,0x60,0x60,0xf0,0x00,0x00,0x00,0x00, +0x00,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xd6,0xde,0x7c,0x0c,0x0e,0x00,0x00, +0x00,0x00,0xfc,0x66,0x66,0x66,0x7c,0x6c,0x66,0x66,0x66,0xe6,0x00,0x00,0x00,0x00, +0x00,0x00,0x7c,0xc6,0xc6,0x60,0x38,0x0c,0x06,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00, +0x00,0x00,0x7e,0x7e,0x5a,0x18,0x18,0x18,0x18,0x18,0x18,0x3c,0x00,0x00,0x00,0x00, +0x00,0x00,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00, +0x00,0x00,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0x6c,0x38,0x10,0x00,0x00,0x00,0x00, +0x00,0x00,0xc6,0xc6,0xc6,0xc6,0xd6,0xd6,0xd6,0xfe,0xee,0x6c,0x00,0x00,0x00,0x00, +0x00,0x00,0xc6,0xc6,0x6c,0x7c,0x38,0x38,0x7c,0x6c,0xc6,0xc6,0x00,0x00,0x00,0x00, +0x00,0x00,0x66,0x66,0x66,0x66,0x3c,0x18,0x18,0x18,0x18,0x3c,0x00,0x00,0x00,0x00, +0x00,0x00,0xfe,0xc6,0x86,0x0c,0x18,0x30,0x60,0xc2,0xc6,0xfe,0x00,0x00,0x00,0x00, +0x00,0x00,0x3c,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x3c,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x80,0xc0,0xe0,0x70,0x38,0x1c,0x0e,0x06,0x02,0x00,0x00,0x00,0x00, +0x00,0x00,0x3c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x3c,0x00,0x00,0x00,0x00, +0x10,0x38,0x6c,0xc6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00, +0x00,0x30,0x18,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x78,0x0c,0x7c,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00, +0x00,0x00,0xe0,0x60,0x60,0x78,0x6c,0x66,0x66,0x66,0x66,0x7c,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x7c,0xc6,0xc0,0xc0,0xc0,0xc6,0x7c,0x00,0x00,0x00,0x00, +0x00,0x00,0x1c,0x0c,0x0c,0x3c,0x6c,0xcc,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x7c,0xc6,0xfe,0xc0,0xc0,0xc6,0x7c,0x00,0x00,0x00,0x00, +0x00,0x00,0x1c,0x36,0x32,0x30,0x78,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x76,0xcc,0xcc,0xcc,0xcc,0xcc,0x7c,0x0c,0xcc,0x78,0x00, +0x00,0x00,0xe0,0x60,0x60,0x6c,0x76,0x66,0x66,0x66,0x66,0xe6,0x00,0x00,0x00,0x00, +0x00,0x00,0x18,0x18,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x3c,0x00,0x00,0x00,0x00, +0x00,0x00,0x06,0x06,0x00,0x0e,0x06,0x06,0x06,0x06,0x06,0x06,0x66,0x66,0x3c,0x00, +0x00,0x00,0xe0,0x60,0x60,0x66,0x6c,0x78,0x78,0x6c,0x66,0xe6,0x00,0x00,0x00,0x00, +0x00,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3c,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0xec,0xfe,0xd6,0xd6,0xd6,0xd6,0xc6,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0xdc,0x66,0x66,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0xdc,0x66,0x66,0x66,0x66,0x66,0x7c,0x60,0x60,0xf0,0x00, +0x00,0x00,0x00,0x00,0x00,0x76,0xcc,0xcc,0xcc,0xcc,0xcc,0x7c,0x0c,0x0c,0x1e,0x00, +0x00,0x00,0x00,0x00,0x00,0xdc,0x76,0x66,0x60,0x60,0x60,0xf0,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x7c,0xc6,0x60,0x38,0x0c,0xc6,0x7c,0x00,0x00,0x00,0x00, +0x00,0x00,0x10,0x30,0x30,0xfc,0x30,0x30,0x30,0x30,0x36,0x1c,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0xc6,0xc6,0xc6,0xc6,0xc6,0x6c,0x38,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0xc6,0xc6,0xd6,0xd6,0xd6,0xfe,0x6c,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0xc6,0x6c,0x38,0x38,0x38,0x6c,0xc6,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0x7e,0x06,0x0c,0xf8,0x00, +0x00,0x00,0x00,0x00,0x00,0xfe,0xcc,0x18,0x30,0x60,0xc6,0xfe,0x00,0x00,0x00,0x00, +0x00,0x00,0x0e,0x18,0x18,0x18,0x70,0x18,0x18,0x18,0x18,0x0e,0x00,0x00,0x00,0x00, +0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00, +0x00,0x00,0x70,0x18,0x18,0x18,0x0e,0x18,0x18,0x18,0x18,0x70,0x00,0x00,0x00,0x00, +0x00,0x76,0xdc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; Added: user/marcel/vtc.sys/dev/vtc/vtc_logo.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/marcel/vtc.sys/dev/vtc/vtc_logo.c Tue Apr 10 02:17:58 2012 (r234082) @@ -0,0 +1,746 @@ +/*- + * Copyright (c) 2005 Marcel Moolenaar + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> + +#include <dev/vtc/vtc.h> + +#define __ 0 +#define BR 4 +#define BW 15 +#define RB 64 +#define RR 68 +#define RW 79 +#define WB 240 +#define WR 244 +#define WW 255 + +int vtc_logo4_width = 232; +int vtc_logo4_height = 140; +unsigned char vtc_logo4_image[] = { +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +RR,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,BR,BR,BR, +__,RB,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,BR,RB,RR, +RR,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,RB,BR,BR,BR,RR,RR, +RR,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,BR,BR,RR,RR,RR,RR, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,BR,RB,RR,BR,RR,RR,RR,RB, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,RR,BR,RR,RR,RR,BR,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,BR,BR,RR,RR,RR,RB,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,RR,RR,RR,RR,RR,RB,RB,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,RB,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,RB,RR,RR,RR,RB,RR,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,BR,BR,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,RB,RR,RR,RR,RR,BR,RB,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,BR,RB,RB,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,BR,RR,RR,RR,RR,__,RB,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,RR,RR,RR,RB,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,BR,RR,RR,RR,RR,RB,RB,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,BR,RB,RR,RR,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,BR,BR,RR,RR,RR,RR,RB,RB,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,BR,BR,RR,RB,BR,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,RR,RR,RR,RR,RR,RR,BR,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,RR,RR,RR,RR,RR,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,RB,RR,RR,RR,RR,RB,RB,RB,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,RR,RR,RR,RB,RB,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,BR,RR,RR,RR,RR,RR,BR,BR,BR,__,__,__,__, +__,__,__,__,__,__,__,__,BR,RR,RR,RR,RR,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,BR,BR,RR,RR,RR,RR,RB,RB,RB,RR,RR,RR,RR, +__,__,__,__,__,__,__,__,BR,RR,RR,RR,RR,BR,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,BR,RR,RR,RR,RR,RR,RR,BR,BR,RR,RR,RR,RR, +BR,BR,__,__,__,__,RB,RR,RR,RR,RR,RR,RB,RB,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,BR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR, +RR,RR,__,RB,BR,RR,BR,RR,RR,RR,RR,RR,BR,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,RR,RR,RR,BR,RR,RR,RR,RR,RR,RR,RR,RR, +RR,RR,RR,RB,RR,RR,RR,RR,RR,RR,RR,__,RB,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,BR,RR,RR,RR,BR,RR,RR,RR,RR,RR,RR,RR, +RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,BR,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,RR,RR,RR,RB,RR,RR,RR,RR,RR,RR,RB,RR, +RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RB,RB,RB,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR, +RR,RR,RR,RR,RR,RR,RR,RR,RR,RB,BR,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR, +RR,RR,RR,RR,RR,RR,RR,RR,RR,RB,RB,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR, +BR,RR,RR,RR,RR,RR,RR,RR,BR,BR,BR,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,BR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR, +RB,RR,RR,RR,RR,RR,RR,RB,RB,RB,RB,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,RB,BR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR, +RB,RR,RR,RR,RR,RR,RR,RR,__,BR,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,RB,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR,RR, +BR,RR,RR,RR,RR,RR,RB,RB,BR,RB,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,BR,BR,RR,WW,WW,RR,RR,RB,RR,WR,RB,RR,RR,RR,RR, +RB,RR,RR,RR,RR,RB,RB,BR,RB,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,RR,RB,RW,WW,WW,RB,RR,RW,WW,WW,WR,BR,RR,RR,RR, +BR,RR,RR,RR,RB,BR,BR,RB,RB,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,BR,RR,RR,WW,WW,WW,WR,BW,WW,WW,WW,WW,RB,RR,RR,RR, +RB,RR,RR,RB,BR,__,RB,BR,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,RR,RW,WW,WW,WR,BR,WW,WW,WW,WW,WW,WR,RR,RR,RR, +BR,RR,RR,RB,RB,RB,RB,RB,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,BR,RR,WW,WW,WR,BR,WW,WW,WW,WW,WW,WW,WR,BR,RR,RR, +RR,RR,RR,RR,RB,RB,BR,BR,RR,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,RW,WW,WW,WB,RR,WW,WW,WW,WW,WW,WW,WW,RR,RR,RR, +RR,RR,RR,RR,RR,BR,RB,RB,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,BR,WW,WW,WW,RB,RW,WW,WW,WW,WW,WW,WW,WW,BR,RR,RR, +RR,RR,RR,RR,RR,RB,BR,BR,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,BR,WW,WW,WR,BW,WW,WW,WW,WW,WW,WW,WW,WR,RR,RR,RR, +RR,RR,RR,RR,RB,RB,RB,RB,RR,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,BR,WW,WW,WB,RW,WW,WW,WW,WW,WW,WW,WW,WR,RR,RR,RR, +RR,RR,RR,RR,RR,BR,BR,BR,BR,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,RW,WW,WW,BW,WW,WW,WW,WW,WW,WW,WW,WW,WR,RR,RR,RR, +RR,RR,RR,RR,RB,RB,RB,RB,RR,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, + +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,BR,WW,WW,WW,RW,WW,WW,WW,WW,WW,WW,WW,WW,WR,BR,RR,RR, +RR,RR,RR,RR,BR,BR,BR,__,BR,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, +__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__, *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201204100217.q3A2HwiC097109>