GY27 7255 0_HASP_II_Version_4_Logic_Sep76 0 HASP II Version 4 Logic Sep76
GY27-7255-0_HASP_II_Version_4_Logic_Sep76 GY27-7255-0_HASP_II_Version_4_Logic_Sep76
User Manual: GY27-7255-0_HASP_II_Version_4_Logic_Sep76
Open the PDF directly: View PDF .
Page Count: 524
Download | |
Open PDF In Browser | View PDF |
GY27-7255-0 File No. 8370-36 Systems OS/VS2 HASP II Version 4 Logic Program Number 370H-TX -001 VS2 SVS Release 1.7 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 First Edition (March, 1973) This edition, as amended by technical newsletters SN25-0l22 and SN27-l555, applies to HASP II Version 4.1 in support of OS/VS2, SVS Release 1.7 and any subsequent versions of HASP and releases of SVS unless otherwise indicated in new editions or technical newsletters. Information in this publication is subject to significant change. Before using this publication, consult the latest IBM System/370 Bibliography, GC20-000l, and the technical newsletters that amend the bibliography, to learn which editions and technical newsletters are applicable and current. Requests for copies of IBM publications should be made to the IBM branch office serving your locality. Forms for reader's comments are provided at the back of this publication. If the forms have been removed, comments may be addressed to IBM Corporation, P.O. Box 50020, Programming Publishing, San Jose, California 95150. ~Copyright International Business Machines Corporation 1973 PREFACE Persons interested in determining sources of errors withln or making changes to the internal logic of F~SP II Version 4 should read this publication. Readers must be familiar with programming techniques and the operating principles of OS/VS2 Release 1. This manual describes the purpose and function of HASP and its relationship to OS/VS2 Release 1. It does not replace the program listings; it supplements them and makes the information in them more accessible. This publication contains seven sections: Section 1 Introduction - describes the general characteristics and functions of HASP II Version 4. Section 2 ~lethod of Operation - contains HIPO (Hierarchy plus Input-Process-Output) diagrams that describe the operation of HASP II Version 4. The diagrams are high level and are designed to guide the reader to a particular area of the program listing. Section 3 Program Organization - describes the HASP general program organization and each of the HASP processors. Section 4 Directory - provides cross-reference lists. Section 5 Data Areas - contains descriptions of the interrelationship and content of HASP data areas and control blocks. Section 6 Diagnostic Aids - contains information necessary for interpreting the program listing and diagnosing program failures. Section 7 Appendix A HASP Programmer Macros - describes HASP macro instructions and their use. Glossary - defines HASP terms. Related OS/VS publications are listed in the IBM System/360 and System/370 Bibliography GA22-6822. Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 Table of Contents Section 1 HASP Introduction _ HASP Introduction specialized Direct-Access Storage Allocation • Transparent Blocking • Dynamic Buffer Pool Features • standard Features Optional Features HASP RJE Features HASP MULTI-LEAVING RJE Features section HASP HASP HASP HASP HASP HASP HASP HASP HASP HASP HASP HASP HASP HASP HASP HASP HASP Method of operation Input Processor • XEQ Initiation XEQ I/O Service • XEQ Job Termination • Reader/Interpreter Appendage Output Processor Print/Punch Processor • Purge Processor • Checkpoint Processor Log Processor • Priority Aging Processor Execution Thaw Processor Timer services Buffer Pool Manager • EXCP Interface I/O Services .. 1-7 1-8 2 :section 3 HASP Program Organization • HASP Program Organization Overview • -0 HASP Management Programs _ Basic Functional Processors Control Processors • Control Service Programs • Miscellaneous Programs • HASP Remote Work station Programs HASP Dispatcher HASP Communications subtask HASP 5MB Writer HASP SMF subtask • HASP SETPRT Sub task.. • • • • • • • • • • • • • • • • • • HASP Input service Processor • Phases • Subroutines Nonprocess Exits • HASP Execution Processor • Job Initiation • DDB service Job Termination The EXCP Exit ($EXCPSVC) Reader/Interpreter Exit 1 1-1 1-3 1-4 1-5 1-5 1-5 1-5 1-6 2-1 2-2 2-6 2-8 2-10 2-12 2-14 2-16 2-18 2-20 2-22 2-24 2-26 2-28 2-32 2-34 2-38 • '. • • • 3-1 3-3 3-3 3-3 3-3 3-3 3-3 3-4 3-5 3-9 3-11 3-13 3-13.2 3-15 3-15 3-11 3-20 3-23 3-24 3-26 3-28 3-28 3-32 Page of GY27-7255-o Revised September 15, 1976 By TNL SN27-1555 Execution Thaw Processor (~THAW) SMF Termination Exit • • • • • HASP Output Processor HASP Output Processor • • • • Job Output Tabl e (J01") Access "'!acros The Job Output Table (JOT) • • • • • HASP Print/Punch Processor • • Device setup Verification Subroutine • • • • • • • • • • • • • • • • • • • '3800 Device Setup and Verification Subroutine HASP Purge Processor • • • • • • • • • HASP Command Processor • • • • • • • Command Edit Routine - HASPCOME Command Subprocessor Control Sections HASP Command Processor Organization HASP Con~and Processor Work Area • Coding Conventions • • • • • • • • • • Register Conventions • • • • • • • HASP Command Processor Macros Command Processor Macro summary Organizational Macros Selection Tpble Element BASE2 services • • • • • • • • • Conditional In-Line Functions • • • • Relocatability Aids HASP Checkpoint Processor HASP Asynchronous Input/Output Processor • • • • • • HASP Timer Processor • • • • • HASP MULTI-LEAVING Line Manager HASP TSO Support Processor • • • HASP Priority Aging Processor HASP Input/Output Services HASP Buffer Services • HASP SMF Services HASP Job Queue Services • • • • • HASP Unit Services • • HASP Timer Services • • • • • HASP Direct-Access Storage Services • • • • • HASP Trace services • • • • • • • • • HASP Console Services • • • • • • • • • Console Message Buffer (CMB) Queueing Routines HASPMCON - HASP Remote Console Processor • • • • HASPCBUF - Console BufferL,g Routine • • • • • • HASPLOG - HASP Log Processor • • • • • • • • $FREEMSG - HASP Free Console Message Buffer Service Routine • • • • • • • • • • • • • Disastrous Error Handler • • Catastrophic Error Handler • Input/Output Error Logging HASP Overlay Services $LINK Service $LOAD Service $XCTL Service $RETURN Service $DELETE Service • • • • • • • • • • • • • • • • • OEXIT subroutine • OLOD Subroutine • • • • Overlay $ASYNC Exit HASP Remote Terminal Access Method OPEN • G.E!'l' Pl1l' • • • • • • • • • • • • • • • • • 2 • 3-34 3-34 3-35 3-35 3-37 3-39 3-40 3-43 3-44 3-45 3-47 3-47 3-49 3-49 3-50 3-51 3-52 3-52 3-53 3-53 3-55 3-56 3-56 3-61 3-63 3-65 3-67 3-69 3-71 3-73 3-75 3-77 3-79 3-81 3-83 3-85 3-87 3-89 3-91 3-91 3-93 3-98 3-99 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 3-100 3-101 3-101 3-101 3-103 3-103 3-104 3-104 3-105 3-105 3-105 3-106 3-106 3-109 3-109 3-109 3-109 CLOOE • • • • • • • • • • • • • • • • • • • • • • • • • MSIGNON--Signon Card Processor. • • • • • • • • • • MINITIO--MULTI-LEAVING Input/Output Interface •• MEXCP--Remote Terminal Input/Output Interface • • • • • • • MCCWINrT--Channel Command word sequence Setup Subroutine • • HASP Remote Terminal CCW Sequences. • ••••• HASP Initialization • • • • • • Entry Actions • • • • • • • • • • • Mandatory Fixing • • • • • • • • Building DCBs and DEBs. • • • • • Preparation of Overlay Service. • • • • • • • • Locating SPOOL Volumes. • • • • • • • • •• Direct-Access Initialization. Warm Start. • • • • • • • • • • • • • • • • • • •• Cold/Format Start • • • • .' • • • • • • • • • • • • Activation of overlay • • • • • Remote Job Entry Initialization - HASPIOVR • • • • Remote Console Initialization - HASPIOVS • • • Miscellaneous Initialization - HASPIOVB •• Buffer Building - HASPIOVC • • • • • • • • • •• Job Queue Warm Start - HASPIOVQ • • • • Activation of Normal Processing • • • • ••••• HASP Initialization SVC • • • • • • • • • • • • • • •••• HASP REP Routine. • • • • • • • • • • • • • ••••• HASP Overlay Build Program. • • • • • • • • ••••• HASP System/3 Work Station Program • • • IHEREP - HASP Environmental Recording and Error Processor • • • • • • • • • • • • $OOM - Commutator • • • • • • • • • • • • • • • • • • • • • $MFCU - 5424 MFCU Processor • • • • • • • • • $1442 - 1442 Card Reader-Punch Processor. • ••••• $5203 - 5203 Printer Processor • • • • • • • • • • •• $READER - Logical Reader Processor • $PRINTER - Logical Printer Processor. • ••••• $PUNCB - Logical Punch Processor • 5471 Console Processor • • • • • • • • • • 5475 Console Interrupt Routine • • • • • • • • • • •• 5475 Input Console Processor • • • $OONP - 5203 output Console Processor • • • • • • BSCINT - BSCA Interrupt Routine • • • • • • • • $BSCA - Communications Adapter Processor • • • • • • • $CMDSCAN - Local Command Subroutine • • • • • • $LEOF, $PERM, $REQ - Control Sequence Subroutines $DCOM - Decompression Subroutine • ~ • • • • • • • • $CMPR - Compression Subroutine • • • • • • • • • • •• $CKLEN - MULTI-LEAVING Buffer Allocation Subroutine $FREEBOF - MULTI-LEAVING Buffer Free Subroutine •• ABEND - Core Dump Subroutine • • • • • • • • • ~ • $LOG - HASP Error Recording Subroutine • $MSG - Error Message Tracing Subroutine • • • • • • • • • • $INrT - Initialization Routine • • • • HASP IHM - 1130 work Station Program. • • Commutator Processors System Subroutines • • • • • • • • • • • • • • • • Processor Subroutines • • • • • • • • • • • • • • RTP 1130 Control Block and Data Formats • • • • • • • • • • Output Element (TANK) Description • • • • Object Deck Format • • • • • • • • • • • • • • • • Examples of REP Cards • • • • • • • • • • • • Remote Terminal Main Loader (RTPLOAD) •• 3 3-109 3-110 3-110 3-110 3-110 3-110 3-113 3-113 3-113 3-114 3-114 3-114 3-115 3-115 3-116 3-117 3-118 3-119 3-119 3-119 3-120 3-121 3-123 3-125 3-127 3-131 3-134 3-135 3-135 3-138 3-138 3-139 3-140 3-140 3-142 3-143 3-144 3-144 3-145 3-146 3-147 3-148 3-148 3-149 3-149 3-150 3-150 3-151 3-151 3-151 3-155 3-156 3-159 3-161 3-163 3-166 3-167 3-168 3-169 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1SSS Remote Terminal Bootstrap (RTP 1130) •••••• Remote Terminal Program 360 Processing (LErRRIP) • ••• 1130 Instruction Macros • • • • • • ••• General Information • • • •• • • • • • HASP System/360 Work Station Program • • • • • • • Communications Interface Processor - Output ($TPPUT) Communications Interface Processor - Input ($TPGET) • ••• Control Record Processor ($CON'I'ROL) • • • • • COHuTlunications I/O Supervisor (COMSUP) • • • • Initialization Processor • • • • • • Print service Processor - $PRTN1 Input service Processor - $RRTN1 • Punch Service Processor - $URTN1 • • ••••• Console service Processor - $WRTN1 • • • • • • • Total Control Table (TCT) Section q HASP Directory 4-1 section 5 HASP Data Areas • • • • • HASP Buffer • • • • • • • • • • • HASP Data Block Buffer Extension • • • • • • • HASP Remote Job Entry Buffer Extension • • HASP Overlay Prea Buffer Extention • HASP Console Message Buffer HASP Command PCE Work Area • HASP Device Control Table • • • • • • • • Direct-Access • • • • Overlay • • • • • • • • • • Unit Record Readers, Printers, and Punches. Internal Readers • • • • • • • Remote Job Entry Lines • • • • • • • • All Remote D~vices • • • • • • • • • • • HASP Device Control Table Extension (3800 Printer) • • HASP HASP HASP HASP Data Definition Table • Communication Table • • Input/Output Table Job Control ~able • HASP Job Information Table • • ••• • • • • HASP Job Output El ement • • • • Work Element • . ' . • • Characteristics Element Checkpoint Element • • • • HASP Job Output Table • • • • • • • • HASP Job Queue El ement • • • HASP Message SPOOLing Allocation Block HASP Output Control Record • • • HASP Overlay Table • • • • • • • • HASP Output PCE Work Area • • • HASP Processor Control Element • HASP Peripheral Data Definition Block HASP Partition Information Table • • • HASP Print/Punch PCE Work Area HASP Print Checkpoint Element • • • • HASP Reader PCE Work Area • • • • • • HASP SMF Buffer • • • • • • • • • • • HASP Track ,Extent Data Table. HASP Timer Queue Element • • HASP Execution PCE Work Area • Section 6 HASP Diagnostic Aids Register usage • . • • • • • Storage Dump Containing HASP • 3-169 3-170 3-170 3-173 3-171 3-171 3-178 3-118 3-178 3-178 3-179 3-180 3-181 3-181 3-182 .. ... 5-9 5-10 5-11 5-15 5-19 5-23 5-2q 5-25 5-21 5-28 5-30 -S-':'32 5-33 5-35 5-44 1:\-51 5-60 • • • 5-61 5-63 5-6q 5-65 5-67 5-69 5-73 5-75 5-71 • • 5-79 • • • • • • ••• • • • • • • • • • • • • • • • • • • • 5-1 5-3 5-8 5-83 5-89 • • •• 5-93 5-95 • • 5-103 • .. 5-105 5-109 • • • • 5-125 5-127 • • • • 5-129 . . .. . ... . .. . . 6-1 6-3 6-5 Page of GY27-7255-o Revised May 28, 1975 By TNL SN25-o122 Debugging Tools Within HASP ••••••••••••••••••••••••.•••• 6-7 . . . . . .. 7-1 Section 7 HASP Appendixes .•••••••••••••••••••••••• Appendix A HASP Programmer Macros ••••••••••••• 7-1.2 HASP Macros Overview ••••••••••••••••••••••• Basic Notation Used To Describe Macro Ins truc tions ••••••••••••••••••••••••••••••••••• Special Register Notation •••••••••••••••••••••• Register Transparency •••••••••••••••••••••••••• HASP Buffer Services ••••••••••••••••••••••••••••••• HASP Job Queue Services •••••••••••••••••••••••••••• HASP Unit Services ••••.••••••••••••••••••••••••••••• HASP Direct-Access Space Services •••••••••••••••••• HASP Input/Output Services ••••••••••••••••••••••••• HASP Time Services ••••••••••••••••••••••••••••••••• HASP Overlay Services •••••••••••••••••••••••••••••• HASP Synchronization Services •••••••••••••••••••••• HASP System Management Facilities (SMF) Services ••• HASP Debug Services •••••••••••••••••••••••••••••••• HASP Error Services •••••••••••••••••••••••••••••••• HASP Coding Aid Services ••••••••••••••••••••••••••• HASP Job Output Services ••••••••••••••••••••••••••• 7-6 7-9 7-10 7-11 7-13 7-19 7-21 7-23 7-29 7-31 7-39 7-43 7-45 7-47 7-49 7-55 . . . .. 7-59 MULTI-LEAVING Philosophy ••••••••••••••••••••••••••• MULTI-LEAVING Control Specification •••••••••••••••• String Control Byte (SCB) •••••••••••••••••••••••••• Record Control Byte (RCB) •••••••••••••••••••••••••• Subrecord Control Byte (SRCB) •••••••••••••••••••••• Function Control Sequence (FCS) •••••••••••••••••••• Block Control Byte (BCB) •••••••••••••••••••.•••••••• MULTI-LEAVING in BSC/RJE ••••••••••••••••••••••••••• 7-61 7-63 7-63 7-64 7-65 7-67 7-68 7-68 . . . . . . . . . ... . . . . . GLO-1 Appendix B MULTI-LEAVING •••••••••••••••••••••••••• Glossary HASP Terms and Abbreviations •• J[I1d~)C •••••••••••••••••••••••••••••••••••••••••••••••••••••• 5 7-3 IND-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 SECTION 1 HASP INTRODUCTION Introduction 1 - 1 HASP INTRODUCTION HASP II Version 4 is not System Control Programming (SCP). It is optionally available to replace OS/VS2 Release 1 readers and writers. It provides the remote job entry (RJE) support for OS/VS2. Installation remains the responsibility of the user. Progra~ng service Classification is A. The HASP System is an extension of OS/VS2 and provides support in the areas of job management, data management, task management, and remote job entry. HASP operates as a systems task and is formally interfaced to OS/VS2. When HASP is used, it supplants the normal OS/VS2 functions of reader, printer, and punch input/output services~ SYSIN/SYSOUT SPOOLing~ and job scheduling. Features that may add to system performance are a high performing SPOOL Management routine and the HASP MULTI-LEAVING Line Manager. MULTILEAVING is employed with all CPU work stations and will tend to maximize line effectiveness and provide concurrent operation of all supported work station devices. HASP operation is in a V = V mode. The minimal storage that must be fixed is 12K bytes. The requirement for fixed storage will be approximately 25~ or less of the total storage generated for a HASP System. The job input and output services provided for local peripheral devices, along with a subset of the HASP operator commands capability, are optionally extended to remote work stations, including both CPU and nonCPU terminals. Work station programs for 2922, BSC System/360 Model 20 and higher, BSC 1130, and System/3 are generated as extensions to the central HASP System and operate in the work station on a Wstand-alone w basis. The HASP RJE implementation for BSC CPU work stations is based on the HASP MULTI-LEAVING philosophy which provides the capability for concurrent operation for all supported terminal job input, output, and console devices. HASP is a specialized program that operates in the same CPU with. OS/Vs2 to perform the peripheral functions associated with batch job processing. HASP is loaded as a systems task. Control of all online unit record devices is assumed~ the designated intermediate storage direct-access devices(s) are initialized; and job processing begins. HASP has three major processing stages which relate to its three major external functions. These are: 1. INPUT STAGE - This stage reads jobs simultaneously from an essentially unlimited number of various types of online card readers, Internal Reader interfaces, and remote terminals into the system. These jobs are then entered into a priority queue by job class to await processing by the next stage. 2. EXECUTION STAGE - This stage removes jobs, based on priority and class, from the queue established by the input stage and passes Introduction 1 - 3 HASP INTRODUCTION those jobs to OS/VS2 for processing. Input cards are supplied as required to the executing program, and print and punch records are received and written onto clASP intermediate storage. This stage can simultaneously control an essentially unlimited number of joos being processej by OS/VS2. At the completion of a job, it is placed in a queue to await processing by the next stage. 3. OUTPUT STAGE - One purpose of this stage is to transcrioe the printed output generated by jobs in the previous stage to printers. An essentially unlimited number of various types of printers and remote terminals can be operated simultaneously. The output stage also transcribes the punch output generated oy jobs in the execution phase to punches. An essentially unlimited number of various types of punches and remote terminals can be operated simultaneously. All of these processes are controlled by reenterable code, so no additional code is required to support multiple, simultaneous functions. since all of the above functions can occur simultaneously and asynchronously, a continuous flow of jobs may pass through the system. The following paragraphs describe some of the more significant algorithms employed by HASP to improve function and performance. SPECIALIZED DIRECT-ACCESS STORAGE ALLOCATION HASP, through the use of an allocation bit map in main storage, dynamically allocates intermediate storage space for jobs on a record basis, within definable track groups. The use of this technique offers the following advantages: 1. Disk-arm motion and interference is minimized by dynamically allocating space, based on the position of the access mechanism. 2. Disk-area fragmentation is automatically eliminated by allocation of the smallest possible increment of space. 3. The data for a single data set can be spread across multiple direct-access volumes. In addition to further optimizing arm motion, this capability allows for the simultaneous use of multiple channels to increase the data rate for a given job. 4. Since space is allocated only when required, there will be no unused space as a result of over-estimated output requirements. 5. The release of previously-used space is accomplished by a simple algorithm, which requires no I/O operations. UNIT RECORD DEVICE 1 - 4 HASP Logic CO~~AND CHAINING HASP I~RODUCTION While operating any reader, printer or punch, rather than h~ndling each record separately, HASP constructs a chained sequtnce of channel command words to pass to the channel. Thus, instea~ of the overhead of the EXCP and the ensuing interrupts for each record transmitted, only one EXCP and associated interrupt is required for a series of records. For example, when reading a jqb into the system, HASP might chain 40 commands together to instruct a card reader. This would cause the next 40 cards to be read into storage without requiring the execution of any CPU instructions. TRANSPARENT BLOCKING All input, print, and punch for every Job is automatically blocked by HASP to improve performance. Since all deblocking is also done by ~ASP, any program, even if designed to operate with unblocked records, can benefit from the blocKing. Also, because all blocking and deblocking is done bi HASP, problem program3 require buffers only the size of a single card or line. This can reduce a program's partition or region requirement by several thousand bytes over normal full-track blocking. DYNAMIC BUFF~R POOL HASP maintains a dynamic area of storage, which is allocated as required. This technique allows not only mUltiple data sets of a job but multiple jobs to share this area, thereby ensuring optimum use of storage. FEATURES Standard Features The standard features of HhSP are as follows: 1. Job input service provides for low overhead reading of job streams and storing of data on SPOOL volum~s for later high-speed retrieval for up to 99 concurrently-active local card readers in any combination of devices as tallows (one required): 2540 reader, 2501 reader, a3d 3505 reader (SO-column punched cards only). 2. Execution services provides for selection of jobs and execution monitoring for up to 63 concurrently-executing jobs with services as follows: selection of jobs based on job class and initiator priority class (list of up to 64 classes for each initiator); automatic delaying of jobs with duplicate OS job names; automatic deblocking and blocking of user SYSIN/SYSOUT data using the HASP dynamically shared buffer pool count of lines, cards, and execution duration with optional operator notification and/or job cancellation; and interface for SMF counting of SYSIN/SYSOUT data. Introduction 1 - 5 Page of GY27-7255-0 Revised September 15, 1976 . By TNL S N27-1555 HASP INTRODUCTION 3. Execution services requires an OS Keader/Interpreter to be active at all times. 4. Multiple SPOOL volume support provides for balanced utilization of up to 36 volumes for any comoination of devices as follows (one required): 2305,2314, 3330 and 3350. 5. Warm start capability provides for checkpointing critical HASP information sufficient for: optionally restarting jobs which were executing, restarting print at the last checkpoint, and restarting punch at the beginning of data set. 6. Job output print service provides for low overhead printing of job stream system message and user data print output for up to 99 concurrently-active local printers in any combination of devices as follows (one-required): 1403 Printer, 3211 Printer, and 3800 Printing Subsystem. 7. Special forms feature provides for the routing of print (on a job or data set basis) and punch data (on a data set basis) to special forms output queues for output as directed by the operator. 8. Console support provides for direct entry for HASP commands and HASP abbreviated reply to WTOR through OS/VS2 operator consoles. 9. HASP minimal System Message Block (5MB) output writer provides for retrieval of 5MB from the SYS1.SYSJOBQE data set. 10. HASP will interface directly with the OS/VS2 SMF Writer. Optional Features In addition to the standard features, the following optional features are available: 1. Internal Reader feature provides the ability for any nonswappable task within the system to submit jobs to HASP for batch execution as though entered from a HASP card reader. . 2. Job output punching services provide for low overhead punching of job stream user punch output for up to 99 concurrently-active local punches in any combination of devices as follows: 2520 punch, 2540 punch, and 3525 punch. 3. Execution Batching feature provides the facility for passing jobs directly to a processing program such as a ·one-step monitor,· reducing the overhead of OS scheduling and allocation of facilities for short running jobs requiring limited system facilities. 4. Priority Aging feature provides for automatically increasing the HASP scheduling priority of jobs that have been in the system for extended periods of time. 1 - 6 HASP Logic HASP INTRODUCTION 5. Remote Job Entry feature provides for high-speed communications with BSC batch work stations which may be used for job stream input and output as well as operator control of the devices and jobs associated with the remote (see HASP Remote Job Entry for features). HASP RJE Features Those features common to all dASP RJE configurations are as follows: 1. HASP RJE supports up to 99 remote work stations communicating over leased (point-to-point) or dial lines. 2. HASP RJE provides for concurrent operations over up to 99 lines assigned to unique communication lines adapter addresses of the following types: SDA Type II on a 2101 for SSC, Synchronous Sase on a 2703 for BSC, and 3705 providing 270X emulation. 3. Output routing control provides for print and punch output to be directed to the devices attached to the remote, to the central system, or to other remotes as designej by HASP generation parameters, by control card SUbmitted with the job, or by operator command. 4. Remote Operator Control feature provides a subset of the HASP operator commands for display of information and control of jobs and devices associated with the remote. 5. Operator Message Output feature provides for immediate transmission of messages and responses to remote operators with online ~ULTI-LEAVING work stations with consoles and optional saving of messages for all other remotes until the remote is online and has its primary printer available. 6. Work station programs, when required, are supplied as extensions of HASP and are contained on the HASP distribution tape in source form. 7. Terminal support on the central system provides for communication with: 2770 (BSC), 2780 (SSC), 3780 (BSC), System/360 Models 20, 22, 25, 30, 40, 50, 65, 75, 85 and 195 (MULTI-LEAVING); 1130 (MULTI-LEAVING); System/3 ~odel 10 (MULTI-LEAVING); and 2922 (MULTI-LEAVING). 8. The sign-on feature provides for remote identification and line security through line passwords. 9. Remote characteristic support utilizes the unique features on each remote as follows: full text transparency (required for object decks), text compression, print line width, buffer size, and blocking capabilities. Note that multipoint or multidrop line features are prohibited. Introduction 1 - 7 HASP INTRODUCTION 10. Remote job priority adjustment provides for favoring or limiting the HASP scheduling priority of jobs submitted from each remote work station. 11. Line Restart feature provides for warm starting of print output after remote work station or line failures. 12. Line error recovery provides for continuous retry until successful transmission. HASP MULTI-LEAVING RJE Feature MULTI-LEAVING is a term which describes a computer-to-computer communication technique developed for use by the HASP System. In a gross sense, MULTI-LEAVING can be defined as the fully synchronized, pseudo-simultaneous, bi-directional transmission of a variable number of data streams between two or more computers utilizing binary synchronous communications facilities. Those features common to all HASP RJE configurations are provided to MULTI-LEAVING configurations with additional features as follows: 1. Concurrent device operation feature provides for all supported devices to operate concurrently in accordance with the device characteristics, line speed, and characteristics of the data streams. 2. Dual reader/punch device support provides for use as both reader and punch under automatic or operator control. 3. Unit record error recovery provides a minimum of operator intervention and continued operations using unaffected devices on operator console configurations. 1 - 8 HASP Logic Page of GY27-7255-O Revised May 28, 1975 By TNL SN25-0122 SECTION 2 HASP Method of Operation LEGEND Control flow external to this diagram. Control flow internal to this diagram. ---+ Data used by a processing step to determine cause of subsequent processi ng . Address pointer. Data Flow. ~"'. Data modification (implies input to process step). CJ o 10 Off page connector. On page connector. Decision. Method Of Operation 2 - 1 HASP Input Proceaor (1 of 2) N 113 N E .. f:pc£ ~ E' ....n \Q r-- f ROCT .. .. OCT I f'-- ';)(1 o o OCT FLAGS CD OCTPIINT OCTPUNCH DCTPRINC DCTPRlIM ® HCT $J08NO $DATAKEY Job s.- ,I .;1(6 Acqui.. ' ...... c:-.I o.teminelnputtype. AnalyzeJClcClld. outstandifll~ EOf~. CTlCDS~. DA'A~. JOI~. DD.MDDDA'A~. Add Image to HASP JCl Sh.2 n.. ~ .........., ..." " " " " ..." ...,.~ ~" '_I..... HASP Input proc_lng for pevlous job, If any • ..., " " " " " ' ,.. Build new JQ£, JCT, lOT and Initialize HASP JCL for new I ~ aG 1"""'. I ... "'~ I-L-j 1--,,,,,,,,,,,,. lob.~. ~ I I I o 1.....,"",.... Reco!d me delimiter characters, add DD· TTR record to JCL file, initialize a HASP data o o I@ file.~. I Ifflledellmlter~. Add Image to HASP data file.~ • .." ..., " ' ,..." ~ ..., " " , . I I I I i I Tennlnate HASP data file. If I-OUTPUT @ Extract infonnatlon for JCT and/or .JQE • -..@. ..."""'. ~ JOBOUE p-",. . . . . ~~A_..._ I ......c:D ..."...,',......,(,", .. ;.~ ~ ........""'... I I I I I I I I I I I II ! I ~"""""'..."""""".....I r--------T--------T------------------------------------------------------,I I ASSEMBLY I ASSEMBLY I I LISTING I LISTING I I NAME I LABEL I I NARRATIVE I ~--------+--------+-----------------------------------------------------~ HASPRDR IHASPRDR I I I HASPRDR I RCCSERCHI I HASPRDR I I~c~ruml I HASPRDR IHASPRJCSI I 1 Input is ant~ipated from a local card reader, the I Internal Reader, or a remote work station. I ~ The table of control words at RCCTAB is searched for the various HASP control cards. ~ ~ I The Job Queue Management Service routines of $QLOC and $Q~DD are used to update the HASP Job Queue. I HASPRDR I RGENNEDD I 1 A record is written into the JCL file to record I - the track address of where the data will be written. I I HASPRDR IRFLTEST I I I ! If flush switch is not on put data record in H~SP data file. L ________ L ____________________________________________________ _ HASPRDR LI ________ HASPRCC2111 :s:: m rt ~ o ~ ot1\ o m 'tj t1 PI rt ~. o ::s N w I I I I I N HASP Input Processor (2 of 2) ~ ; @ 8o"d OCR , _ .... ,~'''''. ,. HASP Jel m•. .., " " " " ' , :••:••:...:.",:..... {Jl to t'f o ~ n @ .... "l Determine if $C or $Z. If $Z :..L•., ..:..." ..~ ~. .-c:D. Terminate HASP input processing for current job, queue job for printing, skip for job card • HASP DISPATCHER @ $WAIT (I/O). @ Terminate HASP input processing for current job. I • . r--------T--------T-----------------------------------------------------,I I ASSEMBLY I ASSEMBLY I I LISTING I LISTING I I NAME I LABEL I NARRATIVE I I ~--------+--------+-----------------------------------------------------~ IHASPRDR IROTPCARDlll The Output Control Record is identified as a code I I I X'43' record in the HASP data file. I I I I I IHASPRDR IRDCKCOM 114.The DCTFLAGS bits are tested for $C or $Z. I I I I I I Il§. I I HASPRDR I RWAIT I I I I IHASPRDR I III The end of the HASP data set is marked with a I IL ________ LI ________ LI _____________________________________________________ record containing the code X'04'. JI ~ rt ::r o 0.. o Hl o "'0 (D 11 III ....rt o ::s IV U1 HASP xea Job Initiation N PlTA8LE 0'\ s; til "tI t:-t o ..,. \Q _---i ~ ... PIT ~ l I J I n PCE ;:I( 1 o 0 0· XPCEPIT XPCEJ08 Select job from queue. Read JCT for job. XPCEDCT XPCEOUT ./ ...........pd-'. lOT . . ./ iob'1!;0" XPCEIOT .> ... XPCEJOBN ~, XPCEJST :> I JCT I JCTXEQON JCTXDTON J'. Find starting time for job. ./ JCTlOTTR SDD8POOL to. ~ I l I 0 Update and write JCT • ® Request HASP checkpoint be token. ;:1(7 J • Get 008 for &RDR and LOG. lOT 10TTRACK 10JCTTR I I I I ® ® e§) @ @ PDDB(s) I v>t Set up log DDB and PDD8. LJ Write lOT. Reque,I THAVv of I IOTPDDB "BEGINNING EXECUTION" message Read first buffer of JeL. OS Reader/Interpreter. $WAIT for work. --- II r--------T--------T-----------------------------------------------------, I ASSEMBLY I ASSEMBLY I I I LISTINGI LISTING I NARRATIVE I I NAME I LABEL I I .--------+--------+-----------------------------------------------------~ IHASPXEQ IXJOBINITI 1 Each bit is analyzed to determine if a job exists I I I I on the HASP Job Queue which satisfies its I selection criteria. I I I I I I I I I I I I I I IHASPXEQ IXNOBATCHI!! The OS Reader/Interpreter is activated to read the I I I I HASP JCL data set related to the job selected for I LI _______ -L I ________ I execution. _ ______________________________-JI IHASPXEQ IXJCTWOK I I I I ~ ~__ ifrt ::r o 0" o HI o ttJ CD t1 P, rt "".o ::t t-.J ..,J The checkpoint reflect~ the change in status for the job selected for execution. HASP XEa I/O Service to..) HASP DIAPATCHER co --.. ::c ~ til "t1 t"f o .... \.Q o XPCEDDB 1 too. ~ ® I I I o 0 o Search for DDS togged for activity. End of request~. chain~. Tennination XDDBTABLE ')I Put DDS at heod of Frequency Table. t---.SYS1.HASPACE ~ S.N'U ,.",,, ...,_•• -orService output request. ~ 1 ~ 0· ® ~ Data block ..--'" Finalize outstanding I/O and free buffer{s). Place DDB on Free Chain. SDDSPOOL ~ ~ '>I DDS o I'r'--- Il ~ 1 Checkpoint togged 10T{s). Gl.HASPAC0 --:,i'-i'-- lOT ~ ~ _/ Request THAW of problem program. HASP DISPATCHER $WAIT for work. I . r--------T--------T-----------------------------------------------------, I ASSEMBLY I ASSEMBLY I I I LISTINGI LISTINGI I NAME I LABEL 1 I I ~--------+--------+-----------------------------------------------------~ HASPXEQ IXTIMWAT I 1 The DDBSTAT2 field determines if action·is I required by this DDB. I NARRATIVE HASPXEQ IXDDBCONTI ~ HASPXEQ 3 I/O service involves the reading or writing of a HASP data block from SYS1.HASPACE. HASPXEQ IXTE~iIN81 HASPXEQ XTERl"lFD When buffer roll is required, the buffer related to the DDB at the end or bottom of the frequency table is the first candidate for rolling since this buffer has been dormant for the longest time. 4 5 After the DDB is placed on the free chain, a $POSTI of DDB is used notifing all interested peEs. I I I I I I IHASPXEQ XWAITCNll I The task which generated the DDB request is I IL ________ I ________ I _____________________________________________________ scheduled for reactivation by the Thaw Processor. JI HASPXEQ XIO+SCANI • I ~ ~ ~ o p" o HI o to (I) t1 PI rt .... o :l N \0 ~ ~ If any lOT has changed as a result of the DDB request it is checkpointed. I'IJ ...., 0 ; (Jl tg t-t 0 .... I.Q 0 HASP XEa Job Termination XPCEIOT ~1) ® ® o CD ru... lopul N . . . . I~'''. Free JCT and lOT buffers. Queue job for output phCBe. PCE Clear PCE work area." 1 PCEWORK SWAIT for work. r--------T--------T------------------------------~------------, I ASSEMBLY I ASSEMBLY I I LISTINGI LISTINGI I NAME I LABEL' I ~--------+--------+---------- IHASPXEQ I I IHASPXEQ I I I NARRATIVE --------------------------------~ I HAS P XEOJ I 1 If the job is to be restarted its output tracks I are purged and it is requeued for input. I I I I I I IXCOMPRIOI 1 The job is queued for output with a priority based I I I I upon the number of generated output lines as I conditioned by HASPGEN parameters 'XLIN and 'XPRI.I I I I I I I I I HASPXEQ I XQEND I ~ All PCEs are $POSTed with job and the Checkpoint I I I I Processor is $POSTed with work so that a I I I I checkpoint will reflect the new status of the job I Il ________ I ________ I which just completed. _ ______________________________ JI ~ if ~ op, oHI o '0 (I) 11 PI rt ~. o :3 1'0.) t-' t-' ~_______ fI.) HASP Readerllnterpreter Appendage RI ~ fI.) J s; CIl ttJ OS R/I exit Parameter list '.. I ... CD -----------tt0 o ~. ___ . _xt tot o \Q ~. o CD c~ RI3 I I~~ '1 locate execution PCE related to Reader/Interpreter. Analyze JCl text key. E X E C - . 0 . Build new internal JCl text for JOB statement and move to Reader/Interpreter """'~""~ ~a~. II Return to Reader/Interpreter. Via RI4 o If not member of Automatic Priority Group ® Remove DPRTY key value from internal text. (j) Return to ReadeVlnterpreter. Via RI4 o DD~. -.0. ~ I I I I I I II If SYSOUT -.®. Ii· or DATA-+@. I I I I I I I~ o Return ta Reader/Interpreter. Via R14 ® Build new Internal JCl text for SYSOUT statement and move to Reader/Interpreter .."'~"'~ text area. : :>(11 TXTBUFW r~,------, PDDB II PI--I I ---l Build PDDB using JCl text and OCR. lOT ~ Mro~_~~ @ R-:turn to Reader/Interpreter. Via RI4 @ Enlarge DDB produced by EXCP interface using DCB information from DO card. ® Return to Reader/Interpreter. Via RI4 ~"",;...""""""""",.... _n ,III' r--------T--------T---------------------------------------I ASSEMBLY I ASSEMBLY I --, I I LISTINGI LISTING I NARRATIVE I I NAME I LABEL I I .--------+--------+-----------------------------------------------------~ HASPXEQ IXJCLSCANI 1 Retrieve PCE address from location $RDRPCE. I HASPXEQ I XJCLJBPR I 1 Class, PRTY, TYPRUN, and MSGCLASS are screened I according to HASP disciplines. I HASPXEQ I XJCLXQ I ~ I BASPXEQ I XJCLDDPR I 8 I HASPXEQ IXJCLNOTBI1! The PDDB is made to reflect the UCS, FeB, forms I number, maximum record count, destinat~on, 3211 I index, number of copies, 3800 Burster-TrimmerI Stack,r threading, 3800 forms overlay name and count~ I 3800 copy modification module name, 3800 character I I arrangement tables, and 3800 copy groups. I f I I I HASPXEQ IXJCLIOT211£ If an lOT must be written to DASD it is done under I I the control of the HASP task and the execution I I PCE. I ~ HASPXEQ IXJCLDDDAIl! The DDB was acquired in the EXCP interface routine I when a significant card image was encountered I I I which was planted there during initial reading I of the job stream. l ________ ________ I _____________________________________________________ JI ~ ~ rt ::r o ~ o Hl o "0 ~ ~:;c;p 11 '1 2 Obtain job from JOT using subroutine SIGET. (SPOST Checkpoint Processor). 3 Read JCT and extract information for peE .111."""""""""'~ 0 LLw lOT Q 5 ® PODS @ rr--~ 7 ® PCE Verify device set-up and if required notify operator; for 1403 load UCS; for 3211 load UCS and/or FCB fo.;3800. load FCB. character arrangement tables. copy modifications. and copy counts. Read lOT from chain. v 1 10 ® @ @ ®. Select PODB from lOT which matches the characteristics JOE. At end of lOT ®. At end of PODS If same SMF type cannot be used for this data set. build SMF record and queue for output. - Read block from HASP data set chain. At end of chain 0. ... Praduce HARDCOPY from HASP data set. At end of block ~9 ~~~,.o v -+0. Read lOT containing current PODS C]·,D -.cv . ~YS1.HASPACE I Read JCT. Update praduction accounting fields and write JCT. v ~ ~ JCT JOT 8u ild an SMF record and queue for output. JOE Remove work JOE from JOT using subroutine $*REM. ($POST Checkpoint Processor). v $WAIT for JOT. HASP DISPATCHER I I ... . Qj r--------T--------T----------- I ASSEMBLYI ASSEMBLYI I LISTING I LISTING I I NAME I LABEL I --------------------------------,I NARRATIVE I I ~--------+--------+-----------------------------------------------------i HASPPRPUIHASPPPIll I I I I I I I I 1 If a requested OCT is not available the Print/ Punch Processor $WAITs for unit. HASPPRPUIPNORMWTOI I I I I HASPPRPUlHASPPPI21 HASPPRPUIPRPUDSV I IOSV3800 I I I I I I The $POST of the Checkpoint Processor is performed I within the $#GET subroutine. If no work is avail-I able the checkpoint Procp.ssor $WAITs for JOT. I I ! Ii the device requires set-up the processor .which contain related SYSOUT data. The field named PDBMTTR conveys the starting MTTR for each set. HASPPRPU)PDOBFCHK 6A A type-6 SMF record is built reflecting the amount of work done so far on the related job. 1 -I HASPPRPUIPNXTBLK I I I CD rt o 0.. o I"tt o I informs the operator and $WAITS for I/O which will be $POSTed by the Command Processor when the operator responds. I I I ::r I I ! Each PODB represents a chain of HASP data records HASPPRPUIPPPDB ~ I ~ ~ HASPPRPUIPPIOTRD I I 1 I 1 I I I I I I I HASPPRPU·I PNXTCCW I I I HASPPRPUIPPPIOTRDI I I I Blocks are read from the chain until the MTTR for the next block is zero. !! A multi -command channel program is builtin the PCE and executed to produce hardcopy. ~ The lOT containing the PDDB just processed is read to restart the PDDB search/match sequence. '0 HASPPRPUIPPDONE I .... HASPPRPUIPJCTWOK 111 A Type-6 SMF record is built representing the I I amount of work performed in behalf of the related I I I 1 job. I CD t1 III rt o :s t\J ....-...J IlQ The JCT is protected from simultaneous updating bYI I ~ bit called QUEJCTSW in the Job Queue Element. ) I I I I I HASPPRPUIPJOEREM HASPPRPUIPNOJOB I~ I I The job will be placed on the purge queue if its number of work JOEs on the JOT euqals zero. III If another Work-JOE cannot be obtained from the I I I I I JOT the processor $WAITs for JOT. L-______ --LI ________ LI ________________________________________________ JI ~~~ ~~.~ z~o r-o.-. cncnC) z.g -< IV_IV -...10-...1 .!..~~ V'oolV V'o~V'o V'o_Y' V'o0 \C -...I 0\ HASP Purge Processor I\) "A)I' UI)PAI(';HU ~ Q) - s; .......... ~VS1.HASPA~ t'd f'.I"-- til t'4 o \Q ~. n f'-f'...- '- .. (0 Select job to be purged. ----",i" JCT lOT ~ .. )( 2 Read JCT and lOT. .~ .---/1'- .---/ 0 0 ® 0 0 0 Free lob', Input truclc(s). Free job', output truclc(.). SMF record Build SMF record. ~ I Queue SMF record for writing. Remove job from queue. $WAIT for job. HASP DISPATCHER .. . ' r-------~--------T-----------------------------------------------------, IASSEMBLY I ASSEMBLY 1 1 LISTINGI LISTINGI 1 NAME 1 I 1 NARRATIVE I LABEL I .--------+--------+-----------------------------------------------------~ HASPMISCIHASPVPURI 1 1 I I HASPMISCIVNOERROR I I I I 1 I I I o H\ o ~ 11 PI rt ~. o ::s IV ..... \0 a~d ! ~ I 1 I 1 I 1 1 If EXT=YES was specified as a SMF parameter to OS,I two SMF buffers (type 26 record and JMR) are built I and queued up to be written by the SMF subtask. I If EXT=~O was specified, only the type 26 record I is built and queued. I $QREM and an operator message indicating the job is purged is created. HASPMISCIVNOJOB ~ The job's input track are purged using $PURGE the information in the JCTCYSAV field. I The job is removed from the HASP job queue using HASPMISCIVREMJOB rt ~ ~ I 1 I 1 ::r o p, I and the information in the IorCYMAP field. HASPMISCIVSMFPRG I 1 queued for purging. ! The job's output tracks are purged using $PURGE HASPMISCIVPRGCYL L _______ -L ________ 1 HASP JQEs are searched using $QGET for a job 1 I I I 1 The processor $WAITs for a JOB and returns to the I HASP dispatcher. _____________________________________________________ J1 HASP Checkpoint Processor N HASP DISPATCHER N o ~ Ul .. ... $SAVEBEG LPrinter Checkpoint Elements 1 I Move printer checkpoint information. tU t-' o .... ~ $ STATUS I ~----I---t ~ If no JIT checkpoint request I -+0 . I o I I I I I I L __ ~ 0 o ® $CKPTlME l 0 1 0 Build channel program to checkpoint JIT. If no JOT checkpoint request~. Build channel program to checkpoint JOT. "- Write checkpoint record{s). Reset checkpoint/time interval. $WAIT for work. HASP DISPATCHER I L .. r--------T--------T-----------------------------------------------------,I IASSEMBLYIASSE~~LYI I LISTING I LISTING I NARRATIVE I I I NAME I LABEL I ~--------+--------+-----------------------------------------------------~ HASPMISCIKCHECK I 1 The Print/Punch Processor checkpoint element pool I I is moved to a area contiguous with the HASP Job I I Queue. ~his precludes having to WAIT for the I I checkpoint records to be written before modifing I I an element. I HASPMISCIKEXCP I I I I I I I HASPMISCIKIOWAIT I I I I I I (1) rt ::T o 0.. o t1'I o "0 (1) t1 PI rt ..,. o ::s fI,.) ... fI,.) 1 The remaining checkpoint time interval is canceled I using $TTIMER and the new interval is set using $STlMER. 8 The Checkpoint Processor $~AIT for work until it is $POSTed either because the checkpoint interval timer has expired or another processor has recognized a significant event and requests a checkpoint. L ________ LI ________ LI ____________________________________________ HASPMISCIKWAIT 3: 6 Up to 3 physical records may be written. Record 1 consists of the entire HASP Job Queue followed by all printer checkpoint records. Record 2 consists of the HASP Job Information Table. Record 3 consists of the HASP Job Output Table. The write is $WAITed upon before processors $~AITing for a checkpoint to be taken are $POSTed. I I I I I I I I ~--------J '" HASP LOG Processor '"'" :r: )I til 1 8MB ~ --"1 o .... o .. .. 1 -.@. 1 Get message to be logged. If end of queue 2 Locote the PCE related to the WTOjW'TOR request. I t"' \Q HASP DISPATCHER $LOGQUE OJ I $EXPCPCE I r-=tPCE 11"1 r r $BUSYQUE V 1 R13 o o 0 If input 8 message~ • If not "END EXECUTION" message~ . ~ Terminate lag DDB. 8MB "1 r OJ r 6 Merge CMB onto queue by priority. 7 Post HASP console interface subtask. r-- I Buffer :>( DDBUFPTR ~ .... i-- $WTOECB I ® o ..... Move message to HASP buffer. Dequeue message from $LOGQUE. <§> If output message+(D. @ FreeSMB~. @ Message for HASP LOG HASP DISPATCHER .. $WA"IT for work. I .. ~ r--------r--------T---------- --------------------------------, I ASSEMBLY I ASSEMBLY I I I LISTING I LISTING I NARRATIVE I I NAME I LABEL I I l--------+--------+-----------------------------------------------------~ HASPXEQ IHASPLOG I !_The processor had been $WAITing for work. I HASPXEQ I LTESTJNO I 1 The peE relationship is established by job number I in the message as compared with the peE JCT. I HASPXEQ I LBASPMSG I I ~ The log DDS is marked for action and all peEs are $POSTed for work. I HASpeON I$WQUEBUFI ! This code is activated by a SAL in HASPXEQ. I HASPCON I WENDQUE I I An os POST macro is used to post $WTOECB. HASPXEQ ILOGOUT I I ! The message is written into the HASP log data set. I HASPXEQ I LPUSHUP I 9 I HASPXEQ ILOGREADXI!! The CMS is freed by using the HASP service routine 1 $FREEMSG. L_______-L-_______ . ~_______ if rt ::r oQ, oI-ti o '2t1 PI rt ..... o ~ N N W _ ____ ~--------------------------J N HASP- Priority Aging Processor HASP DISPATCHER .. N .c: ~ $JOENT ~ til to 1 Select flllt active JOE; if no active J O E - . 0 . 2 Set aging time interval. GPRINT t-t o \Q ~. o HASP DISPATCHER .. 0) SWAIT for time interval to expire (work). I~~ Select active JOE; if end of queue chain HASP DISPATCHER .. r $JOENT - -- -- --- ------- ~ -- ------ ------.-- OUEPRIO 1-___ ...1, H r0 If job priority greater than upper limit ~. ~. I SPRIHIGH OUECHAIN - - I $PRllOW J I I r------ -I~ If job priority less than lower limit or end of JOE chain ~. JOE - CD 8 G) f- Increment job's priority. Select next active OUEPRIO .... JOE.~. I L HASP DISPATCHER .. $WAIT for job. I r--------T--------T-----------------------------------------------------, I ASSEMBLY I ASSEMBLY I I I LISTING I LISTING I I NAME I LABEL NARRATIVE I I I ~--------+--------+-----------------------------------------------------~ HASPMISCIGPRSTARTI 1 The entire priority aging processor is an overlay I I segment. I I I I I I I I I I HASPMISCIGPRTIME I I I HASP~SCIGPRLOOPll ~ The aging interval is determined by the HASP generation variable &PRIRATE. ~ The highest priority to be considered for aging is determined by the HASP generation variable &PRIHIGH. HASPMISCIGPRLOOP21 ~ The lowest priority to be considered for aging is I I determined by the HASP generation variable I ________ I ______________________________________________________ &PRILOW. L_______-L J ~ ~ rt ::T op., o Hl o to (1) t1 SlJ rt ..,- o :l N N U'I HASP Execution Thaw Processor N SEXECPCE N en I ~ til ~ . .. PCE ~ ----. - CD XPCESTAT XPCEJST b "l .... n I .. .. TCB TCBFLGS TCBJSTCB TCBOTC TCBLTC I .- o o o Select execution PCE(s) marked for THAW. Validity check TCB. Call os status routine (lGC07902) HASP DISPATCHER ,$WAIT forworlc. ... r--------y-------T-----------------------~-------------------, I ASSEMBLY I ASSEMBLY I I LISTINGI LISTING I I NAME I LABEL I NARRATIVE I I I .--------+--------+----------------------------------------------i IBASPXEQ BASPXTBWI 1 A special thaw cell is inspected for the presence I I " I I I I IHASPXEQ XWARM I I I I I I I IHASPXEQ L_~ f rt ::r o 0. o t-b o '2tot PI tJo rt o ::s N N ..... ~Checks are made against the "argument TCB address to prevent HASP from abending. I IHASPXEQ I I I of a Tea address before the execution PCEs are checked. XTB3 The argumeDt list passed to the status routine causes the subject TCB to be made dispatchable. I I I I I I I I I ! After all candidates for thawing bave been I considered the processor $~ITS for work. _ _____________________________ JI ______ ________ I ~ ~ I I ~_______ N HASP Timer Services (1 of 2) N CD ~ $STlMER •..1 .. til "tJ ~ o ..,. \Q o CD CD Convert request to timer units • .., " " " " " " ,........, ' ,...." ...., . . ~~"""'. ITIME ITCHAIN Cancel OS timer to find remoining time in current interval • RO 3 Compensate all STOE(s) for time expired in current interval. ~""""'~....~ ~."~ j! I",. STOE :>{4 Merge new STOE into chain by magnitude of requested interval • • ITIME 0 OS TIMER exit .... 0 0 o Set os TIMER to the , ' ,........, " ,. . ~.""" .... intervol of first STOE on choin. BAL .. .. Return to coller. Adjust all STOE(s) on chain by time of expired interval • $POST work for $TlMER processor. 0 Post HASP tosk. @ Return to OS. OS TIMER .. I ... ITIME r--------T--------T-----------------------------------------------------,I I ASSEMBLY I ASS~lBLY I I LISTINGI LISTINGI I NAME I LABEL I NARRATIVE I I .--------+--------+-----------------------------------------------------~ HASPNUC I$STIMER I 1 The parameter value passed is converted to 5/370 timer units (see $STIMER macro description). HASPNUC ~ The OS macro TTIMER cancel is used. HASPNUC IIPOSTIT ~ The PCE for any 5TQE whose time has expired is $POSTed for work and the STQE chain is updated. I HASPNUC IINEXT 4 HASPNUC IISETINT 5 The new interval is set using the OS macro 5TIMER. HASPNUC IIRETURN ~ The return is to the register link. HASPNUC IITIMEUP I I This is the asynchronous exit for the 5TIMER macro. L________i ________ i _____________________________________________________ J ~ CD rt ::r o ~ o ~ o to CD t1 SlJ rt ..... o ::s N N \0 I\.) HASP TIMER Services (2 of 2) w HASP DISPATCHER o s; til 'U ~ o ....o ITCHAIN ~J~ rSTQE ICHAIN ... r--- r---- ITIME ,..... r- IPOST ..J \Q 1 ~-------- I-~ II I • T If time nat explfed $POST PCE requesting timer service. ~14 Update STQE @ chaln~. -.@. ~13 j~15 SHIMER Locate TImer Queue EI_nti end of Chaln.~. Set OS timer to Interval for first STQE on choln. HASP DISPATCHER .. $WAIT for work. T .. @ Cancel OS timer to find remaining time In curre';' Interval. ~ Compensate all STQE(s) for time expired In current Interval. ITCHAIN I STQE RO I . 18 ~""""""~ ~1000.""-""""""-""'''~''''~ ITIME @ Rl . $POST any PCE(s) whose time Interval has expired. CTQE ICHAIN 20 @ @ @ @ Locate STQE related to request. If CANCEL is requested, remove STQElfor request from chain. Set OSotlmer to the Interval of the first STQE on chain. RO ;;,j Calculate Interval remaining for requesting STQE. Return to caller. I II Caller .. .. r--------T--------T-----------------------------------------------------, 1ASSEMBLY I ASS EMBLY I I 1 LISTINGI LISTING I I •. 111 The subroutine IPOSTIT is used to perform steps 111 I through 13. I I I HASPNUC I 1 I I I I I I I III I I 1 I!I I IHASPNUC L ________ =r o0, oHI o to (1) t1 PI rT ..,. o ::s N w ..... I IHASPNUC I$TlMER 1 I IHASPNUC irT NARRATIVE NAME I LABEL I I --------+--------+---------------------------------------------------~ I I I$TTI~~R I The subroutine ISETINT is used to set the as time I interval for the first STQE by executing the macro I STIMER. I Entry here is from the HASP macro $TTIMER. I I I IIRET1 Same as 15 above. ________ 122 ___________________________________________________ -JI ~ ~ II.J HASP Buffer Pool Manager $8UFPOOL W f II.J ~ en ... .f''-7L.IUVI .. .... .l:>( 1 BUFCHAIN .._ . fl.t bulf" f~m tho ,h., ...", ".. oddm. to "II.,. "0 ® t"' o .... \Q o it. . . ".,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .-...1 I RI )/ I BAL .. Return to caller. ... $FREEBUF Place buffer on free chain. o $8UFPOOL ~""""""""""""'~ 111.. Return to caller • • • • • • • • • • • • • • • • • • • • • • • • •_ _• • • I r--------T--------T---------------------------------------------------~-, I ASSEMBLYI ASSEMBLY I I LISTING I LISTING I I NAME I LABEL I I I I .--------+--------+-----------------------------------------------------~ IHASPNUC I$GETBUF I ! The subroutine BBUFCHEK validity checks the I I I I address for the new buffer. A HASP error BOl willi I I I occur if the .address fails the tests. I I I I NARRATIVE I IHASPNUC I$FREEBUFI ~ The same validity check subroutine is performed asl I I I in 1 above. I I I I I IHASPNUC IBUFPOST I All PCEs are $POSTed to notify them of the I I I I availability of a free buffer in the event they I may be $WAITing for one. IL ________LI ________ I _____________________________________________________ JI ~ :s: CD rt ::r o f.).J o H\ o to CD 11 ~ ..,. rt o ::1 II..) w w HASP EXCP In18rfaca (1 of 2) N w lOS pseudo ~ I~i'd' ;en 'f-lI I l:}0 ~ ~ t"' o ~ ~. o ~~~ OC.NAME XPCEJOBN r-+-t-I XPCEDDB J L _ __ , rtt1 OC'NAME h ~ Ifl OO'UNIT DDBUfPTR o o R7 .... ~ =II' 2 ------, r-T""'\ 4l Analyze caller. &RDR-.@. &WTR~. find execution PCE related to I/O request. IfnotendOfstep~. II I lOS Mark DDB(s) to be terminated, fire up HASP, freeze calling task. Fl'" DO. ~I."" •• I/O ....... Sh.2 0IfSYSIN~. 7 ) ...,. ..... ,- ,.11,,'. _ BUFFER ••• HAS""ff", ""~"'''' '~IIi", bl~". !! ~ HASPSVSOUT data recolds R2 I' I , ~OB 108 ® Channel ... BUfFER .... I &J~ program Sh. 2 HASP SYSIN data reco!U. ~ Sh.2 Sh. 2 I I II I ® Post caller's i.ob to reflect request of pseudo write. :"""""""""""""""'f". j! Ij! 105 Return to lOS. I I I I Ij! 9_ II I '- ~ @ I ~ Move data to caller'. area from HASP buffer. Post caller's lOB to reflect request of pseudo read. ~"""""""" ..." " " ' , . . 105 .. Return to lOS. 'I .. ~~ IJ Sh. 10BECBCC 10BCSW 10BRESTR Sh. 2 r--------T--------T-----------------------------------------------------, I ASSEMBLY I ASSEMBLY I I I LISTINGI LISTING I I NAME I LABEL I NARRATIVE I I .--------+--------+-----------------------------------------------------~ I HASPNUC I I IHASPNUC I I IHASPNUC I I $EXCP I 1 The synchronous acti vi ty to be performed at I/O I completion is established. I I I I I I I I ESENDIT I ! The channel program is executed using a standard I os EXCP macro. ESIOPGEXI! The start I/O appendage is used to page fix the I HASP buffer which contains the lOB. I I I I IHASPNUC ECHANENDI! The ASYNC processor operates under control of the J I I HASP task and performs functions related to the I I ___________________________________________________ completed I/O. LI ______ - - L -___·___.l JI i: rt ::s- o 0- o til o '0 (D t1 ~ ....o rt ::s N w V1 to..) HASP EXCP Interface (2 of 2) Sh. 1 W 0\ Locate next input record in HASP buffer. $: (J) "0 ~ Analyze SYSIN data in HASP buffer. DO * TTR - . @ O C R - . . @ . t:'i o "l ..... o @ ® ® Move data card image to Reader/Interpreter input areas • Post 108 for Reader/Interpreter to reflect pseudo read. ~"""""""~ +CV 1 Return to IDS. Get DDB and place on chain for execution PCE; Move OCR into OCR -.@. XPCEOUTC bUffer.~. ~"""""""""~ I OCR Dolo ~ Move data line from WTR to HASP buffer ..."""""""""'~ Sh. I @ ~ P~t lOB for WTR to reflect pseudo write • • , " " " " " " " " " ,. . ~" . +e:J Sh. 1 If not JCl Image @ Change DO @ Return In lOS. -.@. S to DO *or DO CATA to DO DATA. JOS r--------T--------T-------------------------· ----------------------------,I I ASSEMBLY I ASSEMBLY I I LISTINGI LISTINGI I NAME I LABEL I NARRATIVE I I .--------+--------+-----------------------------------------------------~ HASPNUC I$ASYNC HASPNUC III The HASP hot reader is controlled from this entry. AOK HASPNUC 8ASPNUC AENTER HASPNUC AFREE IHASPNUC IATT1 1 I 1 1 l _______ -L ________ 3: ro ~ o 0. o Hl o to ro t1 SlJ rt" .... o ::s N w ...,J I I I 11 The system is disabled while the chain is updated I to prevent interference from the channel end I appendage. I I 15 If BUFEWF is negative, a user exit is indicated. I If BUFEWF is zero, no action is indicated. I I 17 I I ~ If an I/O error is detected the HASP macro I $IOERROR is issued to note same. I 120 All readers whose UCB attention bit is on are 1 $POSTed with unit which causes them to begin I I I I I 1_____________________________________________________ reading cards. JI ~ IV HASP I/O Servic. (1 of 2) w 00 ~ til ttt $EXCP Rl .. ... eCT t"4 DCTEWF \Q DCTDEVTP o ..... o .. . ... >0 o DCTlOTYP o OCT Move $ASYNC Informotion to buffer • .., " " " " " " " " " ' ,.. ~~, I I I I IfnotD.A.request-.0 • Validate extent; build chonnel program and convert MTTR to MB8CCHHR. ~""'~ ~~~""II: j6." .. DCTSEEK SIO i2 . CUffer lOB Channel end appendage . . 0 ® ® 0 ® .. .,1 9 Call lOS to perform 1/0 request. BAl .. .. Retum to coller. Set buffer oddress in Page Fix list. Indicate one Item on list. lOS .. Retum to 105. Place buffer (lOB) on queue for $ASYNC processor. " " " " " " " ' ,... @ $POST work for $ASYNC processor. @ Retum to 105. ... ~ .."" .. lOS .. I .. ~~-- .. -. i'-' r--------T--------T-----------------------------------------------------, I ASSEMBLY I ASS El'.l8LY I I I LISTINGI LISTINGI I NAME I LABEL I I NARRATIVE I .--------+--------+-----------------------------------------------------~ HASPXEQ IXJOBSRCHI £ Step change is determined by the manner in which I I I ! I I HASPXEQ I XFINDDDB I ~ I I HASPXEQ IXSYSOUT I 1 HASPXEQ IXTERMODBI I HASPXEQ IXRET I f & o "' o '0 CD toe ~ rt ....o ::s II.) eN \Q The DDB's) are only marked. Actual termination occurs under the control of the HASP task. . If no DOD exists one is obtained chain of PDOBs for this PCE. ~nd place on I I I I I I I I If the CCW is not a write no data storage space isl used in the buffer. I I I ! The lOB is updated to reflect the effect of the pseudo I/O and the lOB ECB completion code is I I stored in the ECD. I .L_________ L______ -_ _ _ _ 110 HASPXEQ- 'IXSYSIN rt the related PCE is found. I I I I I ______________________________ I J HASP I/O Services (2 of 2) HASP DISPATCHER---..I -- -- L _____ ~ Q~,. ~p,y--®, ~~~r-------------~1~13 t- - - -I L ____ $DCTPOOl c --.. ~ DCTDCB .. _.. DCB r--f :EXCKT DO : ~ ~ $POST (I/O); ~. BAl to user routine via BASE2; 17 @ Check for I/O error. @ Free r-~- - - ~ U )HASPECF """""""""""""''1,'''')''''+/ PCE ~ I a ............................................."'~ ~. II bUffer;~. Reset OCT hold bit for all readers requiring attention. ~ OO~~~~.~$H_A_~_E_CF_~ DCBDEBAD _~DEB --.. r--I Ij i[ ~m",~;". fT\,:.J .PCE PCEBASEl SASYNCQ @ JJ.t:iir @ I . . . .,,,,.,,,,,"--@. PCE (_~) @ SWAn @ Transfer control to HASP DISPATCHER • • • • • • • • • • • • • • • • •" • ................................................................................................_ . .,- ~~ ............................................................. HASP DISPATCHER DEBUCBAD _ UCB UCBATI • • • • •, .. ~ r--------T--------T-----------------------------------------------------,I IASSEMBLYIASSE~~LYI I LISTINGI LISTINGI NARRATIVE I I NAME I LABEL I I .--------+--------+------------------------------------------------------~ I HASPXEQ I XRDRCALLI I I I I I IHASPXEQ IXDDSTAR I~ I n I I I I If no OCR buffer is available the reader task is 1 I' I I frozen, HASP is fired up, a buffer is gotten, and I I________ I______________________________________________________ the reader is thawed. lI_______ -L J1 IHASPXEQ IXOCRCAROI~ ~ if rt ::r o 0.. o H\ o to CD 11 PI rt ..... o ::s t\.) ,.f:: f-' 1 1 1 1 1 1 1 1 1 1 1 i 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 , 1 i 1 1 , j 1 1 1 , , 1 , 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 , SECTION ! HASP PROGRAM ORGANIZATION Program Organization 3 - 1 HASP PROGRAM ORGANIZATION OVERVIEW This section presents a description of the constituent elements of HASP in terms of their functions and organization. As an aid to understanding, the HASP functional elements are arranged into six groups that are similar in terms of their functions, their basic method of operation, and their relationships to OS and other elements of HASP. These groups are: 1. HASP Management Programs 2. Basic FUnctional Processors 3. Control Processors 4. Control Service Programs 5. Miscellaneous Programs 6. HASP Remote Work Station Programs. HASP MANAGEMENT PROGRAMS These are HASP programs functioning as tasks directly under control of the Operating System. For example, the HASP Task Dispatcher is entered as an OS task and subsequently passes control to the various component processors of HASP as their functions are required. BASIC FUNCTIONAL PROCESSORS These are the HASP programs that operate under control of the HASP Dispatcher to carry out the main processing flow of HASP; that is, input, execution, output, and purge. These programs are in turn supported by the control processors and control service programs. CONTROL PROCESSORS Operating under the control of the HASP Dispatcher, these programs control and provide the various HASP and OS facilities used in support of the basic functional processors. CONTROL SERVICE PROGRAMS These are a series of subroutines operating under control of the basic functional and control processors and providing various system resources in support of HASP. MISCELLANEOUS PROGRAMS These are HASP programs providing initialization and overlay building facilities. Overview 3- 3 HASP PROGRAM ORGANIZATION OVERVIEW HASP REMOTE WORK STATION PROGKAMS These are HASP programs. operating in remote CPUs. furnishing remote terminal support in extension of the basic functional processors, control processors. and control service programs-. 3 - " HASP Logic HASP DISPA'ICHER The HASP Dispatcher allocates HASP CPU time to the HASP processors. It receives control each time the HASP task goes from the WAIT state to the ACTIVE state. The HASP Dispatcher utilizes an orjered queue of Processor Control Elements (PCEs) to distribute the CPU time among the HASP processors. The Event Wait Field (EWF) in each PCE is a 2-byte field which is used to control the dispatchability of the processors. Any processor or control service routine may issue a $WAIT macro instruction at any time, which turns on a particular bit in the EWF corresponding to the event waited for and returns control to the H~SP Dispatcher to allow other processors to be dispatched. The processor will not be given control again until some other system function issues a $POST to the appropriate EWF. The events reflected by the E~F fall into two categories, the first of which is the synchronization of the use of common system resources such as buffers, direct-access space, etc. With the exception of the general $POST bit $EWFPOST, the bits in the first byte of the EWF field are used to indicate the particular resource being waited for and correspond exactly to the Event Completion Field (ECF) in the Dispatcher. The ECF is posted whenever a resource becomes available and is propagated through all processor EWFs by the Dispatcher. Thus, if a track becomes available on a direct-access device, every processor (PCE) which has issued a $WAIT for a track will be put in contention for CPU time to try to obtain the track or tracks that have been released. The second byte of the EWF is used to synchronize a processor with respect to a specific event applicable only to that processor, such as a particular I/O completion. This section of the EWF must be posted directly by the system routine performing the required function. When scanning the PCE chain, the HASP Dispatcher, upon discovering a zero EWF (no events being waited for), will enter the code controlled by the PCE immediately below the $WAIT which had returned control to the Dispatcher. All registers of a processor which issues a $WAIT are preserved in the PCE and are reloaded prior to entering the processor (register R15 is destroyed by the $WAIT macro to provide the address of the $WAIT, i.e., the resume point). A processor may return control to the Dispatcher only by means of the $WAIT macro. In the event any $POST macro was executed by the processor dispatched or by any of the HASP asynchronous service routines, the Dispatcher's ECF field will be altered to reflect the $POST. The general $EWFPOST bit represents a $POST of a specific processor (second byte of the EWF). If the ECF field indicates no $POST has occurred, the HASP Dispatcher continues to scan down the PCE chain starting with the next PCE. However, if the ECF field indicates $POSTs have occurred, the bit for the general $POST is removed and scanning is resumed at the beginning of the PCE chain, after promulgating any remaining ECF $POST indicators. Upon reaching the end of the PCE chain, the Dispatcher examines several counts to determine if any joos, RJE lines, or messages are being processed. If there is uncompleted system activity, an OS WAIT state is entered to wait for some external event (I/O interrupt, etc.) to activate HASP again. This WAIT state allows use of the CPU by other tasks in the system. If there is no activity, the message: Dispatcher 3 - 5 HASP DISPATCHER ALL AVAILABLE FUNCTIONS COMPLETE is sent to all local operator consoles, and HASP is placed in the WAIT state. When scanning the PCE chain, the Dispatcher may detect the special case of a PCE which is not dispatchable (PCEEWF is not zero) but is waiting only for the OROL bit. This situation is created when, while the peE is waiting for other event(s), the overlay area being used by the PCE is preempted by the Overlay Roll Processor for other use. subsequently, the other event(s} being waited for are posted, allowing the Dispatcher to detect the ·OROL only·. The processor in such a condition is dispatched into Overlay Services. The actions performed are identical to those described for the $LINK service under Overlay Service, beginning with the fourth paragraph describing search of overlay areas. The processor will be dispatched by Overlay Service (if the requested routine is in storage) or will be set to $WAIT for OLAY, allowing the Dispatcher to continue its PCE scan. When reaching the end of the PCE chain~ the Dispatcher also performs special actions for the Overlay Roll Processor. If the queue of work for this processor (PCEs waiting for assignment to an overlay area) is not empty the processor is dispatched. Because this processor has a required position at the end of HASP's CPU priority chain and because it does not return to the dispatcher by $WAIT, there is no PCE for it and the Dispatcher enters it by direct branch. OVERLAY ROLL PROCBSSOR This processor operates in conjunction with the Overlay service routines. The description of these routines should be read also to provide proper background to understanding of Overlay Roll. The objective of this processor is to prevent system lockout due to $WAITs in overlay routine coding. This processor does not have a PCE but effectively operates as the lowest processor on the HASP Dispatcher chain. This means that all processors with their requested overlay routine in an overlay area will have at least one chance to execute code or otherwise use their overlay routine before the overlay area containing that routine is taken for other use. Overlay Roll does not receive control unless all other HASP processors are in a $WAIT state, i.e., HASP is ready to relinquish control to OS oy WAIT. Since there is no PCE for Overlay Roll, the Dispatcher enters i t directly, with the content of $WAITACE in register wn, when that content is nonzero. The Dispatcher provides local addressability in BASE2, and Overlay Roll establishes the base address for Overlay Service in register WC so its subroutines and tables may be used. On each entry, the queue beginning with $WAITACE of PCEs waiting for an overlay area is processed. The following attempts are made to secure one or more overlay areas and begin reading a requested routine into them. 3 - 6 HASP Logic HASP DISPATCH£R For each group of one or more waiting PC~s requesting the same overlay routine, all overlay areas are searched to find a suitable one. If a read operation to load another overlay routine is in process, the area is never taken. Users of that other routine are allowed at least one chance to execute after read completion is processed by Overlay $~SYNC Exit. For each overlay area which does not have a read in process, the OACEPRIO field is examined and the chain of all current users (beginning at OACEPCE) is searched to determine if any user is waiting for I/O. This I/O ~ould be other than an overlay read operation, would be expected to complete soon, and would therefore make i t less desirable to preempt that area. The lowest priority area ~ith no user waiting for I/O is chosen, if any; otherwise, the lowest priority area is chosen. since an overlay routine is wrefreshable w at $W~IT time, i t is not necessary to literally wrollw (i.e., write to direct access) a preempted overlay area. Each PCE .on the chain of current users (OACEPCE) is processed to prevent further use of the preempted area by it. The reentry address (PCER1S) is sized to determine if i t points into the overlay area and, if so, is made relative by subtracting the overlay area address. The PCE is forced into a $WAIT OROL state, in addition to the other $WAIT conditions present. When other $WAIT conditions have been POSTed, the Dispatcher detects the PCE waiting for OROL only and sets it to calIon Overlay service. ~he OLOD subroutine is eventually called to refresh the routine directly or, if the PCE gets into the $WAITACE Queue, by OEXIT subroutine or by Overlay Roll. The area preempted is used to read in a new overlay routine, to be used by the highest priority PCE group on $WAITACE. The OLOD subroutine is called to begin the read operation. If there are more PCE groups on the $WAITACE Queue, the above actions are repeated. When Overlay Roll finally exits directly to the Dispatcher, the $WAITACE queue is either empty or all overlay areas have an overlay read operation started, to be posted by Overlay $~SYNC Exit. Dispatcher 3 - 7 3 - 8 HASP Logic HASP COMMUNICATIONS SUBTASK All HASP $WTO messages directed to Operating System consoles '(including logical consoles) are queued to the $BUSYQUE queue and are serviced by the HASP Communications subtask (HASPWTO). The task is used, in lieu of the HASP task issuing WTO SVCs, to prevent HASP job processing from stopping ~hile the Operating System resources are not available. When a Console ~essage Buffer (CMB) is placed in the $BUSYQUE queue the HASP task POSTs the subtask. The 5ubtask performs the following functions: 10 $BUSYQUE queue is examined for CMBs queued for the Operating System consoles messages. If the subtask is in the process of continuing a multiline WTO (MLWTO), all logical console requests are ignored until the MLWTO terminates. If no eligible CMBs are found on the $BUSYQUE queue, the subtask waits for new CMBs (POSTed by the HASP task) and repeats the $BUSYQUE queue scan. 2. The list form of an Operating system WTO is formatted for normal HASP WTO messages. If the CMB indicates that the message is for a specific console (UCMIO), the WTO is altered to indicate such; out-of-line areas are detected and result in MLWTO formatting of the WTO. 3. Logical console routings are converted to Operating system equivalents and the message text is copied to the WTO from the CMB. control fields are shifted to complete the WTO parameter list for normal logical console and UCMID WTOs. 4. If the logical console message contains a $DOMACT flag, the WTO parameter list is altered to indicate immediate action required. The WTO SVC is issued and the DOM ID is saved in the CMB. If the $DOMACT flag is still on, the CMB is queued to the $DOMQUE queue and control is returned to step 1 above. If $DOMACT flag has been reset, the DOM SVC is issued directly_ 5~ The eMB is freed via the $FREEMSG routine, and if the condition code is zero on return, the HASP task ECB is POSTed. 6. If the WTO contains immediate action flag, control is given to s-tep 1 above; otherwise, the WTO SVC is executed. If the request is for a MLWTO, the connect 10 is saved and a MLWTO in process flag is set or reset, depending on whether or not the end line indicator appears in the WTO after formatting. Control is passed to step 1 above. Communications Sub-Task 3 - 9 3 - 10 HASP Logic H~SP S~B WRIT~R The primary function of the HASP 5MB Writer (HASPWTR) is to read System Message Block3 (SMBs) from the data set SYS1.SYSJOBQE and "print" them to HASP. The process signals the end of the os execution phase of a jOb's processing and makes the messages (JCL, JCL diagnosis, allocation/disposition, SMF, etc.) available to HASP, to be later printed with print data sets of the job previously SPOOLed by HASP. This program is used as an attached suotask in the HASP region. The program HASPWTR depends on OS Queue Management structures (QCR, LTH, 5MB, no-work ECB) as documented in the OS/vS2 Job Management PLM. Functions (such as enqueue, dequeue, or delete a job; ENQ/DEQ to control access to Queue Management resources; conversion of record addresses between NN, TTRO, and MBBCCHHR forms; and computation of sector numbers when SYS1.SYSJOBQE is on an RPS direct-access device) are all performed in a manner consistent with that described for the standard OS Job Management modules. Microfiche listings for Queue Management functions were consulted as examples during the development of HASPWTR. However, no actual Job Management modules are executed by HASPWTR. On initial entry after being attached, the program saves three addresses passed to it by HASP initialization: storage address of the pseudo 1403 UCB designated by the HASPGEN parameter &WTR, address of a HASP subroutine to be called to signal end-of-job, and address of an ECB which will be posted by HASP if the operator epters the command $PHASP. After signaling HASP (via a POST) that ATTACH was successful and setting up addressability to the OS Queue Manager resident DCB and DEB for SYS1.SYSJOBQE, the program enters its major processing loop. The major processing loop is driven by inspection of a list of ECBs. One is the $PHASP ECB which, if posted, causes the program to terminate as described later. All other ECBs are each part of an 8-byte no-work element. One such element is present for each SYSOUT (MSGCLASS) to be processed, a3 indicated by the list of classes assigned to the HASPGEN parameter 'WTRCLAS. If an ECB is posted, the Queue Control Record (QCR) for that class is read and a job is dequeued, if present. The dequeued job's last logical track header (LTH) must be read to perform the dequeue. The updated QCR is rewritten. If there were no jobs to dequeue, or if the one dequeued was the only one, the class ECB is cleared and the no-work element is chained from the QCR before rewriting. If a job was dequeued, its 5MBs are read, messages are formatted into print lines, and the lines are ·printed" to HASP using the pseudo 1403 UCB. If non-SMB blocks such as Data Set Blocks (DSBs) are encountered, they are simply skipped. The data sets they represent are not printed or scratched. When the end of the job is reached, a small subroutine in HASP is called to signal end-of-job to HASP. The HASPGEN parameter &WCLSREQ controls the disposition of the job after processing. If the position in the list 'WCLSREQ, corresponding to the position of the job's message class in the list 'WRTCLAS, is a valid SYSOUT class, then the job is requeued in the QCR for that new class. 5MB Writer 3 - 11 HASP 5MB.WRITER Any tasks (e.g., other system writers such as TSO) whose no-work elements are chained from that QCR are posted. The requeue action always places the job in the new QCR chains at highest priority. If &WCLSREQ does not indicate requeueing ("*" ina list position instead of a class), the job's tracks in SYS1.SYSJOBQE are released by chaining them to the chain of free space beginning in the Master QCR, posting any tasks waiting for job queue space, and rewriting the Master QCR. The major processing loop is repeated until no ECBs are found posted. An OS multiple WAIT is executed and, when any ECB is posted by another task (usually an OS Job Terminator), the major processing loop is resumed. If the operator enters $PHASP, HASP will post an ECB to signal termination actions to this program. All QCRs for processed classes (&WTRCLAS) are read, the no-work chain of each is zeroed, and the QCR is rewritten. HASPWTR exits with a zero completion code. If permanent I/O errors occur during any I/O on the SYS1.SYSJOBQE data set, an error message is always written to the operator. For write operations, no further special action is taken and processing continues. For read operations, an attempt is made to minimize system damage. No input from an incorrect read is ever used for processing. If the error occurs in reading a QCR or LTH while attempting to dequeue a job, the ECB is set so that no further processing of that class will be attempted. If there is an 5MB read error, end-of-job is signaled to HASP and no further blocks on that job's ·chain are read. If a QCR read error occurs during a requeue attemp~, the job is deleted (tracks are releasedl. 3 - 12 HASP Logic HASP SMF SUBTASK 'Ilhe fUnction of the HASP SMF ~riter (HASPACCT) is to look at .the $SMFBUSY queue, take buffers off the queue, call IEFUJP exit if necessary, interface with the os SMF writer, and place freed buffers on the $SMFFREE queue. The HASPACCT routine runs as a subtask of HASP, even though it is a part of the HASP load module. When the program is entered, one main loop is begun. The $SMFBUSY cell in the HCT is interrogated. If zero, the $STATUS cell in the HeT is checked to see if a $PHASP command was issued. If so, the HASPACCT subtask exits with a zero completion code. Otherwise, the program WAITs to be POSTed by HASP again. If $SMFBUSY was nonzero, the first SMF buffer is removed from the busy chain. When the buffer contains an SMF record, the SMFWTM macro is issued immediately to write the record. If the buffer contains a copy of the common exit parameter area (JMR section of a JCT), a parameter list is prepared for the IEFUJP user exit. The parameter list pointed to by general register 1 when IEFUJP is called consists of two full words. The first WOT-d is the address of the common exit parameter area, and the second word is the address of the SMF ROW of the type-26 purge record. The IEFJUP routine is then entered. If~ upon return from the IEFUJP routine, register 15 contains a four, the type-26 record is not written. otherw-ise, the SMPWTM macro is issued to write the SMF record. Next, the SMF buffer is placed on the $SMFFREE queue. If there was a JMR buffer in addition to the SMF record buffer, i t is also freed. If $SMFFREE was zero, HASP is $POSTed for SMF. Then the routine loops back to check $SMFBUSY for other SMF records in the same manner as described above. The HASPACCT CSECT is null if the HASPGEN parameter &NUMSMFB is less than two. In this case, no SHF recording code is generated within HASP. The HASPACCT subtask is IDENTIFYed and ATTACHed by HASPINIT and DETAC~ed by HASPCOMM if HASP is 3topped. The program is activated by an OS POST when any HASP routine is ready to write a HASP SMF record. SMF Subtask 3 - 13 Page of GY27-7255-0 Added September 15, 1976 By TNL SN27-1555 HASP SETPRT SUBTASK The purpose ~f the HASP SETPRT subtask is to issue the SETPRT SVC to set up 3800 printers. There is only one SETPRT subtask which services all 3800 printers. The SETPRT subtask is invoked by the $XFER Marco. When $XFER is issued with the TASK=STPT option, then the next sequential instruction following the macro expansion will be executing under the SETPRT task. $XFER TASK=HASP is used to return to the HASP task. The SETPRT task has a dispatcher similar to the HASP dispatcher. In fact, the elements being dispatched are PCEs. When a program $XFERs from HASP, the $EWFXFER bit is set in the PCEWAIT field. The PCE is no longer dispatchable in the HASP task. The SETPRT task is posted if it is necessary, and the only peEs eligible to run are those with $EWFXFER set. SETPRT is issued in a separate task, because there are implied waits within the SETPRT SVC which would seriously affect performance. SETPRT Subtask 3-13.1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 HASP INPUT SERVICE PROCESSOR The functions of the Inpu~ service Processor are as follows: 1. To read card images from an input device 2. To detect and scan JOB cards, extracting parameters for job accounting, job control, and print and punch identification 3. TO detect and process other control cards, such as the COMMAND, PRIORITY, ROUTE, SETUP, MESSAGE, JOBPARM, OUTPUT, DO *, and DO DATA cards 4. To assign a unique HASP job number to each job 5. To log jobs into the HASP System 6. To assign job priority based upon PRIORITY card, JOB card, or JOBPARM card parameters 1. To generate, from cards read, a JCL file and input data files, and to record these files on direct-access storage device(s) for later use by the Execution Control Processor 8. To generate HASP Job Control Tables, Input/Output Tables, Job Queue Entries, and other HASP control blocks required for later job processing 9. To queue jobs for processing by the Execution Control Processor. The Input Service Processor is coded reenter ably in such a way that it can accept jobs from a number of different input devices (with different hardware characteristics) simultaneously. The reenterability is attained by retaining all storage unique to a job in the Processor Control Element which must be unique for each input device. The Input Service Processor is divided into three phases, 14 subroutines, and two nonprocess exits. This section will give a functional description of each of these phases, subroutines, and exits to aid the System Programmer in gaining a working knowledge of the" processor. PHASES Phase 1 - Processor Initialization The Initialization Phase, which is written as an overlay segment, begins by attempting to acquire an input device. If no input device is available, the processor is placed in a HASP $WAIT state until a device is made available, whereupon the procedure is repeated until an input device is available. Upon acquiring an available input device, the processor continues by acquiring a Device Control Table (OCT) for the direct-access device(s) and initializing both DCTs for processing. Input Service Processor 3 - 15 HASP INPUT SERVICE PROCESSOR If the input device is a card reader, a HASP buffer is obtained for use as an input buffer and a chain of Channel Control Words (CCWs) is constructed in the input buffer which will be used to read 80-byte records from the input device into the rest of the input buffer. These CCws are constructed in such a way that the input records will be read into adjacent areas in the input buffer with as many cards being read as the buffer will hold. The initialization of the PCE work area is then completed and control is transferred to Phase 2. If the input device is a remote terminal, transmission is initiated by calling upon the Remote Terminal Access Method to open the Remote Terminal Device Control Table. Control is then passed to Phase 2. Phase 2.- Main Processor The Main Processor Phase reads cards from the input device, scans each card to detect HASP control cards, and processes these cards as follows: 1. /*contro! card--The appropriate control card scan routine (HASPRCCl or HASPRCC2) is called to process the control card and take any appropriate action. 2. JOB card--The JOB card scan routine (HASPRJCS) is called to terminate the previous job (if any), to scan the JOB card, and to initiate the processing of the following job. 3. DD. or DD DATA--A track address is obtained for the first data block of the input data set. A dummy card is added to the JCL file which contains the track address in columns 1-4. This card is differentiated from other cards by setting the control byte. The DD * or DO DATA statement is then added to the JCL file ...1 normal fashion. Control is subsequently returned to the main processor for processing of the input data. When a hardware end-af-file is detected on the input device, control is given to Phase 3. Phase 3.- Processor Termination Upon receiving control from the Main Processor, the Processor Termination Phase, which is written as an overlay segment, terminates the last job (if any), frees the input buffer if one is present, closes the input DCT if it is for a remote device, releases the input and direct-access DCTs, and returns control to Phase 1. 3 - 16 HASP Logic. HASP INPUT SERVICE PROCESSOR SUBROUTIN~S HASPRCCl -- Subroutine To. Process HASP Control Cards The HASPRCC1 subroutine, which is written as an overlay segment, is called whenever the Main Processor Phase encounters a HASP control card of any of the types listed below. The control card type is first determined, and then processing continues as follows: 1. COMMAND Card -- The command is listed on the operator's console and then is added to the Command Processor's input command queue. 2. PRIORITY Card -- The previous job (if any) is terminated, the priority specified is converted to binary and saved, and the scan is continued with the next card. If the following card is not a JOB card, the message, -device SKIPPING FOR JOB CARD-, is written on the operator's console, the effect of the PRIORITY card is nullified, and the input stream is scanned for another PRIORITY or JOB card. 3. ROUTE Card -- The appropriate routing byte is set to the value associated with the destination indicated. If an invalid field is encountered, an appropriate mes~age is issued, both to the operator and to the programmer, and further job processing is bypassed. 4. SETUP Card -- The volume(s) to be mounted are listed on the operator's console, and the job is placed in Rhold R status. 5. MESSAGE Card -- Leading and trailing blanks are removed, and the message is routed to the operator's console. HASPRCC2 -- Subroutine To Process JOBPARM And OUTPUT Control Cards The HASPRCC2 subroutine, which is written as an overlay segment, is called whenever the Main Processor Phase encounters a JOBPARM or OUTPUT control card. The control card type is determined and processing continues as follows: 1. JOBPARM card -- The KEYSCAN subroutine is called to scan the parameters coded on the control card. 2. OUTPUT card -- The KEYSCAN subroutine is called to scan the parameters coded on the control card. The destination fields (if any) are then scanned and converted to binary route codes. Finally the output table, which is in fact an Output Control Record (OCR), is added to the JCL file for further processing by the Execution Control Processor. HASPRJCS--Subroutine To Initialize Job Control Information Input Service Processor 3 - 17 HASP INPUT SERVICE PROCESSOR The HASPRJCS subroutine, which is written as an overlay segment, is called whenever the Main Processor Phase encounters a JOB card. The previous job (if any) is terminated by calling the RJOBEND subroutine. The master job number is incremented, and its new value is assigned to the current job. A Job Queue Element is then created for this job and added to the HASP Job. Queue in active input status. A buffer is obtained and the Job Control Table is initialized. The JOB statement is scanned, the first JCL block is initialized, and if the HASPGEN parameter &RJOBOPT indicates that an accounting field scan is to be performed, control is passed to the HASPRSCN overlay for accounting field interpretation. Otherwise, control is returned to the caller through the overlay return facility. RJSCAN_~-Subroutine To Extract Fields From JOB Statement This subroutine scans the JOB statement and extracts fields for further processing. The fields may be split between several cards (in accordance with OS JCL standards), and may be enclosed in either parentheses or apostrophes. This routine is used to scan the accounting field and the programmer name from the JOB cards which are processed by the Input service Processor. RCONTNUE ~- Subroutine To. Read And Validate Continuation Cards This subroutine reads and validates JCL continuation cards by ensuring that columns 1 and 2 are punched with slashes and that column 3 is blank. The start of the continuation card is located and control is If an invalid continuation card is discovered, returned to the caller. control is passed to the illegal JOB card routine for further processing. HASPRSCN ~- Subroutine To~Scan Accounting Field Of JOB Card The HASPRSCN subroutine, which is written as an overlay segment, is called whenever a JOB card is processed to interpret any variables present in the JOB card accounting field and to set the appropriate fields in HASP control blocks representing these variables. The contents of the accounting field are scanned from the JOB card(s) by the HASPRJCS routine and left in the Job Control Table (JCTWORK) as input to this subroutine. Depending on the value of the HASPGEN parameter &RJOBOPT, this routine mayor may not enforce certain HASP and/or OS JOB card standards during the scan. Upon completion of the scan, control is returned to the caller through the overlay !eturn facility_ RJOBEND_~- Subroutine_To Complete Job Input Processing This subroutine tests whether the Input Processor is currently processing a job, and if it is not, returns control immediately. If a job is being processed, the RJCTTERM subroutine is called to complete processing of the JCT. The execution priority of the job is then 3 - 18 HASP Logic HASP INPUT SERVICE PROCESSOR determined, the RJOBTERM subroutine is called to terminate the input processing of the job, and the job is queued for the Execution Control Processor in the logical queue associated with the job class. Control is then returned to the calling routine. RGET -- Subroutine To Get Next Card This subroutine returns the address of the next card to be processed by the Input Service Processor in register RPI. If the input device is a card reader and if the input buffer is empty or if all the cards in the input buffer have been processed, an IOS read is staged from the input device and the subroutine places the processor in a HASP $WAIT state until the input buffer has been filled. If the input device is an Internal Reader, the associated caller is posted to indicate completed processing of the last card and the Input Service Processor is $WAITed until the next card is provided. If the input device is a remote terminal, a wcall w is made on the Remote Terminal Access Method to obtain the next card. If a permanent error is detected on the input device, no action is taken until after the last card has been processed, and then the job currently being processed is deleted with appropriate comments to the operator. Processing then continues by scanning the input stream for the next JOB card. This subroutine also processes the operator commands W$Z ($STOP) input device w and W$C ($DELETE) input device w by entering the HASP $WAIT state and calling the subroutine RJOBKILL to delete the job, respectively. There are two returns from the subroutine. If return is made to the first byte following the Branch and Link (the call) instruction, it indicates that the last card has been processed and that an end~of-file has been sensed on the input device. If return is made to the fourth byte following the Branch and Link, it indicates that register RPI contains the address of the next card. RPUT -- RPUTOLAY -- Subroutine To Add Card To Output Buffer This subroutine accepts SO-byte card images and blocks them into standard HASP Data Blocks. If the current output buffer is full, it is truncated and scheduled for output, and a new HASP buffer is acquired and used as the next output buffer. If no output buffer exists upon entry, the processor is skipping for a JOB card, and the subroutine returns without taking any action. RKEYSCAN~- Subroutine To_Scan And Process Keyword Values This subroutine accepts a pOinter to a parameter field and the address of a control card scan table (keyword table) and returns with the field specified by the next parameter updated according to the value(s) specified in the parameter field and the conversion indicated in the table. If an error is encountered, control is returned to the location specified by Reader Link Register 1 (RL1). If no error is encountered, Input Service Processor 3 - 19 HASP INPUT SERVICE PROCESSOR contro1 is returned four bytes beyond the location specified in RLl. The control card scan table specifies such characteristics as keyword name, keyword abbreviation, whether the value should be converted to binary, whether the value should be left- or right-adjusted in the field, whether the value should be filled with blanks or zeros, and the maximum number of values permitted. This subroutine is used by both the JOBPARM and OUTPUT card processors to perform their respective scans. RJOBKILL -- Subroutine To. Delete Current Job This subroutine tests whether the input processor is currently processing a job, and if it is not, returns control immediately. If a job is being processed, the operator is notified that the job is being deleted, the RJCTTERM and RJOBTERM subroutines are called to terminate the input processing of the job, and the job is placed in the output queue for subsequent processing. Control is then returned to the calling program. RJCTTERM-- Subroutine To.Terminate JCT This subroutine performs the final update of the Job Control Table. The time estimate is converted from minutes to seconds, the estimated line count is converted from thousands of lines to actual lines, and the total output estimate is computed and set. Control is then returned to the calling program. RJOBTERM -- Subroutine To. Terminate JOb This subroutine first terminates the last input stream data set if not already terminated. Two JCL null statements are added to the end of the JCL stream to force the reader-interpreter to terminate and queue the job when the stream is later being processed. ~ message is added to the end of the JCL file which will be printed only in the event that the job is cancelled before it is processed by the Execution Service Processor. The JCL file is then terminated and the last buffer is scheduled for output. The JCT is updated to reflect end-of-job status, the lOT is created, and both blocks are written to disk. Control is then returned to the calling program. RGETBUF -- RGETBUFO-- Subroutine To Initialize Output Buffers This subroutine acquires a HASP buffer for an output buffer, initializes this buffer with a chain track address and the job·s data set key, and returns with the address of the buffer in register Rl. NONPROCESS EXITS The following routines are used to put the Input Service Processor in a HASP $WAIT state if a HASP resource is not available. In all cases 3 - 20 HASP Logic HASP INPUT SERVICE PROCESSOR Reader Link Register 2 (RL2) must have been set to the restart address before the routine is entered. 1. RNOCMB - A HASP Console Message Buffer was not available. 2. RNOJOB - The HASP Job Queue was full and a new entry could not be added. When the respective resource is available, the processor is $POSTed and another attempt is made to acquire the resource. Input Service Processor 3 - 21 HASP EXECUTION PROCESSOR The assembly listing of HASPXEQ contains several HASP processors the Execution Processor, the Execution Thaw Processor, and the HASP Job Log Processor. In addition to processors, the listing contains the EXCP exit, the reader-interpreter exit, and the job and step termination exit. The Execution Processor (XBQ) selects from the HASP execution job queue a job for OS execution, passes it to os for execution, services the job's SPOOLing requests, and, at termination of the job, enqueues it on the HASP output queue. The Reader/Interpreter exit analyzes JCL statements (passed by the Reader/Interpreter in internal-text form) and modifies various JCL parameters to process the job's data sets. The HASP Reader/Interpreter exit operates under the OS Reader/Interpreter TeB. To allow HASP to process requests for pseudo-unit I/O, the OS Input/Output Supervisor gives control for each pseudo-unit EXCP to the HASP EXCP exit, $EXCPSVC. For a pseudo-I/O request, $EXCPSVC may be used to delay the requestor in order, for example, to read another Duffer of SYSIN data. The Execution Thaw Processor, XTHAW, releases the caller to allow him to reissue his EXCP request. To support the HASP Job Log of WTO and WTOR messages and replies provided on a user's output listing, the Log Processor scans HASP Console Message Buffers and writes as appropriate to the HASP Job Log data set. The job and step termination exit provides certain information about each HASP job to the OS System Management Facility. XEQ controls each OS job submitted via HASP throughout its HASP execution phase. (HASP execution starts when a job is selected for the OS/HASP reader-interpreter and ends when the last of the job's System Message Blocks (SMBs) has been read by HASPWTR from the OS job queue.) Chronologically, a job proceeds through three distinct phases in XEQ. First, a job is chosen from the HASP execution job queue. The choice is based on the priority of the job in the HASP job queue, the job's class (taken from the CLASS= parameter of the JOB card), and Execution Batch Monitor considerations. The Execution Batch Monitor is an installation option. In the second phase of HASP execution, XEQ provides SPOOL and special services for the job, based mainly on requests from $EXCPSVC. While the job's JCL is being interpreted by OS, XEQ will service the job's JCL data set, allowing $EXCPSVC to supply JCL card images to the readerinterpreter. While the job is in OS execution, XEQ will service the job's SYSIN and SYSOUT data sets. After the job ends OS execution and has been retrieved by HASPWTR from the OS output job queue, XEQ will service the job's 5MB data set, collecting 5MBs to be printed on the user's output listing. Execution Processor 3 - 23 HASP EXECUTION PROCESSOR The last phase of HASP job execution is job termination. Resources used by XEQ to control the job are freed and the job is queued for output or, if the operator requested it, for reexecution. To these three phases correspond three distinct sections of XEQ: initiation, DDB services, and job termination. job JOB INITIATION The object of job initiation is to select a job for execution~ The means of selection are the Partition Information Tables (PITs). Control of job selection is provided by an execution Processor Control Element (PCE). In a typical HASP System there are as many PITs as execution PCEs. A PIT defines a HASP logical partition and looks to the operator nearly like an OS initiator (he can change its job selection classes, start it, and stop it). When a PIT becomes free to be used in job selection, the operator receives the message INIT nn IDLE. When a job has been selected for the PIT, the operator receives the message JOB jjjj jobname -- BEGINNING EXEC - INIT nn - CLASS c. To select a job for execution, XEQ examines each PIT. If the PIT is not busy and not drained (stopped by the operator), XEQ attempts to select a job for it. The PIT contains, among other things, a string of job classes; any job whose class matches one of the classes in a PIT is eligible to execute for that PIT. Starting with the first class in PITCLASS, XEQ issues a $QGET to attempt to select a job. If that selection fails, XEQ repeats the process with subsequent classes until either a blank class (X'40') is found or a job is selected. If a blank class is found, this PIT cannot select a job; XEQ examines the next PIT to see if a job is available for it. If no PIT can select a job, XEQ $WAITs for JOB. During this time, XEQ is running under a single execution PCE. Any other execution PCE entering the job selection logic will find byte XPITSENQ set to X'FF' and will $WAIT for work, to be posted when the PITs are again available to be searched. Having selected a jOb, XEQ sets. the PIT's busy flag and increments the active-processor count. In preparation for reading the job's HASP Job Control Table (JCT), XEQ gets a direct-access Device Control Table (a OCT is the argument to $EXCP) and a HASP buffer. XEQ calls $EXCP to read the JCT and $XCTLs from the first overlay of job initiation to the second, where it $WAITs for I/O. When posted, XEQ verifies that the JCT was read without error and that it is valid; if either is not true, the job is queued for the HASP Purge Processor. XEQ then checks for another job in HASP execution with the same job name. Since HASP will need to associate an executing job with its execution PCE by job name, it can let only one job with a given name run 3 - 24 HASP Logic HASP EXECUTION PROCESSOR at a time. If this job's name matches the name of a job already running, XEQ requeues it for execution but sets a special hold flag in its Job Queue Element (flag QUEHOLD2) and a flag in the execution PCE running the identically named job; XEQ then attempts to select another job. If this job passes the duplicate-name test, XEQ gets another HASP buffer and reads the job's Input/Output Table (lOT). If the lOT was read without error and is valid, XEQ will get output tracks for the JCT and lOT and write them. When XEQ selects a job, the JCT and lOT reside on input tracks, that is direct-access addresses allocated by HASPRDR from the job's input track group allocation map. (This map is created and saved by HASPRDR in the JCT). The input track group allocation map (input map) is responsible in addition for allocating space for the JCL file and files for input stream data sets; this space will be freed when the job ends execution. All other SPOOL direct-access space allocated to the job is allocated from the output map, which is in the lOT. This map is first used by XEQ to get output tracks for the JeT and lOT, and continues to be used as the job creates SYSOUT data sets. XEQ gets an output track for the lOT and puts the track address in both the lOT and the JCT. It gets an output track for the JCT, puts the track address in the lOT (to be used to validate the lOT) and the OCT, and writes the JCT. If the write fails, XEQ gets another track and retries the write. When the write succeeds, XEQ puts the JCT track· address in the JQE and causes a HASP checkpoint to be taken. In the third overlay of job initialization, XEQ sets up a Data Definition Block (DDB) to be used to read the JCL file. A DDB is the pseudo unit interface between $EXCPSVC and the HASP DDB service routines; in this case, the pseudo unit is a HASP-2540R with a unit address of 'RDR (default OFC) The first track address of the JCL file is contained in the only Peripheral Data Definition Block (PODB) in the lOT. A PDDB is a description of an output data set; if this job had been cancelled before execution, its JCL file would have been printed since the HASP Output processor would interpret the job's lOT's PDDB as defining an output data set. Once the DDB for the OS Reader/Interpreter has been set up, XEQ moves into the lOT two dummy PODBs, to be used for the HASP Job Log and system messages data sets. XEQ then stores into the execution PCE the address of the Reader/Interpreter TCB, to be activated to read this job, and sets XPITSENQ to zero to show that the PITs are again available for scanning. Unless the user (or the installation) has requested no HASP Job Log, XEQ gets a DDB for the HASP Job Log and initializes it. XEQ stores the address of the HASP Job Log PODB into the HASP Job Log DDB so that, when the first track address is gotten for the log, the POOB can be located quickly; the track address will then be stored in the PDOB. Execution Processor 3 - 25 HASP EXECUTION PROCESSOR XEQ now writes to the operator a message that the job is beginning execution and enters the DDB service routines via a $RETURN. DDB SERVICE To accomplish SPOOLing of input and output data sets, a pseudo unit must be correlated with records on direct-access devices; this correlation is accomplished by the DDB. For every SPOOLed data set actively being used by a job there exists a DDB; these DDBs are chained from the job's execution PCE. When $EXCPSVC finds it cannot process a job's pseudo-I/O request, it makes the job's TCB nondispatchable and invokes DDS service. The DDB service section of XEQ also contains special routines needed when a service must be performed synchronously with other HASP PCEs. DDB service inspects each DDB on the PCE. A DDS may require no service, I/O service, data set termination service, or error message service. I/O service includes buffer service. When a DDB needs I/O service, it is put at the top of a special table to indicate that it is the most-recently serviced DDS of all DDBs in the system. If it is an input DDB, that is associated with a HASP-2540R, service consists of getting a primary or secondary buffer (if required) and initiating a read to that buffer. If it is a previously-opened output DDB, service consists of truncating an output buffer, getting a track address to which the next output buffer will be written, putting that track address in the current buffer, and writing the current buffer. Another output buffer is gotten and in i t is saved the track address to which i t will be written. For an unopened DDB, an initial track address is gotten and put into. the PDDBs that describe the output data set. (There will be more than one PDDB only if more than one DEST was specified on the /*OUTPUT control card.) Then DDB service flags the modified IOTs to be checkpointed and gets a buffer as above. DDB termination service processes both input and output DOSs. For an output DDB, the current huffer is truncated, its track chaining address is made zero, and i t is written. The DDB is dechained from the PCE and added to the pool of free DDBs. All execution PCEs are $POSTed by DDB service for DDB. For an input DDS for which no I/O is active, DDS service frees primary and secondary buffers and frees the DDB as above. DDB error message service informs the operator that an I/O error has occurred and terminates the job using the OS cancel command. DDB service also performs special services for the job as a whole. There are several job services, requested by $EXCPSVC and by the HASP exit from the OS reader-interpreter. The services write messages to the operator to inform him of various normal or abnormal conditions and get additional working storage for the job. Invocation of a job service is dependent on flag bits in the PCE. 3 - 26 HASP Logic HASP EXECUTION PROCESSOR $EXCPSVC gets a DDB for a SYSIN data set when i t recognizes a special control card inserted by HASPRDR in the JCL file; it gets a DOB for a SYSOUT data set when the job, in OS execution, first issues an EXCP to the data set's pseudo unit. If $EXCPSVC fails in its attempt to get a DDB, it cannot continue without help from HASP. It freezes the caller (makes his TCB nondispatchable) and invokes the awaiting-allocation service. That service informs the operator and $WAITs for DDB. The operator can be informed many times in the course of.a job that $EXCPSVC is awaiting HASP allocat~on. $EXCPSVC similarly recognizes another type of control card in the JCL file as an Output Control Record (OCR), a condensation of a /*OUTPUT control card, which it must save throughout the Reader/Interpreter phase of job execution. It uses a HASP buffer as a work area in which to save these OCRs. If no OCR work area exists (the pointer in the PCE is zero), $EXCPSVC invokes a job service to get such a work area; then it moves the OCR into the work area. But if an OCR work area already exists and is so full of OCRs that another OCR will not fit, $EXCPSVC invokes a job service to write to the operator a message that the job uses too many /*OUTPUT control cards. The message will appear once at most for a job. For each SYSOUT statement encountered by the HASP Reader/Interpreter exit, one or more PDDBs are created. A PDDB is variable in length; its length depends on the complicity of the DO statement and of its associated OCR, if any. PDDBs are packed one by one into an lOT, so the possibility exists that there will not be room for a next PDDB. If this happens, the HASP Reader/Interpreter exit invokes the job service, which creates a new lOT, and does an OS WAIT. This service gets another HASP buffer, for use as an lOT, and an output track address, to which the lOT will be written, and chains the new lOT to the chain of lOTs with both storage and track addresses. . when the job ends OS execution, the OS initiator queues the job in the OS output queue, where it is picked up by HASPWTR. As HASPWTR processes the job's 5MBs, the job remains in the HASP execution phase. When i t completes its processing, HASPWTR posts HASP and invokes the job end service. This service issues the message JOB nnnn END EXECUTION and marks all DDBs except the HASP Job Log DDB which will be marked for termination when the HASP Log Processor recognizes the END EXECUTION message. The DDB service section examines requests in this order: first, requests for special job services, then requests for service from each DDB. Having completed services for all DDBs, it then checks a flag to see if any lOT needs to be checkpointed. An lOT must be checkpointed when one of its PDDBs has newly received an initial track address for an output data set. Checkpointing an lOT consists of writing i t out at its assigned track. If an I/O error occurs, another track is gotten for the lOT, the track address is put into the lOT and, for chaining, the previous lOT (or the JCT) and both control blocks are rewritten. Execution Processor 3 - 27 HASP EXECUTION PROCESSOR At its conclusion, DDB service posts the Execution Thaw Processor· (whose purpose it is to make again dispatchable any task frozen by $EXCPSVC) and waits for work. But if the end-of-job flag is on in the PCE, and if the PCE has no DDBs on its chain, then DDB service gives control to the third phase of XEQ, job termination. JOB TERMINATION Having completed HASP execution, a job must be queued for output. Alternatively, if required by the operator via the $EJ command, it may be requeued for execution. In either case, resources no longer required by the job must be freed for use by other jobs. The third phase of XEQ, job termination, determines by a flag in the PCE whether the job is to be reexecuted or not. If the job is to be reexecuted, its currently-collected output is to oe purged; job termination calls the $PURGE service to do this. Job termination then moves to the JQE the track address of the input JCT; the address had been saved in the JCT by HASPRDR. It frees all buffers in use by the job, and it queues the job again for execution. But if the jOb is not to be reexecuted, job termination purges instead its input data (input JCT, input lOT, JCL file, and SYSIN data sets) with a call to $PURGE, recomputes (if necessary) its HASP priority based on number of print lines and punched cards and an installation - defined table, rewrites the JCT and lOTs on their assigned output tracks, and queues the job for HASP output service. In either case, if the name of the job now ending caused an identicallyna·med job to be held, job termination resets in each active JQE the special hold flag QUEHOLD2, $POSTs for JOB all execution PCEs, and causes a HASP checkpoint to be taken. Finally, XEQ clears the work area in its execution PCE, reduces the active-PCE counter by one, and $RETURNs to attempt to select another job. THE EXCP EXIT ($EXCPSVC) For HASP SPOOLing service to provide SPOOLed input to and receive output to be SPOOLed from a job, it and the job must agree on a common means of requesting service. This common means is the pseudo UCB, created by SYSGEN at the request of the installation. The HASP exit from the OS Reader/Interpreter modifies the internal text of a JCL statement to cause the initiator to allocate one of these pseudo UCBs to each of a job's data sets that is to receive SPOOLing service. I/O activity of the job on such a data set uses a normal OS sequential Access Method (SAM), whose end-of-block routine issues an EXCP to the UCB, with an appropriate channel program, just as if the pseudo UCB represented a real 1403 Printer, 2540 Reader, 2540 Punch, o~ (for jobs using the HASP Internal Reader feature) a 2520 Punch. Each pseudo-UCB is flagged as such; upon EXCP, lOS recognizes the flag and routes the request to 3 - 28 HASP LogiC HASP EXECUTION PROCESSOR $EXCPSVC, the HASP EXCP exit. 105 validates the request before it sends it on, and continues to provide paging services while $EXCPSVC operates. ($EXCPSVC runs totally disabled.) When such a page fault occurs, IDS initiates page-in of the required page and backs up the EXCP caller's SVC old PSW. When the page fault has been resolved, lOS will reenter $EXCPSVC at its start to reinitiate processing for the request. It is the purpose of $EXCP to process the channel program associated with a user I/O request, simulating the I/O device represented by the pseudo UCB. lOS does not create an RQE for a request for pseudo I/O; ~herefore $EXCPSVC must keep a record of the progress of the request, specifically, which CCW it is currently processing and whether or not that CCW has been completed. This information, necessary because of the possibility of page faulting, is kept in the lOB's CSW and restart-CCW fields; the validity of these fields is indicated by the lOB's restart flag. For this reason, on first entry for a request, $EXCPSVC moves the starting CCw's address to IOBRESTR, clears IOBCSW, and turns on the restart flag. At this time the SMFEXCP exit is taken. A test occurs next for Internal Reader processing. If the UCB represents an Internal Reader, and if the Internal Reader is represented by a OCT (the only type of OCT which does not represent a real device), then the user has provided an SO-column card image which is to be moved into a data area in that Internal Reader OCT for further processing by HASPRDR. $EXCPSVC ensures that a reader PCE is active for this OCT, freezing the caller and invoking HASP if necessary, and that the data area in the ocr is ready to receive input; then i t moves the card image to the OCT, $POSTs the reader PCE for I/O, and posts HASP. This ends the request unless the channel program contains more than one write ccw, in which case the caller is frozen (to be activated again by HASPRDR). If the EXCP request is not for an Internal Reader, it is either for the OS reader-interpreter, for HASPWTR, or for a problem program. If the request is from the OS reader-interpreter, the execution PCE address and DOB address associated with the request are available directly in the normal case. In other cases the reader is to be frozen pending selection of another job by XEQ for Initialization, or the HASP System is stopping and the OS reader-interpreter should be stopped; $EXCPSVC returns unit-execution in IOBCSW to cause the reader to stop. If the EXCP request is from the writer, either the execution PCE and ODB addresses are available directly, or HASPWTR is just now writing a job's JOB card to its pseudo unit. In the latter case, the job name from the JOB card is compared to the job name in each execution PCE to find the proper PCE, and end-of-step logic in entered. Regardless of the source of the request for pseudo I/O, the associated execution PCE must be located, and the associated DDB must be found or a DDB must be created. A subrouti~e named XJOBSRCH is used to find the PCE; it does this by examining first JSCHPCE in the job's JSCB. If this field is zero, the subroutine compares the job's name in the TIOT with Execution Processor 3 - 29 Page of GY27-7255-O Revised September 15, 1976 By TNL S N27-1555 HASP EXECUTION PROCESSOR job names in the execution PCEs. how the PCE was found. It returns a condition code indicating If the PCE was found from JSCHPCE, no job step change has occurred. (The initiator zeros JSCHPCE at the beginning of each job step). Sut if a step change has occurred, $EXCPSVC flags for termination each DDS that was active on behalf of the previous step; then, i t stores into the PCE the current step number indicated by the initiator's LCT. Having found the PCE, $EXCPSVC must next locate the DDS. It runs the chain of DDBs comparing the unit address in each with the unit address in the pseudo UCS. When the DDB is thus found, $EXCPSVC continues with input or output processing. If the DDB is not on the PCE chain, the request is for an output pseudo device. The case may be, however, that the DDS is on the chain but does not yet contain a device address (it contains the step number and number of the data set); the request is then for an input pseudo device. In either case, $EXCPSVC must find the step and number of the DO statement associated with the pseudo-I/O request. The step number has been established above; the number is fbund by counting entries in the TIOT (skipping PGM=*.DD and JOSLIS and its concatenations) until the TIOT offset agrees with DCBTIOT, a field set in the DCB by OPEN. Then, for a pseudo-reader request, the DOSs are again scanned, and the DDS, whose step number and number match the data set's, is chosen. But for an output data set, the PODBs are scanned to find the one with matching step and numbers, and a new DDB is obtained for the data set. The PDDB address and the address of the PDDB's lOT are saved in the DDB, so that DDB service can assign an initial track to the data set and save its address in the PDDB. The DCB is checked for an OPTCD=J option. If OPTCD=J was selected, then that is indicated in the DDB and will be indicated in all PD~Bs for this data set. Now that the PCE and DDB for the data set have been found, the correct I/O routine receives control: XSYSIN if the pseudo-device is a HASP2540R, or XSYSOUT if it is a rlASP-1403 or a HASP-2540P. XSYSIN processes four types of card images: normal, null, input stream definition, and output control record. The JCL file may contain all four types; all other files processed by XSYSIN contain only normal card images. Null card images are messages to the user, delivered in the event that his job is cancelled before execution; they are to be passed over. An input stream definition card is inserted by HASPROR in the J~L file just prior to a DO * (or DD DA'l'A) card; it contains the initial track address of the input stream data set and causes XSYSIN to get and initialize a DDS for that data set before passing the DO */OATA card to the reader-interpreter. An output control record card appears at the same place in the JCL file as the /*OUTPUT control card from which it was condensed appeared in the original JCL stream. XSYSIN moves from i t to the job's OCR buffer a 68- 3 - 30 HASP Logic H~SP EXECUTION PROCESSOR byte OCR. Neither the output control record card nor the input stream definition card is passed to the Reader/Interpreter. A normal card image is passed by XSYSIN to the EXCP issuer according to his channel programs. Using the DOB, XSYSIN points to the proper location in the data set's primary buffer (all input data sets are double-buffered) and inspects the 2-byte logical-record control field. The first byte contains the text length; a length of 255 is used as an end-of-buffer indicator. If the current buffer offset in the DDB points to an end-of-buffer indicator, and if the secondary buffer is ready with data r XSYSIN swaps buffers and proceeds; otherwise i t freezes the caller and r if necessary, fires up H~SP. But if .the primary buffer was not ready, the primary end-of-file switch may be on; if SOr the EXCP request is ended with unit-exception in the CSW. If the primary end-of-file switch was off, however, XSYSIN merely freezes the caller and, unless some I/O was active for this DDB, fires up HASP. If the text length was not 255, a logical record is to be examined. Its type is given by the byte following the text length: X'04' for a null record, X'?3' for an input stream definition record, and X'43' for an output control record. Record typeX'19' also occurs to describe the last card of a JCL file, which is a null JCL card (to cause the ReaderInterpreter to enqueue the job in the OS job queue before returning for another job and being frozen). To avoid sending end-of-file to the Reader-Interpreter, XSYSIN never will update the DOB's current buffer offset past the null JCL card. XSYSIN moves a normal card to the address specified by the user's CCW, updates the current buffer offset (except for X'19' cards), sets deviceend in the lOB's CSW to tell XCCWSCAN that the CCW has been completely processed, and again invokes XCCVSCAN to get another CCW. When XSYSIN has processed the last ccw of a channel program, it tests for an end-of-buffer indication before returning to the user. If the EOB indicator is next in the primary buffer, XSYSIN switches buffers and fires up HASP to start I/O on the now-secondary buffer; then it returns to lOS with the lOB's CSW field set correctly. At end-of-channel program for the Reader/Interpreter, XSYSIN additionally checks for a x'19' card. if this card has just been sent to the reader, the reader is disconnected from the execution PCE it was serving and is frozen. XSYSOUT processes requests to HASP-1403 and HASP-2540P pseudo devices. Each record presented by the user is truncated of trailing blanks and moved to a HASP buffer. In addition, XSYSOUT edits JCL cards for HASPWTR, changing OD $ to DO * and DO CATA to DD DATA. All SYSOUT data sets are dynamically buffered; that is, whenever a buffer fills with output data it is queued by EXCP for output and a new buffer is obtained. The HASP channel-end appendage and the $ASYNC processor automatically free an output buffer once it has been written. XSYSIN and XSYSOUT use subroutine XCCWSCAN to obtain the next ccw. XCCWSCAN has been coded with the possibility of page faults in mind. Execution Processor 3 - 31 It HASP EXECUTION PROCESSOR maintains current channel program status in the lOB and allows its· callers to indicate in the CS~ abnormal completion or normal completion of a CCW. On entry to XCCWSCAN, IOBRESTR points to the current ccw and the csw shows normal completion, abnormal completion, or no completion. On the basis of this and of the current CCW's command chaining flag, either a next CCW is chosen or the channel program ends~ If a next CCW is chosen, XCCWSCAN examines it for validity, processes a TIC (X'S') or a NOP (X'O)') and returns to the caller pointers to the CCW and its data area and the contents of the CCW·s length field. If no CCW remains or if a ccw chain has been broken, XCCWSCAN returns an end-of-channelprogram indication. READER/INTERPRETER EXIT XJCLSCAN examines and modifies a JCL statement that is currently being processed by the OS Reader/Interpreter. The JCL statement is passed by the Reader/Interpreter in internal text form. XJCLSCAN's examination and modification has two main purposes: (1) to force the OS initiator to allocate a pseudo device to a data set that requires one and (2) to allow correlation of the data set's characteristics with its pseudo device by $EXCPSVC. To force allocation, XJCLSCAN changes the text of certain DO statements to UNIT=R, UNIT=A, or UNIT=B; to allow correlation to pseudo device, XJCLSCAN preserves the OD statement's step number and OD number in a PDDB i t constructs (for SYSOUT data sets) or in the DDB constructed for the data set oy $EXCPSVC (for SYSIN data sets). In addition to processing DD statements, XJCLSCAN makes minor modifications to JOB and EXEC statements. To the JOB statement, XJCLSCAN adds values for the MSGCLASS=, CLASS=, and PRTY= keywords, eliminating any user-specified values. It also removes a TYPRUN= specification. The job's priority is forced to &PRI(n) and its class to &OSC(n), where n is its HASP logical partition number. If the user-specified message class matches one of the characters in &WTRCLAS, it is retained; otherwise the first character of &WTRCLAS is used as message class. (However, the original userspecified message class will oe used as a HASP output class to print the HASP Job Log and system message data sets; if the user specifies no message class, these data sets will be class A data sets.) When processing the JOB statement, the real reader start time and date and the reader device type and class are placed in the Job Management Record (JMR) for the current job. If the job is to run at the VS2 Automatic Priority Group level, its EXEC statement is modified: the DPRTY= parameter, if specified, is nullified. Also, encountering an EXEC statement causes initialization for the tables used to compute step number and DO number for certain DO statements. A 5-entry table used to record appearances of DDNAME= parameters in the step is zeroed, the current DO number is zeroed, and the current step number is set from the JMR. ) - 32 HASP Logic Page of GY27-72S5-O Revised September 15, 1976 By TNL SN27-1555 ~ASP EXECUTION PROCESSOR Each DO statement is analyzed to see if it defines a SPOOL data set or might refer forward to one. If it defines a SYSOUT data set, one or more PODBs are constructed for it and its SYSOUT= keyword is changed to UNIT=A or UNIT=B according to installation-defined table XTRTABLE. If it defines a SYSIN data set, the DDB for the data set is found and modified and its positional parameter ($ or CATA) is changed to UNIT=R. (If HASPRDR had allowed * or DATA to be presented through $EXCPSVC to the reader-interpreter, that program would have allocated OS directaccess space for the data set before entering the HASP readerinterpreter exit.) If the DO statement uses DONAME= to refer to a subsequent DO statement, the subsequent statement might be SYSOUT or SYSIN; information is saved to be used by subroutine XFINDOON, which supplies step number and DO number to its caller. To build a PDDB for the SYSOUT statement, XJCLSCAN first extracts from the statement the values for CLASS, FORMS, FCB, UCS, COPIES, FLASH, BURST, CHARS, and MODIFY, placing them in a working PDDB. (But if the character in XTRTABLE corresponding to the class is an asterisk, the DD statement is returned to the Reader/Interpreter unchanged.) The SYSOUT forms field may indicate not forms but OCR ID; if forms are specified, the OCRs are searched to find the matching ID. If an OCR is to expand this SYSOUT definition, the forms-field-present flag in the PDDB is reset and fields present in the OCR are added to the working PDDB. Any values specified in an OCR override corresponding values from a DD statement. If FCB or CHARS are specified, the values are added to the internal text for the DD entry. With the working PODB now complete, it is compressed to m1n1ffi1Ze its size in an lOT and is moved into the lOT that is last on the execution PCE's chain of lOTs; if this PODB will not fit, HASP is invoked to assign another lOT buffer. Up to four destinations may be specified on a /*OUTPUT control card. If the OCR indicates that more than one destination exists, the second destination is set into the working PDOB and the PODB is added to the lOT as above. Finally, if the SYSOUT statement uses the DCB= keyword, its parameters are examined and, if necessary, modified. The resultant internal text is returned to the reader-interpreter for further processing. If the DDNAME= keyword appears on a DD statement in the step, XJCLSCAN saves that keyword's argument and the DO number of the statement using OONAME=. Later, subroutine XFINDODN will compare current DO name with each saved DONAME= argument and, upon a match, return the associated DO number instead of the current DO number. A SYSIN DD statement is modified to contain UNIT=R instead of * or DATA, and step number and DO number are stored in its associated DDB. In addition, it is checked for DCB parameters; if none appear, DCB parameters RECFM=FB, LRECL=80, and BLKSIZE=80 are added. Execution Processor 3 - 33 Page of GY27-7255-o Revised September 15, 1976 By TNL SN27-1555 HASP EXECUTION PROCESSOR A general subroutine modifies user DCB parameters as they appear on any SYSIN or SYSOUT statement. If neither LRECL nor BLKSIZE is specified, the subroutine adds no parameters. If LRECL is specified and is greater than a HASP-defined maximum value (80 for SYSIN, 204 for SYSOUT), it is set equal to that maximum. If both LRECL and BLKSIZE are specified, BLKSIZE is set equal to LRECL (or four greater if "V" appears in the RECFM argument). If only BLKSIZE appears, it is retained unchanged. If only LRECL appears, BLKSIZE is added as if both keywords had been coded. THE EXECUTION THAW PROCESSOR (XTHAW) During the course of its operation, $EXCPSVC may want to stop its caller temporarily while related DDB services are performed under the HASP TCB. It invokes subroutine XCOOL which in turn invokes the OS status service via branch entry IGC07902 to turn on TCBHNDSP, a nondispatchability bit in the caller's TCB (bit 32.3). DDT service, having performed all service it can for an execution peE, will $POST the Execution Thaw processor (XTHAW) for work. It will also flag the execution PCE it is serving so that XTHAW will recognize it. At this time the execution PCE must contain the address of the job's job step t~sk. Processor XTHAW gains control after all execution PCE's have returned control, from the HASP Dispatcher. It checks a flag (XPOSTBIT) in each execution PCE and, if the flag is on, conveys the job step TCB address to XWARM, the comparison routine of XCOOL. XWARM in turn calls the OS status service via branch entry IGC07902 to reset flag TCBHNDSP in all TCBs of this job step. In addition, XTHAW thaws HASPWTR if it is frozen and cannot be associated with an execution PCE. SMF TERMINATION EXIT XTERMSMF is entered immediately prior to the user SMF exit routine IEFACTRT when HASP is active. The address of this routine exists in the HVT section of the HCT. The routine searches for a match on job name (in the common exit parameter area) against active PCE job names. If no match, the routine returns immediately. If there is a match on job name, the routine saves part of the common exit parameter area in the appropriate JCT for HASP SMF records. If this exi t is a- job termination exit, the reader stop time and date and the job class from the JOB card are placed into the type-5 SMF record. Then control is returned to the calling routine after register R15 is zeroed to indicate normal return. 3 - 34 HASP Logic HASP OUTPUT PROCESSOR System output consists of operator console messages, job statistics, messages from the Operating System, and data sets written by the program. Operator console messages are saved in a HASP-defined data set by the ,WTO/WTOR HASP interface. Job statistics are maintained and updated in the JOD Control Table (JeT) by various HASP processors. Messages from the Operating System are written into the system job queue, then copied into a HASP-defined data set at job termination Data sets·to be processed as output are placed on the HASP SPOOL volume(s) by the HASP Execution Processor during job execution. There are 36 classes of system output permitted in the operating System, and in the HASP Output Processor there is an output queue that corresponds to each class. The programmer defines a data set as being a system output data set by using the SYSOUT keyword in the DO s,tatement; . he specifies the class to which it belongs in the parameter associated with the SYSOUT keyword. Using the MSGCLASS keyword in the JOB statement, the HASP Execution Processor assigns a Peripheral Data Oefiftition Block (PODS) to each SYSOUT data set, as well as one to the console messages and Operating System messages pertaining to his job. System Message Blocks (SMBs) containing interpreter, allocation, and termination messages are built and placed in entries for the designated queue. If the programmer makes no message class specification, the system uses the class ~esignated as the message class when the system is generated. Each output queue entry describes the system output. of the corresponding class, for one job. If the entry corresponds to the message class, i t contains 5MBs and may also contain DSBs if there are system output data sets exempt from HASP processing in that class. If the entry does not correspond to the message class, i t contains only DSBs for exempt data sets. At job termination, a system output writer in the HASP SUbsystem transcribes the 5MB data to the HASP SPOOL volume(s) and signals end of job to the appropriate HASP Execution Processor. The job is then transferred from the HASP execution queue to the HASP output queue for analysis by the HASP Output Processor. The task of the HASP Output Processor is to analyze the POOBs built for the job by the Execution Processor and to build a set of Job Output Elements (JOEs), which represent unique print/punch requirements. The JOEs are placed in the Job Output Table (JOT), which contains all output requirements currently available to be processed by HASP Print/Punch Processors. HASP OUTPUT PROCESSOR At its initial entry point, the HASP Output Processor uses the HASP macro $POSTto request a checkpoint of the JOT to the HASP SPOOL volume and to alert all Print/Punch Processors that requests for work may be made. Two ·warm start· fields in the JOT are then checked to determine if this is a warm start of a system that was interrupted while adding a job to the JOT. If the fields are nonzero, one will contain the job number of the interrupted job and the other will contain a counter which Output Processor 3 - 35 Page of GY27-7255-0 Revised September 15, 197 6 By TNL SN27-1555 HASP OUTPUT PROCESSOR denotes the last JOE successfully added. The HASP $QLOC macro is used to locate the job by job number in the HASP job queue. If the job is not found, the HASP $DIST~RR macro is used to warn the operator of possible loss of data and the ·cold start· path of the Output Processor is taken. Having located the Job Queue Element, -(JQE) the Output Processor sets the "entry busy· flag and resumes processing. If it is determined that no enqueueing of a job has been interrupted, the HASP macro $QGET is used to search the HASP job queue for new work from the output queue. In the event that no job is available, the HASP macro $WAIT is used to release control until the status of some job in the queue is changed. Having procured a job, the Output Processor uses the HASP macros: $ACTIVE to indicate to the Dispatcher that the system is not dormant, $TIME to get a starting time and date for Output Processor, $GETUNIT to get a control block for accessing data on the SPOOL volume(s), and $GETBUF to get a HASP buffer into which SPOOL data can be read. The $QGET macro returns the address of a JQE if a job is available for output processing. All references to job data by the Output Processor are made through the JQE, which contains the track address (on the SPOOL volume(s» of the Job Control Table (JCT). The OPIOCK subroutine is used to read the JCT from the SPOOL volume into the HASP buffer acquired earlier. A check is made to ensure that the data read from the SPOOL volume is a valid JCT and belongs to the job being processed. In the event of an 10 error, the HASP macro $IOERROR is used by"the OPIOCK subroutine to augment console data for operator information. A failure during any of the' above checks results in the HASP macro $DISTERR being used to alert the operator of possible data loss, and a sequence of macros is executed to release buffer and control block resources held by the Output Processor. $QPUT is used to place the job in the HASP purge queue and $DORMANT is issued to indicate an inactive processor. The Output Processor then returns to the ·cold start· entry point and will attempt to find another job. At normal completion of JCT checks, the job level copy count, message class, and default job forms 1D are copied from the JCT to the Processor Control Element (PCE) used as a work area. The JCT contains the track address of the first Input Output Table (lOT) that contains the PDDBs and the track address of the next lOT if additional are required. The OPIOCK subroutine is used to read all lOTs for the job into HASP buffers before the scan of PDDBs begins. If the validity check for any lOT fails, $DISTERR is issued to alert the operator and processing is continued if at least one lOT was valid. Absence of any valid lOTs results in the same processing path as was taken for an invalid JCT. TwO prototype JOEs are built for the first PDDB that does not have the NULL flag set. The first JOE ,hfork JOE) contains routing information and points to other JOEs of the same SYSOUT class, and the second JOE (characteristics JOE) describes the device setup (FORMS, FCB, UCSB, and, if &NUM3800 is greater than zero, FLASH and BURST) 3 - 36 HASP Logic HASP OUTPUT PROCESSOR necessary to process this PDDB. The HASP macro $#ADD is used to add the two prototype JOEs to the JOT in the SYSOUT class queue specified in the PDDB. Each $#ADD done on behalf of tne job is done Wjob copyW times to allow parallel processing by Print/Punch Processors. If the $#ADD macro indicates that the JOT currently has no available space for insertion of JOEs, the HASP macro $WAIT is used to relinquish control until space becomes available. Having added this processing requirement to the JOT, the NULL flag in the PDDB is set along with the NULL flags in all subsequent PDDBs that represent similar class, route, and setup characteristics. The first PDDB that does not meet the above test is used as a restart point for the next prototype JOE build and $#ADD. When all PDDBs have been set to NULL, the JCT for the job is updated on the SPOOL volume by the addition of Output Processor start/stop times. For each ~ork JOE added to a class queue, a counter in the JQE for the job is incremented. During processor termination, the job is placed in the purge queue if the JOE counter is zero; otherwise, the job is placed in the hardcopy queue while awaiting print/punch processing. The control block used to access SPOOL data and the string of buffers used in reading the JCT and IOT(s) are returned via the $FREUNIT and $FREEBUF macro instructions. $DORMANT is used to indicate an inactive processor to the HASP Dispatcher, and control is returned to the wcold start W entry of the Output Processor. JOB OUTPUT TABLE (JOT) ACCESS MACROS Five macros are provided for accessing entries in the class queues of the JOT: 1. $#ADD add a JOE to the class queues. 2. $#REM remove a JOE from the class queues. 3. $#GET select a JOE for processing by a Print/Punch Processor. 4. $#PUT release a selected JOE for subsequent processing. 5. $#CAN remove all nonselected JOEs for a specific job from the class queues. 'The subroutines that supply the processing function for each macro can be found in the HASP Output Processor assembly at entry points which are labeled the same as the macro names. Each subroutine uses the $WAIT HASP macro to ensure that the Checkpoint Processor is not currently writing the JOT onto the SPOOL volume, because changes to the JOT during this operation could make the checkpoint record invalid. Subroutines, which require allocation of JOEs from those available in the JOT, determine that the free queue is large enough to ensure completion of the request. If the free queue is too low, a return code indicating wno process w is set, and return is made to the macro caller. Output,Processor 3 - 37 HASP. OUTPUT PROCESSOR The $#AOO subroutine first scans the queue of characteristics JOEs to determine if a JOE which matches the prototype characteristics JOE being added already exists. If no match is found, a JOE is acquired from the free queue and the setup data from the prototype JOE is copied into it. Having either found a match or built a new characteristics JOE, the use count in the JOE is incremented by one to count the number of simultaneous users of the block. A second free JOE is then acquired from the free queue, and the data from the prototype work JOE is copied into it. The work JOE is added to the top of the appropriate class queue and, if a characteristics JOE was built, it is added to the characteristics queue. $POST is used to invoke a checkpoint of the altered JOT and to alert Print/Punch Processors that work is available, before returning to the macro caller. The $#REM subroutine decrements the active device counters and use counter in the characteristics JOE associated with the request and returns it to the free queue if the use counter becomes zero. If a checkpoint JOE was assigned, it is returned to the free queue. The work JOE is returned to the free queue, and the JOE counter in the HASP Job Queue Element is decremented. If the JOE counter for the job becomes zero and the job was in the hardcopy queue, it is moved to the purge queue since no further output processing is required. The $POST is used to invoke a checkpoint of the altered JOT and to alert the Output Processor that space in the JOT has become available. The $#GET subroutine uses the Device Control Table (OCT) of the calling Print/Punch Processor as a parameter list while trying to select the best work element from the JOT for processing. Each class queue that the device is eligible to process is searched to find the highest priority entry. Calculation of the priority for an element is based on the following factors in order of their importance: 1. Device setup exactly matching characteristics JOE. 2. Characteristics JOE representing a setup not currently found on any other similar local device. 3. A value of 36 decremented as each eligible class queue is searched. 4. HASP job queue priority. Note: operator-controlled devices require that item 1 above is true. Automatic local devices require that item 2 above is true unless the forms 10 for the JOE is that designated as standard during HASP generation. If no work is found, a return code is set and control is returned to the macro caller. The work JOE with the highest selection priority is marked busy, and the device use counter in its related characteristics JOE is incremented. A JOE from the free queue is acquired and assigned asa checkpoint JOE in support of ·warm start· and interrupt ($I 3 - 38 HASP Logic HASP. OUTPUT PROCESSOR device). Before returning to the macro caller, $POST is issued to request a checkpoint of the altered JOT. Note that the $#GET subroutine can be used to determine if work is available without selecting it by using the 'HAVE=NO' operand on the macro call. The $#PUT subroutine decrements the active device counter of the characteristics JOE to ensure accurate operation of subsequent $IGET calls. If print/punch checkpoint data was supplied in the macro call, it is copied into the related checkpoint JOE and the checkpoint data valid flag set in the work JOE; otherwise the checkpoint JOE is returned to the free queue. After resetting the work JOE busy flag, $POST is issued to request a checkpoint of the altered JOT and to alert Print/Punch Processors of available work. The $#CAN subroutine scans each of the 36 class queues for work JOEs that belong to to the job supplied in the parameter list. For each work JOE found in the scan, the use counter of the related characteristics JOE is decremented. If the use counter becomes zero, the characteristics JOE is no longer needed and is returned to the free queue. The checkpoint JOE pointer is checked and, if nonzero, indicates that the assigned JOE should be returned to the free queue. Finally, the work JOE is removed from the class queue and returned to the free queue. As each work JOE is removed, the JOE counter in the JQE is decremented. After all available JOEs have been examined, the job is moved to the purge queue if its JOE counter is zero or to the hardcopy queue if nonzero. The $POST macro is issued to request a checkpoint of the altered JOT and to alert the Output Processor of available space in the JOT. THE JOB OUTPUT TABLE (JOT) The JOT is located in the Output Processor at entry point $JOT. It contains several queues of JOEs, which describe current system output requirements. The 36 class queues that contain work JOEs, the queue of characteristics JOEs, and the queue of free JOEs are at the beginning of the table with other maintenance data. The bulk of the JOT is then composed of JOEs which are in one of the above queues and whose number is controlled by the HASP generation parameter &NUMJOES. Each JOE in the JOT can serve one of three functions: 1. Work JOEs are chained in the class queues and are the primary representatives of output processing work. The JOE counter in the JQE counts the number of work JOEs for the job i t represents. 2. Characteristics JOEs are chained in the characteristics queue and are pointed to by a field in the work JOE. The setup of a device before it can process a given work JOE is described by a characteristics JOE. Since many work JOEs may require the same setup, a characteristics JOE may be-used or pointed Output Processor 3 - 39 HASP OUTPUT PROCESSOR to by more than one work JOE. 3. Checkpoint JOEs are pointed to by a field in the work JOE which is currently being processed by a device or whose processing on a device was interrupted. Data necessary to restart the output process is saved in a checkpoint JOE. JOEs which are not currently in use to represent output work are chained in the free queue. Since the data in the JOT is necessary for warm start of the HASP subsystem, a checkpoint is requested each time a change is made. During warm start, a subroutine in the HASP Initialization Processor ensures that all checkpoint JOEs receive appropriate restart data and that all work JOE busy flags are reset. HASP PRINT/PUNCH PROCESSOR The HASP Print/Punch Processor is a reenterable program capable of supporting simultaneously multiple local and remote printers and punches. In addition, messages routed to remote terminals which are not available will be saved and transcribed late~ if the &SPOLMSG option was set at HASP generation. At generation time also, the number of simultaneous users of the Print/Punch Processor is defined by the sum: iNUMPRTS+iNUMPUNS+iNUMTPPR+&NUMTPPU Depending on the number of available local devices and the number of lines, this maximum mayor may not be reached. Control flags and work space for each print/punch user are contained in a PCE related to the user and attached to the HASP Dispatcher chain. All PCEs for the Print/Punch Processor are initially waiting to be informed that JOT services are available. When the $POST is issued by the HASP Output Processor, each print/punch user via the $LINK HASP macro begins execution in overlay module HASPPPI1. The HASP macro $GETUNIT is issued by each processor in turn to get an output device. All local output devices requested by processors will be assigned unless drained by the operator. Remote devices are automatically drained until module HASPRTAM determines that there is work available in the JOT for them. Each Print/Punch Processor which is not successful in getting an output device uses the HASP macro $WAIT to give up control until a unit becomes available. The Print/Punch Processor then stores the address of its event wait field in the OCT for its output device so that subsequent I/O activity can be related to the proper user. $ACTIVE is issued to alert the HASP Dispatcher that the system is not dormant. If the processor is a first remote printer (HMF.PR1), setup is made to print SPOOLed messages if any exist (bypassing normal work selection). All processors which are not printing SPOOLed messages use the HASP macro $#GET to scan the JOT for output work. Unless the operator has altered their setup, all output devices are assumed to be in automatic mode with 3 - 40 HASP LogiC HASP OUTPUT PROCESSOR standard forms mounted; preference is thus given to jobs which require matching setups. If work is available, the $#GET macro will return the addresses of the work JOE, the characteristics JOE, and the JQE. If no work is available the processor will issue a message indicating that the device is idle, free the output device OCT, indicate that it is dormant, and wai£ for JOT work available to be posted. Having obtained a direct-access OCT via $GETUNIT for communication with the SPOOL volume, the processor gets one or two HASP buffers depending on the options chosen during HASP generation. Using the track address in the JQE, the JCT is read from SPOOL and checked. If an error is detected, the work JOE is purged and the processor returns to module entry HASPPPI1. A successful read of the JCT is followed by a message indicating the job number and device name for operator information. Having initialized the PCE channel program work area, entry is made via a $LINK to the second initialization.overlay module HASPPPI2. SPOOLed remote message processing bypasses most of this module with the exception of one section, which uses the main print loop as a closed subroutine until all messages routed to the device are printed. Since the JCT is not retained in a HASP buffer during the entire print/punch operation, fields which will be needed are copied into the PCE work area for later use. The processor next scans the Print/Punch Checkpoint element table (PRC) to locate an available slot for recording interim work progress. If a "warm start" is indicated by the work JOE, restart data is copied from the checkpoint JOE into the PRC and $POST is issued to reque!it a checkpoint of system status. Punch ProceHsors next build the punch-laced separator card if requested; otherwise, all processors return to the resident module at entry PRINTSEP. Having completed all processor initialization, the characteriutics JOE is referenced as a setup descriptor, the 3211 index value is forced to 1, and the device setup verification subroutine is called. After setup is finished, Print Processors produce a job header page, if requested, which either indicates a new ~ork item (by START) or a continued work item (by CONT). Both header and trailer ~ages contain job name, job number, and SYSOUT class in block letter format if at least 30 lines of separator page print is requested. The next section of the Print/Punch Processor has the task of examining each POOB provided in the IOT(s) by the Execution Processor and selecting those which match the work and characteristics JOEs. For continuation of output which has been partially completed, the first POOB examined is the one representing the interrupted data set. After checkpointing the current IOT track address, the PDOB offset in the IOT, the first track address of the data set, and the initial Record Control Block (RCB) offset in the first data buffer, the processor clears the warm start flag and calls device setup verification to prepare the device for output. As each data buffer belonging to the selected data set is read, it is checked for validity. A failure of this check Output Processor 3 - 41 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP OUTPUT PROCESSOR results in termination of that data set and selection of the next data set. If selection of the PDDB causes a change in any of the non-count information of the type-6 SMF record, then a record is wr,itten describing the previous data sets by calling the SMF type-6 record-writing routine. The main print/punch loop steps from one RCB to the next (throughout each buffer belonging to a data set) building a CCW for each output record. The number of CCWs in a chain is limited by either of the HASP generation parameters &NUMPRCCW or &NUMPUCCW or by the number of output records available in one buffer--whichever is smaller. Automatic page overflow is provided fo~ data sets when the lines-per-page parameter on the JOB card is not zero. This does not, however, prevent printing over the page perforation since the line counter is reset whenever a skip to any channel is encountered in the data set. For checkpoint purposes, the PRC is updated at every skip issued to printer, thus allowing rapid restart on a warm start. If requested, each print line not directed to a 3211 or 3800 is translated to remove unprintable bit patterns. At the end of each data set, the current lOT is read to prepare for selection of the next data set by PODS scan. If the data set just finished was the HASP Job Log, data collected from the JCT is printed as the HASP job statistics block. Data set copy count greater than one results in the PDDB selection of the same data set until the requested number of copies has been printed or punched. If OPTCD=J was specified, then the table reference character that is the first character of each print line is processed. For 3800 printers, this means conversion of the character to a Select Translate Table command whenever a change of character arrangement tables is indicated. For non-3800s, this means dropping the table reference character from the final output. when all data sets belonging to the current work JOE have been processed, the JCT is read and validity checked in preparation for processor termination. If the termination is abnormal, messages are written both to the operator and to the output device (if a printer), giving the reason. Fields in the JeT which reflect print/punch time, line/card counts, etc., are updated, and the JCT is written back to SPOOL. If SMF data recording has been requested, an SMF type-6record is built in an SMF buffer and scheduled for writing using $GETSMFB and $QUESMFB HASP macros. Punch Processors punch a blank card to clear the last valid data set card record. All processors, using data from the characteristics JOE as setup descriptor, call device setup verification in preparation for the trailer page on printers. Punch Processors also follow this path to ensure correct device setup for the next $#GET request. The last requirement is that a macro indicating end of processing be issued to release the work JOE. Since some operator commands (such as cancel ($C), restart ($E), and interrupt ($I» release the work JOE early, this section is skipped in those cases. If a repeat ($N) has been issued but could not be immediately honored, the macro $#PUT is used to place the work JOE back into the JOT for the requested copy. Otherwise, $#REM is issued to dispose of the completed work JOE. Control blocks and buffers required for processing are released and the Print/Punch Processor returns to its primary entry point to select a new job. 3 - 42 HASP Logic Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP OUTPUT PROCESSOR DEVICE SErUp VERIFICATION SUBROUTINE This subroutine checks the device type. If the device is a 3800, then the subroutine goes to the 3800 device setup and verification subroutine. The task of this subroutine is to ensure that the device owned by the Print/Punch Processor is set up with the requested forms and, when appropriate, the Forms Control Buffer (FCB) and Universal Character Set Buffer (UCSB). The FCB must also include the proper index byte if the device is a 3211. A parameter list is supplied containing the required setup, which is compared with the DCT that specifies actual physical setup. If a mismatch requires operator intervention, a console message is issued and processing is halted until the operator indicates otherwise. The most obvious response is for the operator to perform the requested setup and then use the start ($S) command to continue processing. Optionally, the operator can override any of the setup requirements before issuing the start ($5) or can suspend processing completely by using cancel ($C), interrupt ($1), or restart ($E). Next, the U(:SB is loaded (if supported by the device), and any of the following is true: 1. This is the first use of the printer since HASP was started. 2. A change in UCSB identification has occurred. 3. The operator has issued a set ($T) command to this ~evice with the operand 'T=' or 'U=' since the last UCSB load was done. 4. The last attempt to load the UCSB failed. If the requested UCSB image is not in the library, a message is issued, a flag is set requesting that a subsequent load is needed, and the previous UCSB 10 is moved into the OCT. After UCSB loading, an attempt is made to load the FCB and index value for 3211 printers if any of the following is true: 1. This is the first use of the 3211 Printer since HASP was started. 2. A change in FCB identification or index value bas occurred. 3. The operator has issued a set ($T) command to the device with the operand 'C=' since the last FCB load was done. 4. The last attempt to load the FCB failed. 5. The last load of the FCB was done with an index value different than that contained in the system copy of the FCB image. If the requested FCB image is not in the library, a message is issued (followed by a setup message) and the device is stopped to allow specification of a valid FCB 10. Having completed the above task, the device setup verification subroutine returns control to the calling point in the Print/Punch Processor. Output Processor 3 - 43 Page of GY27·7255-o Revised September 15, 1976 By TNL SN27·1555 NOTE: When the device setup verification area of the HASP print-punch processor loads the UCSB on a 1403 or a 3211 printer, it is l·oaded with· folding. 3800 DEVICE SETUP AND VERIFICATION SUBROUTINE This subroutine verifies that the forms, flash, burst, and FCB settings of the device (in the DCT and DCTE) match those required by the caller. If there is a mismatch, then a request is made to the operator to set up the device with the proper forms, flash, burst, and FCB. The most obvious response is for the operator to issue start, indicating continue processing. Optionally, the operator can override any of the setup paramenters using the set ($T) command before issuing the start command. The operator can suspend processing completely by issuing cancel ($C), restart ($E), or interrupt ($1). Next the subroutine must verify that the device is set up properly according to FCB, character arrangement tables, copy modifications, and copy numbers. If the requested val~es match the current setup, then no other processing is performed. If the internal setup does not match the request, HASP attempts to satisfy the request without issuing SETPRT. Issuing the SETPRT SVC involves a task switch and other relatively high overhead processes. HASP can perform any of the following tasks without issuing SETPRT: • Loading of a HASPGEN-defined FCB • Changing to the hardware default character arrangement table (when this change does not cause a change in some other factor requiring SETPRT) • • Changing to having no copy modification in effect. • Changing the current copy numbers, flash counts, and starting copy numbers. HASP will issue SETPRT to accomplish any of the following: • Load an FCB defined in SYSl.IMAGELIB, • Load any character arrangement table other than the hardware default. • Load a copy modification module. If a SETPRT is required, then the subroutine transfers control to the subtask to issue the SETPRT. STP~ If and error.occurs in SETPRT processing, the operator is informed and has the same options as described for the setup message, though in this case the normal action is to override or suspend processing for the JOE. 3 - 44 HASP Logic HASP PURGE PROCESSOR The Purge Processor frees the job's acquired HASP direct-access space, creates a type-26 SMF record, and removes the Job Queue Element from the system. The processor acquires a Job Queue Element and issues the $ACTIVE macro to inform the HASP Dispatcher that the processor is active. Then, a direct-access Device Control Table (OCT) and two HASP buffers are acquired and initialized so that the job's Job Control Table (JCT) and Input/Output Table(s) (IOT(s» may be read into the buffer from the SPOOL disk. If a DCT or buffer is not available, this processor will be placed in a HASP $WAIT state until a OCT or buffer can be acquired. If no permanent I/O errors occur while reading the JCT, a $PURGE macro instruction is issued to return the job's direct access input tracks. If no permanent I/O errors occur while reading the lOT, a $PURGE macro instruction is issued to return the job's direct access output tracks. Any additional lOTs for the job will then be read into the lOT buffer, and their direct-access output tracks will be freed unless a permanent I/O error occurs. If a permanent I/O error occurs while the JCT or an lOT is being read, the Disastrous Error routine is called and the $PURGE macro instruction is not executed. Once all of the job's direct-access tracks have been freed, a buffer is obtained using the $GETSMFB macro. If user exits are to be taken, a second SMF buffer is obtained. The common exit parameter area, the JMR portion of the JCT, is preserved in one nuffer and a type-26 SMF record is created and saved in the second buffer. The second buffer is chained to the first buffer and the $QUESMFB macro is issued to put the first buffer on the busy queue of SMF buffers and to POST the HASPACCT subtask. If user exits are not to be taken (EXT=NO), only the type-26 record is queued up to be written out. Next, the job queue Element is removed from the HASP Job Queue and the following message is issued to the operator: JOB xxxx IS PURGED Finally, the buffers and OCT are freed, and the $DORMANT macro instruction is.issued to indicate to the HASP Dispatcher that the processor is inactive and control is returned to the start of the routine for the processing of the next job to be purged. Purge Processor 3 - 45 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 HASP COMfviAND PROCESSOR The HASP Command Processor receives all HASP commands entered from acceptable local or remote HASP input sources. The processor is responsible for decoding each command and performing the processing necessary to cause appropriate action to the operator's request. The HASP Command Processor is initially entered at the beginning of the control section (CSECT) HASPCOMM. Subsequent reentries are returns from the various command subprocessors with optional requests for the displaying of the "OK" message or other message contained in the COMMAND area of the PCE. After displaying any requested replies, the HASP Console Message Buffer (CMB) queue $COMMQUE is examined for the presence of the next command to process. If no CMB is queued, the Command Processor ~aits on work. When $POSTed or if a CMB is present upon entry, the Command Edit routine is entered via $LINK macro. COMMAND EDIT ROUTINE - HASPCOME Verb Conversion The Command Edit routine optionally converts the command text from the long form to the standard single-character verb form. The data portion of the CMB, up to the first comma (,) or apostrophe (I), is made upper case and nonblank characters are shiftea to the left. The resulting text is compared against arguments in the Verb Conversion Table contained within the routine. Ifa match is found, the corresponding standard form of the command is substituted. Command Edit And Break Out The information in the HASP CMB is moved to the COMMAND field in the PCE work area. The two bytes CMBFLAGS and CMBCONS of the CMB are moved to the COMFLAGS and COMROUTE fields of the PCE work area. These two bytes, ~hen combined with the two succeeding bytes in the PCE, (COMLENGTH and COMCLASS) form the list form of the $WTO used for all responses to the operator from the Command Processor. The COMMAND area of the PCE is primed with blanks, and the buffer is scanned. Characters are ORed (moved with upper casing) into the COMMAND area. Blanks encountered in the CMB will normally be skipped (blank elimination); however, if an apostrophe is encountered, blanks will not be skipped until the next apostrophe. Double apostrophe characters will cause the blank compression status to remain as previously set; however, the second apostrophe of the pair will be eliminated. As each comma is encountered, an entry of the next available character position is made in the COMPNTER area of the PCE. (The first entry is the address of the character after the verb. The second is the address of the second operand, etc.) when the COMPNTER area is full, recording is discontinued. Upon completion of the scan, the CMS is released, the count in $CO~lCT is incremented (POSTing CMB if necessary), the "L=cca" operand (if present and valid) is removed from the command, and the "cc· Command Processor 3 - 47 HASPCOM¥AND PROCESSOR value is placed in the COMROUTE field and the "a" value is converted and placed in the area bits of the CO~CLASS field. The COMNULOP field in the PCE is set to the address of the second character beyond the last solid character (null operand), and the operand pointers are shifted down adjacent to the COMNULOP field. Operand control registers are set as follows: WD = address of the first operand pointer in the COMPNTER field WE = 4 WF = address of the last operand pointer in the COMPNTER field. Selecting The Command Subprocessor The Command Selection Table is used to determine the appropriate command subprocessor which must be entered. Starting with the first element, the Selection Table is scanned for a matching verb. When the verb is located, the first character of the first operand is then used for comparing. If a match is found on the operand or if the table entry contains an X'FF' for operand argument, the table entry for the command is considered "located". If the end of the entries is encountered for the verb or table, the command is considered invalid and the edit routine returns to the main processor with INVALID COMMAND message in the COMMAND area for display_ (See macro for format of the Selection Table entry.) Validating The Source And Enterinq The Subprocessor entry of the Selection Table may have restriction indicators as follows: E~ch COMRMT COMS COMO COMJ = = = = 1 1 1 1 Reject remote sources Reject consoles which are restricted from entering system commands Reject consoles which are restricted from entering device commands Reject consoles which are restricted from entering job commands The selection indicators correspond with the restriction indicators which appear in the COMFLAGS field. The COMFLAGS indicator is previously set from the CMBFLAGS field of the HASP Console Message Buffer, which in turn is set by other HASP processors as follows: 1. CMBFLAGS when set by the remote console processor or remote reader processors will contain the remote indicator. This indicator corresponds to COMRMT bit in the Selection Table. 2. CMBFLAGS when set by the os console interface is the OS authority indicators inverted with the Exclusive or Immediate (XI) instruction. 3 - 48 HASP Logic HASPCO~illND PROCESSOR The restriction indicators are used as the second operand of a Test Under Mask (TM) instruction. If any restriction indicator in the COMFLAGS field corresponds to any restriction indicator in the Selection Table entry, the command is rejected as invalid. If the operand nL=CC" has not been accepted and the source console is an Operating System console, the selection Table entry is examined for the presence of an automatic redirection index. If the offset exists, the COMROUTE field is adjusted with a new "cc" value and the area ID portion of the COMCLASS field is adjusted with a new "a" value (converted) if nL=a" or "L=cca" had not been accepted. A special check is made to ensure that any redirection of command response to an out-of-line area is not for a command that could cause console lockout (area z is forced if required). Register 1 is set with the value in the Selection Table entry COMTOFF field, and control is passed to the CSECT indicated by the selection title entry element via the $XCTL macro. COMMAND SUBPROCESSOR CONTROL SECTIONS The entry routine of each command subprocessor control section will, if applicable, use the offset value in register 1 (set by the edit routine) to determine the relative entry point for the designated subprocessor. Normally the subprocessor is entered directly by the special Command Processor macro: Branch Relative Register on R1 ($BRR R1). However, some control section entry routines will preprocess the operands of the command prior to entering the subprocessor. Each subprocessor performs the desired functions and returns to the main Command Processor for the next command. HASP COMMAND PROCESSOR ORGANIZATION The HASP Command Processor is created by a single assembly with multiple control sections (CSECTs). The main CSECT HASPCOMM is the only portion of the Command Processor that is always part of the HASP load module. It contains all V-type address constants required by the subcommand processors and all "BASE2" service routines. The Command Edit routine HASPCOME receives control from the main processor and determines which command subprocessor CSECT to enter for processing of the command entered. One or more of the various command subprocessor CSECTs are used in processing each HASP operator command. Although the physical CSECTs are organized in accordance with the size of the overlay work area, the logical organizational groupings are as follows: 1. 2. 3. 4. 5. 6. 7. Job Queue Commands Job List Commands Miscellaneous Job Commands Device List Commands System Commands Miscellaneous Display Commands Remote Job Entry Commands. Command Processor 3 - 49 HASP_COMMAND PROCESSOR HASP COMMAND PROCESSOR WORK AREA The HASP Command Processor PCE work area is the primary work area for the processor and is the only area which may be used to save information When a $WAIT is issued by the processor or by any of the wBASE1 w service routines on behalf of the processor. The fields are generally used as described in the following paragraphs. These fields are set by the Command Edit routine and are used to locate the beginning of each of the specified operands in the command currently being processed. COMNULOP contains a pointer to the second character beyond the last operand specified, i.e., points to a nonexistent or null operand. Operand 1 through n pointers are right-adjusted in COMPNTER so that the operand n pointer is adjacent to the null pointer. Command subprocessors use these areas for additional work space after the operand pointers are no longer needed. Examples of other uses are listed as follows: 1. Job queue commands $DN and $DQ place queue scanning control elements in the COMPNTER area. 2. Job list commands place the job range number (j-jj) in the corresponding operand pointer element area. COMFLAGS to COMCLASS This field contains a list form of the $WTO macro. The $WTO is referred to by a single-execute form of the $WTO (located within the HASPCOMM CSECT of the Command Processor) which is used for all operator messages generated by any routine within the processor. The CMBFLAGS and CMBCONS fields of the HASP Console Message Buffer for each command are used to construct the list form of the $WTO and provide correct route codes for replies. The 'three low-order bits of COM FLAGS are restriction indicators and are set to zero prior to each $WTO reply. COMEWORK This field is used as a work area and is used by function routines identified by the macro instructions as follows: Macro Contents Upon Exit From Routine $CFCVE $CFDCTL $DFJDCT $CFJMSG Last character is blank First four characters of requested device name Address of HASP Job Queue Element for requested job Same as $CFCVE This field is aligned on a double-word boundary and is used as a ~o~k a~ea and by £unction ~outines identified by the mac~o inst~uctions as follows: 3 - 50 HASP Logic HASP COMMAND PROCESSOR Macro Contents_Upon Exit From Routine $CFCVE $CFDCTL $CFJMSG Five-character number in EBCDIC with leading blanks Last four characters of requested device name Same as $CFCVE COMMAND This field contains the compressed form of the operator command with trailing blanks at the time each command subprocessor is entered. The command is overlayed by the reply message text for all $WTO messages issued by any Command Processor routine. Some command subprocessors use the area as a scratch area, and in some cases subprocessors use the right end for storage of critical information while message replies are generated in the left end of the area. CODING CONVENTIONS The symbols within the Command Processor conform to the following conventions: 1. All main processor, Edit routine, and PCE work area symbols start with the characters ·CO· 2. All function macro-generated symbols start with ·COF·. 3. All command subprocessors have entry point symbols of the following form: Form Example Command Cvo CON $DN cv cvxx CB CD7D Comments v = the verb of the command o = the first operand character $B device Single-character identifier $D'jobname ' Apostrophe is hexadecimal 70 4. All symbols created for the support of the command will start with characters which identify the entry point (CONxxxx identifies a location which was originally written for the $ON command). Commands with no unique operand character symbol have the character "X" as the third character. (CBX •••• identifies a location which was originally written for the $B device command.) These conventions may be altered in cases where the command identification characters are redefined after original development. 5. The main processor CSECT is HASPCOMM, all other CSECTs are defined via the symbol field of the $COMGRUP macro, specified starting with the characters ·HASPC·. Command Processor 3 - 51 HASP CO~lAND PROCESSOR REGISTER CONVENTIONS The Command Edit routine passes control to the control section (CSECT) which contains the appropriate command subprocessor. When the command group entry routine receives control, the registers will contain the following: Reg Contents RO Rl WA WB WC WD WE WF BASE3 BASEl BASE2 SAVE LINK R15 Unpredictable Entry offset from the command entry offset Unpredictable Unpredictable Unpredictable First operand pointer (zero if no operand) 4 Last operand pointer Base for CSECT HCTDSECT address Beginning of main Command Processor PCE address Unpredictable Unpredictable If more than one command subprocessor appears within the group, register Rl will be set by the $COMGRUP entry routine so that a $BRR Rl will enter the command subprocessor. HASP COMMAND PROCESSOR MACROS To facilitate flexibility in the development and possible modification of the Command Processor, a macro package is included within the assembly source deck. This section is intended to supplement the HASP Command Processor source listings obtained from the HASP generation and assembly process in assisting the user to understand the generated code as specifically used in the current HASP. Each HASP Command Processor macro may be dependent on the definitions contained within the Command Processor source as well as other members of the HASP source library. These macros are catagorized as follows: ORGANIZATIONAL - Macros which provide basic definitions and are closely associated with the organization of the processor. BASE2 SERVICES - Macros which call upon the main Command Processor to perform a service (display a reply). CONDITIONAL IN-LINE FUNCTIONS - Macros which perform the function inline or link to a routine which performs the desired function. RELOCATABILITY AIDS - Macros which assist in keeping the overlay CSECT relocatable around $wAIT or implied $WAIT situations. 3 - 52 HASP Logic HASP COMMAND PROCESSOR The following conventions are used in specifying parameter requirements: "parameter= •• -" - keyword parameter is required "parameter=text -" - the assumed value if the keyword parameter is not specified "parameter " - The parameter is an optional positional parameter "parameter - Required" - the parameter is a required positional parameter. COMMAND PROCESSOR MACRO SU~~RY Opcode Definition ORGANIZATIONAL: $COMWORK $COMGRUP $COMTAB Command Processor Work Area (symbolic definitions) Define Group Of Command Subprocessors Define Command Table Element BASE2 SERVICES: $CRET $CWTO Return To Main Command Processor Write To Operator CONDITIONAL IN-LINE FUNCTIONS: Convert To Binary $CFCVB Convert To EBCDIC $CFCVE Device Control Table Display $CFDCTD Device Control Table Locate $CFDCTL Reply Invalid Command $CFINVC Reply Invalid Operand $CFINVO Find Job·s Device Control Table $CFJDCT Continue Find Job's OCT $CFJDCTC Display JOD Information Message (Conditional) $CFJMSG Scan Job Queue Assistance $CFJSCAN Select A Routine Based On Character $CFSEL Verify Console Control Over Job $CFVQE RELOCATABILITY AIDS: $ARR Add Relative Register $BRR Branch Relative Register $SRR Subtract Relative Register ORGANIZATIONAL MACROS $ COMWORK Command Processor Work Area (symbolic definitions) - This macro adds to the PCEDSECT definitions for fields located in the Command Processor PCE work area. Additional symbolic constants for BASE2 services and some externally defined parameters are defined. Command Processor 3 - 53 HASP. COMMAND PROCESSOR $COMGRUP Define Group Of Command Subprocessors - This macro. defines the Command Processor overlay control s~ction via the $OVERLAY macro. It provides an optional entry point routine which locates the command subprocessor for the commands which belong to the group and sets register Rl to the relative address. (The symbol field must be specified for this macro.) n.positionals - Each positional specifies the command identification characters for the corresponding command subprocessor located within the group. Example: Specification AA DA B C P40 S40 D7D Command subprocessor Entry Point Name CM CDA $DA CB $B device CC $C device CP40 $P CS40 $S CD1D $D'jobname' $AA PRTY=** - Priority of the HASP overlay defined by the macro. DELAY=NO - The subprocessor will be entered via $BRR Rl macro instruction. If "YES" is specified, Rl will contain the appropriate relative entry point address and control will be given to the statement following the macro statement. (More than one positional must be specified if Rl is to be set or the branch is to be executed.) $COMTAB Define Command Table Element - This macro defines an element in the Command Selection Table which is used by the Command Edit routine for identifying legal commands, eliminating unauthorized input sources, and entering the correct command group CSECT. verb. - Required - command identification character(s} corresponding to the $COMGRUP positional parameter specification for the command. No two $COMTAB macro statements may specify the same identification character string. All macro statements creating entries for the same command verb will appear in consecutive statements with the statement which specifies a single identification character last. group - Required - Exact characters used in the specification in the symbol field of the appropriate $COMGRUP macro statement. REJECT= - Command source rejection mask. One or more of the following symbols may be specified as follows: 3 - 54 HASP Logic HASP_COMMAND PROCESSOR "COMO" - "COMJ" - "COMRMT" "COMS" reject command reject command not authorized reject command not authorized reject command not authorized if entered from, a remote if entered from a console for system control if entered from a console for device control if entered from a console for job control Rejection of either a remote or a console not authorized for system appears as follows: " REJECT=COMRMT+COMS" REDIR=O - Response to commands entered via operating System Console are not to be automatically redirected. If the entry console is an Operating System console and values 1-15 are specified, the appropriate entry in the apparent source console redirect response table is used to redirect responses. SELECTION TABLE ELEMENT (OCON) eOMTOFF COMTFL eOMTVB Symbol Offset Length Description (OeON) 0 2 Overlay constant used to identify the command subprocessor control section. eOMTOFF 2 1 Offset in the command subprocessor control section of "where to go" constant. COMTFL 3 1 Redirection index and restriction flags. 0000 xxxx - No automatic redirection of response. nnnn xxxx - n=1-15 index in the Redirect Response Table for the console Command Processor 3 - 55 HASP CO~~ND PROCESSOR of "apparent entry". xxx x 1 ••• - COMRMT - Reject command if 'from remote work station. xxxx .1 .• - COMJ - Reject command if source not authorized for job control. xxx x •• 1. - COMO - Reject command if source not authorized for device control. xxxx ••• 1 - COMS - Reject command if source not authorized for system control. COMTVB 2 4 Command verb plus additional qualifier: 1. First character of first operand. 2. X'FY' indicator signifies that if previous entries for the verb resulted in a "no match," use this one. Note: Although the Edit routine allows entry to the command subprocessor each command subprocessor may reject the command due to restricted operands. BASE2 SERVICES $CRET Return To Main Command Processor MSG= - Address of the message to be moved to COMMAND area for display. (L=operand if a non-register form is required.) "MSG=OK" indicates that the main processor is to display the OK message. L= - Value representing the length of the message that is to be moved or has already been moved. $CWTO Write To Operator Registers Used,- RO, R1, WA, LINK, R15 MSG= - Address of the message to be moved to CO~~ND area and displayed. (If this operand is specified, a nonregister form of the ••• L=operand must be specified.) L=** - Value representing the length of the message that is to be moved or has already been moved. CONDITIONAL IN-LINE FUNCTIONS 3 - 56 HASP Logic HASP_COMMAND PROCESSOR The HASP Command Processor (as distributed) provides the ability for the author of the command subprocessor to specify whether or not the code which performs the function is in-line or out-of-line. If an out-ofline routine is used, the name and location of the subroutine must be defined. This is a-ccomplished with parameters standard for all function macro instructions (with the exception of $CFJSCAN) as follows: 1. TYPE=CALL - The macro statement is not a definition form of the macro. For "TYPE=DEF", the macro statement defines the subroutine form of the function and return linkage must be provided. 2. SYMBOL=address - The address of the "TYPE=DEF" version of the macro instruction. This indicates that only linkage to the "TYPE=DEF" version is to be provided. If neither "TYPE=DEF" or "SYMBOL=" parameters are specified, the code will be generated in-line with no return linkage. $CFCVB Convert To Binary - This macro converts the numeric portion of a command operand to one or two numeric values. Registers Used_- RO, R1, LINK, R15 RO - contains the last number converted R1 - contains the next to last number converted (last number if the only one or if the last is smaller than the previous). POINTER=(Rl) - Address of the COMPNTER field which addresses the operand containing one or more numerical values separated by a dash (-). NUM=2 - Returns two vall1es. NUM=l - One value is sufficient (Rl will be unpredictable on return>. NOK=** - Address of the error exit routine if the operand does not contain a number or if the number is too large. $CFCVE Convert To EBCDIC - This macro converts the number in register RO to printable EBCDIC and sets the five resulting digits in the first five characters of the PCE area COMD~ORK. Registers Used - RO, LINK VALUE=(RO).- The positive binary half-word value to convert to EBCDIC. If the register form is not used, the value is contained within the addressed half word. Command Processor 3 - 57 HASP COMMAND PROCESSOR $CFDCTD Device Control Table Display - This macro displays the device name, unit address, and status of the DCT requested. Registers Used.- RO, Rl, WA, LINK. R15 DCT=(Rl} - Address of the DCT to be displayed. $CFDCTL Device Control Table Locate - This macro converts the abbreviated form of the device name to the long form (if abbreviated form is specified) and searches the DCT chain for a matching device. Registers Used_- RO, Rl, R15, LINK Rl - contains the address of the DCT found or zero if no DCT found. POINTER =(Rl) - Address of the COMPNTER field which addresses the operand containing the device name (abbreviated). $CFINVC Reply Invalid Command - This macro returns to the main Command Processor and causes the display of "INVALID COftllMAND" • $CFINVO Reply Invalid Operand - This macro moves eight characters, starting with the first character of the "current" operand to the Command area and returns to the main Command Processor, causing the display of "operand INVALID OPERAND". OPERAND=(R1) - The address of the operand to display. $DFJDCT Find Job's Device Control Table - This macro searches the DCT chain for an active printer, punch, or reader DCT which is assigned to a processor whose PCE contains a pointer to the HASP Job Queue Entry belonging to the desired job. If the device is not found, exit will be to the instruction immediately following the $CFJDCT statement (in-line code version); otherwise, exit will be to that location plus four. Registers Used - Rl, LINK, R15 JOBQE=(Rl)_- Address of the HASP Job Queue Entry for the desired job. - Name to be used by a $DFJDCTC macro to continue searching for additional devices. CONT~ $DFJDCTC 3 - 58 Continue Find Job·s Device Control Table - This macro enters the named $DFJDCT macro expanded routine for the continuation of the scan of DCTs operating on a named HASP Logic HASP COMMAND PROCESSOR job. Registers and work areas must be the same as they were previously when entering the $DFJDCT rout'ine. Exits and registers are defined under $DFJDCT. SYMBOL=** - Address of the continue entry in the $DFJDCT macro-expanded routine (defined using the com'= parameter) • $CFJMSG Display Job Information Message - This macro sets into the COMMAND area of the PCE the information required for the Job Information Message and displays the message. Registers Used - RO, Rl, WA, LINK, R15 JOBQE=(Rl)_- Address of the HASP Job Queue Entry for the desired job. JDCT = Address of the $CFJDCT TYPE=DEF macro, which may be used to locate the job's DCT. Register form is prohibited. CVE= - Address of the $CFCVE TYPE=DEF macro, which may be used to convert numeric information to EBCDIC. Register form is prohibited. JOB= - May be ignored by the macro; however, if specified as "JOB=SET", the text "JOBj" is assumed (by the expanded routine) to have been set in the COMMAND area for the desired job. OPT= - If specified, causes the message to be displayed only if the jOb is active (OPT=A) or queued (OPT=Q>, and exits to the next instruction. If job not displayed, exit will be to the next instruction plus four bytes. $CFJSCAN Scan Job Queue Assistance - This macro is used to assist in scanning the job queue. As each entry is located the user's Process routine is entered. The user examines the entry, performs the function desired on the entry, and returns to the symbol specified by the "NEXT=" operand. When the end of the queue is encountered, control is given to the instruction following the macro instruction. An optional feature of the macro is to allow the Process routine an "IGNORE" entry to the generated code to indicate that the current job entry is not acceptable to the Process routine. If the "IGNORE=" option is specified, the corresponding "EMPTY=" option is required. Register 1 is the scan register and is assumed to be unaltered by the user's Process routine. The "TYPE=DEF" option is not permitted for this macro. Registers Used_- Rl, BASE2 Rl - scan register Command Processor 3 - 59 HASP COMMAND PROCESSOR BASE2 - found/not found switch (in addition to processor Dase). PROCESS=** - Address of the user's Job Queue Element Processing routine. Register form is prohibited. IGNORE= - Symbol used to define the entry where the scan will continue ~hen the current job entry is not of the desired type. NEXT=** - Symbol to be used to define the entry where scan will continue when the current job entry is of the desired type. EMPTY= - Name of the user exit routine to be entered when the job queue is found empty of jobs of the desired type. Register form i3 prohibited. $CFSEL Select A Routine Based On Character - This macro matches the designated input character against a list of arguments and transfers control to the routine designated by the corresponding address. If no match is found, the next sequential instruction is entered. Registers Used_ - Rl, LINK, R15 n positionals of form: (character, address) - Each positional "character" subparameter specifies an argument. 'l'he corresponding address subparameter indicates the address of the routine to be entered if the character matches the argument. Register form is prohibited. OPERAND=(Rl} - Address of the designated input character to be examined. $CFVQE Verify Console Control Over Job - This macro tests the COMFLAGS field of the PCE to determine if the input source is a remote. If the source is a remote, the "Not OK" routine will be entered unless either the print or punch route codes for the indicated job specify the remote. Otherwise, the OK routine will be entered. Registers Used_- Rl, LINK JOBQE=(Rl}_- Address of the HASP Job Queue Entry for the desired job. OK= - Address of the routine to be entered if the console has control over the job. The address may be the symbolic register containing the address if specified as ·OK=(register,BCR)· or ·OK=(relative register,$BRR}. 3 - 60 HASP Logic HASP CO~lAND PROCESSOR NOK= - Address of the routine to be entered if the console does not have control over the job. The address may be the symoolic register containing the address if specified as ·~OK=(register,BCR)· or wNOK=(relative register,$BRR). Either ·OK=w or wNOK=R parameters must be specified. RELOCATABILITY AIDS $ARR Add Relative Register - This macro instruction is used in conjunction with $SRR to restore the specified register to refer to the true address of relocated information. Register - Required - Symbolic register containing the address to made true. $BRR Branch Relative Register - This macro instruction is used in conjunction with $COMGRUP to enter a subprocessor routine using the offset provided by the $COMGRUP routine. Condition - Necessary condition for branch. If this parameter is omitted, no comma should be written to signify its omission. ·Condition codeR may be specified by the character strings: E, NE, fl, L, NH, NL, Z, NZ, P, M, NP, NM, 0 or NO. Register - Required - Symbolic register containing the offset. $SRR Subtract Relative Register - This macro instruction is used to make an address pointer relative for possible relocation before next referral to the information contained at the address. Register - Required - Symbolic register containing the address to be made relative. Command Processor 3 - 61 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 HASP CHECKPOINT PROCESSOR Page of GY27-7255-O Revised May 28, 1975 By TNL SN25-0122 This processor writes on disk the information necessary to effect a subsequent restart of the system. It writes the information at a predefined time increment and at the completion of each stage of each job. The first entry into the Checkpoint Processor is to a section that initializes the processor. This section issues a $GETUNIT macro instruction to obtain a OCT for a disk and completes this OCT by inserting the Event Wait Field address, track to be written, and the buffer address. Some miscellaneous checkpoint variables of the information to be checkpointed describe the following: • Status of the system. • Job queue which contains the status of each job in the system. • Job output table (JOT) which allows warm start for jobs printed and punched output. • Job information table (JIT) which contains additional job information. The job queue and the JIT reside within the checkpoint area, but the miscellaneous variables and the JOT must be moved into this area. The miscellaneous checkpoint variables are moved into the checkpoint area followed by the JOT. The processor then determines whether the JIT and/or the JOT need to be checkpointed and sets up the CCW chain accordingly. A $EXCP is issued to write the necessary records and a $WAIT on this I/O is initiated. Next the checkpoint time interval is reset and the previous I/O is checked for errors. If no errors exist, the processor waits for job movement or for the time interval to expire. If errors do exist, a message is issued to the operator and the processor is permanently waited. Checkpoint Processor 3 - 63 3 - 64 HASP Logic HASP ASYNCHRO~OUS INPUT/OUTPUT PROCESSOR Since the completions of all clASP I/O operations are signaled asynchronously with HASP operation via lOS channel-end appendages, these completions must be queued by the appendage until all HASP processors can be synchronized to receive the notification. The purpose of the Asynchronous Input/Output Processor ($ASYNC) is to, at noninterrupt time, notify all processors of their I/O completions which were indicated by the as I/O supervisor at interrupt time. The buffers (and respective lOBs) associated with I/O channel ends are chained, by the HASP channel-end appendages, for later processing by $ASYNC. In addition to the post of the HASP task by lOS on any I/O completion, the channel-end appendages also $POST the Asynchronous Input/Output Processor to initiate its processing when the HASP task receives control. When $ASYNC receives control, it dequeues the first buffer from its chain of work (operating disaoled, for this operation only, since its chain is updated at interrupt time). The master I/O count in the HASP Control Table (HCT) is reduced by one and catastrophic error code EOl is indicated if it becomes negative. The I/O completion code is moved from the OS lOB to a buffer control field. The Device Control Table (OCT) entry associated with this buffer is located a~d the active I/O count for the device is reduced by one. catastrophic error code AOl is indicated if this count becomes negative. Next the user's EWF address is extracted from the buffer and interrogated, and action is taken according to the following algorithm: EWF = 0 User does not ~ant notification of completion of I/O operation (always a write). The buffer will be returned to the HASP buffer pool by $ASYNC. EWF > 0 $POST the I/O oit in the EWF specified and take no further action. EWF < 0 Enter a user-provided routine at the address specified by the absolute value of the EWF field. Addressability for the processor routine is established and the address given is entered via the Branch and Link instruction with the buffer address in register Rl. No further action is taken upon return. After performing the indicated action, $ASYNC returns to dequeue the next buffer from its chain and the above procedure is repeated. When the end of the chain is reached, $ASYNC enters the $W~IT state until additional I/O completions occur. $ASYNC also performs, under the HASP task, certain functions for locally attached card readers, that were requested at interrupt time by the H~SP attention exit routine (see description under H~SP Initialization SVC). Such a request is recognized if the $ASYNC work chain pointer is negative. When this occurs, all local reader OCTs are scanned. If the UCB pointed to by a OCT has been flagged for attention by the attention exit, the DCT's HOLD bit is cleared and the Dispatcher's Event Asynchronous I/O Processor 3 - 65 HASP ASYNCHRONOUS INPUT/OUTPUT PROCESSOR Completion Field is $POSTed to indicate to other processors that a.unit is available. 3 - 66 HASP Logic HASP TI~ER PROCESSOR The function of this processor is to reset the OS interval timer after a timer interrupt has occurred. This processor calls the IPOSTIT and ISETINT subroutines in the $STIMER/$TTIMER Interval Timer supervisor, which causes the expired TQEs to be posted and the time interval specified in the first TQE in the TQE chain to be set into the os interval timer. The processor then waits for another timer interrupt to occur. ~hen the next timer interrupt is processed, the asynchronous exit routine posts this processor and the above procedure is repeated. Timer Processor 3 - 67 HASP MULTI-LEAVING LINE MANAG£R The function of this processor is to control all line activity with remote terminals. This incluaes line initiation/termination, remote terminal synchronization, line error recovery, and sign-on/sign-off processing. This processor interfaces very closely with the Remote Terminal Access Method. When this processor receives control from the Dispatcher, it first determines whether an I/O operation has completed. If not, it scans each line (via the line Device Control Tables) to check for requested processing. When all processing has been completed, the processor returns control to the dispatcher ($WAITs) until more work becomes available. When a channel end is detected, the channel end routine determines the sequence type of the Channel Command Word chain and branches to the appropriate section to analyze the channel end and initiate any error recovery procedures required. The line Device Control Tables (DCT) are scanned and when one is found to be available, the Line Initiation routine is entered to acquire the DCT, to acquire a TPbuffer, to construct an initial CCW chain, and to initiate I/O activity. A single timer queue element is maintained by the Line Manager to initiate delays in line processing. This facility provides the capability of delaying a null response to a remote terminal and decreases the associated degradation. Various other Timer Queue Elements are maintained by individual line processors to initiate other delays of varying intervals. The code in this processor is assembled conditionally, so only the instructions required to process a given configuration will be generated. MULTI-LEAVING Line Manager 3 - 69 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 HASP TSO SUPPORT PROCESSOR The Time Sharing Option (TSO) of the STATUS and CANCEL Command Processors use the TSO service SVC to make requests to HASP. When entered, the Exit and Support Processor performs the following functions: 1. The processor searches the HASP job queue for the named job setting and appropriate error response information for TSO in the event the job is not found or multiple jobs with the given name are found. If no errors were encounted, processing continues; otherwise, a return to TSO is taken. 2. If the request is to CANCEL the job, the processor ensures that the job is in a preexecution state. If not in a preexecution state, indicates that the job is not found and returns to TSO. Otherwise, the $P job command for the job is simulated. 3. If the request is for STATUS of the job, the processor determines which general queue type the job is in. If the job is in a queue prior to execution, the preexecution indicator is set; if the job is in execution, the execution indicator is set; or if none of the above, the post-execution indicator is set. The HOLD indicator is set if the job is in an operator releasable state. Because of synchronization problems with HASP processors using the HASP job queue, all of the functions required by the HASP TSO STATUS/CANCEL Exit are performed under the HASP task by the HASP TSO Support Processor (entry HASPTSOS). The exit, however, runs under the TSO user task (entry $TSOCOMM). The coordination interface procedures followed by the HASP task and user task routines follow: a. The user task routine copies the request information into a work area and activates the HASP task routine by $POST and OS POST. b. The' HASP task routine performs the functions, fills in the feed back information, and OS POSTs the user task. c. The user task routine moves the feed back information into the callers parameter list and returns. TSO Support Processor 3 - 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 , 1 1 1 1 1 1 1 1 1 1 1 HASP. PRIORITY AGING PROCESSOR The function of the Priority Aging Processor is to regularly increase the priority of a job in such a way that its position in the HASP Job Queue is enhanced with the passage of time. This is accomplished by regularly passing through the HASP Job Queue and incrementing the priority field of all Job Queue Elements whose priority falls between upper and lower limits. These limits, as well as the time interval, are HASPGE~ parameters and can be specified to fit the needs of an installation. When this processor is dispatched it searches through the HASP Job Queue until it encounters a Job Queue Element whose priority field wQUEPRIO w is less than the HASPGEN parameter 'PRIHIGH. For that Job Queue Element and every Job Queue Element after that (until the HASPGEN parameter 'PRILOW is reached), the priority field is incremented by one. The Interval Timer is then reset, and the processor enters a HASP $WAIT until the timer inte~val expires. Since the priority of the Job Queue Element is represented by the four high-order bits of QUEPRIO, adding one to this field has no immediate effect on the priority. After repeating this operation 16 times, however, the actual value of the priority will be increased by one. The value of the time interval is actually 1/16th of the interval implied by the HASPGEN parameter &PRIRATE. This effect tends to smooth out the process of Priority Aging by creating less impact when an interval expires. To minimize CPU utilization, this processor discontinues operation whenever the HASP Job Queue is empty and does not continue until a new job enters the system. Priority Aging Processor 3 - 73 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP INPUT/OUTPUT SERVICES The HASP Input/Output Supervisor ($EXCP) is used to interface all HASP Input/Output requests with the Operating System Input/Output Supervisor. Through the use of $EXCP, the HASP processors can achieve a certain degree of device independence for direct-access devices through the use of the track and sector conversion functions contained within the $EXCP routine. In addition, $EXCP also provides all I/O appendages required by the OS Input/Output Supervisor (lOS) and provides for the posting of I/O completions to each processor. The interface between the HASP Input/Output Supervisor and the using processors is the Device Control Table (OCT), which is passed via the $EXCP macro instruction when I/O is requested. Upon entry to $EXCP, the address of the buffer to be used is ootained from the OCT, and the lOB (appended to the front of every buffer) is initialized. The user's Event Wait Field (EWF) address is moved from the DCT to the buffer and a pointer to the DC'!' is placed in the buffer. If the OCT is a directaccess type, the coded track address from the DCT is used to compute MBBCCHHR. IF the HA5PGEN parameter &RPS is set to YES and if the referenced device supports Rotational Position sensing, the appropriate sector number is computed and stored in the lOB and the first CCW is set to-a Set Sector command. The lOB is now scheduled for I/O through the use of the standard JS Execute Channel Program macro instruction (EXCP), and immediate return is made to the caller. Each I/O request issued by HASP has an I/O appendage list specified which causes the appendages in $EXCP to be entered at various stages of I/O processing. A page fix appendage, entered at EXCP time, fixes one page beginning with the first byte of the lOB. This page fix will not only fix the entire lOB but will also fix the data area and any CCWs within the lOB and/or data area. The appendage returns to IDS with an indication that no additional pages should be fixed since the DCB, DEB, ECB, appendages, and any CCWs which have been constructed in the PCEs will already be fixed. Abnormal and normal channel end appendages are provided to signal the end of the I/O operation. Since these appendages are entered asynchronously with HASP operation, the buffer associated with the completed I/O is scheduled for synchronous HASP processing by either the Asynchronous Input/Output Processor or the MULTI-LEAVING Line Manager Processor (RJE operations only). The HASP task is posted, and immediate return is made to lOS. If the cause of entry to the abnormal channel end appendage is a paper jam on a 3800 printer, the approximate number of pages lost is obtained from the sense bytes and placed in the DCTE for use by the Print/Punch Processor. I/O services 3 - 15 HASP BUFFER SERVICES The Buffer Management routines are responsible for the allocation of the dynamic storage area (buffer pool) of HASP. Fixed-size buffers in this area are allocated and deallocated to HASP processors and routines via the $GETBUF and $FREEBUF macro instructions. The $GETBUF routine consists of two programs which allocate HASP buffers or RJE buffers, respectively. Both programs function identically as follows: The appropriate free buffer pointer is tested and if no buffers are available, control is returned to the caller with the condition code set to zero. If a free buffer is present, the free buffer pointer is updated to point to the next free buffer; or, if this is the last available buffer, the pointer is zeroed. Then, if the debug indicator is on, a buffer validity checking routine is entered to ensure that the Duffer is within the buffer pool. If i t is not in the pool, the catastrophic error routine is entered; otherwise, control is returned to the $GETBUF routine. The condition code is set nonzero and control is returned to the caller with the buffer address in register Rl. The $FREEBUF routine enters the buffer validity checking routine if the debug indicator is on, if the buffer to be freed is inserted back into the appropriate free buffer pool (depending on whether the buffer is a HASP buffer or an RJE buffer), and if the IOBSTART field is updated with the address of the buffer's channel program, IOBCCW1. The HASP Dispatcher's Event Control Field is posted to show that a buffer is available, and control is returned to the caller. Buffer Services 3 - 77 HASP SMF SERVICES The HASP SMF service routines are responsible for obtaining HASP SMF buffers from a free queue and for placing allocated HASP SMF buffers on a busy queue and POSTing the HASPACCT subtask. The SMF Buffering Routine, $GETSMFB, is used to obtain a HASP SMF buffer from the $SMFFREE cell in the RCT. If no buffers are available, register Rl is checked for zero. If zero, the routine returns to the caller. If nonzero, the routine $WAITs for SMF and then loops back to try to obtain a buffer again. Once a buffer is obtained, its address is placed in Rl and then control is returned to the caller. The $QUESkFB routine places a HASP SMF buffer, whose address is in register Rl, on the end of the queue of busy HASP SMF buffers. The busy queue is pointed to by the $SMFBUSY cell in the BCT. Then the HASPACCT subtask is POSTed for work and control is returned to the caller. SMF Services 3 - 19 HASP JOB QUEUE SERVICES Jobs being processed or awaiting processing by a HASP phase are represented in an ordered queue by a Job Queue Element (JQE). The Job Queue Management routines are used by the HASP processors to insert, alter, locate, and remove Job Queue Elements. The queue elements are maintained in priority at all times with the highest priority element at the top of the active chain. There are six Job Queue Element routines which are called by issuing the following macros: $QADD, $QREM, $QGET, $QPUT, $QLOC, and $QSIZ. The Job Queue Elements are arranged in two chains. The active chain contains the Job Queue Elements for all the jobs in the system at a given time. The free chain contains all the queue elements which are not in use. The $QADD routine is called whenever a queue element is to be added to the active queue. If the Checkpoint Processor is waiting for the checkpointed information to be written on the primary SPOOL volume, this routine enters a HASP $WAIT state. Whenever the Checkpoint Processor's I/O is complete, the free queue chain is tested to see if any free queue elements are available. If none are available, control is returned to the caller with a condition code of zero. If a queue element is available, the correct slot within the active queue chain is located by comparing the priority of the element to be added with the priorities of the elements in the active chain. When the priority of the new element is higher than the priority of the element in the active chain, the free Job Queue Element is extracted from the free queue chain and is inserted into the active chain. All the information for the new Job Queue Element is moved from the location pOinted to by register R1 into the new Job Queue Element. Then the HASP Dispatcher's Event Control Field is posted to indicate that a Job Queue Element is available. The Checkpoint Processor's PCE is also posted so that it will be given control to write the updated Job Queue onto the primary SPOOL volume. The condition code is set nonzero, and control is returned to the caller. Upon return, register RO contains the address of the associated Job Information Table entry. The $QREM routine is entered to remove a Job Queue Element from the active chain. It will enter the calling processor into a HASP $WAIT state if the Checkpoint Processor·s I/O is not complete. When the Checkpoint Processor's I/O is complete, the Job Queue Element that is to be removed is located by comparing its job number with the job numbers of the queue elements in the active chain. If an equal comparison is not found, control is returned to the caller with the condition code set to zero. If a match is found, the Job Queue Element is removed from the active chain and added to the top of the free chain by updating all the chain pointers. The Checkpoint Processor's PCE is posted so that it will be given control to checkpoint the Job Queue. Then control is returned to the caller with the condition code set nonzero to indicate that the queue element was successfully removed. The $QGET routine is entered to acquire a Job Queue Element in a specified queue so that the job may be processed. The active queue chain is searched for a Job Queue Entry of the specified type (e.g., execution, output, or purge) that is not in HOLD status and is not presently acquired. If such a job is not present, control is returned to the caller with the condition code set to zero. If an acceptable Job Queue Services 3 - 81 HASP JOB,QUEUE SERVICES queue element is found, the QENTBY bit is turned on in the queue element to show that the element has been acquired, and control is returned to the caller with the condition code set nonzero, register wRl w pointing to the job queue element that was acquired, and register wRO w pointing to the associated Job Information Table entry. Whenever the system is in a drained status, this routine will be crippled so that control will always be returned to the caller with the condition code set to zero (to indicate that no available Joh Queue Elements are present). The $QPUT routine is entered to return a previously acquired Job Queue Element to the active chain, out with a new queue type. It will enter the calling processor into a HASP $WAIT state if the Checkpoint Processor's I/O is not complete. When the Checkpoint Processor's I/O is complete, the job number of the queue element to be returned is compared with the job numbers of the queue elements in the active queue. If the job number is not found, control is returned to the caller with the condition code set to zero. If a match is found, the new queue type is set, the HASP Dispatcher's Event ~ontrol Field is posted to indicate that a Job Queue Element queue is available to be acquired, and the Checkpoint Processor's PCE is posted so that i t will be given control to write the updated job'queue onto the primary SPOOL volume. The Job Queue Element is placed in the queue indicated by register RO upon entry to this routine. The QENTBY hit is set as indicated with the queue type in register RO. The condition code is set nonzero and control is returned to the caller. Upon return, register Rl contains the address of the Job Queue Element just returned, and register RO contains the address of the associated Job Information Table entry. The $QLOC routine is entered to obtain the Job Queue Element address when the job number is known. The job number is compared with the job numbers in the active chain. If a match is not found, control is returned to the caller with the condition code set to zero. If a match is found, the condition code is set nonzero, and control is returned to the caller with register Rl containing the located Job Queue Element's address and register RO containing the associated Job Information Table entry address. The $QSIZ routine is entered to obtain the number of Job Queue Elements in a given queue type and routing. The number of jobs of the specified type (excluding jobs in HOLD status) are counted, and control is returned to the caller with register Rl containing this count. If register Rl is nonzero, the condition code is set nonzero, and if it is zero, the condition code is set to zero. Whenever the system is in a DRAINED status, this routine is crippled so that control is always returned to the caller with register Rl zeroed, and the condition code is set to zero to indicate that no jobs are available in the specified job queue. 3 - 82 HASP Logic HASP UNIT SERVICES The Unit Allocation routines are responsible for the allocation and deallocation of the input/output units which have been assigned to HASP. Device Control Tables (DCTs) are allocated and deallocated to HASP processors and routines via the $GETUNIT and $FREUNIT macro instructions. The $GETUNIT routine scans the Device Control Table (OCT) chain in an attempt to find an available OCT of the requested type. If none are found, control is returned to the caller with the condition code set to zero. If an available DCT of the requested type is found, i t is set "in use w and control is returned to the caller with the condition code set nonzero. The address of the DCT is returned in register Rl. The $FREUNIT routine first examines the Active Buffer Count field of the DCT to see if there are any buffers involved in active I/O with the associated unit. If the Active Buffer Count is nonzero, the processor is placed in a HASP $WAIT state until this count is reduced to zero. When the count is zero, the win use W indication is reset and if the DCT is now available, the HASP Event Control Field is $POSTed to activate other processors that might be waiting to acquire the OCT. If the device has been drained, a message is issued to that effect. Return is then made to the caller. Unit Services 3 - 83 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 HASP TIMER SERVICES The Interval Timer Supervisor is used by the various HASP proGessors to record the passage of a specified period of time and to notify the requesting processor when the interval expires. This routine uses the standard OS timer features (STIMER and TTIMER) but has the additional capability to simultaneously monitor an unlimited number of intervals. All uses of the Interval Timer Supervisor are through the HASP macro instructions $STIMER and $TTIMER. Each user of $STIMER is required to provide a 12-byte (3-word) HASP Timer Queue Element (TQE), passed via parameter register Rl. $STIMER maintains a chain of all active TQEs in ascending order of interval magnitudes, with the shortest requested interval (first TQE) set on the OS STIMER queue (via a normal STIMER macro). When entered with a new interval request, $STIMER cancels the active as timer element with a TTIMER CANCEL and reduces the interval specified in all chained TQEs by the elapsed portion of this interval. The requestor's TQE is then, after converting the requested interval to as timer units (26 usec units), inserted into the appropriate place on the TQE chain using the first word of the TQE as a chain field. The OS timer is now reactivated with the interval in the first TQE in the chain, and return is made to the caller. When the current OS interval elapses, the Asynchronous Exit routine in $STIMER is entered to record the expiration. The asynchronous routine reduces the intervals of all queued TQEs by the size of the just-elapsed interval, posts the Timer Processor, posts the RASP task v and returns to OS. The Timer Processor, when dispatched, will post the appropriate processors and reset the OS timer to the interval specified in the first TQE in the chain by issuing an STIMER macro. HASP processors which have previously set an interval through $STIMER may obtain the time remaining in the interval and optionally cancel this interval through the use of the $TTIMER macro. When entered, $TTIMER cancels the active OS interval and reduces all queued TQE intervals by the elapsed portion of that interval. The requestor's TQE is then located in the queue by comparing the address of the TQE passed by the macro in register Rl to each TQE in the chain. When the correct TQE is found, the remaining time in the interval is loaded in register RO for return to the caller. The use of the CANCEL option on the $TTIMER macro, which is indicated by register Rl containing the complement of the TQE address rather than the true address, causes the TQE to be de queued from the chain. The OS timer is reactivated with the interval from the first TQE on queue, and return is made to the caller. Note that $TTIMER for a TQE which is not active has no effect, and a zero value is returned in register RO as the time remaining. Timer Services 3 - 85 HASP DIRECT-ACCESS STORAGE SERVICES This routine allocates tracks for the SPOOL volumes that were online at IPL time. The track information is stored in the caller's direct-access allocation map, in his JCT or lOT, and is also returned to the caller in register Rl. The track allocation algorithm is designed to reduce seek time as much as possible. The status of each SPOOL volume is recorded and maintained in master track group bit maps. A master map is present for each module (available SPOOL volume). Each bit in the master track group bit map represents a track group. If the bit is on, the track group is available to be allocated, and if the bit is off, the track group has already been allocated. Track group bit maps are also maintained in each JCT or lOT, but the bit definitions are opposite. Thus, if a bit is on 'in the JCT or lOT, the track group has been allocated to the JCT or lOT. Track groups on the SPOOL volumes are allocated whenever the JeT or lOT has not previously acquired any tracks, or whenever all the tracks in the current track group that is allocated to the JCT or lOT have been acquired. If the JCT or lOT has already been allocated to a track group, but all the available tracks in that track group have not been acquired, the next available sequential track in the track group is allocated to the requestor. When this happens, the track information in the JCT or lOT is updated and loaded into register Rl, and control is returned to the caller with the condition code set to one. This track information is recorded in the JCT or lOT in the following format: MTTR, where M is the module number (one byte), and R is the record number (one byte). The JCT or lOT track group bit map is also updated whenever a new track group is acquired. The update consists of ORing in the appropriate bit for the acquired track group in the JCT or lOT track group bit map. When a new track group has to be acquired, seek time is reduced by searching for the nearest track group plus or minus eight track groups from the last-used track group. The last-used track group for each track group bit map is updated each time a $EXCP is issued to the volume. Each track group bit map is searched for an available track group at the last-used track group. Then, each track group bit map is searched for an available track group minus one track group from the last-used track group, then plus one from the last-used track group, and this progression continues until an available track group is found or the plus eight track group is searched. If an available track group is found, the JCT or lOT track information is updated and loaded into register Rl, and control is returned to the caller with the condition code set to one. The JCT or lOT track group bit map is also updated. If an available track group is not found, the operator is notified of the out-of-track condition by the following message: SPOOL VOLUMES ARE FULL Then, control. is returned to the caller with the condition code set to zero, and register Rl zeroed. DASD Services 3 - 81 HASP DIRECT~ACCESS STORAGE SERVICES The Direct-Access Storage Purge Routine frees all of the SPOOL volume tracks that the job has acquired and informs the system that these tracks are available to be reacquired. The track group bit map in the job's Job Control Table or Input/Output Table is DRed into the main track group bit map to return the job's tracks back to the system. Then the track group bit map in the JeT or lOT is zeroed to indicate that this job does not have any tracks allocated to it. The HASP Dispatcher's Event Control Field is posted to show that tracks are available to be acquired, and control is returned to the caller. With the help of subroutine NGMAP, to obtain the number and start of track groups on each SPOOL volume, and subroutine NGBITMAP, to construct from this information a track group map segment, direct-access initialization constructs the master track group as if all available track groups were unallocated. For warm starts, overlay IOVQ will remove from the master map those bits representing track groups allocated to jobs currently in the HASP job queue (except jobs which were reading; they will be purged) and will inform the-operator of the status of each active JQE. During a failure, IOVQ will give the operator a choice between rerunning the job and printing its output. 3 - 88 HASP Logic HASP TRACE SERVICES The Trace Program is a debug facility used in HASP that is completely independent of the OS trace facility. Each time this program is called, it will insert the contents of the general purpose registers into a special Trace Table (assembled into the HASP module) to aid in the determination of HASP problems. The Trace program is called hy any routine or processor in HASP by the insertion of a $TRACE macro instruction. If the HASPGEN parameter 'TRACE is set nonzero, the macro instruction will expand into an instruction that will cause a unique specification program interrupt. All program interrupts are intercepted by the HASP Trace program and the instruction that caused the interrupt is tested to determine if it is the unique instruction inserted by the $TRACE macro instruction. If the interrupt was caused by a true program interrupt, the request is sent to the first level interrupt handler, to be handled in the normal way. Otherwise, a 16-word trace entry is inserted into the HASP Trace Table. After the Trace Table entry has been inserted and the pointers have been updated, the count of the number of times this particular $TRACE macro instruction has been executed is inserted into the first byte of the first word of the trace entry and also into the last half of the $TRACE instruction. All registers are then restored, and return is made by loading the program old PSW, which restores the condition code to its original value before the $TRACE macro instruction was executed. The operator response of "NOTRACE" to HASP's initialization WTOR allows all tracing to be deactivated or allows only selected $TRACE macros to cause entries in the table. With this option, when a $TRACE interrupt occurs, the count field in the $TkACE macro is interrogated. If it is zero (the normal value as assembled), the $TRACE macro is replaced by a NOP so that the interrupt will not occur again from that same location. If the count field is nonzero (accomplished using a HASP REP card), normal tracing and counting are performed for that $TRACE as described above. The symbolic location "$TRACETB" in HASP identifies a 3-word table with the following format; the first word is the address of the last entry that was made in the Trace Table; the second word is the address of the first byte of the Trace Table; and the third word is the address of the last byte of the Trace Table +1. Each 16-word trace entry contains the following information: the first word contains a l-byte count of the number of times this $TRACE macro has been executed and the 3-byte address of the location of this $TRACE macro; following the first word, general purpose registers 0 through 10 and 12 through 15 are stored, in that order. Trace Services 3 - 89 HASP CONSOLE SERVICES HASP Console Services consists of routines throughout the HASP System that are involved with the reception and delivery of messages to and from the operator. Most of these routines are concerned with the handling of the various Console Message Buffer (CMB) queues. Routines that contain significant logic for performing console services are discussed in the following paragraphs, with the exception of $HASPWTO which is discussed earlier in this manual. CONSOLE MESSAGE BUFFER (CMS) QUEUEING ROUTINES Routine Entry Assembly Functions HASPRCC1 HASPRDR Recognize entry of a HASP command card, copy the command into a CMS (acquired from the $FREEQUE queue) setting appropriate routing and entry source information, queue the CMB to the command processor $COMMQUE queue, and repeat the message on an Operating System console via $WTO macro. HASPMCON HASPRTAM Recognize the existence of a remote console message when signaled by routines within the RTAM deblocking routines, read the command using RTAM, copy the command into a CMB (gotten from the $FREEQUE queue) setting appropriate entry source information, queue the CMB to the Command Processor $COMMQUE queue, and repeat the message on an Operating System console via $WTO macro. $MGCRSVC HAS PC ON Recognize HASP commands when entered via the SVC 34 CVTHJES exit interface, copy the command into a CMS (gotten from the $FREEQUE or $WRESERV queue), set appropriate entry source information, and queue the CMB to the Command Processor $COMMQUE. HASPCOMM HASPCOMM Recognize the queueing of HASP commands in the $COMMQUE queue, free the CMS via the $FREEMSG service routine, perform the requested function or cause it to be performed, and make appropriate r~sponses to the console of entry or other console. $~O HASPNUC Receive control when the $WTO macro is executed by a HASP processor and provide an interface with the Console Buffering routine. Console Services 3 - 91 HASP CONSOLE SERVICES $MGCRSVC HAS PC ON Recognize the entry of the short form reply when entered via the SVC 34 CVTHJES exit interface, expand the reply, locate the TCB, and enter the SVC 35 exit routines for job association and logging on the HASP Job Log data set for the job (causing $WRESERV queue to be used if no CMBs in the $FREEQUE queue). $WTOSVC HAS PC ON When entered via the SVC 35 and 36 CVTHJES exit interface recognize messages that are associated with HASP-controlled jobs and cause logging on the HASP Job Log via the Console Buffering routine. HASPCBUF HASPCON Filter out $WTO requests of low level importance based upon values set by the $TCON command, add time stamp and job number as appropriate, set the message in an available CMB, and queue the CMB to the $LOGQUE queue for HASP Job Log data set logging or to the $BUSYQUE queue for display at a HASP remote work station or at Operating System consoles. HASPLOG HASPXEQ Recognize the queueing of a CMB in the $LOGQU~ queue, search the HASP execution PCEs for the one controlling the job associated with the message. Through the use of Execution Processor service routines cause the message to be included in the HASP Job Log for the job, and queue the CMB to the $BUSYQUE queue for display (if required) via the $WQUEBUF subroutine of the Console Buffering routine or free the CMB via the $FREEMSG routine·. A secondary but extremely important function of this routine is to recognize the "JOBj END EXECUTION" message and signal the Execution Processor to terminate execution of the associated job. HASPMCOM HASPRTlUt Recognize the queueing of operator messages for display at remote work stations and either transmit the message to an online MULTI-LEAVING work station console via RTAM, SPOOL the message on the primary SPOOL volume, or discard the message as appropriate freeing the CMS via the $FREEMSG service routine. Messages queued on the SPOOL volume are transmitted to the remote work stations 3 - 92 HASP Logic HASP. CONSOLE SERVICES by the Print Punch Processor between printing of job output. . HASPW'I'O HAS PC ON Recognize the queueing of operator messages for display on Operating System consoles, convert the message into a recognizable Operating System WTO parameter list, issue the SVC 35 to display the message, and either free the CMB via the $FREEMSG service routine, queue the CMB to the $DOMQUE queue, or queue the CMS to the $WCOMRES queue for continuation of Command Processor multiline WTO requests. If a $DOM macro is executed against a message prior to actual queueing to the $DOMQUE, an operating System DOM macro is executed and the CMB is freed. If the end line of a MLWTO is encountered, the $WCOMRES queue is emptied and the CMS is freed. $DOM HASPNUC Receive control when the $DOM macro is executed by a HASP processor, turn off $DOMACT flag in the CMS (addressed by register 1), remove the CMS £rom the $DOMQUE queue, and execute an operating System DOM macro to delete the message. $FREEMSG HASPNUC When entered, place the CMS in the $WRESERV queue (if queue is empty) or in the $FREEQUE queue. $WTOSVC2 BASPCON When entered via the SVC35 (second exit) CVTHJES exit interface, edit the operating system's normal WQE control block, adding time stamp and job number as appropriate. HASPMCON - HASP REMOTE CONSOLE PROCESSOR This processor processes all console messages to and from remote terminals. The routine optionally saves messages to remotes which are not signed-on MULTI-LEAVING terminals for later printing on the remote terminal printer. The processor receives control whenever a Console Message Buffer (CMB) is placed in the $BUSYQUE queue for a remote terminal or whenever a console message is received from a remote terminal. Processing is as follows: 1. The processor first examines the output queue of messages and upon encountering a message queued for a remote terminal examines the current status of the terminal. If the terminal is not an Console Services 3 - 93 HASP CONSOLE SERVICES active BSC MULTI-LEAVING terminal, the eMB containing the message is freed, via the $FREEMSG Service routine Cif $SPOLMSG=O). 2. If the message is to be written to a remote console device, a Remote Console Device Control Table is constructed for the specific remote terminal, the DCT is chained onto the other OCTs for this remote, the OCT is OPENed by calling the Remote Terminal Access Method, all queued messages are written to the terminal, and the DCT is CLOSED and unchained. 3. If the message to be written is for a currently inactive or for a non-MULTI-LEAVING active remote and if H~SP operator message SPOOLing space is specified ($SPOLMSG ~ 0), an attempt to save the message on the primary SPOOL volume for later printing at the remote by printer support routines is made. SPOOLing of messages is accomplished as follows: a. The remote Message SPOOLING Queue ($MSPOOLQ) element for the designated remote is examined for a queue header entry of zero. If zero, a record is allocated from the Message Allocation ($MSALLOC) Table, and' the corresponding MTTR for the record is placed in both head~r and trailer entries for the remote. (Nonzero but equal header and trailer entries signify that the queue exists: however, since the last record of each remote element is always empty, no data is currently queued). b. A record is allocated from the $MSALLOC Table to represent the new end of message queue, and the associated MTTR is placed in the chain field of the current HASP buffer. The HASP buffer is then filled with the operator message, along with any more messages currently queued for the same remote, and is written on the primary SPOOL volume at the record location designated by the trailer MTTR for the remote. As each CMB is emptied, it is freed via the $FREEMSG service routine. c. Upon completion of I/O, the buffer chain field replaces the trailer MTTR, indicating that the queue is not empty and providing chaining information. d. The above process is repeated for additional CMBs, as required to empty the $BUSYQUE queue of messages for the remote. In the process of allocating message records the $MSALLOC Table bit map is used. Each bit in the map, when on, represents a free record on the primary SPOOL volume. Allocation consists of finding the highest numbered bit that is on, turning the bit off, and converting to a corresponding MTTR. When all bits in the map are off, indicating that no records are available, all CMBs with messages to be SPOOLed are discarded. 3 - 94 HASP Logic HASP CONSOLE SERVICES 4. If an input message is to be read, two CMBs are gotten from the $FREEQUE queue, a Remote Console Device Control Table 'is constructed, and the Remote Terminal Access Method is utilized to GEr the message. The message is written to the local console, using one CMB and $WTO macro, and then is queued for the Command Processor $CO~JQUE, using the other CMB. $MGCRSVC - SVC 34 Exit Routine The Operating System SVc 34 module IGC0403D enters the HASP SVC 34 Exit routine at entry point $MGCRSVC. When entered the SVC 34 Exit routine performs the following functions: 1. A scan of the command text portion of the SVC 34 parameter list is performed. The scan locates the beginning and length of solid text as well as performing a backspace edit (the character defined by the HASPGEN parameter $BSPACE and the preceeding character are eliminated from the text). If the resulting command becomes all blanks the return to the Operating System indicates the command to be a HASP command. 2. The resulting command is examined for the presence of the numeric (short) form of the Reply to Information Request command. If the numeric form is recognized the following is performed: 3. a. The short form is expanded to R XX, 'text' format. b. The Operator Reply Element (ORE) chain is checked for a valid reply number. If the number is in error, the resulting command is passed to the Operating System for action. c. Job association is attempted for the Task Control Block (TCB) associated with the ORE for the reply. If no association is made the command is given to the Operating System. d. e. A check for the availability of a Console Message Buffer (CMB) is made on the $FREEQUE queue. If no CMB is available, an attempt to move the reserved buffer from $WRESERV queue to the $FREEQUE is made. If this fails, an error return is taken to the Operating System. The SVC 35 interface and Console Buffering routines are used to move the expanded form of the reply into the free CMS, adding time stamp and job number. The eMS is queued to the Log Processor for logging on the HASP Job Log. Each message logged will be tagged with the character wR w in front of the time stamp. f. The command is given to the Operating System for processing. A check is made for the presence of a HASP command ("$" first character). If the command is not a HASP command, it is given to Console Services 3 - 95 HASP CONSOLE SERVICES the Operating System for processing; otherwise, the following is performed: a. A check for an available CMB is made as with replies. If no CMB is available, an error exit to the Operating System is taken. The count in $COMMCT is reduced by 1, and if the result is zero, no CMB available situation is simulated. b. The command text is copied into the available CMS and the CMS is placed on the $COMMQUE queue. The Command Processor is $POSTed for work, and the HASP task ECB is POSTed. Returns to the Operating System are as follows: R15 = 0 - Command is a HASP command. R15 = 4 - Command is an Operating System command. R15 = 8 Command is a HASP command with no CMS available. $WTO.- HASP Write TO operator. Service Routine The $WTO routine is entered from the various HASP processors when the expansion of the $WTO macro is executed. Upon entry, the routine disables the CPU and checks for an available Console Message Buffer (CMB). Normally, if no CMBs are available on the $FREEQUE, a $WAIT macro is issued enabling the CPU for interrupts. If, however, the request is for a UCMID-specified console (restricted to the Command Processor), the $WCOMRES queue is checked for an available CMB. If no CMBs are available and the caller desires not to wait, a return with condition code set to zero and CPU enabled for interrupts is taken. Tf CMBs exist, a check is made to ensure that the caller did not make a $DOMACT request and the Console Buffering routine is called to fill in the CMB and queue the message. On return, the CPU is enabled, and condition codes are set to a nonzero condition before returning to the caller. If $DOMACT is requested, the count in $COMMCT is reduced by 1 and is checked against a minimum value. If the resulting count is not below the minimum, normal processing occurs; otherwise, actions to indicate that no CMBs exist are performed. 3 - 96 HASP Logic HASP. CONSOLE SERVICES $WTOSVC - HASP SVC 35 And.SVC 36 Exit Routine operating System SVC 35 module IEAVVWTO and SVC 36 module IGC0303F enter the HASP SVC 35 and SVC 36 Exit routine. When entered, the routine performs the following functions: 1. The type of entry is determined, and flags are set so that SVC 36 entries in the HASP Job Log will be identified by the character ftLft in front of the time stamp and all others will have a blank character. 2. Multiline WTOs (MLWTOs) are examined for the connect 10 of x'FFFFFF', and if encountered, control is returned to the Operating System with the deletion return code. Otherwise, the number of lines to display is determined (one assumed for all non-MLWTO entries). 3. Line one of the request is checked to determine possible deletion. If the message is to be deleted, control is returned to the operating System with the deletion return code. Otherwise, the job association routine is entered; this routine attempts to associate the message with a HASP-controlled job, either through the TCB or job name in the text of the message. If no association is made, control is returned to the operating System for normal processing. 4. A check is made to ensure that Console Message Buffers (CMS) are available. This is done by disabling the CPU and checking the $FREEQUE queue. If no CMBs are available, a check is made to determine if the task is in a WAITabie status. If i t is not WAITable, control is passed to the operating System and the message will be omitted from the HASP Job Log. Otherwise, an ENQ enqueues on a ftqname· of ·SYSHASP ft and ftrnameft of ftCMS ft • When the Operating System gives control to the task, a check is again made to see if C~ills are available; if not, a WAIT macro is issued (a wait element is filled out for HASP to POST). When POSTed the routine loops back to the second CMB check. If CMBs are available, the enqueue is released by the DEQ macro and the entire function is repeated~ 5. When CMBs are available, the Console Buffering Routine is entered to copy the message into a CMS (adding time stamp and job number) and to queue the CMB to the $LOGQUE queue for inclusion in the HASP Job Log for the job. On return, the HASP task is POSTed, the CPU is enabled, and a check is ~ade for additional lines (MLWTO). If there are more lines, steps 4 and 5 are repeated until all requested lines are queued to the $LOGQUE queue. Otherwise, control is returned to the Operating system for processing. This interface with the Operating System uses registers of the calling modules during enabled state processing. Register usage in the enabled state is as follows: Console Services 3 - 97 HASP CONSOLE SERVICES 0 1 2 3 4 5 6 7 ~WTOSVC2 = = = = = = = = UCMID/CONNECT ID/WORK PARAMETER LIST/WORK END OF MESSAGE POINTER CVT ADDRESS TCB ADDRESS NOT USED NUMBER OF LINES LENGTH OF MESSAGE 8 9 10 11 12 13 14 15 = START OF MESSAGE = NOT USED = SAVE FOR REG 0 = NOT USED = NOT USED = SAVE FOR REG 1 = RETURN AND FLAGS = BASE - HASP SVC 35 EXIT 2.ROUTINE The Operating System SVC 35 modules IEAVVWTO and IEAVMWTO enter the HASP SVC 35 Exit 2 Routine. When entered, the routine performs the following functions: 1. Edits the Operating system's WQE for single line messages that are not identified as HASP messages (TCB is not the HASP communications task), aligning the start of text lines. 2. Inserts time stamp to all edited messages. 3. Inserts the HASP job number if the message is associated with a HASP-controlled job. HASPCBUF - CONSOLE BUFFERING ROUTINE The Console Buffering Routine fills out an available Console Message Buffer (CMB) with control and message text information for inclusion in the HASP Job Log and/or display at a HASP work station or an Operating System Console. It is entered from the $WTO Service routine or the SVC 35 and 36 Exit routine (indirectly from SVC 34 Exit routine through the SVC 35 Exit routine). When entered the routine performs as follows: 1. If the console type is not a remote, Operating System UCMID log only, or logical routing with $DOMACT flag set, the logical routing and list levels are compared with elements in the WCNLSTBL Table in an attempt to eliminate the message. The logical console is left included if the list level of the message is higher than the corresponding list level in the logical console entry in the table. If the resulting logical consoles indicate no output is required and job numbering is not desired the $WTO request is ignored and the routine returns to the caller. (The WCNLSTBL Table is maintained by the operator via the $TCON command). 2. The first CMB in the $FREEQUE queue is addressed. The HASP time stamp is placed into the CMB (branch entry to the Operating System Time routine is used.> Identifications are inserted into the first text character as setup by callers: $ - 3 - 98 HASP $WTO HASP Logic R - SVC 34 Exit HASP CONSOLE SERVICES L - SVC 36 Exit IS - svc 35 Exit 3. If job number is desired, the job number is moved into the CMB from the HASP Job Control Table (JCT). (Register 10 must address the JCT at the time of execution of the $WTO if job numbering is requested.) 4. rhe message text is moved into the CMB and if $DOMACT is requested the return save area is set so that Rl will address the CMB upon return to caller. 5. The CMB is removed from the $FREEQUE queue and the eMB is queued to the $LOGQUE queue (if job or log only is requested) or to the $BUSYQU~ queue (otherwise). Control is returned to the caller. HASPLOG - HASP LOG PROCESSOR On initial entry from the HASP Dispatcher the Log Processor enters the overlay CSECT HASPXLOG via the $LINK macro. The routine examines the $LOGQUE queue for the existence of Console Message Buffers (CMB) containing messages for a HASP controlled job's HASP Job Log. If no CMBs are queued the processor $WAITs for work. The Console Buffering Routine causes the Log Processor to be $POSTed for work whenever a CMB is queued to the $LOGQUE queue. When entered with work to do the Log Processor performs the following functions: 1. The processor searches the Execution Processor Control Elements (PCEs) for a processor that is currently controlling the job identified in the message job number field. If no PCE is found, logging functions are skipped (steps 2 and 3). 2. If the job allows HASP job logging, the jobs Data Definition Block (DDB) for the log is located and preparations for writing are made as required: a. A buffer is assigned to the DDB if not already available. b. A title is moved into the buffer if not already done for the job. c. The Execution Processor is instructed to write the buffer if full or if the buffer is to be truncated. 3. The message is moved to the buffer. If the message is a HASP ftJOB j END EXECUTION ft message, the DDB is flagged for termination and the Execution Processor is notified allowing termination of the execution phase for the job. 4. The CMB is removed from the $LOGQUE queue and placed in the $BUSYQUE queue if logical consoles identifications are present; otherwise, the CMB is freed via the $FREEMSG routine. Control is returned to the beginning of the processor. Console Services 3 - 99 HASP CONSOLE SERVICES $HASPWTO - HASP Communications Subtask Described earlier in this manual. $DOM HASP Delete Operator_Message service Routine The $DOM routine is entered by a processor that has previously executed a $WTO ~ith the class parameter $DOMACT specified. Register Rl contains the address of the Console Message Buffer (CMB) that contains the message displayed by the $WTO and, after issuance of the Operating System WTD SVC, contains the DOM 10 for an Operating System DOM SVC. When entered via execution of a $DOM macro (register Rl contains address of the CMB) the $DOM routine performs the following functions: 1. The $DOMACT flag in the CMB is turned off. 2. The count in $COMMCT is incremented, and if the count goes from a minimum value to one above minimum, CMS is $POSTed. 3. The $DOMQUE queue is searched for the CMS addressed by register Rl on entry to the routine. If found, the DOM ID is removed, an Operating System DOM svc is issued for the message, and the CMB is freed via the $FREEMSG routine. Control is returned to the caller. (If $DOMQUE queue does not contain the CMS the HASP Communication subtask will issue the DOM.) $FREEMSG - HASP FREE CONSOLE MESSAGE BUFFER SERVICE ROUTINE The HASP CPU in a a CMB is performs 3 - Free Console Buffer (CMB) service routine is entered (with the disabled state) from various console service routines whenever to be made available. When entered, the $FREEMSG routine the following functions: 1. The $WRESERV queue is tested for the presence of a reserved CMS. If there is no reserved CMS, the CMB to be freed is placed in that queue and control is returned to the caller with condition codes set nonzero. 2. The CMB is LIFO queued to the $FREEQUE, and a test is made to see if any routine could be waiting to use a CMS. If not, control is returned to the caller with condition codes set nonzero. If waiting HASP processors are possible, a general $POST for CMB is executed and control is returned to the caller with condition code set to zero. 3. If a task is waiting via the $WTOSVC routine, the waiting ECS is validated and POSTed using the branch entry to the Operating System Post routine (entry through CVTOPT01). Control is return to step 2 above (no task can be waiting now). 100 HASP Logic HASP ERROR SERVICES DISASTROUS ERROR HANDLER This routine is entered from a processor whenever a critical SPOOL disk error is detected. The operator is notified of the error, and processing continues, although the operator should re-IPL the system with a cold start as soon as possible. When this routine is entered, a $WTO is issued to notify the operator of the error, and control is returned to the calling processor. The message to the operator is as follows: DISASTROUS hRROR - COLD START SYSTBM ASAP CATASTROPHIC ERROR HANDLER This routine is entered whenever an unrecoverable error is discovered by HASP. The operator is informed of the error and given an error code, and the system enters a 1-instruction enabled loop. The error codes and their meanings are listed in the HASP Operator's Guide, Appendix A. When this routine is entered, register RO contains the address of a 4byte field containing the 3-character error code left-justified. The 4byte error code field is moved into the operator message. This message is then written on the operator's console using an ordinary OS WTO macro: $ HASP SYSTEM CATASTROPHIC ERROR. CODE = xxx After this message is typed a 1-instruction loop is executed. If HASP is abended by OS for any reason, a STAE exit (previously set by HASP Initialization) is entered. This exit in turn calls the Catastrophic Error Handler which issues the above message with the 4-byte code wABNDw. The registers at this time are as documented (in appropriate OS/VS2 documentation) for entry to STAE exits, except that register RO is moved to register R2. INPUT/OUTPUT ERROR LOGGING This routine is entered whenever an unrecoverable input/output error occurs on a HASP direct-access intermediate storage device, or whenever line errors occur which may require the attention of the operator. A message is generated describing the error, and this message is routed to the operator via the operator's console. The routine then returns without taking any further action. When this routine is entered, register R1 contains the address of the Input/Output Block (lOB) which is associated with the input/output operation in error. The channel status, channel command code, sense information, track address, and line status are retrieved from the lOB and are formatted; the unit address and volume serial are obtained from the Unit Control Block (UCB); the device name (if applicable) is Error Services 3 - 101 HASP ERROR SERVICES acquired from the Device Control Table (OCT); and the message is written to the operator's console. The formats of the two messages are described in the HASP Operator's Guide, Appendix A. 3 - 102 HASP Logic HASP OVERLAY SERVICES These routines, together with the Overlay Roll Processor, respond to calls from other HASP processors when the macros. $LINK, $LOAO; $XCTL, $RETUR~, and $OELETE are executed in HASP coding. This enables certain executable and table portions of HASP coding (assembly control sections created by use of the $OVERLAY macro) to be brought into main storage from their normal direct-access residence for use during HASP execution. Major objectives of Overlay Service and Roll logic are: to allow multiple processors to use a single copy of the same overlay routine simultaneously and to prevent any system lockout due to $WAITs in overlay routine coding. The overlay data set is constructed as part of HASP installation by the HASP overlay Build utility and is referred to by the DDname OLAYLIB in the job which invokes HASP. All Overlay Service and Roll Processor coding is located in module HASPNUC. Service entry points are addressable by register BASEl and are referenced by macro expansions through the HASP Communication Table. $LINK SERVICE On entry, register R15 contains the address of the next instruction after $LINK, and register LINK contains the called routine's OCON. An OCON is an index into the HASP Ov~rlay Table, which is the control section HASPOTAB created by the HASP Overlay Build utility. HASPOTAB's individual entries are defined in OTBDSECT, created by the $OTB macro. The calling processor's registers RO-WC are saved in the caller's PCE. Overlay service base address is established in register WC. Register R15 is saved in PCEORTRN. R15 is set to the relative displacement of the called routine entry point from the beginning of an Overlay Area lOB, i.e., OACEPROG-BUFDSECT. The called routine OCON is saved in PCEOCON and is then used to compute the address of the Overlay Table entry for the called routine. If ~DEBUG is set to YES, field OTBCALLS is incremented by one. The called routine's priority is moved to PCEOPRIO. If the Overlay Table indicates that the called routine was made a permanent part of the HASP Load Module at Overlay Build time, register BASE3 is loaded with the address of a theoretical overlay area containing the resident routine (BUFSTART-BUFDSECT bytes prior to the routine itself), caller's RO-WC are reloaded, and control is passed to the called routine at its entry point. If the called routine is not permanently resident, a search is made of all overlay areas in the system. If the called routine is found in an area (PCEOCON equal to area's OACEOCON), the caller's PCE is added to the chain of all active users of the area. This chain begins at OACEPCE and continues through PCEOPCE of each PCE (if several users are on the chain) and ends with a zero chain word. A test is made for illegal nested $LINK if 'DEBUG is set to YES; see The HASP Operator's Guide for error message. If the called routine is in process of being read into Overlay Services 3 - 103 HASP. OVERLAY SERVICES the area from direct access, the calling processor is made to $WAIT on OLAY, to be later activated by the Overlay $~SYNC Exit. Otherwise, caller's RO-WC are reloaded and control is passed to the called routine entry point, with register BASE3 containing the address of the overlay Area IOB for use as the overlay routine base address. If the called routine is not found while searching all overlay areas, the search attempts to find an overlay area which is not currently in use. It may contain an overlay routine but may not have active users (OACEPCE must be zero). The inactive area containing the routine of lowest priority (OACEPRIO) will be used, subroutine OLOD will be called to start reading the called routine from direct access, and the calling processor will be $WAITed on OLAY, to be later activated by Overlay $ASYNC Exit. If no inactive areas are found, the calling PCE is placed on a queue waiting for an overlay area. The Queue begins at the word $WAITACE, continues in descending priority order by PCEOPRIO using chain word PCEBASE3, and ends with a zero chain word. If several PCEs are on the queue requesting the same overlay routine (PCEOCONs equal), only the first PCE is on the above chain, the others are chained from it using word PCEOPCE. All PCEs in the queue are $WAITed on OLAY. This queue is emptied by the Overlay Roll Processor or by the OEXIT subroutine. $LOAD SERVICE $LOAD shares almost all logic with $LINK. identical to those for $LINK. R15 is not saved in PCEORTRN. point of the called routine. Entry register conditions are R15 is not set to the relative entry When the called routine is found in an overlay area or is read into one by later system actions, R15 still contains the address of the next instruction after $LOAD. Subsequent use of R15 as an absolute entry point results in control being returned to the caller following the $LOAD macro, with the routine in an actual or theoretical area, addressable by BASE3 as with $LINK. $XCTL SERV ICE $XCTL logic shares almost all logic with $LINK. conditions are identical to those for $LINK. Entry register R15 is not saved in PCEORTRN. $XCTL is legal only when i t logically follows another $XCTL or an original $LINK. Subsequent $RETURN uses PCEORTRN as stored by the original $LINK to return control from Overlay Service to the original caller. Before doing entry actions for the new called overlay routine, the OEXIT subroutine is called to remove the calling processor's PCE from the chain of users of the current overlay routine. 3 - 104 HASP Logic HASP OVERLAY SERVICES $RETURN SE.RVICE On entry, register LINK points to the next instruction after $RETURN and also contains the condition code and program mask as set by a BAL instruction. BASE3 points to an actual or theoretical area containing the current overlay routine. Caller's RO-wC are saved in the PCE. established in WC. Overlay Service base address is The OEXIT subroutine is called to remove the caller's PCE from the chain of users of the current overlay routine. Returned condition code is reestablished using an SPM instruction. Caller's RO-WC are reloaded. Control is returned to the address previously saved in PCEORTRN oy $LINK. $DELETE SERVICE $DELErE is nearly identical to $RETURN, except that i t is used to release control of an overlay routine previously $LOADed. On entry, register LINK points to the next instruction after $DELETE. This is stored in PCEORTRN, and all actions described for $RETURN are performed. OEXIT Subroutine This subroutine is used by service routines for $XCTL, $RETURN, and $DELETE to release use of the current overlay routine by the calling processor. On entry, register WA contains the subroutine return address and register BASE3 contains the address of an actual or theoretical (permanently-resident routine) overlay area containing the current overlay routine. If the current overlay routine is permanently resident, OEXIT returns immediately. Otherwise, the chain of all users' of the area (beginning at OACEPCE. and continuing through PCEOPCE) is searched and the caller's PCE is removed. If other processors are still using the area, OEXIT returns. If the above actions result in the overlay area becoming inactive (OACEPCE equal zero), the $WAITACE queue is inspected. If PCE(s) are waiting, the top priority group of one or more requesting the same overlay routine is dequeued, the address of the first such PCE is placed in register Rl, and OEXIT simply falls through to the OLOD subroutine, which eventually returns to the caller of OEXIT. Overlay Services 3 - 105 HASP_OVERLAY SERVICES OLOD SUBROUTINE This subroutine is used by service routines for $LINK, $LOAD, and $XCTL; by the Overlay Roll Processor; and indirectly by users of the OEXIT subroutine. Its purpose is to start a read for a requested overlay routine from the direct-access device containing the overlay data set. On entry, register WA contains the subroutine return address, register BASE3 contains the address of an actual overlay area to be used, and register R1 contains the address of the first of a group of one or more PCEs requesting the same overlay routine, chained from the first PCE by PCEOPCE. OACEPCE of the Overlay Area is pointed to the first PCE. OACEPRIO and OACEOCON are set to indicate the routine that will reside in the area. The Overlay Table entry for the requested routine is accessed and, if &DEBUG is _set to YES, field OTBLODS is incremented by one. The relative T and R in the overlay data set of the requested routine is obtained from the Overlay Table. The address of .the Overlay DCT is loaded into register R1. If the overlay data set is on any SPOOL volume (device type DA in the OCT), an absolute form of MTTR is computed and stored in DCTSEEK. This conforms to $EXCP requirements for SPOOL volumes and allows $EXCP to remember SPOOL arm positions. If the overlay data set is on a non-SPOOL direct-access volume, the standard OS form of MBBCCHHR is computed and stored in IOBSEEK. Hardware read operation is requested by using the $EXCP macro. The Overlay OCT specifies that when the read operation is complete, Overlay $ASYNC Exit is to be entered. All PCEs chained from OACEPCE are already $WAITing OLAY, to be later activated by Overlay $ASYNC Exit. OLOD then returns to its caller or caller of OEXIT. OVERLAY $ASYNC EXIT This routine is entered when (under control of the Asynchronous Input/Output Processor ($ASYNC) PCE) an overlay read operation (started by OLOD subroutine) is posted complete. On entry, register Rl pOints to the overlay area. BASE2 is set to the base value for the Overlay Roll Processor, which is used for local addressability. R15 contains the return address to $ASYNC. The chain of all users of the overlay routine just read (begins at OACEPCE, continues through PCEOPCE) is processed. Each PCE's reentry address (R15, now stored in PCER15) is made absolute by adding the address of the overlay area, if the value in PCER15 is determined to be relative. The address of the overlay area is also stored in each PCEBASE3, to provide addressaoility when the Dispatcher activates each processor. The function $POST for OLAY is performed on each PCE to make it dis patchabl e. If os lOS has posted the read complete with a permanent I/O error, each PCE's reentry address (PCER15) is pointed to a routine which types the message wUNREADABLE OVERLAY wand enters a permanent $WAIT. The 3 - 106 HASP Logic HASP OVERLAY SERVICES overlay area is freed for other use, and the OEXIT subroutine is called to start any queued requests. If &OREPSIZ is set to zero, this exit returns to $ASYNC. Otherwise, the overlay REP storage area is examined to see if any REPs that apply to this overlay routine were read during HASP Initialization. REPs whose CSECT name (last four characters) match OACEN~ME are applied. The assembly origin (OACEASMO) of the routine is subtracted from the REP address and the BUFSTART address of this overlay area is added to determine the storage location to be patched. Return is finally made to $ASYNC to allow other processing to continue. The Dispatcher will enter each processor using the overlay routine just read. Overlay Services 3 - 107 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 , i , ; I 1 1 1 1 1 1 ~ l i \ 1 1 1 1 1 1 1 1 1 1 1 HASP REMOTE TERMINAL ACCESS METHOD The Remote Terminal Access Method provides an interface between the HASP Processor and the remote terminal. RTAM provides blocking/deblocking, compression/decompression, and synchronization with the remote terminal in such a way that the processor need not be concerned with the characteristics of the remote with which he is communicating. The MULTI-LEAVING Line Manager interfaces very closely with RTAM through a series of subroutines, the more important ones of which are briefly described below. The Remote Terminal Access Method consists of four main sections and some miscellaneous subroutines. This section discusses the four main sections: OPEN, GET, PUT, and CLOSE. OPEN The OPEN routines convert the line from an idling mode of operation to a transmit or receive mode of operation. In the case of the MULTI-LEAVING interface, this routine also generates the request or permission to begin a new function. GET The GET routines convert data received from the line into EBCDIC images suitable for processing by the HASP processors. This conversion includes deblocking, decompression, and conversion from line code to EBCDIC. PUT The PUT routines convert data from EBCDIC into a form ready to be transmitted to the remote terminal. This conversion includes compression, blocking, and conversion from EBCDIC to line code. CLOSE The CLOSE routines convert the line from a transmit or receive mode of operation to an idling mode of operation. RTAM 3 - 109 HASP REMOTE TERMINAL ACCESS METHOD The following sections describe the primary subroutines used by the Remote Terminal Access Method and the MULTI-LEAVING Line Manager. MSIGNON -- SIGNON CARD PROCESSOR This subroutine receives the address of a /*SIGNON card in register R1. If the line used to read the SIGNON card was defined as a dedicated line, the SIGNON card is ignored and the subroutine returns immediately. If the line is a nondedicated line, the MABORT and MDISCON subroutines are called to disconnect any other remote that may have been attached to this line. The password is then checked, and if i t is not valid, an error message is issued and the subroutine returns. If the password is valid the specified Remote Terminal's DCTs are located and examined. If the specified remote is already attached to another line or if the specified remote is not locatable, the subroutine issues an error message and returns. Otherwise, the specified remote is attached to the line, an SMF record is written, and a confirmation message is issued. MINITIO -- MULTI-LEAVING INPUT/OUTPUT INTERFACE This subroutine analyzes the status of a MULTI-LEAVING remote terminal and takes appropriate action to minimize degradation while ensuring maximum line throughput. The subroutine first establishes the status of every processor currently active on the MULTI-LEAVING line. Then, based on the active input processor count, the active output processor count, the status of the remote terminal, and the status of input and output buffers queued within HASP the subroutine either transmits an ACKO to the terminal, transmits a text buffer to the terminal, or initiates a 1second delay. MEXCP -- REMOTE TERMINAL INPUT/OUTPUT INTERFACE This subroutine interfaces the Remote Terminal ~ccess Method with the standard HASP ft$EXCPft Input/Output Interface. In addition to initiating I/O, this subroutine also provides the MULTI-LEAVING Block Control Byte sequence count, and the BSC 2210/2780/3780 parity check (ACKO-ACK1) conversion. MCCWINIT -- CHANNEL COMMAND WORD SEQUENCE SETUP SUBROUTINE This subroutine is passed a sequence type in bits 24-21 of register R1. The subroutine then constructs a CCW chain, based on this value, and returns. The following table depicts the various CCw sequences which can be constructed by this subroutine. HASP REMOrE TERMINAL CCW SEQUENCES 3 - 110 HASP Logic RASP REMOTE TERMINAL ACCESS METHOD ssc. Pre~re Seguence (Code = C) Internal Byte Count Code CCW Command Data Address IOBCCWl DISABLE 0 60 CO 1 IOBCCW2 SET MODE LCBMCB 60 C1 1 10 BCCW3 ENABLE 0 60 C2 1 IOBCCW" NOP MBSCSYN 60 CA IOBCCW5 NOP/WRITE MBSCENQ/MBSCEOT 60 CA " 10 BCCW6 READ TPBUFST 20 C4 Flags 1 iTPBFSIZ BSC.MULTI-LEAVING Terminal seguence (Code=9) CCW Command IOBCCW1 ENABLE IOBCCW2 NOP IOBCCW3 WRITE IOBCCW4 Data Address Flags Internal Code Byte Count 0 60 92 1 MBSCSYN 60 99 4 LCBRCB 60 99 2 READ TPBUFST 20 94 iTPBFSIZ IOBCCW5 NOP MBSCSYN 60 98 IOBCCW6 WRITE TPBUFST 60/AO 98 *-* IOBCCW1 WRITE METBSEQ 60 98 2 10 BCCW8 READ TPBUFST 20 B4 'TPBFSIZ " RTAM 3 - 111 Page of GY27-7255-0 Revised May 28, 1975 By TNL SN25-0122 HASP REMOTE TERMINAL ACCESS METHOD = 8!, BSC Hardware Terminal Read Seq uence (Code CCW Command IOBCCWl ENABLE IOBCCW2 NOP· IOBCCW3 WRITE IOBCCW4 READ Data Address BSC Hardware Terminal Write CCW Command IOBCCWl ENABLE IOBCCW2 Flags Internal Code Byte Count 0 60 82 1 MBSCSYN 60 89 4 LCBRCB 60 89 2 TPBUFST 20 84 iTPBFSIZ s~uence (Code Data Address = A) Flags Internal Code Byte Count 0 60 A2 1 NOP MBSCSYN 60 AA 4 IOBCCW3 WRITE MBSCENQ 60 AA 1 IOBCCW4 READ LCBRCB 20 A6 2 IOBCCWS NOP MBSCSYN 60 A8 4 IOBCCW6 WRI'!'E TPBUFST 60 AO *-* IOBCCW1 WRITE METBSEQ 60 A8 2 IOBCCW8 READ LCBRCB 20 AS 2 3 - 112 HASP Logic HASP INITIALIZATION HASP Initialization builds control blocks and performs all other preparations necessary for HASP job processing. Initialization is designed to provide either a cold or warm starting capability. A cold start is one which starts the system anew. Only those jobs entered after a cold start will De processed. A cold start does not have any configuration requirements except as defined in the HASP generation parameters. A warm start is a restart. Checkpointed information is read from the SPOOL1 volume and queued jobs and data from the last processing are recovered. This type of start requires, as a minimum, that the SPOOL volumes used during the previous execution be online. Extra SPOOL volumes, up to a total of ~NUMDA volumes, may be added. ENTRY ACTIONS since HASP Initialization resides in the same area as the main HASP buffer pool (as designated by the HASP parameter ~NUMBUF) and portions of the initialization routines are executed from overlay control sections, all HASP processors except those required for initialization and console processing are placed in the HOLD status. The Command Processor PCE is altered to refer to the root segment of HASP Initialization, which resides in the data portion of the first buffer. The HASP Initialization WTOR is then displayed-via OS WTOR facilities. Initialization waits for the operator to respond with the desired options. The options are compared against the Initialization Options Table, and the appropriate bits in the $OPTSTAT field in the BCT are set or reset in accordance with the options specified. If any option is incorrectly entered, an error message is issued and the $OPTSTAT field is set to the default option configuration. (Refer to Starting The HASP System in the HASP ope~~r·s_Guide.) The HASP Initialization SVC is then invoked using an assigned code for the OS type 1 extended SVC router facility. The address of the HASP Vector Table ($HVT) is passed to the SVC as a parameter. The SVC stores this address in the CVT (at CVTHJFS) to activate OS/VS2 exits to HASP. The SVC places the HASP task in supervisor mode and returns a list of OS Nucleus addresses which HASP saves in the HCT for later use. After return from the SVC, HASP establishes a STAE so that the Catastrophic Error Routine will be entered if the main HASP task is abended. If requested by the operator, the HASP REP Routine is entered for optional alteration to the resident portions of OS or any part of HASP. MANDATORY FIXING The HASPNUC CSECT contains all coding and tables which must be fixed in real storage during HASP processing. This includes the HCT, Dispatcher, I/O Appendages, and all PCEs. Other frequently used services subroutines (e.g., Queue, Buffer, Unit Services) are included even though it is not mandatory that they be fixed. The OS FIX SVC is called to fix each 4K page of HASPNUC. Initialization 3 - 113 HASP INITIALIZATION BUILDING DCBS AND DEBS The amount of space necessary for DCBs and DEBs for all unit record devices, internal readers, and RJE lines is determined from the HASPGEN parameters. space for one direct-access DCB and DEB, with &NUMDA+l extents, is added to the total. This total amount of space is gotten from OS subpool 254, which is in LSQA and long-term fixed. The DCBs and DEBs are initialized, chained together as if OPENed, and connected to the HASP DCTs for the appropriate devices. Because the HASP ECB and I/O Appendages are fixed as part of the HASPNUC CSECT and because DCBs and DEBs are built in fixed LSQA, the only things which must be fixed when HASP requests an I/O operation are the lOB, CCWs, and data area. These are discussed later under Buffer Building. PREPARATION OF OVERLAY SERVICE The Overlay OCT is prepared by indicating that i t is in use, that it is used only for reading, that Overlay $ASYNC Exit is to be entered on completion of any operation started by using Overlay OCT, and that the Overlay Roll Processor is the owner of the DCT. The overlay data set is described by a DD card with ddname OLAYLIB. DEVTYPE and OPEN macros are used to determine the number of tracks/cylinder- of the overlay volume and data set extent, which is placed as the last (&NUMDA+l) extent in HASP's single multi-extent direct-access DEB. The overlay data set is closed, since HASP uses its own constructed I/O control blocks. The overlay data set UCB address is stored in a table used to withdraw or abort HASP, and the UCB is made allocated, permanently resident, and private. The number of tracks/cylinder and extent are used to compute a beginning absolute TT of the overlay data set, which is stored in the Overlay OCT for later use by the OLOD subroutine. LOCATI~G SPOOL VOLUMES AlIoS UCBs are searched via the UCB lookup table, and direct-access volumes with volume serials of SPOOLx are examined for use for HASP SPOOL volumes. As each device is examined, the UCB is allocated by turning on the private, reserved, permanently resident, and allocation indicators. The UCB locations and the sixth volume serial character are saved in a temporary work area for later reference. If, during the UCB search, multiple volumes with the same serial or too many SPOOLx volumes are found, an error message is displayed, SPOOL volume UCBs are deallocated, and the HASP job is terminated. Upon completion of a successful allocation of SPOOL volumes, control is passed to OirectAccess Initialization. 3 - 114 HASP Logic HASP INITIALIZATION DIRECT-ACCESS INITIALIZATION Direct-Access Initialization (NGDAINI~) gains control after all SPOOL devices have been found by initialization; initialization has built a table of 6-byte entries (NSPOOLL1) describing the direct-access devices on which SPOOL disks are mounted. Each table entry appears as follows: 0 1 2 dev vol ucb 3 4 5 unused where: dev vol UCB = = = the low-order byte of the direct-access device type the low-order byte of the volume serial number the device's UCB address Before checking for warm start, NGDAINIT establishes where the checkpoint record is to be placed on SPOOL1. To do this, it first calls the DEB/TED setup routine to establish certain statistics about all mounted SPOOL volumes and then issues an OBTAIN macro instruction for SYS1.HASPACE on SPOOL1. The checkpoint information will reside on the first three tracks of this data set; accordingly, NGD~INIT sets up the necessary channel programs using the OBTAINed information. WARM srARr If the operator requested a warm start, NGWARM reads the checkpoint information directly into the area from which the Checkpoint Processor will write it; the information consists of the HASP job queue, printer/punch checkpoint information, miscellaneous status information (including direct-access checkpoint information), the Job Information Table (JIT), and the Job Output Table (JOT). The direct-access checkpoint information, $DACKPT, consists of tNUMDA 6-byte entries of the following form: 0 1 2 dev vol ssss 3 4 5 eeee where: the low-order byte of the direct-access device type ssss = = = eeee = the ending absolute track number of the first extent of data set SYS1.HASPACE on the indicated SPOOL volume dev vol the low-order byte of the volume serial number the starting absolute track number of data set SYS1.HASPACE on the indicated SPOOL volume Initialization 3 - 115 HASP INITIALIZATION For SPOOL1, the starting track number excludes the checkpoint tracks. NGWARM ensures that each volume specified in the direct-access checkpoint is mounted and, with the help of subroutine NGALLOC, that its extents are unchanged. If not all volumes are mounted·, if any extents have been changed, or if a cursory check of a volume shows that it is not properly formatted, NGWARM writes a message and sets a quit switch to cause HASP to qUiesce. If all volumes specified by the direct-access checkpoint are correct, NGWARM checks for (and formats if necessary) newly-mounted volumes. Then it again calls subroutine NGDEBSET to allow for the possibility that the order of SPOOL volumes in NSPOOLL1 (by unit address) may not have been the same as in $DACKPT; the final order is that of $DACKPT. Now NGWARM relocates the HASP job queue, if necessary. The job queue as recorded in the checkpoint record contained main storage addresses; if HASP does not now occupy the same storage locations as it did before, each main storage address in the HASP job queue (and in pointers to the job queue) must be adjusted to reflect the current main .storage location of the job queue. The sUbroutines NGMAP and NGBITMAP are called, to compute the total number of track groups in all SPOOL extents, and initialize the track group bit map as if all groups are available. Track groups belonging to jobs in the warm started queue are claimed as allocated by the HASPIOVQ overlay, described later. Finally, NGWARM gives control to NGEXIT. NGEXIT assembles and formatwrites the checkpoint information; restores the HASP appendage table pointer in $DADEB1, the HASP multi-extent direct-access DEB; counts the number of allocated track groups (one-bits) in the track group map. If RPS support was specified at HASPGEN time, a table is constructed in subpool 254 which will be used by HASP I/O Services ($EXCP) to determine the sector numbers of records in SPOOL and overlay extents. Control passes to A~ivation of Overlay, described later. COLD/FORMAT START If the operator specified cold or format start, NGCOLD first zeros out the track group map. Then NGCOLD processes each mounted SPOOL volume. For each volume, NGCOLD uses subroutine NGALLOC to process the DSCB for SYS1.HASPACE. This subroutine issues the OBTAIN macro instruction to retrieve the DSCB. If OBTAIN·s return code is not zero, an appropriate error message is printed via WTO. If the return code is zero, NGALLOC computes and saves lower and upper absolute track numbers. If NGALLOC operated normally, NGCOLD now tests for an operator specification of COLD; if the test is positive, NGCOLD calls subroutine NGREADCT to read and validate the count field of the first record of the last track of the first extent of SYS1.BASPACE on the volume. If the count field is invalid or if the operator specified FORMAT, NGCOLD calls 3 - 116 HASP Logic Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP INITIALIZATION NGFORMAT to format the first extent. NGFORMAT issues an unconditional GETMAIN for storage to be used in buildi-ng a formatting channel program and data. NGFORMAT then builds the program and data, and formats each track by calling NGEXCP, which issues an EXCP, issues a WAIT and checks the post code. After the volume has been inspected (and formatted if necessary), NGCOLD calls NGMAP to calculate the number of track groups in this volume and the track group number of the first track group. NGCOLD increments the overall number of track groups available for allocation by the quantity returned from NGMAP and calls NGBITMAP, which turns on in the master track group map the bits corresponding to available track groups on this -,olume. Then NGCOLD processes the next volume. When all volumes have been processed, NGCOLD refreshes certain checkpoint information (the HASP job queue, the print checkpoint information, and some miscellaneous checkpoint information) and gives control to NGEXIT, as described previously at the end of Warm Start. The DEB initialization subroutine, NGDEBSET, initializes certain HASP and OS control blocks and allows a great degree of SPOOL device independence. When called, NGDEBSET first puts into $DADEB1 the address of the HASP TCB; it also changes the DEB appendage address to point to the standard lOS appendage. (The appendage address is restored by NGEXIT.) NGDEBSET checks for SPOOL1 and quiesces HASP if SPOOL1 is not found. Then NGDEBSET"processes the SPOOL volumes. For each volume, NGDEBSET calculates the number of records per track using information from the device characteristics table IECZDTAB in the OS nucleus and the formula given with the DEVTYPE macro instruction in the OS/VS Data Management for System Programmers. Then it sets up certain information-In an entry of the Table of Extent Data (TED). After setting the UCB address in $DADEB1, NGDEBSET performs the same functions for the remaining volumes and returns to the caller. ACTIVATION OF OVERLAY If the overlay data set is contained on a SPOOLx volume, the Overlay Device Control Table is adjusted so that $EXCPs done by the OLOD subroutine will use MTTR addresses and M, which refers to the DEB extent for the SPOOLx volume rather than the overlay data set extent. The first Processor Control Element (PCE) in the HASP chain is connected to the OS save area chain and, with register 13 pointing to the first PCE, Initialization enters the HASP Dispatcher as though the first processor had executed a $WAIT macro. The HASP Dispatcher wi·ll run the PCE chain and dispatch the initialization root segment. The root segment will $LINK to the first overlay control section, HASPIOVA. UNIT RECORD INITIALIZATION - HASPIOVA Initialization 3 - 117 Page of GY27-7255-o Revised September 15, 1976 By TNL SN27-1555 HASP INITIALIZATION The OS UCBs are scanned for unit record devices. HASP pseudo devices are identified by a low order one bit in the UCBATI byte. Otherwise, the devices are considEred to oe real devices. Pseudo Device Initialization Pseudo dEvices are varied online. Pseudo 2520 devices are identified and matched with an Internal Reader (INTRDR) Device Control Table which is initialized for processing as with real devices Real Unit Re~ Device Initialization Each device is matched with a corresponding Device Control Table which is initialized for processing. If the device is allocated by OS, busy, or if a TID indicates not operational or CSW stored, the DCT will remain in the DRAINED status, causing HASP not to use the device unless the operator starts the device by command. Automatic starting reader attention index (UCBATI) values are set to enter the HASP Attention Exit (described as part of HASP Initialization SVC). If more real unit record devices of each particular type are found than there are available DCTs, an error message is displayed and the additional devices are ignored. I·f &NUM3800 is greater than zero, then the STPT subtask is ATTACHed. If there is an error in the ATTACH processing, the operator is informed and processing continues. For each 3800 printer, a Device Control Table Extension (DCTE) is GETMAINed from the HASP region. If no MDR buffer exists for the 3800 UCB, then one is GETMAINed and its address placed in the UCB extension. If an error occurs in the GETMAIN for the OCTE, the operator is informed and processing continues. Control is then passed to the Remote Job Entry or Miscellaneous Initialization routines, as appropriate, via a $XCTL macro. REMOTE JOB ENTRY INITIALIZATION - HASPIOVR Line Initialization The OS UCBs are scanned for Binary Synchronous Communication Adapter devices. The UCBs found are first matched with one or more DCTs and corresponding line descriptions (LINEmm HASPGEN parameter). Any DCT wit~ a line description which specifically designates the UCB will be initialized for the UCB. If no line description designates the UCB, a DCT with a line description of -***- will be located and initialized. Line devices will not automatically be started. 3 - 118 HASP Logic Page of GY27-7255-0 Added September 15, 1976 By TNL SN27-1555 Remote Device Initialization Remote Device Control Tables are connected and initialized with information contained in the corresponding remote description (RMTnn HASPGEN parameter). Each group of RMr.RDn, ••• ,RMr.PRn, ••• ,RMr.PUn, ••• for a given remote are chained together for control by the MULTI-LEAVING Line Manager and RTAM. In addition, the printer and punch DCTs are removed from the chain of all HASP DeTs and are reinserted directly behind the reader DCT for the corresponding terminal. The device descript~6n is converted to internal flags and placed in each of the corresponding DCTs. If the line number is designated in the Initialization 3 - 118.1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 HASP INITIALIZATION description, the line OCT is located, DCTs are chained together, and flags are set to indicate non-signon remote. The HASP Remote Job Entry Buffer Pool is initialized, and control is 'passed to the Remote Console Initialization routine or Miscellaneous Initialization routine, as appropriate, by $XCTL. REMOTE CONSOLE INITIALIZATION - HASPIOVS The Operator Message Space is allocated, and control blocks are initialized. The Remote Console Processor PCE and a direct-access OCT are connected (the DCT is flagged IN USE). The origin of the first available track in the SYS1.HASPACE data set of the SPooLl volume and the base track address for operator message record allocation is set into the MSAMTTR field of the Message Allocation ($MSALLOC) Table in the form: OTT1 (TT is the first track available for messages). The number of records per track for the mounted SPOOL1 volume is inserted into the MSARPTRK field. If cold start was performed by direct-access initialization, the cylinder map for SPOOLl is altered to reflect the allocation of sufficient adjacent track groups, starting with the group of the base track. The number of the last group is saved in the checkpoint records for future warm starts. If a warm start was performed by direct-access initialization, a check is made against the checkpoint record to ensure that the space required is within the allocated space. Control is given to the Miscellaneous Initialization routine by $XCTL. MISCELLANEOUS INITIALIZATION - HASPIOVB The dispatching priority of HASP is set at 255 using a CHAP macro. version of HASP is moved to the first eight bytes of the BCT for identification in a storage dump. The The Execution Processor PCEs are numbered in descending sequence from &MAXXEQS to one in the first byte of PCEID. Several ·S INTI.HOSINIT&OSC(n)",&OSC(n)· commands are issued internally to start initiators for each of &MAXPART HASP logical partitions. The entry points for the three HASP subtasks (HASPWTR, HASPWTO, HASPACCT) are IDENTIFYed in the BASP load module and ATTACHed. Control passes .to Buffer Building. BUFFER BUILDING - HASPIOVC An OS variable GETMAIN is issued to obtain storage for the alternate buffer pool. The actual amount of storage gotten is reduced by the amount of reserved storage (&RESCORE*1024) and is used to determine the ~umber of buffers that may be created in the alternate buffer pool. Extra storage, if any', is released via OS FREEMAIN. The number of Initialization 3 - 119 HASP INITIALIZATION buffers which may be created in the alternate pool is compared against the expression of generation parameters: &MINBUF - &NUMBUF where: &NUMBUF = number of buffers in the main buffer pool If the alternate buffer pool will not contain at least the number of buffers specified by the expression, a warning is issued. The origin of the main and alternate buffer pools are examined to determine which has the lower storage address. The pool with the lowest address is created and chained to the $BUFPOOL chain of buffers. The pool remaining is then created and chained to the end of the first. HASP builds all buffers (overlay areas, TP buffers as described previously for RJE Initialization, and the main and alternate pools described here) such that the lOB, CCWs, and data area are all within the same 4K page. Therefore, only one page must be fixed to do a HASP I/O operation. JOB QUEUE WARM START - HASPIOVQ This overlay is called only if the job queue contains jobs from a Warm Start as previously described. If a job was reading, the operator is informed via WTO and the job queue element is removed from the queue using $QREM. If a job was executing, the operator is asked via WTOR if HASP should rerun the job. If the response is yes, the job is left in the $XEQ queue. If the response is no, the job is placed in the $OUTPUT queue so that partial results will be printed/punched. For all jobs which are in the $XEQ queue, track groups occupied by input data sets (indicated by the bit map in the JeT) are marked as allocated in the master track group bit map. For all other jobs, track groups occupied by output data sets (indicated by the bit map in the first lOT) are marked as allocated in the master track group bit map. The number of available track groups in the master map is determined and saved. All print/punch restart data is moved from the print/punch checkpoint elements to checkpoint JOEs in the Job Output Table (JOT). Active print/punch device counters are cleared in the characteristics JOEs in the JOT. All work JOEs are scanned. For those JOEs which were busy printing or punching, the operator is informed via WTO and the busy bit is cleared so that the JOE may be acquired when processing resumes. 3 - 120 HASP Logic HASP INITIALIZATION ACTIVATION OF NORMAL PROCESSING The operator is asked to ENTER HASP REQUESTS (if REQ was specified) and the root segment of HASP Initialization is entered via the $RETURN macro. The root segment returns the PCE to the Command Processor and, if the operator specified REQ in the WTOR, enters the Command Processor. If NOREQ ~as specified. by the operator, all HASP Processors are $POSTed and the Command Processor is entered. Initialization 3 - 121 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1! 11 1 1 1 1 1 1I 1, ; 1 1 1 1 1 1 1 1 1 1 1 1 1 HASP INITIALIZATION SVC This program is a Type-I SVC routine which resides in the operating System nucleus and must be link-edited with the nucleus to resolve the external address constants required for HASP processing. It provides the following basic functions: 1. 2. For HASP: a. places HASP in supervisor state. b. Returns the address of key symbols in the nucleus which are required for HASP processing. c. Guards against recursive entries in order to prohibit multiple copies of HASP from being initiated. d. Provides the address of an entry which will cause the SVc routine to be reset for HASP withdrawal and cause the PSW to be reset to its initial value. e. Provides entry points for the I/O Supervisor (lOS) to HASP exit coding for the pseudo device exit and the attention exit. For the non-HASP program: to indicate to any other program whether HASP is currently active or not. Upon entry, register 1 is compared with the EBCDIC characters "HASP". If the register does not compare, a condition code is returned to the user in register 15 as follows: R15=O - HASP has not been initiated and is not currently active. R15~O - HASP has been initiated and is currently active. If Register 1 contains "HASP", further tests are made to validate the caller as HASP. If HASP has previously been invoked or if the caller's protect key is nonzero, the caller is abnormally ended with a S160 abend code. If the above tests are passed, the caller's register 0 is assumed to be the address of the HASP Vector Table ($HVT). This is stored in the OS/VS2 CVT (in word CVTHJES) to indicate that HASP is active. The left half of the SVC-OLD PSW is saved for the reset routine. The PSW is then modified so that the return to HASP will place HASP in the supervisor state. Register 1 is then loaded with the address of a table of address constants of key nucleus addresses, and return is made through the OS SVC FLIB. One of the addresses in the Nucleus Address Table is the address of the SVc reset routine. When this routine is entered, i t clears CVTHJES to indicate that HASP is no longer active. It then returns to the caller by loading a PSW constructed by concatenating the left half of the original PSW with register 14. SVC 3 - 123 HASP INITIALIZATION SVC Although not logically part of the SVC logic described above, the SVC routine physically contains t~o entry points for lOS to HASP exit coding. lOS transfers to the HASP pseudo device exit (IECHASPE) when a problem program issues EXCP and the UCB is a pseudo device (UCBATI x'Ol' bit set). The coding in the SVC simply looks at CVTHJES and transfers control to the exit coding in HASP (using the address in $HVT), if HASP is active. If HASP is not active (CVTHJES zero), the exit returns to lOS at +4 from the normal return, causing lOS to abend the caller with a S100 code. lOS transfers to the HASP attention exit (IECHASPA) when an unexpected device-end interrupt occurs for a locally attached card reader and the UCBATI is X'241. The SVC contains all coding which is executed directly as part of the exit. If HASP is not active (CVTHJES zero), the exit returns. Otherwise, UCBATI is flagged, the HASP Asynchronous Input/Output Processor and the HASP task are posted, and the exit returns to lOS. 3 - 124 HASP Logic HASP REP ROUTINE This routine gives the system programmer the capability of applying absolute or relocatable value patches to HASP, at absolute or relocatable storage addresses, as part of the H~SP Initialization process. The REP card format is: Columns 1 Contents Any identifi.cation - ignored by REP routine 2-5 6 Blank 7-12 Address at which to apply patch (6 hex digits); or blank 13-16 Blank 17-blank Half-word absolute value patches, 4 hex digits each, separated by commas, patch data terminated by first blank; or one full-word (8 hex digit) relocatable value patch, followed by a comma and the name of the resident CSECT which defines the relocatable part of the value. The above format allows patches to be applied at any absolute storage location (by use of REP or ABS beginning in column 2) or at addresses in HASP CSEcrs (resident or overlay>, sUbject to relocation. Relocatable addresses should be taken directly from a HASP assembly listing containing the CSECT to be patched. A blank address field is interpreted as one greater than the last address patched by the previous card, but the card will be used only if columns 2-5 match those of the previous card. The patches may be absolute values or one relocatable word per card, whose value is relative to any resident HASP CSECT. Relocatable values should be punched as if they were the assembled value of an A-type constant in the CSECT which defines the referenced relocatable symbol. Use of the term ·CSECT name· in the above description means the fifth and following characters of a HASP CSECT name, as taken from the External Symbol Dictionary of a HASP assembly listing. A deck of one or more REP cards should be terminated by a card having "/." punched in columns 1-2. REP cards are read from the card reader, whose address is given by the HASPGEN parameter $REPRDR, immediately after the operator replies to HASP's initial WTOR (if the operator specifies "REP" in the reply options). Each card is listed on the printer, whose address is given by the HASPGEN parameter $REPWTR, unless the operator specifies "NOLIST" 1n the reply options. All I/O is performed using CPU instructions SIO and REP Routine 3 - 125 HASP REP ROUTINE TIO with the CPU disabled for all interruptions. Fixed real storage in LSQA (subpool 255) is used and real CCW data addresses are determined by using the LRA instruction. Cards are read and processed until a card having "/*" in columns 1 and 2 is encountered or until the card reader signals unit exception. The value or data portion of each card is processed first. If the value is relocatable (indicated by comma in column 25), eight hex digits beginning in column 17 are converted to a binary value. The CSECT name (last four characters beginning in column 26) is located in an internal table of standard resident module names. A value is taken from this table which is the storage address minus any nonzero assembly origin at which the resident module is loaded. This value is added to the value taken from the card. If the value portion by commas) beginning blank is encountered concatenated to form is absolute, groups of four hex digits (separated in column 17 are converted to binary values until a instead of an expected comma. The values are a single variable length binary value. The address portion of the card is processed next. If nonblank, six hex digits beginning in column 7 are converted to a binary address. An attempt is made to locate the to-be-patched CSECT name (last four characters beginning in column 2) in the standard resident module name table. If located, the loaded storage address minus any nonzero assembly origin of the resident module is added to the address taken from the card. If the CSECT name is not in the standard resident module name table, the overlay table is searched to determine if the CSECT is an overlay which was made permanently resident. If so, the nonzero assembly origin of the overlay CSECT is subtracted from and the loaded storage address is added to the address taken from the card. In both of the above cases, the patch value, as previously computed, is applied by moving it to the storage address determined by one of the two methods described. If the CSECT name is not located by either search just described, it is assumej to be an overlay CSECT which is not permanently resident. The name, unrelocated address, and value are saved in a reserved area, to be applied each time the overlay is read from direct-access during HASP operation. If the address field of the card is blank, the to-be-patched CSECT name is compared with that from the preceding card. If they are not equal, the card is ignored. Otherwise, the card is considered to be a continuation of the preceding card and the patch value is applied at the next higher storage address or is saved, as appropriate. If no area was reserved to save patch information for application to nonresident overlays (HASPGEN parameter &OREPSIZ=O) or if the capacity of the reserved space is exceeded, the operator message "OVERLAY REPPING ERROR" is issued and HASP operation is abortively terminated. 3 - 126 HASP Logic HASP OVERLAY BUILD PROGRAM The purpose of this program is to process the object deck output from the 11 HASP assemblies, which make up the HASP load module. Overlay CSECTs are extracted and written (each as a single record) to the sequential overlay data set (ddname OLAYLIB), all references to overlays from resident and overlay routines are resolved, and all resident CSECTs (even if programmed as overlayable) are passed to the os Linkage Editor in a sequential data set (ddname SYSLIN). Optional control cards are processed to allow changing the status of any overlayable eSECT from actual overlay to permanently resident or vice versa. On initial entry, the time is sampled. A truncated Wtime-like w value is saved. This value will be placed in one resi3ent eSECT and one overlay CSECT. During HASP Initialization, if these two values do not match, an error message is produced and HASP terminates. All data sets are opened and the listing title line is printed. If the control card data set is present (ddname SYSIN), cards are read, printed, and processed until end-of-file is encountered. Each card contains an overlayable CSECT name beginning in column 1, which must begin with wHA$w. A SYM table entry is made for each such name. An oeON (index into the Overlay Table, HASPOTAB) is assigned and a priority, if present in column 16 of the card, is remembered. This information is later used to override the normal processing of that CSECT when it is encountered in the object decks. A listing header line is printed at the end of control card processing. All object decks are processed as a single sequential input data set (ddname SYSOBJ). Only the four object card types ESD, TXT, RLD, and END, as documented in OS/VS2 Loader PLM are processed. All other cards are written directly to SYSLIN. If an-object card with a valid ESID number greater than the program's table limits (internal assembly variable &MAXESIO) is encountered, the program abends with a U0101 code. ESO card processing is essentially the construction of two tables from ESO information. The SYM table contains the names of and information about any external names under overlay control (i.e., beginning with ·HA$W). It is a global table covering all object decks together. A name is entered when a reference to it or a eSECT definition of it is first encountered, or during control card processing as previously described. An overlay name in an ESD card item is first searched for in the SYM table. If it is found, changes are made to the existing entry. An error message is produced for each duplicate definition of a previously-defined overlay eSECT name, and only the first definition is used. An OCON is assigned to each entry. When a name becomes a defined eSECT, if the fourth character is wO·, the overlay routine is actually to be made disk resident, and storage is assigned to load its text. The ESID table is cleared at the oeginning of each object deck and is constructed as ESO items are encountered under control of SYM table contents. It is a table of words ordered by ESID number. TXT card processing and RLD card processing access this table only. It contains relocation values, aeONs, and flags controlling the disposition of text and RLD items. Overlay Build 3 - 127 HASP OVERLAY BUILD PROGRAM ESD items (for references to overlays or for definitions of overlay CSECTs which are to be disk resident or are duplicated) are eliminated from an ESD card when processed, before the ESD card is written to SYSLIN. This elimination is done by changing them to type NULL or, if type LD, by physically removing them and compacting the card. TXT card processing has three possible results. Text belonging to an actual overlay is loaded into storage, subject to relocation according to storage assigned by ESD processing. Text of any overlay CSECT which is a duplicate of one encountered previously is discarded. Text of nonoverlay CSECTs or overlays being made permanently resident is written unaltered to SYSLIN. RLD card processing concerns individual RLD items as follows. If an item applies to a discarded duplicate overlay CSECT, i t is eliminated. If an item references a nonoverlay CSECT, i t is left unaltered. An overlay reference item descrihes a 2-byte Q-type constant assembled in the expansion of the $LINK, $ LOAD, $XCTL, and $OCON macros. The reference is resolved by substituting the OCON value assigned to the referenced overlay routine, and the item is eliminated. If the Qconstant exists in an· actual overlay routine, the OCON value is simply moved to the proper address of the text already loaded into storage. If the Q-constant exists in a nonoverlay CSECT or overlay being made resident, a new TXT card containing the OCON value is created and written to SYSLIN. Eliminated items are physically removed and the RLD card is compacted before writing to SYSLIN. END card processing is really end-of-object-deck processing. The card is written unchanged to SYSLI~. The entire SYM table is then scanned for selected processing. Each actual overlay whose text was loaded from the most recent object deck is written to OLAYLIB as a fixed length record of length &OLAYSIZ (internal assembly variable set to 1280 bytes in unmodified HASP). A listing line is printed for each overlay CSECT defined in the most recent deck, with its length and assigned OCON value. Priority and disk address in two forms are printed for actual overlays. An error message is printed if an actual overlay length exceeds &OLAYSIZ. Processing of multiple object decks continues as above until end-ot-file for SYSOBJ is signaled. The entire SYM table is then processed to produce the Overlay Table, which is written to SYSLIN as a new object deck (did not exist in the input) containing a single resident CSECT, HASPOTAB. An error message is printed for any name in the SYM table which is still not defined as a CSECT. Each entry in HASPOTAB is 4 bytes or, if iDEBUG is set to YES, 12 bytes. The last 4 characters of the CSECT name are included if entries are 12 bytes, to facilitate identification in a storage dump_ If a routine is actual overlay (disk resident), the TR (relative form) of disk address and the priority are placed into the table entry for that routine. If an overlay routine was written to SYSLIN by previous processing (to become permanently resident in the HASP load module), a V-type constant is created in its table entry. An appropriate RLD item referencing the CSECT name is created. 3 - 128 HASP Logic H~SP OVERLAY BUILD PROGR~M When HASPOTAB is complete, an END card for i t is written to SYSLIN, all data sets are closed and the program terminates. Completion code 0 is returned normally; the completion code is 4 if duplicate CSECTs were encountered and 8 if any overlays were too long or undefined. Overlay Build 3 - 129 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Ij , 1. ~ 1 1 1 1 1 1 1 1 1 1 1 HASP SYSTEM/3 WORK STATION PROGRAM The HASP System/3 Remote Terminal Program is assembled under OS, using Assembler F. The advantages of assembling under OS are: the SystereV3 program can be assembled as part of a standard HASPGEN or RMTGEN; a System/3 program can be customized to the particular System/3 configuration and HASP System being generated, since Assembler F can handle conditional assembly statements; and macros can be used. To allow assembly of System/3 code, a set of macros is included as part of the System/3 source code, HRTPSYS3. Most of these macros are designed to generate machine language code for the System/3; a few additional macros, such as $WAIT and $FB, provide for in-line functions and control blocks. The format macros will be discussed first: they are called the machine-language macros. The machine-language macros consist of a set of macros whose names correspond to the mnemonic System/3 operation codes defined in the publication IBM System/3 Model !Q Components Reference Manual (Order Number GA21-9103) and the extended System/3 assembler mnemonics defined in the publication Disk System Basic Assembler Program Reference. Manual (Order Number SC21-7509), with the following exceptions: each mnemonic operation code is prefixed by a dollar sign: no macros are provided for the instruction ZAZ, AZ, and SZ; additional extended mnemonics $NOPB and $NOPJ are provided; and the form and order of the operands is such as to be convenient to Assembler F. When a machine-language macro refers to a location in core, the operand is coded either waddress w or W(displacement,register)w. Thus, W$MVC X'1234 1 ,(O,REG2),LENGTH w moves LENGTH bytes to core location X'1234' (and succeeding lower-addressed bytes) from the core location pointed to by REG2(and succeeding lower-addressed bytes). There are ten forms of machine-language outer macros. These are: '1. The 2-address form, exemplified by W$MVC adrl,adr2,length w• The operands wadrlw and wa dr2- are as explained above. The operand WlengthW is assembled as -length-l w unless i t is omitted or is literally w*_*w (in which case it is assembled as zero) or the opcode is $MVX, in which case i t is assembled as wlength w• The opcodes $MVC, $ALC, $ED, $ITC, $CLC, and $MVX belong to this form. The extended mnemonics $MZZ, $MZN, $MNZ, and $MNN may be used. 2. The 1-address form exemplified by W$L reg,adr- and including $L, $A, $LA, and $ST. 3. The l-address form exemplified by W$MVI adr,immediate- and including $MVI, $CLI, $SBN, $SBF, $TBN, and $TBF. 4. The Jump instruction, written as either W$JC adr,cc w or W$Jxxx adrw, where $Jxxx is one of the extended mnemonics. In this case, -adr W may not be specified as W(displacement,register)W and must be within a positive displacement of 256 bytes from the last byte of the Jump instruction. System/3 Work Station 3 - 131 HASP SYSTEM/3 WORK STATION PROGRAM 5. The Branch instruction, written as either "$BC adr,cc" or "$BxxX adr" where $Bxxx is one of the extended mnemonics. 6. The l-address I/O forms, exemplified by "$LIO da,m,n,adr" and including $LIO, $TIO, and $SNS~ 1. The instruction $SIO, written as "$SIO da,m,n,cc". S. The instruction $APL, written as "$APL da,m,n w• 9. The instruction "$HPL, written as $HPL cc" where each WC W is either the actual character to be displayed as a halt code or the character w*", indicating a byte of zeros. For example, W$HPL EJ w • 10. The assembler instructions $DC and $D5, where the statement label (if any) is assigned the address of the last byte of the last operand specified. In addition to the machine-language macros, a $USING and a $DROP macro are provided to enable Assembler F DSECTs to be used more easily. The form of the $USING macro is W$USING expression,register W where wexpression" is a 1-to-S-character expression with the location counter reference symbol w*" either not used or used as the first character, and wregister W is a l-to-S-character absolute expression. No more than two different $USINGs (two $USINGs with different arguments wregister") may be outstanding at any time. $USING works as follows: from the time the $USING is issued, for any address-type machifie-language macro which contains an address specification of "(displ,reg)", the character string "reg" is compared with the string wregister" of each outstanding $USING. If no match is found, the displacement is assembled as YL1(displ). If a match is found, the displacement is assembled as YL1(displ(expression», where wexpressionw is taken from the corresponding $USING. The form of $DROP is "$DROP register W where "register W is a character string that appeared as the second operand of a previous and outstanding $USING. The form ft$DROP register,register W is also allowable. The assembly listing generated by Assembler F contains the macroexpansion for each macro used, to provide a printed copy of the generated text of each machine instruction and the address at which i t will he loaded in System/3 storage. The expansion of each of the machine-instruction macros is typically contained in one print line, and the text of the generated instruction is always contained in hexadecimal on one print line. The ohject deck produced by Assembler F is used as input to the translation program SYS3CNVT, called automatically by RMTGEN. SYS3CNVT reads the object deck via either ddname SYSLIN, or ddname SYSGO if SYSLIN is absent. First, SYS3CNVT punches on SYSPUNCH a System/3 l-card loader. Then i t reads from SYSLIN or SYSGO, ignoring all but TXT cards and the END card. For each TXT card, SYS3CNVT creates one System/3 96column load-mode card image, suitable for reading by the System/3 l-card 3 - 132 HASP Logic HASP SYSTEM/3 wORK STATION PROGRAM loader. Each such 96-column card image contains 64 bytes of information as follows: 1. Bytes 1-5 contain a System/3 $MVC instruction of the form "$MVC load-adr,(column-number,l), length-1" length-1, where load-adr is the absolute load address of the rightmost byte of text on the corresponding SO-column Assembler F object deck TXT card, columnnumber is the number minus one of the 96-card column in which appear the low-order six bits of the rightmost byte of text, the digit "1" refers to the System/3's register 1, and length is the number of bytes of text on the card. 2. Bytes 6-61 contain a maximum of 56 bytes of text, starting in colume 6. 3. Bytes 62-64 contain a three digit card sequence number. When the object deck's END card is detected, or when a TXT card appears that was generated by the $END macro (whose optional keyword operand START= specifies the starting execution address of a segment of text), a 96-column load-mode card image is constructed whose 64 bytes are as follows: 1. Bytes 1-4 contain a System/3 $B instruction of the form "$B address" where address is either the first byte of the text segment just loaded (if the $END macro does not specify START=, or if the END card of the assembly has no operand) or the address specified in the START= parameter of the $END macro or the operand field of the END card. 2. Bytes 62-64 contain a 3-digit card sequence number. After the object deck's END card has been processed, SYS3CNVT creates a 96-column card image of which columns 2-4 are "EOR" (this is the rep terminator card, END-OF-REPS> and columns 62-64 contain a 3-digit card sequence number. Certain of these 96-column card images contain descriptive information in bytes 33-64: these cards make up the l-card loader, which is captioned "FIRST CARD", the card created' from a $END macro, which is captioned "PSEUDO-END" and the card created from an END card, which is captioned "LAST CARD". After i t has created each 96-column card image (including that for the 1-card loader), SYS3CNVT breaks the image in half and punches two 80column cards from it. Each SO-column card punched by SYS3CNVT contains the following fields: 1. Columns 1-2 are blank 2. Columns 3-50 contain the first (if column SO is odd) or the last (if column SO is even) 48 bytes of a System/3 card image System/3 Work Station 3 - 133 HASP SYSTEM/3 WORK STATION PROGRAM 3. Columns 51-72 are blank 4. Column 73 contains the punch combination for X'SO', an indicator to any System/3 Remote Terminal Program generated with iS396COL=1 that two SO-column cards are to be combined and punched as one 96-column card (the System/3 Starter System is generated with &S396COL=1) 5. Columns 74-S0 contain the remote terminal identifier and card sequence number, in the form wRmmnnnnw, where nnnn is 0001 on the first card punched. The punched output of SYS3CNVT may be routed directly to a System/3 which is running the Starter System or other suitable System/3 Remote Terminal Program; the resulting 96-column punched deck of cards is immediately ready for loading into a System/3 of the proper configuration. Alternatively, SYS3CNVT's punch output may be punched on SO-column cards for later transmittal to a System/3. Each 80-column card is suitable for data transmission in either transparent or nontransparent mode. The HASP System/3 Work Station program consists of processors, interrupt routines, and system subroutines. There is a processor for each logical function to be performed by the program, each processor is controlled by a FUnction Block (somewhat analogous to a TCB in OS). Interrupt routines are provided for those devices (BSCA, 5471, and 5475) which are capable of interrupting the CPU; other devices are operated by processors. For example, the MFCU Processor operates a hopper of the 5424 MFCU; it becomes associated with either a logical reader processor or a logical punch processor, depending on the state of the hopper. The various routines of the System/3 Remote Terminal Program are described in the order in which they appear in the listing. IHEREP - HASP ENVIRONMENT~L RECORDING AND ERROR PROCESSOR IHEREP prints at program load time the error statistics gathered from the previous running of the Systenv3 Remote Terminal Program. IHEREP is then overlaid and the Remote Terminal Program continues to load. First, lHEREP loads the 5203 forms length register and selects the correct print chain image according to the printer's status information. Then it checks the log area for validity. If the log area is valid, the characters 'HASP' will appear immediately before the log area. If these characters do not appear, IHEREP prints the message: HEREP COUNTERS HAVE BEEN ALTERED and branches to zero to cause program loading to resume. If the log area is intact, it contains eight 2-byte counters for each status byte which can contain unit check information for a device. IHEREP prints a title line and then, for each status byte, a subtitle 3 - 134 HASP Logic HASP SYSTEM/3 WORK STATION PROGRAM line and as many as eight detail lines. A subtitle line contains device description and status byte number. A detail line contains status bit description, bit number, and count of bit occurrences in decimal. Control of IHEREP resides in the table of subtitles and detail descriptors, and control of the 2-byte bit counters is by a bit string (starting at symbol IHBIT) containing one-bits for the counters to which correspond detail descriptors. The table of subtitles and detail descriptors is made up of $IHMSG macros; if the first operand of this macro is 'T', the macro defines a subtitle, and if the first operand is an integer between 0 and 7, it specifies a detail descriptor for the bit whose bit number is the first operand. The table entries are used in order, and a hyte of zero defines the end of the table. When the HASP Environmental Recording and Error Printout is complete, the counters are zeroed out, and IHEREP branches to zero to continue program loading. $COM - COMMUTATOR The Commutator gives control in turn to the various processors which comprise the System/3. If the ~vent Wait Field (FBEWF) of an FB has zeros in the bit positions defined by EWFALL, the function is said to be dispatchable. $COM loads register 1 from field FBREGl of the FB (register 2 points to the FB) and gives control to the associated processor by loading the Instruction Address Register (IAR) from field FBENT. When with $COM next save both the processor has completed its work, i t returns to the commutator register 2 pointing to its FB. It may return to $COMRET, where will save both the Address Recall Register (ARR) as the processor's entry point and the value of register 1; $COMRETA, where $COM will the value of register 1, or $COMRETB, where $COM will assume that the value FBENT and the value FBREGl are correct. Then $COM chains to the next FB (or starts again with the first FB if the chain field FBNEXT is zero) and repeats the above process. $MFCU - 5424 MFCU PROCESSOR $MFCU operates under two FBs and two Hopper Control Areas (HCAs) - one for each MFCU hopper. The routine contains four levels of subroutines. $MFCU begins by calling first-level subroutine HREAD to read a card. HREAD sets up a read $510 instruction from information in the HCA and calls second-level subroutine HEXCP. HEXCP calls fourth-level subroutine HTIO, which returns condition code equal if the hopper described by the HCA is ready and condition code unequal if it is not. If condition code unequal is returned, HEXCP returns to the commutator; it will regain control again at the call to HTIO. System/3 Work Station 3 - 135 HASP SYSTEM/3 WORK STATION PROGRAM If the hopper is ready, HEXCP calls third-level subroutine HSIO to perform I/O on the hopper. HSIO first checks for various exceptional conditions. If error recovery is in progress (for the other hopper), HSIO returns immediately with condition code unequal. It returns similarly if the MFCU is busy reading, printing, or punching. If error recovery is not in progress and the MFCU is not busy, HSIO tests the "hurry" switch (which is set if one hopper is active and the other hopper becomes ready with a read $SIO pending for it). If the hurry switch is set and the current $SIO is not a read-only $SIO, HSIO returns condition code false. If all the above tests are passed, HSIO checks the stacker request associated with the current $310. If the stacker request is different from that for the previous $SIO, the feed path is checked to make sure it is clear. If the feed path is not clear, HSIO returns condition false; in addition, if the $SIO is read-only, it sets the "hurry" switch. But if the feed path is clear, HSIO resets the hurry switch, sets the new stacker number, and proceeds as if the stacker request for the current $SIO were the same as that for the previous $SIO. If no stacker change is indicated, HSIO moves the current $SIO to an in~ line position from the HCA and examines it. If the $SIO indicates print (interpreting), HSIO attempts to select one of two print buffers into which to move the punch information for the $SIO. If unsuccessful, HSIO returns condition code unequal. But if one of the print buffers is free (as indicated by the MFCU print-buffer-busy status bits) HSIO copies the punch data into the print buffer and modifies the $SIO instruction to indicate the print buffer being used. Then, or if the $SIO is readonly, HSIO loads the MFCU's read and punch data address registers. After a call to HTIO to ensure that the hopper is still ready, HSIO issues the $SIO instruction, sets condition code equal, and returns to its caller, HEXCP. HEXCP examines the condition code returned to it. If the condition code is unequal, HEXCP nonprocess exits, exactly as i t did for HTIO above. But if the condition code is equal, HEXCP nonprocess exits to be entered again at a $STIO which continues to nonprocess exit until the MFCU ceases being busy; then HEXCP calls third-level subroutine HSNS to determine the completion of ~he I/O operation. HNSN calls HTIO to see if a unit check condition exists. If that is the case, HSNS reads the MFCU status bytes. If all status bits in the error status byte are off (or if no unit check condition existed) HSNS returns condition code equal; if only the no-op status bit is on, HSNS returns condition code unequal. If other error status bits are on, HSNS calls system subroutines $MSG and $LOG to add a message to the error trace table and to count the error bits for HEREP, respectively. Then HSNS checks the error bits further. If the only error bits on are punch invalid or print check, HSNS returns condition code equal; these are regarded as user data errors (punch invalid) or trivial errors (print check). 3 - 136 HASP Logic HASP SYSTEM/3 WORK STATION PROGRAM But if other error bits are on, HSNS sets the error-recovery-in-progress flag in HSIO (to prevent other $SIO instructions from resetting the error bits) and nonprocess exits until a SNS instruction shows that all error bits (except no-op) have been reset by the operator (who must do a nonprocess run-out on the MFCU). Then HSNS returns condition code unequal. HEXCP returns to its caller (which was HREAD in this case) the condition code it received from HSNS. BREAD examines the condition code returned to it by HEXCP. If unequal was returned, BREAD again calls HEXCP= otherwise first-level subroutine HREAD returns control to mainline $MFCU (in this case, at its second instruction). Having read the first card from its hopper, $MFCU now tests that card for blanks, via first-level subroutine HBLANK. If the card is blank, the hopper is assumed to contain blank cards to be punched. Otherwise, the hopper is assumed to contain a job stream and the MFCU awaiting-read routine HAR attempts to associate the hopper with a free logical reader FB, using subroutine HGET. HGET returns condition code equa1 if it succeeds (it also posts the logical reader's FB for UNIT), and condition code unequal if the hopper becomes not ready (and therefore dormant rather than awaiting-read)= otherwise, HGET nonprocess exits until one of the above two conditions happens. If HGET returns condition code equal, the MFCU reading routine, HRD, signals to the now-associated logical reader that the read buffer for the associated hopper is busy; then HRD nonprocess exits until the logical reader frees the read buffer. When the read buffer is free, HRD checks the EOF flag, set by the logical reader when i t encounters a /*EOF control card. If the EOF flag is on, HRD makes the hopper dormant by branching to the first instruction of $MFCU= otherwise HRD calls first-level subroutine HREAD as above to read the next card and, on return, again sets the read buffer busy. If on the other hand $MFCU finds a blank card in a dormant hopper it gives control to HAP, the awaiting-punch routine, which tries to find (via HGET) a logical punch FB of which HASP has requested permission to send a punch stream. Having found such a logical punch, HAP gives control to HPU, the MFCU punch routine. HPU nonprocess exits until the assoicated logical punch processor sets either the EOF flag or the punch-buffer-busy flag in the flag byte of its hopper control area. If the EOF flag is set, HPU makes the hopper dormant. But if the punch-buffer-busy flag is set, HPU punches and prints a card and reads the next card (to ensure that only blank cards are punched). HPU sets up a read-punch-print $510 and calls second-level subroutine HEXCP. If HEXCP returns condition code unequal and the MFCU status indicates any of the error no-op. punch check, hopper check, or feed check, the punch buffer is not marked free= otherwise, i t is marked free and set to blanks. The MFCU status is checked again; if neither read System/3 Work Station 3 - 131 HASP SYSTEM/3 WORK STATION PROGRAM check nor no-op is completely blank. not blank, another card has been read as above. $1442 - indicated, the card is examined to determine if it is Otherwise, or if the card now in the wait station is card is read (via subroutine HREAD). When a blank successfully, HPU again checks for punch-buffer-busy 1442 CARD READER - PUNCH PROCESSOR The $1442 processor is assembled if RMTGEN parameter &S31442 has been set to 1. Its logic is similar to that of $MFCU but simpler, since only one hopper need be controlled. $1442 uses some of the subroutines of $MFCU: for this reason, and since its interface to the logical reader and logical punch is the same, the 1442 hopper control area is similar to (but not identical with) the HCAs of the MFCU. $1442 starts by reading a card from the 1442 via entry point GSIORD of subroutine GSIO. If the card is blank, GAP (awaiting-punch) calls HGET just as does HAP in $MFCU: if the card is nonblank, GAR (awaiting-read) calls HGET just as does HAR in $MFCU. When a logical reader or logical punch has been associated with the 1442, GRD or GPU gains control and proceeds with I/O as indicated by the read-buffer-busy and punch-buffer-busy flags. In addition to recognizing the EOF flag set by the logical reader, GRD also recognizes the last-card flag, recognized by the logical reader. Subroutine GSIO performs I/O on the 1442. Entry point GSIORU sets a feed command in the $SIO and branches to common code. Entry point GSIORD sets a read-EBCDIC command in the $SIO and loads the data address register: it branches to common code. Entry point GSIOPU sets up a punch-and-feed command, loads the data address register and the punch count register, and falls through to common code. GSIO's common code nonprocess exits on a $TIO until the hopper is ready. Then it issues the constructed $510 and nonprocess exits until the 1442 is not busy. If entry was from GSIORU, GSIO returns condition code equal: otherwise it tests for unit check (via subroutine HT10) and reads the 1442. status bytes. If no unit check occurred, GSIO returns condition code equal. But if the 1442 had a unit check or otherwise became not ready, GS10 uses subroutines $MSG and $LOG to add a message to the error trace table and count the error bits for HEREP, respectively: then i t checks the status bytes. If no error bit is on, GSIO returns condition code equal: otherwise GSIO returns condition code unequal. $5203 - 5203 PRINTER PROCESSOR The 5203 Printer Processor nonprocess exits until another processor has marked the printer data area nusy. Then it completes the Q-byte and CCbyte of a $S10 instruction from an SRCB furnished i t by either $PR1NTER or $CONP. After a $TIO shows that the 5203 is ready, $5203 loads the 3 - 138 HASP Logic HASP SYSTEM/3 WORK STATION PROGRAM printer image address register and the printer data address register and issues the $SIO. $5203 then nonprocess exits until the printer' is not busy. When the printer operation has ended, $5203 checks for errors. If any of the error incrementer failure check, ha~mer echo check, or any hammer on check has occurred, $5203 attempts to reprint the line. Otherwise, it clears the print line to blanks, shows the print buffer free, and again nonprocess exits until a processor sets the print buffer busy. Additionally, whenever a unit check occurs, $5203 calls subroutines $MSG and $LOG to produce an error message and to count the one-bits in the printer status bytes. $READER - LOGICAL READER PROCESSOR $READER waits for one of the physical reader routines to post it for UNIT. When posted, it sends to HASP a request-permission control sequence (via subroutine $REQ) and waits to be posted for PERM by $BSCA when the system receives from HASP the appropriate permission-granted sequence. When i t has received permission, $READER nonprocess exits unless the read-buffer-busy flag is on, indicating a card is ready to be processed. Then i t examines the card. If the card's columns 1-5 are "/*EOF", $READER sends to HASP an end-of-file control sequence (via subroutine $LEOF), which is merely a zero-length record. It then waits again for UNIT, and continues as above when posted. The same end-of-file processing occurs if the reader is a 1442 and the last-card flag was set by the 1442 physical reader routine. 1442 code is absent unless &S31442=1. If there is no end-of-file indication, $READER processes the card further. If object deck processing was not specified at RMTGEN time, $READER transmits the first 80 columns of the card to HASP by calling subroutine $CMPR. On return, $READER resets the read-buffer-busy flag of the appropriate hopper control area and nonprocess exits until the read-buffer-busy flag is again set by the physical reader routine. Then it continues as above. However, if object deck processing was indicated at RMTGEN time by the specification &S30BJDK=1 and if the physical reader device is a 5424, $READER first checks column 81 of the 96-column card image for the character "1". If the comparison is unequal, the card is the first card of a 2-card hexadecimal image of a full-EBCDIC 80-column card. In this case, $READER compresses the first 80 columns of the card into the first 40 bytes of the same device's punch buffer, shows the read buffer free, and nonprocess exits until the read buffer is again busy. Then it checks the new card image for a -2" in column 81. If column 81 does not contain a "2", $READER treats the newly-read card as a normal card, and the previous card is lost. If the new card contains a "2" in column 81, $READER compresses its first 80 columns to the second 40 bytes of the same device's punch buffer and transmits the constructed card image to System/3 Work Station 3 - 139 HASP SYSTEM/3 WORK STATION PROGR~M HASP, using sUbroutine $CMPR. Then it resets the read-buffer-busy bit and nonprocess exits as above. subroutine RDSQUEZE performs the above-mentioned compression. It creates a single sink byte from a pair of source bytes each of which is assumed, without validity-checking, to contain the EBCDIC representation of one of the 16 hexadecimal characters. EBCDIC representation of one of the 16 hexadecimal characters. For example, i t would compress the byte pair "FOC6" to the byte "OF". $PRINTER - LOGICAL PRINTER PROCESSOR $PRINTER waits for HASP to send a request-permission control sequence. When $BSCA finds such a sequence, it posts $PRINTER for permission. $PRINTER then checks the printer availability flag. It nonprocess exits until this flag becomes zero; then it sets this same flag to show that the printer is in use. It sends a permission-granted control record to HASP (via subroutine $PERM) and then, if the print buffer is free, calls subroutine $DCOM to request a print line be decompressed into the print buffer. On return from $DCOM, $PRINTER recognizes two or three conditions: normal return, end-of-file return, and (optionally) forms mount message. For the forms mount message case, the SRCB (carriage-control byte, in the case of print records) will be X'SE'. $PRINTER makes the carriage control byte a print-and-space-three, shows the print buffer busy, and nonprocess exits until the print buffer becomes free; then it sets a carriage-control byte of space-three-immediate (so that the forms mount message will be visible on the printer without operator intervention) and continues as in the normal case. This code is assembled only if ~S35471=O. For the normal-return case, $PRINTER moves the SRCB returned by $DCOM to the printer control area as the carriage control byte, sets the printerbuffer-busy bit, and nonprocess exits until the print-buffer-busy bit is off. Then it again calls $DCOM for the next print line. For the end-of-file case, $SPRINTER resets the printer availability flag and checks to see if HASP had again sent a request-permission. If so, $PRINTER again sets the printer availability flag, sends to HASP permission-granted (via subroutine $PERM) and continues as above. Otherwise, $PRINTER waits for HASP to send request-permission. $PUNCH - LOGICAL PUNCH PROCESSOR $PUNCH waits for HASP to send a request-permission control sequence,. When $BSCA finds such a sequence, it posts $PUNCH for PERM, whereupon $PUNCH waits for UNIT. When posted for UNIT by a physical device routine, $PUNCH sends a permission-granted control record to HASP (via subroutine $SPERM) and nonprocess exits until the appropriate punch 3 - 140 HASP Logic HASP SYSTEM/3 WORK STATION PROGR~M buffer is free. Then it calls subroutine $DCOM to decompress a card image into the punch buffer. If $DCOM returned a card image (rather than end-of-file) the image is processed in various ways, depending upon the type of the punch device and options selected at RMTGEN time. If the punch is a 1442, $PUNCH calculates the number of bytes to punch, subtracts i t from 128, places the difference in the 1442 hopper control area, and shows the punch buffer busy. It then nonprocess exi-ts, as above, until the punch buffer becomes free. If the device is a 5424, $PUNCH first checks column 1 of the card image. If column 1 is X'6A', the card image is assumed to be a HASP job separator card. $PUNCH extracts the job number from columns 52, 62 and 15, ignores the rest of the image, and punches a card of which columns 1-32 are: ********** JOB nnn ********** It causes this card to be punched as usual, that is, by marking the punch buffer busy; then it nonprocess exits until the punch buffer becomes free. If the device is a 5424 and RMTGEN specified &S396COL=1, $PUNCH checks column 73 of the card image. If that column is X'80', 'PUNCH checks column 80. If column 80 is odd, $PUNCH saves in a work area in its Function Block the 48 columns starting at column 3 and again calls $DCOM to get the next card, as above. If column 80 is even, $PUNCH moves columns 3-50 of the card image to columns 49-96, moves the first 48 bytes from its work area to columns 1-48, and causes the card to be punched. If the device is a 5424 and RMTGEN specified $S30BJDK=1, $PUNCH checks column 1. If that column is x'02' $PUNCH saves the rightmost 40 columns of the 80-column card image in its work area and expands the leftmost 40 columns to 80 columns by substituting for each byte two EBCDIC characters; for example, X'02' becomes C'02'. It sets the character "1ft in column 81 and causes the card to be punched. $PUNCH then repeats this process for the saved 40 columns, sets the character "2" in column 81, and causes the card to be punched. If none of the above situations apply, $PUNCH merely marks the punch buffer busy, nonprocess exits until it becomes free again, and then calls $DCOM to get the next card. $DCOM may return an end-of-file indication rather than a card image. $PUNCH sets the end-of-file flag in the hopper control area and checks for a subsequent request-permission from HASP. If HASP has requested permission again, $PUNCH waits again for UNIT, as above; otherwise, $PUNCH waits for PERM, as above. 5471 CONSOLE INTERRUPT ROUTINE System/3 Work Station 3 - 141 HASP SYSTEM/3 WORK STATION PROGRAM CINT. the 5471 Console Interrupt routine. gains control upon an interrupt from either the 5411 Printer or the 5471 Keyboard. A keyboard interrupt may occur due to the END key, the RETURN key, the CANCEL key, the REQUEST key, or a DATA key. A printer interrupt may occur either after completion of printing a character or after a carriage return. At an END key interrupt CINT starts a carriage return. posts the Console Processor. and exits by starting the keyboard. If a request is pending, the Start I/O instruction sets the request light on and disables interrupts from all keys; otherwise it sets both lights off and enables interrupts from the request key. A RETURN key interrupt causes the same functions as an END key interrupt. A CANCEL key interrupt causes CINT to print an asterisk and set a flag which will cause a carriage return at the next printer interrupt. CINT then resets the buffer pointer to point to the first byte of the buffer and exits by issuing a SIO which leaves the same lights on and interrupts enabled as before the interrupt. For a DATA Key interrupt, CINT saves the keyed character in the buffer byte pointed to by the buffer pointer; then i t increments the buffer pointer by one. It issues a 510 to the printer so that the keyed character will be printed. If the buffer pointer now falls outside the buffer. CINT turns on the carriage-return request bit and performs all the functions of the END key except for issuing a carriage return. Otherwise, i t exits by issuing to the keyboard a SIO which leaves the same lights on and interrupts enabled as before the interrupt. On a printer interrupt due to end of either printing or carriage return, CINT tests the carriage return request bit. If that bit is on, CINT resets i t and exits by issuing a SID for carriage return. If there is no carriage return request pending, CINT tests the outputin-process bit. If output is not in process, CINT exits by disabling printer interrupts. But if output is in process, CINT checks whether the final output character has been printed. If so, i t resets the qutput in-process flag, posts the Console Processor, and exits by restarting a carriage return. If not, i t selects and loads the next character to print and exits by issuing a SIO to print that character. Whenever CINT posts the Console Processor, i t also turns on the actionrequired flag, CFACT. This flag is tested and reset by the Console Processor. 5471 CONSOLE PROCESSOR The 5471 Console Processor, $CON, nonprocess exits until posted; then it checks to find what caused it to be posted. If input is complete, $CON replaces in the MULTI-LEAVING buffer pool the buffer i t stole when i t acknowledged the request key. Then i t sends the 3 - 142 HASP Logic HASP SYSTEM/3 WORK STATION PROGRAM operator command to HASP by calling subroutine $CMPR, unless the input length is zero. In any case, it continues by checking for requestpending. If a keyboard request is pending, $CON first steals a buffer from the MULTI-LEAVING buffer pool, to avoid a potential buffer lockout problem. If no buffers are available, it leaves the request pending and checks for queued buffers containing messages to print on the 5471 Printer. But if the MULTI-LEAVING buffer steal was successful $CON resets the 5471 buffer pointer, resets the action-required and request-pending flags, sets the input-in-process flag, and issues a SIO which turns on the proceed light and enables all keyboard interrupts. Then i t nonprocess exits until posted. If $CON was not posted for the above reasons, i t investigates output possibilities. If either input or output is in process, i t cannot start output; i t again nonprocess exits until posted. But if neither input nor output is in process, and if there is no end-of-forms indication from the 5471, $CON checks for output. First i t checks the error message table, a circular table, to see if any error messages are outstanding. If so, i t expands a 4-byte coded error message to the equivalent 8-character hexadecimal representation in the 5471 buffer, sets the output-in-process flag, and issues a SIO to start printing the fir'st character; then it nonprocess exits until posted, while CINT p'rints the remaining characters. If no error messages are outstanding, $CON checks for messages from HASP. If there are some, $CON calls subroutine $DCOM to decompress a message. In order not to be forced into a wait condition on subsequent calls to $DCOM, $CON then checks whether the MULTI-LE~VING buffer from which the message was decompressed contains more messages; if not, $CON frees i t by calling subroutine $FREEBUF. Then $CON initiates printing of the message by setting the output-in-process flag and issuing a SIO to print the message's first character. Then $CON nonprocess exits until posted. 5475 CONSOLE INTERRUPT ROUTINE Upon an interrupt from the 5415 Data Entry Keyboard, the 5415 Console Interrupt Routine (CINT) checks the cause of the interrupt. An interrupt may be caused by a DATA key, the FIELD-ERASE FUNCTION key, the RELEASE FUNCTION key, the error-reset function key, any other function key or switch, or the MULTIPUNCH key. A MULTIPUNCH key interrupt is treated as an error and requires the operator to depress the ERROR-RESET key; all function keys and switches other than those mentioned are treated as no-operation keys. A DATA key interrupt causes CINT to place the keyed character in the 5415 buffer. CINT then increments the buffer pointer by one; if the buffer pointer now points outside the buffer, CINT performs the RELEASE key function. Otherwise CINT adds one to the column indicated and exits. The exit process consists of issuing a LIO for the column indicators and a SIO for the keyboard. System/3 Work Station 3 - 143 HASP SYSTEM/3 WORK STATION PROGRAM An interrupt from the RELEASE key causes CINT to post the 5475 Con,sole Processor for work, set the SIO in CINT to disable the keyboard, and exit. Any of several error situations causes CINT to turn on the error light. It does this by setting its SIO to X'23' which also locks all data keys. When an interrupt other than from the ERROR-RESET key occurs and the error light is on, CINT exits without further processing. But if the interrupt was from the ERROR-RESET key, CINT resets the SIO to its normal value of X'4F' and exits. Conditions which cause the error light to come on are a multipunch interrupt indication, no interrupt indication, or -two or more of: the Interrupt Conditions Data key, the FUNCTION key, and the MULTIPU~CH key. 5475 INPUT CONSOLE PROCESSOR When posted for ~ORK by CINT, the 5475 Input Console Processor ($CON) sends the operator command to HASP by calling subroutine $CMPR, unless the input length is zero. In any case, i t resets the column indicator save area to nOl", resets the 5475 buffer pointer, and sets to X'4F' the SIO in CINT. Then $CON turns off the column indicator display (to avoid burning out the lights), issues an SIO to unlock the keyboard and enable interrupts, and again waits for WORK. $CONP - 5203 OUTPUT CONSOLE PROCESSOR When posted for WORK, $CONP checks the printer-availability flag. This flag is on if $PRINTER is currently printing a job. If the flag is on and RMTGEN specified &PRTCONS=2, $CONP frees all MULTI-LEAVING buffers currently queued on its Function Block (using subroutine $FREEBUF) and again waits for WORK. But if RMTGEN specified &PRTCONS=l, $CONP checks to see if it should force messages to be printed on the 5203. It does this by comparing the number of MULTI-LEAVING buffers currently queued on its Function Block with a maximum number. If the comparison is low, it nonprocess exits until either the comparison is not low or the printer-availability flag is off; if the comparison is not low, it performs a page eject before starting to print messages. To print messages, $CONP first prevents the logical printer routine $PRINTER from using the 5203 simultaneously; to prevent this, it sets the UNIT wait bit in $PRINTER's Function Block. Then $CONP attempts to find an outstanding 4-byte coded error message; if i t finds one it expands the message to eight bytes and causes it to be printed. If no error messages are outstanding, $CONP checks for messages from HASP. If there are some, it calls $DCOM to decompress a message. In order not to be forced into a wait contlition on subsequent calls to $DCOM, $CONP then checks whether the MULTI-LEAVING buffer from which the message was decompressed contains more messages; if not, i t calls $FREEBUF to free the buffer. Then $CONP causes the message to be printed, by marking the print buffer busy and nonprocess exiting until it again becomes free. All messages printed by $CONP are single-spaced. 3 - 144 HASP Logic HASP SYSTEM/3 WORK STATION PROGRAM Finally, if no messages remain to be printed, $CONP examines the printer-available bit to determine if it interrupted a job to print messages. If so, $CONP does a page eject. In any case, $CONP resets the UNIT wait bit to unlock $PRINTBR and waits for work again. BSCINT BSCA INTERRUPT ROUTINE The BSCA Interrupt Routine, BSCINT, processes all interrupts and performs all error recovery for the Binary Synchronous Communications Adapter. Processing is always initiated by one of three types of op-end interrupts: end-of-transmit, end-of-r~ceive, and 2-second timeout. For an end-of-transmit interrupt, BSCINT gains control at BSXOPE. If no hardware errors have occurred, i t starts a receive operation: otherwise, it uses subroutine BIDISCON to recover from a possible disconnect and, on return, attempts to retransmit. For an end-of-receive interrupt, a great deal more is done. After having computed the number of received bytes, BIRCV checks for hardware errors: if any occurred, it uses subroutine BIDISCON and then transmits a negative acknowledgment (N~K) to HASP. The section of code responsible for transmitting a NAK first checks whether the wait-a-bit (W~B) sequence had been transmitted most recently; if so, i t transmits the WAB sequence again rather than a NAK. If,not, it determines if more than five bytes had been received. Since the buffer used for a receive is the same as that used for a transmit, the receive operation may have overlaid some or all of the transmitted data; since the starting or ending sequence was incorrect or a hardware error occurred, BSCINT has not yet received a positive acknowledgment for the transmitted data. To alleviate this problem, the first five bytes of the transmit data were saved before the buffer was transmitted. If the receive operation overlaid more than these bytes, the buffer cannot again be transmitted; the first two saved bytes are replaced with a DLE-ACKO and the transmit ending address is set to the starting address plus two. Then the routine transmits a NAK to HASP. If the received starting sequence was a NAK, the interrupt routine sets up an error message of 02000000 (NAK received), refreshes the first five bytes of the buffer and the transmit ending address, and retransmits the buffer to HASP. If the received sequence was DLE-ACKO, BSCINT sets flags to show $BSC~ that a transmit/receive operation has completed: then i t exits by starting a 2-second timeout. If the 2-second timeout completes before $BSCA has cancelled it, BSCINT sets the 2-secona-timeout-complete flag and exits by disabling BSCA interrupts. If the second byte of the received starting sequence was STX and the ending byte was ETB, BSCINT validates the Block Control Byte (a HASP control byte which contains a modulo-16 received-block count) and saves the 2-byte HASP Function Control sequence. If the BCB is as expected, interrupt processing concludes as for DLE-ACKO. Otherwise, the STX is System/3 Work Station 3 - 145 HASP SYSTEM/3 WORK STATION PROGRAM changed to X'FF' as a signal to $BSCA to throw the buffer away and the difference between the received BCB and the expected BCB is examined. If the modulo-16 difference is -2 or -1, BSCINT tolerates the error; otherwise it sets up an error message of 02rreeOO to display the received and expected BCBs and it builds and transmits to HASP a BCBerror control sequence. $BSCA - COMMUNICATIONS ADAPTER PROCESSOR $BSCA nonprocess exits until BSCINT posts it with an indication that either an error message awaits synchronous processing, a receive operation has completed without error, or a 2-second timeout has occurred. If an error message was produced by BSCINT, it must be placed in the circular Error Message Trace Table by a synchronous processor rather than an interrupt routine, since the $MSG subroutine is not reentrant. $BSCA calls the $MSG subroutine to add the error message to the area table. If a receive operation has ended without e~ror, $BSCA processes the received buffer, which is always the first buffer on $BSCA's buffer chain. If the buffer does not contain text, $BSCA frees it immediately. Otherwise $BSCA inspects the buffer's first RCB (or first SRCB if the RCB indicates a MULTI-LEAVING control record). If the RCB is zero (typical when HASP sends wait-a-bit) $BSCA frees the buffer. Otherwise, $BSCA compares the RCB (or SRCB) with the field FBRCB in all FBs el~gible to receive buffers; if there is no match, it frees the buffer. But if a match is found, $BSCA again determines if the first record in the buffer is a control record. If so, it posts the subject FB for PERM and resets its POST bit to indicate a possible early post (the POST bit is turned on by subroutine $PERM); then it frees the buffer. But if the buffer contains data records, $BSCA dequeues the buffer from its own FB and queues i t onto the subject FB, in the process reducing its own buffer count by one, increasing that of the subject FB by one, and, if the subject FB's buffer count (FBBCT) becomes equal to or greater than the subject FB's maximum buffer count (FBBMX), resetting the appropriate bit in the master Function Control Sequence $FCS by using FBFCS. If $BSCA turned off an FCS bit, it turns on flag BFCSOFF. Whether or not $BSCA turned off an FCS bit, it inspects the subject FB's flags; if flag BFCON is on in FBFLG, $BSCA resets that flag and its own BFCSON flag. Flag BFCSON expedites transmission of a response, and flag BFCSOFF delays transmission. The effect of the above manipulation is to avoid an unnecessary line turnaround when a printer or punch is temporarily at its buffer limit. Having processed the received buffer, or if a 2-second timeout occurred, $BSCA determines What and when it is to transmit. It transmits a response immediately under any of the following conditions: 1. 3 - 146 Wait-a-bit was received from HASP. HASP Logic HASP SYSTEM/3 WORK STATION PROGRAM 2. A text buffer is ready to send. 3. Flag BFCSON is set and there is a free 4. Text was received from HASP, flag BFCSOFF is not set, and there is a free buffer. buffer~ 5 • . Two seconds have passed since end-of-receive. The response transmitted is one of the following: 1. Text if a text buffer is ready to send 2. A Function Control Sequence if there is a free buffer and the FCS has changed 3. DLE-ACKO, if there is a free buffer and the FCS has not changed from when it was last transmitted 4. Wai t-a -bi t _(including FCS) if there are no free buffers. To get a free buffer $BSCA uses subroutine BSGBUF, which queues the buffer on $BSCA's buffer chain (FBBUF) in last-in, first-out fashion and increments its buffer-count (FBBCT) by one. Additionally, a part of BSGBUF sets up the transmit starting address. receive starting address, and receive ending address, and may be called separately from BSGBUF. $CMDSCAN - LOCAL COMMAND SUBROUTINE If RMTGEN parameter 'S3CMDS is set to 1, code is assembled to provide a local command facility. Code appears in four places: 1. $CMDSCAN, to process the commands 2. $CVB, used by $CMDSCAN to convert decimal command operands to binary 3. $MFCU, to allow $CMDSCAN to check nonblank cards from dormant hoppers ($CMDSCAN returns condition code equal if a card contained a command; the hopper remains dormant) 4. $1442, with the same functions as $MFCU. $CMDSCAN receives a pointer to a card in index register 1. It examines the card for a valid command and branches to the proper command routine, or returns to its caller with condition code not-equal. Each command routine processes the command's operands as necessary. and exits to one of three labels: 1. CMDEND (normal end) to print 'CODEOOOO' 2. CMDSYN (syntax error) to print 'CODE0001" System/3 Work Station 3 - 141 HASP SYSTEM/3 WORK STATION PROGRAM 3. CMDOPD (operand error) to print 'COD~0002'. A command routine may use the $CVB subroutine to convert an operand from decimal to binary. Index register 1 must point to the decimal operand's high-order byte. If this byte is not numeric, $CVB will branch to CMDSYN: otherwise, on return from $CVB, the binary result will be rightjustified in bytes $CVBANS and $CVBANS-l, and index register 1 will point one byte past the low-order digit of the decimal operand. $LEOF, $PERM, $REQ - CONTROL SEQUENCE SUBROUTINES These subroutines transmit to HASP certain control sequences required for proper operation of HASP MULTI-LEAVING Remote Job Entry: logical end-of-file, permission-granted, and request-permission. $LEOF sends the sequence RCB, SRCB, SCB where RCB is taken from the FB pointed to by register 2 (FBRCB), SRCB is X'SO', and SCB is X'OO' (a string control byte of X'OO' is an end-of-Iogical-record SCB: occurring immediately after an SRCB, such an SCB indicates a zero-length record). $PERM sends the sequence RCB, SRCB, EOB whe~e RCB is X'AO' (permissiongranted for function described in SRCB), SRCB is taken from FBRCB of the FB pointed to by register 2, and EOB is x'OO' (a zero RCB indicating logical-end-of-transmission-block). $PERM also sets the bit EWFPOST in the field FBEWF; this "early-post" bit is reset by $BSCA when it finds any permission-type control record whose SRCB matches FBRCB. $REQ sends the sequence RCB, SRCB, EOB where RCB is x'90' (requestpermission for function described in SRCB) and SRCB and EOB are as described for $PERM. Code common to all three routines requests from $CKLEN three bytes of space in a MULTI-LEAVING buffer, moves the 3-byte Sequence, and calls $BFLUSH to truncate the buffer and queue it on $BSCA's buffer chain. $DCOM - DECOMPRESSION SUBROUTINE $DCOM is called by one of the output processors (such as $PRINTER) to decompress a logical record from a MULTI-LEAVING buffer into an area whose starting address is supplied by the caller. (HASP transmits all data records to MULTI-LEAVING terminals in a compressed and truncated format). If decompression is successful, $DCOM returns to the caller at an offset of three bytes; if $DCOM recognized a logical end-of-file, it returns at an offset of zero. To decompress a logical record, $DCOM first examines the address in FBCURL, 2-byte field in the caller's FB reserved for the use of $DCOM. If that field is nonzero, it has previously been set by $DCOM to point to the RCB following the last-decompressed logical record in the current buffer. If that RCB is not X'OO·, $DCOM decompresses to the caller 1 s area (which must be two bytes longer than the maximum record length) the 3 - 148 HASP Logic HASP SYSTEM/3 WORK STATION PROGRAM record following the RCB, moves the SRCB to FBSRCB, saves the a"ddress of the next RCB in FBCURL, and returns to the caller as explained above. But if FBCURL is zero, $DCOM checks if more buffers are queued on the caller's FB. (If FBCURL is nonzero but the RCB to which i t points is zero, $DCOM first frees the current buffer and then proceeds as if FBCURL were zero.) If one or more buffers are queued, $DCOM selects the first buffer, points to its first RCB, and decompresses a logical record as above. But if no buffers are queued, $DCOM waits for WORK, to be posted by $BSCA ~hen the next buffer for the same output device is received. The output buffer's address is specified by the caller in field FBAREA: on return, $DCOM replaces this field by the address of the last-pIus-one output byte. $CMPR - COMPRESSION SUBROUTINE $CMPR compresses data from a user-specified input area to a local work area and transmits it to HASP by calling subroutine $CKLEN. When called, $CMPR examines the status of its local work area. If the work area is busy, $CMPR has been called by some other processor and has in turn called $CKLEN; $CKLEN is nonprocess exiting until i t can find sufficient bytes in a MULTI-LEAVING buffer to allocate to $CMPR. In this case, $CMPR nonprocess exits until its work area becomes free. When the work area is free, $CMPR compresses into i t the text pointed to by F BAR EA. Compression consists of either full compression and truncation, only truncation, or neither compression nor truncation, as selected by the setting of the RMTGEN variable 'COMP=. Once the record is compressed, $CMPR calculates its compressed length and calls $CKLEN with a request for the number of bytes i t requires in a MULTI-LEAVING buffer. When $CKLEN returns, $CMPT moves the compressed record, shows its work area free, and returns to the caller. $CKLEN - MULTI-LEAVING BUFFER ALLOCATION SUBROUTINE $CKLEN returns to its caller the address in a MULTI-LEAVING buffer of the rightmost byte of an area whose length is specified by the caller. The caller specifies a length in register one. If $CKLEN has a current buffer, its current buffer pointer pOints to the last-allocated byte. It adds to this the caller's specified length. If the resultant address is lower than two bytes before the end of the buffer, $CKLEN saves this address as its current buffer pointer and returns this address to the caller in register one. But if the resultant buffer address is not lower than two bytes before the end of the current buffer, $CKLEN truncates the buffer, queues it on $BSCA's buffer chain, and posts $BSCA by turning on flag BFPOST in byte BCF1. To truncate a buffer, $CKLEN moves the current buffer pointer to its first two bytes and the sequence System/3 Work Station 3 - 149 HASP SYSTEM/3 WORK STATION PROGRAM EOB, ETB (X'0026') to the two bytes after the byte pointed to by the current buffer pointer. After having truncated and queued the current buffer or if on entry there was no current buffer, but not if entered via entry point $BFLUSH (in which case $CKLEN returns immediately after truncation and queueing), $CKLEN attempts to get another buffer to satisfy the caller's request. If no buffer is free, it nonprocess exits until one comes free. It initializes the current buffer pointer to point to what will eventually be the buffer's FCS2 byte. It initializes a pointer to the last byte available in the buffer, and it saves the address of the buffer's chain word in a third pointer. Then i t allocates space for the caller and returns, as above. $FREEBUF - MULTI-LEAVING BUFFER FREE SUBROUTINE $FREEBUF dequeues the first buffer from the buffer chain word FBBUF of the FB addressed by register two upon entry; subtracts one from FBBCT, the count of buffers enqueued upon that FB; and compares the new count with FBBMX. If the compare is low, $FREEBUF ORs the 2-byte field FBFCS into the 2-byte field $FCS, posts the $BSCA processor, and sets flag BFCSON in both the subject FBts flags and the BSCA flag byte. (See the $BSCA processor description for a discussion of BFCSON.) In any case, $FREEBUF queues the just-dequeued buffer on chain word $MLPOOL in last-in, first-out sequence. If the system was generated for a 5471 Console, $FREEBUF posts $CON, the Console Processor. Then $FREEBUF returns to its caller. ABEND - CORE DUMP SUBROUTINE ABEND produces a core dump on the 5203 Printer. The code for ABEND is assembled only if the RMTGEN specification &DEBUG=l has been used. &DEBUG=l also causes the generation of extra debugging code throughout the terminal program; some of the extra sequences of code generated contain conditional branches to ABEND. ABEND may also be called from the CE panel of the System/3 oy setting the IAR to its address. Each line produced by ABEND consists of a 4-character address, 64 characters representing the 32 bytes starting at that address, and their printable equivalent in 32 more characters, bounded at the left and the right by a single asterisk; or four asterisks in the address position followed by blanks, to indicate that all of core up to the next line's address or the end of core would have printed the same as the previous line. The ABEND dump routine req~ires a printer with at least 1200 print positions; if a 96-print-position printer is used, not all of the EBCDIC portion of the line will be printed. The first six bytes of printed core contain the address recall register, register 1, and register 2 as of the time ABEND gained control; the remainder of core is intact. 3 - 150 HASP Logic HASP SYSTEM/3 WORK STATION PROGRAM $LOG - HASP ERROR RECORDING SUBROUTINE $LOG is a reentrant subroutine which maintains in-core error recording counters. Each counter is two bytes long and has a maximum count of 65535. There are eight counters for each of the following bytes: 1442 1442 BSCA 5203 5203 5424 Status Status Status Status Status Status Byte Byte Byte Byte Byte Byte 2 (if &S31442=1) 1 (if &S31442=1) 2 2 1 1 The countErs are captioned, printed, and reset by IHEREP at program load time and thus form a permanent record of unit checks associated with the above devices. Only those counters which represent unusual unit checks are printed by IHEREP. $MSG - ERROR MESSAGE TRACING SUBROUTINE $MSG adds the 4-byte coded entry addressed by register 1 to the circular trace table of error messages. This table is examined by the 5471 Console Processor and under certain conditions by the 5203 Output Console Processor; $MSG posts whichever of these processors has been generated. The various error messages supplied to this routine by its callers are explained in the System/30perator's Guide. $INIT - INTIALIZATION ROUTINE $INIT gains control when program loading is complete. It sets the print chain image, reads and processes REP cards, sets the 5203 forn~ length register, sets the 5424 print buffer register, establishes communication, sets up buffers, and exits to the commutator. To set up the print chain image, $INIT reads the printer status bytes. If the 48-character-set bit is on, it moves the LC image to the image area; otherwise, it moves the PN image. Then $INIT starts processing REPs. The format of a REP card is: column 2 R~ 9 addr 17 REP-data where "addr" must be a valid hexadecimal core address of exactly four characters (or four blanks) and "REP-data" is a sequence of one or more replacement groups with the last group terminated by a blank and all other groups terminated by commas. A replacement group is a string of 2n (n any integer) hexadecimal characters. The blank after the last replacement group may be followed by comments. System/3 Work Station 3 - 151 HASP SYSTEM/3 WORK STATION PROGRAM Starting at the address specified by "addr" the REP routine will s,tore bytes one at a time corresponding to byte pairs of the "REP-data" taken from left to right. If the "addr" specification is blank, bytes will be stored starting at the first byte after the byte last used by the preceding REP card (or at zero if there was no preceding REP card). A REP card whose "REP-data" field contains no data is valid; its "addr" field (if any) specifies the address of the first byte to be REPd if the next REP card's "addr" field is blank. To process REPS, $INIT reads a card from the primary hopper of the MFCU; a read error will give an F3 halt. If the card image contains "REP" in columns 2-Q, it is processed according to the above specifications, with absolutely no validity checking, and $INIT reads another card, as above. If the card image contains "&MLBFSIZ=" starting in column 1, $INIT converts to binary the specified decimal buffer size (which must immediately follow the equal sign and be terminated by a blank) and substitutes the result for the default buffer size. Then $INIT reads the next card, as above. If the card image contains "/*SIGNON" starting in column 1, $INIT overlays the default sign-on card with i t and continues as if the card were an EOR card. If the card image contains "EOR" (END-OF-REPS) in columns 2-Q, $INIT terminates rep processing, loads the 5203 print forms length register and the 5424 print buffer address register and establishes conununications. To establish communications, $INI'I' first disables and then enables the BSCA. Next, i t examines the sign-on card to see if dialing information was specified. If so, it determines the starting and ending addresses for the telephone number (which is not checked for validity) and loads these values into the current and stop address registers after first ensuring that the data line is unoccupied. (If the data line is occupied, $INIT assumes the operator dialed and waits for the data set to become ready.) After starting an auto-call operation and looping until an op-end interrupt occurs, $INIT checks for timeout status; if so, the auto-call unit returned an abandon-call-and-retry signal and a CA halt (call-aborted) occurs. When the operator resets the halt, the entire logic starting with disable-BSCA will be reexecuted. But if the timeout bit is off, $INIT assumes the call was successful and loops until a dataset-ready indication occurs, as 'above. When the data set becomes ready, $INIT transmits the 2-byte sequence SOH-ENQ, a sequence recognized by HASP as a request from a MULTI-LEAVING terminal. If the receive part of this transmit/receive command ends with timeout, the operation is repeated; if it ends with any other abnormal status, one of two things occurs. If the system was generated with &DEBUG=l and the address knobs on the System/3 console are set to any odd address, the System/3 halts; the halt indicators display a hexadecimal image of the BSCA error status byte. Otherwise, and when the operator resets the halt, the entire logic starting with disableBSCA will be reexecuted. 3 - 152 HASP Logic HASP SYSTEM/3 WORK STATION PROGRAM If the receive operation ended normally, the two received bytes should be DLE-ACKO. If they are not, the transmit/receive operation is performed. If DLE-ACKO was received correctly, the message "COMMUNICATION ESTABLISHED" is printed on the 5203. If a 5471 was specified when the system was generated, its interrupts are enabled and the same message is printed on it. If a 5475 was specified, its interrupts are enabled. $INIT now performs buffer initialization. Buffer initialization consists of three steps and overlays the initialization code with MULTI-LEAVING buffers. As the first step, the value of MULTI-LEAVING buffer size is set in the various locations throughout the program that requires it; it may have been changed by the &MLBFSIZ control card. Step two moves the actual buffer initialization code to low core, where it is executed as step three. Execution consist of chaining together all buffers but the first buffer (which contains the sign-on record and is afterward queued to the $BSCA processor) with the chain origin at $MLPOOL. When buffer chaining is complete, the sign-on buffer is queued as mentioned and control passes to the commutator. $COM gives control in its turn to the $BSCA processor, which as a special, first-time function transmits to HASP the buffer containing the sign-on card image. System/3 Work Station 3 - 153 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 HASP IBM-1130 WORK STATICN PROGRAM The 1130 MULTI-LEAVING terminal program is designed to operate on a system with 8K words which contains the standard Binary synchronous Communications Adapter. The unit record equipment supported may include any or all of the following devices: 1. 1442 Reader/Punch or Punch 2. 2501 Reader 3. 1132 Printer 4. 1403 Printer 5. Console Keyboard/Printer. Programs developed for the 1130 in conjunction with the HASP Remote Job Entry feature are a.ssembled using the OS Assembler. The 1130 instruction set is generated through the use of macro-instructions corresponding to the actual 1130 hardware commands. Additionally, pseudo (assembler) operations are available to aid in the development of 1130 programs on System/360 The object decks produced by the OS Assembler are subjected to further processing by a program (LhTRRIP) which condenses and changes the format of the EBCDIC decks to facilitate 1130 loading. The remote terminal system for the 1130 is composed of several programs briefly described as: RTPBOOT - A bootstrap loader consisting of a single "load mode" format card and several column binary and EBCDIC program cards. The function of RTPBOOT is to bootstrap an EBCDIC format loader (RTPLOAD) into 1130 core. RTPBOOT will load from either a 1442 or a 2501 Card Reader. RTPLOAD - Loads into the upper segment of defined 1130 storage and then loads the main terminal program (RTP1130) into the lower extent of 1130 storage. RTPLOAD also processes REP cards and performs the initial processing of /*SIGNON control cards. RTP1130 - The main terminal processing program which provides the MULTI-LEAVING support for the 1130. The following sections provide more detailed information on the design and implementation of the above programs. The subsequent sections present the basic structure of the terminal program for the 1130. Included are descriptions of the commutator· logic and associated processors; system subroutines; processor subroutines; control block formats and data block general formats. IBM-1130 Work Station 3 - 155 HASP IBM-1130 WORK STATION PROGRAM The documentation presented is introductory in nature. The user intending to modify the system should use the documentation in conjunction with a program listing that contains commentary in much greater detail. COMMUTATOR PROCESSORS Distribution of CPU time to the processors concerned with the functions necessary to support terminal devices is through programmed commutator logic. Each processor which needs CPU time and is dependent on external I/O device rates is represented by a commutator entry. The commutator entry consists of the following basic elements: 1. A named commutator -gate- which takes the form of a branch to the next commutator entry (gate closed) or a NOP if the entry is active (gate open) 2. A long-form branch to the active commutator main routine used if the gate is open 3. A named return point for reference by the main commutator routine 4. A named end to the commutator entry which is the address of the next commutator entry. The basic structure as defined may also contain register save-restore sequences to be used for each entry-exit cycle through the commutator. The processor entry from the commutator (gate open) usually provides for a method of setting a variable entry to the segments of the processor which are involved with waiting for I/O to complete or some system resource to become available. The general operation of the commutator involves the opening and closing of processor gates, the setting of variable entry points within the processors, the initiation and associated wait period for I/O operations, and the return to the commutator to share the CPU during wait periods. The last instruction in the commutator is a branch to the first instruction in the commutator which initiates the next cycle. The current system does not provide for a priority relationship among commutator processors. The main commutator processors are contained in the RTPl130 system and briefly described in the following sections. TPIOX - SCA Input/Output Control Processor Controls the transmission of data and/or control records between HASP and RTPl130 via the SCA. All adapter I/O is initiated using the SCA I/O Supervisor - BSXIOS. TPGET 3 - ~.Processor 156 For TP Buffers From HASP HASP Logic HASP IBM-1130 WORK STATION PROGRAM TPGET processes data received from HASP in the form of TP buffers or control records preprocessed by TPIOX. Control record processing is in the form of request-to-start or permission-to-send functions. Data buffers are deblocked, decompressed, converted to appropriate codes (1403 Printer, 1442 Punch, etc.), and queued for the specified commutator I/O processor. Control information pertinent to the unique requirements of each data type is provided through the associated UFCB. TPPUT - Processor For Data Destined For HASP TPPUT acquires a TP buffer from the free chain and collects data from defined sources (card reader(s), console keyboard, etc.) to be processed (converted, truncated, compressed, etc.) and inserted into the buffer which is queued for TPIOX transmission to HASP. RDTFO - 2501 Card Reader Processor RDTFO is a conditionally assembled processor which supports the 2501 Card Reader as a job entry device. The functions of monitoring for a 2501 ready condition; reading cards; requesting permission to transmit to HASP; waiting for permission to send; queueing data for TPPUT; transmitting end-of-file conditions; and device error recovery are contained in this processor. RPFFT - 1442 Reader And/Or Punch Processor RPFFT is a conditionally assembled processor which supports the 1442 5, 6 or 7 - as a card reader, card reader/punch, or a card punch only. The functions to be performed are controlled by the assembly variables chosen and the use of local operator commands, when applicable. The reader section of code monitors for a "ready" condition; reads cards for trans~ssion to HASP via TPPUT; processes end-of-file communications and provides error recovery. The punch section of code waits for data to be punched through interrogation of a queue developed by the TPGET processor and provides error recovery and punch termination procedures. PRFOT - 1403 Printer Processor PRFOT is a conditionally assembled processor which supports the 1403 Printer as a terminal output device. The functions of monitoring for input to be printed; simulating carriage control operations; processsing end-of-file conditions; setting UFCB status information and error recovery are included in this processor. PRETT - 1132 Printer Processor IBM-1130 Work Station 3 - 151 HASP IBM-1130 WORK STATION PROGRAM PRETT is a conditionally assembled processor which supports the 1132 Printer as a terminal output device. The functions of monitoring for input to be printed; initialization of interrupt processing routines for the 1132 print scan operations; simulation of carriage control operations; processing end-of-file conditions; setting UFCB status information and error recovery are contained in this processor. CONSL -Console Keyboard/Printer Processor CONSL processes console keyboard input and prints on the typewriter messages originating from HASP or internal sources. Keyboard input is initiated by activation of the INT REQ key and by the interrupt routine which sets a flag and opens the console routine gate. Note that the position of the KEYBOARD/CONSOLE switch is not interrogated. and input is assumed to be from the keyboard. The value of the console entry keys is read every commutator .cycle and. if key 0 is on, is stored in location $ENTKEYS. All noncontrol character input is printed, and the card code value is stored for investigation at EOF time. If the first character of input is f t . f t (period), the data is assumed to be a local command. All other dat.a is transmitted to HASP for action as a HASP operator command. Print input is obtained from a queue which originates locally and/or from HASP. Data to be printed may be EBCDIC or tilt-rotate code and black or red ribbon. RTPET - Initialization Processor This special commutator processor is responsible for the initialization functions necessary for the commencement of the 1130 terminal operation in conjunction with HASP. The major functions performed are: 3 - 1. Sets the interrupt transfer vectors for RTPl130 operation 2. Dynamically builds the TP buffer pool using the defined extent of 1130 storage. the end of the 1130 program, and the defined TP buffer size 3. Builds a TP buffer containing the sign-on information processed by RTPLOAD for transmission to HASP 4. Establishes SCA communications with HASP and prepares TPIOX for sign-on 5. Opens the commutator gates for all .. SCA and input processors 6. Disconnects initialization from the commutator 7. Branches to commutator, 158 HASP Logic wh~ch initiates MULTI-LEAVING operation. HASP IBM-1130 WORK STATION PROGRAM SYSTEM SUBROUTINES The following are brief descriptions of the major subroutines contained in the RTPl130 program. These subroutines are available for use by any system commutator processor with the restriction that they may not be used at interrupt time. Detailed information concerning the calling sequences, input values, etc. may be found in the listing of the RTP1130 program. SGETQEL - Dequeue An Element From a Chained List Given the address of a chained list, SGETQEL returns the address of the first element available in the list and removes the element and rechains the list. The chain field of the dequeued element is set to zero before returning. If the chain is null, an indication is returned to the user. SPUTFQL.- Enqueue An Element In A Free Element Chain Given the address of a free element chain element to be returned to the free chain, free chain. The construction of the free depending on system processor utilization pointer and the element chain is in of the free the address of an is returned to the random order element chain. SPUTAQL.- Enqueue An Element In An Active Chained List The address of an element supplied by the caller is used to build a chained list in first-in, first-out order. STPOPEN.-Initiate Control Record Transmission Control record communications with HASP in the form of request-to-start and permission-to-send sequences is the function of this routine. Input includes an indication of the control record type and a pointer to the UFCB for the device being processed. SSRCHB - Search UFCB Chain For Matching RCB The RCB code supplied by the user is used to search the UFCB chain for a UFCB with a matching RCB code. An indication of the status of the search is returned to the caller. SWTOPR.~ Type Message On Console Typewriter The caller supplies the address of a message in EBCDIC with control information indicating red or black ribbon and the number of characters to be typed. The address of a routine to be given control in the event that the message cannot be processed immediately must also be supplied. IBM-1130 Work Station 3 - 159 HASP IBM-1130 WORK STATION PROGRAM The message is queued for processing by the console typewriter commutator routine. SLOGSCA_-.Log SCA Error Messages On Console TYpewriter Error conditions associated with the SCA operation are logged on the console typewriter for information and possible remedial purposes. The format of the message logged is: SCA LOG XXXXXXXX Where the value of "XXXXXXXX" is determined by the caller and is in fact the contents of the ACC and EXT on entry to the routine. An indication of the status of the request to log is returned to the caller. SMOVE ~.Move A Variable Number Of Words This routine provides for the moving of a specified number of words from a source block to a target block. SXPRESS.-Convert Card Code To EBCDIC The card code (12-bit) input is converted to EBCDIC using a high-speed conversion algorithm in conjunction with a minimal conversion table. Special consideration is given to "blank" conversion under the assumption that most cards are dense with "blank" data. SXCPRNT - EBCDIC. To. Console Printer Code Conversion SXCPRNT converts a single EBCDIC character to the equivalent console printer tilt-rotate code, using a table lookup method. SXPPRNT.-EBCDIC To 1403 Printer Code Conversion SXPRNT converts a single EBCDIC character to the equivalent 1403 Printer 6-bit-with-parity code, using a table lookup method. SXCPNCH -.EBCDIC.To Card Code Conversion SXCPNCH converts a single EBCDIC character to the equivalent 12-bit card code, using a table lookup method and conversion algorithm. STRACE 3 - 160 ~ Trace Machine Registers HASP Logic HASP IBM-1130 WORK STATION PROGRAM STRACE stores the information shown below in a table of variable length. Each entry is the result of the execution of the linkage created by the STRACE macro. The trace table created at assembly time is circular. Trace table entry: Word. DescriEtion 1 Count of the number of entries for this $TRACE 2 Location +1 of caller to $TRACE 3 Contents of ACC 4 Contents of EXT 5 Contents of XR1 6 Contents of XR2 1 Contents of XR3 The count of the number of entries is also stored in the STRACE macro linkage. The assembly of STRACE is a function of the variable $TRACE. SSDDMP - System Core Dump SSDUMP is a conditionally-assembled subroutine which allows post-mortem or dynamic dumps on either the 1132 or 1403 Printer. SSDUMP is assembled if &DEBUG SETA 1 is included in the RTP1130 source deck. Linkage to SSDUMP via location 0 is also established so that a postmortem dump may be taken by pressing SYSTEM RESET and START. The linkage to use this subroutine dynamically is contained in the system listing. Note that the logic of the subroutine does not allow concurrent operation of the selected printer and other devices. PROCESSOR SUBROUTINES The following are brief descriptions of the major subroutines which may be used by commutator processors subject to the restrictions that these routines are processor-dependent in their operation. For example, the seA I/O Supervisor (BSXIOS) is used at initialization time and by the TP buffer manager but cannot be simultaneously used by these commutator processors. BSXIOS - Low sEeed BSCA InEut/Output sUEervisor IBM-1130 Work Station 3 - 161 HASP IBM-1130 WORK STATION PROGRAM BSXIOS processes functions on the BSXIOS initiates programs for the functions. requests for transmit, receive, or program timer low-speed Binary Synchronous Communications Adapter. the requested function and prepares the interrupt associated interrupt processing of the desired The status of the function performed by BSXIOS is contained in a communication cell which is addressed by a variable pointer word. A communication cell is defined for both read (receive) and write (transmit) operations. Various completion codes stored in the cells provide the status of the function with respect to normal or abnormal termination. BSXIOS expects the caller to provide the address of an appendage routine to be entered at the termination (interrupt time) of every write operation. The purpose of the write end-of-operation appendage is to allow reinstruct (read operation) of the communications adapter as soon as possible after the write completion. DBLOCK_~ Deblock, Decompress,_Convert, And Store Data From HASP DBLOCK locates a record (defined by RCB) in a TP buffer as specified by a given UFCB, decompresses, edits, and moves data to a selected target area. The target area must have the format described under "Output Element (Tank) Description.The operation of DBLOCK includes the printing of the output tank with an initialization value supplied by the user (usually the value of a blank for the associated device); the updating of control information in the UFCB; the setting of control information in appropriate fields of the output tank; the automatic entry to conversion and store routines unique to the device associated with the UFCB supplied, and the communication of the status of the buffer being processed (end-of-file, end-of-block conditions). TPCOMPR.-Construct Records For Insertion In TP Buffers TPCOMPR constructs a logical -record consisting of a physical input record from attached 1130 devices (card reader(s), console, etc.). The logical record constructed consists of the original input after code translation, data truncation, and/or compression (optionally) and attachment of the control bytes necessary for HASP processing. The control bytes are per the standard HASP MULTI-LEAVING conventions. The options listed below are set at assembly time to generate the supporting code. 3 - 1. No compression or truncation 2. Trailing blank elimination only (truncation) 3. Blank and duplicate compression and blank truncation 162 HASP Logic HASP IBM-1130 WORK STATION PROGRAM The current version of TPCOMPR assumes card code input. DBUGSCAL - Trace Routine For Low Speed SCA This routine is conditionally assembled as a function of "&DEBUG" and provides a trace of all SCA interrupts in the form shown below. Entry is from BSXIOS interrupt processing routines. External disabling of the SCA trace function is provided through the entry keys. The trace table limits are preset to use the upper 8K of a 16K 1130 and may be changed either by assembly or by the appropriate REP. See the program listing and refer to locations DBUGSTRT and DBUGSTND. The trace table format is: 1 Operation type (BSXIOPT) 2 DSW at interrupt time 3 BSXIOS Completion Code (BSXOPF) 4 Location of interrupt 5 Data received/transmitted 6 Data transfer count 7 Read or write sequence index 8 Spare word TPBUILD - construct TP Buffers TPBUILD constructs TP buffers for TPIOX transmission to HASP. Data to be inserted and length of insert are provided by user. TPPUT initializes this routine by providing the buffer to be used and setting pointers and variables. The data to be inserted is usually in the form of a logical record as constructed by TPCOMPR. RTPl130 CONTROL BLOCK AND DATA FORMATS Chained List General Format All queues maintained within RTP1130 are of the chained list form and consist of free queues and free queue pointers and active queues and active queue pointers. Free queues are chained in a random fashion IBM-1130 'Work Station 3 - 163 HASP IBM-l130 WORK STATION PROGRAM while active queues are maintained in a first-in, first-out order.. general form of a queue is: Address of next element chain word. The Set to zero if no element. Variable length element. Variable length element. Last variable length element (chain word set to zero). Examples of chained lists are: TP buffers, console message tanks, and printer data tanks, punch data tanks. The size and number of elements in the queue is variable according to the nature of the queue. UFeB - Unit Function Control Block Description Each device which transmits data to or from HASP via the communications adapter processor must be represented by a unit-function control block. The general format of a UFCB is: Reference word Description UFCBCNW o Chain word to next UFCB UFCBNFO 1 Information word ••• Input Byte 0 = Reserved Byte 1 = Input Code = 0 for IBM Card = 1 for PTTC/8 = 2 for EBCDIC UFCBSAR 2 Status and RCB Code ••• Byte 0 = Status of unit-function = x'90' if request to start sent from input unit-function or if request to start received for output unit-function = X'AO' if permission to start received for input unit-function or if permission to start sent for output unit-function. Byte 1 UFCBFCS 3 - 164 3 HASP Logic = RCB code associated with this UFCB Function control sequence bit associated with this UFCS (and RCB) HASP IBM-1130 WORK STATION PROGRAM UFCBCO~l 4 Address of commutator processor gate address for processor associated with this UFCB . UFCBFQP 5 Tank free queue pointer for output devices or address of input element for input devices UFCBBFP 6 Queue pointer for active TP buffers for output devices or end-of-file flag for input devices UFCBBFC 7 count of active TP buffers for associated device UFCBBFL 8 Limit of active TP buffers for associated device UFCBPBP 9 Buffer address of current buffer being processed by TPGET processor UFCBPBA 10 Address of next RCB in buffer being processed UFCBPBS 11 position indicator for next RCB in buffer being processed. Set to 0 if RCB right-justified. Set to 1 if RCB left-justified. UFCBPWD 12 Output device width = 2*W/P, where W = actual width in characters and P = 2 for packed output tanks or P = 1 for unpacked output tanks UFCBPRO 13 Address of data processing routine (usually a conversion program) for each character processed by $DEBLOCK UFCBSTO 14 Address of routine to store data processed by ·UFCBPRO· program TPBUF - TP Buffer Element_Description All data transmitted to or from HASP is contained in variable length buffers (variable at generation time) with the following general format: Reference word Description TPBUFCW o Chain word to next TP buffer TPBUFST 1 Reserved TPBUFCB 2 Buffer control word Byte 0 = 0 (Reserved) Transmit function ••• Byte 1 = Number of bytes to be transmitted minus 2 for end sequence which is inserted by BSXIOS IBM-1130 Work Station 3 - 165 HASP IBM-1130 WORK STATION PROGRAM Receive function ••• Byte 1 = Number of bytes received Timer function ••• Byte 1 = Number of program time interrupts processed before ending timer operation TPBUFDT 3 Start of data area of length defined by n&MLBFSIZ· which includes ••• TPBUFHD 3 Bse header value indicating the function (Read, write. timer) to be performed as defined by SCA function indicators TPBUFBF 4 Control sequence ••• Byte 0 Byte 1 TPBUFFR 5 TPBUFSR 6 = BCB = first byte of FCS Control sequence ••• Byte 0 = Byte 1 = RCB Second byte of FCS Control sequence ••• Byte 0 = SRCB Byte 1 = SCB OUTPUT ELEMENT (TANK) DESCRIPTION Local terminal output devices (printers, punch, etc.) receive.data via elements or tanks which are built by the commutator routine responsible for processing TP buffers transmitted by HASP. The general format of these tanks is described below. Reference Word. Description TANKWRDA o Chain word to next tank TANKWRDB 1 Reserved TANKWRDC 2 Control word ••• Byte 0 = Reserved for device use Byte 1 3 - 166 HASP Logic = SRCB from record received HASP IBM-1130 WORK STATION PROGRAM TANKWRDD 3 Control word ••• Byte 0 = Reserved for device use Byte 1 = Actual tank data count TANKWRDE 4 Start of variable length data area determined at generation time Note: The element chain word and the data area must start on even 1130 word boundaries. OBJECT DECK FOR~~T The following is the format of the object decks (RPT1130, RTPLOAD) produced from OS/360 assembler output by LETRRIP. TEXT Card 1 "T" for TEXT card identification 2-3 Absolute 1130 load address 4 Word count of data field 5-72 Data field (maximum of 34 words) 73-74 Check sum of columns 1-72 75-16 Identification 77-80 Sequence number END Card Column(s) Description 1 "En for END card identification 2-3 Entry point to program loaded 4-72 Reserved 73-14 Check sum of columns 1-72 75-76 Identification 17-80 Sequence number IBM-1130 Work Station 3 - 167 HASP IB~-1130 ~ORK STATION PROGRAM REP Card 1 Any legal EBCDIC punch 2-4 "REP" 5 Blank 6 Load address format field: "L" for listing option where the specified load address corresponds to the OS/360 assembler listing. "X" for absolute 1130 core address 7 Currently unused but usually punched "0" for continuity 8-11 Load address for first data word and is incremented by 1 for each additional data word. REP cards may be continued oy leaving this field blank 12 Blank 13 Format field for data following. definition as column 6. 14-17 Data field to be loaded in the location computed as a function of columns 8-11 18 " ," Subject to same Columns 19 through 78 are in the same format as columns 13-18 with the exception of column 78, which must be blank. A blank in columns 18, 24, ••• 72 terminates the scan of the card. Note: The WL" option causes the specified data to be divided by 2 for conversion from 360 byte data to 1130 word data. EXAMPLES OF REP CARDS 1. The following cards: Col o 00 1 56 11 23 RREP L02208 X4COO,L004E,X4400,XOOOF RREP 3 - 168 X74FF,XOOOO,X7101 HASP Logic HASP IBM-1130 ~ORK STATION PROGRA~l would result in the code represented below starting in 1130 core location 1104 (Hex): 1104 1106 1108 110A 39, ,L $B $TSL $MDM 15 0,-1 $MDX 1, 1 2. The following card: Col o 1 00 56 11 23 RREP L01112 X4C18,X1FFB would be ignored because columns 2-4 unequal to "REP". REMOTE TERMINAL tv.lAIN LOADER (K'TPLOAD) RTPLOAD is an EBCDIC format loader which is loaded by RTPBOOT into the upper part of defined 1130 core. The 1130 core definition (which is a RMTGEN variable) is used to specify the origin of RTPLOAD. The format of RTPLOAD (and RTP1130) is given under Control Blocks and Data Formats. RTPLOAD also reads and processes "REP" cards as well as the optional /*SIGNON control card. The major functions of RTPLOAu are: 1. Clears storage from location 0 to "&RTPLORG-1 2. Tests for a 2501 or 1442 Card Reader and initializes the card read routine for the appropriate device 3. Reads R1P1130 program cards, performing the conversion from card code to EBCDIC and loading the data into the specified locations 4. Sets up the entry to R'IP1130 when the END card is processed 5. Reads, converts, and stores /*SIGNON and sets indicator for RTPl130 signaling existence if /*SIGNON encountered 6. Transfers control to ft ~TP1130. REMOTE TERMINAL BOOTSTRAP (RTP1130) The bootstrap loader distributed in object form as shown in the subsequent pages is specifically constructed to "bootstrap" thE EBC:JIC main loader (RTPLOAD) into the storage locations defined by "&RTPLORG" IBM-1130 Work Station 3 - 16q HASP IBM-1130 WORK STATION PROGRAM at RMTGEN time. RTPBOOT loads into lower 1130 storage via the load-mode format first card and following binary program cards and EBCDIC conversion table cards. RTPBOOT will load from a 2501 or 1442 Card Reader which is wired for the load-mode sequence initiated by the console LOAD button. REMOTE TERMINAL PROGRAM 360 PROCESSING (LETRRIP) LBTRRIP (Loader for 1130 Relocatable Remote Interleaving Processor) is an OS program executed under OS as part of the RMTGEN procedure. The purpose of this program is to condense the object deck produced by the OS assembler; relocate address constants according to the requirements of the 1130 and produce a new object deck. 1130 INSTRUC'I'ION MACROS The OS A.ssembler Macro instruction listed on the following pages are used to assemble the RTP1130 and RTPLOAD programs as a part of the RMTGEN process necessary to create the 1130 work station program. The general format of the instructions to be assembled with the macros is: LABEL $OP ADDR,TAG,FMT,MOD where: LABEL is the statement label subject to the OS assembler rules and restrictions. $OP is a macro from the set listed at the end of this section. ADDR is the address field of the 1130 instruction. TAG is the index register (TAG) field of the 1130 instruction. FMT is the format indicator for the 1130 instruction: FMT=L for long form FMT=I for long form indirect address FMT=X for short form absolute address FMT=' blank' for short form relative address MOD is the modifier bits field required for some 1130 instructions. Listed below are some of the conventions which must be followed to successfully use the macro package in producing a program for operation on an 1130. 1. 3 - 170 All symbols starting with the character "$" are deemed to be absolute in value. HASP Logic HASP IBM-1130 WORK STATION PROGRAM 2. The symbols WA, WB, and wC are assumed to define absolute values. Note: wA, WB, and WC cannot be used as the first two characters of any relocatable symools. 3. All other symbols are assumed to be relocatable as defined by the OS assembler SRL. 4. Parenthetical expressions are considered to be relocatable if contained in an instruction, e.g .. , $AXT (*-*),WA,L is considered relocatable, whereas $AXT *-*,WA,L is considered absolute. 1130 instruction macros are: Macro Form Description And Notes $LD ADD,TAG,FMT Load ACC $LDD ADD,TAG,FMT Load double (ACC,EXT) $STO ADD,TAG,FMT Store ACC $STD ADD,TAG,FMT Store double (ACC,EXT) $LDX ADD,TAG,FMT Load index $LXA ADD, TAG Load index from address. with F=l and IA = 1. $AXT ADD,TAG,FMT Address to index true. $STX ADD,TAG,FMT Store index $STS ADD,TAG,FMT Store status $LDS ADD, TAG Load status $A ADD,TAG,FMT Add $AD ADD,TAG,FMT Add double $S ADD,TAG,FMT Subtract $SD ADD,TAG,FMT Subtract double $M ADD,TAG,FMT Multiply $D ADD,TAG,FMT Divide $AND ADD,TAG,FMT Logical AND A variation of $LDX Identical to $LDX. IBM-1130 Work Station 3 - 171 HASP IBM-1130 WORK STATION PROGRAM $OR ADD,TAG,FMT Logical OR $EOR ADD,TAG,FMT Logical exclusive OR $SLA ADD, TAG Shift left ACC $SLCA ADD, TAG Shift left and count ACC $SLC ADD,'IAG Shift left and count ACC and EXT $SRA ADD, 'I'AG Shift right ACC $SR'I' ADD,TAG Shift right ACC and EXT $RTE ADD,'IAG Rotate right ACC and EXT $BSC ADD,TAG,FMT,MOD Branch/skip on condition $BOSC ADD,TAG,FMT,MOD Branch/skip and reset interrupt $BP ADD,TAG,FMT Branch ACC positive (long> $BNP ADD,TAG,FMT Branch ACC not positive (long) $BN ADD,TAG,FMT Branch ACC negative (long) $BNN ADD,TAG,FMT Branch ACC not negative (long) $BZ ADD,TAG,FMT Branch ACC zero (long) $BNZ ADD,TAG,FMT Branch ACC not zero (long) $BC ADD,TAG,FMT Branch on carry (long) $BO ADD,TAG,FMT Branch on overflow (long> $BOD ADD,TAG,FMT Branch ACC odd (long) $SKPP Skip ACC positive (short) $SKPN Skip ACC nonzero (short) $SKPZ Skip ACC zero (short) $SKPO Skip overflow off (short) $SKPC Skip carry off (short) $SKPX Skip ACC not equal zero and carry off (short) $B ADD,TAG,FMT Branch unconditionally. long form $BSC with MOD $BS1 ADD,TAG,FMT Branch conditionally and store 1AR 3 - 172 HASP Logic FMT = L or I generates = O. HASP IBM-1130 ~ORK STATION PROGRAM $TSL ADD,TAG,FMT Transfer and store location counter. Assembled as a $8SI with FMT = L, MOD = 0 (long form unconditional branch and store IAR). $MDX ADD,TAG,FM'I Modify index and skip $STL ADD,FMT Store location counter. ADD,O,FMT. $MDM ADD, VALUE Modify memory Wait for interrupt $WAIT $xIO ADD,TAG,FM'I Execute I/O $BSS N,x Block started oy symbol = x= N $BES Assembles as $STX N,X number of words E for even storage Block ended by symbol N = x = number of words E for even storage $NULL Null operation for symbol definition $ADCON ADDR Address constant. Assembles as an absolute 1130 address. "ADDR" must be a relocatable symbol by the Os assembler definition. $NOP No operation. $ZAC Clear ACC. Assembles as $SLA O. Assembles as $SRA 16. GENERAL INFORMA.TION as. Assembly Output If the value of tFULLIST is set to 1 at the time of generation of RTP1130 or RTPLOAD, then the listing produced by the as Assembler will contain the following information: 1. The location counter value for each 1130 instruction or storage location in terms of bytes. The actual 1130 location in terms of words can be determined by dividing the displayed value by 2. The REP facility allows a specification of either byte or word form. IBM-1130 Work Station 3 - 113 HASP 2. IB~-1130 WORK STATION PROGRAM The 1130 instruction is printed in 1130 format. The long form address is in terms of 1130 words and the short form is true relative format. Variable Internal Parameters The generation of the RTPl130 program using RMTGEN provides the user with a simple and flexible means of changing common parameters germane to the configuration of the 1130. Additional internal parameters may be varied by using the source file update feature of the RMTGEN program. Listed below are the major parameters, with a brief description of each, which the user might consider altering as a function of hardware and software performance considerations. Variable Description Conditionally assembles the RTPl130 internal core dump program {$SDUMP) and the BSC adapter trace routine (DBUGSCAL). Default value inhibi~s the assembly of these debugging programs. Maximum console printer message size. bytes per message. Default value is 120 Maximum console keyboard input buffer size. 120 characters per command. Default value is &PRFOTKL Number of 1403 Printer buffers (tanks) provided at assembly time. Default value is 2. The TPGET Processor will build up to the ,value of &PRFOTKL and then suspend operation for the 1403 until the count of buffers falls below &PRFOTKL. &PRETTKL Number of 1132 Printer buffers (tanks) provided at assembly time. Default value is 2. See &PRFOTKL for TPGET action. &PUNFTKL Number of 1442 Punch buffers (tanks) provided at assembly time. Default value is 2. See &PRFOTKL for TPGET action. &CONSTKL Number of console printer buffers (tanks) provided at assembly time. Default value is 5. See 'PRFOTKL for TPGET action. &PRFOBFL Maximum number of TP buffers containing data destined for the 1403 Printer which will be accepted by TPIOX before setting the transmission suspension bit defined in the FCS for the 1403. HASP will suspend transmission of 1403 print data until the FCS bit is reset when the number of 1403 TP buffers becomes less than the value of &PRFOBFL. Default value is 2. &PRETBFL Same definition as 'PRFOBFL except it applies to the 1132 Printer. Default value is 2. 3 - 174 HASP Logic HASP IBM-1130 WORK STATION PROGRA~ &PUNFBFL Same definition as &PRFOBFL except it applies to the 1442 Punch. De:ault value is 2. &CNSPBFL Same definition as &PRFOBFL except it applies to the console printer. Default value is 1. &NPTFBFL Maximum number of TP buffers allotted to input devices collecting data to be sent to HASP. Default value is one greater than the number of card readers defined for RTPl130. IBM-1130 Work Station 3 - 175 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 HASP SYSTEM/360 WORK STATION PROGR~; The following sections outline the basic logic flow of the MULTI-LEAVING Remote Terminal Processor program for System/360 (including Model 20) work stations utilizing Binary Synchronous Communications (BSC) devices. The same work station program is utilized for both the Model 20 and System/360 work stations, depending on the RMTGEN parameter t~~CHINE. The MULTI-LEAVING Remote Terminal Processor program is created by the RMTGEN to operate as an extension of clASP on any model of System/360 used as a remote work station for HASP. This terminal program maintains constant communication with HASP at the central site via several classes of telephone lines to (1) encode and transmit jobs submitted at the remote site for processing on the central computer and (2) print and/or punch the output from jobs thus submitted as the output becomes available. Optionally, if an operator console is attached to the remotp system, informational and control facilities are provided. All of the above functions may occur simultaneously. various techniques are utilized by HASP and the work station program to obtain maximum performance of the remote devices and the communications line. The MULTI-LEAVING Remote Terminal Processor consists of an initialization section, four principal processors, three communications interface processors, and a Communications Input/Output Supervisor. Allocation of CPU time to the various processors is accomplished through a basic program commutator. A processor is entered into contention for CPU time by changing its commutator entry from a NOP to a branch instruction. A single control block, the Total Control Table (TCT) is utilized by all processors to provide for synchronization of concurrent operations, processor status information, reenterability and both interprocessor and intraprocessor communication. The fo~lowing sections discuss the basic logic flow of the various components of the program. COMMUNICATIONS INTERFACE PROCESSOR - OUTPUT ($TPPUT) This processor serves as the interface between the various input processors and the Communications Input/Output Supervisor •. Its function is to compress and encode records for subsequent transmission to HASP at the central site. $TPPUT is utilized as a subroutine by the various input processors and relieves the input routines of the responsibility of data compression and transmission buffer management. As records are submitted for transmission, $TPPUT compresses the records according 'to a compression type generation parameter (tCMPTYPE) and adds the encoded record to its current output ouffer. When the current buffer is filled or truncated, it is chained in an ordered queue for transmission to HASP by the Communications Input/Output Supervisor and a new buffer obtained. Details of the compression and encoding technique utilized by $TPPUT are included as an appendix to this manual. COMMUNICATIONS INTERFACE PROCESSOR - INPUT ($TPGET) system/360 work Station 3 - 177 HASP SYSTEM/360 WORK STATION PROGRAM This processor serves as the interface between the various output. processors (Print, Punch, Console, etc.) and the Communications Input/Output Processor. Its function is to decode and uncompress transmission Duffers received from HASP and to queue the decompressed records to the processor for processing. $TPGET is entered from the commutator and processes buffers from a ordered queue of received buffers established by the Communications Input/Output Supervisor. Records received are deblocked into "decompression tanks" and passed to the appropriate processor. Synchronization and passage of the tanks to the processors is accomplished through the Total Control Table (TCT) for each processor. $TPGET additionally is partially responsible for metering the flow of each type of record from HASP. This is accomplished by utilizing the various buffer and tank limits indicated in the TCT for each processor. CONTROL RECORD PROCESSOR ($CONTROL) This processor provides synchronization between the various process1ng functions at the work station and the HASP System at the central site. Control records from HASP (i.e. request to start a function, etc.) are queued on this processor by the $TPGET processor. $CONTROL then processes the control record, transmits a response, if required, through $TPPUT and initializes the required functional processor. COMMUNICATIONS INPUT/OUTPUT SUPERVISOR (COMSUP) COMSUP maintains communications with HASP in the central CPU at all times and is responsible for the transmission of all data to and from the remote site. The data processed by COMSUP is always in compressed buffer form and passes to and from COMSUP via ordered queues established by $TPPUTand for $TPGET. The communications I/O is primarily interrupt driven and is completely maintained by COMSUP (i.e., COMSUP is both the initiator and executor of communications I/O). During periods requiring no data transmission, COMSUP maintains a whandshaking W cycle with HASP at approximately 2second intervals to ensure full bi-directional capabilities and to avoid unprogrammed timeouts of the adapter. In addition, COMSUP maintains, verifies, and corrects (if necessary) the MULTI-LEAVING block sequence check and detects, logs, and retries all communications errors. COMSUP queues all input data buffers to the appropriate processor TCT queues and provides metering of the various streams to the extent of preventing HASP output stream backup when responding to HASP. INITIALIZATION PROCESSOR The Initialization Processor receives control from the loader and initializes the remote terminal program as follows: 3 - 178 HASP Logic HASP SYSTEM/360 WORK STATION PROGRAM 1. If the CPU is not Model 20, general registers 1, 2, and 3 are loaded to establish 16 K addressability. 2. Replacement (REP) cards are read from RE~DER 1 for possible modifications to the program. The format of the REP card is as follows: Col. 2-4 REP Col. 9-12 Replacement address - hexadecimal address of the first half word of storage to replace (if blank, the previous REP card is continued) Col. 11-n xxxx,xxxx, ••• xxxx replacement data - one or more half-word groups of hexadecimal data separated by commas Col. n+1 blank - terminator for the replacement data Col. n+2-80 comments - any text Each REP card is printed on PRINTER 1 when read as a record of program modification. REP reading is terminated when either a blank card (blank in Col. 1-5) or a /*SIGNON card is encountered. 3. The HASP ENVIRONMENT RECORDING ERROR PRINTOUT (HEREP) is printed if the recording table is intact from the last execution of the program; otherwise, a new table is created for future recording and print out. 4. Interrupt PSW's are set for non-model 20 CPUs. 5. The communication adapter is enabled, and communications are established with HASP as follows: a. Write SOH-ENQ to HASP h. Read for DLE-ACKO from HASP If I/O errors occur or HASP responses do not match the expected sequence, the sequence is repeated. 6. The processor constructs a buffer pool over itself and queues the sign-on record for transmission to HASP. 7. I/O PSWs are set (I/O old points to commutator) and control is passed to the Communication Adapter Interrupt routine. PRINT SERVICE PROCESSOR - $PRTN1 The Print Service Processor's major functions are dequeueing decompression tanks containing print information from the printer Total Control Table, examining the subrecord control byte for carriage control Systern/360 Work Station 3 - 179 HASP SYSTE~J360 WORK STATION PROGR~ information, performing required carriage control, printing the information on the designated printer, and releasing the used decompression tank to the pool. ~he processor also provid~s event control upon dequeueing and releasing the tanks. If no console typewriter is attached to the system and the value of the user option 6PRTCONS is not zero, the processor will set status information at the end of each print data set which allows the console processor to queue operator messages for printing. INPUT SERVIC£ PROCESSOR - $RRTNl The Input Service Processor supports various card readers used for the purpose of sUbmitting job streams to HASP and in the case of Model 20 DUAL 2560 MFCM serves the functions of Punch service Processor. The processor provides error analysis and recovery for supported devices. Execution begins with the initial read routine which continuously attempts to read cards from the designated card reader. In the case of a DUAL 2560, control is passed to the punch routine if the primary feed is empty. If the reader is a DUAL 2520 or 1442, the routine will check the first card for blank and if so pass control to the punch preparation routine; otherwise, subroutine $TPOPEN is called to send a request to send a job stream to HASP. When permission is received the job stream sUbmission routine is entered to read cards into one of two decompression tanks, calling the $TPPUT processor which compresses the data and schedules transmission to HASP. At end-of-file, $TPPUT is used to signal HASP, and control is passed to the initial read routine. The DUAL 2560 Punch routine attempts to dequeue a decompression tank from the Total Control Table. If successful, the card image is punched and the used "tank" is released to the pool. The routine continues to dequeue and punch for a maximum of 100 cards; at this time, tests are made to determine the existence of cards in the primary feed. The tests are also made in the event of no tanks available for dequeueing. If the tests are negative, the processor continues to punch cards; otherwise, control is passed to the read routine following the initial read. The processor provides event control upon dequeueing and releasing decompression tanks. Dual 2520/1442 Punch preparation routine tests for: 1. Operator signal - changing of the data dials, .SR1 command, or unsolicited device end (depends on configuration). 2. Presence of decompression tanks for punching. If the operator signals, the routine passes control to the initial read routine. If a "tank" is queued to the device Total Control Table, control is passed to the Punch service Processor ($URTN1). PUNCH SERVICE PROCESSOR - $URTNl 3 - 180 HASP Logic HASP SYSTEM/360 WORK STATION PROGRAM The Punch Service Processor's major functions are dequeueing decompression tanks containing punch information from the punch Total Control Table, punching the information into cards on the designated punch, and releasing the used tanKs to the pool. Ihe processor also provide event control upon dequeueing and releasing the tanks, in addition to error recovery upon erroneous punching of data. If the device is a DUAL 2520 or 1442, control is passed to the Input service Processor ($RRTN1) after servicing each output record. CONSOLE SERVICE PROCESSOR - $~RTN1 If the remote terminal has an attached operator printer keyboard, the console processor performs the following functions: 1. Reads operator commands from the console keyboard. 2. Examines the input for local commands (Model 20 only), passing local commands to the command processor and passing all other commands to HASP. 3. Type operator messages contained in decompression tanks queued to the console Total Control Table. 4. Convert codes in the Error Message Log Table to readable form and type the resulting messages. Execution begins with the processor testing for an operator command in the console input tank waiting to be transmitted to HASP. If so, the console read-in function is SKipped, and an attempt is made to send the command to HASP. Control is passed to the console output routine, which tests for output messages. If so, the processor dequeues the output tank, types the message, and releases the tank. Control is then passed to the beginning of the processor. It no output messages are pending, the Console Logging routine is entered which converts the message to readable form, types the message, and passes control to the beginning of the processor. The console read routine tests for operator requests and, if a request is pending, reads the command from the keyboard, calls the $TPPUT processor to compress the data and transmit the command to HASP, and passes control to the console output routine. If the remote terminal is a Model 20, the read routine tests for local commands and calls the Command Processor which, in case of ft.Sft command, and posts the appropriate Service Processor. Local commands are not transmitted to HASP. The Console Service Processor without a console keyboard exists only when the value of the user option iPRTCONS is not zero. Execution begins with a test for printer availability. If available, any console messages are removed from the console output queue by the dequeue routine and are attached to the printer queue, allowing the Print service Processor to print the message. If no console messages are queued the processor will convert any log messages into readable form, move the reSUlting message into a tank obtained from the pool, queue it to the console output queue and pass control to the console dequeue System/360 Work Station 3 - 181 HASP SYSTEM/360 WORK STATION PROGRAM routine. If the value of &PRTCONS is one and the printer is not available, console messages are allowed to accumulate to a maximum queue limit. If the limit is reached prior to the printer becoming otherwise available, the printer is iorced available and the messages are queued to the printer with the suorecord control byte of the first message set to skip to channel 1 before print. If the value of &PRTCONS is two and the printer is not available to the console, the processor will dequeue console tanks and release them to the pool. TOTAL CONTROL TABLE (TCT) The Total Control Table is the major working storage area for the unit record processors and is customized for each configuration and device supported by the remote terminal program. Each basic TCT field may be referred to by using symbols defined in the DSECT named TCTDSECTi however, each processor has the option of uniquely referring to the fields directly by using the alternate 3-character prefix to each field name as follows: TCT = General TCT prefix CCT PCT RCT UCT = = = = Control record TCT Printer TCT Reader TCT Punch TCT WCT = Console TCT Appropriate DSECTs are provided by generation macros in the event that more than one TCT of a given type is supported by the system. Basic control fields appearing only in systems with model numbers above the Model 20 are as follows: 3 - Name. Description $pCTCOMn TCT addressability field - the commutator branches to this field to give control to the appropriate processor the field contains a BALR R7,0 instruction which sets up TCT addressability for the processor - symbol characters Rp" and Rn R uniquely identify the TCT for the commutator TCTSTRT First two characters of unconditional branch instruction TCTENTY S-type address constant pointing to the appropriate processor - the field completes the branch instruction, which passes control to the processor at the desired entry pOint 182 HASP Logic HASP SYSTEM/360 WORK STATION PROGRArv: TCTRTN Return to next entry in commutator - each processor waits by branching to this field of the TCT, which in turn branches to the commutator TCTCCW Actual CCW opcode used in last I/O on the device - set by the processor and unit record lOS TCl'DATA Address of data area used for last I/O transfer or address of input tank currently being compressed for transmission to HASP TCTFLAG CCLoJ flags TCl'OPCOD Opcode, which .ill be inserted into the TCTCCW field upon normal entry to unit record lOS TCTCCWCT CCLoJ count fielJ - length of data last transferred or to be transferred TCTSENSE Sense information - set by unit record lOS for error diagnostic purposes TCl'[JCB Device address - contains hexadecimal device addreis for SIO and interrupt recognition purposes - the high-order bit of the field is set on by the processor when waiting for HASP to authorize job submission. TC'IECB Event Control alock - contains all bits stored in csw byte 4 since the last SIO instruction for the device busy bit is set at SIO and when the processor desires to wait for unsolicited device end - busy bit is reset at device end TCTALTOP Alternate opcode for DUAL reader/punch devices processors requiring alternate opcodes have the option of setting the TCTTCCW field with the contents of this field prior to entry to unit record IDS TCTSAVl Save area for the processor subroutine LINK register Basic fields which may appear in remote terminal programs for all 360 models are as follows: TCTNEXT Next TCT in the chain of TCTs TCTFCS Function Control Sequence Mask - used by $TPGET Processor to setup the Fes transmitted to HASP for backlog control TCTRCB Record Control Byte - records from HASP which have RCB byte identical to this field will be queued for output on the corresponding device TCl'STAT Status Flag - each bit has one or more meanings which are dependent upon the processor involved: System/360 Work Station 3 - 183 HASP SYSTEM/360 WORK STATION PROGRAM bit 0 = TCTOPEN - always off indicating device is in use by HASP output (as appropriate) bit 1 = TCTACT - used by $TPGET to determine which output devices need more data - processors set bit 1 when dequeueing output tanks bit 2 = TCTSTOP - device has been stopped and is awaiting a start command bit 3 = TCT1052, TCT2152 - console device identifier bit 4 = PCT only = TCT1403, 'I'CT1443, TCT2203, TCTPRTSW indicates the status of the corresponding printer - if set the printer is available for printing operator messages bit 4 = only = TCTREQ - console request - operator desires to enter a command WC~ bit 4 = UCT only = TCT1442 - the device is a 1442 with single stacker pocket bit 5 = RCT or UCT = TCT2540 - TCT is for a 2540 bit 5 = WCT only = TCTREL - release requested - an unsuccessful attempt has been made to obtain a buffer for command transmission to HASP - the command is in compressed form in the console's tank waiting for a free buffer bit 6 = RCT/UCT = TCT14420, TCT25600 - TCT is for a DUAL 1442 Reader/Punch or DUAL 2560 MFCM bit 1 = RCT/UCT = TCT25200 - TCT is for a DUAL 2520 Reader/Punch device TCTCOM Pointer to corresponding commutator entry TCTID Optional field - 2-character identification for local command processors TCTINRCB Optional field - exists when DUAL devices are attached to the system - identifies the Input service Processor function as opposed to the Punch Service Processor function identified by TCTRCB - TCTINRCB is equated to TCTRCB if no DUAL devices are attached The following fields are normal device extensions and do not exist for card reader devices when DUAL devices are not attached to the remote terminal: TCTTANK 3 - 184 Beginning of output tank queue - output records appear in unit record image form HASP Logic HASP SYSTEM/360 WORK STATION PROGRA~ TCTBUFI:.R Beginning of output buffer queue - contains records in compressed form waiting for decompression into tanks TCTINKL~~ Tank limit - maximum number of tanks which may be placed in the TCTTANK queue TCTTNKCT Tank count - actual nUlHDer of tanks queued to the TCT TCTBUFLM Buffer limit - maximum number of output buffers which may be placed in the TCTBUFFER queue before signaling HASP to suspend sending the streams - limit is ignored for WCT TCTBUFCT Buffer count - actual number of buffers queued to the TCT Reader and console TCTs have extensions which are used as tanks for records transmitted to HASP. These tanks belong to the device (2 for readers and 1 for the console) and are not released to the tank pool. The following field symbols are only defined for the TCTs with prefix designators RCT, WCT, and for DUAL devices UCT: RCTTANK1, RCTTANK2 Tank origin and working storage RCTTRCB1, RCTTRCB2 Input aCB for HASP identification RCTTSRC1, RCTTSRC2 Subrecord control byte RCTTCT1, RCTTCT2 Count field - length of data portion RCTTDiA1, RCTTDA2 Data area - input card or operator co~nand - will be blank for the DUAL 2520 and 1442 while in output status. = X'SO' System/360 Work Station 3 - 185 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 I '1 1 1 1 1 1 1 , 1 1, l 1 1 1 1 1 , \ , 1 1, , 'I 1! , ! I 1 1 1 1 1 , 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 SECTION 4 HASP DIRECTORIES HASP Directories 4 - 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 , 1 1 1 1 1 1 1 1 1 1 1 Page of GY27-7255-O Revised September 15, 1976 By TNL SN27-1555 SyltBOL <======== SACT ION $ ACT IVE ·. · · ··. . CJN • ··..· · · $ALL $ALMSGSW SALW AY5 $AS YNCQ $BUFPOOL $BUSYQUE $CKPT AC'f $C KPTI ME $CKPTRAK .$ COtH1CT $COMIIJ'JUE: $CURP:E $CVTPT R $C'YLI'1AP :SDll.C KPT $DATAKBY $DCBLISr $DCTPOOL $DIS ALL ~ LIST ~RR $DOM $DO~lACT $DOMQU E $DBAINED $PNBALL $ERf< 3>ERROR $EWBBUF $EWB~KPT $EW RCMR $EWBDDB $!::WBHOLD $EW BIO $ EW BJOB :£EWBJOT $EWBOLAY $ EW BOPER $E WBOE:OL $EWBSMF $EWBT RAK $EWBU NIT $;:WBWOF.K" $EWBX.PER. $ EW FBUf' $EWFCKPT $EWFCMB EEfi.RE~:ED IN If A 51:> AS SE f1B 1 Y MODULE ========> · · .. .... ·. XEQ XEQ · NUC .. ·cor-Hi ... · .. ·· ··.. I NI T Noe MIse N UC ... XEQ · .. · ... ·.. ·.. ·.. · . ·. ·. . .. · I· NI r· · . · . · .. ·. . ··.... · · • .. .• CON ·.. .·. NUC · RTAi1 · , . caN ·· ·. ·MIse N DC PRPU ·.. · MIse .. ' . · ·. . INlr IiI3 C · . . N UC RTAM ·.. COMM · .. RD] · Nue BDn. ?TAM COr-ifi ·XEO.. ·.·· COMl\! IHI'l' -.. .. . ·... ... W""R ·XEQ INI: . . N lJC · r NIl'I · ·,- ·• ··.. ·. · . · · INIT N UC · · .. ····.. I·NI r · . . · .. RDE ETA!'l ACeT COt'Hi co IN IT XEQ MI32 XEQ P ?PU NUC ·... P ·.... t1 CJN N He . N UC: ·.. · C0M r1 XEQ I NLI' Nnc fi TAM :113 c ·.. ·XEQ·. ·. · · · ·.. U: BTAM ·... !'1ISC NNUC hDR T AM ·.. XEQ XEQ NUC P s:PtJ CO!'1M ·. · · CJN BD8 .hTAi"l MIse N U: p XL:Q XEQ · .. · XIQ I NI! . · . ·· ·· .. XE'J · Hue PRPU RDE MIse .. . INIr ..· t1 IS: . .. i?RPU itt'R • · .. ·.. ·· . XEQ · Nue P rl PrJ ·. · · -.. NUC · ·. · · ·.. MIse N U: . . . · . . · Nnc ·.. ·.. · · ···.... .. • ·.. N U: · · IS: 7RFU FD • .. ·. XEQ r. T 7\;1; SVC · · . X EQ 111:3 C NUC ? ··.. NU: C:JN COMM PRPU EDR MISe NUC PRPU RDE hTAM COt1M N fJC NUC SVC COr1L-! CJ~T CON NUC C:)N SVC 2I.'R ~DR COt1M NUC NUC N U: PEPfJ C OrP1 l~ NtJ C CCN KDit ~;~.2U CO~l PP'P[J ACC'!' CO~H1 CON EDE ~IUC P~PU F~ CON ;:-~PU CO!'-lM. ~:TAM CO£VJ~ NUC l~: ~ C :)('1l'l co~ ::.PU ~ 'Ut~ COM:1 ISC N UC PHPU EPR MIS C NUC ?"RPU I.TA~; XEQ MI:; C NUC t1hPU [,1 Ab XEQ XEQ ~1 COMi'1 CON COl\:1 C~J~ RD? HASP Directories 4 - 3 Page of GY27 -7255-0 Revised September 15, 1976 By TNL SN27-1555 .:iYMBOL (======== $3 WFDDB $EWFHOLD ··... ... ·... · .. · ... $EW FlO aEFERENCSD IN HASP ASSEMBLY MODULE COi"1~ $EWFJOB COM~ $,EWFJOT CO:iH1 .bEWFOLAY $ EW FOPER · ... $E;WFOB.OL $EWFPO S'1.' $ Ew FS:-IF $EWFTRAK :fiEWFUNIT $EWFW ORK $ EW F'X E'ER ·... ·... CO.t1t1 COl.. INI ACCT CO:-1:1 CO[~ ['1 C:)N COM ['1 .. :liGhT pau F $ GETS NF13 $GE TUNI T $HARDCPY '6HAS PECB JiHASPBCF $HASPTCE $HI HV'I $IOTIEST $JC TTL; Sf!, .:SJ IT ABL E :6 JITCKPT :J>JOBNO $JJ 8QP':F '51.JO E6U S Y $JOECKV :-£JOEIP. TE $JOT 4 Nue PRPU · ... NO: M!S C NUC p apr] NUC NUt: PRPU RTAM RDP HDR SVC ·... ·.. RDR RTAM ETAM ~uc NiT: MIse NUC PEPU ri 13 C NU CPR. Ptl · .. EDIt FTAM SVC Nue PI EX IT NOP $EXTP:LO · ... · ... I NIT I N I 2: MIse N ue p n PUR D R ETA M CO:1M ========) ISC XEQ RIiF HTAM NUC IT RDP. !'1 I SC N UC PH P U •••• It{IT MIse PPPU RDB ACCT COi1rl CON INI: MIse NBC PEPU RDR IN IT NUC RDE f{DH I NIT COI1r1 COi:1i1 It-tII t115 C' NUC P5.PU i:.DP COral HASP Logic COt'IM IN 1'2: Ii ISC .?2PU ?riPO XEQ XEQ Page of GY27-7255-O Revised September 15, 1976 By TNL SN27-1555 SYMBOL <======== $JOTCKPT COMM COMM ~JQENT eOMM $JOTABLE REFERENC:C:D I NIT · ... ·.. INlT C3i-l $JQFREE $L $LOG $LOGQ UE $L 1 $L2 $L3 $L4 $L5 $L6 $l'lAIN $MS GitPNO $NORM!L liNUCLEN INIT CON COMM C3N CON CON ACCT CJN ACCT ACCT CON CON Ace'!' AceT CJN CON ACCT .ACCT ·... ·... · ... · ... ··.... $NUCTABL ACCT COMM CON $ODEL $OLI NK $OLOA D ·... · . . ... ·... ·... ·. · ... .. · ... $OPTCOLD $OPTF Mr $OPTLIST $OPTNFMT $OPTNLST :£OPTNREP $OPTNhEQ $OPTNT He $OPTRACE $OPTREP $OPT ';'~3Q iOPTS r AT $OPTWARM $ORET $OOTPU1' $OXC'rL $PCEORG $PRCHKPT $PURGE $PURGER $QADD $(JGET $OJI'ILOC $QLOC $QPur $QBEM $QSIZ CO~M IN HASP ASSE!'1BLY · ... MIse ... MIse N ue INII CON INIT ... ·.. ·... · .. ··.... ··XEQ . ·.. · ... · .. RDR fiT XEQ · .. RDE XEQ · .. ·.. XEQ •••• ·.. XEQ RDR RDR · .. ·.. XEQ XEQ 3.DR XEQ RTAM · .. · .. XEQ RDR ·.. XEQ hDR · ... · .. · .. XEQ ·... RDR · .. ·.. XEQ · ... svc · .. XEQ ·.. EDt\. ~lIS NU C •••• Nue PRPU MIse N He MIS C MIse MIse MI3 C iOTe N ue N ue Nnc RD? A~l ET}.M PRPU P RPU ETAM PliPU PTlt.M PRPU RDR ii TAM P FlPU ETAM MISC N ue P RPU F:DR MIse N He PRPU h'I'AM NUC INIT I NIT · ... ~lISC MIse P RP TJ NUC PPPU N ue p!(PU Noe PRPU NLJC PFPU RTAM RDR 2TAM · ... ... ·.. · ... . .. ··... ·.. ·· ... INIT · . ... · ... · ... · . . IN:I INT!' · ... I NIT ·... INIT INr: · ... · ... ue INIr · ... ·... · ... IN I!' · ... INI'T' · ... I NIT · .. · ... ··...... ··... ... ·.. INII: IN IT MI5e INlr MIse ... ··... ·... ··... Nnc ... ·... · ... ·· ... ... ·.. · ... fiIse Nue · ... ·... Nue CJN I NI I M:S C ... · . .. · . . · ... ·· ... IN 1-:;: IN!:' I NIT IN:'!..' INI~ NUC N I NI: • • • e: NUC PRPtJ Rna PPPU FOR NUC • • •• E DR NUC PFPU PFPU COHM COMM CON COMM COMM MISC COMM rDR NUC P?PU COMM CON COMM COM M COMM ========> PRPU · ...C Nue MODULE NUC llU~ PRPU 2DE PH~U hDB ~nc RD~ ~uc ·.. XEQ · .. · .. · .. ··.... ·.. ·.. · . . · .. · .. · .. ·.. XEQ XEQ ··.... · .. XEQ svc ·.. XEQ XEQ XEQ · .. XEQ · . . . . . • •• ·.. · .. XEQ ·.. ... XEQ HASP Directories XEQ 4 - 5 Page of GY27-7255-O Revised September 15, 1976 By TNL SN27-1555 <======== SYMBOL $Q UESMFB SRDRPEND .$REMOTE $RE STORE $HJ ECHEQ $5 Ai EBEG ·.... · ... ·... · .. · ·... ·.... .. · .. ·... · ... ·Nue RTAM · . .. . .. ··.. .. ... ·.. ·· ...... .... NUC · . .. . .. H'I'AM · .. .. .... CON INIT MISC Nue PRPU HDB RTAM svc $SMFBUSY ACCT $5 MFFREE ACCT STAPE $TEDADDR $TIMEARG iTIMENT $TP STPBPOOL $T RACK $ TR.I VIA $TTIMER $UR SYERS ION $WAIT $wTO $XEQ 3) XEQACr $XFRHA SP $XFRSTPT ·... ·..... ·ACCT .. ··... ... ·... ·... ·... ·... ·... ... ···... ... ... ···... ... ·... ·... ·... ~CC! BASEJ •••• BITO BIT1 BIT 2 DIT3 BITU •••• AC~T •••• •••• •••• 3I1'6 BIT? •••• BUFCHAIN ·... BU FDCT 4 - 6 C3N IN Iff 11 ISC NUC INT!' MIse N UC HASP Logic PRPU RDR • •• ···...... ·XEQ .. ·.... ·· .... ·XEQ RTAM SVC XEQ •••• 1~ CON BTAM 'MISCNUC CON • • •• NUC Nue CON CJN ~DR COKM I NIT iiIS MIse RTAM NUC N UC NUC PRPtJ RD? NUC P RPU £.DR COMM CON I NIT MIS C Noe P BPU RDB RTAM . C 011!1 f,TAM MIS C NUC P EPU CO~M PRPU PRPG COMM ~OhM ~':::iC COM~ XEQ INI~ I~IT MI~C cb~M COMM CON •••• COtlM CON INIT •••• COMM CON INII BITS NUC •••• PRPU RDR ========> ·.. . .. · . .. . .. · ... · .. ·INIT ... ·· ... ··... · ... Nue · ... ·.. ·.. ·.. ... ... · .. ·XEQ .. fiI SC UC P RPU hDR ·. ... · ... · . . · .. ·. .. ..... ... .... ... · ... ·.. · .. XEQ ... COMM CON INI! MIse Nue ?RPU RDB .. ... · .. ·.. XEQ RTAM .. .. .. .... ·.. I NI T •••• Nll C · ... ··.... · ... ·· .... · .. ·XEQ · .. · ... · ... · .. · ... . .. ·... RDR ·· ... · .. ··.... .... ··.... I NIl' ·... · ... · ... · .. · . . · .... · ... ·... ·... .. ·· ... ... ··.... ·· ... ·... · ... · ... Nue ... ··.... ··.... ··.... • •• .... . ... · . . . RDR ·... · ... MIse · ... · ... · .. XEQ ··... · ... e · .. · .. XEQ · .. ... · ... ·.. · ... ··.... Nue · ... ·.. INIT · ... · . . · .. · ... ·.. · ... · ... · ... ·.... XEQ · .. · RDR · .. · ... · .. ·.. C::lN F:DR . .. · ... · . . . XEQ .... ... . ... · ... · .. · . . · ... ·... ·· .... ··... ·.. · ... ·.. ·.. ... XEQ ·... CON INI! MIse Nue ·.. ·.. XEQ svc XEQ :tDR COMM :ON INIT · .. CON PRPU RDR RTAM · .. XEQ RDB .. ... · .. · .. CON INIT ·... Nue XEQ INIT · ... · ... COMM CON INIT · ... Nne RDB · ... · .. COMM C3N INIT · ... RDB · ... · .. · .. XEQ RDR · ... · .. · . . .. Hue · .. · .. XEQ CO[1M CJN INIT PRPU XEQ · ... · ... · .. I·NIr · . .. · ... ·• ..•• ··.... XEQ ·.. .... ... . ... · ... ·..... COtlM ACCT COr-1M $XS MFENT B T\ SE 1 B f\.SE;2 BUFDDB INIT •••• AceT COM!'! ACC'~ $STATENT $ST ATUS $ STIMER $SVCR SET $SYSEXIT MODOLE I NIT MIS C Nue PRPfJ COMt1 COMM $SAVEEND $SA VELEN $ST REFeRENCED IN HASP ASSEdBLY CO.f.1M CON INI! · ... 2RPU f.,DR Fl'Ai'f1 RTAM Nue PRPO N UC PRPU NUC PRPU EDB PRPU N UC PRPU NUC PRPU PI~PU ?D5 NUC RDR NUC PRPU :tDR NUC E'L'AM N UC · ... £TAM • e· • XEQ XEQ XEQ XEQ ·.. XEQ Page of GY27-7255-O Revised September 15, 1976 By TNL SN27-1555 SYMBOL <======== BUFDSSCT ··...... .... ...... .... Ace T C or'Hi CON ·... · ... CJN ·.. ·. ·... ··... ... · ... ·... ·... BU FECBCC BUFEWF B UF S'rAR;r BU FTY PE CMBCHAIN CMBCLA 5S C MBCONS C!1BDOt1ID :MBDS:C;CT CMB END CMBFLA ('~S CNBFLD ;: MB,lOn NO CMBMARK canT EXT CV l' CO C B : VTDSECT CiT H3AD CVT HJES :: VTILK2 CVTJOB CVTPCNVI ;: VTP'1:P ~ VTSEGA CVTSMCA CVTTC13P C V~13C V'l: CVTTS RDY CVTXA?G : VTX£N T1 CVTXTNT2 cvrZDIAD :VTCPl'O'~ : VTOS',:?1 CVT4MSl C VT6DAT DCBDEill\D rCBDS 3CT DCBFDAD DeBr }<'LGS DCBMACRF DCBMA C:, 1 DCEMhAPG DCDMRECP D:BM.a?£ IN HASP ASSEMBLY MODULE ========) ··.... ·· .... XEQ · .. · ... · .. ·.. · .. INIT .. · ... ·.. RTAM ··.... ··.... XEQ · .. ·· ... ... ·... · ... · .. · .. ·... ··... ·.... . · .. ··... · .. · · ... ·.. ·.. ·XEQ.. ... ·... Nue · ... ·.. FTAM ·· ...... ··.... ·... ·.. ··.... ·XEQ.. .. ·... · .. ..... · ... · ... ... · .. · ... ·.. ·.. ·.. ... · ... · .. ·· ... ··... ··... ... · .. · .. XEQ ·· ... · .. · ... ··.... RTAM ... · ... ·... · .. ·.. ·.. ··... ··... · ... · .. ··.... ... ... ··... · .. · . . ... svc ... · .. · ... ·.. ·· ... · .. ·W'TR .. ·.. · ... Nue · ... · ... · ... ·.. ·... ·svc.. ··.... ··.... ··.... ·· .... · ... ·.. · ... · ... · ... ·.. ·.... · .. WTR AceT COMM CON INrr MIse NUC PRPU RuE RTAM IN!T MIse N UC PDPU RDE RTAM COMM CON CON COM~l CJN COl1M CON CON COMM CON CON COM!1 CON Cr1B~lSG :!1BMSGL REF~RENCED • • •• C:) N COMM C~H COi1M CON CON CJN NUC I NIT MIse NUC PRPtl RDR RTAM N fJC NUC NUC RDR .t{TAM HTAM RDR RTAM HDlt BTAM N UC XEQ NUC fiDR RDR :rI'AM NUC RDR NUC C0::111 CON I NIT XEQ WTR · ... · ... · ... · ... Nue ·... ·.. ·... ·.. · .. ·... ·.. · .. ··.... · ... · ... sve RUH · ... · .. · .. ··... ·.. ... FDP · ... s vc .. svc ·... · .. EDR · ... · ... ··.... ·· .... · ... ·.. · .. .... · .. . ... ... · .. ··... · . . · ... ·... CONt'l CON IIN!'!' · ... Nue · . .. NIT IN II' .. · ... cor-Hi co IN!I · .. N[JC · ... CON . .. . . . ·... ·· ... r NI.l · ... ... · ... CO[1i"i CON INlr N UC ·... · ... · ... COrl:1 CON INI>!: ·. .. NtJueC P BFU ·... co J I NII J? NUC ··.... IN If INI~ CON CON iii , NUC NU~ ·... XEQ XEQ I NIT COMN COMM Il~II CO~!tl I~I'I' · .. . XEQ RDR COMd CON' INrI: ['111 XEQ N He .. ·... .. .. . co N •••• ·... ·... ·... ·... · ... ··... ... ·... ·.. . ... · ... CJN · ... • ••.a XEQ C N I N ~ I NIr I NI:' BDE HDR SVC SVC [-:DF ~D£ N PBPU Nue PBPO S:DR · .. XEQ XEQ ··WTR.... XEQ · .. · .. ·.. · .. ·.. .. ·WTR .. ·XEQ WTE XEQ ·· .... XEQ WTR ·.. wrR XEQ WTR XEQ ·.. ···...... XEQ XEQ XEQ · .. · . . XEQ ··.... · .. XEQ XEQ HASP- Directories 4 - 7 Page of GY27-7255-o Revised September 15, 1976 By TNL S N27-1555 SYMBOL <======== DCBOPTCD ·... DCBSS ID DCdTIOT Dr.BW~OID DCT ABORT uCI'BKSP neTB UPAD neT Bll FCT DCI' CHAIN DCTCLA 5S DCTDA DCTnCJ DCTDCTE DCTDELET DC'fDEVN DCTDEVTP DCTDEAIN iJCTDS::C'~ Dcr ECHAR DCTEC M DCTECPCD Dcr ECPYG DCT ECPYM DCTECP YN DCTEDCB lJCT EveT DCTEDSEC DCTEEND DCTEFCB DCT EFLAG DCTEFLCT DCTEFLOP DCT EFRMN DCTEJAM DCTEJAMC Dcr E ..l ECT DCTEMAHK DCTEND DCTEOF DCI' ERST uCTESI Z DCTESPL1 DCT ES PLl DC TESTe N DCTETHC DCT ET X DCTEUCBX DeTE WF ·... · ... COM~ REFERENC3D IN HASP · ... · ... CON INIT INIT COMf1 CON I NIT' ASS~5BLY · ... ·RDR .. ·· ... ... · ... ·FTAM ... NUC · .. ETl'. · .. ·hDR .. Nne RTAM RDR ·... ·· ... ... Nue RDR Nue P.P.PU NUC PRPI1 ~DR PRPU PRPU MIS C NUC PRPU PRPU PD f. N UC PBPU NtJ C P~PtJ PRPU N DC PRPU ·... ... . ... INII · . .. ... .... ·... t1 ·... COli ·. NIT MIS e ··.... ·IIN... IT · ... IN II' · ... ·.. ·. ·.. INI r INII' · ... INIT ··.... I NIT P3.Pt PRPU ... ·... · ... ·.. ··... · .. · .. · ... ·.. · . · ... IN!I · . .. · ... IN!'! ·... ·.. I NI!' ·. Nue Nue P?PU ·.. ·. Noe I NIT INI'! · ... · .. INIT ··... ... eoaM · ... · ... · .. · .. · ... ·... Nue ·. Nue · . · .. ··.... · ... ··.... I NIl' P;.PO · ... · ... ·... · ... Nue ·· ... ... · .. ·· ... NIT · ... .. ... IINII' PI{PU ·... · ... · .. INIT PS.PH ·... · ... · .. INII' · ... I NIT IS C NUC 'P RPU ·... 4 - 8 HASP Logic COi1M COi1 M. CONN COMM COL1i1 COi1M CO r1 ~1 CO£1M COMM COr-Hi MODUL~ P~PU ~ FTAM ,,'TAM RTAM RDR [{TAM NUC P FPtJ RDF.. BTAM N UC PFPU PDR RTAM ,C~ TAM NOC 1 FDR RTAM MIse ~uc PRPU PRPU PRPU PFPU P RPU PRPU eOMM COMf'1 COMM NUC COtiM eOtiii PRPU PBPU PRPU PEPU PFPU ?'RPU ~, :~ PU P~,PU COMM PRPU PRPU 2RPU t1 ... ·.. · ... · .. ·· ... ·. . · ... ... ··... · ... · ... ··.... ·· ...... · .. · ... · ... · .. · ... . . . ·... · ... ... · ... · ... RTAM • • if • HTAM R D ~.. RTAM ···...... · .. ··.... · .. ···...... ·· .... ·· .... ·.. · .. ··.... · .. ========) · .. XEQ XEQ XEQ XEQ ·.. ·.. .lEQ XEQ · .. XEQ · .. XEQ · .. · .. XEQ ·.. · .. ·.. ·· .... · .. · .. · .. · .. · .. · .. · .. · .. · .. · .. · .. XEQ · .. · .. ·.. ·.. · .. · .. · .. · .. · .. ··.... ··.... ·.. · .. XEQ Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 SYMBOL ocr PCB DCTFLAGS DCTFORMS ncr HOLD DeTRO LDJ l.)CTINH <======== REF.2.R EN CED ·... ·. COMM COMM COr-1M COMM COi1M C OfL~1 DCT INUS E COMf1 DCTIOTYP DCTLEASE CO~iM DeT LNE COMM DCT LOGAL DCTNO DCTOLA Y !)CTOr c DeTorr DCTP~ SCI DCT PBLK DC! PBS C DCTPB UP DCTPCE DCT PCODE DCTPCON DCTPFULL DCT PHll'LF DCTPHARD DCTPH ASP neT PL INE DC'!' PMEl? DC TPOS'.r ·. ·... ·.. . · ... COMM COMM COMM ·... · ... .. ·. · .. · .. ·.. ·... p=-~pu P 2PtJ RD.H RTAM ·XEQ.. ·.. · ... RDR · ... ·· ... . .. iDR · ... RDR · ... · · .. · .. PRPU N UC PRPU RDil RTAM ··.... XEQ ·. . . INIT lEQ ·.... .. Nue · · ... .. ··.... Nnc INI! · .. INIT ·.. .. ·.. .. Nue ··.... · .. · ... · ... .. · · .. ·.. · .. · .. · · · .. Nue INI!? · . · .. · .. · .. INI1' · .... ·. . · ... ·.. RTAM · ·· .... ·.. INIT ·... · ... · .. · .. ·. · . . · .. HTAM · .. · .. · ... ·· .... · .. · ... · .. · .. PRPU IN!? ··.... ··.... · .. ·.. ··... ··.... ·· .... ... ·· ... ··.... · .. ... · .. · ... · .. PRPU iNIT · ... ·.. · .. ·... ··.... · .. · .. ··.... ···...... INIT · ... EDP · ... ·.. ·.. ··.... · .. ·. . ··.... IN!? ·.. r · .. ·... .. INTI · ..... · .. I NIl' INIT • • « NUC MIse NUC PBPU INlr I PRPU N~T PHPtJ I\ TAM RTAM RTAM RTAM RDR RTAM NUC ~ I~IT INrI' INrI IN I':' BTAM ETAM RTAM ?TAM XEQ .RTAM I NI'!' IN 1':1: hTAM · ... C Or1M COr-1M DCTPPSWO COM t1 COMM COI1tI COl1M COMM DCTPPSWQ DCTPPSWS DCTPPSWT DCTPPSWU DCTP~INC RTAM NUC IN!! I NI!' INII IN I':' PRPU P rtPU PRPU PRPU PRPrJ PRPU aDI< FDR F!) R RTAM INII' DCT PiiINT DCT PT AB SSE MB LY MODU LE ========) IN ::',r COM~l DCTPPS1~C DCTPSYS3 Po. IN II' DCTPPSWF OCT PPSW I DCTPI1LI M DCT PROG DCT PET DCTPSTAT INIT HASP I NI:( DCTPPRES DCTPPSW DcrPRLEN ·... IN · ... ·. HTAM IN II' COC1l"l COMM I NT PRPU NUC PRPU FTAM IN I'!' HASP Directories 4 9 Page of GY27-7255-O Revised September 15, 1976 By TNL SN27-1555 (======== SYMBOL DCTP'rR SP DCT PU N DCrpU NCH DCTPVAR DCTPWIDE DCr P1 ".30 DCTP20 DCTP20S2 Dcr P2770 DCTP36.o DC TRC{)N DCTRDR DCTREAD DCTREJD V DCTREJJB DCTREJSY DCTRJR DCTRPR DCTRPT DCTRSTRT DCTSEEK DeTS INON DCTSOFF DCTSPACE DCTS'!' AT DCTSTOP DCTUC S DCTWORK DCTWRlrE DC1FCB DC'] FLAG' DC1FRMNR DC1IMAGE DC1MODPT DC1TRC DC 1 XLAT1 DC2CPYNR DC2DCBA Dc2FCB DC 2F l.AG 1 DC2FLAG2 DC2FRMNE DC2IMAGE Dc2MODPT DC2STCNR DC2TRC DC2XLAT1 ASSEMBLY MODOLE · ... · .. · ... • •• ·... ·• .••. INlr INIT · ... • •• ··.... · ... · ... · ... • •• · .. · ... · .. ·... ·.. · ... INII ·... · .. · ... ·.. ···...... INIT ••• • •• · ... · .. · ... ·.. INIT ·•• ... ••• ·.. · ... · . . ·... ·.. IN.!T ·... · .. ·... · .. ·... ••• ·.. ··.... IN!T • ••• ··.... ·• ... ... ... · ... · ... • •• ·· ...... ·• .••. ·· ... ·. . ... ·.. ·... ··... ... · ... • •• · ... ·.. · ... ··... ··.... ··... ··.... ··... ... ... · ... ... COHM BTAM ··... · ... · .... · .. ... ··.... INIr ··.... ·INIT ... ... · ... •• ·.. ·hTAM · ... ·.. · ... ·... · .. · . ·... · ... ·.. ·... Nue RDR ··... . · ... ·.. RTAM · ... ... ·· ... ·· ... ... · .. ·.. · ... ···... ... ... · .. · ... INI! ·. · ... ··.... ·...·. · ... ···... ... ·.. ·· ... ... · ... · .. ·.. ·... · .. ·... ·.. INIT ·... ... ··.. COMM · ... · .. · .. ·... ·... ··.... · ... ···...... · ... · ..... ·.. .. . · ... .. . · ... .... ··.... ·... · ... · ... · ... · .. · . . · ... · ... ·.. · .. ·· ... ... ·.. PRPU · ... ··.. · ... · .. ·.. · .. · .. ·· .. · ... · ... • ••• COMM .. ··... ...... ···.... ... ··... ... ··... ... • ••• ... · ... ··... ·... · . COMM ··... ... · ... ·... COMM ... ··... RTAr'l PUPil INIT I NIT RTA~ INrI RTAM RTAM INIT RDR INI'! MISC NUC PRPU CON COMM CON COMM CON I NIT BDR COMM DCTRPU 4 - 10 REFERENCED IN HASP COMM INIT KISC PBPtJ PRPU PRPU PRPU fiDR ETAM PRPU RTAM IN!'!' COl1M ETA" P 5PlJ NUC PhPU RDR P?PU RDR PRPU PBPU PRPU RDF MIse PRPU PRPU CO~lM COMM COl1M COMM ?L'.PU C0MM CO!1M ?FPU PRPU PRPU PRPU PRPfJ COr-1M .. .. HASP Logic COMM COMM COi'lM COMM ·.. .. .... ·.- .. ·.. · .. PEPU PRPU PRPU PRPU PRPU PRPU ··• ....•• • •• .... ··· ...... ··.... ···...... ··.... ·· .... ·· .... ··• ....•• ··.... ·• ..•• ·• ..• ··.... ·· .... ··• ..••.. ··.... •·..•• ·· ..... ·IEQ ·.. ·.... • ·.. • • • • •• • •• • •• ·.. ··.... ···...... •·••.. ·· .... ·.. ·.. ·IEQ.. ·.. ·· .... ··.... XEQ ·· .... ···...... ··... .. ··.... ·.. ···...... ·.. ··.... ·.. ·.... ·.. · · ... ·.. .. .. ··.... · ... ··.... ·.. ··... ... ··.... ···...... ··.... ETAM COMM COMM COMM COMM ··• ....•• ··.... ··.... ··.... ·· .... ··.... ========) RTAM .RTAI.-1 XEO. Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 SYMBOL De2X LA! 2 Dc2XLAT3 DC2XLAT4 DOBCHAIN DDBCOUNT DDBDDNR DOBDS ECT UDBEND DDS LNG DDBPBU F DDBPCE DDBSB UF DDBSTATl DDBST AT L DDBTTR ODBTYPE DDBU FPT R DDBU NIT DEBAPPAD DEB r;CBAD o EBDS ECT DFBENDCC DEBENDHH DEBEXSCL DEBNMEXT DEBNUMTR JEBTC3AD DEBUCBAD t; H HCT DS ECT HDBDSKEY HDBNXTRK HDBS'T ART ICHAIN IHADCB IO BCCW1 IOBCCW 2 IOBec W3 IOBCCW4 IOBCCW5 IObCCW6 rOBe: tI7 rOBCCw 8 IOBCSW IOBDCBP£ IOBECBCC IOBEC13PT <======== HEF.2RES':BD IN Hi1.SP ASSE MilLY MODU LE ========) .... · ... ·.. ·... ·· ... ... ·.. · . ·... ··.. ·... ·.. ... · ... ··... ·.. · .. ··.. ··... ... ·... ·... ··.... · ... ··.... .... · ... · .. ·· .. ·... ·.. ·· ... . · ... · .. ·...·. ·... · ..... . ·.. · ... ··....·. ·... ·.. ··... ... ·. ·ACe! . · ... ·... ·.. ·. · . · ... ·.. ·... ·... ·... ·... ·.. ·... · .. · .. · . ·· ... ... · ... · .. ·... · .. PRPU ·· ... ... · .. ·... ··... ... · .. ·... ·. · ... · .. · ... · ... · .. · ... .. · .. · ... ·.. ··.... NUC · ... ·.. · .. ·· ... ... ··... . · .. 1?HPU PRPU · ... ·... ·. · ... · ... · ... I NIT IN I! COLi !1 INIT COt1~ I NIT INrI' INIT INI'f I Nl"':' INI'r INI! COf1M CON 1 NIl' COM t~ CON COl'! M CON IN l.'!:' COMM CON I NIt I NIT INI~ INIT I NIT P RPtJ PRPU P?PO PRPU NUC NUC NUC PRPtJ PhPU t1ISC . .. ·· ... · ..·.. ·. 2FPU P rtPU PEPO NUC NUC t>RPU NUC ? F. PU ·.. ·.. · .. ·.. ··· ... ... ... ... ···... ... ·.. · ... · ... ·.. ·.. · ... ··.... ··... ... ·.. ··... ... ··.... · .. · ... ·.. ··... ... · . . · .... RDR JDR iT AI1 BDR F r:ld1 FTAM RDF H'.i.'!I.M F\D R ETAi., t:DR ;-(D2 ··· ...... ·.. ·· .... · .. ·.. · .. · .. ·.. XEQ XEQ ·.. XEQ ·· .... XEQ XEQ · .. · .. XEQ XEQ XEQ XEQ XEQ XEQ · .. XEQ · .. · .. · .. XZQ ··.... XEQ ··.... ·· .... · .. · ·.. .. ···...... ·.. · .. ·.. · .. WTR XEQ · .. XEQ X£Q !; VC XEQ XEQ XEQ ·.. · ... · .. XEQ · .. ·.. · .. ·.. ·.. T ·.. · .. 'I · .. E · .. · .. Atl · .. · ... WTi\ X:::Q · ... XEQ · .. · .. ·.. · .. ED? 2TA~ f. ld1 FTA~~ Nue · .. ·· ..... . ·... .. IN I '1' I t'4IT · .. . INIE At1 i: TA~i ETAM 5T 1\11 ~.T N UC PRPU EDE NUC NUC r,1'AM. HASP Directories 4 XEQ 11 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 <======== SYMBOL IOBERRCT · ... IOBFLAG1 I013FLAG2 IO BREST R IOBSEZK lOB SEN S') ·. TOES ENS 1 REfERENCED ·.. · .. ·.. IOTCY MX M 10 TD SF';C II' IOTFLAGS lOT rOT IOTIOTTR 10 TJC TTR lOT PDDB lOT PDDBP IOTTi1ACK IDTW RIT E IPOS: I'IIME JeT ··.... ·... · ... ·.. · ... · ... • ·... ·. l\ ( •. "' IT' !'"\ \". \... ... • • _e ·.. ·.. ·.. JCTCAFDS JCTCPUID JCTCPYCi J: TDSI:,C'r JeT DS K ~y J CT END JC 'fE SO UT JCTESTLN JeTES! PU JC~ETIM3 JCTFOHMS J CT INDC JCTINDEV JCTINJCT JeT lotT R JCrJBOPi JC TJC LA S JCTJNF JCTJ MRJ N J c: T ,,1 MF. U X J CT\J N lU~ ;.-: JCl'JOBE3 4 - 12 I NI':.' A~l INIT PPPU PEPrJ PEPU PEPU PRPU N UC N fJC C Of'HI CO l'i I NIT JCTACCr N JCTCY5 AV N TJe NUC I NIT ED? rOB XTE NT ~jAP ========> · ... ·.. · ... ·XEQ .. · ... · ... · . . · . . NUe · .. ··.... XEQ RTAI1 ·INIT ... N TJC · ... · ... · .. WTR Nnc ETAM · .. l:\TAM · .. ·.. · ... · .. ·.. ·.. N ue RTAI1 · .. · .. NUe PBPU HOI': R T Id·1 · .. WTR XEO £',T I NIT ·... NUC ·.... XEQ ·.. MIse RDB · ... · IEQ · ... liDE RDE. I NIT MIS r: XEQ · .. · . . XEQ ·.. . ... ·... ·.. · .. XEQ ··... ... ·... ·.. XEQ :::DP PDR · ... I NI:' MIse · .. XEQ RDF MIse XEQ PRPU aDE · ... · .. · .. XEQ XEQ I NIT · . .. .RDH ... · . . . . ··RTAM xrQ ... · .. MIse ... · ... i1iI.3C · .. 2TA:'1 · ... MIS · ... ·XEQ .. ED? C NUe ·ISC ... PRPU RDn ·... ·.. ·.. ·.. · .. . ... ROE ·XEQ.. MIse · .. · ... · .. P I1PU RDR ·.. ·XEQ.. INI! dISC · .. RDR · ... · .. INII' f1IS C RDF · ... · .. · .. XEQ RDR ·i1ISC ... · .. · ... · .. XEQ · .. · .... ·.. . XEQ · .. X3Q · .. ·. PDf< · . .. · ... · .. ·. · .. .. EDr: · ... ·.. · .. ·.. ·... · .. · .. ·.... ?DR · ... · .. .. ... . .. · ·.. ·.. XEQ ... _ RDR XEQ · . . EDR XEQ · ... XEQ BDF ·. ·IN...IT · .. XEQ MISe P RPTJ EDR · ... ·.... · .. MIse · ... · :NIT Nue ··.... XEQ Noe P.:tPU · ... rOBS Ioce IOBS(ri\~T IOTCY IN HP.SP ASS~MB..LY MODULE ·. . ... ·... . ... ACCT CO[1M CON .L'-rr"M : _ .:\'. PRPU PDP 1.1 NBC PRPU t>1\PU 1.\ UC PFPU IN IT XEQ RD~ fiD? ?DB ~DR .... .. ACCT .... HASP Logic PhPU ?D? MIS;:': · ... · ... INIT .... ,... . . . IN I'~ M , .....-,'-' CON cor: :1 CO~f1 C:JN M':,SC NUe RDF PrtPU PRPU PRPU :iDR PRPU HDR 9DP XE~ Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 SYMBOL J: TJOBIN JCTJQE JCT L1 Ncr JC TLINE S JeT MCI..AS JCTNOLOG JCTODTOF JCTOPRIO JCTOU'TOF JCTOUTON JCTPAGCT JCTPNAME JCTPRICD JCTPRIO JCTPROUI JCT PRTeT JCTPUNCH JeT PU ~CT JeT PU OUT JCTPUF:GE JCTRDR JCTRDROF JCTPDRON JCTROOMN JCTROUTE JCTS ETU P JCTTHOLD JCTUJVP JCTOS EID Jcrw ORK JCTXBACH JCTX DTOF JCTX Dr ON (======== i:\B.Fi:.RENCED IN HASP ASSEMBLY MODULE ========> ACCT JOEBURST JOECHl1R JOECKAf?G ·. ·. ·. ·. ·. ··... ... ACCT ·... ·... JOEC KF L~; JOECKPT JOi:.C PU JOEDEST JOED3ECT COMM CON MISC 2DR IN IT 11 13C N UC PFPU RDR PRPU RDB · .. · .. MI3C PRPU PRl?U PR.PU MISC N P2PU XEQ ·· .... ·· .... PRPU PRPU PRPU hDR XEQ XEQ P.RPU P RPU P?PU MISC PRPU PFPU F< Di:~ MIse P"C\PTJ PEPU p .s.PU p l~ PU CO~L1 COf1:vl i?2PU ?RPtJ PHPU ·... · .. NUC pqPU COf"i~l ?R.PU PKPU I NIT t1 I S C IFI C P.? PU ·XEQ.. ·.. ·.. ·· .... XEQ ·. . ·· .... XEQ ·.. XEQ XEQ PF?U PRPU MIS C JCTXEQOF JCTX 3QON JeTX OUT J!TJNp.ME JMPCHAIN JOEACT PR JOEAC'!'PU · ... · .. . .. . ·..... ·.. · .. ·.. · ... RDR · ... RDB ·... · .. ·· ..'.... · .. · ... · .. ·.. · ... EDR · ... ue HD f< · .. RDR · ... . . · .. · .. KDR · ... · .. · ... · .. · ... · .. ·· .... MISC · .. · ... · . . RDR · ... MISe ·... · ... MIse · .. . .. . RDR ·· ... ... · .. RDR . . . . ·... · .. RDB · . RDH · ... · ... · ... RDR · .. RDR ·... · .. ·.. ·.. · ... EDR · ... IiI SC RDP. . . ·.. 2DH · ... ·... · ... · . ·.. ·· ... .. . ... · ... ··... ... ·· ... ... ·... ··.... CO:'H1 CON · ... · .. . . . . IN l:r · ... · .. · ... ·. . . · ... ·· .... ··.... ·· .... IN I':' · ... · ... · ... · .. ·... ·..... · ... ·. · ... · . · ... · ... COliM ·... ... ··... · ... · ... .. · .. ·xrQ XEQ XEQ ·... ··.... ··.... ··.... ·.. ·XEQ.. ··.... XEQ · .. ··.... · .. XEQ XEQ XEQ XEQ · .. ·.. ··.... ·· .... · .. ·· .... ·.. ··.... · .. ·.. · .. · .. HASP Directories 4 13 Page of GY27-7255-O Revised September 15, 1976 By TNL SN27-1555 S'YMBOL JOEFCB JOEFLl'-;.G JOEFLASH JOEFORM JOEJQE JOENEXT JOERECCT JOEROUT JOESEC JOES IZ E JOEUC S JOE USE JOEWT RID JOE38FLG JOTCHRQ JOTCKPT JOTCLSQ JOTDSECT JOTFREC JOT FREL JOTFREQ JOTJOBNO JOTJOES JOTSI ZE J sea TJID JS CDS BeT <======== REFLRENCED IN HASP ASS2MBLY MODULE ·... ··.. ··.. COMM ·... · ... · ... · . .. · .. ··.... · .. · ... ··.. · .. PUPO ·.. ·.. . ·.. ·· ... ... ·· .... · ... ··...... ···.... · ... .. · ... · .. · .. · . . · ... ·Nue · .. · ... · .. INIT MIse .. ... · .. ·.. · ... ··... · .. · .. .. COMM COMM COl"! M COMtl C O~lM .. . . ·. COMM PEPU P RPlJ PRPU I NIT INIT COM [1 COMM INI'! · . .. · .. · ... ·.. COrIM · .. INIT MIse ·... COMM ·.. · ... ·.. ·... · ... ·... · ... ··.... · ... ·... · ... CON ·.. I i'lISC . PRPH PRPU NI~ LCBRCB 1\CCT COMM CON CO!1M COM.M tv! MDCTArTN MDCTCODE MDCT DCI' MDCTERCl' MDCTFC S PRPIJ P RprJ P?PU ··... ... · ... .... ···...... . ... ·.. ··... · .. l?RPU ·.. ... PRPU · .. · .. PRPU · .. · .. · ... CON · . . · .. · ... ·. . · ... Nue ··.... · ... BTAM · .. · . hTAM .. . Nue ·.. IN!? ·MIse · .. EDE .. . · ... · .. -:TAM AM · .. :.TAM ·.. r;TAM · ... INIT PRPU · .. ··.... .2T AI1 · .. RTAM ·.. ·.... ·. INI:!: · · .. . ... ·.. ETAM Nue ·.. INI'r ··.... INrI' ·.. ·. I NIT LINK LCBACK LCBMCB · .. PHPU INI·~ · ... ·.... · ... ·. JSCHPCE L P RPtJ PRPtJ PHPfJ PRPtJ PRPU PRPU PRPU PEPU PBPU P?PlJ ETAM fiT A11 PRPU RTAM j ~. NUC ·. f\TAM MDCTOBUF MDCTopcr TP S WD ::1DCTPCa MDCT as EQ ~lDC COMM MDCTTSEQ · ... MHASPECF MSABITS .'15 ADS Ecr MS~_MTTR 4 - 14 HASP Logic · .. ~ ETAM RTAM BTAM HTAM PEPU PFPU PPFU ========) ··.... ·.. ···...... ···...... ·.. ··.... · .. · .. · .. ··.... ·.. · .. ··.... · .. ··.... ··.... ··.... ·.. ·• ..•• ·.. ·.. · .. ··.... · .. ·.. ·.. ·.. ·.. · ·.. ·.... ···...... XEQ ··.... · .. XEQ ··.... ·.. ··.... · .. · .. ·.. ·.. ·.. · .. · .. · .. ·.. · .. · .. ·.. · .. ·.. ·.. ··· ...... · .. ···...... ·.. ···...... ·.. ··.... ·• ..•• ·· .... ··· ...... · .. lEQ Page of GY27-7255 Revises September 15, 1976 By TNL SN27-1555 SYMBOL !1S ARPT RK NE NH NL NO REFER EN C ED IN HA SP A SSE r1B LY MODU LE ·... IINIT ·... ·NUC.. PRPU RDR £ ·.. ·.. ··.... · .. · .. ·.. XEQ SVC CON NP NZ PRPU PRPU o OACEI~S MO OACECHN OAe <======== ENA~E OACEOCON OACEPCE OACEPRIO OACEPROG OCRBU RST OCRCHAR OCRCODE OCRCOPY OCRCOPYG oeRDEST1 OCRDEST 2 OCRDSECT OCREND OCRFCB OCRPLASH OCRFLCT OCRFORl1S OCRINDEX OCRf10D OCRMODTR OCRNU MGR OCRRECNT OCR UC S OLAY!3U F OPCHAR OPCKPT OPCLASS OPDADCT OPDBEND OPDDB OPIOT OPJCTB UF OPJOBCPY OPJOBFRM OPJQE OPMSGCLS OPRECCT Nue NilC PHPU 3DR ~ EDP XEQ XEQ · .. · .. ·.. · .. · .. · .. ··.... · .. ·· .... ··.... XlQ · .. XEQ XEQ XEQ · .. XEQ ·.. XEQ ·.. XEQ · .. XEQ XEQ ·· .... XLQ XEQ ·.. XEQ XEQ · .. XEQ · .. XFQ X3Q ~DR INI~ PP.?U Pi~PU PPPH I~?O' PRPU PFPU · .. ·· .... XEQ XEQ XEQ X:SQ ···...... · .. ··.... · .. ·· .... ·. . ···...... · .. · .. · .. · .. · .. · .. HASP Directories 4 15 Page of GY27-7255 Revises September 15. 1976 By TNL SN27-1555 SYMBOL OPTIMEON OPWORK OTBADDR O'IBCA L1S OT BDS Eel' 01 BLODS OTBPRIO O'I'BSIZE or BT RAK J UTE~lP o UTWKSI Z P PBSPGCT PBSPT13L PBU.FOPT PBU FS AV E pee wCHN PCCW EN D PCCW PI' PCEASYID PCEB ASB2 PCEBAS £3 ?CECKl:'ID PCECONIC FeEDS ECf PCEEJ r~CB PCEEWF PCEFCB PCEFOrtM PCEGP1.1! D PCEID PCEINEID PCEIOI T R 1 PCEJC ':L PC EJ MTl' R PCELCLID PCELINK PCEML~rD PCENEXT PCEOC0N PCEOPCE PCEOPhlO PCEORTRl'J PCEOU'I.I L PCEPRGID PCEPR:=> ID PCEPRTID PCEPUNID 4 <======== REP8RENCED IN HASP ASSEMBLY MODULE PBPO ·... · ... · ... ·.. Noe · ... · ... ·.. INI'!' · .... Nue · .. ue · ... .. .. ·... ·.. INIl' ·... nne · . . . · ... · ... · ... ·.. .... · . . INIT .. · ... ·. Nue ·.. · ... . .. . · . . . · .. .... ·. · .... Nue ·.. IT . · .. · .. ·. ... · .. PRPU ·.. ·· ... · . · .. · ... · .. .... · ... . .. ·.. .. Nue ·.. · ... · .. papu · ... ·.. .. ·· ... ... · .. ··.... II NNITI ':' ·BTAM ... . . .. !Ie ·... ... ·... · · ... ·cor'iN ... · .. I'': MIse Nue hDR RTAM ·. . · .. I NIT i113 C NTT C PEPU · ... ·. · .. Nue . . .. ·.. . INI: · ... · ... PhPU · ... CON INIT · .. .? ... · ... ·.... · .. . .... ·... Nue I NI l' · .. Nue · ... ·.. · ... ·. ·... INI! · ... · ... ·... ·... .. ·· ... . . . . ... Nue · ... r: uc · .... · ... .. · ... 16 HASP Logic PRPU ' N NlJC NUC P:.iPU IN PRPU PRPtJ PRPU PRPO P:SPU COMM eOtlM 1 NI:' CO i.~ l'iUe NfJ C N N UC NHe Ii~ PRPU PRPU BDH COMi1 CON P 3.PU PRPU i~U C P RPU N OC rtPU N DC ? RPU COli ~ COMM. N He NOC ~uc N UC N UC NtJC PRPU NUC ~uc RDP ;'.!) i\. rtT AM ========) ·· .... · ... ·.. ··.... · .. · .. ··.... ·.. · .. ·.. ·· .. .. ·.. ·.. · .. · .. · .. ·.. ·.. ·.. · .. ·.. · .. ···...... ··.... ·· .... ·.. ·.. ··.... svc XEQ · .. svc XEQ · .. · .. ·.. XEQ ·.. ·.. XEQ · .. ···...... XEQ · .. ·..... ··.... ·.. · .. ·· .... ·· .... Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 5 YHBOL <=-===-==== PCEPUSID ··.... PCERDRID PCERJ EID PCERO PCER1 PCER15 PCES AV EA PCETHWID PCETIMID PCEq CS B PCEW A PCEWB PCEWC PCEWF PCEWORK PCEXEQID PCEXFER PCHJO~ PDADCT PDATAT Be PDBBAS LN PDBBURST PDBCH1 PDBCH~ PDBCH3 PDBC l i4 PDBCLASS PDBCOPYS PDBCPU PDBCPY G PDBDEST P DBD SEC 'r PDBFCB PDBFLAGl PDBFLAG2 PDBFLAG3 PDBFLAS H PDBFLCG PDBFLC M PDBFLIM P DBF LX" P!)BFLX2 P DBFLX 'i PDBFLX~ PDBFORMS PDBINDEX PDBLENG PDBMIse Aj .. ·... ··... ... ··.. ·... . ··... ·. ·. ·... REFERENCED IN HASP ASSe MBLY MODULE ··.... · ... ··...... ·.. · ... · ... ·.. · ... · .. ·INII' ... ·. NUe · ... · .. · ... · . NUe · ... ·I NIT ... ·· ... ... ··.... ·· ... ·... ... · .. ·... ·. · .. RDR · ... · . . . RDR ·· ...... ··... · .. .RDR · ... ... · ... · . . · .. INIT · ... · ... · ... RDR · ... · ... .. Noe ··... ... · ... · .. ·.'. ·... ... ·.. ·· ... ·... ··.... · ... .... RDR · ... · . .. · .. · ... · .. NUC PRPU NUC COMM NUC PFPU N HC PRPU PRPU RDR RTAM :L1DR NUC PHPU N UC PRPU NUC PRPU NUC PRPU COMM coctM RTAM PRPU CON NUC COMM · ... · ... ... · ... ··... ··... ... · ... ··... ... •• ·.. . ···... ... ··... .... · ... ··.. . .. . ··.... ·... .. · ... · ... · ..... · ... ·.. PRPU PRPU P2PO PRPU PRPU PJPU · .. ··.... ··.... ·.. · .. ·.. · .. ···...... ·.. · ... · .. · .. ·.. ·... · .. · ... · .. ··... · .. ... · ... · .. · . . · .. PRPU · .. · .. ··...... · .. · .. ... ··... · .. · .. · .. · .. PRPU ·.. · ... ·.. ·.. .. ·.. · .. · . . . . ·.. · .. · ... · .. · ... . .. ·· ... ... . .. PRPU PRPU PBPfJ PRPU PDR PRPU PRPU ?RPU PRPrJ PBPU PHPU HDR PRPU PHPU PRPU PRPU PBPU PRPU HDR P?PU ;DR ========> ·.. · .. ·.. ·.. ·· .... ·.. ··.... XEQ ··.... ·.. ··.... ··XEQ.... ··.... ··.... .. XEQ ·· .... ·XEQ ··.... ·.. ··.... XEQ ·.. ··.... XEQ · .. · .. ··.... ·.. ·.. ··.... ·.. XEQ.. · .. ·XEQ ··.... ··.... · .. ·· .... XEQ XEQ XEQ XEQ · .. XEQ · .. ··.... XEQ ··.... XEQ · .. XEQ HASP Directories 4 XEQ XEQ 17 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 SYMBOL PDBMISC2 PDBMOD PDBMTTR PDBOPCDJ PDBRECCT PDBSEC 1>DRST NR PDBtJCS PDBWTRID PDB 1 FLG2 P DB1LO G PDB' !iDES PDB1NULL PDB2FCB PDB2FORM PDB2~SC I PDB 2[1SC 2 PDB2RECC PDB2~ CS PDB3800 'PDB3800W PDeT PD:TFLAG PDDBDISP P.JDBPGCT PDDRSKIP PDE VTYPE PITBCLAS PITBJSr PI TE uedA PITBUNI? PIT BUSY PITCLASS PTTHOLDA <======== REFLRENC~D ·... · ... · .. · ... ·... ·.. ··... ··... · ... ... ... · · .. · ... ·.. ... ·... · ... · .. ... · ... ·.. ··... ·... ·... ·.. ·.. ·... ··.. · . ·... · ... · .. · . ··... ... · ... · ... ·... ··.... ·... ·... · ... COM!'! ,':OM M CO~lM ·. · ... .. ·... ·.. COMr1 COl"l M COr-1M PIT HOLD', cor1M PITICLAS COMM PITIDLE ? ITLAS'r C o{"H1 PITLNGT H Cot1M C Ot1M CO~lM PITPATID · .. PITPHIO [, ITST !\T l?JOB l?JUSTSEP ~L!) AV S ~LS AV .82 PLSAVl:3 PLSAVE4 4 COt-1M COi1M ·... ·...... · . .. ·. 18 HASP Logic IN HASP ASSEMBLY MODULE ·· ... ·· .... ... ··... ... · ... · .. · .. PRPU .. PRPU RDR PRPU PRPU RDR PRPU PRPU PEPU • ... ·.. ··• ... · ... ···...... ··.... · ... RPlJ · .. PPRPU RDE · ... .. ·.. ·· ... · .. ··... ... ... ·· ... ·· ... ... ·.. · ... ·... · . . · ..... · .. PRPa ·. . PRPU · . . ·. · ... · .. PRPU ·... . PRPU · ·... ·.. · ... · .. PEPTJ ·... ·. PRPU · .. · ... · ·.. ... ·.. · ... ·... .... ·· .... · ... ·.. ··... ... · ... ·I ... · .. ·. . · ... NIT ··... ·.. . ... · .. · . . INI! · ... · .. · ... · .. ·I .NIT.. ·.. ·· ... · ... ·.. ... INIT · . · ... · .. .. IN I:r · ... ·... .... · . · .. PHPU · ... · . . PRPU ·. . · ... PRPU ·... PRPU . .. . · ... PRPU · .. PRPU · ... PEPU PRPTJ ~ PR?U P?PtJ PRPU • t •• ========) ··.... ·· .... ·IEQ.. ·.. · .. lEO ··-...... ···...... ··.... ··.... ··.... ··.... XEQ ·.. XEQ · . . ·.. ··.... XEQ XEO · .. ··.... ·.. ··.... XEQ ·.. ·· .... ··.... ···...... ···...... · .. · .. · .. ·.. ·.. ··.... ·.. · .. XEQ XEQ XEQ XEQ XEQ XEQ XEQ XEQ XEQ XEQ XEQ XEQ ··.... ··.... XEQ XEQ · .. XEQ · .. XEQ ··.... ··.... XEQ XEQ ··.... · .. IEQ XEQ XEQ ··.... ·.. XEQ · .. • • • XEQ · .. ·.. ·.. ··.... ··.... ·• ..•• • •• ··.... ··.... ... Page of GY27-7255.Q Revised September 15, 1976 By TNL SN27-1S5S SYMBOL PKESSAGE PPB URST PPCLRP PPCPYG PPDSCPY PPFLAG PPFLAS H PPFLCT PPJCARDS PPJDSKEY PPJ,JNA!E PPJJOBEB PPJLINES PPJNDS PPJOBFRl! PPJPNAME PPJPU NCR PPJROOMN PPJXEQOF PPJXEQON PPLNCDCT PPMODPT PPMSGCLS PPRCFLAG PPRCPYCT PPRECCT PPREXMIT PPS~NR PPTRC PPXLAT' PPXLAT2 PPXLAT3 PPX LAT4 PP38 RS PP3800FL PRCCPYCT PRCFLAGS PRCHKJOB PRCHKPTE PRCHKUSE PRCJOBNO PRCKJOE PRCLINCT PRes IZ E PRINDEX PRLIN ECT PRPAGECT PRBPCEWS <======== REFERENCED IN HASP ASS~MBLY MODULE ·... ·... · .. • • • · ... ·.. - ... • • • • • •• • • • · ... ·.. · ... · .. PRPU ·.. · ... ·.. ··.... ·• ..... ••• ·. .. · .. ·.. · ... ·.. • •• • ••• · ... · .. • • • · ... ·.. ·.. ·... ·... · .. · .. ··.... ·· ... ... · . . . · ... • •• ··.... ··...... ·... · .. PFPU ·.. ·.... · ... ·.... ·.. ·· ... ··.... ...... ·· .... ... ··.... ··...... ···... · . . ... ·.. ·.. ··... ··.... · . . . · . . ·.. ··... . .. • • · .. PRPU · .. ,- ... ·..... ... ·. · .. ... ··.... ·.. ·· ... ·• ..• • ···... · . . - · .. ... · .. ·· ... · .. ... · .. ... ···... ... · . . ··.... ··.... · .. .. ·... · .. · .. ··... ·.... ... · . . · ... · ... ·.- .. · .. PRPO ·.. · ... ·.. ·.. ··... ·... ··...... · .. ·.. · ... ··.... ·.. · .. · .. ·. · . . . · .. ·..... ·· .... · .. · ... ··... · .. PRPU ·.. · ... ... · .. ·... · ... · .. · .. · ... · .. ·... ·.. · ... · .. ·.... · ... ··.... ·· ... ... ·... · ·... ... ··... ··... · .. ·.. ·· ... ·.. ... · ... · .. ... · .. ··.... · ... · ... · ... ·.. · ... · ... · ... · .. · ... · .. · . . · .. ··.. · . . . · ... · .. • • • · ... · .. · .. PRPU ·.. · .... ·.. INIT · ... ··... · .. INIT · .. ··... ... · .. · .. ·... ·· .... ·.. ... · . . ·.. ·. . .. · . . ··.. ·.. .. . INIT ·. · .. ·... ... ··... ... ·... INIT ·... ··....... PHPU ··.... ···... ... · .. .. · .. · ... ·... · .. ·.. · ... · .. ·. .. ··.... · ... ·... ·..... · ·.. · ... ·. Nue . ... .. ·. ·•••• ... •• ••• ••• • ••• · ... ·. .. ··... ... ••• ·••...• • ·• ... ••• ··... ... ·... .. .. ·... ··... ... ··• ... ... ••• · ... ... ·...··.. ···... ... ··... · ... ... ... ... ··... ... ··· ... ··... . ·· ... ... · ... • ·. · ... ·... · . ·· ... ... · ... ... ·. ·· ... PRPU • •• • •• P3PU PRPU PRPU , • PRPtJ PRPU PRPU PRPU PRPU PRPU PRPU P&PU PRPU PRPU PRPU PRPU PRPU !II • PRPU PRPU ••• PELlO PRPU PRPU PRPU PRPU PRPU PRPU PEPO PRPU PRP(J papu PRPU -. - PRPU PRPlJ PRPU PRPU PRPU PRPU MIse PRPU PFPU PRPU • ========> ·.. •• •••• ··.... ·•·..••.. ··.... ···...... ···...... ···...... ···...... ·•·..••.. ··.... ·.. ··.... ·.. · .. ··.... ···...... ··.... ···...... ·.. ··.... ·.. ··.... ··.... ··.... ·.. ··.... • •• · .. • •• ... ··.... · .. · .. ··.... ··.... ···...... ···...... ···...... ·.. ··.... ... HASP Directories 4 - 19 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 SYMBOL PH TPCE ¥IS PS EPPG PS MF6BID PSMF6JBN PS MF6 NL 'R PS MF6PGE PSMF6UIF PTIMEON PH ERRPT P UNPCE WS PURPCE WS PWKJOE QENTBY QUECHAIN QU E.FLAGS QU EHOLL, A Q UEHOLD 1 QUEHOLD2 QUEJC:SW Q OEJ03NO QUEJOECT QUEOPCAN QUEOPRTE QUEPRIO QU EPRTRT QU EPU NRT QUEPURGE QUETRAK QU ETYPE RBDSECT RBIEND RBINT COD RBLINK o.SOEND R BONEXT RBPREFIX RBSTAB RCARDID RDADCT FDRDCT RDRDLM RDBPCE1tlS &DRSW RIDBUSY RIDDATA RIDF-LAGS RIDPOST RIDTeD (======== aEFERENCED IN HASP ASSEMBLY MODULE ··.... .... ·. · . ·· ... ... ... · ... ·· .... ..... ·... ·· ... ... ·.. .... ... · . · ... ··.... ..... · ... ·.. .... ···..... ··...... ·.. · .. ·. ·... ··.... CON INIT ·... COI1M COMM COMM COMM COMt1 COMM CON CON ·... ... ···... ... · .... CON ·... COMM ··.... ·... COMM ·... CON C8N CON COr1M C Oi'11'1 COMM COMM COMM CON ·.. ·.. ·. · ... ·.. ··.... ··... ... ·.. ·... · .. ··.. · . ·. ·. ·... · . ··... ... ··.... · . ·... ·... ··.... ·... ·... .. ··... ·.... ... ·· ... · ··.... ... .·.... ··.... 4 - 20 HASP Loqic COMM CON CON CON C3N C:)N CON Nue ·.·. ·· .... PRPU PRPU PRPU PRPU PRPU · .. ··... ... ... ···...... ··... ·... ·.. ·... · ... ·· ... ... ··.... ·· ... ... RDR ·... ·RD5. .. ·· ... ... · ... ROB · ... · ... ·RDR .. ·... · ... ·.. ·..... RDR · ... · . · .. ·· .... ·.. PRPU PRPU ··.... · .. PRPU Nue NUC ... ··... ... N· HC.. ·PRPfJ PRPU ·. INI':' MIse Nue · ... INIT MIse Nue PRPU ·...... ··...... Nue ·INIT Nue · ... INIT ·. · .. PRPU INIT · ... Nue PRPfJ · . .. · .. PRPU MIse · .. · ... ·... MIse ·... ·Nue.. PRPU PRPU ··... ·... Nue PRPU ... INIT · ... NUC PRPU ·.. PRPU RDR · ... INII MIse NUC EDR · ... IN IT NHe · ... RDR · ... .... ·..... ··.... ··... ... ·.. ··...... .. · ... · . Nue · ... ·RDR · . ·· ... ... · ... ··.... ··...... RDB · ... ·.... ·· ...... tiDE ·... · · ... · ... · .. .. RDR ·· .... · ... ··.... ·... RDR · ... · ... ·· ...... Nue · ... ROR ... ·... · ... ·.. ··.... ·RDH.. ···... ... RDB · ... · . . . ··... . ··.... ··... RDB .. · ... RDR ·... ··... ·· .... RDB ... PRPU PRPU HUC PRPU PBPU 2DR NUC T? ~PtJ RDR PRPU ~DR ========> · .. ·.. • •• ·.. ··.... ··.... ··· ...... ··.... ···...... ·.. ··.... ··.... ··.... ··.... ·• ..•• .. • •• ··• ....•• ···...... ·IEQ ··.... ·• ..• • XEQ XEQ ·.. ··.... · .. ·IEQ.. • & • ··.... ·.. · .. ·.. ·.. ·.... · .. · .. ···...... ···...... ·XEQ ·.... · .. · XEQ ··.... ··.... ·.. ·XEQ ··.... ·.. ··...... · .. ·.. ··.... ···...... ··.... ··.... ·.. · .. ·.. ·· .... ···...... ··.... ···...... ···...... ·• ..•• ··.... ··.... XEQ XEQ XEQ XEQ XEQ XEQ Page of GY27-7255-O Revised September 15, 1976 By TNL SN27-1555 SYMBOL RlnUCB RJCLTRAK RJEPCEWS RJOB RLSAV E1 RLS AV E2 RLSA VB3 RMESSAGE RMSGCLAS RPRIORTY R SA VE 1 RS AV E2 RTPCARD RO R1 R10 ft11 R12 R13 R14 R15 R2 it3 R4 R5 R6 R7 RS R9 SAVE 5 MFCBER SMFCHAIN SMFDSEC!' S MFDS ER SMFHD d'ry SMF'HSPID S MFJMR S MFJMRT P SMFLINEV S MFOPCAN 5 MFOUTT P SMFPRGTP SMFPSETP SMFPSST P SMFRDW SMFRECTP S MFRMT EV SMFRST RT (======== 3~FERENCED IN HASP ASSE~BLY MODULE · ... ··.... ..... ·....... ·· ... ... ·· .... .... ... · .. . ... ... ·... .... ... · ... ··... ... · ... ·.. ·.·... ... · .... .... RDB ·· ... ... · · ... ··.... · .. .... ··... · .. · ... · ... ... · ... · ... · ... · .. ··... ·... ·.. ... · ... ·· .... ·... ·... · ... ·· .... .... RDE ·· ... ... ·.. · . .. ... . ... · ... · ... · . . . ·. .. .... · ... · ... ·.. · ... · .. INIT eo· • RDrt NUC COMM aDR. RDR RDB ROB. RDR RDR RDB RDR COMM ACCT COMM ACCT COMM· AceT COMM ACCT COMM ACC~ CON CON CO N CON CON COMM CON ••• • •••••• MIse NUC PRPU RDR RTAM SVC ••• AceT COM~ PKPU PRPU PPPU COMM ACCT ACCT COM M IN!;I' MIse ACCT ACCT COMM XEQ XEQ XE.Q XEQ XEQ XEQ XEQ XEQ XEQ XEQ XEQ XEQ IEQ XEQ XEQ MISC Nue PRPO PDE RTAM SVC WTR XEQ · ... ··... ... · .. ·PEPU ... INIT MIse ... . ... MIse ··.... INIT INIT MIse · .. · ... · ... MIse · .. · ... · ... ··.... ·. .. MIse ·.. .... . ... · ... MIse .MIse . .. ··.... PRPU ·.. · .... · ... ··.... . ... ACCT COMM ··.... .... ·... .... ·IN...IT ISC · . . PRPU ·.. • • •• · .. ·.. ... ·.. · .. ··.... ··.... ·.. ··.... ·.. ··.... ··.... · .. INIT MISe NUC PRPU RDR RTAM SVC WTR INIT MISC Hue PRPO RDB RTAM SVC WTS IN IT MIse N ue PRPU RDR RTA Ii SVC WTR INIT MIS C NtJC PRPU RDE FTAM SVC WTE INIT MIse Nue PRPU RDR RTAM SVC WTE INIT MIse NUC PRPU RDR RTAM sve iTR I NIT MIS C NUC P EPU RDR ETAM SVC WTf. INIT MIse Nue PRPU RDR RTAM SVC WTR INI~ MIse Nue PRPU RDB RTAM SVC WTF. INI·T MIse NUC PRPU RuE PTAM SVC W'I'F INI~ M!Se Nue PBPU RDR BTAM SVC WTR INI! MIse NUC PRPU RDB hTAh SVC WTR I NIT MI;" C Nue PRPU RDR RTAM SVC WTR INIT MISC NUC PRPU RDB RTAM SVC wrR ACCT COMM CON AceT COMM CON ACCT CO~M CON ACCT COMM CON AceT ~oaM CON ACCT COMM CON ACCT COM11 CON AceT COMM CON ACCT COMM CON INIT •••• CON INII •••• COHM CON INIT ·... ·· ... ... ACCT ·. .. ·... COMM · ... · ... ·. ··... ... ·.... ... ·... ========) rl PRPU ... ·.. ·· ... · ... · .. PTAM ·.. · ... · ...Ali · .. .RT ·· ... ... ··.... .... ... ·.. ·RTAM . .. ··.... HTAM ETA!'! RTAM FTAL; ETAM XEQ XEQ ·· .... ··.... ·· .... ·.. ·· .... ··.... •·••.. ·.. ··.... ·.. ···...... ··• ..••.. . .. · .. ·.. ·.. ·.. ·· .... ···.... ·.. ·.. ··.... .~. HASP Directories 4 - 21 Page of GY27-7255-0 Revised September 15, 1976 By TNL S~27-1555 SYMBOL SMFSSETP SMFSS ID SMFSSL.EN SM FSSSTP S MFSS':r R'l' SMFT YPE SMF 26END S MF26 leD S MF261 ND SMF261 NF SMF26JBN 5 MF26 L N'. SMF 26LN2 SMF26LN3 SMF260PD SMF26PUR SMF26RP'r S MF26-RV', 5 riP 26S as SMF26UIF S MF26XST 5'1 Fu3 END SMF430PT SMF 43RV1 S MF45END 5 MF47E ND SMF47EVT S MF47LIN S MFu 7LN1 S!1F47LN2 SMF47L'1SG SMF47PSW SI1F47BMT SMF 48E vIr SMF48LIN S MF48PSi S~F48E.MT S MF6BlD S MF6CHR SMF 6CPS SMF6END S MF6 FCB SMP6FLC SMF6FLI S ~F6 FMN S MF6IOE SMF 6JB N SMF6JNM 4 <======== REFERENC ED IN HASP ASSE MBLY MODU LE . . · ... ·... ·. ACe! · ... ··.... ·... ·· ... ... ·... ·· ... ... · ·. ·... ... ·... ·... ·. ··..... ·. ·· ... ... · ... ·..... ··... ... · ... · .. RTAM ··.... · ... ··... · .. ..... ··.... ·• ... ••• INIT ··.... INIT · ... · ... ·.. · ... · .. · .. MIse · .. · ... ·.. · ... ... ·... MIse ·· ... ·..... ·... MIse · .. · ... ... ·... · .. · .. · ... · ... .. ·... ·.... · ... ·.. · ... · ···.. · ... MIse ·.. · ... ·.. · ... .. · ... ... ·... ... ·.. ··.... ·.. · ... · · .. ·.. MIse · .. · ... · .. · ... · .. ··... ... MIse · .. • • ·.. · ... ·.. · ... ·... · ... · .. · . . MIse · ... · ... · ... ··.... · ... ··.... · ... · ... · .. · .. , MIse · .. ·... ... ··.... ·... MIse · .. · ... ·.. ··... ·. INIT · ... · .. · ... · .. · ... · .. INIT .. . ·.. ··... ... ··.... ·· ... ·.. INII ··... ... · ... · · . . . .. . ··...... • ••• ··.... ·... ··.... ... · ... · .. ··... ··.... ... · . . · . · . . . · ... · ... ··.... ··.. .. ·... · .. · ... .. · .. ·.. ·. .. ·... ··... ·.. ·... ... ·.. · ... ·.. . ··... ··.... ··..... · ... ·· .... · ... ·.. ... · .. ·... · ... ·.. · ... ·.. · ... ··.... ·... ··...... ··.... ··.... ·... ··... ... ... .... ·· .... papa ··.... ··... ... ·· ... ... ·· .... ··.... ·· ... ··.... ·..... · .. ·· ... .. .... ... ··... · .. · ..... . ... ·.. · .. COMM AC·:T COMM COMM ··.... ·.... ··.... · ... ··.... · ... ··... ·... ... ·. ..·..... ·· ... ... · ... ·... · ... ·. · ... ... ··... ... ··... •• · ... 22 HASP Logic INl1r RTAM BTAM INIT L'lISC PRPU RTAM MIse MIse MIse MIse MIse MISC MIse , RTAM hTAM RTAM RTAM PT AM RTAM iiTAM HTAM RTAM RTAM RTAM PRPU l!RPU PRPU PRPU PRPU PRPU PRPU I?RPU PRPU -PRPU ··.... ··.... ··.... ···...... · .. ··.... ··.... ·· .... ·.. ·• ..•• ··.... ··.... ·.. ··· ...... ···...... ·.. · .. · .. ·· .... ··.... ·.. ··.... ••• ·• ..•• · .. ========, ···...... ·• ..•• ···...... ···...... • •• ··.... · .. ··.... ··.... ·•• ..•••• ···...... ·.. ··.... ···...... ···...... • •• ·.. ··· ...... ···...... ··.... ··.... · .. ··.... ··.... ·· .... ·• ..•• ·.. • • • · .. ··.... ··.... ···...... ···...... ··• ...••. ··.... ··.... ··.... ··.... ···...... ··.... ··. ...... ·.. ·.. Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 SYMBOL SMF6LN:l SMF6MID S MF6 NDS S MF6NLR SMF60UT SMF60WC 5 MF6 PGE SMF 6R 'fE SMF6UC 5 S MF6U IF 5 MF6WST SMF638E 5 PPADFCB SPPARM SPPBFREQ S PPBT REQ S PPBURST SPPFLAG1 SPPINIT 5 PPMODI SRT'EALOC SRTEASCI SRTEBPRV SRTEBPUB SRTEBSTR S BT ECHGS 5 RTEONLI SRTEP3ES ;iRTERESV saT EST AS SRTESTAT SF TE OSER S RTEVOLI rCBDSECT TCBP LG S rCBGRS rCBHNDSP TCBJSCB TCBJ5ICB rCBLMP TCBLTC TCBNTC TCBOTe TCBP.BP TeBTes rCBT IO TEDDSEc'r TEDSI Z (======== REFERENCED IN HASP ASSEMBLY MODULE ========> ... ··...... · .. PRP£J · ... ···... · . . •• ·· ... ... ·... ... ·... ···...... · ... · .. ··... ··.... · .. ·... . . . · . . . ·... · ... ·... ··...... · .. ·... ·... ··... ··... ... . . . · .. · ..... · ... ··... ... ·INIT ... ··.... · .. · ... · .. ·.. ·... IN!T · ... · .. · ... INII · ... .... · .. · ... · ... • • • · ... · .. INI1 · ... ·PRPU ... · ... · ... · .. · . . · . . . · ... · .. INI! . . · ... · ..... I NIT ·... Nue · . INTT · ... · .. ·.. · ... IN II' · ... · .. · ... · .. · ... RDR · ... I NIT IN!! · ... · . . · ... · ... INIT Nue · ... · .. · ... INII' ·. IN!? · ... · ... INIT · ... · .. .. .. . · .... I NI!' ·. INI'!' ·· .... ··... .... ... · . . INIT ·. . . N He · ... · ... ·... ··... · . . · ... ··.... · ... ... ··.... ·... ·.. · ... .... ·... ·· .... · . ·.. · ... ··INIT ·... ··.... ·· ... · ... ... · .. ·... ··.... · ... · .. ··... ... · ... · . . · ... Nne · ... · .. INI! Nue · ... INTT Nue · ... ··.... •• •••• ··.... ··.... ··.... ··.... ··• ..•..• ···...... ···...... ···...... ··.... ··.... ··.... ·· .... ·.. ··.... • • • · .. ··.... ·.. ... ···...... ·.. ··.... ··.... ·.. ··.... ··• ...• .• ···...... ··.... ·XEQ.. ··.... IEQ ··.... ·XEQ.. ·.. ·XEQ.. ... · .. ··.... ·· .... ·... · ... ··.. · ... ·.... ••• ·.. ··• ... ... · ... ·.. ·...·. ···...... · . · ... ·.. ··.... ·... · ... ··.... ··.. ·... · .. ·... ·· ... ... ·.. ••• ··.... ·.· . · ... ·.. ··.. ·. ·... · .. ·. . ··... cor'1M •• ... ·· ...... ·.. ··... ·... ··... ... ·. · ... ·. · ... ··.... ··... ·.... ... ··.. ·... COMM • COMM COMM CON COMM CON COMM COMM COMM COMM COi1M COMM CON CON CON CON CON CON CON PRPO PRPU PRPU PRPU ?RPU Pi:?PU PRPU PRPU PRPU PRPU P RPfJ PRPlJ pgPU NUC PRPU NUC PRPU NO C NUC INI! N He NUC ~lISC EDE ··· ...... ···...... ·· .... ·.. ···...... ···...... · .. ··.... SVC SVC ···...... • •• XEQ XEQ ·.. XEQ ··· ...... XEQ XEQ ··.... XEQ ·.. XEQ ·· .... · .. ·.. · . . XEQ ··.... ·.. ·..... HASP Directories 4 23 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 SYMBOL (======== INCH ·... TNMB r NMD rNMO TNRT l' ~T C TNTG T?BFDA:'A '!' PBLCC~D 1:FBLCCC TPBRLCNT REFLRENCED IN HASP Nue INIT . . . INIT INIT ·... INI': INI'~ ·. .. . ... · ... ··... ... TPSflf INIT I NIT INI! · .... COI.·l~l UCB~:::'1 cot! ri UCBDI\L3 COdM CJN IN I? COhi'1 CON INII COM f1 co !'; I N lor U CBBNU L {JCBBPl"{V UC BE? UB UC ERST R U CBBSV 1. UCBCHA UCRCHGS UCBDADI ·... ·... ·... UCBDBD N:\ UCBDC~;LL UC BD U ;)E~~ OCBDVOLI UCBDVTOC U:BFL1 CON INIT ItJ I-:: CCH~ INT! C 0 t1 :1 CON IN: r cor·1 !1 CO f\ ,..;or"l ~1 C:l N INIT I cor'L1 r.ON INI!' COL1M CJ 1~ I~ II' CONd CON INI':' COdM C,)N INI: IN IT I N:I' I N1 l' P{ I'!' laIr I NI -I ItT IT ll~ I :: c or'p~ c u;~ I ~l l' C:Ur-1!-1 C:) N IN Ill: COHU INIr:' COi-1M CO L~ I NIi:' !NI1' COrd'1 C:J L~ IN IT COb~1 CO'S I~I£ ·... .... UCBF' Si~Q UCBHPDV UCBJBNR Ul i3MDEBF UCBMON:~ fJCP:NA~.E 4 - 24 HASP Logic ·... · ... Nue Nue · ... CO N I N I'.~ INIT C 0:1 ;.1 CO i'1 I NIT COi.'}:'" --r'.! - ,,-, .l.i'< .J.. 1- ·... · ... · ... · ... ·· ... ... · .. .. ·.. · ... ·.. Nue RDR NfJC PRi?U nDR NlJe P~.PiJ i\DP NUC PR?U HDR N ue P HP U ? D n NUe P?PU KD; N UC .!? 5~ PUR D R ~~ UC ? S? 0 ? D R NO C !>RPU N T]C P RP U !FJC P EPT] NUC PEPU Nue PRPU f.:TAM E.TA~ rtD? RDR · .. ·.. ·· .... · .. · .. ··.... ·.. ·.. · .. ·.. r~TAt! ··.... · .. · .. · .. · .. ·.. ··... ... ·.. XEQ (.~ l' Arl RI AM HTAL1 ·... · ... ·... SVC SVC SVC SVC SVC SVC SVC SVC SVC · .. · ... N GC RD R sve NUC P3.?fJ RDh SVC SVC SVC SVC SVC SVC XEQ XEQ · .. XEQ XEQ · .. · .. IEQ XEQ XEQ XEQ XEQ XEQ XEQ ··... ... XEQ · ... XEQ · ... · . . ... ·.. · ... .iDR ·· ... · .. · .. XEQ · .. XEQ · .. fDR · ... XEQ · ... ... ·.. . sve · .. ·.. XEQ ·... XEQ ·... XEQ ·... · .. p~:? Nue PRPG N UC PRPU Nfl C P RPtJ SVC HDP SVC SVC N UC P HPU RDR NU C P Hpr] Nue XEQ XEQ XEQ Ri)f~ ? ;::nu ::: DR U :;.:' ct P :-:'?'U rlD? ? ~PU i XEQ ·.. ·· ... · .. · .. ... ·• .••. · ... ··.... ·• ••.. IEQ XEQ XEQ ·• .• .• · ... ·.. ··.... XEQ ... • •• XEQ ·• ••.. ··... XEQ ·.. XEQ ··.... ··... ··.... ·· .... XEQ ... XEQ ... ··.... ··.... XEQ ··.... ··... ... ·.. · .. XEQ ·· .... ·· ... XEQ · .. XEQ · .. · ... • •• · .. ·• .••. IEQ ··.... ··... XEQ ... ·RDR .. · ... • •• ··.... XEQ XEQ e •• RTA~ SVC SYMBOL ; CIl 't1 ....0 11 (1) 0 rt 0 ....11 (1) en .c:: ~ ~ UCBSTAB UCBSTAT UCBSYSR UCBTBYT2 UCBTBYT) UCBTBYT4 UeBTYP DCBUNLD UCBUS fR UCBVOLI UCB3COMM UCB3DACC UCE3UREC WA WB we WCMBFD WCMBFE WCMBPP WCMBPG WCMBFH WD WE iF WG XALLOCWT XDUPBIT XEOJBIT XEOJl!ES XEQPCEWS XGETIOT XIOTWREQ XOCR"ES XOCRMSG XOUTCDBF 10UT!NT XOUTEST IOUTTOTL (===================== COM~ COMI'I COMM CON CON CON COHM COM" COHM COMM COMM CON CCN CON COMI1 ACCT ACCT ACCT ACCT lCCT COMM eOMM COMM CO"" CON CON CON CON COMM COMM CON CON COMM COMe, COMM REFERENCED INIT INIT INIT INIT INIT INIT INIT INIT INIT INIT INIT INIT INIT INIT IN.IT ·... I~ HASF ASSEMBLY MODULE NUC NUC NUC FFl?U PRPU FSPO PRPU ROB .... SVC SVC SVC IEQ XEQ XEQ ... ··... XEO Nue NUC Nue ·... Nue MIse MISC :-fISC NUC NUC Nue FREU PRPU FBPtJ SVC SVC SVC RDR ROB RDR ROB BDR RDB RTAM RTAM RTAM XEQ XEQ XEQ XEQ XFQ XEQ XEQ .... NUC INIT INIT INIT INIT MISC ·... NUC NUC NUC NUC Nue ·... ·... .... . ... .... COMM RDR ROR ROB liue ·... .... .... FBPU PRPU Fl1PO ======================) .... COlf .... .... ·.... NUC fFFU FEPU FliEU PBPU BOB STAr. ROB RDR ROR RTAM RTAM BTAM RTAM XEQ IEQ XEO XEQ XEQ XEQ XEQ XEQ IEQ XEQ XEO XEQ XEQ XEQ XEC XEQ XEQ XEQ ~ S Yll BOL ....., XOUTTYPE XOUTXCES XPCEDCT XPCEDDB XPCEIOT IPCEJOB XPCEJOBN XPCEJST XPCEOUTC XPCEPIT XPCEPBT XPCEPUN XPCESTAT XPCESTEP XPOSTBIT XBEXREQ IS XSYNCFLG XSYNCREQ co ; (/l toO ~ 0 ..,. \Q 0 z <===================== REFERENCED IN HASP ASSEMBLY MODULE .... .... ..... ... COM (111 ======================) XEQ XEQ XFQ XEQ XEQ XFQ XEQ lEO .... .... .... IEQ .... COMfiI .... COMM COMM .... CON INIT NUC .... FBPU ROB BTAM SiC XEQ XEQ XEQ XEQ XEQ XEQ XEQ XEQ XEQ XFQ XEQ SECTION 5 HASP DATA AREAS Data Areas 5 - 1 1 1 1 1 1 1 1 1 1 1 1 1, i 1 1 1 , i 1 1 1 1 1 1 , 1 1 1 1 , , '1 ! i 1 1 1 1 1 1 1 1 , 1, 1! , i 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 HASP BUFFER The Buffer is a resident control block which consists of three basic parts: (1) a standard OS Input/Output Block (lOB), (2) Buffe"r control information, and (3) a work space. There are three types of buffers which differ only in the format and length of the three basic parts. These are: (1) the basic HASP Buffer, which is used as a general work area, or to contain control blocks, data blocks, or input card images; (2) the HASP Remote Job Entry (RJE) Buffer, which is used to transmit and receive text blocks to and from RJE terminals; and (3) the HASP Overlay Area, which is used for reading and executing nonresident HASP Overlay routines. Offset. Bytes and Bits Field Name DescriEtion 00 (00) 1 IOBFLAGl I/O flags 01 (01) 1 IOBFLAG2 I/O flags 02 (02) 1 10BSENSO First sense byte 03 (03) 1 IOBSENSl Second sense byte 04 (04) 1 IOBECBCC I/O completion code 04 (04) 4 IOBECBPT HASP Event Control Block address 08 (08) 1 IOBFLAG3 I/O flags 09 (09) 7 IOBCSW Channel status word 16 (10) 1 IOBSIOCC SIO condition code 16 (10) 4 IOBSTART Channel program address 20 (14) 4 IOBDCBPT Data control block address 24 (18) 1 IOBREPM Reposition modifier 24 ( 18) 4 IOBRESTR Channel program restart address 28 ( lC) 1 TPBMXREC Maximum RJE output record count 28 ( 1C) 2 IOBINCAM Block count increment 30 ( 1E) 2 IOBERRCT Error count 32 (20) 1 TPBLCCC Last remote output command operation 32 (20) 4 TPBLCCAD Last remote carriage control address BUFFER 5 - 3 HASP BUFFER Offset Bytes and Bits Field Name Description 32 (20) 1 IOBXTENT DEB extent 33 (21) 1 IOBSEEK Direct-access seek address 36 (24) 1 TPBRECNT Current remote output record count 36 (24) 4 TPBFDATA Remote data pointer 40 (28) 1 BUFECBCC I/O completion code 40 (28) 4 BUFCHAIN Buffer chain field 44 (2C) 1 BUFTYPE Buffer type 44 (2C) 4 BUFDCT Device Control Table address 48 (30) 4 BUFEWF EVent Wait Field or $POST address 52 (34) 4 OACECHN Overlay area chain word 52 (34) 4 BUFDDB DDB address 52 (34) 1 LCBMCB Remote mode byte 53 (35) 1 LCBACK Remote next acknowledgment 54 (36) 2 LCBRCB Remote response control block 56 (38) 8 IOBCCW1 Channel command Word 1 64 (40) 8 IOBCCW2 Channel Command Word 2 12 (48) 8 IOBCCW3 Channel Command Word 3 11 (40) 1 OACEPRIO Overlay routine priority in this area 18 (4E) 2 OACEOCON Overlay call constant 80 (50) 8 IOBCCW4 Channel Command Word 4 88 (58) 0 BUFSTART Start of buffer work space 88 (58) 4 OACENAME Overlay routine name 88 (58) 4 HDBNXTRK HASP data block chain track 88 (58) 8 IOBCcw5 Channel Command Word 5 92 (5C) 4 OACEASMO Assembly origin of overlay routine 92 (5C) 4 HDBDSKEY HASP data block data set key 5 - 4 HASP Logic HASP BUFFER Offset Bytes and Bits !:ielQ Name Descri~tion 96 (60) 4 OACEPROG Overlay routine entry point 96 (60) 4 HDBSTART HASP data block start 96 (60) 8 IOBCCW6 Channel Command Word 6 104 (68) 8 IOBCCW1 Channel Command word 1 112 (10) 8 IOBCCW8 Channel Command Word 8 120 (18) 0 TPBUFST Remote buffer work space start BUFFER 5 - 5 HASP BUFFER DEC HEX 00 00 T------------T------------y------------T------------, I IOBFLAG1 I IOBFLAG2 I IOBSENSO I IOBSENS1 I I I I/O Flags I I I First I second I I I Sense Byte I Sense Byte I +------------+------------+------------+------------~ I IOBECBPT I I I IOBECBCC I I I I/O Comple-I Address of HASP Event Control Block I I I tion Code I +------------+------------+------------+------------~ I IOBFLAG3 I 10 BCSW +1 +2 I I I I I 04 04 08 08 12 OC I I/O Flags I I I I/O Flags I Channel Status Word I I I Byte 2 Byte 3 Byte 4 I t------------+------------+------------+------------~ I +3 +4 +5 +6 I I I I 16 10 2G 14 I I 24 18 28 1C 32 20 36 24 40 28 44 2C 48 30 I Channel Status Word (Continued) I Byte 5 Byte 6 Byte 7 Byte 8 I +------------+------------+------------+------------~ I IOBSTART I I I IOBSIOCC I I I SIO Condi- I Address of Channel Program I I tion Code I I +------------+------------+------------+------------~ I IOBDCBPT I Address of Data Control Block I I I I t------------+------------+------------+------------~ I IOBRESTR I I I IOBREPM I I I Reposition I Restart Address of Channel Program I I Modifier I I +------------+------------+------------+------------~ I IOBINCAM I I IOBERRCT I I TPBMXREC I Block I I I Remote Max I Count I Error Count I IRecord Count I Increment I I +------------+------------+------------+------------~ I IOBXTENT I IOBSEEK +1 +2 I I TPBLCCAD I Direct Access Seek Address I I TPBLCCC I Addr of Last Remote Carriage Control I ILast Car Ctll I +------------+------------+------------+------------~ I +3 I +4 +5 +6 I I TPBFDATA IDirect Access Seek Address (Continued) I I TPBRECNT I Remote Data Pointer I IRecord Count I I +------------+------------+------------+------------~ I BUFCHAIN I I I BUFECBCC I I I I/O Comple-I Buffer Chain Field I I tion Code I I t------------+------------+------------+------------~ I BUFDCT I I I BUFTYPE I I IBuffer Type I Address of Device Control Table I I I I I I I t------------+------------+------------+------------~ I BUFEWF I I I EWF Flags I Event wait Field or Post Address I L I ____________LI ___________-L-___________ ____________ JI ~ 5 - 6 HASP Logic HASP BUFFER 52 34 56 38 T------------T-----------~------------T------------, I I I OACECHN I Overlay Area Chain word , BUFDDB I Address of DDB I LCBMCB ,LCBACK LCBRCB , 1 Mode Byte , Next Ack Response Control Block , +------------+------------+---~--------+------------~ ,IOBCCWl +1 +2 +3 I I 60 3C 64 40 , , Channel Command Word 1 , Data Addr. Data Addr. , ,Command Code Data Addr. +------------+------------+------------+------------~ I +4 , +5 '+6 +1 I I I MSEQTYPE' I , Channel Command WOrd 1 (Continued) , Flags ISeq/Com Typel Count Count I I +------------+------------+------------t------------~ I IOBCCW2 , I I I 68 12 44 48 Channel Command Word 2 I I I I I , Channel Command Word 2 (Continued) I I IOBCCW3 I Channel Command Word 3 50 I Reserved I , I Channel Command Word 4 , I 54 I 58 I I I I ,, +------------t------------t------------t------------~ I 88 , I Overlay I Ove.rlay Call Constant I I Priority I I +-----------+------------+------------t-----------~ I IOBCCW4 I I 84 I t-----------+----------+------------t------------~ , I OACEPRIO I OACEOCON I I I I 80 , , +------------+--------+------------t-----------~ I 4C , , t------------t--------+------------t----------~ I 16 I Channel Command Word 4 (Continued) , I I I I I I I I +------------+------------+------------t------------~ I BUFSTART I = Variable Length Buffer = I I I IL________ J.. ___________-L____________ J.. ____________JI BUFFER 5 - 1 clASP BUFFER DEC HEX 88 58 T------------T-----------~------------T------------, 5C 92 96 HASP Data Block Buffer Extension 60 I I I I HDBNXTRK Note -- This Word is Synonymous With BUFSTART HASP Data Block Chain Track I I I I HDBDSKEY I I I I HDBSTART t------------+------------+------------+------------~ HASP Data Block Data Set Key 8 I I I I +------------+------------+------------+------------~ HASP I I I I = HASP Data Block I I I Il ____________ 5 - I I I I Logic ~ ___________ _L ____________ ~ I ____________ J HASP BUFFER DEC HEX 88 58 92 5C 96 60 100 64 104 68 HASP Remote JOD Entry Buffer Extension 108 112 70 116 74 120 78 BUFFER 5 - 9 HASP BUFFER DEC HEX 88 58 92 5C 96 60 HASP Overlay Area Buffer Extension 100 5 - 10 HASP Logic HASP CONSOLE MESSAGE BUFFER The Console Message Buffer (CMB) is used for four basic functions: 1. Hold a command entered from OS console, HASP reader device or HASP remote console device. 2. Hold responses from the Command Processor while queued to the HASP communications suntask or Remote Control Processor. 3. Hold $WTO or WTO messages while queued to the HASP Job Log Processor, communications subtask or Remote Console Processor. 4. Hold $WTO messages and DOM ID that require immediate operator action, allowing the redisplaying of the message and DOM for deletion of the message from OS display devices. Offset Bytes and Bits Field Name Description 00 (00) 4 CMBCHAIN ADDR of next Console Message Buffer 04 (0") 1 CMBFLAGS Flag byte lx.l WCMBFD 05 (05) 1 CMBCONS 06 (06) 1 CMBMSGL End of out-of-line WTO (MLWTO command processing response) Message for HASP Log only CMBCONS contains UCMID (used for command input and response) CMBCONS contains remote number Input source does not have job authority Input source does not have system authority Consoles specified (remote number, UC~ID, or logical console routing) Message length .xl. .x.1 WolClv'lBFE WolCMBFF . x.. 1 ••• .x •. 01, •• WCMBFG WCMBFA .x .. O.l. WolCMBFB 01 1 CMBCLASS Message class or display area 10 (01) Bit Definitions When WCMBFF 0000 1111 = 1 Normal command response (area = Z) Out-of-line display area A to 0 (0001 = A, 0010 = B, 0011 = C, etc.) CMS 5 - 11 HASP Offset CO~SOLE Bytes and Bits MESSAGE BUFFER Description Bit Definitions When WCMBFF When WCMBFE and WCMBFG Also 1 CMBPRIO Message queueing priority Message priority 0 to 15 CMBMSG Console message 1111 08 (08) 132 08 (08) 4 CMBDOMID DOlVi 08 (08) 1 CMBMARK Attention indicator 09 (09) 9 CMBTIME "rime of day HH. MM. ssb' 18 (12) 9 CMBJOBNO Job number 'JOBbnnnnb' 27 (lB) 113 CMBTEXT Message text 5 - 12 clASP Logic = 0 Message class requires immediate operator (unconditional display on OS console device) 1. .. . ... • • •• 0 Message class levels 0 to 7 (levels) may be screened out by $TCON) • 111 •••• 07 (07) = ID for CMB HASP CONSOLE MESSAGE BUFFER DEC HEX 00 04 00 04 T------------T------------T------------T------------, I CMBCHAIN I I I I +------------+------------+------------+------------~ I I I I 08 12 16 20 24 08 OC 10 14 18 lC CMBFLAGS I Flags I I I I I Consoles I Specified I CMaCONS CMBMSGL Message Length I CMBPRIO CMBCLASS I I Class/Area I ' Priority I I I I +------------+------------+------------+------------~ I I I I CMBMSG I CMBDOMID I CMBMARK I I I I I CMBTIME DOM 10 For OS Time of Day t +------------+------------+------------+------------~ I I I I I I I I Time of Day (Continued) +------------+------------+------------+------------~ I I I I I Time of Day (Continued) I I I I I I I CMBJOBNO Job Number +------------+------------+------------+------------~ I I I I I I I I Job Number (Continued) +------------+------------+------------+------------~ I I 1 I I I 28 I I I Address of Next Console Message Buffer Job Number (Continued) I I CMBTEXT I Message Text I I I +------------+------------+------------+------------~ I I I I Message Text (Continued for 112 Bytes) I I I I = I I I IL ____________ L ___________ -L ____________ L ____________JI CMB 5 - 13 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP COMMAND PCE WORK AREA The Comwand Work Area is an extension to the Command processor PCE. It is used during the processing of a command to provide space for flags, pointers, mes3age text, and work areas. It resides in HASPNUC and is generated during the assembly of that module. Offset 96 (60) Bytes and Bits 1 Field Name Description COMFLAGS Byte 1 of list form of $WTO parameter list. End of out-of-line MLwTO Logical console route code Source console/response console is a remote. Source console not authorized for job commands (reset prior to $WTO execution) Source console not authorized for device commands (reset prior to $WTO execution) Source console not authorized for system commands (reset prior to $WTO execution) 1001 0000 0 ••• 0000 1 ••• 01 •• • • •. O. 1. • • •• 0 •• 1 97 (61) 1 COMROUTE Byte 2 of list form of $WTO parameter list contains remote number, UCMlP, or logical routings for $WTO. 98 (62) 1 COMLNGTH Byte 3 of list form of $WTO parameter list (contents=O). 99 (63) 1 COMCLASS Byte 4 of list form of $WTO parameter list contains x'17' for logical and remote consoles and contains x'07' for UCMID area Z (normal WTO responses). For UCMID responses to out-of-line areas the contents are as follows: X'17'-Area X' 27 '-Area X' 31'-Area X'47'-Area X'S7'-Area x'67'-Area X'11'-Area X' 87' -Area A B C D E F G X'97'-Area X'A7'-Area X'B7'-Area X'C7'-Area X'D1'-Area X'E7'-Area X'F7'-Area I J K L M N 0 H COMWORK 5 - 15 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP Offset 100 (64) Bytes and Bits 4 Field CO~~ANO ~ame COME;.lORK PCE WORK AREA Description 4 byte work area used by subprocessors and macro generated routines as follows: $CFCVE - last character set to blank $CFDCTL - first characters of requested device name $CFJDCT - address of HASP job queue element for requested job $CFJMSG - same as $CFCVE I 104 (68) 8 COMDWORK 8 byte work area used by subprocessors and macro generated routines as follows: $CFCVE - 5-character number in EBCDIC with leading blanks $CFDCT'L - last four characters of requested device name $CFJMSG - same as $CFCVE I I 112 (70) 120 COMMAND 120 byte work area used to hold up to 119 character command, responses to commands, and general scratch work information 113 (71) 1 COMVERB Single character verb 114 (72) 1 COMOPRMD First character of the first operand COMPNTER Five full words containing pointers to the first character of each operand (pointers right adjusted if fewer than 5 operands). Also used by subprocessors as scratch work areas after locating all required operands. 232 (E8) 20 252 (Fe) 4 COt-'lNULOP Address of the end of the current command plus two bytes. 256 (100) 6 COM3800 3800 work area 5 - 16 HASP Logic Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP CO~4A~D PCE WOHK AREA DEC-HEX 96 60 T------------T------------T------------T------------, I COMFLAGS I COl'1ROUTE I COMLNGTH I COMCLASS 1 I I I 100 104 108 112 64 68 6C 70 Flags I I I I COMEWORK I I I Zero Lngth I Class and I Record I Priority I I I I COMOWORK , I +------------+------------+------------+------------~ I I I I Double Precision Work Area +------------+------------+------------+------------~ I I I I Double Precision WorK Area (Continued) I I I I COMMAND Message Area (120 Bytes) I I I I I I t------------+------------+------------+------------~ I I I I COMPNTER Area for Operand Pointers = == I I I I I FC 256 100 I I I I +------------+------------+------------+------------~ I I I I 252 I I I I I Sinyle Precision Work Area = E8 Current Console +------------+------------+------------+------------~ I I I I 232 I I I +------------+------------+------------+------------~ I I I I COMNULOP I COM3800 I I I I Null Operand Pointer ~------------+-----------_t------------+------------i I I I I 3800 Work Area I = r------------------------ J I I I ________________________ JI ~ COMWORK 5 - 11 HASP DEVICE CONTROL TABLE The Device Control Table is a control block which represents a real unit record device or a portion of the total direct-access space available. The OCT is used for three purposes: (1) allocation and deallocation of a unit record device to HASP processors, (2) communication of operator commands between the communication processor and the processor using the unit record device, and () as a parameter list to the $EXCP subroutine. Offset_ Bytes and Bits 00 (00) 1 xxxx xxxx xxxx xxxx 1 ••• .1 •• •• 1. ••• 1 Field Name Description OCTSTAT OCT IN USE DCTDRAIN DCTHOLD OCT EJECT Device OCT is DCT is DCT is Device Control Table status in use drained held is at channel 1 position 00 (00) 4 OCTPCE Address of Processor Control Element 04 (04) 4 OCTBUFAD Current buffer address 1 DCTPSTAT DCTLOGAL DCTLEASE DCTETX OCTSOFF DCTEOF DCTSINON DCTPOST DCTABORT DCTPBUF Remote Job Entry flags Log every channel end Leased line An ETX has been received A /*SIGNOFF card has been received An EOF has been detected Remote OCT is attached to line DCT I/O complete flag Transmission was aborted Remote output buffer indication OS (OS) 1... .1.. •• 1. ••• 1 ••• 1 1... .1.. •• 1. ••• 1 OS (OS) 4 OCTDCB Address of Data Control Block OS (08) 4 OCTSEEK Current track address 12 (OC) 1 MDC TO PCT Count of open RJE processors 12 (OC) 4 MDCTOBUF RJE output buffer chain 12 (OC) 4 DCTEWF Event Wait Field or post address 16 (10) 1 OCTBUFCT Active buffer count 11 (11) 1 MDCTATTN RJE line action pending flags 11 (11) 1 DCTNO DCT number DCT 5 - 19 HASP DEVICE CONTROL TABLE Offset. Bytes and Bits 18 (12) Field Name Description 0000 0001 0010 0000 0010 0100 0000 0010 0000 0010 0010 DCTDEVTP DCTDA DCTOLAY DCTLNE DCTRDR DCTRJR DCTINR DCTPRT OCTRPR DCTPUN DCTRPU DCTRCON Device type Direct-access device Overlay device Remote Job Entry line Local card reader Remote card reader Internal Reader Local printer Remote printer Local punch Remote punch Remote console 1... .1.. •• 1. ••• 1 DCTIOTYP OCT READ DCTWRITE DCTREJRM DCTREJJB DCTREJOV DCTREJSY I/O request type Read request Wri te request Remote restriction (always 0) Restricted from job commands Restricted from device commands Restricted from system commands DCTPCODE DCTPHALF DCTPFULL DCTPWIDE OCTPPRES DCTPCON DCTPMRF DCTPTAB DCTPROG DCTPVAR DCTPBLK Line/Remote code Half-duplex line Full-duplex line Wide-band line Hardware compress feature Remote terminal console Multiple-record feature Horizontal format control Programmable interface Variable-length records Blocked records DCTFLAGS DCTSTOP DCTDELET DCTRSTRT DCTRPT DCTBKSP DCTHOLDJ DCTSPACE Operator command flags $Z ($STOP) command $C ($DELETE) command $E ($RESTART) command $N ($REPEAT) command $B ($BACKSPACE) command $T •••• li command $T •••• C=1 command 1 0000 0000 0000 0001 0001 0001 0010 0010 0011 0011 0100 19 (13) 1 1... .1.. 19 (13) 1 •• 00 •••••• 01 •••••• 10 •• 1 • - •• • • ••• 1 ••• 1 1... .1.. •• 1. ••• 1 20 (14) 1 1... .1.. •• 1. ••• 1 1. • • .1.. .1.. 20 (14) 4 DCTCHAIN Address of next DCT 24 (18) 8 DCTDEVN EBCDIC device name 28 (lC) 2 DCTOTC Overlay device tracks/cylinder 30 (lE) 2 DCTOTT Overlay extent beginning TT 32 (20) 4 MDCTCODE Address of RJE Code Table 5 - 20 HASP Logic Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP DEVICE CONTROL TABLE Offset Bytes and Bits 32 (20) Description OCT FORMS Print/Punch forms identification 32 (20) 1 OCTPRINT Default print routing 33 (21 ) 1 OCTPUNCH Default punch routing 34 (22) 1 DCTPRINC Priority increment 35 (23) 1 OCTPRLIM Priority limit 36 (24) OCTFCB Print FCB identification 40 (28) OCTUCS Print UCS identification 4 OCTDCTE Pointer to OCT extension for 3800 1 . OCTPPSW DCTPPSWC DCTPPSWF DCTPPSWG DCTPPSWS DCTPPSWT DCTPPSWU DCTPPSWI DCTPPSWO Print/punch switches FCB carriage altered Forms controlled by operator Queue classes are altered Suppress separator pages UCS train altered UCS not standard Device idle message issued Operator action allowed DCTCLASS Variable length print/punch class mask 44 (2C) 48 (30) 1... .1.. •• 1. ••• 1 1. • • • 1. • •• 1. ••• 1 I Field Name ,49 (31) Class mask terminator 1 o DC TWORK Start of device work area RIDUCB Internal Reader UCB address 2 MDCTFCS Remote terminal Function Control Seq 1 MDCTERCT Remote terminal error count 1 DCTPRLEN Remote terminal data width DCTPLINE OCTP2770 DCTPHARD DCTP20 DCTP360 DCTP20S2 DCTP1130 DCTPSYS3 DCTPASCI DCTPTRSP DCTPBSC Remote terminal line characteristics 1009, 2770, 3780 1978, 2780 360/20 submodel 5 or 6 360/22, 25, 30, 40, etc. 360/20 submodel 2 or 4, 2922 1130 System/3 USASCII code Transparency Binary synchronous line 1 0000 0001 0010 0100 0110 1000 1010 •• 1 • • 1 •• 1 ••• OCT 5 - 21 HASP DEVICE CONTROL TABLE Offset Bytes and Bits Field Name DescriEtion 1 MDCTRCB Remote terminal record control byte 4 MDCTDCT Remote terminal OCT chain field 2 RIDFLAGS RIDPOST RIDBUSY Internal Reader sync flags User waiting for post I/O simulation in process 2 RIDTJID Reserved 4 RIDECB Internal Reader Eca address 1 MDCTRSEQ Remote transmit sequence count 1 MDCTTSEQ Remote receive sequence count 8 MDCTPSWD Remote terminal password 4 RIOTCB Internal Reader Tca address RIDOATA Internal Reader data area DCTEND Symbol for end of DCT 1 ••• • 1 •• .... 80 0 5 - 22 HASP Logic HASP DEVICE CONTHOL TABLE DEC HEX 00 00 DIRECT-ACCESS T------------T------------T------------T------------, I DCTSTAT I I I I I 04 08 12 16 04 08 OC 10 OCT~E I I I Address of Processor Control Element I I I status +------------+-------------+------------+------------~ I DCTBUFAD I I I I Current Buffer Address I I I Current Track Address I I I Event Wait Field or Post Address +------------+-------------+------------+------------~ I DCTSEEK I 14 I I I +------------+------------+------------+------------~ I DCTEWF I I I I +------------+--------------+------------+------------~ I DCTBUFCT I I DCTDEVTP I DCTIOTYP I I I I Acti ve I I Buffer Count I 20 I I I +------------+-I DCTCHAIN Reserved I I I I I Device I Input/Output I Type I Request Typel +------------+------------~ I I I Address of Next Device Control Table I I lI ____________ -L--__________ ____________ JI ~__ ~ OCT 5 - 23 HASP DEVICE CONTROL TABLE DEC HEX 00 00 OVERLAY T------------T-------------r------------T------------, I I I I 04 08 04 08 DCTSTAT DCTPCE I I I I I I Address of" CUrrent Overlay Area 10 +------------+------------+------------+------------~ I I I I DCTEWF Address of Overlay service Asynchronous Exit 24 28 5 - 24 14 18 1C I I I I +------------+------------+------------+------------~ I DCTBUFCT I I DCTDEVTP I DCTIOTYP I I I ~o I I I I I I overlay Track Address I OC I I +------------+------------+------------+------------~ I DCTSEEK I I 16 I Address of Overlay Roll PCE Status I +------------+------------+------------+------------~ I DCTBUFAD I I 12 I I I I I Active I Reserved I Device I Input I IBuffer Count I I Type IRequest Type I +------------+------------+------------+------------~ I DCTCHAIN I I I I Address of Next Device Control Table I I I EBCDIC Device Name -- "OLAY" I I I +------------+------------+------------+------------~ I DCTDEVN I I I I +------------+------------+------------+------------~ I I I DCTOTT I I I INumber of Tracks/Cylinder I Overlay Extent origin 1 IL____________ L ___________ -LI ____________ L ____________JI DCTore HASP Logic HASP DEVICE CONTROL TABLE DEC HEX 00 00 UNIT RECORD READERS, PRINTERS, AND PUNCHES T------------T-----------~------------T------------l I , , I 04 04 OCTSTAT DCTPCE , , Status , I I I Address of Processor Control Element , I +------------+------------+------------+------------~ I I DCTBUFAD I , , I I Current Buffer Address I 08 12 16 08 OC 10 t------------+------------+------------+------------~ I I I I DCTDCB I , I I I I DCTEWF I I I DCTBUFCT I Address of Data Control Block +------------+------------+------------+------------~ 24 28 14 18 1C I I Event Wait Field or Post Address , I t------------+------------+------------+------------~ I Active I IBuffer Count I 20 , I DCTNO DCT Number I I I I DCTDEVTP I OCTIOTYP I I I I Device Type Command I 'Restrictions I +------------+------------+------------+------------~ I I I I DCT FLAGS DCTCHAIN Operator Commands I I I I I , I Address of Next OCT I +------------+------------+------------+------------~ I I I I I I I I DCTDEVN EBCDIC Device Name +------------+------------+------------+------------~ I I I I I EBCDIC Device Name (Continued) I IL ____________ L ___________ _L ____________ L ____________ JI DEVICES OTHER THAN UNIT RECORD PRINTERS AND PUNCHES 32 20 T-----------~------------T------------T------------l I I DCTPRINT I DCTPUNCH I DCTPRINC I DCTPRLIM I I I I I , Print I Punch I Priority I Priority I IDestination I ____________ Increment I ____________ Limit L ____________ IDestination ___________ _L JI ~ ~ OCT 5 - 25 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP DEVICE CONTROL TABLE DEC HEX 32 36 40 20 24 28 UNIT RECORD PRINTERS AND PUNCHES T------------T------------T------------T------------, I DCTFORMS J I I I +-_._---------+----I DCTFCB I I I 2C 48 30 I I I +------------+------------~ Forms Control Buffer Identification I I I I +------------+------------+------------+------------~ I DCTUCS I 1 44 Pr int/Punch Forms I I Universal Character Set Identification I I I r-----------r---------,-----------r----------1I ! Address of OCT Extension (3800) : I ocroc~ : f------------+-I DCTPPSW I I +------------+------------~ DCTCLASS I I I IPrint/punch I Print/Punch Class Mask I Swi tches + I ___________ +I __________ +____________ I I 52 34 +-___________ I I I =1 ~ I I I Variable Length Print/Punch Class Mask (continued) I I I = I I I I +------------+------------+------------+------------~ I I I I I I I I I Class Mask I Mask I Reserved I IL____________ (continued) LI ___________ Terminator -LI ____________L ____________JI UNIT RECORD PUNCHES T------------T----I DCTWORK I I I ----~. ----------T------------,I SO-Byte Error Recovery Save Area I I I = t I I I I I Il ____________ L ___________-L____________ L ____________JI 5 - 26 HASP Logic HASP DEVICE CONTROL TABLE DECHEX 36 24 INTERNAL READERS r------------T------------T------------T------------, I I I I I = t Variable Length Reserved ~rea I I I I I I = I I I I +------------+------------+------------+ I RIDUCB iI I I I I I I Address of Internal Reader UCB +------------+-------------+------------+--------~ I RIDFLAGS I RIDTJID I I I I Synchronization Flags I I I I I I Reserved +------------+------------+------------+------------1 I RIDECB I I I I Address of Internal Reader ECB I I I Address of Internal Reader TCB I I I +------------+------------+------------+-------------i I RIDTCB I I I I +------------+------------+------------+------------i I RIDDATA I I I I = SO-Byte Internal Reader Data Area I I I L I ____________ ~______ _ _____ ~ I I I = I I I ____________ JI DCT 5 - 21 HASP DEVICE CONTROL TABLE DEC HEX 00 00 REMOTE JOB ENTRY LINES T------------T-----------~------------T------------, I I I I 04 04 08 08 12 OC 16 10 20 14 24 18 DCTSTAT DCTPCE I I I I I Address of Line Manager PCE I status I I +------------+------------+------------+------------~ I DCTBUFAD I I I I Address of Line RJE Buffer I I +------------+------------+------------+------------~ I DCTPSTAT I I I DCTOCB I I I I Address of Line Data Control Block I I Line Flags I I +------------+------------+------------+------------~ I MDCTOPCT I I I MDCTOBUF I I I I RJE Output Buffer Chain Field I I +------------+------------+------------+------------~ I DCTBUFCT I MDCTATTN I DCTDEVTP I DCTPCODE I I I I I I I Active I Attention I Device I Line I IBuffer Count I Indicator I Type I Type I +------------+------------+------------+------------~ I DCTFLAGS I I I DCTCHAIN I I I Operator I Address of Next OCT I I Commands I I +------------+------------+------------+------------~ I DCTDEVN I I I I I I I I I I I I I I I 28 32 1C 20 EBCDIC Device Name (Continued) +------------+------------+------------+------------~ I MDCTCODE I I I I I I I I I I I I I I 24 EBCDIC Device Name t------------+------------+------------+------------~ I 36 I I I Address of RJE Code Table +------------+------------+------------+------------~ = Variable Length Reserved Area = I I I I I t------------+------------+------------+------------~ I MDCTFCS I MDCTERCT I DCTPLINE I I I I I IFunction Control SequencelError Count I Line/Inter I I I I Chars I t------------+------------+------------+--------~ I MDCTDCT I I I I Address of First Remote OCT I IL _ _ _ _ _ _ _ L _________-L---_________ J.._________JI 5 - 28 HASP Logic HASP DEVICE CONTROL TABLE DEC HEX REMOTE JOB ENTRY LINES (Continued) T------------T I MDCT RS EQ I I I I I -r------------T------------,I MDCTTSEQ I I I Line Password I I I Receive I Transmit I Reserved I Sequence I Sequence I I +------------+------------+------------+------------~ I MDCTPSWD I I I I +------------+------------+------------+------------~ I I I Line Password (Continued) Il ____________ L ___________ -L ____________ ~ I I I ___________ _JI DCT 5 - 29 HASP DEVICE CONTROL TABLE DEC HEX 00 04 08 00 04 08 ALL REMOTE DEVICES T------------T----I DCTSTAT I I I I I I I Address of Processor Control Element I I I DCTPCE Status +------------+------------+------------+------------~ I I I I 16 20 OC 10 14 Address of Current RJE Buffer +------------+------------+------------+------------~ 28 18 +------------+------------~ I I I Address of Event Wait Field I I I I I I +----------+-----I I DCTNO Reserved Remote Number I I I I +------------+------------~ I I I I DCTDEVTP I Device Type DCTPCODE I I I I Remote Code I I I +------------+------------+------------+------------~ DCTFLAGS DCTCHAIN Operator Commands I I I I I I I I Address of Next OCT +------------+------------+------------+------------~ I I I I 1C I I I I I Address of Line Device Control Table I I I +----------+----I DCTEWF I I I I 24 I I I I DCTBUFAD I DCTPSTAT DCTDCB I I I Line Flags 12 ----------T------------,I I I I I DCTDEVN EBCDIC Device Name +------------+---I +------------+------------~ I I I EBCDIC Device Name (Continued) I I IL ____________L ________----L____________ ____________ JI ~ REMOTE READERS AND REMOTE CONSOLES 32 20 r------------T-----------~------------T------------, I I I DCTPRIN'I' I DCTPUNCH I DCTPRINC I I Print I Punch I Priority IDestination IDestination I Increment 36 24 I = Variable Length Reserved I I I IL __________L ___ _ 30 Priority Limit I I I T------------T------------T------------T------------, I I I I I 5 - DCTPRLIM I I I I HASP Logic ~rea _ ______ ~ I I I = I I I ____________ JI HASP DEVICE CONTROL TABLE DEC HEX 32 36 20 2q REMOTE PRINTERS AND REMOTE PUNCHES T------------T------------~------------T------------, I I I I 28 48 2C 30 I I I Forms Control Buffer Identification +------------+------------+------------+------------i I DCTUCS I I I I qq Print/Punch Forms +------------+------------+------------+------------i I DCTFCB I I I I qO I I I I DCTFORMS I I I Universal Character Set Identification +------------+------------+------------+------------~ I DCTPPSW I I Print/Punch I Switches I I I I I I I I DCTCLASS Print/PuIlch Class Mask +.------------+------------+------------+-----------.. I I I I = I I I I I I I I = Variable Length Print/Punch Class Mask (continued) I I +------------+------------t------------+------------. .I I I I I I I I Class Mask I Mask I I ____________ (continued) I Terminator II L L____ Reserved ______ ____ ~ ~ I I _______ JI ALL REMOTE DEVICES T------------T------------T------------T------------, I MDCTFCS I DCTPRLEN I DCTPLINE I I I I I IFunction Control Sequence I Printer Width I I I Remote Char. I I I +------------+------------+------------+------------i I MDCTRCB I I MDCTDCT I I I Record I I ___________ Cntrl Byte LI ~ I I ____________ JI Address of Next Remote OCT __________ ~ DCT 5 - 31 Page of GY27-7255-0 Revised September 15,1976 By TNL SN27-1555 HASP DEVICE CONTROL TABLE EXTENSION (3800 Printer) The Device Control Table Extension (DCTE) is an extension to the DCT which is present only for 3800 printers. The DCTE contains the SETPRT parameter lists, as well as information on the current setup of the 3800. Bytes Offset and Bits Field Name Description 00 (00) 4 04 (04) 4 08 (08) 48 DCTESPL1 SETPRT Parameter list for Separator page setup 56 (38) 48 DCTESPL2 SETPRT Parameter list for Job output 104 (68) 4 DCTEUCBX UCB extension address 108 (6C) 4 DCTECPCD SETPRT Completion Code 112 (70) 1 DCTEFLAG DCTEDCT Pointer to DCT Reserved 1... DCTEFLOP Operator has issued $TPRT .1. . DCTEJAM Paper jam .. 1. DCTEMARK Marking forms .1. . DCTECM Setup change required .• 1. DCTERST Restart after SETPRT error 113 (71) 1 DCTEFLCT FLASH count 114 (72) 1 DCTEJAMC Paper jam page count 115 (73) 1 DCTEFL2 Reserved 116 (74) 8 DCTECPYG Copy Groups 124 (7C) 4 DCTEFCB Current FCB 128 (80) 16 DCTECHAR Current Character Arrangement Tables 144 (90) 4 DCTECPYM Current Copy Modification ID 148 (94) 1 DCTETRC Current Copy Modification reference Character 149 (95) 1 DCTEFRMN Current Flash count Loaded 150 (96) 1 DCTECPYN Current Copy Count LOADED 151 (97) 1 DCTESTCN Current Start Copy marker Loaded 152 (98) 52 DCTEDCB DCB for SETPRT 5-32 HASP Logic HASP DATA DEFINITION TABLE The Data Definition Block (DDB or DDT) contains for an active SPOOL data set (except an Internal Reader data set) current buffer information, I/O activity status, output record count, and direct-access location. It is used only in module HASPXEQ. Offset Bytes and Bits Field Name DescriEtion 00 (00) 4 OOBCHAIN Next Data Definition Table address 04 (04) 1 DDBTYPE Data set type 05 (05) 3 DDBUNIT unit address (EBCDIC) 08 (08) 1 DDBSTAT1 Status byte one 08 (08) 1 XS For shorthand (EQU) 09 (09) 1 DDBSTAT2 Status byte two 10 (OA) 2 DOBUFPTR CUrrent buffer pointer 12 (Oc) 4 DDBPBUF Address of primary buffer 16 (10) 4 DOBSBUF Address of secondary buffer (INPUT) 20 (14) 4 DDBDDNR Step and DO number 24 (18) 4 DDBTTR Next/first track address 28 (lC) 2 DDBCOUNT Output record count 30 ( 1E) 2 32 (20) 4 DDBPCE Address of Processor Control Element 36 (24) 0 DDBEND End of DDT 36 (24) 0 DDBLNG Length of DDT (EQU) Unused DDB 5 - 33 HASP DATA DEFINITION TABLE 00 04 00 04 T------------T------------T------------T------------, I DDBCHAIN I I I I Address of Next Data Definition Table t------------+------------t------------t------------~ I DDBTYPE I DDBUNIT I I I I 08 08 16 20 24 OC 10 14 18 32 16 20 I (XS> I I I Address of Primary Buffer I I I Status I Status I CUrrent Buffer Pointer I Byte One I Byte TWO I I t------------t------------t------------t------------~ I DDBPBUF I I I I +------------+------------t------------t------------~ I DDBSBUF I I I I Address of secondary Buffer (Input) I I I Step and DD Number I I I +------------+------------t------------t------------~ I DDBDDNR I I I I t------------+------------t------------t------------~ I DDBTTR I I I I 28 I Data Set I Unit Address (EBCDIC) I Type I I +------------t------------t------------t------------~ I DDBSTAT1 I DDBSTAT2 I DDBUFPTR I I I I 12 I I I Next Track Address (Input Data Sets) First Track Address (Output Data Sets) I I I t------------t------------t------------+------------i I ooocoom I f I I I Output Record Count I I I Unused I I I +------------t------------t------------t------------~ I DDBPCE I I I I Address of Processor Control Element I IL ____________ ___________ _L ____________ ____________JI ~ 5 - 34 HASP Logic ~ HASP COMMUNICATION TABLE The HASP Communication Table (HCT) performs a central organizational role in the HASP System. It assembles as actual code in the HASPNUC assembly and is physically at the beginning of the HASPNUC CSECT, which in turn is physically at the beginning of the HASP load module, which is forced (by link edit control cards) to begin on a 4K page boundary. In other HASP assembly modules, the HCT expands as a DSECT. All HASP processors are provided with addressability to the HCT in register BASEl (which is register 11). The HCT contains several major categories of information, as follows: The HASP version is included as printable characters for easy recognition in a storage printout. The HASP Vector Table ($HVT) contains a list of addresses used by OS/VS2 formal exit interface coding to pass control to HASP at various stages of I/O, job, or command processing. The address of $HVT is placed in the OS/VS2 Communication Vector Table (CVT) in a word named CVTHJES during HASP initialization. This indicates that HASP is active. Direct branch entry to most HASP service subroutines is provided. services macro-instructions in assemblies other than HASPNUC expand branches to symbolic locations in the RCT DSECT. Branches in the actual HCT transfer to the entry points of the services subroutines. The HCT contains counts of active functions, jobs in execution, I/O requests, and commands to be processed. Status bytes record the operator options when HASP was last initialized and overall system status at the current time. Many HASP queues and chains of control blocks have their beginning addresses in the HCT; for example, buffers, RJE buffers, Console Message Buffers, SMF buffers, Device Control Tables, Processor Control Elements, and I/O completion queues. Addresses of several OS/VS2 nucleus routines, which are used by direct branch entry, are contained in the HCT. The last part of the HCT is a group of HASP job queue pointers and direct-access information which is regularly written to the first HASP checkpoint record and restored on any warm start. BCT 5 - 35 HASP COMMUNICATION TABLE offset. 00 (00) Bytes and Bits S Field Name Description $VERSION HASP version HASP Vector Table OS (OS) o $HVT Beginning of HASP Vector Table OS (OS) 4 $ HVTEXCP lOS pseudo device exit address 12 (OC) 4 Interpreter exit address 16 (10) 4 MGCR exit address 20 (14) 4 WTQ(R)/WTL exit 1 address 24 (lS) 4 WTQ(R) exit 2 address 2S (lC) 4 Job initiation exit address 32 (20) 4 Step initiation exit address 36 (24) 4 Termination exit address 40 (28) 4 TSO status/cancel exit address 44 (2C) 2 46 2 (2E) $EXITNOP An SR 15,15 instruction A BCR 15,14 instruction Entry To HASP Dispatcher 48 (30) 4 $WAIT Vector to $WAIT routine Entries To HASP Buffer Services 52 (34) 4 $GETBUF Vector to $GETBUF routine 56 (3S) 4 $GETPBUF Vector to $GETPBUF routine 60 (3C) 4 $FREEBUF Vector to $FREEBUF routine Entries To HASP Unit services (40) 4 $GETUNIT Vector to $GETUNIT routine 6S (44) 4 $FREUNIT Vector to $FREUNIT routine 64 Entries To HASP Job Queue Services 72 (48) 4 $QADD Vector to $QADD routine 76 (4C) 4 $QGET Vector to $QGET routine 5 - 36 HASP Logic HASP COMMUNICATION TABLE Offset Bytes and Bits Field Name Descri,etion 80 ( 50) 4 $ QPUT Vector to $QPUT routine 84 (54) 4 $QREM Vector to $QREM routine 88 ( 58) 4 $QSIZ Vector to $QSIZ routine 92 (5C) 4 $QLOC Vector to $QLOC routine 96 (60) 4 $QJITLOC Vector to $QJITLOC routine Entries To D~SD SEace Services 100 (64) 4 $ TRACK Vector to $TRACK routine 104 (6S) 4 $ PURGER Vector to $PURGER routine Entries To HASP I/O Services lOS (6C) 4 $EXCP Vector to $EXCP routine 112 (10) 4 $EXTPOPE Vector to $ EXT POPE routine 116 (14) 4 $EXTPGET Vector to $ EXTPGET routine 120 (7S) 4 $ EXTPPUT Vector to $ EXTPPUT routine 124 (7C) 4 $ EXTPCLO Vector to $ EXTPCLO routine 12S (SO) 4 $RESTORE Vector to $RESTORE routine Entries To H~SP Overlay services 132 (S4) 4 $ODEL Vector to $ODEL routine 136 (88) 4 $ORET Vector to $ORET routine 140 (8C) 4 $OLINK Vector to $OLINK routine 144 (90) 4 $OXCTL Vector to $OXCTL routine 148 (94) 4 $OLOAD Vector to $OLOAD routine Entries To HASP Console Services 152 (9S) 4 $WTO Vector to $WTO routine 156 (9C) 4 $FRE~MSG Vector to $FREEMSG routine 160 (AO) 4 $DOM Vector to $DOM routine BCT 5 - 31 HASP COMMUNICATION TABLE Offset Bytes and Bits Field Name DescriEtion Entries To HASP SMF Buffer Services 164 (A4) 4 $ QUESMFB Vector to $QUESMFB routine 168 (A8) 4 $GETSMFB Vector to $GETSMFB routine Entries to HASP Timer Services 112 (AC) 116 (BO) 180 (B4) 184 ( B8) 188 (BC) " " $STIMER Vector to $STIMER routine $TTIMER Vector to $TTIMER routine " "4 $ IOERROR Vector to $IOERROR routine $ ERROR Vector to $ERROR routine $D1STERR Vector to $D1STERR routine Entries To HASP Error services Miscellaneous Control Fields 192 (CO) 1 193 (Cl) 1 1 ••• • .xx • 1 •• • .xx • .. 1 • • .xx • •• 1 • .xx 1.xx .1xx $OPTSTAT $OPTFMT $OPTCOLD $OPTREQ $OPTREP $OPTL1ST $OPTRACE HASP initialization options Format SYS1.HASPACE Cold start HASP HASP requests REP cards used List REP cards Trace 1 $STATUS $RDRPEND SALMSGSW $ ORAl NED $CKPTACT $J1TCKPT $SYSEX1T $ JOTCKPT HASP system status OS reader is pending All avail. funct. message issued System hCi~ been !JRA1NED Checkpoint is i~ Drogress Checkpoint Job lIi.f ormation Table HASP system in termination process Checkpoint Job Output Table 194 (C2) 1 ••• • 1 •• • • 1• • •• 1 Reserved • •• x • •• x • .• x • .• x 1 •• x • 1. x •• 1x 195 (e3) 1 $CURPeE CUrrent PCE 1D 196 (Cq) 1 $HASPECF Master event control field 191 (C5) 1 MHASPECF Line manager event control field 198 (C6) 1 $XEQAeT Count of jobs in 199 (Cl) 1 $ACT1VE Count of active functions 5 - 38 HASP Logic os execution HASP COMMUNICATION TABLE Bytes and Bits ------- Description 200 (CS) 1 $ENBALL Enable all mask 201 (C9) 1 $DISALL Disable all mask 202 (CA) 1 $DISINT Disable interval timer mask 203 (CB) 1 204 (CC) 2 $EXCPCT Active HASP I/O count 206 (CE) 2 $COMMCT Active HASP command count 20S (DO) 2 $CKPTRAK HASP checkpoint track address 210 (D2) 2 212 (D4) 4 $HASPTCB HASP task control block addrp.ss 216 (DS) 4 $HASPECB Corrunon HASP ECB 220 (DC) 4 $ASYNCQ ASYNC I/O completion queue 224 (EO) 4 $RJECHEQ RJh I/O completion queue 22 S (E4) 4 $PCEORG First HASP peE address 232 (ES) 4 $BUFPOOL First available HASP buffer address 236 (EC) 4 $TPBPOOL First available RJE buffer address 240 (FO) 4 $DCTPOOL First HASP DCT address 244 (F4) 4 $JITABLE HASP Job Information Table address 24S (FS) 4 $JOTABLE HASP Job Output Table address 252 (FC) 4 $CYLMAP First track group bit map address 256 (100) 4 $TEDADDR First extent data table address 260 (104) 4 $DCBLIST Direct-access DCB address 264 (lOS) 4 $FREEQUE First free console msg buffer address 26S (10C) 4 $BUSYQUE Console msg buffers queued for I/O 212 (110) 4 $ LOGQUE CMB's queued for Log Processor 216 (114) 4 $COMMQUE CMD's queued for Command Processor Reserved Reserved BCT 5 - 39 Page of GY27-7255-0 Revised September 15, 1976 :By TNL SN27-1555 HASP COMMUNICATION TABLE Offset Bytes and Bits Field Name Description 280 (118) 4 $ DOMQUE CMB's awaiting action 284 (11C) 4 $SMFFREE First free SMF buffer address 288 (120) 4 $SlvtFBUSY SMF buffers queued for I/O 292 (124) 4 $PRCHKPT Print Checkpoint Table address 296 (128) 4 $TIMEARG Fake SVRB+36 for IGC011 Nucleus Address Table Start 300 (12C) 4 $XFRHASP Entry point HASP Task $XFER 304 (130) 4 $XFRSTPT Entry point STPT Task $XFER 308 (134) o $NUCTABL Nucleus Address Table start 308 (134) 4 $STATENT Entry to status routine 312 (138) 4 $TIMENT Entry to time routine 316 (13C) 4 $XSMFENT Entry to SMF EXCP counting routine 320 (140) 4 $SVCRSET Entry to HASP SVC reset routine Checkpointed Variables Restored On Any Warm Start (144) o $SAVEBEG Start of save area 324 (144) 4 $JOBQPTR HASP job queue address 328 (148) 4 $JQFREE Start of free queue chain 332 (14C) 4 $JQENT Start of active ql.:,eue chain 336 (150) 4 $DATAKEY Master peripheral data set key 340 (154) 2 $JOBNO HASP job number 342 (156) 2 $ MSGRPNO Last console msg track group 344 n $DACKPT DA checkpoint for warm start o $SAVEEND End of save area 324 (158) 5 - 40 HASP Logic HASP COMMUNICATION TABLE 00 00 T------------T-----I $VERSION I I I 04 08 04 08 16 20 24 28 OC 10 14 18 1C I I I I 20 24 I I I I 44 28 2C 30 I I I I Interpretter Exit Address I I I I I I I I MGCR Exit Address +------------+------------+------------+------------~ I I I I WTQ(R)/WTL Exit 1 Address I I I I +------------+------------+------------+------------~ I I I I I I I I WTQ(R) Exit 2 Address +------------f---I +------------+------------~ Job Initiation Exit Address +------------+-----I I I I I +------------+------------~ step Initiation Exit Address +------------+--I I I I I +------------+------------~ I I I I Termination Exit Address +------------+------------+------------+------------~ I I I I I I I I TSO status/Cancel Exit Address +------------+------------+------------+------------~ I $EXITNOP I I I I 48 lOS Pseudo Device Exit Address I I I I +------------+------------+------------+------------~ I I I 40 +------------+------------~ +------------+------------+------------+------------~ I I I 36 I I I I HASP Version (Continued) +------------+-----I $HVTEXCP I I I 32 I I I HASP Version +------------+------------+------------+------------~ I I I 12 ----------T------------,I Exit NOP Return SR~15,R15 BR R14 I I I +-----------+----------+------------+------------~ I $WAIT I I I I Entry to HASP Dispatcher I IL____________ L ___________ -L ____________ L ____________JI ReT 5 - 41 HASP 34 56 60 64 68 72 76 80 84 88 92 96 100 38 T------------T-----I $GETBUF I I I 3C 40 44 48 4C 50 54 58 5C 60 64 ----------T------------,I Entry to HASP Buffer 'GET' Routine +------------+---I $GETPBUF I I I COMMUNICATION TABLE I I I +------------+------------~ Entry to HASP RJE Buffer 'GET' Routine I I I I +------------+------------+------------+------------~ I I I I $FREEBUF I I I I $GETUNIT I I I I $FREUNIT I I I I $QADD Entry to HASP Buffer 'FREE' Routine I I I I +------------+------------+------------+------------~ Entry to HASP Unit 'GET' Routine I I I I +------------+------------+------------+------------~ Entry to HASP Unit 'FREE' Routine I I I I +------------+----------+------------+------------~ Entry to HASP Job Queue Element 'ADD' Routine I I I I +------------+------------+------------+------------~ I I I I $QGET Entry to HASP Job Queue Element 'GET' Routine I I I I +------------+------------+------------+------------~ I I I I $QPUT Entry to HASP Job Queue Element 'PUT' Routine I I I I +------------+------------+------------+------------~ I $QREM I I Entry to HASP Job Queue Element 'REMOVE' Routine I I I I I I I I I I I I +------------7----I $QSIZ +------------+------------~ Entry to HASP Job Queue 'SIZE' Routine +------------+------------+------------+------------~ I $QLOC I I I Entry to HASP Job Queue Element 'LOCATE' Routine I I I I I I I I I I I +------------+----I $QJITLOC +------------+------------~ Entry to HASP JIT Element 'LOCATE' Routine +------------+------------+------------+------------~ I $TRACK I I I I Entry to HASP Track Allocation Routine I L I ____________ L ___________-L---_________ ____________ JI ~ 5 - 42 HASP Logic HASP COMMUNICATION TABLE 104 68 T------------T-----------~------------T------------, I $PURGER I I I I 108 112 116 6c 70 74 Entry to HASP Track Purge Routine t------------+------------+------------+------------~ I $EXCP I I I I Entry to HASP Input/Output Supervisor I I I Entry to HASP RTAM Open Routine I I I t------------+----------t------------+------------~ I $EXTPGET I I 78 I I I t------------+------------t------------+------------~ I $EXTPOPE I I I 120 I I I Entry to HASP RTAM GET Routine 1 I I t------------+------------+------------+------------~ I $EXTPPUT I I I I Entry to HASP RTAM PUT Routine I I I 124 128 132 136 140 144 148 7c 80 84 88 8C 90 94 +------------+I $EXTPCLO I I I Entry to HASP RTAM Close Routine I I I Entry to HASP RTAM Restore Routine 98 I I I I t------------+------------t------------+------------~ I $RESTORE I I I I t------------+------------t------------+------------~ I I I I $ODEL Entry to Overlay $DELETE Routine I I I I t------------+------------t------------+------------~ I $ORET I I I I Entry to Overlay $RETURN Routine I I I Entry to Overlay $LINK Routine I I I Entry to Overlay $XCTL Routine I I I t------------+--------t------------+------------~ I $OLINK I I I I t------------+------------t------------+------------~ I $OXCTL I t------------+-----I $OLOAD I I I 152 t------------+------------~ I I I t------------+------------~ Entry to Overlay $LOAD Routine I I I I t------------+------------t------------+------------~ I $~O I I I I Entry to HASP Write-to-operator Routine I L I _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ JI I ____________ ~___ ~ BCT 5 - 43 HASP COMMUNICATION TABLE 156 9C T------------T-----------~------------T------------, I $FREEMSG I I I Entry to Free HASP Console Message Buffer I 160 AO +------------+------------+------------+------~-----~ I I $DOM I Entry to Delete HASP Operator Message I 164 A4 A8 I $QUESMFB I Entry to Queue HASP SMF Buffer Routine I I $GETSMFB Entry to Remove SMF Buffer From $SMFREE Queue I $STIMER I Entry to HASP Set Interval Timer Routine B4 I $TTIMER I Entry to HASP Test Interval Timer Routine I I $IOERROR I I $ ERROR I I Entry to HASP Catastrophic Error Routine I $DISTERR I Entry to HASP Disastrous Error Routine Reserved I I I Init Options I I I C8 I I CC I I I Current PCE ID l I I $HASPECF I MHASPECF I I I $XEQACT OS Exec Count I I I I $ACTIVE Active Count I I I I +------------+------------+------------+------------~ I $ENBALL I $DISALL I $DISINT I I I I I I Enable ALL IDisable ALL IDisable Int I I 204 HASP Status t------------+-----------+------------+------------~ IMaster Event I RJE Event I ICntrl Field ICntrl Field I 200 I +----------+----------+------------+------------1 I I $OPTSTAT I $STATUS I $CURPCE I 1 C4 I I I I I 196 I +------------t------------+------------+------------~ I CO I I I 192 I +------------+------------+------------+------------~ I BC I I I 188 I I I +------------+------------+------------+------------~ I Entry to HASP Input/Output Error Logging Routine B8 I +------------t------------+------------+------------~ I 184 I I I I I I 180 I I I I t------------+------------+------------+------------~ I BO I +------------+------------+------------+------------~ I 176 I I I AC I +------------+------------+------------+------------~ I 172 I I I I I I 168 I I I Mask I Mask Reserved I Timer Mask I I I I I +------------+-----------+------------+------------~ I I I $EXCPCT Active I/O Count I I I $COMMCT Active Command Count I I I IL____________ L ___________-LI ____________L _________--JI 5 - 44 HASP Logic HASP COMMUNICATION TABLE DEC HEX 208 DO T------------T------------T------------T------------l . 1 i $CKPTI~.K checkpoint Track 04 216 220 224 228 232 08 DC EO E4 E8 236 EC 240 FO 244 248 252 I F8 FC 256 100 I I (Reserved) I I I t------------+------------+------------+------------i I I I I $HASP'r~:o I I I I $HASPECB I I I I $ASYNCQ I I I I $RJECHEQ I Ao~ress of HASP Task Control Block I I ~ +------------ +------------+------------+------------.~ CUmmO!l HASP Event Control Block I I I I +------------+------------+------------+------------~ ASYNC I/O Completion Queue I I I I +--------_.---.. ------------·+------------+------------i RJE I/O Completion Queue I I I I +------..------ +--. ----------+---·---------+--------------i I $PCEORG I I Address of I Fie __;.t HASP PI.ocessor Control El ernent I I I I +-----------+------------+------------ +-------------i I $BUFPOuL I I I I Address of First Available HASP Buffer i I I t----------·- - t-- -- ----- -----+------------+---- --------i I $TPBPOOL I I ; I hddress of First Available HASP RJE Bufter I I +------------+------------+------------+---_ . _-_._--_.-~ I I I I F4 1 I $ OCT POOL Address of First HASP Devic~ Control Table I +------------+------------+------------+------------i I I I I $JITABLE I I I I $JOTABLE I I I I $CYLMAP Address of HASP Job informatica Table I I : +------------ +------------+------------+--_._- --------~ Address of HASP Job Output Table I +------------ +-----------+------------+------------- i Address of First HASP Track Group Map I I I +-----------+------------+------------+------------i I $TEDAODR I I I I Address of First Track Extent Data Tabl~ I Il ____________ L __________ -L ____________ .L _____________ .JI BCT 5 - 45 Page of GY27-7255-O Revised September 15, 1976 By TNL SN27-1555 HASP COMMUNICATION TABLE QEC HEX 260 104 264 108 268 10C 272 110 T------------T-----------~------------T------------, I I I I $DCBLIST Address of Direct Access DCB +------------+------------+------------+------------~ I $FREEQUE I I I I Address of First Free HASP Console Message Buffer I I I +------------+------------+------------+------------~ I $BUSYQUE I I I I Console Message Buffers Queued for I/O 280 118 284 11C 288 120 292 124 296 128 I I I HASP Commands Queued for Command Processor , I I I I +------------+------------+------------+------------~ I $ DOMQUE I I I I I Console Message Buffers Awaiting Operator Action I I +------------+------------+------------+------------~ I $SMFFREE , I I I Address of First Free HASP SMF Buffer I I I +------------+------------+------------+------------~ I $SMFBUSY I I I I HASP SMF Buffers Queued for I/O I I I Addre~:;s I I I t------------+------------+------------+------------~ I $PRCHKPT I of HASP Print Checkpoint Table I I I +------------+------------+------------+------------~ I $TIMEARG I I 304 130 I +------------+------------+------------+------------~ I $COMMQUE I I 300 12C I I I +------------+------------+------------+------------~ I $LOGQUE I I I Console Message Buffers Queued for Log Processor , 276 114 I I I I Fake SVRB+36 for IGC011 I I 1 I +------------+------------+------------+------------~ I I I I $XFRHASP Entry Point HASP task $XFER I I I I +-------- .----+------------+------------+------------~ \ $XFRSTPT I I Entry Point STPT task $XFER II I ~------------+----------+------------+------------J 5 - 46 HASP Logic Page of GY27-7255-0 Added September 15, 1976 By TNL SN27-155 H;a.SP COt-'~UNICATION TABLE DEC HEX 308 134 312 138 316 13C t------------+---------+------------+------------1 I I I I $STATENT I I I I $TI~£NT I I I I Entry to status Routine t------------+---------+------------t------------~ I I I I Entry to Time Routine t----------- -+ ---------+------------+ -------------~ I $XS~~ENT I I I I Entry to SMF EXCP Counting Routine I Il ___________ -L ________- - - - i ____________ ____________ JI ~ BCT 5 - ~6.1 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP COMMUNICATION TABLE 320 140 T------------T------------T------------T------------, I $SVCRSET I I I I I 324 14'4 I Entry to HASP SVC Reset Routine +------------+----------+------------+------------~ I $JOBQPTR I I I I 328 148 I I I Address of HASP Job Queue I I I +------------+-----------+------------+------------~ I $JQFREE I I I I Beginning of Free Job Queue Element Chain I I I I 332 14C +------------+-----------+------------+------------~ I $JQENT I I I I Beginning of Active Job Queue Element Chain I I I I 336 150 +------------+-----------+------------+------------~ I $DATAKEY I I I I 340 154 I I I +------------+-----------+------------+------------~ I $JOBNO I $lVJSGRPNO I I I I 344 158 Master Peripheral Data Set Key HASP Job Number I I I Last Console Track I I I +------------+------------+------------+------------~ I I I I = $DACKPT variable Length DA Checkpoint Area I I I I = I I I I I I IL ____________ L ___________ -L ____________ L ____________JI BCT 5 - 41 Page of GY27-72S5-O Revised May 28, 1975 By TNL SN25-OJ 22 HASP INPUT/OUTPUT TABLE The Input/Output Table (lOT) contains a record of allocated track groups for a job and a series of PDDBs which describe the job's output data sets or, before execution, the job's JCL file. Offset 88 Bytes and Bits (58) 1 1 ••• • 1 •• • • 1. • •• 1 1 ••• • 1 •• • • 1. • •• 1 Field Name DescriEtion IOTFLAGS IOTWRITE IOTFLAG1 IOTFLAG2 IOTFLAG3 IOTFLAG4 IOTFLAG5 IOTFLAG6 IOTFLAG1 Miscellaneous flags Checkpoint lOT Reserved Reserved Reserved Reserved Reserved Reserved Reserved 88 (58) 4 IOTIOT Address of next Input/Output Table 92 (5C) 4 IOTTRACK Track address of current lOT 96 (60) 4 IOTIOTTR Track address of next lOT 100 (64) 4 IOTJCTTR Track address of Job Control Table 104 (68) 4 IOTCYMXM Maximum MTTR for current track group. 108 (6C) IOTMTTR Last MTTR allocated 112 (10) 4 Variable length IOTCYMAP Output allocation bit map 4 IOTPDDBP Offset of next available POOB space 4 IOTPDDB Peripheral Data Definition Blocks lOT 5 - 49 Pa~e of GY27-7255-O Revised May 28, 1975 By TNL SN25-0122 HASP INPUT/OUTPUT TABLE DEC HEX 00 04 08 12 16 20 24 00 04 08 OC 10 14 18 r------------T-----------~------------T------------l I I I I IOTIOT I IOTFLAGS I I I I I I Address of Next Input/Output Table Flags I +------------+------------+------------+------------~ I I OTT RACK I I I I Track Address of Current Input/Output Table I I I Track Address of Next Input/autput Table I I I +------------+------------+------------+------------i I IOTIOTTR .I I I I +------------+------------+------------+------------i I IOTJCTTR I I I I Track Address of Job Control Table I I I Maximum MTTR for CUrrent Track Group I I I Last MTTR Allocated I I I t------------t------------+------------+------------i I IOTCYMXM I I I I f------------t------------+------------+------------i I IOTMTTR I I I I t------------+------------+------------+------------i I IOTCYMAP I I I I = Variable Length Allocation Bit Map I I I I I I I = I I I I +------------+------------+------------+------------i I IOTPDDBP I I I I Displacement of Next Available peripheral Data Definition Block Space +------------+----I IOTPDDB I I I = I I I t------------+------------iI I I I = Var iable Length I peripheral Data Definition Block Area I I IL____________ ___________ _L ____________ ____________ JI ~ 5 - 50 HASP Logic ~ HASP JOB CONTROL TABLE The Job Control Table (JeT) is the primary job oriented control block. It is created by the HASP Input Service Processor in a HASP Buffer and written to disk. Other processors then read this control block into other HASP Buffers, use or update the information as necessary, and rewrite the control block to disk. The control block contains three types of information: (1) accounting information from the accounting field of the JOB card or from the JOBPARM control card, (2) accounting information gathered during job processing, and (3) the Input Track Group Map which represents all track groups used for JCL and inputstream data sets. This control block is the primary contributer to the HASP SMF Purge Record (Type 26). Offset Bytes and Bits Field Name DescriEtion Job Control Table 88 ( 58) 4 JCTJQE HASP Job Queue Element offset 92 (5C) q JCTIOTTR First lOT track address 96 (60) q JCTDSKEY Peripheral data set key 1.00 (64) q JCTINJCT Input JCT track address 104 (6S) 1 105 (69) 1 JCTSMFLG SMF flags 106 (6A) 1 JCTPURGE Start of SMF purge record 1 JCTJBOPT JCTPRICD JCTSETUP JCTTHOLD JCTNOLOG JCTXBACH HASP job. options /*PRIORITY card present /* SETUP card (s) present TYPRUN=HOLD was specified No job log option Execution batching job 107 (6B) Reserved 1 ••• • 1 •• • • 1. • •• 1 1 ••• 108 (6C) 4 JCTJOBEB HASP-assigned job number (EBCDIC) 112 (70) 8 JCTJNAME Job name from JOB card 120 (7S) 20 JCTPNAME Programmer name from JOB card 140 (SC) 1 JCTMCLAS MSGCLASS from JOB card JCT 5 - 51 HASP JOB CONTROL TABLE Offset Bytes and Bits Field Name DescriEtion JCTJCLAS Job class from JOB card 141 (SO) 1 142 (SE) 1 143 (SF) 1 144 (90) 1 145 (91) 1 JCTOPRIO HASP output selection priority 146 (92) 2 JCTROUTE Input route code 148 (94) 8 JCTINOEV HASP input device name 156 (9C) 4 JCTACCTN Job accounting number from JOB card 160 (AO) 4 JCTROOMN Programmer room number 164 (A4) 4 JCTETIME Estimated execution time 168 (A8) 4 JCTESTLN Estimated output lines 172 (AC) 4 JCTESTPU Estimated punched output 176 tBO) 4 JCTFORMS Job output forms 180 (B4) 1 181 (BS) 1 182 (B6) 1 183 (B7) 1 JCTLINCT Lines per page 184 (BS) 2 JCTPROUT Job print route code lS6 (BA) 2 JCTPUOUT Job punch route code 188 (BC) 4 JCTXEQON Time on Execution Processor 192 (CO) 4 JCTXOTON Dat~ 196 (C4) 4 JCTXEQOF Time off Execution Processor 200 (C8) 4 JCTXOTOF Date off Execution Processor 204 (CC) 4 JCTOUTON Time on Output Processor 20S (DO) 4 JCTODTON Date on Output Processor 212 (04) 4 JCTOUTOF· Time off Output Processor 5 - 52 HASP Logic Reserved JCTPRIO HASP execution selection priority Reserved Reserved JCTCPYCT Job print copy count Reserved on Execution Processor HASP.JOB CONTROL TABLE Offset Bytes and Bits Field Name DescriEtion 216 (DS) 4 JCTODTOF Date off Output Processor 220 (DC) 4 JCTCARDS Total number of input cards 224 (EO) 4 JCTLINES Generated output lines 22S (Eq) q JCTPUNCH Generated punched output 232 (ES) q 236 (EC) q JCTPRTCT Current number of lines printed 240 (FO) q JCTPAGCT CUrrent number of pages printed 244 (F4) q JCTPUNCT Current number of cards punched 24S (FS) 4 JCTESOUT Estimated output (lines and cards) 252 (FC) q JCTXOUT Generated output records JCTCYSAV Variable length input allocation map 144 JCTWORK 144-byte work area 56 JCTJMR JMR area S JCTJMRJN JMR job name q JCTRDRON Time on Input Processor 4 JCTRDTON Date on Input Processor 4 JCTCPUID JMR CPU identification 8 JCTUSEID JMR user identification 1 JCTSTEP CUrrent step number 1 JCTINDC JMR SMF options 256 ( 100) Reserved Reserved 2 4 JCTUCOM JMR user communication area 4 JCTUJVP JMR address of user exit routine 4 JCTRDROF Time off Input Processor 4 JCTRDTOF Date off Input Processor 4 JCTJOBIN JMR job SYSIN count JCT 5 - 53 HASP JOB CONTROL TABLE Bytes and Bits Field Name Descri}2tion 2 JCTRDR Reader device type and class 1 JCTJMOPT JMR SMF options Reserved 1 0 5 - 54 HASP Logic JCTEND End of JCT HASP_JOB CONTROL TABLE 88 58 T------------T-----------~------------T------------, I I I JCTJQE I Displacement of HASP Job Queue Element I 92 5C 100 lOll 60 611 68 JCTDSKEY I JCTINJCT I I I I Peripheral Data Set Key I I I I Track Address of Input JCT t------------+---I I JCTSMFLG t------------t------------~ I JCTPURGE I I I I SMF Flags I I Reserved I t------------tI JCTJOBEB I I I I IStart of SMFI IPurge Recordl JCTJBOPT I Job Options 120 111 18 I I JCTJNAME I I Job Name From Job Card I I I I I I I I I I I t------------+-----------+------------t------------~ Job Name (Continued) t------------t----I JCTPNAME t-----------t------------~ Programmer's Name From Job Card I I I I 90 I I I I = I +---------+---------+------------+---------.. I JCTMCLAS I JCTJCLAS I I JCTPRIO I I I I 11111 I t------------+----------+------------t------------~ = 8C I I I I I 1110 I I I HASP Assigned Job Number (EBCDIC) I 116 I -t------------+------------~ I 10 I t------------+--------+-----------t------------~ I 112 I I I I I I I 6C Track Address of First Input/Output Table t------------+--------+------------+-----------~ I 108 I I t------------+----------+------------+------------~ I JCTIOTTR I I I I 96 I MSGCLASS I I Job Class I I I I Reserved I I Execution I Priority I I I +---------t----+------------+--------.. I I JCTOPRIO I JCTROUTE I I I I I Output I Input Route Code I I Reserved I IL ____________ LI __________ Priority -LI ___________ -L __________--JI JeT 5 - 55 HASP JOB CONTROL TABLE 148 94 T------------T------------y------------T------------, I JCTINDEV I I I I 152 156 160 98 9C AO t------------t------------+------------t------------~ I I I I 168 172 A4 A8 AC t------------t------------+------------+------------~ I I I I JCTACCTN Job Accounting Number From Job Card 180 184 BO B4 as 192 BC CO I I I I JCTETIME I I I I JCTESTLN I JCTESTPU C4 I I I I Estimated Execution Time t------------t------------+------------t------------~ I I I I Estimated Output Lines +------------t-----------+------------t------------~ I I I I Estimated Punched Output t------------+------------+------------t------------~ I I I I I I I I JCTFORMS Job Output Forms t------------+------------+------------+------------~ I I I I I JCTCPYCT I I Print I Copy Count I I I I I I I I JCTLINCT I I Lines I Per Page I +------------t------------+------------t------------~ I JCTPROUT I JCTPUOUT I Reserved Job Print Route Code I I I Reserved Job Punch Route Code I I I +------------t------------+------------t------------~ I I I I JCTXEQON Time on Execution Processor t------------t---I JCTXDTON I I I 196 I I I Programmer's Room Number t------------t------------t------------t------------~ I I I 188 I I I I +------------+------------+------------+------------~ I JCTROOMN I I I I 176 I I I I HASP Input Device Name (Continued) I I I 164 I I I HASP Input Device Name I I I I +------------+------------~ Date on Execution Processor I I I I +------------t----------+------------t------------~ I JCTXEQOF I I I I Time off Execution Processor I IL____________L ___________-L____________ ____________ JI ~ 5 - 56 HASP Logic HASP_JOB CONTROL TABLE DEC HEX 200 208 208 212 216 220 232 236 232 236 220 244 248 C8 cc DO D4 D8 DC EO E4 E8 T------------T-----------~------------T------------l I I I I JCTXDTOF I I I I ~TOOTOO FO F4 F8 . +------------+------------t------------+------------~ I I I I Time on Output Processor +------------+------------+------------+------------~ I JCTODTON I I I I Date on Output Processor I I I I I I Time off Output Processor I I I Date off Output Processor I I I Total Number of Input Cards (JCL and SYSIN) I I I Generated Output Lines I I I Generated Punched Output +------------t------------+------------+------------~ I JCTOUTOF I I I I +------------+------------+------------+------------i I JCT ODT OF I I I I +------------+------------+------------+------------i I JCTCARDS I I I I t------------t------------+------------+------------~ I JCTLINES I I I I t------------+------------+------------+------------~ I JCTPUNCH I I I I +------------t------------+------------+------------~ I I I I EC Date off Execution Processor I I I I I I I I (Reserved) t------------+------------+------------+------------i I JCTPRTCT I I I I Current Number of Lines Printed I I I Current Number of Pages Printed I I I Current Number of Cards Punched I I I t------------+------------+------------+------------~ I JCTPAGCT I I I I t------------+------------+------------+------------~ I JCTPUNCT I I I I t------------t------------+------------+------------i I JCTESOUT I I I I Estimated Output (Lines And Cards) I L I ____________L ________- - - - L____________ ____________ JI ~ JCT 5 - 57 HASP JOB CONTROL TABLE 252 FC 256 100 260 104 r------------T-----------~------------T------------, I I I I JCTXOUT Generated Output Records I I I I t------------+------------+------------+------------~ I I I I (Reserved) I I I I t------------+------------+------------+------------~ I JCTCYSAV I I I I Input File Allocation Bit Map Save Area (Variable Length) I I I I t------------+----I JCTWORK I I I I I I I I I I --+------------+------------~ 144-Byte Work Area I I I I I I I I I I I I I JMR Job Name (Continued) I I I I I I I Time on Input Processor t------------+------------+------------+------------~ I JCTJMR I I Job Management Record Pxea (JMR) I I JCTJMRJN I JMR Job Name I I t------------+------------+------------+------------~ t------------+------------+------------+------------~ I JCTRDRON I I I I t------------+------------+------------+------------i I I ~~OO I I I Date on Input Processor I I I t------------+------------+------------+--------~ I I I I ~KroID JMR CPU Identification I I I I t------------+------------+------------+------------i I JCTUSEID I I I I JMR User Identification I I I t------------+------------+------------+------------~ I I I IL 5 - 58 I I JMR User Identification (Continued) I ___________ L ___________ -L ____________.L _ _ _ _ _ _ _ _ _JI HASP Logic HASP JOB CONTROL TABLE T------------T------------T------------T------------, I JCTSTEP I JCTINDC I I I I I I I I I JMR User Communication Area I I I I I I JMR Address of User Exit Routine ICurrent Stepl JMR SMF I (Reserved) I I Number I Options 1 I +------------+------------+------------+------------~ I JCTUCOM I t------------+------------+------------+------------~ I JCTUJVP 1 I I I t------------+------------+------------+------------~ I JCTRDROF I I I 1 Time off Input Processor I 1 I t------------+------------+------------+------------~ I JCTRDTOF 1 I I I 'I Date off Input Processor I 1 t------------+------------+------------+------------~ I JCTJOBIN I I I I 1 JMR Job SYSIN Count I I +------------+------------+------------+-------------~ I JCTRDR I JCTJMOPT I I I R~d& I I I I Devi.ce Type and Class I JMR SMF I Reserved I IL___ ________ L ___________ _LI ____________ Options I ________ __ JI ~ ~ ~ JeT 5 - 59 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP JOB INFORMATION TABLE Offset o (0) Bytes and Bits Field Name 8 JITJNAME Description Job Name The Job Information Table (JIT) allows the operator to communicate with HASP concerning a job by OS job name. There are physically the same number of entries in the JIT as in the JQE table. The relationship is a one-toone correspondence to the JQE table; that is, the first physical entry in the JIT is associated with the first entry in the JQE table, the second with the second, etc. The symbolic name of the JIT (displacement '00') is JITJNAME. Each entry is 8 bytes long and contains a job name. 5 - 60 HASP Logic HASP JOB OUTPUT ELEMENT The Job Output Element (JOE) is constructed by the HASP Output Processor after a job has been placed in the HASP output queue. The JOE can serve one of three functions: 1. As a work element, the JOE relates an item of print/punch activity to its HASP job control blocks. 2. As a characteristics element, the JOE relates an item of print/punch activity to device setup requirements of other items. 3. As a checkpoint element, the JOE saves the status of partially completed print/punch activities for restart. All JOEs reside in the JOB Output Table prior to and during actual device processing. The next figure illustrates the format of a JOE with descriptions of the fields. Offset Bytes and Bits Field Name DescriEtion Work Element ( 0) 2 JOENEXT PTR to next.work element 2 (2) 2 JOEFLAG Flag bits 0 0 B~te 1.xx xxxx ._1 xx xxxx $JOEBUSY $JOECKV B~te 1 xxxx xxxx Busy Checkpoint element valid flag Reserved 4 (4) 2 JOECHAR Characteristics element pointer 6 (6) 2 JOECKPT Checkpoint element pointer 8 ( 8) 1 JOESEC Security level of data 9 ( 9) 1 JOECPU CPU 10 of data 2 JOEROUT Remote 10 of data 10 (A) Bl:te 0 lxxx xxxx Bl:te 1 xxxx xxxx $JOEIRTE Implicit routing Reserved JOE 5 - 61 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP JOB OUTPUT ELEMENT Offset Bytes and Bits Field Name Description 12 (C) 4 JOERECCT Copies and maxlines/cards for this JOE 16 (10) 4 JOEJQE Address of HASP Job Queue Element 20 (14) 2 JOEDEST Destination code from PDDB Characteristics Element o (0) 2 JOENEXT PTR to next characteristics element 2 (2) 2 JOEUSE # of JOEs using this element 4 (4) 4 JOE FORM Forms number 8 (8) 4 JOEFCB FCB number 12 (C) 4 JOEUCS UCS number 16 (10) 8 JOEWTRlD Special SYSOUT writer identification 24 (18) 4 JOE FLASH Forms overlay identification 1 lxxx xxxx JOE38FLG JOEBURST 3800 options flag Burster-Trimrner-Stacker threading (lD) 1 JOE38RESV Reserved 30 (IE) 1 JOEACTPR Number of active printers 31 (IF) 1 JOEACTPU Number of active punches 28 (lC) 29 Checkpoint Element o (0) 1 l.xx xxxx .lxx xxxx 1 (1) 2 JOECKFLG PRCHKUSE PRCHKJOB Checkpoint flags Checkpoint entry is in use Job active indicator 1 JOECOPY Copy number in progress (2) 2 JOEJRCB Offset into eject buffer 4 (4) 2 JOEPDDB Offset of 6 (6) 2 JOEPPCT PDDB page c:)unt 8 (8) 4 JOETLNC Total JOE line count 12 (C) 4 JOETPCT Total JOE page count 16 (10) 4 JOEMTTR Last eject buffer track address 20 (14) 4 JOElOTTR Current lOT track address 24 (18) 4 JSMF6PGE Page Count of last SMF Record Type-6 28 (lC) 4 JSMF6NLR Line Count of last SMF Record Type-6 32 (20) 1 JJNDS Number of data sets processed 33 (21) 1 JSTCNR Starting Copy Number 34 (22) 2 5 - 62 HASP Logic Unused PD~~ in lOT Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP JOB OUTPUT ELEMENT DEC HEX 00 04 00 04 08 08 12 OC 16 20 10 14 WORK ELEMENI' T------------T------------T------------T------------, I JOE NEXT I JOEFLAG I I I I I I I I I I I Pointer to Next I Flag Bits I Work Element I I +------------+------------+------------+------------~ I JOECHAR I JOECKPT I Pointer to CharI Pointer to I acteristics Element I Checkpoint Element I +------------+------------+------------+------------~ I JOESEC I JOECPU I JOEROUT I I Data I I I I Security I CPU ID I Remote ID of Data I I Level I of Data I I +------------+------------+------------+------------~ I JOERECCT I I I I Line/Card Count for This JOE I I I Address of HASP Job Queue Element I I I t------------+------------+------------+------------~ I JOEJQE I I I I t------------+------------+------------+------------~ I JOEDEST I I I I I I Destination Code I (Unused) I Il ____________ From LPDDB I ____________ ____________ JI ___________ -L ~ JOE 5 - 63 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP JOB OUTPUT ELEMENT DEC HEX 00 00 CHARACTERISTICS ELEMENT ~-----------T------------T------------T------------l I I I I 04 08 12 04 08 OC I I I I JOENEXT Pointer to Number of Joes Next Char-JOE Using This Element , +------------+-------------+-----~------+------------~ I JOEFORM I I I I +------------+-I JOEFCB I I I 20 14 +-----------+I JOEUCS 18 lC +------------+--.. ----------~I I I +------------+-------------+------------+------------~ I JOEWTRID I I I I Special SYSOUT Writer Identification +------------+ I I I I +------------+------------~ I I I Special SYSOUT Writer ID (Cont) I 1 +------------+-------------+------------+------------~ I JOEFLASH I , Forms Over 1 ay I d ent~' f '~cat~on II I1-----------+---- ---- -+------- - -i- - --- - -- - JI : JOE38FLG ~ 3800 I Options I Flag: JOE38RSV ~ JOEACTPR I ACTIVE (Reserved), Printer I I Count 1- _ _ _ _ _ _ _ _ 1- _ _ _ ---+---- - I I 5 - 64 I I I 28 I I I I UCS Number I I 24 +------------+------------~ FCB Number I 10 I I I Forms Number 1 16 I I I JOEUSE HASP Logic ~ I I : JOEACTPU Active Punch Count : I I I _~--------.J Page of GY27-7255-0 Revised September 15, 1976 By TNl SN27-1555 HASP JOB OUTPUT ELEMENT DEC HEX 00 00 04 04 08 12 16 20 08 oc 10 14 CHECKPOINT ELEMENT ~-----------T-------------T------------T------------l I I I I JOECKFLG I JOECOPY I JOEJRCB I CheckI Copy I I Point I Number in I Displ into Eject Buffer I Flags I Progress I I +------------+-------------+------------t------------~ I JOEPDDB I JOEPPCT I I I I Displ of PDDB in lOT 18 PDDB Page Count I I I Total JOE Line Count +------------+---I JOETPCT I I I I I I Last Eject Buffer Track Address Current lOT Track Address I I I ~------------t------------+------------t------------i I JSMF6PGE I Pages at last SMF Type-6 I I I ~---------+---------~----------+---------J I II 20 I I I +------------+-------------+------------+------------~ I JOE IOTTR I I 32 I I I I +------------+------------+------------+------------~ I JOEMTTR I I lC I I I -+------------+------------~ Total JOE Page Count I 28 I I I +------------+------------+------------t------------~ I JOETLNC I I I I 24 I I I JSMF6NLR Line Count at Last SMF Type-6 ~ I I ~----------r----------I---------------------J I I I IL JJNDS Number of Data Sets Processed IJSTCNR I IStarting Copyl (Unused) INumber I 1(3800) : __________ ..1. _______ -_-' ________ - ___ - - - ___ II --JI JOE 5 - 65 HASP JOB OUTPUT TABLE The JOB Output Table (JOT) is maintained by a set of service routines which add, remove, and alter class queue entries. Each class queue entry represents an item of print/punch work. Thirty-six class queues are supported (A-Z, 0-9) with an additional queue of characteristics elements to facilitate work assignment to Print/Punch Processors. Following a fixed section, the JOT is composed of JOEs which are described in another figure. The JOT is checkpointed on demand of the service routines after every change to allow warm start after a system crash or a planned shutdown. Offset Bytes and Bits Field Name Descri:etion 00 (00) 2 JOTJOBNO Job number active in $OUTPUT 02 (02) 2 JOTCKPT Index of last JOE added for job 04 (04) 2 JOTFREC Count of free JOEs 06 (06) 2 JOTFREL Minimum free count allowed 08 (08) 2 JOTFREQ Queue of free JOEs 10 (OA) 2 JOTCHRQ Queue of char-JOEs 12 (OC) 12 JOTCLSQ Queues of work-JOEs by class JOTJOES Start of JOEs 84 (54) 84 (54) 44 Space taken by JOEs JOT 5 - 61 H~SP 00 T------------T------------T------------T------------, I JOTJOBNO I JOTCKPT I I I I 04 04 12 84 08 OC 54 Job Number Active in $OUTPUT I I I Index of Last JOE ~dded for Job I I I +------------+------------+------------+------------~ I I I I 08 JOB OUTPUT TABLE JOTFREC Count of Free JOEs I I I I JOTFREL Minimum Free Count Allowed I I I I +------------+------------+------------+------------~ I I I I JOTFREQ I I I I JOTCLSQ Queue of Free JOEs I I I I JOTCHRQ Queue of Char-JOEs I I I I +------------+------------+------------+------------~ Queues of Work-JOE(s) by Class I I I I I I I I = I t------------+------------+------------+------------~ I I I I JOTJOES = Variable Space Taken by JOE(s) I I I I = I I I LI ____________ J.. _ _ _ _ _ _ _ _ _ _ .L ____________ .L ___________._JI 5 - 68 HASP Logic Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP JOB QUEUE ELEMENT The HASP Job Queue consists of several ('MAXJOBS HASPGEN parameter) Job Queue Elements (JQEs) in consecutive virtual storage. Each JQE is on either the active chain, representing a job in the system, or on the free chain, available for new jobs which enter the system. The JQEs on the active chain are maintained in priority order and in one of five logical queues as indicated by a type field, with a bit to indicate if the job is currently being processed. The JQE contains the most basic information about the job such as priority, number, output routings, etc. It also contains the directaccess address of the JOb Control Table (JCT) for the job, which contains a much more comprehensive collection of information about the jOb and HASP processing of it. HASP processors access JQEs using the Job Queue Services macro instructions $QAOD, $QGET, $QPUT, $QREM, $QSIZ, and $QLOC. The Checkpoint Processor writes a copy of the Job Queue to direct access when the status of anything in it is changed. Other information about the job is maintained in virtual storage in the Job Information Table (JIT), and also in the Job Output Table (JOT) when the JQE indicates that the JOD is in the hardcopy logical queue. Offset Bytes and Bits 00 ( 00) 01 (01) Field Name oescriEtion . .. 1 0000 QUEPRIO QUE TYPE QUETBY $XEQ $INPUT $SETUP $BRKDOWN $OUTPUT $HARDCPY $PLOT $PURGE Job priority Logical queue type Queue entry busy bit Os execution queue Input queue Setup queue Breakdown queue Output queue Output in-progress queue Plot queue Purge queue 2 QUEJOBNO HASP job number QUEFLAGS QUEHOLOA QUEHOLDl QUEHOL02 QUE PURGE QUEOPCAN QUEOPRTE QUEJCTSW Job queue flags Hold all jobs Hold single job Hold for duplicate job name Job is to be purged operator issued $C or $P job Operator has issued $R all Interlock JCT for update 1 1 1 ... . 1 .. .. 1. . .. 1 1 ... .1 .. .. 1. 000.0 02 (02) 04 (04) 1 1 ••• • 1.·. • • 1• • •• 1 • •• x ••• x • •• x • •• x 1 •• x • 1. x •• 1x JQE 5 - 69 HASP JOB QUEUE ELEMENT Offset Bytes and Bits Field Name DescriEtion 04 ( 04) 4 QUECHAIN' Next Job Queue Element address 08 (08) 4 QUETRAK Job Control Table track address 12 (OC) 1 QUEPRTRT Print route 13 (OD) 1 QUEPUNRT Punch route 14 (OE) 2 QUEJOECT Job output Element count 5 - 10 HASP Logic HASP JOB QUEUE ELEMENT 00 00 T------------T------------r------------T------------, I QUEPRIO I QUETYPE I QUEJOBNO I I I I 04 04 08 08 12 oc Priority I I I Type I I I Job Number I I I t------------+------------+------------+------------~ I QUECHAIN I I I QUEFLAGS I I I Operator I Address Of Next Job Queue Element I I Comman ds I I t------------+------------+------------+------------~ I QUETRAK I I I I Track Address of Job Control Table I I I +------------+------------+------------+------------~ I QUEPRTRT I QUEPUNRT I QUEJOECT I I I I I I Print I Punch I Job Output Element COlli,tl IL-___________ Route I ___________ Route _LI ____________ ____________ JI ~ ~ JQE 5 - 11 1 1 1 1 1 1 1 1 1 1 1 1 1 , ~ 1 1 '1 1 1 1 1 1 1 , , 1 i 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 HASP MESSAGE SPOOLING ALLOCATION BLOCK The Message SPOOLing Allocation Control Block (MSA) is used to allocate data records on a record basis from a dedicated area of the primary SPOOL volume. The base MTTR and number of records per track are set at HASP initialization time. Bits in the allocation map are reset by the HASP Remote Console Processor as records are allocated and then written to the SPOOL volume. Bits are set on by the HASP Print Processor after records are read and deallocated. The control block is located at entry $MSALLOC in the HASPRTAM assembly. Offset Bytes and Bits Field Name Description 00 (00) 4 MSAMTTR The HASP MTTR for the first record of the message SPOOLing area on the primary SPOOL volume (used in converting a bit position in MSABITS to MTTR and vice versa) 04 (04) 2 MSARPTRK The number of records per track on the primary SPOOL volume (used in converting a bit position in MSABITS to MTTR and vice versa) 06 (06) n MSABITS Bit map indicating the status of records in the message SPOOLing area in the primary SPOOL volume. Bits that are on indicate that the corresponding record is available. o MSABITL Length of bit map (EQU) MSA 5 - 73 HASP MESSAGE SPOOLING ALLOCATION BLOCK 00 00 04 08 04 08 T------------TI MSAMTTR I I I 1 ----------T------------,I Base Spool Record Pointer I I I +------------+------------+------------+------------~ I MSARPTRK I MSABITS I I I I I Number of Records/Track I Variable Length Bit Map I I I I +------------+------------+------------+------------~ I I I I Variable Length Allocation Bit Map Continued> I I I I = I I I IL____________ L ___________ -L ____________L ____________JI 5 - 74 HASP Logic Page of GY27-7255-O Revised September 15, 1976 By TNL SN27-1555 HASP OUTPUT CONTRoL RECORD The Output Control Record is a fixed-format record which represents the data which can be punched on an OUTPUT control card. It is created by the Input service Processor and added to the JCL file as an SO-character record, identified as an OCR by a record type code of X'43'. At tne time the Execution Service Processor is passing the JCL file to the OS Reader/Interpreter, the OCR is discovered and saved in a special buffer which is used later in the construction of the PDDBs for the referenced SYSOUT data sets. Offset Bytes and Bits 00 (00) "1 04 (04) 1 ••• • 1 •• • • 1• • •• 1 1 •.• • 1 •• • • 1. • •• 1 Field Name DescriEtion OCRCODE Forms code OCRFLAGS OCRFLAGO OCRFLAG1 OCRFLAG2 OCRFLAG3 OCRFLAG4 OCRFLAG5 OCRFLAG6 OCRFLAG1 Output flags Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved 05 (05) 1 06 (06) 1 OCRCOPY Copy count 01 (01) 1 OCRINDEX Print index OS (08) 4 OCRFORMS Forms specification 12 (OC) 4 OCRFCB FCB specification 16 (10) OCRUCS UCS specification 20 (14) "4 OC RREC NT Record count limit 24 (18) 2 OCRDEST1 Destination 1 26 ( lA) 2 OCRDEST2 Destination 2 28 (lC) 2 OCRDESTJ Destination J 30 ( lE) 2 OCRDEST4 Destination 4 32 (20) 1 OCRMODTR Copy Modification Table Reference Character 33 (21) 1 OCRFLCT Flash Count 34 (22) 1 BURST Burster-Trimmer-Stacker Threading (YIN) (23 ) 1 OCRNUMGR Number of Copy Groups 35 Reserved OCR 5 - 75 Page of GY27-7255-O Revised September IS, 1976 By TNL SN27-1555 HASP OUTPUT CONTROL RECORD Bytes and Bits offset ----- Field Name Description 36 (24) 4 OCRFLASH Forms Overlay Identification 40 (28) 4 OCRMOD Copy Modification Identification 44 (2C) 8 OCRCOPYG Copy Groupings (34) 16 OCRCHAR Character Arrangement Table Identification ORCEND End of HASP Output Control Record 52 o 68 (44) 00 04 00 04 T------~-----T------------T------------T------------l I I I I Forms Code t--------~---+------------+------------+------------~ I OCRFLAGS I I OCRCOPY I OCRINDEX I I I I 08 12 16 20 24 28 08 OC 10 14 18 1C I I I I OCRCODE I I I I I I Forms Specification I I I FCB Specification I I I ues specification I I I +------------+------------+------------+------------~ I OCRFCB I I I I t------------+------------+------------+------------~ I OCRUCS I I I I +------------+------------+------------+------------~ I I I I I I I I OC~~~ Record Count Limit +------------+------------+------------+------------i I OCRDEST 1 I OCRDEST2 I I I I Destination 1 I I I I I I Destination 2 +------------+------------+------------+------------~ I OCRDEST3 I OCRDEST4 I I I I Destination 3 I Destination 4 IL ____________ L ___________-LI ____________L _________ 5 - 76 I Output I Reserved I Copy I Print I Flags I I Count I Index I +------------+------------+------------+------------~ I OCRFORMS I HASP Logic ~ I I __ JI Page of GY27-7255-0 Added September 25, 1976 By TNL SN27-15SS DEC HEX - -- 32 20 i-;;~;;;-~;~;--:OC;uRST--TOC~~G;-l I 36 24 I I Copy Mod TRC I OCRFLASH I Flash count: Burster I . I Number of I I I Threading I Copy Groups I r------+------L-------+- ----1 I 28 2C Forms Overlay Identification I OCRMOD I I Copy Modification Id 34 I I r-----~-------------+------1 I OCRCOPYG I I I I Copy Groups I I I : I I I I I 52 I I I ~------+--------------~------~ : 44 I I I 40 I I I I I- -- -----1--- -------------1--------1 I II I , I I OCRCHAR Character Arrangement Table Identification II I I I I I I _______ -'- _______________ ...1 _______ ...JI L OCR 5 - 16.1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 HASP OVERLAY TABLE The HASP Overlay Table is created as a new CSECT (HASPOTAB) by the Overlay Build Utility Program (HASPOBLD) and passed to the Os Linkage Editor for inclusion in the HASP load module. It is used by the Overlay service routines to locate overlays on direct access during HASP operation. The Overlay Table is a series of fixed length entries (4 bytes each, or 12 bytes each if &DEBUG=YES)w one for each overlay eSECT in HASP. A table entry is located by multiplying the overlay calling constant assigned to the overlay (see listing provided by the Overlay Build Utilityw the column labeled OeON) by 4 or 12 and adding this to the storage address of HASPOTAB. Each entry contains the storage address of the overlay (if permanently resident> or the priority and relative T R direct-access address in the overlay data set. If &DEBUG=YES w each entry also contains the printable name of the overlay and two statistical counts concerning usage of the overlay during HASP operation. Offset. Bytes and Bits Field Name DescriEtion 00 COO) 4 OTBNAME Overlay module name (last 4 chars.) 04 (04) 4 OTBADDR Address of resident overlay module 04 (04) 1 OTBPRIO Priority of nonresident overlay or X'FF ' if resident 05 (05) 1 06 (06) 2 OTBTRAK Relative disk T R of overlay module 08 ( 08) 2 OTBCALLS Number of PCE requests to use module 10 (OA) 2 OTBLODS Number of times module read from DA NOTE: Reserved The above definition is correct if the HASPGEN parameter &nEBUG=YES. If &DEBUG=NO w then only fields OTBADDR, OTBPRIO, and OTBTRAK are present, at offsets 0, 0, and 2 respectively. OTB 5 - 77 HASP OVERLAY TABLE 00 00 04 04 08 08 ~-----------T-----------~-----------T------------l I I I I OTBNAME Overlay Module Name (Last Four Characters) +------------+------------+------------+------------~ I OTBADDR I I Address of Resident Overlay Module I I OTBPRIO I I OTBTRAK I I priority I Reserved I Relative T R of Overlay I +------------+------------+------------+------------~ I OTBCALLS I OTBLODS I I I Count of PCE Requests IL ____________ ~ Note: 5 - 18 I I I I I I I Count of Times Loaded I I ____________ ____________ JI ~ ~ The above format assumes HASPGEN parameter &DEBUG=YES. If &DEBUG=NO, the first and third words above are not present. Only the second word is present and its offset is zero. HASP Logic Page of GY27-7255-0 Revised September 15,1976 By TNL SN27-1555 HASP OUTPUT PCE WORK AREA The next figure shows the format and describes each field in the Output Processor PCE Work Area (OUTWORK). When a job is placed in the output queue, the output requirements for the job are scanned and appropriate entries for it are added to the JOB Output Table. Since this process may require more than one HASP dispatch, interim results of the scan are stored by the Output Processor in its work area. Offset Bytes and Bits Field Name Description (60) 4 OPJQE Address of Job Queue Element 100 (64) 4 OPDADCT Address of Direct-Access OCT 104 (6S) 4 OPJCTBUF Work Buffer Queue Head 108 (6C) 4 OPDOB Restart PODB pointer 112 (70) S OPTlMEON Output processor time/date 120 (7S) 36 OPWORK Prototype work-JOE 156 (9C) 36 OPCHAR Prototype char-JOE 192 (CO) 4 OPOBEND First free PDOB slot in lOT 196 (e4) 4 OPIOT Restart lOT address 200 (CS) 4 OPRECCT Record count for current PO DB 204 (ee) 4 OPJOBFRM Job default forms IO 208 (DO) 1 OPJOBCPY Job level copy count from JCT 209 (Dl) 1 OPMSGCLS Job message class 210 (D2) 2 OPCKPT Index to JOE being built 212 (D4) 1 OPCLASS Class of active JOE 213 (D5) 1 OUTEMP 3800 Work area byte 96 OUTWORK 5 - 19 Page of GY 27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP OUTPUT peE WORK AREA DEC HEX 96 60 I I , I T------------T-----------~------------T------------, I I I I 100 64 OPJQE Address of Job Queue Element +------------+------------+------------+------------~ I OPDADCT I I I I 104 68 108 6C 112 70 1 I I I Address of Direct Access OCT I I I +------------+------------+------------+------------~ I OPJCTBUF I I I I Work Buffer Queue Head I f I Restart PDDB Pointer I I I +------------+------------+------------+------------~ I OPDDB I I I I +------------+---------+------------+------------~ I OPTIMEON I I I I I I I Output Processor Time/Date +------------+------------+------------+------------~ I 120 78 I I I I Output Processor Time/Date (Cont) +------------+ I OPWORK I I I = I I I I +------------+------------~ I I I I Prototype Work-JOE , I I 156 9C I I I I I I I I I I t----------+----------+-----------+------------~ I OPCHAR I = Prototype Characteristics-JOE I I I lI ____________ 5 - 80 HASP Logic ~ ____________ ~ = I ___________ ____________ J ~ Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP OUTPUT PCE WORK AREA DEC HEX 192 I I I I 196 200 204 CO C4 C8 CC T------------T------------T------------T------------, I OPDBEND I I I I +------------+------------+------------+------------~ I OPIOT I I I I 212 DO D4 I I I Restart lOT Address +------------+------------+------------+------------~ I OPRECCT I I I I I I I Record Count for Current PDDB +------------+------------+------------+------------~ I I I I 208 I I I First Free PODB Slot in lOT I I I I OPJOBFRM Job Default Forms Identification +------------+------------+------------+------------~ I OPJOBCPY I I Copy Count I From JCT I I I I OPMSGCLS Job I I OPCKPT I I IIndex to JOE Being Built I I I Message Class +------------+------------+------------+------------~ I OPCLASS I OUTEMP I I I I I Class of I I Active JOE I 3800 Work Area Byte I I I I I (Unused) I l ____________ ~ ___________ ~------------~------------J O[JTWORK 5 - 81 HASP. PROCESSOR CONTROL ELEMENT The HASP Processor Control Element (PCE) has three roles in the system. It is the CPU dispatching control block, i t is a register save area, and it provides unique work areas for those processors which can simultaneously operate multiple devices or functions. In the first two roles, the PCE is analogous to the Task Control Block (TCB) of os. The PCEs are chained together in the forward and backward directions just as are OS save areas. The top peE is chained from and to the os system-provided save area. The register save portion of each PCE is compatible with OS save areas. The HASP Dispatcher processes the PCE chain in a forward direction looking for a dispatchable processor, as indicated by a processor event wait field of all zeros. Each processor returns to the dispatcher by issuing the $WAIT macro instruction which sets a bit in the event wait field. These bits are cleared as a result of $POST macro instructions issued when certain system events occur or when a specific processor is to be made dispatchable. Many of the major processors of HASP (e.g., input, execution, print/punch) can control multiple simultaneous devices, terminals, or processes. In this case, there are several PCEs controlled by one copy of processor coding. Each PCE then has a variable length work area extension to provide unique storage for control of each device or process. Offset Bytes and Bits Field Name DescriEtion 00 (00) 4 PCESAVEA Reserved 04 (04) 4 PCEPREV Address of previous PCE OS (OS) 4 PCENEXT Address of next PCE 12 (OC) 4 PCELINK Register 14 (LINK) storage 16 (10) 4 PCER15 Register 15 storage 20 (14) 4 PCERO Register 0 storage 24 (lS) 4 PCER1 Register 1 storage 28 ( lC) 4 PCEWA Register 2 (WA) storage 32 (20) 4 PCE~ Register 3 (WB) storage 36 (24) 4 PCEWC Register 4 (WC) storage 40 (2S) 4 PCEWD Register 5 (WD) storage PCE 5 - S3 HASP. PROCESSOR CONTROL ELEMENT Offset. Bytes and Bits Field - - -Name -- oescriQtion 44 (2C) 4 PC EWE Register 6 (WE) storage 48 (30) 4 PCEWF Register 7 (WF) storage 52 (34) 4 PCEWG Register 8 (WG) storage 52 (34) 4 PCEBASE3 Register 8 (BASE3) storage 56 (38) 4 PCER9 Register 9 storage 60 (3C) 4 PCEJCT Register 10 (JCT) storage 64 (40) 4 PCEBASE1 Register 11 (BASEl) storage 68 (44) 4 PCEBASE2 Register 12 (BASE2) storage 2 PCEEWF Processor event wait field (byte 0) A PCE has been $POSTed Waiting for a buffer Waiting for a track Waiting for a job Waiting for a unit Waiting for a checkpoint Waiting for a Console Message Buffer Waiting for an 8MF buffer Waiting for JOT service 72 (48) 1 ••• $EWFPO~T • 1 •• • • 1• • •• 1 $EWFBUF $ EWFTRAK $ EWFJOB $EWFUNIT $EWFCKPT $ EWFCMB $EWFSMF $EWFJOT 1 ••• • 1 •• • • 1. • • 1. • •• 1 1 ••• • • x. • 1 •• • • x. • • 1. •• x. • ••• 1 •. x. 1. x. • .xl · ... 74 (4A) 2 1. xx .1xx • .xx • .xx • .xx 5 - 84 x ••• x ••• xl •• x.l. x •. 1 HASP Logic PCEEWF+1 $EWFOPER $EWFIO $ EWFWORK $EWFHOLO $EwFDDB $ EWFOROL Processor event wait field (byte Waiting for an operator response Waiting for I/O Waiting to be redirected Waiting for a $8 command Waiting for a DDT Gave up overlay area PCEID Processor number (byte 0) PCEID+O $PCEPRSID $PCEPUSIO $PCEINRID $PCERJE10 $PCELCL1D Processor type (byte 0) Print special PCE ID Punch special PCE 10 Internal special PCE 10 Remote special PCE 10 Local special PCE 10 1) Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP PROCESSOR CONTROL ELEMENT Offset Bytes and Bits 00 01 03 04 06 07 08 09 OA OB OC 00 OE Field Name OescriEtion PCEIO+1 PCEASYID PCERDRID PCEXEQID PCETHWIO PCEOUTID PCEPRTIO PCEPUNIO PCEPRGID PCECONIO PCEMLMIO PCETIMID PCECKPID PCEGPRIO Processor type (byte 1) Asynch PCE 10 Input PCE 10 Execution PCE 10 Execution Thaw PCE 10 Output PCE 10 Print PCE ID Punch peE ID Purge PCE ID Console PCE 10 Line Manager PCE 10 Timer PCE ID Checkpoint PCE ID Priority Aging PCE 10 76 (4C) 1 77 (40) 1 PCEOPRIO Requested overlay routine priority 78 (4E) 2 PCEOCON Requested overlay routine OCON 80 (50) 4 PCEORTRN $RETURN past $LINK storage 84 ( 54) 4 PCEOPCE Chain of PCEs using same overlay 88 (58) 4 DCEXFER Address of XFER routine 92 (SC) 4 96 (60) n Reserved Reserved PCEWORK Variable length processor work area PCE 5 - 85 HASP PROCESSOR CONTROL ELEMENT DEC HEX 00 04 08 12 16 20 24 28 32 36 40 44 48 00 04 08 OC 10 14 18 1C 20 24 28 T------------T---------~------------T------------, I I I I 30 Reserved I I I I t------------+------------+------------+------------~ I PCEPREV I I I I Address of Previous Processor Control Element I I I Address of Next Processor Control Element I I I t------------+--------+----------+------------~ I PC EN EXT I I I I t------------+------------+------------+------------~ I PCELINK I I I I Processor Register 14 (LINK) Storage I I I t------------+------------+------------+------------~ I PCER15 I I I I Processor Register 15 Storage I I I Processor Register 0 Storage I I I Processor Register 1 Storage I I I t------------+------------+------------+------------~ I PCERO I I I I t------------+------------+------------+------------~ I PCER1 I I I I +------------+------------+------------+------------~ I PCEWA I I I I Processor Register 2 (WA) Storage I I I Processor Register 3 (WB) Storage I I I Processor Register 4 (WC) Storage I I I t------------+------------+------------+------------~ I PCEWB I I I t------------+------------+------------+------------~ I PCEWC I I I I +------------+------------+-----------~+------------~ I I I I 2C ~~~~ PCEWD Processor Register 5 (WD) Storage I I I I t------------+------------+------------+------------~ I PCEWE I I I I Processor Register 6 (WE) Storage I I I t------------+------------+------------+------------~ I PCEWF I I I I Processor Register 7 (WF) Storage I IL____________L ________----L____________L ____________ JI 5 - 86 HASP' Logic Page of GY27-7255-O Revised September 15. 1976 By TNL SN27-1555 HASP PROCESSOR CONTROL ,ELEMENT DEC HEX 52 56 60 64 68 34 38 3C 40 44 T------------T-----------~------------T------------l I I I I 16 80 84 88 48 4C 50 54 58 Processor Register 8 (WG or BASE3) Storage t------------+------------+------------+------------~ I I I I PCER9 I I I I PCEJCT I I I I PCEBASE1 I I I I Processor Register 9 Storage t------------+------------+------------+------------~ I I I I Processor Register 10 (JCT) Storage' +------------+-----------~+------------+------------~ I I I I Processor Register 11 (BASEl) Storage t------------+------------+------------+------------~ I PCEBASE2 I I I I 12 I I I I PCEWG PCEBASE3 I I I Processor Register 12 (BASE2) Storage +------------+------------+------------+------------~ I PCEEWF I PCEID I I I I Event Wait Field I I I I I I I I I I I I I I Processor Type +------------+------------+------------+------------~ Reserved PCEOPRIO I Overlay Priority I I I PCEOCON Overlay Routine OCON I I I I +------------+-------------+------------+------------~ I I I I PC EORTRN I I I I PCEOPCE I I I I $RETURN Past $LINK Storage t-----------+----------+------------+------------~ I I I I Chain of PCEs Using Same Overlay Routine +------------+------------+------------+------------~ I PCEXFER I I I Current $XFER Entry Point Il ____________ __________ ____________ ~ ~ ~ I I ____________ JI PCE 5 - 81 Page of GY27-7255-o Revised September 15, 1976 By TNL SN27-1555 HASP PROCESSOR CONTROL ELEMEN'I' 92 96 sc 60 T------------T-----------~------------T------------l I I I I Reserved +------------+------------+------------+------------~ I PCEWORK I I Variable Length Work Area L I ____________ +____________ +-___________ 5 - 88 I I I I HASP Logic +____________ I I I JI Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP PERIPHERAL DATA DEFINITION BLOCK The Peripheral Data Definition Block (POOB), contained in an lOT, is a variable-length control block which completely describes one output data set for a job. In addition to containing the data set's initial track address, it can also contain forms information, SYSOUT class, copy count, FeB identifier, and other information. Offset Bytes and Bits 00 (00) 1 1 ••• • 1 •• • • 1• • •• 1 1 ••• • 1 •• • . 1. • •• 1 Field Name Description POBFLAGl POB1FLG2 POB1NULL PDB1LOG PDB1MOES First flag byte FLAG2 (options) exists (see PDBFL~G2) This is a null PODB This POB is for the HASP Job Log This PDB is followed by others indicatinq multiple destinations PDB3800 PDBOPCDJ PDBBURST 3800 options word present DCB=OPTCD=J Specified BURST=Y Specified PDB1RSV7 Reserved (01) 1 PDBCLASS Output class of this data set 02 (02) 1 PDBLENG Length of this PODB 03 (0) 4 PDBMTTR Starting track of this data set 03 (03) 2 PDBSTNR Step number of this data set 05 (05) 2 PDBODNR DO number of this data set 07 (01) o PDBBASLN Basic PDDB length (EQU) 01 Following fields are present only if PDB1FLG2 is set to one. 07 (07) 1 1... .1.. •• 1. ••• 1 1... .1.. •• 11 08 (08) o PDBFLAG2 PDB2FORM PDB2FCB PDB2UCS PDB2RECC PDB2MSCl PDB2MSC2 POB2WTRI Optional fields flag byte PDBFORMS PDBFCB PDBUCS PDBRECCT PDBMISCl PDBMISC2 PDBWTRID PDBFL2LN Minimum nonbasic length (EQU) PDDB 5 - 89 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP PERIPHERAL DATA DEFINITION BLOCK Bytes and Bits Field Name ------- Description Each of the following 4-byte optional fields is present only if the associated bit in PDBFLAG2 is set to one. 08 (08) 08 (08) PDBFORMS Four-byte forms number 4 PDBl"CB Four-byte FCB 10 08 (08) 4 POBUCS Four-byte 1403 or 3211 UCS 10 08 (08) 4 PDBRECCT Four-byte output record maximum 08 (08) 4 PDBMISC1 Miscellaneous --- 08 (08) 1 PDBSEC - Data set security ID 09 (09) 1 POBINOEX - 3211 FCB index value 10 (OA) 2 PDBDEST - Data set output destination 12 (OC) o 08 (08) 4 POBMISC2 Miscellaneous --- 08 (08) 1 POBCOPYS - Copies of this data set 09 (09) 1 POBCPU - CPU 10 10 (OA) 2 - Reserved 12 (OC) o PDBMISC2 (ORG) 08 8 (08) PDBMISCl I'OBWTRIO (ORG) Eight-byte output writer 10 The 3800 options word is present only if PDB3800 is set in PDBFLAGI. os (OS) OS (OS) 4 PDB3800W 3800 options word 1 PDBFLAG3 PDBFLIM PDBFLCG PDBFLCM PDBFLXl PDBFLX2 PDBFLX3 PDBFLX4 3800 flag byte Forms overlay ID specified Copy groups specified Copy modification ID specified Character arrangement table 1 specificd Character arrangement table 2 specified Character arrangement table 3 specified Character arrangement table 4 specified 1 ... .11. ... 1 1 ... .1 .. .. 1. ... 1 5 - 90 HASP Logic Page of GY27-7255-0 Revised September IS, 1976 By TNL SN27-1555 The following fields are present only if the corresponding flag in PDBFLAG3 is one. 09 (09) 1 PDBFLCT Flash count 10 (OA) 1 PDBMDTRC Copy modification trc 11 (OB) 1 PDBNUMGR Number of copy groups 12 (OC) 4 PDBFLASH Forms overlay ID 12 ( OC) 8 PDBCPYG Copy groups 12 (OC) 4 PDBMOD Copy modification ID 12 ( OC) 4 PDBCHI Character arrangement table 1 ID 16 (10) 4 PDBCH2 Character arrangement table 2 ID 20 (14) 4 PDBCH3 Character arrangement table 3 ID 24 (IS) 4 PDBCH4 Character arrangement table 4 ID PDDB 5 - 90. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1, i 1 1 1 , 1 1 1 1 1 i 1 1 1 1 1 1 1 i 1 1 1 1 , 1 1 1 1 1 1 1 1 1 1 , Page of GY27-72ss-0 Revised September IS, 1976 ByTNL SN27-lsss HASP PERIPHERAL DATA DEFINITION BLOCK 00 00 T------------T------------T------------T------------, I PDBFLAG1 I PDBCLASS I PDBLENG I PDBMTTR I I I First I Flag Byte 04 04 08 Starting Track Address (Continued) OC 10 14 28 32 18 lC 20 24 I I I I I I t------------+------------+------------+------------~ I PDBUCS I I I I Four-Byte 1403 or 3211 UCS 10 +------------+------------+------------+------------~ I PDBRECCT I I I I Four-Byte Output Record Maximum t------------+------------+------------+------------~ I I I I PDBSEC Data Set security I I I I PDBINDEX I 3211 FCB Index I I I PDBDEST Data Set Destination I I I I +------------+------------+------------+------------~ I I I I PDBCOPYS I PDBCPU I I CPU Ident I I I I I I I I I Data Set (Reserved) Copies +------------+------------+------------+------------~ I PDBWTRID I I I I 36 I I I Four-Byte FCB 10 I I I 24 I I second I Flag Byte t------------+------------+------------+------------i I PDBFCB I I I I 20 I Four-Byte Forms Number I I I 16 I +------------+------------+------------+------------~ I PDBFORMS I I I I 12 I Output I PDDB I Starting I Class I Length I Track Addr I t------------+------------+------------+------------~ I I PDBFLAG2 I I I I 08 I I I Output Writer Identification I I I +------------+------------+------------+------------i I I I I Output Writer Identification (Continued) I I Il _____________ L ___________ -L _________ __ L ____________ JI ~ PDDB 5 - 91 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP PERIPHERAL DATA DEFINITION BLOCK DEC HEX 08 08r--------T-------.-------1-------- , I 12 I POB3800W PDBFLCT I PDBMDTRC ; PDBNUMGR I I POBFLAG3. I .. I Copy I Number of I I 3800 Opt~ons I Flash count: Modification I Copy Groups I I Flag Byte I I trc I Specified I ocl------ - - -1----- - - -+------- -1------ - ~ POBFLASH I ~ 12 II Forms Overlay Identification I OCt---------+-------4--------+-------i I I I I PDBCPYG I I I Copy Groups ,I L I I I I I I I I I I 12 12 OCI-------- 4----- --+------ -4-- -----~ I I PDBMOD I : Copy Modification Identification I I I ocL- - ----+------- . . . -------+-------t I PDBCHl I I I I Character Arrangement Table 1 10 ; Ir-------t-------t-------+-------lI I I I PDBCH2 I Character Arrangemer.t Table 2 ID I ; I I r------~-------~-------~------l I I I PDBCH3 I I I Character Arrangement Table 3 ID I I r------~-------+-------+------, I POBCH4 I I I I 5 - 92 I Character Arrangement Table 4 ID L __ ~ _ _ _ _L _ _ _ _ _ _ HASP Logic L ______ ~ _______ l HASP PARTITION INFORMATION TABLE The Partition Information Table (PIT) completely describes a HASP logical partition, the job classes eligible to run in it, and its current state. The nth PIT is assembled using values 'PIO(n), 'PRIen), 'OSC(n), and &CLS(n). The PIT is used only in module HASPXEQ. offset. Bytes and Bits 00 (00) 1 1 ••• • 1 •• • • 1. • •• 1 ••• 1 Field Name Description PITSTAT PITHOLDA PITHOLD1 PITBUSY PITIDLE PITLAST Logical partition status byte PIT is drained ($P I) PIT is drained ($P IN) Partition busy indicator PIT IDLE message switch Last PIT indicator 01 (01) 1 PITICLAS5 Logical partition initiator class 02 (02) 2 PITPATID Logical partition identification 04 (04) 2 PITSIZE Logical partition size 06 (06) 2 PITPRIO Logical partition priority 08 (08) 4 PITBECB Batching program frozen ECB chain 12 (OC) 4 PITBJST Address of batching program TCB 16 (10) 1 PITBCLAS Active batching class 17 (11) 3 PITBUNIT Batching program input unit 20 (14) 2 PITBUCBA Batching program input UCB address 22 (16) 10 PITCLASS Logical partition classes 32 (20) 8 PITLNGTH Length of PIT PIT 5 - 93 HASP PARTITION INFORMATION 00 04 00 04 T------------T------------~------------T------------, I I PITS TAT I I PITICLAS I I IStatus Byte I Init Class I I I I 12 16 08 OC 10 24 14 18 I I I Logical Partition Prty. I I I I t------------+------------+------------+------------~ I PITBECB I I I I Batching Program Frozen ECB Chain I I I Address of Batching Program TCB I I I t------------+------------+------------+------------~ I PITBJST I I I I t------------+------------+------------+------------~ I PITBCLAS I PITBUNIT I I 20 I I Logical Partition 1.0. I I PITPATIO t------------+------------+------------+------------~ I PITS IZE I P ITPRIO I I I Logical Partition Size 08 T~BLE I I IActive Batch I Batching Program Input Unit I I Class I I +------------+------------+------------+------------~ I PITBUCBA I PITCL~SS I I I I I Batch Input UCB Address ILogical Partition Classesl I I I t------------+-------------+------------+------------~ I I I I I Variable Number of Logical Partition Classes I IL-___________ L ___________ -L ____________ L ____________JI 5 - 94 HASP Logic Page of GY27-7255-0 Reviscd Septcmber 15,1976 By TNL SN27-1555 HASP PRINT/PUNCH PCE WORK AREA The next figure shows the format and describes each field in the Print/Punch Processor Work Area (PPPWORK). In order for one module to handle many output devices simultaneously, the following work area is defined to store job related data for each print/punch device. Offset Bytes and Bits Field Name DescriEtion (60 ) 1 PPFLAG Print/punch sync flags 96 (60) 4 PDCT Address of print/punch/remote DCT 100 (64) 1 PDCTFLAG Print/punch/remote DCT flags 100 (64) 4 PDADCT Address of direct-access OCT 104 (68) 4 PJOB Address of Job Queue Entry 108 ( 6C) 4 PRCHKPTE Address of checkpOint element 112 (70 ) 4 PUERRPT Address of punch error CCW 116 (74 ) 8 PTlMEON Print/punch sign-on time 124 (7C) 4 PBUFSAVE Address of next print/punch buffer 128 (80) 4 PCCWPT Address of last 132 (84) 4 PCCwEND Address of last possible CCW 136 (88) 40 PMESSAGE Message work area 176 (BO) 2 PDOBSKIP count of pages to skip 178 (B2 ) 2 180 (B4 ) 1 PPRCFLAG Checkpoint flags 181 (B5 ) 1 PPRCPYCT Copy count 182 (B6 ) 2 PCEEJRCB Last eject RCB displacement 184 (B8 ) 2 PDDBDISP Current PDDB displacement 186 (BA) 2 PDDBPGCT Current PODB page count 96 ccw Unused PPPWORK 5 - 95 Page of GY27-7255-0 Revised September 15,1976 By TNL SN27-1555 HASP PRINT/PUNCH PCE WORK AREA. Offset Bytes and Bits 188 (BC) Field Name DescriEtion 4 PPLNCDCT Current line or card count 192 (CO) 4 PRPAGECT Current page count 196 (C4) 4 PCEJMTTR Last eject buffer MTTR (C8 ) 4 PCEIOTTR Current lOT MTTR 204 (CC) 4 PSMF6PGE Current pages this SMF type-6 208 (DO) 4 PSMF6NLR Current lines this SMF type-6 212 (D4) 1 PPJNDS Number of data sets 213 (:15) 1 PPSTCNR Starting copy number 214 (:)6 ) 2 PPRRSV Reserved 216 (08) 1 PBUFOPT Print/punch buffering option 216 (D8) 4 PDEVTYPE Print/punch device type 220 (DC) 4 PLSAVE Link register save word 224 (EO) 4 PLSAVE2 Save Word 228 (E4 ) 4 PLSAVE3 Save Word 232 (E8) 4 PRLINECT Maximum lines per page 236 (EC) 4 PWKJOE C'class' , AL3 (work JOE) 240 (FO) 4 PCHJOE A (characteristics JOE) 244 (F4 ) 4 PCEFORM Forms for current PDDB 248 (F8) 4 PCEFCB FCB for current PDDB 252 (FC) 4 PCEUCSE UCSB for current PI:DB (100) 8 PPCPYG Copy groups 264 ( 108) 4 PPFLASH Flash 10 268 (10C) 1 PP3800FL 3000 Options flag 1 ... PPBURST Bursting .1 .. PDATATRC TRC in the inpllt stream .. 1. PSEPPG Setting up a separator ... 1 PPREXMIT This is a rexmission 200 256 5 - 96 HASP Logic Page of GY27-7255-0 Revised September IS, 1976 By TNL SN27-1555 HASP PRINT/PUNCH PCE WORK AREA Bytes and Bits Field Name Description 1 ... PSETPRT Force a SETPRT .1 .. PJUSTSEP Separator EOT Just issued .. 1. PPCLRP Clear print not required 269 (10D) 1 PPTRC TRC from last line 270 (10E) 1 PPFLCT Flash count 271 (10F) 1 PP38RS Work area 272 (110) 4 PPXLAT1 Character arrangement table 1 276 (114) 4 PPXLAT2 Character arrangement table 2 280 (118) 4 PPXLAT3 Character arrangement table 3 284 (llC) 4 PPXLAT4 Character arrangement table 4 288 (120) 4 PPMODPT Copy modification module name 292 (124) 4 PLSAVE4 Save area 3800 setup Offset. 296 (128) 16 PSMF6JBN Job name+ from the JMR 312 (138) 8 PSMF6U1F User 1D 320 (140) 328 (148) 8 PSMF6WST PRPU signon time 4 PPJOBFRM Job default forms 10 332 (14C) 4 PPRECCT Maximum record count 336 (150) 4 PPJCARDS Maximum cards read 340 (154) 4 PPJLINES Nun~er 344 (158) 348 (15C) 4 4 PPJPUNCH PPJXEQOF Number of SYSOUT punch records Time off execution 352 (160) 4 PPJXEQON Time on execution 356 (164) 4 PPJDSKEY Data set buffer validity key 360 (168) 4 PPJJOBEB Job number of SYSOUT print records PPPWORK 5 - 97 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP PRINT/PUNCH PCE WORK" AREA Offset field Name Description 364 (16C) 4 PPJROOMN Room number 368 (170) 8 PPJJNAME Job Name 376 (178) 20 PPJPNAME Programmer name 396 (18C) 1 PRINDEX 3211 index value 397 (180) 1 PPMSGCLS Job message class 398 (18E) 1 PPDSCPY Data set copy count 399 ( 18F) 1 PSMF6BID SMF Work Byte 400 (190) 2 PBSPGCT Backspace page count 402 (192) 28 PBSPTBL Backspace table 430 (lAE) 2 432 (lBO) 5 - Bytes and Bits 98 Unused 0 PRRPCEWS Length of remote print PCE work area 0 PURPCEWS Length of remote punch PCE work area n PCCWCHN Variable length print/punch CCW chain 0 PRTPCEWS Length of local print PCE wOl.-k area 0 PUNPCEWS Length of local punCh PCE work area HASP Logic Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP_PRINT/PUNCH PCE WORK AREA 96 60 100 64 I I I I I 104 68 T------------T-----------~------------T------------, I I I I I I I I I I Address of Job Queue Element I I I OCT F1agsl Address of Direct-Access DCT I +------------+------------+------------+------------~ I PJOB I 108 6C +------------+--------+------------+------------~ I PRCHKPTE I 112 70 116 74 120 78 I I I Address of Checkpoint Element I I I Address of Punch Error CCW I 124 7C 128 80 I 132 84 136 88 I I I I I I I I Print/Punch Sign-on Time/Date (Continued) I I I I +------------+------------+------------+-----------~ I PBUFSAVE I I I I Address of Next Print/Punch Buffer I I I +------------+----------+------------+------------~ I PCCWPT I I I Address of Last CCW +------------+-----I PCCWEND I I I I I I I 1 I I +------------+------------~ Address of Last Possible CCW +------------+--I PMESSAGE = 176 BO Print/Punch Sign-on Time/Date +------------+----------+----------+----------~ I I I I I I I +------------+------------+------------+------------~ I PTlMEON I I I I I I +-----------+------------+------------+------------~ I PUERRPT I I I I PDCT I PPFLAG I I IPrint/Punch I Address of Print/Punch/Remote OCT I ISynch Flags I I +------------+------------+------------+------------~ I PDADCT I I I PDCTFLAG I I I I I I +------------+------------~ Print/Punch Message Area I I I I = I I t----------+---------+----------+---------~ I PDDBSKIP I I I I I (Unused) I I Count of Pages to Skip I I' - ___________ L _ _ _ _ _ _ _-LI __________-L________--'I PPPWORK 5 - 98.1 Page of GY27-7255-0 Revised September 15, 1976 By TNL S N27-1555 HASP PRINT/PUNCH PCE WORK AREA 180 B4 T------------T------------T------------T------------, I PPRCFLAG I PPRCPYCT I PCEEJRCB I I I I I Checkpoint I Checkpoint I I Flags I Copy Count I 184 188 I I 192 196 200 204 I I I I BC CO PDDBDlSP Current PDDB Displ I I I Current Line or Card Count I I I Current Page Count 220 I I I +------------+------------+------------+------------i I PRPAGECT I I I I C4 +----------+----------+-----------+---------~ I PCEJMl'TR I I I Last Eject Buffer MTTR I I I I C8 I PCElOTTR I I I I Current lOT MTTR I I I t-----------+------------+-----------+------------i CC t-----------+------------+------------+------------1 PSMF6PGE Pages this SMF Type-6 I I : DO L ---------+-- -- -- --I-- - - - - - - - f--------~ I PSMF6NLR Lines this SMF Type-6 I I I : 04 ~---------1----------r----------t----------; : PPJNOS I I Number of I data sets 216 I PDDBPGCT I I I I CUrrent PDDB Page Count I I I +------------+------------+------------+----------i I PPLNCDCT I I I : 212 I I I B8 +------------+----------+------------+---------~ I I : 208 Last Eject RCB Displ I PPSTCNR I PPRRSV I I I I ICoPY Numberl Reserved I 08 J.---------+---------~--------------------4 I PDEVTYPE I I I PBUFOPT I I I Buffering I Print/punch Device Type I I Option I I DC ~------------+------------+------------+------------~ I PLSAVE I I I I I Starting II Link Register Save Word I I I +------------~-----------+------------+------------~ PPPWORK 5 - 99 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP. PRINT/PUNCH PCE WORK AREA DEC HEX ----- 224 EO r----------,-----------,-----------.,.----------, I PLSAVE2 I, 228 I Save Word , E4 : I 1-------- - --t----------t-------- -+---------1 I PLSAVE3 I I I I 232 I 236 I 240 I 244 I 248 E8 Ee I Save Word I I ~ -- -- - ---4 -------- --1-- ----- ---l---- -----~ I I I I PRLINECT I I I I ~~~ Maximum Lines Per Page t------------+------------+------------+------------~ Class FO ~---------- I I' ~~~ I I I I Address of Work-JOE I I I I +---------+------------+----------iI I I Address of Characteristics JOE I I I F4 ~-----------+-----------+-----------+------------i I PCEFORM I I I I Forms For CUrrent PDDB I I I F8 ~--------+---------+-----------+ ----i I PCEFCB I I I I FCB For CUrrent PDDB I IL ___________ L__ I -L______ 5 - I I I I 100 HASP Logic ____---' Page of GY27-7255-0 Added September 15, 1976 By TNL SN27-1555· HASP PRINT/PUNCH peE WORK AREA DEC HEX 252 FC r------------T-----------~------------T------------, I I I 256 I I PCEUCSB I UCS For Current PDDB I I 100t------------~------------t------------+------------1 I I I I PPCPYG I I I I Copy Groups r 4 I I I I I 264 II I 268 I I 108~---------_f-----------~---------+--------1 I PPFLASH : I '" Forms over1 ay Ident~f~cat~on 10C .. -----------i-----------+-----I PP3800FL I PPTRC :PPFLCT I I I I I - II I -t-:---------~ I I I PP38RS : I I Flag Byte I Trc from IFlash Count, Work Area I I Las t Line I I ____ ----'""1I 272 110 It----------I------___ L _________.L. I I I I 276 PPXLATl I I Character Arrangement Table 1 I I I I r-----------+------------I-----------+-----------1 114 I I : 280 I PPXLAT2 I Character Arrangement Table 2 118 1------ ----t----------+----: PPXLAT3 : -----1-----------1 I : I I I Character Arrangement Table 3 I 284 llC I----------..,.-----------t---------~--------~ PPXLAT4 : I I 288 120 I I Character Arrangement Table 4 : PPMODPT I I : I 292 Copy Modification ID I r-----------+-----------I-----------t--------------1 124 I I I PLSAVE4 128 I I I I I j----------t-----------t- ---------~----------i I I , I I PSMF6JBN I , Job name, etc., from JMR I I ~ I ..J... TI -I I 312 I Save Word I 296 I '-----------1-------- - --+----------+----------1I 138 I I I IL __________ L __________ .1 ___________ L __________ JI PPPWORK 5 - 100.1 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP PRINT/PUNCH PCE WORK AREA 312 138 r------,------,------r-----' I I I I I PSMFGUIF User Identification I I ; ~ I I I I I I I I 320 140 J...-- ----'t- --- - - i - - - - - -I- ------t : PSMF6WST I I I ; I Print/Punch Sign on Time t ~ I ~ I I I : 328 I 332 I I I I I I I I 336 340 344 342 352 356 360 148 14C 150 154 15 8 15C 160 l '------1------t------t-------.J I PPJOBFRM I I I I Job Default Forms 10 I I I Maximum Record count I I I I 16C Numner of Cards Read +------------+------------+------------+------------~ I PPJLINES I I I I Number of SYSOUT Lines I I I Number of SYSOUT Cards I I I +------------+----------+------------+------------~ I PPJPUNCH I I I I +------------+------------+------------+------------~ I I I I I PPJXEQOF t I I Time Off Execution +------------+------------+------------+------------~ I PPJXEQON I I I I Time On Execution +------------+------------+------------+------------~ I PPJDSKEY I Data Set Buffer Validity Key I I I +------------+------------+------------+------------~ I PPJJOBEB I HASP Logic I i I Job Number +------------+----I PPJROOMN I I lI ___________ 5 - 100.2 I I I I PPJCARDS I I I 364 I I I +------------+------------+------------+------------~ I I I 168 I I I +------------+------------+------------+-----~------~ I PPRECCT I I I I 164 I -L_____ +------------+------------~ Room Number ________ ~ I I I ____________JI Page of GY27-7255-0 Revised September 15, 1976 By TNL.SN27-1555 HASP PRINT/PUNCH PCE WORK AREA 368 I I 372 376 170 T------------T-----------~------------T------------l I PPJJNAME I I I I Job Name I I I 174~------------+_-----------+------------+------------~ I I I I Job Name (Continued) 178~------------+_-----------+------------+------------~ I PPJPNAME I I I I = 396 400 I I I I I I I = Programmer Name I I I I I 18C+------------+------------+------------+------------~ I PRINDEX I PPMSGCLS I PPDSCPY I PSMF6BID I 3 211· I Job I I I I I Index I Message I Data Set I SMF Work I I Value I Class I Copy Count I Byte I 190~------------+------------+_-----------+------------~ I I I I PBSPGCT Backspace Page Count I I I I I I I I PBSPTBL I 404 194.------------+------------+ I I I I = = I I I I + 432 I I I I Backspace Table I I I I I ~ +------------+------------~ I I I I I I I I (Unused) I I I I 1B 0l--------+_-----------+------------+------------~ I I I I = PCCWCHN Variable Length Print/Punch CCW Chain Il ____________ L ________- - L -___________ ~ I I I I = I I I ____________ JI PPPWORK 5 - 101 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 HASP.PRI~T CHECKPOINT ELEMENT The next figure shows the format and describes each field in a Print/Punch Checkpoint Element (PRC). After a Print/Punch processor has been given work from the Job output Table (JOT), a PRC element is used to checkpoint device status during output for purposes of warmstart. offset. Bytes and Bits Field Name DescriEtion 00 (00) 2 PRCJOBNO CKPT - H - Job number 02 (02) 2 PRCKJOE CKPT - H - CKPT JOE displacement 1 PRCFLAGS PRCHKUSE PRCHKJOB CKPT -·C - Flags Checkpoint entry is in use Job active indicator 04 (04) 1 ••• • 1 •• .... 05 (05) 1 PRCCPYCT CKPT - C - Current copy count 06 (06) 2 PRCEJRCB CKPT - H - Eject RCB displacement OS (OS) 2 PRCPDDBD CKP'I' - H - PDDB displacement 10 ( OA) 2 PRCPDDBP CKPT - H - PDDB page count 12 (OC) 4 PRCLINCT CKPT - F - Total line count 16 (10) 4 PRCPAGCT CKPT - F - Total page count 20 (14) 4 PRCEMTTR CKPT - F - MTTR of last eject 24 (1S) 4 PRClOTTR CKPT - F - MTTR of current lOT 2S (lC) 0 PRCSlZE Length of a PRC element (EQU) PRC 5 - 103 HASP PRINT CHECKPOINT ELEMENT DEC HEX - 00 00 T------------T------------T------------T------------, I PRCJOBNO I PRCKJOE I I I I 04 04 08 08 OC 12 16 10 20 24 14 18 I I I Work JOE Displacement I I I I I I I Checkpoint I Checkpoint I I Flags I Copy Count I Eject RCB Displacement I I I Checkpoint Job Number t------------+------------+------------+------------i I PRCFLAGS I PRCCPYCT I PRCEJRCB I t------------+------------+------------+------------i I PRCPDDBD I PRCPDDBP I I I Checkpoint PDDB Displ I I I I Checkpoint PODB Page Ct I I I t------------+------------+------------+------------i I PRCLINCT I I I I CJeckpoint Total Line Count I I I Checkpoint Total Page Count I I I t------------+------------+------------+------------i I PRCPAGCT I I I I t------------+------------+------------+------------i I PRCEMTTR I I I I MTTR of Last Eject I I I t------------+------------+------------+------------i I PRCIOTTR I I I I MTTR of Current lOT I Il ___________ l.. ___________ --'-_____________ J.. ____________ JI 5 - 104 HAST' Logic Page of GY27-7255-0 Revised September IS, 1976 By TNL SN27-1555 HASP READER PCE WORK AREA The Input Service PCE Work Area (RDRWORK) is an extension of the Input Service Processor Control Element which is used for reenterable storage by the Input service Processor. Offset Bytes and Bits Field Name Descri:etion 96 (60) 0 RCARDID Card identification byte 96 (60) 4 RDRDCT Address of input OCT 100 (64) 1 RDRSW Reader switches 100 (64) 4 RDADCT Address of direct-access OCT 104 (68) 4 RBIENO Address of last card in input buffer 108 ( 6C) 4 RBONEXT Address of next card in output buffer 112 (70) 4 RBOEND Address of end of output buffer 116 (74) 4 RLSAVEl Link register save word 1 120 (78 ) 4 RLSAVE2 Link register save word 2 124 (7C) 4 RLSAVE3 Link register save word 3 128 (80) 4 RSAVEl General purpose save word 1 132 (84) 4 RSAVE2 General purpose save word 2 136 (88) 4 RJCLTRAK Track address of next JCL block 140 (8C) 52 RMESSAGE Reader message area 192 (CO) 4 RJOB Address of job queue entry 196 (C4) 1 RPRIORTY Character from /*PRIORITY card 197 (CS) 1 RMSGCLAS MSGCLASS from JOB card 198 (C6) 2 RDRDLM Input data set delimiter 0 RDRPCEWS Length of normal input PCE WORK AREA RTPCARD RJE input card image RJEPCEWS Length of RJE input PCE work area 200 (C8) 80 0 RDRWORK 5 - 105 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP READER peE WORK AREA 96 60 ~----------T-------~------------T-----------l I 100 64 I 104 68 I 108 6C I 112 70 1116 74 I 120 78 1124 7C I 128 80 1 132 84 I 136 1 140 I RDRDCT I I I RCARDID I I Address of Input OCT I I Card Ident I I Byte I I t------------+-----------+------------+------------~ I RDADCT I I RDRSW I I I I Reader I Address of Direct-Access OCT I I Switches I I +------------+------------+------------+------------~ I RBIEND I I I Address of Last Card in Input Buffer I I I I +-----------+------------.~ I RBONEXT I I I I Address of Next Card in Output Buffer I I I +------------+-------+-----------+----------~ I RBOEND I I I I Address of End of Output Buffer I I I +------------+----------~ I RLSAVEl I I I I Link Register Save Word 1 I I I t-----------+------------+------------+-----------~ I RLSAVE2 I I I I Link Register Save Word 2 I I I t-----------+----------+-----------t-----------~ I RLSAVE3 I I I I Link Register Save Word 3 I I I +------------t------------~ I RSAVEl I t I I General Purpose Save Word 1 i +-----------+----- +------------+-- t------------+--- I t------------+--I RSAVE2 1 t-----·-------t---------- --1 I I General Purpose Save Word 2 I I 88 t------------t-----------~ I RJCLTRAK I I I I Track Address of Next JCL Block I I I 8C t------------t----------+------------t------------~ I RMESSAGE I I I I I I I I I I t----------t----- = Reader Message Area I I I IL _ _ _ _ _ _ _L _________-L 5 - 106 HASP Logic = I I I _____JI Page of GY27- 7255-0 Revised September 15, 1976 By TNL SN27-1555 HAS P READER PCE WORK AREA DEC HEX I 192 CO I 196 C4 I 200 C8 RDRWORK 5 - 107 HASP SMF BUFFER rhe System Management Facilities buffer (SMF) is used as a storage area HASP to hold SMF records which are ready to be written to the SMF data set and for copies of common exit parameter areas. The first two words are used for control purposes. Following the two control words are either a common exit parameter area or an SMF record. The header section is identical for all SMF records. A subsystem header follows the header for subsystem records. There are six SMF record types produced by HASP: 6, 26, 43, 45, 41, and 4S. ~ithin Offset Bytes and Bits Field Name Description Buffer Control Area 00 (00) 04 (04) 4 SMFCHAIN SMF buffer chain to next buffer 1 SMFTYPE SMFJMRTP SMFRECTP Type of buffer JMR buffer SMF record buffer 1111 1111 0000 0000 05 (05) 3 SMFPARM Reserved OS (OS) 4 JMRCHAIN Pointer to purge record buffer OS (OS) 4 SMFRDW SMF record descriptor word Beginning of JMR or HASP SMF record 12 (OC) SMFJMR 56 JMR data area SMF Record Header Area 12 (OC) 13 SMFHDFLG Header flag byte 0110 1010 1011 1101 1111 SMFHDRTY SMFOUTTP SMFPRGTP SMFSSSTP SMFPSSTP SMFSSETP 0011 0000 SMFPSETP Record type HASP output processor SMF record type HASP purge record type HASP start subsystem record type HASP stop subsystem record type HASP start subsystem event record type HASP stop subsystem event record type 1 1 (00) 0000 0001 0010 0010 0010 14 (OE) 4 SMFHDTME TOO, using format from time macro lS (12) 4 SMFHDDTE Date in packed decimal form: OOYYDDDF 22 2 SMFHDSID System identification (16) SMF 5 - 109 Page of GY27-7255-0 Revised September 15,1976 By TNL SN27-1555 HASP SMF BUFFER Offset Bytes and Bits Field Name Description 24 (18) 2 SMFHDMOD system model identifier 26 (lA) 0 SMFRSTRT Define start of record after header SMF type 6 Output Processor record 26 (lA) 8 SMF6JBN Job name 34 (22) 4 SMF6RST Reader start time 38 (26) 4 SMF6RSD Reader start date 42 (2A) 8 SMF6UIF User identification field 50 (32) 1 SMF60WC Output writer class 51 (33) 4 SMF6WST Writer start time 55 (31) 4 SMF6WSD Writer start date 59 (3B) 4 SMF6NLR Number of logical records for writer 63 (3F) 1 SMF6IOE SMFDSER SMFCBER I/O error indicator Input error on jobs SYSOUT data set Input error on HASP control block .1.. ••••••• 1 64 (40) 1 SMF6NDS Number of data sets processed by writer 65 (41) 4 SMF6FMN Form number 69 (45) 1 SMF6RV1 Reserved (first 3 bytes used by HASP) 76 (4C) 4 SMF6JNM HASP assigned job number 80 (50) 8 SMF60UT HASP logical output device name 88 (58) 4 SMF6FCB FCB identification 92 (SC) 4 SMF6UCS UCS identification 96 (60) 4 SMF6PGE Page count 100 (64) 2 SMF6RTE Output route code 102 (66) 0 SMF6END End of type 6 record (not 3800) 5 - 110 HASP Logic Page of GY27-7255-0 Added September 15, 1976 By TNL SN27-1555 HASP SMF BUFFER Offset Bytes and Bits Field Name Dcser i [?ti on 102 (66 ) 2 SMF6LN2 Length of first extension 104 (6 8) 8 SMF6CPS Copies distribution 112 (70) 16 SMF6CHR CHARS specification 128 (80) 4 SMF6MID Copy modification module name 132 (84) 4 SMF6FLI Forms overlay ID 136 ( 88) 1 SMF6FLC Number of copies flashed SMF6BID Flag byte Burster-Trimmer-Stacker used OPTCD=J specified SMF638E End of record with 3800 extension 137 (89) 1 1 •.• • 1 •• 138 (8A) 0 .... .... SMF 5 - 110.1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 HASP SMF BUFFER Offset. Bytes and Bits Field Name Description SMF type 26 purge record 26 (lA) 8 SMF26JBN Job name (ORG SMFRSTRT) 34 (22) 4 SMF26RST Reader start time 38 (26) 4 SMF26RSD Reader start date 42 (2A) 8 SMF26UIF User identification field 50 (32) 4 SMF26RSV Reserved 54 (36) 55 (37) 2 0000 0010 SMF26SBS SMFHSPID Subsystem identification HASP subsystem identification 2 SMF26IND Section existence indicator =X'EOOO' Descriptor section indicator Events section indicator Actuals section indicator 58 (3A) 2 SMF26LNl Descriptor section length, including this field 60 (3C) 3 SMF36RVl Reserved 1 SMF26INF SMF PRI CD SMFSETUP SMFTHOLD SMFNOLOG SMFEXBCH SMFJBOP5 SMFJBOP6 SMFOPCAN Job information /*PRIORITY card present /*SETUP card(s) present TYPRUN=HOLD was specified No job log option Execution batching job Reserved Reserved Job canceled by $C or $P 56 56 56 56 (38) (38) (38) (38) 1 ••• .1 .• •• 1. 63 (3F) 1... .1.. •• 1. ••• 1 1... .1.. •• 1. ••• 1 64 (40) 4 SMF26JNM HASP assigned job number 68 (44) 8 SMF26RVO Job name from JOB card 76 (4C) 20 SMF26NAM Programmer's name from JOB card 96 (60) 1 SMF26MSG MSGCLASS from JOB card 97 (61) 1 SMF26CLS Job class from JOB card 98 (62) 2 SMF26XPR HASP execution selection priority 100 (64) 2 SMF260PR HASP output selection priority SMF 5 - 111 HASP SMF BUFFER Offset Bytes and Bits Field Name DescriEtion 102 (66) 2 SMF26LOC Input route code 104 (68) 8 SMF26DEV HASP logical device name 112 (70) 4 SMF26ACT Programmer's accounting number 116 (74) 4 SMF26ROM Programmer's room number 120 (78) 4 SMF26XTM Estimated execution time 124 (7C) 4 SMF26ELN Estimated output lines 128 (80) 4 SMF26EPU Estimated punched output 132 (84) 4 SMF26FRM Default output form number 136 (88) 2 SMF26CYP Print copy count 138 (8A) 2 SMF26LIN Lines per page 140 (8C) 2 SMF26PRR Print route code 142 (8E) 2 SMF26PUR Punch route code 144 (90) 2 SMF26LN2 Events section length, including this field 146 (92) 2 SMF26RV2 Reserved 148 (94) 4 SMF26RPT Reader stop time 152 (98) 4 SMF26RPD Reader stop date 156 (9C) 16 SMF26RV3 Reserved 172 (AC) 4 SMF26XST Execution start time 176 (BO) 4 SMF26XSD Execution start date 180 (B4) 4 SMF26XPT Execution st9.P time 184 (B8) 4 SMF26XPD Execution stop date 188 (BC) 4 SMF260ST Output Processor start time 192 (CO) 4 SMF260SD Output Processor start date 196 (C4) 4 SMF260PT Output Processor stop time 5 - 112 HASP Logic HASP SMF BUFFER Offset. Bytes and Bits Field Name Description 200 (ca) 4 SMF260PD Output Processor stop date 204 (CC) 2 SMF26LN3 Actuals section length, including this field 206 (CE) 2 SMF26RV4 Reserved 208 (DO) 4 SMF26ICD Number of input cards (JCL and data) 212 (04) 4 SMF26XLN Generated output lines 216 (OS) 4 SMF26XPU Generated punched output 220 (DC) 4 SMF26RV5 Reserved 224 (EO) 4 SMF26PLN Printed lines 22S (E4) 4 SMF26PPG Printed pages 232 (ES) 4 SMF26PUC Punched cards 236 (EC) 0 SMF26END End of type 26 record SMF Subsystem Header Area 26 (lA) 27 (lB) 2 0000 0010 SMFSSID SMFHSPID HASP subsystem 10 (ORG SMFRSTRT) HASP subsystem identification (lC) 2 SMFSSRSV Reserved 30 (lE) 2 SMFSSLEN Length of rest of record, not including this field 32 (20) 0 SMFSSTRT Define start of subsystem portion 28 SMF Type 43 Start 32 (20) 35 (23) 3 SMF43RVl Reserved 1 SMF430PT Start HASP options Force format option Cold start option Request option REP option REP list option Trace option Reserved SMF43END End of type 43 record 1 ••• • 1 •• • • 1• • •• 1 ·... 1 ••• • 1 •• •• 11 36 (24) H~SP o Record SMF 5 - 113 HASP SMF.BUFFER Offset Bytes and Bits Field Name Description SMF type 45 stop HASP record 32 (20) o SMF45END End of type 45 record (ORG SMFSSTRT) SMF type 47 start subsystem event 32 (20) 33 (21) 33 (21) 2 0000 0001 0000 0010 SMF47EVT SMFRMTEV SMFLINEV Event starting (ORG SMFSSTRT) HASP S1GNON subsystem event HASP start line subsystem event (22) 2 SMF47LN1 1D section length, 36 (24)- 8 SMF47RMT Remote name 44 (2C) 8 SMF47LIN Line name 52 (34) 8 SMF47PSW Password 60 (3C) 2 SMF41LN2 Message section length, including this field 62 (3E) 36 SFM47MSG Message 98 (62) o SMF47END End of type 47 record 32 (20) 2 SMF48EVT SMF type 48 stop subsystem event Event stopping 33 (21) 33 (21) 0000 0001 0000 0010 34 SMF RMTE V SMFL1NEV (field included) HASP S1GNOFF subsystem event HASP stop line subsystem event (22) 2 SMF48RVl Reserved 36 (24) 8 SMF48RMT Remote name 44 (2C) 8 SMF48L1N Line n,3.me 52 (34) 8 SMF48PSW Password 60 o SMF48END End of type 48 record 34 5 - (3C) 114 HASP Logic HASP SMF BUFFER 00 04 08 00 04 08 T------------T-----------~------------T------------, I I I I SMFCHAIN I I I I SMFTYPE SMF Buffer Chain to Next Buffer t------------+------------+------------+------------~ Buffer Type 16 20 24 OC 10 14 18 I I I I I I SMFPARM I (Reserved) I +------------+------------+------------+------------~ I S~~W I I JMRCHAIN I 12 I I I I I SMF Record Descriptor Word I I I Pointer to Purge Record Buffer +------------+------------+------------+------------~ I I I SMFJMR SMFHDFLG Header I Flag Byte I I SMFHDRTY I Record Type I I SMFHDTME I I Time of Day Record was Written I I I I I t------------+------------+------------+------------~ I I I I I I I I I I I I I I I I SMFHDDTE I I I I Date Record Written t--------+----------+------------+------------~ SMFHDSID System Identification I I I I t--------+----------+----------+----------~ I I SMFHDMOD ISystem Model Identifier I I I I SMFRSTRT IBegin Record After Header I Il _________ J.. _ _ _ _ _ _ _ _ _ -LI ____________,l.__________- II SMF 5 - 115 HASP SMF BUFFER 24 28 32 36 40 44 48 18 1C 20 24 28 2C 30 T------------T-----------~------------T------------l I I I I I I I I 34 Job Name from JMR I I I I 38 +------------+---------+------------+------------~ I I I I I I I I I I I I I I I I I I I I SMF6RST Reader Start Time 3C Reader Start Date 40 I User Identification I Field I +------------+-------------+------------+------------~ I I I I User Identification Field (Continued) 44 I I I 5 - 48 116 I I I I Output I Writer I Class I Start Time I +-----------+-------+------------+------------~ I I SMF6WSD I I I I I Writer I Start Date I +------------+-----------+------------+------------~ I I SMF6NLR I I I Number of I Records I I I +------------+---------+------------+------------~ I I SMF6IOE I I I I I I/O Error I Indicator I +------------+----------+-----------+------------~ I SMF6NDS I SMF6FMN I I I I I I I Form Number +------------+-------------+------------+------------~ I I SMF6RV1 I I I I 72 I I +------------+------------+------------+------------~ I I SMF60WC I SMF6WST I I I Number of I Data Sets 68 I I I +------------+-----------+------------+------------~ I I SMF6UIF I I I I 64 I I I I +------------+---------+------------+------------~ I I SMF6RSD I I I I 60 I I I I Job Name (Continued) I I I 56 I I I I +------------+--------+------------+------------~ I I I 52 SMF6JBN I I I I I I (Reserved) +------------+-----------+------------+------------~ I I I IL____________ ~_____ HASP Logic I I Reserved (Continued) I _ ______ ____________ JI ~ Page of GY27-7255-O Revised September 15, 1976 By TNL SN27-1555 HASP SMF BUFFER 76 4C T------------T-----I SMF6JNM 1 I ~------------T------------, I I I HASP Assigned Job Number I 80 50 1 +------------+-------------+------------+------------~ I SMF60UT I I I I 84 88 54 58 t------------+-------------+------------+------------~ I I1 I 5C t------------+------------+------------+------------~ I SMF6FCB I +------------+------------+------------+------------~ I SMF6UCS I 1 60 I I I FCB 1D I I 96 I I I I Device Name (Continued) I I I 92 I I I HASP Logical Output Device Name I I I UCS 1D +------------+-I SMF6PGE 1 I -+------------+------------~ I I I Page count 1 100 104 64 68 I t------------+------------+------------+------------~ I I I I SMF6RTE Output Route Code I I I I I I I I SMF6LN2 Length of Extension ~----_-------L------------L------------~------~-----~ I SMF6CPS I I I I I I I Copy Groups 4 T I J I I IL _________________________ JI SMF 5 - 117 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP SMF BUFFER DEC HEX 112 70r--------------------, I SMF6CHR I I Character Arrangement Table specifications I ~ J I I I I I I I I I I I I I 1 I : ~ I I I I , , I ~ l2B BO I I I I I 84 I I. BB I SMF6MID I Copy Modification Identification SMF6FLI Forms Overlay Identification ~-----T----I SMF6FLC I SMF6BID I I I Flash I I Count I L _____ L 5 - 118 I ~------- ------------------1 I 136 I I I t---------------------------, I I 132 I HASP Logic Flag Byte I I I -,------------ J I I I I _ _ _ _ ..J Page of GY27-7255-0 Added September 15, 1976 By TNL SN27-1555 HASP SMF BUFFER 24 28 32 36 40 44 48 52 56 18 T------------T-----------~------------T------------, I I I I 1C 20 24 28 2C 30 34 38 3C I I I I 68 12 40 44 48 Job Name From JMR I I I I I I I I Job Name (Continued) t------------+------------+------------+------------~ I I SMF26RST I I I I I I I Reader Start Time I I I I I I Reader Start Date I I I I I I I I I t------------+------------+------------+------------~ I I SMF26RSD I I I I t------------+------------+------------+------------~ I I SMF26UIF I I User Identification I Field I t------------+------------+------------+------------~ I I I I User Identification Field (Continued) I I I I t------------+------------+------------+------------~ I I SMF26RSV I I I I I I I I I I I I I (Reserved) I I I t------------+------------+------------+------------~ I I SMF26SBS I HASP Subsystem 10 I I I t------------+------------+------------+------------~ I SMF26IND I SMF26LNl I I I I I Descriptor Section I Length I t------------+------------+------------+------------~ I SMF26RVl I SMF26INF I I I I 64 SMF26JBN t------------+------------+------------+------------~ I I I 60 I I I I Section Indicators (Reserved) I I I Job I I Information I t------------+------------+------------+------------~ I SMF26JNM I I I I HASP Assigned Job Number I I I Job Name From Job Card I I I t------------+------------+------------+------------~ I SMF26RVO I I I I t------------+------------+------------+------------~ I I I I I Job Name (Continued) I IL __________ J. _________ -L__________J. ___________--'I SMF 5 - 118.1 HASP SMF BUFFER 76 4C T------------T-----------~------------T------------, I SMF26NAM I I I I I I I Programmer's Name From Job Card I I I I I 96 60 +------------+------------+------------+------------~ I SMF26MSG I SMF26CLS I SMF26XPR I I I I 100 104 64 68 112 6C 70 74 I I HASP Output 1 selection priority I I I 78 7C I I I I 80 +----------+---I SMF26ACT 84 88 I I I I +-----------+---------~ Programmer's Accounting Number I I I I +----------+---------+-----------+---------~ I SMF26ROM I I I I Programmer's Room Numbe.r +-----------+---I SMF26XTM +------------+------------~ I I I I Estimated Execution Time +------------+--I SMF26ELN +-----------+----------~ I I I I Estimated Output Lines +----------+-I SMF26EPU +-----------+---------~ I I I I Estimated Punched Output +----------+----I SMF26FRM I I I 136 I I I I +------------+------------~ Device Name (Continued) I I I 132 I I I +------------+------------~ +--------~---+-- I I I 128 Input Route Code HASP Logical Input Device Name I I I 124 Job Class I +------------+I SMF26DEV I I I 120 I +------------+--I SMF260PR I I I 116 I HASP Execution I I Selection priority I +------------+------------~ I SMF26LOC I I I I 108 I I I MSGCLASS +------------+-------~ I I I I Default Output Form Number +---------+I SMF26CYP +----------+-------~ I SMF26LIN I I I I L I I I Print Copy Count _______ -L_____ , Lines Per Page ______ .L I' I JI SMF 5 - 119 HASP SMF BUFFER 140 8C T------------T------------T------------T------------, I SMF26PRR I SMF26PUR I I I I 144 90 152 94 98 Events Section Length 9C I I I I I I I (Reserved) Reader Stop Time +------------+------------+------------+------------~ I SMF26RPD I I I I Reader Stop Date +------------ +----------+------------+------------~ I I I I I I I I SMF26RV3 = (Reserved) I I I I 116 180 184 AC BO B4 B8 I +------------+----------+------------+------------~ I SMF26XST I t I I Execution Start Time I I I Execution Start Date I I I Execution Stop Time 192 196 BC CO C4 120 I I I +------------+----------+------------+------------~ I SMF26XPT I I I I +------------+----------+------------+------------~ I SMF26XPD I I I I Execution Stop Date +------------+------------+------------+------------~ I SMF260ST I I I I Output Processor Start Time I I I Output Processor Start Date I I I +------------+------------+------------+------------~ I SMF260SD I I I I +------------+------------+------------+------------~ I SMF260PT I I I I Output Processor Stop Time I IL____________ ____________L ____________ ____________ JI ~ 5 - I I I +------------+----------+------------+------------~ I SMF26XSD I I I I 188 I I I I I I I SMF26RPT = 112 I I I +------------+------------+------------+------------~ I I I 156 Punch Route Code +------------+------------+------------+------------~ I SMF26LN2 I SMF26RV2 I I I I 148 I I I Print Route Code HASP Logic ~ HASP SMF BUFFER DEC HEX. 200 204 208 212 216 220 224 228 232 C8 T------------T------------~------------T------------, I I I I cc DO D4 D8 Output Processor Stop Date +------------+--------+------------+------------~ I SMF26LN3 I SMF26RV4 I I I I I Actuals Section Length I EO E4 E8 I I I (Reserved) I +------------+------------+------------+------------~ I SMF26ICD I I I I I I I Number of Input Cards (JCL and Data) +------------+------------+------------+------------~ I SMF26XLN I I I I I I I Generated Output Lines +------------+-------------+------------+------------~ I SMF26XPU I I I I DC I I I I SMF260PD I I I Generated Punched Output +------------+------------+------------+------------~ I SMF26RV5 I I I I I I I (Reserved) +------------+------------+------------+------------~ I SMF26PLN I I I I I I I Printed Lines +------------+-------------+------------+------------~ I SMF26PPG I I I I Printed Pages I I Il ____________ Punched Cards I I I +------------+-------------+------------t------------~ I SMF26PUC I ~ ___________ _L ____________ ~ I I ____________ JI SMF 5 - 121 HASP S~lF BUFFER DEC HEX ---- 24 18 28 lC T------------T-----------~------------T------------, I I I I I I I I Sr.iFSSID HASP Subsystem ID I I I I +------------+------------+------------+------------~ I SMFSSRSV I SMFSSLEN I I I I (Reserved) ILength of Rest of Record I I IL ____________ ___________ _L_ I _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ JI ~ 32 20 T------------T------------T------------T------------, I SMF43RVl I SMF430PT I I I IL ____________ 5 - 122 ~ HASP Logic I I I start HASP I Options ___________ _L ____________ LI ____________ JI (Reserved) ~ HASP 32 36 40 44 20 24 28 2C T------------T-----------~------------T------------l I I I I 52 56 60 64 30 34 38 3C 40 I I I I St~41EVT Event Starting I I I I SMF47LNl Identification Section Length t------------+------------+------------+------------~ I I I I I I I I SMF47RMT Remote Name t------------+------------+------------+------------~ I I I I I I I I Remote Name (Continued) t------------+------------+------------+------------~ I SMF47LIN I I I I 48 .. F BUFFER S~ I I I Line Name t------------+------------+------------+------------~ I I I I I I I I Line Name (Continued) t------------+------------+------------+------------~ I I I I I I I I SMF47PSW Password t------------+------------+------------+------------~ I I I I I I I I Password (Continued) t------------+------------+------------+------------~ I SMF47LN2 I I Message Section Length I I I I I I I I I SMF47MSG Message t------------+------------+------------+------------~ I I I I = I I I I = Message (Continued) IL ____________ L ___________ -L ____________ ~ I I I ____________ JI SMF 5 - 123 HASP Sr.:F BUFFER DEC HEX - 32 36 40 44 48 52 56 20 24 28 2C 30 34 38 T------------T------------T------------T------------, I SMF48EVT I SMF48RV1 I I I I Event Stopping I I I (Reserved) I I I t------------+------------+------------+------------i I I I I SMF48RMT Remote Name I I I I t------------+------------+------------+------------i I I I I Remote Name (Continued) I I I I t------------+------------+------------+------------i I I I I SMF48LIN Line Name I I I I +------------+------------+------------+------------i I I I I Line Name (Continued) I I I Password I I I I t------------+------------+------------+------------~ I SMF48PSW I I I I t------------+------------+------------+------------i I I I I I Password (Continued) I IL ____________ L ___________ -L ____________ L ____________ JI 5 - 124 HASP Logic HASP TRACK EXTENT DATA TABLE The Track Extent Data table (~ED) defines for HASP direct-access allocation purposes a single 3POOL volume. It contains information about the physical volume obtained from the OS device characteristics table, about the track groups on the volume, and the position of the device's access mechanism. Q.ffset Bytes and Bits Field Name Description 00 (00) 4 TNCH Seek address of most recent $EXCP 04 (04) 4 TNTC Number of tracks/cylinder this device 08 (08) 2 TNMD Extent number, shifted left eight 10 (OA) 2 TNRT Maximum record number 12 (OC) 2 TNGE Nurnoer of track groups in extent 14 ( OE) 2 TNTG Number of tracks per group 16 (10) 2 TNMO Offset of this map from first map 18 (12) 2 TNMB Number of bytes in this map 20 (14) 0 TEDSIZE Length of DSECT (EQU) TED 5 - 125 HASP. TRACK EXTENT DATA TABLE 00 04 08 00 04 08 T------------T------------~------------T------------, I TNCH I I I I MTTR For Most Recent $EXCP On This Module I I I Number of Tracks Per Cyl On This Device +------------+------------+------------+------------~ I TNTC I +------------+----I TNMD I I I 12 OC tI I I I 16 20 10 14 I I I I I I -+------------+------------~ I TNRT I I I DEB Extent Number, I Number of HASP I Times 256 I Buffers Per Trk I +----------+------------+------------~ TNGE I TNTG I Nr Of Groups/Extent I I I Nr Of Tracks/Group I I I t------------+------------+------------+------------~ I I I I TNMO. I I I I I I I I TNMB Offset of This Map Number of Bytes From First Map In This Map +------------+------------+------------+------------~ I TRPS I I I I Address of RPS Table for This Module I IL____________ L ___________ -L____________ ____________JI ~ 5 - 126 HASP Logic HASP TIMER QUEUE ELEMENT A HASP Timer Queue Element (TQE) is created by any HASP processor which needs to maintain a time interval independent of other intervals. The processor requests interval time services by using the $STIMER and $TTIMER macro instructions which specify the address of a TQE. Interval Timer Supervisor routines maintain all active TQEs in a chain with the shortest unexpired interval first in the chain. The TQE specifies the interval and the processor Event Wait Field to be posted for work when the interval expires. Offset_ Bytes and Bits Field Name Description 00 (00) 4 ICHAIN Address of next Timer Queue Element 04 (04) 4 ITlME specified interval (in timer units) 08 (08) 4 IPOST Flag byte and address of EWF to post TQE 5 - 121 HASP TIMER QUEUE ELEMENT 00 04 08 00 04 08 T------------T-----------~------------T------------, I I I I ICHAIN Address of Next HASP Timer Queue Element I I I I t------------+------------+------------+------------~ I ITIME I I I I Specified Interval (In Timer Units> I I I t------------+------------+------------+------------~ I . IPOST I I I I I I Flag Byte I Address of Event Wait Field I lI ____________ LI ___________ -L ____________ ____________ JI ~ 5 - 128 HASP Logic Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP EXECUTION PCE WORK AREA The Execution Work area (XEQWORK) is an extension to each execution PCE to contain information necessary to run a job. It contains such fields as job status flags, job name, JQE address, DDB chain pointer, and output statistics. Offset 96 Bytes and Bits (60) 1 1 ••• • 1 •• • • 1• • •• 1 1 ••• • 1 •• • . 1. • •• 1 97 (61) 1 1 ••. • 1 •• • • 1• • •• 1 1 ••• • 1 •• · . 1. • •• 1 Field Name Description XPCESTAT XDUPBIT XEOJMES XPOSTBIT XREXREQ . XSYNCREQ XOCRMES XPCER5V6 XPCER5V1 PCE status byte Job with duplicate name waiting End-execution message sent XTHAW should thaw XPCEJST Requeue for XEQ at end XEQ Synchronous action required OCR-overflow message sent Reserved Reserved XSYNCFLG XEOJBIT XALLOCWT XGETIOT XIOTW1U:Q XOUTCDBF XOCRM5G XSYNRSV6 XSYNRSV1 Synchronous action flags Terminate job execution Write 'AWAITING ALLOCATION' Get another lOT for reader/interpret lOT checkpoint required Get a /*OUTPUT card buffer Write an OCR-overflow message Reserved Reserved 98 (62) 2 XPCESTEP Current step number 100 (64) 4 XPCEOUTC Pointer to /*OUTPUT card buffer 104 (68) 4 XPCEJST Address of user task control block 108 (6C) 4 XPCEJOB Address of job queue entry 112 (70) 4 XPCEIOT Address of first lOT 116 (74) 8 XPCEJOBN Job name 124 (7C) 4 XPCEDCT Address of direct-access DCT 128 (80) 4 XPCEDDB Start of data detinition table chain 132 (84) 16 XPCEPRT Print Information Table 148 16 XPCEPUN Punch Information Table (94) XEQWORK 5 - 129 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP EXECUTION PCE WORK AREA Offset Bytes and Bits Field Name DescriEtion XPCEPIT Address of partition information table XSTQE Execution Timer Queue Element 164 (A4 ) 4 168 (A8 ) 12 180 (B4 ) 4 XXSTIME Time estimate excession amount 0 XEQPCEWS Length of execution PCE work area (EQU *-PCEWORK) 5 - 130 HASP Logic Page of GY27-7255-0 Revised September IS, 1976 By TNL SN27-1555 HASP EXECUTION PCE WORK AREA 96 60 ~-----------T-----------r------------T------------l I XPCESTAT I I PCE Status I Byte I XSYNCFLG I I Syn Action I Flags I I I I XPCESTEP Current Step Number I I I I I 100 64 +------------t------------t------------t------------~ I XPCEOUTC I I 104 68 I 108 6C I 112 70 I I I Pointer to Output Control Record Buffer I I I Address of User Task Control Block I I I +------------t------------+------------t------------~ I XPCEJST I +------------t--I XPCEJOB I I I I I I +------------t------------~ I I I I Address of Job Queue Entry +------------t------------+------------t------------~ I XPCElOT I I I I I I I Address of First lOT I 116 74 +------------t--------t----------t------------~ I 120 I 124 I 128 I 132 I XPCEJOBN I I I I Job Name I I I 78 t------------t--------t--.:.----------t------------~ I I I I I Job Name (Continued) I I I 7C +------------t------------~ I XPCEDCT I I I Address of Direct-Access DCT I I I I 80 -+-------------~ I XPCEDDB I I I I Start of Data Definition Table Chain I I I 84 +------------t------------+--------~---t------------~ I XPCEPRT I I I I I I I t------------t-----t------------t- = I 148 94 +----------.. . = Print Information Table I I I I I I I I I I I t------------t------------t------------t------------i I XPCEPUN I = IL____________ = Punch Information Table ~ ___________ _L ____________ ~ I I I ____________ JI XEQWORK 5 - 131 Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 HASP EXECUTION PCE WORK 164 A4 T------------T------------T------------T------------, I XPCEPIT" I I I I 168 Address of Partition Information Table I I I A8 ,t------------+------------+------------+------------~ I I I I XSTQE = Execution Timer Queue Element I I I I 180 ARE~ B4 t------------t- = I I I I +------------t-----------~ I XXSTIME I I I Time Estimate Excession Amount I I I ________ ___L___ L -L ____________ ____________ JI ~ 5 - 132 I I I I HASP Logic ~ SECTION 6 HASP DIAGNOSTIC AIDS Diagnostic Aids 6 - 1 Page of GY27-7255-O Revised May 28, )975 By TNL SN25-0) 22 REGISTER USAGE The use of all registers is consistent throughout HASP. The following list indicates for each register the register number. its equated name(s). and its use. Where a register has more than one equated name, the use depends on the equated name. The individual HASP modules can have other equates for work registers. HASP subroutines may use general registers O. 1. and 15 without saving them. Name Use o RO Work and parameter register, contents may be destroyed by HASP subroutines 1 Rl Work and parameter register, contents may be destroyed by RASP subroutines 2 WA R2 Work register A 3 WB RJ Work register B 4 WC Work register C Register R4 5 WD R5 Work register D 6 WE Work register E and use by overlay R6 7 WF R7 Work register F 8 WG BASEl Work register G Overlay addressability register R8 9 10 11 R9 Generally available for user modifications. Care should be exercised when using this register for modifications. JCT Rl0 JCT addressability register BASEl RCT and HASPNUC addressability register R 11 12 BASE2 Processor address ability base register to be modified on entry to a module R12 13 SAVE PCE addressability register R13 Diagnostic Aids 6 - 3 REGISTER USAGE 14 LINK R14 Link register 15 R15 Work register. contents may be destroyed by HASP subroutines. 6 - 4 HASP Logic STORAGE_DUMP CONTAINING HASP If the dump has OS control blocks formatted, e.g., as printed by IMPRDMP, the multiple task structure of HASP will be apparent. The main task is the load module named HASP. There will always be three subtasks present, HASPWTR, HASPWTO, and HASPACCT. The first part of CSECT HASPNUC (which is first in the load module HASP) is the HASP Communication,table (HCT). The HASP Vector Table ($HVT) is at the beginning of BCT. The majority of the formal interfaces with VS2 are exits from VS2 Release 1 to HASP coding. The addresses into HASP exist in $HVT, pointed to by CVTHJES, when HASP is active. The HCT contains a series of branches to HASP Control service subprograms and contains most of the globally used status bytes, counters, control block chain pointers, and queue pointers. The Processor Control Elements (PCEs) are in HASPNUC and can be found by looking in cell $PCEORG in the HCT or by following the OS save area chain from the system-provided first save area. PCEs are chained together exactly like OS save areas: forward chain in word 3, back chain in word 2. HASP uses the forward chain as its PCENEXT or dispatching chain. It may be desirable to analyze the overlay status of HASP when working on an undetermined problem. The overlay areas should first be inspected. A pointer to the first area can be found in cell $OACEADR in HASPNUC. All area control fields are defined in BUFDSECT. Subsequent areas are chained from OACECHN of the previous area. The CSECT in each area can be determined by looking at OACENAME (which is the first four bytes read from disk) for the last three or four characters of the CSECT name. OACEOCON also identifies the routine assigned to the area. OCON can be interpreted by looking at the listing produced by HASPOBLD. If any PCEs are using the routine, OACEPCE will be nonzero and will point to the first of a chain of PCEs. If BUFECBCC is zero, an uncompleted read operation was in progress 'to load the routine from disk. Once the status of overlay areas is known, PCEs should be inspected for possible use of overlay. A PCE which 'is using a routine currently in memory should be on a chain which begins with O~CEPCE of an area and continues through PCEOPCE of one or more PCEs. PCEOCON of each should match OACEOCON. If a PCE is not on an area chain but does have the $EWFOLAY bit on in its PCEEWF. i t should be on a queue beginning at cell $WAITACE in HASPNUC. This queue continues through PCEBASE3 of subsequent PCEs. Side chains of other PCEs from PCEOPCE may be present if several PCEs have equal PCEOCONS (requesting the same routine). A PCE which has the $EWFOROL bit on in its PCEEWF is not on any chain (PCEOPCE is not meaningful), but its PCEOCON indicates the requested Diagnostic Aids 6 - 5 STORAGE. DUMP CONTAINING HASP routine. PCER15 may be a very small value which then represents the relative displacement into the routine at which execution will later resume. PCEORTRN contains the return address from the original $LINK which invoked overlay. A PCE not in one of the three above states is not using overlay, and its PCEOCON is not meaningful. HASP REPing at initialization time is a standard feature. £OREPSIZ must be set to reserve a small amount of storage if REPing of overlay CSECTs is desired. REP cards may specify absolute storage locations or locations in any CSECT, as taken from assembly listings. For ZAPing overlay CSECTS, the SYSLIB card should reference the sequential overlay data set. The address for the CCHHR is taken from the listing produced by HASPOBLD. BASE adjusts for nonzero assembly origin of the CSECT. Most overlay CSECTs are shorter than the overlay record size of 1280 bytes. The space in the record following the last assembled location of the CSECT may be used as patch area. ABSDUMP cards may be used to dump the entire overlay data set or single CSECTs. 6 - 6 HASP Logic DEBUGGING TOOLS WITHIN HASP HASP provides several debugging tools to help diagnose problems, as follows: 1. A trace routine can be invoked. 2. A patch space can be reserved by using the HASP macro $PATCHSP. 3. The REP facility can be used when HASP is started to make dynamic changes to HASP code. 4. The Catastrophic Error Handler routine can be used to take a dump when necessary. 5. The HASP $COUNT macro can be used to trace problems. For further explanation of the debugging tools within HASP, refer to Section 3 HASP Trace Services, HASP Error Services, and the HASP REP Routine. In the appendix refer to the sections HASP Debug Services, HASP Error Services, and HASP Coding Aid Services. Diagnostic Aids 6 - 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 , i 1 1 1 1 \:~ 1 1 ! 1 1 1 1 1 1 1 , 1 1 1 1 1 1 1 1 1 1 , 1 1 1 1 1 ~ ! 1 1 1, 1 1 1 1 1l i 1 1 1 1 1 , SECTION 7 HASP APPENDIXES Appendixes 7 - 1 7 - 1.1 HASP Logic APPENDIX A HASP PROGRAMMER MACROS Appendix A 7 - 1.2 7-2 HASP Logic HASP MACROS OVERVIEW The HASP Control Service Programs provide a comprehensive set of services which aid the HASP Processors in performing their respective tasks in an efficient manner ~ithout burdening the processor programmer down with endless detail. These services are requested by the processor through the use of HASP macro instructions. The services are subdivided in this publication, as follows: 1. Buffer Services, which provide for the acquisition and release of HASP buffers. 2. Unit services, which provide for the acquisition and release of HASP input/output units. 3. Job Queue Services, which provide the processors with an interface with the HASP job queue. q. Direct-Access Space Services, which provide for the allocation and deallocation of HASP direct-access storage space. 5. Input/Output Services, which provide all communication with the Operating System Input/Output Supervisor. 6. Time Services, which provide for the setting and interrogation of the interval timer. 1. Overlay Services, which provide the capability to define and utilize sections of HASP that may optionally be made resident on direct-access storage and fetched into a dynamic area within HASP whenever required. 8. Synchronization Services, which provide synchronization and communication between HASP processors, the HASP Dispatcher, and the Operating System. 9. System Management Facilities Services, which provide the processors with an interface with the SMF services. 10. Debug Services, which provide facilities for aid in debugging HASP. 11. Error Services, which provide a uniform way of processing detected errors. 12. Coding Aid Services, which provide the HASP programmer with coding aids not usually available in the Operating System, but useful in coding HASP routines. Some of the above services are provided by win-line- code expansion wherever the macro instruction is used. The remainder of the services are provided by routines which are integral parts of the Control Service programs. For more information about these routines refer to Section 3. These routines are wlinked toW by code generated wherever the macro instruction is used. At execution time, the macro expansion passes information to the control program routine to specify the exact nature overview 1 - 3 HASP MACROS OVERVIEW of the service to be performed. This information is broken down into parameters and, in general, is passed to the routine through general purpose registers called parameter registers. The macro expansion can contain load instructions (LA,L,LH,etc.) that form parameters in parameter registers, and/or i t can contain instructions which load parameter registers from registers loaded by the processor. The processor can also load parameters directly. Registers Rl and RO are generally used as parameter registers. Each parameter resulting from the expansion of a macro instruction is either an address or a value. 1. Address Parameter An address parameter is a standard 24-bit address. It is always located in the three low-order bytes of a parameter register. The high-order byte in the parameter register should contain all zeros. Any exception to this rule will be stated in the individual macro instruction description. An address parameter is always an effective address. The Control Service program is never given a 16-bit or 20-bit explicit address of the form D(B) or O(B,X) and then required to form an effective address. When an effective address is to be resolved, it is formed either by the macro expansion or before the macro instruction is issued. 2. Value Parameter A value parameter is a field of data other than an address. It is of variable length and is usually in the low-order bits of a parameter register. The value parameter will always have a binary format. The high-order unused bits in the parameter register should contain all zeros. An exception to this rule will be stated in the individual macro instruction description. Certain value parameters can be placed in a register along with another parameter, which can either be an address or a v::lue parameter. In this case, a value parameter will be in c~_her than the low-order bits. Two-or more parameters in the same register are called packed parameters. 3. Operands Parameters are specified by operands in the macro instruction. An address parameter can result from a relocatable expression or, in certain macro-instructions, from an implied or explicit address. A value parameter can result from an absolute expression or a specific character string. Address and value parameters can both be specified by operand written as an absolute expression enclosed in parentheses. This operand form is called register notation. The value of the expression designates a register into which the specified parameter must 7 - 4 HASP Logic HASP MACROS OVERVIEW be loaded by the processor before the macro instruction is issued. The contents of this register are then placed in a parameter register by the macro expansion. The processor programmer writes an operand in a HASP macro instruction to specify the exact nature of the service to be performed. Operands are of two types: 1. Positional Operands A positional operand is written as a string of characters. This character string can be an expression, an implied or explicit address, or some special operand form allowed in a particular macro instruction. Positional operands must be written in a specific order. If a positional operand is omitted and another positional operand is written to the right of it, the comma that would normally have preceded the omitted operand must be written. This comma should be written only if followed by a positional operand; it need not be written if i t would be followed by a keyword operand or a blank. In the following examples, EX1 has three positional operands. In EX2, the second of three positional operands is omitted, but must still be delimited by commas. In EX3, the first and third operands are omitted; no comma need be written to the right of the second operand. 2. EXl $ EXAMP A,BEC EX2 $ EXAMP A"C EX3 $ EXAMP ,B Keyword Operand A keyword operand is written as a keyword immediately followed by an equal sign and an optional value. A keyword consists of one through seven letters and digits, the first of which must be a letter. It must be written exactly as shown in the macro instruction description. An optional value is written as a character string in the same way as a positional operand. Keyword operands can be written in any order, but they must be written to the right of any positional operands in the macro instruction. In the following examples, EXl shows two keyword operands. EX2 shows the keyword operands written in a different order and to the right of any positional operands. In EX3. the second and Overview 7 - 5 HASP MACROS OVERVIEW third positional operands are omitted; they need not be delimited by commas, because they are not followed by any positional operands. EXl $EXAMP KW1=X,KW2=Y EX2 $EXAMP A,B,C,KW2=Y,KW1=X EX3 $EXAMP A,KW1=X,KW2=Y Certain operands are required in a macro instruction, if the macro instruction is to make a meaningful request for a HASP executor service. Other operands are optional, and can be omitted. Whether an operand is required or optional is indicated in the macro instruction descriptions. BASIC NOTATION USED TO DESCRIBE MACRO INSTRUCTIONS HASP macro instructions are presented in this section by means of macro instruction descriptions, each of which contains an illustration of the macro instruction format. This illustration is called a format description. An example of a format description is as follows: [symbol] $EXAMP namel-value mnemonic,name2-CODED VALUE, KEYWD1=value mnemonic,KEYWD2=CODED VALUE Operand representations in format descriptions contain the following elements: 1. An operand name, which is a single mnemonic word used to refer to the operand. In the case of a keyword operand, the key~ord is the name. In the case of a positional operand, the name is merely a reference. In the above format description, namel, name2, KEYW01, and KEYWD2 are operand names. 2. A value mnemonic, which is a mnemonic usej to indicate how the operand should be written if it is not WLlt..ten as a coded value. For example, "addr" is a value mnemonic tLat specified that an operand or optional value is t.:.J be writteIl as either a relocatable expression or register notation. 3. A coded value, which is a character string that is to be written exactly as it is shown. For example, RDR is a coded value. The format description also specifies when single operands and combinations of operands should be written. This information is indicated by notational elements called metasymbols. For example, in the preceding format description, the brackets around "symbol" indicate that a symbol in this field is optional. operand_Representation 7 - 6 HASP Logic HASP MACROS OVERVIEW positional operands are represented in format descriptions in one of two ways: 1. By a 3-part structure consisting of an operand name, a hyphen, and a value mnemonic. For example: name1-addr. 2. By a 3-part structure consisting of an operand name, a hyphen, and a coded value. For example: namel-RDR. Keyword operands are represented in format descriptions in one of two ways: 1. By a 3-part structure consisting of a keyword, an equal sign, and a value mnemonic. For example: KEYWD1=addr. 2. By a 3-part structure consisting of a keyword, an equal sign, and a coded value. For example: KEYWD1=RDR. The most significant characteristic of an operand representation is whether a value mnemonic or coded value is used; these two cases ar'e discussed below. operands with Value Mnemonics_When a keyword operand is represented by: KEYWORD=value mnemonic the programmer first writes the keyword and the equal sign and then a value of one of the forms specified by the value mnemonic. When a positional operand is representPd by: name-value mnemonic the programmer writes only a value of one of the forms specified by the value mnemonic. The operand name is merely a means of referring to the operand in the format description; the hyphen simply separates the name from the value mnemonic. Neither is written. The following general rule applies to the interpretation of operand representations in a format description; anything shown in upper-case letters must be written exactly as shown; anything shown in lower-case letters is to be replaced with a value provided by the programmer. Thus, in the case of a keyword operand, the keyword and equal sign are written as shown, and the value mnemonic is replaced. In the case of a positional operand, the entire representation is replaced. The value mnemonics listed below specify most of the allowable operand forms that can be written in HASP macro instructions. Other value mnemonics, which are rarely used, are defined in individual macro instruction descriptions. overview 7 - 7 HASP MACROS OVERVIEW 1. Symbol - the operand can be written as a symbol. 2. Relexp - the operand can be written as a relocatable expression. 3. Addr - the operand can be written a:, (1) a relocatable expression or (2) register notation designating a register that contains an address in its three low-order bytes. The designated register must be one of the registers 2 through 12, unless special register notation is used. 4. Addrx - the operand can be written as (1) an indexed or nonindexed implied or explicit address or (2) register notation designating a register that contains an address in its three loworder bytes. An explicit address must be written as in the RX form of an assembler language instruction. 5. Adval - the operand can be written as (1) an indexed or nonindexed implied or explicit address or (2) register notation designating a register that contains a value. An explicit address must be written as in the RX form of an assembler language instruction. 6. Absexp - the operand can be written as an absolute expression. 7. Value - the operand can be written as (1) an absolute expression or (2) register notation designating a register that contains a value in its three low-order bytes. 8. TeAt - the operand can be written as a character constant as in a DC data definition instruction. The format description shows explicitly if the character constant is to be enclosed in single quotation marks. 9. Code - the operand can be written as one of a large set of coded values; these values are defined in the macro instruction description. Coded Value operands Some operands are not represented in format descriptions by value mnemonics. Instead, they are represented by one or more upper-case character strings that show exactly how the operand should be written. These character strings are called coded values, and the operands for which they are written are called coded value operands. A coded value operand results in either a specific value parameter or a specific sequence of executable instructions. If a positional operand can be written as anyone of two or more coded values, all possible coded values are listed and are separated by vertical stroke indicating that only one of the values is to be used. 7 - 8 HASP Logic HASP MACROS OVERVIEW Metasymbols Metasymbols are symbols that convey information to the programmer, but are not written by him. They assist in showing the programmer how and when an operand should be written. The metasymbols used in this section are: 1. 2. This is a vertical stroke and means "or". For example, AlB means either the character A or the character B. {} These are braces and denote grouping. They are used most often to indicate alternative operands. For example: {YESiNO} In the example above, either YES or NO must be written. 3. [] These are brackets and denote options. Anything enclosed in brackets can either be omitted or written once in the macro instruction. For example: [YESiNO] In the example above, YES, or NO, or neither can be written. The underlining indicates that, if neither is written, YES is assumed. SPECIAL REGISTER NOTATION If an operand of a HASP macro instruction is written using register notation, the resulting macro expansion loads the parameter contained in the designated register into either parameter register Rl or parameter register RO. For example, if an operand is written as (R15), and if the corresponding parameter is to be passed to the control program in register Rl, the macro expansion could contain the instruction: LR Rl,R15 The processor can load parameter registers directly, before the execution of the macro expansion: this is called preloading. The programmer specifies that preloading will occur by writing an operand as either n(Rl)" or "(RO)" this is called special register notation. This notation is special for two reasons: 1. The register notation designation of registers Rl and RO is generally not allowed. 2. The designation must be made by the specific four characters "(Rl)" or "(RO)", rather than by the general form of an absolute expression enclosed in parentheses. For example, even though the absolute symbol RONE could be equated to Rl, overview 7 - 9 HASP MACROS OVERVIEW "CRONE)" must not be written instead of ftCR1)" if special register notation is intended. If this were done, the macro expression would contain a useless instruction: LR Rl,RONE The format description shows whether special register notation can be used, and for which operands. This is demonstrated by the following example: [symbol] $EXAMP {abc-addrx I CR1)} , {def-addrx (RO}} Both operands can be written in the addrx form, and therefore can be written using register notation. Ordinary register notation indicates that the parameter register should be loaded from the designated register by the macro expansion. The format description also shows that the abc operand can be written as "(Rl)", and the def operand can be written as neRO)". If either of these special register notations is used, the processor must have loaded the designated parameter register before the execution of the macro instruction. REGISTER TRANSPARENCY In general, the following registers cannot be considered transparent across a HASP macro expansion and the associated link to the Control Service program: 1. LINK 2. R14 3. R15 4. RO 5. R1. All other registers will be transparent unless specifically stated in the individual macro instruction description. 7 - 10 HASP Logic HASP BUFFER SERVICES $GETBUF - Acquire A.HASP Buffer From The HASP Buffer Pool or RJE_Buffer From The RJE Buffer Pool The $GETBUF macro instruction obtains a buffer from the HASP or RJE buffer pool and returns the address of this buffer in register R1. Format Description: [symbol] $GETBUF [none-relexp] [,TYPE=TP] [,OLAY=YES] none specifies a location to which control will be returned if there are no buffers available. If this operand is omitted, the condition code will be set to reflect the availability of a buffer as follows: 1. CC=O - no buffer is available. 2. C~O - R1 contains the address of the buffer. TYPE=TP specifies that the buffer is to be obtained from the RJE buffer pool rather than the HASP buffer pool. OLAY=YES must be specified if the $GETBUF macro instruction is coded physically within an overlay segment. $FREEBUF - Return A HASP Buffer To The HASP Buffer Pool Or RJE. Buffer To The RJEBuffer Pool The $FREEBUF macro instruction is used to return a HASP buffer to the HASP buffer pool or RJE buffer to the RJE buffer pool. Format Description: (symbol] $FREEBUF {buffer-add~x I (R1)} [,OLAY=YESI buffer specifies either a pointer to a buffer or the address of a buffer to be returned to the buffer pool as follows: 1. If "buffer" is written as an address, then i t represents the address of a full word which contains the address of the buffer to be returned in its three low-order bytes. 2. If ·"buffer" is written using register notation (either regular or special register notation), then i t represents the address of the buffer to be returned. 3. If register notation is used, the address must have been loaded into the designated register before the execution Buffer Services 7 - 11 HASP BUFFER SERVICES of this macro instruction. OLAY=YES must be specified if the $FREEBUF macro instruction is coded physically within an overlay segment. Caution: The specified buffer must have been obtained by a $GETBUF macro instruction. The action of the macro instruction as well as future $GETBUF and $FREEBUF macro instructions is unpredictable in other cases. 7 - 12 HASP Logic HASP JOB QUEUE SERVICES JOB QUEUE SERVICES The HASP Job Queue consists of a chain of Job Queue Elements and can be divided into five logical queues. These five logical queues are represented by the following symbolic names: L29ical Job Queue Symbolic Name $INPUT Queue of jobs in input processing $xEQ Queue of jobs awaiting O/S Execution Phase $ OUTPUT Queue of jobs awaiting Output phase $HARDCPY Queue of jobs that are in the Job Output Table $PURGE Queue of jobs awaiting Purge Phase For more information concerning the formats of the HASP Job Queue Element and the HASP Job Information Table Element w refer to section 5 under JQE and JIT. $QADD -_Add Job Queue Element To The HASP Job Queue The $QADD macro instruction adds an element to the HASP Job Queue w placing it in the specified logical queue. The address of the associated Job Information Table Entry is returned in register "ROw. Format Description: [symbol] $QADD {element-addrx I (Rl)}, {queue-value I (RO)} [,full-relexpl [wOLAY=YES] element specifies the address of an element which is to be added to the HASP Job Queue. If register notation is used w the address must have been loaded into the designated register before the execution of this macro instruction. queue specifies the logical queue in which the Job Queue Element is to be placed. This value must always be one of the five logical queue types. If register notation is used w one of these values must have been Job Queue Services 7 - 13 HASP JOB QUEUE SERVICES loaded into the designated register before the execution of this macro instruction. full specifies a location to which control will be returned if the HASP Job Queue is full. If this operand is omitted, the condition code will be set to reflect the status of the HASP Job Queue as follows: 1. Cc=O - the queue is full and the element cannot be accepted. 2. CC~O - the element was successfully added to the queue. "RO" contains the address of the associated JIT Entry. OLAY=YES must be specified if the $QADD macro instruction is coded physically within an overlay segment. SQGET ~_Obtain Job Queue Element From The HASP Job Queue The $QGET macro instruction obtains specified logical queue of the HASP this element in register "R1". The Information Table Entry is returned a Job Queue Element from the Job Queue and returns the address of address of the associated Job in register "RO". FOrmat . Description: [symbol] $QGET {queue-value I (Rl)} [,none-relexpl (,PRROUTE=YESl [,PUROUTE=YESl (,OLAY=YES] queue specifies the logical queue from which the Job Queue Element is to be obtained. This value must always be one of the five logical queue types. If register notation is used, one of these values must have Deen loaded into the designated register before the execution of this macro instruction. none specifies a location to which control will be returned if the specified logical queue is empty. If this operand is omitted, the condition code will be set as follows: 7 - 14 1. CC=O - the specified logical queue is empty. 2. CC~O - "R1" contains the address of a Queue Element from the specified logical queue and "RO" contains the address HASP Logic HASP JOB QUEUE SERVICES of the associated JIT Entry. PRROUTE=YES specifies that bits 0-7 of register WRO W contain a route code which must match the route code (QUEPRTRT) of the Job Queue Element obtained. PUROUTE=YES specifies that bits 8-15 of register wRO· contain a route code which must match the route code (QUEPUNRT) of the Job Que Element obtained. OLAY=YES must be specified if the $QGET macro instruction is coded physically within an overlay segment. iQPUT - Return Job Queue Element To. The HASP Job Queue The $QPUT macro instruction returns a Job Queue Element to the HASP Job Queue, placing i t in the specified logical queue. The address of the associated Job -Information Table Entry is returned in register wROw. Format Description: [symbol] $QPUT {element-addrx I (Rl)}, [queue-value I (RO)} (,OLAY=YES] element specifies the address of an element which is to be returned to the HASP Job Queue. If register notation is used, the address must have been loaded into the designated register before the execution of this macro instruction. queue specifies the logical queue in which the Job Queue Element is to be placed. This value must always be one of the five logical queue types. If register notation is used, one of these values must have been loaded into the designated register before the execution of this macro instruction. OLAY=YES must be specified if the $QPUT macro instruction is coded physically within an overlay segment. CAUTION: The specified Job Queue Element must have been previously obtained with a $QGET macro instruction or the action of the $QPUT macro instruction is unpredictable. Job Queue Services 7 - 15 HASP JOB QUEUE SERVICES PROGRAMMING NOTE: The $QPUT macro instruction cannot be used to change the priority of a Job Queue Element. If a change of priority is desired, the $QREM and $QADD macro instructions must be used. $QREM ~_Remove Job Queue Element From The HASP Job Queue The $QREM macro instruction removes a specified Job Queue Element from the HASP Job Queue. Format Description: (symbol) $QREM {element-addrx I (Rl)} [,OLAY=YES1 element specifies the address of an element which is to be removed from the HASP Job Queue. If register notation is used, the address must have been loaded into the designated register before the execution of this macro instruction. OLAY=YES must be specified if the $QREM macro instruction is coded physically within an overlay segment. CAUTION: The specified Job Queue Element must have been previously obtained with a $QGET macro instruction or the action of the $QREM macro instruction is unpredictable. $QSIZ -_Determine Number- Of Elements_In A Logical Queue The $QSIZ macro instruction determines the number of Job Queue Elements in a specified logical queue of the HASP Job Queue and returns this value in register "Rl". Format Description: [symvol1 $QSIZ {queue-value I (Rl)} [,none-relexp1 [,PRROUTE=YEsl [,PUROUTE=YESl [,OLAY=YES] queue specifies the logical queue which is to be counted. must always be one of the five logical queue types. This value If register notation is used, one of these values must have been loaded into the designated register before the execution of this macro instruction. none specifies a location to which control will be returned if the 7 - 16 HASP Logic HASP JOB QUEUE SERVICES specified logical queue is empty. If this operand is omitted, the condition code will be set to reflect the status of the specified logical queue as follows: 1. CC=O - the specified queue is empty (Rl=O). 2. CC~O - the specified queue contains at least one Job Queue Element (Rl = number of elements in queue). PRROUTE=YES specifies that bits 0-7 of register "RO" contain a route code which must match the route code (QUEPRTRT) of all jobs counted. PUROUTE=YES specifies that bits 8-15 of register nRo n contain a route code which must match the route code (QUEPUNRT) of all jobs counted. OLAY=YES must be specified if the $OSIZ macro instruction is coded physically within an overlay segment. SQLOC -Locate Job Queue Element For Specific Job The $QLOC macro instruction locates with the job with the specified job this element in register "R1". The Information Table Entry is returned the Job Queue Element associated number and returns the address of address of the associated Job in register "RO". Format Description: [symbol] $QLOC {jobno-adval I (Rl)} [,none-relexp] [ , OLAY=YES ] jobno specifies the binary job number associated with the job for which the Job Queue Element is being searched. If an address is used it specifies the address of a half-word that contains the binary job number. This half-word must be located on a half-word boundary. If register notation is used, the binary job number must have been loaded into the designated register before the execution of this macro instruction. none specifies a location to which control will be returned if the specified job number is not locatable in the HASP Job Queue. If this operand is omitted, the condition code will be set to reflect the status of register "Rl" as follows: Job Queue Services 7 - 17 HASP JOB QUEUE SERVICES 1. CC=O - the specified job is not locatable. 2. C~O - the specified job is locatable and "R1" contains the address of the associated Job Queue Element, and -RO- contains the address of the associated JIT Entry. OLAY=YES must be specified if the $QLOC macro instruction is coded physically within an overlay segment. 1 - 18 HASP Logic HASP UNIT SERVICES $GETUNIT - Acquire A Unit Device Control Table (OCT) The $GETUNIT macro instruction obtains a Device Control Table (OCT) for a specified type of unit, and returns the address of this OCT in register Rl. Format Description: [symbol] $GETUNIT type-code [,none-relexpl [,OLAY=YES] type specifies the type of unit for which a OCT is to be obtained. values for this operand and their meanings are: DA The - Direct-Access DCT LNE - Line OCT RDR - Card Reader OCT RJR - Remote Reader OCT INR - Internal Reader DCT PRT - Printer DCT RPR - Remote Printer OCT PUN - Punch DCT RPU - Remote Punch DCT none specifies a location to which control will be returned if there are no available Device Control Tables for the specified device. If this operand is omitted, the condition code will be set to reflect the availability of a OCT as follows: 1. CC=O - no OCT is available. 2. CC~O - Rl contains the address of a OCT of the specified type. OLAY=YES must be specified if the $GETUNIT macro instruction is coded physically within an overlay segment. Unit services 7 - 19 HASP UNIT SERVICES $FREUNIT - Release A Unit. Device Control Table (OCT) The $FREUNIT macro instruction is used to release a Device Control Table (nCT) • Format Description: [symbol] $FREUNIT {dct-addrx I (Rl)} [,OL~Y=YES] dct specifies either a pointer to a nCT or the address of a DCT to be released as follows: If "dct" is written as an address, then it represents the address of a full word which contains the address of the DCT to be released in its three low-order bytes'. This word must be located on a full-word boundary in core. If "dct" is written using register notation (either regular or special register notation), then it represents the address of the DCT to be released~ If register notation is used, the address must have been loaded into the designated register before the execution of this macro instruction. OLAY=YES must be specified if the $FREUNIT macro instruction is coded physically within an overlay segment. Caution: The specified DCT must have been obtained by a $GETUNIT macro instruction. The action of the macro instruction is unpredictable in other cases. 7 - 20 HASP Logic HASP DIRECT ACCESS SPACE SERVICES $TRACK- Acguire_A Direct~Access Track Address The $TRACK macro instruction obtains a track address on a HASP committed direct-access device and returns this track address in register Rl. Format Description: [symbol] $TRACK {allocmap-addrx I (Rl)} [,OLAY=YES] allocmap Specifies the address of a track allocation map from which the direct-access space is to be allocated. This allocation map includes a 2-word header in front of the actual allocation bit map. If register notation is used, the address must have been loaded into the designated register before the execution of this macro instruction. OLAY=YES must be specified if the $TRACK macro instruction is coded physically within an overlay segment. SPURGE - Return Direct-Access_Space The $PURGE macro instruction is used to return the direct-access space which has been allocated for a given job. Format Description: [symbol] $PURGE {bitmap-addrx I (Rl)} [,OLAY=YESl bitmap specifies the address of a track allocation map containing the direct-access space to be returned. This allocation map does not include the 2-word header used for track allocation. If register notation is used, the address must have been loaded into the designated register before the execution of this macro instruction. OLAY=YES must be specified if the $PURGE macro instruction is coded physically within an overlay segment. DASD services 7 - 21 HASP INPUT/OUTPUT SERVICES $EXCP - Execute HASP Channel Program The $EXCP macro instruction initiates HASP input/output activity. Format Description: [symbol 1 $EXCP {dct-addrx I (Rl)} [,OLAY=YES1 dct specifies either a pointer to a Device Control Table (OCT) or the address of a OCT which represents a device upon which input/output activity is to be initiated. If RdctR is written as an address, i t represents the address of a full word which contains the address of the OCT in its three low-order bytes. This word must be located on a full-word boundary. If RdctR is written using register notation (either regular or special register notation), it represents the address of the DCI'. If register notation is used, the address must have been loaded into the designated register before the execution of this macro instruction. OLAY=YES must be specified if the $EXCP macro instruction is coded physically within an overlay segment. fEXTP - Initiate Remote Terminal Input/Output 9~ration The $EXTP macro instruction initiates a remote terminal input/output action or operation. Format Description: [symbol] $EXTP type-code, {dct-addrx I (Rl)} [,{loc-addrx I (RO)}] [,OLAY=YES] type specifies the type of operation as follows: 1. OPEN - Initiate remote terminal processing. 2. GET - Receive one record from the remote terminal. 3. PUT - Send one record to the remote terminal. 4. CLOSE - Terminate remote terminal processing. dct specifies either a pointer to a OCT or the address of a OCT I/O Services 7 - 23 HASP INPUT/OUTPUT SERVICES which represents the remote terminal device. If "dct" is written as an address, it represents the address of a full word which contains the address of the remote terminal device OCT in its three low-order bytes. This word must be located on a full-word boundary in core. If "dct" is written using register notation (either regular or special register notation), it represents the address of the remote terminal device nCT. If register notation is used, the address must have been loaded into the designated register before the execution of this macro instruction. loc If "type" specifies either "OPEN" or "CLOSE", this parameter should not be specified. If "type" specifies "GET", this parameter specifies the address of an area into which the input record will be placed. The input area must be defined large enough to contain the largest record to be received. If "type" specifies "PUT", this parameter specifies the address of a CCW which contains the carriage con-trol (or stacker select), address, and length of the record to be written. If register notation is used, the appropriate address must have been loaded into the designated register before the execution of this macro instruction. OLAY=YES must be specified if the $EXTP macro instruction is coded physically within an overlay segment. $WTO_- HASP write To Operator: The $WTO macro instruction initiates output activity on one or more of the devices designated as operator consoles. Format Description - Standard Form: [symbol] $WTO {message-addrx I (R1)} , {length-value (RO)} [,JOB={YESINO}1 [,WAIT={YESINO}] [,CONVERT={YESINO}] [ ,PRI=code] 1 - 24 HASP Logic [,ROUTE=code] [,CLASS=code] HASP INPUT/OUTPUT SERVICES Format Description - Execute Form: [symbol] $~O {message-addrx I (Rl)} [,{length-value I (RO)}] , MF=(E,name) Format Description - List Form: [name] $~O [length-value,] MF=L [,JOB={YESINO}] [,WAIT={YESINO}l (, CONVERT={YESI NO}] [,ROUTE=codel (,CLASS=code1 [,PRI=codel message specifies the address of a message which is to be written on the designated console(s). If register notation is used, the address must have been loaded into the designated register before the execution of this macro instruction. length specifies the length of the above message. If register notation is used, the value must have been loaded into the low-order byte of the designated register before the execution of the macro instruction. The rest of the reg~ster must be zero unless the message is being sent to a remote terminal (see below). Note: When using the execute and list forms of the macro instruction, the length can be specified on either form but must not be specified on both. JOB specifies whether the characters wJOB nnnnW will be appended to the start of the messages as follows: 1. YES. - The job number will be appended to the start of the message. 2. NO - The job number will not be appended to the message. If this operand is omitted, JOB=YES will be assumed. Caution: Unless JOB=NO is specified, the JCT register must be loaded with the address of the Job Control Table before the execution of this macro instruction, or the job number printed will be unpredictable. WAIT specifies the action to be taken in the event that no Console Message Buffers are available as follows: I/O Services 7 - 25 Page of GY27-7255-Q Revised September 15, 1976 By TNL SN27-1S55 HASP INPUT/OUTPUT SERVICES 1. YES - Return will not be made until a Console Message Buffer has become available and the message has been queued. 2. NO - An immediate return will always be made with the condition code set as follows: a. CC=O - No Console Message Buffers were available. The message was not accepted and the macro instruction must be reissued. b. CC~O - The message was accepted. If this operand is omitted, WAIT=YES will be assumed. Note: Unless WAIT=NO is specified, the message to be issued must be constructed in a reenterable area of storage. Caution: WAIT=NO must be specified if the $WTO macro instruction is physically coded within an overlay segment. However, if the message is not accepted because no console message buffers are available, you should issue the $WAIT macro instruction with the CMB event-code before reissuing the $WTO request. CONVERT specifies the type of consoles indicated as follows: 1. YES - Logical consoles have been specified (e.g., $LOG) and these must be converted to physical consoles by the Control Service program. 2. NO - Physical consoles have been specified and no conversion is necessary. (This specification is reserved for Command Processor responses to commands) If this operand is omitted, CONVERT=YES will be assumed. ROUTE specifies the console or consoles on which the above message is to be written. rhe code consists of the absolute sum of one or more of the logical console designations in the following list: 7 - 26 HASP Logic HASP INPUT/OUTPUT SERVICES Designation Console specified $ LOG System log console(s) $~R Error console(s) $UR Unit record operations area $TP Teleprocessing operations area $TAPE Tape operations area $MAIN Chief operator's area $~L All of the above consoles $REMOTE Remote terminal console Note: If "$REMOTE" is specified, no other consoles should be specified. the register form of "length" must be specified, and the remote terminal number must be loaded into bits 16-23 of the registeL used to specify the length before the execution of the macro instruction. Bits 0-15 of this register must be zero. If no ROUTE is specified, the "$LOG" console will be assumed. Caution: The designation "$ALL" should not be used in conjunction with any other console but should be specified alone. Failure to observe this rule will give unpredictable results. CLASS specifies the class of the message as one of the following: 1. $DOMACT - The message requires immediate action and is always written. 2. $ALWAYS - The message is essential and should always be written. 3. $ACTION - The message requires eventual operator action. 4. $NORMAL - The message is considered important to normal computer operations. 5. $TRIVIA - The message is considered unimportant to normal computer operations. If no CLASS is specified, $NORMAL will be assumed. The $DOMACT specification is reserved for $WTOs issued to logical consoles. On return from $WTO processing, Rl will contain the address of the Console Message Buffer (CMS) containing the message. The CMB will be retained in the system until a corresponding $DOM is executed using the returned pointer. I/O services 7 - 27 HA.SP It-lPUT/OUTPUT SERVICES PRI specifies the priority of the message as une 1. $HI - 2. $ST - Standard priority 3. $LO - Low priority. 01: t~he following: High priority If no PRI is specified, $ST priority will be assumed. lDOM_- HASP Delete Operator Message 'l'he $DOM macro instruction releases the Console Message Buffer (Cf\lB) containing an ioonediate action message given to the Operating System via SVC35. $DOM also causes the operating System copy of the message to be deleted. Format Description: [symbol] $DOM [CMB={ (R1) I cmb-add:r:'x}] CMB specifies the address of the CMB returned by the execution of a W$WTO CLASS=$DOMACT" statement. Caution: The $DOM macro must be executed once and only once for each CMB retained in the system awaiting the execution of the macro. 1 - 28 HASP Logic HASP TIME SERVICES $TIME - Request Time Of D~ The $TIME macro instruction ootains the time of day and returns this time in register RO. The time is returned as an unsigned 32-·bit binary number in which the least significant bit has a value of 0.01 second. Format Description: [symbol] $TIME [OLAY=YESl OLAY=YES must be specified if the $TIME macro instruction is coded physically within an overlay segment. The -time returned is the time of day based on a 24-hour clock. $STIMER - Set Interval Timer The $STIMER macro instruction sets an interval into a programmed interval timer. Format Description: $STIMER {loc-addrx I [symbol] (Rl)} [,OLAY=YES] lac specifies the address of a HASP Timer Queue Element. Before this macro instruction is executed, the Timer Queue Element must be initialized as follows: 1. 2. ITlME must be initialized with the interval to be set in the following manner: a. If "x" seconds are desir:ed, the ITlME should be set to "x" b. If "y" hundredth-seconds (0.01 seconds> are desired, then ITIME should be set to the two's complement of .y" • IPOST must be initialized with the address of the Event wait Field to be posted. If register notation is used, the address must have been loaded into the designated register before the execution of this macro instruction. Refer to Section 5 under TQE for more information about the HASP Timer Queue Element. OLAY=YES must be specified if the $STIMER macro instruction is coded physically within an overlay segment. Time Services 7 - 29 HASP TIME SERVICES programming Note: An unlimited number of independent $STIMER time intervals can be active at any time provided that each has been furnished with a unique H~SP Timer Queue Element. $TTlMER - Test __ Intervol Timer The $TTIMER macro instruction obtains the time rema1n1ng in the associated time interval that was previously set with a $STlMER macro instruction. The value of the time interval remainder is returned in register RO in seconds (rounded to the nearest second). The $TTIMER macro instruction can also be used to cancel the associated time interval. Format Description: [symbol] $TTIMER {loc-addrx I (Rl)} [,CANCEL] [ ,OLAY=YES] loc specifies the address of the Timer Queue Element. If register notation is to be used, the address must have been loaded into the designated register before the execution of this macro instruction. CANCEL - specifies that the interval in effect should be cancelled. If this operand is omitted, processing continues with the unexpL.-i portion of the interval still in effect. If the interval expired before the $TTIMER macro instruction was executed, the CANCEL operand has no effect. OLAY=YES must be specified if the $TTIMER macro instruction is coded physically within an overlay segment. 7 - 30 HASP Logic HASP_OVERLAY SERVICES HASP OVERLAY PROGRAMMING RULES The follo~ing comments summarize the rules for coding and using "overlayable code" in HASP. All rules apply to use of any control sections created by use of the $OVERLAY macro, even if the code so produced is optionally made permanently resident as part of the overlay build process. HASP Overlay does not use any overlay facility defined elsewhere in OS documentation. More precise details of overlay macro syntax are given later in this section. The Overlay Build process, Overlay Service, and Overlay Roll internal logic are described in section 3. creatinqoverlay_Control Sections The beginning of a portion of HASP executable coding or tables to be made overlay able is indicated by the $OVERLAY macro. By convention, the name field begins with "HASp· and continues with up to four more characters. The fifth character (first after "HASp·) usually indicates the processor of which the overlayable code is a part: e.g., R for read, X for execution,P for print/punch, etc. A specific example is ·HASPXJll·, the name of the first of three overlays used by the HASP Execution Processor for job initiation actions. The name coded with $OVERLAY will be defined at the first location coded by the programmer after the $OVERLAY and will be used to derive a name for the control section created. The operands of $OVERLAY specify the priority for use of overlay resources and, in conjunction with the HASPGEN parameter &OLAYLEV, whether the code created is to be actually disk or main storage resident during HASP operation. The $OVERLAY macro is a functional replacement for CSECT, USING, and BALR or L when creating a HASP overlayable control section. $ OVERLAY creates an actual assembly control section and indicates local addressability in register BASE3. Overlay Service and Roll functions ensure that the proper base value is loaded into BASE3 when an overlay section is being used. An overlay control section's coding may be terminated and all effects of a previous $OVERLAY cancelled in one of two ways. Another overlay may be begun by a new $OVERLAY "macro. Nonoverlay coding may be resumed by DROPing register BASE3 and reestablishing an appropriate CSECT. If i t is desired to add more coding to a previously terminated overlay section, the actions in the folloJing example must be performed. &xyz is a properly declared variable symbol. HASPabcd is the overlay name chosen by the programmer. Other symbols are defined in standard HASP assemblies. The second statement must be placed after the $OVERLAY defining the overlay section to be resumed, before another $OVERLAY is used. Overlay Services 7 - 31 HASP. OVERLAY SERVICES HASPabcd &xyz $OVEkLAY 12,0 SETC '&OSECT' &xyz CSECT USING (original definition) (later additional code} HASPabcd-OACEPROG+BUFDSECT,BASE3 Calling. Overlay Routines The three executable macros $LINK, $XCTL, and $LOAD cause an overlay routine to be made available for use in addressable storage. The single operand of each of these macros gives the name of the overlay to be used, either directly or by providing (in register form) the address of a $OCON macro which gives the name. The name referenced is that used with a $OVERLAY macro to create the overlay routine.. The overlay control section ($OVERLAY and following code) may be either in the same or in a different HASP assembly as a macro which calls it. The $LINK and $LOAD macros must be physically placed in nonoverlay CSECTs and executed only when no other overlay routine is being used, i.e., nested calling of overlays is not defined. With $LINK, program control is eventually passed to the first instruction after $OVERLAY of the called routine. The address of the caller's next instruction is saved for later return. $LOAD returns control to the next instruction after $LOAD when the routine is available in storage. $XCTL relinquishes use of an overlay routine, previously called by $LINK or' $XCTL, and calls a new overlay routine which is entered as if called by $LINK. The return address saved by the original $LINK is not altered. $XC'IL must always be executed when an overlay is in use, but may physically be in an overlay routine or in nonoverlay coding, subject to the requirements given later under "Coding While Using Overlay Routines." $RETURN and $DELETE both relinquish use of an overlay routine, which must be in use when the'y are executed. ThesE' macros have no operands; the routine released is t:1e only one in use at the time. $RETURN causes control to pass to the next instruction after the $LINK previously executed by the processor from nonoverlay code. $RETURN, like $XCTL, may physically reside anywhere. $DELETE must physically reside in nonoverlay code and is valid only after a routine was previously called by $ LOAD. Control continues following $DELETE, after use of the overlay routine has been released. Overlay routines may be called only by HASP processors operating under the primary HASP TeB, HASP Dispatcher, and PCE control. They may not be called from HASP subtasks. Overlay routines may not be called in exits from the Asynchronous Input/Output Processor. Coding While Using Overlay Routines 7 - 32 HASP Logic HASP OVERLAY SERVICES On entry to an executable overlay by $LINK or $XCTL, or after loading an overlay with $LO~D, the caller's registers RO-R7 and R9-R13 are preserved. However, registers BASE3 (same as R8 or WG in unmodified HASP), LINK, R15, and the condition code are destroyed and are not laLer restored. While an overlay routine is being used (after the executi0~ of $LINK or $LOAD, but before the execution of $RETURN or $DELETB)~ th~ program must not alter the value of register B~SE3. Coding in an overlay routine is "covered" by local address ability provided by $OVERLAY. Coding physically outside an overlay but referring to it (usual case after a $LOAD) must be covered by a USING like that in the example under ·Creating Overlay Control Sections." Other addressability (e.g., BASEl, BASE2) remains in effect if not dropped and may be used. Program control may be transferred out of or into an overlay routine and its storage may be retrieved, as long as overlay control of that routine is in effect (has not been released by $RETURN, $DELETE, or $XCTL to a new routine> and proper addressability is maintained. References to locations in an overlay routine from physically outside the overlay at any other time are illegal. Relocatable valued A- or V-type constants must not be physically coded in overlay routines. Such constants may be coded in nonoverlay CSECTs and referenced from overlay routines. Relocatable A- or V-type literals may be coded if the literal pool containing them is not physically in an overlay routine. An A or V constant or literal containing an "unpaired" (see Assembly Language SRL) reference to a symbol defined in an overlay routine is always illegal, regardless of location. When use of an overlay routine is released by $RETURN or $DELETE, only the LINK and BASE3 registers are destroyed. ~ll other registers and t.he condition code are preserved as set prior to the execution of these macros. Total size of all coding in an overlay routine must not exceed the value of the internal assembly variable 'OLAYSIZ, currently set at 1280 bytes in unmodified HASP. An error message will be produced during the Overlay Build process for each routine which violates this restriction. Routines which are too long because of modification, etc., may be temporarily tested by forcing them to be resident in the HASP load module, as described in the ~ASP System Programmer1s Guide. such routines should, of course, be reduced to within the maximum size by recoding or splitting into multiple overlays. Overlay Location Independent Coding Whenever a HASP processor which is using an overlay routine executes $WAIT, regardless of the physical location of the $WAIT, the Overlay Roll Processor may preempt the overlay area for other use. When control is returned to the processor following the $WAIT, the overlay routine may have been reread from direct access, destroying all selfmodification or temporary storage in the overlay, and may be in a Overlay Services 7 - 33 HASi' OVERLAY SERVICES different overlay area, makill:j all address values relative to the. overlay routine's location iuvalid (in registers or elsewhere). The first effect above (destruction of temporary storage) is similar to the effect on single (nonreentrant) temporary storage in nonoverlay coding used by multiple processors when $WAIT is executed. The effect on overlay storage may take place when only one peE is using an overlay routine. Reentrant temporary storage (e.g., in a PCE work area) or reconstruction from known values after $WAIT will avoid errors due to this possible "refreshing" of overlay routines. The second effect (changing overlay location) is, or course, peculiar to use of overlay routines. System overlay Service and Roll logic automatically makes proper adjustments to registers BASE3 (overlay routine base value) and &15 ($WAIT reentry address> if the $WAIT is physically in the overlay routine. Other address values relative to an overlay routine are usually created in registers by use of instructions such as LA (with BASE3 as base), BAL, or BALR (the last two if physically in an overlay routine). These registers should be made relative prior to $WAIT by "SLR n,BASE3" instruction(s) and made absolute after $wAIT by "ALR n,BASE3" instruction(s). Equivalent techniques may be created for other coding situations. Certain HASP macros which call services subroutines represent a "hidden" possible $~AIT. They must be treated as equivalent to $WAIT in all cases previously described. specifically, any macro for which the keyword parameter OLAY=YES is defined (see other appendixes for macro descriptions) represents a hidden $WAIT, regardless of physical location. The OLAY=YES is coded only if the macro physically exists in an overlay routine. Macro expansion and service subroutine exit coding handle possible adjustment of the LINK register. The services subroutines assume that all parameter address values (in RO, R1, or R15) are not relative to an overlay routine. Other addresses relative to an overlay routine must be adjusted before and after the service macro call by the caller. The $WTO macro is a special case. It represents a hidden $WAI'l' unless WAIT=NO is coded. If coded pllysically in an overlay routine, WAIT=NO must be coded. It may be coded physically outside an overlay routine without WAIT=NO, but then registers must be treated as for macros which have OLAY=YES defined. HASP OVERLAY MACROS $OVERLAY - Define Overlay Segment The $OVERLAY macro instruction defines the instructions which follow it as an overlay segment and defines the name, priority, and residence susceptibility factor of this overlay segment. Format Description: 7 - 34 HASP Logic HASP. OVERLAY SERVICES HASPname-symbol $ OVERLAY prio-value [,resfact-value] HASP name specifies the name to be assigned to the overlay segment. The first four characters must be the characters "HASP". The last four characters can be any unique combination of alphameric characters. prio specifies the priority of the overlay segment as follows: 1. 0 - Lowest priority 2. iLOW - Low priority 3. iMED - Medium priority 4. iHIGH - High priority. res fact specifies the residence susceptibility factor of the overlay segment as follows: 1. o - Never resident 2. iLOW - Resident only if iOLAYLEV<4 3. iMED - Resident only if iOLAYLEV<8 4. iHIGH - Resident only if iOLAYLEV<12. If this parameter is omitted. a resident factor of o will be used. Note: This parameter may be overridden at the time that the overlay library is built. $OCON ~ Define Overlay Constant The $OCON macro instruction defines an overlay constant (OCON) for use in conjunction with other overlay macro-instructions. Format Description: [symbol] $OCON HASPname-symbol HASP name specifies the name of an overlay segment. $LINK -_Link To An Overlay segment The $LINK macro instruction is used to link to an overlay segment from a nonoverlay segment. Overlay Services 7 - 35 HASP OVERLAY SERVICES Format Description: [symbol] $LINK {H~SPname-symbol I (register)} HASP name specifies the name of the overlay segment to which control is to be transferred. If register notation is used, the register specified must be loaded with the address of an overlay constant (OCON) which represents the overlay segment to which control is to be transferred. $XCTL - Transfer Control To Another Overlay Se~ent The $XCTL macro instruction is used to transfer control from one overlay segment to another. Format Description: [symbol] $XCTL {HASPname-symbol I (register)} HASP name specifies the name of the overlay segment to which control is to be transferred. If register notation is used, the register specified must be loaded with the address of an overlay constant (aeON) which represents the overlay segment to which control is to be transferred. $RETURN - Return_From An Overlay Segment_ The $RETURN macro instruction is used to return control from an overlay segment to a nonoverlay segment. Format Description: [symbol] $RETURN $LOAD - Load An OVerla~~~nt The $LOAD macro instruction is used to load an overlay segment from a nonoverlay segment. The address of the overlay area into which the overlay segment has been loaded is returned in register BASE3. Format Description: [symbol] $LOAD {HASPname-symbol I (register)} HASPname specifies the name of the overlay segment to be loaded. 1 - 36 HASP Logic HASP OVERLAY SERVICES If register notation is used, the register specified must be loaded with the address of an overlay constant (OCON) which represents the overlay segment to be loaded. $DELETE - Delete A Loaded Overlay Segment The $DELETE macro instruction is used to delete an overlay segment which has been loaded with a $LOAD macro instruction. Format Description: [symbol] $DELETE Overlay Services 7 - 37 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 HASP. SYNCHRONIZATION SERVICES ,ACTIVE - Specify Processor Is Active The $ACTIVE macro instruction indicates to the HASP Dispatcher that the associated processor is processing a job or task. Format Description: [symbol] $ACTIVE [R=register] R specifies the register which is to be used by the $ACTIVE macro instruction. If R is omitted, register R1 will be used. ,DORMANT - Specify Processor Is Inactive. The $DORMANT macro instruction, indicates to the HASP Dispatcher that the associated processor has completed the processing of a job or task and is now going into a -dormant- state. F~rmat Description: [symbol] $ DORMANT [R=register] R specifies the register which is to be used by the $DORMANT macro instruction. If R is omitted, register R1 will be used. Caution: The $DORMANT macro instruction should never be executed unless a corresponding $ACTIVE has been executed for the same processor. ,WAIT -Wait For A HASP Event The $WAIT macro instruction places the associated processor in a HASP wait condition and specifies the event for which the processor is waiting in the Processor Control Element Event Wait Field. Format Description: [symbol) $WAIT event-code [,ENABLE] [,OLAY=YES] event specifies the event upon which the processor is waiting as one of the following: 1. BUF - waiting for a HASP Buffer. 2. TRAK - waiting for a direct-access track address. Synchronization Services 7 - 39 Page of GY27-7255-O Revised May 28, 1975 By TNL SN25-0122 HASP SYNCHRONIZATION SERVICES 3. JOB - waiting for a job. 4. UNIT - waiting for a Device Control Table. 5. CKPT - waiting for the completion of a HASP checkpoint. 6. CMB - waiting for a Console Message Buffer. 1. SMF' - waiting for an SMF' Buffer. 8. JOT - waiting for Job Output Table service. 9. OPER - waiting for an operator response. 10. 10 - waiting for the completion of an input/output operation. 11. WORK - waiting to be redirected. 12. HOLD - waiting for a $5 operator command. 13. DDB - waiting for a Data Definition Table. ENABLE specifies that the system mask in the PSW should be set to all ones prior to returning to the HASP Dispatcher. OLAY=YES need not be specified. ,POST - Post A HASP Event.Complete The $POST macro instruction indicates a HASP event is complete by turning off the specified bit in the indicated Event Wait Field. Format Description: (symbol] $POST ewf-relexp,event-code ewf specifies the address of the Event Wait Field which is to be posted. This operand can also be written in the form 0(8). event specifies the event which is to be posted as one of the following: 7 - 40 1. BUF - a HASP Buffer bas been returned. 2. TRAK - direct-access space has been released. 3. JOB - a HASP Job Queue Element has changed status. 4. UNIT - a Device Control Table has been released. HASP Logic Page of GY27-7255-O Revised May 28, 1975 By TNL SN25-0122 H~SP SYNCHRONIZATION SERVICES 5. CKPT - a HASP checkpoint has completed. 6. CMB - a Console Message Buffer has been returned. 1. SMF - an SMF Buffer has been returned. 8. JOT - the HASP Job Output Table has changed status. 9. OPER - an operator has responded. an input/output operation has completed. 10. 10 - 11. WORK - a processor has been redirected. 12. HOLD - an operator has entered a $S command. 13. DDS - a Data Definition Table has been released. Caution: The $POST macro instruction should not be executed unless addressability to the HASP Communication Table (HCT) has been established. 'ENABLE - Enable Interr~~§ The $ENABLE macro instruction causes the specified interrupts to be enabled. Format Description: [symbol] $ENABLE mask-code [,OLAY=YES] mask specifies the interrupts to be enabled as follows: ALL - Enable all interrupts. OLAY=YES need not be specified. ,DISABLE - Disable Interrupts The $DISABLE macro instruction causes the specified interrupts to be disabled. Format Description: [symbol] $DISABLE mask-code [,OLAY=YES] mask specifies the interrupts to be disabled as follows: Synchronization Services 1 - 41 Page of GY27 -7255-0 Revised May 28, 1975 By TNL SN25-0122 HASP SYNCHRONIZATION SERVICES 1. ALL - Disable all interrupts. 2. INT - Disable external interrupts. OLAY=YES need not be specified. 1 - 42 HASP Logic HASP SYSTEM MANAGMENT FACILITIES (SMF) SERVICES $GETSMFB - Acquire A HASP SMF_Buffer From The HASP SMF Buffer Pool The $GETSMFB macro instruction obtains a buffer from the HASP SMF buffer pool and returns the address of this buffer in register Rl or returns a zero in register Rl if no buffers were available and WAIT=NO was specified in the macro. Format Description: [symbol] $GE~SMFB [WAIT={YESINO}] [, OLAY= {YES I NO}] WAIT specifies the action to be taken in the event no H~SP SMF buffers are available as follows: 1. YES - Control will not be returned to the caller until a HASP SMF buffer has become available. 2. NO - An immediate return will be made. If no buffers are available, register Rl will contain a zero upon return to the calling routine. OLAY=YES must be specified if the $GETSMFB macro instruction is coded physically within an overlay segment. SQUESMFB - Queue A HASP SMF Buffer On A Busy Queue The $QUESMFB macro instruction places the HASP SMF buffer address, pointed to by register Rl, on a busy queue and POSTs HASPACCT. Format Description: [symbol] $QUESMFB [OLAY={YESINO}] OLAY=YES must be specified if the $QUESMFB macro instruction is coded physically within an overlay segment. Caution: The HASP SMF Services should not be used if the HASPGEN parameter iNUMSMFB is set to less than 2. SMF Services 7 - 43 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 , i 1 1 1 1 1 ~ , 1 1 1 1 1 1 1 1 1 \ 1 1 1 1 1 1 1 1 , 1 1 1 1 1 \ ;1 1 1 1 1 1 1 1 1 , 1 1 1 1 1 , 1, 1 1 1 1 1 1 , 1 1 1 1 1 1 1 , HASP DEBUG SERVICES $TRACE - ~ake EntrY-ln The HASP Trace Table The $TRACE macro. instruction makes an entry in the HASP Trace Table if the &TRACE option is set nonzero. If the &TRACE option is set to zero, this macro instruction does not generate any code. Format Description: [symbol] $TRACE Programming Note: The $TRACE macro expansion and associated Control Service Program preserve all registers and the condition code. For more information concerning the HASP Trace Table, refer to section 3 under Trace Effector. $COUNT - Count Selected Occurrences The $COUNT macro instruction increments a counter every time the macro instruction is executed and can be used to determine the number of times a particular event occurs or a particular section of code is entered. The counter is a halfword (modulo 65,536) which is located 14 bytes deep in the macro expansion (symbol+14'. Format Description: [symbol] $COUNT [R=register] R specifies a register to be used in performing the counting operation. If this parameter is omitted, register ftR1ft will be used. Debug services 7 - 45 HASP ERROR SERVICES $ERROR - Indicate Catastrophic Error The $ERROR macro instruction is used to indicate that a catastrophic error has occurred, one that prevents any further processing by HASP. The macro instruction causes the following message to be printed out on the console using an ordinary OS WTO: $ HASP SYSTEM CATASTROPHIC ERROR. CODE = symbol HASP then executes a l-instruction loop. Format Description: symbol $ ERROR symbol consists of a 4-character symbol indicating the type of error which occurred. This operand usually consists of a letter, two digits, and trailing blanks, and will be printed as the error code in the message which is printed. Note:. This operand must be present. $DISTERR - Indicate. Disastrous Error The $DISTERR macro instruction is used to indicate that a' disastrous error has occurred. The macro instruction causes the following message to be printed out on the $ERR and $LOG consoles: DISASTROUS ERROR - COLD START SYSTEM ASAP Format Description: [symbol] $DISTERR [OLAY=YES] OLAY=YES must be specified if the $DISTERR macro instruction is coded physically within an overlay segment. $IOERROR - Log Input/Output Error The $IOERROR macro instruction is used to log an input/output error on the operator's console. Format Description: [symbol] $ IOERROR {buffer-addrx I (Rl)} [,OLAY=YES] buffer specifies either a pointer to a HASP buffer or the address of a Error Services 7 - 41 HASP ERROR SERVICES buffer which has been associated with a HASP input/output erro~. If "buffer" is written as an address, it represents the address of a full word which contains the address of the buffer in error in its three low-order bytes. If "buffer" is written using register notation (either regular or special register notation), i t represents the address of the buffer in error. If register notation is used, the address must have been loaded into the designated register before the execution of the macro instruction. OLAY=YES must be specified if the $IOERROR macro instruction is coded physically within an overlay segment. 1 - 48 HASP Logic HASP CODING AID SERVICES $GLOBAL - Define GLOBAL Symbols The $GLOBAL argument on a COpy instruction causes all HASP GLOBAL Symbols to be defined. This COpy instruction must be given before the COpy $HASPGEN instruction described below to function correctly. Format Description: COpy $GLOBAL $BASPGEN - Define HASPGEN_Parameters The $HASPGEN argument on a COpy instruction causes all general HASPGEN parameter values to be defined. This COpy instruction may be placed anywhere in an assembly but must follow the COpy $GLOBAL instruction. Format Description: COpy $HASPGEN NULL - Define A Symbol The NULL macro instruction defines the symbol in the name field, if any, as having the current value of the location counter rounded up, if necessary, to a half-word boundary. Format Description: [symbol] NULL $HASPCB - Generate HASP Control Blocks The $HASPCB macro instruction causes the specified HASP Control Block definitions and, optionally, documentation for those control blocks to be generated. Format Description: $ HAS PCB cb1-code [,cb2-codel ••• [,cb32-codel [,DOC=YES] cbl-cb24 specifies the control block definitions to be generated as follows: 1. HCT - HASP Communication Table DSECT (or CSECT) 2. PCE - HASP Processor Control Element DSECT 3. BUFFER - HASP Buffer DSECT 4. CMB - HASP Console Message Buffer DSECT Coding ~id Services 7 - 49 HASP CODING AID SERVICES 1 - 5. SMF - HASP SMF Buffer DSECT 6. DCT - HASP Device Control Table DSECT 1. JQE - HASP Job Queue Element Definitions 8. JIT - HASP Job Information Table Definitions 9. JCT - HASP Job Control Table DSECT 10. IOT - HASP Input/Output Table DSECT 11 • TED - HASP Track Extent Data Table DSECT 12. TQE - HASP Timer Queue Element Definitions 13. OTB - HASP Overlay Table DSECT 14. DDT - HASP Data Definition Table DSECT 15. OCR - HASP OUtput Control Record DSECT 16. PDDB - 11. PIT - HASP Partition Information Table Definitions 18. JOE - HASP Job Output Element DSECT 19. JOT - HASP Job Output Table DSECT 20. PRC - HASP Print Checkpoint Element Definitions 21. MSA - HASP Message Allocation Control Block DSECT 22. CVT - OS Communication Vector Table DSECT 23. TCB - OS Task Control Block DSECT 24. RB - 25. JSCD - 26. DCB - OS Data Control Block DSECT 27. DEB - 28. UCD - OS Unit Control Block DSECT 29. RDRWORK - HASP Input Processor PCE Work Area DSECT 30. XEQWORK - HASP Execution Processor PCE Work Area DSECT 31. OUTWORK - 50 HASP Peripheral Data Definition Block DSECT OS Request Block DSECT OS Job Step Control Block DSECT OS Data Extent Block DSECT HASP Logic HASP Output Processor PCE Work Area DSECT Hl1SP CODING AID SERVICES 32. PPPWORK - HASP Print/Punch Processor PCE Work Area DSECT These arguments can be specified in any combination with the following exceptions: 1. If JCT or lOT is specified, BUFFER must be specified as a prior argument. 2. If JOT is specified, JOE must be specified as a prior argument. 3. If RDRWORK, XEQWORK, OUTWORK, or PPPWORK is specified, PCE must be specified as a prior argument. 4. If OUTWORK is specified, JOE must be specified as a prior argument. 5. If PPPWORK is specified, JCT and BUFFER must be specified as prior arguments. DOC=YES specifies that documentation of the control blocks is desired. $XXC - Variable Core-To-Cbre Operation The $XXC macro instruction generates a variable number of core-to-core operations such that there is effectively no restriction on the length of such an operation. The $XXC is especially useful when the length of a core-to-core operation is dependent upon the value of· an assembly parameter which may cause the number of operations needed to vary. Format Description: [symbol] $XXC op-code,to-relexp,'from-relexp (,length-integer] op specifies the core-to-core operation as one of the following: 1. NC - AND 2. XC - 3. MVC - Move 4. MVN- Move Numerics 5. MVZ 6. oc- 7. TR - Translate Exclusive OR - Move Zones OR Coding Aid Services 7 - 51 HASP CODING AID SERVICES to specifies the address of the first field. This operand may optionally be written as two absolute expressions separated by a comma and enclosed in parentheses. The first expression will be interpreted as a displacement and the second as a base register. from specifies the address of the second field. This operand may optionally be written as two absolute expressions separated by a comma and enclosed in parentheses. The first expression will be interpreted as a displacement and the second as a base register .. length specifies the total number of bytes in the field. If this operand is omitted, the length attribute of the first field will be used. $PATCHSP - Generate Patch_Space The $PATCHSP macro instruction causes a specified number of bytes of patch space to be generated. This patch space will be divided into halfwords and listed in the assembly in such a way that both the assembly location (for REPing and SUPERZAPing) and the base displacement (in the form BDDD) will be printed for each halfword. Format Description: [symbol] $PATCHSP length-number length specifies t.he length of the patch space in hytes. Caution: Local addressability is required for this macro instruction to assemble correctly. $DLENGTH - Compute Decimal Length The $DLENGTH macro instruction causes the length of a CSECT (or DSECT) to be computed and that length to be printed in decimal. Format Description: symbol $DLENGTH [HEADER=character] symbol specifies a name to which the decimal length of the CSECT (or DSECT) 7 - 52 HASP Logic HASP CODING AID SERVICES will be assigned. This must be unique for each use of the $DLENGTH macro instruction within a given assembly. HEADER specifies a 1-character header which will ensure unique internallygenerated symbols. This must be specified differently for each use of the $DLENGTH macro instruction within a given assembly. If this operand is omitted, the character "L" will be used. $RTAMDEF - Remote Terminal Access Method Definitions The $RTAMDEF argument on a COpy instruction causes certain Remote Terminal Access Method symbols to be defined. Format Description: COpy $RTAMDEF $FCB - Define 3211 Forms Control Buffer Load The $FCB macro instruction causes the creation of an overlay CSECT containing a forms control buffer load for the 3211. It may be used in CSECT HASPPRPU to create a ne~ FCB load or, in a stand-alone assembly to be included later in HASP via the Overlay Build process, to replace an existing FCB load. Format Description: FCBx $~B inch,page,chan-line[,line ••• l [,chan-linel[,line ••• l ••• ,[INDEx=valuel x specifies the 1- to 4-character ID by which the FCB load will be referenced by the operator, using the command $TPRTn,C=x and by the programmer using JCL parameters. The 10 must be alphanumeric and cannot be "1" or "V". inch specifies lines per inch. It must be 6 or 8. page specifies lines per page. It must be 180 or less. chan specifies carriage channel number. It must be greater than 0, not greater than 12, and followed by a hyphen. line specifies line number at which the carriage channel punch is to appear. It must not be greater than lines per page. INDEX specifies a physical print position (1-31) which will be defined as a logical print position 1 for program output. If omitted, a value of 1 is assumed. Coding Aid Services 7 - 53 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Page of GY27-7255-0 Revised May 28, 1975 By TNL SN25-0122 JOB OUTPUT SERVICES $# ADD - Add a Work/Characteristics JOE Pair to the JOT· The $#ADD macro instruction adds a WORK JOE to the specified JOT class queue and conditionally adds the characteristics JOE to the characteristics queue. Format Description: [symbol] $#ADD {WORK=addrx [,CLAS=addrx] I (RO)}, {CHAR=addrx (RI)} [,OLAY={YESINO}] WORK specifies the address of a prototype work JOE which is to be added to the JOT. CHAR specifies the address of a prototype characteristics JOE which is to be merged into the characteristics queue. CLAS specifies the address of a byte containing one of the values A-Z, 0-9 representing the class queue to which the work JOE is to be added. CLAS can be omitted only if WORK=(RO) and the high order byte of (RO) contains the class queue value. OLAY=YES must be specified if the $# macro instruction is coded physically within an overlay segment. NOTE: The condition code upon exit from the $#ADD macro instruction is set to reflect the status of the request. cc=O cc~O the service was successfully performed. the JOT is full - request must be retried later. $#REM - Remove a Work/Characteristics JOE from the JOT The $#REM macro instruction is used to remove a work and characteristics JOE pair from the JOT after the output requirement they represent has been satisfied. Format Description: [symbol] $#REM {WORK=addrx I (RI)} [,OLAY={YESINO}] Job Output Services 7 - 55 Page of GY27-7255-O Revised May 28, 1975 By TNL SN25-0122 JOB OUTPUT SERVICES WORK specifies the address of a work JOE which is to be returned to the queue of free JOEs in the JOT. If the related characteristics JOE is not being shared by another work JOE it is also returned to the free queue. The related checkpoint JOE is also freed. OLAY=YES must be specified if the $#REM macro instruction is coded physically within an overlay segment. NOTE: The related job will be purged from the system if all of its output requirements are removed and its current queue position is $HARDCPY. $#GET - Search the JOT Class Queues for an output Item which Matches the Requesting Specification The $#GET macro instruction is used by the Print/Punch Processors to search the JOT for output work. If work is found a checkpoint JOE is assigned to support warm start. Format Description: [symbol] $#GET {WTRIO=addrx I (RO)} {OCT=addrx [,HAVE={YESINO}] [,OLAY={YESINO}] I (RI)} WTRID specifies a special SYSOUT writer. DCT specifies the address of the JES2 Device Control Table for the requesting processor. The device setup fields in the OCT are used in the process of selecting work. The route code field of the DCT determines which work items are available for selection. HAVE=NO specifies that if work is found it is NOT to be assigned to the requester. OLAY=YES must be specified if the $#GET macro instruction is coded physically within an overlay segment. NOTE: The condition code upon exit from the $#GET macro instruction is set to reflect the status of the request. cc=O cc~O 7 - 56 no work which matches the request is currently available. work is available and the following registers have been set: HASP Logic Page of GY27-7255-0 Revised May 28, 1975 By TNL SN25-0122 JOB OUTPUT SERVICES (RO) address of characteristics JOE (RI) address of the related JOB Queue Element (RI5) address of the selected WORK JOE (the high order byte of Rl5 contains the class ID). $#PUT - Return an Unfinished Work Item to the JOT for Later Processing The $#PUT macro instruction allows a processor to return a work item to the JOT for later processing. Optionally, the 'status of the work item is maintained for warm start of the system or restart of the work. Format Description: [symbol] $#PUT {WORK=addrx [,OLAY={YES INo}] (Rl)} [,PRC=addrx I (RO)] WORK specifies the address of a work JOE which is to be returned to the JOT class queues for future selection. PRC specifies the address of a checkpoint JOE if the current status of the work item is to be remembered. If PRC= is not specified, the work item is reset to reflect its initial entry status. OLAY=YES must be specified if the $#PUT macro instruction is coded physically within an overlay segment. $#CAN - Cancel All Work Items Not Currently Being Processed for a Specific JOB The $#CAN macro instruction is used to remove from the JOT all available work items for a job. Any work items thus removed will not be processed by any output processor. Format Description: [symbol] $ # CAN {JQE=addrx (RI)} [,OLAY={YEsINo}] JQE specifies the address of the JOB Queue Element for which all JOT entries are to be purged. Job Output Services 7 - 57 Pa~e of GY27-7255-0 Revised May 28. 1975 By TNL SN25-0122 JOB OUTPUT SERVICES OLAY=YES must be specified if the $#CAN macro instruction is coded physically within an overlay segment.NOTE: The specified job will be purged from the system if all of its output requirements are removed and its current queue position is $HARDCPY. 7 - 58 HASP Logic APPENDIX B MULTI-LEAVING Appendix B 7 - 59 7 - 60 HASP Logic MULTI-LEAVING Page of GY27-7255-0 Revised May 28, 1975 By TNL SN25-0122 "MULTI-LEAVING" is a term which describes a computer-to-computer communication technique developed for use by HASP. In a gross sense, MULTI-LEAVING can be defined as the fully synchronized, pseudosimultaneous, bi-directional transmission of variable number 'of data streams between two or more computers utilizing binary synchronous communications facilities. The following section describes, in general terms, the basic structure of MULTI-LEAVING. MULTI-LEAVING Philosophy The basic element for MULTI-LEAVING transmission is the 'character string. One or more character strings are formed from the smallest external element of transmission - the physical record. These physical records are input to MULTI-LEAVING and may be any of the classic record types (card images, printed lines, tape records, etc). For efficiency in transmission, each of these data records is reduced to a series of character strings of two basic types. These two types are: (1) a variable length nonidentical series of characters and, (2) a variable number of identical characters. Because of the high frequency occurrence of blank characters, a special case is made in 2 (noted previously) when the duplicate character is a blank. An eight bit control field, termed a String Control Byte (SCB) , precedes each character string to identify the type and length of the string. Thus, a string as in 1 (noted previously) is represented by an SCB followed by the nonduplicate characters. A string of consecutive, duplicate, nonblank characters can be represented by an SCB and a single character (the SCB indicates the duplication count and the character following indicates the character to be duplicated). In the case of an all blank character string, only an SCB is required to indicate both the type and number of blank characters. A data record to be transmitted is, therefore, segmented into the optimum number of character strings (to take full advantage of the identical character compression) by the transmitting program. A special SCB is utilized to indicate the grouping of character strings which compose the original physical record. The receiving program can then reconstruct the original record for processing. In order to allow multiple physical records of various types to be grouped together in a single transmission block, an additional eight bit control field precedes the group of character strings representing the original physical record. This field, the Record Control Byte (RCB) , identifies the general type and function of the physical record (input stream, print stream, data set, etc.). A particular RCB type has been designated to allow the passage of control information between the various systems. Also, to provide for simultaneous transmission of similar functions (i.e., multiple input streams, etc.) a stream identification code is included in the RCB. A second 8-bit control field, the Sub-Record Control B~te (SRCB) is also included immediately following the RCB. This field ~s utilized to supply additional information concerning the record to the receiving program. For example, in the transmission of data to be printed, the SRCB can be utilized for carriage control information. MULTI-LEAVING 7 - 61 Page of GY27-7255-0 Revised May 28, 1975 By TNL SN25-0122 MULTI-LEAVING For actual MULTI-LEAVING transmission, a variable number of records may be combined into a variable block size, as indicated previously (i.e., RCB,SRCB,SCBl,SCB2, ••• SCBn,RCB,SRCB,SCBl, .•• etc.). The MULTI-LEAVING design provides for two (or more) computers to exchange transmission blocks, containing multiple data streams as described above, in an interleaved fashion. To allow optimum use of this capability, however, a system must have the capability to control the flow of a particular data stream while continuing normal transmission of all others. This requirement becomes obvious if one considers the case of the simultaneous transmission of two data streams to a system for immediate transcription to physical I/O devices of different speeds (such as two print streams). To provide for the metering of the flow of individual data streams, a Function Control Sequence (FCS) is added to each transmission block. The FCS is a sequence of bits, each of which represent a particular transmission stream. The receiver of several data streams can temporarily stop the transmission of a particular stream by setting the corresponding FCS bit off in the next transmission to the sender of that stream. The stream can subsequently be resumed by setting the bit on. Finally, for error detection and correction purposes, a Block Control Byte (BCB), is added as the first character of each block transmitted. The BCB, in addition to control information, contains a modulo 16 block sequence count. This count is maintained and verified by both the sending and receiving systems to exercise a positive control over lost or duplicated transmission blocks. In addition to the normal binary synchronous text control characters (STX, ETB, etc.), MULTI-LEAVING utilizes two of the BSC control characters - ACKO and NAK. ACKO is utilized as a "filler" by all systems to maintain communications when data is not available for transmission. NAK is used as the only negative response and indicates that the previous transmission was not successfully received. The following figure indicates the format of a typical MULTI-LEAVING transmission block. 7 - 62 HASP Logic Page of GY27-7255-0 Revised May 28, 1975 By TNL SN25-0122 MULTI-LEAVING bytes DLE STX BCB PCS FCS RCB SRCB SCB BSC Leader (SOH if no transparency feature) BSC START-OF-TEXT Block Control Byte Function Control Sequence Function Control Sequence Record Control Byte for record 1 Sub-Record Control Byte for record 1 String Control Byte for record 1 DATA Character String SCB String Control Byte for record 1 DATA Character String SCB RCB SRCB SCB Terminating SCB for record 1 RCB for record 2 SRCB for record 2 SCB for record 2 DATA Character String SCB RCB DLE ETB Terminating SCB for record 2 Transmission Block Terminator BSC Leader - (SYN if no transparency feature) BSC Ending Sequence Typical MULTI-LEAVING Transmission MULTI-LEAVING Control Specification The following pages indicate the bit-by-bit definitions of the various MULTI-LEAVING control fields and notes concerning their utilization. String Control Byte (SCB) o K L J J J J J o Usage: 7 Control field for data character strings MULTI-LEAVING 7 - 63 Page of GY27-7255-0 Revised May 28. 1975 By TNL SN25-O 122 Bit Meanings: MULTI-LEAVING o = 0 = End of record (K L J J J J J Other SCBs o = 1 = All K K = 0) = Duplicate Character String = 0 = Duplicate Character is blank = 1 = Duplicate Character is nonblank (and follows SCB) JJJJJ = Duplication count = 1 = Nonduplicate Character String LJJJJJ = Character String Length = 0 L L NOTES: 1. If KLJJJJJ = 0 and 0 = 1, SCB indicates record is continued in next transmission block. 2. Count units are normally 1 but may be in any other units. The units utilized may be indicated as function control sign-on or dynamically in the SRCB. Record Control Byte (RCB) Usage: o I I ITT T T o 7 To identify each record type within a transmission block Bit Meanings: 0 = 0 = End of transmission block o = 1 = All others RCBs III = Stream identifier - used to (I I ITT T T = 0) identify' streams of multiple identical functions (i.e., multiple print streams to a multiple printer terminal, etc.) III = Control = = = 000 001 010 = = = 011 = = = = = 7 - 64 HASP Logic 100 101 110 III = = = = = information if TTTT 0 (control record) for future expansion Request to initiate a function transmission (Prototype RCB for function in SRCB) Permission to initiate a function transmission (RCB for function contained in SRCB). Reserved Reserved Available for local modification Available for local modification General Control Record (type indicated in SRCB) = Reserved Page of GY27-7255-0 Revised May 28, J 975 By TNL SN25-OJ22 MULTI-LEAVING = = = = = = = = = = = TTTT Record 0000 = 0001 = 0010 = 0011 = 0100 = 0101 = 0110 = 0111 = 1000 1101 type identifier Control record Operator message display request Operator command Normal input record Print record Punch record Data set record Terminal message routing request 1100 = Reserved for future expansion 1111 = Available for local modifications Sub-Record Control Byte (SRCB) Usage: o S S S S S S S a 7 To provide supplemental information about a record Bit Meanings: 0 = I (Must always be on) SSSSSSS = Additional record information - actual content is dependent on record type. Several examples are listed below: SRCB for General Control Record (character) a Usage: 7 To identify the type of generalized control record Bit Meanings: character =A =B =C =D =E =F =G =H = I =S = = = = = = = = Initial terminal SIGN-ON Final terminal SIGN-OFF Print initialization record Punch initialization record Input initialization record Data set transmission initialization System configuration status Diagnostic control record - R = Reserved - Z = Available for local modification SRCB for Print Records o MC C C C C C a 7 MULTI-LEAVING 7 - 65 Page of GY27-7255-0 Revised May 28, 1975 By TNL SN25-0122 Usage: MULTI-LEAVING To provide carriage control information for print records Bit Meanings: 0 = 1 (Must always be on) M = 0 = Normal carriage control = 1 = Reserved for future use CCCCCC = = = = = = = Carriage 1000NN = llNNNN = OOOONN = 001100 = OlNNNN = 000000 = control information Space immediately NN spaces Skip immediately to channel NNNN Space NN lines after print Load 3211 FCB image Skip to channel NNNN after print Suppress space SRCB for Punch Records OMMBRRSS o Usage: 7 To provide additional information for punch records Bit Meanings: 0 = 1 (Must always be on) SS B M = Punch stacker select information = 0 = Normal EBCDIC card image = 1 = Column Binary card image = 00 = SCB count units = 1 = 01 = SCB count units = 2 = 10 = SCB count units = 4 = 11 = Reserved RR = Reserved for fut~~e expansion SRCB for Input Record OMMBRRRR o Usage: 7 To provide additional information for input records 7 - 66 HASP Logic Page of GY27-7255-0 Revised May 28, 1975 By TNL SN25-0122 MULTI-LEAVING Bit Meanings: 0 = 1 (Must always be on) M = 00 = 01 = 10 = 11 RRRR = = = = = SCB count units = 1 SCB count units = 2 SCB count units = 4 Reserved Reserved SRCB for Terminal Message Routing Record OTT T T T T T o Usage: 7 To indicate the destination of a terminal message Bit Meanings: 0 = 1 (Must always be on) TTTTTTT = Remote system number (1 < T < 127) TTTTTTT = 0 = Broadcast to all remote systems) Function Control Sequence (FCS) Usage: o S R R ABC D o 7 o T R R WX Y Z 8 15 To control the flow of individual function streams Bit Meanings: 0 = 1 (Must always be on) S = 1 = Suspend all stream transmission (WAIT-A-BIT) = 0 = Normal state T = Remote console stream identifier R = Reserved for future expansion ABCD ••• WXYZ = Various function stream identifiers (oriented only to recipient) - Normal print (or input) = A,B,C, .•. - Normal punch streams = Z,Y,X, •.• NOTE - a bit on = continue function transmission - a bit off = suspend function transmission MULTI-LEAVING 7 - 67 Page of GY27-7255-0 Revised May 28, 1975 By TNL SN25-0122 MULTI-LEAVING Block Control Byte (BCB) Usage: o X X X C C C C o 7 Transmission block status and sequence count Bit Meanings: 0 = 1 (Must always be on) CCCC = Modulo 16 block sequence count XXX = = = = = = = = = -- Control information as follows 000 = Normal Block 001 = Bypass sequence count validation 010 = Reset expected block sequence count to ccce 011 = Reserved 100 = Reserved 101 = Available for user modification 110 = Available for user modification 111 = Reserved for future expansion MULTI-LEAVING In BSe/RJE The previous sections have grossly outlined the specifications of a comprehensive, MULTI-LEAVING communications system. While the HASP support for programmable Bse work stations is completely consistent with the MULTI-LEAVING design, it does not utilize certain of the features provided in MULTI-LEAVING. These feature limitations include: 1. The transmission of record types other than print, punch, input, console and control is not supported. 2. The only general control record types utilized are the terminal SIGN-ON. 3. Only seB count units of 1 are utilized. 4. No support is included for column binary cards. 7 - 68 HASP Logic GLOSSARY HASP TERMS AND ABBREVIATIONS Glossary GLO - 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 HASP GLOSSARY This glossary defines HASP terms and abbreviations as they are used in this manual. The VS2 abbreviations used in this manual are also listed. For a further explanation of the VS2 abbreviations see VS2 documentation or the IBM Data processing Glossary (GC20-1699). APG: Automatic priority group asynchronous: Without regular time relationship: unexpected or unpredictable with respect to execution of a program's instructions BRDR: Background Reader of TSO BUFFER: HASP buffer CCW: Channel Command Word CEA: Channel end appendage CKPT: CMB: Checkpoint HASP Console Message Buffer cold start: HASP initialization option: any jobs HASP bas from a previous IPL are ignored, and any SPOOL volume space used by those jobs is released. COMWORK: CR: CVT: DASD: HASP Command Processor PCE work area Carriage return Communications Vector Table Direct access storage device DAT: Dynamic address translation DCB: Data Control Block DCT: HASP Device Control Table DEB: Data Extent Block DDT: HASP Data Definition Table DOM: Delete operator message ECB: Event Control Block IDF: ~~o~file EWF: HASP Event Wait Field Glossary GLO - 3 HASP GLOSSARY Execution Batch Scheduling: A job batching feature within HASP activated by use of the iXBATCHC HASPGEN parameter FCB: FIFO: Forms Control Buffer First in, first out HASPGEN: Generation of a HASP System BCT: HASP communication Table HDB: HASP Data Block Internal Reader: HASP Internal Reader; a pseudo-device used to enter jobs directly into HASP job stream from any other nonswappable program operating in the system lOB: Input/Output Block lOS: Input/Output supervisor lOT: HASP Input/Output Table IPL: Initial program load JCL: Job control language JCT: HASP Job Control Table JFCB: Job File Control Block JIT: HASP Job Information Table JMR: Job Management Record JOE: HASP Job Output Element JOT: HASP Job Output Table JQE: HASP Job Queue Element JSCB: Job Step Control Block LIFO: Last in, first out LPA: Link pack area LPAQ: Link pack area queue LSQA: Local system queue area MSA: HASP message SPOOLING allocation control block GLO - 4 HASP Logic HASP GLOSSARY MULTI-LEAVING: A computer-to-computer communication technique·: the fully synchronized, pseudo-simultaneous, bi-directional transmission of a variable number of data streams between two or more computers utilizing binary synchronous communications facilities NIP: Nucleus initialization procedure OCR: HASP Output Control Record OTB: HASP OVerlay Table OUTWORK: PCE: HASP Output Processor PCE work area HASP Processor Control Element PDDB: HASP Peripheral Data Definition Block PGFX: Page fix PIT: HASP Partition Information Table PPPWORK: PRC: HASP Print/Punch Processor PCE work area HASP print checkpoint element pseudo device: A physically non-existant device represented by a Unit Control Block in the Operating system Nucleus which is used by HASP to interface with the sequential access methods for SPOOLed data sets. This UCB is generated at SYSGEN time by a unique specification on the IODEVICE macro-instruction. RB: Request Block RDRWORK: HASP Input Processc. RDW: Record descriptor word REP: HASP replacement card REQ: HASP initialization option that will cause HASP to wait for a $S command before beginning job processing RJE: HASP Remote Job Entry RMTGEN: A procedure for generating HASP remote terminal programs, the load module which when executed causes HASP remote terminal programs to be generated. RPS: Rotational Position Sensing RQE: Request Queue Element RTAM: HASP Remote Terminal Access Method Glossary GLO - 5 HASP GLOSSARY RTP: Remote Terminal Processor SIO: Start Input/Output 5MB: System Message Block SMF: HASP System Management Facilities SPOOL: A DASD volume(s), or portion thereof. used by HASP for storing a job's SYSIN and SYSOUT data and CHECKPOINT data SQA: System Queue Area SWA: Scheduler Work Area synchronous: Occurring with a regular or predictable time relationship TCB: Task Control Block TED: Track Extent Data TIOT: Task Input/Output Table TSO: Time sharing option TQE: HASP Timer Queue Element UCB: Unit Control Block UCS: Universal Character Set UCSB: OR: Universal Character Set Buffer Unit record warm start: HASP initialization option that causes HASP to continue to process all jobs in the system when the system crashed or HASP was stopped WTL: Write to log WTO: Write to Operator WTOR: Write to Operator with Reply XEQWORK: HASP Execution Processor PCE work area GLO - 6 HASP Logic Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 INDEX &DEBUG 3-103,3-106,3-150,3-152,3-161,3-163,3-174 &MAXPART 3- 119 &MAXXEQS 3-119 &MINBUF 3-120 &MLBFSIZ 3-152,3-153,3-166 &NUMBUF 3-113,3-120 &NUMDA 3-113,3-114,3-115 &NUMJOES 3-39 &NUMPRTS 3-40 &NUMPUNS 3-40 &NUMSMFB 3-13;7-43 &NUMTPPR 3-40 &NUMTPPU 3-40 &NUM3800 3-36,'3-118' &OLAYLEV 7-31,7-35 &OREPSIZ 3- 107,3-126,6-5 . 'OSC 3-32,3-11~ &PRI 3-32 'PRIHIGH 3-73 &PRILOW 3-73 'PRIRATE 3-73 &RDR 3-25 &RJOBOPT 3-18 &RPS 3-75 &SPOLMSG 3-40 &TPBFSIZ 3-111,3-112 &TRACE 3-89,7-45 &WCLSREQ 3-11,3-12 &WTR 3-11 &WTRCLAS 3-11,3-12,3-32 $A 3-131,3- 171 $B 3-51,3-54,3-133,3-169,3-172 $BSCA - Communications Adapter Processor 3-139,3-140,3-145,3-146, 3-147,3-148,3-149,3-150,3-153 $ BSPACE 3-95 $C 3-19,3-42,3-43,3-54 $CKLEN - MULTI-LEAVING Buffer Allocation subroutine 3.148,3-149,3-150 $CMDSCAN - Local Command Subroutine 3-147 $CMPR - Compression Subroutine 3-139,3-140,3-143,3-144,3-149 $COM - Commutator 3-135,3-153 $CONP - 5203 output Console Processor 3~138,3-144,3-145 'CONTROL - Control Record Processor 3-178 $D 3-51,3-54,3-171 $DA 3-54 $DCOM - Decompression Subroutine 3-140,3-141,3-143,3-144,3-148,3-149 $DELETE Service 3-105 $DN 3-50,3-51 $DQ 3-50 $DS 3-132 $E 3-42,3- 43 $EXCPSVC - The EXCP Exit 3-23,3-25,3-26,3-27,3-28,3-29,3-30,3-32,3-33, Index IND - 1 3-34 3-9,3-91, $FREEMSG - HASP Free Console Message Buffer Service Routine 3-92,3-93,3-94,3-99,3-100 $1 3-38,3-42,3-43 $INIT - Initialization Routine 3-151,3-152,3-153 $LEOF - Control Sequence Subroutine 3-139,3-148 $LINK service 3-6,3-103 $LOAD service 3-104 $LOG - HASP Error Recording Subroutine 3-136,3-138,3-139,3-151,7-26, 7-27,7-47 $MFCU - 5424 MFCU Processor 3-135,3-137,3-138,3-147 $MSG - Error Message Tracing Subroutine 3-136,3-138,3-139,3-146,3-151 $N 3-42 $P 3-54,3-11 $PERM - Control Sequence Subroutine 3-140,3-146,3-148 $PHASP 3-11,3-12,3-13 $PRINTER - Logical Printer Processor 3-138,3-140,3-144,3-145,3-148 $PRTN1 - Print service Processor 3-179 $PUNCH - Logical Punch Processor 3-140,3-141 $READER - Logical Reader Processor 3-139 $REPRDR 3-125 $REPWTR 3- 1 25 $REQ - Control Sequence Subroutine 3- 1 39 , 3- 1 48 $RETURN Service 3-105 $RRTN1 - Input Service Processor 3- 180, 3- 181 $S 3-43,3-54,3-171,7-40,7-41 $T 3-43 $TPGET - Communications Interface Processor (Input) 3-118,3-183,3-184 $TPPUT - Communications Interface Processor (Output) 3-177,3-178, 3-180,3-181 $URTNl - Punch Service Processor 3-180,3-181 $WRTN1 - Console service Processor 3-181 $XCTL service 3-104 $Z 3-19 $1442 - 1442 Card Reader-Punch Processor 3-138,3-147 $5203 - 5203 Printer Processor 3-138,3-139 /*EOF card 3-137,3-139 /*MESSAGE Card 3-17 /*OUTPUT Card 3-17,3-20,3-26,3-21,3-30,3-33 /*PRIORITY Card 3-15,3-17 /*ROUTE card 3-17 /*SETUP Card 3-17 /*SIGNON Card 3-110,3-152,3-155,3-169,3-179 ABEND - Core Dump Subroutine 3-123,3-124,3-150 Accounting Field (On JOB Card) 3-18 Allocation 1-4,1-6,3-25,3-21,3-32,3-35,3-31,3-63,3-11,3-83,3-81,3-94, 3-114,3-117,3-119,3-148,3-177,7-3,7-21,7-50 Asynchronous Input/Output Processor 3-64,3-65,3-66,3-75,3-106, 3-124,7-32 Auto-Call Feature 3-152 Automatic Redirection of Command Responses 3-49,3-55 Automatic Starting Reader Feature 3-118 IND - 2 Index Page of GY27-7255-0 Revised September 15, 1976 By TNL SN27-1555 BASE2 Services 3-52,3-53,3-56 Binary Synchronous Communications (SSC) 1-3,1-7,1-8,3-94,3-110,3-111, 3-112,3-145,3-155,3-162,3-166,3-174,3-177 Binary Synchronous Communications Adapter (BSCA) 3-118,3-134,-3-145, 3-150,3-151,3-152,3-161 BSCINT - BSCA Interrupt Routine 3-145,3-146 Buffer Services 3-77,7-3,7-12 Carriage Control 3-140,3-157,3-158,3-180,7-24 Catastrophic Error Handler 3-101 Channel Command Word (CCW) 3-29,3-31,3-32,3-42,3-69,3-75,3-110,3-111, 3-112,3-126,3-183,7-24 Checkpoint Processor 3-37,3-63,3-64,3-81,3-82,3-115 Checkpoint Record 3-37,3-115,3-116,3-119 Cold Start 3-36,3-37,3-101,3-113,3-119,7-47 Command PCE Work Area 5-15,5-16,5-17 Command Processor 3-17,3-47,3-49,3-50,3-51,3-52,3-53,3-54,3-55,3-56, 3-57,3-58,3-59,3-60,3-61,3-91,3-93,3-95,3-96,3-113,3-121,3-181,7-26 Communication Table 3-103,5-35,6-4,7-41,7-49 Communications Subtask 3-9,3-100 Commutator Processors 3-156,3-161 COMSUP - Communications I/O Supervisor 3-178 Console Message Buffer (CMB) 3-9,3-47,3-91,3-92,3-93,3-94,3-95,3-96, 3-97,3-98,3-99,3-100,5-11,7-26,7-27,7-28,7-40,7-41,7-49 Console Message Buffer (CMS) Queueing Routines 3-91 Console Services 3-91,3-93,3-94,3-95,3-96,3-98,3-99,3-100 Console Support See OS Console Support Data Definition Table (DDT) 3-34,5-33,7-40,7-41,7-50 DDB service 3-25,3-26,3-27,3-28,3-30 Debugging Tools 6-6 Device Control Table (DCT) 3-15,3-16,3-24,3-25,3-29,3-38,3-40,3-41, 3-43,3-45,3-53,3-58,3-59,3-63,3-65,3-69,3-75,3-83,3-94,3-95,3-102, 3-106,3-114,3-117,3-118,3-119,5-19,7-19,7-20,7-23,7-24,7-40,7-50 Device Control Table Extension (DCTE) for 3800 Printer 5-32 Device Name 3-41,3-50,3-51,3-58,3-101 Diagnostic Aids 6-1 Direct-Access Storage Services 3-87,3-88 Directory 4-1 Disastrous Error Handler 3-101 Dispatcher 3-3,3-5,3-6,3-7,3-34,3-36,3-37,3-40,3-45,3-65,3-69,3-77, 3-81,3-82,3-88,3-99,3-106,3-107,3-113,3-117,7-3,7-32,7-39,7-40 DLE-ACKO 3-145,3-147,3-153,3-179 Dynamic Buffer Pool 1-5 EOR Card 3-133,3-152,3-153 Error Codes 3-101 Error Message Log Table 3-181 Error Messages 3-143,3-144,3-151,3-160 Execution PCE Work Area 5-129 Execution Processor 3-23,3-24,3-25,3-26,3-28,3-29,3-30,3-31,3-32,3-33, Index IND - 3 Page of GY27-7255-O Revised September IS, 1976 By TNL SN27-1555 3- J4,3-35,3-41,3-92,3-99,3-119,7-31,7-50 Execution Thaw Processor (XTHAW) 3-23,3-28,3-34 Format Start 3-116 Forms Control Buffer (FCB) 3-33,3-36,3-43,7-53 Handshaking 3-178 HASP Buffer 3-16,3-19,3-20,3-24,3-25,3-27,3-31,3-36,3-41,3-65,3-77, 3-94,3-113,5-3,5-4,5-5,5-6,5-7,5-8,5-9,5-10,7-11,7-12,7-39,7-40,7-47, 7-49 HASP Initialization 3-11,3-40,3-65,3-101,3-107,3-113,3-114,3-115,3-116, 3-111,3-118,3-119,3-121,3-122,3-123,3-125,3-127 HASPCBUF - Console Buffering Koutine 3-92,3-98 HASPOOME - Command Edit Routine 3-47,3-49,3-50,3-52,3-54 HASPGEN 3-11,3-13,3-18,3-73,3-15,3-89,3-95,3-114,3-116,3-118,3-125, 3- 126,3- 131, 7- 31 , 7- 43, 7- 49 3-119 HASPIOVB - Miscellaneous Initialization HASPIOVC - Buffer Building 3-119 HASPIOVQ - Job Queue Warm Start 3-116,3-120 _ HASPIOVR - Remote Job Entry Initialization 3-118 HASPIOVS - Remote Console Initialization 3-119 HASPLOG - HASP Log Processor 3-92,3-99 HASPMCON - HASP Remote Console Processor 3-91,3-93 IHEREP - HASP Environmental Recording and Error Processor 3-134,3-135, 3--151 Initialization Options 3-113 Input service Processor 3-15,3-16,3-17,3-18,3-19,3-20,3-21,3-180,3-181, 3-184 Input/Output Services 1-3,3-15,1-3,1-22,1-23,1-24,1-26,1-28 Input/Output Table (lOT) 3-20,3-25,3-27,3-28,3-30,3-33,3-36,3-37,3-41, 3-42,3-45,3-81,3-88,3-120,5-49,7-50 Internal Reader 1-3,1-6,3-19,3-28,3-29,3-118,7-19 IPL 3-81 JOB Card 3-15,3-16,3-17,3-18,3-19,3-23,3-29,3-34,3-42 Job Class 1-3,1-5,3-19,3-34 Job Control Table (JCT) 3-13,3-18,3-20,3-24,3-25,3-21,3-28,3-34,3-35, 3-36,3-31,3-41,3-42,3-45,3-81,J-88,3-99,3-120,5-51,6-2,7-25,1-50,7-51 Job Information Table (JIT) 5-60 Job Log 3-23,3-25,3-27,3-32,3-42,3-92,3-95,3-91,3-98,3-99 Job Output Element (JOE) 3-36,3-37,3-38,3-39,3-40,3-41,3-42,3-120, 5-61,7-50,7-51 Job Output Table (JO~) 3-35,3-37,3-38,3-39,3-40,3-41,3-42,3-115,3-120, 5-61,1-40,1-41,1-50,7-51 Job Processing 1-3,3-9,3-15,3-11,3-113 JOBPARM Card 3-15,3-17 Job Queue Element (JQE) 3-18,3-25,3-28 g 3-36 g 3-37,3-38,3-39,3-41,3-45, 3-50,3-60 r 3-13,3-81,3-82,3-88,3-120,5-69,7-13,1-14,7-15,1-16,7-17, 7-18,1- 1'0,7-50 IND - 4 Index Page of GY27-7255-O Revised September 15, 1976 By TNL S N27-1555 Job Queue Services 3-18,3-82,7-3,7-13,7-14,7-15,7-16,7-17,7-18 LETRRIP - Remote Terminal Program 360 Processing LINEmm 3-118 Local Card Readers 1-5 3-155,3-167,3-170 Message SpoOLing Allocation Block 5-73 Messages 1-1,3-5,3-9,3-11,3-23.3-25,3-26,3-30,3-35,3-40,3-41,3-42,3-50, 3-51,3-91,3-92,3-93,3-94,3-98,3-102,3-119,3-143,3-144,3-145,3-158, 3-180,3-181,3-182,3-184,7-25 MCCWINrT - Channel Command Word Sequence setup Subroutine 3-110 MEXCP - Remote Terminal Input/Output Interface 3-110 MINITIO - MULTI-LEAVING Input/Output Interface 3-110 MSIGNON - Signon Card Processor 3-110 MULTI-LEAVING 1-3,1-7,1-8,3-69,3-70,3-75,3-92,3-93,3-94,3-109,3-110, 3- 111 , 3- 11 8 , -3- 14 2 , 3- 1 43 , 3- 144, 3- 1 46 , 3 - 1 4 8 , 3 -149 , 3 -150 , 3 -152 , 3 -15 3 , 3-155,3-158,3-162,3-177,3-178,7-61,7-62 - 7-68 MULTI-LEAVING Line Manager 1--3,3- 69,3-75,3-109,3-110,3-118 OEXIT Subroutine 3-7,3-104,3-105,3-106,3-107 OLon Subroutine 3-7,3-104,3-105,3-106,3-114,3-117 OPTCD=J opti.on (DCB subparameter) 3-30,3-42 OS Console Support 1-6 Output Control Record 3-11,3-27,3-30,3-31,5-75,7-50 Output PCE Work A~ea 5-79 Output Processor 3-25,3-34,3-35,3-36,3-31,3-38,3-39,3-40,3-42,3-43, 3-45,3-110,1-50 Output Queue 3-20,3-23,3-21,3-35,3-36,3-93,3-181,3-182 Output Routing 1-7 Overlay $ASYNC Exit 3-7,3-104,3-106,3-114 Overlay Build Program 3-121,3-128,3-129 Overlay services 3-6,3-102,3-104,3-105,3-106,3-101,7-3,7-31,1-32,7-34, 7-35,1-36 Overlay Table 3-103,3-106,3-126,3-127,3-128,5-77,7-50 Partition Information Table (PIT) 3-24,5-93 Peripheral Data Definition Block (PDDB) 3-25,3-26,3-27,3-30,3-32,3-33, 3-35,3-36,3-37,3-41,3-42,5-89,7-50 Print Checkpoint Element 5-103 Printer Interrupt Feature 3-142 Print/Punch PCE Work Area 5-95 Print/PUnch Processor 3-31,3-38,3-40,3-41,3-42,3-43,1-51 Priority Aging_ Processor 3-13 Processor Control Element (PCE) 3-5,3-6,3-1,3-15,3-16,3-24,3-25,3-26, 3-27,3-28,3-29,3-30,3-31,3-33,3-34,3-36,3-40,3-41,3-47,3-48,3-50,3-51, 3-52,3-53,3-57,3-58,3-59,3-60,3-81,3-82,3-99,3-103,3-104,3-105,3-106, 3-113,3-111,3-119,3-121,5-83,6-2,6-4,6-5,7-32, 7-34 ,7-39,7-49,1-50,7-51 Programmer Macros 7-1. Purge Processor 3-24,3-245,3-41 Index IND - 5 Page of GY27-7255-0 Revised September 15, 1976 By TNL 'SN27-1555 Reader PCE Work Area 5-105 Reader/Interpreter Exit 3-23,3-21,3-32 Redirection of Command Responses 3-49,3-55 Register Usage 6-2,6-3 Relocatability Aids 3-52,3-53,3-61 Remote Job Entry (RJE) 1-3,1-7,1-8,3-5,3-49,3-75,3-77,3-114,3-118, 3-119,3-120,3-148,3-155,7-11 Remote Terminal Access Method (RTAM) 3-16,3-19,3-69,3-94,3-95,3-109, 3-110,3-111,7-53 Remote Terminal CCW 'sequence 3~110 Remote Terminal Processor 3-171 REP Card 3-89,3-107,3-133,3-151,3-155,3-163,3-168,3-169,3-113,3-119, 6-5 REP Routine 3-113,3-125,3-126,3-152,6-6 RMTnn 3-118 RTPBOOT 3-155,3-169,3-170 RTPLOAD 3-155,3-158,3-169,3-170,3-173 RTP1130 3-155,3-156,3-158,3-159,3-161,3-163,3-169,3-170,3-173,3-174, 3-175 selection Table Element SETPRT Subtask 3-55 3-13.2 5MB Writer 3-11,3-12 SMF Buffer 3-13,3- 42,3-45,3-.79,5-109,1-40,1-41,7-43,1-50 SMF Services 3-19,3-81,1-3,7-43 SMF Subtask 3-13 SMF Termination Exit 3-34 SP00L Utilization 1-3,1-5,1-6,3-23,3-25,3-33,3-35,3-36,3-31,3-41,3-42, 3-45,3-81,3-82,3-87,3-88,3-92,3-94,3-101,3-106,3-113,3-114,3-115,3-116, 3-117 Starter System (System/3) 3-134 storage Dump 3-119,3-128,6-4 Syntax 3-147,7-31 System Output 3-35,3-39 System/3 Work Station Program 3-177,3-179,3-181,3-182,3-184 System/360 Work Station Program 3-177,3-179,3-181,3-182,3-184 Timer Processor 3-67,3-69,3-85 Timer Queue Element (TQE) 3-67,3-69,3-85,5-127,7-29,7-30,7-50 Timer Services 3-85,3-86 Total Control Table (TCT) 3-171,3-178,3-180,3-181,3-182,3-183,3-184, 3-185 Trace Services 3-89,6-6 Track Extent Data Table 5-125,1-50 Tr.ansparent Blocking 1-5 TSO Support Processor 3-71 Unit Services Warm Start IND - 6 3-82,3-85,3-113,~-3,7-18,1-20 1-6,3-35,3-38,3-40,3-41,3-42,3-63,3-113,3-115,3-111,3-119, Index Page of GY27-7255-0 Revised September 15, 1976 By TNt S N27-1555 3-120 1130 Work Station 1-3,1-1,3-155,3-158,3-162,3-163,3-161,3-168,3-169, 3-170,3-171,3-173,3-174 1130 Work station Program 3-170 1403 Printer 1-6,3-11,3-28,3-155,3-151,3-160,3-161,3-174 1442 Reader/Punch 3-138,3-139,3-141,3-151,3-155,3-157,3-169,3-170, 3-174,3-175,3-180,3-181,3-184,3-185 2314 Disk Unit 1-6 2501 Reader/Punch 1-5,3-155,3-157,3-169,3-170 2520 Reader/Punch 1-6,3-28,3-118,3-180,3-181,3-184,3-185 2540 Card Reader/Punch 1-5,1-6,3-28,3-184 2560 Card Reader/Punch 3-180,3-184 2703 Transmission Control Unit 1-7 2770 Work Station 1-7 2780 Work Station 1-7 2922 Work Station 1-3,1-1 3330 Disk Unit 1~6 3350 Direct Access Storage 3505 Card Reader/Punch 3525 Card Punch 1-6 3780 Work Station 1-7 1-6 1-5 3800 Device Setup and Verification Subroutine 3-44 3800 Printing Subsystem 1-6,2-13,2-16,3-13.2,3-42,3-43,3-75,3-118 5203 5424 5471 5471 5475 5415 5415 Printer 3-134,3-138,3-144,3~150,3-151,3-152,3-153 Card Reader/Punch 3-134,3-135,3-139,3-141,3-151,3-152 Console Processor 3-142,3-151 Printer/Keyboard 3-134,3-141,3-142,3-143,3-150,3-151,3-153 Console Interrupt Routine 3-143 Data Entry Keyboard 3-134,3-143,3-144,3-153 Input Console Processor 3-144 Index IND - 7 Technical Newsletter T'his Newsletter No. Date Base Publication No. File No. Previous Newsletters SN27-1555 Sept. 15, 1976 GY27-7255-0 S370-36 SN25-0122 OSjVS 2 HASP II Version 4 Logic © IBM Corp. 1973 This technical newsletter, a part of Version 4.1 of HASP II and of Release 1.7 of OS/VS2 SVS, provides replacement pages for the subject publication. These replacement pages remain in effect for subsequent HASP versions and SVS releases unless specifically altered. Pages to be inserted and removed are: Cover, edition notice 1-4 1-5, 1-6 2-13-2-18 3-13.1 (3.13.1 added) 3-29,3-30 3-33-3-36 3-41-3-44 3-75 3-117, 3.118.1 (3-118.1 added) 4-3-4-26 5-15-5-17 5-21, 5-22 5-25,5-26 5-31, 5-32 5-39,5-40 5-45-5-47 (5-46.l added) 5-59-5-65 5-69,5-70 5-75,5-76.1 (5-76.1 added) 5-79-5-81 5-85- 5-92 (5-90.1 added) 5-95- 5-101 (5-100.1,5-100.2 added) 5-105-5-110.1 (5-110.1 added) 5-117, 5-118.1 (5-118.1 added) 5-129-5-132 7-25,7-26 IND-l-IND-7 Summary of Amendments Support for the IBM 3800 Printing Subsystem has been added. Also, miscellaneous technical and editorial changes have been made throughout the book. Note: Please file this cover letter at the back of the manual to provide a record of changes. IBM Corporation, P.O. Box 50020, Programming Publishing, San Jose, California 95150 Printed in U.S.A. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 , 1 1 1 1 1 1 1 1 1 1 1 IBM @ Technical Newsletter This Newsletter No. Date SN25-0122 May 28, 1975 Base Publication No. GY27-7255-0 Previous Newsletters None OS/VS 2 HASP II Version 4 Logic © IBM Corp. 1973 This Technical Newsletter, a part of release 1 of OSNS2, provides replacement pages for the subject publication. These replacement pages remain in effect for subsequent OS/VS2 releases unless specifically altered. Pages to be removed/inserted are: Cover 5,6 2-1, 2-2 3-43,3-44 3-63,3-64 3-111,3-112 5-49, 5-50 5-61,5-62 6-3,6-4 7-1-7-2 7-39-7-42 7-55-7-68 Ind-3,-lnd-6 A change to the text or to an illustration is indicated by a vertical !ine to the left of the change. Summary of Amendments Miscellaneous editorial and technical changes have been made throughout the text and a section on MULTI-LEAVING has been added. Note: Please file this cover letter at the back of the manual to provide a record of changes. IBM Corporation, Department 63T Neighborhood Road, Kingston, New York 12401 © I BM Corp. 1975 Printed in U.S.A. OSjVS2 HASP II Version 4 Logic GY27-7255-0 Your comments about this publication will help us to improve it for you. Comment in the space below, giving specific page and paragraph references whenever possible. All comments become the property of IBM. Please do not use this form to ask technical questions about IBM systems and programs or to request copies of publications. Rather, direct such questions or requests to your local IBM representative. If you would like a reply, please provide your name and address (including ZIP code). Fold on two lines, staple, and mail. No postage necessary if mailed in the U.S.A. (Elsewhere, any IBM representative will be happy to forward your comments.) Thank you for your cooperation. Reader's Comment Form GY27-7255-0 Your comments, please ... This manual is part of a library that serves as a reference source for systems analysts, programmers, and operators of IBM systems. Your comments on the other side of this form will be carefully reviewed by the persons responsible for writing and publishing this material. All comments and suggestions become the property of IBM. Fold and Staple o CJ) First Class Permit Number 6090 San Jose, California < CJ) ~ :r: » CJ) Business Reply Mail 'iJ No postage necessary if mailed in the U.S.A. Postage will be paid by: I BM Corporation P.O. Box 50020 Programming Publishing San Jose, California 95150 " (i) z !=> CJ) W -...J o c.:.., 0') .......................................................................................................................................... " Fold and Staple International Business Machines Corporation Data Processing Division 1133 Westchester Avenue, White Plains, New York 10604 (U.S.A. only) IBM World Trade Corporation 821 United Nations Plaza, New York, New York 10017 (International) 1 1 1 1 1 1 1 1 1 1, 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ! i 1 1 1 1. I 1 1 1 1 1 1 1 , 1 1 1 1. 1 1 1 1 1, 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 GY27-7255-0 o en < en tv :c » en iJ G> -< tv "'-I ~ tv CJ1 CJ1 6 International Business Machines Corporation Data Processing Division 1133 Westchester Avenue, White Plains, New York 10604 (U.S.A. only) IBM World Trade Corporation 821 United Nations Plaza, New York, New York 10017 (International)
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.5 Linearized : No XMP Toolkit : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:56:37 Modify Date : 2014:04:21 14:35:32-07:00 Create Date : 2007:08:18 13:50:22-05:00 Metadata Date : 2014:04:21 14:35:32-07:00 Document ID : uuid:af383539-24f7-4f19-9eaf-2509dbd057cb Instance ID : uuid:3918cf40-b635-d44c-9fb0-f3d5881f3e3b Format : application/pdf Producer : Adobe Acrobat 9.55 Paper Capture Plug-in Page Layout : SinglePage Page Mode : UseOutlines Page Count : 524 Creator : Adobe Acrobat 6.0EXIF Metadata provided by EXIF.tools