示例#1
0
文件: main.c 项目: Digmaster/Nunya
int kernel_main() {
    graphics_init();
    console_init();

    console_printf("video: %d x %d\n", video_xres, video_yres, video_xbytes);
    console_printf("kernel: %d bytes\n", kernel_size);

    memory_init();
    interrupt_init();
    rtc_init();
    clock_init();
    keyboard_init();

    /*
    process_init() is a big step.  This initializes the process table, but also gives us our own process structure, private stack, and enables paging.  Now we can do complex things like wait upon events.
    */
    process_init();

    mouse_init();
    ata_init();

    console_printf("\nNUNYA READY:\n");

    cmd_line_init();

    while(1) {
        cmd_line_show_prompt();
        cmd_line_attempt(keyboard_read_str());
    }

    return 0;
}
void cmd_line_test(void)
{
    // Initialise modules
    uart0_init(115200,8,UART0_NO_PARITY,1);
    printf_init();

    // Enable global interrupts
    sei();    

    // Initialise command line parser and VT100 terminal helper
	vt100_init(&main_put_char);
    cmd_line_init(&main_put_char);

    cmd_line_add      (&cmd_line_led,                  "led",&cmd_line_handler_led,    "display status of led");
    cmd_line_add_child(&cmd_line_led,&cmd_line_led_on, "on", &cmd_line_handler_led_on, "switch led on"        );
    cmd_line_add_child(&cmd_line_led,&cmd_line_led_off,"off",&cmd_line_handler_led_off,"switch led off"       );

    PRINTF("\nCommand Line test\n\n");

    for(;;)
    {
        // Pass all received data to command line parser
        if(uart0_get_rx_byte(&data))
        {
            cmd_line_process(data);
        }        
    }
}