liblog/liblog.c

85 lines
1.4 KiB
C

#include "liblog.h"
#define FX9860G
#include <gint/display.h>
// Console avec autoscrolling
// equivalent des "Hello" de basic
static int debut=1; // ligne du haut
static int current=7;
static int cursor=0;
static char console [8][22]=
{
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "
};
static void next_line()
{
current ++;
debut ++;
if (debut==24)
debut-=8;
current %= 8;
cursor=0;
}
static void show_line(int l)
{
dtext(1,1+8*l, &console[(current+l)%8][0], C_BLACK, C_NONE);
}
static void set_character(char c)
{
if (c=='\0' || c=='\n')
{
console [current] [cursor] = '\0';
next_line();
}
else
{
console [current] [cursor] = c;
cursor++;
}
if (cursor==21)
next_line();
}
// log something
void ll_log(const char * txt)
{
// securite
debut %= 8;
current %= 8;
// fin securite
int i=0;
while (1)
{
char c=txt[i];
set_character(c);
i++;
if (c=='\0')
break;
}
// securite
for (int t=0; t<8; t++)
console[t][21]='\0';
// fin securite
}
void ll_display_log()
{
dclear(C_WHITE);
for (int i=0; i<8; i++)
show_line(i);
dupdate();
}