diff --git a/source/compiler/sc1.c b/source/compiler/sc1.c index fef6b09..d6b9d86 100644 --- a/source/compiler/sc1.c +++ b/source/compiler/sc1.c @@ -5941,6 +5941,21 @@ static void emit_param_data(ucell *p,int size) } while (++curpusage|=uREAD; + *p=*(ucell *)&sym->addr; +} + static void OPHANDLER_CALL emit_noop(char *name) { (void)name; @@ -5969,17 +5984,10 @@ static void OPHANDLER_CALL emit_parm1_gvar(char *name) static void OPHANDLER_CALL emit_parm1_lbl(char *name) { - char *str; - cell val; - symbol *sym; - int tok; + ucell p[1]; - tok=lex(&val,&str); - if (tok!=tSYMBOL) - emit_invalid_token(tSYMBOL,tok); - sym=fetchlab(str); - sym->usage|=uREAD; - outinstr(name,1,(ucell *)&sym->addr); + emit_param_label(&p[0]); + outinstr(name,(sizeof p / sizeof p[0]),p); } static void OPHANDLER_CALL emit_parm2_num(char *name) @@ -6057,29 +6065,11 @@ static void OPHANDLER_CALL emit_parm5_gvar(char *name) static void OPHANDLER_CALL emit_do_case(char *name) { - /* case