Changeset af9a7c5 in mainline


Ignore:
Timestamp:
2005-12-12T15:38:44Z (19 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
93b84b3
Parents:
c0b7f00
Message:

Small kconsole readline changes.
Some mips tweaks to allow for real keyboard support in indy.

Files:
10 edited

Legend:

Unmodified
Added
Removed
  • arch/ia32/include/i8042.h

    rc0b7f00 raf9a7c5  
    4343#define SC_UPARR        0x48
    4444#define SC_DOWNARR      0x50
     45#define SC_DELETE       0x53
     46#define SC_HOME         0x47
     47#define SC_END          0x4f
    4548
    4649extern void i8042_init(void);
  • arch/ia32/src/drivers/i8042.c

    rc0b7f00 raf9a7c5  
    333333                chardev_push_character(&kbrd, 0x42);
    334334                break;
     335        case SC_HOME:
     336                chardev_push_character(&kbrd, 0x1b);
     337                chardev_push_character(&kbrd, 0x4f);
     338                chardev_push_character(&kbrd, 0x48);
     339                break;
     340        case SC_END:
     341                chardev_push_character(&kbrd, 0x1b);
     342                chardev_push_character(&kbrd, 0x4f);
     343                chardev_push_character(&kbrd, 0x46);
     344                break;
     345        case SC_DELETE:
     346                chardev_push_character(&kbrd, 0x1b);
     347                chardev_push_character(&kbrd, 0x5b);
     348                chardev_push_character(&kbrd, 0x33);
     349                chardev_push_character(&kbrd, 0x7e);
     350                break;
    335351        default:
    336352                letter = is_lower(ascii);
  • arch/mips32/include/drivers/arc.h

    rc0b7f00 raf9a7c5  
    216216extern void arc_print_devices(void);
    217217void arc_frame_init(void);
    218 chardev_t * arc_console(void);
     218void arc_console(void);
    219219
    220220#endif
  • arch/mips32/include/drivers/msim.h

    rc0b7f00 raf9a7c5  
    3737#define MSIM_KBD_IRQ    2
    3838
    39 chardev_t * msim_console(void);
     39void msim_console(void);
    4040
    4141#endif
  • arch/mips32/include/drivers/serial.h

    rc0b7f00 raf9a7c5  
    5757}serial_t;
    5858
    59 chardev_t * serial_console(void);
     59void serial_console(void);
    6060int serial_init(void);
    6161
  • arch/mips32/src/console.c

    rc0b7f00 raf9a7c5  
    3535void console_init(void)
    3636{
    37         chardev_t *console;
    38 
    3937        if (arc_enabled()) {
    40                 console = arc_console();
     38                arc_console();
    4139        } else if (serial_init()) {
    42                 console = serial_console();
     40                serial_console();
    4341        } else
    44                 console = msim_console();
    45 
    46         stdin = console;
    47         stdout = console;
     42                msim_console();
    4843}
  • arch/mips32/src/drivers/arc.c

    rc0b7f00 raf9a7c5  
    3636#include <interrupt.h>
    3737#include <align.h>
     38#include <console/console.h>
    3839
    3940/* This is a good joke, SGI HAS different types than NT bioses... */
     
    247248}
    248249
    249 
    250 chardev_t * arc_console(void)
     250void arc_console(void)
    251251{
    252252        kbd_polling_enabled = true;
     
    254254        chardev_initialize("arc_console", &console, &arc_ops);
    255255        old_timer = int_register(TIMER_IRQ, "arc_kb_poll", timer_replace);
    256         return &console;
     256        stdin = &console;
     257        stdout = &console;
    257258}
    258259
  • arch/mips32/src/drivers/msim.c

    rc0b7f00 raf9a7c5  
    3131#include <arch/drivers/msim.h>
    3232#include <arch/cp0.h>
     33#include <console/console.h>
    3334
    3435static chardev_t console;
     
    7879
    7980/* Return console object representing msim console */
    80 chardev_t * msim_console(void)
     81void msim_console(void)
    8182{
    8283        chardev_initialize("msim_console", &console, &msim_ops);
     
    8687        cp0_unmask_int(MSIM_KBD_IRQ);
    8788
    88         return &console;
     89        stdin = &console;
     90        stdout = &console;
    8991}
  • arch/mips32/src/drivers/serial.c

    rc0b7f00 raf9a7c5  
    102102}
    103103
    104 #include <print.h>
    105 chardev_t * serial_console(void)
     104void serial_console(void)
    106105{
    107106        serial_t *sd = &sconf[0];
     
    118117        old_timer = int_register(TIMER_IRQ, "serial_drvr_poll", timer_replace);
    119118       
    120 
    121         return &console;
    122        
     119        stdin = &console;
     120        stdout = &console;
    123121}
  • generic/src/console/kconsole.c

    rc0b7f00 raf9a7c5  
    239239        char *current = history[histposition];
    240240        int i;
     241        char mod; /* Command Modifier */
    241242        char c;
    242243
     
    310311                }
    311312                if (c == 0x1b) {
     313                        mod = _getc(input);
    312314                        c = _getc(input);
    313                         if (c!= 0x5b)
     315
     316                        if (mod != 0x5b && mod != 0x4f)
    314317                                continue;
    315                         c = _getc(input);
    316                         if (c == 0x44) { /* Left */
     318
     319                        if (c == 0x33 && _getc(input) == 0x7e) {
     320                                if (position == curlen)
     321                                        continue;
     322                                for (i=position+1; i<curlen;i++) {
     323                                        putchar(current[i]);
     324                                        current[i-1] = current[i];
     325                                }
     326                                putchar(' ');
     327                                rdln_print_c('\b',curlen-position);
     328                                curlen--;
     329                        }
     330                        else if (c == 0x48) { /* Home */
     331                                rdln_print_c('\b',position);
     332                                position = 0;
     333                        }
     334                        else if (c == 0x46) {
     335                                for (i=position;i<curlen;i++)
     336                                        putchar(current[i]);
     337                                position = curlen;
     338                        }
     339                        else if (c == 0x44) { /* Left */
    317340                                if (position > 0) {
    318341                                        putchar('\b');
     
    321344                                continue;
    322345                        }
    323                         if (c == 0x43) { /* Right */
     346                        else if (c == 0x43) { /* Right */
    324347                                if (position < curlen) {
    325348                                        putchar(current[position]);
     
    328351                                continue;
    329352                        }
    330                         if (c == 0x41 || c == 0x42) { /* Up,down */
     353                        else if (c == 0x41 || c == 0x42) {
     354                                /* Up,down */
    331355                                rdln_print_c('\b',position);
    332356                                rdln_print_c(' ',curlen);
Note: See TracChangeset for help on using the changeset viewer.