EMILE/second/console.c

116 lines
1.4 KiB
C
Raw Normal View History

2004-02-15 20:46:45 +00:00
/*
*
* (c) 2004-2007 Laurent Vivier <Laurent@lvivier.info>
2004-02-15 20:46:45 +00:00
*
*/
#include <stdio.h>
2005-11-08 02:06:40 +00:00
#include <macos/lowmem.h>
2004-02-15 20:46:45 +00:00
#include "vga.h"
#include "console.h"
#include "serial.h"
2005-08-27 15:48:13 +00:00
#include "keyboard.h"
2005-11-28 23:21:00 +00:00
#include "config.h"
static int vga_enabled = 0;
2004-02-15 20:46:45 +00:00
void
console_init(emile_l2_header_t* info)
2004-02-15 20:46:45 +00:00
{
if (read_config_vga(info) == 0)
2005-11-28 23:21:00 +00:00
{
2005-12-12 22:31:05 +00:00
if (vga_init())
vga_enabled = 0;
else
vga_enabled = 1;
2005-11-28 23:21:00 +00:00
}
serial_init(info);
2004-02-15 20:46:45 +00:00
}
2005-11-08 02:06:40 +00:00
int console_putchar(int c)
2004-02-15 20:46:45 +00:00
{
if (vga_enabled)
vga_put(c);
serial_put(c);
return c;
2004-02-15 20:46:45 +00:00
}
void console_putstring(const char *s)
2004-02-15 20:46:45 +00:00
{
while(*s)
console_putchar(*(s++));
2004-02-15 20:46:45 +00:00
}
2005-08-27 15:48:13 +00:00
#ifdef USE_CLI
int console_keypressed(int timeout)
{
long time = Ticks + timeout;
while (Ticks < time)
{
if (vga_enabled && keyboard_keypressed())
return 1;
if (serial_keypressed())
return 1;
}
return 0;
}
int console_getchar()
{
int c;
if (vga_enabled)
{
c = keyboard_getchar();
if (c)
return c;
}
c = serial_getchar();
return c;
}
void console_clear(void)
{
printf("\033[2J");
}
void console_cursor_on(void)
{
printf("\033[?25h");
}
void console_cursor_off(void)
{
printf("\033[?25l");
}
void console_cursor_restore(void)
{
printf("\0338");
}
void console_cursor_save(void)
{
printf("\0337");
}
void console_video_inverse(void)
{
printf("\033[7m");
}
void console_video_normal(void)
{
printf("\033[27m");
}
2007-06-01 20:48:44 +00:00
void console_set_cursor_position(int x, int y)
{
printf("\033[%d;%dH", y, x);
}
2005-08-27 15:48:13 +00:00
#endif