X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=procln.c;h=4e5a846947e636461b6e9beac1f78cfdda8f8a17;hb=cbc8347d4ffea164ca05b03e4e3be39945be8777;hp=9c207bfdefe8481ca71195ad1ad7c3aaaf7c3471;hpb=4205233c8397c581b4d27ab36ab81ec896ef3dd0;p=rmac diff --git a/procln.c b/procln.c index 9c207bf..4e5a846 100644 --- a/procln.c +++ b/procln.c @@ -1,7 +1,7 @@ // -// RMAC - Reboot's Macro Assembler for all Atari computers +// RMAC - Renamed Macro Assembler for all Atari computers // PROCLN.C - Line Processing -// Copyright (C) 199x Landon Dyer, 2011-2020 Reboot and Friends +// Copyright (C) 199x Landon Dyer, 2011-2021 Reboot and Friends // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986 // Source utilised with the kind permission of Landon Dyer // @@ -486,6 +486,11 @@ When checking to see if it's already been equated, issue a warning. registerbank = BANK_0; else if (*(uint64_t *)tok == 1) registerbank = BANK_1; + + // Advance half-way through the 64-bit const. + // The code below, expecting a regular token, + // will advance past the second half. + tok++; } #ifdef DEBODGE_REGBANK @@ -845,8 +850,13 @@ When checking to see if it's already been equated, issue a warning. if (amode(1) < 0) // Parse 0, 1 or 2 addr modes goto loop; - if (*tok != EOL) - error(extra_stuff); + // Check that we're at EOL + // The only exception is ptestr/ptestw instructions + // that have 3 or 4 operands and are not handled by + // amode(). (yes, we're taking a performance hit here sadly) + if (m->mnfunc != m_ptestr && m->mnfunc != m_ptestw) + if (*tok != EOL) + error(extra_stuff); amsk0 = amsktab[am0]; amsk1 = amsktab[am1];