aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Instructions.hs7
-rw-r--r--src/Machine.hs2
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