Asynchronous Terminals and Printer Processes Programming Manual

TERMINAL PROGRAMMING CONSIDERATIONS
Terminal and File Access Types
LITERAL SET^ACCESS = 12,
BREAK^MODE = 1,
NORMAL^MODE = 0,
BREAK^ACCESS = 1,
NORMAL^ACCESS = 0;
! enable break and specify break mode
CALL SETMODE ( HOME^TERM^NUM, SET^BREAK^OWNER, MYPID,
BREAK^MODE, LAST^OWNER );
! check $RECEIVE for a break message
CALL READ ( RECV^FNUM, RECV^FNUM, 132 );
.
ERROR := 0;
CALL AWAITIO ( RECV^FNUM,, NUM^READ,, 0D );
IF = THEN ... ! user message received
ELSE
IF > THEN ! system message received
BEGIN
IF BUFFER = -20 THEN ! break message
BEGIN
! specify break access
CALL SETMODE ( HOME^TERM^NUM, SET^ACCESS,, BREAK^ACCESS );
At this point, nonbreak operations to the terminal indicated by
HOME^TERM^NUM are rejected. Because break access was specified,
however, the process can access the terminal.
When it finishes processing the break, the application process
permits normal access to the terminal:
CALL SETMODE ( HOME^TERM^NUM, SET^ACCESS,
NORMAL^MODE, NORMAL^ACCESS );
.
END
ELSE
IF BUFFER = ... THEN ! another system message
END
ELSE ... ; ! error
Figure 4-3 illustrates break access.
4-21