diff options
Diffstat (limited to 'fxstest.c')
-rwxr-xr-x | fxstest.c | 22 |
1 files changed, 16 insertions, 6 deletions
@@ -66,21 +66,31 @@ int main(int argc, char *argv[]) } } else if (!strcasecmp(argv[2], "regdump")) { struct wcfxs_regs regs; + int numregs = NUM_REGS; + memset(®s, 0, sizeof(regs)); res = ioctl(fd, WCFXS_GET_REGS, ®s); if (res) { fprintf(stderr, "Unable to get registers on channel %s\n", argv[1]); } else { + for (x=60;x<NUM_REGS;x++) { + if (regs.direct[x]) + break; + } + if (x == NUM_REGS) + numregs = 60; printf("Direct registers: \n"); - for (x=0;x<NUM_REGS;x++) { + for (x=0;x<numregs;x++) { printf("%3d. %02x ", x, regs.direct[x]); if ((x % 8) == 7) printf("\n"); } - printf("\n\nIndirect registers: \n"); - for (x=0;x<NUM_INDIRECT_REGS;x++) { - printf("%3d. %04x ", x, regs.indirect[x]); - if ((x % 6) == 5) - printf("\n"); + if (numregs == NUM_REGS) { + printf("\n\nIndirect registers: \n"); + for (x=0;x<NUM_INDIRECT_REGS;x++) { + printf("%3d. %04x ", x, regs.indirect[x]); + if ((x % 6) == 5) + printf("\n"); + } } printf("\n\n"); } |