ソースの推敲
[YACASL2.git] / src / dump.c
index 858235b..19f429d 100644 (file)
@@ -4,28 +4,29 @@
 void dumpmemory(WORD start, WORD end)
 {
     const WORD col = 0x10;
-    WORD i, j, mod = 0x0;
+    WORD mod = 0;
     /* Header */
     fprintf(stdout, "#%04X: adr :", sys->cpu->pr);
     if(end > sys->memsize) {
         end = sys->memsize;
     }
-    for(i = 0; i < sys->memsize && i < col; i++) {
+    for(int i = 0; i < sys->memsize && i < col; i++) {
         fprintf(stdout, " %04X", i);
     }
     fprintf(stdout, "\n");
     fprintf(stdout, "       -------------------------------------------------------------------------------------\n");
     /* Memory */
-    for(i = start; i < end; i++) {
-        if((mod = i % col) == 0 || i == start) {
+    for(int i = start; i < end; i++) {
+        mod = i % col;
+        if(mod == 0 || i == start) {
             fprintf(stdout, "#%04X: %04X: ", sys->cpu->pr, i);
         }
         if(i == start) {
-            for(j = 0; j < mod; j++) {
+            for(int j = 0; j < mod; j++) {
                 fprintf(stdout, "     ");
             }
         }
-        fprintf(stdout, "%04X", (sys->memory)[i]);
+        fprintf(stdout, "%04X", sys->memory[i]);
         if((i > 0 && (i + 1) % col == 0) || (i + 1) == end) {
             fprintf(stdout, "\n");
         } else {
@@ -36,21 +37,20 @@ void dumpmemory(WORD start, WORD end)
 
 void dspregister()
 {
-    char *sp = NULL;
-    char *pr = NULL;
-    char *fr = NULL;
+    char *sp = word2bit(sys->cpu->sp);
+    char *pr = word2bit(sys->cpu->pr);
+    char *fr = word2bit(sys->cpu->fr);
+    enum {
+        L3BIT = 16 - 3,     /* WORD値16ビットのうち、下位3ビットの開始位置 */
+    };
     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",
-            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けたを表示 */
-
+    fprintf(stdout, "#%04X: SP:  %6d = #%04X = %s\n", sys->cpu->pr, sys->cpu->sp, sys->cpu->sp, sp);
+    fprintf(stdout, "#%04X: PR:  %6d = #%04X = %s\n", sys->cpu->pr, sys->cpu->pr, sys->cpu->pr, pr);
+    fprintf(stdout, "#%04X: FR (OF SF ZF): %s\n", sys->cpu->pr, fr + L3BIT); /* FRは下位3けたを表示 */
     FREE(sp);
     FREE(pr);
     FREE(fr);