XSPEC is a command-driven, interactive program. The user will see a prompt whenever input is required. If the user is uncertain about how to respond to a particular prompt, typing ? usually will produce a list of valid responses. XSPEC is designed to allow complicated, multi-instrument analysis, so most commands can take arguments specifying more than one data set. Arguments in XSPEC may be separated by either blanks or commas. A single argument can define a range. The ranges are delimited by a dash (-). A colon (:) is used to separate ranges (e.g., the phrase 1-2:11-24 refers to channels 11-24 in files 1 and 2). Operating-system commands can be given from within XSPEC either by giving the command name or exec command. A set of XSPEC commands in a file can be input using @filename. Note that all commands can be abbreviated to unique strings when operating in interactive mode but in scripts all commands must be specified in full. Command recall and inline editing are available. XSPEC uses Tcl as its user interface, providing looping, conditionals, file i/o and so on. The command tclout can be used to pass internal XSPEC data to the Tcl level. Any Tcl scripts placed in the directory $XSPEC_HOME are auto-mounted at start-up allowing the user to create their own XSPEC commands.