/* 指定されたファイルにアセンブル結果を書込 */
void outassemble(char *file);
+
+/* WORD値を2進数表記に変換 */
+char *word2bit(const WORD word);
+
+/* COMET IIのメモリを表示 */
+void dumpmemory();
+
+/* COMET IIのレジスタを表示 */
+void dspregister();
/* コードの実行 */
void exec();
-
-/* WORD値を2進数表記に変換 */
-char *word2bit(const WORD word);
-
-/* COMET IIのメモリを表示 */
-void dumpmemory();
-
-/* COMET IIのレジスタを表示 */
-void dspregister();
INCLUDE = ../include
CC = gcc
-CFLAGS = -g -Wall -I $(INCLUDE)
-COMMONSRC = struct.o cmd.o cerr.o
+CFLAGS = -Wall -I $(INCLUDE)
+COMMONSRC = struct.o cmd.o cerr.o dump.o
ASSRC = assemble.o token.o label.o macro.o
-EXECSRC = exec.o dump.o
+EXECSRC = exec.o
.PHPNY: all clean
-all: ../casl2 ../comet2 TAGS
+all: ../casl2 ../comet2 ../dumpword TAGS
../casl2: casl2.o $(COMMONSRC) $(ASSRC) $(EXECSRC)
$(CC) $(CFLAGS) -o $@ $^
../comet2: comet2.o $(COMMONSRC) $(EXECSRC)
$(CC) $(CFLAGS) -o $@ $^
+../dumpword: dumpword.o $(COMMONSRC)
+ $(CC) $(CFLAGS) -o $@ $^
%.o: %.c
$(CC) -c $(CFLAGS) $<
casl2.o comet2.o $(COMMONSRC) $(ASSRC) $(EXECSRC): $(INCLUDE)/casl2.h
casl2.o $(ASSRC): $(INCLUDE)/assemble.h
-comet2.c $(EXECSRC): $(INCLUDE)/exec.h
+comet2.o $(EXECSRC): $(INCLUDE)/exec.h
TAGS: $(INCLUDE)/*.h *.c
- @if test `which etags`; then \
- etags $^; \
- fi
+ @if test `which etags`; then etags $^; fi
clean:
@rm -f *.o
}
}
if(argv[optind] == NULL) {
- fprintf(stderr, "source file is not specified\n");
+ fprintf(stderr, "source file is not specified\n");
exit(-1);
}
/* ソースファイルが指定されていない場合は終了 */
#include "casl2.h"
-#include "exec.h"
/* WORD値を2進数表記に変換 */
char *word2bit(const WORD word)
char *bit, *p;
bit = malloc(16 + 1);
p = bit;
- while(mask > 0){
- if((word & mask) == 0) {
+ while(mask > 0){
+ if((word & mask) == 0) {
*p++ = '0';
} else {
*p++ = '1';
}
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);
}
}
/* 「文字の組」の符号表に記載された文字と、改行(CR)/タブを表示
それ以外の文字は、「.」で表す */
- if(((c = (char)(memory[GR[1]+i])) >= 0x20 && c <= 0x7E) || c == 0xA || c == '\t') {
+ if(((c = (char)(memory[GR[1]+i])) >= 0x20 && c <= 0x7E) || c == 0xA || c == '\t')
+ {
putchar(c);
} else {
putchar('.');