Skip to content

335B TransferData

Stub   MON 335B (221 decimal) · Mnemonic EXABS · Group: Input and Output Monitor Calls (manual section 2.5)

Available from: RT programs (manual compatibility box)

Emulation source: src/handlers/mon_335B_TransferData.c

Description

Transfers data between physical memory and a mass-storage device, e.g. a disk. You may perform various device control functions. This monitor call is mainly used by the operating system itself.

Notes

  • The program must run on ring 2. You may use any page table. Both demand and non-demand segments are legal. Memory areas for DMA transfer must be fixed contiguously.
  • For calls to magnetic tape or other devices where the last parameter contains number of bytes/words read or other return parameters, the parameter list must be in resident memory, i.e. an area with fixed page-table contents.
  • The physical memory area must be contiguous. Older versions of magnetic tapes or disk controllers cannot cross physical memory-bank boundaries of 128 Kbytes. These magnetic tapes have ND numbers less than ND-537. The disks have ND numbers less than ND-559.
  • Only two programs may execute TransferData at a time.

Parameters

Name Type Direction Description
DeviceNumber INTEGER In Logical device number.
Func INTEGER In Function code.
MemAddr INTEGER In Physical memory address.
BlockAddr INTEGER In Block address on device.
NoOfBlocks INTEGER In/Out Number of blocks to transfer.
ReturnStatus INTEGER Out Return status.

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

See also

DataTransfer, ReadFromFile, and WriteToFile

Compatibility

Machines Users Programs
ND-100 User RT and user SYSTEM RT 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 Yes No No No

Disagreement

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

Examples

From the manual (OCR text, not corrected).

INTEGER : DeviceNumber, Func, ReturnStatus
INTEGERA : MemAddr, BlockAddr, NoOfBlocks
...
Monitor_Call('TransferData', DeviceNumber, Func, MemAddr, &
        BlockAddr, NoOfBlocks, ReturnStatus)
INTEGER DeviceNumber, Func, ReturnStatus
INTEGER*4 MemAddr, BlockAddr, NoOfBlocks
...
Monitor_Call('TransferData', DeviceNumber, Func, MemAddr,
                          BlockAddr, NoOfBlocks, ReturnStatus)
DeviceNumber, Func, RetStatus : INTEGER2;
MemAddr, BlockAddr, NoOfBlocks : LONGINT;
...
TransferData(DeviceNumber, Func, MemAddr, BlockAddr, NoOfBlocks, RetStatus);
01 DeviceNumber COMP.
01 Func COMP.
01 ReturnStatus COMP.
01 MemAddr COMP PIC S9(10).
01 BlockAddr COMP PIC S9(10).
01 NoOfBlocks COMP PIC S9(10).
...
MONITOR-CALL "TransferData" USING DeviceNumber, Func, MemAddr,
                           BlockAddr, NoOfBlocks, ReturnStatus.
LDT     DEVNO     %Logical device number.
LDA     (PAR      %Load register A with address of parameter list.
MON     335       %Monitor call DataTransfer.
JAN     ERROR     %Error if register A is negative.
...               %Continue with processing.
ERROR, ...        %Error number in register A.


| DEVNO, ... |       |
|------------|-------|
| PAR, FUNC  | %Function code etc. |
|            | DMEM   %Memory address. |
|            | BLOCK  %Block address. |
|            | NOBLK  %Number of blocks to transfer. |

| FUNC, ... |       |
|-----------|-------|
| DMEM, 0:0 | %These three parameters are 32-bit long. Use |
| BLOCK, 0:0| %the most significant word for 16-bit parameters. |
| NOBLK, 0:0| % |

ndmonlib implementation

Stub Registered MON_STATUS_NOT_IMPLEMENTED: the handler is a stub. mon_dispatch() in src/core/mon_dispatch.c reports the call as unimplemented without calling it.

Handler mon_335B_TransferData
Code lines 10 (non-blank, non-comment lines in the file)

Source

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