32ビット論理加算のCASLプログラムaddl32を作成
[YACASL2.git] / include / exec.h
1 #ifndef YACASL2_EXEC_INCLUDED
2 #define YACASL2_EXEC_INCLUDED
3
4 /* コードから命令のパターンを取得 */
5 CMDTYPE getcmdtype(WORD code);
6
7 enum {
8     INSIZE = 256    /* CASL IIの、IN命令入力領域 */
9 };
10
11 /* 実行モード */
12 typedef struct {
13     bool tracemode;           /* レジストリの内容を表示する場合はtrue */
14     bool logicalmode;         /* レジストリの内容を論理値(0〜65535)で表示する場合はtrue */
15     bool dumpmode;            /* メモリの内容を表示する場合はtrue */
16 } EXECMODE;
17 extern EXECMODE execmode;
18
19 /* 指定されたファイルからアセンブル結果を読込 */
20 bool inassemble(char *file);
21
22 /* 標準入力から文字データを読込(SVC 1) */
23 void svcin();
24
25 /* 標準出力へ文字データを書出(SVC 2) */
26 void svcout();
27
28 /* ロード/論理積/論理和/排他的論理和のフラグ設定。OFは常に0 */
29 void setfr(WORD val);
30
31 /* 算術加算。フラグを設定して値を返す */
32 WORD adda(WORD val0, WORD val1);
33
34 /* 算術減算。フラグを設定して値を返す */
35 WORD suba(WORD val0, WORD val1);
36
37 /* 論理加算。フラグを設定して値を返す */
38 WORD addl(WORD val0, WORD val1);
39
40 /* 論理減算。フラグを設定して値を返す */
41 WORD subl(WORD val0, WORD val1);
42
43 /* 算術比較のフラグ設定。OFは常に0 */
44 void cpa(WORD val0, WORD val1);
45
46 /* 論理比較のフラグ設定。OFは常に0 */
47 void cpl(WORD val0, WORD val1);
48
49 /* 算術左シフト。フラグを設定して値を返す */
50 WORD sla(WORD val0, WORD val1);
51
52 /* 算術右シフト。フラグを設定して値を返す */
53 WORD sra(WORD val0, WORD val1);
54
55 /* 論理左シフト。フラグを設定して値を返す */
56 WORD sll(WORD val0, WORD val1);
57
58 /* 論理右シフト。フラグを設定して値を返す */
59 WORD srl(WORD val0, WORD val1);
60
61 /* 仮想マシンのリセット */
62 void reset();
63
64 /* コードの実行 */
65 void exec();
66
67 /* COMET IIのメモリを表示 */
68 void dumpmemory();
69
70 /* COMET IIのレジスタを表示 */
71 void dspregister();
72
73 #endif