X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=macro.c;h=54d34c43687b3cae932b9c7b5387e55b36a9ce99;hp=38dfecd80ae7fb573144d759c2cfdbebb8c2300a;hb=582df8950c285e1746d0c4a9e3ead6545c962dc8;hpb=f7f625cf6c2f4b96854ac0e911ca2b1c249f4e05 diff --git a/macro.c b/macro.c index 38dfecd..54d34c4 100644 --- a/macro.c +++ b/macro.c @@ -22,7 +22,7 @@ int macnum; // Unique number for macro definition static LONG macuniq; // Unique-per-macro number static SYM * curmac; // Macro currently being defined -static VALUE argno; // Formal argument count +static uint32_t argno; // Formal argument count static LLIST * firstrpt; // First .rept line static LLIST * nextrpt; // Last .rept line @@ -244,7 +244,7 @@ WARNING("!!! Casting (char *) as LONG !!!") // int HandleRept(void) { - VALUE eval; + uint64_t eval; // Evaluate repeat expression if (abs_expr(&eval) != OK) @@ -264,7 +264,7 @@ int HandleRept(void) IREPT * irept = inobj->inobj.irept; irept->ir_firstln = firstrpt; irept->ir_nextln = NULL; - irept->ir_count = eval; + irept->ir_count = (uint32_t)eval; } return 0; @@ -410,10 +410,14 @@ int InvokeMacro(SYM * mac, WORD siz) for(int i=0; i<3; i++) *p++ = *tok++; } - else if (*tok == CONST) + else if (*tok == CONST) // Constants are 64-bits { - *p++ = *tok++; - *p++ = *tok++; + *p++ = *tok++; // Token + uint64_t *p64 = (uint64_t *)p; + uint64_t *tok64 = (uint64_t *)tok; + *p64++ = *tok64++; + tok = (TOKEN *)tok64; + p = (uint32_t *)p64; } else if ((*tok == STRING) || (*tok == SYMBOL)) {