6 static void do_cmd(u16 cmd, u16 r[6], u32 is_slave)
15 v = read16(&r[4/2]) ^ (is_slave << 15);
59 void main_c(u32 is_slave)
61 u16 *r = (u16 *)0x20004000;
68 cmd = read16(&r[0x20/2]);
70 cmdr = read16(&r[0x20/2]);
72 || cmd != cmdr // documented as "normal" case
73 || ((cmd & 0x8000) ^ (is_slave << 15))
74 || cmd == 0x4d5f) { // 'M_' from BIOS
79 do_cmd(cmd, &r[0x20/2], is_slave);
80 write16(&r[0x20/2], 0);
84 // vim:ts=4:sw=4:expandtab