Example #1
0
 public static void Preserve(RegisterBase reg, Action block)
 {
     reg.State.Push();
     Backup(reg);
     block.Invoke();
     Restore(reg);
     reg.State.Pop();
 }
Example #2
0
 public static void Restore(RegisterBase reg)
 {
     if (reg is RegisterA)
     {
         CPU6502.PLA();
         A.State.Pop();
     }
     else if (reg is RegisterX)
     {
         CPU6502.PLA();
         X.Set(A);
         X.State.Pop();
     }
     else if (reg is RegisterY)
     {
         CPU6502.PLA();
         Y.Set(A);
         Y.State.Pop();
     }
 }
Example #3
0
 public static void Backup(RegisterBase reg)
 {
     if (reg is RegisterA)
     {
         CPU6502.PHA();
         A.State.Push();
     }
     else if (reg is RegisterX)
     {
         CPU6502.TXA();
         //Use(Asm.TXA);
         CPU6502.PHA();
         X.State.Push();
     }
     else if (reg is RegisterY)
     {
         CPU6502.TYA();
         //Use(Asm.TYA);
         CPU6502.PHA();
         Y.State.Push();
     }
 }