getlabel関数の引数を変更
[YACASL2.git] / include / casl2.h
index 4f933b4..e68a24e 100644 (file)
@@ -5,13 +5,16 @@
 #include <ctype.h>
 #include <assert.h>
 #include <stdbool.h>
+#include <time.h>
+
 #define ARRAYSIZE(array) (sizeof(array)/sizeof(array[0]))
 
 /* COMET IIの規格 */
 enum {
-    CMDSIZE = 4,    /* 命令の最大文字数 */    
-    REGSIZE = 8,     /* レジスタの数。COMET II規格では、8 */
-    MEMSIZE = 512    /* 主記憶の容量。COMET II規格では、65536語 */
+    CMDSIZE = 4,      /* 命令の最大文字数 */
+    REGSIZE = 8,      /* 汎用レジスタの数 */
+    DEFAULT_MEMSIZE = 512,    /* デフォルトのメモリ容量。COMET II規格では、65536語 */
+    DEFAULT_CLOCKS = 5000000, /* デフォルトのクロック周波数。COMET II規格では、未定義 */
 };
 
 /* ハッシュ値を取得する */
@@ -21,7 +24,7 @@ unsigned hash(const char *key, int size);
 typedef unsigned short WORD;
 
 /* COMET IIのメモリ */
-extern WORD memory[MEMSIZE];
+extern WORD *memory;
 
 /* COMET IIのCPUレジスタ */
 extern WORD GR[REGSIZE], SP, PR, FR;
@@ -30,7 +33,7 @@ extern WORD GR[REGSIZE], SP, PR, FR;
 enum {
     OF = 0x4,    /* Overflow Flag */
     SF = 0x2,    /* Sign Flag */
-    ZF = 0x1     /* Zero Flag */
+    ZF = 0x1,    /* Zero Flag */
 };
 
 /* エラー番号 */
@@ -54,12 +57,21 @@ extern bool srcmode;
 /* ラベル表を表示する場合はTRUE */
 extern bool labelmode;
 
+/* ラベル表を表示して終了する場合はTRUE */
+extern bool onlylabelmode;
+
 /* アセンブラ詳細結果を表示するならTRUE */
 extern bool asdetailmode;
 
 /* アセンブルだけを行う場合はTRUE */
 extern bool onlyassemblemode;
 
+/* メモリーサイズ */
+extern int memsize;
+
+/* クロック周波数 */
+extern int clocks;
+
 /* 実行開始番地 */
 extern WORD startptr;
 
@@ -82,7 +94,7 @@ typedef enum {
     R1_R2 = 020,
     ADR_X = 030,
     R_ = 040,
-    NONE = 0
+    NONE = 0,
 } CMDTYPE;
 
 typedef struct {
@@ -143,3 +155,12 @@ void freecerr();
 
 /* 指定されたファイルにアセンブル結果を書込 */
 void outassemble(char *file);
+
+/* WORD値を2進数表記に変換 */
+char *word2bit(const WORD word);
+
+/* COMET IIのメモリを表示 */
+void dumpmemory();
+
+/* COMET IIのレジスタを表示 */
+void dspregister();