rename "sp" to "spc", avoid conflict with 4510 opcodes

This commit is contained in:
Gorilla Sapiens
2025-06-04 02:06:40 +00:00
parent 58171691d0
commit 3d118dc6e5
204 changed files with 908 additions and 908 deletions

View File

@@ -218,7 +218,7 @@ void g_preamble (void)
AddTextLine ("\t.debuginfo\t%s", (DebugInfo != 0)? "on" : "off");
/* Import zero page variables */
AddTextLine ("\t.importzp\tsp, sreg, regsave, regbank");
AddTextLine ("\t.importzp\tspc, sreg, regsave, regbank");
AddTextLine ("\t.importzp\ttmp1, tmp2, tmp3, tmp4, ptr1, ptr2, ptr3, ptr4");
/* Define long branch macros */
@@ -569,11 +569,11 @@ void g_swap_regvars (int StackOffs, int RegOffs, unsigned Bytes)
AddCodeLine ("ldx #$%02X", RegOffs & 0xFF);
AddCodeLine ("jsr regswap1");
} else {
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("ldx regbank%+d", RegOffs);
AddCodeLine ("sta regbank%+d", RegOffs);
AddCodeLine ("txa");
AddCodeLine ("sta (sp),y");
AddCodeLine ("sta (spc),y");
}
} else if (Bytes == 2) {
@@ -615,7 +615,7 @@ void g_save_regvars (int RegOffs, unsigned Bytes)
AddCodeLine ("ldx #$%02X", (unsigned char) Bytes);
g_defcodelabel (Label);
AddCodeLine ("lda regbank%+d,x", RegOffs-1);
AddCodeLine ("sta (sp),y");
AddCodeLine ("sta (spc),y");
AddCodeLine ("dey");
AddCodeLine ("dex");
AddCodeLine ("bne %s", LocalLabelName (Label));
@@ -639,28 +639,28 @@ void g_restore_regvars (int StackOffs, int RegOffs, unsigned Bytes)
if (Bytes == 1) {
AddCodeLine ("ldy #$%02X", StackOffs);
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("sta regbank%+d", RegOffs);
} else if (Bytes == 2) {
AddCodeLine ("ldy #$%02X", StackOffs);
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("sta regbank%+d", RegOffs);
AddCodeLine ("iny");
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("sta regbank%+d", RegOffs+1);
} else if (Bytes == 3 && IS_Get (&CodeSizeFactor) >= 133) {
AddCodeLine ("ldy #$%02X", StackOffs);
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("sta regbank%+d", RegOffs);
AddCodeLine ("iny");
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("sta regbank%+d", RegOffs+1);
AddCodeLine ("iny");
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("sta regbank%+d", RegOffs+2);
} else if (StackOffs <= RegOffs) {
@@ -672,7 +672,7 @@ void g_restore_regvars (int StackOffs, int RegOffs, unsigned Bytes)
unsigned Label = GetLocalLabel ();
AddCodeLine ("ldy #$%02X", StackOffs);
g_defcodelabel (Label);
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("sta regbank%+d,y", RegOffs - StackOffs);
AddCodeLine ("iny");
AddCodeLine ("cpy #$%02X", StackOffs + Bytes);
@@ -688,7 +688,7 @@ void g_restore_regvars (int StackOffs, int RegOffs, unsigned Bytes)
AddCodeLine ("ldy #$%02X", (unsigned char) (StackOffs + Bytes - 1));
AddCodeLine ("ldx #$%02X", (unsigned char) (Bytes - 1));
g_defcodelabel (Label);
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("sta regbank%+d,x", RegOffs);
AddCodeLine ("dey");
AddCodeLine ("dex");
@@ -834,11 +834,11 @@ void g_getlocal (unsigned Flags, int Offs)
CheckLocalOffs (Offs);
if ((Flags & CF_FORCECHAR) || (Flags & CF_TEST)) {
AddCodeLine ("ldy #$%02X", Offs);
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
} else {
AddCodeLine ("ldy #$%02X", Offs);
AddCodeLine ("ldx #$00");
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
if ((Flags & CF_UNSIGNED) == 0) {
unsigned L = GetLocalLabel();
AddCodeLine ("bpl %s", LocalLabelName (L));
@@ -852,9 +852,9 @@ void g_getlocal (unsigned Flags, int Offs)
CheckLocalOffs (Offs + 1);
AddCodeLine ("ldy #$%02X", (unsigned char) (Offs+1));
if (Flags & CF_TEST) {
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("dey");
AddCodeLine ("ora (sp),y");
AddCodeLine ("ora (spc),y");
} else {
AddCodeLine ("jsr ldaxysp");
}
@@ -935,7 +935,7 @@ void g_leasp (int Offs)
{
unsigned char Lo, Hi;
/* Calculate the offset relative to sp */
/* Calculate the offset relative to spc */
Offs -= StackPtr;
/* Get low and high byte */
@@ -945,17 +945,17 @@ void g_leasp (int Offs)
/* Generate code */
if (Lo == 0) {
if (Hi <= 3) {
AddCodeLine ("lda sp");
AddCodeLine ("ldx sp+1");
AddCodeLine ("lda spc");
AddCodeLine ("ldx spc+1");
while (Hi--) {
AddCodeLine ("inx");
}
} else {
AddCodeLine ("lda sp+1");
AddCodeLine ("lda spc+1");
AddCodeLine ("clc");
AddCodeLine ("adc #$%02X", Hi);
AddCodeLine ("tax");
AddCodeLine ("lda sp");
AddCodeLine ("lda spc");
}
} else if (Hi == 0) {
/* 8 bit offset */
@@ -966,8 +966,8 @@ void g_leasp (int Offs)
} else {
/* 8 bit offset inlined */
unsigned L = GetLocalLabel ();
AddCodeLine ("lda sp");
AddCodeLine ("ldx sp+1");
AddCodeLine ("lda spc");
AddCodeLine ("ldx spc+1");
AddCodeLine ("clc");
AddCodeLine ("adc #$%02X", Lo);
AddCodeLine ("bcc %s", LocalLabelName (L));
@@ -981,11 +981,11 @@ void g_leasp (int Offs)
AddCodeLine ("jsr leaaxsp");
} else {
/* Full 16 bit offset inlined */
AddCodeLine ("lda sp");
AddCodeLine ("lda spc");
AddCodeLine ("clc");
AddCodeLine ("adc #$%02X", Lo);
AddCodeLine ("pha");
AddCodeLine ("lda sp+1");
AddCodeLine ("lda spc+1");
AddCodeLine ("adc #$%02X", Hi);
AddCodeLine ("tax");
AddCodeLine ("pla");
@@ -1001,10 +1001,10 @@ void g_leavariadic (int Offs)
{
unsigned ArgSizeOffs;
/* Calculate the offset relative to sp */
/* Calculate the offset relative to spc */
Offs -= StackPtr;
/* Get the offset of the parameter which is stored at sp+0 on function
/* Get the offset of the parameter which is stored at spc+0 on function
** entry and check if this offset is reachable with a byte offset.
*/
CHECK (StackPtr <= 0);
@@ -1013,14 +1013,14 @@ void g_leavariadic (int Offs)
/* Get the size of all parameters. */
AddCodeLine ("ldy #$%02X", ArgSizeOffs);
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
/* Add the value of the stackpointer */
if (IS_Get (&CodeSizeFactor) > 250) {
unsigned L = GetLocalLabel();
AddCodeLine ("ldx sp+1");
AddCodeLine ("ldx spc+1");
AddCodeLine ("clc");
AddCodeLine ("adc sp");
AddCodeLine ("adc spc");
AddCodeLine ("bcc %s", LocalLabelName (L));
AddCodeLine ("inx");
g_defcodelabel (L);
@@ -1092,14 +1092,14 @@ void g_putlocal (unsigned Flags, int Offs, long Val)
AddCodeLine ("lda #$%02X", (unsigned char) Val);
}
AddCodeLine ("ldy #$%02X", Offs);
AddCodeLine ("sta (sp),y");
AddCodeLine ("sta (spc),y");
break;
case CF_INT:
if (Flags & CF_CONST) {
AddCodeLine ("ldy #$%02X", Offs+1);
AddCodeLine ("lda #$%02X", (unsigned char) (Val >> 8));
AddCodeLine ("sta (sp),y");
AddCodeLine ("sta (spc),y");
if ((Flags & CF_NOKEEP) == 0) {
/* Place high byte into X */
AddCodeLine ("tax");
@@ -1112,16 +1112,16 @@ void g_putlocal (unsigned Flags, int Offs, long Val)
AddCodeLine ("dey");
AddCodeLine ("lda #$%02X", (unsigned char) Val);
}
AddCodeLine ("sta (sp),y");
AddCodeLine ("sta (spc),y");
} else {
AddCodeLine ("ldy #$%02X", Offs);
if ((Flags & CF_NOKEEP) == 0 || IS_Get (&CodeSizeFactor) < 160) {
AddCodeLine ("jsr staxysp");
} else {
AddCodeLine ("sta (sp),y");
AddCodeLine ("sta (spc),y");
AddCodeLine ("iny");
AddCodeLine ("txa");
AddCodeLine ("sta (sp),y");
AddCodeLine ("sta (spc),y");
}
}
break;
@@ -1161,12 +1161,12 @@ void g_putind (unsigned Flags, unsigned Offs)
AddCodeLine ("pha");
}
AddCodeLine ("lda #$%02X", Offs & 0xFF);
AddCodeLine ("adc (sp),y");
AddCodeLine ("sta (sp),y");
AddCodeLine ("adc (spc),y");
AddCodeLine ("sta (spc),y");
AddCodeLine ("iny");
AddCodeLine ("lda #$%02X", (Offs >> 8) & 0xFF);
AddCodeLine ("adc (sp),y");
AddCodeLine ("sta (sp),y");
AddCodeLine ("adc (spc),y");
AddCodeLine ("sta (spc),y");
if ((Flags & CF_NOKEEP) == 0) {
AddCodeLine ("pla");
}
@@ -1183,8 +1183,8 @@ void g_putind (unsigned Flags, unsigned Offs)
AddCodeLine ("pha");
}
AddCodeLine ("lda #$%02X", (Offs >> 8) & 0xFF);
AddCodeLine ("adc (sp),y");
AddCodeLine ("sta (sp),y");
AddCodeLine ("adc (spc),y");
AddCodeLine ("sta (spc),y");
if ((Flags & CF_NOKEEP) == 0) {
AddCodeLine ("pla");
}
@@ -1618,7 +1618,7 @@ void g_addlocal (unsigned flags, int offs)
L = GetLocalLabel();
AddCodeLine ("ldy #$%02X", NewOff & 0xFF);
AddCodeLine ("clc");
AddCodeLine ("adc (sp),y");
AddCodeLine ("adc (spc),y");
AddCodeLine ("bcc %s", LocalLabelName (L));
AddCodeLine ("inx");
g_defcodelabel (L);
@@ -1627,11 +1627,11 @@ void g_addlocal (unsigned flags, int offs)
case CF_INT:
AddCodeLine ("ldy #$%02X", NewOff & 0xFF);
AddCodeLine ("clc");
AddCodeLine ("adc (sp),y");
AddCodeLine ("adc (spc),y");
AddCodeLine ("pha");
AddCodeLine ("txa");
AddCodeLine ("iny");
AddCodeLine ("adc (sp),y");
AddCodeLine ("adc (spc),y");
AddCodeLine ("tax");
AddCodeLine ("pla");
break;
@@ -1839,12 +1839,12 @@ void g_addeqlocal (unsigned flags, int Offs, unsigned long val)
if (flags & CF_CONST) {
AddCodeLine ("clc");
AddCodeLine ("lda #$%02X", (int)(val & 0xFF));
AddCodeLine ("adc (sp),y");
AddCodeLine ("sta (sp),y");
AddCodeLine ("adc (spc),y");
AddCodeLine ("sta (spc),y");
} else {
AddCodeLine ("clc");
AddCodeLine ("adc (sp),y");
AddCodeLine ("sta (sp),y");
AddCodeLine ("adc (spc),y");
AddCodeLine ("sta (spc),y");
}
if ((flags & CF_UNSIGNED) == 0) {
unsigned L = GetLocalLabel();
@@ -1862,16 +1862,16 @@ void g_addeqlocal (unsigned flags, int Offs, unsigned long val)
if (IS_Get (&CodeSizeFactor) >= 400) {
AddCodeLine ("clc");
AddCodeLine ("lda #$%02X", (int)(val & 0xFF));
AddCodeLine ("adc (sp),y");
AddCodeLine ("sta (sp),y");
AddCodeLine ("adc (spc),y");
AddCodeLine ("sta (spc),y");
AddCodeLine ("iny");
AddCodeLine ("lda #$%02X", (int) ((val >> 8) & 0xFF));
AddCodeLine ("adc (sp),y");
AddCodeLine ("sta (sp),y");
AddCodeLine ("adc (spc),y");
AddCodeLine ("sta (spc),y");
if ((flags & CF_NOKEEP) == 0) {
AddCodeLine ("tax");
AddCodeLine ("dey");
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
}
} else {
g_getimmed (flags, val, 0);
@@ -1923,7 +1923,7 @@ void g_addeqind (unsigned flags, unsigned offs, unsigned long val)
case CF_INT:
case CF_LONG:
AddCodeLine ("jsr pushax"); /* Push the address */
push (CF_PTR); /* Correct the internal sp */
push (CF_PTR); /* Correct the internal spc */
g_getind (flags, offs); /* Fetch the value */
g_inc (flags, val); /* Increment value in primary */
g_putind (flags, offs); /* Store the value back */
@@ -2089,15 +2089,15 @@ void g_subeqlocal (unsigned flags, int Offs, unsigned long val)
AddCodeLine ("ldy #$%02X", Offs);
AddCodeLine ("ldx #$00");
if (flags & CF_CONST) {
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("sec");
AddCodeLine ("sbc #$%02X", (unsigned char)val);
} else {
AddCodeLine ("eor #$FF");
AddCodeLine ("sec");
AddCodeLine ("adc (sp),y");
AddCodeLine ("adc (spc),y");
}
AddCodeLine ("sta (sp),y");
AddCodeLine ("sta (spc),y");
if ((flags & CF_UNSIGNED) == 0) {
unsigned L = GetLocalLabel();
AddCodeLine ("bpl %s", LocalLabelName (L));
@@ -2157,7 +2157,7 @@ void g_subeqind (unsigned flags, unsigned offs, unsigned long val)
case CF_INT:
case CF_LONG:
AddCodeLine ("jsr pushax"); /* Push the address */
push (CF_PTR); /* Correct the internal sp */
push (CF_PTR); /* Correct the internal spc */
g_getind (flags, offs); /* Fetch the value */
g_dec (flags, val); /* Increment value in primary */
g_putind (flags, offs); /* Store the value back */
@@ -2208,10 +2208,10 @@ void g_addaddr_local (unsigned flags attribute ((unused)), int offs)
/* Label was used above */
g_defcodelabel (L);
}
AddCodeLine ("adc sp");
AddCodeLine ("adc spc");
AddCodeLine ("tay");
AddCodeLine ("txa");
AddCodeLine ("adc sp+1");
AddCodeLine ("adc spc+1");
AddCodeLine ("tax");
AddCodeLine ("tya");
}
@@ -2512,10 +2512,10 @@ void g_callind (unsigned Flags, unsigned ArgSize, int Offs)
CheckLocalOffs (Offs);
AddCodeLine ("pha");
AddCodeLine ("ldy #$%02X", Offs);
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("sta jmpvec+1");
AddCodeLine ("iny");
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("sta jmpvec+2");
AddCodeLine ("pla");
AddCodeLine ("jsr jmpvec");
@@ -2573,11 +2573,11 @@ void g_lateadjustSP (unsigned label)
AddCodeLine ("pha");
AddCodeLine ("lda %s", LocalDataLabelName (label));
AddCodeLine ("clc");
AddCodeLine ("adc sp");
AddCodeLine ("sta sp");
AddCodeLine ("adc spc");
AddCodeLine ("sta spc");
AddCodeLine ("lda %s+1", LocalDataLabelName (label));
AddCodeLine ("adc sp+1");
AddCodeLine ("sta sp+1");
AddCodeLine ("adc spc+1");
AddCodeLine ("sta spc+1");
AddCodeLine ("pla");
}
@@ -2591,11 +2591,11 @@ void g_drop (unsigned Space)
AddCodeLine ("pha");
AddCodeLine ("lda #$%02X", (unsigned char) Space);
AddCodeLine ("clc");
AddCodeLine ("adc sp");
AddCodeLine ("sta sp");
AddCodeLine ("adc spc");
AddCodeLine ("sta spc");
AddCodeLine ("lda #$%02X", (unsigned char) (Space >> 8));
AddCodeLine ("adc sp+1");
AddCodeLine ("sta sp+1");
AddCodeLine ("adc spc+1");
AddCodeLine ("sta spc+1");
AddCodeLine ("pla");
} else if (Space > 8) {
AddCodeLine ("ldy #$%02X", Space);
@@ -2618,13 +2618,13 @@ void g_space (int Space)
** overhead.
*/
AddCodeLine ("pha");
AddCodeLine ("lda sp");
AddCodeLine ("lda spc");
AddCodeLine ("sec");
AddCodeLine ("sbc #$%02X", (unsigned char) Space);
AddCodeLine ("sta sp");
AddCodeLine ("lda sp+1");
AddCodeLine ("sta spc");
AddCodeLine ("lda spc+1");
AddCodeLine ("sbc #$%02X", (unsigned char) (Space >> 8));
AddCodeLine ("sta sp+1");
AddCodeLine ("sta spc+1");
AddCodeLine ("pla");
} else if (Space > 8) {
AddCodeLine ("ldy #$%02X", Space);
@@ -4584,14 +4584,14 @@ void g_initauto (unsigned Label, unsigned Size)
AddCodeLine ("ldy #$%02X", Size-1);
g_defcodelabel (CodeLabel);
AddCodeLine ("lda %s,y", GetLabelName (CF_STATIC, Label, 0));
AddCodeLine ("sta (sp),y");
AddCodeLine ("sta (spc),y");
AddCodeLine ("dey");
AddCodeLine ("bpl %s", LocalLabelName (CodeLabel));
} else if (Size <= 256) {
AddCodeLine ("ldy #$00");
g_defcodelabel (CodeLabel);
AddCodeLine ("lda %s,y", GetLabelName (CF_STATIC, Label, 0));
AddCodeLine ("sta (sp),y");
AddCodeLine ("sta (spc),y");
AddCodeLine ("iny");
AddCmpCodeIfSizeNot256 ("cpy #$%02X", Size);
AddCodeLine ("bne %s", LocalLabelName (CodeLabel));

View File

@@ -390,8 +390,8 @@ static const ZPInfo ZPInfoTable[] = {
{ 7, "regbank", 6, REG_NONE, REG_NONE },
{ 0, "regsave", 4, REG_SAVE_LO, REG_SAVE },
{ 0, "regsave+1", 3, REG_SAVE_HI, REG_SAVE },
{ 0, "sp", 2, REG_SP_LO, REG_SP },
{ 0, "sp+1", 1, REG_SP_HI, REG_SP },
{ 0, "spc", 2, REG_SP_LO, REG_SP },
{ 0, "spc+1", 1, REG_SP_HI, REG_SP },
{ 0, "sreg", 2, REG_SREG_LO, REG_SREG },
{ 0, "sreg+1", 1, REG_SREG_HI, REG_SREG },
{ 0, "tmp1", 1, REG_TMP1, REG_TMP1 },

View File

@@ -75,8 +75,8 @@ struct RegContents;
#define REG_SP_HI 0x2000U
/* Defines for some special register usage */
#define SLV_IND 0x00010000U /* Accesses (sp),y */
#define SLV_TOP 0x00020000U /* Accesses (sp),0 */
#define SLV_IND 0x00010000U /* Accesses (spc),y */
#define SLV_TOP 0x00020000U /* Accesses (spc),0 */
#define SLV_SP65 0x00200000U /* Accesses 6502 stack pointer */
#define SLV_PH65 0x00400000U /* Pushes onto 6502 stack */
#define SLV_PL65 0x00800000U /* Pops from 6502 stack */

View File

@@ -810,7 +810,7 @@ static unsigned RunOptGroup5 (CodeSeg* S)
static unsigned RunOptGroup6 (CodeSeg* S)
/* This one is quite special. It tries to replace "lda (sp),y" by "lda (sp,x)".
/* This one is quite special. It tries to replace "lda (spc),y" by "lda (spc,x)".
** The latter is ony cycle slower, but if we're able to remove the necessary
** load of the Y register, because X is zero anyway, we gain 1 cycle and
** shorten the code by one (transfer) or two bytes (load). So what we do is

View File

@@ -333,14 +333,14 @@ static int Affected (LoadRegInfo* LRI, const CodeEntry* E)
*/
if (E->AM == AM65_ABS ||
E->AM == AM65_ZP ||
(E->AM == AM65_ZP_INDY && strcmp (E->ArgBase, "sp") == 0)
(E->AM == AM65_ZP_INDY && strcmp (E->ArgBase, "spc") == 0)
) {
if ((LRI->Flags & LI_CHECK_ARG) != 0) {
if (AE == 0 ||
(AE->AM != AM65_ABS &&
AE->AM != AM65_ZP &&
(AE->AM != AM65_ZP_INDY ||
strcmp (AE->ArgBase, "sp") != 0)) ||
strcmp (AE->ArgBase, "spc") != 0)) ||
(AE->ArgOff == E->ArgOff &&
strcmp (AE->ArgBase, E->ArgBase) == 0)) {
@@ -445,7 +445,7 @@ void PrepairLoadRegInfoForArgCheck (CodeSeg* S, LoadRegInfo* LRI, CodeEntry* E)
/* These insns are replaceable only if they are not modified later */
LRI->Flags |= LI_CHECK_ARG | LI_CHECK_Y;
} else if ((E->AM == AM65_ZP_INDY) &&
strcmp (E->Arg, "sp") == 0) {
strcmp (E->Arg, "spc") == 0) {
/* A load from the stack with known offset is also ok, but in this
** case we must reload the index register later. Please note that
** a load indirect via other zero page locations is not ok, since
@@ -556,7 +556,7 @@ unsigned int TrackLoads (LoadInfo* LI, CodeSeg* S, int I)
/* These insns are replaceable only if they are not modified later */
LRI->Flags |= LI_CHECK_ARG | LI_CHECK_Y;
} else if (E->AM == AM65_ZP_INDY &&
strcmp (E->Arg, "sp") == 0) {
strcmp (E->Arg, "spc") == 0) {
/* A load from the stack with known offset is also ok, but in this
** case we must reload the index register later. Please note that
** a load indirect via other zero page locations is not ok, since
@@ -839,7 +839,7 @@ void AdjustStackOffset (StackOpData* D, unsigned Offs)
if (E->OPC != OP65_JSR) {
/* Check against some things that should not happen */
CHECK (E->AM == AM65_ZP_INDY && E->RI->In.RegY >= (short) Offs);
CHECK (strcmp (E->Arg, "sp") == 0);
CHECK (strcmp (E->Arg, "spc") == 0);
/* We need to correct this one */
Correction = 2;
@@ -1056,8 +1056,8 @@ void AddOpLow (StackOpData* D, opc_t OPC, LoadInfo* LI)
InsertEntry (D, X, D->IP++);
if (LI->A.LoadEntry->OPC == OP65_JSR) {
/* opc (sp),y */
X = NewCodeEntry (OPC, AM65_ZP_INDY, "sp", 0, D->OpEntry->LI);
/* opc (spc),y */
X = NewCodeEntry (OPC, AM65_ZP_INDY, "spc", 0, D->OpEntry->LI);
} else {
/* opc src,y */
X = NewCodeEntry (OPC, LI->A.LoadEntry->AM, LI->A.LoadEntry->Arg, 0, D->OpEntry->LI);
@@ -1119,8 +1119,8 @@ void AddOpHigh (StackOpData* D, opc_t OPC, LoadInfo* LI, int KeepResult)
InsertEntry (D, X, D->IP++);
if (LI->X.LoadEntry->OPC == OP65_JSR) {
/* opc (sp),y */
X = NewCodeEntry (OPC, AM65_ZP_INDY, "sp", 0, D->OpEntry->LI);
/* opc (spc),y */
X = NewCodeEntry (OPC, AM65_ZP_INDY, "spc", 0, D->OpEntry->LI);
} else {
/* opc src,y */
X = NewCodeEntry (OPC, LI->X.LoadEntry->AM, LI->X.LoadEntry->Arg, 0, D->OpEntry->LI);
@@ -1310,10 +1310,10 @@ const char* GetZPName (unsigned ZPLoc)
return "save+1";
}
if ((ZPLoc & REG_SP_LO) != 0) {
return "sp";
return "spc";
}
if ((ZPLoc & REG_SP_HI) != 0) {
return "sp+1";
return "spc+1";
}
return 0;

View File

@@ -62,15 +62,15 @@ unsigned OptAdd1 (CodeSeg* S)
** and replace it by:
**
** ldy #xx-1
** lda (sp),y
** lda (spc),y
** ldy #yy-3
** clc
** adc (sp),y
** adc (spc),y
** pha
** ldy #xx
** lda (sp),y
** lda (spc),y
** ldy #yy-2
** adc (sp),y
** adc (spc),y
** tax
** pla
*/
@@ -104,8 +104,8 @@ unsigned OptAdd1 (CodeSeg* S)
/* Correct the stack of the first Y register load */
CE_SetNumArg (L[0], L[0]->Num - 1);
/* lda (sp),y */
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "sp", 0, L[1]->LI);
/* lda (spc),y */
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "spc", 0, L[1]->LI);
CS_InsertEntry (S, X, I+1);
/* ldy #yy-3 */
@@ -117,8 +117,8 @@ unsigned OptAdd1 (CodeSeg* S)
X = NewCodeEntry (OP65_CLC, AM65_IMP, 0, 0, L[5]->LI);
CS_InsertEntry (S, X, I+3);
/* adc (sp),y */
X = NewCodeEntry (OP65_ADC, AM65_ZP_INDY, "sp", 0, L[5]->LI);
/* adc (spc),y */
X = NewCodeEntry (OP65_ADC, AM65_ZP_INDY, "spc", 0, L[5]->LI);
CS_InsertEntry (S, X, I+4);
/* pha */
@@ -130,8 +130,8 @@ unsigned OptAdd1 (CodeSeg* S)
X = NewCodeEntry (OP65_LDY, AM65_IMM, Arg, 0, L[1]->LI);
CS_InsertEntry (S, X, I+6);
/* lda (sp),y */
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "sp", 0, L[1]->LI);
/* lda (spc),y */
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "spc", 0, L[1]->LI);
CS_InsertEntry (S, X, I+7);
/* ldy #yy-2 */
@@ -139,8 +139,8 @@ unsigned OptAdd1 (CodeSeg* S)
X = NewCodeEntry (OP65_LDY, AM65_IMM, Arg, 0, L[4]->LI);
CS_InsertEntry (S, X, I+8);
/* adc (sp),y */
X = NewCodeEntry (OP65_ADC, AM65_ZP_INDY, "sp", 0, L[5]->LI);
/* adc (spc),y */
X = NewCodeEntry (OP65_ADC, AM65_ZP_INDY, "spc", 0, L[5]->LI);
CS_InsertEntry (S, X, I+9);
/* tax */
@@ -181,16 +181,16 @@ unsigned OptAdd2 (CodeSeg* S)
** and replace it by:
**
** ldy #xx-1
** lda (sp),y
** lda (spc),y
** ldy #yy
** clc
** adc (sp),y
** sta (sp),y
** adc (spc),y
** sta (spc),y
** ldy #xx
** lda (sp),y
** lda (spc),y
** ldy #yy+1
** adc (sp),y
** sta (sp),y
** adc (spc),y
** sta (spc),y
**
** provided that a/x is not used later.
*/
@@ -226,8 +226,8 @@ unsigned OptAdd2 (CodeSeg* S)
X = NewCodeEntry (OP65_LDY, AM65_IMM, Arg, 0, L[0]->LI);
CS_InsertEntry (S, X, I+4);
/* lda (sp),y */
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "sp", 0, L[1]->LI);
/* lda (spc),y */
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "spc", 0, L[1]->LI);
CS_InsertEntry (S, X, I+5);
/* ldy #yy */
@@ -238,20 +238,20 @@ unsigned OptAdd2 (CodeSeg* S)
X = NewCodeEntry (OP65_CLC, AM65_IMP, 0, 0, L[3]->LI);
CS_InsertEntry (S, X, I+7);
/* adc (sp),y */
X = NewCodeEntry (OP65_ADC, AM65_ZP_INDY, "sp", 0, L[3]->LI);
/* adc (spc),y */
X = NewCodeEntry (OP65_ADC, AM65_ZP_INDY, "spc", 0, L[3]->LI);
CS_InsertEntry (S, X, I+8);
/* sta (sp),y */
X = NewCodeEntry (OP65_STA, AM65_ZP_INDY, "sp", 0, L[3]->LI);
/* sta (spc),y */
X = NewCodeEntry (OP65_STA, AM65_ZP_INDY, "spc", 0, L[3]->LI);
CS_InsertEntry (S, X, I+9);
/* ldy #xx */
X = NewCodeEntry (OP65_LDY, AM65_IMM, L[0]->Arg, 0, L[0]->LI);
CS_InsertEntry (S, X, I+10);
/* lda (sp),y */
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "sp", 0, L[1]->LI);
/* lda (spc),y */
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "spc", 0, L[1]->LI);
CS_InsertEntry (S, X, I+11);
/* ldy #yy+1 */
@@ -259,12 +259,12 @@ unsigned OptAdd2 (CodeSeg* S)
X = NewCodeEntry (OP65_LDY, AM65_IMM, Arg, 0, L[2]->LI);
CS_InsertEntry (S, X, I+12);
/* adc (sp),y */
X = NewCodeEntry (OP65_ADC, AM65_ZP_INDY, "sp", 0, L[3]->LI);
/* adc (spc),y */
X = NewCodeEntry (OP65_ADC, AM65_ZP_INDY, "spc", 0, L[3]->LI);
CS_InsertEntry (S, X, I+13);
/* sta (sp),y */
X = NewCodeEntry (OP65_STA, AM65_ZP_INDY, "sp", 0, L[3]->LI);
/* sta (spc),y */
X = NewCodeEntry (OP65_STA, AM65_ZP_INDY, "spc", 0, L[3]->LI);
CS_InsertEntry (S, X, I+14);
/* Delete the old code */

