Skip to content

72B EnableEscape

In progress   MON 72B (58 decimal) · Mnemonic EESCF · Group: Input and Output Monitor Calls (manual section 2.5)

Available from: All programs (manual compatibility box)

Emulation source: src/handlers/mon_72B_EnableEscape.c

Description

Enables the ESCAPE key on the terminal. The ESCAPE key normally terminates a program. This is called user break. You can disable this key with DisableEscape. To enable it again you should use EnableEscape.

  • The escape function is enabled when you log out.

Parameters

Name Type Direction Description
DeviceNumber INTEGER2 In The terminal's logical device number. Ignored for background programs (own terminal selected).

Direction: In = the program supplies the value, Out = the call returns it, In/Out = both.

See also

DisableEscape, SetEscapeHandling, and @ENABLE-ESCAPE-FUNCTION

Compatibility

Machines Users Programs
ND-100 and ND-500 All users All programs

The manual's compatibility box for this call, word for word.

Yes/no fields from the YAML extraction (not in the manual's words):

ND-100 ND-500 User programs RT programs System programs
No No Yes Yes No

Disagreement

The manual box says ND-100 and ND-500, but the yes/no fields say ND-100 = No, ND-500 = No. The manual box is the source.

Examples

From the manual (OCR text, not corrected).

INTEGER : DeviceNumber
...
Monitor_Call('EnableEscape', DeviceNumber)
INTEGER DeviceNumber
...
Monitor_Call('EnableEscape', DeviceNumber)
DeviceNumber : INTEGER2;
...
EscapeEnable(DeviceNumber); [Note routine name.]
01 DeviceNumber COMP.
...
MONITOR-CALL "EnableEscape" USING DeviceNumber.
DeviceNumber : W BLOCK 1
EnableEscape : EQU 37B9 + 72B
...
CALLG EnableEscape, 1, DeviceNumber
IF K GO Error
...
Error,
| LDT | DEVNO | %Logical device number. |
| MON | 72    | %Monitor call EnableEscape. |
| ... |       |                             |
| DEVNO, ...  |                             |

ndmonlib implementation

In progress Registered MON_STATUS_IN_PROGRESS: partly implemented. The dispatcher calls the handler.

Handler mon_72B_EnableEscape
Code lines 12 (non-blank, non-comment lines in the file)

Notes from the handler source

src/handlers/mon_72B_EnableEscape.c line 23

Enable the ESCAPE (user-break) key - inverse of 71B DESCF. Clears the
terminal datafield's 5IESC bit so ESCAPE resumes user-breaking.

Emulation research

Source

This section comes from the emulation: block of the call's YAML file in the NDInsight repo. It records what was learned while implementing the call in nd500x; its status is nd500x's, not ndmonlib's.

Status (nd500x) implemented
nd500x handler nd500x/src/libmon/handlers/mon_72B_EnableEscape.c
Last updated 2026-07-17

Summary

THE EXACT INVERSE OF 71B DESCF: it clears the terminal datafield's 5IESC (inhibit-escape) bit so ESCAPE resumes user-breaking. Escape is ENABLED BY DEFAULT in nd500x (TerminalState.escape_inhibited defaults to escape enabled), so 72B is only meaningful after a 71B. The evidence, the datafield structure and the caveats are shared with 71B - see 71B_DISABLEESCAPE.yaml for the full record rather than a divergent copy.

Parameter notes

Name Note Verified
DeviceNumber Read as a 32-bit word (ND-500 INTEGER = W) despite the manual typing it INTEGER2. Device 0 is normalised to 1 ("own terminal"), same as 71B. No

Return contract

  • Success: K flag cleared.
  • Errors

Verified

1. 72B drives real per-device state: mon_set_escape_enabled(device, true), which clears DFLAG.5IESC in the inherited SINTRAN terminal input datafield structure (5TTIFIELD). The state is consumed by 1B InByte via mon_is_escape_break().

Field Value
Evidence Commit 68e290d; nd500x/src/libmon/mon_terminal_state.h and nd500x/src/libmon/handlers/mon_1B_InByte.c.

2. The default escape character is VESCAPE = 033B (0x1B).

Field Value
Evidence TerminalState.escape_char default, commit 68e290d.

Unverified

  • "The escape function is enabled when you log out" (the manual) IS NOT MODELLED - there is no logout event in the emulator. Escape state persists for the life of the run unless a 71B/72B changes it.
  • nd500x's EESCF never fails and validates nothing - not even that the device is a terminal. Real EESCF's error returns are unknown. Do not guess a code.
  • NO OBSERVED CALLER. No traced program is recorded issuing 72B.
  • The 72B worker body is no better carved than 71B's - see the 71B entry's unverified section: the escape model rests on the manual plus the 5TTIFIELD datafield structure, NOT on a carved worker.
  • The handler still carries a stale "TODO: Implement" comment and is registered MON_STATUS_IN_PROGRESS despite being implemented. The behaviour is real; the labels lag.

Sources

Doc Note
SINTRAN III Monitor Calls (ND-860228.2 EN) The manual body of this YAML.
NDInsight/Developer/MON/calls/71B_DISABLEESCAPE.yaml The full escape-model record (datafield structure, dispatch carve, caveats). 72B is its inverse.
NDInsight/tools/sintran-segment-carver/versions/L-VSX-500/re/mon-analysis/72B-EnableEscape/ Carve folder for this call - NOT mined into this block.

Source

SINTRAN III Monitor Calls (ND-860228.2 EN), page 165.