- if (len > 0) {
- len--;
- switch (*msg++) {
- case 0: /* init functions */
- do_msg_init(len, msg);
- break;
- case 1: /* character i/o functions */
- do_msg_char(len, msg);
- break;
- default:
- /* no more functions definded yet*/
- break;
+ if (len >= 2) {
+ fct = *msg++;
+ sub_fct = *msg++;
+ len -= 2;
+
+ while (fct != z80_messages[i].fct)
+ ++i;
+
+ if (z80_messages[i].fct == 0xff) {
+ DBG_P(1, "do_message: Unknown function: %i, %i\n",
+ fct, sub_fct);
+ return; /* TODO: unknown message # */
+ }
+
+ while (fct == z80_messages[i].fct) {
+ if (sub_fct >= z80_messages[i].sub_min && sub_fct <= z80_messages[i].sub_max )
+ break;
+ ++i;