runCmds vars labels (vs@[_,_,_,_,_,_,_,_]:rest)
    = c : runCmds vars labels rest
  where
    c = toEnum $ foldl (\n b -> n*2 + fromEnum (value b vars)) 0 vs
runCmds vars labels (vs@[_,_,_,_,_,_,_,_]:rest)
    = c : runCmds vars labels rest
  where
    c = toEnum $ foldl (\n b -> n*2 + fromEnum (value b vars)) 0 vs
runCmds vars labels (vs@[_,_,_,_,_,_,_,_]:rest)
    = c : runCmds vars labels rest
  where
    c = toEnum $ foldl (\n b -> n*2 + fromEnum (value b vars)) 0 vs