diff options
-rw-r--r-- | src/Instructions.hs | 7 | ||||
-rw-r--r-- | src/Machine.hs | 2 |
2 files changed, 7 insertions, 2 deletions
diff --git a/src/Instructions.hs b/src/Instructions.hs index 3ffbfc2..c3e9763 100644 --- a/src/Instructions.hs +++ b/src/Instructions.hs @@ -62,7 +62,12 @@ doMOVEA :: Int -> Int -> Int -> Int -> Emulator () doMOVEA _ _ _ _ = error "MOVEA" doMOVE :: Int -> Int -> Int -> Int -> Int -> Emulator () -doMOVE _ _ _ _ _ = error "MOVE" +doMOVE 1 dst_reg dst_mode src_mode src_reg = do + incPC + src <- getOp src_mode src_reg 1 + src_value <- fst src + dst <- getOp dst_mode dst_reg 1 + (snd dst) src_value doSRMOVE :: Int -> Int -> Emulator () doSRMOVE _ _ = error "SRMOVE" diff --git a/src/Machine.hs b/src/Machine.hs index 4dd40d3..55c5294 100644 --- a/src/Machine.hs +++ b/src/Machine.hs @@ -412,7 +412,7 @@ getOp 7 1 s = do skipOp 4 addr <- getLong pc return (getMemory addr s, setMemory addr s) -getOp 7 6 s = do +getOp 7 4 s = do addr <- readPC skipOp s let addr = addr + if s == 1 then 1 else 0 |