eaa69a97f43b52074ecf708d3139b502ed128b8a
[megadrive.git] / testpico / sh2_main.c
1 #include "common.h"
2
3 void spin(int loops);
4
5 void main_c(u32 is_slave)
6 {
7     u16 v, *r = (u16 *)0x20004000;
8
9     for (;;)
10     {
11         u16 cmd;
12
13         mem_barrier();
14         cmd = read16(&r[0x20/2]);
15         if ((cmd & 0x8000) ^ (is_slave << 15)) {
16             spin(64);
17             continue;
18         }
19         cmd &= 0x7fff;
20         switch (cmd)
21         {
22         case 0:
23         case 0x4d5f:    // 'M_' from BIOS
24         case 0x535f:    // 'S_' from BIOS
25             spin(64);
26             continue;
27         case CMD_ECHO:
28             v = read16(&r[0x22/2]) ^ (is_slave << 15);
29             write16(&r[0x24/2], v);
30             break;
31         }
32         write16(&r[0x20/2], 0);
33     }
34 }
35
36 // vim:ts=4:sw=4:expandtab