This document, the "VAX/VMS I/O User's Guide" (Order No. AA-D028A-TE), published by Digital Equipment Corporation (DEC) in August 1978, serves as a comprehensive manual for system programmers. Its primary purpose is to provide the necessary information and programming examples for directly interfacing with the I/O device drivers supplied as part of the VAX/VMS operating system (Version V01).
Key aspects and topics covered include:
Introduction to VAX/VMS I/O:
- Overview: Explains how VAX/VMS I/O operations are designed to be device and function-independent, with user processes issuing requests to software channels.
- I/O System Services: Summarizes key system services for I/O, such as
Assign I/O Channel ($ASSIGN), Queue I/O Request ($QIO), Allocate Device ($ALLOC), Get Device Information ($GETDEV), and services for asynchronous system traps (ASTs) and event flags.
- Quotas, Privileges, and Protection: Details the constraints on I/O operations, including Buffered I/O Quota, Direct I/O Quota, AST Quota, and privileges like Physical I/O (PHYIO), Logical I/O (LOGIO), and Mount Privilege. It also covers volume and device protection.
- I/O Addressing Modes: Explains physical, logical, and virtual I/O operations, and the conditions required for each type of access.
- I/O Function Encoding: Describes the 16-bit function values that specify I/O operations, composed of function codes and modifiers.
- Issuing I/O Requests: Provides guidance on channel assignments, device allocation, and the use of
$QIO, $QIOW, $INPUT, and $OUTPUT macros, including their arguments and status returns.
- I/O Completion: Discusses event flags, the I/O Status Block (IOSB), and Asynchronous System Traps (ASTs) for signaling I/O completion.
Device-Specific Drivers (Chapters 2-8):
The manual dedicates individual chapters to detail the features, capabilities, and specific function codes for each supported I/O device driver:
- Terminal Driver: Covers the DZ11 Asynchronous Serial Line Multiplexer and the VAX-11/780 console, including type-ahead, line terminators, special operating modes (e.g., NOECHO, PASSALL), escape sequences, and terminal/mailbox interaction.
- Disk Drivers: Describes RM03, RP05/RP06, and RK06/RK07 disk devices, focusing on features like overlapped seeks, data checks (per-request, per-file, per-volume), and error recovery algorithms.
- Magnetic Tape Driver: Details the TE16 Magnetic Tape Drive, its data checking, and error recovery capabilities.
- Line Printer Driver: Covers LP11 and LA11 DECprinters, explaining output character formatting and error recovery.
- Card Reader Driver: Describes the CR11 Card Reader, including read modes (binary, packed Hollerith, translated), special card punch combinations, and error recovery.
- Mailbox Driver: Explains mailboxes as virtual devices for interprocess communication, covering their creation, deletion, and message formats.
- DMC11 Synchronous Communications Line Interface Driver: Details the DMC11, its support for the DIGITAL Data Communications Message Protocol (DDCMP), and features such as unit attention conditions via ASTs/mailboxes, full/half-duplex operation, and transmit/receive quotas.
QIO Interface to File System ACPs (Chapter 9):
This section describes how to use the Queue I/O (QIO) interface to interact with file system Ancillary Control Processes (ACPs) for disk and magnetic tape devices. It covers ACP functions like CREATE, ACCESS, DEACCESS, MODIFY, DELETE, and MOUNT, along with details on the File Information Block (FIB) and Attribute Control Block.
Exclusions:
Crucially, the document explicitly states that it does not contain information on I/O operations using the VAX-11 Record Management Services (RMS); it focuses solely on direct interaction with the device drivers.
In essence, this guide is a deep dive into the low-level I/O programming interface for VAX/VMS, designed for those who need to bypass higher-level services for specialized control or optimization.