dumpwordコマンド実行時やレジスタの内容を表示するときに、対応する文字を表示するよう仕様変更
[YACASL2.git] / src / dump.c
index 2c77520..c1184be 100644 (file)
@@ -1,25 +1,6 @@
 #include "casl2.h"
 #include "exec.h"
 
-/* WORD値を2進数表記に変換 */
-char *word2bit(const WORD word)
-{
-    WORD mask = 0x8000;
-    char *bit, *p;
-    bit = malloc(16 + 1);
-    p = bit;
-       while(mask > 0){
-           if((word & mask) == 0) {
-            *p++ = '0';
-        } else {
-            *p++ = '1';
-        }
-        mask = (mask >> 1);
-    }
-    *p = '\0';
-    return bit;
-}
-
 /* COMET IIのメモリを表示 */
 void dumpmemory()
 {
@@ -32,7 +13,7 @@ void dumpmemory()
     }
     fprintf(stdout, "\n");
     /* Memory */
-    for(i = 0; i < MEMSIZE; i++) {
+    for(i = 0; i < memsize; i++) {
         if(i % col == 0) {
             fprintf(stdout, "#%04X: %04X: ", PR, i);
         }
@@ -50,13 +31,8 @@ void dspregister()
 {
     int i;
     for(i = 0; i < REGSIZE; i++ ) {
-        if(logicalmode == true) {
-            fprintf(stdout, "#%04X: GR%d: %6d = #%04X = %s\n",
-                    PR, i, GR[i], GR[i], word2bit(GR[i]));
-        } else {
-            fprintf(stdout, "#%04X: GR%d: %6d = #%04X = %s\n",
-                    PR, i, (short)GR[i], GR[i], word2bit(GR[i]));
-        }
+        fprintf(stdout, "#%04X: GR%d: ", PR, i);
+        print_dumpword(GR[i], (&execmode)->logicalmode);
     }
     fprintf(stdout, "#%04X: SP:  %6d = #%04X = %s\n", PR, SP, SP, word2bit(SP));
     fprintf(stdout, "#%04X: PR:  %6d = #%04X = %s\n", PR, PR, PR, word2bit(PR));