Skip to content

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.