Das Protokoll definiert Zeichenketten die als Eingabe für den Simulator dienen (input) oder vom Simulator ausgegeben (output) werden. Es wird nachfolgend in EBNF angegeben.
<simulation> ::= {<input> | <output>}* <input> ::= "input" <idevice> <nl> <idevice> ::= <sensor> | <ir> | <button> <sensor> ::= "sensor" <snr> <svalue> <snr> ::= "1" | "2" | "3" <svalue> ::= <INT NUMBER> <ir> ::= "ir" <msg length> <msg> <msg length> ::= <NUMBER> <msg> ::= {<BYTE>}+ <button> ::= <bnr> <baction> <bnr> ::= <bview> | <bonoff> | <bprgm> | <brun> <bview> ::= "1" | "view" <bonoff> ::= "2" | "onoff" <bprgm> ::= "3" | "prgm" <brun> ::= "4" | "run" <baction> ::= "pressed" | "released" <nl> ::= "\n" <output> ::= "output" <odevice> <nl> <odevice> ::= <actuator> | <lcd> | <ir> | <osensor> <actuator> ::= "actuator" <anr> <acommand> <anr> ::= "A" | "B" | "C" <acommand> ::= <avalue> | <speed> | <direction> <avalue> ::= "value" <NUMBER> <speed> ::= "speed" <NUMBER> <direction> ::= "direction" <dvalue> <dvalue> ::= "off" | "fwd" | "rev" | "brake" <lcd> ::= <show hex> | <show string> | <show number> | <show segment> | <hide segment> | <refresh> | <clear> <show hex> ::= "x" "0x"([0-9a-f])+ <show string> ::= "s" <STRING> <show number> ::= <NUMBER> "(" <number style> "," <comma style> ")" <number style> ::= "digit" | "sign" | "unsign" <comma style> ::= "digit_comma" | "e0" | "e_1" | "e_2" | "e_3" <show segment> ::= "show" <NUMBER> <hide segment> ::= "hide" <NUMBER> <refresh> ::= "refresh" <clear> ::= "clear" <osensor> ::= "sensor" <snr> <smode> <smode> ::= "active" | "passive"