X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fcomet2.c;h=ba26cf68475ace7c184772c920349a281fe94e06;hb=7bfb6d78ba07ac3613107e88578ab7c3daee2cc3;hp=bfe1634a7d8c91ad0305c25be73d7ab9d7a13a71;hpb=ccc3acda4256e10a822e41e84f6c9991271c2f61;p=YACASL2.git diff --git a/src/comet2.c b/src/comet2.c index bfe1634..ba26cf6 100644 --- a/src/comet2.c +++ b/src/comet2.c @@ -3,6 +3,7 @@ #define _GNU_SOURCE #include +/* comet2コマンドのオプション */ static struct option longopts[] = { {"trace", no_argument, NULL, 't'}, {"tracearithmetic", no_argument, NULL, 't'}, @@ -14,8 +15,6 @@ static struct option longopts[] = { {0, 0, 0, 0} }; -EXECMODE execmode = {false, false, false}; - /* エラー番号とエラーメッセージ */ CERRARRAY cerr[] = { { 201, "execute - out of COMET II memory" }, @@ -29,14 +28,13 @@ CERRARRAY cerr[] = { }; /* 指定されたファイルからアセンブル結果を読込 */ -bool inassemble(char *file) { +bool loadassemble(char *file) { FILE *fp; - reset(); if((fp = fopen(file, "r")) == NULL) { perror(file); return false; } - fread(memory, sizeof(WORD), memsize, fp); + endptr = startptr + fread(memory, sizeof(WORD), memsize, fp); fclose(fp); return true; } @@ -50,14 +48,14 @@ int main(int argc, char *argv[]) while((opt = getopt_long(argc, argv, "tTdM:C:h", longopts, NULL)) != -1) { switch(opt) { case 't': - (&execmode)->tracemode = true; + (&execmode)->trace = true; break; case 'T': - (&execmode)->tracemode = true; - (&execmode)->logicalmode = true; + (&execmode)->trace = true; + (&execmode)->logical = true; break; case 'd': - (&execmode)->dumpmode = true; + (&execmode)->dump = true; break; case 'M': memsize = atoi(optarg); @@ -73,7 +71,9 @@ int main(int argc, char *argv[]) exit(-1); } } - if(inassemble(argv[optind]) == true) { + reset(); + startptr = 0; + if(loadassemble(argv[optind]) == true) { exec(); /* プログラム実行 */ } if(cerrno > 0) {