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.