Storing terminal characteristics
This program creates and maintains a file of terminal
characteristics, which is used by the Screen Control Package to find
out how to drive a particular terminal.
The program is entered by the command
TERMCHS(file,commands)
where 'file' specifies the terminal characteristics file to be
operated on, and 'commands' specifies a file of commands for TERMCHS.
If 'file' is null, the name TERMCHSFILE is used, and if 'commands' is
null, .IN is used.
The user is prompted for the action required. That action is
carried out, and the prompt is repeated. The command STOP exits from
TERMCHS. All commands may be abbreviated as long as they remain
unambiguous.
The available commands are given below. A summary of these may be
obtained by typing '?' in response to the 'Action:' prompt.
Initialise
The form of this command is:
INITIALISE
The terminal characteristics file is emptied, after being created if
it did not exist.
Edit
The form of this command is:
EDIT n
The action is to edit record 'n' in the terminal characteristics
file. If 'n' is not specified, the prompt
Type:
is issued, and the response should be a valid terminal record
number. The prompt
Ed:
is then issued, and one of several editing commands may now be given.
On completion of the edit, the appropriate record is updated. The
characteristics file is manipulated using NEWGEN to avoid problems
with users who have it connected during the update.
Users should beware of the fact that some programs (e.g. VIEW)
disable disconnection of the terminal characteristics file. Thus, if
such a program is used prior to, and in the same session as, an edit
to the terminal characteristics file, the effect of the edit cannot be
seen without logging off and on again.
Most editing commands consist of a keyword, an equals sign and a
value. For example, to set a Clear Screen sequence of three nulls,
the command would be:
CLEARSCREEN=0,0,0
which could be abbreviated to:
CLEARSCREEN=0(3)
Values in sequences may be expressed as:
* Hexadecimal numbers (e.g. 1B). Any leading X is ignored
* ASCII mnemonics (for non-printing characters and spaces) (e.g ESC)
* Single characters within single quotes (e.g. 'A')
Repeat counts are in decimal.
Some items are in fact truth values. They may be specified with
the keywords TRUE, YES, FALSE and NO as required. TRUE is equivalent
to YES, and FALSE is equivalent to NO.
Keywords may be abbreviated as long as they remain unambiguous. A
null sequence (i.e. no characters at all) may be entered by giving the
keyword and the equals sign only. This should be done if a terminal
does not support a particular operation.
A summary of available keywords may be obtained by typing '?' in
response to the 'Ed:' prompt. These keywords are:
Quit
Abandon the edit without updating the characteristics file.
.End
Complete the edit, updating the characteristics file.
Name
Set the name of the terminal associated with this record. For
example:
Name={7}
Columns
Set the number of columns available on the terminal associated
with this record. This will often be used to update the ITWIDTH
option setting.
Lines
Set the number of lines available on the screen of this terminal
type. A value of zero should be used for hardcopy devices.
Leadin
Set the lead-in sequence for this terminal type.
Clear
Set the clear screen sequence for this terminal type. The
sequence should also return the cursor to the 'home' position.
Chome
Set the 'home' sequence for this terminal type.
Endline
Set the sequence which will cause the terminal to clear the rest
of the current line from the current cursor position.
Endscreen
Set the sequence which will cause the terminal to clear the rest
of the screen from the current cursor position.
Initialise
Set the sequence which will initialise the terminal in a sensible
way. Preferred settings are:
* Roll mode
* Protection off
Interrupt
Set the single character that is the preferred one for user
programs to select as the INT: key. This may not always be ESCape,
because this key often has a special meaning to the terminal hardware.
Cursor up
Set the sequence which will cause the cursor to move up by one
line.
Cursor down
Set the sequence which will cause the cursor to move down by one
line.
Cursor left
Set the sequence which will cause the cursor to move left by one
character position.
Cursor right
Set the sequence which will cause the cursor to move right by one
character position.
Insert line
Set the sequence which will insert a blank line on the display at
the current cursor position.
Delete line
Set the sequence which will remove a line from the display at the
current cursor position.
Home at top
Indicate whether the Home operation leaves the cursor at the top
line of the screen. The setting is TRUE if so, otherwise FALSE.
Can do page mode
Indicate whether the terminal is capable of operating in page
mode. The setting is TRUE if so, otherwise FALSE.
Xbase
The value to be added to an X coordinate value before use. This
is a single byte.
Ybase
The value to be added to a Y coordinate value before use. This is
a single byte.
X intro
The string that introduces the X coordinate setting string, or the
whole coordinate setting string for those terminals where both are
lumped together.
Y intro
The string that introduces the Y coordinate setting string. This
will be null if both settings are lumped together.
Y first
Indicate whether the Y coordinate setting comes before or after the
X coordinate setting. The setting is TRUE if the Y coordinate value
is first, otherwise FALSE.
Note that the column number is the X coordinate, and the line
number is the Y coordinate.
Auto wrap
Indicate whether the terminal automatically 'wraps round'
(generates a carriage return, linefeed sequence) when an attempt is
made to write a character beyond the last column of the screen.
The setting is TRUE if the terminal behaves like this, otherwise
FALSE.
Unix name
The two character abbreviation commonly used by UNIX systems to
describe this type of terminal.
Start standout mode
Set the sequence which will cause the terminal to display
subsequent output in 'standout' or 'highlighted' mode.
End standout
Set the sequence which will end 'standout' or 'highlighted' mode.
Cursor position
Set the sequence which indicates precisely how to position the
cursor at a given point on the screen.
The string used is precisely that which needs to be sent to the screen
in order to position the cursor appropriately. Variable information is
indicated by an escape character, '%', which indicates that row or
column values are to be inserted in a specified format. The row is
normally sent first, followed by the column (this may be reversed by
the %i escape). Escape sequences are also used to side-effect the
string.
Escape sequences are as follows:
%d - Minimum width ASCII representation of number
(like 'write(n,1) in IMP)
%2 - Same as %d, but padded to a width of 2
%3 - Same as %d, but padded to a width of 3
%. - Output of value as stored (like a %byteinteger)
%+x - Same as %., but with the character 'x' added to the value
%r - Reverses the order of the 'x' and 'y' values, but generates
no output
%i - Increments both the 'x' and the 'y' value, but generates no
output
%% - Outputs a '%'
Print
Print the current state of the terminal record, then continue
editing.
Print
The form of this command is:
PRINT n
The action is to print the contents of record 'n' in the
characteristics file. If 'n' is not specified, the prompt
Which:
is issued, and the response should be a valid terminal record number,
or .ALL to print all the records currently in use.
New
The form of this command is:
NEW
The action is to locate an empty terminal record, and then to invoke
the Edit action (see above) to fill it in. The type number allocated
to the record is output for future reference.
Copy
The form of this command is:
COPY
The action is to copy a complete terminal record (apart from the name
field) to another (possibly empty) record. It is useful when more than
one record has a very similar structure. Prompts are issued for the
type numbers of the source and destination records.
Delete
The form of this command is:
DELETE
The action is to clear out a terminal record, and free it for re-use.
This command is only needed when a particular type of terminal is no
longer in use by any user. A prompt is issued for the type number of
the terminal whose record is to be deleted.
Dump
The form of this command is:
DUMP
The action is to dump the current state of the characteristics file,
to a specified character file. This is useful as a backup, and if the
format of the characteristics file is to be changed.
A prompt is issued for the name of the output file.
Cmode
The form of this command is:
The action is to set the output mode for subsequent Print commands so
that bytes are represented as characters and ASCII mnemonics.
Nmode
The form of this command is:
The action is to set the output mode for subsequent Print commands so
that bytes are represented as hexadecimal numbers.
Stop
The form of this command is:
STOP
The action is to cause an immediate exit from the program.