24B Out8Bytes¶
In progress MON 24B (20 decimal) · Mnemonic B8OUT · Group: File Operations (manual section 2.4)
Available from: All programs (manual compatibility box)
Emulation source: src/handlers/mon_24B_Out8Bytes.c
Description¶
Writes 8 bytes to a character device, e.g. a terminal. All 8 bytes are output. OutUpTo8Bytes stops if a byte is 0.
- On the ND-500, you are advised to use the faster OutputString.
- Appendix F contains an ASCII table.
Parameters¶
| Name | Type | Direction | Description |
|---|---|---|---|
DeviceNumber |
INTEGER | In | Logical device number. See appendix B. |
OutData |
STRING | In | Buffer containing 8 bytes to write. |
Direction: In = the program supplies the value, Out = the call returns it, In/Out = both.
See also¶
OutUpTo8Bytes, OutByte, OutString, OutputString, OutMessage, OutNumber, and In8Bytes
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 |
|---|---|---|---|---|
| Yes | Yes | No | No | No |
Examples¶
From the manual (OCR text, not corrected).
INTEGER : DeviceNumber
BYTES : OutData(0:7)
...
ON ROUTINEERROR DO
IF ErrCode > 0 THEN ...
ENDON
Monitor_Call('Out8Bytes', DeviceNumber, OutData)
INTEGER DeviceNumber
CHARACTER OutData*8
...
Monitor_Call('Out8Bytes', DeviceNumber, OutData(1:8))
IF (ErrCode .NE. 0) THEN ...
DeviceNumber : INTEGER2;
OutData : RECORD...END;
...
Out8Bytes(DeviceNumber, OutData);
IF ErrCode <> 0 THEN ...
01 DeviceNumber COMP.
01 OutData PIC X(8).
01 ErrCode COMP.
...
MONITOR-CALL "Out8Bytes" USING DeviceNumber, OutData.
CALL "CBerror" USING ErrCode.
IF ErrCode NOT = 0 GO ...
DeviceNumber : W BLOCK 1
OutData : STRINGDATA 'HELLO!!!'
ErrCode : W BLOCK 1
Out8Bytes : EQU 37B9 + 24B
...
CALLG Out8Bytes, 2, DeviceNumber, OutData
IF K GO ERROR
...
ERROR : W1 =: ErrCode %ErrorCode in W1 register.
LDT DEVNO %Logical device address.
LDD BYTES %First 4 bytes to be written.
LDX BYTES+2 %Next 2 bytes to be written.
COPY SX DL
LDX BYTES+3 %Last 2 bytes to be written.
MON 24 %Monitor call Out8Bytes.
JMP ERROR %Error return from monitor call.
...
ERROR, ... %Error number in register A.
...
DEVNO, ...
BYTES, 'HELLO!!!'
ndmonlib implementation¶
In progress Registered MON_STATUS_IN_PROGRESS: partly implemented. The dispatcher calls the handler.
| Handler | mon_24B_Out8Bytes |
| Code lines | 73 (non-blank, non-comment lines in the file) |
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_24B_Out8Bytes.c |
| Last updated | 2026-07-17 |
Parameter notes¶
| Name | Note | Verified |
|---|---|---|
| OutData | Taken as a RAW BYTE ADDRESS (arg_addresses[1]) and read byte by byte - not a descriptor and not a 0x27-terminated string. Same convention as 22B. | Yes |
Return contract¶
- Success: K flag cleared; exactly 8 bytes written.
-
Errors
Code Octal Meaning 24 030B No such device name (unsupported device class) 90 132B No file opened with this number 124 174B Illegal parameter (file not open for writing, or short host write) 111 157B Missing parameter (fewer than 2 CALLG args)
Verified¶
| Claim | Evidence |
|---|---|
| ALL 8 BYTES are written, including embedded 0 bytes. This is the ONLY difference from 22B OutUpTo8Bytes, which stops at the first 0. | mon_24B_Out8Bytes.c - unconditional loop over i < 8, no zero test. |
Unverified¶
- NO OBSERVED CALLER. No traced program issues 24B; they use 504B DVOUTS, exactly as the manual advises ("On the ND-500, you are advised to use the faster OutputString"). Implemented but NOT proven end to end.
- nd500x ALSO accepts file numbers here and writes 8 bytes to the open file. The manual describes 24B as writing "to a character device, e.g. a terminal" and does not say whether a file number is legal. Whether the file path is correct behaviour or an over-permissive emulation is UNKNOWN. (Note the contrast: 22B, whose manual explicitly says file numbers are illegal, does reject them.)
Sources¶
| Doc | Note |
|---|---|
| SINTRAN III Monitor Calls (ND-860228.2 EN) | The manual body of this YAML. |
Source¶
SINTRAN III Monitor Calls (ND-860228.2 EN), page 373.