View File

@@ -55,14 +55,14 @@ unsigned OptAdd1 (CodeSeg* S);
** jsr pushax
** ldy xxx
** ldx #$00
** lda (sp),y
** lda (spc),y
** jsr tosaddax
**
** and replace it by:
**
** ldy xxx-2
** clc
** adc (sp),y
** adc (spc),y
** bcc L
** inx
** L:
@@ -72,26 +72,26 @@ unsigned OptAdd2 (CodeSeg* S);
/* Search for the sequence
**
** ldy #xx
** lda (sp),y
** lda (spc),y
** tax
** dey
** lda (sp),y
** lda (spc),y
** ldy #$yy
** jsr addeqysp
**
** and replace it by:
**
** ldy #xx-1
** lda (sp),y
** lda (spc),y
** ldy #yy
** clc
** adc (sp),y
** sta (sp),y
** adc (spc),y
** sta (spc),y
** ldy #xx
** lda (sp),y
** lda (spc),y
** ldy #yy+1
** adc (sp),y
** sta (sp),y
** adc (spc),y
** sta (spc),y
**
** provided that a/x is not used later.
*/

View File

@@ -743,9 +743,9 @@ unsigned OptBNegAX2 (CodeSeg* S)
** and replace it by
**
** ldy #xx
** lda (sp),y
** lda (spc),y
** dey
** ora (sp),y
** ora (spc),y
** jeq/jne ...
*/
{
@@ -772,16 +772,16 @@ unsigned OptBNegAX2 (CodeSeg* S)
CodeEntry* X;
/* lda (sp),y */
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "sp", 0, L[1]->LI);
/* lda (spc),y */
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "spc", 0, L[1]->LI);
CS_InsertEntry (S, X, I+1);
/* dey */
X = NewCodeEntry (OP65_DEY, AM65_IMP, 0, 0, L[1]->LI);
CS_InsertEntry (S, X, I+2);
/* ora (sp),y */
X = NewCodeEntry (OP65_ORA, AM65_ZP_INDY, "sp", 0, L[1]->LI);
/* ora (spc),y */
X = NewCodeEntry (OP65_ORA, AM65_ZP_INDY, "spc", 0, L[1]->LI);
CS_InsertEntry (S, X, I+3);
/* Invert the branch */

