デバッガー機能の実装
[YACASL2.git] / src / dump.c
1 #include "exec.h"
2
3 /* exec.hに定義された関数群 */
4 void dumpmemory()
5 {
6     const int col = 16;
7     int i;
8     /* Header */
9     fprintf(stdout, "#%04X: adr :", sys->cpu->pr);
10     for(i = 0; i < sys->memsize && i < col; i++) {
11         fprintf(stdout, " %04X", i);
12     }
13     fprintf(stdout, "\n");
14     /* Memory */
15     for(i = 0; i < sys->memsize; i++) {
16         if(i % col == 0) {
17             fprintf(stdout, "#%04X: %04X: ", sys->cpu->pr, i);
18         }
19         fprintf(stdout, "%04X", (sys->memory)[i]);
20         if(i > 0 && (i + 1) % col == 0) {
21             fprintf(stdout, "\n");
22         } else {
23             fprintf(stdout, " ");
24         }
25     }
26 }
27
28 void dspregister()
29 {
30     int i;
31     char *sp, *pr, *fr;
32     for(i = 0; i < GRSIZE; i++ ) {
33         fprintf(stdout, "#%04X: GR%d: ", sys->cpu->pr, i);
34         print_dumpword(sys->cpu->gr[i], (&execmode)->logical);
35         fprintf(stdout, "\n");
36     }
37     fprintf(stdout, "#%04X: SP:  %6d = #%04X = %s\n",
38             sys->cpu->pr, sys->cpu->sp, sys->cpu->sp, sp = word2bit(sys->cpu->sp));
39     fprintf(stdout, "#%04X: PR:  %6d = #%04X = %s\n",
40             sys->cpu->pr, sys->cpu->pr, sys->cpu->pr, pr = word2bit(sys->cpu->pr));
41     fprintf(stdout, "#%04X: FR (OF SF ZF): %s\n",
42             sys->cpu->pr, ((fr = word2bit(sys->cpu->fr)) + 13));
43
44     FREE(sp);
45     FREE(pr);
46     FREE(fr);
47 }