X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=megaed-sv%2Fmain.c;h=4473c5c68fb21614ced19f15e93f9a454485c422;hb=eea25dd137e6a818db0a31e35cd57090c47dff08;hp=d693dff766890132d1d55811a4610100628184d8;hpb=ad997e79ff04ae183ff6acf7c018324a76af8211;p=megadrive.git diff --git a/megaed-sv/main.c b/megaed-sv/main.c index d693dff..4473c5c 100644 --- a/megaed-sv/main.c +++ b/megaed-sv/main.c @@ -386,13 +386,15 @@ static void test_joy_latency(int *min_out, int *max_out) static int do_test(OsRoutine *ed, u8 b3) { int min = 0, max = 0; + int i, t, len, seed; + u8 *p, v; switch (b3) { case '0': printf("reading..\n"); - test_joy_read_log((void *)0x200000, 0x20000); - //test_joy_read_log((void *)0xff0200, 0x0f000); + test_joy_read_log((void *)0x200000, 0x20000, 1); + //test_joy_read_log((void *)0xff0200, 0x0f000, 1); printf("done\n"); return 0; case '1': @@ -400,6 +402,47 @@ static int do_test(OsRoutine *ed, u8 b3) test_joy_read_log_vsync((void *)0x200000, 3600 * 2); printf("done\n"); return 0; + case '2': + case '3': + printf("3btn_idle test..\n"); + p = (void *)0x200000; + len = 0x20000; + test_joy_read_log(p, len, b3 == '3'); + for (i = 0; i < len; i++) { + static const u8 e[2] = { 0x33, 0x7f }; + v = e[i & 1]; + if (p[i] != v) + printf("%06x: bad: %02x %02x\n", &p[i], p[i], v); + } + printf("done\n"); + return 0; + case '4': + printf("3btn_idle data test..\n"); + p = (void *)0x200000; + len = 0x20000; + for (i = 0; i < len; i++) { + static const u8 e[2] = { 0x33, 0x7f }; + v = e[i & 1]; + if (p[i] != v) + printf("%06x: bad: %02x %02x\n", &p[i], p[i], v); + } + printf("done\n"); + return 0; + case '5': + seed = read8(0xC00009); + printf("testing, seed=%02x\n", seed); + p = (void *)0x200000; + len = 0x100000; + test_byte_write(p, len, seed); + for (t = 0; t < 2; t++) { + for (i = 0; i < len; i++) { + v = (u8)(i + seed); + if (p[i] != v) + printf("%06x: bad: %02x %02x\n", &p[i], p[i], v); + } + printf("done (%d)\n", t); + } + return 0; case 'j': test_joy_latency(&min, &max); printf("latency: %d - %d\n\n", min, max); @@ -518,12 +561,16 @@ int main() printf("\n"); printf("version: %02x, start_hvc: %04x\n", read8(0xa10001), start_hvc); - printf("ED os/fw: %x/%x\n\n", ed->osGetOsVersion(), + printf("ED os/fw: %d/%d\n\n", ed->osGetOsVersion(), ed->osGetFirmVersion()); for (;;) { if (!ed->usbRdReady()) { - asm volatile("stop #0x2000"); + /* note: stop corrupts SDRAM */ + //asm volatile("stop #0x2000"); + asm volatile( + "move.l #1000/10, %0\n" + "0: dbra %0, 0b\n" : "=r" (i) :: "cc"); continue; }