add: break; case '\a':  dprintf("<BEEP>\n");
context: _console_write(struct console_desc *con, const void *buf, size_t len){	const char *c;	size_t pos = 0;	while (pos < len) {		c = &((const char *)buf)[pos++];		switch (con->state) {			case CONSOLE_STATE_NORMAL:				// just output the stuff				switch (*c) {					case '\n':						lf(con);						break;					case '\r':						cr(con);						break;					case 0x8: // backspace						del(con);						break;					case '\t':						tab(con);						break;					case '\0':						break;					case 0x1b:						// escape character						con->arg_ptr = -1;						con->state = CONSOLE_STATE_GOT_ESCAPE;						break;					default:						console_putch(con, *c);				}				break;			case CONSOLE_STATE_GOT_ESCAPE:				// look for either commands with no argument, or the '[' character				switch (*c) {					case '[':						con->state = CONSOLE_STATE_SEEN_BRACKET;						break;					default:						con->args[con->arg_ptr] = 0;						process_vt100_command(con, *c, false, con->args, con->arg_ptr + 1);						con->state = CONSOLE_STATE_NORMAL;				}				break;			case CONSOLE_STATE_SEEN_BRACKET:				switch (*c) {					case '0'...'9':						con->arg_ptr = 0;						con->args[con->arg_ptr] = *c - '0';						con->state = CONSOLE_STATE_PARSING_ARG;						break;					case '?':						// private DEC mode parameter follows - we ignore those anyway						// ToDo: check if it was really used in combination with a mode command						break;					default:						process_vt100_command(con, *c, true, con->args, con->arg_ptr + 1);						con->state = CONSOLE_STATE_NORMAL;				}				break;			case CONSOLE_STATE_NEW_ARG:				switch (*c) {					case '0'...'9':						con->arg_ptr++;						if (con->arg_ptr == MAX_ARGS) {							con->state = CONSOLE_STATE_NORMAL;							break;						}						con->args[con->arg_ptr] = *c - '0';						con->state = CONSOLE_STATE_PARSING_ARG;						break;					default:						process_vt100_command(con, *c, true, con->args, con->arg_ptr + 1);						con->state = CONSOLE_STATE_NORMAL;				}				break;			case CONSOLE_STATE_PARSING_ARG:				// parse args				switch (*c) {					case '0'...'9':						con->args[con->arg_ptr] *= 10;						con->args[con->arg_ptr] += *c - '0';						break;					case ';':						con->state = CONSOLE_STATE_NEW_ARG;						break;					default:						process_vt100_command(con, *c, true, con->args, con->arg_ptr + 1);						con->state = CONSOLE_STATE_NORMAL;				}			}	}	return pos;}