[OpenBIOS] [PATCH 02/20] libopenbios: remove the C terminal emulator file console_common.c

Mark Cave-Ayland mark.cave-ayland at ilande.co.uk
Sat Jun 15 10:38:40 CEST 2013


With the advent of the Forth terminal it is no longer required.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at ilande.co.uk>
---
 openbios-devel/arch/sparc32/console.c       |    2 -
 openbios-devel/libopenbios/build.xml        |    1 -
 openbios-devel/libopenbios/console_common.c |  416 ---------------------------
 3 files changed, 419 deletions(-)
 delete mode 100644 openbios-devel/libopenbios/console_common.c

diff --git a/openbios-devel/arch/sparc32/console.c b/openbios-devel/arch/sparc32/console.c
index 6fe48ac..c986e2b 100644
--- a/openbios-devel/arch/sparc32/console.c
+++ b/openbios-devel/arch/sparc32/console.c
@@ -39,8 +39,6 @@ void tcx_init(uint64_t base)
 {
     vmem = (unsigned char *)ofmem_map_io(base + VMEM_BASE, VMEM_SIZE);
     dac = (uint32_t *)ofmem_map_io(base + DAC_BASE, DAC_SIZE);
-
-    console_init();
 }
 
 #endif
diff --git a/openbios-devel/libopenbios/build.xml b/openbios-devel/libopenbios/build.xml
index cd15baf..c2f3e0e 100644
--- a/openbios-devel/libopenbios/build.xml
+++ b/openbios-devel/libopenbios/build.xml
@@ -6,7 +6,6 @@
   <object source="bootcode_load.c" condition="LOADER_BOOTCODE"/>
   <object source="bootinfo_load.c" condition="LOADER_BOOTINFO"/>
   <object source="client.c"/>
-  <object source="console_common.c"/>
   <object source="elf_info.c" />
   <object source="elf_load.c" condition="LOADER_ELF"/>
   <object source="font_8x8.c" condition="FONT_8X8"/>
