X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=direct.c;h=5714def294d89aa5dc21f9e3adb1c9d8ce7be97e;hp=7076358cf0db46c2fa2384a0791b0761391b22ce;hb=96a5cd69571096f11a3a2a40f6133374f0adc9bb;hpb=5cd8a4814b805f1ef8ce689423eb5eeba12573c5 diff --git a/direct.c b/direct.c index 7076358..5714def 100644 --- a/direct.c +++ b/direct.c @@ -1,13 +1,14 @@ // -// RMAC - Reboot's Macro Assembler for the Atari Jaguar Console System +// RMAC - Reboot's Macro Assembler for all Atari computers // DIRECT.C - Directive Handling -// Copyright (C) 199x Landon Dyer, 2017 Reboot and Friends +// Copyright (C) 199x Landon Dyer, 2011-2017 Reboot and Friends // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986 // Source utilised with the kind permission of Landon Dyer // #include "direct.h" #include "6502.h" +#include "amode.h" #include "error.h" #include "expr.h" #include "listing.h" @@ -31,6 +32,15 @@ char buffer[256]; // Scratch buffer for messages // Function prototypes int d_unimpl(void); int d_68000(void); +int d_68000(void); +int d_68020(void); +int d_68030(void); +int d_68040(void); +int d_68060(void); +int d_68881(void); +int d_68882(void); +int d_56001(void); +int d_nofpu(void); int d_bss(void); int d_data(void); int d_text(void); @@ -155,7 +165,7 @@ int d_error(char *str) return error(string[tok[1]]); break; default: - return error("error directive encountered - aborting assembling"); + return error("error directive encountered--aborting assembly"); } } } @@ -418,14 +428,13 @@ int d_incbin(void) int fd; int bytes = 0; long pos, size, bytesRead; - char msg[256]; char buf1[256]; int i; // Check to see if we're in BSS, and, if so, throw an error if (scattr & SBSS) { - errors("cannot include binary file \"%s\" in BSS section", string[tok[1]]); + error("cannot include binary file \"%s\" in BSS section", string[tok[1]]); return ERROR; } @@ -454,7 +463,7 @@ int d_incbin(void) goto allright; } - return errors("cannot open: \"%s\"", string[tok[1]]); + return error("cannot open: \"%s\"", string[tok[1]]); } allright: @@ -470,8 +479,7 @@ allright: if (bytesRead != size) { - sprintf(msg, "was only able to read %li bytes from binary file (%s, %li bytes)", bytesRead, string[tok[1]], size); - error(msg); + error("was only able to read %li bytes from binary file (%s, %li bytes)", bytesRead, string[tok[1]], size); return ERROR; } @@ -731,7 +739,7 @@ int d_include(void) // Make sure the user didn't try anything like: // .include equates.s if (*++tok != EOL) - return error("extra stuff after filename -- enclose it in quotes"); + return error("extra stuff after filename--enclose it in quotes"); // Attempt to open the include file in the current directory, then (if that // failed) try list of include files passed in the enviroment string or by @@ -752,7 +760,7 @@ int d_include(void) goto allright; } - return errors("cannot open: \"%s\"", fn); + return error("cannot open: \"%s\"", fn); } allright: @@ -1054,10 +1062,7 @@ int d_dc(WORD siz) return error("non-absolute byte value"); if (eval + 0x100 >= 0x200) - { - sprintf(buffer, "%s (value = $%X)", range_error, eval); - return error(buffer); - } + return error("%s (value = $%X)", range_error, eval); D_byte(eval); } @@ -1385,81 +1390,89 @@ int d_68000(void) orgwarning = 0; SaveSection(); SwitchSection(TEXT); - activecpu=CPU_68000; + activecpu = CPU_68000; return 0; } + // // .68020 - Back to 68000 TEXT segment and select 68020 // int d_68020(void) { d_68000(); - activecpu=CPU_68020; + activecpu = CPU_68020; return 0; } + // // .68030 - Back to 68000 TEXT segment and select 68030 // int d_68030(void) { d_68000(); - activecpu=CPU_68030; + activecpu = CPU_68030; return 0; } + // // .68040 - Back to 68000 TEXT segment and select 68040 // int d_68040(void) { d_68000(); - activecpu=CPU_68040; - activefpu=FPU_68040; + activecpu = CPU_68040; + activefpu = FPU_68040; return 0; } + // // .68060 - Back to 68000 TEXT segment and select 68060 // int d_68060(void) { d_68000(); - activecpu=CPU_68060; - activefpu=FPU_68040; + activecpu = CPU_68060; + activefpu = FPU_68040; return 0; } + // // .68881 - Back to 68000 TEXT segment and select 68881 FPU // int d_68881(void) { d_68000(); - activefpu=FPU_68881; + activefpu = FPU_68881; return 0; } + // // .68882 - Back to 68000 TEXT segment and select 68882 FPU // int d_68882(void) { d_68000(); - activefpu=FPU_68881; + activefpu = FPU_68881; return 0; } + // // nofpu - Deselect FPUs. // int d_nofpu(void) { - activefpu=FPU_NONE; + activefpu = FPU_NONE; return 0; } + // // DSP56001 // @@ -1468,6 +1481,7 @@ int d_56001(void) return error("Not yet, child. Be patient."); } + // // .gpu - Switch to GPU assembler // @@ -1571,7 +1585,7 @@ int d_cargs(void) symbol->sattr = 0; } else if (symbol->sattr & DEFINED) - return errors("multiply-defined label '%s'", p); + return error("multiply-defined label '%s'", p); // Put symbol in "order of definition" list AddToSymbolDeclarationList(symbol); @@ -1687,7 +1701,7 @@ int d_cstruct(void) symbol->sattr = 0; } else if (symbol->sattr & DEFINED) - return errors("multiply-defined label '%s'", symbolName); + return error("multiply-defined label '%s'", symbolName); // Put symbol in "order of definition" list AddToSymbolDeclarationList(symbol); @@ -1820,11 +1834,7 @@ int d_opt(void) char * tmpstr = string[*tok++]; if (ParseOptimization(tmpstr) != OK) - { - char temperr[256]; - sprintf(temperr, "unknown optimization flag '%s'", tmpstr); - return error(temperr); - } + return error("unknown optimization flag '%s'", tmpstr); } else return error(".opt directive needs every switch enclosed inside quotation marks");