X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=src%2Fcomet2.c;h=a3fc2a061f294b802cbb4e86f40f6567ad473705;hp=bfe1634a7d8c91ad0305c25be73d7ab9d7a13a71;hb=285d44a446b45fa1a5ac66617b6920bc7ba81fa6;hpb=ccc3acda4256e10a822e41e84f6c9991271c2f61 diff --git a/src/comet2.c b/src/comet2.c index bfe1634..a3fc2a0 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,11 +15,9 @@ static struct option longopts[] = { {0, 0, 0, 0} }; -EXECMODE execmode = {false, false, false}; - /* エラー番号とエラーメッセージ */ CERRARRAY cerr[] = { - { 201, "execute - out of COMET II memory" }, + { 201, "Load object file - full of COMET II memory" }, { 202, "SVC input - out of Input memory" }, { 203, "SVC output - out of COMET II memory" }, { 204, "Program Register (PR) - 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) {