projects
/
YACASL2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ハッシュ関数を共用体版にし、ラベルの範囲をプログラム内だけで有効に
[YACASL2.git]
/
include
/
casl2.h
diff --git
a/include/casl2.h
b/include/casl2.h
index
70e25c5
..
fde1207
100644
(file)
--- a/
include/casl2.h
+++ b/
include/casl2.h
@@
-6,6
+6,7
@@
#include <assert.h>
#include <stdbool.h>
#include <time.h>
#include <assert.h>
#include <stdbool.h>
#include <time.h>
+#include "hash.h"
#define ARRAYSIZE(array) (sizeof(array)/sizeof(array[0]))
#define ARRAYSIZE(array) (sizeof(array)/sizeof(array[0]))
@@
-13,18
+14,15
@@
enum {
CMDSIZE = 4, /* 命令の最大文字数 */
REGSIZE = 8, /* 汎用レジスタの数 */
enum {
CMDSIZE = 4, /* 命令の最大文字数 */
REGSIZE = 8, /* 汎用レジスタの数 */
-
MEMSIZE = 512, /*
メモリ容量。COMET II規格では、65536語 */
-
CLOCKS = 5000000 /*
クロック周波数。COMET II規格では、未定義 */
+
DEFAULT_MEMSIZE = 512, /* デフォルトの
メモリ容量。COMET II規格では、65536語 */
+
DEFAULT_CLOCKS = 5000000, /* デフォルトの
クロック周波数。COMET II規格では、未定義 */
};
};
-/* ハッシュ値を取得する */
-unsigned hash(const char *key, int size);
-
/* COMET IIの基本データサイズ */
typedef unsigned short WORD;
/* COMET IIのメモリ */
/* COMET IIの基本データサイズ */
typedef unsigned short WORD;
/* COMET IIのメモリ */
-extern WORD
memory[MEMSIZE]
;
+extern WORD
*memory
;
/* COMET IIのCPUレジスタ */
extern WORD GR[REGSIZE], SP, PR, FR;
/* COMET IIのCPUレジスタ */
extern WORD GR[REGSIZE], SP, PR, FR;
@@
-33,7
+31,7
@@
extern WORD GR[REGSIZE], SP, PR, FR;
enum {
OF = 0x4, /* Overflow Flag */
SF = 0x2, /* Sign Flag */
enum {
OF = 0x4, /* Overflow Flag */
SF = 0x2, /* Sign Flag */
- ZF = 0x1
/* Zero Flag */
+ ZF = 0x1
,
/* Zero Flag */
};
/* エラー番号 */
};
/* エラー番号 */
@@
-57,12
+55,21
@@
extern bool srcmode;
/* ラベル表を表示する場合はTRUE */
extern bool labelmode;
/* ラベル表を表示する場合はTRUE */
extern bool labelmode;
+/* ラベル表を表示して終了する場合はTRUE */
+extern bool onlylabelmode;
+
/* アセンブラ詳細結果を表示するならTRUE */
extern bool asdetailmode;
/* アセンブルだけを行う場合はTRUE */
extern bool onlyassemblemode;
/* アセンブラ詳細結果を表示するならTRUE */
extern bool asdetailmode;
/* アセンブルだけを行う場合はTRUE */
extern bool onlyassemblemode;
+/* メモリーサイズ */
+extern int memsize;
+
+/* クロック周波数 */
+extern int clocks;
+
/* 実行開始番地 */
extern WORD startptr;
/* 実行開始番地 */
extern WORD startptr;
@@
-85,7
+92,7
@@
typedef enum {
R1_R2 = 020,
ADR_X = 030,
R_ = 040,
R1_R2 = 020,
ADR_X = 030,
R_ = 040,
- NONE = 0
+ NONE = 0
,
} CMDTYPE;
typedef struct {
} CMDTYPE;
typedef struct {
@@
-146,3
+153,12
@@
void freecerr();
/* 指定されたファイルにアセンブル結果を書込 */
void outassemble(char *file);
/* 指定されたファイルにアセンブル結果を書込 */
void outassemble(char *file);
+
+/* WORD値を2進数表記に変換 */
+char *word2bit(const WORD word);
+
+/* COMET IIのメモリを表示 */
+void dumpmemory();
+
+/* COMET IIのレジスタを表示 */
+void dspregister();