PLUGIN shell
USE
	TYPE com.device
	INTERRUPTION com.interrupted
DEFINE
	STRUCT shell.command
	FUNCTION shell.device_command_open [ < > <> ] [ > >> ] ? 'FREE' ? ( STR + | PTR ) -> $shell.command
	FUNCTION shell.device_command_print $shell.command -> STR
	FUNCTION shell.device_command_read $shell.command -> STR ?
	FUNCTION shell.device_command_write $shell.command STR
	FUNCTION shell.device_command_idle $shell.command MUTABLE INT 3
	FUNCTION shell.device_command_command $shell.command . * -> VALUE ?
	FUNCTION shell.device_command_close $shell.command -> BLN
