mirror of
https://github.com/dpiponi/Stellarator.git
synced 2024-06-01 02:37:48 -04:00
Started pulling stuff in from Alcator
This commit is contained in:
parent
50a6064fe5
commit
d70866abf4
|
@ -65,6 +65,14 @@ writeMemory addr' v = do
|
|||
let bankStateRef = atari ^. bankState
|
||||
liftIO $ modifyIORef bankStateRef $ bankSwitch addr v
|
||||
|
||||
readMemoryTick :: Word16 -> MonadAtari Word8
|
||||
readMemoryTick addr = tick 1 >> readMemory addr
|
||||
|
||||
writeMemoryTick :: Word16 -> Word8 -> MonadAtari ()
|
||||
writeMemoryTick addr v = do
|
||||
tick 1
|
||||
writeMemory addr v
|
||||
|
||||
-- {-# INLINE tick #-}
|
||||
tick :: Int -> MonadAtari ()
|
||||
tick n = do
|
||||
|
@ -72,6 +80,9 @@ tick n = do
|
|||
-- c <- useClock id
|
||||
stellaTickFor (3*n)
|
||||
|
||||
fetchByteTick :: MonadAtari Word8
|
||||
fetchByteTick = getPC >>= readMemoryTick
|
||||
|
||||
-- {-# INLINE debugStr #-}
|
||||
debugStr _ _ = return ()
|
||||
-- {-# INLINE debugStrLn #-}
|
||||
|
@ -123,17 +134,14 @@ read16zpTick addr = do
|
|||
-- {-# INLINABLE writeIndX #-}
|
||||
writeIndX :: Word8 -> MonadAtari ()
|
||||
writeIndX src = do
|
||||
tick 1
|
||||
index <- getX
|
||||
addr <- getPC >>= readMemory
|
||||
addr <- fetchByteTick
|
||||
|
||||
tick 1
|
||||
discard $ readMemory (i16 addr)
|
||||
discard $ readMemoryTick (i16 addr)
|
||||
|
||||
addrX <- read16zpTick (addr+index)
|
||||
|
||||
tick 1
|
||||
writeMemory addrX src
|
||||
writeMemoryTick addrX src
|
||||
incPC
|
||||
|
||||
-- 3 clock cycles
|
||||
|
|
Loading…
Reference in a new issue