X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=src%2Fexec.c;h=8b5047e13ffd14a6f8f8a1c60674c6f56a21b967;hp=c7c125e0cb43c14eef048256163582dcf0187426;hb=c5d39cec3839fa4e8cbac9dc0a0d5e28c0a7d555;hpb=2f0b91ab1a54973a084e1609b46a1432c8b8e334 diff --git a/src/exec.c b/src/exec.c index c7c125e..8b5047e 100644 --- a/src/exec.c +++ b/src/exec.c @@ -94,9 +94,9 @@ static CERR cerr_load[] = { }; /** - * @brief 実行モード: trace, logical, dump, monitor, step + * @brief 実行モード: trace, logical, dump, dump_start, dump_end, monitor, step */ -EXECMODE execmode = {false, false, false, false, false}; +EXECMODE execmode = {false, false, false, 0, 0xFFFF, false, false}; char *pr2str(WORD pr) { @@ -116,7 +116,7 @@ void svcin() return; } for(i = 0; i < INSIZE; i++) { - if(*(buf + i) == '\0' || *(buf + i) == '\n') { + if(!buf[i] || buf[i] == '\n') { --i; break; } @@ -124,7 +124,7 @@ void svcin() setcerr(208, ""); /* SVC input - memory overflow */ break; } - sys->memory[sys->cpu->gr[1]+i] = *(buf + i); + sys->memory[sys->cpu->gr[1] + i] = buf[i]; } sys->memory[sys->cpu->gr[2]] = i + 1; FREE(buf); @@ -768,7 +768,8 @@ void exec() char *s; const char *monmsg = "COMET II machine code monitor. Type ? for help.\n"; - create_code_cmdtype(); /* 命令のコードとタイプがキーのハッシュ表を作成 */ + create_cmdtable(HASH_CODE); /* 命令のコードとタイプがキーのハッシュ表を作成 */ + if(execmode.trace == true) { fprintf(stdout, "\nExecuting machine codes\n"); } @@ -782,7 +783,7 @@ void exec() } if(execmode.dump) { /* dumpオプション指定時、メモリを出力 */ fprintf(stdout, "#%04X: Memory::::\n", sys->cpu->pr); - dumpmemory(0x0, 0xFFFF); + dumpmemory(execmode.dump_start, execmode.dump_end); } fprintf(stdout, "\n"); } @@ -837,7 +838,7 @@ void exec() } execfin: freebps(); - free_code_cmdtype(); /* 命令のコードとタイプがキーのハッシュ表を解放 */ + free_cmdtable(HASH_CODE); /* 命令のコードとタイプがキーのハッシュ表を解放 */ if(cerr->num > 0) { fprintf(stderr, "Execute error - %d: %s\n", cerr->num, cerr->msg); }