MCURSES - MINI CURSES LIBRARY
====================================================================================================

Copyright (c) 2011 Frank Meyer - frank(at)fli4l.de

mcurses ist eine Mini-Curses-Programmbibliothek, die weniger auf Effizienz sondern eher
auf mglichst wenig Speicherplatz-Verbrauch getrimmt ist. So ist diese Bibliothek durchaus
auf Mikrocontrollern wie z.B. ATmegas lauffhig.

Die mcurses-Funktionen lehnen sich so nah wie mglich an das Original CURSES bzw.
NCURSES an, trotzdem mssen jedoch teilweise Abstriche gemacht werden. Als Terminal
wird lediglich VT200 untersttzt. Ein optimal passendes Terminal-Emulationsprogramm
ist PuTTY.

Die einzelnen mcurses-Funktionen:

----------------------------------------------------------------------------------------------------
void    initscr (void)

        Initialisierung mcurses, siehe auch endwin()

        Beispiel: initscr ();

----------------------------------------------------------------------------------------------------
void    move (uint8_t y, uint8_t x)

        Cursor auf Zeile y, Spalte x positionieren, beginnend bei 0

        Beispiel: move (10, 20);

----------------------------------------------------------------------------------------------------
void    attrset (uint8_t attr)

        Attribute setzen

            Mgliche Attribute:
                A_NORMAL                                // normal
                A_UNDERLINE                             // underline
                A_REVERSE                               // reverse
                A_BLINK                                 // blink
                A_BOLD                                  // bold
                A_DIM                                   // dim
                A_STANDOUT                              // standout (same as bold)

        Beispiel: attrset (A_REVERSE | A_UNDERLINE);

----------------------------------------------------------------------------------------------------
void    addch (uint8_t ch)

        Zeichen ausgeben

        Beispiel: addch ('X');

----------------------------------------------------------------------------------------------------
void    addstr (char * str)
void    addstr_P (const PROGMEM char * str)

        Zeichenkette ausgeben

        Beispiel: addstr ("Hello, World");

----------------------------------------------------------------------------------------------------
void    setscrreg (uint8_t t, uint8_t b)

        Scrolling-Region setzen: t = top, b = bottom, beachte Scrolling-Region!

        Beispiel: setscrreg (1, LINES - 2);

----------------------------------------------------------------------------------------------------
void    deleteln (void)

        Eine Zeile an der aktuellen Position lschen, beachte Scrolling-Region!

        Beispiel: deleteln ();

----------------------------------------------------------------------------------------------------
void    insertln (void)

        Eine Zeile an der aktuellen Position einfgen, beachte Scrolling-Region!

        Beispiel: insertln ();

----------------------------------------------------------------------------------------------------
void    scroll (void)

        Eine Zeile hochrollen

        Beispiel: scroll ();

----------------------------------------------------------------------------------------------------
void    clear (void)

        Bildschirm lschen

        Beispiel: clear ();

----------------------------------------------------------------------------------------------------
void    clrtobot (void)

        Bildschirm ab der aktuellen Zeile bis unten lschen

        Beispiel: clrtobot ();

----------------------------------------------------------------------------------------------------
void    clrtoeol (void)

        Zeile ab der aktuellen Spalte bis zum Zeilenende lschen

        Beispiel: clrtoeol ();

----------------------------------------------------------------------------------------------------
void    delch (void)

        Zeichen an der aktuellen Position lschen

        Beispiel: delch ();

----------------------------------------------------------------------------------------------------
void    insch (uint8_t)

        Zeichen an der aktuellen Position einfgen

        Beispiel: insch ('X');

----------------------------------------------------------------------------------------------------
uint8_t getch ()

        Lesen von alphanumerischen Tasten und Funktionstasten

        Beispiel:
                  uint8_t ch = getch ();

                  if (ch == KEY_DOWN)
                  {
                       do_something ();
                  }

----------------------------------------------------------------------------------------------------

Weitere Funktionen, die als Makros definiert sind:

----------------------------------------------------------------------------------------------------
void    erase ()

        siehe clear()

        Beispiel: erase ();

----------------------------------------------------------------------------------------------------
void    mvaddch (uint8_t y, uint8_t x, uint8_t c)

        Zur Position (y,x), dann Zeichen ausgeben

        Beispiel: mvaddch (10, 10, 'X');

----------------------------------------------------------------------------------------------------
void    mvaddstr (uint8_t y, uint8_t x, char * s)
void    mvaddstr_P (uint8_t y, uint8_t x, const PROGMEM char * s)

        Zur Position (y,x), dann Zeichenkette ausgeben

        Beispiel: mvaddstr (10, 10, "Hello World");

----------------------------------------------------------------------------------------------------
void    mvinsch (uint8_t y, uint8_t x, uint8_t c)

        Zur Position (y,x), dann Zeichen einfgen

        Beispiel: mvinsch (10, 10, 'X');

----------------------------------------------------------------------------------------------------
void    mvdelch(uint8_t y, uint8_t x)

        Zur Position (y,x), dann Zeichen lschen

        Beispiel: mvdelch(10, 10);

----------------------------------------------------------------------------------------------------
void    refresh ()

        Dummy

        Beispiel: refresh ();

----------------------------------------------------------------------------------------------------
void    endwin ()

        mcurses beenden, siehe auch initscr()

        Beispiel: endwin ();

----------------------------------------------------------------------------------------------------


Konstanten - konfigurierbar ber mcurses-config.h:

        mcurses nutzt den AVR-UART. Standard-Baudrate ist 19200 Bd. Diese Konstante kann hier
        an die verwendete Baudrate angepasst werden:

            #define BAUD            19200L                                  // baudrate

        Die Anzahlen der Zeilen und Spalten sind fest eingestellt, nmlich auf
        Standard-VT200-Gre:

            #define LINES           24                                      // 24 lines
            #define COLS            80                                      // 80 columns

        Die Werte knnen hier an die eingestellte Gre der verwendeten Terminal-Emulation
        angepasst werden.
