From: j8takagi Date: Wed, 27 Feb 2019 04:11:36 +0000 (+0900) Subject: Merge branch 'master' X-Git-Tag: v0.5p9~4^2~1 X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=commitdiff_plain;h=a7982d41c9809fdddbc5bac27c9d08b8a9d05012;hp=-c Merge branch 'master' --- a7982d41c9809fdddbc5bac27c9d08b8a9d05012 diff --combined include/assemble.h index a730d16,154f8e1..e5c1427 --- a/include/assemble.h +++ b/include/assemble.h @@@ -9,7 -9,11 +9,7 @@@ #include #include #include "cerr.h" -#include "cmem.h" -#include "exec.h" -#include "hash.h" #include "struct.h" -#include "word.h" #include "token.h" /** @@@ -138,13 -142,13 +138,13 @@@ bool assemblefile(const char *file, PAS /** * @brief 指定された1つまたは複数のファイルを2回アセンブル * - * @return なし + * @return アセンブル完了時はtrue、エラー発生時はfalseを返す * * @param filec アセンブルするファイルの数 * @param filev アセンブルするファイル名の配列 * @param adr アセンブル結果を格納するアドレス */ - void assemble(int filec, char *filev[], WORD adr); + bool assemble(int filec, char *filev[], WORD adr); /** * @brief ファイルにアセンブル結果を書き込む diff --combined include/exec.h index 3a2ed7a,5794e86..08b4dd1 --- a/include/exec.h +++ b/include/exec.h @@@ -16,16 -16,29 +16,11 @@@ enum INSIZE = 256 /**num, cerr->msg); - freecerr(); /* エラーの解放 */ - exit(1); + fprintf(stderr, "casl2 error - %d: %s\n", cerr->num, cerr->msg); + goto casl2fin; } create_cmdtable(HASH_CMDTYPE); /* 命令の名前とタイプがキーのハッシュ表を作成 */ reset(memsize, clocks); /* 仮想マシンCOMET IIのリセット */ for(i = 0; i < argc - optind; i++) { /* 引数からファイル名配列を取得 */ af[i] = argv[optind + i]; } - assemble(i, af, 0); /* アセンブル */ - if(asmode.onlylabel == true || cerr->num > 0) { - goto casl2fin; + /* アセンブル */ + if(assemble(i, af, 0) == false || asmode.onlylabel == true) { + goto shutdown; } /* オブジェクトファイル名が指定されている場合は、アセンブル結果をオブジェクトファイルに出力 */ if(objfile != NULL) { outassemble(objfile); - FREE(objfile); } /* onlyassembleモード以外の場合、仮想マシンCOMET IIを実行 */ if(asmode.onlyassemble == false) { exec(); /* 仮想マシンCOMET IIの実行 */ } + shutdown: + shutdown(); /* 仮想マシンCOMET IIのシャットダウン */ casl2fin: - shutdown(); /* 仮想マシンCOMET IIのシャットダウン */ free_cmdtable(HASH_CMDTYPE); - stat = (cerr->num == 0) ? 0 : 1; + FREE(objfile); + if(cerr->num > 0) { + stat = 1; + } freecerr(); /* エラーの解放 */ return stat; } diff --combined src/doxygen.c index 0c57b16,37981e8..4de72cf --- a/src/doxygen.c +++ b/src/doxygen.c @@@ -3,9 -3,9 +3,10 @@@ * \section メイン関数 * - src/casl2.c * - src/comet2.c + * - src/comet2monitor.c * - src/dumpword.c * - src/casl2rev.c + * - src/comet2monitor.c * * \section そのほかのソースファイル * - src/assemble.c diff --combined test/system/comet2monitor/load/0.txt index fa9e74d,0e8b09b..8bdd4d6 --- a/test/system/comet2monitor/load/0.txt +++ b/test/system/comet2monitor/load/0.txt @@@ -1,4 -1,10 +1,10 @@@ COMET II machine code monitor. Type ? for help. - (comet2 monitor) l as/sample/sum_10.o + (comet2 monitor) l sum_10.o (comet2 monitor) d + #0000: adr : 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F + ------------------------------------------------------------------------------------- + #0000: 0000: 7001 0000 7002 0000 3622 1010 0015 2621 2210 0017 4110 0016 6500 0010 6400 0007 + #0000: 0010: 1120 0018 7120 7110 8100 0001 000A 0001 0000 0000 0000 0000 0000 0000 0000 0000 + #0000: 0020: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 + #0000: 0030: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 -(comet2 monitor) +(comet2 monitor)