nagra: clear exception state
authorleslie <unknown>
Sat, 14 Jun 2008 09:45:22 +0000 (17:45 +0800)
committerleslie <unknown>
Sat, 14 Jun 2008 09:45:22 +0000 (17:45 +0800)
systems/nagra/cpu.c
systems/nagra/cpu.h

index da46c6d381d46f8d417ad12c6dc984e8f76135a0..c3bdaca6507f0491259e6df21f9a706ffdcf07cd 100644 (file)
@@ -144,8 +144,8 @@ c6805::c6805(void) {
   cc.c=0; cc.z=0; cc.n=0; cc.i=0; cc.h=0; cc.v=1;
   pc=0; a=0; x=0; y=0; cr=dr=0; sp=spHi=0x100; spLow=0xC0;
   hasReadHandler=hasWriteHandler=false;
-  exptPending=false; timerDisable=0; exptBase=0x4000;
-  for(int i=0; i<EXPT_MAX; i++) expt[i]=false;
+  exptBase=0x4000;
+  ClearExceptions();
   ClearBreakpoints();
   InitMapper();
   ResetCycles();
@@ -263,6 +263,7 @@ void c6805::SetPc(unsigned short addr, unsigned char seg)
 {
   pc=addr; cr=seg;
   ResetCycles();
+  ClearExceptions();
 }
 
 void c6805::PopPc(void)
@@ -321,6 +322,12 @@ void c6805::RaiseException(int num)
     }
 }
 
+void c6805::ClearExceptions(void)
+{
+  exptPending=false; timerDisable=0;
+  for(int i=0; i<EXPT_MAX; i++) expt[i]=false;
+}
+
 void c6805::DisableTimers(int num)
 {
   timerDisable=num;
index b2f462e6b6e556a61c4ec555f101aafba07792cb..0a6f17fce0f4301fd7fbaeb11531a540ca737991 100644 (file)
@@ -153,6 +153,7 @@ protected:
   void AddCycles(unsigned int num);
   unsigned int Cycles(void) { return clockcycles; }
   void RaiseException(int num);
+  void ClearExceptions(void);
   void SetExptBase(unsigned short base);
   void DisableTimers(int num);
   virtual void Stepper(void)=0;