X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=src%2Fdump.c;h=858235beac0f6b1966d95877c67a915c9b9f9087;hp=51650c975c3a6367840c9a353724603ee95a8e21;hb=86e559d164166966a797a1e5855871d48e087ddd;hpb=35b868db3738c0df22ae6abb4aaf563ef0e3bcf2 diff --git a/src/dump.c b/src/dump.c index 51650c9..858235b 100644 --- a/src/dump.c +++ b/src/dump.c @@ -1,24 +1,32 @@ -#include "casl2.h" #include "exec.h" -/* COMET IIのメモリを表示 */ -void dumpmemory() +/* exec.hに定義された関数群 */ +void dumpmemory(WORD start, WORD end) { - const int col = 16; - int i; + const WORD col = 0x10; + WORD i, j, mod = 0x0; /* Header */ - fprintf(stdout, "#%04X: adr :", PR); - for(i = 0; i < memsize && i < col; i++) { + fprintf(stdout, "#%04X: adr :", sys->cpu->pr); + if(end > sys->memsize) { + end = sys->memsize; + } + for(i = 0; i < sys->memsize && i < col; i++) { fprintf(stdout, " %04X", i); } fprintf(stdout, "\n"); + fprintf(stdout, " -------------------------------------------------------------------------------------\n"); /* Memory */ - for(i = 0; i < memsize; i++) { - if(i % col == 0) { - fprintf(stdout, "#%04X: %04X: ", PR, i); + for(i = start; i < end; i++) { + if((mod = i % col) == 0 || i == start) { + fprintf(stdout, "#%04X: %04X: ", sys->cpu->pr, i); + } + if(i == start) { + for(j = 0; j < mod; j++) { + fprintf(stdout, " "); + } } - fprintf(stdout, "%04X", memory[i]); - if(i > 0 && (i + 1) % col == 0) { + fprintf(stdout, "%04X", (sys->memory)[i]); + if((i > 0 && (i + 1) % col == 0) || (i + 1) == end) { fprintf(stdout, "\n"); } else { fprintf(stdout, " "); @@ -26,15 +34,24 @@ void dumpmemory() } } -/* COMET IIのレジスタを表示 */ void dspregister() { - int i; - for(i = 0; i < REGSIZE; i++ ) { - fprintf(stdout, "#%04X: GR%d: ", PR, i); - print_dumpword(GR[i], (&execmode)->logical); + char *sp = NULL; + char *pr = NULL; + char *fr = NULL; + for(int i = 0; i < GRSIZE; i++ ) { + fprintf(stdout, "#%04X: GR%d: ", sys->cpu->pr, i); + print_dumpword(sys->cpu->gr[i], execmode.logical); + fprintf(stdout, "\n"); } - 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, sp = word2bit(sys->cpu->sp)); + fprintf(stdout, "#%04X: PR: %6d = #%04X = %s\n", + sys->cpu->pr, sys->cpu->pr, sys->cpu->pr, pr = word2bit(sys->cpu->pr)); + fprintf(stdout, "#%04X: FR (OF SF ZF): %s\n", + sys->cpu->pr, ((fr = word2bit(sys->cpu->fr)) + 13)); /* FRは末尾3けたを表示 */ + + FREE(sp); + FREE(pr); + FREE(fr); }