X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=6502.c;h=55eab740115446b4f1b3ad63437be70403bab82e;hp=27a8e1ac9ac41f153c882c95d1f65c1149931d81;hb=c38505ee4b2a0de59926107e52fb8bb84041a0e4;hpb=bdbf34766f4d074a5933eb1326fe4ce03d249e10 diff --git a/6502.c b/6502.c index 27a8e1a..55eab74 100644 --- a/6502.c +++ b/6502.c @@ -1,7 +1,7 @@ // // RMAC - Reboot's Macro Assembler for all Atari computers // 6502.C - 6502 Assembler -// Copyright (C) 199x Landon Dyer, 2011-2019 Reboot and Friends +// Copyright (C) 199x Landon Dyer, 2011-2020 Reboot and Friends // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986 // Source utilised with the kind permission of Landon Dyer // @@ -645,46 +645,39 @@ badmode: if (sloc > 0x10000L) fatal("6502 code pointer > 64K"); -//Now why use this instead of at_eol()? - if (*tok != EOL) - error(extra_stuff); + ErrorIfNotAtEOL(); } // // Generate 6502 object output file. +// ggn: Converted to COM/EXE/XEX output format // -// ggn: converted into a com/exe/xex output format void m6502obj(int ofd) { - uint16_t exeheader[3]; - int headsize = 6; - uint16_t * headpoint = exeheader; + uint8_t header[4]; CHUNK * ch = sect[M6502].scode; - // If no 6502 code was generated, forget it + // If no 6502 code was generated, bail out if ((ch == NULL) || (ch->challoc == 0)) return; - exeheader[0] = 0xFFFF; // Mandatory for first segment register uint8_t * p = ch->chptr; + // Write out mandatory $FFFF header + header[0] = header[1] = 0xFF; + uint32_t unused = write(ofd, header, 2); + for(uint16_t * l=&orgmap[0][0]; l