From: ggn Date: Tue, 20 Dec 2022 21:48:39 +0000 (+0200) Subject: Added support for C64 .PRG output format (#194) X-Git-Tag: v2.2.11~1 X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=45c9dc23612600f6156009e2e9c0039a61b64ea2;hp=0172b60145f541e4d578bb5aaaff5a9ce0921c8a;p=rmac Added support for C64 .PRG output format (#194) --- diff --git a/6502.c b/6502.c index db6c638..131c6d8 100644 --- a/6502.c +++ b/6502.c @@ -569,3 +569,32 @@ void m6502obj(int ofd) } } + +// +// Generate a C64 .PRG output file +// +void m6502c64(int ofd) +{ + uint8_t header[2]; + + CHUNK * ch = sect[M6502].scode; + + // If no 6502 code was generated, bail out + if ((ch == NULL) || (ch->challoc == 0)) + return; + + if (currentorg != &orgmap[1][0]) + { + // More than one 6502 section created, this is not allowed + error("when generating C64 .PRG files only one org section is allowed - aborting"); + return; + } + + SETLE16(header, 0, orgmap[0][0]); + register uint8_t * p = ch->chptr; + + // Write header + uint32_t unused = write(ofd, header, 2); + // Write the data + unused = write(ofd, p + orgmap[0][0], orgmap[0][1] - orgmap[0][0]); +}