769b175534b5ba971dc8b75a9effbf87aa83871b
[YACASL2.git] / src / dump.c
1 #include <stdio.h>
2 #include "exec.h"
3
4 /**
5  * COMET IIのメモリを表示する
6  */
7 void dumpmemory()
8 {
9     const int col = 16;
10     int i;
11     /* Header */
12     fprintf(stdout, "#%04X: adr :", sys->cpu->pr);
13     for(i = 0; i < sys->memsize && i < col; i++) {
14         fprintf(stdout, " %04X", i);
15     }
16     fprintf(stdout, "\n");
17     /* Memory */
18     for(i = 0; i < sys->memsize; i++) {
19         if(i % col == 0) {
20             fprintf(stdout, "#%04X: %04X: ", sys->cpu->pr, i);
21         }
22         fprintf(stdout, "%04X", (sys->memory)[i]);
23         if(i > 0 && (i + 1) % col == 0) {
24             fprintf(stdout, "\n");
25         } else {
26             fprintf(stdout, " ");
27         }
28     }
29 }
30
31 /**
32  * COMET IIのレジスタを表示する
33  */
34 void dspregister()
35 {
36     int i;
37     for(i = 0; i < GRSIZE; i++ ) {
38         fprintf(stdout, "#%04X: GR%d: ", sys->cpu->pr, i);
39         print_dumpword(sys->cpu->gr[i], (&execmode)->logical);
40     }
41     fprintf(stdout, "#%04X: SP:  %6d = #%04X = %s\n",
42             sys->cpu->pr, sys->cpu->sp, sys->cpu->sp, word2bit(sys->cpu->sp));
43     fprintf(stdout, "#%04X: PR:  %6d = #%04X = %s\n",
44             sys->cpu->pr, sys->cpu->pr, sys->cpu->pr, word2bit(sys->cpu->pr));
45     fprintf(stdout, "#%04X: FR (OF SF ZF): %s\n",
46             sys->cpu->pr, (word2bit(sys->cpu->fr)+13));
47 }