funes-0.1.0.0
Safe HaskellNone
LanguageHaskell2010

Nes.Memory

Synopsis

Documentation

newMemory :: IO MemoryPointer Source #

Creates a new memory slot

memorySize :: Addr Source #

The size of RAM, in bytes

Equivalent to 64 KiB

newtype Byte Source #

Constructors

Byte 

Fields

Instances

Instances details
Bits Byte Source # 
Instance details

Defined in Nes.Memory

Num Byte Source # 
Instance details

Defined in Nes.Memory

Methods

(+) :: Byte -> Byte -> Byte #

(-) :: Byte -> Byte -> Byte #

(*) :: Byte -> Byte -> Byte #

negate :: Byte -> Byte #

abs :: Byte -> Byte #

signum :: Byte -> Byte #

fromInteger :: Integer -> Byte #

Show Byte Source # 
Instance details

Defined in Nes.Memory

Methods

showsPrec :: Int -> Byte -> ShowS #

show :: Byte -> String #

showList :: [Byte] -> ShowS #

Eq Byte Source # 
Instance details

Defined in Nes.Memory

Methods

(==) :: Byte -> Byte -> Bool #

(/=) :: Byte -> Byte -> Bool #

Ord Byte Source # 
Instance details

Defined in Nes.Memory

Methods

compare :: Byte -> Byte -> Ordering #

(<) :: Byte -> Byte -> Bool #

(<=) :: Byte -> Byte -> Bool #

(>) :: Byte -> Byte -> Bool #

(>=) :: Byte -> Byte -> Bool #

max :: Byte -> Byte -> Byte #

min :: Byte -> Byte -> Byte #

newtype Addr Source #

Constructors

Addr 

Fields

Instances

Instances details
Bits Addr Source # 
Instance details

Defined in Nes.Memory

Ix Addr Source # 
Instance details

Defined in Nes.Memory

Methods

range :: (Addr, Addr) -> [Addr] #

index :: (Addr, Addr) -> Addr -> Int #

unsafeIndex :: (Addr, Addr) -> Addr -> Int #

inRange :: (Addr, Addr) -> Addr -> Bool #

rangeSize :: (Addr, Addr) -> Int #

unsafeRangeSize :: (Addr, Addr) -> Int #

Num Addr Source # 
Instance details

Defined in Nes.Memory

Methods

(+) :: Addr -> Addr -> Addr #

(-) :: Addr -> Addr -> Addr #

(*) :: Addr -> Addr -> Addr #

negate :: Addr -> Addr #

abs :: Addr -> Addr #

signum :: Addr -> Addr #

fromInteger :: Integer -> Addr #

Show Addr Source # 
Instance details

Defined in Nes.Memory

Methods

showsPrec :: Int -> Addr -> ShowS #

show :: Addr -> String #

showList :: [Addr] -> ShowS #

Eq Addr Source # 
Instance details

Defined in Nes.Memory

Methods

(==) :: Addr -> Addr -> Bool #

(/=) :: Addr -> Addr -> Bool #

Ord Addr Source # 
Instance details

Defined in Nes.Memory

Methods

compare :: Addr -> Addr -> Ordering #

(<) :: Addr -> Addr -> Bool #

(<=) :: Addr -> Addr -> Bool #

(>) :: Addr -> Addr -> Bool #

(>=) :: Addr -> Addr -> Bool #

max :: Addr -> Addr -> Addr #

min :: Addr -> Addr -> Addr #

bytesToAddr :: Byte -> Byte -> Addr Source #

First byte is low-end, second is high-end

negateByte :: Byte -> Byte Source #

Safely negates a byte, handles underflow

unsafeAddrToByte :: Addr -> Byte Source #

Unsafe: Casts a Word16 to Word8

type MemoryPointer = ForeignPtr () Source #

The pointer used to interact with memory

class MemoryInterface a (m :: Type -> Type) where Source #

Methods for interfaces that exposes memory

Methods

readByte :: Addr -> a -> m Byte Source #

Reads a single byte

readAddr :: Addr -> a -> m Addr Source #

Reads two bytes packed in little endian

writeByte :: Byte -> Addr -> a -> m () Source #

Writes a single byte

writeAddr :: Addr -> Addr -> a -> m () Source #

Writes two bytes packed in little endian

the first argument is the address to write the second is the destination

Instances

Instances details
MemoryInterface () (Bus r) Source # 
Instance details

Defined in Nes.Bus.Monad

Methods

readByte :: Addr -> () -> Bus r Byte Source #

readAddr :: Addr -> () -> Bus r Addr Source #

writeByte :: Byte -> Addr -> () -> Bus r () Source #

writeAddr :: Addr -> Addr -> () -> Bus r () Source #

MemoryInterface () (CPU r) Source # 
Instance details

Defined in Nes.CPU.Monad

Methods

readByte :: Addr -> () -> CPU r Byte Source #

readAddr :: Addr -> () -> CPU r Addr Source #

writeByte :: Byte -> Addr -> () -> CPU r () Source #

writeAddr :: Addr -> Addr -> () -> CPU r () Source #

MonadIO m => MemoryInterface (ForeignPtr a) m Source # 
Instance details

Defined in Nes.Memory.Unsafe

Methods

readByte :: Addr -> ForeignPtr a -> m Byte Source #

readAddr :: Addr -> ForeignPtr a -> m Addr Source #

writeByte :: Byte -> Addr -> ForeignPtr a -> m () Source #

writeAddr :: Addr -> Addr -> ForeignPtr a -> m () Source #

MonadIO m => MemoryInterface (Ptr a) m Source #

Highly unsafe instance that uses pointers directly.

No bound checks are done.

Instance details

Defined in Nes.Memory.Unsafe

Methods

readByte :: Addr -> Ptr a -> m Byte Source #

readAddr :: Addr -> Ptr a -> m Addr Source #

writeByte :: Byte -> Addr -> Ptr a -> m () Source #

writeAddr :: Addr -> Addr -> Ptr a -> m () Source #