X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=sect.c;h=7a6f9e15cb0a64a4aefede0d782050b9008c7360;hp=7a88a5610693f2271e5154f75aab471d0b0bf887;hb=968958cccf9201debee2cb0d4856cb5b55c6867d;hpb=ff2052bcaa1428a33a202822a81a6f9b8e567ef4 diff --git a/sect.c b/sect.c index 7a88a56..7a6f9e1 100644 --- a/sect.c +++ b/sect.c @@ -47,26 +47,26 @@ PTR fchptr; // Deposit point in fixup chunk buffer // Return a size (SIZB, SIZW, SIZL) or 0, depending on what kind of fixup is // associated with a location. static uint8_t fusiztab[] = { - 0, // FU_QUICK - 1, // FU_BYTE - 2, // FU_WORD - 2, // FU_WBYTE - 4, // FU_LONG - 1, // FU_BBRA - 0, // (unused) - 1, // FU_6BRA + 0, // FU_QUICK + 1, // FU_BYTE + 2, // FU_WORD + 2, // FU_WBYTE + 4, // FU_LONG + 1, // FU_BBRA + 0, // (unused) + 1, // FU_6BRA }; // Offset to REAL fixup location static uint8_t fusizoffs[] = { - 0, // FU_QUICK - 0, // FU_BYTE - 0, // FU_WORD - 1, // FU_WBYTE - 0, // FU_LONG - 1, // FU_BBRA - 0, // (unused) - 0, // FU_6BRA + 0, // FU_QUICK + 0, // FU_BYTE + 0, // FU_WORD + 1, // FU_WBYTE + 0, // FU_LONG + 1, // FU_BBRA + 0, // (unused) + 0, // FU_6BRA }; @@ -116,7 +116,7 @@ void SwitchSection(int sno) cursect = sno; SECT * p = §[sno]; - m6502 = (sno == M6502); /* set 6502-mode */ + m6502 = (sno == M6502); // Set 6502-mode flag // Copy section vars scattr = p->scattr; @@ -130,6 +130,10 @@ void SwitchSection(int sno) challoc = cp->challoc; ch_size = cp->ch_size; chptr = cp->chptr + ch_size; + + // For 6502 mode, add the last org'd address + if (m6502) + chptr = cp->chptr + orgaddr; } else challoc = ch_size = 0;