X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=procln.c;h=463ed1db9d461dbc928c3fc4653e19b67dcb8f7a;hp=ef7bf1cc7be760b2bc52468670a2cd4056a3098b;hb=HEAD;hpb=09135712da4550a1d5d014051e8ef3cc6dd47d99 diff --git a/procln.c b/procln.c index ef7bf1c..463ed1d 100644 --- a/procln.c +++ b/procln.c @@ -1,7 +1,7 @@ // // RMAC - Renamed Macro Assembler for all Atari computers // PROCLN.C - Line Processing -// Copyright (C) 199x Landon Dyer, 2011-2021 Reboot and Friends +// Copyright (C) 199x Landon Dyer, 2011-2022 Reboot and Friends // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986 // Source utilised with the kind permission of Landon Dyer // @@ -28,6 +28,8 @@ #define DEF_MN // Incl 68k keyword definitions #define DECL_MN // Incl 68k keyword state machine tables #include "mntab.h" +#define DEF_REG68 // Incl 68k register definitions +#include "68kregs.h" #define DEF_MR #define DECL_MR @@ -44,7 +46,8 @@ #define DEF_DSP // Include DSP56K keywords definitions #define DECL_DSP // Include DSP56K keyword state machine tables #include "dsp56kkw.h" - +#define DEF_REG56 // Include DSP56K register definitions +#include "56kregs.h" IFENT * ifent; // Current ifent static IFENT ifent0; // Root ifent @@ -114,11 +117,9 @@ LONG amsktab[0124] = { M_FPSCR // 0123 }; // 0123 length - // Function prototypes int HandleLabel(char *, int); - // // Initialize line processor // @@ -130,7 +131,6 @@ void InitLineProcessor(void) ifent0.if_state = 0; } - // // Line processor // @@ -200,10 +200,7 @@ loop1: // Internal line processing loop // First token MUST be a symbol (Shamus: not sure why :-/) if (*tok != SYMBOL) { - if ((*tok >= KW_D0) && (*tok <= KW_R31)) - error("cannot use reserved keyword as label name or .equ"); - else - error("syntax error; expected symbol"); + error("syntax error; expected symbol"); goto loop; } @@ -437,7 +434,7 @@ When checking to see if it's already been equated, issue a warning. // Check for register to equate to // This check will change once we split the registers per architecture into their own tables // and out of kw.tab. But for now it'll do... - if ((*tok >= KW_D0) && (*tok <= KW_BA)) + if ((*tok >= REG68_D0) && (*tok <= REG56_BA)) { sy->sattre = EQUATEDREG; // Mark as equated register equreg = *tok; @@ -742,6 +739,7 @@ When checking to see if it's already been equated, issue a warning. while ((dsp_am0 & md->mn0) == 0 || (dsp_am1 & md->mn1) == 0) md = &dsp56k_machtab[md->mncont]; + GENLINENOSYM(); (*md->mnfunc)(md->mninst | (parcode << 8)); goto loop; } @@ -787,6 +785,7 @@ When checking to see if it's already been equated, issue a warning. // Call special-mode handler if (m->mnattr & CGSPECIAL) { + GENLINENOSYM(); (*m->mnfunc)(m->mninst, siz); goto loop; } @@ -821,11 +820,11 @@ When checking to see if it's already been equated, issue a warning. DEBUG { printf(" 68K: mninst=$%X, siz=$%X, mnattr=$%X, amsk0=$%X, mn0=$%X, amsk1=$%X, mn1=$%X\n", m->mninst, siz, m->mnattr, amsk0, m->mn0, amsk1, m->mn1); } + GENLINENOSYM(); (*m->mnfunc)(m->mninst, siz); goto loop; } - // // Handle the creation of labels // @@ -876,4 +875,3 @@ int HandleLabel(char * label, int labelType) return 0; } -