}
/* プログラム名の設定 */
asptr->prog = strdup_chk(cmdl->label, "asptr.prog");
- /* オペランドがある場合、実行開始番地を設定 */
+ /* オペランドがある場合、実行開始アドレスを設定 */
if(pass == SECOND && cmdl->opd->opdc == 1) {
if((execptr->start = getlabel(asptr->prog, cmdl->opd->opdv[0])) == 0xFFFF) {
setcerr(103, cmdl->opd->opdv[0]); /* label not found */
status = true;
break;
case END:
- /* 1回目のアセンブルの場合は、リテラル領域開始番地を設定 */
+ /* 1回目のアセンブルの場合は、リテラル領域開始アドレスを設定 */
if(pass == FIRST) {
asptr->lptr = asptr->ptr;
}
- /* 2回目のアセンブルの場合は、リテラル領域終了番地を実行終了番地として設定 */
+ /* 2回目のアセンブルの場合は、リテラル領域終了アドレスを実行終了アドレスとして設定 */
else if(pass == SECOND) {
execptr->end = asptr->lptr;
}
{ 206, "Address - out of COMET II memory" },
{ 207, "Stack Pointer (SP) - out of COMET II memory" },
{ 209, "not GR in operand x" },
+ { 210, "not command code of COMET II" },
};
/**
/* 命令の取り出し */
op = sys->memory[sys->cpu->pr] & 0xFF00;
/* 命令の解読 */
- cmdtype = getcmdtype(op);
+ if((cmdtype = getcmdtype(op)) == NOTCMD) {
+ setcerr(210, pr2str(sys->cpu->pr)); /* not command code of COMET II */
+ }
r_r1 = (sys->memory[sys->cpu->pr] >> 4) & 0xF;
x_r2 = sys->memory[sys->cpu->pr] & 0xF;
/* traceオプション指定時、レジスタを出力 */