X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=src%2FSynacorEngine.hs;h=63fb20c60be300c6e4fa23402578523c8aad612d;hb=3836f842a8794a2d25cc5f8558d70becae8b7396;hp=757bd5f011ea9dbc31434176010031d6b9306db0;hpb=56796d54a5048d5f38ac06b1fdea48c045bb626e;p=synacor-challenge.git diff --git a/src/SynacorEngine.hs b/src/SynacorEngine.hs index 757bd5f..63fb20c 100644 --- a/src/SynacorEngine.hs +++ b/src/SynacorEngine.hs @@ -1,6 +1,6 @@ module SynacorEngine where -import Debug.Trace +-- import Debug.Trace -- import System.Environment import Data.Bits @@ -12,7 +12,7 @@ import Data.Map.Strict ((!)) import Control.Lens import Data.List import Data.Char -import Numeric +-- import Numeric import Control.Monad.State.Strict import Control.Monad.Reader @@ -44,11 +44,11 @@ runMachine inputs machine = runRWS (runAll (10 ^ 6)) inputs machine makeMachine :: Memory -> Machine -makeMachine memory = Machine +makeMachine mem = Machine { _ip = 0 , _inputIndex = 0 , _registers = M.fromList [ (r, 0) | r <- [0..7] ] - , _memory = memory + , _memory = mem , _stack = [] , _tracing = False } @@ -275,10 +275,10 @@ traceMachine = do when isTracing do cip <- gets _ip (l, _) <- dissembleInstruction cip - registers <- gets _registers - let regVals = intercalate "; " $ fmap show $ M.elems registers - stack <- gets _stack - let stackVals = intercalate "; " $ fmap show $ take 10 stack + regs <- gets _registers + let regVals = intercalate "; " $ fmap show $ M.elems regs + stk <- gets _stack + let stackVals = intercalate "; " $ fmap show $ take 10 stk tell $ fmap (fromIntegral . ord) (">> " ++ l ++ " : r> " ++ regVals ++ " : s> " ++ stackVals ++ "<<") runDissemble :: Word16 -> Int -> Machine -> [String]