View File

@@ -431,22 +431,22 @@ unsigned OptCmp5 (CodeSeg* S)
/* The value is zero, we may use the simple code version:
** ldy #o-1
** lda (sp),y
** lda (spc),y
** ldy #o
** ora (sp),y
** ora (spc),y
** jne/jeq ...
*/
sprintf (Buf, "$%02X", (int)(L[0]->Num-1));
X = NewCodeEntry (OP65_LDY, AM65_IMM, Buf, 0, L[0]->LI);
CS_InsertEntry (S, X, I+1);
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "sp", 0, L[1]->LI);
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "spc", 0, L[1]->LI);
CS_InsertEntry (S, X, I+2);
X = NewCodeEntry (OP65_LDY, AM65_IMM, L[0]->Arg, 0, L[0]->LI);
CS_InsertEntry (S, X, I+3);
X = NewCodeEntry (OP65_ORA, AM65_ZP_INDY, "sp", 0, L[1]->LI);
X = NewCodeEntry (OP65_ORA, AM65_ZP_INDY, "spc", 0, L[1]->LI);
CS_InsertEntry (S, X, I+4);
CS_DelEntries (S, I+5, 3); /* cpx/bne/cmp */
@@ -461,18 +461,18 @@ unsigned OptCmp5 (CodeSeg* S)
** of the low byte after the first branch if possible:
**
** ldy #o
** lda (sp),y
** lda (spc),y
** cmp #a
** bne L1
** ldy #o-1
** lda (sp),y
** lda (spc),y
** cmp #b
** jne/jeq ...
*/
X = NewCodeEntry (OP65_LDY, AM65_IMM, L[0]->Arg, 0, L[0]->LI);
CS_InsertEntry (S, X, I+3);
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "sp", 0, L[1]->LI);
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "spc", 0, L[1]->LI);
CS_InsertEntry (S, X, I+4);
X = NewCodeEntry (OP65_CMP, L[2]->AM, L[2]->Arg, 0, L[2]->LI);
@@ -482,7 +482,7 @@ unsigned OptCmp5 (CodeSeg* S)
X = NewCodeEntry (OP65_LDY, AM65_IMM, Buf, 0, L[0]->LI);
CS_InsertEntry (S, X, I+7);
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "sp", 0, L[1]->LI);
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "spc", 0, L[1]->LI);
CS_InsertEntry (S, X, I+8);
CS_DelEntries (S, I, 3); /* ldy/jsr/cpx */