diff --git a/openbios-devel/libopenbios/console_common.c b/openbios-devel/libopenbios/console_common.c
deleted file mode 100644
index 1631769..0000000
--- a/openbios-devel/libopenbios/console_common.c
+++ /dev/null
@@ -1,416 +0,0 @@
-/*
- *	<console.c>
- *
- *	Simple text console
- *
- *   Copyright (C) 2002, 2003 Samuel Rydh (samuel at ibrium.se)
- *   Copyright (C) 2005 Stefan Reinauer <stepan at openbios.org>
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation
- *
- */
-
-#include "config.h"
-#include "libopenbios/bindings.h"
-#include "libopenbios/fontdata.h"
-#include "libopenbios/console.h"
-#include "libopenbios/video.h"
-#include "packages/video.h"
-
-#define FONT_ADJ_HEIGHT	 (FONT_HEIGHT + 2)
-
-// Warning: will hang on purpose when encountering unknown codes
-//#define DEBUG_CONSOLE
-#ifdef DEBUG_CONSOLE
-#define DPRINTF(fmt, args...)                   \
-    do {                                        \
-        printk(fmt , ##args);                   \
-        for (;;);                               \
-    } while (0)
-#else
-#define DPRINTF(fmt, args...) do {} while(0)
-#endif
-
-typedef enum {
-    ESnormal, ESesc, ESsquare, ESgetpars, ESgotpars, ESfunckey,
-    EShash, ESsetG0, ESsetG1, ESpercent, ESignore, ESnonstd,
-    ESpalette
-} vc_state_t;
-
-#define NPAR 16
-static struct {
-	int	inited;
-	int	physw, physh;
-	int	w,h;
-
-	int	x,y;
-	char	*buf;
-
-	int	cursor_on;
-	vc_state_t vc_state;
-	unsigned int vc_npar,vc_par[NPAR]; /* Parameters of current
-                                              escape sequence */
-} cons;
-
-static int
-get_conschar( int x, int y )
-{
-	if( (unsigned int)x < cons.w && (unsigned int)y < cons.h )
-		return cons.buf[y*cons.w + x];
-	return ' ';
-}
-
-static void
-draw_char( unsigned int h, unsigned int v )
-{
-        const unsigned char *c = fontdata;
-	int x, y, xx, rskip, m;
-	int invert = (h==cons.x && v==cons.y && cons.cursor_on);
-	int ch = get_conschar( h, v );
-
-	while( h >= cons.w || v >= cons.h )
-		return;
-
-	h *= FONT_WIDTH;
-	v *= FONT_ADJ_HEIGHT;
-
-	rskip = (FONT_WIDTH > 8)? 2 : 1;
-	c += rskip * (unsigned int)(ch & 0xff) * FONT_HEIGHT;
-
-	for( x=0; x<FONT_WIDTH; x++ ) {
-		xx = x % 8;
-		if( x && !xx )
-			c++;
-		m = (1<<(7-xx));
-		for( y=0; y<FONT_HEIGHT; y++ ){
-			int col = ((!(c[rskip*y] & m)) != invert) ? 254 : 0;
-			draw_pixel( h+x, v+y+1, col );
-		}
-		draw_pixel( h+x, v, 254 );
-		draw_pixel( h+x, v+FONT_HEIGHT+1, 254 );
-	}
-}
-
-static void
-show_cursor( int show )
-{
-	if( cons.cursor_on == show )
-		return;
-	cons.cursor_on = show;
-	draw_char( cons.x, cons.y );
-}
-
-
-static void
-draw_line( int n )
-{
-	int i;
-
-	if( n >= cons.h || n < 0 )
-		return;
-	for( i=0; i<cons.w; i++ )
-		draw_char( i, n );
-}
-
-#if 0
-static void
-refresh( void )
-{
-	int i;
-	for( i=0; i<cons.h; i++ )
-		draw_line(i);
-}
-#endif
-
-int
-console_init( void )
-{
-	if( video_get_res(&cons.physw,&cons.physh) < 0 )
-		return -1;
-
-	set_color( 0, 0 );
-
-	cons.w = cons.physw/FONT_WIDTH;
-	cons.h = cons.physh/FONT_ADJ_HEIGHT;
-	cons.buf = malloc( cons.w * cons.h );
-	cons.inited = 1;
-	cons.x = cons.y = 0;
-        cons.vc_state = ESnormal;
-	return 0;
-}
-
-void
-console_close( void )
-{
- 	if( !cons.inited )
-		return;
-	free( cons.buf );
-	cons.inited = 0;
-}
-
-static void
-rec_char( int ch, int x, int y )
-{
-	if( (unsigned int)x < cons.w && (unsigned int)y < cons.h ) {
-		cons.buf[y*cons.w + x] = ch;
-		draw_char( x, y );
-	}
-}
-
-static void
-scroll1( void )
-{
-    int x, y;
-
-    video_scroll(FONT_ADJ_HEIGHT);
-
-    for (y = 1; y < cons.h - 1; y++) {
-        for (x = 0; x < cons.w; x++)
-            cons.buf[(y - 1) * cons.w + x] = cons.buf[y * cons.w + x];
-    }
-    for (x = 0; x < cons.w; x++)
-        cons.buf[(cons.h - 1) * cons.w + x] = ' ';
-    draw_line(cons.h - 1);
-}
-
-// Insert char
-static void csi_at(unsigned int nr)
-{
-    unsigned int x;
-
-    if (nr > cons.w - cons.x)
-        nr = cons.w - cons.x;
-    else if (!nr)
-        return;
-
-    for (x = cons.x + nr; x < cons.w - 1; x++)
-        cons.buf[cons.y * cons.w + x - nr] = cons.buf[cons.y * cons.w + x];
-    for (x = cons.x; x < cons.x + nr; x++)
-        cons.buf[cons.y * cons.w + x] = ' ';
-    draw_line(cons.y);
-}
-
-static void
-do_con_trol(unsigned char ch)
-{
-    unsigned int i, j;
-
-    switch (ch) {
-    case 7:
-        // BEL
-        return;
-    case 8:
-        // BS
-        if (cons.x)
-            cons.x--;
-        return;
-    case 9:
-        // HT
-        cons.x = (cons.x + 8) & ~7;
-        return;
-    case 10:
-        // LF
-        cons.x = 0;
-        cons.y++;
-        return;
-    case 12:
-        // FF
-        for (i = 0; i < cons.h; i++) {
-            for (j = 0; j < cons.w; j++)
-                cons.buf[i * cons.w + j] = ' ';
-            draw_line(i);
-        }
-        cons.x = cons.y = 0;
-        return;
-    case 13:
-        // CR
-        cons.x = 0;
-        return;
-    case 25:
-        // EM
-        return;
-    case 24: // CAN
-    case 26: // SUB
-        cons.vc_state = ESnormal;
-        return;
-    case 27:
-        // ESC
-        cons.vc_state = ESesc;
-        return;
-    }
-    if (ch < 32)
-        DPRINTF("Unhandled control char %d\n", ch);
-
-    switch (cons.vc_state) {
-    case ESesc:
-        cons.vc_state = ESnormal;
-        switch (ch) {
-        case '[':
-            cons.vc_state = ESsquare;
-            return;
-        case 'M':
-            scroll1();
-            return;
-        default:
-            DPRINTF("Unhandled basic escape code '%c'\n", ch);
-            return;
-        }
-        return;
-    case ESsquare:
-        for(cons.vc_npar = 0; cons.vc_npar < NPAR ; cons.vc_npar++)
-            cons.vc_par[cons.vc_npar] = 0;
-        cons.vc_npar = 0;
-        cons.vc_state = ESgetpars;
-        // Fall through
-    case ESgetpars:
-        if (ch == ';' && cons.vc_npar < NPAR - 1) {
-            cons.vc_npar++;
-            return;
-        } else if (ch >= '0' && ch <= '9') {
-            cons.vc_par[cons.vc_npar] *= 10;
-            cons.vc_par[cons.vc_npar] += ch - '0';
-            return;
-        } else
-            cons.vc_state=ESgotpars;
-        // Fall through
-    case ESgotpars:
-        cons.vc_state = ESnormal;
-        switch(ch) {
-        case 'A':
-            // Cursor up
-            if (cons.vc_par[0] == 0)
-                cons.vc_par[0] = 1;
-            if (cons.y - cons.vc_par[0] > 0)
-                cons.y -= cons.vc_par[0];
-            return;
-        case 'B':
-            // Cursor down
-            if (cons.vc_par[0] == 0)
-                cons.vc_par[0] = 1;
-            if (cons.y + cons.vc_par[0] < cons.h - 1)
-                cons.y += cons.vc_par[0];
-            return;
-        case 'C':
-            // Cursor right
-            if (cons.vc_par[0] == 0)
-                cons.vc_par[0] = 1;
-            if (cons.x + cons.vc_par[0] < cons.w - 1)
-                cons.x += cons.vc_par[0];
-            return;
-        case 'D':
-            // Cursor left
-            if (cons.vc_par[0] == 0)
-                cons.vc_par[0] = 1;
-            if (cons.x - cons.vc_par[0] > 0)
-                cons.x -= cons.vc_par[0];
-            return;
-        case 'H':
-        case 'f':
-            // Set cursor position
-            if (cons.vc_par[0])
-                cons.vc_par[0]--;
-
-            if (cons.vc_par[1])
-                cons.vc_par[1]--;
-
-            cons.x = cons.vc_par[1];
-            cons.y = cons.vc_par[0];
-            return;
-        case 'J':
-            if (cons.vc_par[0] == 0 && (unsigned int)cons.y < (unsigned int)cons.h &&
-                (unsigned int)cons.x < (unsigned int)cons.w) {
-                // erase from cursor to end of display
-                for (i = cons.x; i < cons.w; i++)
-                    cons.buf[cons.y * cons.w + i] = ' ';
-                draw_line(cons.y);
-                for (j = cons.y + 1; j < cons.h; j++) {
-                    for (i = 0; i < cons.w; i++)
-                        cons.buf[j * cons.w + i] = ' ';
-                    draw_line(j);
-                }
-            } else {
-                DPRINTF("Unhandled CSI J code '%c'\n", cons.vc_par[0]);
-            }
-            return;
-        case 'K':
-            switch (cons.vc_par[0]) {
-            case 0: /* erase from cursor to end of line */
-                for (i = cons.x; i < cons.w; i++)
-                    cons.buf[cons.y * cons.w + i] = ' ';
-                draw_line(cons.y);
-                return;
-            case 1: /* erase from start of line to cursor */
-                for (i = 0; i <= cons.x; i++)
-                    cons.buf[cons.y * cons.w + i] = ' ';
-                draw_line(cons.y);
-                return;
-            case 2: /* erase whole line */
-                for (i = 0; i < cons.w; i++)
-                    cons.buf[cons.y * cons.w + i] = ' ';
-                draw_line(cons.y);
-                return;
-            default:
-                DPRINTF("Unhandled CSI K code '%c'\n", cons.vc_par[0]);
-                return;
-            }
-            return;
-        case 'M':
-            if (cons.vc_par[0] == 1)
-                scroll1();
-            else
-                DPRINTF("Unhandled CSI M %d\n", cons.vc_par[0]);
-            return;
-        case 'm':
-            // Attributes are ignored
-            return;
-        case '@':
-            csi_at(cons.vc_par[0]);
-            return;
-        default:
-            DPRINTF("Unhandled escape code '%c', par[%d, %d, %d, %d, %d]\n",
-                    ch, cons.vc_par[0], cons.vc_par[1], cons.vc_par[2],
-                    cons.vc_par[3], cons.vc_par[4]);
-            return;
-        }
-        return;
-    default:
-        cons.vc_state = ESnormal;
-        rec_char(ch, cons.x++, cons.y);
-        return;
-    }
-}
-
-int
-console_draw_fstr(const char *str, int len)
-{
-        unsigned int y, x;
-        unsigned char ch;
-
-        if (!str || len <= 0) {
-		return 0;
-	}
-
-	if( !cons.inited && console_init() )
-		return -1;
-
-	show_cursor(0);
-        while((ch = *str++) && len--) {
-		do_con_trol(ch);
-
-		if( cons.x >= cons.w ) {
-			cons.x=0, cons.y++;
-		}
-		if( cons.y >= cons.h ) {
-			for( y=0; y<cons.h-1; y++ )
-				for( x=0; x<cons.w; x++ )
-					cons.buf[y*cons.w + x] = cons.buf[(y+1)*cons.w + x];
-			cons.y = cons.h-1;
-			cons.x = 0;
-			scroll1();
-		}
-	}
-	show_cursor(1);
-	return 0;
-}
-- 
1.7.10.4




More information about the OpenBIOS mailing list