From 6fa82a5a5819b3ee97bc8bbbc13fc4b05ceeeb67 Mon Sep 17 00:00:00 2001 From: Karol Stasiak Date: Sun, 18 Mar 2018 23:51:25 +0100 Subject: [PATCH] Added ZeropagePseugoregister to default compilation flags --- .../scala/millfork/CompilationOptions.scala | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/main/scala/millfork/CompilationOptions.scala b/src/main/scala/millfork/CompilationOptions.scala index 9d833453..ea401a8c 100644 --- a/src/main/scala/millfork/CompilationOptions.scala +++ b/src/main/scala/millfork/CompilationOptions.scala @@ -76,15 +76,27 @@ object Cpu extends Enumeration { import CompilationFlag._ + private val alwaysDefaultFlags = Set( + VariableOverlap, CompactReturnDispatchParams, ZeropagePseudoregister + ) + def defaultFlags(x: Cpu.Value): Set[CompilationFlag.Value] = x match { - case StrictMos => Set(DecimalMode, PreventJmpIndirectBug, VariableOverlap, CompactReturnDispatchParams) - case Mos => Set(DecimalMode, PreventJmpIndirectBug, VariableOverlap, CompactReturnDispatchParams) - case Ricoh => Set(PreventJmpIndirectBug, VariableOverlap, CompactReturnDispatchParams) - case StrictRicoh => Set(PreventJmpIndirectBug, VariableOverlap, CompactReturnDispatchParams) - case Cmos => Set(DecimalMode, EmitCmosOpcodes, VariableOverlap, CompactReturnDispatchParams) - case HuC6280 => Set(DecimalMode, EmitCmosOpcodes, EmitHudsonOpcodes, VariableOverlap, CompactReturnDispatchParams) - case CE02 => Set(DecimalMode, EmitCmosOpcodes, Emit65CE02Opcodes, VariableOverlap, CompactReturnDispatchParams) - case Sixteen => Set(DecimalMode, EmitCmosOpcodes, EmitEmulation65816Opcodes, EmitNative65816Opcodes, ReturnWordsViaAccumulator, VariableOverlap, CompactReturnDispatchParams) + case StrictMos => + alwaysDefaultFlags ++ Set(DecimalMode, PreventJmpIndirectBug) + case Mos => + alwaysDefaultFlags ++ Set(DecimalMode, PreventJmpIndirectBug) + case Ricoh => + alwaysDefaultFlags ++ Set(PreventJmpIndirectBug) + case StrictRicoh => + alwaysDefaultFlags ++ Set(PreventJmpIndirectBug) + case Cmos => + alwaysDefaultFlags ++ Set(DecimalMode, EmitCmosOpcodes) + case HuC6280 => + alwaysDefaultFlags ++ Set(DecimalMode, EmitCmosOpcodes, EmitHudsonOpcodes) + case CE02 => + alwaysDefaultFlags ++ Set(DecimalMode, EmitCmosOpcodes, Emit65CE02Opcodes) + case Sixteen => + alwaysDefaultFlags ++ Set(DecimalMode, EmitCmosOpcodes, EmitEmulation65816Opcodes, EmitNative65816Opcodes, ReturnWordsViaAccumulator) } def fromString(name: String): Cpu.Value = name match {