View File

@@ -113,10 +113,10 @@ unsigned OptCmp5 (CodeSeg* S);
/* Optimize compares of local variables:
**
** ldy #o
** lda (sp),y
** lda (spc),y
** tax
** dey
** lda (sp),y
** lda (spc),y
** cpx #a
** bne L1
** cmp #b

View File

@@ -492,9 +492,9 @@ unsigned OptGotoSPAdj (CodeSeg* S)
L[1]->AM == AM65_ABS &&
L[2]->OPC == OP65_CLC &&
L[3]->OPC == OP65_ADC &&
strcmp (L[3]->Arg, "sp") == 0 &&
strcmp (L[3]->Arg, "spc") == 0 &&
L[6]->OPC == OP65_ADC &&
strcmp (L[6]->Arg, "sp+1") == 0 &&
strcmp (L[6]->Arg, "spc+1") == 0 &&
L[9]->OPC == OP65_JMP) {
adjustment = FindSPAdjustment (L[1]->Arg);
@@ -617,7 +617,7 @@ unsigned OptLoad1 (CodeSeg* S)
CS_InsertEntry (S, X, I+1);
/* Load from stack */
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "sp", 0, E->LI);
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "spc", 0, E->LI);
CS_InsertEntry (S, X, I+2);
/* Now remove the call to the subroutine */
@@ -673,8 +673,8 @@ unsigned OptLoad2 (CodeSeg* S)
** later
*/
/* lda (sp),y */
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "sp", 0, L[0]->LI);
/* lda (spc),y */
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "spc", 0, L[0]->LI);
CS_InsertEntry (S, X, I+3);
/* sta abs */
@@ -685,8 +685,8 @@ unsigned OptLoad2 (CodeSeg* S)
X = NewCodeEntry (OP65_DEY, AM65_IMP, 0, 0, L[0]->LI);
CS_InsertEntry (S, X, I+5);
/* lda (sp),y */
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "sp", 0, L[0]->LI);
/* lda (spc),y */
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "spc", 0, L[0]->LI);
CS_InsertEntry (S, X, I+6);
/* sta abs */
@@ -700,8 +700,8 @@ unsigned OptLoad2 (CodeSeg* S)
/* Standard replacement */
/* lda (sp),y */
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "sp", 0, L[0]->LI);
/* lda (spc),y */
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "spc", 0, L[0]->LI);
CS_InsertEntry (S, X, I+1);
/* tax */
@@ -712,8 +712,8 @@ unsigned OptLoad2 (CodeSeg* S)
X = NewCodeEntry (OP65_DEY, AM65_IMP, 0, 0, L[0]->LI);
CS_InsertEntry (S, X, I+3);
/* lda (sp),y */
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "sp", 0, L[0]->LI);
/* lda (spc),y */
X = NewCodeEntry (OP65_LDA, AM65_ZP_INDY, "spc", 0, L[0]->LI);
CS_InsertEntry (S, X, I+4);
/* Now remove the call to the subroutine */

