From 9f7e4a2f04ce2e40858cece46f38c8ad4aedbd8c Mon Sep 17 00:00:00 2001 From: uch Date: Fri, 9 Feb 2001 19:43:23 +0000 Subject: [PATCH] add hpcmips/hpcsh common device directory put bicons. (builtin console driver that don't require actual device driver) --- sys/dev/hpc/bicons.c | 578 +++++++++++++++++++++++++++++++++++++++ sys/dev/hpc/bicons.h | 38 +++ sys/dev/hpc/biconsdev.c | 242 ++++++++++++++++ sys/dev/hpc/biconsvar.h | 42 +++ sys/dev/hpc/bifont.c | 334 ++++++++++++++++++++++ sys/dev/hpc/files.bicons | 7 + 6 files changed, 1241 insertions(+) create mode 100644 sys/dev/hpc/bicons.c create mode 100644 sys/dev/hpc/bicons.h create mode 100644 sys/dev/hpc/biconsdev.c create mode 100644 sys/dev/hpc/biconsvar.h create mode 100644 sys/dev/hpc/bifont.c create mode 100644 sys/dev/hpc/files.bicons diff --git a/sys/dev/hpc/bicons.c b/sys/dev/hpc/bicons.c new file mode 100644 index 000000000000..b310c676db01 --- /dev/null +++ b/sys/dev/hpc/bicons.c @@ -0,0 +1,578 @@ +/* $NetBSD: bicons.c,v 1.1 2001/02/09 19:43:23 uch Exp $ */ + +/*- + * Copyright (c) 1999-2001 + * Shin Takemura and PocketBSD Project. 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the PocketBSD project + * and its contributors. + * 4. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + * + */ + +#define HALF_FONT + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +extern u_int8_t font_clR8x8_data[]; +extern u_int8_t font_clB8x8_data[]; +#define FONT_HEIGHT 8 +#define FONT_WIDTH 1 + +static void put_oxel_D2_M2L_3(u_int8_t *, u_int8_t, u_int8_t); +static void put_oxel_D2_M2L_3x2(u_int8_t *, u_int8_t, u_int8_t); +static void put_oxel_D2_M2L_0(u_int8_t *, u_int8_t, u_int8_t); +static void put_oxel_D2_M2L_0x2(u_int8_t *, u_int8_t, u_int8_t); +static void put_oxel_D4_M2L_F(u_int8_t *, u_int8_t, u_int8_t); +static void put_oxel_D4_M2L_Fx2(u_int8_t *, u_int8_t, u_int8_t); +static void put_oxel_D4_M2L_0(u_int8_t *, u_int8_t, u_int8_t); +static void put_oxel_D4_M2L_0x2(u_int8_t *, u_int8_t, u_int8_t); +static void put_oxel_D8_00(u_int8_t *, u_int8_t, u_int8_t); +static void put_oxel_D8_FF(u_int8_t *, u_int8_t, u_int8_t); +static void put_oxel_D16_0000(u_int8_t *, u_int8_t, u_int8_t); +static void put_oxel_D16_FFFF(u_int8_t *, u_int8_t, u_int8_t); + +struct { + int type; + char *name; + void (*func)(u_int8_t *, u_int8_t, u_int8_t); + u_int8_t clear_byte; + int16_t oxel_bytes; +} fb_table[] = { + { BIFB_D2_M2L_3, BIFBN_D2_M2L_3, + put_oxel_D2_M2L_3, 0, 2 }, + { BIFB_D2_M2L_3x2, BIFBN_D2_M2L_3x2, + put_oxel_D2_M2L_3x2, 0, 1 }, + { BIFB_D2_M2L_0, BIFBN_D2_M2L_0, + put_oxel_D2_M2L_0, 0xff, 2 }, + { BIFB_D2_M2L_0x2, BIFBN_D2_M2L_0x2, + put_oxel_D2_M2L_0x2, 0xff, 1 }, + { BIFB_D4_M2L_F, BIFBN_D4_M2L_F, + put_oxel_D4_M2L_F, 0x00, 4 }, + { BIFB_D4_M2L_Fx2, BIFBN_D4_M2L_Fx2, + put_oxel_D4_M2L_Fx2, 0x00, 2 }, + { BIFB_D4_M2L_0, BIFBN_D4_M2L_0, + put_oxel_D4_M2L_0, 0xff, 4 }, + { BIFB_D4_M2L_0x2, BIFBN_D4_M2L_0x2, + put_oxel_D4_M2L_0x2, 0xff, 2 }, + { BIFB_D8_00, BIFBN_D8_00, + put_oxel_D8_00, 0xff, 8 }, + { BIFB_D8_FF, BIFBN_D8_FF, + put_oxel_D8_FF, 0x00, 8 }, + { BIFB_D16_0000, BIFBN_D16_0000, + put_oxel_D16_0000, 0xff, 16 }, + { BIFB_D16_FFFF, BIFBN_D16_FFFF, + put_oxel_D16_FFFF, 0x00, 16 }, +}; +#define FB_TABLE_SIZE (sizeof(fb_table)/sizeof(*fb_table)) + +static u_int8_t *fb_vram; +static int16_t fb_line_bytes; +static u_int8_t fb_clear_byte; +int16_t bicons_ypixel; +int16_t bicons_xpixel; +#ifdef HALF_FONT +static int16_t fb_oxel_bytes = 1; +int16_t bicons_width = 80; +void (*fb_put_oxel)(u_int8_t *, u_int8_t, u_int8_t) = put_oxel_D2_M2L_3x2; +#else /* HALF_FONT */ +static int16_t fb_oxel_bytes = 2; +int16_t bicons_width = 40; +void (*fb_put_oxel)(u_int8_t *, u_int8_t, u_int8_t) = put_oxel_D2_M2L_3; +#endif /* HALF_FONT */ +int16_t bicons_height; +static int16_t curs_x; +static int16_t curs_y; + +cdev_decl(biconsdev); + +static int bicons_priority; +void biconscninit(struct consdev *); +void biconscnprobe(struct consdev *); +void biconscnputc(dev_t, int); +int biconscngetc(dev_t); /* harmless place holder */ + +static void draw_char(int, int, int); +static void clear(int, int); +static void scroll(int, int, int); +static void bicons_puts(char *); +static void bicons_printf(const char *, ...) __attribute__((__unused__)); + +void +biconscninit(struct consdev *cndev) +{ + int fb_index = -1; + + for (fb_index = 0; fb_index < FB_TABLE_SIZE; fb_index++) + if (fb_table[fb_index].type == bootinfo->fb_type) + break; + + if (FB_TABLE_SIZE <= fb_index || fb_index == -1) { + /* + * Unknown frame buffer type, but what can I do ? + */ + fb_index = 0; + } + + fb_vram = (u_int8_t *)bootinfo->fb_addr; + fb_line_bytes = bootinfo->fb_line_bytes; + bicons_xpixel = bootinfo->fb_width; + bicons_ypixel = bootinfo->fb_height; + + fb_put_oxel = fb_table[fb_index].func; + fb_clear_byte = fb_table[fb_index].clear_byte; + fb_oxel_bytes = fb_table[fb_index].oxel_bytes; + + bicons_width = bicons_xpixel / (8 * FONT_WIDTH); + bicons_height = bicons_ypixel / FONT_HEIGHT; + clear(0, bicons_ypixel); + + curs_x = 0; + curs_y = 0; + + bicons_puts("builtin console type = "); + bicons_puts(fb_table[fb_index].name); + bicons_puts("\n"); +} + +void +biconscnprobe(struct consdev *cndev) +{ + int maj; + + /* locate the major number */ + for (maj = 0; maj < nchrdev; maj++) + if (cdevsw[maj].d_open == biconsdevopen) + break; + + cndev->cn_dev = makedev(maj, 0); + cndev->cn_pri = bicons_priority; +} + +void +bicons_set_priority(int priority) +{ + bicons_priority = priority; +} + +int +biconscngetc(dev_t dev) +{ + printf("no input method. reboot me.\n"); + while (1) + ; + /* NOTREACHED */ +} + +void +biconscnputc(dev_t dev, int c) +{ + int line_feed = 0; + + switch (c) { + case 0x08: /* back space */ + if (--curs_x < 0) { + curs_x = 0; + } + /* erase character ar cursor position */ + draw_char(curs_x, curs_y, ' '); + break; + case '\r': + curs_x = 0; + break; + case '\n': + curs_x = 0; + line_feed = 1; + break; + default: + draw_char(curs_x, curs_y, c); + if (bicons_width <= ++curs_x) { + curs_x = 0; + line_feed = 1; + } + } + + if (line_feed) { + if (bicons_height <= ++curs_y) { + /* scroll up */ + scroll(FONT_HEIGHT, (bicons_height - 1) * FONT_HEIGHT, + - FONT_HEIGHT); + clear((bicons_height - 1) * FONT_HEIGHT, FONT_HEIGHT); + curs_y--; + } + } +} + +void +bicons_puts(char *s) +{ + while (*s) + biconscnputc(NULL, *s++); +} + + +void +bicons_putn(const char *s, int n) +{ + while (0 < n--) + biconscnputc(NULL, *s++); +} + +void +#ifdef __STDC__ +bicons_printf(const char *fmt, ...) +#else +bicons_printf(fmt, va_alist) + char *fmt; + va_dcl +#endif +{ + va_list ap; + char buf[0x100]; + + va_start(ap, fmt); + vsnprintf(buf, sizeof(buf), fmt, ap); + va_end(ap); + bicons_puts(buf); +} + +static void +draw_char(int x, int y, int c) +{ + int i; + u_int8_t *p; + + if (!fb_vram) + return; + + p = &fb_vram[(y * FONT_HEIGHT * fb_line_bytes) + + x * FONT_WIDTH * fb_oxel_bytes]; + for (i = 0; i < FONT_HEIGHT; i++) { + (*fb_put_oxel)(p, font_clR8x8_data + [FONT_WIDTH * (FONT_HEIGHT * c + i)], 0xff); + p += (fb_line_bytes); + } +} + +static void +clear(int y, int height) +{ + u_int8_t *p; + + if (!fb_vram) + return; + + p = &fb_vram[y * fb_line_bytes]; + + while (0 < height--) { + memset(p, fb_clear_byte, + bicons_width * fb_oxel_bytes * FONT_WIDTH); + p += fb_line_bytes; + } +} + +static void +scroll(int y, int height, int d) +{ + u_int8_t *from, *to; + + if (!fb_vram) + return; + + if (d < 0) { + from = &fb_vram[y * fb_line_bytes]; + to = from + d * fb_line_bytes; + while (0 < height--) { + memcpy(to, from, bicons_width * fb_oxel_bytes); + from += fb_line_bytes; + to += fb_line_bytes; + } + } else { + from = &fb_vram[(y + height - 1) * fb_line_bytes]; + to = from + d * fb_line_bytes; + while (0 < height--) { + memcpy(to, from, bicons_xpixel * fb_oxel_bytes / 8); + from -= fb_line_bytes; + to -= fb_line_bytes; + } + } +} + +/*============================================================================= + * + * D2_M2L_3 + * + */ +static void +put_oxel_D2_M2L_3(u_int8_t *xaddr, u_int8_t data, u_int8_t mask) +{ +#if 1 + u_int16_t *addr = (u_int16_t *)xaddr; + static u_int16_t map0[] = { + 0x0000, 0x0300, 0x0c00, 0x0f00, 0x3000, 0x3300, 0x3c00, 0x3f00, + 0xc000, 0xc300, 0xcc00, 0xcf00, 0xf000, 0xf300, 0xfc00, 0xff00, + }; + static u_int16_t map1[] = { + 0x0000, 0x0003, 0x000c, 0x000f, 0x0030, 0x0033, 0x003c, 0x003f, + 0x00c0, 0x00c3, 0x00cc, 0x00cf, 0x00f0, 0x00f3, 0x00fc, 0x00ff, + }; + *addr = (map1[data >> 4] | map0[data & 0x0f]); +#else + static u_int8_t map[] = { + 0x00, 0x03, 0x0c, 0x0f, 0x30, 0x33, 0x3c, 0x3f, + 0xc0, 0xc3, 0xcc, 0xcf, 0xf0, 0xf3, 0xfc, 0xff, + }; + u_int8_t *addr = xaddr; + + *addr++ = (map[(data >> 4) & 0x0f] & map[(mask >> 4) & 0x0f]) | + (*addr & ~map[(mask >> 4) & 0x0f]); + *addr = (map[(data >> 0) & 0x0f] & map[(mask >> 0) & 0x0f]) | + (*addr & ~map[(mask >> 0) & 0x0f]); +#endif +} + +/*============================================================================= + * + * D2_M2L_3x2 + * + */ +static void +put_oxel_D2_M2L_3x2(u_int8_t *xaddr, u_int8_t data, u_int8_t mask) +{ + register u_int8_t odd = (data & 0xaa); + register u_int8_t even = (data & 0x55); + + *xaddr = (odd | (even << 1)) | ((odd >> 1) & even); +} + +/*============================================================================= + * + * D2_M2L_0 + * + */ +static void +put_oxel_D2_M2L_0(u_int8_t *xaddr, u_int8_t data, u_int8_t mask) +{ +#if 1 + u_int16_t *addr = (u_int16_t *)xaddr; + static u_int16_t map0[] = { + 0xff00, 0xfc00, 0xf300, 0xf000, 0xcf00, 0xcc00, 0xc300, 0xc000, + 0x3f00, 0x3c00, 0x3300, 0x3000, 0x0f00, 0x0c00, 0x0300, 0x0000, + }; + static u_int16_t map1[] = { + 0x00ff, 0x00fc, 0x00f3, 0x00f0, 0x00cf, 0x00cc, 0x00c3, 0x00c0, + 0x003f, 0x003c, 0x0033, 0x0030, 0x000f, 0x000c, 0x0003, 0x0000, + }; + *addr = (map1[data >> 4] | map0[data & 0x0f]); +#else + static u_int8_t map[] = { + 0x00, 0x03, 0x0c, 0x0f, 0x30, 0x33, 0x3c, 0x3f, + 0xc0, 0xc3, 0xcc, 0xcf, 0xf0, 0xf3, 0xfc, 0xff, + }; + u_int8_t *addr = xaddr; + + *addr++ = (~(map[(data >> 4) & 0x0f] & map[(mask >> 4) & 0x0f])) | + (*addr & ~map[(mask >> 4) & 0x0f]); + *addr = (~(map[(data >> 0) & 0x0f] & map[(mask >> 0) & 0x0f])) | + (*addr & ~map[(mask >> 0) & 0x0f]); +#endif +} + +/*============================================================================= + * + * D2_M2L_0x2 + * + */ +static void +put_oxel_D2_M2L_0x2(u_int8_t *xaddr, u_int8_t data, u_int8_t mask) +{ + register u_int8_t odd = (data & 0xaa); + register u_int8_t even = (data & 0x55); + + *xaddr = ~((odd | (even << 1)) | ((odd >> 1) & even)); +} + +/*============================================================================= + * + * D4_M2L_F + * + */ +static void +put_oxel_D4_M2L_F(u_int8_t *xaddr, u_int8_t data, u_int8_t mask) +{ + u_int32_t *addr = (u_int32_t *)xaddr; + static u_int32_t map[] = { + 0x0000, 0x0f00, 0xf000, 0xff00, 0x000f, 0x0f0f, 0xf00f, 0xff0f, + 0x00f0, 0x0ff0, 0xf0f0, 0xfff0, 0x00ff, 0x0fff, 0xf0ff, 0xffff, + }; + *addr = (map[data >> 4] | (map[data & 0x0f] << 16)); +} + +/*============================================================================= + * + * D4_M2L_Fx2 + * + */ +static void +put_oxel_D4_M2L_Fx2(u_int8_t *xaddr, u_int8_t data, u_int8_t mask) +{ + u_int16_t *addr = (u_int16_t *)xaddr; + static u_int16_t map[] = { + 0x00, 0x08, 0x08, 0x0f, 0x80, 0x88, 0x88, 0x8f, + 0x80, 0x88, 0x88, 0x8f, 0xf0, 0xf8, 0xf8, 0xff, + }; + + *addr = (map[data >> 4] | (map[data & 0x0f] << 8)); +} + +/*============================================================================= + * + * D4_M2L_0 + * + */ +static void +put_oxel_D4_M2L_0(u_int8_t *xaddr, u_int8_t data, u_int8_t mask) +{ + u_int32_t *addr = (u_int32_t *)xaddr; + static u_int32_t map[] = { + 0xffff, 0xf0ff, 0x0fff, 0x00ff, 0xfff0, 0xf0f0, 0x0ff0, 0x00f0, + 0xff0f, 0xf00f, 0x0f0f, 0x000f, 0xff00, 0xf000, 0x0f00, 0x0000, + }; + *addr = (map[data >> 4] | (map[data & 0x0f] << 16)); +} + +/*============================================================================= + * + * D4_M2L_0x2 + * + */ +static void +put_oxel_D4_M2L_0x2(u_int8_t *xaddr, u_int8_t data, u_int8_t mask) +{ + u_int16_t *addr = (u_int16_t *)xaddr; + static u_int16_t map[] = { + 0xff, 0xf8, 0xf8, 0xf0, 0x8f, 0x88, 0x88, 0x80, + 0x8f, 0x88, 0x88, 0x80, 0x0f, 0x08, 0x08, 0x00, + }; + + *addr = (map[data >> 4] | (map[data & 0x0f] << 8)); +} + +/*============================================================================= + * + * D8_00 + * + */ +static void +put_oxel_D8_00(u_int8_t *xaddr, u_int8_t data, u_int8_t mask) +{ + int i; + u_int8_t *addr = xaddr; + + for (i = 0; i < 8; i++) { + if (mask & 0x80) { + *addr = (data & 0x80) ? 0x00 : 0xFF; + } + addr++; + data <<= 1; + mask <<= 1; + } +} + +/*============================================================================= + * + * D8_FF + * + */ +static void +put_oxel_D8_FF(u_int8_t *xaddr, u_int8_t data, u_int8_t mask) +{ + int i; + u_int8_t *addr = xaddr; + + for (i = 0; i < 8; i++) { + if (mask & 0x80) { + *addr = (data & 0x80) ? 0xFF : 0x00; + } + addr++; + data <<= 1; + mask <<= 1; + } +} + +/*============================================================================= + * + * D16_0000 + * + */ +static void +put_oxel_D16_0000(u_int8_t *xaddr, u_int8_t data, u_int8_t mask) +{ + int i; + u_int16_t *addr = (u_int16_t *)xaddr; + + for (i = 0; i < 8; i++) { + if (mask & 0x80) { + *addr = (data & 0x80) ? 0x0000 : 0xFFFF; + } + addr++; + data <<= 1; + mask <<= 1; + } +} + +/*============================================================================= + * + * D16_FFFF + * + */ +static void +put_oxel_D16_FFFF(u_int8_t *xaddr, u_int8_t data, u_int8_t mask) +{ + int i; + u_int16_t *addr = (u_int16_t *)xaddr; + + for (i = 0; i < 8; i++) { + if (mask & 0x80) { + *addr = (data & 0x80) ? 0xFFFF : 0x0000; + } + addr++; + data <<= 1; + mask <<= 1; + } +} diff --git a/sys/dev/hpc/bicons.h b/sys/dev/hpc/bicons.h new file mode 100644 index 000000000000..9682b64fbb65 --- /dev/null +++ b/sys/dev/hpc/bicons.h @@ -0,0 +1,38 @@ +/* $NetBSD: bicons.h,v 1.1 2001/02/09 19:43:23 uch Exp $ */ + +/*- + * Copyright (c) 1999-2001 + * Shin Takemura and PocketBSD Project. 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the PocketBSD project + * and its contributors. + * 4. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + * + */ + +void bicons_set_priority(int); +void bicons_putn(const char *, int); diff --git a/sys/dev/hpc/biconsdev.c b/sys/dev/hpc/biconsdev.c new file mode 100644 index 000000000000..c33389a9392f --- /dev/null +++ b/sys/dev/hpc/biconsdev.c @@ -0,0 +1,242 @@ +/* $NetBSD: biconsdev.c,v 1.1 2001/02/09 19:43:23 uch Exp $ */ + +/*- + * Copyright (c) 1999-2001 + * Shin Takemura and PocketBSD Project. 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the PocketBSD project + * and its contributors. + * 4. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + * + */ +/* + * Copyright (c) 1995 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Ted Lemon. + * + * 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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 "biconsdev.h" +#if NBICONSDEV > 0 + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +struct tty biconsdev_tty[NBICONSDEV]; +void biconsdevattach(int); +static void biconsdev_output(struct tty *); + +cdev_decl(biconsdev); + +void +biconsdevattach(int n) +{ + struct tty *tp = &biconsdev_tty[0]; + int maj; + + /* locate the major number */ + for (maj = 0; maj < nchrdev; maj++) + if (cdevsw[maj].d_open == biconsdevopen) + break; + + /* Set up the tty queues now... */ + clalloc(&tp->t_rawq, 1024, 1); + clalloc(&tp->t_canq, 1024, 1); + /* output queue doesn't need quoting */ + clalloc(&tp->t_outq, 1024, 0); + /* Set default line discipline. */ + tp->t_linesw = linesw[0]; + + + tp->t_dev = makedev(maj, 0); + tp->t_ispeed = tp->t_ospeed = TTYDEF_SPEED; + tp->t_param = (int (*)(struct tty *, struct termios *))nullop; + tp->t_winsize.ws_row = bicons_height; + tp->t_winsize.ws_col = bicons_width; + tp->t_winsize.ws_xpixel = bicons_xpixel; + tp->t_winsize.ws_ypixel = bicons_ypixel; + tp->t_oproc = biconsdev_output; +} + + +static void +biconsdev_output(struct tty *tp) +{ + int s, n; + char buf[OBUFSIZ]; + + s = spltty(); + if (tp->t_state & (TS_TIMEOUT | TS_BUSY | TS_TTSTOP)) { + splx(s); + return; + } + tp->t_state |= TS_BUSY; + splx(s); + n = q_to_b(&tp->t_outq, buf, sizeof(buf)); + bicons_putn(buf, n); + + s = spltty(); + tp->t_state &= ~TS_BUSY; + /* Come back if there's more to do */ + if (tp->t_outq.c_cc) { + tp->t_state |= TS_TIMEOUT; + callout_reset(&tp->t_rstrt_ch, 1, ttrstrt, tp); + } + if (tp->t_outq.c_cc <= tp->t_lowat) { + if (tp->t_state&TS_ASLEEP) { + tp->t_state &= ~TS_ASLEEP; + wakeup((caddr_t)&tp->t_outq); + } + selwakeup(&tp->t_wsel); + } + splx(s); +} + + +int +biconsdevopen(dev_t dev, int flag, int mode, struct proc *p) +{ + struct tty *tp = &biconsdev_tty[0]; + int status; + + if ((tp->t_state & TS_ISOPEN) == 0) { + /* + * Leave baud rate alone! + */ + ttychars(tp); + tp->t_iflag = TTYDEF_IFLAG; + tp->t_oflag = TTYDEF_OFLAG; + tp->t_lflag = TTYDEF_LFLAG; + tp->t_cflag = TTYDEF_CFLAG; + tp->t_state = TS_ISOPEN | TS_CARR_ON; + (void)(*tp->t_param)(tp, &tp->t_termios); + ttsetwater(tp); + } else if (tp->t_state & TS_XCLUDE && p->p_ucred->cr_uid != 0) + return (EBUSY); + + status = (*tp->t_linesw->l_open)(dev, tp); + return status; +} + + +int +biconsdevclose(dev_t dev, int flag, int mode, struct proc *p) +{ + struct tty *tp = &biconsdev_tty[0]; + + (*tp->t_linesw->l_close)(tp, flag); + ttyclose(tp); + + return (0); +} + + +int +biconsdevread(dev_t dev, struct uio *uio, int flag) +{ + struct tty *tp = &biconsdev_tty[0]; + + return ((*tp->t_linesw->l_read)(tp, uio, flag)); +} + + +int +biconsdevwrite(dev_t dev, struct uio *uio, int flag) +{ + struct tty *tp = &biconsdev_tty[0]; + + return ((*tp->t_linesw->l_write)(tp, uio, flag)); +} + + +struct tty * +biconsdevtty(dev_t dev) +{ + struct tty *tp = &biconsdev_tty[0]; + + return (tp); +} + +int +biconsdevioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p) +{ + struct tty *tp = &biconsdev_tty[0]; + int error; + + if ((error = tp->t_linesw->l_ioctl(tp, cmd, data, flag, p)) >= 0) + return (error); + if ((error = ttioctl(tp, cmd, data, flag, p)) >= 0) + return (error); + return (ENOTTY); +} + +void +biconsdevstop(struct tty *tp, int rw) +{ + +} + +#endif /* NBICONSDEV > 0 */ diff --git a/sys/dev/hpc/biconsvar.h b/sys/dev/hpc/biconsvar.h new file mode 100644 index 000000000000..7329ac407a88 --- /dev/null +++ b/sys/dev/hpc/biconsvar.h @@ -0,0 +1,42 @@ +/* $NetBSD: biconsvar.h,v 1.1 2001/02/09 19:43:23 uch Exp $ */ + +/*- + * Copyright (c) 1999-2001 + * Shin Takemura and PocketBSD Project. 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the PocketBSD project + * and its contributors. + * 4. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + * + */ + +struct consdev; +extern struct consdev builtincd; +extern int16_t bicons_ypixel; +extern int16_t bicons_xpixel; +extern int16_t bicons_width; +extern int16_t bicons_height; diff --git a/sys/dev/hpc/bifont.c b/sys/dev/hpc/bifont.c new file mode 100644 index 000000000000..32027bdffd2b --- /dev/null +++ b/sys/dev/hpc/bifont.c @@ -0,0 +1,334 @@ +/* $NetBSD: bifont.c,v 1.1 2001/02/09 19:43:23 uch Exp $ */ + +/*- + * Copyright (c) 1999 + * Shin Takemura and PocketBSD Project. 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the PocketBSD project + * and its contributors. + * 4. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + * + */ + +unsigned char font_clB8x8_data[] = { +/* +COMMENT $XConsortium: clB8x8.bdf,v 1.2 94/04/11 12:07:01 gildea Exp $ +COMMENT +COMMENT Copyright 1989 Dale Schumacher, dal@syntel.mn.org +COMMENT 399 Beacon Ave. +COMMENT St. Paul, MN 55104-3527 +COMMENT +COMMENT Permission to use, copy, modify, and distribute this software and +COMMENT its documentation for any purpose and without fee is hereby +COMMENT granted, provided that the above copyright notice appear in all +COMMENT copies and that both that copyright notice and this permission +COMMENT notice appear in supporting documentation, and that the name of +COMMENT Dale Schumacher not be used in advertising or publicity pertaining to +COMMENT distribution of the software without specific, written prior +COMMENT permission. Dale Schumacher makes no representations about the +COMMENT suitability of this software for any purpose. It is provided "as +COMMENT is" without express or implied warranty. +*/ +/* code 00 */ 0xff,0xdb,0x00,0x00,0x00,0x81,0xc3,0xff, +/* code 01 */ 0x08,0x14,0x22,0x77,0x14,0x14,0x14,0x1c, +/* code 02 */ 0x1c,0x14,0x14,0x14,0x77,0x22,0x14,0x08, +/* code 03 */ 0x08,0x0c,0x7a,0x41,0x7a,0x0c,0x08,0x00, +/* code 04 */ 0x08,0x18,0x2f,0x41,0x2f,0x18,0x08,0x00, +/* code 05 */ 0x3e,0x5d,0x6b,0x77,0x6b,0x5d,0x3e,0x00, +/* code 06 */ 0x7f,0x7f,0x7f,0x7e,0x7d,0x7b,0x77,0x00, +/* code 07 */ 0x77,0x6b,0x5d,0x3e,0x5d,0x6b,0x77,0x00, +/* code 08 */ 0x60,0x50,0x60,0x53,0x64,0x02,0x01,0x06, +/* code 09 */ 0x50,0x50,0x70,0x57,0x52,0x02,0x02,0x02, +/* code 0a */ 0x40,0x40,0x40,0x47,0x74,0x06,0x04,0x04, +/* code 0b */ 0x50,0x50,0x50,0x27,0x22,0x02,0x02,0x02, +/* code 0c */ 0x70,0x40,0x60,0x47,0x44,0x06,0x04,0x04, +/* code 0d */ 0x30,0x40,0x40,0x46,0x35,0x06,0x05,0x05, +/* code 0e */ 0x05,0x05,0x05,0x0d,0x0d,0x19,0x79,0x71, +/* code 0f */ 0xa0,0xa0,0xa0,0xb0,0xb0,0x98,0x9e,0x8e, +/* code 10 */ 0x18,0x66,0x66,0x00,0x66,0x66,0x18,0x00, +/* code 11 */ 0x00,0x06,0x06,0x00,0x06,0x06,0x00,0x00, +/* code 12 */ 0x18,0x06,0x06,0x18,0x60,0x60,0x18,0x00, +/* code 13 */ 0x18,0x06,0x06,0x18,0x06,0x06,0x18,0x00, +/* code 14 */ 0x00,0x66,0x66,0x18,0x06,0x06,0x00,0x00, +/* code 15 */ 0x18,0x60,0x60,0x18,0x06,0x06,0x18,0x00, +/* code 16 */ 0x18,0x60,0x60,0x18,0x66,0x66,0x18,0x00, +/* code 17 */ 0x18,0x06,0x06,0x00,0x06,0x06,0x00,0x00, +/* code 18 */ 0x18,0x66,0x66,0x18,0x66,0x66,0x18,0x00, +/* code 19 */ 0x18,0x66,0x66,0x18,0x06,0x06,0x18,0x00, +/* code 1a */ 0x00,0x00,0x3e,0x03,0x7f,0x63,0x3e,0x00, +/* code 1b */ 0x70,0x40,0x70,0x43,0x74,0x04,0x04,0x03, +/* code 1c */ 0x07,0x0f,0x1f,0x18,0x18,0x10,0x1e,0x17, +/* code 1d */ 0xf0,0xf8,0xec,0x04,0x04,0x04,0x3c,0x54, +/* code 1e */ 0x11,0x0b,0x0d,0x06,0x07,0x2e,0x39,0x38, +/* code 1f */ 0x04,0x28,0xd8,0x28,0xd0,0x10,0xe0,0x00, +/* code 20 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/* code 21 */ 0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x18, +/* code 22 */ 0x14,0x14,0x14,0x00,0x00,0x00,0x00,0x00, +/* code 23 */ 0x00,0x24,0x7e,0x24,0x24,0x7e,0x24,0x00, +/* code 24 */ 0x08,0x1e,0x28,0x1c,0x0a,0x3c,0x08,0x00, +/* code 25 */ 0x20,0x52,0x24,0x08,0x12,0x25,0x02,0x00, +/* code 26 */ 0x38,0x40,0x20,0x30,0x4a,0x44,0x3a,0x00, +/* code 27 */ 0x0c,0x08,0x10,0x00,0x00,0x00,0x00,0x00, +/* code 28 */ 0x0c,0x18,0x30,0x30,0x30,0x18,0x0c,0x00, +/* code 29 */ 0x18,0x0c,0x06,0x06,0x06,0x0c,0x18,0x00, +/* code 2a */ 0x08,0x08,0x6b,0x1c,0x08,0x14,0x22,0x00, +/* code 2b */ 0x08,0x08,0x08,0x7f,0x08,0x08,0x08,0x00, +/* code 2c */ 0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x20, +/* code 2d */ 0x00,0x00,0x00,0x7f,0x00,0x00,0x00,0x00, +/* code 2e */ 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00, +/* code 2f */ 0x04,0x04,0x08,0x08,0x10,0x10,0x20,0x20, +/* code 30 */ 0x3c,0x66,0x66,0x66,0x66,0x66,0x3c,0x00, +/* code 31 */ 0x0c,0x1c,0x0c,0x0c,0x0c,0x0c,0x0c,0x00, +/* code 32 */ 0x3c,0x66,0x06,0x0c,0x18,0x30,0x7e,0x00, +/* code 33 */ 0x3c,0x66,0x06,0x1c,0x06,0x66,0x3c,0x00, +/* code 34 */ 0x0c,0x1c,0x3c,0x6c,0x7e,0x0c,0x1e,0x00, +/* code 35 */ 0x7e,0x60,0x7c,0x06,0x06,0x66,0x3c,0x00, +/* code 36 */ 0x1c,0x30,0x60,0x7c,0x66,0x66,0x3c,0x00, +/* code 37 */ 0x7e,0x66,0x06,0x0c,0x0c,0x18,0x18,0x00, +/* code 38 */ 0x3c,0x66,0x66,0x3c,0x66,0x66,0x3c,0x00, +/* code 39 */ 0x3c,0x66,0x66,0x3e,0x06,0x0c,0x38,0x00, +/* code 3a */ 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00, +/* code 3b */ 0x00,0x18,0x18,0x00,0x00,0x18,0x10,0x20, +/* code 3c */ 0x00,0x07,0x1c,0x70,0x1c,0x07,0x00,0x00, +/* code 3d */ 0x00,0x00,0x7f,0x00,0x00,0x7f,0x00,0x00, +/* code 3e */ 0x00,0x70,0x1c,0x07,0x1c,0x70,0x00,0x00, +/* code 3f */ 0x3c,0x66,0x06,0x0c,0x18,0x00,0x18,0x00, +/* code 40 */ 0x3e,0x41,0x5d,0x55,0x5e,0x40,0x3e,0x00, +/* code 41 */ 0x18,0x18,0x3c,0x34,0x7e,0x62,0xe3,0x00, +/* code 42 */ 0x7e,0x63,0x63,0x7e,0x63,0x63,0x7e,0x00, +/* code 43 */ 0x1e,0x33,0x60,0x60,0x60,0x33,0x1e,0x00, +/* code 44 */ 0x7c,0x66,0x63,0x63,0x63,0x66,0x7c,0x00, +/* code 45 */ 0x7f,0x60,0x60,0x7c,0x60,0x60,0x7f,0x00, +/* code 46 */ 0x7f,0x60,0x60,0x7c,0x60,0x60,0x60,0x00, +/* code 47 */ 0x1e,0x33,0x60,0x60,0x67,0x33,0x1f,0x00, +/* code 48 */ 0x63,0x63,0x63,0x7f,0x63,0x63,0x63,0x00, +/* code 49 */ 0x7e,0x18,0x18,0x18,0x18,0x18,0x7e,0x00, +/* code 4a */ 0x1e,0x06,0x06,0x06,0x66,0x66,0x3c,0x00, +/* code 4b */ 0x63,0x66,0x6c,0x78,0x6c,0x66,0x63,0x00, +/* code 4c */ 0x60,0x60,0x60,0x60,0x60,0x60,0x7e,0x00, +/* code 4d */ 0x63,0x63,0x77,0x6b,0x6b,0x63,0x63,0x00, +/* code 4e */ 0x63,0x73,0x73,0x6b,0x6b,0x67,0x63,0x00, +/* code 4f */ 0x1c,0x36,0x63,0x63,0x63,0x36,0x1c,0x00, +/* code 50 */ 0x7e,0x63,0x63,0x7e,0x60,0x60,0x60,0x00, +/* code 51 */ 0x1c,0x36,0x63,0x63,0x63,0x36,0x1c,0x06, +/* code 52 */ 0x7e,0x63,0x63,0x7e,0x6c,0x66,0x63,0x00, +/* code 53 */ 0x3e,0x63,0x60,0x3e,0x03,0x63,0x3e,0x00, +/* code 54 */ 0x7e,0x18,0x18,0x18,0x18,0x18,0x18,0x00, +/* code 55 */ 0x63,0x63,0x63,0x63,0x63,0x63,0x3e,0x00, +/* code 56 */ 0x63,0x63,0x63,0x36,0x36,0x1c,0x1c,0x00, +/* code 57 */ 0x63,0x63,0x6b,0x6b,0x6b,0x77,0x63,0x00, +/* code 58 */ 0x66,0x66,0x3c,0x18,0x3c,0x66,0x66,0x00, +/* code 59 */ 0x66,0x66,0x3c,0x18,0x18,0x18,0x18,0x00, +/* code 5a */ 0x7e,0x06,0x0c,0x18,0x30,0x60,0x7e,0x00, +/* code 5b */ 0x1e,0x18,0x18,0x18,0x18,0x18,0x1e,0x00, +/* code 5c */ 0x20,0x20,0x10,0x10,0x08,0x08,0x04,0x04, +/* code 5d */ 0x3c,0x0c,0x0c,0x0c,0x0c,0x0c,0x3c,0x00, +/* code 5e */ 0x18,0x34,0x62,0x00,0x00,0x00,0x00,0x00, +/* code 5f */ 0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00, +/* code 60 */ 0x18,0x08,0x04,0x00,0x00,0x00,0x00,0x00, +/* code 61 */ 0x00,0x00,0x3f,0x63,0x63,0x67,0x3b,0x00, +/* code 62 */ 0x60,0x60,0x7e,0x63,0x63,0x63,0x7e,0x00, +/* code 63 */ 0x00,0x00,0x3e,0x60,0x60,0x60,0x3e,0x00, +/* code 64 */ 0x03,0x03,0x3f,0x63,0x63,0x63,0x3f,0x00, +/* code 65 */ 0x00,0x00,0x3e,0x63,0x7f,0x60,0x3e,0x00, +/* code 66 */ 0x1e,0x30,0x7c,0x30,0x30,0x30,0x30,0x00, +/* code 67 */ 0x00,0x00,0x3f,0x63,0x63,0x3f,0x03,0x3e, +/* code 68 */ 0x60,0x60,0x7e,0x63,0x63,0x63,0x63,0x00, +/* code 69 */ 0x18,0x00,0x78,0x18,0x18,0x18,0x7e,0x00, +/* code 6a */ 0x06,0x00,0x1e,0x06,0x06,0x06,0x06,0x3c, +/* code 6b */ 0x60,0x60,0x66,0x6c,0x78,0x6c,0x66,0x00, +/* code 6c */ 0x38,0x18,0x18,0x18,0x18,0x18,0x3c,0x00, +/* code 6d */ 0x00,0x00,0x76,0x6b,0x6b,0x6b,0x63,0x00, +/* code 6e */ 0x00,0x00,0x6e,0x73,0x63,0x63,0x63,0x00, +/* code 6f */ 0x00,0x00,0x3e,0x63,0x63,0x63,0x3e,0x00, +/* code 70 */ 0x00,0x00,0x7e,0x63,0x63,0x63,0x7e,0x60, +/* code 71 */ 0x00,0x00,0x3f,0x63,0x63,0x63,0x3f,0x03, +/* code 72 */ 0x00,0x00,0x6e,0x70,0x60,0x60,0x60,0x00, +/* code 73 */ 0x00,0x00,0x3e,0x60,0x3c,0x06,0x7c,0x00, +/* code 74 */ 0x18,0x18,0x7e,0x18,0x18,0x18,0x0e,0x00, +/* code 75 */ 0x00,0x00,0x63,0x63,0x63,0x67,0x3b,0x00, +/* code 76 */ 0x00,0x00,0x77,0x36,0x36,0x1c,0x1c,0x00, +/* code 77 */ 0x00,0x00,0x63,0x6b,0x6b,0x6b,0x36,0x00, +/* code 78 */ 0x00,0x00,0x66,0x3c,0x18,0x3c,0x66,0x00, +/* code 79 */ 0x00,0x00,0x66,0x66,0x66,0x3e,0x06,0x3c, +/* code 7a */ 0x00,0x00,0x7e,0x0c,0x18,0x30,0x7e,0x00, +/* code 7b */ 0x0e,0x18,0x18,0x30,0x18,0x18,0x0e,0x00, +/* code 7c */ 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00, +/* code 7d */ 0x38,0x0c,0x0c,0x06,0x0c,0x0c,0x38,0x00, +/* code 7e */ 0x31,0x49,0x46,0x00,0x00,0x00,0x00,0x00, +/* code 7f */ 0x00,0x18,0x18,0x34,0x34,0x62,0x7e,0x00, +}; + + +unsigned char font_clR8x8_data[] = { +/* +COMMENT $XConsortium: clR8x8.bdf,v 1.2 94/04/11 12:08:54 gildea Exp $ +COMMENT +COMMENT Copyright 1989 Dale Schumacher, dal@syntel.mn.org +COMMENT 399 Beacon Ave. +COMMENT St. Paul, MN 55104-3527 +COMMENT +COMMENT Permission to use, copy, modify, and distribute this software and +COMMENT its documentation for any purpose and without fee is hereby +COMMENT granted, provided that the above copyright notice appear in all +COMMENT copies and that both that copyright notice and this permission +COMMENT notice appear in supporting documentation, and that the name of +COMMENT Dale Schumacher not be used in advertising or publicity pertaining to +COMMENT distribution of the software without specific, written prior +COMMENT permission. Dale Schumacher makes no representations about the +COMMENT suitability of this software for any purpose. It is provided "as +COMMENT is" without express or implied warranty. +*/ +/* code 00 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/* code 01 */ 0x08,0x14,0x22,0x77,0x14,0x14,0x14,0x1c, +/* code 02 */ 0x1c,0x14,0x14,0x14,0x77,0x22,0x14,0x08, +/* code 03 */ 0x08,0x0c,0x7a,0x41,0x7a,0x0c,0x08,0x00, +/* code 04 */ 0x08,0x18,0x2f,0x41,0x2f,0x18,0x08,0x00, +/* code 05 */ 0x3e,0x5d,0x6b,0x77,0x6b,0x5d,0x3e,0x00, +/* code 06 */ 0x7f,0x7f,0x7f,0x7e,0x7d,0x7b,0x77,0x00, +/* code 07 */ 0x77,0x6b,0x5d,0x3e,0x5d,0x6b,0x77,0x00, +/* code 08 */ 0x60,0x50,0x60,0x53,0x64,0x02,0x01,0x06, +/* code 09 */ 0x50,0x50,0x70,0x57,0x52,0x02,0x02,0x02, +/* code 0a */ 0x40,0x40,0x40,0x47,0x74,0x06,0x04,0x04, +/* code 0b */ 0x50,0x50,0x50,0x27,0x22,0x02,0x02,0x02, +/* code 0c */ 0x70,0x40,0x60,0x47,0x44,0x06,0x04,0x04, +/* code 0d */ 0x30,0x40,0x40,0x46,0x35,0x06,0x05,0x05, +/* code 0e */ 0x05,0x05,0x05,0x0d,0x0d,0x0d,0x19,0x79, +/* code 0f */ 0xa0,0xa0,0xa0,0xb0,0xb0,0xb0,0x98,0x9e, +/* code 10 */ 0x18,0x42,0x42,0x00,0x42,0x42,0x18,0x00, +/* code 11 */ 0x00,0x02,0x02,0x00,0x02,0x02,0x00,0x00, +/* code 12 */ 0x18,0x02,0x02,0x18,0x40,0x40,0x18,0x00, +/* code 13 */ 0x18,0x02,0x02,0x18,0x02,0x02,0x18,0x00, +/* code 14 */ 0x00,0x42,0x42,0x18,0x02,0x02,0x00,0x00, +/* code 15 */ 0x18,0x40,0x40,0x18,0x02,0x02,0x18,0x00, +/* code 16 */ 0x18,0x40,0x40,0x18,0x42,0x42,0x18,0x00, +/* code 17 */ 0x18,0x02,0x02,0x00,0x02,0x02,0x00,0x00, +/* code 18 */ 0x18,0x42,0x42,0x18,0x42,0x42,0x18,0x00, +/* code 19 */ 0x18,0x42,0x42,0x18,0x02,0x02,0x18,0x00, +/* code 1a */ 0x00,0x00,0x3e,0x01,0x7f,0x41,0x3e,0x00, +/* code 1b */ 0x70,0x40,0x70,0x43,0x74,0x04,0x04,0x03, +/* code 1c */ 0x07,0x0f,0x1f,0x18,0x18,0x10,0x1e,0x17, +/* code 1d */ 0xf0,0xf8,0xec,0x04,0x04,0x04,0x3c,0x54, +/* code 1e */ 0x11,0x0b,0x0d,0x06,0x07,0x2e,0x39,0x38, +/* code 1f */ 0x04,0x28,0xd8,0x28,0xd0,0x10,0xe0,0x00, +/* code 20 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +/* code 21 */ 0x08,0x08,0x08,0x08,0x08,0x00,0x08,0x00, +/* code 22 */ 0x14,0x14,0x14,0x00,0x00,0x00,0x00,0x00, +/* code 23 */ 0x14,0x14,0x3e,0x14,0x3e,0x14,0x14,0x00, +/* code 24 */ 0x08,0x1e,0x28,0x1c,0x0a,0x3c,0x08,0x00, +/* code 25 */ 0x22,0x54,0x24,0x08,0x12,0x15,0x22,0x00, +/* code 26 */ 0x38,0x40,0x20,0x30,0x4a,0x44,0x3a,0x00, +/* code 27 */ 0x0c,0x08,0x10,0x00,0x00,0x00,0x00,0x00, +/* code 28 */ 0x04,0x08,0x10,0x10,0x10,0x08,0x04,0x00, +/* code 29 */ 0x10,0x08,0x04,0x04,0x04,0x08,0x10,0x00, +/* code 2a */ 0x08,0x08,0x6b,0x1c,0x08,0x14,0x22,0x00, +/* code 2b */ 0x08,0x08,0x08,0x7f,0x08,0x08,0x08,0x00, +/* code 2c */ 0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x20, +/* code 2d */ 0x00,0x00,0x00,0x7f,0x00,0x00,0x00,0x00, +/* code 2e */ 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00, +/* code 2f */ 0x04,0x04,0x08,0x08,0x10,0x10,0x20,0x20, +/* code 30 */ 0x3c,0x42,0x42,0x42,0x42,0x42,0x3c,0x00, +/* code 31 */ 0x08,0x18,0x08,0x08,0x08,0x08,0x08,0x00, +/* code 32 */ 0x3c,0x42,0x04,0x08,0x10,0x20,0x7e,0x00, +/* code 33 */ 0x3c,0x42,0x02,0x1c,0x02,0x42,0x3c,0x00, +/* code 34 */ 0x04,0x0c,0x14,0x24,0x7e,0x04,0x0e,0x00, +/* code 35 */ 0x7e,0x40,0x40,0x7c,0x02,0x02,0x7c,0x00, +/* code 36 */ 0x1c,0x20,0x40,0x7c,0x42,0x42,0x3c,0x00, +/* code 37 */ 0x7e,0x02,0x04,0x04,0x08,0x08,0x10,0x00, +/* code 38 */ 0x3c,0x42,0x42,0x3c,0x42,0x42,0x3c,0x00, +/* code 39 */ 0x3c,0x42,0x42,0x3e,0x02,0x04,0x38,0x00, +/* code 3a */ 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00, +/* code 3b */ 0x00,0x18,0x18,0x00,0x00,0x18,0x10,0x20, +/* code 3c */ 0x00,0x06,0x18,0x60,0x18,0x06,0x00,0x00, +/* code 3d */ 0x00,0x00,0x7f,0x00,0x00,0x7f,0x00,0x00, +/* code 3e */ 0x00,0x60,0x18,0x06,0x18,0x60,0x00,0x00, +/* code 3f */ 0x1c,0x22,0x02,0x04,0x08,0x00,0x08,0x00, +/* code 40 */ 0x1c,0x22,0x49,0x55,0x4a,0x20,0x1c,0x00, +/* code 41 */ 0x08,0x08,0x1c,0x14,0x3e,0x22,0x63,0x00, +/* code 42 */ 0x7e,0x41,0x41,0x7e,0x41,0x41,0x7e,0x00, +/* code 43 */ 0x1e,0x21,0x40,0x40,0x40,0x21,0x1e,0x00, +/* code 44 */ 0x7c,0x42,0x41,0x41,0x41,0x42,0x7c,0x00, +/* code 45 */ 0x7f,0x40,0x40,0x7c,0x40,0x40,0x7f,0x00, +/* code 46 */ 0x7f,0x40,0x40,0x7c,0x40,0x40,0x40,0x00, +/* code 47 */ 0x1e,0x21,0x40,0x47,0x41,0x21,0x1f,0x00, +/* code 48 */ 0x41,0x41,0x41,0x7f,0x41,0x41,0x41,0x00, +/* code 49 */ 0x3e,0x08,0x08,0x08,0x08,0x08,0x3e,0x00, +/* code 4a */ 0x0e,0x02,0x02,0x02,0x42,0x42,0x3c,0x00, +/* code 4b */ 0x42,0x44,0x48,0x70,0x48,0x44,0x42,0x00, +/* code 4c */ 0x40,0x40,0x40,0x40,0x40,0x40,0x7e,0x00, +/* code 4d */ 0x41,0x63,0x55,0x49,0x41,0x41,0x41,0x00, +/* code 4e */ 0x41,0x61,0x51,0x49,0x45,0x43,0x41,0x00, +/* code 4f */ 0x1c,0x22,0x41,0x41,0x41,0x22,0x1c,0x00, +/* code 50 */ 0x7e,0x41,0x41,0x7e,0x40,0x40,0x40,0x00, +/* code 51 */ 0x1c,0x22,0x41,0x41,0x41,0x22,0x1c,0x07, +/* code 52 */ 0x7e,0x41,0x41,0x7e,0x44,0x42,0x41,0x00, +/* code 53 */ 0x3e,0x41,0x40,0x3e,0x01,0x41,0x3e,0x00, +/* code 54 */ 0x7f,0x08,0x08,0x08,0x08,0x08,0x08,0x00, +/* code 55 */ 0x41,0x41,0x41,0x41,0x41,0x41,0x3e,0x00, +/* code 56 */ 0x63,0x22,0x22,0x14,0x14,0x08,0x08,0x00, +/* code 57 */ 0x41,0x41,0x41,0x49,0x55,0x63,0x41,0x00, +/* code 58 */ 0x41,0x22,0x14,0x08,0x14,0x22,0x41,0x00, +/* code 59 */ 0x41,0x22,0x14,0x08,0x08,0x08,0x08,0x00, +/* code 5a */ 0x7f,0x02,0x04,0x08,0x10,0x20,0x7f,0x00, +/* code 5b */ 0x0e,0x08,0x08,0x08,0x08,0x08,0x0e,0x00, +/* code 5c */ 0x20,0x20,0x10,0x10,0x08,0x08,0x04,0x04, +/* code 5d */ 0x38,0x08,0x08,0x08,0x08,0x08,0x38,0x00, +/* code 5e */ 0x08,0x14,0x22,0x00,0x00,0x00,0x00,0x00, +/* code 5f */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f, +/* code 60 */ 0x18,0x08,0x04,0x00,0x00,0x00,0x00,0x00, +/* code 61 */ 0x00,0x00,0x3f,0x41,0x41,0x43,0x3d,0x00, +/* code 62 */ 0x40,0x40,0x7e,0x41,0x41,0x41,0x7e,0x00, +/* code 63 */ 0x00,0x00,0x3e,0x40,0x40,0x40,0x3e,0x00, +/* code 64 */ 0x01,0x01,0x3f,0x41,0x41,0x41,0x3f,0x00, +/* code 65 */ 0x00,0x00,0x3e,0x41,0x7f,0x40,0x3e,0x00, +/* code 66 */ 0x1e,0x20,0x78,0x20,0x20,0x20,0x20,0x00, +/* code 67 */ 0x00,0x00,0x3f,0x41,0x41,0x3f,0x01,0x3e, +/* code 68 */ 0x40,0x40,0x7e,0x41,0x41,0x41,0x41,0x00, +/* code 69 */ 0x08,0x00,0x38,0x08,0x08,0x08,0x3e,0x00, +/* code 6a */ 0x02,0x00,0x1e,0x02,0x02,0x02,0x02,0x3c, +/* code 6b */ 0x40,0x40,0x46,0x48,0x70,0x48,0x46,0x00, +/* code 6c */ 0x18,0x08,0x08,0x08,0x08,0x08,0x1c,0x00, +/* code 6d */ 0x00,0x00,0x76,0x49,0x49,0x49,0x41,0x00, +/* code 6e */ 0x00,0x00,0x5e,0x61,0x41,0x41,0x41,0x00, +/* code 6f */ 0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00, +/* code 70 */ 0x00,0x00,0x7e,0x41,0x41,0x41,0x7e,0x40, +/* code 71 */ 0x00,0x00,0x3f,0x41,0x41,0x41,0x3f,0x01, +/* code 72 */ 0x00,0x00,0x2e,0x30,0x20,0x20,0x20,0x00, +/* code 73 */ 0x00,0x00,0x3e,0x40,0x3c,0x02,0x7c,0x00, +/* code 74 */ 0x10,0x10,0x7e,0x10,0x10,0x10,0x0e,0x00, +/* code 75 */ 0x00,0x00,0x41,0x41,0x41,0x43,0x3d,0x00, +/* code 76 */ 0x00,0x00,0x63,0x22,0x14,0x14,0x08,0x00, +/* code 77 */ 0x00,0x00,0x41,0x49,0x49,0x49,0x36,0x00, +/* code 78 */ 0x00,0x00,0x63,0x14,0x08,0x14,0x63,0x00, +/* code 79 */ 0x00,0x00,0x42,0x42,0x42,0x3e,0x02,0x3c, +/* code 7a */ 0x00,0x00,0x7e,0x04,0x18,0x20,0x7e,0x00, +/* code 7b */ 0x04,0x08,0x08,0x10,0x08,0x08,0x04,0x00, +/* code 7c */ 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00, +/* code 7d */ 0x10,0x08,0x08,0x04,0x08,0x08,0x10,0x00, +/* code 7e */ 0x31,0x49,0x46,0x00,0x00,0x00,0x00,0x00, +/* code 7f */ 0x00,0x08,0x08,0x14,0x14,0x22,0x3e,0x00, +}; diff --git a/sys/dev/hpc/files.bicons b/sys/dev/hpc/files.bicons new file mode 100644 index 000000000000..be0a7b8bb03f --- /dev/null +++ b/sys/dev/hpc/files.bicons @@ -0,0 +1,7 @@ +# $NetBSD: files.bicons,v 1.1 2001/02/09 19:43:23 uch Exp $ + +file dev/hpc/bicons.c +file dev/hpc/bifont.c + +defpseudo biconsdev +file dev/hpc/biconsdev.c biconsdev needs-count