X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=rmac.c;h=ee8d9ee3a70b6a9273f6ac6e0df8544585886579;hp=a7d1770b1a2348fc81ac1ccbedca0495c1f806df;hb=c7c27ef02a3d5c7d17e5728910961a4a1eeacfe3;hpb=d1fe92e22362ab81cdf10f09b4847261f3b9899a diff --git a/rmac.c b/rmac.c index a7d1770..ee8d9ee 100644 --- a/rmac.c +++ b/rmac.c @@ -45,7 +45,7 @@ char * firstfname; // First source filename char * cmdlnexec; // Executable name, pointer to ARGV[0] char * searchpath; // Search path for include files char defname[] = "noname.o"; // Default output filename - +int optim_flag; // Optimise all the things! // // Manipulate file extension. @@ -132,6 +132,9 @@ void DisplayHelp(void) " -l[filename] Create an output listing file\n" " -n Don't do things behind your back in RISC assembler\n" " -o file Output file name\n" + " -p Create an ST .prg (without symbols)\n" + " -ps Create an ST .prg (with symbols)\n" + " Forces -fa\n" " -r[size] Pad segments to boundary size specified\n" " w: word (2 bytes, default alignment)\n" " l: long (4 bytes)\n" @@ -139,8 +142,11 @@ void DisplayHelp(void) " d: double phrase (16 bytes)\n" " q: quad phrase (32 bytes)\n" " -s Warn about possible short branches\n" + " and applied optimisations\n" " -u Force referenced and undefined symbols global\n" + " -w Turn off optimisations done automatically\n" " -v Set verbose mode\n" + " -x Turn on debugging mode\n" " -y[pagelen] Set page line length (default: 61)\n" "\n", cmdlnexec); } @@ -151,7 +157,12 @@ void DisplayHelp(void) // void DisplayVersion(void) { - printf("\nReboot's Macro Assembler for Atari Jaguar\n" + printf("\n" + " _ __ _ __ ___ __ _ ___ \n" + "| '__| '_ ` _ \\ / _` |/ __|\n" + "| | | | | | | | (_| | (__ \n" + "|_| |_| |_| |_|\\__,_|\\___|\n" + "\nReboot's Macro Assembler\n" "Copyright (C) 199x Landon Dyer, 2011-2015 Reboot\n" "V%01i.%01i.%01i %s (%s)\n\n", MAJOR, MINOR, PATCH, __DATE__, PLATFORM); } @@ -192,6 +203,7 @@ int Process(int argc, char ** argv) orgactive = 0; // Not in RISC org section orgwarning = 0; // No ORG warning issued segpadsize = 2; // Initialise segment padding size + optim_flag = 1; // Automatically optimise // Initialise modules InitSymbolTable(); // Symbol table @@ -316,6 +328,10 @@ int Process(int argc, char ** argv) ++errcnt; return errcnt; } + + // Enforce Alcyon object format - kind of silly + // to ask for .prg output without it! + obj_format = ALCYON; break; case 'r': // Pad seg to requested boundary size case 'R': @@ -345,6 +361,10 @@ int Process(int argc, char ** argv) DisplayVersion(); break; + case 'w': + case 'W': + optim_flag=0; + break; case 'x': // Turn on debugging case 'X': debug = 1; @@ -443,7 +463,6 @@ int Process(int argc, char ** argv) strcpy(fnbuf, firstfname); fext(fnbuf, (prg_flag ? ".prg" : ".o"), 1); - fext(fnbuf, ".o", 1); objfname = fnbuf; }