diff --git a/ChangeLog b/ChangeLog index 867fd2a..2b6ff05 100644 --- a/ChangeLog +++ b/ChangeLog @@ -31,6 +31,7 @@ v.0.5dev (ongoing development) * Build system: Fix trying to install svga driver twice + imon: Add bignum support (Y. Scheglyuk) * hd44780/ethlcd: fix LCDd hang up on network error (exits now) (M. Bialonczyk) + + New common 5x8 font for t6963, sed1520, mdm166a and i2500vfd v0.5.4 * Update driver includes and LDFLAGS (fixed glk and bayrad binding error) diff --git a/LCDd.conf b/LCDd.conf index 0d0dbcb..8cf8f42 100644 --- a/LCDd.conf +++ b/LCDd.conf @@ -1098,8 +1098,8 @@ Size=20x4 ## Toshiba T6963 driver ## [t6963] -# set display size [default: 20x6] -Size=20x6 +# set display size in pixels [default: 128x64] +Size=128x64 # port to use [default: 0x378; legal: 0x200 - 0x400] Port=0x378 diff --git a/docs/lcdproc-user/drivers/t6963.docbook b/docs/lcdproc-user/drivers/t6963.docbook index a47cc98..ead2b49 100644 --- a/docs/lcdproc-user/drivers/t6963.docbook +++ b/docs/lcdproc-user/drivers/t6963.docbook @@ -9,8 +9,9 @@ displays that can often act as a screen. The driver uses the text mode of the chipset with a custom font loaded which -resembles the characters from Code Page 437. If your display has a 'Font Select' -pin it must be wired to use the 6x8 font. +resembles the characters from HD44780 ROM 002 character set (European +character set). If your display has a 'Font Select' pin it must be wired to +use the 6x8 font. @@ -130,11 +131,9 @@ can be done by specifying "--enable-drivers=all" or by Size = ¶meters.size; - Set display size in characters [default: 20x6]. Do set - it as close as possible to the pixel size of the display (based on a - 6x8 font). Otherwise characters will repeat on the - right of a line. Example: 21x8 on a 128x64 - display. + Set display size in pixels [default: 128x64]. The size + in characters is automatically calculated assuming the font size is set to + 6x8 for the display. diff --git a/server/drivers/Makefile.am b/server/drivers/Makefile.am index 7c76b6d..763a196 100644 --- a/server/drivers/Makefile.am +++ b/server/drivers/Makefile.am @@ -90,7 +90,7 @@ glcdlib_SOURCES = lcd.h lcd_lib.h glcdlib.h glcdlib.c report.h glk_SOURCES = lcd.h glk.c glk.h glkproto.c glkproto.h report.h hd44780_SOURCES = lcd.h lcd_lib.h hd44780.h hd44780.c hd44780-drivers.h hd44780-low.h hd44780-charmap.h report.h adv_bignum.h EXTRA_hd44780_SOURCES = hd44780-4bit.c hd44780-4bit.h hd44780-ext8bit.c hd44780-ext8bit.h lcd_sem.c lcd_sem.h hd44780-serialLpt.c hd44780-serialLpt.h hd44780-serial.c hd44780-serial.h hd44780-winamp.c hd44780-winamp.h hd44780-bwct-usb.c hd44780-bwct-usb.h hd44780-lcd2usb.c hd44780-lcd2usb.h hd44780-usbtiny.c hd44780-usbtiny.h hd44780-lis2.c hd44780-lis2.h hd44780-i2c.c hd44780-i2c.h hd44780-ftdi.c hd44780-ftdi.h hd44780-ethlcd.c hd44780-ethlcd.h hd44780-uss720.c hd44780-uss720.h hd44780-usblcd.c hd44780-usblcd.h port.h lpt-port.h timing.h -i2500vfd_SOURCES = lcd.h i2500vfd.c i2500vfd.h i2500vfdfm.c i2500vfdfm.h report.h +i2500vfd_SOURCES = lcd.h i2500vfd.c i2500vfd.h glcd_font5x8.h report.h icp_a106_SOURCES = lcd.h lcd_lib.h icp_a106.c icp_a106.h report.h imon_SOURCES = lcd.h lcd_lib.h hd44780-charmap.h imon.h imon.c report.h adv_bignum.h imonlcd_SOURCES = lcd.h lcd_lib.h imonlcd.h imonlcd_font.h imonlcd.c report.h @@ -104,7 +104,7 @@ lcterm_SOURCES = lcd.h lcd_lib.h lcterm.c lcterm.h report.h lirc_SOURCES = lcd.h lircin.c lircin.h report.h lis_SOURCES = lcd.h lcd_lib.h lis.h lis.c report.h MD8800_SOURCES = lcd.h lcd_lib.h MD8800.c MD8800.h report.h -mdm166a_SOURCES = lcd.h mdm166a.c mdm166a.h i2500vfdfm.c i2500vfdfm.h report.h +mdm166a_SOURCES = lcd.h mdm166a.c mdm166a.h glcd_font5x8.h report.h ms6931_SOURCES = lcd.h lcd_lib.h ms6931.h ms6931.c report.h mtc_s16209x_SOURCES = lcd.h lcd_lib.h mtc_s16209x.c mtc_s16209x.h report.h MtxOrb_SOURCES = lcd.h lcd_lib.h MtxOrb.c MtxOrb.h report.h adv_bignum.h @@ -113,7 +113,7 @@ NoritakeVFD_SOURCES = lcd.h lcd_lib.h NoritakeVFD.c NoritakeVFD.h report.h adv_b picolcd_SOURCES = lcd.h picolcd.h picolcd.c report.h pyramid_SOURCES = lcd.h pylcd.c pylcd.h sed1330_SOURCES = lcd.h sed1330.h sed1330.c port.h lpt-port.h timing.h report.h -sed1520_SOURCES = lcd.h sed1520.c sed1520.h sed1520fm.c sed1520fm.h port.h report.h +sed1520_SOURCES = lcd.h sed1520.c sed1520.h port.h report.h glcd_font5x8.h sed1520fm.h serialPOS_SOURCES = lcd.h lcd_lib.h serialPOS.c serialPOS.h report.h adv_bignum.h serialVFD_SOURCES = lcd.h lcd_lib.h serialVFD.c serialVFD.h report.h adv_bignum.h serialVFD_displays.c serialVFD_displays.h serialVFD_io.c serialVFD_io.h shuttleVFD_SOURCES = lcd.h shuttleVFD.c shuttleVFD.h report.h @@ -121,7 +121,7 @@ sli_SOURCES = lcd.h lcd_lib.h wirz-sli.h wirz-sli.c report.h stv5730_SOURCES = lcd.h stv5730.c stv5730.h report.h SureElec_SOURCES = lcd.h lcd_lib.h SureElec.c SureElec.h report.h adv_bignum.h svga_SOURCES = lcd.h svgalib_drv.c svgalib_drv.h report.h -t6963_SOURCES = lcd.h lcd_lib.h t6963.c t6963.h t6963_font.h report.h +t6963_SOURCES = lcd.h lcd_lib.h t6963.c t6963.h glcd_font5x8.h report.h text_SOURCES = lcd.h text.h text.c report.h tyan_SOURCES = lcd.h lcd_lib.h tyan_lcdm.h tyan_lcdm.c report.h adv_bignum.h ula200_SOURCES = lcd.h adv_bignum.h ula200.h ula200.c report.h diff --git a/server/drivers/t6963_font.h b/server/drivers/glcd_font5x8.h similarity index 54% rename from server/drivers/t6963_font.h rename to server/drivers/glcd_font5x8.h index dc5670f..20dacb0 100644 --- a/server/drivers/t6963_font.h +++ b/server/drivers/glcd_font5x8.h @@ -1,18 +1,18 @@ -/** \file server/drivers/t6963_font.h - * Font definition for use the t6963 driver. +/** \file server/drivers/glcd_font5x8.h + * Font definition for use with graphical displays. */ /*- - * Copyright (c) 2001 Manuel Stahl - * 2011 Markus Dolze - * - * Parts of this file are based on the kernel driver by - * Alexander Frink + * Copyright (c) 2011 Markus Dolze * * This file is released under the GNU General Public License. Refer to the * COPYING file distributed with this package. */ +#ifndef GLCD_FONT5X8_H +#define GLCD_FONT5X8_H + +/* Bit patterns */ #define b______ 0x00 #define b_____O 0x01 #define b____O_ 0x02 @@ -46,402 +46,108 @@ #define b_OOOO_ 0x1e #define b_OOOOO 0x1f #define b_OOOOO 0x1f -#define bO_____ 0x20 -#define bO____O 0x21 -#define bO___O_ 0x22 -#define bO___OO 0x23 -#define bO__O__ 0x24 -#define bO__O_O 0x25 -#define bO__OO_ 0x26 -#define bO__OOO 0x27 -#define bO_O___ 0x28 -#define bO_O__O 0x29 -#define bO_O_O_ 0x2a -#define bO_O_OO 0x2b -#define bO_OO__ 0x2c -#define bO_OO_O 0x2d -#define bO_OOO_ 0x2e -#define bO_OOOO 0x2f -#define bOO____ 0x30 -#define bOO___O 0x31 -#define bOO__O_ 0x32 -#define bOO__OO 0x33 -#define bOO_O__ 0x34 -#define bOO_O_O 0x35 -#define bOO_OO_ 0x36 -#define bOO_OOO 0x37 -#define bOOO___ 0x38 -#define bOOO__O 0x39 -#define bOOO_O_ 0x3a -#define bOOO_OO 0x3b -#define bOOOO__ 0x3c -#define bOOOO_O 0x3d -#define bOOOOO_ 0x3e -#define bOOOOOO 0x3f -#define bOOOOOO 0x3f + +/* Font properties */ +#define GLCD_FONT_WIDTH 5 +#define GLCD_FONT_HEIGHT 8 /** - * Definition of a 6x8 font recreating the characters from CP437 with the - * following exceptions at position: - * \li 4 contains the open heart icon - * \li 212-219 are vor vBars (bottom to top) - * \li 220-224 are for hBars (growing right) - * \li 247-251 are for hBars (growing left) - * \li 228,246,252 contain small german umlaute (upper case are missing) - * \li 243,244 contain ?? + * Font definition for use with graphical displays. Character patterns are + * based on HD44780 ones. It contains ISO 8859-1 characters with these + * exceptions / extensions: + * \li Euro symbol at A6h + * \li ISO 8859-1 characters not implemented: A8h, ACh, ADh, AFh, B8h + * \li LCDproc icons at 80h-8Fh and ACh + * \li bar graph symbols at 90h-9Eh */ -unsigned char fontdata_6x8[256][8] = { - [0x00] {b______, - b______, - b______, - b______, - b______, - b______, - b______, - b______}, - [0x01] {b__OOO_, - b_O___O, - b_OO_OO, - b_O___O, - b_O_O_O, - b_O___O, - b__OOO_, - b______}, - [0x02] {b__OOO_, - b_OOOOO, - b_O_O_O, - b_OOOOO, - b_O___O, - b_OOOOO, - b__OOO_, - b______}, - [0x03] {b______, - b__O_O_, - b_OOOOO, - b_OOOOO, - b_OOOOO, - b__OOO_, +unsigned char glcd_iso8859_1[256][8] = { + [0x21] {b______, + b___O__, + b___O__, b___O__, - b______}, - [0x04] {b______, - b______, - b__O_O_, - b__OOO_, - b__OOO_, b___O__, b______, - b______}, - [0x05] {b___O__, - b__OOO_, - b__OOO_, - b___O__, - b_OOOOO, - b_OOOOO, - b___O__, - b______}, - [0x06] {b______, - b___O__, - b__OOO_, - b_OOOOO, - b_OOOOO, - b___O__, - b__OOO_, - b______}, - [0x07] {b______, b______, - b______, - b__OO__, - b__OO__, - b______, - b______, - b______}, - [0x08] {bOOOOOO, - bOOOOOO, - bOOOOOO, - bOO__OO, - bOO__OO, - bOOOOOO, - bOOOOOO, - bOOOOOO}, - [0x09] {b______, - b______, - b_OOOO_, - b_O__O_, - b_O__O_, - b_OOOO_, - b______, - b______}, - [0x0a] {bOOOOOO, - bOOOOOO, - bO____O, - bO_OO_O, - bO_OO_O, - bO____O, - bOOOOOO, - bOOOOOO}, - [0x0b] {b______, - b___OOO, - b____OO, - b__OO_O, - b_O__O_, - b_O__O_, - b__OO__, - b______}, - [0x0c] {b__OOO_, - b_O___O, - b_O___O, - b__OOO_, - b___O__, - b__OOO_, - b___O__, - b______}, - [0x0d] {b___O__, - b___OO_, - b___O_O, - b___O__, - b__OO__, - b_OOO__, - b_OO___, - b______}, - [0x0e] {b____OO, - b__OO_O, - b__O_OO, - b__OO_O, - b__O_OO, - b_OO_OO, - b_OO___, - b______}, - [0x0f] {b______, - b_O_O_O, - b__OOO_, - b_OO_OO, - b__OOO_, - b_O_O_O, - b______, - b______}, - [0x10] {b__O___, - b__OO__, - b__OOO_, - b__OOOO, - b__OOO_, - b__OO__, - b__O___, - b______}, - [0x11] {b____O_, - b___OO_, - b__OOO_, - b_OOOO_, - b__OOO_, - b___OO_, - b____O_, - b______}, - [0x12] {b___O__, - b__OOO_, - b_OOOOO, - b___O__, - b_OOOOO, - b__OOO_, - b___O__, - b______}, - [0x13] {b__O_O_, + b___O__}, + [0x22] {b______, b__O_O_, b__O_O_, b__O_O_, - b__O_O_, - b______, - b__O_O_, - b______}, - [0x14] {b__OOOO, - b_O_O_O, - b_O_O_O, - b__OO_O, - b___O_O, - b___O_O, - b___O_O, - b______}, - [0x15] {b__OOO_, - b_O___O, - b__OO__, - b__O_O_, - b___OO_, - b_O___O, - b__OOO_, - b______}, - [0x16] {b______, - b______, - b______, - b______, - b______, - b_OOOO_, - b_OOOO_, - b______}, - [0x17] {b___O__, - b__OOO_, - b_OOOOO, - b___O__, - b_OOOOO, - b__OOO_, - b___O__, - b__OOO_}, - [0x18] {b___O__, - b__OOO_, - b_OOOOO, - b___O__, - b___O__, - b___O__, - b___O__, - b______}, - [0x19] {b___O__, - b___O__, - b___O__, - b___O__, - b_OOOOO, - b__OOO_, - b___O__, - b______}, - [0x1a] {b______, - b___O__, - b___OO_, - b_OOOOO, - b___OO_, - b___O__, - b______, - b______}, - [0x1b] {b______, - b___O__, - b__OO__, - b_OOOOO, - b__OO__, - b___O__, - b______, - b______}, - [0x1c] {b______, - b______, - b______, - b_O____, - b_O____, - b_O____, - b_OOOOO, - b______}, - [0x1d] {b______, - b__O_O_, - b__O_O_, - b_OOOOO, - b__O_O_, - b__O_O_, - b______, - b______}, - [0x1e] {b___O__, - b___O__, - b__OOO_, - b__OOO_, - b_OOOOO, - b_OOOOO, - b______, - b______}, - [0x1f] {b_OOOOO, - b_OOOOO, - b__OOO_, - b__OOO_, - b___O__, - b___O__, - b______, - b______}, - [0x20] {b______, - b______, - b______, - b______, - b______, - b______, - b______, - b______}, - [0x21] {b___O__, - b__OOO_, - b__OOO_, - b___O__, - b___O__, - b______, - b___O__, - b______}, - [0x22] {b_OO_OO, - b_OO_OO, - b_O__O_, - b______, b______, b______, b______, b______}, [0x23] {b______, - b__O_O_, - b_OOOOO, b__O_O_, b__O_O_, b_OOOOO, b__O_O_, - b______}, - [0x24] {b__O___, - b__OOO_, - b_O____, - b__OO__, - b____O_, - b_OOO__, + b_OOOOO, + b__O_O_, + b__O_O_}, + [0x24] {b______, b___O__, - b______}, - [0x25] {b_OO__O, + b__OOOO, + b_O_O__, + b__OOO_, + b___O_O, + b_OOOO_, + b___O__}, + [0x25] {b______, + b_OO___, b_OO__O, b____O_, b___O__, b__O___, b_O__OO, - b_O__OO, - b______}, - [0x26] {b__O___, - b_O_O__, + b____OO}, + [0x26] {b______, + b__OO__, + b_O__O_, b_O_O__, b__O___, b_O_O_O, b_O__O_, - b__OO_O, - b______}, - [0x27] {b__OO__, + b__OO_O}, + [0x27] {b______, b__OO__, + b___O__, b__O___, b______, b______, b______, - b______, b______}, - [0x28] {b___O__, - b__O___, - b__O___, + [0x28] {b______, + b____O_, + b___O__, b__O___, b__O___, b__O___, b___O__, - b______}, - [0x29] {b__O___, - b___O__, - b___O__, - b___O__, - b___O__, - b___O__, + b____O_}, + [0x29] {b______, b__O___, - b______}, + b___O__, + b____O_, + b____O_, + b____O_, + b___O__, + b__O___}, [0x2a] {b______, - b__O_O_, - b__OOO_, - b_OOOOO, - b__OOO_, - b__O_O_, b______, + b___O__, + b_O_O_O, + b__OOO_, + b_O_O_O, + b___O__, b______}, [0x2b] {b______, + b______, b___O__, b___O__, b_OOOOO, b___O__, b___O__, - b______, b______}, [0x2c] {b______, b______, @@ -449,13 +155,13 @@ unsigned char fontdata_6x8[256][8] = { b______, b______, b__OO__, - b__OO__, + b___O__, b__O___}, [0x2d] {b______, b______, b______, - b_OOOOO, b______, + b_OOOOO, b______, b______, b______}, @@ -464,97 +170,97 @@ unsigned char fontdata_6x8[256][8] = { b______, b______, b______, + b______, b__OO__, - b__OO__, - b______}, + b__OO__}, [0x2f] {b______, + b______, b_____O, b____O_, b___O__, b__O___, b_O____, - b______, b______}, - [0x30] {b__OOO_, + [0x30] {b______, + b__OOO_, b_O___O, b_O__OO, b_O_O_O, b_OO__O, b_O___O, - b__OOO_, - b______}, - [0x31] {b___O__, + b__OOO_}, + [0x31] {b______, + b___O__, b__OO__, b___O__, b___O__, b___O__, b___O__, + b__OOO_}, + [0x32] {b______, b__OOO_, - b______}, - [0x32] {b__OOO_, b_O___O, b_____O, - b___OO_, + b____O_, + b___O__, b__O___, - b_O____, + b_OOOOO}, + [0x33] {b______, b_OOOOO, - b______}, - [0x33] {b__OOO_, - b_O___O, - b_____O, - b__OOO_, + b____O_, + b___O__, + b____O_, b_____O, b_O___O, - b__OOO_, - b______}, - [0x34] {b____O_, + b__OOO_}, + [0x34] {b______, + b____O_, b___OO_, b__O_O_, b_O__O_, b_OOOOO, b____O_, - b____O_, - b______}, - [0x35] {b_OOOOO, + b____O_}, + [0x35] {b______, + b_OOOOO, b_O____, b_O____, b_OOOO_, b_____O, b_O___O, - b__OOO_, - b______}, - [0x36] {b___OO_, + b__OOO_}, + [0x36] {b______, + b___OO_, b__O___, b_O____, b_OOOO_, b_O___O, b_O___O, - b__OOO_, - b______}, - [0x37] {b_OOOOO, - b_____O, + b__OOO_}, + [0x37] {b______, + b_OOOOO, + b_O___O, b____O_, b___O__, b__O___, b__O___, - b__O___, - b______}, - [0x38] {b__OOO_, - b_O___O, - b_O___O, + b__O___}, + [0x38] {b______, b__OOO_, b_O___O, b_O___O, b__OOO_, - b______}, - [0x39] {b__OOO_, + b_O___O, + b_O___O, + b__OOO_}, + [0x39] {b______, + b__OOO_, b_O___O, b_O___O, b__OOOO, b_____O, b____O_, - b__OO__, - b______}, + b__OO__}, [0x3a] {b______, b______, b__OO__, @@ -569,287 +275,287 @@ unsigned char fontdata_6x8[256][8] = { b__OO__, b______, b__OO__, - b__OO__, + b___O__, b__O___}, - [0x3c] {b____O_, + [0x3c] {b______, + b____O_, b___O__, b__O___, b_O____, b__O___, b___O__, - b____O_, - b______}, + b____O_}, [0x3d] {b______, b______, - b_OOOOO, b______, + b_OOOOO, b______, b_OOOOO, b______, b______}, - [0x3e] {b__O___, + [0x3e] {b______, + b_O____, + b__O___, b___O__, b____O_, - b_____O, - b____O_, b___O__, b__O___, - b______}, - [0x3f] {b__OOO_, + b_O____}, + [0x3f] {b______, + b__OOO_, b_O___O, b_____O, - b___OO_, + b____O_, b___O__, b______, - b___O__, - b______}, - [0x40] {b__OOO_, + b___O__}, + [0x40] {b______, + b__OOO_, b_O___O, - b_O_OOO, + b_____O, + b__OO_O, b_O_O_O, - b_O_OOO, - b_O____, - b__OOO_, - b______}, - [0x41] {b__OOO_, - b_O___O, + b_O_O_O, + b__OOO_}, + [0x41] {b______, + b___O__, + b__O_O_, b_O___O, b_O___O, b_OOOOO, b_O___O, - b_O___O, - b______}, - [0x42] {b_OOOO_, - b_O___O, - b_O___O, + b_O___O}, + [0x42] {b______, b_OOOO_, b_O___O, b_O___O, b_OOOO_, - b______}, - [0x43] {b__OOO_, b_O___O, - b_O____, - b_O____, - b_O____, b_O___O, + b_OOOO_}, + [0x43] {b______, b__OOO_, - b______}, - [0x44] {b_OOOO_, b_O___O, - b_O___O, - b_O___O, - b_O___O, - b_O___O, - b_OOOO_, - b______}, - [0x45] {b_OOOOO, b_O____, b_O____, - b_OOOO_, - b_O____, b_O____, + b_O___O, + b__OOO_}, + [0x44] {b______, + b_OOO__, + b_O__O_, + b_O___O, + b_O___O, + b_O___O, + b_O__O_, + b_OOO__}, + [0x45] {b______, b_OOOOO, - b______}, - [0x46] {b_OOOOO, b_O____, b_O____, b_OOOO_, b_O____, b_O____, + b_OOOOO}, + [0x46] {b______, + b_OOOOO, b_O____, - b______}, - [0x47] {b__OOO_, + b_O____, + b_OOOO_, + b_O____, + b_O____, + b_O____}, + [0x47] {b______, + b__OOO_, b_O___O, b_O____, b_O_OOO, b_O___O, b_O___O, - b__OOOO, - b______}, - [0x48] {b_O___O, + b__OOOO}, + [0x48] {b______, + b_O___O, b_O___O, b_O___O, b_OOOOO, b_O___O, b_O___O, - b_O___O, - b______}, - [0x49] {b__OOO_, - b___O__, - b___O__, - b___O__, - b___O__, - b___O__, + b_O___O}, + [0x49] {b______, b__OOO_, - b______}, - [0x4a] {b_____O, - b_____O, - b_____O, - b_____O, + b___O__, + b___O__, + b___O__, + b___O__, + b___O__, + b__OOO_}, + [0x4a] {b______, + b___OOO, + b____O_, + b____O_, + b____O_, + b____O_, + b_O__O_, + b__OO__}, + [0x4b] {b______, b_O___O, - b_O___O, - b__OOO_, - b______}, - [0x4b] {b_O___O, b_O__O_, b_O_O__, b_OO___, b_O_O__, b_O__O_, + b_O___O}, + [0x4c] {b______, + b_O____, + b_O____, + b_O____, + b_O____, + b_O____, + b_O____, + b_OOOOO}, + [0x4d] {b______, b_O___O, - b______}, - [0x4c] {b_O____, - b_O____, - b_O____, - b_O____, - b_O____, - b_O____, - b_OOOOO, - b______}, - [0x4d] {b_O___O, b_OO_OO, b_O_O_O, + b_O_O_O, b_O___O, b_O___O, + b_O___O}, + [0x4e] {b______, b_O___O, b_O___O, - b______}, - [0x4e] {b_O___O, b_OO__O, b_O_O_O, b_O__OO, b_O___O, - b_O___O, - b_O___O, - b______}, - [0x4f] {b__OOO_, - b_O___O, - b_O___O, - b_O___O, - b_O___O, - b_O___O, + b_O___O}, + [0x4f] {b______, b__OOO_, - b______}, - [0x50] {b_OOOO_, + b_O___O, + b_O___O, + b_O___O, + b_O___O, + b_O___O, + b__OOO_}, + [0x50] {b______, + b_OOOO_, b_O___O, b_O___O, b_OOOO_, b_O____, b_O____, - b_O____, - b______}, - [0x51] {b__OOO_, + b_O____}, + [0x51] {b______, + b__OOO_, b_O___O, b_O___O, b_O___O, b_O_O_O, b_O__O_, - b__OO_O, - b______}, - [0x52] {b_OOOO_, + b__OO_O}, + [0x52] {b______, + b_OOOO_, b_O___O, b_O___O, b_OOOO_, + b_O_O__, b_O__O_, - b_O___O, - b_O___O, - b______}, - [0x53] {b__OOO_, - b_O___O, + b_O___O}, + [0x53] {b______, + b__OOOO, + b_O____, b_O____, b__OOO_, b_____O, - b_O___O, - b__OOO_, - b______}, - [0x54] {b_OOOOO, + b_____O, + b_OOOO_}, + [0x54] {b______, + b_OOOOO, b___O__, b___O__, b___O__, b___O__, b___O__, - b___O__, - b______}, - [0x55] {b_O___O, + b___O__}, + [0x55] {b______, b_O___O, b_O___O, b_O___O, b_O___O, b_O___O, - b__OOO_, - b______}, - [0x56] {b_O___O, + b_O___O, + b__OOO_}, + [0x56] {b______, + b_O___O, b_O___O, b_O___O, b_O___O, b_O___O, b__O_O_, - b___O__, - b______}, - [0x57] {b_O___O, + b___O__}, + [0x57] {b______, + b_O___O, + b_O___O, b_O___O, b_O_O_O, b_O_O_O, b_O_O_O, - b_O_O_O, - b__O_O_, - b______}, - [0x58] {b_O___O, + b__O_O_}, + [0x58] {b______, + b_O___O, b_O___O, b__O_O_, b___O__, b__O_O_, b_O___O, + b_O___O}, + [0x59] {b______, b_O___O, - b______}, - [0x59] {b_O___O, b_O___O, b_O___O, b__O_O_, b___O__, b___O__, - b___O__, - b______}, - [0x5a] {b_OOOO_, + b___O__}, + [0x5a] {b______, + b_OOOOO, + b_____O, b____O_, b___O__, b__O___, b_O____, - b_O____, - b_OOOO_, - b______}, - [0x5b] {b__OOO_, - b__O___, - b__O___, - b__O___, - b__O___, - b__O___, + b_OOOOO}, + [0x5b] {b______, b__OOO_, - b______}, + b__O___, + b__O___, + b__O___, + b__O___, + b__O___, + b__OOO_}, [0x5c] {b______, + b______, b_O____, b__O___, b___O__, b____O_, b_____O, - b______, b______}, - [0x5d] {b__OOO_, - b____O_, - b____O_, - b____O_, - b____O_, - b____O_, + [0x5d] {b______, b__OOO_, - b______}, - [0x5e] {b___O__, + b____O_, + b____O_, + b____O_, + b____O_, + b____O_, + b__OOO_}, + [0x5e] {b______, + b___O__, b__O_O_, b_O___O, b______, b______, b______, - b______, b______}, [0x5f] {b______, b______, @@ -858,232 +564,232 @@ unsigned char fontdata_6x8[256][8] = { b______, b______, b______, - bOOOOOO}, - [0x60] {b__OO__, - b__OO__, + b_OOOOO}, + [0x60] {b______, + b__O___, b___O__, - b______, + b____O_, b______, b______, b______, b______}, [0x61] {b______, + b______, b______, b__OOO_, b_____O, b__OOOO, b_O___O, - b__OOOO, - b______}, - [0x62] {b_O____, + b__OOOO}, + [0x62] {b______, b_O____, - b_OOOO_, + b_O____, + b_O_OO_, + b_OO__O, b_O___O, b_O___O, - b_O___O, - b_OOOO_, - b______}, + b_OOOO_}, [0x63] {b______, + b______, b______, b__OOO_, b_O___O, b_O____, b_O___O, - b__OOO_, - b______}, - [0x64] {b_____O, + b__OOO_}, + [0x64] {b______, b_____O, - b__OOOO, + b_____O, + b__OO_O, + b_O__OO, b_O___O, b_O___O, - b_O___O, - b__OOOO, - b______}, + b__OOOO}, [0x65] {b______, + b______, b______, b__OOO_, b_O___O, + b_OOOOO, + b_O____, + b__OOO_}, + [0x66] {b______, + b___OO_, + b__O__O, + b__O___, + b_OOO__, + b__O___, + b__O___, + b__O___}, + [0x67] {b______, + b______, + b______, + b__OOOO, + b_O___O, + b__OOOO, + b_____O, + b__OOO_}, + [0x68] {b______, + b_O____, + b_O____, + b_O_OO_, + b_OO__O, + b_O___O, + b_O___O, + b_O___O}, + [0x69] {b______, + b___O__, + b______, + b__OO__, + b___O__, + b___O__, + b___O__, + b__OOO_}, + [0x6a] {b______, + b____O_, + b______, + b___OO_, + b____O_, + b____O_, + b_O__O_, + b__OO__}, + [0x6b] {b______, + b__O___, + b__O___, + b__O__O, + b__O_O_, + b__OO__, + b__O_O_, + b__O__O}, + [0x6c] {b______, + b__OO__, + b___O__, + b___O__, + b___O__, + b___O__, + b___O__, + b__OOO_}, + [0x6d] {b______, + b______, + b______, + b_OO_O_, + b_O_O_O, + b_O_O_O, + b_O___O, + b_O___O}, + [0x6e] {b______, + b______, + b______, + b_O_OO_, + b_OO__O, + b_O___O, + b_O___O, + b_O___O}, + [0x6f] {b______, + b______, + b______, + b__OOO_, + b_O___O, + b_O___O, + b_O___O, + b__OOO_}, + [0x70] {b______, + b______, + b______, + b_OOOO_, + b_O___O, b_OOOO_, b_O____, - b__OOO_, - b______}, - [0x66] {b___OO_, - b__O___, - b__O___, - b_OOOO_, - b__O___, - b__O___, - b__O___, - b______}, - [0x67] {b______, + b_O____}, + [0x71] {b______, b______, + b______, + b__OO_O, + b_O__OO, b__OOOO, + b_____O, + b_____O}, + [0x72] {b______, + b______, + b______, + b_O_OO_, + b_OO__O, + b_O____, + b_O____, + b_O____}, + [0x73] {b______, + b______, + b______, + b__OOO_, + b_O____, + b__OOO_, + b_____O, + b_OOOO_}, + [0x74] {b______, + b__O___, + b_OOO__, + b__O___, + b__O___, + b__O___, + b__O__O, + b___OO_}, + [0x75] {b______, + b______, + b______, + b_O___O, + b_O___O, + b_O___O, + b_O__OO, + b__OO_O}, + [0x76] {b______, + b______, + b______, + b_O___O, + b_O___O, + b_O___O, + b__O_O_, + b___O__}, + [0x77] {b______, + b______, + b______, + b_O___O, + b_O___O, + b_O___O, + b_O_O_O, + b__O_O_}, + [0x78] {b______, + b______, + b______, + b_O___O, + b__O_O_, + b___O__, + b__O_O_, + b_O___O}, + [0x79] {b______, + b______, + b______, b_O___O, b_O___O, b__OOOO, b_____O, b__OOO_}, - [0x68] {b_O____, - b_O____, - b_OOO__, - b_O__O_, - b_O__O_, - b_O__O_, - b_O__O_, - b______}, - [0x69] {b___O__, - b______, - b___O__, - b___O__, - b___O__, - b___O__, - b___OO_, - b______}, - [0x6a] {b____O_, - b______, - b___OO_, - b____O_, - b____O_, - b____O_, - b_O__O_, - b__OO__}, - [0x6b] {b_O____, - b_O____, - b_O__O_, - b_O_O__, - b_OO___, - b_O_O__, - b_O__O_, - b______}, - [0x6c] {b___O__, - b___O__, - b___O__, - b___O__, - b___O__, - b___O__, - b___OO_, - b______}, - [0x6d] {b______, - b______, - b_OO_O_, - b_O_O_O, - b_O_O_O, - b_O___O, - b_O___O, - b______}, - [0x6e] {b______, - b______, - b_OOO__, - b_O__O_, - b_O__O_, - b_O__O_, - b_O__O_, - b______}, - [0x6f] {b______, - b______, - b__OOO_, - b_O___O, - b_O___O, - b_O___O, - b__OOO_, - b______}, - [0x70] {b______, - b______, - b_OOOO_, - b_O___O, - b_O___O, - b_O___O, - b_OOOO_, - b_O____}, - [0x71] {b______, - b______, - b__OOOO, - b_O___O, - b_O___O, - b_O___O, - b__OOOO, - b_____O}, - [0x72] {b______, - b______, - b_O_OO_, - b__O__O, - b__O___, - b__O___, - b_OOO__, - b______}, - [0x73] {b______, - b______, - b__OOO_, - b_O____, - b__OOO_, - b_____O, - b__OOO_, - b______}, - [0x74] {b______, - b__O___, - b_OOOO_, - b__O___, - b__O___, - b__O_O_, - b___O__, - b______}, - [0x75] {b______, - b______, - b_O__O_, - b_O__O_, - b_O__O_, - b_O_OO_, - b__O_O_, - b______}, - [0x76] {b______, - b______, - b_O___O, - b_O___O, - b_O___O, - b__O_O_, - b___O__, - b______}, - [0x77] {b______, - b______, - b_O___O, - b_O___O, - b_O_O_O, - b_OOOOO, - b__O_O_, - b______}, - [0x78] {b______, - b______, - b_O__O_, - b_O__O_, - b__OO__, - b_O__O_, - b_O__O_, - b______}, - [0x79] {b______, - b______, - b_O__O_, - b_O__O_, - b_O__O_, - b__OOO_, - b___O__, - b_OO___}, [0x7a] {b______, b______, - b_OOOO_, + b______, + b_OOOOO, b____O_, - b__OO__, - b_O____, - b_OOOO_, - b______}, - [0x7b] {b___OO_, + b___O__, b__O___, + b_OOOOO}, + [0x7b] {b______, + b____O_, + b___O__, + b___O__, b__O___, - b_OO___, - b__O___, - b__O___, - b___OO_, - b______}, - [0x7c] {b___O__, + b___O__, + b___O__, + b____O_}, + [0x7c] {b______, b___O__, b___O__, b___O__, @@ -1091,1052 +797,1058 @@ unsigned char fontdata_6x8[256][8] = { b___O__, b___O__, b___O__}, - [0x7d] {b__OO__, + [0x7d] {b______, + b__O___, + b___O__, + b___O__, b____O_, - b____O_, - b____OO, - b____O_, - b____O_, - b__OO__, - b______}, - [0x7e] {b__O_O_, - b_O_O__, - b______, + b___O__, + b___O__, + b__O___}, + [0x7e] {b______, + b__OO_O, + b_O__O_, b______, b______, b______, b______, b______}, - [0x7f] {b___O__, + [0x80] {b______, + b__O_O_, + b_OOOOO, + b_OOOOO, + b_OOOOO, b__OOO_, - b_OO_OO, + b___O__, + b______}, + [0x81] {b______, + b______, + b__O_O_, + b__OOO_, + b__OOO_, + b___O__, + b______, + b______}, + [0x82] {b______, + b___O__, + b__OOO_, + b_O_O_O, + b___O__, + b___O__, + b___O__, + b___O__}, + [0x83] {b______, + b___O__, + b___O__, + b___O__, + b___O__, + b_O_O_O, + b__OOO_, + b___O__}, + [0x84] {b______, + b______, + b___O__, + b__O___, + b_OOOOO, + b__O___, + b___O__, + b______}, + [0x85] {b______, + b______, + b___O__, + b____O_, + b_OOOOO, + b____O_, + b___O__, + b______}, + [0x86] {b______, + b______, + b_OOOOO, + b_O___O, b_O___O, b_O___O, b_OOOOO, - b______, b______}, - [0x80] {b__OOO_, - b_O___O, - b_O____, - b_O____, - b_O___O, - b__OOO_, + [0x87] {b___O__, b___O__, - b__OO__}, - [0x81] {b_O__O_, - b______, - b_O__O_, - b_O__O_, - b_O__O_, + b_OOO_O, b_O_OO_, - b__O_O_, - b______}, - [0x82] {b____OO, - b______, - b__OOO_, - b_O___O, - b_OOOO_, - b_O____, - b__OOO_, - b______}, - [0x83] {b__OOO_, - b______, - b__OOO_, - b_____O, - b__OOOO, - b_O___O, - b__OOOO, - b______}, - [0x84] {b__O_O_, - b______, - b__OOO_, - b_____O, - b__OOOO, - b_O___O, - b__OOOO, - b______}, - [0x85] {b__OO__, - b______, - b__OOO_, - b_____O, - b__OOOO, - b_O___O, - b__OOOO, - b______}, - [0x86] {b__OOO_, - b__O_O_, - b__OOO_, - b_____O, - b__OOOO, - b_O___O, - b__OOOO, - b______}, - [0x87] {b______, - b__OOO_, - b_O___O, - b_O____, - b_O___O, - b__OOO_, - b___O__, - b__OO__}, - [0x88] {b__OOO_, - b______, - b__OOO_, - b_O___O, - b_OOOO_, - b_O____, - b__OOO_, - b______}, - [0x89] {b__O_O_, - b______, - b__OOO_, - b_O___O, - b_OOOO_, - b_O____, - b__OOO_, - b______}, - [0x8a] {b__OO__, - b______, - b__OOO_, - b_O___O, - b_OOOO_, - b_O____, - b__OOO_, - b______}, - [0x8b] {b__O_O_, - b______, - b___O__, - b___O__, - b___O__, - b___O__, - b___OO_, - b______}, - [0x8c] {b___O__, - b__O_O_, - b______, - b___O__, - b___O__, - b___O__, - b___OO_, - b______}, - [0x8d] {b__O___, - b______, - b___O__, - b___O__, - b___O__, - b___O__, - b___OO_, - b______}, - [0x8e] {b__O_O_, - b______, - b___O__, - b__O_O_, + b_O_O_O, b_O___O, b_OOOOO, - b_O___O, b______}, - [0x8f] {b__OOO_, - b__O_O_, - b__OOO_, + [0x88] {b______, + b______, + b_OOOOO, + b_O_O_O, b_OO_OO, - b_O___O, + b_O_O_O, b_OOOOO, - b_O___O, b______}, - [0x90] {b____OO, + [0x89] {b______, + b__O___, + b__OO__, + b__OOO_, + b__OOOO, + b__OOO_, + b__OO__, + b__O___}, + [0x8a] {b______, + b____O_, + b___OO_, + b__OOO_, + b_OOOO_, + b__OOO_, + b___OO_, + b____O_}, + [0x8b] {b______, + b______, + b______, + b______, + b______, + b______, + b______, + b_O_O_O}, + [0x8c] {b______, b______, b_OOOOO, - b_O____, - b_OOOO_, - b_O____, + b_OOOOO, + b_OOOOO, + b_OOOOO, b_OOOOO, b______}, + [0x8d] {b______, + b_OO_OO, + b_OO_OO, + b_OO_OO, + b_OO_OO, + b_OO_OO, + b_OO_OO, + b_OO_OO}, + [0x8e] {b______, + b__O___, + b___O__, + b____O_, + b___O__, + b__O___, + b______, + b_OOOOO}, + [0x8f] {b______, + b____O_, + b___O__, + b__O___, + b___O__, + b____O_, + b______, + b_OOOOO}, [0x91] {b______, b______, - b_OOOO_, - b___O_O, - b_OOOOO, - b_O_O__, - b__OOOO, - b______}, - [0x92] {b__OOOO, - b_O_O__, - b_O_O__, - b_OOOOO, - b_O_O__, - b_O_O__, - b_O_OOO, - b______}, - [0x93] {b__OOO_, b______, - b__OO__, - b_O__O_, - b_O__O_, - b_O__O_, - b__OO__, - b______}, - [0x94] {b__O_O_, b______, - b__OO__, - b_O__O_, - b_O__O_, - b_O__O_, - b__OO__, - b______}, - [0x95] {b_OO___, b______, - b__OO__, - b_O__O_, - b_O__O_, - b_O__O_, - b__OO__, - b______}, - [0x96] {b__OOO_, b______, - b_O__O_, - b_O__O_, - b_O__O_, - b_O_OO_, - b__O_O_, - b______}, - [0x97] {b_OO___, b______, - b_O__O_, - b_O__O_, - b_O__O_, - b_O_OO_, - b__O_O_, - b______}, - [0x98] {b__O_O_, + b_OOOOO}, + [0x92] {b______, b______, - b_O__O_, - b_O__O_, - b_O__O_, - b__OOO_, - b___O__, - b_OO___}, - [0x99] {b_O__O_, - b__OO__, - b_O__O_, - b_O__O_, - b_O__O_, - b_O__O_, - b__OO__, - b______}, - [0x9a] {b__O_O_, b______, - b_O__O_, - b_O__O_, - b_O__O_, - b_O__O_, - b__OO__, - b______}, - [0x9b] {b______, - b___O__, - b__OOO_, - b_O____, - b_O____, - b__OOO_, - b___O__, - b______}, - [0x9c] {b___OO_, - b__O__O, - b__O___, - b_OOOO_, - b__O___, - b__O__O, - b_O_OOO, - b______}, - [0x9d] {b_O___O, - b__O_O_, - b___O__, - b_OOOOO, - b___O__, - b_OOOOO, - b___O__, - b______}, - [0x9e] {b_OO___, - b_O_O__, - b_O_O__, - b_OO_O_, - b_O_OOO, - b_O__O_, - b_O__O_, - b______}, - [0x9f] {b____O_, - b___O_O, - b___O__, - b__OOO_, - b___O__, - b___O__, - b_O_O__, - b__O___}, - [0xa0] {b___OO_, b______, - b__OOO_, - b_____O, - b__OOOO, - b_O___O, - b__OOOO, - b______}, - [0xa1] {b___OO_, b______, - b___O__, - b___O__, - b___O__, - b___O__, - b___OO_, - b______}, - [0xa2] {b___OO_, - b______, - b__OO__, - b_O__O_, - b_O__O_, - b_O__O_, - b__OO__, - b______}, - [0xa3] {b___OO_, - b______, - b_O__O_, - b_O__O_, - b_O__O_, - b_O_OO_, - b__O_O_, - b______}, - [0xa4] {b__O_O_, - b_O_O__, - b______, - b_OOO__, - b_O__O_, - b_O__O_, - b_O__O_, - b______}, - [0xa5] {b__O_O_, - b_O_O__, - b______, - b_O__O_, - b_OO_O_, - b_O_OO_, - b_O__O_, - b______}, - [0xa6] {b__OOO_, - b_____O, - b__OOOO, - b_O___O, - b__OOOO, - b______, - b__OOOO, - b______}, - [0xa7] {b__OO__, - b_O__O_, - b_O__O_, - b_O__O_, - b__OO__, - b______, - b_OOOO_, - b______}, - [0xa8] {b___O__, - b______, - b___O__, - b__OO__, - b_O____, - b_O___O, - b__OOO_, - b______}, - [0xa9] {b______, b______, b_OOOOO, + b_OOOOO}, + [0x93] {b______, + b______, + b______, + b______, + b______, + b_OOOOO, + b_OOOOO, + b_OOOOO}, + [0x94] {b______, + b______, + b______, + b______, + b_OOOOO, + b_OOOOO, + b_OOOOO, + b_OOOOO}, + [0x95] {b______, + b______, + b______, + b_OOOOO, + b_OOOOO, + b_OOOOO, + b_OOOOO, + b_OOOOO}, + [0x96] {b______, + b______, + b_OOOOO, + b_OOOOO, + b_OOOOO, + b_OOOOO, + b_OOOOO, + b_OOOOO}, + [0x97] {b______, + b_OOOOO, + b_OOOOO, + b_OOOOO, + b_OOOOO, + b_OOOOO, + b_OOOOO, + b_OOOOO}, + [0x98] {b_OOOOO, + b_OOOOO, + b_OOOOO, + b_OOOOO, + b_OOOOO, + b_OOOOO, + b_OOOOO, + b_OOOOO}, + [0x9a] {b______, + b_O____, + b_O____, b_O____, b_O____, b_O____, - b______, - b______}, - [0xaa] {b______, - b______, - bOOOOOO, - b_____O, - b_____O, - b______, - b______, - b______}, - [0xab] {b_O____, - b_O__O_, - b_O_O__, - b__OOO_, - b_O___O, - b____O_, - b___OOO, - b______}, - [0xac] {b_O____, - b_O__O_, - b_O_O__, - b__O_OO, - b_O_O_O, - b___OOO, - b_____O, - b______}, - [0xad] {b___O__, - b______, - b___O__, - b___O__, - b__OOO_, - b__OOO_, - b___O__, - b______}, - [0xae] {b______, - b______, - b__O__O, - b_O__O_, - b__O__O, - b______, - b______, - b______}, - [0xaf] {b______, - b______, - b_O__O_, - b__O__O, - b_O__O_, - b______, - b______, - b______}, - [0xb0] {b_O_O_O, - b______, - bO_O_O_, - b______, - b_O_O_O, - b______, - bO_O_O_, - b______}, - [0xb1] {b_O_O_O, - bO_O_O_, - b_O_O_O, - bO_O_O_, - b_O_O_O, - bO_O_O_, - b_O_O_O, - bO_O_O_}, - [0xb2] {bO_O_O_, - bOOOOOO, - b_O_O_O, - bOOOOOO, - bO_O_O_, - bOOOOOO, - b_O_O_O, - bOOOOOO}, - [0xb3] {b___O__, - b___O__, - b___O__, - b___O__, - b___O__, - b___O__, - b___O__, - b___O__}, - [0xb4] {b___O__, - b___O__, - b___O__, - bOOOO__, - b___O__, - b___O__, - b___O__, - b___O__}, - [0xb5] {b______, - b______, - b_O__O_, - b_O__O_, - b_O__O_, - b_OOO__, b_O____, b_O____}, - [0xb6] {b_O_O__, + [0x9b] {b______, + b_OO___, + b_OO___, + b_OO___, + b_OO___, + b_OO___, + b_OO___, + b_OO___}, + [0x9c] {b______, + b_OOO__, + b_OOO__, + b_OOO__, + b_OOO__, + b_OOO__, + b_OOO__, + b_OOO__}, + [0x9d] {b______, + b_OOOO_, + b_OOOO_, + b_OOOO_, + b_OOOO_, + b_OOOO_, + b_OOOO_, + b_OOOO_}, + [0x9e] {b______, + b_OOOOO, + b_OOOOO, + b_OOOOO, + b_OOOOO, + b_OOOOO, + b_OOOOO, + b_OOOOO}, + [0xa1] {b______, + b___O__, + b______, + b______, + b___O__, + b___O__, + b___O__, + b___O__}, + [0xa2] {b______, + b___O__, + b__OOO_, b_O_O__, b_O_O__, - bOO_O__, + b_O_O_O, + b__OOO_, + b___O__}, + [0xa3] {b______, + b___OO_, + b__O___, + b__O___, + b_OOO__, + b__O___, + b__O__O, + b_O_OO_}, + [0xa4] {b______, + b______, + b_O___O, + b__OOO_, + b__O_O_, + b__OOO_, + b_O___O, + b______}, + [0xa5] {b______, + b_O___O, + b__O_O_, + b_OOOOO, + b___O__, + b_OOOOO, + b___O__, + b___O__}, + [0xa6] {b______, + b___OOO, + b__O___, + b_OOOO_, + b__O___, + b_OOOO_, + b__O___, + b___OOO}, + [0xa7] {b______, + b___OO_, + b__O__O, + b___O__, + b__O_O_, + b___O__, + b_O__O_, + b__OO__}, + [0xa9] {b______, + b_OOOOO, + b_O___O, + b_O_O_O, + b_O_OOO, + b_O_O_O, + b_O___O, + b_OOOOO}, + [0xaa] {b______, + b__OOO_, + b_____O, + b__OOOO, + b_O___O, + b__OOOO, + b______, + b_OOOOO}, + [0xab] {b______, + b______, + b___O_O, + b__O_O_, b_O_O__, - b_O_O__, - b_O_O__, - b_O_O__}, + b__O_O_, + b___O_O, + b______}, + [0xac] {b______, + b______, + b__OOO_, + b_OOOOO, + b_OOOOO, + b_OOOOO, + b__OOO_, + b______}, + [0xae] {b______, + b_OOOOO, + b_O___O, + b_O_O_O, + b_O___O, + b_O__OO, + b_O_O_O, + b_OOOOO}, + [0xb0] {b__OO__, + b_O__O_, + b_O__O_, + b__OO__, + b______, + b______, + b______, + b______}, + [0xb1] {b______, + b___O__, + b___O__, + b_OOOOO, + b___O__, + b___O__, + b______, + b_OOOOO}, + [0xb2] {b__OO__, + b_O__O_, + b___O__, + b__O___, + b_OOOO_, + b______, + b______, + b______}, + [0xb3] {b_OOO__, + b____O_, + b__OO__, + b____O_, + b_OOO__, + b______, + b______, + b______}, + [0xb4] {b____O_, + b___O__, + b__O___, + b______, + b______, + b______, + b______, + b______}, + [0xb5] {b______, + b_O___O, + b_O___O, + b_O___O, + b_O__OO, + b_OOO_O, + b_O____, + b_O____}, + [0xb6] {b______, + b__OOOO, + b_O_O_O, + b_O_O_O, + b__OO_O, + b___O_O, + b___O_O, + b___O_O}, [0xb7] {b______, b______, b______, - bOOOO__, - b_O_O__, - b_O_O__, - b_O_O__, - b_O_O__}, - [0xb8] {b______, - bOOOO__, - b___O__, - bOOOO__, - b___O__, - b___O__, - b___O__, - b___O__}, - [0xb9] {b_O_O__, - bOO_O__, - b___O__, - bOO_O__, - b_O_O__, - b_O_O__, - b_O_O__, - b_O_O__}, - [0xba] {b_O_O__, - b_O_O__, - b_O_O__, - b_O_O__, - b_O_O__, - b_O_O__, - b_O_O__, - b_O_O__}, + b__OO__, + b__OO__, + b______, + b______, + b______}, + [0xb9] {b__O___, + b_OO___, + b__O___, + b__O___, + b_OOO__, + b______, + b______, + b______}, + [0xba] {b______, + b__OOO_, + b_O___O, + b_O___O, + b_O___O, + b__OOO_, + b______, + b_OOOOO}, [0xbb] {b______, - bOOOO__, - b___O__, - bOO_O__, + b______, b_O_O__, - b_O_O__, - b_O_O__, - b_O_O__}, - [0xbc] {b_O_O__, - bOO_O__, - b___O__, - bOOOO__, - b______, - b______, - b______, - b______}, - [0xbd] {b_O_O__, - b_O_O__, - b_O_O__, - bOOOO__, - b______, - b______, - b______, - b______}, - [0xbe] {b___O__, - bOOOO__, - b___O__, - bOOOO__, - b______, - b______, - b______, - b______}, - [0xbf] {b______, - b______, - b______, - bOOOO__, - b___O__, - b___O__, - b___O__, - b___O__}, - [0xc0] {b___O__, - b___O__, - b___O__, - b___OOO, - b______, - b______, - b______, - b______}, - [0xc1] {b___O__, - b___O__, - b___O__, - bOOOOOO, - b______, - b______, - b______, - b______}, - [0xc2] {b______, - b______, - b______, - bOOOOOO, - b___O__, - b___O__, - b___O__, - b___O__}, - [0xc3] {b___O__, - b___O__, - b___O__, - b___OOO, - b___O__, - b___O__, - b___O__, - b___O__}, - [0xc4] {b______, - b______, - b______, - bOOOOOO, - b______, - b______, - b______, - b______}, - [0xc5] {b___O__, - b___O__, - b___O__, - bOOOOOO, - b___O__, - b___O__, - b___O__, - b___O__}, - [0xc6] {b___O__, - b___OOO, - b___O__, - b___OOO, - b___O__, - b___O__, - b___O__, - b___O__}, - [0xc7] {b_O_O__, - b_O_O__, - b_O_O__, - b_O_OOO, - b_O_O__, - b_O_O__, - b_O_O__, - b_O_O__}, - [0xc8] {b_O_O__, - b_O_OOO, - b_O____, - b_OOOOO, - b______, - b______, - b______, - b______}, - [0xc9] {b______, - b_OOOOO, - b_O____, - b_O_OOO, - b_O_O__, - b_O_O__, - b_O_O__, - b_O_O__}, - [0xca] {b_O_O__, - bOO_OOO, - b______, - bOOOOOO, - b______, - b______, - b______, - b______}, - [0xcb] {b______, - bOOOOOO, - b______, - bOO_OOO, - b_O_O__, - b_O_O__, - b_O_O__, - b_O_O__}, - [0xcc] {b_O_O__, - b_O_OOO, - b_O____, - b_O_OOO, - b_O_O__, - b_O_O__, - b_O_O__, - b_O_O__}, - [0xcd] {b______, - bOOOOOO, - b______, - bOOOOOO, - b______, - b______, - b______, - b______}, - [0xce] {b_O_O__, - bOO_OOO, - b______, - bOO_OOO, - b_O_O__, - b_O_O__, - b_O_O__, - b_O_O__}, - [0xcf] {b___O__, - bOOOOOO, - b______, - bOOOOOO, - b______, - b______, - b______, - b______}, - [0xd0] {b_O_O__, - b_O_O__, - b_O_O__, - bOOOOOO, - b______, - b______, - b______, - b______}, - [0xd1] {b______, - bOOOOOO, - b______, - bOOOOOO, - b___O__, - b___O__, - b___O__, - b___O__}, - [0xd2] {b______, - b______, - b______, - bOOOOOO, - b_O_O__, - b_O_O__, - b_O_O__, - b_O_O__}, - [0xd3] {b_O_O__, - b_O_O__, - b_O_O__, - b_OOOOO, - b______, - b______, - b______, - b______}, - [0xd4] {b______, - b______, - b______, - b______, - b______, - b______, - b______, - bOOOOOO}, - [0xd5] {b______, - b______, - b______, - b______, - b______, - b______, - bOOOOOO, - bOOOOOO}, - [0xd6] {b______, - b______, - b______, - b______, - b______, - bOOOOOO, - bOOOOOO, - bOOOOOO}, - [0xd7] {b______, - b______, - b______, - b______, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO}, - [0xd8] {b______, - b______, - b______, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO}, - [0xd9] {b______, - b______, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO}, - [0xda] {b______, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO}, - [0xdb] {bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO}, - [0xdc] {bO_____, - bO_____, - bO_____, - bO_____, - bO_____, - bO_____, - bO_____, - bO_____}, - [0xdd] {bOO____, - bOO____, - bOO____, - bOO____, - bOO____, - bOO____, - bOO____, - bOO____}, - [0xde] {bOOO___, - bOOO___, - bOOO___, - bOOO___, - bOOO___, - bOOO___, - bOOO___, - bOOO___}, - [0xdf] {bOOOO__, - bOOOO__, - bOOOO__, - bOOOO__, - bOOOO__, - bOOOO__, - bOOOO__, - bOOOO__}, - [0xe0] {bOOOOO_, - bOOOOO_, - bOOOOO_, - bOOOOO_, - bOOOOO_, - bOOOOO_, - bOOOOO_, - bOOOOO_}, - [0xe1] {b______, - b_OOO__, - b_O__O_, - b_OOO__, - b_O__O_, - b_O__O_, - b_OOO__, - b_O____}, - [0xe2] {b_OOOO_, - b_O__O_, - b_O____, - b_O____, - b_O____, - b_O____, - b_O____, - b______}, - [0xe3] {b______, - b_OOOOO, b__O_O_, - b__O_O_, - b__O_O_, - b__O_O_, - b__O_O_, - b______}, - [0xe4] {b__O_O_, - b______, - b__OOO_, - b_____O, - b__OOOO, - b_O___O, - b__OOOO, - b______}, - [0xe5] {b______, - b______, - b__OOOO, - b_O__O_, - b_O__O_, - b__OO__, - b______, - b______}, - [0xe6] {b______, - b______, - b_O__O_, - b_O__O_, - b_O__O_, - b_OOO__, - b_O____, - b_O____}, - [0xe7] {b______, - b______, + b___O_O, b__O_O_, b_O_O__, - b___O__, - b___O__, - b___O__, b______}, - [0xe8] {b__OOO_, - b___O__, - b__OOO_, - b_O___O, - b__OOO_, - b___O__, - b__OOO_, - b______}, - [0xe9] {b__OO__, + [0xbc] {b_O___O, b_O__O_, - b_O__O_, - b_OOOO_, - b_O__O_, - b_O__O_, - b__OO__, - b______}, - [0xea] {b______, - b__OOO_, - b_O___O, - b_O___O, - b__O_O_, - b__O_O_, - b_OO_OO, - b______}, - [0xeb] {b__OO__, - b_O____, - b__O___, - b___O__, - b__OOO_, - b_O__O_, - b__OO__, - b______}, - [0xec] {b______, - b______, - b__O_O_, - b_O_O_O, - b_O_O_O, - b__O_O_, - b______, - b______}, - [0xed] {b______, - b___O__, - b__OOO_, - b_O_O_O, - b_O_O_O, - b__OOO_, - b___O__, - b______}, - [0xee] {b______, - b__OOO_, - b_O____, - b_OOOO_, - b_O____, - b__OOO_, - b______, - b______}, - [0xef] {b______, - b__OO__, - b_O__O_, - b_O__O_, - b_O__O_, - b_O__O_, - b______, - b______}, - [0xf0] {b______, - b_OOOO_, - b______, - b_OOOO_, - b______, - b_OOOO_, - b______, - b______}, - [0xf1] {b______, - b___O__, - b__OOO_, - b___O__, - b______, - b__OOO_, - b______, - b______}, - [0xf2] {b_O____, - b__OO__, - b____O_, - b__OO__, - b_O____, - b______, - b_OOOO_, - b______}, - [0xf3] {b______, - b______, - bOOOOOO, - bOOO___, - bO__OO_, - bO____O, - bO_____, - bOOOOOO}, - [0xf4] {b______, - b______, - bOOOOOO, - b___OOO, - b_OO__O, - bO____O, - b_____O, - bOOOOOO}, - [0xf5] {b___O__, - b___O__, - b___O__, - b___O__, - b___O__, b_O_O__, - b__O___, - b______}, - [0xf6] {b__O_O_, - b______, - b__OOO_, - b_O___O, - b_O___O, - b_O___O, - b__OOO_, - b______}, - [0xf7] {bOOOOO_, - bOOOOO_, - bOOOOO_, - bOOOOO_, - bOOOOO_, - bOOOOO_, - bOOOOO_, - bOOOOO_}, - [0xf8] {bOOOO__, - bOOOO__, - bOOOO__, - bOOOO__, - bOOOO__, - bOOOO__, - bOOOO__, - bOOOO__}, - [0xf9] {bOOO___, - bOOO___, - bOOO___, - bOOO___, - bOOO___, - bOOO___, - bOOO___, - bOOO___}, - [0xfa] {bOO____, - bOO____, - bOO____, - bOO____, - bOO____, - bOO____, - bOO____, - bOO____}, - [0xfb] {bO_____, - bO_____, - bO_____, - bO_____, - bO_____, - bO_____, - bO_____, - bO_____}, - [0xfc] {b__O_O_, - b______, - b_O__O_, - b_O__O_, - b_O__O_, + b__O_O_, b_O_OO_, b__O_O_, - b______}, - [0xfd] {b_OO___, + b__OOOO, + b____O_}, + [0xbd] {b_O___O, + b_O__O_, + b_O_O__, + b__O_O_, + b_O_O_O, + b_____O, + b____O_, + b___OOO}, + [0xbe] {b_OO___, + b__O___, + b_OO___, + b__O__O, + b_OO_OO, + b___O_O, + b___OOO, + b_____O}, + [0xbf] {b______, + b___O__, + b______, b___O__, b__O___, + b_O____, + b_O___O, + b__OOO_}, + [0xc0] {b__O___, + b___O__, + b___O__, + b__O_O_, + b_O___O, + b_OOOOO, + b_O___O, + b_O___O}, + [0xc1] {b____O_, + b___O__, + b___O__, + b__O_O_, + b_O___O, + b_OOOOO, + b_O___O, + b_O___O}, + [0xc2] {b___O__, + b__O_O_, + b______, + b__OOO_, + b_O___O, + b_OOOOO, + b_O___O, + b_O___O}, + [0xc3] {b__OO_O, + b_O__O_, + b______, + b__OOO_, + b_O___O, + b_OOOOO, + b_O___O, + b_O___O}, + [0xc4] {b__O_O_, + b______, + b___O__, + b__O_O_, + b_O___O, + b_OOOOO, + b_O___O, + b_O___O}, + [0xc5] {b___O__, + b__O_O_, + b___O__, + b__OOO_, + b_O___O, + b_OOOOO, + b_O___O, + b_O___O}, + [0xc6] {b______, + b___OOO, + b__OO__, + b_O_O__, + b_O_OOO, b_OOO__, + b_O_O__, + b_O_OOO}, + [0xc7] {b__OOO_, + b_O___O, + b_O____, + b_O____, + b_O___O, + b__OOO_, + b____O_, + b___OO_}, + [0xc8] {b__O___, + b___O__, b______, - b______, - b______, - b______}, - [0xfe] {b______, - b______, - b______, + b_OOOOO, + b_O____, b_OOOO_, - bOO__O_, - bOO__OO, - bOOOOO_, - b__OOOO}, - [0xff] {b_O__O_, - bOOOOOO, - b_O__O_, - b_O__O_, - bOOOOOO, + b_O____, + b_OOOOO}, + [0xc9] {b___O__, + b__O___, + b______, + b_OOOOO, + b_O____, + b_OOOO_, + b_O____, + b_OOOOO}, + [0xca] {b___O__, + b__O_O_, + b______, + b_OOOOO, + b_O____, + b_OOOO_, + b_O____, + b_OOOOO}, + [0xcb] {b______, + b__O_O_, + b______, + b_OOOOO, + b_O____, + b_OOOO_, + b_O____, + b_OOOOO}, + [0xcc] {b__O___, + b___O__, + b______, + b__OOO_, + b___O__, + b___O__, + b___O__, + b__OOO_}, + [0xcd] {b____O_, + b___O__, + b______, + b__OOO_, + b___O__, + b___O__, + b___O__, + b__OOO_}, + [0xce] {b___O__, + b__O_O_, + b______, + b__OOO_, + b___O__, + b___O__, + b___O__, + b__OOO_}, + [0xcf] {b______, + b__O_O_, + b______, + b__OOO_, + b___O__, + b___O__, + b___O__, + b__OOO_}, + [0xd0] {b______, + b__OOO_, + b__O__O, + b__O__O, + b_OOO_O, + b__O__O, + b__O__O, + b__OOO_}, + [0xd1] {b__OO_O, b_O__O_, b______, - b______} + b_O___O, + b_OO__O, + b_O_O_O, + b_O__OO, + b_O___O}, + [0xd2] {b__O___, + b___O__, + b__OOO_, + b_O___O, + b_O___O, + b_O___O, + b_O___O, + b__OOO_}, + [0xd3] {b____O_, + b___O__, + b__OOO_, + b_O___O, + b_O___O, + b_O___O, + b_O___O, + b__OOO_}, + [0xd4] {b___O__, + b__O_O_, + b______, + b__OOO_, + b_O___O, + b_O___O, + b_O___O, + b__OOO_}, + [0xd5] {b__OO_O, + b_O__O_, + b______, + b__OOO_, + b_O___O, + b_O___O, + b_O___O, + b__OOO_}, + [0xd6] {b__O_O_, + b______, + b__OOO_, + b_O___O, + b_O___O, + b_O___O, + b_O___O, + b__OOO_}, + [0xd7] {b______, + b______, + b_O___O, + b__O_O_, + b___O__, + b__O_O_, + b_O___O, + b______}, + [0xd8] {b______, + b__OOO_, + b_O__OO, + b_O_O_O, + b_O_O_O, + b_O_O_O, + b_OO__O, + b__OOO_}, + [0xd9] {b__O___, + b___O__, + b_O___O, + b_O___O, + b_O___O, + b_O___O, + b_O___O, + b__OOO_}, + [0xda] {b____O_, + b___O__, + b_O___O, + b_O___O, + b_O___O, + b_O___O, + b_O___O, + b__OOO_}, + [0xdb] {b___O__, + b__O_O_, + b______, + b_O___O, + b_O___O, + b_O___O, + b_O___O, + b__OOO_}, + [0xdc] {b__O_O_, + b______, + b_O___O, + b_O___O, + b_O___O, + b_O___O, + b_O___O, + b__OOO_}, + [0xdd] {b____O_, + b___O__, + b_O___O, + b__O_O_, + b___O__, + b___O__, + b___O__, + b___O__}, + [0xde] {b_OO___, + b__O___, + b__OOO_, + b__O__O, + b__O__O, + b__OOO_, + b__O___, + b_OOO__}, + [0xdf] {b______, + b___OO_, + b__O__O, + b__O__O, + b__OOO_, + b__O__O, + b__O__O, + b_O_OO_}, + [0xe0] {b__O___, + b___O__, + b______, + b__OOO_, + b_____O, + b__OOOO, + b_O___O, + b__OOOO}, + [0xe1] {b____O_, + b___O__, + b______, + b__OOO_, + b_____O, + b__OOOO, + b_O___O, + b__OOOO}, + [0xe2] {b___O__, + b__O_O_, + b______, + b__OOO_, + b_____O, + b__OOOO, + b_O___O, + b__OOOO}, + [0xe3] {b__OO_O, + b_O__O_, + b______, + b__OOO_, + b_____O, + b__OOOO, + b_O___O, + b__OOOO}, + [0xe4] {b______, + b__O_O_, + b______, + b__OOO_, + b_____O, + b__OOOO, + b_O___O, + b__OOOO}, + [0xe5] {b___O__, + b__O_O_, + b___O__, + b__OOO_, + b_____O, + b__OOOO, + b_O___O, + b__OOOO}, + [0xe6] {b______, + b______, + b_OO_O_, + b___O_O, + b__OOOO, + b_O_O__, + b_O_O_O, + b__O_O_}, + [0xe7] {b______, + b______, + b__OOO_, + b_O____, + b_O___O, + b__OOO_, + b___O__, + b__OO__}, + [0xe8] {b__O___, + b___O__, + b______, + b__OOO_, + b_O___O, + b_OOOOO, + b_O____, + b__OOO_}, + [0xe9] {b____O_, + b___O__, + b______, + b__OOO_, + b_O___O, + b_OOOOO, + b_O____, + b__OOO_}, + [0xea] {b___O__, + b__O_O_, + b______, + b__OOO_, + b_O___O, + b_OOOOO, + b_O____, + b__OOO_}, + [0xeb] {b______, + b__O_O_, + b______, + b__OOO_, + b_O___O, + b_OOOOO, + b_O____, + b__OOO_}, + [0xec] {b__O___, + b___O__, + b______, + b__OO__, + b___O__, + b___O__, + b___O__, + b__OOO_}, + [0xed] {b____O_, + b___O__, + b______, + b__OO__, + b___O__, + b___O__, + b___O__, + b__OOO_}, + [0xee] {b___O__, + b__O_O_, + b______, + b__OO__, + b___O__, + b___O__, + b___O__, + b__OOO_}, + [0xef] {b______, + b__O_O_, + b______, + b__OO__, + b___O__, + b___O__, + b___O__, + b__OOO_}, + [0xf0] {b______, + b_O_O__, + b__O___, + b_O_O__, + b____O_, + b__OOOO, + b_O___O, + b__OOO_}, + [0xf1] {b__OO_O, + b_O__O_, + b______, + b_O_OO_, + b_OO__O, + b_O___O, + b_O___O, + b_O___O}, + [0xf2] {b__O___, + b___O__, + b______, + b__OOO_, + b_O___O, + b_O___O, + b_O___O, + b__OOO_}, + [0xf3] {b____O_, + b___O__, + b______, + b__OOO_, + b_O___O, + b_O___O, + b_O___O, + b__OOO_}, + [0xf4] {b______, + b___O__, + b__O_O_, + b______, + b__OOO_, + b_O___O, + b_O___O, + b__OOO_}, + [0xf5] {b______, + b__OO_O, + b_O__O_, + b______, + b__OOO_, + b_O___O, + b_O___O, + b__OOO_}, + [0xf6] {b______, + b__O_O_, + b______, + b__OOO_, + b_O___O, + b_O___O, + b_O___O, + b__OOO_}, + [0xf7] {b______, + b______, + b___O__, + b______, + b_OOOOO, + b______, + b___O__, + b______}, + [0xf8] {b______, + b_____O, + b__OOO_, + b_O__OO, + b_O_O_O, + b_OO__O, + b__OOO_, + b_O____}, + [0xf9] {b__O___, + b___O__, + b______, + b_O___O, + b_O___O, + b_O___O, + b_O__OO, + b__OO_O}, + [0xfa] {b____O_, + b___O__, + b______, + b_O___O, + b_O___O, + b_O___O, + b_O__OO, + b__OO_O}, + [0xfb] {b___O__, + b__O_O_, + b______, + b_O___O, + b_O___O, + b_O___O, + b_O__OO, + b__OO_O}, + [0xfc] {b______, + b__O_O_, + b______, + b_O___O, + b_O___O, + b_O___O, + b_O__OO, + b__OO_O}, + [0xfd] {b______, + b____O_, + b___O__, + b_O___O, + b_O___O, + b__OOOO, + b_____O, + b__OOO_}, + [0xfe] {b_OO___, + b__O___, + b__O___, + b__OO__, + b__O_O_, + b__OO__, + b__O___, + b_OOO__}, + [0xff] {b______, + b__O_O_, + b______, + b_O___O, + b_O___O, + b__OOOO, + b_____O, + b__OOO_}, }; + +static int +glcd_icon5x8(Driver *drvthis, int x, int y, int icon) +{ + switch (icon) { + case ICON_BLOCK_FILLED: + drvthis->chr(drvthis, x, y, 0x98); + break; + case ICON_HEART_FILLED: + drvthis->chr(drvthis, x, y, 0x80); + break; + case ICON_HEART_OPEN: + drvthis->chr(drvthis, x, y, 0x81); + break; + case ICON_ARROW_UP: + drvthis->chr(drvthis, x, y, 0x82); + break; + case ICON_ARROW_DOWN: + drvthis->chr(drvthis, x, y, 0x83); + break; + case ICON_ARROW_LEFT: + drvthis->chr(drvthis, x, y, 0x84); + break; + case ICON_ARROW_RIGHT: + drvthis->chr(drvthis, x, y, 0x85); + break; + case ICON_CHECKBOX_OFF: + drvthis->chr(drvthis, x, y, 0x86); + break; + case ICON_CHECKBOX_ON: + drvthis->chr(drvthis, x, y, 0x87); + break; + case ICON_CHECKBOX_GRAY: + drvthis->chr(drvthis, x, y, 0x88); + break; + case ICON_SELECTOR_AT_LEFT: + drvthis->chr(drvthis, x, y, 0x89); + break; + case ICON_SELECTOR_AT_RIGHT: + drvthis->chr(drvthis, x, y, 0x8a); + break; + case ICON_ELLIPSIS: + drvthis->chr(drvthis, x, y, 0x8b); + break; + case ICON_STOP: + drvthis->chr(drvthis, x, y, 0x8c); + break; + case ICON_PAUSE: + drvthis->chr(drvthis, x, y, 0x8d); + break; + case ICON_PLAY: + drvthis->chr(drvthis, x, y, 0x89); + break; + case ICON_PLAYR: + drvthis->chr(drvthis, x, y, 0x8a); + break; + case ICON_FF: + drvthis->chr(drvthis, x, y, 0xab); + break; + case ICON_FR: + drvthis->chr(drvthis, x, y, 0xbb); + break; + case ICON_NEXT: + drvthis->chr(drvthis, x, y, 0x8e); + break; + case ICON_PREV: + drvthis->chr(drvthis, x, y, 0x8f); + break; + case ICON_REC: + drvthis->chr(drvthis, x, y, 0xac); + break; + default: + return -1; + } + return 0; +} + +#endif diff --git a/server/drivers/i2500vfd.c b/server/drivers/i2500vfd.c index ae7a57c..9f3bbc6 100644 --- a/server/drivers/i2500vfd.c +++ b/server/drivers/i2500vfd.c @@ -24,23 +24,21 @@ // package for further details. // ////////////////////////////////////////////////////////////////////////// -#include -#include -#include -#include - -#include "i2500vfdfm.h" - #ifdef HAVE_CONFIG_H # include "config.h" #endif +#include +#include +#include +#include +#include + #include "lcd.h" #include "i2500vfd.h" +#include "glcd_font5x8.h" #include "report.h" -#include - // The display itself stores three pixels in one byte // We waste a little memory as we store one pixel per byte // as we want to keep the drawing code simple. @@ -89,7 +87,7 @@ drawchar2fb (Driver *drvthis, int x, int y, unsigned char z) int font_x, font_y; for (font_y = 0; font_y < 8; font_y++) { for (font_x = 5; font_x > -1; font_x--) { - if ((i2500vfd_fontmap[z][font_y] & 1<framebuf[INTRA2NET_VFD_XSHIFT+x*6-font_x + (y*8+font_y)*140] = 1; else p->framebuf[INTRA2NET_VFD_XSHIFT+x*6-font_x + (y*8+font_y)*140] = 0; @@ -340,7 +338,7 @@ i2500vfd_set_char (Driver *drvthis, int n, char *dat) return; for (row = 0; row < CELLHEIGHT; row++) { - i2500vfd_fontmap[n][row] = dat[row] & mask; + glcd_iso8859_1[n][row] = dat[row] & mask; } } @@ -396,7 +394,7 @@ i2500vfd_hbar(Driver *drvthis, int x, int y, int len, int promille, int pattern) return; } - offset = INTRA2NET_VFD_XSHIFT + 2 + x*CELLWIDTH + y*INTRA2NET_VFD_XSIZE*CELLHEIGHT; + offset = INTRA2NET_VFD_XSHIFT + 2 + x*CELLWIDTH + (y*CELLHEIGHT+1)*INTRA2NET_VFD_XSIZE; // calculate length of bar pixels = len*CELLWIDTH*promille/1000; @@ -419,19 +417,5 @@ i2500vfd_hbar(Driver *drvthis, int x, int y, int len, int promille, int pattern) MODULE_EXPORT int i2500vfd_icon (Driver *drvthis, int x, int y, int icon) { - switch (icon) { - case ICON_BLOCK_FILLED: - i2500vfd_chr(drvthis, x, y, 255); - break; - case ICON_HEART_FILLED: - i2500vfd_chr(drvthis, x, y, 3); - break; - case ICON_HEART_OPEN: - i2500vfd_chr(drvthis, x, y, 4); - break; - default: - return -1; - } - - return 0; + return (glcd_icon5x8(drvthis, x, y, icon)); } diff --git a/server/drivers/i2500vfdfm.c b/server/drivers/i2500vfdfm.c deleted file mode 100644 index 996413a..0000000 --- a/server/drivers/i2500vfdfm.c +++ /dev/null @@ -1,851 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// This file contains a HD44780 font and a font for big numbers. // -// The HD44780 font in this file was shamelessly stolen from // -// Michael Reinelt / lcd4linux and is // -// Copyright 1999, 2000 by Michael Reinelt (reinelt@eunet.at) // -// The rest of this file is // -// // -// (C) 2001 Robin Adams ( robin@adams-online.de ) // -// // -// This file is released under the GPL. See file COPYING in this // -// package for further details. // -////////////////////////////////////////////////////////////////////////// - -#define b______ 0x00 -#define b_____O 0x01 -#define b____O_ 0x02 -#define b____OO 0x03 -#define b___O__ 0x04 -#define b___O_O 0x05 -#define b___OO_ 0x06 -#define b___OOO 0x07 -#define b__O___ 0x08 -#define b__O__O 0x09 -#define b__O_O_ 0x0a -#define b__O_OO 0x0b -#define b__OO__ 0x0c -#define b__OO_O 0x0d -#define b__OOO_ 0x0e -#define b__OOOO 0x0f -#define b_O____ 0x10 -#define b_O___O 0x11 -#define b_O__O_ 0x12 -#define b_O__OO 0x13 -#define b_O_O__ 0x14 -#define b_O_O_O 0x15 -#define b_O_OO_ 0x16 -#define b_O_OOO 0x17 -#define b_OO___ 0x18 -#define b_OO__O 0x19 -#define b_OO_O_ 0x1a -#define b_OO_OO 0x1b -#define b_OOO__ 0x1c -#define b_OOO_O 0x1d -#define b_OOOO_ 0x1e -#define b_OOOOO 0x1f -#define b_OOOOO 0x1f -#define bOOOOOO 0x3f - -unsigned char i2500vfd_fontmap[256][8] = { - [0x03] {b_OOOOO, - b_O_O_O, - b__O_O_, - b__OOO_, - b__OOO_, - b_O_O_O, - b_OO_OO, - b_OOOOO}, - [0x04] {b_OOOOO, - b_O_O_O, - b______, - b______, - b______, - b_O___O, - b_OO_OO, - b_OOOOO}, - [0x20] {b______, - b______, - b______, - b______, - b______, - b______, - b______, - b______}, - [0x21] {b___O__, - b___O__, - b___O__, - b___O__, - b______, - b______, - b___O__, - b______}, - [0x22] {b__O_O_, - b__O_O_, - b__O_O_, - b______, - b______, - b______, - b______, - b______}, - [0x23] {b__O_O_, - b__O_O_, - b_OOOOO, - b__O_O_, - b_OOOOO, - b__O_O_, - b__O_O_, - b______}, - [0x24] {b___O__, - b__OOOO, - b_O_O__, - b__OOO_, - b___O_O, - b_OOOO_, - b___O__, - b______}, - [0x25] {b_OO___, - b_OO__O, - b____O_, - b___O__, - b__O___, - b_O__OO, - b____OO, - b______}, - [0x26] {b__OO__, - b_O__O_, - b_O_O__, - b__O___, - b_O_O_O, - b_O__O_, - b__OO_O, - b______}, - [0x27] {b__OO__, - b___O__, - b__O___, - b______, - b______, - b______, - b______, - b______}, - [0x28] {b____O_, - b___O__, - b__O___, - b__O___, - b__O___, - b___O__, - b____O_, - b______}, - [0x29] {b__O___, - b___O__, - b____O_, - b____O_, - b____O_, - b___O__, - b__O___, - b______}, - [0x2a] {b______, - b___O__, - b_O_O_O, - b__OOO_, - b_O_O_O, - b___O__, - b______, - b______}, - [0x2b] {b______, - b___O__, - b___O__, - b_OOOOO, - b___O__, - b___O__, - b______, - b______}, - [0x2c] {b______, - b______, - b______, - b______, - b__OO__, - b___O__, - b__O___, - b______}, - [0x2d] {b______, - b______, - b______, - b_OOOOO, - b______, - b______, - b______, - b______}, - [0x2e] {b______, - b______, - b______, - b______, - b______, - b__OO__, - b__OO__, - b______}, - [0x2f] {b______, - b_____O, - b____O_, - b___O__, - b__O___, - b_O____, - b______, - b______}, - [0x30] {b__OOO_, - b_O___O, - b_O__OO, - b_O_O_O, - b_OO__O, - b_O___O, - b__OOO_, - b______}, - [0x31] {b___O__, - b__OO__, - b___O__, - b___O__, - b___O__, - b___O__, - b__OOO_, - b______}, - [0x32] {b__OOO_, - b_O___O, - b_____O, - b____O_, - b___O__, - b__O___, - b_OOOOO, - b______}, - [0x33] {b_OOOOO, - b____O_, - b___O__, - b____O_, - b_____O, - b_O___O, - b__OOO_, - b______}, - [0x34] {b____O_, - b___OO_, - b__O_O_, - b_O__O_, - b_OOOOO, - b____O_, - b____O_, - b______}, - [0x35] {b_OOOOO, - b_O____, - b_O____, - b_OOOO_, - b_____O, - b_O___O, - b__OOO_, - b______}, - [0x36] {b___OO_, - b__O___, - b_O____, - b_OOOO_, - b_O___O, - b_O___O, - b__OOO_, - b______}, - [0x37] {b_OOOOO, - b_____O, - b____O_, - b___O__, - b__O___, - b__O___, - b__O___, - b______}, - [0x38] {b__OOO_, - b_O___O, - b_O___O, - b__OOO_, - b_O___O, - b_O___O, - b__OOO_, - b______}, - [0x39] {b__OOO_, - b_O___O, - b_O___O, - b__OOOO, - b_____O, - b____O_, - b__OO__, - b______}, - [0x3a] {b______, - b__OO__, - b__OO__, - b______, - b__OO__, - b__OO__, - b______, - b______}, - [0x3b] {b______, - b__OO__, - b__OO__, - b______, - b__OO__, - b___O__, - b__O___, - b______}, - [0x3c] {b____O_, - b___O__, - b__O___, - b_O____, - b__O___, - b___O__, - b____O_, - b______}, - [0x3d] {b______, - b______, - b_OOOOO, - b______, - b_OOOOO, - b______, - b______, - b______}, - [0x3e] {b_O____, - b__O___, - b___O__, - b____O_, - b___O__, - b__O___, - b_O____, - b______}, - [0x3f] {b__OOO_, - b_O___O, - b_____O, - b____O_, - b___O__, - b______, - b___O__, - b______}, - [0x40] {b__OOO_, - b_O___O, - b_____O, - b__OO_O, - b_O_O_O, - b_O_O_O, - b__OOO_, - b______}, - [0x41] {b__OOO_, - b_O___O, - b_O___O, - b_O___O, - b_OOOOO, - b_O___O, - b_O___O, - b______}, - [0x42] {b_OOOO_, - b_O___O, - b_O___O, - b_OOOO_, - b_O___O, - b_O___O, - b_OOOO_, - b______}, - [0x43] {b__OOO_, - b_O___O, - b_O____, - b_O____, - b_O____, - b_O___O, - b__OOO_, - b______}, - [0x44] {b_OOO__, - b_O__O_, - b_O___O, - b_O___O, - b_O___O, - b_O__O_, - b_OOO__, - b______}, - [0x45] {b_OOOOO, - b_O____, - b_O____, - b_OOOO_, - b_O____, - b_O____, - b_OOOOO, - b______}, - [0x46] {b_OOOOO, - b_O____, - b_O____, - b_OOOO_, - b_O____, - b_O____, - b_O____, - b______}, - [0x47] {b__OOO_, - b_O___O, - b_O____, - b_O_OOO, - b_O___O, - b_O___O, - b__OOOO, - b______}, - [0x48] {b_O___O, - b_O___O, - b_O___O, - b_OOOOO, - b_O___O, - b_O___O, - b_O___O, - b______}, - [0x49] {b__OOO_, - b___O__, - b___O__, - b___O__, - b___O__, - b___O__, - b__OOO_, - b______}, - [0x4a] {b___OOO, - b____O_, - b____O_, - b____O_, - b____O_, - b_O__O_, - b__OO__, - b______}, - [0x4b] {b_O___O, - b_O__O_, - b_O_O__, - b_OO___, - b_O_O__, - b_O__O_, - b_O___O, - b______}, - [0x4c] {b_O____, - b_O____, - b_O____, - b_O____, - b_O____, - b_O____, - b_OOOOO, - b______}, - [0x4d] {b_O___O, - b_OO_OO, - b_O_O_O, - b_O_O_O, - b_O___O, - b_O___O, - b_O___O, - b______}, - [0x4e] {b_O___O, - b_O___O, - b_OO__O, - b_O_O_O, - b_O__OO, - b_O___O, - b_O___O, - b______}, - [0x4f] {b__OOO_, - b_O___O, - b_O___O, - b_O___O, - b_O___O, - b_O___O, - b__OOO_, - b______}, - [0x50] {b_OOOO_, - b_O___O, - b_O___O, - b_OOOO_, - b_O____, - b_O____, - b_O____, - b______}, - [0x51] {b__OOO_, - b_O___O, - b_O___O, - b_O___O, - b_O_O_O, - b_O__O_, - b__OO_O, - b______}, - [0x52] {b_OOOO_, - b_O___O, - b_O___O, - b_OOOO_, - b_O_O__, - b_O__O_, - b_O___O, - b______}, - [0x53] {b__OOOO, - b_O____, - b_O____, - b__OOO_, - b_____O, - b_____O, - b_OOOO_, - b______}, - [0x54] {b_OOOOO, - b___O__, - b___O__, - b___O__, - b___O__, - b___O__, - b___O__, - b______}, - [0x55] {b_O___O, - b_O___O, - b_O___O, - b_O___O, - b_O___O, - b_O___O, - b__OOO_, - b______}, - [0x56] {b_O___O, - b_O___O, - b_O___O, - b_O___O, - b_O___O, - b__O_O_, - b___O__, - b______}, - [0x57] {b_O___O, - b_O___O, - b_O___O, - b_O_O_O, - b_O_O_O, - b_O_O_O, - b__O_O_, - b______}, - [0x58] {b_O___O, - b_O___O, - b__O_O_, - b___O__, - b__O_O_, - b_O___O, - b_O___O, - b______}, - [0x59] {b_O___O, - b_O___O, - b_O___O, - b__O_O_, - b___O__, - b___O__, - b___O__, - b______}, - [0x5a] {b_OOOOO, - b_____O, - b____O_, - b___O__, - b__O___, - b_O____, - b_OOOOO, - b______}, - [0x5b] {b__OOO_, - b__O___, - b__O___, - b__O___, - b__O___, - b__O___, - b__OOO_, - b______}, - [0x5c] {b_O___O, - b__O_O_, - b_OOOOO, - b___O__, - b_OOOOO, - b___O__, - b___O__, - b______}, - [0x5d] {b__OOO_, - b____O_, - b____O_, - b____O_, - b____O_, - b____O_, - b__OOO_, - b______}, - [0x5e] {b___O__, - b__O_O_, - b_O___O, - b______, - b______, - b______, - b______, - b______}, - [0x5f] {b______, - b______, - b______, - b______, - b______, - b______, - b_OOOOO, - b______}, - [0x60] {b__O___, - b___O__, - b____O_, - b______, - b______, - b______, - b______, - b______}, - [0x61] {b______, - b______, - b__OOO_, - b_____O, - b__OOOO, - b_O___O, - b__OOOO, - b______}, - [0x62] {b_O____, - b_O____, - b_O____, - b_O_OO_, - b_OO__O, - b_O___O, - b_OOOO_, - b______}, - [0x63] {b______, - b______, - b__OOO_, - b_O____, - b_O____, - b_O___O, - b__OOO_, - b______}, - [0x64] {b_____O, - b_____O, - b_____O, - b__OO_O, - b_O__OO, - b_O___O, - b__OOOO, - b______}, - [0x65] {b______, - b______, - b__OOO_, - b_O___O, - b_OOOOO, - b_O____, - b__OOO_, - b______}, - [0x66] {b___OO_, - b__O__O, - b__O___, - b_OOO__, - b__O___, - b__O___, - b__O___, - b______}, - [0x67] {b______, - b__OOOO, - b_O___O, - b_O___O, - b__OOOO, - b_____O, - b__OOO_, - b______}, - [0x68] {b_O____, - b_O____, - b_O_OO_, - b_OO__O, - b_O___O, - b_O___O, - b_O___O, - b______}, - [0x69] {b___O__, - b______, - b__OO__, - b___O__, - b___O__, - b___O__, - b__OOO_, - b______}, - [0x6a] {b____O_, - b______, - b___OO_, - b____O_, - b____O_, - b_O__O_, - b__OO__, - b______}, - [0x6b] {b__O___, - b__O___, - b__O__O, - b__O_O_, - b__OO__, - b__O_O_, - b__O__O, - b______}, - [0x6c] {b__OO__, - b___O__, - b___O__, - b___O__, - b___O__, - b___O__, - b__OOO_, - b______}, - [0x6d] {b______, - b______, - b_OO_O_, - b_O_O_O, - b_O_O_O, - b_O___O, - b_O___O, - b______}, - [0x6e] {b______, - b______, - b_OOOO_, - b_O___O, - b_O___O, - b_O___O, - b_O___O, - b______}, - [0x6f] {b______, - b______, - b__OOO_, - b_O___O, - b_O___O, - b_O___O, - b__OOO_, - b______}, - [0x70] {b______, - b______, - b_OOOO_, - b_O___O, - b_OOOO_, - b_O____, - b_O____, - b______}, - [0x71] {b______, - b______, - b__OO_O, - b_O__OO, - b__OOOO, - b_____O, - b_____O, - b______}, - [0x72] {b______, - b______, - b_O_OO_, - b_OO__O, - b_O____, - b_O____, - b_O____, - b______}, - [0x73] {b______, - b______, - b__OOO_, - b_O____, - b__OOO_, - b_____O, - b_OOOO_, - b______}, - [0x74] {b__O___, - b_OOO__, - b__O___, - b__O___, - b__O___, - b__O__O, - b___OO_, - b______}, - [0x75] {b______, - b______, - b_O___O, - b_O___O, - b_O___O, - b_O__OO, - b__OO_O, - b______}, - [0x76] {b______, - b______, - b_O___O, - b_O___O, - b_O___O, - b__O_O_, - b___O__, - b______}, - [0x77] {b______, - b______, - b_O___O, - b_O___O, - b_O___O, - b_O_O_O, - b__O_O_, - b______}, - [0x78] {b______, - b______, - b_O___O, - b__O_O_, - b___O__, - b__O_O_, - b_O___O, - b______}, - [0x79] {b______, - b______, - b_O___O, - b_O___O, - b__OOOO, - b_____O, - b__OOO_, - b______}, - [0x7a] {b______, - b______, - b_OOOOO, - b____O_, - b___O__, - b__O___, - b_OOOOO, - b______}, - [0x7b] {b____O_, - b___O__, - b___O__, - b__O___, - b___O__, - b___O__, - b____O_, - b______}, - [0x7c] {b___O__, - b___O__, - b___O__, - b___O__, - b___O__, - b___O__, - b___O__, - b______}, - [0x7d] {b__O___, - b___O__, - b___O__, - b____O_, - b___O__, - b___O__, - b__O___, - b______}, - [0x7e] {b______, - b___O__, - b____O_, - b_OOOOO, - b____O_, - b___O__, - b______, - b______}, - - [0x7f] {b______, - b___O__, - b__O___, - b_OOOOO, - b__O___, - b___O__, - b______, - b______}, - [0xb0] {b__OOO_, - b__O_O_, - b__OOO_, - b______, - b______, - b______, - b______, - b______}, - [0xff] {bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO}, -}; diff --git a/server/drivers/i2500vfdfm.h b/server/drivers/i2500vfdfm.h deleted file mode 100644 index f64dd9d..0000000 --- a/server/drivers/i2500vfdfm.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef I2500VFDFM_H -#define I2500VFDFM_H - -unsigned char i2500vfd_fontmap[256][8]; - -#endif diff --git a/server/drivers/mdm166a.c b/server/drivers/mdm166a.c index d72a3b8..b4841c4 100644 --- a/server/drivers/mdm166a.c +++ b/server/drivers/mdm166a.c @@ -1,23 +1,17 @@ /** \file server/drivers/mdm166a.c * LCDd \c mdm166a driver for Futuba MDM166A displays. * - * The 96x16 pixel dot matrix area is used for 2x16 characters with a - * 6x8 pixel font. The icons on the display are supported by using the - * output-function. + * The 96x16 pixel dot matrix area is used for 16x2 characters with a + * 5x8 pixel font (in a 6x8 cell). The icons on the display are supported by + * using the output-function. * * The display features a self-running clock mode, which can be * activated in the config file and will be shown on LCDproc shutdown. */ /*- - * (C) 2010 Christoph Rasim (christoph@rasim.net) - * - * Code here is basend on i2500vfd.c: - * (C) 2003,2007 Intra2net AG - * - * i2500vfdfm.c is used for the font, no need for another copy of it. - * The HD44780 font in i2500vfdfm.c was taken from Michael Reinelt / - * lcd4linux and is (C) 2000 by him. + * Copyright (C) 2003,2007 Intra2net AG + * 2010 Christoph Rasim (christoph@rasim.net) * * This driver is released under the GPL. See file COPYING in this * package for further details. @@ -35,11 +29,11 @@ #include "lcd.h" #include "mdm166a.h" -#include "i2500vfdfm.h" +#include "glcd_font5x8.h" #include "report.h" /* - * The display itself stores eight pixels in one byte We waste a little + * The display itself stores eight pixels in one byte. We waste a little * memory as we store one pixel per byte as we want to keep the drawing code * simple. Take a look at mdm166a_flush for the conversion. */ @@ -118,7 +112,7 @@ drawchar2fb(Driver *drvthis, int x, int y, unsigned char z) for (font_y = 0; font_y < 8; font_y++) { for (font_x = 5; font_x > -1; font_x--) { - if ((i2500vfd_fontmap[z][font_y] & 1 << font_x) == 1 << font_x) + if ((glcd_iso8859_1[z][font_y] & 1 << font_x) == 1 << font_x) p->framebuf[x * 6 - 1 - font_x + (y * 8 + font_y) * MDM166A_XSIZE] = 1; else p->framebuf[x * 6 - 1 - font_x + (y * 8 + font_y) * MDM166A_XSIZE] = 0; @@ -455,10 +449,12 @@ mdm166a_chr(Driver *drvthis, int x, int y, char c) /** - * Define a custom character and write it to the VFD. + * Define a custom character and write it to the VFD. As the font is completely + * held in memory every character may be overridden. + * * \param drvthis Pointer to driver structure. - * \param n Custom character to define [0 - (p->customchars)]. - * \param dat Array of 7(=cellheight) bytes, each representing a pixel row + * \param n Custom character to define [0 - 255]. + * \param dat Array of 8 (=cellheight) bytes, each representing a pixel row * starting from the top to bottom. \n * The bits in each byte represent the pixels where the LSB * (least significant bit) is the rightmost pixel in each pixel row. @@ -475,7 +471,7 @@ mdm166a_set_char(Driver *drvthis, int n, char *dat) return; for (row = 0; row < CELLHEIGHT; row++) { - i2500vfd_fontmap[n][row] = dat[row] & mask; + glcd_iso8859_1[n][row] = dat[row] & mask; } } @@ -496,7 +492,7 @@ mdm166a_vbar(Driver *drvthis, int x, int y, int len, int promille, int pattern) unsigned int offset; int i, j, pixels; - debug(RPT_INFO, "%s: x=%i, y=%i, len=%i, promille=%i, options=%i", + debug(RPT_DEBUG, "%s: x=%i, y=%i, len=%i, promille=%i, options=%i", __FUNCTION__, x, y, len, promille, pattern); x--; @@ -537,7 +533,7 @@ mdm166a_hbar(Driver *drvthis, int x, int y, int len, int promille, int pattern) unsigned int offset; int i, j, pixels; - debug(RPT_INFO, "%s: x=%i, y=%i, len=%i, promille=%i, options=%i", + debug(RPT_DEBUG, "%s: x=%i, y=%i, len=%i, promille=%i, options=%i", __FUNCTION__, x, y, len, promille, pattern); x--; @@ -551,7 +547,7 @@ mdm166a_hbar(Driver *drvthis, int x, int y, int len, int promille, int pattern) * Calculate starting point in framebuffer. Leave the leftmost column * empty (+1). Shorten the length by 1 then. */ - offset = x * CELLWIDTH + y * MDM166A_XSIZE * CELLHEIGHT + 1; + offset = x * CELLWIDTH + (y * CELLHEIGHT + 1) * MDM166A_XSIZE + 1; /* calculate length of bar */ pixels = len * CELLWIDTH * promille / 1000 - 1; @@ -580,21 +576,7 @@ mdm166a_hbar(Driver *drvthis, int x, int y, int len, int promille, int pattern) MODULE_EXPORT int mdm166a_icon(Driver *drvthis, int x, int y, int icon) { - switch (icon) { - case ICON_BLOCK_FILLED: - mdm166a_chr(drvthis, x, y, 255); - break; - case ICON_HEART_FILLED: - mdm166a_chr(drvthis, x, y, 3); - break; - case ICON_HEART_OPEN: - mdm166a_chr(drvthis, x, y, 4); - break; - default: - return -1; - } - - return 0; + return (glcd_icon5x8(drvthis, x, y, icon)); } diff --git a/server/drivers/sed1520.c b/server/drivers/sed1520.c index 0a32c89..cc2ad0f 100644 --- a/server/drivers/sed1520.c +++ b/server/drivers/sed1520.c @@ -15,18 +15,6 @@ * COPYING file distributed with this package. */ -/*- - * Driver history: - * 2001, Guillaume Filion : - * - Moved the delay timing code by Charles Steinkuehler to timing.h. - * 2011, Markus Dolze: - * - Add 68-familiy style interface support and make it configurable - * - Make delay configurable - * - Correct swapped display halves - * - Resurrect vBar / hBar functions - * - Fix icon definitions and modify set_char for common data format - */ - #ifdef HAVE_CONFIG_H # include "config.h" #endif @@ -37,10 +25,11 @@ #include "lcd.h" #include "sed1520.h" +#include "glcd_font5x8.h" +#include "sed1520fm.h" #include "report.h" #include "port.h" #include "timing.h" -#include "sed1520fm.h" #include "lpt-port.h" #define uPause timing_uPause @@ -88,7 +77,7 @@ MODULE_EXPORT char *symbol_prefix = "sed1520_"; * \note It is a little code duplication having writecommand and writedata * both, but I leave it that way. */ -void +static void writecommand(PrivateData *p, int value, int chip) { if (p->interface == 68) { @@ -121,7 +110,7 @@ writecommand(PrivateData *p, int value, int chip) * \param value Data byte to write * \param chip Bitmap of controllers to send value to */ -void +static void writedata(PrivateData *p, int value, int chip) { if (p->interface == 68) { @@ -148,7 +137,7 @@ writedata(PrivateData *p, int value, int chip) * \param p Pointer to private data structure * \param page Page (=row) number (0-3) */ -void +static void selectpage(PrivateData *p, int page) { writecommand(p, PAGE_ADR + (page & 0x03), CS1 + CS2); @@ -160,7 +149,7 @@ selectpage(PrivateData *p, int page) * \param column Select column (segment) in controller (0-60) * \param chip Bitmap of controllers to send value to */ -void +static void selectcolumn(PrivateData *p, int column, int chip) { writecommand(p, COLUMN_ADR + (column & 0x7F), chip); @@ -191,7 +180,7 @@ selectcolumn(PrivateData *p, int column, int chip) * \param y Line (zero-based) * \param z Character index in fontmap */ -void +static void drawchar2fb(unsigned char *framebuf, int x, int y, unsigned char z) { int i, j; @@ -205,7 +194,7 @@ drawchar2fb(unsigned char *framebuf, int x, int y, unsigned char z) /* gather the bits from the fontmap for each raster row */ for (j = 0; j < CELLHEIGHT; j++) - k |= ((fontmap[(int)z][j] >> (i - 1)) & 0x01) << j; + k |= ((glcd_iso8859_1[(int)z][j] >> (i - 1)) & 0x01) << j; /* And store it in framebuffer pixel column */ framebuf[(y * PIXELWIDTH) + (x * CELLWIDTH) + (CELLWIDTH - i)] = k; @@ -401,14 +390,12 @@ sed1520_chr(Driver * drvthis, int x, int y, char c) * API: This function draws a number num into the last 3 rows of the * framebuffer at 1-based position x. It should draw a 4-row font, but me * thinks this would look a little stretched. When num=10 a colon is drawn. - * - * FIXME: make big numbers use less memory */ MODULE_EXPORT void sed1520_num(Driver * drvthis, int x, int num) { PrivateData *p = drvthis->private_data; - int z, c, i, s; + int z, c; x--; @@ -416,39 +403,21 @@ sed1520_num(Driver * drvthis, int x, int num) if ((x >= WIDTH) || (num < 0) || (num > 10)) return; - if (num == 10) { /* colon */ - for (z = 0; z < 3; z++) { /* 3 rows at 8 dots */ - for (c = 0; c < 6; c++) { /* 6 columns */ - s = 0; - /* convert font definition to bitmap */ - for (i = 0; i < 8; i++) { - s >>= 1; - if (*(fontbigdp[(z * 8) + i] + c) == '.') - s |= 0x80; - } - /* Draw directly into framebuffer */ - if ((x * CELLWIDTH + c >= 0) && (x * CELLWIDTH + c < PIXELWIDTH)) - p->framebuf[((z + 1) * PIXELWIDTH) + (x * CELLWIDTH) + c] = s; - } - } - } - else { /* digits 0 - 9 */ - for (z = 0; z < 3; z++) { /* 3 rows at 8 dots */ - for (c = 0; c < 18; c++) { /* 18 columns */ - s = 0; - for (i = 0; i < 8; i++) { - s >>= 1; - if (*(fontbignum[num][z * 8 + i] + c) == '.') - s |= 0x80; - } - if ((x * CELLWIDTH + c >= 0) && (x * CELLWIDTH + c < PIXELWIDTH)) - p->framebuf[((z + 1) * PIXELWIDTH) + (x * CELLWIDTH) + c] = s; + /* + * For each page (= row of 8 dots) starting in page 1 (page 0 is left + * empty - thus the numbers are aligned at the bottom of the display), + * copy number of bytes into the framebuffer. + */ + for (z = 0; z < 3; z++) { + for (c = 0; c < widtbl_NUM[num]; c++) { + if ((x * CELLWIDTH + c >= 0) && (x * CELLWIDTH + c < PIXELWIDTH)) { + p->framebuf[((z + 1) * PIXELWIDTH) + (x * CELLWIDTH) + c] = + chrtbl_NUM[num][c * 3 + z]; } } } } - /** * API: Changes the font of character n to a pattern given by *dat. * HD44780 controllers only posses 8 programmable chars. But we store the @@ -470,7 +439,7 @@ sed1520_set_char(Driver * drvthis, int n, char *dat) return; for (row = 0; row < CELLHEIGHT; row++) - fontmap[n][row] = dat[row] & mask; + glcd_iso8859_1[n][row] = dat[row] & mask; } /** @@ -534,7 +503,7 @@ sed1520_hbar(Driver *drvthis, int x, int y, int len, int promille, int options) * column in a page. Use 5 dots in the middle (0x3E). */ for (i = 0; i < pixels; i++) - p->framebuf[(y * PIXELWIDTH) + (x * CELLWIDTH) + i] = 0x3E; + p->framebuf[(y * PIXELWIDTH) + (x * CELLWIDTH) + i] = 0x7C; } /** @@ -543,44 +512,5 @@ sed1520_hbar(Driver *drvthis, int x, int y, int len, int promille, int options) MODULE_EXPORT int sed1520_icon(Driver * drvthis, int x, int y, int icon) { - static char heart_open[] = - { - b_OOOOO, - b_O_O_O, - b______, - b______, - b______, - b_O___O, - b_OO_OO, - b_OOOOO - }; - - static char heart_filled[] = - { - b_OOOOO, - b_O_O_O, - b__O_O_, - b__OOO_, - b__OOO_, - b_O_O_O, - b_OO_OO, - b_OOOOO - }; - - switch (icon) { - case ICON_BLOCK_FILLED: - sed1520_chr(drvthis, x, y, 255); - break; - case ICON_HEART_FILLED: - sed1520_set_char(drvthis, 0, heart_filled); - sed1520_chr(drvthis, x, y, 0); - break; - case ICON_HEART_OPEN: - sed1520_set_char(drvthis, 0, heart_open); - sed1520_chr(drvthis, x, y, 0); - break; - default: - return -1; - } - return 0; + return (glcd_icon5x8(drvthis, x, y, icon)); } diff --git a/server/drivers/sed1520.h b/server/drivers/sed1520.h index 61ae72a..c791b3c 100644 --- a/server/drivers/sed1520.h +++ b/server/drivers/sed1520.h @@ -25,12 +25,10 @@ MODULE_EXPORT void sed1520_clear (Driver *drvthis); MODULE_EXPORT void sed1520_flush (Driver *drvthis); MODULE_EXPORT void sed1520_string (Driver *drvthis, int x, int y, const char string[]); MODULE_EXPORT void sed1520_chr (Driver *drvthis, int x, int y, char c); - -MODULE_EXPORT void sed1520_old_vbar (Driver *drvthis, int x, int len); -MODULE_EXPORT void sed1520_old_hbar (Driver *drvthis, int x, int y, int len); +MODULE_EXPORT void sed1520_vbar (Driver *drvthis, int x, int y, int len, int promille, int options); +MODULE_EXPORT void sed1520_hbar (Driver *drvthis, int x, int y, int len, int promille, int options); MODULE_EXPORT void sed1520_num (Driver *drvthis, int x, int num); MODULE_EXPORT int sed1520_icon (Driver *drvthis, int x, int y, int icon); - MODULE_EXPORT void sed1520_set_char (Driver *drvthis, int n, char *dat); #endif diff --git a/server/drivers/sed1520fm.c b/server/drivers/sed1520fm.c deleted file mode 100644 index 5e78fe4..0000000 --- a/server/drivers/sed1520fm.c +++ /dev/null @@ -1,1084 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// This file contains a HD44780 font and a font for big numbers. // -// The HD44780 font in this file was shamelessly stolen from // -// Michael Reinelt / lcd4linux and is // -// Copyright 1999, 2000 by Michael Reinelt (reinelt@eunet.at) // -// The rest of this file is // -// // -// (C) 2001 Robin Adams ( robin@adams-online.de ) // -// // -// This file is released under the GPL. See file COPYING in this // -// package for further details. // -////////////////////////////////////////////////////////////////////////// - -#include "sed1520fm.h" - -char fontmap[256][8] = { - [0x20] {b______, - b______, - b______, - b______, - b______, - b______, - b______, - b______}, - [0x21] {b___O__, - b___O__, - b___O__, - b___O__, - b______, - b______, - b___O__, - b______}, - [0x22] {b__O_O_, - b__O_O_, - b__O_O_, - b______, - b______, - b______, - b______, - b______}, - [0x23] {b__O_O_, - b__O_O_, - b_OOOOO, - b__O_O_, - b_OOOOO, - b__O_O_, - b__O_O_, - b______}, - [0x24] {b___O__, - b__OOOO, - b_O_O__, - b__OOO_, - b___O_O, - b_OOOO_, - b___O__, - b______}, - [0x25] {b_OO___, - b_OO__O, - b____O_, - b___O__, - b__O___, - b_O__OO, - b____OO, - b______}, - [0x26] {b__OO__, - b_O__O_, - b_O_O__, - b__O___, - b_O_O_O, - b_O__O_, - b__OO_O, - b______}, - [0x27] {b__OO__, - b___O__, - b__O___, - b______, - b______, - b______, - b______, - b______}, - [0x28] {b____O_, - b___O__, - b__O___, - b__O___, - b__O___, - b___O__, - b____O_, - b______}, - [0x29] {b__O___, - b___O__, - b____O_, - b____O_, - b____O_, - b___O__, - b__O___, - b______}, - [0x2a] {b______, - b___O__, - b_O_O_O, - b__OOO_, - b_O_O_O, - b___O__, - b______, - b______}, - [0x2b] {b______, - b___O__, - b___O__, - b_OOOOO, - b___O__, - b___O__, - b______, - b______}, - [0x2c] {b______, - b______, - b______, - b______, - b__OO__, - b___O__, - b__O___, - b______}, - [0x2d] {b______, - b______, - b______, - b_OOOOO, - b______, - b______, - b______, - b______}, - [0x2e] {b______, - b______, - b______, - b______, - b______, - b__OO__, - b__OO__, - b______}, - [0x2f] {b______, - b_____O, - b____O_, - b___O__, - b__O___, - b_O____, - b______, - b______}, - [0x30] {b__OOO_, - b_O___O, - b_O__OO, - b_O_O_O, - b_OO__O, - b_O___O, - b__OOO_, - b______}, - [0x31] {b___O__, - b__OO__, - b___O__, - b___O__, - b___O__, - b___O__, - b__OOO_, - b______}, - [0x32] {b__OOO_, - b_O___O, - b_____O, - b____O_, - b___O__, - b__O___, - b_OOOOO, - b______}, - [0x33] {b_OOOOO, - b____O_, - b___O__, - b____O_, - b_____O, - b_O___O, - b__OOO_, - b______}, - [0x34] {b____O_, - b___OO_, - b__O_O_, - b_O__O_, - b_OOOOO, - b____O_, - b____O_, - b______}, - [0x35] {b_OOOOO, - b_O____, - b_O____, - b_OOOO_, - b_____O, - b_O___O, - b__OOO_, - b______}, - [0x36] {b___OO_, - b__O___, - b_O____, - b_OOOO_, - b_O___O, - b_O___O, - b__OOO_, - b______}, - [0x37] {b_OOOOO, - b_____O, - b____O_, - b___O__, - b__O___, - b__O___, - b__O___, - b______}, - [0x38] {b__OOO_, - b_O___O, - b_O___O, - b__OOO_, - b_O___O, - b_O___O, - b__OOO_, - b______}, - [0x39] {b__OOO_, - b_O___O, - b_O___O, - b__OOOO, - b_____O, - b____O_, - b__OO__, - b______}, - [0x3a] {b______, - b__OO__, - b__OO__, - b______, - b__OO__, - b__OO__, - b______, - b______}, - [0x3b] {b______, - b__OO__, - b__OO__, - b______, - b__OO__, - b___O__, - b__O___, - b______}, - [0x3c] {b____O_, - b___O__, - b__O___, - b_O____, - b__O___, - b___O__, - b____O_, - b______}, - [0x3d] {b______, - b______, - b_OOOOO, - b______, - b_OOOOO, - b______, - b______, - b______}, - [0x3e] {b_O____, - b__O___, - b___O__, - b____O_, - b___O__, - b__O___, - b_O____, - b______}, - [0x3f] {b__OOO_, - b_O___O, - b_____O, - b____O_, - b___O__, - b______, - b___O__, - b______}, - [0x40] {b__OOO_, - b_O___O, - b_____O, - b__OO_O, - b_O_O_O, - b_O_O_O, - b__OOO_, - b______}, - [0x41] {b__OOO_, - b_O___O, - b_O___O, - b_O___O, - b_OOOOO, - b_O___O, - b_O___O, - b______}, - [0x42] {b_OOOO_, - b_O___O, - b_O___O, - b_OOOO_, - b_O___O, - b_O___O, - b_OOOO_, - b______}, - [0x43] {b__OOO_, - b_O___O, - b_O____, - b_O____, - b_O____, - b_O___O, - b__OOO_, - b______}, - [0x44] {b_OOO__, - b_O__O_, - b_O___O, - b_O___O, - b_O___O, - b_O__O_, - b_OOO__, - b______}, - [0x45] {b_OOOOO, - b_O____, - b_O____, - b_OOOO_, - b_O____, - b_O____, - b_OOOOO, - b______}, - [0x46] {b_OOOOO, - b_O____, - b_O____, - b_OOOO_, - b_O____, - b_O____, - b_O____, - b______}, - [0x47] {b__OOO_, - b_O___O, - b_O____, - b_O_OOO, - b_O___O, - b_O___O, - b__OOOO, - b______}, - [0x48] {b_O___O, - b_O___O, - b_O___O, - b_OOOOO, - b_O___O, - b_O___O, - b_O___O, - b______}, - [0x49] {b__OOO_, - b___O__, - b___O__, - b___O__, - b___O__, - b___O__, - b__OOO_, - b______}, - [0x4a] {b___OOO, - b____O_, - b____O_, - b____O_, - b____O_, - b_O__O_, - b__OO__, - b______}, - [0x4b] {b_O___O, - b_O__O_, - b_O_O__, - b_OO___, - b_O_O__, - b_O__O_, - b_O___O, - b______}, - [0x4c] {b_O____, - b_O____, - b_O____, - b_O____, - b_O____, - b_O____, - b_OOOOO, - b______}, - [0x4d] {b_O___O, - b_OO_OO, - b_O_O_O, - b_O_O_O, - b_O___O, - b_O___O, - b_O___O, - b______}, - [0x4e] {b_O___O, - b_O___O, - b_OO__O, - b_O_O_O, - b_O__OO, - b_O___O, - b_O___O, - b______}, - [0x4f] {b__OOO_, - b_O___O, - b_O___O, - b_O___O, - b_O___O, - b_O___O, - b__OOO_, - b______}, - [0x50] {b_OOOO_, - b_O___O, - b_O___O, - b_OOOO_, - b_O____, - b_O____, - b_O____, - b______}, - [0x51] {b__OOO_, - b_O___O, - b_O___O, - b_O___O, - b_O_O_O, - b_O__O_, - b__OO_O, - b______}, - [0x52] {b_OOOO_, - b_O___O, - b_O___O, - b_OOOO_, - b_O_O__, - b_O__O_, - b_O___O, - b______}, - [0x53] {b__OOOO, - b_O____, - b_O____, - b__OOO_, - b_____O, - b_____O, - b_OOOO_, - b______}, - [0x54] {b_OOOOO, - b___O__, - b___O__, - b___O__, - b___O__, - b___O__, - b___O__, - b______}, - [0x55] {b_O___O, - b_O___O, - b_O___O, - b_O___O, - b_O___O, - b_O___O, - b__OOO_, - b______}, - [0x56] {b_O___O, - b_O___O, - b_O___O, - b_O___O, - b_O___O, - b__O_O_, - b___O__, - b______}, - [0x57] {b_O___O, - b_O___O, - b_O___O, - b_O_O_O, - b_O_O_O, - b_O_O_O, - b__O_O_, - b______}, - [0x58] {b_O___O, - b_O___O, - b__O_O_, - b___O__, - b__O_O_, - b_O___O, - b_O___O, - b______}, - [0x59] {b_O___O, - b_O___O, - b_O___O, - b__O_O_, - b___O__, - b___O__, - b___O__, - b______}, - [0x5a] {b_OOOOO, - b_____O, - b____O_, - b___O__, - b__O___, - b_O____, - b_OOOOO, - b______}, - [0x5b] {b__OOO_, - b__O___, - b__O___, - b__O___, - b__O___, - b__O___, - b__OOO_, - b______}, - [0x5c] {b_O___O, - b__O_O_, - b_OOOOO, - b___O__, - b_OOOOO, - b___O__, - b___O__, - b______}, - [0x5d] {b__OOO_, - b____O_, - b____O_, - b____O_, - b____O_, - b____O_, - b__OOO_, - b______}, - [0x5e] {b___O__, - b__O_O_, - b_O___O, - b______, - b______, - b______, - b______, - b______}, - [0x5f] {b______, - b______, - b______, - b______, - b______, - b______, - b_OOOOO, - b______}, - [0x60] {b__O___, - b___O__, - b____O_, - b______, - b______, - b______, - b______, - b______}, - [0x61] {b______, - b______, - b__OOO_, - b_____O, - b__OOOO, - b_O___O, - b__OOOO, - b______}, - [0x62] {b_O____, - b_O____, - b_O____, - b_O_OO_, - b_OO__O, - b_O___O, - b_OOOO_, - b______}, - [0x63] {b______, - b______, - b__OOO_, - b_O____, - b_O____, - b_O___O, - b__OOO_, - b______}, - [0x64] {b_____O, - b_____O, - b_____O, - b__OO_O, - b_O__OO, - b_O___O, - b__OOOO, - b______}, - [0x65] {b______, - b______, - b__OOO_, - b_O___O, - b_OOOOO, - b_O____, - b__OOO_, - b______}, - [0x66] {b___OO_, - b__O__O, - b__O___, - b_OOO__, - b__O___, - b__O___, - b__O___, - b______}, - [0x67] {b______, - b__OOOO, - b_O___O, - b_O___O, - b__OOOO, - b_____O, - b__OOO_, - b______}, - [0x68] {b_O____, - b_O____, - b_O_OO_, - b_OO__O, - b_O___O, - b_O___O, - b_O___O, - b______}, - [0x69] {b___O__, - b______, - b__OO__, - b___O__, - b___O__, - b___O__, - b__OOO_, - b______}, - [0x6a] {b____O_, - b______, - b___OO_, - b____O_, - b____O_, - b_O__O_, - b__OO__, - b______}, - [0x6b] {b__O___, - b__O___, - b__O__O, - b__O_O_, - b__OO__, - b__O_O_, - b__O__O, - b______}, - [0x6c] {b__OO__, - b___O__, - b___O__, - b___O__, - b___O__, - b___O__, - b__OOO_, - b______}, - [0x6d] {b______, - b______, - b_OO_O_, - b_O_O_O, - b_O_O_O, - b_O___O, - b_O___O, - b______}, - [0x6e] {b______, - b______, - b_OOOO_, - b_O___O, - b_O___O, - b_O___O, - b_O___O, - b______}, - [0x6f] {b______, - b______, - b__OOO_, - b_O___O, - b_O___O, - b_O___O, - b__OOO_, - b______}, - [0x70] {b______, - b______, - b_OOOO_, - b_O___O, - b_OOOO_, - b_O____, - b_O____, - b______}, - [0x71] {b______, - b______, - b__OO_O, - b_O__OO, - b__OOOO, - b_____O, - b_____O, - b______}, - [0x72] {b______, - b______, - b_O_OO_, - b_OO__O, - b_O____, - b_O____, - b_O____, - b______}, - [0x73] {b______, - b______, - b__OOO_, - b_O____, - b__OOO_, - b_____O, - b_OOOO_, - b______}, - [0x74] {b__O___, - b_OOO__, - b__O___, - b__O___, - b__O___, - b__O__O, - b___OO_, - b______}, - [0x75] {b______, - b______, - b_O___O, - b_O___O, - b_O___O, - b_O__OO, - b__OO_O, - b______}, - [0x76] {b______, - b______, - b_O___O, - b_O___O, - b_O___O, - b__O_O_, - b___O__, - b______}, - [0x77] {b______, - b______, - b_O___O, - b_O___O, - b_O___O, - b_O_O_O, - b__O_O_, - b______}, - [0x78] {b______, - b______, - b_O___O, - b__O_O_, - b___O__, - b__O_O_, - b_O___O, - b______}, - [0x79] {b______, - b______, - b_O___O, - b_O___O, - b__OOOO, - b_____O, - b__OOO_, - b______}, - [0x7a] {b______, - b______, - b_OOOOO, - b____O_, - b___O__, - b__O___, - b_OOOOO, - b______}, - [0x7b] {b____O_, - b___O__, - b___O__, - b__O___, - b___O__, - b___O__, - b____O_, - b______}, - [0x7c] {b___O__, - b___O__, - b___O__, - b___O__, - b___O__, - b___O__, - b___O__, - b______}, - [0x7d] {b__O___, - b___O__, - b___O__, - b____O_, - b___O__, - b___O__, - b__O___, - b______}, - [0x7e] {b______, - b___O__, - b____O_, - b_OOOOO, - b____O_, - b___O__, - b______, - b______}, - - [0x7f] {b______, - b___O__, - b__O___, - b_OOOOO, - b__O___, - b___O__, - b______, - b______}, - [0xb0] {b__OOO_, - b__O_O_, - b__OOO_, - b______, - b______, - b______, - b______, - b______}, - [0xff] {bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO, - bOOOOOO}, -}; - -//FIXME: make big chars use less memory - -char *fontbignum[10][24] = { - { - "++++++++++++++++++", - "++++++++++++++++++", - "++++++++++++++++++", - "++++++++....++++++", - "++++++........++++", - "+++++..........+++", - "+++++....++....+++", - "+++++...++++...+++", - "++++....++++....++", - "++++....++++....++", - "++++....++++....++", - "++++....++++....++", - "++++....++++....++", - "++++....++++....++", - "++++....++++....++", - "++++....++++....++", - "++++....++++....++", - "+++++...++++...+++", - "+++++....++....+++", - "+++++..........+++", - "++++++........++++", - "++++++++....++++++", - "++++++++++++++++++", - "++++++++++++++++++"}, - { - "++++++++++++++++++", - "++++++++++++++++++", - "++++++++++++++++++", - "+++++++++++++...++", - "++++++++++++....++", - "+++++++++++.....++", - "++++++++++......++", - "++++++++........++", - "+++++++.........++", - "+++++++....+....++", - "+++++++...++....++", - "+++++++.++++....++", - "++++++++++++....++", - "++++++++++++....++", - "++++++++++++....++", - "++++++++++++....++", - "++++++++++++....++", - "++++++++++++....++", - "++++++++++++....++", - "++++++++++++....++", - "++++++++++++....++", - "++++++++++++....++", - "++++++++++++++++++", - "++++++++++++++++++"}, - { - "++++++++++++++++++", - "++++++++++++++++++", - "++++++++++++++++++", - "++++++++.....+++++", - "++++++.........+++", - "+++++..........+++", - "+++++....+++....++", - "+++++...++++....++", - "++++++..++++....++", - "++++++++++++....++", - "++++++++++++....++", - "+++++++++++....+++", - "++++++++++....++++", - "+++++++++.....++++", - "++++++++.....+++++", - "+++++++....+++++++", - "++++++....++++++++", - "++++++....++++++++", - "+++++...........++", - "+++++...........++", - "+++++...........++", - "+++++...........++", - "++++++++++++++++++", - "++++++++++++++++++"}, - { - "++++++++++++++++++", - "++++++++++++++++++", - "++++++++++++++++++", - "+++++++.....++++++", - "+++++.........++++", - "+++++.........++++", - "++++....+++....+++", - "++++....+++....+++", - "+++++++++++....+++", - "++++++++++....++++", - "+++++++++.....++++", - "+++++++++...++++++", - "+++++++++.....++++", - "+++++++++++....+++", - "++++++++++++....++", - "++++++++++++....++", - "++++....++++....++", - "++++....++++....++", - "+++++....++....+++", - "+++++..........+++", - "++++++........++++", - "+++++++.....++++++", - "++++++++++++++++++", - "++++++++++++++++++"}, - { - "++++++++++++++++++", - "++++++++++++++++++", - "++++++++++++++++++", - "++++++++++....++++", - "++++++++++....++++", - "+++++++++.....++++", - "++++++++......++++", - "++++++++......++++", - "+++++++.......++++", - "++++++........++++", - "++++++...+....++++", - "+++++...++....++++", - "+++++...++....++++", - "++++...+++....++++", - "+++...++++....++++", - "+++.............++", - "+++.............++", - "+++.............++", - "++++++++++....++++", - "++++++++++....++++", - "++++++++++....++++", - "++++++++++....++++", - "++++++++++++++++++", - "++++++++++++++++++"}, - { - "++++++++++++++++++", - "++++++++++++++++++", - "++++++++++++++++++", - "++++++.........+++", - "++++++.........+++", - "+++++..........+++", - "+++++....+++++++++", - "+++++....+++++++++", - "+++++...++++++++++", - "+++++...+....+++++", - "++++..........++++", - "++++...........+++", - "++++....+++.....++", - "++++++++++++....++", - "++++++++++++....++", - "++++++++++++....++", - "++++....++++....++", - "++++....++++....++", - "+++++....++....+++", - "+++++..........+++", - "++++++........++++", - "+++++++.....++++++", - "++++++++++++++++++", - "++++++++++++++++++"}, - { - "++++++++++++++++++", - "++++++++++++++++++", - "++++++++++++++++++", - "++++++++.....+++++", - "+++++++........+++", - "++++++.........+++", - "+++++....++.....++", - "+++++...++++....++", - "++++....++++++++++", - "++++....++++++++++", - "++++....+....+++++", - "++++..........++++", - "++++...........+++", - "++++.....++.....++", - "++++....++++....++", - "++++....++++....++", - "++++....++++....++", - "+++++...++++....++", - "+++++....++.....++", - "++++++.........+++", - "++++++........++++", - "++++++++.....+++++", - "++++++++++++++++++", - "++++++++++++++++++"}, - { - "++++++++++++++++++", - "++++++++++++++++++", - "++++++++++++++++++", - "++++............++", - "++++............++", - "++++............++", - "++++++++++++....++", - "+++++++++++....+++", - "++++++++++....++++", - "++++++++++....++++", - "+++++++++....+++++", - "+++++++++...++++++", - "++++++++....++++++", - "++++++++....++++++", - "+++++++....+++++++", - "+++++++....+++++++", - "+++++++....+++++++", - "+++++++...++++++++", - "++++++....++++++++", - "++++++....++++++++", - "++++++....++++++++", - "++++++....++++++++", - "++++++++++++++++++", - "++++++++++++++++++"}, - { - "++++++++++++++++++", - "++++++++++++++++++", - "++++++++++++++++++", - "+++++++......+++++", - "+++++..........+++", - "+++++....++....+++", - "++++....++++....++", - "++++....++++....++", - "++++....++++....++", - "++++....++++....++", - "+++++....++....+++", - "++++++........++++", - "++++++........++++", - "+++++....++....+++", - "++++....++++....++", - "++++....++++....++", - "++++....++++....++", - "++++....++++....++", - "++++....++++....++", - "+++++....++....+++", - "+++++..........+++", - "+++++++......+++++", - "++++++++++++++++++", - "++++++++++++++++++"}, - { - "++++++++++++++++++", - "++++++++++++++++++", - "++++++++++++++++++", - "+++++++.....++++++", - "++++++........++++", - "+++++.........++++", - "++++.....++....+++", - "++++....++++...+++", - "++++....++++....++", - "++++....++++....++", - "++++....++++....++", - "++++.....++.....++", - "+++++...........++", - "++++++..........++", - "+++++++....+....++", - "++++++++++++....++", - "++++++++++++....++", - "++++....++++...+++", - "++++.....++....+++", - "+++++.........++++", - "+++++........+++++", - "+++++++.....++++++", - "++++++++++++++++++", - "++++++++++++++++++"} -}; - -char *fontbigdp[] = { - "++++++", - "++++++", - "++++++", - "++++++", - "++++++", - "+....+", - "+....+", - "+....+", - "+....+", - "++++++", - "++++++", - "++++++", - "++++++", - "++++++", - "++++++", - "+....+", - "+....+", - "+....+", - "+....+", - "++++++", - "++++++", - "++++++", - "++++++", - "++++++" -}; diff --git a/server/drivers/sed1520fm.h b/server/drivers/sed1520fm.h index 86664ba..e572b84 100644 --- a/server/drivers/sed1520fm.h +++ b/server/drivers/sed1520fm.h @@ -1,43 +1,133 @@ +/** \file server/drivers/sed1520fm.h + * Font definitions for big numbers to be used with SED1520 display. + * + * The code in this file was created with Cosmicvoid's Font Editor (CFE) based + * on the original font by Robin Adams and manually optimized. + */ + +/*- + * Copyright (c) 2001 Robin Adams + * 2011 Markus Dolze + * + * This file is released under the GNU General Public License. Refer to the + * COPYING file distributed with this package. + */ + #ifndef SED1520FM_H #define SED1520FM_H -#define b______ 0x00 -#define b_____O 0x01 -#define b____O_ 0x02 -#define b____OO 0x03 -#define b___O__ 0x04 -#define b___O_O 0x05 -#define b___OO_ 0x06 -#define b___OOO 0x07 -#define b__O___ 0x08 -#define b__O__O 0x09 -#define b__O_O_ 0x0a -#define b__O_OO 0x0b -#define b__OO__ 0x0c -#define b__OO_O 0x0d -#define b__OOO_ 0x0e -#define b__OOOO 0x0f -#define b_O____ 0x10 -#define b_O___O 0x11 -#define b_O__O_ 0x12 -#define b_O__OO 0x13 -#define b_O_O__ 0x14 -#define b_O_O_O 0x15 -#define b_O_OO_ 0x16 -#define b_O_OOO 0x17 -#define b_OO___ 0x18 -#define b_OO__O 0x19 -#define b_OO_O_ 0x1a -#define b_OO_OO 0x1b -#define b_OOO__ 0x1c -#define b_OOO_O 0x1d -#define b_OOOO_ 0x1e -#define b_OOOOO 0x1f -#define b_OOOOO 0x1f -#define bOOOOOO 0x3f +/* Properties of this font (currently unused) */ +#define nr_chrs_NUM 11 +#define chr_hgt_NUM 24 +#define data_size_NUM 8 +#define firstchr_NUM 48 -char fontmap[256][8]; -char *fontbignum[10][24]; -char *fontbigdp[24]; +const unsigned char widtbl_NUM[11] = +{ + 16, 15, 16, 16, 16, 16, 16, 16, 16, 16, 5 +}; + +/* Column format, LSB top */ + +const unsigned char chr_NUM_30[48] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0x01, 0xE0, 0xFF, 0x0F, + 0xF0, 0xFF, 0x1F, 0xF0, 0xFF, 0x1F, 0x78, 0x00, 0x3C, + 0x38, 0x00, 0x38, 0x38, 0x00, 0x38, 0x78, 0x00, 0x3C, + 0xF0, 0xFF, 0x1F, 0xF0, 0xFF, 0x1F, 0xE0, 0xFF, 0x0F, + 0x00, 0xFF, 0x01 +}; +const unsigned char chr_NUM_31[45] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x80, 0x0F, 0x00, + 0xC0, 0x07, 0x00, 0xE0, 0x03, 0x00, 0xF0, 0xFF, 0x3F, + 0xF8, 0xFF, 0x3F, 0xF8, 0xFF, 0x3F, 0xF8, 0xFF, 0x3F +}; +const unsigned char chr_NUM_32[48] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x3C, + 0xF0, 0x01, 0x3F, 0xF0, 0x81, 0x3F, 0x78, 0xC0, 0x3F, + 0x38, 0xE0, 0x3F, 0x38, 0xF0, 0x3C, 0x38, 0x78, 0x3C, + 0xF8, 0x7F, 0x3C, 0xF0, 0x3F, 0x3C, 0xF0, 0x0F, 0x3C, + 0xC0, 0x07, 0x3C +}; +const unsigned char chr_NUM_33[48] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x0F, + 0xF0, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0x38, 0x00, 0x3C, + 0x38, 0x1C, 0x38, 0x38, 0x1E, 0x38, 0xF8, 0x3F, 0x3C, + 0xF0, 0xF7, 0x1F, 0xF0, 0xF7, 0x1F, 0xC0, 0xE1, 0x0F, + 0x00, 0xC0, 0x03 +}; +const unsigned char chr_NUM_34[48] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xC0, 0x03, 0x00, 0xE0, 0x03, 0x00, 0xF8, 0x03, + 0x00, 0xBE, 0x03, 0x00, 0x9F, 0x03, 0xC0, 0x87, 0x03, + 0xE0, 0x83, 0x03, 0xF8, 0xFF, 0x3F, 0xF8, 0xFF, 0x3F, + 0xF8, 0xFF, 0x3F, 0xF8, 0xFF, 0x3F, 0x00, 0x80, 0x03, + 0x00, 0x80, 0x03 +}; +const unsigned char chr_NUM_35[48] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1C, 0x03, 0xE0, 0x1F, 0x0F, + 0xF8, 0x1F, 0x1F, 0xF8, 0x1F, 0x3F, 0xF8, 0x0C, 0x3C, + 0x38, 0x0E, 0x38, 0x38, 0x0E, 0x38, 0x38, 0x1E, 0x3C, + 0x38, 0xFE, 0x1F, 0x38, 0xFC, 0x1F, 0x38, 0xF8, 0x0F, + 0x00, 0xF0, 0x03 +}; +const unsigned char chr_NUM_36[48] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0x01, 0xC0, 0xFF, 0x07, + 0xE0, 0xFF, 0x1F, 0xF0, 0xFF, 0x1F, 0x78, 0x38, 0x3C, + 0x38, 0x1C, 0x38, 0x38, 0x1C, 0x38, 0x78, 0x3C, 0x3C, + 0xF8, 0xFC, 0x3F, 0xF0, 0xF8, 0x1F, 0xF0, 0xF0, 0x0F, + 0xC0, 0xE0, 0x07 +}; +const unsigned char chr_NUM_37[48] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x38, 0x00, 0x3C, 0x38, 0xC0, 0x3F, 0x38, 0xF0, 0x3F, + 0x38, 0xFC, 0x3F, 0x38, 0xFF, 0x01, 0xB8, 0x3F, 0x00, + 0xF8, 0x07, 0x00, 0xF8, 0x03, 0x00, 0xF8, 0x00, 0x00, + 0x78, 0x00, 0x00 +}; +const unsigned char chr_NUM_38[48] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xC0, 0xC3, 0x07, 0xF0, 0xE7, 0x1F, + 0xF0, 0xFF, 0x1F, 0xF8, 0xFF, 0x3F, 0x38, 0x3C, 0x38, + 0x18, 0x18, 0x30, 0x18, 0x18, 0x30, 0x38, 0x3C, 0x38, + 0xF8, 0xFF, 0x3F, 0xF0, 0xFF, 0x1F, 0xF0, 0xE7, 0x1F, + 0xC0, 0xC3, 0x07 +}; +const unsigned char chr_NUM_39[48] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xC0, 0x0F, 0x06, 0xE0, 0x1F, 0x1E, + 0xF0, 0x3F, 0x1E, 0xF8, 0x7F, 0x3E, 0x78, 0x78, 0x3C, + 0x38, 0x70, 0x38, 0x38, 0x70, 0x38, 0x78, 0x38, 0x3C, + 0xF0, 0xFF, 0x1F, 0xF0, 0xFF, 0x0F, 0xC0, 0xFF, 0x07, + 0x00, 0xFF, 0x01 +}; +const unsigned char chr_NUM_3A[15] = +{ + 0x00, 0x00, 0x00, 0xE0, 0x81, 0x07, 0xE0, 0x81, 0x07, + 0xE0, 0x81, 0x07, 0xE0, 0x81, 0x07 +}; + +const unsigned char * chrtbl_NUM[11] = +{ + chr_NUM_30, chr_NUM_31, chr_NUM_32, chr_NUM_33, chr_NUM_34, chr_NUM_35, + chr_NUM_36, chr_NUM_37, chr_NUM_38, chr_NUM_39, chr_NUM_3A +}; #endif diff --git a/server/drivers/t6963.c b/server/drivers/t6963.c index 80e84f8..63b4f34 100644 --- a/server/drivers/t6963.c +++ b/server/drivers/t6963.c @@ -13,6 +13,10 @@ * 17 (Slct) ------------ /RD * + 5V --- FS (6x8 font) *\endverbatim + * + * \note The driver does not provide cellwidth / cellheight API functions. + * Thus the default cell size of 5x8 is assumed by server core! This + * works fine with the 5x8 font loaded into the controller. */ /*- @@ -30,7 +34,6 @@ #include #include -#include #include #include @@ -40,8 +43,7 @@ #include "lcd.h" #include "t6963.h" -#include "t6963_font.h" - +#include "glcd_font5x8.h" #include "timing.h" #include "report.h" #include "lcd_lib.h" @@ -53,17 +55,16 @@ #define nRD nSEL #define nCE nLF #define T_CMD INIT -#define T_DATA 0x00 +#define T_DATA 0x00 /* ~INIT didn't work here */ /** private data for the \c t6963 driver */ typedef struct t6963_private_data { u16 port; u8 *display_buffer1; - int width; - int height; - int cellwidth; - int cellheight; + int px_width, px_heigth; /* size in pixels */ + int width, height; /* size in characters */ + int bytes_per_line; /* memory allocated per line */ short bidirectLPT; short delayBus; } PrivateData; @@ -78,7 +79,7 @@ MODULE_EXPORT char *symbol_prefix = "t6963_"; * API: Initialize the driver. */ MODULE_EXPORT int -t6963_init(Driver * drvthis) +t6963_init(Driver *drvthis) { PrivateData *p; int w, h; @@ -93,15 +94,9 @@ t6963_init(Driver * drvthis) if (drvthis->store_private_ptr(drvthis, p)) return -1; - /* initialize private data */ - p->cellwidth = DEFAULT_CELL_WIDTH; - p->cellheight = DEFAULT_CELL_HEIGHT; - debug(RPT_DEBUG, "T6963: reading config file..."); - /* Read config file */ - - /* Which size? */ + /* Read display size in pixels */ strncpy(size, drvthis->config_get_string(drvthis->name, "Size", 0, DEFAULT_SIZE), sizeof(size)); size[sizeof(size) - 1] = '\0'; if ((sscanf(size, "%dx%d", &w, &h) != 2) @@ -111,8 +106,18 @@ t6963_init(Driver * drvthis) drvthis->name, size, DEFAULT_SIZE); sscanf(DEFAULT_SIZE, "%dx%d", &w, &h); } - p->width = w; - p->height = h; + p->px_width = w; + p->px_heigth = h; + + /* + * Calculate the size in characters and the number of actual bytes + * required per display line. The number of bytes may be different + * to the number of columns if the the width in pixels is not a + * multiple of the cell width. + */ + p->width = p->px_width / DEFAULT_CELL_WIDTH; + p->bytes_per_line = (p->px_width % DEFAULT_CELL_WIDTH) ? p->width + 1 : p->width; + p->height = p->px_heigth / DEFAULT_CELL_HEIGHT; /* Which port? */ p->port = drvthis->config_get_int(drvthis->name, "Port", 0, DEFAULT_PORT); @@ -142,13 +147,13 @@ t6963_init(Driver * drvthis) } /* Allocate and clear memory for frame buffer */ - p->display_buffer1 = malloc(p->width * p->height); + p->display_buffer1 = malloc(p->bytes_per_line * p->height); if (p->display_buffer1 == NULL) { report(RPT_ERR, "%s: No memory for frame buffer", drvthis->name); t6963_close(drvthis); return -1; } - memset(p->display_buffer1, ' ', p->width * p->height); + memset(p->display_buffer1, ' ', p->bytes_per_line * p->height); /* ------------------- I N I T I A L I Z A T I O N --------------- */ if (p->bidirectLPT == 1) { @@ -163,22 +168,12 @@ t6963_init(Driver * drvthis) } debug(RPT_INFO, "T6963: Sending init to display..."); - /* - * Note: I assume display has a width that is a multiple of 8 (e.g. - * 128, 160, 240, etc). If this is not a multiple of the cellwidth - * the display has excess pixels on the right. In this case make the - * controller think we have one column more which will be filled with - * a space on flush. This avoids incorrect excess pixels on the right. - */ - w = p->width; - if ((p->width * p->cellwidth) % 8) - w++; /* Set text and graphic addresses */ t6963_low_command_word(drvthis, SET_GRAPHIC_HOME_ADDRESS, GRAPHIC_BASE); - t6963_low_command_word(drvthis, SET_GRAPHIC_AREA, w); + t6963_low_command_word(drvthis, SET_GRAPHIC_AREA, p->bytes_per_line); t6963_low_command_word(drvthis, SET_TEXT_HOME_ADDRESS, TEXT_BASE); - t6963_low_command_word(drvthis, SET_TEXT_AREA, w); + t6963_low_command_word(drvthis, SET_TEXT_AREA, p->bytes_per_line); /* Enable external character generator */ t6963_low_command(drvthis, SET_MODE | OR_MODE | EXTERNAL_CG); @@ -206,7 +201,7 @@ t6963_init(Driver * drvthis) * API: Close the driver. */ MODULE_EXPORT void -t6963_close(Driver * drvthis) +t6963_close(Driver *drvthis) { PrivateData *p = drvthis->private_data; @@ -227,7 +222,7 @@ t6963_close(Driver * drvthis) * API: Returns the display width */ MODULE_EXPORT int -t6963_width(Driver * drvthis) +t6963_width(Driver *drvthis) { PrivateData *p = drvthis->private_data; @@ -238,7 +233,7 @@ t6963_width(Driver * drvthis) * API: Returns the display height */ MODULE_EXPORT int -t6963_height(Driver * drvthis) +t6963_height(Driver *drvthis) { PrivateData *p = drvthis->private_data; @@ -249,12 +244,12 @@ t6963_height(Driver * drvthis) * API: Clears the LCD screen (clear display buffer) */ MODULE_EXPORT void -t6963_clear(Driver * drvthis) +t6963_clear(Driver *drvthis) { PrivateData *p = drvthis->private_data; - debug(RPT_DEBUG, "Clearing Display of size %d x %d", p->width, p->height); - memset(p->display_buffer1, ' ', p->width * p->height); + debug(RPT_DEBUG, "Clearing Display of size %d x %d", p->bytes_per_line, p->height); + memset(p->display_buffer1, ' ', p->bytes_per_line * p->height); debug(RPT_DEBUG, "Done"); } @@ -263,19 +258,11 @@ t6963_clear(Driver * drvthis) * \param drvthis Pointer to driver structure. */ static void -t6963_graphic_clear(Driver * drvthis) +t6963_graphic_clear(Driver *drvthis) { PrivateData *p = drvthis->private_data; - int i, num; - - /* - * If width * cellwidth is not a multiple of 8 we have an additional - * column on the right. - */ - if ((p->width * p->cellwidth) % 8) - num = (p->width + 1) * p->height * p->cellheight; - else - num = p->width * p->height * p->cellheight; + int num = p->bytes_per_line * p->px_heigth; + int i; debug(RPT_DEBUG, "Clearing Graphic %d bytes", num); @@ -290,7 +277,7 @@ t6963_graphic_clear(Driver * drvthis) * API: Flushes all output to the lcd. */ MODULE_EXPORT void -t6963_flush(Driver * drvthis) +t6963_flush(Driver *drvthis) { PrivateData *p = drvthis->private_data; int r, c, line_address; @@ -313,10 +300,10 @@ t6963_flush(Driver * drvthis) t6963_low_auto_write(drvthis, p->display_buffer1[line_address + c]); } /* - * If width * cellwidth is not a multiple of 8 write a space - * into an additional column on the right. + * If width is not identical with bytes_per_line there must be + * one additional empty column on the right. */ - if ((p->width * p->cellwidth) % 8) + if (p->width != p->bytes_per_line) t6963_low_auto_write(drvthis, ' '); } t6963_low_command(drvthis, AUTO_RESET); @@ -327,7 +314,7 @@ t6963_flush(Driver * drvthis) * upper-left is (1,1), and the lower right should be (width,height). */ MODULE_EXPORT void -t6963_string(Driver * drvthis, int x, int y, const char string[]) +t6963_string(Driver *drvthis, int x, int y, const char string[]) { PrivateData *p = drvthis->private_data; int len; @@ -354,7 +341,7 @@ t6963_string(Driver * drvthis, int x, int y, const char string[]) * upper-left is (1,1), and the lower right should be (width,height). */ MODULE_EXPORT void -t6963_chr(Driver * drvthis, int x, int y, char c) +t6963_chr(Driver *drvthis, int x, int y, char c) { PrivateData *p = drvthis->private_data; @@ -381,18 +368,17 @@ t6963_chr(Driver * drvthis, int x, int y, char c) static void t6963_set_nchar(Driver *drvthis, int n, int num) { - PrivateData *p = drvthis->private_data; int chr, row; char letter; - unsigned char mask = (1 << p->cellwidth) - 1; + unsigned char mask = (1 << GLCD_FONT_WIDTH) - 1; debug(RPT_DEBUG, "Loading font"); - t6963_low_command_word(drvthis, SET_ADDRESS_POINTER, CHARGEN_BASE + n * p->cellheight); + t6963_low_command_word(drvthis, SET_ADDRESS_POINTER, CHARGEN_BASE + n * DEFAULT_CELL_HEIGHT); t6963_low_command(drvthis, AUTO_WRITE); for (chr = 0; chr < num; chr++) { - for (row = 0; row < p->cellheight; row++) { - letter = fontdata_6x8[chr][row] & mask; + for (row = 0; row < DEFAULT_CELL_HEIGHT; row++) { + letter = glcd_iso8859_1[chr][row] & mask; t6963_low_auto_write(drvthis, letter); } } @@ -404,12 +390,12 @@ t6963_set_nchar(Driver *drvthis, int n, int num) * overwriting an existing character. */ MODULE_EXPORT void -t6963_set_char(Driver * drvthis, int n, unsigned char *dat) +t6963_set_char(Driver *drvthis, int n, unsigned char *dat) { if (!dat || n < 0 || n > 255) return; - memcpy(fontdata_6x8[n], dat, 8); + memcpy(glcd_iso8859_1[n], dat, 8); t6963_set_nchar(drvthis, n, 1); } @@ -417,45 +403,43 @@ t6963_set_char(Driver * drvthis, int n, unsigned char *dat) * API: Draws a vertical bar, from the bottom of the screen up. */ MODULE_EXPORT void -t6963_vbar(Driver * drvthis, int x, int y, int len, int promille, int options) +t6963_vbar(Driver *drvthis, int x, int y, int len, int promille, int options) { - PrivateData *p = drvthis->private_data; - - lib_vbar_static(drvthis, x, y, len, promille, options, p->cellheight, 211); + lib_vbar_static(drvthis, x, y, len, promille, options, DEFAULT_CELL_HEIGHT, 0x90); } /** * API: Draws a horizontal bar to the right. + * + * \note For hBars the actual width of the font (5) has to be used instead + * of the cell width (6)! */ MODULE_EXPORT void -t6963_hbar(Driver * drvthis, int x, int y, int len, int promille, int options) +t6963_hbar(Driver *drvthis, int x, int y, int len, int promille, int options) { - PrivateData *p = drvthis->private_data; + int pixels = ((long) 2 * len * GLCD_FONT_WIDTH) * promille / 2000; + int pos; - lib_hbar_static(drvthis, x, y, len, promille, options, p->cellwidth, 219); + for (pos = 0; pos < len; pos++) { + if (pixels >= GLCD_FONT_WIDTH ) + t6963_chr(drvthis, x + pos, y, 0x9e); + else if (pixels >= 1) + t6963_chr(drvthis, x + pos, y, 0x99 + pixels); + else + ; /* do nothing */ + pixels -= GLCD_FONT_WIDTH; + } } /** * API: Sets an icon... */ MODULE_EXPORT int -t6963_icon(Driver * drvthis, int x, int y, int icon) +t6963_icon(Driver *drvthis, int x, int y, int icon) { debug(RPT_DEBUG, "T6963: set icon %d", icon); - switch (icon) { - case ICON_BLOCK_FILLED: - t6963_chr(drvthis, x, y, 219); - break; - case ICON_HEART_FILLED: - t6963_chr(drvthis, x, y, 3); - break; - case ICON_HEART_OPEN: - t6963_chr(drvthis, x, y, 4); - break; - default: - return -1; - } - return 0; + + return (glcd_icon5x8(drvthis, x, y, icon)); } @@ -466,7 +450,7 @@ t6963_icon(Driver * drvthis, int x, int y, int icon) * \return 0 on success, -1 if ready could not be read */ static inline int -t6963_low_dsp_ready(Driver * drvthis, u8 sta) +t6963_low_dsp_ready(Driver *drvthis, u8 sta) { PrivateData *p = drvthis->private_data; int portcontrol = 0; @@ -515,7 +499,7 @@ t6963_low_dsp_ready(Driver * drvthis, u8 sta) * \param byte Data byte. */ static inline void -t6963_low_send(Driver * drvthis, u8 type, u8 byte) +t6963_low_send(Driver *drvthis, u8 type, u8 byte) { PrivateData *p = drvthis->private_data; int portcontrol = 0; @@ -539,7 +523,7 @@ t6963_low_send(Driver * drvthis, u8 type, u8 byte) * \param byte Data byte. */ static void -t6963_low_data(Driver * drvthis, u8 byte) +t6963_low_data(Driver *drvthis, u8 byte) { t6963_low_dsp_ready(drvthis, STA0|STA1); t6963_low_send(drvthis, T_DATA, byte); @@ -551,7 +535,7 @@ t6963_low_data(Driver * drvthis, u8 byte) * \param byte Command byte. */ static void -t6963_low_command(Driver * drvthis, u8 byte) +t6963_low_command(Driver *drvthis, u8 byte) { t6963_low_dsp_ready(drvthis, STA0|STA1); t6963_low_send(drvthis, T_CMD, byte); @@ -577,7 +561,7 @@ t6963_low_auto_write(Driver *drvthis, u8 byte) * \param byte Data value. */ static void -t6963_low_command_byte(Driver * drvthis, u8 cmd, u8 byte) +t6963_low_command_byte(Driver *drvthis, u8 cmd, u8 byte) { t6963_low_data(drvthis, byte); t6963_low_command(drvthis, cmd); @@ -591,7 +575,7 @@ t6963_low_command_byte(Driver * drvthis, u8 cmd, u8 byte) * \param word Data value (2 bytes) */ static void -t6963_low_command_word(Driver * drvthis, u8 cmd, u16 word) +t6963_low_command_word(Driver *drvthis, u8 cmd, u16 word) { t6963_low_data(drvthis, word & 0xFF); t6963_low_data(drvthis, (word >> 8) & 0xFF); diff --git a/server/drivers/t6963.h b/server/drivers/t6963.h index dd863db..dda6ef1 100644 --- a/server/drivers/t6963.h +++ b/server/drivers/t6963.h @@ -16,14 +16,20 @@ #define DEFAULT_CELL_WIDTH 6 #define DEFAULT_CELL_HEIGHT 8 -#define DEFAULT_SIZE "20x6" +#define DEFAULT_SIZE "128x64" #define DEFAULT_PORT 0x378 -#define T6963_MAX_WIDTH 40 /* These value are for 240x128 */ -#define T6963_MAX_HEIGHT 16 +/* + * These are the maximum values the controller supports in single-scan + * setting (note that heigth of 128 is possible with dual-scan setting, too. + * This will not work with this driver, but there is no possibility to check + * this in software. + */ +#define T6963_MAX_WIDTH 80 * DEFAULT_CELL_WIDTH +#define T6963_MAX_HEIGHT 128 -/* RAM layout base addresses (for 8 KB RAM) */ -#define TEXT_BASE 0x0000 /* 1K, fine for 40x16 */ +/* RAM layout base addresses (suitable for 8 KB RAM) */ +#define TEXT_BASE 0x0000 /* 1K, fine for 40x16 or 80x8 */ #define GRAPHIC_BASE 0x0400 /* 5K, fine for 240x128 */ #define CHARGEN_BASE 0x1800 /* 2K, required for 256 CC */