};
/**
- * @brief アセンブル結果読み込みエラーの定義
+ * @brief 実行モード: trace, logical, dump, dump_start, dump_end, monitor, step
*/
-static CERR cerr_load[] = {
- { 210, "load - memory overflow" },
- { 211, "object file not specified" },
-};
-
-/**
- * @brief 実行モード: trace, logical, dump, monitor, step
- */
-EXECMODE execmode = {false, false, false, false, false};
+EXECMODE execmode = {false, false, false, 0, 0xFFFF, false, false};
char *pr2str(WORD pr)
{
return;
}
for(i = 0; i < INSIZE; i++) {
- if(*(buf + i) == '\0' || *(buf + i) == '\n') {
+ if(!buf[i] || buf[i] == '\n') {
--i;
break;
}
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);
}
/* exec.hで定義された関数群 */
-void addcerrlist_load()
-{
- addcerrlist(ARRAYSIZE(cerr_load), cerr_load);
-}
-
void addcerrlist_exec()
{
addcerrlist(ARRAYSIZE(cerr_exec), cerr_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");
}
}
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");
}
}
execfin:
freebps();
- free_code_cmdtype(); /* 命令のコードとタイプがキーのハッシュ表を解放 */
+ free_cmdtable(HASH_CODE); /* 命令のコードとタイプがキーのハッシュ表を解放 */
if(cerr->num > 0) {
fprintf(stderr, "Execute error - %d: %s\n", cerr->num, cerr->msg);
}