- dec (LDA i) = ("lda", i)
- dec (LDC i) = ("ldc", i)
- dec (LDH i) = ("ldh", i)
- dec (LDL i) = ("ldl", i)
- dec (LDR i) = ("ldr", i)
- dec (LDS i) = ("lds", i)
+ dec (LDA i) = pure ("lda", Lit i)
+ dec (LDC i) = pure ("ldc", Lit i)
+ dec (LDH i) = pure ("ldh", Lit i)
+ dec (LDL i) = pure ("ldl", Lit i)
+ dec (LDR i) = pure ("ldr", Lit i)
+ dec (LDS i) = pure ("lds", Lit i)
+ dec _ = liftT (Left $ Error "PANIC: trying to load non adres")
+
+//Instruction (String), key of function to jump to
+jump :: String String -> Gen Instr
+jump instr k = genMap >>= \g-> case 'Map'.member k g of
+ False = liftT (Left $ Error $ concat ["PANIC: ", k, " not found as function"])
+ True = dec ('Map'.find k g) >>= \lbl-> pure $ Instr instr [lbl] k
+where
+ dec (FUNC l) = pure (L l)
+ dec _ = liftT (Left $ Error "PANIC: trying to jump to non label")