module Nes.CPU.Instructions.Noop (noop, kil) where
import Control.Monad
import Nes.CPU.Instructions.Addressing (AddressingMode (..), getOperandAddr)
import Nes.CPU.Monad
import Nes.Memory (MemoryInterface (readByte))
noop :: AddressingMode -> CPU r ()
noop :: forall r. AddressingMode -> CPU r ()
noop = \case
AddressingMode
None -> () -> CPU r ()
forall a. a -> CPU r a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
AddressingMode
Accumulator -> () -> CPU r ()
forall a. a -> CPU r a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
AddressingMode
mode -> do
Addr
addr <- AddressingMode -> CPU r Addr
forall r. AddressingMode -> CPU r Addr
getOperandAddr AddressingMode
mode
CPU r Byte -> CPU r ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (CPU r Byte -> CPU r ()) -> CPU r Byte -> CPU r ()
forall a b. (a -> b) -> a -> b
$ Addr -> () -> CPU r Byte
forall a (m :: * -> *). MemoryInterface a m => Addr -> a -> m Byte
readByte Addr
addr ()
kil :: CPU r ()
kil :: forall r. CPU r ()
kil = () -> CPU r ()
forall a. a -> CPU r a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()