Fix PET target zero page variable range

This commit is contained in:
drmortalwombat 2025-03-19 17:16:20 +01:00
parent 2acca6d7b1
commit e6bc6371c9
2 changed files with 9 additions and 6 deletions

View File

@ -508,6 +508,8 @@ bool Compiler::GenerateCode(void)
regionZeroPage = mLinker->AddRegion(identZeroPage, 0x00e0, 0x00ff);
else if (mCompilerOptions & (COPT_EXTENDED_ZERO_PAGE | COPT_TARGET_NES))
regionZeroPage = mLinker->AddRegion(identZeroPage, 0x0080, 0x00ff);
else if (mTargetMachine == TMACH_PET_8K || mTargetMachine == TMACH_PET_16K || mTargetMachine == TMACH_PET_32K)
regionZeroPage = mLinker->AddRegion(identZeroPage, 0x00ed, 0x00f7);
else
regionZeroPage = mLinker->AddRegion(identZeroPage, 0x00f7, 0x00ff);
}

View File

@ -14347,12 +14347,13 @@ void NativeCodeBasicBlock::CallAssembler(InterCodeProcedure* proc, NativeCodePro
if (dins.mFlags & NCIF_VOLATILE)
simple = false;
if (dins.mMode == ASMIM_ZERO_PAGE && dins.mAddress >= BC_REG_WORK && dins.mAddress < BC_REG_WORK + 8)
uflags |= NICF_USE_WORKREGS;
// Make sure we are not aliasing zeropage globals
if (dins.mMode == ASMIM_ZERO_PAGE && dins.mLinkerObject)
dins.mMode = ASMIM_ABSOLUTE;
if (dins.mMode == ASMIM_ZERO_PAGE)
{
if (dins.mAddress >= BC_REG_WORK && dins.mAddress < BC_REG_WORK + 8)
uflags |= NICF_USE_WORKREGS;
else if (dins.mLinkerObject)
dins.mMode = ASMIM_ABSOLUTE; // Make sure we are not aliasing zeropage globals
}
if (dins.ChangesAccu())
uflags |= NCIF_USE_CPU_REG_A;