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