From: Joshua Wise Date: Fri, 26 Sep 2008 05:15:30 +0000 (-0400) Subject: Make the log longer, and make it faster to write to. X-Git-Url: http://git.joshuawise.com/netwatch.git/commitdiff_plain/a3033282454ea3d1e5e8a7ca91d3d67d258ba04c?ds=sidebyside;hp=e8351f1a2c735e32d6fb81f180f25d751caf6fe7 Make the log longer, and make it faster to write to. --- diff --git a/aseg/vga-overlay.c b/aseg/vga-overlay.c index 7aa8b41..cfe6ac9 100644 --- a/aseg/vga-overlay.c +++ b/aseg/vga-overlay.c @@ -5,7 +5,11 @@ #include #include -static char logents[4][41] = {{0}}; +#define LOGLEN 96 +#define LOG_ONSCREEN 4 + +static char logents[LOGLEN][41] = {{0}}; +static int prodptr = 0; #define VRAM_BASE 0xA0000UL #define TEXT_CONSOLE_OFFSET 0x18000UL @@ -54,7 +58,7 @@ void outlog() smram_aseg_set_state(SMRAM_ASEG_SMMCODE); - for (y = 0; y < 4; y++) + for (y = 0; y < LOG_ONSCREEN; y++) for (x = 40; x < 80; x++) { basep[y*80*2+x*2] = ' '; @@ -63,14 +67,14 @@ void outlog() smram_restore_state(old_state); - for (y = 0; y < 4; y++) - strblit(logents[y], y, 40); + for (y = -LOG_ONSCREEN; y < 0; y++) + strblit(logents[(y + prodptr) % LOGLEN], y + LOG_ONSCREEN, 40); } void dolog(const char *s) { - memmove(logents[0], logents[1], sizeof(logents[0])*3); - strcpy(logents[3], s); + strcpy(logents[prodptr], s); + prodptr = (prodptr + 1) % LOGLEN; } void (*output)(const char *s) = dolog; @@ -78,10 +82,10 @@ void dologf(const char *fmt, ...) { va_list va; - memmove(logents[0], logents[1], sizeof(logents[0])*3); va_start(va, fmt); - vsnprintf(logents[3], 40, fmt, va); + vsnprintf(logents[prodptr], 40, fmt, va); va_end(va); + prodptr = (prodptr + 1) % LOGLEN; } void (*outputf)(const char *s, ...) = dologf; diff --git a/tools/poke-rls.c b/tools/poke-rls.c index 03c4fb1..586b4f8 100644 --- a/tools/poke-rls.c +++ b/tools/poke-rls.c @@ -41,9 +41,8 @@ int main(int argc, char **argv) printf("returned %p\n", res); if (res == 42) { - printf("%s\n", packet->data); - printf("%s\n", packet->data+41); - printf("%s\n", packet->data+82); - printf("%s\n", packet->data+123); + int i; + for (i = 0; i < 96; i++) + printf("%s\n", packet->data + i * 41); } }