While a spool buffer is inactive, it resides in real storage or on the
paging device. After it has been filled with data from the virtual
.achine or a real input reader, it is written to a page of secondary
DASD storage. The allocation of pages on the spooling disk(s) is managed by DMKPGT, which handles requests for both pages of virtual
storage and semipermanent spool file residence. DMKPGT maintains
separate allocation block chains for virtual storage and spooling pages.
Each block contains control information and a bit map that allocates
pages on a single cylinder. If none of the cylinders allocated have any
available pages, DMKPGT enters its cylinder allocation routine. DMKPGT attempts to even out the spooling and paging I/O load by allocating cylinders across channels and devices. To minimize seek
ti.es on a given device, cylinders are allocated as close to the
relative center of the spooling or paging area as possible. Suppor!: All actual I/O for the page buffers on any device
is controlled by the paging I/O executive DMKPAGIO. VIRTUAL SPOOLING MANAGER (DMKVSP) The two functions of the virtual spooling manager are (1) to simulate the operation of all spooled unit-record devices attached to the user's
virtual machine, and (2) to read and write the spool files associated
with those devices. The following virtual devices are supported for
spooling, with the exceptions noted: IBM 2540 Card Reader/Punch, except for punch feed read and column
binary I. IBM 3203 Printer Model 4 and Model 5 (132 positions) IBM 1403 Printer Models 2 and N1 (132 positions) IBM 3211 Printer (150 print positions) IBM 3505 Card Reader (except for .ark senses reading) IBM 3525 Punch (except for the card read, print, and data protect
features).
The following consoles are supported for spooling when entered into
the directory as the virtual system console: IBM 1052 printer-Keyboard, Model 7 (via the 2150 Console) IBM 3210 Console Printer-Keyboard, Models 1 and 2 IBM 3215 Console Printer-Keyboard, Model 1
All virtual printers must have the universal character set feature. 10 checking is done on the spooled printer data. However, any UCS buffer commands issued by the virtual .achine (load UCS buffer, block
data checks, etc.) are ignored. It is up to the user and the
installation to ensure that the output is directed to the proper real
printer via use of the output CLASS feature described below. For the
3211 or 3203 printer, forms control buffer (FCB) co •• ands are accepted
CP Introduction 1-139
and siaulated by aeans of a virtual FCB maintained by the executive.
The use of the virtual FCB is the only way to simulate end-of-fora
conditions reflected by the detection of a channel 9 or 12 punch. When the spooled file is directed to a real 3211" 3203, or 1403, the operator
is responsible for loading the FCB or mounting the proper carriage tape.
If any of the unsupported unit record features are required, the real
device must be attached directly to the user's virtual machine. Thus, a 3505 reader could be a spooling input reader, but attached directly to a
batch virtual machine when it is necessary to read .ark sense cards.
Qutput File D8KVSP receives control fro. the virtual I/O executive, DftKVIO, when the
user's .achine issues a SIO to a spooled unit record device. DftKVIO does not pass control until it has been determined that the device is
available (that is, it is not busy and has no interruptions pending). DftKVSP first determines if the device is currently processing a file.
If it is, processing continues. If this is the first co •• and issued by the given device, a new output file must be opened. In open subroutine
is called to build the control blocks necessary to manage the file and
to obtain virtual storage and DASD buffer space. Control is then
returned to DftKVSP. Before the first record of an output spool file is written, DftKVSP writes a tag record (NOP CCW, TIC, data sequence) and initializes the
136-byte data area to blanks. It then sets the spool buffer displacement
pointer to the first doubleword in the buffer beyond the tag record. DftSVSP then analyzes and interprets the channel program associated with
the virtual machine's SIO. Each CCW is tested for validity of command, address, flags, alignment, protection, etc., and if the CCW is valid,
the virtual machine's data is moved from his own virtual storage space
to the buffer in the spooling virtual storage. When this buffer is
full, it is written to a page of DASD secondary storage and a new buffer
is obtained. The interpretation of the virtual machine's channel program continues until there are no more CCWs or until an error
condition is detected that prohibits further processing. In either
case, the device is marked as having the proper interruptions pending, a CSW is constructed, and DftKVSP exits to the main dispatcher. In contrast
to nonspooled I/O, the virtual machine has remained in a pseudo-wait (IOWAIT) for the time it took to interpret the entire channel program. The output file can be logically closed by the virtual machine either by issuing an invalid CCW command code, or by the CP CLOSE command. In
either case, D8KSPL checks for tag record information
and 3800-related information in the VSPXBLOK. (The VSPIBLOK, pointed to by the VDEVEITN field of the VDEVBLOK for the output spool device,
contains the tag information entered via the CP TAG command.) If tag data exists, the first spool buffer for the file is read in, the tag data is inserted in the tag record, and the buffer is rewritten to D1SD storage. If no tag data exists, the tag record data field is left blank.
The device is then cleared of pending interruptions, the file chains are completed, and the file is either queued for output on a real device of
the proper type (printer or punch), or, if IFER is in effect, is queued
for input to another virtual machine.
The 3800-related information includes:
CHARS -character arrangeaent table 80DIFY - copy modification name FeB -file control block 1-140 IB8 V8/370 System Logic and Problem Deter.ination--Volume 1
Previous Page Next Page