d00d2743fb1f9000d5fdf1cadc5cc66640889770
[YACASL2.git] / src / dump.c
1 #include "exec.h"
2
3 /* exec.hに定義された関数群 */
4 void dumpmemory(WORD start, WORD end)
5 {
6     const WORD col = 0x10;
7     WORD i, j, mod = 0x0;
8     /* Header */
9     fprintf(stdout, "#%04X: adr :", sys->cpu->pr);
10     if(end > sys->memsize) {
11         end = sys->memsize;
12     }
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 = start; i < end; i++) {
19         if((mod = i % col) == 0 || i == start) {
20             fprintf(stdout, "#%04X: %04X: ", sys->cpu->pr, i);
21         }
22         if(i == start) {
23             for(j = 0; j < mod; j++) {
24                 fprintf(stdout, "     ");
25             }
26         }
27         fprintf(stdout, "%04X", (sys->memory)[i]);
28         if((i > 0 && (i + 1) % col == 0) || (i + 1) == end) {
29             fprintf(stdout, "\n");
30         } else {
31             fprintf(stdout, " ");
32         }
33     }
34 }
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         fprintf(stdout, "\n");
44     }
45     fprintf(stdout, "#%04X: SP:  %6d = #%04X = %s\n",
46             sys->cpu->pr, sys->cpu->sp, sys->cpu->sp, sp = word2bit(sys->cpu->sp));
47     fprintf(stdout, "#%04X: PR:  %6d = #%04X = %s\n",
48             sys->cpu->pr, sys->cpu->pr, sys->cpu->pr, pr = word2bit(sys->cpu->pr));
49     fprintf(stdout, "#%04X: FR (OF SF ZF): %s\n",
50             sys->cpu->pr, ((fr = word2bit(sys->cpu->fr)) + 13));
51
52     FREE(sp);
53     FREE(pr);
54     FREE(fr);
55 }