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); } } }