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 PDF.
Page Count: 524

DownloadGY27-7255-0_HASP_II_Version_4_Logic_Sep76 GY27-7255-0 HASP II Version 4 Logic Sep76
Open PDF In BrowserView 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.0
EXIF Metadata provided by EXIF.tools

Navigation menu