fn adc(&mut self) -> bool {
        self.fetch();

        let acc: u16 = self.acc.into();
        let fetched: u16 = self.fetched.into();

        let mut sum: u16 = acc + fetched;
        sum += if self.flags.carry { 1 } else { 0 };

        self.flags.set(Flags::N, sum & 0x80 != 0);

        // http://www.righto.com/2012/12/the-6502-overflow-flag-explained.html
        self.flags.set(Flags::V, (!(acc ^ fetched) & (acc ^ sum) & 0x80) != 0);
        self.flags.set(Flags::Z, sum == 0);
        self.flags.set(Flags::C, sum > 0xFF);

        self.acc = (sum & 0x00FF) as u8;

        true
    }
// ADC: Add with carry
// Affects: N V Z C
Add with carry
Affects: N V Z C
Add with carry Affects : N V Z C
fn adc(&mut self) -> bool {
        self.fetch();
        let acc: u16 = self.acc.into();
        let fetched: u16 = self.fetched.into();
        let mut sum: u16 = acc + fetched;
        sum += if self.flags.carry { 1 } else { 0 };
        self.flags.set(Flags::N, sum & 0x80 != 0);
        // http://www.righto.com/2012/12/the-6502-overflow-flag-explained.html
        self.flags.set(Flags::V, (!(acc ^ fetched) & (acc ^ sum) & 0x80) != 0);
        self.flags.set(Flags::Z, sum == 0);
        self.flags.set(Flags::C, sum > 0xFF);
        self.acc = (sum & 0x00FF) as u8;
        true
    }
fn adc ( & mut self ) -> bool { self . fetch ( ) ; let acc : u16 = self . acc . into ( ) ; let fetched : u16 = self . fetched . into ( ) ; let mut sum : u16 = acc + fetched ; sum += if self . flags . carry { 1 } else { 0 } ; self . flags . set ( Flags :: N , sum & 0x80 != 0 ) ; // http://www.righto.com/2012/12/the-6502-overflow-flag-explained.html self . flags . set ( Flags :: V , ( ! ( acc ^ fetched ) & ( acc ^ sum ) & 0x80 ) != 0 ) ; self . flags . set ( Flags :: Z , sum == 0 ) ; self . flags . set ( Flags :: C , sum > 0xFF ) ; self . acc = ( sum & 0x00FF ) as u8 ; true }
ADC: Add with carry
Affects: N V Z C
ADC : Add with carry Affects : N V Z C
&mut self