X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=rmac.c;h=910cb88d5260535406cef0dd397282630b58d372;hp=0c663b40a0af0cca1b76faed1e2e73bad35f9f82;hb=917bfc1503181b7e762b73b9560bb834c12c64fa;hpb=f4e9bcd703852c51c97d2586872b9b26389899e6 diff --git a/rmac.c b/rmac.c index 0c663b4..910cb88 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,7 +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[n] Create an ST .prg (1=normal, 2=w/symbols)\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" @@ -140,7 +142,9 @@ 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" " -y[pagelen] Set page line length (default: 61)\n" "\n", cmdlnexec); @@ -152,7 +156,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); } @@ -193,6 +202,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 @@ -317,6 +327,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': @@ -346,6 +360,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; @@ -444,7 +462,6 @@ int Process(int argc, char ** argv) strcpy(fnbuf, firstfname); fext(fnbuf, (prg_flag ? ".prg" : ".o"), 1); - fext(fnbuf, ".o", 1); objfname = fnbuf; }