From 4bc22a6d7529aeac7c75eb785cf0f9f68df01d8c Mon Sep 17 00:00:00 2001 From: Philippe Simons Date: Thu, 7 Jul 2005 22:07:11 +0000 Subject: 2005-07-07 Philippe Simons * Makefile.am: Remove lcd.rel, added console/uart.c, removed conio stuffs. * console/conio.c, console/console.c, console/defaultfont.c, include/conio.h : files removed. * console/uart.c: New file. * include/bsp.h: lcd.c prototypes removed. * startup/bspstart.c: bsp_reset() cause gp32 to reset to bios, added a bsp_idle_task which put s3c2400 in a "wait for IRQ" state. --- c/src/lib/libbsp/arm/gp32/ChangeLog | 11 + c/src/lib/libbsp/arm/gp32/Makefile.am | 10 +- c/src/lib/libbsp/arm/gp32/console/conio.c | 360 -------------- c/src/lib/libbsp/arm/gp32/console/console.c | 176 ------- c/src/lib/libbsp/arm/gp32/console/defaultfont.c | 600 ------------------------ c/src/lib/libbsp/arm/gp32/console/uart.c | 249 ++++++++++ c/src/lib/libbsp/arm/gp32/include/bsp.h | 3 - c/src/lib/libbsp/arm/gp32/include/conio.h | 82 ---- c/src/lib/libbsp/arm/gp32/startup/bspstart.c | 44 +- 9 files changed, 295 insertions(+), 1240 deletions(-) delete mode 100644 c/src/lib/libbsp/arm/gp32/console/conio.c delete mode 100644 c/src/lib/libbsp/arm/gp32/console/console.c delete mode 100644 c/src/lib/libbsp/arm/gp32/console/defaultfont.c create mode 100644 c/src/lib/libbsp/arm/gp32/console/uart.c delete mode 100644 c/src/lib/libbsp/arm/gp32/include/conio.h (limited to 'c') diff --git a/c/src/lib/libbsp/arm/gp32/ChangeLog b/c/src/lib/libbsp/arm/gp32/ChangeLog index d0eceb6667..a89adf75aa 100644 --- a/c/src/lib/libbsp/arm/gp32/ChangeLog +++ b/c/src/lib/libbsp/arm/gp32/ChangeLog @@ -1,3 +1,14 @@ +2005-07-07 Philippe Simons + + * Makefile.am: Remove lcd.rel, added console/uart.c, + removed conio stuffs. + * console/conio.c, console/console.c, console/defaultfont.c, + include/conio.h : files removed. + * console/uart.c: New file. + * include/bsp.h: lcd.c prototypes removed. + * startup/bspstart.c: bsp_reset() cause gp32 to reset to bios, + added a bsp_idle_task which put s3c2400 in a "wait for IRQ" state. + 2005-06-06 Philippe Simons * Makefile.am: Include lcd.rel. diff --git a/c/src/lib/libbsp/arm/gp32/Makefile.am b/c/src/lib/libbsp/arm/gp32/Makefile.am index 1136343cf9..a6a69868a0 100644 --- a/c/src/lib/libbsp/arm/gp32/Makefile.am +++ b/c/src/lib/libbsp/arm/gp32/Makefile.am @@ -10,7 +10,6 @@ include $(top_srcdir)/../../bsp.am dist_project_lib_DATA = bsp_specs include_HEADERS = include/bsp.h -include_HEADERS += include/conio.h include_HEADERS += include/tm27.h nodist_include_HEADERS = include/bspopts.h @@ -36,7 +35,7 @@ startup_rel_CPPFLAGS = $(AM_CPPFLAGS) startup_rel_LDFLAGS = $(RTEMS_RELLDFLAGS) noinst_PROGRAMS += console.rel -console_rel_SOURCES = console/conio.c console/defaultfont.c console/console.c +console_rel_SOURCES = console/uart.c ../../shared/console.c console_rel_CPPFLAGS = $(AM_CPPFLAGS) console_rel_LDFLAGS = $(RTEMS_RELLDFLAGS) @@ -46,8 +45,7 @@ libbsp_a_LIBADD = startup.rel console.rel libbsp_a_LIBADD += ../../../libcpu/@RTEMS_CPU@/shared/arm920.rel \ ../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/clock.rel \ ../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/timer.rel \ - ../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/irq.rel \ - ../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/lcd.rel + ../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/irq.rel all-local: $(PREINSTALL_FILES) $(TMPINSTALL_FILES) @@ -73,10 +71,6 @@ $(PROJECT_INCLUDE)/bsp.h: include/bsp.h $(PROJECT_INCLUDE)/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp.h -$(PROJECT_INCLUDE)/conio.h: include/conio.h $(PROJECT_INCLUDE)/$(dirstamp) - $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/conio.h -PREINSTALL_FILES += $(PROJECT_INCLUDE)/conio.h - $(PROJECT_INCLUDE)/tm27.h: include/tm27.h $(PROJECT_INCLUDE)/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/tm27.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/tm27.h diff --git a/c/src/lib/libbsp/arm/gp32/console/conio.c b/c/src/lib/libbsp/arm/gp32/console/conio.c deleted file mode 100644 index d85e8a8234..0000000000 --- a/c/src/lib/libbsp/arm/gp32/console/conio.c +++ /dev/null @@ -1,360 +0,0 @@ -/* - * conio.c : ARM GBA BSP - * - * This file contains the GBA conio I/O package. - * - * - * Copyright (c) 2004 Markku Puro - * - * This source file is based on work by Rafael Vuijk (aka Dark Fader) - * MyLib by Rafael Vuijk (aka Dark Fader) - * - * The license and distribution terms for this file may be - * found in found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. - * - * $Id$ -*/ - - -/*---------------------------------------------------------------------------* - * Includes * - *---------------------------------------------------------------------------*/ -#include -#include -#include -#include -#include -#include - -#define gp_initButtons() {rPBCON=0x0;} -#define gp_getButtons() ((((~rPEDAT >> 6) & 0x3) << 8) | \ - ((~rPBDAT >> 8) & 0xFF)) - -/*---------------------------------------------------------------------------* - * Defines * - *---------------------------------------------------------------------------*/ -#define DEFAULT_FONT_WIDTH 4 -#define DEFAULT_FONT_HEIGHT 6 -#define W (LCD_WIDTH/DEFAULT_FONT_WIDTH) -#define H (LCD_HEIGHT/DEFAULT_FONT_HEIGHT) - -typedef unsigned char Bitmap[LCD_HEIGHT][LCD_WIDTH]; -#define GP32_CONIO_VRAM 0x0c7ed000 -#define bg_bitmap (*(Bitmap *)GP32_CONIO_VRAM) - -/* color conversion */ -#define RGB(r,g,b) ( (r)<<11 | (g)<<6 | (b)<<1 ) - -int _wherex; -int _wherey; -int _textattr; - - -/*---------------------------------------------------------------------------* - * Defaultfont * - *---------------------------------------------------------------------------*/ -#include "defaultfont.c" - -/*---------------------------------------------------------------------------* - * gp32_gotoxy * - *---------------------------------------------------------------------------*/ -void gpconio_gotoxy(int _x, int _y) -{ - _wherex = _x; - _wherey = _y; -} - - -/*---------------------------------------------------------------------------* - * PutChar * - *---------------------------------------------------------------------------*/ -void PutChar(char c, int textattr, int x, int y) -{ - int f = textattr & 0x0F; - int b = textattr >> 4; - uint32_t fmask = f | (f << 8) | (f << 16) | (f << 24); - uint32_t bmask = b | (b << 8) | (b << 16) | (b << 24); - uint32_t *dest = (uint32_t *)&bg_bitmap[((y << 1) + y) << 1][x << 2]; - const uint32_t *src = (uint32_t *)&(font3x5[(int)c]); - uint32_t s; - - s = *src++; - *dest = (fmask&s) | (bmask&~s); - dest += LCD_WIDTH / sizeof(uint32_t); - - s = *src++; - *dest = (fmask&s) | (bmask&~s); - dest += LCD_WIDTH / sizeof(uint32_t); - - s = *src++; - *dest = (fmask&s) | (bmask&~s); - dest += LCD_WIDTH / sizeof(uint32_t); - - s = *src++; - *dest = (fmask&s) | (bmask&~s); - dest += LCD_WIDTH / sizeof(uint32_t); - - s = *src++; - *dest = (fmask&s) | (bmask&~s); - dest += LCD_WIDTH / sizeof(uint32_t); - - s = *src++; - *dest = (fmask&s) | (bmask&~s); - dest += LCD_WIDTH / sizeof(uint32_t); -} - - -/*---------------------------------------------------------------------------* - * gp32_textattr * - *---------------------------------------------------------------------------*/ -void gpconio_textattr(int _attr) -{ - _textattr = _attr; -} - -/*---------------------------------------------------------------------------* - * gp32_textbackground * - *---------------------------------------------------------------------------*/ -void gpconio_textbackground(int _color) -{ - _textattr = (_textattr & 0x0F) | (_color << 4); -} - -/*---------------------------------------------------------------------------* - * gp32_textcolor * - *---------------------------------------------------------------------------*/ -void gpconio_textcolor(int _color) -{ - _textattr = (_textattr & 0xF0) | (_color); -} - - -/*---------------------------------------------------------------------------* - * ClrLine * - *---------------------------------------------------------------------------*/ -void ClrLine(int y) -{ - int x; - - for(x=0 ; x<=W ; x++) PutChar(0, _textattr, x, y); -} - -/*---------------------------------------------------------------------------* - * NextLine * - *---------------------------------------------------------------------------*/ -void NextLine() -{ - _wherex = 0; - - if (++_wherey >= H) { - _wherey = 0; - } - - ClrLine(_wherey); -} - -/*---------------------------------------------------------------------------* - * clrscr * - *---------------------------------------------------------------------------*/ -void gpconio_clrscr() -{ - int y; - - for(y=0 ; y<=H ; y++) { - ClrLine(y); - } - - gpconio_gotoxy(0,0); -} - -/*---------------------------------------------------------------------------* - * gp32_put * - *---------------------------------------------------------------------------*/ -void gpconio_put(char _c) -{ - /* We have save some memory with fonts */ - _c = _c & 0x7F; /* no extened chars */ - _c = _c - 0x20; /* no cntr chars */ - PutChar(_c, _textattr, _wherex, _wherey); -} - -/*---------------------------------------------------------------------------* - * gp32_putch * - *---------------------------------------------------------------------------*/ -void gpconio_putch(char _c) -{ - switch (_c) { - case ASCII_LF: - NextLine(); - break; - case ASCII_CR: - gpconio_gotoxy(0, _wherey); - break; - default: - gpconio_put(_c); - if (++_wherex >= W) { - NextLine(); - } - break; - } - return; -} - -/*---------------------------------------------------------------------------* - * gp32_puts * - *---------------------------------------------------------------------------*/ -void gpconio_puts(const char *_str) -{ - while (*_str) { - gpconio_putch(*_str++); - } - return; -} - -/*---------------------------------------------------------------------------* - * gp32_printf * - *---------------------------------------------------------------------------*/ -int gpconio_printf(const char *_format, ...) -{ - char s[256]; - va_list marker; - va_start(marker, _format); - int r = vsprintf(s, _format, marker); - - va_end(marker); - gpconio_puts(s); - return r; -} - -void ShowConIO() -{ - unsigned short BPPMODE = 11; - unsigned short CLKVAL = (get_HCLK()/(83385*2*60))-1; - uint32_t LCDBANK = GP32_CONIO_VRAM >> 22; - uint32_t LCDBASEU = (GP32_CONIO_VRAM & 0x3FFFFF) >> 1; - uint32_t LCDBASEL; - unsigned short OFFSIZE = 0; - unsigned short PAGEWIDTH; - - rLCDCON1 = (CLKVAL<<8) | (0<<7) | (3<<5) | (BPPMODE<<1) | (1<<0) ; - rLCDCON2 = 0; - rLCDCON2 = (1<<24) | (319<<14) | (2<<6) | (1<<0) ; - rLCDCON3 = 0; - rLCDCON3 = (6<<19) | (239<<8) | (2<<0) ; - rLCDCON4 = 0; - rLCDCON4 = (0<<24) | (0<<16) | (0<<8) | (4<<0) ; - rLCDCON5 = 0; - rLCDCON5 = ((1<<10) | (1<<9) | (1<<8) | (0<<7) | - (0<<6) | (0<<4) | (0<<2) | (1<<1) | (0<<0)) ; - - LCDBASEL = LCDBASEU + 320*120; - PAGEWIDTH = 120; - - rLCDSADDR1 = (LCDBANK<<21) | (LCDBASEU<<0) ; - rLCDSADDR2 = (LCDBASEL<<0) ; - rLCDSADDR3 = (OFFSIZE<<11) | (PAGEWIDTH<<0) ; -} - - -/*---------------------------------------------------------------------------* - * InitConIO * - *---------------------------------------------------------------------------*/ -void InitConIO() -{ - ShowConIO(); - - gp_initButtons(); - gpconio_textattr(0); - gpconio_textcolor(DEF_TEXTCOLOR); - gpconio_textbackground(DEF_TEXTBACKGROUND); - gpconio_clrscr(); -} - - -static void delay_loop(unsigned int count) -{ - int i; - - for(i = 0; i < count; i++) { - i = i; - } - -} - -/*---------------------------------------------------------------------------* - * gp32_getch * - *---------------------------------------------------------------------------*/ -static unsigned char inputch = ASCII_CR; -char gpconio_getch(void) -{ - int keyx; - int key = 0; - - while(1) { - key = gp_getButtons(); - - do { - keyx = gp_getButtons(); - } while (keyx == key); - - switch (key) { - case GP32_KEY_SELECT: - gpconio_put(inputch); - return inputch; - break; - - case GP32_KEY_START: - gpconio_put(' '); - inputch = ASCII_CR; - return inputch; - break; - - case GP32_KEY_A: - inputch = 'A'; - break; - - case GP32_KEY_B: - inputch = 'Z'; - break; - - case GP32_KEY_UP: - if ((inputch-1) >= 0x20) { - inputch--; - } - break; - - case GP32_KEY_DOWN: - if ((inputch+1) <= 0x7E) { - inputch++; - } - break; - - case GP32_KEY_LEFT: - if ((inputch - 0x20) >= 0x20) { - inputch -= 0x20; - } - break; - - case GP32_KEY_RIGHT: - if ((inputch + 0x20) <= 0x7E) { - inputch += 0x20; - } - break; - - case GP32_KEY_R: - inputch = '1'; - break; - - case GP32_KEY_L: - inputch = '9'; - break; - - default: - break; - } - - gpconio_put(inputch); - delay_loop(10000); - } -} diff --git a/c/src/lib/libbsp/arm/gp32/console/console.c b/c/src/lib/libbsp/arm/gp32/console/console.c deleted file mode 100644 index d0fc3fef30..0000000000 --- a/c/src/lib/libbsp/arm/gp32/console/console.c +++ /dev/null @@ -1,176 +0,0 @@ -/* - * console.c : ARM GBA BSP - * - * This file contains the GBA console I/O package. - * - * - * Copyright (c) 2004 Markku Puro - * - * The license and distribution terms for this file may be - * found in found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. - * - * $Id$ -*/ - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * BSP initialization - */ - -static int gp32_pollRead(int minor) -{ - return(gpconio_getch()); -} - -static int gp32_write(int minor, const char *buf, int len) -{ - int i; - - for(i = 0; i < len; i++) { - gpconio_putch((unsigned short)buf[i]); - } - - return len; -} - - -/* for printk support */ -BSP_output_char_function_type BSP_output_char = (BSP_output_char_function_type) gpconio_putch; -BSP_polling_getchar_function_type BSP_poll_char = (BSP_polling_getchar_function_type) gpconio_getch; - -/*-------------------------------------------------------------------------+ -| Console device driver INITIALIZE entry point. -+--------------------------------------------------------------------------+ -| Initilizes the I/O console (keyboard + VGA display) driver. -+--------------------------------------------------------------------------*/ -rtems_device_driver -console_initialize(rtems_device_major_number major, - rtems_device_minor_number minor, - void *arg) -{ - rtems_status_code status; - - /* - * Set up TERMIOS - */ - rtems_termios_initialize (); - - /* - * Do device-specific initialization - */ - InitConIO(); - - /* - * Register the device - */ - status = rtems_io_register_name ("/dev/console", major, 0); - if (status != RTEMS_SUCCESSFUL) { - printk("Error registering console device!\n"); - rtems_fatal_error_occurred (status); - } - - return RTEMS_SUCCESSFUL; -} - - -/*-------------------------------------------------------------------------+ -| Console device driver OPEN entry point -+--------------------------------------------------------------------------*/ -rtems_device_driver -console_open(rtems_device_major_number major, - rtems_device_minor_number minor, - void *arg) -{ - rtems_status_code status; - static rtems_termios_callbacks cb = - { - NULL, /* firstOpen */ - NULL, /* lastClose */ - gp32_pollRead, /* pollRead */ - gp32_write, /* write */ - NULL, /* setAttributes */ - NULL, /* stopRemoteTx */ - NULL, /* startRemoteTx */ - TERMIOS_POLLED /* 1 = outputUsesInterrupts */ - }; - - status = rtems_termios_open (major, minor, arg, &cb); - - if(status != RTEMS_SUCCESSFUL) { - printk("Error openning console device\n"); - return status; - } - - return RTEMS_SUCCESSFUL; -} - -/*-------------------------------------------------------------------------+ -| Console device driver CLOSE entry point -+--------------------------------------------------------------------------*/ -rtems_device_driver -console_close(rtems_device_major_number major, - rtems_device_minor_number minor, - void *arg) -{ - rtems_device_driver res = RTEMS_SUCCESSFUL; - - res = rtems_termios_close (arg); - return res; -} - - -/*-------------------------------------------------------------------------+ -| Console device driver READ entry point. -+--------------------------------------------------------------------------+ -| Read characters from the I/O console. We only have stdin. -+--------------------------------------------------------------------------*/ -rtems_device_driver -console_read(rtems_device_major_number major, - rtems_device_minor_number minor, - void *arg) -{ - return rtems_termios_read (arg); - -} - - -/*-------------------------------------------------------------------------+ -| Console device driver WRITE entry point. -+--------------------------------------------------------------------------+ -| Write characters to the I/O console. Stderr and stdout are the same. -+--------------------------------------------------------------------------*/ -rtems_device_driver -console_write(rtems_device_major_number major, - rtems_device_minor_number minor, - void * arg) -{ - return rtems_termios_write (arg); -} - - - -/* - * Handle ioctl request. - */ -rtems_device_driver -console_control(rtems_device_major_number major, - rtems_device_minor_number minor, - void * arg -) -{ - return rtems_termios_ioctl (arg); -} diff --git a/c/src/lib/libbsp/arm/gp32/console/defaultfont.c b/c/src/lib/libbsp/arm/gp32/console/defaultfont.c deleted file mode 100644 index a4a5082e03..0000000000 --- a/c/src/lib/libbsp/arm/gp32/console/defaultfont.c +++ /dev/null @@ -1,600 +0,0 @@ -/* - * defaultfont.c : ARM GBA BSP - * - * This file contains default font definitions - * - * - * Copyright (c) 2004 Markku Puro - * - * The license and distribution terms for this file may be - * found in found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. - * - * $Id$ -*/ - -#define X 255 -#define GEN_FONT_DATA(a,b,c,d) ( ((d) << 24) | \ - ((c) << 16) | \ - ((b) << 8) | \ - ((a) << 0) ) - -static const unsigned long font3x5[256][6] = { - { /* ' ' - ascii:0x20 font:0x00 */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ) - },{ /* '!' - ascii:0x21 font:0x01 */ - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ) - },{ /* '"' - ascii:0x22 font:0x02 */ - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ) - },{ /* '#' - ascii:0x23 font:0x03 */ - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,X ) - },{ /* '$' - ascii:0x24 font:0x04 */ - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ) - },{ /* '%' - ascii:0x25 font:0x05 */ - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,0 ) - },{ /* '&' - ascii:0x26 font:0x06 */ - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,X,0 ) - },{ /* ''' - ascii:0x27 font:0x07 */ - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ) - },{ /* '(' - ascii:0x28 font:0x08 */ - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,0,X ) - },{ /* ')' - ascii:0x29 font:0x09 */ - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,0 ) - },{ /* '*' - ascii:0x2A font:0x0A */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,0,0 ) - },{ /* '+' - ascii:0x2B font:0x0B */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,0,0 ) - },{ /* '´' - ascii:0x2C font:0x0C */ - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ) - },{ /* '-' - ascii:0x2D font:0x0D */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ) - },{ /* '.' - ascii:0x2E font:0x0E */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - },{ /* '/' - ascii:0x2F font:0x0F */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( X,0,0,0 ) - },{ /* '0' - ascii:0x30 font:0x10 */ - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,X ) - },{ /* '1' - ascii:0x31 font:0x11 */ - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,X,X ) - },{ /* '2' - ascii:0x32 font:0x12 */ - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,X,X ) - },{ /* '3' - ascii:0x33 font:0x13 */ - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,X,X,X ) - },{ /* '4' - ascii:0x34 font:0x14 */ - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,0,X ) - },{ /* '5' - ascii:0x35 font:0x15 */ - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,X,X,X ) - },{ /* '6' - ascii:0x36 font:0x16 */ - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,X ) - },{ /* '7' - ascii:0x37 font:0x17 */ - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ) - },{ /* '8' - ascii:0x38 font:0x18 */ - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,X ) - },{ /* '9' - ascii:0x39 font:0x19 */ - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,X,X,X ) - },{ /* ':' - ascii:0x3A font:0x1A */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - },{ /* ';' - ascii:0x3B font:0x1B */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - },{ /* '<' - ascii:0x3C font:0x1C */ - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,0,X ) - },{ /* '=' - ascii:0x3D font:0x1D */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,0,0,0 ) - },{ /* '>' - ascii:0x3E font:0x1E */ - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,0 ) - },{ /* '?' - ascii:0x3F font:0x1F */ - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ) - },{ /* '@' - ascii:0x40 font:0x20 */ - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,0,X,X ) - },{ /* 'A' - ascii:0x41 font:0x21 */ - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ) - },{ /* 'B' - ascii:0x42 font:0x22 */ - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,0 ) - },{ /* 'C' - ascii:0x43 font:0x23 */ - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,0,X,X ) - },{ /* 'D' - ascii:0x44 font:0x24 */ - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,0 ), - },{ /* 'E' - ascii:0x45 font:0x25 */ - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,X,X ) - },{ /* 'F' - ascii:0x46 font:0x26 */ - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - },{ /* 'G' - ascii:0x47 font:0x27 */ - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,X,X ) - },{ /* 'H' - ascii:0x48 font:0x28 */ - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ) - },{ /* 'I' - ascii:0x49 font:0x29 */ - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ) - },{ /* 'J' - ascii:0x4A font:0x2A */ - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,X,0 ) - },{ /* 'K' - ascii:0x4B font:0x2B */ - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,X,0,X ) - },{ /* 'L' - ascii:0x4C font:0x2C */ - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,X,X ) - },{ /* 'M' - ascii:0x4D font:0x2D */ - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ) - },{ /* 'N' - ascii:0x4E font:0x2E */ - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ) - },{ /* 'O' - ascii:0x4F font:0x2F */ - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,X,0 ) - },{ /* 'P' - ascii:0x50 font:0x30 */ - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - },{ /* 'Q' - ascii:0x51 font:0x31 */ - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,X,X ) - },{ /* 'R' - ascii:0x52 font:0x33 */ - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ) - },{ /* 'S' - ascii:0x53 font:0x33 */ - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,X,X,0 ) - },{ /* 'T' - ascii:0x54 font:0x34 */ - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - },{ /* 'U' - ascii:0x55 font:0x35 */ - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,X ) - },{ /* 'V' - ascii:0x56 font:0x36 */ - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,X,0 ), - },{ /* 'W' - ascii:0x57 font:0x37 */ - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,X ), - },{ /* 'X' - ascii:0x58 font:0x38 */ - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ) - },{ /* 'Y' - ascii:0x59 font:0x39 */ - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - },{ /* 'Z' - ascii:0x5A font:0x3A */ - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,X,X ) - },{ /* '[' - ascii:0x5B font:0x3B */ - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,X,X ) - },{ /* '\' - ascii:0x5C font:0x3C */ - GEN_FONT_DATA( X,0,0,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,0,0 ) - },{ /* ']' - ascii:0x5D font:0x3D */ - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,X,X,X ) - },{ /* '^' - ascii:0x5E font:0x3E */ - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ) - },{ /* '_' - ascii:0x5F font:0x3F */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,X,X,X ) - },{ /* '´' - ascii:0x60 font:0x30 */ - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,0 ) - },{ /* 'a' - ascii:0x31 font:0x31 */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,X ) - },{ /* 'b' - ascii:0x62 font:0x32 */ - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,0 ) - },{ /* 'c' - ascii:0x63 font:0x33 */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,0,X,X ) - },{ /* 'd' - ascii:0x64 font:0x34 */ - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,X,X ), - },{ /* 'e' - ascii:0x65 font:0x35 */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,0,X,X ) - },{ /* 'f' - ascii:0x66 font:0x36 */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,0 ), - },{ /* 'g' - ascii:0x67 font:0x37 */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,X,X,0 ) - },{ /* 'h' - ascii:0x68 font:0x38 */ - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ) - },{ /* 'i' - ascii:0x69 font:0x39 */ - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ) - },{ /* 'j' - ascii:0x6A font:0x3A */ - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,X,0 ) - },{ /* 'k' - ascii:0x6B font:0x3B */ - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,X,0,X ) - },{ /* 'l' - ascii:0x6C font:0x3C */ - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,X,X ) - },{ /* 'm' - ascii:0x6D font:0x3D */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ) - },{ /* 'n' - ascii:0x6E font:0x3E */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ) - },{ /* 'o' - ascii:0x6F font:0x6F */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,X,0 ) - },{ /* 'p' - ascii:0x70 font:0x40 */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - },{ /* 'q' - ascii:0x71 font:0x41 */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,0,0,X ) - },{ /* 'r' - ascii:0x72 font:0x43 */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,0,0 ) - },{ /* 's' - ascii:0x73 font:0x43 */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,X,X,0 ) - },{ /* 't' - ascii:0x74 font:0x44 */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,X ), - },{ /* 'u' - ascii:0x75 font:0x45 */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,X,X ) - },{ /* 'v' - ascii:0x76 font:0x46 */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,X,0 ), - },{ /* 'w' - ascii:0x77 font:0x47 */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,X,0,X ), - },{ /* 'x' - ascii:0x78 font:0x48 */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,X ) - },{ /* 'y' - ascii:0x79 font:0x49 */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,X,0,X ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - },{ /* 'z' - ascii:0x7A font:0x4A */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,X,X ) - },{ /* '{' - ascii:0x7B font:0x4B */ - GEN_FONT_DATA( 0,0,X,X ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,X,X ) - },{ /* '\' - ascii:0x7C font:0x4C */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,0,0 ) - },{ /* '}' - ascii:0x7D font:0x4D */ - GEN_FONT_DATA( 0,X,X,0 ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,X,0 ), - GEN_FONT_DATA( 0,X,X,0 ) - },{ /* '~' - ascii:0x7E font:0x4E */ - GEN_FONT_DATA( 0,0,0,0 ), - GEN_FONT_DATA( 0,X,0,0 ), - GEN_FONT_DATA( 0,X,X,X ), - GEN_FONT_DATA( 0,0,0,X ), - GEN_FONT_DATA( 0,0,0,0 ) - },{ /* DEL - ascii:0x7F font:0x4F */ - GEN_FONT_DATA( X,X,X,X ), - GEN_FONT_DATA( X,X,X,X ), - GEN_FONT_DATA( X,X,X,X ), - GEN_FONT_DATA( X,X,X,X ), - GEN_FONT_DATA( X,X,X,X ) - } -}; diff --git a/c/src/lib/libbsp/arm/gp32/console/uart.c b/c/src/lib/libbsp/arm/gp32/console/uart.c new file mode 100644 index 0000000000..6ca578265d --- /dev/null +++ b/c/src/lib/libbsp/arm/gp32/console/uart.c @@ -0,0 +1,249 @@ +/* + * console driver for S3C2400 UARTs + * + * This driver uses the shared console driver in + * ...../libbsp/shared/console.c + * + * If you want the driver to be interrupt driven, you + * need to write the ISR, and in the ISR insert the + * chars into termios's queue. + * + * Copyright (c) 2004 Cogent Computer Systems + * Written by Jay Monkman + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * + * http://www.OARcorp.com/rtems/license.html. + * + * + * $Id$ +*/ +#include /* Must be before libio.h */ +#include +#include +#include + +/* Put the CPU (or UART) specific header file #include here */ +#include +#include +#include + +/* How many serial ports? */ +#define NUM_DEVS 1 + +int uart_poll_read(int minor); + +int dbg_dly; + +/* static function prototypes */ +static int uart_first_open(int major, int minor, void *arg); +static int uart_last_close(int major, int minor, void *arg); +static int uart_read(int minor); +static int uart_write(int minor, const char *buf, int len); +static void uart_init(int minor); +static void uart_write_polled(int minor, char c); +static int uart_set_attributes(int minor, const struct termios *t); + +/* These are used by code in console.c */ +unsigned long Console_Port_Count = NUM_DEVS; +console_data Console_Port_Data[NUM_DEVS]; + +/* rtems console uses the following minor number */ +rtems_device_minor_number Console_Port_Minor = 0; + +/* Pointers to functions for handling the UART. */ +console_fns uart_fns = +{ + libchip_serial_default_probe, + uart_first_open, + uart_last_close, + uart_read, + uart_write, + uart_init, + uart_write_polled, /* not used in this driver */ + uart_set_attributes, + FALSE /* TRUE if interrupt driven, FALSE if not. */ +}; + +/* + * There's one item in array for each UART. + * + * Some of these fields are marked "NOT USED". They are not used + * by console.c, but may be used by drivers in libchip + * + */ +console_tbl Console_Port_Tbl[] = { + { + "/dev/com0", /* sDeviceName */ + SERIAL_CUSTOM, /* deviceType */ + &uart_fns, /* pDeviceFns */ + NULL, /* deviceProbe */ + NULL, /* pDeviceFlow */ + 0, /* ulMargin - NOT USED */ + 0, /* ulHysteresis - NOT USED */ + NULL, /* pDeviceParams */ + 0, /* ulCtrlPort1 - NOT USED */ + 0, /* ulCtrlPort2 - NOT USED */ + 0, /* ulDataPort - NOT USED */ + NULL, /* getRegister - NOT USED */ + NULL, /* setRegister - NOT USED */ + NULL, /* getData - NOT USED */ + NULL, /* setData - NOT USED */ + 0, /* ulClock - NOT USED */ + 0 /* ulIntVector - NOT USED */ + } +}; + +/*********************************************************************/ +/* Functions called via termios callbacks (i.e. the ones in uart_fns */ +/*********************************************************************/ + +/* + * This is called the first time each device is opened. If the driver + * is interrupt driven, you should enable interrupts here. Otherwise, + * it's probably safe to do nothing. + * + * Since micromonitor already set up the UART, we do nothing. + */ +static int uart_first_open(int major, int minor, void *arg) +{ + return 0; +} + + +/* + * This is called the last time each device is closed. If the driver + * is interrupt driven, you should disable interrupts here. Otherwise, + * it's probably safe to do nothing. + */ +static int uart_last_close(int major, int minor, void *arg) +{ + return 0; +} + + +/* + * Read one character from UART. + * + * Return -1 if there's no data, otherwise return + * the character in lowest 8 bits of returned int. + */ +static int uart_read(int minor) +{ + char c; + + if (minor == 0) { + if (rUTRSTAT0 & 0x1) { + c = rURXH0 & 0xff; + return c; + } else { + return -1; + } + } else { + printk("Unknown console minor number: %d\n", minor); + return -1; + } + +} + + +/* + * Write buffer to UART + * + * return 1 on success, -1 on error + */ +static int uart_write(int minor, const char *buf, int len) +{ + int i; + + if (minor == 0) { + for (i = 0; i < len; i++) { + /* Wait for fifo to have room */ + while(!(rUTRSTAT0 & 0x2)) { + continue; + } + + rUTXH0 = (char) buf[i]; + } + } else { + printk("Unknown console minor number: %d\n", minor); + return -1; + } + + return 1; +} + + +/* Set up the UART. */ +static void uart_init(int minor) +{ + int i; + unsigned int reg = 0; + + /* enable UART0 */ + rCLKCON|=0x100; + + /* value is calculated so : (int)(PCLK/16./baudrate) -1 */ + reg = get_PCLK() / (16 * 115200) - 1; + + /* FIFO enable, Tx/Rx FIFO clear */ + rUFCON0 = 0x07; + rUMCON0 = 0x0; + /* Normal,No parity,1 stop,8 bit */ + rULCON0 = 0x3; + /* + * tx=level,rx=edge,disable timeout int.,enable rx error int., + * normal,interrupt or polling + */ + rUCON0 = 0x245; + rUBRDIV0 = reg; + + for (i = 0; i < 100; i++); + +} + +/* I'm not sure this is needed for the shared console driver. */ +static void uart_write_polled(int minor, char c) +{ + uart_write(minor, &c, 1); +} + +/* This is for setting baud rate, bits, etc. */ +static int uart_set_attributes(int minor, const struct termios *t) +{ + return 0; +} + +/***********************************************************************/ +/* + * The following functions are not used by TERMIOS, but other RTEMS + * functions use them instead. + */ +/***********************************************************************/ +/* + * Read from UART. This is used in the exit code, and can't + * rely on interrupts. +*/ +int uart_poll_read(int minor) +{ + return uart_read(minor); +} + + +/* + * Write a character to the console. This is used by printk() and + * maybe other low level functions. It should not use interrupts or any + * RTEMS system calls. It needs to be very simple + */ +static void _BSP_put_char( char c ) { + uart_write_polled(0, c); + if (c == '\n') { + uart_write_polled(0, '\r'); + } +} + +BSP_output_char_function_type BSP_output_char = _BSP_put_char; + + + diff --git a/c/src/lib/libbsp/arm/gp32/include/bsp.h b/c/src/lib/libbsp/arm/gp32/include/bsp.h index d62e4c3fbe..b9b50d8bae 100644 --- a/c/src/lib/libbsp/arm/gp32/include/bsp.h +++ b/c/src/lib/libbsp/arm/gp32/include/bsp.h @@ -32,9 +32,6 @@ extern "C" { extern rtems_configuration_table BSP_Configuration; -void gp32_setFramebuffer(void *add); -short gp32_initFramebufferN(void *add, uint32_t bitmode, uint32_t refreshrate); -short gp32_initFramebufferBP(void *add, uint32_t bitmode, uint32_t refreshrate); #define gp32_initButtons() {rPBCON=0x0;} #define gp32_getButtons() ( (((~rPEDAT >> 6) & 0x3 )<<8) | (((~rPBDAT >> 8) & 0xFF)<<0) ) diff --git a/c/src/lib/libbsp/arm/gp32/include/conio.h b/c/src/lib/libbsp/arm/gp32/include/conio.h deleted file mode 100644 index bafdf87ede..0000000000 --- a/c/src/lib/libbsp/arm/gp32/include/conio.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * conio.h : ARM GP32 BSP - * - * This file contains the GP32 conio I/O package. - * - * - * Copyright (c) 2004 Markku Puro - * - * The license and distribution terms for this file may be - * found in found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. - * - * $Id$ - */ - -#ifndef _CONIO_H -#define _CONIO_H - -#ifdef __cplusplus -extern "C" { -#endif - -/*---------------------------------------------------------------------------* - * Defines * - *---------------------------------------------------------------------------*/ -#define ASCII_BEL 0x07 /* bell */ -#define ASCII_BS 0x08 /* backspace */ -#define ASCII_TAB 0x09 /* horizontal tab */ -#define ASCII_LF 0x0A /* line feed */ -#define ASCII_CR 0x0D /* carriage return */ -#define ASCII_XON 0x11 /* control-Q */ -#define ASCII_XOFF 0x13 /* control-S */ -#define ASCII_ESC 0x1B /* escape */ - -enum COLORS -{ - BLACK, - BLUE, - GREEN, - CYAN, - RED, - MAGENTA, - BROWN, - LIGHTGRAY, - DARKGRAY, - LIGHTBLUE, - LIGHTGREEN, - LIGHTCYAN, - LIGHTRED, - LIGHTMAGENTA, - YELLOW, - WHITE, - MAXCOLORS -}; - -#define DEF_TEXTCOLOR BLACK -#define DEF_TEXTBACKGROUND WHITE - -/*---------------------------------------------------------------------------* - * Prototypes * - *---------------------------------------------------------------------------*/ -void gpconio_clrscr(); -void gpconio_textattr(int _attr); -void gpconio_textbackground(int _color); -void gpconio_textcolor(int _color); -void gpconio_putch(char _c); -void gpconio_puts(const char *_str); -int gpconio_printf(const char *_format, ...); -void gpconio_gotoxy(int _x, int _y); - -char gpconio_getch(void); -char gpconio_getch_noblock(void); - -void InitConIO(); -void ShowConIO(); - - -#ifdef __cplusplus -} -#endif - -#endif // _CONIO_H diff --git a/c/src/lib/libbsp/arm/gp32/startup/bspstart.c b/c/src/lib/libbsp/arm/gp32/startup/bspstart.c index bc264cad79..f4876443f7 100644 --- a/c/src/lib/libbsp/arm/gp32/startup/bspstart.c +++ b/c/src/lib/libbsp/arm/gp32/startup/bspstart.c @@ -19,7 +19,6 @@ #include #include #include -#include /*-------------------------------------------------------------------------+ | Global Variables @@ -79,6 +78,13 @@ void bsp_pretasking_hook(void) #endif /* RTEMS_DEBUG */ } /* bsp_pretasking_hook */ + +void bsp_idle_task(void) +{ + while(1){ + asm volatile ("MCR p15,0,r0,c7,c0,4 \n"); + } +} /*-------------------------------------------------------------------------+ | Function: bsp_start @@ -98,16 +104,12 @@ void bsp_start_default( void ) Cpu_table.pretasking_hook = bsp_pretasking_hook; /* init libc, etc. */ Cpu_table.predriver_hook = NULL; /* use system's */ Cpu_table.postdriver_hook = bsp_postdriver_hook; - Cpu_table.idle_task = NULL; + Cpu_table.idle_task = bsp_idle_task; Cpu_table.do_zero_of_workspace = TRUE; Cpu_table.interrupt_stack_size = 4096; Cpu_table.extra_mpci_receive_server_stack = 0; - /* setup rCLKCON */ - /* disable all but IIS,IIC,PWMTIMER and LCD */ - rCLKCON=0x6048; - /* stop RTC */ rTICINT=0x0; @@ -119,9 +121,8 @@ void bsp_start_default( void ) /* disable interrupts */ rINTMOD=0x0; rINTMSK=BIT_ALLMSK; /* unmasked by drivers */ - /*rSRCPND=BIT_ALLMSK; - rINTMSK=BIT_ALLMSK; - rINTPND=BIT_ALLMSK;*/ + + last=0; for(i=0; i<4; i++) { pend=rSRCPND; if(pend == 0 || pend == last) @@ -200,6 +201,27 @@ void bsp_reset(void) rtems_interrupt_level level; _CPU_ISR_Disable(level); printk("bsp_reset.....\n"); - ShowConIO(); - while(1); + /* disable mmu, invalide i-cache and call swi #4 */ + asm volatile("" + "mrc p15,0,r0,c1,c0,0 \n" + "bic r0,r0,#1 \n" + "mcr p15,0,r0,c1,c0,0 \n" + "nop \n" + "nop \n" + "nop \n" + "nop \n" + "nop \n" + "mov r0,#0 \n" + "MCR p15,0,r0,c7,c5,0 \n" + "nop \n" + "nop \n" + "nop \n" + "nop \n" + "nop \n" + "swi #4 " + : + : + : "r0" + ); + /* we should be back in bios now */ } -- cgit v1.2.3