Lawrence D'Oliveiro
2024-05-18 23:37:05 UTC
Who was the first to use ASCII control characters for line-editing and in-
band signalling purposes on terminals connected to interactive timesharing
systems? Was it DEC?
Consider things like:
CTRL/C -- interrupt the currently-running program
CTRL/O -- discard all subsequent program output until the next read
Line-editing:
DEL -- delete the last character typed
CTRL/U -- clear the entire partially-entered line
CTRL/R -- redisplay what has been typed so far
(Note that DEL is ASCII 127 aka RUBOUT, not ASCII 8 which is CTRL/H or
backspace.)
All the above were on DEC systems, and are available on current *nix
systems.
(On very early Bell Labs Unix, they might have used printable characters
for some of these functions; e.g. I vaguely recall an article mentioning
“#” as the delete character. I suspect this convention was rendered
obolete by the more modern one very quickly.)
From this point, things start to diverge a bit. Consider the EOF
indication: the character you type to indicate there is no more when a
program is reading data from the terminal: DEC had this as CTRL/Z, but
*nix systems somehow decided to use CTRL/D instead.
DEC added CTRL/X on VMS to mean “cancel all type-ahead” -- that is,
everything that has been typed so far, that the program has not read. This
function doesn’t exist on *nix.
Then there was the introduction of a second interrupt key, I guess as a
kind of a backstop to interrupt programs that had trapped the first one
and then got stuck: DEC decided upon CTRL/Y for this on VMS, while *nix
went for CTRL/backslash. (On some earlier DEC systems, in theory if you
could hit CTRL/C a second time quickly enough, it would force-abort a
program that had trapped CTRL/C. But I never found a way to type an
effective double-CTRL/C sequence without hardware help.)
DEC also had the handy CTRL/T sequence to generate a one-line display of
what a running program was up to: *nix systems never adopted this.
What *nix systems did have, that DEC did not, was the use of CTRL/V to say
“quote the next character”. This let you enter literal CTRL/C and the
other control characters (including CTRL/V itself, of course) as part of
data input.
band signalling purposes on terminals connected to interactive timesharing
systems? Was it DEC?
Consider things like:
CTRL/C -- interrupt the currently-running program
CTRL/O -- discard all subsequent program output until the next read
Line-editing:
DEL -- delete the last character typed
CTRL/U -- clear the entire partially-entered line
CTRL/R -- redisplay what has been typed so far
(Note that DEL is ASCII 127 aka RUBOUT, not ASCII 8 which is CTRL/H or
backspace.)
All the above were on DEC systems, and are available on current *nix
systems.
(On very early Bell Labs Unix, they might have used printable characters
for some of these functions; e.g. I vaguely recall an article mentioning
“#” as the delete character. I suspect this convention was rendered
obolete by the more modern one very quickly.)
From this point, things start to diverge a bit. Consider the EOF
indication: the character you type to indicate there is no more when a
program is reading data from the terminal: DEC had this as CTRL/Z, but
*nix systems somehow decided to use CTRL/D instead.
DEC added CTRL/X on VMS to mean “cancel all type-ahead” -- that is,
everything that has been typed so far, that the program has not read. This
function doesn’t exist on *nix.
Then there was the introduction of a second interrupt key, I guess as a
kind of a backstop to interrupt programs that had trapped the first one
and then got stuck: DEC decided upon CTRL/Y for this on VMS, while *nix
went for CTRL/backslash. (On some earlier DEC systems, in theory if you
could hit CTRL/C a second time quickly enough, it would force-abort a
program that had trapped CTRL/C. But I never found a way to type an
effective double-CTRL/C sequence without hardware help.)
DEC also had the handy CTRL/T sequence to generate a one-line display of
what a running program was up to: *nix systems never adopted this.
What *nix systems did have, that DEC did not, was the use of CTRL/V to say
“quote the next character”. This let you enter literal CTRL/C and the
other control characters (including CTRL/V itself, of course) as part of
data input.