View File

@@ -359,7 +359,7 @@ unsigned OptPtrLoad4 (CodeSeg* S)
** ldx #>(label+0)
** ldy #$xx
** clc
** adc (sp),y
** adc (spc),y
** bcc L
** inx
** L: ldy #$00
@@ -368,7 +368,7 @@ unsigned OptPtrLoad4 (CodeSeg* S)
** and replace it by:
**
** ldy #$xx
** lda (sp),y
** lda (spc),y
** tay
** ldx #$00
** lda label,y
@@ -553,7 +553,7 @@ unsigned OptPtrLoad6 (CodeSeg* S)
** jsr pushax
** ldy #xxx
** ldx #$00
** lda (sp),y
** lda (spc),y
** jsr tosaddax
** ldy #$00
** jsr ldauidx
@@ -563,7 +563,7 @@ unsigned OptPtrLoad6 (CodeSeg* S)
** sta ptr1
** stx ptr1+1
** ldy #xxx-2
** lda (sp),y
** lda (spc),y
** tay
** ldx #$00
** lda (ptr1),y
@@ -613,7 +613,7 @@ unsigned OptPtrLoad6 (CodeSeg* S)
X = NewCodeEntry (OP65_LDY, AM65_IMM, Arg, 0, L[1]->LI);
CS_InsertEntry (S, X, I+9);
/* lda (sp),y */
/* lda (spc),y */
X = NewCodeEntry (OP65_LDA, L[3]->AM, L[3]->Arg, 0, L[3]->LI);
CS_InsertEntry (S, X, I+10);

