Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 605 → Rev 606

/kernel/trunk/generic/src/console/kconsole.c
238,6 → 238,7
int curlen = 0, position = 0;
char *current = history[histposition];
int i;
char mod; /* Command Modifier */
char c;
 
printf("%s> ", prompt);
309,11 → 310,33
continue;
}
if (c == 0x1b) {
mod = _getc(input);
c = _getc(input);
if (c!= 0x5b)
 
if (mod != 0x5b && mod != 0x4f)
continue;
c = _getc(input);
if (c == 0x44) { /* Left */
 
if (c == 0x33 && _getc(input) == 0x7e) {
if (position == curlen)
continue;
for (i=position+1; i<curlen;i++) {
putchar(current[i]);
current[i-1] = current[i];
}
putchar(' ');
rdln_print_c('\b',curlen-position);
curlen--;
}
else if (c == 0x48) { /* Home */
rdln_print_c('\b',position);
position = 0;
}
else if (c == 0x46) {
for (i=position;i<curlen;i++)
putchar(current[i]);
position = curlen;
}
else if (c == 0x44) { /* Left */
if (position > 0) {
putchar('\b');
position--;
320,7 → 343,7
}
continue;
}
if (c == 0x43) { /* Right */
else if (c == 0x43) { /* Right */
if (position < curlen) {
putchar(current[position]);
position++;
327,7 → 350,8
}
continue;
}
if (c == 0x41 || c == 0x42) { /* Up,down */
else if (c == 0x41 || c == 0x42) {
/* Up,down */
rdln_print_c('\b',position);
rdln_print_c(' ',curlen);
rdln_print_c('\b',curlen);
/kernel/trunk/arch/mips32/include/drivers/serial.h
56,7 → 56,7
int irq;
}serial_t;
 
chardev_t * serial_console(void);
void serial_console(void);
int serial_init(void);
 
#endif
/kernel/trunk/arch/mips32/include/drivers/arc.h
215,6 → 215,6
extern int arc_enabled(void);
extern void arc_print_devices(void);
void arc_frame_init(void);
chardev_t * arc_console(void);
void arc_console(void);
 
#endif
/kernel/trunk/arch/mips32/include/drivers/msim.h
36,6 → 36,6
#define MSIM_KBD_ADDRESS 0xB0000000
#define MSIM_KBD_IRQ 2
 
chardev_t * msim_console(void);
void msim_console(void);
 
#endif
/kernel/trunk/arch/mips32/src/console.c
34,15 → 34,10
 
void console_init(void)
{
chardev_t *console;
 
if (arc_enabled()) {
console = arc_console();
arc_console();
} else if (serial_init()) {
console = serial_console();
serial_console();
} else
console = msim_console();
 
stdin = console;
stdout = console;
msim_console();
}
/kernel/trunk/arch/mips32/src/drivers/serial.c
101,8 → 101,7
serial_interrupt(n, stack);
}
 
#include <print.h>
chardev_t * serial_console(void)
void serial_console(void)
{
serial_t *sd = &sconf[0];
 
117,7 → 116,6
*/
old_timer = int_register(TIMER_IRQ, "serial_drvr_poll", timer_replace);
 
return &console;
stdin = &console;
stdout = &console;
}
/kernel/trunk/arch/mips32/src/drivers/arc.c
35,6 → 35,7
#include <mm/frame.h>
#include <interrupt.h>
#include <align.h>
#include <console/console.h>
 
/* This is a good joke, SGI HAS different types than NT bioses... */
/* Here is the SGI type */
246,14 → 247,14
arc_keyboard_poll();
}
 
 
chardev_t * arc_console(void)
void arc_console(void)
{
kbd_polling_enabled = true;
chardev_initialize("arc_console", &console, &arc_ops);
old_timer = int_register(TIMER_IRQ, "arc_kb_poll", timer_replace);
return &console;
stdin = &console;
stdout = &console;
}
 
/* Initialize frame zones from ARC firmware.
/kernel/trunk/arch/mips32/src/drivers/msim.c
30,6 → 30,7
#include <console/chardev.h>
#include <arch/drivers/msim.h>
#include <arch/cp0.h>
#include <console/console.h>
 
static chardev_t console;
 
77,7 → 78,7
 
 
/* Return console object representing msim console */
chardev_t * msim_console(void)
void msim_console(void)
{
chardev_initialize("msim_console", &console, &msim_ops);
 
85,5 → 86,6
 
cp0_unmask_int(MSIM_KBD_IRQ);
 
return &console;
stdin = &console;
stdout = &console;
}
/kernel/trunk/arch/ia32/include/i8042.h
42,6 → 42,9
#define SC_RIGHTARR 0x4d
#define SC_UPARR 0x48
#define SC_DOWNARR 0x50
#define SC_DELETE 0x53
#define SC_HOME 0x47
#define SC_END 0x4f
 
extern void i8042_init(void);
 
/kernel/trunk/arch/ia32/src/drivers/i8042.c
332,6 → 332,22
chardev_push_character(&kbrd, 0x5b);
chardev_push_character(&kbrd, 0x42);
break;
case SC_HOME:
chardev_push_character(&kbrd, 0x1b);
chardev_push_character(&kbrd, 0x4f);
chardev_push_character(&kbrd, 0x48);
break;
case SC_END:
chardev_push_character(&kbrd, 0x1b);
chardev_push_character(&kbrd, 0x4f);
chardev_push_character(&kbrd, 0x46);
break;
case SC_DELETE:
chardev_push_character(&kbrd, 0x1b);
chardev_push_character(&kbrd, 0x5b);
chardev_push_character(&kbrd, 0x33);
chardev_push_character(&kbrd, 0x7e);
break;
default:
letter = is_lower(ascii);
capslock = (keyflags & PRESSED_CAPSLOCK) || (lockflags & LOCKED_CAPSLOCK);