X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=rmac.c;h=4f78759070ef6888b0c7897119e87e34ef396d9e;hb=37694c99b02f939fc259c1e180359afb887acd55;hp=4772d203bd93d612f5e9e6a7121ae37e98fc9786;hpb=619867988ebf5dafbf8e1adbda157d85ba9eedeb;p=rmac diff --git a/rmac.c b/rmac.c index 4772d20..4f78759 100644 --- a/rmac.c +++ b/rmac.c @@ -1,7 +1,7 @@ // -// RMAC - Reboot's Macro Assembler for all Atari computers +// RMAC - Renamed Macro Assembler for all Atari computers // RMAC.C - Main Application Code -// 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 // @@ -53,7 +53,7 @@ char * cmdlnexec; // Executable name, pointer to ARGV[0] char searchpatha[512] = { 0 }; // Buffer to hold searchpath when specified char * searchpath = NULL; // Search path for include files char defname[] = "noname.o"; // Default output filename -int optim_flags[OPT_COUNT]; // Specific optimisations on/off matrix +int optim_flags[OPT_COUNT_ALL]; // Specific optimisations on/off matrix int activecpu = CPU_68000; // Active 68k CPU (68000 by default) int activefpu = FPU_NONE; // Active FPU (none by default) int org68k_active = 0; // .org switch for 68k (only with RAW output format) @@ -68,7 +68,6 @@ void strtoupper(char * s) *s++ &= 0xDF; } - // // Manipulate file extension. // @@ -101,6 +100,17 @@ char * fext(char * name, char * extension, int stripp) return name; } +static int is_sep(char c) +{ + const char *seps = PATH_SEPS; + + for (seps = PATH_SEPS; *seps; seps++) { + if (*seps == c) + return 1; + } + + return 0; +} // // Return 'item'nth element of semicolon-seperated pathnames specified in the @@ -120,13 +130,13 @@ int nthpath(char * env_var, int itemno, char * buf) return 0; while (itemno--) - while (*s != EOS && *s++ != ';') + while (*s != EOS && !is_sep(*s++)) ; if (*s == EOS) return 0; - while (*s != EOS && *s != ';') + while (*s != EOS && !is_sep(*s)) *buf++ = *s++; *buf++ = EOS; @@ -134,7 +144,6 @@ int nthpath(char * env_var, int itemno, char * buf) return 1; } - // // Display command line help // @@ -174,7 +183,7 @@ void DisplayHelp(void) " o7: clr.l Dx to moveq #0,Dx (off)\n" " o8: adda.w/l #x,Dy to addq.w/l #x,Dy (off)\n" " o9: adda.w/l #x,Dy to lea x(Dy),Dy (off)\n" - " op: Enforce PC relative (off)\n" + " o10: Enforce PC relative (alternative: op) (off)\n" " ~o[value] Turn a specific optimisation off\n" " +oall Turn all optimisations on\n" " ~oall Turn all optimisations off\n" @@ -207,12 +216,11 @@ void DisplayVersion(void) "| '__| '_ ` _ \\ / _` |/ __|\n" "| | | | | | | | (_| | (__ \n" "|_| |_| |_| |_|\\__,_|\\___|\n" - "\nReboot's Macro Assembler\n" - "Copyright (C) 199x Landon Dyer, 2011-2020 Reboot\n" + "\nRenamed Macro Assembler\n" + "Copyright (C) 199x Landon Dyer, 2011-2021 Reboot and Friends\n" "V%01i.%01i.%01i %s (%s)\n\n", MAJOR, MINOR, PATCH, __DATE__, PLATFORM); } - // // Parse optimisation options // @@ -227,6 +235,9 @@ int ParseOptimization(char * optstring) else if (*optstring != '~') return ERROR; + if (optstring[2] == 0) + return error(".opt called with zero arguments"); + if ((optstring[2] == 'a' || optstring[2] == 'A') && (optstring[3] == 'l' || optstring[3] == 'L') && (optstring[4] == 'l' || optstring[4] == 'L')) @@ -273,7 +284,6 @@ int ParseOptimization(char * optstring) return OK; } - // // Process command line arguments and do an assembly // @@ -745,7 +755,6 @@ int Process(int argc, char ** argv) return errcnt; } - // // Determine processor endianess // @@ -760,7 +769,6 @@ int GetEndianess(void) return 1; } - // // Application entry point // @@ -787,4 +795,3 @@ int main(int argc, char ** argv) return 0; } -