fix makefiles forgood
[mTask.git] / mTaskInterpret.dcl
index fd22548..0105944 100644 (file)
@@ -5,6 +5,22 @@ from Control.Monad.State import :: State, :: StateT
 from Data.Monoid import class Semigroup, class Monoid
 import mTask
 
 from Data.Monoid import class Semigroup, class Monoid
 import mTask
 
+:: MTaskMSGRecv
+       = MTPub Int String
+       | MTMessage String
+       | MTTaskAdded Int
+       | MTEmpty
+
+:: MTaskMSGSend
+       = MTSds Int String
+       | MTTask Int String
+       | MTUpd Int String
+
+instance toString MTaskMSGRecv
+instance toString MTaskMSGSend
+encode :: MTaskMSGSend -> String
+decode :: String -> MTaskMSGRecv
+
 :: BC
        = BCNop
        | BCLab Int
 :: BC
        = BCNop
        | BCLab Int
@@ -34,6 +50,9 @@ import mTask
        | BCJmp Int
        | BCJmpT Int
        | BCJmpF Int
        | BCJmp Int
        | BCJmpT Int
        | BCJmpF Int
+       //UserLED
+       | BCLedOn [Char]
+       | BCLedOff [Char]
        //Serial
        | BCSerialAvail
        | BCSerialPrint
        //Serial
        | BCSerialAvail
        | BCSerialPrint
@@ -53,7 +72,8 @@ instance Monoid (ByteCode a p)
 
 :: BCState = {
                freshl :: [Int],
 
 :: BCState = {
                freshl :: [Int],
-               freshs :: [Int]
+               freshs :: [Int],
+               sdss :: [(Int, [Char])]
        }
 instance zero BCState
 
        }
 instance zero BCState
 
@@ -64,16 +84,18 @@ instance toByteCode Char
 instance toByteCode String
 instance toByteCode Long
 instance toByteCode Button
 instance toByteCode String
 instance toByteCode Long
 instance toByteCode Button
+instance toByteCode UserLED
 
 instance toChar Pin
 instance arith ByteCode
 instance boolExpr ByteCode
 instance analogIO ByteCode
 instance digitalIO ByteCode
 
 instance toChar Pin
 instance arith ByteCode
 instance boolExpr ByteCode
 instance analogIO ByteCode
 instance digitalIO ByteCode
-instance If ByteCode Stmt Stmt Stmt
-instance If ByteCode Stmt e Stmt
-instance If ByteCode Stmt Stmt e
-instance If ByteCode x y Expr
+instance userLed ByteCode
+//instance If ByteCode Stmt Stmt Stmt
+//instance If ByteCode e Stmt Stmt
+//instance If ByteCode Stmt e Stmt
+instance If ByteCode x y Stmt
 instance IF ByteCode
 instance noOp ByteCode
 
 instance IF ByteCode
 instance noOp ByteCode
 
@@ -82,6 +104,11 @@ instance assign ByteCode
 instance seq ByteCode
 instance serial ByteCode
 
 instance seq ByteCode
 instance serial ByteCode
 
+//pub :: (ByteCode a b) -> ByteCode a b
+
+toMessages :: Int (String, BCState) -> ([MTaskMSGSend], BCState)
+toSDSUpdate :: Int Int -> [MTaskMSGSend]
+
 toByteVal :: BC -> [Char]
 toByteVal :: BC -> [Char]
-toReadableByteCode :: (ByteCode a Expr) -> String
-toRealByteCode :: (ByteCode a Expr) -> String
+toReadableByteCode :: (ByteCode a b) -> (String, BCState)
+toRealByteCode :: (ByteCode a b) -> (String, BCState)