X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=mTaskInterpret.icl;h=dca53d44eb9b0f53f34686ae6c3f54c097b60d11;hb=3698f150b0c5e5ebed23b0885ced2711ef16d9f5;hp=21b53c901927d632134b09e60a53d76293c2589b;hpb=3cac8340c7c822ecda3783286196c6bc4cdec66a;p=mTask.git diff --git a/mTaskInterpret.icl b/mTaskInterpret.icl index 21b53c9..dca53d4 100644 --- a/mTaskInterpret.icl +++ b/mTaskInterpret.icl @@ -27,6 +27,7 @@ encode (MTSds i v) = "s" +++ to16bit i +++ v +++ "\n" encode (MTTask to data) = "t" +++ to16bit to +++ to16bit (size data) +++ data +++ "\n" encode (MTUpd i v) = "u" +++ to16bit i +++ v +++ "\n" +import StdDebug decode :: String -> MTaskMSGRecv decode x | size x == 0 = MTEmpty @@ -34,6 +35,7 @@ decode x '\0' = MTEmpty '\n' = MTEmpty 'm' = MTMessage x + 't' = MTTaskAdded (from16bit (x % (1,3))) 'u' = MTPub (from16bit (x % (1,3))) (x % (3,5)) _ = MTMessage x//abort ("Didn't understand message: " +++ join " " [toString (toInt c)\\c<-: x] +++ "\n") @@ -50,14 +52,15 @@ instance toString MTaskMSGSend where instance toString MTaskMSGRecv where toString (MTPub i v) = "Publish id: " +++ toString i +++ " value " +++ safePrint v + toString (MTTaskAdded i) = "Task added with id: " +++ toString i toString MTEmpty = "Empty message" bclength :: BC -> Int bclength (BCPush _) = 3 bclength (BCLab _) = 2 -bclength (BCSdsStore _) = 2 -bclength (BCSdsFetch _) = 2 -bclength (BCSdsPublish _) = 2 +bclength (BCSdsStore _) = 3 +bclength (BCSdsFetch _) = 3 +bclength (BCSdsPublish _) = 3 bclength (BCAnalogRead _) = 2 bclength (BCAnalogWrite _) = 2 bclength (BCDigitalRead _) = 2 @@ -69,13 +72,13 @@ bclength _ = 1 toByteVal :: BC -> [Char] toByteVal b -# bt = toChar $ consIndex{|*|} b + 1 +# bt = toChar $ consIndex{|*|} b = [bt:case b of (BCPush i) = i (BCLab i) = [toChar i] - (BCSdsStore i) = [toChar i] - (BCSdsFetch i) = [toChar i] - (BCSdsPublish i) = [toChar i] + (BCSdsStore i) = [c\\c<-:to16bit i] + (BCSdsFetch i) = [c\\c<-:to16bit i] + (BCSdsPublish i) = [c\\c<-:to16bit i] (BCAnalogRead i) = [toChar i] (BCAnalogWrite i) = [toChar i] (BCDigitalRead i) = [toChar i] @@ -159,7 +162,7 @@ BCIfStmt b t e = b <++> retrn [BCJmpF else] <++> t <++> retrn [BCJmp endif,BCLab else] <++> e <++> retrn [BCLab endif] -instance noOp ByteCode where noOp = mempty +instance noOp ByteCode where noOp = retrn [BCNop] withLabel :: (Int -> (ByteCode b q)) -> ByteCode b q withLabel f = BC \s->let [fresh:fs] = s.freshl