Requires microcode version 11.50 or later.
Many changes to provide for smooth control of terminal state:
* Procedures `make-cmdl' and `push-cmdl' each take additional argument
that specifies how to spawn a child CMDL object -- a good default
for this argument is `make-cmdl'. `make-cmdl' should not be used
except by this "spawning" operation -- always use `(cmdl/spawn-child
cmdl)' to do that. Command loops should be extended to have generic
operations for reading input, evaluating, writing results,
prompting, etc. This would simplify switching between the editor
and user code.
* Command loops now temporarily switch input and output modes of
terminals to appropriate values when doing input or output. Thus
REP loops and the debugger need not worry about what state the
terminal is in -- the user can change it arbitrarily.
* New procedures `input-port/channel' and `output-port/channel' return
a port's underlying channel if known, else #F. This is not yet
completely implemented, but since it is only used for terminals it
is OK for now.
* New procedures `terminal-get-state' and `terminal-set-state' can be
used to save and restore a terminal's state.
* Renamed procedures:
terminal-buffered? terminal-cooked-input?
terminal-buffered terminal-cooked-input
terminal-nonbuffered terminal-raw-input
* Eliminated procedure `make-repl'. Most instances of this should
have been `push-repl' instead.
* Eliminated procedures `input-port/immediate-mode' and
`input-port/normal-mode'. Eliminated output-port operations
`raw-mode' and `cooked-mode'. Eliminated port operation
`baud-rate'.
* Eliminated ill-advised `fresh-line' operation on output ports. This
should be supplied directly by each type of port.