3 LINESIZE = 1024, /* 行の最大文字数 */
4 TOKENSIZE = 256, /* トークンの最大文字数 */
5 LABELSIZE = 8, /* ラベルの最大文字数 */
6 LABELTABSIZE = 256, /* ラベルの最大数 */
7 OPDSIZE = 40, /* オペラントの最大数 */
13 /* リテラル(=付きの値)を格納するポインタ */
19 /* アセンブラ命令とマクロ命令を表す番号 */
31 /* アセンブラ命令とマクロ命令を表す配列 */
40 typedef struct _LABELTAB {
41 struct _LABELTAB *next;
47 /* アセンブラが、1回目か、2回目か、を表す */
54 WORD getlabel(const char *label, const char *prog);
57 bool addlabel(const char *prog, const char *label, WORD word);
79 書込に成功した場合TRUE、それ以外の場合はFALSEを返す */
80 bool macrocmd(const CMDLINE *cmdl, PASS pass);
82 /* 「,」区切りの文字列から、オペランドを取得する */
83 OPD *opdtok(const char *str);
86 CMDLINE *linetok(const char *line);
88 /* 汎用レジスタを表す文字列「GR[0-7]」をWORD値に変換
89 is_xがTRUEの場合は、指標レジスタとして用いる汎用レジスタ
90 文字列が汎用レジスタを表さない場合は、0xFFFFを返す */
91 WORD getgr(const char *str, bool is_x);
94 WORD getint(const char *str);
97 WORD gethex(const char *str);
100 /* アドレスには、リテラル/10進定数/16進定数/アドレス定数が含まれる */
101 WORD getadr(const char *str, PASS pass);
103 /* 定数の前に等号(=)をつけて記述される、リテラルを返す */
104 /* リテラルには、10進定数/16進定数/文字定数が含まれる */
105 WORD getliteral(const char *str, PASS pass);
107 /* COMET IIのメモリにアドレス値を書き込む */
108 bool writememory(WORD word, WORD adr, PASS pass);
110 /* ' 'で囲まれた、文字定数をメモリに書込 */
111 /* DC命令とリテラルで使い、リテラルの場合はリテラル領域に書込 */
112 void writestr(const char *str, bool literal, PASS pass);
114 /* アセンブラ命令DCをメモリに書込 */
115 void writeDC(const char *str, PASS pass);
117 /* 命令がアセンブラ命令の場合は処理を実行する。
118 実行に成功した場合TRUE、それ以外の場合はFALSEを返す */
119 bool assemblecmd(const CMDLINE *cmdl, PASS pass);
123 WORD getcmd(CMDTYPE type, const char *cmd);
126 実行に成功した場合TRUE、それ以外の場合はFALSEを返す */
127 bool cometcmd(const CMDLINE *cmdl, PASS pass);
130 /* アセンブル完了時はTRUE、未完了時はFALSEを返す */
131 bool assembleline(const CMDLINE *cmdl, PASS pass);
133 /* 指定された名前のファイルをアセンブル */
135 bool assemble(const char *file, PASS pass);
137 /* マクロ命令「IN IBUF,LEN」をメモリに書込 */
138 bool writeIN(const char *ibuf, const char *len, PASS pass);
140 /* マクロ命令「OUT OBUF,LEN」をメモリに書込 */
141 bool writeOUT(const char *obuf, const char *len, PASS pass);
143 /* マクロ命令「RPUSH」をメモリに書込 */
144 bool writeRPUSH(PASS pass);
146 /* マクロ命令「RPOP」をメモリに書込 */
147 bool writeRPOP(PASS pass);