X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=src%2Fdump.c;h=769b175534b5ba971dc8b75a9effbf87aa83871b;hp=2c77520a6c1e070d1f14b4bb31d08f41a768bf18;hb=7f7bde5dd1305cfc598fe09030c69aad0dc01368;hpb=44cde08e6cf148928a219593c78a57abfd89b424 diff --git a/src/dump.c b/src/dump.c index 2c77520..769b175 100644 --- a/src/dump.c +++ b/src/dump.c @@ -1,42 +1,25 @@ -#include "casl2.h" +#include #include "exec.h" -/* WORD値を2進数表記に変換 */ -char *word2bit(const WORD word) -{ - WORD mask = 0x8000; - char *bit, *p; - bit = malloc(16 + 1); - p = bit; - while(mask > 0){ - if((word & mask) == 0) { - *p++ = '0'; - } else { - *p++ = '1'; - } - mask = (mask >> 1); - } - *p = '\0'; - return bit; -} - -/* COMET IIのメモリを表示 */ +/** + * COMET IIのメモリを表示する + */ void dumpmemory() { const int col = 16; int i; /* Header */ - fprintf(stdout, "#%04X: adr :", PR); - for(i = 0; i < col; i++) { + fprintf(stdout, "#%04X: adr :", sys->cpu->pr); + for(i = 0; i < sys->memsize && i < col; i++) { fprintf(stdout, " %04X", i); } fprintf(stdout, "\n"); /* Memory */ - for(i = 0; i < MEMSIZE; i++) { + for(i = 0; i < sys->memsize; i++) { if(i % col == 0) { - fprintf(stdout, "#%04X: %04X: ", PR, i); + fprintf(stdout, "#%04X: %04X: ", sys->cpu->pr, i); } - fprintf(stdout, "%04X", memory[i]); + fprintf(stdout, "%04X", (sys->memory)[i]); if(i > 0 && (i + 1) % col == 0) { fprintf(stdout, "\n"); } else { @@ -45,20 +28,20 @@ void dumpmemory() } } -/* COMET IIのレジスタを表示 */ +/** + * COMET IIのレジスタを表示する + */ void dspregister() { int i; - for(i = 0; i < REGSIZE; i++ ) { - if(logicalmode == true) { - fprintf(stdout, "#%04X: GR%d: %6d = #%04X = %s\n", - PR, i, GR[i], GR[i], word2bit(GR[i])); - } else { - fprintf(stdout, "#%04X: GR%d: %6d = #%04X = %s\n", - PR, i, (short)GR[i], GR[i], word2bit(GR[i])); - } + for(i = 0; i < GRSIZE; i++ ) { + fprintf(stdout, "#%04X: GR%d: ", sys->cpu->pr, i); + print_dumpword(sys->cpu->gr[i], (&execmode)->logical); } - fprintf(stdout, "#%04X: SP: %6d = #%04X = %s\n", PR, SP, SP, word2bit(SP)); - fprintf(stdout, "#%04X: PR: %6d = #%04X = %s\n", PR, PR, PR, word2bit(PR)); - fprintf(stdout, "#%04X: FR (OF SF ZF): %s\n", PR, (word2bit(FR)+13)); + fprintf(stdout, "#%04X: SP: %6d = #%04X = %s\n", + sys->cpu->pr, sys->cpu->sp, sys->cpu->sp, word2bit(sys->cpu->sp)); + fprintf(stdout, "#%04X: PR: %6d = #%04X = %s\n", + sys->cpu->pr, sys->cpu->pr, sys->cpu->pr, word2bit(sys->cpu->pr)); + fprintf(stdout, "#%04X: FR (OF SF ZF): %s\n", + sys->cpu->pr, (word2bit(sys->cpu->fr)+13)); }