View File

@@ -127,7 +127,7 @@ unsigned OptPtrLoad4 (CodeSeg* S);
** ldx #>(label+0)
** ldy #$xx
** clc
** adc (sp),y
** adc (spc),y
** bcc L
** inx
** L: ldy #$00
@@ -136,7 +136,7 @@ unsigned OptPtrLoad4 (CodeSeg* S);
** and replace it by:
**
** ldy #$xx
** lda (sp),y
** lda (spc),y
** tay
** ldx #$00
** lda label,y
@@ -166,7 +166,7 @@ unsigned OptPtrLoad6 (CodeSeg* S);
** jsr pushax
** ldy xxx
** ldx #$00
** lda (sp),y
** lda (spc),y
** jsr tosaddax
** ldy #$00
** jsr ldauidx
@@ -176,7 +176,7 @@ unsigned OptPtrLoad6 (CodeSeg* S);
** sta ptr1
** stx ptr1+1
** ldy xxx
** lda (sp),y
** lda (spc),y
** tay
** lda (ptr1),y
*/

View File

@@ -396,7 +396,7 @@ unsigned OptPtrStore2 (CodeSeg* S)
** L: jsr pushax
** ldy yyy
** ldx #$00
** lda (sp),y
** lda (spc),y
** ldy #$00
** jsr staspidx
**
@@ -406,7 +406,7 @@ unsigned OptPtrStore2 (CodeSeg* S)
** stx ptr1+1
** ldy yyy-2
** ldx #$00
** lda (sp),y
** lda (spc),y
** ldy xxx
** sta (ptr1),y
**
@@ -414,7 +414,7 @@ unsigned OptPtrStore2 (CodeSeg* S)
**
** ldy yyy-2
** ldx #$00
** lda (sp),y
** lda (spc),y
** ldy xxx
** sta (zp),y
**
@@ -422,7 +422,7 @@ unsigned OptPtrStore2 (CodeSeg* S)
**
** ldy yyy-2
** ldx #$00
** lda (sp),y
** lda (spc),y
** ldy xxx
** sta label,y
**
@@ -430,7 +430,7 @@ unsigned OptPtrStore2 (CodeSeg* S)
**
** ldy yyy-2
** ldx #$00
** lda (sp),y
** lda (spc),y
** ldy xxx
** sta $xxxx,y
**
@@ -468,7 +468,7 @@ unsigned OptPtrStore2 (CodeSeg* S)
L[6]->OPC == OP65_LDX &&
L[7]->OPC == OP65_LDA &&
L[7]->AM == AM65_ZP_INDY &&
strcmp (L[7]->Arg, "sp") == 0 &&
strcmp (L[7]->Arg, "spc") == 0 &&
L[8]->OPC == OP65_LDY &&
(L[8]->AM == AM65_ABS ||
L[8]->AM == AM65_ZP ||

View File

@@ -105,7 +105,7 @@ unsigned OptPtrStore2 (CodeSeg* S);
** L: jsr pushax
** ldy yyy
** ldx #$00
** lda (sp),y
** lda (spc),y
** ldy #$00
** jsr staspidx
**
@@ -115,7 +115,7 @@ unsigned OptPtrStore2 (CodeSeg* S);
** stx ptr1+1
** ldy yyy-2
** ldx #$00
** lda (sp),y
** lda (spc),y
** ldy xxx
** sta (ptr1),y
**
@@ -123,7 +123,7 @@ unsigned OptPtrStore2 (CodeSeg* S);
**
** ldy yyy-2
** ldx #$00
** lda (sp),y
** lda (spc),y
** ldy xxx
** sta (zp),y
**
@@ -131,7 +131,7 @@ unsigned OptPtrStore2 (CodeSeg* S);
**
** ldy yyy-2
** ldx #$00
** lda (sp),y
** lda (spc),y
** ldy xxx
** sta label,y
**
@@ -139,7 +139,7 @@ unsigned OptPtrStore2 (CodeSeg* S);
**
** ldy yyy-2
** ldx #$00
** lda (sp),y
** lda (spc),y
** ldy xxx
** sta $xxxx,y
**

View File

@@ -1292,10 +1292,10 @@ static unsigned Opt_a_tosicmp (StackOpData* D)
}
InsertEntry (D, X, D->IP++);
/* cmp src,y OR cmp (sp),y */
/* cmp src,y OR cmp (spc),y */
if (D->Rhs.A.LoadEntry->OPC == OP65_JSR) {
/* opc (sp),y */
X = NewCodeEntry (OP65_CMP, AM65_ZP_INDY, "sp", 0, D->OpEntry->LI);
/* opc (spc),y */
X = NewCodeEntry (OP65_CMP, AM65_ZP_INDY, "spc", 0, D->OpEntry->LI);
} else {
/* opc src,y */
X = NewCodeEntry (OP65_CMP, D->Rhs.A.LoadEntry->AM, D->Rhs.A.LoadEntry->Arg, 0, D->OpEntry->LI);

View File

@@ -48,7 +48,7 @@
static void InsertStore (CodeSeg* S, unsigned* IP, LineInfo* LI)
{
CodeEntry* X = NewCodeEntry (OP65_STA, AM65_ZP_INDY, "sp", 0, LI);
CodeEntry* X = NewCodeEntry (OP65_STA, AM65_ZP_INDY, "spc", 0, LI);
CS_InsertEntry (S, X, (*IP)++);
}

View File

@@ -269,7 +269,7 @@ static void ParseAutoDecl (Declarator* Decl)
Sym->V.Offs = F_ReserveLocalSpace (CurrentFunc, Size);
/* Next, allocate the space on the stack. This means that the
** variable is now located at offset 0 from the current sp.
** variable is now located at offset 0 from the current spc.
*/
F_AllocLocalSpace (CurrentFunc);

View File

@@ -370,7 +370,7 @@ static void StdFunc_memcpy (FuncDesc* F attribute ((unused)), ExprDesc* Expr)
AddCodeLine ("ldy #$%02X", (unsigned char) (Offs + Arg3.Expr.IVal - 1));
g_defcodelabel (Label);
AddCodeLine ("lda %s,y", ED_GetLabelName (&Arg2.Expr, -Offs));
AddCodeLine ("sta (sp),y");
AddCodeLine ("sta (spc),y");
AddCodeLine ("dey");
AddCodeLine ("bpl %s", LocalLabelName (Label));
} else {
@@ -378,7 +378,7 @@ static void StdFunc_memcpy (FuncDesc* F attribute ((unused)), ExprDesc* Expr)
AddCodeLine ("ldy #$%02X", (unsigned char) (Offs + Arg3.Expr.IVal - 1));
g_defcodelabel (Label);
AddCodeLine ("lda %s,x", ED_GetLabelName (&Arg2.Expr, 0));
AddCodeLine ("sta (sp),y");
AddCodeLine ("sta (spc),y");
AddCodeLine ("dey");
AddCodeLine ("dex");
AddCodeLine ("bpl %s", LocalLabelName (Label));
@@ -390,7 +390,7 @@ static void StdFunc_memcpy (FuncDesc* F attribute ((unused)), ExprDesc* Expr)
AddCodeLine ("ldy #$%02X", (unsigned char) Offs);
g_defcodelabel (Label);
AddCodeLine ("lda %s,y", ED_GetLabelName (&Arg2.Expr, -Offs));
AddCodeLine ("sta (sp),y");
AddCodeLine ("sta (spc),y");
AddCodeLine ("iny");
AddCmpCodeIfSizeNot256 ("cpy #$%02X", Offs + Arg3.Expr.IVal);
AddCodeLine ("bne %s", LocalLabelName (Label));
@@ -399,7 +399,7 @@ static void StdFunc_memcpy (FuncDesc* F attribute ((unused)), ExprDesc* Expr)
AddCodeLine ("ldy #$%02X", (unsigned char) Offs);
g_defcodelabel (Label);
AddCodeLine ("lda %s,x", ED_GetLabelName (&Arg2.Expr, 0));
AddCodeLine ("sta (sp),y");
AddCodeLine ("sta (spc),y");
AddCodeLine ("iny");
AddCodeLine ("inx");
AddCmpCodeIfSizeNot256 ("cpx #$%02X", Arg3.Expr.IVal);
@@ -447,7 +447,7 @@ static void StdFunc_memcpy (FuncDesc* F attribute ((unused)), ExprDesc* Expr)
if (Offs == 0) {
AddCodeLine ("ldy #$%02X", (unsigned char) (Arg3.Expr.IVal - 1));
g_defcodelabel (Label);
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("sta %s,y", ED_GetLabelName (&Arg1.Expr, 0));
AddCodeLine ("dey");
AddCodeLine ("bpl %s", LocalLabelName (Label));
@@ -455,7 +455,7 @@ static void StdFunc_memcpy (FuncDesc* F attribute ((unused)), ExprDesc* Expr)
AddCodeLine ("ldx #$%02X", (unsigned char) (Arg3.Expr.IVal-1));
AddCodeLine ("ldy #$%02X", (unsigned char) (Offs + Arg3.Expr.IVal - 1));
g_defcodelabel (Label);
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("sta %s,x", ED_GetLabelName (&Arg1.Expr, 0));
AddCodeLine ("dey");
AddCodeLine ("dex");
@@ -467,7 +467,7 @@ static void StdFunc_memcpy (FuncDesc* F attribute ((unused)), ExprDesc* Expr)
if (Offs == 0 || AllowOneIndex) {
AddCodeLine ("ldy #$%02X", (unsigned char) Offs);
g_defcodelabel (Label);
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("sta %s,y", ED_GetLabelName (&Arg1.Expr, -Offs));
AddCodeLine ("iny");
AddCmpCodeIfSizeNot256 ("cpy #$%02X", Offs + Arg3.Expr.IVal);
@@ -476,7 +476,7 @@ static void StdFunc_memcpy (FuncDesc* F attribute ((unused)), ExprDesc* Expr)
AddCodeLine ("ldx #$00");
AddCodeLine ("ldy #$%02X", (unsigned char) Offs);
g_defcodelabel (Label);
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("sta %s,x", ED_GetLabelName (&Arg1.Expr, 0));
AddCodeLine ("iny");
AddCodeLine ("inx");
@@ -511,14 +511,14 @@ static void StdFunc_memcpy (FuncDesc* F attribute ((unused)), ExprDesc* Expr)
if (Arg3.Expr.IVal <= 129) {
AddCodeLine ("ldy #$%02X", (unsigned char) (Arg3.Expr.IVal - 1));
g_defcodelabel (Label);
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("sta (ptr1),y");
AddCodeLine ("dey");
AddCodeLine ("bpl %s", LocalLabelName (Label));
} else {
AddCodeLine ("ldy #$00");
g_defcodelabel (Label);
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("sta (ptr1),y");
AddCodeLine ("iny");
AddCmpCodeIfSizeNot256 ("cpy #$%02X", Arg3.Expr.IVal);
@@ -702,7 +702,7 @@ static void StdFunc_memset (FuncDesc* F attribute ((unused)), ExprDesc* Expr)
AddCodeLine ("ldy #$%02X", (unsigned char) Offs);
AddCodeLine ("lda #$%02X", (unsigned char) Arg2.Expr.IVal);
g_defcodelabel (Label);
AddCodeLine ("sta (sp),y");
AddCodeLine ("sta (spc),y");
AddCodeLine ("iny");
AddCmpCodeIfSizeNot256 ("cpy #$%02X", Offs + Arg3.Expr.IVal);
AddCodeLine ("bne %s", LocalLabelName (Label));
@@ -856,7 +856,7 @@ static void StdFunc_strcmp (FuncDesc* F attribute ((unused)), ExprDesc* Expr)
/* Generate code */
AddCodeLine ("ldy #$%02X", Offs);
AddCodeLine ("ldx #$00");
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
} else if (IsArray && ED_IsLocConst (&Arg1.Expr)) {
/* Drop the generated code */
RemoveCode (&Arg1.Load);
@@ -1089,14 +1089,14 @@ static void StdFunc_strcpy (FuncDesc* F attribute ((unused)), ExprDesc* Expr)
if (Offs == 0 || AllowOneIndex) {
g_defcodelabel (L1);
AddCodeLine ("iny");
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("sta %s,y", ED_GetLabelName (&Arg1.Expr, -Offs));
} else {
AddCodeLine ("ldx #$FF");
g_defcodelabel (L1);
AddCodeLine ("iny");
AddCodeLine ("inx");
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("sta %s,x", ED_GetLabelName (&Arg1.Expr, 0));
}
AddCodeLine ("bne %s", LocalLabelName (L1));
@@ -1137,14 +1137,14 @@ static void StdFunc_strcpy (FuncDesc* F attribute ((unused)), ExprDesc* Expr)
g_defcodelabel (L1);
AddCodeLine ("iny");
AddCodeLine ("lda %s,y", ED_GetLabelName (&Arg2.Expr, -Offs));
AddCodeLine ("sta (sp),y");
AddCodeLine ("sta (spc),y");
} else {
AddCodeLine ("ldx #$FF");
g_defcodelabel (L1);
AddCodeLine ("iny");
AddCodeLine ("inx");
AddCodeLine ("lda %s,x", ED_GetLabelName (&Arg2.Expr, 0));
AddCodeLine ("sta (sp),y");
AddCodeLine ("sta (spc),y");
}
AddCodeLine ("bne %s", LocalLabelName (L1));
@@ -1284,7 +1284,7 @@ static void StdFunc_strlen (FuncDesc* F attribute ((unused)), ExprDesc* Expr)
g_defcodelabel (L);
AddCodeLine ("inx");
AddCodeLine ("iny");
AddCodeLine ("lda (sp),y");
AddCodeLine ("lda (spc),y");
AddCodeLine ("bne %s", LocalLabelName (L));
AddCodeLine ("txa");
AddCodeLine ("ldx #$00");

View File

@@ -458,7 +458,7 @@ static unsigned FindIdType (const char* TypeName)
{ "segment", SegmentId },
{ "source", SourceId },
{ "src", SourceId },
{ "sp", SpanId },
{ "spc", SpanId },
{ "span", SpanId },
{ "sym", SymbolId },
{ "symbol", SymbolId },

View File

@@ -230,7 +230,7 @@ static unsigned char ReadProgramFile (void)
}
}
/* Get the address of sp from the file header */
/* Get the address of spc from the file header */
if ((Val = fgetc(F)) != EOF) {
SPAddr = Val;
}