svn commit: r234082 - in user/marcel/vtc.sys/dev/vtc: . vtout
vtout/gmch vtout/vga
Marcel Moolenaar
marcel at FreeBSD.org
Tue Apr 10 02:17:59 UTC 2012
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 ***
More information about the svn-src-user
mailing list