Asynchronous Terminals and Printer Processes Programming Manual

TERMINAL PROGRAMMING CONSIDERATIONS
Break Errors
The action prescribed for these errors depends on whether or not
the process that receives the error is the owner of BREAK.
Error 110 indicates that BREAK was pressed and that break
terminal access was specified when break was enabled. The
terminal is inaccessible until the process that is handling break
calls SETMODE 12 to allow normal access to the terminal.
If the process that receives error 110 is not the one that
enabled BREAK, retry the operation periodically. If the process
has enabled BREAK, check $RECEIVE for the system break message,
and take appropriate action.
Error 110 implies that no data was transferred.
Error 111 indicates that BREAK was pressed while the current file
operation was taking place, which might indicate that data was
lost.
If the process that receives error 111 is not the one that
enabled BREAK, then the operation should be retried. If a write
operation was being performed, the write can simply be retried.
If a read operation was being performed, a message should be sent
telling the terminal operator to retype the last entry before
retrying the read.
Keep in mind, however, that if more than one process is accessing
a terminal and the break feature is used, only break access
should be allowed after BREAK is pressed. Therefore, subsequent
retries are rejected with error 110 until normal access is
permitted.
If a process that does not have BREAK enabled receives either of
these errors, the process should suspend itself for some brief
period (ten seconds, for example) before retrying the operation.
Do this by calling the process control procedure DELAY.
If the process has enabled break, check $RECEIVE for the system
break message, and take appropriate action.
Preempted by Operator Error
Error 112 occurs only when an application process is using the
same terminal as the active operator console device. If the
application process is reading from the terminal with either
READ or WRITEREAD and a message is sent to the operator, the
application process's file operation is aborted, and the operator
message is written. This is necessary so operator messages are
not deferred while a READ is occurring on the terminal. Any data
being entered when the preempting takes place is lost. Before
4-29