X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fassemble.c;h=6d679551d025e2012a06da3af824050863ce9fd4;hb=0d225ac1f580c59da7a063ef52da35c0af254dd3;hp=7dcd888cb7a7e31932ce5a121bd9c9efef3244dc;hpb=650f92bf8dfdd0095db993f71f9e3867e7119acc;p=YACASL2.git diff --git a/src/assemble.c b/src/assemble.c index 7dcd888..6d67955 100644 --- a/src/assemble.c +++ b/src/assemble.c @@ -86,11 +86,11 @@ bool writememory(WORD word, WORD adr, PASS pass) bool status = false; /* COMET IIメモリオーバーの場合 */ - if(adr >= memsize) { + if(adr >= sys->memsize) { setcerr(119, word2n(adr)); /* out of COMET II memory */ } if(cerr->num == 0) { - memory[adr] = word; + (sys->memory)[adr] = word; if(pass == SECOND && asmode.asdetail == true) { fprintf(stdout, "\t#%04X\t#%04X\n", adr, word); } @@ -199,7 +199,7 @@ bool assemblecmd(const CMDLINE *cmdl, PASS pass) asprop->prog = strdup_chk(cmdl->label, "asprop.prog"); /* オペランドがある場合、実行開始番地を設定 */ if(pass == SECOND && cmdl->opd->opdc == 1) { - if((progprop->start = getlabel(asprop->prog, cmdl->opd->opdv[0])) == 0xFFFF) { + if((prog->start = getlabel(asprop->prog, cmdl->opd->opdv[0])) == 0xFFFF) { setcerr(103, cmdl->opd->opdv[0]); /* label not found */ } } @@ -212,7 +212,7 @@ bool assemblecmd(const CMDLINE *cmdl, PASS pass) } /* 実行終了番地と次のプログラムの実行開始番地を設定 */ else if(pass == SECOND) { - progprop->end = asprop->lptr; + prog->end = asprop->lptr; } asprop->prog = NULL; status = true; @@ -470,6 +470,8 @@ bool assemble(const char *file, PASS pass) if(cerr->num > 0) { break; } + free_chk(line, "line"); + free_chk(cmdl, "cmdl"); } if(cerr->num > 0) { fprintf(stderr, "Assemble error - %d: %s\n", cerr->num, cerr->msg);