322 003660 000_Gould_MPX 32_Release_1.5E_Technical_Manual_Apr85 000 Gould MPX 32 Release 1.5E Technical Manual Apr85

322-003660-000_Gould_MPX-32_Release_1.5E_Technical_Manual_Apr85 manual pdf -FilePursuit

322-003660-000_Gould_MPX-32_Release_1.5E_Technical_Manual_Apr85 322-003660-000_Gould_MPX-32_Release_1.5E_Technical_Manual_Apr85

User Manual: 322-003660-000_Gould_MPX-32_Release_1.5E_Technical_Manual_Apr85

Open the PDF directly: View PDF PDF.
Page Count: 734

Download322-003660-000_Gould_MPX-32_Release_1.5E_Technical_Manual_Apr85 322-003660-000 Gould MPX-32 Release 1.5E Technical Manual Apr85
Open PDF In BrowserView PDF
c·
.Gould MPX-32TM
Release 1.,2
Technical Manual

April 193'

c
PmUcation Order Number: 322-00:3660-000

TMMPX-32 is a 1rademark of Gould

inc.
I

-} GOULD
Electronics

This manual is supplied without representation or warranty of any kind. Gould Inc.,
Computer Systems Division therefore assumes no responsibility and shall have no liability
of any kind arising from the supply or use of this pUblication or any material contained
herein.

UMITED RIGHTS LEGEND

for
PROPRIETARY INPORMAnON

The information contained herein is proprietary to Gould CSD and/or Its vendors, and its
use, disclosure or duplication is subject to the restrictions stated in the Gould CSD
license agreement Form No. 620-06(1/82) or the appropriate thir~-party sublicense
agreement. The information is provided to government customers with limIted rights as
described in DAR 7 - 1 0 4 . 9 A . · . , ,

"
",

(C) Copyright 1982
Gould.Inc., Computer Systems Division,
All Rights Reserved
Printed in U.S.A.

C'
i

,.

,~

HISTORY
The MPX-32 1.0 Technical Manual, Publication Order Number 322-001010-000, was
printed September, 1979.
Publication Order Number 322-001010-100 (Revision 1, Release 1.3) was printed March,
1980.
Publication Order Number 322-001010-200 (Revision 2, Release 1.4) was printed August,
1980.
Publication Order Number 322-003660-000 (Revision 3, Release 1•.58) was printed
September, 1982.
Publication Order Number 322-003660-001 (Change 1 to Revision 3, Release 1.50) was
printed February, 1984.
Publication Order Number 322-003660-002 (Change 2 to Revision 3, Release 1•.5E) was
printed April, 198.5. The updated manual contains the following pages:

* Change

* Change·

Number

Title page •••••••••••••••••• 2
Copyright page ••••••••••••••• 2
iii/iv Change 2 ••••••••••••••• 2
!!!/!v Change 1 ••••••••••••••• 1
Ill/IV • • • • • • • • • • • • • • • • • • • • • • 0
v through xix •••••••••••••••• 0
xx ........••.••....••..... 2
xxi through xxxii ••••••••••••• 0
1-1 through 1-61/1-62 •••••••••• 0
2-1 through 2-10 •••••••••••••• 0
2-11 •••••••••••••••••••••• 1

2-12 through 2-30 ••••••••••••• 0
2- 31 •••••••••••••••••••••• 1

2-32 through 2-90 ••••••••••••• 0
3-1 through 3-10 •••••••••••••• 0
3-11 •••••••••••••••••••••• 1

3-12 through 3-32 ••••••••••••• 0
3- 33 •••••••••••••••••••••• 1
3-34 through 3-174 •••••••••••• 0
3-17.5 and 3-176 •••••••••••••• 1

*

('

Number

3-177 through 3-279 •••••••••••• 0
3-280 and 3-281 ••••••••••••••• 2
3-282 through 3-284 •••••••••••• 0
4-1 through 4-11/4-12 ••••••••••• 0
5-1 through .5- 20 ••••••••••••••• 0
6-1 through 6- 22 ••••••••••••••• 0
6- 23 through 6- 31/ 6- 32 •••••••••• 2
7-1 through 7-2.5/7-26 ••••••••••• 0
8-1 through 8-13/8-14 ••••••••••• 0
9-1 through 9-9/9-10 •••••••••••• 0
10-1 through 10-12 ••••••••••••• 0
11-1 and 11-2 ••••••••••••••••• 0
12-1 through 12-28 ••••••••••••• 0
13-1 through 13-10 ••••••••••••• 0
14-1 through 14-41/ 14-42 •••••••• 0
1.5-1 through 1.5-44 ••••••••••••• 0
16-1 through 16-4 •••••••••••••• 0
A-I through A-6 ••••••••••••••• 0
B-l/8-2 . . . . . . . . . . . . . . . . . . . . . 0

Zero in this column indicates an original page.

On a change page, the portion of the page affected by the latest change is indicated by a
vertical bar in the outer margin of the page. However, a completely changedpage will
not have a full length bar, but will have the change notation by the page number.
Change 2
iii/iv

(
TABLE OF CONTENTS

1. SYSTEM DESCRIPTION

1.1

1.2
1.3
1.4

(

1.5

1.6
1.7
1.8
1.9
1.10
1.11
1.12

Naming Conventions ••.•...•••
1.1.1
Communications Region
1.1.2
Task Service Area (TSA)
Entry Variables •••.••.
1.1.3
1.1.4
System Modules and Interrupt Handlers
1.1.5
Common System Subroutines •.
1.1.6
System Macros •..••••••.•.•
1.1.7
System Task Load Module Files.
1.1.8
Batch Task Load Module Files.
1.1. 9
System Permanent Files ••••.•.•••••
Scheduler - IOCS Interface •••••
I/O Overview from User Request to I/O Complete
Scheduler - Task Termination Interface
1.4.1
Exit Task •••
1.4.2
Abort Task ••
1.4.3
Delete Task
Scheduler-Debug Interface
1.5.1
Entry Point 1 Startup
1.5.2
Entry Point 2 Restart
1.5.3
Entry Point 3 Trap/Break
1.5.4
Entry Point 4 User Break Exit
1.5.5
Entry Point 5 Abort
MPX-32 Task Interrupts ••.••
MPX-32 Send/Receive Facilities
1.7.1
Receiving Task Services
1.7.2
Sending Task Services •.
MPX-32 Device Address Specification
MPX-32 CPU Scheduling •••.•.••..
FAT /FPT and Blocking Buffer Allocation
Indirectly Connected Interrupts.
Miscellaneous System Macros
1.12.1
M.BACK
1.12.2
M.CALL
1.12.3
M.CLSE •
1.12.4
M.DFCB
1.12.5
M.DFCBE
1.12.6
M.EIR •.
1.12.7
M.FWRD
1.12.8
M.INIT •••
1.12.9
M.INITX
M.IOFF
1.12.10
1.12.11
M.IONN •
1.12.12
M.IVC ••
1.12.13
M.KILL
M.MODT
1.12.14

1-1
1-1
1-1
1-1
1-2
1-2
1-2
1-2
1-2
1-2
1-2
1-12
1-13
1-13
1-14
1-16
1-17
1-18
1-19
1-19
1-19
1-20
1-21
1-24
1-24
1-26
1-38
1-40
1-43
1-45
1-49
1-49
1-50
1-50
1-50
1-52
1-53
1-54
1-54
1-55
1-55
1-55
1-56
1-56
1-56
v

1.12.15
1.12.16
1.12.17
1.12.18
1.12.19
1.12.20
1.12.21
1.12.23
1.12.24
1.12.25
1.12.26

M.OPEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-57
M.RTNA . . . . . . . . . • . • . . . . . . . . . . . . . . . . . . • . . . . . . . . . . 1-57
M.R TRN . . • • . • • . • • . . • • . . • • • . . . . . . . . . . . . • . . . . . . . . . 1-57
M.SHUT . . . . . . . . . . • . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-58
M.SP AD . . . . . . . . . • . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-58
M.SVCT . • . • . . . . . . . . . . • . .
1-59
M. TRAC . . • . . . • . • . . • . • . . . . . . . • . . . . . • • . • • • . • • • . . . • 1-59
M.USHUT •••••
1-60
M. XIR ....•.....•.............•.••...••.••.•..... 1-60
HMP.INIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-60
IB.INIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . . 1-61

. ........................... .

2. SYSTEM TABLES AND VARIABLES

2.1
2.2
2.3

2.4

2.5

Communications Region . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Task Service Area (TSA) ..•••.••••..•••••••••.••••••••••••••••
Executive (H.EXEC) Data Areas and Tables ••••••••••••••••••••••••
2.3.1
CPU Dispatch Qu'eue Area ••••••••••••••••••••••••••••
2.3.2
CPU Dispatch Queue Entry (DQE) •••••••••••••••••••••••
2.3.3
DQE Address Table (DA T) •••••••••••••••••••••••••••••
Input/Output . . . . . . . . . . . . . . . .
2.4.1
I/O Table Linkages . . . . . . .- . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.2
File Control Block (FCB) ••••••••••••••••••••••••••••••
2.4.2.1
Special Control Specifications ••••••••••••••••••
2.4.2.2
Device Status (2000 Level) Non-Extended
I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.2.3
Channel Status and Controller/Device Status
for Extended I/O Devices •••••••••••••••••••••
2.4.3
Type Control Parameter Block (TCPB) ••••••••••••••••••••
2.4.4
Device Type Table (DTT) •••••••••••••••••••••••••••••
2.4.5
Controller Definition Table (CDT) •••••••••••••••••••••••
2.4.6
Unit Definition Table (UDT) ••.••••••••••••••••••••••••
2.4.7
File Pointer Table (FPT) ••••••••••••••••••••••••••••••
2.4.8
File Assignment Table (FAT) •••••••••••••••••••••••••••
2.4.9
I/O Queue (IOQ) . . . . . . . . . . . . . . . . . . . .- . . . . . . . . . . . . . . . .
2.4.10
Blocking Buffer Control Cells •••••••••••••.••••••••••••
2.4.11
lOP Channel Definition Table (CHT) ••••
• ••••••••.•
,e

•••••••••••••••••••••••••••••

2-1

2-16
2-25
2-25
2-25

2-39
2-39
2-39
2-40
2-45
2-48

2-49
2-52

2-53
2-54
2-56

2-58
2-59
2-60
2-64

2-65

Memory Management . . . . . . . . . . . . . • . . . . . . . . •

2-66

2.5.1
2.5.2
2.5.3

2-66
2-67
2-68

Memory Pool Management •••••••••••
Memory Allocation Tables ••••••••••••
Shared Memory Table ••.••••••••••••••••

2.6

Disc Management . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . • . • . . . . . . . . 2-74
2.6.1
SMD Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-74

2.7

Ba t ch Process i ng •. . • . . . . . . . . . . • • . . . . . . . . . . • . • . . . . • . • • . • . . . . 2-77

2.6.2

2.7.3

Spooled File Directories •••••••••••••.•••••••.•••••••• 2-77
System Input (M.Sm) and System Output (M.SOD)
Directory Formats ..•.•••...•.•.••••.•.
2-79
Link File Formats (Batch SLO and 5130) ••••
2-80

2.7.4

Job Table. . . . . . . . . .

2.7.1
2.7.2

2.8

vi

Disc Allocation Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-76

Terminal Services ••..........
2.8.1
Terminal Line Buffer •

. ........... .

2-80
2-83
2-83

·. .\
C
,~~)

Page

(

2.9
2.10
2.11
2.12

MPX-32 Load Module Format •• • • • • • • • • • • • • • • • • • • • • . • • • • • • • • . •.
Resource Requirement Summary (RRS) Entries. • • • • • • • • • • • • • • • • • • . ••
Job Accounting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Timer Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
e

2-84
2-84
2-86
2-88

3. MODULE DESCRIPTIONS

3.1

Executi ve (H.EXEC) .•....•...••.•.•....•.•..•...•.•.•..••...

3.1.1
3.1.2
3.1.3
3.1.4
3.1.5
3.1.6
3.1.7
3.1.8
3.1.9
3.1.10
3.1.11
3.1.12

(

3.1.13
3.1.14
3.1.15

Entry Point I-Interactive Input Starting •••••..•••••.•...••
Entry Point 2 - Terminal Cutput Starting •••••••••••••••.••
Entry Point 3 - Wait I/O Starting •••••••••••••••.•.••••..
Entry Point 4 - No-Wait I/o Starting .•••••.•••••••••••••.
Entry Point 5 - Wait For Any No-Wait Operation
Com plete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
Entry Point 6 - Wait For Memory Pool . • • • • • • • • • • • • • • • . • ••
Entry Point 7 - Memory Request Processing Complete •...••..
Entry Point 8 - Wait for Memory Scheduler Event. • • • • • • • • • ..
Entry Point 9 - Report Menory Scheduler Event. • • . • • • . • • • •.
Entry Point 10 - Report ME"mory Pool Available • • • • • • • • • . . ..
Entry Point 11 - Completion of Unswappable I/O
Request. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
Entry Point 12 - No-Wait 1:0 Post Processing
Complete . . . . . . . . . . . . ~ . . . . . . . . . . . . . . . . . . . . . . . . . . ..
Entry Point 13 - Wait For Peripheral Resource • • • • • • • • • • • • •.
Entry Point 14 - Wait For Disc File Space ••••••••.•••••.••
Entry Point 15 - Report Pe-ipheral Resource
Available ....
Entry Point 16 - Report Di!:c File Space Available •••.••.••.•
Entry Point 17 - Wait For FISE •.••.•••••••••••••••.•.••
Entry Point 18 - Report Gated FISE Operation
Complete . . . . . . . . . . . . .
Entry Point 19 - Resume Execution of Specified
Task ... . . . . . . . . . . . . .
o.
Entry Point 20 - Suspend Execution of Current
Task . . . . .
Entry Point 21 - Suspend Execution of Specified
Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
Entry Point 22 - Go To Specified Task Context
(DEBUG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Entry Point 23 - Run User Break Receiver (DEBUG) ••...••..•
Entry Point 24 - Restart Debug (DEBUG) • • • • . • • • • • . . • • • • •.
Entry Point 25 - Wait For Any No-Wait Operation
Complete, Message Interrupt or Break Interrupt. . • • • . • . . . . .•
Entry Point 26-Continue Specified Task. • • • • . • . • • • . . . . . • ..
Entry Point 27 - General El"queue •••••••••••••••••..•...
Entry Point 28 - Report Run Request Post Processing
Complete . . . . . . . . .
~
Entry Point 29 - Report Wait Mode Run Request
Starting ..
Entry Point 30 - Enable DEBUG Mode Break. . • . • • • . • • • • . . ..
Entry Point 31 - Hold Current Task. • • • • • • • • . • • • . • . • . • . ..
a

3.1.16
3.1.17
3.1.18
3.1.19
3.1.20

0

3.1.21
3.1.22

•

,.

••••••••••••••.••••••••••••••••••••••

0

•••••••••••••••••••

5

•••••••

0

•

•

•

•

•••••••••••

•

•

•

•

•

•

•

•

•

•

•

0

••••••••••

•

•

•

•

•

•

•

•

0

•

0

••••••••••••

0

0

3.1.23
3.1.24
3.1.25
3.1.26
3.1.27
3.1.28
3.1.29

0

(/

3.1.30
3.1. 31

•

0

••

0

••

0

•••

0

0

••

••

0

••••••••••••••••••••••

0

0

•••

0

••••

0

eo

C>

0

••

•••••••••

0

•

0

0

3-1
3-3
3-4
3-4
3-5
3-6
3-6
3-7
3-8
3-8
3-9
3-10
3-10
3-11
3-12
3-13
3-14
3-14

3-15
3-16
3-16
3-17
3-18
3-18
3-19

3-19
3-20
3-20
3-21
3-22
3-22
3-23

Vll

Page
3.1.32
3.1.33
3.1.34
3.1.35
3.1.36
3.1.37
3.1.38
3.1.39
3.1.40
3.1.41
3.1.42
3.1.43
3.1.44
3.1.45
3.1.46

Entry Point 32 - Hold Specified Task • • • • • • • • • • • • • • • • • • • ••
Entry Point 33 - Disable DEBUG Mode Break • • • • • • • • • • • • • ••
Entry Point 34 - Report No-Wait Message Post
Processing Complete •••.•••••••••••.•...•••.••••••••
Entry Point 35 - Report Wait Mode Message
Starting. • • • . • • • • • • . • . . • . • • • . . • • . • . . • • • • • . • • • • . • ••
Entry Point 36 - General D~queue • • • • • • • • • • • • • • • • • • • • • ••
Entry Point 37 - Wait For Memory Available •••••••••••••••
Entry Point 38 - Inhibit Asynchronous
Abort/Delete • • • • • • • . . . • • • • • • • • • • • . • • • • . • • • • • • . • • •.
Entry Point 39 - Allow Asynchronous Abort/Delete. • • • • • • • • ••
Entry Point 40 - End Action Wait. • • • • • • • • • • • • • • • • • • • • • ••
Subroutine S.EXEC 1 - Interacti ve Input Complete. • • • • • • • • • ••
Subroutine S.EXEC2 - Terrninal Output Complete. • • • • • • • • • ••
Subroutine S.EXEC3 - Wait I/O Complete. • • • • • • • • • • • • • • • ••
Subroutine S.EXEC4 - No-Wait I/O Complete • • • • • • • • • • • • • •.
Subroutine S.EXEC5 - Exit From Interrupt • • • • • • • • • . • . • • • ••
Subroutine S.EXEC5A - Ex!t From Trap Handler
With Abort •••••••••.•
Subroutine S.EXEC6 - No-Wait I/O Post Processing
Com plete. • • • • • • • • • . • . • • • • • • • • • • • • • • • • • • • • • • • • • • ••
Subroutine S.EXEC7 - Report Memory Pool Available. • • • • • • ••
Subroutine S.EXEC8 - Line; Entry to Queue By
Priority •••••••••••.••••••••••••••••••••••••••••••
Subroutine S.EXEC9 - Unl;nk Entry From Queue. • • • • • • • • • • ••
Subroutine S.EXEC 10 - Li'·,k Entry to Bottom of
f

3.1.47
3.1.48
3.1.49
3.1.50
3.1.51

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

••

3-24
3-24
3-25
3-25
3-26
3-27

3-28
3-28
3-29
3-29
3-29
3-30
3- 31
3-31
3-32

3- 33
3-33
3-34
3-35

Queue • • • • • • • • • • • • . • . • • • • • • • • • • • • • • • • • • • • • • • • • • •• 3- 3 5

3.1.52
3.1.53
3.1.54
3.1.55
3.1.56

Subroutine S.EXEC 11 - ~ii;k Entry to Top of Queue. • • • • • • . • •.
Subroutine S.EXEC 12 - R.eport Memory Scheduler
Event •••.•.•...•...•....•.•.•..•••.•.•.•....••..
Subroutine S.EXEC 13 - Break Specified Task ••••••••••••• ••
Subroutine S.EXEC 14 - R~sume Specified Task. • • • • • • • • • • • ..
Subroutine S.EXEC 15 - Suspend Execution of Current

3-36
3-38
3-39
3-40

Task ••• • • • • • • • • • • • . • • • • • • • • • • • • • • • • • • • • • • • • • • • •• 3-40

3.1.57
3.1.58
3.1.59
3.1.60
3.1.61
3.1.62
3.1.63
3.1.64

Subroutine S.EXEC 16 - Suspend Execution of Specified
Task ••••••••••••••.••••••••••••.••••••••...•.••.
Subroutine S.EXECI7 - :\')ort Current Task ••.•••••.•.••..•
Subroutine S.EXECI8 - Abort Specified Task •••.••••••.•.•.
Subroutine S.EXEC 19 - Abort Task Processing
Control Subroutine • • • • . . • • • • • • • • • • • • • • • . . . • . . . . • . . ..
Subroutine S.EXEC20 - CPU Scheduler. • • • • • • • • • • • • • • • . • •.
Subroutine S.EXEC21 - Process Task Interrupt . • • • • . • . • • . . ..
Subroutine S.EXEC22 - Wait For Completion of All
No-Wait Operations .•. . . • • • • • • • • • • . • • • • . • • . . • • • • • • •.
Subroutine S.EXEC23 - Terminate Messages In Receiver

3-41
3-41
3-42

3-43
3-44
3-48
3-49

Queue • • • • • • • • • • • • • . • • • • • • • • • • • • • • • • • • • • • • • • • • • •• 3- 50

3.1.65
3.1.66
3.1.67
3.1.68

Subroutine S.EXEC24 - Reserved. • • • • • • . . • . . • • • • • • . . • • .. 3-50
Subroutine S.EXEC25 - Tc"minate Next Run Request
in Receiver Queue .••.. . • . . • . • • • • • . . . • • . . . . • . . . • . . •. 3-50
Subroutine S.EXEC26 - Rf:~move Task Gating .•..•...•...... 3-51
Subroutine S.EXEC27 - '~'ransfer Control to Abort
Receiver • • • • • • • • • • . • . • • • • • • • • • • • • • • • • • • • • • • • • • • •• 3-51

()
I

viii

'"

3.1.69
3.1.70'
3.1.71
3.1.72
3.1.73
3.1.74
3.1.75
3.1.76
3.1.77
3.1.78
3.1.79
3.1.80
3.1.81
3.1.82
3.1.83
3.1.84

Subroutine S.EXEC28 - Delete Task Processing Control
Subroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
Subroutine S.EXEC29 - Exit Task Processing Control
Subroutine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
Subroutine S.EXEC30 - Reserved. • • • • • • • • • • • • • • • • • • • • • ••
Subroutine S.EXEC31 - Report No-Wait Run Request
Post Processing Complete ••••••••••• : • • • • • • • • • • • • • • • ••
Subroutine S.EXEC32 - Report Wait Mode Run Request
Complete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
Subroutine S.EXEC33 - Report No-Wait Mode Run
Request Complete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Subroutine S.EXEC34 - Reserved. • • • • • • • • • • • • • • • • . • • • • ••
Subroutine S.EXEC35 - Report No-Wait Mode Message
Post Processing Complete. • • • • • • • • • • • • • • • • • • • • • • • • • • ••
Subroutine S.EXEC36 - Report Wait Mode Message
Com plete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . ..
Subroutine S.EXEC37 - Report No-Wait Mode Message
Complete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
Subroutine S.EXEC38 - Inhibit Swap of Current
Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Subroutine S.EXEC39 - Enable Swap of Current Task •••••••••
Subroutine S.EXEC40 - Reserved. • • • • • • • • • • • • • • • • • • • • • ••
Subroutine S.EXEC41 - Exit Run Receiver • • • • • • • • • • • • • • • ••
Subroutine S.EXEC42 - Exit Message Receiver. • • • • • • • • • • • ••
Subroutine S.EXEC43 - Reactivate Run Receiver

3-52

3-53
3-54

3-54
3-55

3-55
3-56

3-56
3-57

3-58
3-58
3-59
3-60
3-60
3-60

Task ••••••.• • • • • • . . • • • . • • • • • • • . . • • • • . • • . • . • • • • •• 3-61

3.1.85

Subroutine S.EXEC44 - Change Priority Level of
Current Task • • • . • • • • • • • • • • • • • • • . • • • • • • • • • • • • • • • • •• 3-62

3.1.86
3.1.87
3.1.88
3.1.89
3.1.90
3.1.91
3.1.92
3.1.93
3.1.94
3.1.95
3.1.96
3.1.97
3.1.98
3.1.99
3.1.100
3.1.101

Subroutine S.EXEC45 - Change Priority Level of
Specified Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
Subroutine S.EXEC46 - Reserved. • • • • • • • • • • • • • • . • • • • • • ••
Subroutine S.EXEC47 - Reserved. • . • • • • • • • • • • • • • • • • • • • ••
Subroutine S.EXEC48 - Convert Task Number to DQE
Address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
Subroutine S.EXEC49 - Construct MRRQ • • • • • • • • • • • • • • • • ••
Subroutine S.EXEC50 - Link MRRQ to Run Receiver
of Destination Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Subroutine S.EXEC51 - Link Current Task to
Designated Wait State •••••••••••••••••••••••••••••••
Subroutine S.EXEC52 - Message or Run Request Post
Processing Subroutine. • • • • • • • • • • • • • • • • • • • • • • • • • • • • • ••
Subroutine S.EXEC53 - Validate PSB • • • • • • • • • • • • • • • • • • • ••
Subroutine S.EXEC54 - Move Byte String. • • • • • • • • • • • • • • • ••
Subroutine S.EXEC55 - Unlink Task From Designated
List and Link to Ready List. • • • • • • • • • • • • • • • • • • • • • • • • • ••
Subroutine S.EXEC56 - Resume Memory Scheduler • • • • • • • • • ••
Subroutine S.EXEC57 - Link Task to Ready List by
Priority. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
Subroutine S.EXEC58 - Link MRRQ to Message
Receiver of Destination Task ••••••••••••••••••••••••••
Subroutine S.EXEC59 - Reserved ••••••••••••••••••••••••
Subroutine S.EXEC60 - Validate PRB • • • • • • • • • • • • • • • • • • • ••

3-62
3-63
3-63
3-63
3-64
3-64

3-65
3-66
3-66
3-67
3-68
3-69
3-69
3-70
3-71
3-71

ix

3.1.102
3.1.103
3.1.104
3.1.105
3.1.106
3.1.107
3.1.108

Subroutine S.EXEC61 - Transfer Parameters From
MRRQ to Receiver Buffer ••••.•••••••••••••••••••••••.
Subroutine S.EXEC62 - Validate RXB. • • • • • • • • • • • • • . • . • • •.
Subroutine S.EXEC63 - Transfer Return Parameters
From Destination Task to MRRQ • • • • • • • • • • • • • • • • • • • • . • ••
Subroutine S.EXEC64 - No-Wait Mode Message Post
Processing Subroutine. • • • • • • • • • • • • • • • • • • • • • • • • • • • • • ••
Subroutine S.EXEC65 - No-Wait Mode Run Request
Post Processing Subroutine • • • • • • • • • • • • • • • • • • • • • • • • • • •.
Subroutine S.EXEC66 - Deallocate MRRQ •••••••••••••••••
Subroutine S.EXEC67 - Link Entry to End Action

3-71
3-72

G

3-73
3-74
3-74
3-75

Queue • • • . • • . . . • • • . • • • • • • • • • • • • • • • • • • • • • • • • • • . • •. 3-76

3.1.109
3.1.110
3.1.111
3.1.112
3.1.113
3.1.114
3.1.115
3.1.116

Subroutine S.EXEC68 - Construct and Vector Context
to End Action PSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
Subroutine S.EXEC69 - Common No-Wait Post
Processing Merge Point. • • • • • • • • • • • • • • • • • • • • • • • • • • • • ••
Subroutine S.EXEC70 - Terminate All Run Requests in
Receiver Queue of Current Task • • • • • • • • • • • • • • • • • • • • • • •.
Subroutine S.EXEC71 - Insure Startup of Destination
Run Receiver Task. • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • ••
Subroutine S.EXEC72 - Report Wait I/O Starting ••••••••••••
Subroutine S.EXEC73- - Replace Context on TSA
Stack. • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • ••
Subroutine S.EXEC74 - Reset Stack to User Level •••••••••••
Subroutine S.EXEC75 - Situational Priority

3-76
3-77
3-78
3-78
3-79
3-&0
3-80

Increment Subroutine . . . . • . . • • . . • . . . . • • . . • • . . . . . . . . •. 3-81

3.1.117

o

Subroutine S.EXEC76 - Update Task Execution
Accounting Value.. • . • • • • . • . • • . . • • • • • . • • • • • • • • . • . • • •. 3-81

3.1.118
3.1.119
3.1.120
3.2

x

3.1.121
System
3.2.1
3.2.2
3.2.3
3.2.4
3.2.5
3.2.6
3.2.7
3.2.8
3.2.9
3.2.10
3.2.11
3.2.12
3.2.13
3.2.14
3.2.15
3.2.16
3.2.17

Subroutine S.EXEC77 - Update DQE.CQC on Preemptive
Context Switch . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . . . . 3-82
Subroutine S.EXEC78 - Move Context from Stack to
T.CONTXT ••••••••••••••••••••••••••••••••••••••. 3-83
Subroutine S.EXEC79 - Push Current Context onto Stack
for Deferred EA Pull . . . . . . . . . . . . . . . . . . . . • . . . . . . . . . . . 3-83
Subroutine S.EXEC80 - Start the IPU and Verify ••••••••••.•. 3-84
Services (H.MONS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-85
Entry Point 1 - Physical Device Inquiry ••••••••••••••••••. 3-89
Entry Point 2 - Permanent File Address Inquiry ••••••••••••• 3-89
Entry Point 3 - Memory Address Inquiry ••••••••••••••••••• 3-89
Entry Point 4 - Create Timer Entry •••••••••••••••••••••• 3-89
Entry Point 5 - Test Timer Entry •••••••••••••••••••••••• 3-89
Entry Point 6 - Delete Timer Entry •••••••••••••••••••••• 3-89
Entry Point 7 - Set User Status Word ••••••••••••••••••••• 3-89
Entry Point 8 - Test User Status Word •••••••••••••••••••• 3-89
Entry Point 9 - Change Priority Level •••••••••••••••••••. 3-89
Entry Point 10 - Connect Task To Interrupt •••••••••••••••• 3-90
Entry Point 11 - Time-of-Day Inquiry ••••••••••••••••••••• 3-90
Entry Point 12 - Memory Dump Request •••••••••••••••..•• 3-90
Entry Point 13 - Load Overlay Segment •••••••••••••••..•. 3-90
Entry Point 14 - Load And Execute Overlay Segment •••••.••. 3-90
Entry Point 15 - Acti va te Task •••••••••••••••.•••.••••. 3-90
Entry Point 16 - Resume Task Execution ••••••••.••••••••• 3-90
Entry Point 17 - Suspend Task Execution ••••••••••••••.••. 3-90

o

Page
3.2.18
3.2.19
3.2.20
3.2.21
3.2.22
3.2.23
3.2.24
3.2.25
3.2.26
3.2.27
3.2.28
3.2.29

Entry Point 18 - Terminate Task Execution ••••••••••••••••
Entry Point 19 - Abort Specified Task • • • • • • • • • • • • • . • . • • ••
Entry Point 20 - Abort Self • • • • • • • • • • • • • • • • • • • • • • • • • • ••
Entry Point 21 - Allocate File or Peripheral
Device. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
Entry Point 22 - Deallocate File or Peripheral
Device. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
Entry Point 23 - Arithmetic Exception Inquiry •••• • • • • • • • • ••
Entry Point 24 - Task Option Word Inquiry • • • • • • • • • • • • • • • ••
Entry Point 25 - Program Hold Request • • • • • • • • • • • • • • • • • ••
Entry Point 26 - Set User Abort Receiver Address •••••••••••
Entry Point 27 - Submit Job From Disc File • • • • • • • • • • • • • • ••
Entry Point 28 - Abort With Extended Message. • • • • • • • • • • • ••
Entry Point 29 - Load and Execute Interactive

3-90
3-91
3-91
3-91
3-91
3-91
3-91
3-91
3-91
3-91
3-92

Debugger • • • • • • • • • • • • . . • • • • • • • • • • • • • • • • • • • • • • . • • •• 3-92

3.2.30
3.2.31
3.2.32
3.2.33
3.2.34
3.2.35
3.2.36
3.2.37

(

3.2.38
3.2.39
3.2.40
3.2.41
3.2.42
3.2.43
3.2.44
3.2.45

Entry Point 30 - Delete Interactive Debugger. • • • • • • • • • • • • ••
Entry Point 31 - Delete Task. • • • • • • • • • • • • • • • • • • • • • • • • ••
Entry Point 32 - Get Task Number. • • • • • • • • • • • • • • • • • • • • ••
Entry Point 33 - Permanent File Log • • • • • • • • • • • • • • • • • • • ••
Entry Point 34 - Username Specification ••••••••••••••••••
Entry Point 35 - Get Message Parameters •••••••••••••••••
Entry Point 36 - Get Run Parameters. • • • • • • • • • • • • • • • • • • ••
Entry Point 37 - Wait For Any No-Wait Operation
Complete; Message Interrupt or Break Interrupt. • • • • • • • • • • ••
Entry Point 38 - Disconnect Task From Interrupt •••••••••• ••
Entry Point 39 - Exit From Message Receiver. • • • • • • • • • • • • ••
Entry Point 40 - Parameter Task Activation. • • • • • • • • • • • • • ••
Entry Point 41 - Get Address Limits •••••••••••••••••••••
Entry Point 42 - DEBUG Link Service ••••••••••••••••••••
Entry Point 43 - Receive Message Link Address ••••• • • • • • • ••
Entry Point 44 - Send Message to Specified Task. • • • • • • • • • • ••
Entry Point 45 - Send Run Request to Specified

3-92
3-93
3-93
3-93
3-93
3-93
3-93
3-93
3-93
3-93
3-94
3-94
3-94
3-94
3-94

Task •••• ". • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • .• 3-94

3.2.46
3.2.47
3.2.48
3.2.49
3.2.50
3.2.51
3.2.52
3.2.53
3.2.54
3.2.55
3.2.56
3.2.57
3.2.58
3.2.59
3.2.60
3.2.61
3.2.62

Entry Point 46 - Break/Task Interrupt Link. • • • • • • • • • • • • • • •• 3-94
Entry Point 47 - Activate Task Interrupt • • • • • • • • • • • • • • • • •• 3-94
Entry Point 48 - Exit From Task Interrupt Level. • • • • • • • • • • •• 3-94
Entry Point 49 - Exit Run Receiver •••••••••••••••••••••• 3-95
Entry Point 50 - Exit From Message End Action
Routine . . . . . . . . • . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3-95
Entry Point 51 - Exit From Run Request End
Action Routine .. ,. . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . . .. 3-95
Entry Point 52 - Terminate Task Execution •••••••••••••••• 3-95
Entry Point 53 - Activate Task •••••••••••• • • • • • • • • • • • •• 3-96
Entry Point 54 - Suspend Task Execution •••••••• • • • • • • • • •• 3-97
Entry Point 55 - Allocate File or Peripheral
Device . . . . . . . . . . . . . . . . . . . . . . . ., ... '. . . . . . . . . . . . . . .. 3-98
Entry Point 56 - Physical Device Inquiry •••••••••••••• •••• 3-100
Entry Point 57 - Disable Message Task Interrupt ••••••••••••• 3-101
Entry Point 58 - Enable Message Task Interrupt ••••••••••••• 3-101
Entry Point 59 - Get Physical Memory Contents ••••••••••••• 3-101
Entry Point 60 - Change Physical Memory Contents •••••••••• 3-102
Entry Point 61 - Permanent File Log ••••••••••••••••••••• 3-103
Entry Point 62 - Resourcemark Lock ••••••••••••••••••••• 3-104
xi

Page
3.2.63
3.2.64
3.2.65
3.2.66

Entry
Entry
Entry
Entry

Point
Point
Point
Point

63
64
65
66

-

Resourcemark Unlock •••••••..•..•.•••... 3-104
Remove RSM Lock on Task Term ••.•••••••. 3-105
Task CPU Execution Time .••••..•..•..•.. 3-105
Activate Program at Given Time of

,0'·
. ·,'
',., ,

Day . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-105

3.3

3.2.67
Entry Point
3.2.68
Entry Point
3.2.69
Entry Point
3.2.70
Entry Point
3.2.71
Entry Point
3.2.72
Entry Point
3.2.73
Entry Point
3.2.74
Entry Point
System Output Module
3.3.1
Entry Point

67 - Set Synchronous Task Interrupt ••....•.•••.• 3-105
68 - Set Asynchronous Task Interrupt ••.•..•.•••• 3-106
69 - Reserved ••.••••.••••••.•••.••••.••••. 3-106
70 - Date and Time Inquiry ••.•••••••.•••••.•. 3-106
71 - Get Device Mnemonic or Type Code •.•.•••.. 3-106
72 - Enable User Break Interrupt ••••••.••..••.• 3-106
73 - Disable User Break Interrupt. •••••...••.•.. 3-106
99 - SYSGEN Initialization ••.•.•••..•...••..• 3-106
(H.SOUT) .••.•••••.•••••••.••.•....••••.. 3-107
1 - Link SLO or SBO File to System

Output Queue. . . . . . . . . . . . • • . • . • . . . . • • • . . . . . . . . • . • . . 3-108

3.3.2
3.3.3
3.3.4
3.3.5
3.3.6
3.3.7
3.3.8
3.3.9
3.3.10
3.3.11
3.3.12
3.3.13

Entry Point 2 - Reserved •.•.•...•.•••.•....••......... 3-108
Entry Point 3 - Process End of Job •.••••.•.••.••..•.•••.. 3-108
Entry Point 4 - Get and Delete M.SID Entry ••••.•••..••••.. 3-109
Entry Point 5 - Get Next SLO or SBO File •••••••••.••••••. 3-110
Entry Point 6 - Log M.SID or M.SOD •••••••••••••.•.••••. 3-112
Entry Point 7 - Allocate SLO or SBO File •••••••••.•••••.•• 3-113
Entry Point 8 - Process Deprint Com mand ••••••••.•••••••• 3-114
Entry Point 9 - Process Depunch Command •••••••...••.••• 3-115
Entry Point 10 - Acti va te System Output Task •••••••.•••.•. 3-116
Entry Point 11 - Delete Job's SLO or SBO Files •••••••••••... 3-117
Entry Point 12 - Delete Real-Time SLO or SBO
File . • • . . . . . . . . . • . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .'. . 3-1 17
Entry Point 13 - System Output Task Abort
Processing ••.••.•......••....•.•••.•.•...•..••.... 3-118

3.3.14
3.3.15

Entry Point 14 - Relink M.SID or M.SOD Entry •••..•••••••.. 3-119
Entry Point 15 - Find Free And Write M.SID or

3.3.16

Entry Point 16 - Set System Output Task's User

3.3.17

Entry Point 17 - Get Next Linked M.SID or M.SOD

M.SOD Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-120
Status Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-121
Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-122

3.3.18
3.3.19
3.3.20
3.3.21
3.3.22
3.3.23

Entry
Entry
Entry
Entry
Entry
Entry

Point
Point
Point
Point
Point
Point

18
19
20
21
22
23

-

Gate and Read Header •••..••••...••••••• 3-123
Build System FAT, FPT and FCB •.•.••••.••• 3-124
Link M.SID or M.SOD Entry .••.•...•.••.•. 3-125
Unlink M.SID or M.SOD Entry •••••.•.•..••• 3-126
Search Job Table •••••.••..•••••••.•.••. 3-128
Read Specified M.SID or M.SOD

Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-128

3.3.24
3.3.25

Entry Point 24 - Build User Disc FAT and FPT
Entries for a Disc File •••••••••.••••••..•••.••••••.•. 3-129
Entry Point 25 - Convert Device Address to
Hexadecimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-130

3.4

xii

3.3.26
Entry Point 26 - Batch Task Exit Reporting .••••••••••••••• 3-131
3.3.27
Entry Point 99 - SYSGEN Initialization •.•..•••••..••••••. 3-131Input/Output Control System (H.IOCS) •.•.••.•••..•••.•.••••••.••• 3-132
3.4.1
Entry Point 1-0penFile ..•••.•••••.•••.••••••••••••• 3-133
3.4.2
Entry Point 2 - Rewind File •••••••••••.•••.•.•••••••••• 3-133

o

·1

Page

f

3.4.3
3.4.4
3.4.5
3.4.6
3.4.7
3.4.8
3.4.9
3.4.10
3.4.11
3.4.12
3.4.13
3.4.14
3.4.15
3.4.16
3.4.17
3.4.18
3.4.19
3.4.20
3.4.21
3.4.22
3.4.23
3.4.24

Entry Point 3 - Read Record •••••.••••••.•••.••••••.••• 3-134
Entry Point 4 - Write Record •••••••..••.••••••••.••••.. 3-134
Entry Point 5 - Write End of File ••••..••.•.•••..••••••.. 3-134
Entry Point 6 - Reserved •••••••••...••...•.•••••.••••• 3-134
Entry Point 7 - Advance Record ••.•••.••..••••••••••••. 3-134
Entry Point 8 - Advance File •••••••.•••••.•••••..••...• 3-134
Entry Point 9 - Backspace Record •.•.•••.•••.•••••••.••• 3-134
Entry Point 10 - Execute Channel Program •...•..•••••••.•. 3-134
Entry Point 11 - Reserved .....•••..••.•.••••••••.•••.. 3-134
Entry Point 12 - Reserve Channel •.•..••••.•••••••.•..•• 3-134
Entry Point 13 - Release Channel Reservation •.•••••••••.•• 3-135
Entry Point 14 - OPCOM Console Type ••••..••••.•.•.•.•. 3-135
Entry Point 15 - Suspend User Until I/o Complete .••.••••..• 3-135
Entry Point 16 - Reserved ..•..••.••••..•.••.••••••.••• 3-136
Entry Point 17 - Get Memory Pool Buffer ••.•.•••••••.••••• 3-136
Entry Point 18 - Reserved .••.•..••••..•••••.••••.•••.. 3-137
Entry Point 19 - Backspace File .••.••.••.••••••••••••••• 3-137
Entry Point 20 - Upspace .••..••..•.••...•••...••.•.•. 3-137
Entry Point 21 - Erase or Punch Trailer ••••••••••••••.•.•• 3-137
Entry Point 22 - Eject/Purge Routine •.•••••.••••••.•••••• 3-138
Entry Point 23 - Close File .••..•••.•••••••••••••.•.••• 3-138
Entry Point 24 - Reserve Dual Ported Disc/Reserve
FHD Port . . . . . . . . . . . . . . . . . .
3-139
Entry Point 25 - Wait I/o •....••.•••••.•••••.••.••••.• 3-139
Entry Point 26 - System Console Wait ...•••.•.••••.•.•.•• 3-139
Entry Point 27 - Release Dual Ported Disc/Release
FHD Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-139
Entry Point 28 - Absolutize TCW for Class lEI
Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-139
Entry Point 29 - Handler Entry Point 5 and
2 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-140
Entry Point 30 - Adjust TCW Format to Bytes •••.•••••••.•• 3-140
Entry Point 31 - Adjust TCW Format to Halfwords •.••.•.•..• 3-141
Entry Point 32 - Adjust TCW Format to Words ••.•.••......• 3-142
Entry Point 33 - Reserved •••••..••••....••••...••.•.•. 3-143
Entry Point 34 - No-Wait I/O End Action Return ••.•••...•.•. 3-143
Entry Point 35 - Reserved ••••..•••.•.....•••...••.•... 3-143
Entry Point 36 - Restart I/O ..•••.•....•••••••.•.•••.•. 3-143
Entry Point 37 - Virtual Address Validate •.•..•.•.••..••... 3-144
Entry Point 38 - Kill All Outstanding I/O •.•..•••.••••..... 3-144
Entry Point 39 - Discontiguous E-Memory Data
II

3.4.25
3.4.26
3.4.27

•••••••••••••••••••

II

3.4.28
3.4.29
3.4.30
3.4.31
3.4.32
3.4.33
3.4.34
3.4.35
3.4.36
3.4.37
3.4.38
3.4.39

Address Check . • . . • . . . . . . . . •

3.4.40
3.4.41
3.4.42
3.4.43
3.4.44
3.4.45
3.4.46
3.4.47
3.4.48

II

II

••

••••

••••••••••••••••••••••

3-14-5

Entry Point 40 - Build 10CDIs for Extended
I/O Reads and Writes .........•...••••.••..•••..•.... 3-146
Entry Point 41 - Reserved ..•...•.•.•.••.•...•.•..•.... 3-147
Entry Point 42 - Reserved ..........•...••....•••••••.. 3-147
Entry Point 43 - Reserved ...........•..•••.••.•.••.... 3-147
Entry Point 99 - SYSGEN Initialization ••..•..•••...•.•.•. 3-147
Subroutine S.IOCS 1 - Post I/O Processing ••..••.•.••.•....• 3-148
Subroutine S.IOCS2 - Perform Device Testing ....••....•.... 3-151
Subroutine S.IOCS3 - Unlink I/O Queue From COT ....•.••... 3-151
Subroutine S.IOCS4 - Half ASCII to Full AS~II
Conversion . . . . . . . . . . . . . . . . . .
3-152
II

••

II

II

••

II

II

•

II

II

II

••

II

•

II

•

II

II

"

xiii

3.4.49
3.4.50

Subroutine S.IOCS5 - Peripheral Time Out ••••••••••••••••• 3-153
Subroutine S.IOCS6 - Buffer To Buffer Move
Routine (Byte) .••.••.••• e . . . . .
~
3-154
Subroutine S.IOCS7 - Buffer to Buffer Move
Co

3.4.51

.........

..............

•

Routine (Word) .•.•...•.•....•..•••.•...••.......... 3-154

3.4.52
3.4.53
3.4.54

Subroutine S.IOCS8 - Buffer to Buffer Move
Routine (Doubleword) •••••••••••••••••••••••••••••••• 3-155
Subroutine S.IOCS9 - 1/0 Handler Abort ••••••••••••••••••• 3-156
Subroutine S.IOCS 10 - Delete I/O Queue And OS
Buffer .••.•.....•...........••.••••.•...••..•.... 3-156

3.4.55
3.4.56
3.4.57

Subroutine S.IOCSl1- GPMC Device Status •••••••••••••••• 3-157
Subroutine S.IOCS12 - Store IOCD's for Extended
I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-158
Subroutine S.IOCS 13 - Allocate I/O Queue and
Buffer Space . . • . . . . . . . • . . • . • . . • • . • . . • • . . . . . . . . . . . . 3-159

3.4.58
3.4.59

Subroutine S.IOCS 14 - Reserved •••••••••••••••••••••••• 3-160
Subroutine S.IOCS 15 - Delete 1/0 Queue and OS
Buffer • . . . . . . . . . . . . . . . . • . • . • • . . . . • . . . . • . . . . . . . . . . 3-160

3.4.60
3.4.61
3.4.62
3.4.63
3.4.64

Subroutine
Subroutine
Subroutine
Subroutine
Subroutine

S.IOCS 16
S.IOCS 17
S.IOCS 18
S.IOCS 19
S.IOCS20

-

Find FPT •••••••••••••••••••••••• 3-160
Link FAT •••••••••••••••••••••••• 3-161
Initialize Blocking Buffer ••••••••••••• 3-162
Get SYC/SGO Space Definition •••••••• 3-162
Get Data Address and Transfer

3.4.65
3.4.66
3.4.67

Subroutine S.IOCS21 - Read Logical Blocked Record •••••••••• 3-163
Subroutine S.IOCS22 - Report Blocked I/O Error ••••••••••••• 3-164
Subroutine S.IOCS23 - Post Process Non-Device
Access I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-165
Subroutine S.IOCS24 - Restore FCB Parameters

Count •..•......••........•.••••.•.••.•••••••..•. 3-163

3.4.68

from IOQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-165

3.4.69
3.4.70
3.4.71
3.4.72
3.4.73
3.4.74

Subroutine
Subroutine
Subroutine
Subroutine
Subroutine
Subroutine

S.IOCS25
S.IOCS26
S.IOCS27
S.IOCS28
S.IOCS29
S.IOCS30

-

Save FCB Parameters in Spad •••••••••• 3-166
Write Logical Blocked Record ••••••••• 3-166
Perform Implicit Open ••••••••••••••• 3-167
Initialize IOQ Entry ••••••••••••••.•• 3-167
Report I/O Complete •••••••••••••••• 3-168
Advance Logical Blocked

Record ••.••.•..•..••••..•.•••.•.•.••.••••••••.•• 3-169

3.4.75
3.4.76

Subroutine S.IOCS31 - Mark Units Offline •••••••••••••••.• 3·-169
Subroutine S.IOCS32 - Restore FCB Parameters
fro m 5 pad .•..•••••••••••...••••.....••••.•....... 3-1 70

3.5

xiv

3.4.77
3.4.78
Resource
3.5.1
3.5.2
3.5.3
3.5.4
3.5.5
3.5.6
3.5.7
3.5.8

Subroutine S.IOCS33 - Update Disc FAT ••••••••••••••••••• 3-170
Subroutine S.IOCS34 - Allocate Variable IOQ Entry ••••••••••• 3-171
Allocator (H.ALOC) •••••••••••••••••••••••••••••••••• 3-173
Entry Point 1 - Construct TSA and DQE •••••••••••••••••.• 3-175
Entry Point 2 - Task Activation Processing ••••••••••••.•••• 3-176
Entry Point 3 - Task Exit Processing •••••••••••••.••••••• 3-177
Entry Point 4 - Allocate Memory ••••••••.••••••••••••••• 3-177
Entry Point 5 - Deallocate Memory •••••••••••••••••••••. 3-178
Entry Point 6 - Allocate File/Device ••••••••••••••••••.•• 3-179
Entry Point 7 - Deallocate File/Device ••••••••••••••••••• 3-179
Entry Point 8 - Get Dynamic Extended Indexed
Data Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-181

(

3.5.10

Entry Point 9 - Free Dynamic Ex:ended Indexed
Data Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-181
Entry Point 10 - Get Dynamic Task Execution

3.5.11

Entry Point 11 - Free Dynamic 1 ask Execution

3.5.9

Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-181
Space • • . • • • • • . . . . . . • . • . . . . . . . . . . . . . • . . • . • • • . . • • . 3-181

3.5.12
3.5.13
3.5.14
3.5.15
3.5.16
3.5.17
3.5.18

Entry Point 12 - Share Memory With Another Task •••••.•.••. 3-181
Entry Point 13 - Get Shared Memory (INCLUDE) ••••.••••••• 3-181
Entry Point 14 - Free Shared Memory (EXCLUDE) ••••••..•.. 3-182
Entry Point 15 - Get IE' Class I/O Map Block .•••••••.•.•••• 3-182
Entry Point 16 - Free IE' Class 10 Map Block •••••••.••.•••• 3-182
Entry Point 17 - Allocate Disc File By Space
Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-183
Entry Point 18 - Share CSECT ~iemory with Another
Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-184
Entry Point 19 - Unlock and Dequeue Shared
e

3.5.19

Memory •...••......•.•.. " ...•.••. . "......................... .. 3-184

3.5.20
3.5.21
3.5.22
3.5.23
3.5.24
3.5.25

(

3.5.26
3.5.27

Entry Point 20 - Deallocate Me' lory Due to Swapping •••••••.• 3-184
Entry Point 99 -SYSGEN Initialization •••.•....••.••••..•. 3-185
Subroutine S.ALOC1 - Read and Verify Preamble •••.••••.••. 3-185
Subroutine S.ALOC2 - Deallocate TSA and DQE ••••••..•...• 3-186
Subroutine S.ALOC3 - Write Prntection Image to RAM
(32/7x only) ...................................................................... 3-187
Subroutine S.ALOC4 - Magnetic Tape Dismount
Message ............................................................................ 3-187
Subroutine S.ALOC5 - Magnetic Tape Mount Message •••.••••• 3-188
Subroutine S.ALOC6 - Deallocate All Peripheral
Devices .............................
3-189
Subroutine S.ALOC7 - Test for Device on System .••••••••••• 3-189
Subroutine S.ALOC8 - Get First Matching UDT •••.•..•.•••• 3-190
Subroutine S.ALOC9 - Get Next Matching UDT •••••..•••••• 3-191
Subroutine S.ALOC 10 - Allocate Disc File by Space
Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-192
Subroutine S.ALOC 11 - Allocate Blocking Buffer •••...•.•••. 3-193
Subroutine S.ALOC 12 - Locate FPT /F AT Address for
Allocated LFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-193
Subroutine S.ALOC 13 - Locate Shared Memory Table
Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-194
Subroutine S.ALOC 14 - AllocatE'· FPT /F AT •.••••...••••••.• 3-195
Subroutine S.ALOC 15 - Allocat·.. Shared Memory
Swap File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . " ...... 3-196
Subroutine S.ALOCI6 - Delete Swap File Space •..•..••.•••. 3-196
Subroutine S.ALOC 17 - Update ~~ap Segment
Descriptor Count in DQE •••...•••••••.•..••....•..•.• 3-197
Subroutine S.ALOC 18 - Get Swap File Space •.•.•.•..••••.• 3-198
Subroutine S.ALOC 19 - Remap Users Address Space .....••... 3-199
Subroutine S.ALOC20 - Validate Buffer Address .....•.••..•. 3-199
Subroutine S.ALOC21 - Allocate Memory Pool
Buffer .............................
3-200
Subroutine S.ALOC22 - Release Memory Pool Buffer .•....•.. 3-201
Subroutine S.ALOC23 - Compress File Name .•.••..•.•.•.•• 3-201
Subroutine S.ALOC24 - Uncompress File Name ••..•......... 3-202
Subroutine S.ALOC25 - Set Any Bit In Memory •••.•...•....• 3-203
Ii

3.5.28
3.5.29
3.5.30
3.5.31
3.5.32
3.5.33
3.5.34
3.5.35
3.5.36
3.5.37
3.5.38
3.5.39
3.5.40
3.5.41
3.5.42

...........................

II

3.5.43
3.5.44
3.5.45
3.5.46

•

e

...............

xv

Page
Subroutine S.ALOC26 - Clear Any Bit In Memory •••••••••••• 3-203
Subroutine S.ALOC27 - Te:"t Any Bit In Memory ••••••••••••• 3-204
Subroutine S.ALOC28 - Delllocate Debugger Memory ••••••••• 3-204
Subroutine S.ALOC29 - LOc;d Debug Overlay •••••••••••••••• 3-205
Subroutine S.ALOC30 - err. 'lte A Protection Image ••••••••••• 3-206
Subroutine S.ALOC31 - Upeate Task Proctection Image Due to
Increase in Execution Space (32/7x only) •••••••••••••••••• 3-206
Subroutine S.ALOC32 - Update Shared Memory Protection
3.5.53
Image ..•.... . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-207
3.5.54
Subroutine S.ALOC33 - L'DC :e Task Protection Image Due to
Decrease in Execution Spac\C· C32/7x only) •••••••••••••••••• 3-207
Terminal Services (H. TSM) •••••• , • ' .•••••••••••••••••••••••••• 3-209
3.6.1
Entry Point 1 - Terminal :/0 interface •••••••••••••••••••• 3-212
Entry Point 2 - Syntax Scanner ••••••••••••••••••••••••• 3-214
3.6.2
3.6.3
Entry Point 3 - User Task Exit. ••••••••••••••••••••••••• 3-214
3.6.4
Entry Point 4 - User Task Abort •••••••••••••••••••••••• 3-215
Entry Point 5 - Set User Tab Positions •••••••••.••.••••.•• 3-215
3.6.5
Entry Point 6 - Break Prc.;essing Entry •••••••••••••••••.• 3-216
3.6.6
3.6.7
Entry Point 7 - Convert r,SCII Decimal To Binary •••••••••••• 3-216
3.6.8
Entry Point 8 - Convert ASCII Hexadecimal to
Binary • • . . . . . . . . . . . . . . . . . . . • • . . . • • . . . . . . . . . . . . . . . 3-216
3.6.9
Entry Point 9 - Convert Binary to ASCII Decimal •••••••••••• 3-216
3.6.10
Entry Point 10 - Convert [~inary to ASCII
Hexadecimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-216
3.6.11
Entry Point 99 - SYSGEN Initialization ••••••••••••••••••• 3-216
File System Executive (H.FISE) •••••..••.•••••••••••••••.••••.•• 3-2 J 7
3.7.1
Entry Point 1 - Get System SMD Entry •••••••••••••••••••• 3-220
Entry Point 2 - Rewrite SMD Entry •••••••••••••••••••••• 3-222
3.7.2
Entry Point 3 - Allocate Temporary Disc Space ••••••••••••• 3-223
3.7.3
Entry Point 4 - Deallocate Temporary Disc Space •••••••••••• 3-225
3.7.4
Entry Point 5 - Allocate Permanent Disc Space •••.•.••••••• 3-226
3.7.5
Entry Point 6 - Un gate FISE .•••••••••••••••••••••••••• 3-228
3.7.6
Entry Point 7 - Deallocate Permanent Disc Space ••••.••••••• 3-229
3.7.7
Entry Point 8 - ASCII Compression .••••••••.••••••••••.• 3-230
3.7.8
Entry Point 9 - Gate FISE .••••••.•••••.••.•••••••••••• 3-231
3.7.9
Entry Point 10 - Get User SMD Entry •••••••••••••••••••.• 3-232
3.7.10
3.7.11
Entry Point 11 - Permanent File Allocation Check ••••••••.•• 3-234
Entry Point 12 - Create Permanent File •••••••.••••••••••• 3-235
3.7.12
3.7.13
Entry Point 13 - Change Temporary File to
3.5.47
3.5.48
3.5.49
3.5.50
3.5.51
3.5.52

3.6

3.7

o

o

Permanent ••••••••••..•.••••••.••••..•.••.••••.... 3-235

3.7.14
3.7.15
3.7.16
3.7.17
3.7.18
3.7.19
3.7.20
3.7.21

Entry Point 14 - Delete Permanent File or
Non-SYSGEN Memory Partition ••••••••••••••••••••••••• 3-235
Entry Point 15 - Permaner. t File Log ••••••••••••••••••••• 3-235
Entry Point 16 - Validate Username •••.•••••.••.••••••••• 3-237
Entry Point 17 - Read Allocation Map into Memory •.•.•••...• 3-239
Entry Point 18 - Write Al1ocation Map to Disc •.•••••••.•••• 3-240
Entry Point 19 - Undefined ..••••••••••..•.•••.•••••••• 3-241
Entry Point 20 - Create Permanent File ••••••••••.•••••••• 3-241
Entry Point 21 - Change Terr,Dorary File to

3.7.22
3.7.23
3.7.24

Entry Point 22 - Set Exclusive File Lock .•.•••••••••••.•.• 3-245
Entry Point 23 - Release Exciusive File Lock ••.••.••••••••. 3-245
Entry Point 24 - Set Synchronization-File Lock •.•••.••.••.•. 3-245

Permanent ••......•.......•.......••.......••...•. 3-243

xvi

o

3.7.25

Entry Point 25 - Release Synchronization File

3.7.26

Entry Point 26 - Set Exclusive File Lock

3.7.27

Entry Point 27 - Release Exclusive File Lock

3.7.28

Entry Point 28 - Set Synchronization File
Lock (M.CALL Only) •••••••••.•••••••••••.•••••.••••. 3-246
Entry Point 29 - Release Synchronization File
Lock (M.CALL Only) ••••••..••••••••••••••••••.•••••• 3-247
Entry Point 30 - Release File Allocation in FL T •.••••••••••• 3-248
Entry Point 31 - Wait for Release of Exclusive
File Lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-248
Entry Point 32 - Wait for FL T Entry Space •••••••••••••••.• 3-249
Entry Point 33 - Record Disc File Allocation
In FL T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-249
Entry Point 34 - Exclusive Lock File If
Unallocated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-250
Entry Point 35 - Release Exclusive Lock
(Unallocated File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-250
Entry Point 36 - Release Exclusive Locks For
Unallocated Files on Task Termination •••••••••••••••••••• 3-251
Entry Point 99 - SYSGEN Initialization ••••••••••••••••••• 3-251
System Master Directory (SMD) ••••••••••••••••••••••••• 3-251
Disc Allocation Maps •••••••••••••••••••••••••••••••• 3-254
3.7.39.1
Disc Description Table ••••.•••••••••••••.••• 3-255
3.7.39.2
Disc Format •••••••••••••••••••••••••••••• 3-256
MPX-32 Disc File Gating ••••••••••••••••••••••••••••• 3-257
3.7.40.1
General Method ••••••••••••••••••••••••••. 3-257
3.7.40.2
Locking Services •••••••••••••••••••••••••• 3-257
3.7.40.3
Exclusi ve Lock (FXL) ••••••••.•.••••.••••••. 3-257
3.7.40.4
Synchronization Lock (FSL) •••••••••••••••.••• 3-257
3.7.40.5
Task Queueing •••••••••••••••••••••••••••• 3-257
3.7.40.6
Cooperative Environment •••••••••••••••••••• 3-258
System Subroutine S.FISE 1 - Search SMD for Entry ••••••••••• 3-258
System Subroutine S.FISE2 - Setup F AT for SMD
I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-259
System Subroutine S.FISE3 - Setup System FPT

Lock .•.••.•••••••••..••..•.••.•.•.•.•...•••..... 3-245

(M.CALL Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-245
(M.CALL Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-246

3.7.29
3.7.30
3.7.31
3.7.32
3.7.33
3.7.34
3.7.35
3.7.36
3.7.37
3.7.38
3.7.39
3.7.40

3.7.41
3.7.42
3.7.43

and FeB ......................................... 3-259

3.7.44
3.7.45

System Subroutine S.FISE4 - Record Disc File Allocation
in FLT . . . . . . . . . . . . . . . . . . . • . . . . . . . . . . . . . . . . . . . . . . . 3-260
System Subroutine S.FISE5 - Wait for FLT Entry

3.7.46

System Subroutine S.FISE6 - Wait for Release of File

Space ••••••.••••••••.••••••••••••••••••••••••••• 3-261
Exclusi ve Lock •••.•••••.••••.•••••••••.•••.••••••.. 3-261

3.7.47
3.7.48

C

3.7.49
3.7.50

System Subroutine S.FISE7 -Release Disc File Allocation
in FL T •..........•.......•...•.•..•.•.•..•••..... 3-262
System Subroutine S.FISE8 - Search FL T for Matching
Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-263
System Subroutine S.FISE9 - Convert LFC to Concatenated
File 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-263
System Subroutine S.FISE 10 - Checksum Disc Allocation
Map •••••••••••••....•.•..•.••••••••••••••••••••. 3-264

xvii

3.8

Interrupt and Trap Processors •••.•..•••.•...••••.••..••...•••.. 3-265
3.8.1
Power Fail Save - Auto Start Interrupt/Trap
Processor (H.IPOO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-265

3.8.2
3.8.3

System Override Interrupt/Trap Processor - 32/7x only
(H.IPOl) . . . . . . . • . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-266
System Auto Start Trap Processor - 32/27 only
(H.IPAS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-267

3.8.~

3.8.5
3.8.6
3.8.7
3.8.8
3.8.9
3.8.10
3.8.11
3.8.12
3.8.13
3.8.1~

3.8.15
3.8.16
3.8.17

Memory Parity Trap Processor (H.IP02) •••••••.•.•.••.•... 3-268
Non-Present Memory Trap Processor (H.IP03) •••.....••••... 3-269
Undefined Instruction Trap Processor (H.IPO~) •••..•.•.•.•.. 3-269
Privilege Violation Trap Processor (H.IP05) ••••••...•••.••• 3-270
SVC Trap Processor (H.IP06) •.•....••.••..••.••••••..•• 3-271
M.CALL SVC Processor (H.SVCO) ••••..••.•••••.•••..•.. 3-272
Supervisor Call Trap Processor (H.SVC 1) •••••.••.•..•••••• 3-272
M.OPEN SVC Processor (H.SVC3) ••••••••••..•••..•.•••• 3-273
MRTRN/M.RTNA SVC Processor (H.SVC~) •••••••••.•.••••• 3-27~
Invalid SVC Type Processor (H.SVCN) •..••..••••••••••••• 3-274
Machine Check Trap Processor (H.IP07) .••.•.••.•••••••••• 3-275
System Check Trap Processor (H.IP08) •••••••••••.••••.••. 3-276
Map Fault Trap Processor (H.IP09) .•••.•••••••••.••••.••• 3-277
Address Specification Trap - CONCEPT /32 only
(H.IPOC) . . . . . . . . . . . . . . . • . . . . . . . . . . . . . . . . . . . . • . . • . 3-278

3.8.18
3.8.19
3.8.20
3.8.21
3.8.22
3.8.23

Block Mode Timeout Trap Processor (H.IPOE) ••••••••••••••• 3-279
Arithmetic Exception Interrupt/Trap Processor .
(H.IPOF) • . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . • . • . . . . . 3-280
Cache Memory Parity Error Trap Processor - 32/87
only (H.IP 10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . 3-281
Console Interrupt Processor (H.IP 13) .••.•••..••.••••••.•. 3-282
Call Monitor (CALM) Interrupt Processor (H.IP27) •••••••..•• 3-283
Real-Time Clock Interrupt Processor (H.IPCL) ••.•••.••.•••. 3-283

,"-'"

I

~

4. SYSTEM TASK DESCRIPTIONS
~.1

Swap Scheduler Task (J.SWAPR) ••.•••..•••...•..••..•.•.••..•..

4-1

4.1.1

Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . . . . . ..

4--1

4.1.2

Entry Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.2.1
Dynamic Expansion of Address Space. • . • • • • . . • ..
~.1.2.2
Deallocation of Memory. • • • . • . • • . • • • • • • • • • ••
~.1.2.3
Request for Inswap (Memory Roll-In) • • • • • • . • • • ••
~.1.2.~
Change in Task Status. • • • • • • • • • . • • • • . • • • • • ••
~.1.2.5
Expansion Request for Inclusion of Shared

4-6

Memory •.••.

'I

•••••••••••••••••••••••••••

~-6

4-6
4-6
4-6
~-7

Exit Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-7
4.1.~
Selection of Outswap Candidates •...••••••..••...•...••. 4-7
~.l.5
Outswap Process (Memory Roll-Out) ••..•.•••••••••.•.••• 4-9
~.1.6
Inswap Process (Memory Roll-In) ••••....••.••••.•••••.•. 4-9
4.1.7
Swap I/O Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ~-9
4.1.8
Other Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ~-10
Terminal Service Manager Task (J.TSM) ...•.•••••••••.•••.•••....• ~-10
4.2.1
Functional Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-10
4.2.2
Initial Activation . . . . . . . . . . . . . . . . . . ~ . . . . . . . . . . . . . . . . 4-10
4.2.3
Terminal Log-On . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-10
4.1.3

4.2

c
,

xviii

,.

4.2.4
4.2.'
4.2.6

Command Processing ••••••••••••••••••
Resumption of Command Processing •••••••
Messages •••••••••••••••••••••••

·............. 4-10
· ....... ...... 4-11
4-11

,. SYSTEM GENERAnON TASK DESCRIPTION
5.1
5.2

5.3

5.4
5.5

c-

...... .5-2
.5-1
.5-3

Task Structure and Functional Organization •••••••
5.1.1
SYSGEN Overlay Structure and Functions
5.1.2
Directive Processing Breakdown ••••••
SYSGEN Library (SG.LIB) ••••••••••••••••••••
5.2.1
DID and OTT Definitions •••••
'.2.1.1
Device Type Table
'.2.1.2
Device ID Table ••
SYSGEN Scanner •••••••••••••••••••
5.2.2
5.2.2.1
Directive Definition List ••••
'.2.2.2
SYSGEN Scanner Example •••
TabJ e Building •••••••••••.•••••••••••••••••••••••••••••••••
5.3.1
System Tables •••••••••••••••••••••
'.3.1.1
Tables Referenced in SYSGEN ••
Internal Tables ••••••••••••••••••
5.3.2
'.3.2.1
SYSGEN Internal Tables ••••
Handler and Module Loading and Initialization •••••
S pee ial Considerations ••••••••••••••••••••
5.5.1
MAPTGT/MAPHOST Routines ••••••••••••••••••••••••
5.5.2
Special Case Activation •••••••••••••

....
..............

. . . . . . .. . . . . . . .

.5-8
.5-8
.5-9
.5-10
5-11
.5-13
.5-14
.5-1.5
.5-1'
.5-16
.5-17
.5-18
.5-19
.5-19
.5-19
.5-20

6. BATCH TASK DESCRIPTIONS

6.1

........ . .. ....... . ...........

Cataloger
6-1
6.1.1
Introduction ••••••••••••••
6-1
Processing Regions .. _. . . . • . . . . . . • . • •
. .•.•••••... 6-1
6.1.2
6.1.2.1
X Region ••....••••.••..••...•..•.•••.••
6-2
6.1.2.2
M Region ........•....•••..•••••.••••.
6-2
6.1.2.3
C Region
6-2
General Table Area
6.1.2.3.1
6-3
SYMTAB Entries
6.1.2.3.2
6-4
6.1.2.4
B Region
6-6
6.1.3
Load Module Structure •••••••••••••••
6-7
6.1.4
Symbol Table Output Format •••••••••
6-13
Load Module Format (Card) ••••••••••••••••
6.1.'
6-13
6.1.6
Object Language ••••••••••••••••••
6-14
6.1.6.1
Object Module Records •••••
6-14
6.1.6.2
Object Commands •••••••
6-14
6.1.6.2.1
Absolute Data •••••••••••••••
6-1'
6.1.6.2.2
Program Origin ••••••••••••••
6-1'
6.1.6.2.3
Absolute Data Repeat ••••••••••
6-15
6.1.6.2.4
Transfer Address
6-15
6.1.6.2.5
Relocatable Data ••••••••
6-15
6.1.6.2.6
Program Name •••••••••••
6-16
Relocatable Data Repeat
••••••• 6-16
6.1.6.2.7
6.1.6.2.8
External Definition. •
• •••• 6-16

.............
.... . .. .. . .
.
.
.
.
.
.
.
· ...... ...... .
.......

(

,,,
"

xix

6.1.6.3

6.2

Forward Reference ••••••••••••••
6.1.6.2.9
External
Reference •••••••••••••
6.1.6.2.10
6.1.6.2.11
Common Definition •••••••••••••
6.1.6.2.12
Common Reference •••••••••••••
6.1.6.2.13
DATA POOL Reference •••••••••••
6.1.6.2.1"
Escape to Extended Functions ••••••
6.1.6.2.1'
Common Origin ••••••••••••••••
6.1.6.2.16
Object Termination •••••••••••••
Extended Object Commands ••••••••••••••••••
6.1.6. 3.1
Section Definition" ••••••••••••••
6.1.6.3.2
Section Origin •••••••••••••••••
6.1.6.3.3
Section Reloeatable Reference •••••
6.1.6.3.4
Section Transfer Address •••••••••
Section External Definition ••••••••
6.1.6.3.'
6.1.6.3.6
Section External Reference ••••••••
6.1.6.3.7
Section Forward Reference ••••••••
6.1.6.3.8
Large Common Definition •••••••••
Large Common Origin •••••••••• "••
6.1.6.3.9
Large Common Reference •••••••••
6.1.6.3.10
DEBUGGER Information ••••••••••
6.1.6.3.11
6.1.6.3.12
Object Creation DatelTime ••••••••
Product Identification •••••••••••
6.1.6.3.13

DEBUG • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • ••
6.2.1
The DEBUG Environment •••••••••••••••••••••••••••••
Entry Points •••••••••••••••••••••••••••••••••••••••
6.2.2
6.2.2.1
Entry Point 1 - Start-Up •••••••••••••••••••••
6.2.2.2
Entry Point 2 - Restart ••••••••••••••••••••••
6.2.2.3
Entry Point 3 - Trap/Break Receiver ••••••••••••
6.2.2.4
Entry Point 4 - M.BRKXIT Receiver ••••••••••••
6.2.2.'
Entry Point , - Abort Receiver ••••••••••••••••
6.2.3
H.EXEC Calls •••••••••••••••••••••••••••••••••••••
H.MONS Calls ..................................... .
6.2."
PIle Code Usa.ge • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
6.2.'
6.2.6
TSA References ••••••••••••••••••••••••••••••••••••
6.2.7
Communication Region References ••••••••••••••••••••••
Dispatch Queue Entry (DQE) References • • • • • • • • • • • • • • • • ••
6.2.8

f!S!
6-16
6-17
6-17
6-17
6-18
6-18
6-18
6-18
6-18
6-19
6-19
6-19
6-20
6-20
6-20
6-21
6-21
6-21
6-21
6-22
6-23
6-23
6-24

6-24
6-26
6-26
6-26
6-27
6-27
6-28
6-28
6-29
6-30
6-31
6-31
6-31

7. SYSTEM TRACE

7.1
7.2
7.3
7.4

7.'
7.6

7.7
7.8
7.9
7.10
7.11
7.12
7.13
7.1"

7.U

Trace Type 1 - Task Activation •••••••••••••••••••••••••••••••••• 7-3
Trace Type 2 - Task Termination ••••••••••••••••••••••••••••••••• 7-4
Trace Type 3';' Dispatch CPU to Task ••••••••••••••••••••••••••••• 7-'
Trace Type" - Task Relinquishes CPU ••••••••••••••••••••••••••••• 7-6
Trace Type , ... Que\le VO ••••••••••••••••••••• ". • • • • • • • • • • • • • • •• 7-7
Trace Type 6 - EI'lCf I/O ••••••• '•••••••"• • • • • • • • • • • • • • • • • • • • • • • • •• 7-8
Trace Type 7 - Interrupt/Trap Handler Entry •••••••••••••••••••••••• 7-9
Trace Type 8 •. Interrupt/Trap Handler Exit •••••••••••••••••••••••• 7-10
Trace Type 9 - M.5HUT •••••••••••••••••••••••••••••••••••••• 7-11
Trace Type 10 - M.OPEN ••••••••••••••••••••••••••••••••••••• 7";12
Trace Type 11 - M.IOFFor BEl ••••••••••• ". • • • • • • • • • • • • • • • • • • • •• 7-13
Trace Type 12 - MJONN or UEI ••••••••••••••••••••••••••••••••• 7-14
Trace Type 13 - M.CALL ••••••••••••••••••••••••••••••••••••• 7-1'

Trace Type I" - SVC (1 or 2) ••••••••••••••••••••••••••••••••••• 7-16
Trace Type l' - M.RTRN or M.RTNA •••••••••••••••••••••••••••• 7-17

Change 2
xx

c

Page

(-

7.16
7.17
7.18
7.19
7.20
7.21
7.22
7.23

Trace Type
Trace Type
Trace Type
Trace Type
Trace Type
Trace Type
Trace Type
Trace Type

16 17 18 19 20 21 22 23 -

Inswap Task ••••••
Outswap Task ••••
Dispatch IPU Task
Relinquish IPU Task
CALM •••••••••••.
Mobile Event Trace 1
Mobile Event Trace 2
SVC Type 15

. ..
. . .. .

. . .. . . . . . .
..... .
... . . . . .

. ..
...

.....

. .. . . . .

7-18
7-19
7-20
7-21
7-22
7-23
7-24
7-25

8. SYSTEM INmALlZERS AND BUILDERS
8.1

8.2
8.3

(-

8.4

8.5

8.6

8.7

The SDT Leader ••••••••••••••
Functional Description
8.1.1
SDT
Loader Activation
8.1.2
Required
Input •••••••
8.1.3
SDT
Loader
Processing
8.1.4
SDT Loader Resul ts •••
8.1.5
BOOT xx (RLOAD, SYSINIT, and SYSBUILD).
BOOT xx Components
8.2.1
The RLOAD Program Section •
RLOAD Activation.
8.3.1
RLOAD Processing ••
8.3.2
RLOAD Results •••••
8.3.3
The Device Parameter Table (DPT)
8.3.4
The SYSINIT Program Section ••.
SYSINIT Activation
8.4.1
SYSINIT Processing
8.4.2
SYSINIT Results •••
8.4.3
The SYSBUILD Task ••••••••••
SYSBUILD Activation ••
8.5.1
SYSBUILD Processing ••
8.5.2
SYSBUILD Results •••
8.5.3
On-Line Restart ••••••••••••••
Functional Description
8.6.1
RESTART Activation
8.6.2
Required Input •••••.
8.6.3
REST
AR T Processing
8.6.4
REST
AR T Results
8.6.5
J.INIT and J.TINIT Tasks.

. ....

. . ..
. . .. .
. .. . .
·....

. . .. .

.. . . .

. ..

.....
. . ...
·... .
· . .. . .
·
.
.
.
.
.....
......
. . . .. . . . . .

.....

8-3
8-3
8-3
8-3
8-3
8-4
8-4
8-5
8-6
8-6
8-6
8-7
8-7
8-9
8-9
8-9
8-10
8-10
8-10
8-10
8-11
8-11
8-11
8-11
8-12
8-12
8-13
8-13

9. INTERNAL PROCESSING UNIT UPU)
9.1

9.2
(~

9.3

Overview ••••••••...••••••••

IPU - Memory Interface
9.1.1
IPU - CPU Interface ••••
9.1.2
System Services and I/O
9.1.3
Data Structures ••••..•.•.•••.
Program Status Doubleword (PSD)
9.2.1
IPU Status Word ••
9.2.2
Options
IPU Bias
9.3.1

. . . . . . .. . . . .

. ..
·....

.....
· .. . .

.....
.....

9-1
9-1
9-1
9-1
9-2
9-2
9-4
9-5
9-5
xxi

Page
9.4

9.5

9.6

9.7

9.8

9.9

...... .. . . .. . ..... . . . . .. . . . . .... . .. . . . . .

CPU Only
9.3.2
Task Scheduling ••••••••••••••••••••••••••••••••••••••.••••••
9.4.1
IPU - Biased Tasks ••..•.••••••••••••••••••••••••••••
9.4.2
Unbiased Tasks •••••••••••••••••••••••••••••••••••••
9.4.3
CPU - Only Tasks •••••••••••••••••••••••••••••••••••
IPU Execution •••••••••••••••••••••••••••••••••••••••••••••
9.5.1
Execution of Time Distribution Tasks in the IPU •••••••••••••
9.5.2
SVC, CALM, Privileged Instructions and Errors ••••••••••••••
9.5.3
CPU Execution of IPU Tasks ••••••.••••••••••••••••••••
IPU Executive 'Module Descriptions ••••••••••••••••••••••••••••••
Entry Point 1 - IPU Executive ••••••••••••••••••••••••••
9.6.1
9.6.2
Entry Point 2 - Execute IPU Task •••••••••••••••••••••••
9.6.3
Entry Point 3 - SVC Trap Handler •••••••••••••••••••••••
9.6.4
Entry Point 4 - CALM Trap Handler ••••••••••••••••••••••
9.6.5
Entry Point 5 - Exceptional Condition (ERROR) Trap
Handler ••••••••••••••••••••••••••••••••••••••••••
9.6.6
Subroutine S.IPU 1 - Perform Stack Push •••••••••••••••••••
9.6.7
Subroutine S.IPU2 - IPU Initialization ••••••••••••••••••••
9.6.8
Subroutine S.IPU3 - Terminate IPU Execution •••••••••••••••
IPU Scheduler Module Descriptions ••••••••••••••••••••••••••••••
9.7.1
Entry Point 1 - Field IPU Halt ••••••••••••••••••••••••••
9.7.2
Entry Point 2 - Schedule IPU-Biased Tasks •••••••••••••••••
9.7.3
Entry Point 3 - Schedule Unbiased Tasks ••••••••••••••••••
9.7.4
Subroutine S.CPU 1 - Link Task to IPU Request State •••••••••
9.7.5
Subroutine S.CPU2 - IPU Eligibility Test ••••••••••••••••••
IPU Accounting Module Descriptions ••••••••••••••••••••••••••••.
9.8.1
Entry Point I - Field Interval Timer Interrupt •••••••••••••••
9.8.2
Subroutine S.IPUIT 1 - Perform Accounting after
IPU Trap •••••••••••••••••••••••••••••••••••••••••
9.8.3
Subroutine S.IPUIT2 - Perform Accounting Prior to
Starting the IPU ••••••••••••••••••••••••••••••••••••
IPU SYSGEN Directive •••••••••••••••••••••••••••••••••••••••

9-5
9-5
9-5
9-5
9-6
9-6
9-6
9-6
9-7
9-7
9-7
9-7
9-7
9-7

0

9-7
9-7.
9-8
9-8
9-8
9-8
9-8
9-8
9-9
(t)
9-9 \u.!
9-9
9-9
9-9
9-9
9-9

10. MPX-32 HANDLER FOR HIGH SPEED DATA INTERFACE (HSD)
10.1
10.2

10.3

xxii

HSD Overview • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • ••
Related Data Structures • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • ••
10.2.1
HSD I/O Command Block Structure • • • • • • • • • • • • • • • • • • • • ••
10.2.2
IOCB Classes. • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • ••
10.2.2.1
Device Command Transfer. • • • • • • • • • • • • • • • • ••
10.2.2.2
Device Status Transfer • • • • • • • • • • • • • • • • • • • • ••
10.2.2.3
Transfer In Channel ••••••••••••••••••••••••
10.2.2.4
Data Transfer Request. • • • • • • • • • • • • • • • • • • • ••
10.2.2.5
Data Chain Descriptor. • • • • • • • • • • • • • • • • • • • ••
HSD Request Processing • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • ••
10.3.1
FCB Format Request ••••••••••••••••••••••••••••••••
10.3.1.1
I/O Operation Codes. • • • • • • • • • • • • • • • • • • • • • ••
10.3.1.2
Device Open •••••.•••••••••••••••••••••••
10.3.1.3
Device Close. • • • • • • • • • • • • • • • • • • • • • • • • • • ••
10.3.1.4
Device Control Functions ••••••••••••••••••••
10.3.1.5
Data Transfer Initiate Requests. • • • • • • • • • • • • • ••
10.3.2
STARTIO Format Requests. • • • • • • • • • • • • • • • • • • • • • • • • • ••

10-1
10-1
10-1
10-2
10-3
10-3
10-3
10-3
10-3
10-3
10-4
10-5
10-5

10-5
10-5
10-6
10-6

0

Subtract Ore and Branch Non-Zero ••••••••••••• 10-7
AsynchronoJs Status Presentation and
Notification. • • • • • • • • • • • • • • • • • • • • • • • • • • • •• 10-8
HSD I/O Request Processing Details •••••.•••••••••••.•••••••••• 10-8
10.4.1
FCB Format Request Processing. • • • • • • • • • • • • • • • • • • • • • •• 10-8
10.4.1.1
FCB Request 10CL Size Computation ••••••••••• 10-9
10.4.1.2
FCB Request 10CL Construction ••••••••••••••• 10-9
10.4.2
Logical 10CL STARTIO Format Request •••••••••••••••••• 10-10
10.4.3
Conversion of Logical to Physical 10CL ••••••••••••••••••• 10-10
10.4.4
Physical 10CL Processing •••••.••••••••••••••••••••••• 10-11
Common Request Handling ••••.•••.•••••••••••••••••••••••••• 10-11
Product Relationships ••••••••.•••••••••••••••••••••••••••••• 10-11
Device Considerations •••••••••.•••••••••••••••••••••••••••• 10-11
10.3.2.1
10.3.2.2

10.4

10.5
10.6
10.7

H. MEMORY-ONLY MPX-32

11.1

(

System Modifications • • • • • • • • . • • • • • • • • • • • • • • • • • • • • • • • • • • • • ••
11.1.1
System Resource Allocator (H.ALOC) .•••••••••••••••••••
11.1.2
File System Executive (H.FISE) • • • • • • • • • • • • • • • • • • • • • • • ••
11.1.3
System Loader (H.LODR) • • • • • • • • • • • • • • • • • • • • • • • • • • • ••
11.1.4
System Spooled Output (H.SOUT) ••••••••••••••••••••••••
System Swap Scheduler (J.SW APR) ••••••••••••••••••••••
11.1.5

11-1
11-1
11-1
11-2
11-2
11-2

12. E-CLASS DEVICE HANDLERS

12.1
12.2
12.3
12.4
12.5
12.6
12.7
12.8
12.9
12.10
12.11
12.12

Entry Point 1 - Queue Drive Interrupt Service Routine •••••••••••••••
Entry Point 2 - Queue Start Interrupt Service Routine. • • • • • • • • • • • • • ••
Entry Point 3 - Spurious Interrupt Service Routine ••••••••••••••••••
Entry Point 4 - Lost (Timed Out) Interrupt Processor ••••••••••••••••
Entry Point 5 - Opcode Processing Reentrant Service • • • • • • • • • • • • • • ••
Entry Point 6 - Post Transfer Processing Service •••••••••••••••••••
Entry Point 7 - Error Processing ••• • • • • • • • • • • • • • • • • • • • • • • • • • • ••
Entry Point 8 - Device Handler Initialization I/O
Handlers ••••••••••••••••••••••••••••••••••••••••••••••••
Subroutine S.IOCS2 - Common Test Device •••••••••••••••••••••••
Subroutine S.IOCS3 - Common Queue Entry Unlink. • • • • • • • • • • • • • • • ••
Subroutine S.IOCS4 - Half ASCII to ASCII Conversion • • • • • • • • • • • • • • ••
E-Class Line Printer Handler Coding Example •••••••••••••••••••••

12-1
12-2
12-2
12-3
12-412-5
12-6
12-6
12-8
12-8
12-9
12-11

13. GENERAL PURPOSE MULTIPLEXER (GPMC) SUPPORT

13.1
13.2
13.3

(

..

';

j

13.4

Overview •••••••.•••••••••••••••••••••••.••••••••••••••••
Hardware Structure .•••••..•.•••••••••••••••••••••••••••.•.
Software Structure ••••••••••.•••••••••••••••••••.••••••••••
Input/Output Control S~'stem (IOCS) ••••••••••••••••••.••
13.3.1
GPMC Interrupt Execut've (H.MUXO) •••••••.•••••••••••••
13.3.2
GPDC Device Handlers (H.??MP) •.•••••.••••..••••••••••
13.3.3
Normal I/O Logic .•...•..•..•••••••••.•••••.••••••••
13.3.4
Execute Channel Program •••••••••••••••••••• -•••••••••
13.3.5
Data Structures •••.•..•........••••• -•••••••.•••••••••••.••

13-1
13-1

13-2
13-2
13-2
13-2
13-2
13-3
13-3
xxiii

13.4.1

System Blocks ••••••••.•.••••••••••••••••••••••.••• 13-3

13.4.1.1
13.4.1.2

13.5
13.6

Controller Defimtion Table (CDT) ••••••••••.••• 13-3
Unit Definition Table (UDT) •••••••••••••••••• 13-3
Architecture •.•...•••.•••..•••••••.••••••••••..•.. 13-4
13.4.2
13.4.2.1
Overview •••.•.•.••.•.••..•.•••..••••.•.. 13-4
Interrupt Block ..•••..••••.••.•••••••.•.••. 13-5
13.4.2.2
Data Block Linkage . . . . . . . . . . . . . . . . . . . . . . . . 13-6
13.4.2.3
Handler Entry Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-7
13.5.1
H.MUXO . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . • • . . . . . . . . . 13-7
13.5.2
H.??MP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-7
Com mon Logic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 13-7
13.6.1
Subroutine S.GPMCO - Report GPMC Status •••••••••••••••• 13-8
13.6.2
Subroutine S.GPMC I - I/O Initiation Logic ••••••••••••••••• 13-8
13.6.3
Subroutine S.GPMC2 - Lost Ir-::errupt Logic •••••••••••••••• 13-8
13.6.4
Subroutine S.GPMC3 - Operat.on Initiation and IOQ Entry
Acquisi tion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-8

13.6.5

Subroutine S.GPMC4 - Execute Channel Program Inspection and
Absolutizing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 13-9

13.7

GPMC Support Macros ••••••••••••••••••••••••••••••••••••••• 13-9

13.8

13.7.1
IS.DATI,IB.DAT2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.7.2
M.IS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.7.3
GPDC.IT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . . . . .
13.7.4
M.DIB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
User Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13-9
13-9
13-9
13-10
13-10

14. DISC PROCESSOR HANDLER

14.1

14.2

xxiv

Overview........................................... . . . . .. 14-1
14.1. I
14.1.2

Discs Supported . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 14-1
Track Format . . . . • . . . . . . . . . . . . . . • . . . . . . • . . • . . • . . . . . 14-2

14.1.3
14.1.4

14-2
14-2
14-2
14-3
14-3
14-3
14-5
14-5
14-5

Dual Subchannell/O •••••••.•••••••••••••••••••••••••
Dual-PortSupport ••••••.•.•••••••••••••••••••••••••
14.1.4.1
Normal Support •••••••••••••••••••••••••••
14.1.4.2
System Failure in Dual-Port Environment •••••••••
14.1.5
Maximum Byte Transfer and lOCO Generation ••••••••••••••
Hardware/Software Relationship ••••••••••••••••••••••••
14.1.6
Extended I/O Commands and CPU Instructions ••••••••••••••••••••••
XIO Channel Commands. • • • • • • • • • • • • • • • • • • • • • • • • • • • ••
14.2.1
Command Summary ••••••••••••••.•••••••••
14.2.1.1
14.2.1.2

lOCO Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-6

14.2.1.3

Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 14-6
Initialize Channel (INCH) •••••••• 14-6
14.2.1.3.1
14.2.1.3.2
Sense (SENSE) • • • • • • • • • • • • • • •• 14-9
Transfer In Channel (TIC) •••••••• 14-11
14.2.1.3.3
Write Data (WD) ••••••••••••••• 14-11
14.2.1.3.4
\Vrite Sector Label (WSL) •••••••• 14-11
14.2.1.3.5
Write Track Label (WTLL •••••••• 14-11
14.2.1.3.6
Read Data (RD) ••••••••••••••• 14-12
14.2.1.3.7
Read Sector Label (RSL) ••••••••• 14-12
14.2.1. 3. 8
Read Track Label (RTL) ••••••••. 14-12
14.2.1.3.9
14.2.1. 3.10
Read Angular Position (RAP) ••.••• 14-12
No Operation (NOP) •••••••••••• 14-12
14.2.1.3.11

C

14.2.1.3.12
14.2.1.3.13
14.2.1.3.14
14.2.1.3.15
14.2.1.3.16
14.2.1.3.17
14.2.1.3.18
14.2.1.3.19
14.2.1.3.20
14.2.1.3.21
14.2.1.3.22
14.2.1.3.23
14.2.1.3.24
14.2.2

CPU Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-15

14.2.2.1
14.2.2.2
14.2.2.3
14.2.2.4

14.2.2.5

(

Seek Cylinder (SKC) •.•.•.•••••. 14-12
Format for No Skip (FNSK) •••...• 14-13
Lock Protect Label (LPL) .•••.... 14-13
Load Mode Register (LMR) •••.•.. 14-13
Reserve (RES) •••••••••..•.••• 14-13
Release (REL) •••.•.••••.•.•.• 14-13
Rezero (XEZ) ••••••••••.•••••• 14-13
Test Star (TESS) ••••••••.•••.•. 14-14
Increment Head Address (IHA) ••••. 14-14
Priority Override (POR) ••••••••. 14-14
Set Reserve Track Mode (SRM) ••.• 14-14
Reset Reserve Track Mode (XRM) •• 14-14
Read ECC (REC) ••••••••••.••• 14-14

Instruction Summary •••••.••••.•.••.•••••••• 14-15
CPU Instruction Format •••.•••••••••.••••••. 14-15
Condition Codes . . . . . . .

~

. . . . . . . . . . . . . . . . . . . 14-16

Conditon Code Checking ••••.••••••••••••.••. 14-18
For SIO Instruction ••••.••....•• 14-18
14.2.2.4.1
14.2.2.4.2
For HIO Instruction •••••••••••. 14-18
14.2.2.4.3
For Remaining Instructions ••••••• 14-19
Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-19
Start I/O (SIO) •••••••••••••••• 14-19
14.2.2.5.1
Test I/O (TIO) •••••••••••••••• 14-19
14.2.2.5.2
Halt I/O (HIO) ••••••••••••••.. 14-19
14.2.2.5.3
Halt Channel (HCHNL) and Reset
14.2.2.5.4
Channel (RSCHNL) ••••..••••••• 14-19
Stop I/O (STPIO) •.•••••.••.•..• 14-20
14.2.2.5.5
Reset Controller (RSCTL) •••••••• 14-20
14.2.2.5.6
Enable Channel Interrupt (ECI) •••• 14-20
14.2.2.5.7
Disable Channel Interrupt
14.2.2.5.8
(DC I) ••••••••••••••••••••••• 14-20
14.2.2.5.9
Activate Channel Interrupt
(ACI) . . . . . . . . . . . . . . . . . . . . . .

It

14-20

14.2.2.5.10

14.3

Deacti vate Channel Interrupt
(DACI) •••••••.••.••••••••••• 14-21
Related Data Structures •••••..•.•••••••••••••••••.••••••••••• 14-21
I/O Queue (IOQ) •.•.•••..•..••••.•••••.••••••.•••••• 14-21
14.3.1
Unit Definition Table (UDT) ••••••••••••••.•••••.•••••• 14-21
14.3.2
Controller Definition Table (CDT) •..••••••••••••.••••••• 14-21
14.3.3
File Control Block (FCB) •••.•••••••..••••••••••••••••• 14-21
14.3.4
File Assignment Table (FAT) •••••.•••..••••••.•••••••.• 14-21
14.3.5
Context Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-21
14.3.6
Status Doubleword ••••••.•••.•.••..••..••••••••••.•• 14-24
14.3.7
Input/Output Control Doubleword (IOCD) ..•....••...•••••. 14-25
14.3.8
Interrupt Context Block nCB) ••••.•••.••••.••••.••.•••• 14-25
14.3.9
14.3.10
Sense Buffer . . . • . . . . • . . . • • . • . . . . . . . . . . . . . . . • • • • • . . 14-25
14.3.11

14.4

INCH Buffer . . . . . . . . . . . . . . . . . . . .

II

••••••••••••••

• '

•

•

14-25

14.3.12
Status Returned to User's FCB •••.••..••••...•••••••••• 14-26
XIO Disc Interrupt Fielder (H.EXIO) .•.••.•••.•.••••••••••.•••••• 14-27
Entry Point Summary ••...••..••••..••.•.•••••••.•••• 14-27
14.4.1
Entry Point 1 and 3 - Queue Drive Interrupt Service
14.4.2
Routine Spurious Interrupt Service Routine ••••.•••••••••.• 14-27
xxv

14.4.2.1
14.4.2.2

Processing - When an Interrupt Fires .••.•.•••••• 14-27
Processing - As a Result of Status Stored For
Start I/O (SIO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-27

14.4.2.3

14.5

Processing - As a Result of Status Stored For
Hal t I/O (HIO) •••••.•.••••••••••••••.••••. 14-28
14.4.2.4
Common Processing •••••••.•..••••.•••••••. 14-28
Entry Point 2 - Queue Start Service Routine •....••••••••••• 14-29
14.4.3
14.4.4
Entry Point 8 - SYSGEN Initialization ••••••.•••••.••••••• 14-30
XIO Disc Handler (H.DP02) •••.•.•....•••••••••••••••••.••••••• 14-30
14.5.1
Entry Point Summary ••.•.••••.•.••••.•.•..•••••••••• 14-31
Entry Point 1 - Queue Drive Interrupt Service
14.5.2
Routine •.•...•.••.......••....•.................. 14-31

14.5.3
14.5.4
14.5.5
14.5.6

Entry Point
Entry Point
Entry Point
Entry Point
14.5.6.1
14.5.6.2

2 - Queue Start Service Routine •••••.•••••••.•• 14-32
3 - Spurious Interrupt Service Routine ••••••••••• 14-32
4 - Lost Interrupt Service Routine ••.•••••••.••• 14-33
5 - Opcode Processing Service Routine •••.••••••• 14-33
Common Processing ••••••••••••••••••••••• 14-33
Opcode Dependent Processing •••••••••••••••. 14-34
14.5.6.2.1
Opcode Summary Table ••••••••. 14-34
14.5.6.2.2
14.5.6.2.3

14.5.7
14.5.8

Open . . . . . . . . . . . . . . . . . . . . . . 14-35
Read . . . . . . . . . . . . . . . . . . . . . . 14-35

14.5.6.2.4
Write •.•••••••••••••••••••• 14-35
14.5.6.2.5
Rewind •••.•••••••••••••••• 14-36
14.5.6.2.6
Write End-of-File ••••••••••••• 14-36
Execute Channel Program ••••••• 14-36
14.5.6.2.7
14.5.6.2.8
Advance Record •••••••••••.•• 14-36
14.5.6.2.9
Advance File •••••••••••••••. 14-36
14.5.6.2.10
Backspace Record •••••••••••. 14-36
14.5.6.2.11
Backspace File ••••••••••••••• 14-36
14.5.6.2.12
Upspace •.•••••••••••••••••. 14-37
Erase •••.••....•••••••••••. 14-37
14.5.6.2.13
Eject •.•••••.•••••••••••••• 14-37
14.5.6.2.14
14.5.6.2.15
Close File •...•••••••••••••• 14-37
14.5.6.2.16
Reserve ••••••••.••••••...•. 14-37
14.5.6.2.17
Release ••••••••.•.••••..•.. 14-37
Entry Point 6 - Post Transfer Processing Service •.••••••.••• 14-37
Entry Point 7 - Error Processing For Operator
Intervention . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-37

14.5.9
14.5.10

14.5.11
14.6

Entry Point 8 - SYSGEN Initialization •••••••••••••••••••• 14-38
Error Processing for Conventional I/O Requests ••••••••••••• 14-38
14.5.10.1
Abort the I/O Request •••••••••••••••••••• 14-39
14.5.10.2
Retry the I/O Request •••••••••••••••••••• 14-39
14.5.10.3
Perform Read ECC Correction Logic ., ••••••••. 14-40
Rezero and Retry •••.•••••••••••••••••••• 14-40
14.5.10.4
Error Processing for Execute Channel Program

Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-41
SYSGEN Directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-41

15. INPUT/OUTPUT PROCESSOR (lOP) HANDLER
15.1
15.2

xxvi

Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 15-1
Hardware Overview . . . . . . . . . . . . . . . . . . . : . . . . . . . . . . . . . . . . . . . .. 15-1

'0:·
."':

\.'

I"~

(

Hardware Block Diagram Description ••••••••••••••.•.•.•• 15-1
15.2.1.1
The Input/Output Processor (lop) •••••••••••••• 15-1
15.2.1.2
lOP Control Panel/Operator Console •.•••••.•••• 15-1
15.2.1.3
lOP Controllers . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-3
15.2.1.4
lOP Support for Real-Time Interrupts ••••••••••• 15-3
lOP Device Addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-3
15.2.2
10 P Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-3
15.2.3
Detailed lOP Hardware Information •••••••••••••••••••••• 15-4
15.2.4
Software Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-4
Software Block Diagram Description ••••••••••••••••••••• 15-4
15.3.1
15.3.1.1
lOP Device Handler Programs ••••••••••••••••• 15-4
15.3.1.2
lOP Device Context Areas ••••••••••••••••••• 15-6
15.3.1.3
lOP Channel Executive •••••••••••••••••••••• 15-6
15.3.1.4
H.IOCS/IOP Handler Interaction ••••••••••••••• 15-6
Required Data Structure Additions and Modifications for lOP
Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-6
Data Structure Additions ••••••••••••••••••••••••••••• 15-6
15.4.1
15.4.1.1
Channel Definition Table (CHT) •••••••••••••••• 15-6
15.4.2
Data Structure Modifications •••••••••••••••••••••••••• 15-7
15.4.2.1
Controller Definition Table (CDT) •••••••••••••• 15-7
15.4.2.2
Unit Definition Table (UDT) •••••••••••••••••• 15-7
15.4.2.3
Communication Region Variables ••••••••••••••• 15-8
Required Modifications to Existing Software for lOP
Implementatioo e............................................ 15-8
15.5.1
10CSModifications •••••••••••••••••••••••••••••••••• 15-8
10CS to lOP Handler Communications ••••••••••• 15-8
15.5.1.1
10CS Calls to lOP Handler Entry Points
15.5.1.1.1
OP. and IQ. . . . . . . . . . . . . . . . . . . 15-8
15.5.1.1.2
10CS Calls to lOP Handler Entry
Point PX.. . . . . . . . . . . . . . . . . . .. 15-8
15.5.1.1.3
IOCS Calls to lOP Handler Entry
Point LI. . . . . . . . . . . . . . . . . . . . . 15-8
15.5.1.2
I/O Queue Entry Linking and Unlinking ••••••••••• 15-8
15.5.1.2.1
Linking an Entry to an I/O Queue ••• 15-8
15.5.1.2.2
Unlinking an Entry from an
I/O Queue ••••••••••••• ~ • . • •• 15-9
15.5.1.3
Kill I/O Queue Search. • • • • • • • • • • • • • • • • • • • • •• 15-9
15.5.2
SYSGEN Modifications • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •• 15-9
Data Structure Requirements •••••••• • • • • • • • •• 15-9
15.5.2.1
15.5.2.2
Device Requirements • • • • • • • • • • • • • • • • • • • • • •• 15-9
15.5.2.2.1
lOP Controller Directive. • • • • • • •• 15-9
lOP Device Directive • • • • • • • • • •• 15-9
15.5.2.2.2
15.5.2.2.3
lOP RTOM Function Directive ••••• 15-11
15.5.2.3
lOP SYSGEN Initialization ••••••••••••••••••• 15-11
New Software Required for lOP Implementation ••••••••••••••••••••• 15-11
15.6.1
lOP Channel Executive - H.IOPX •••••••••••••••••••••••• 15-11
15.6.1.1
Interrupt Fielding Entry Point ••••••••••••••••• 15-11
15.6.1.2"
Interrupt Exit Entry Point •••••••••••••••••••• 15-11
15.6.1.3
Initialize Channel Entry Point ••••••••••••••••• 15-11
15.6.1.4
Initialization Entry Point •••••••••••••••••••• 15-12
15.6.2
lOP Device Handlers ••••••••••••••••••••••••••••••••• 15-12
lOP Device Context Area - H.DCAxxx ••••••••••• 15-12
15.6.2.1
15.2.1

15.3

15.4

15.5

15.6

xxvii

15.6.2.1.1
15.6.2.1.2
15.6.2.1.3

Device Context Area
Configuration •••••.•.•••••.••. 15-12
Device Context Area Construction
and Initialization ••••••.•••.••• 15-13
Device Context Area Element
Access ••••••••.•.••.•....... 15-13

15.7

15.6.2.2
lOP Device Handler Programs •••••.••••••••••• 15-13
15.6.3
Miscellaneous New Software •••••••••••••••••••••.•••.. 15-13
Report I/O Complete - S.IOCS29 ••••••••••.•••• 15-13
15.6.3.1
15.6.3.2
Mark Unit5 Offline - S.IOCS31 ••••••••••••••••• 15-13
lOP Floppy Disc Handler Program (H.FLIOP) •••••••••.••••••••••.•• 15-13
15.7.1
Functional Characteristics by Entry Point •••••••••..••.•.• 15-14
15.7.1.1
Opcode Processor (OP.) •••••••••.•••••••.•••• 15-14
15.7.1.2
I/O Queue Processor (IQ.) ••••••••.••••••••.•• 15-15
Service Interrupt Processor (SI.) ••••••••••••••• 15-15
15.7.1.3
15.7.1.3.1
Read End-of-File Processing •••••• 15-15
15.7.1.3.2
Backspace File and Skip File
Processing ••••••••••••••••..• 15-15

15.8
15.9

15.7.1.3.3
Error Recovery Processing ••••••.
Lost Interrupt Processor (LI.) ••••••••••••••••.
15.7.1.4
Special Post Transfer Processor (PK.) •••••••••••
15.7.1.5
15.7.1.6
SYSGEN Initialization Processor (SG.) •••••••••••
lOP Device Handler Prototype ••••••••••••••••••••••••••••••••••
Sample" lOP Device Handler ••••••••••••••••••••••••••••••••••••

15-16
15-16
15-16
15-16
15-17
15-30

16. lOP EIGHT-LINE FULL DUPLEX HANDLER (H.F810P)

16.1

16.2

Entry Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16.1.1
Opcode Processor (OP.) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16.1.2
I/O Queue Processor (1Q.) •••••••••••••••••••••••••••••
16.1.3
Service Interrupt Processor (SI.) ••••••••••••••.••••••••.
16.1.4
Lost Interrupt Processor (LI.) ••.•••••••••••••••••••.••.
16.1.5
Post Transfer Processing (PX.) •••••••.••••.••••••••••••
16.1.6
Pre-SIO Processor (PRE.SIO). .•••••••••••••••.•••.•••.•
16.1.7
SYSGEN Initialization Processor (SG.) ••••••..••.••••••••.
Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16.2.1

16.3

Read Echoplex ..•.................•...•........•...

16.2.2
ASCII Control Character Detect ••••••••••••••••••••••••
16.2.3
Special Character Detect •••••••••••••••••••••••••••••
16.2.4
Purge Input Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NORMAL •.•.•...•.......••.....•.................
16.3.1
UNEXPT . . . . . . . . . . . . . . . . • . . . . . . . . . . . . . . . . . . . . . . . .
16.3.2
SNSNOIOQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16.3.3
SENSE
.......................................... .
16.3.4
CENODE .•..•...............•...•...•.........•..
16.3.5
TIM EO • •••••••••••••••••••••••••••••••••••••••• -••
16.3.6

16-1
16-1
16-2
16-2
16-2
16-2
16-2
16-2
16-2
16-3
16-3
16-3
16-3
16-3
16-3
16-3
16-3
16-4
16-4
16-4

APPENDIXES

Appendix A
Appendix B
xxviii

MPX-32 Macro Cross Reference ••••••••••••••••••••••••• A-I
Com pressed Source Format • • . • • • • • • • • • • • • . . • • • • • • • • • • . • B-1

aLUSTRAnONS

Figure
8-1
8-2
8-3

Title
Components and Functions in Boot from an SDT • • • • • • • • • • • • • • • ••
Components and Functions in Boot from CPU Front
Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
Components and Functions in Boot from Online
REST AR T •..•.....................•.•...•.........•••

Page
8-1
8-2

8-2

14-1

Disc Processor Hardware/Software Relationship. • • • • • • • • • • • • • • •• 14-4

15-1
15-2
15-3
15-4

lOP Hardware Block Diagram ••••••••••••••••••••••••••••••
Software Block Diagram. • • . • . • • • • • • • • • • • • • • • • • • • • • • • • • • ••
Sample lOP SYSGEN Directives •••••••••••••••••••••••••••••
lOP Device Context Area •••••••••••••••••••••••••••••••••

15-2
15-5
15-10
15-12

xxix

o
Documentation Conventions
Notation conventions used in command syntax and message examples throughout this
manual are described below.

lowercase letters
In command syntax, lowercase letters identify a generic element that must be replaced
with a value. For example,
!ACTIVATE taskname
means replace taskname with the name of a task, e.g.,
!ACTIVATE DOCCONV
In messages, lowercase letters identify a variable element. For example,
**BREAK ** ON:taskname
means a break occurred on the specified task.

o

UPPERCASE LETTERS
In command syntax, uppercase letters specify a keyword must be entered as shown for
input, and will be printed as shown in output. For example,
SA VE filename
means enter SAVE followed by a filename, e.g.,
SA VE DOCCONV
In messages, uppercase letters specify status or information. For example,
taskname, task no ABORTED
*YOUR TASK IS IN HOLD. ENTER CONTINUE TO RESUME IT
Braces { }
Elements placed one under the other inside braces specify a required choice. You must
enter one of the arguments from the specified group. For example,
j counter

t

1startbyte~

means enter the value for either counter or startbyte.
xxx

o

Brackets [ ]
(

An element inside brackets is optional. For example,
[CURR]
means the term CURR is optional.
Items placed one under the other within brackets specify you may optionally enter one of
the group of options or none at all. For e' EDIT
means TSM> was written to the terminal; EDIT is typed by the user.
Subscript Delta ..
A subscript delta specifies a required space. For example,
EDT> STO.TSSPGM
means a space is required between

xxxii

° and T.

o

(

1.

SYSTEM DESCRIPTION

1.1

Naming Conventions

To assist in the identification of system components, the following naming conventions
are used in MPX-32 software and documentation.

1.1.1

Communications Region

Names of variables within the MPX-32 communications region are prefixed by the
characters "C.". Their general form is C.x where x is a string of one to six characters.

1.1.2

Task Service Area (TSA)

Names of variables within the TSA associated with each task are prefixed by the
characters "T.". Their general form is T.x where x is a string of one to six characters.

1.1.3

Entry Variables

Names of variables within table and file entries consist of characters which identify the
table or file and the variable. Their general form is x.y where x consists of 2-4
characters which identify the table and y consists of 3-6 characters which identify the
variable. Table or file name prefixes (x) are as follows:
CDT
CHT
OAT
OFT
DQE
OTT
FCB
FPT
ICB
10Q
JOB
MEM
MEML
MIDL
MQ
PRB
PSB
RRS
RXB
SO
SMD
SMT
TCA
TCP
UDT

Controller Definition Table
lOP Channel Definition Table
Dispatch Queue Address Table
Disc File Assignment Table
Dispatch Queue Entry Table
Device Type Table
File Control Block
File Pointer Table
Interrupt Control Block
I/o Queue Entry
Job Table
Memory Table
Memory Attribute List
Map Image Descriptor List
Message or Run Request Queue Entry
Parameter Receive Block
Parameter Send Block
Resource Requirement Summary Entry
Receiver Exit Block
System Input Directory (M.SID)/System Output Directory (M.SOD) Entry
System Master Directory Entry
Shared Memory Table
Terminal Context Area
Type Control Parameter Block
Unit Definition Table

I-I

I

;1

1.1.4

o

System Modules and Interrupt Handlers

Names of system modules and interrupt handlers are prefixed by the characters "H.".
Their general form is H.x where x is a string of one to six characters. Entry points
within system modules are identified by the module name followed by the entry point's
numeric identifier. Entry point names are of the general form H.x,n where n is the
numeric entry point identifier.
I.I.S

Common System Subroutines

Common system subroutines are subroutines contained within moouies intended for use
by other modules. Their names are prefixed by the characters "5.". Their general form is
S.xn where x is the one- to four-character module identifier and n is the subroutine
numeric identifier. For example S.EXECI is the first subroutine in the H.EXEC module.
1.1.6

System Macros

Names of system macros are prefixed by the characters "M.". Their general form is M.x
where x is a string of one to six characters.
1.1.7

System Task Load Module Files

Names of system task load module files are prefixed by the characters "J.".
general form is J.x where x is a string of one to six characters.
1.1.8

Their

Batch Task Load Module Files

Names of system batch task load module files are identical to the names of the tasks
contained on the files.
1.1.9

System Permanent Files

Names of system permanent files not containing load modules are prefixed by the
characters "M.". Their general form is M.x where x is a string of one to six characters.
1.2

Scheduler - IOCS Interface

I/o Initiation
A user task issues an SVC to enter IOCS. I/o services for pre-transfer processing are
then executed at the software priority level of the requesting task. Once the I/O request
has been initiated (or queued for initiation), an H.EXEC entry point is called to report
the event to the CPU and swapping scheduler:

o
1-2

Entry Point

Event

H.EXEC,l

Interacti ve input starting

H.EXEC,2

Terminal output starting

H.EXEC,3

Wait I/O starting

H.EXEC,4

No-wait I/O starting

Wai t I/o Post Processing
A return will be made to 10CS from H.EXEC,I, 2, or 3 only upon completion of the I/O
request. Post transfer processing may then occur at the software priority level of the
requesting task.
No-Wait I/o Post Processing
A return from H.EXEC,4 will be made immediately after recording the no-wait I/O
event. Since 10CS will also make an immediate return to the user task, no-wait I/O post
transfer processing will occur as a task interrupt service.
No-Wait I/O Completion Task Interrupt Service
When the I/O handler interrupt service routine fields a completion interrupt for a no-wait
I/O request, it will call the executive subroutine S.EXEC4 to report the event. The I/o
queue entry associated with the call will be linked to the task interrupt list in the DQE of
the task which made the I/O request. When the scheduler attempts to dispatch control to
the task, it will discover that a task interrupt is outstanding. It should be noted that task
interrupts are inhibited during execution of any system service on behalf of a task. It
should be also noted that no task interrupt will be honored while a previous task
interrupt is active. When the task interrupt is honored, control will be transferred to the
10CS routine specified in the Preemptive System Service Header of the I/O queue
entry. Post transfer processing may then occur at the software priority level of the
requesting task. When post processing of the no-wait I/O request is complete, the task
interrupt service may be exited by a call to S.EXEC6 or H.EXEC,12.
No-Wait I/O Restrictions for System Services
Post transfer processing for a no-wait I/O request is processed as a task interrupt. Task
interrupts are not honored while the task is executing in a system service (PC .LE. TSA
address). An exception to this rule is made for a task that is in a wait-for-any-no-waitI/O-completion state. A task interrupt generated by the completion of no-wait I/O will
be honored if the task is in the wait-for-any-no-wait-I/O-completion state. A system
service desiring to do no-wait I/O may issue a series of no-wait calls followed by a waitfor-any-call. Care should be exercised to insure that all outstanding calls are completed
as appropriate.

1-3

Scheduler - lacs Interface - laCS I/o SVC Processing Overview

0:'.

, I

IOCS from SVC

Construct
Environment
For I/O
Initiation

No-Wait I/O

Wait I/O

Complete

o
1-4

Scheduler - IOCS Interface - IOCS No-Wait I/O Post Processing Overview
IOCS Task Interrupt
from Scheduler

Complete

Retry

Reconstruct
Initiation
Environment

(

No Return
Continue Task
At Point of
Interrupt
or
Continue Wait
For Any I/O
Completion
IOCS From SVC To
Exit User No Wait
1/0 Service
No Return
Continue Task At
Point of Interrupt
or
Continue Wait For
Any 1/0 Completion

No Return
Continue Task At
Point of Interrupt
or
Continue Wait For
Any I/O Completion

1-5

o

Scheduler - IOCS Interface - IOCS Initiate I/O Procedure
From Wait I/O SVC, or
From No-Wait Task Interrupt

I

Initiate I/O Procedure

rI

Handler
Entry Point
2
I

L

H.EXEC,2
Terminal
Output
Starting

H. EXEC, lj. ,
No-Wait I/O
Starting

Return After
Event I
Recorded

Return ,hen
I 10 Comp let e

I

I~~_ _ _*

~

V

To IOCS
Point of Call

C

,\<

'._1

1-6

Scheduler - IOCS Interface - ICCS Post Processing Procedure

Fran Wait I/O SVC, or
Fran No-Wait Task Interrupt

I

Post XFR Processing
No Error
Error
Error
Unrecoverable

To IOCS
Point of Call

Automatic
Retry

"--------,
To IOCS
o in t

of

Ca 1 J

Operator
Intervention
Re uired

?

A

R

1-7

Scheduler - 1/0 lDterrupt Interface Overview

110
Interrupt
Levels

~

Standard
Entry
Procedure

r----'

~

As Requireci

~

~

I
---'

r---,,
H',
>"--

I

~

r-

, Ev:nt

'--

~

-

Proceuing
A. Required

t--

I

--'

r- --""'\

,

.H

\
)-

r--

>-

~

I

'-- _-oJ

BReturn To Any
Preempted
Lower Level
lnterruot

\
.~/OPti.""l
ProcesSlng
Re ort

~

~

I

r---"'" \

\

/

"--

-

-'

Is. EXECS
I

'\.
Staodard , )
Exit
Procedure

Return to Interrupted
Task or Perform Context
Switch to Higher Priority
Candidate for CPU Control

Software
Priority
Tasks

o
1-8

Scheduler - I/O Interrupt - Interface, Procedures

Enter Blocked
Wi th Leve I
Active
Set Unblocked
(Level Remains
Act i ve)
Increment
Global Interrupt
Count
Processing As
Required For
This Level

S. EXEC!
Report Event
Interactive
Input Compl et

S.EXEC2

S. EXEC5
Standard
Interrupt Exit
Procedure

1-9

Scheduler - I/O Interrupt Interface, Reentrant Subroutines
Software Priority
Tasks

Interrupt Service
Routines
X3=Addr
r-----~--~Scratchpad

INT.
Conte
Block

TSA
Push
Down
Lev;el

22W

Scratc
Pad

2ZW

Scratch
Pad·

X3=Addr
Scratchpad

I
I
I
I

Monitor
Service

I
I

X3=Addr
Scratchpad

I
I

I
t-I

------

I

S. EXECX

M.RTRN

I
Use X3 As
Scratchpad
Index

1
TRSW RO
Return
1-10

o

Preemptive System Service List Entry Header Format

(
0

String Forward Address

1

String Back Address

2

Priority

3
4

PSD Word 1

5

PSD Word 2

6

('.
7

c
1-11

~'.

"1

1. 3

I/O Overview from User Request to I/O Complete

I/O Request Processing
H.IOCS

User task
I/O
Request

Op code proces sing:
(BEL sequences to
link 1/ 0 queue to
COT, check I/O
complete)

I

Op code
processing

Notify Executive
of I/O initiation

Device Handler
EPS - Op Code
Processor
EPZ - I/O Start Up

o

H.EXEC,n
H. EXEC, 1: interactive input
H. EXEC, Z: terminal output
H. EXEC, 3: wait I/O
H. EXEC, 4: no-wait
I/O
I

No-wait I/O

I

All other
I/O

user task
Suspend
user task

o

Service Interrupt Processing
Device Handler EPI
Service interrupt
Service interruptproces sing:
error retry, status
posting, issue CD/
SIO

Notify
Executive
of I/o
complete
(level
active)

I (externals blocked)

S. EXECn
S. EXECI: interactive input
S. EXECZ: terminal output
S. EXEC3: wait I/O
S.EXEC4: no-wait
I/O

S.EXECS
Post I/O Processing
Executive

S.IOCSI
User task
scheduled
(via task
interrupt
service
for nowait I/O)

I/O post processing:
post status to FCB,
device inop mes sages, data moves,
deallocate I/O queue
and OS buffer as
required

I
1-12

User task

o
I"I~
1

I

1
,.

1.1f

Scheduler - Task Termination Interface

Three types of task termination are provided in the MPX-32 system:
delete task execution.

1.4.1

exit, abort, and

Exit Task

The exit task service is called by a task that wishes to terminate its execution in a
normal fashion.
Outstanding I/O (Exit)
If an exiting task has outstanding I/O, further exit processing will be deferred until all

outstanding I/O is complete. Any user end action routines associated with I/O which
completes while a task is exiting, will result in a task abort.
Messages in Receiver Queue (Exit)
All outstanding messages sent to an exiting task will be unlinked from the message
receiver queue, and treated as complete with abnormal status.
Outstanding Run Requests (Exit)
If an exiting task has outstanding run requests (with call back) for other tasks, further
exit processing will be deferred until all such requests are complete. End action routine
execution will be inhibited and end action not processed status will be reflected in the
Run Request Block.

Run Requests in Receiver Queue (Exit)
If an exiting task has requests in its run receiver queue, they will be unlinked and treated
as complete with abnormal status.
Task Abort Receiver (Exit)
A task abort receiver is not processed on task exit.
Files (Exit)
All open files associated with a task will be automatically closed during task exit
processing.
Resources (Exit)

C

All resources associated with a task will be automatically deallocated during task exit
processing.

1-13

1.4.2

0·· ·)'·
",

Abort Task

The abort task service is called by a task that wishes to terminate its execution in an
abnormal fashion. It may also be initiated by the system when a task encounters a
system trap condition (e.g., undefined instruction, privilege violation, or non-present
memory); or by a system service because of a parameter validation error. This service
may also be asynchronously initiated by another task of the same ownername or by
operator communications.
Asynchronous Abort
When a task wishes to abort another task, of the same ownername, .it calls the
asynchronous abort service. The task to be aborted may be in a ready-to-run state, or it
may be in one of the following wait states:
(0

Waiting for Execution Signal
Timed suspend
Message receive
Run request receive
Interrupt receive

(2)

Waiting for Resource
Device
Disc space
Memory
Memory pool

(3)

Waiting for Operation Complete
Interactive input
Low speed output
Any no-wait I/O
Wait I/O
Any no-wait message
Wait message
Any no-wait run request
Wait run request

If the specified task to be aborted is waiting for an execution signal, an abort request bit

is set in the DQE, the DQE is unlinked from its current state queue, and linked to the
ready to run list at its current priority. The abort request processing will then proceed
on behalf of the aborting task when it is selected for execution by the CPU scheduler.
If the specified task is waiting for a resource or operation complete, the abort requested

bit will be set in its DQE. The task will remain linked to its current list, and abort
processing will not proceed until outstanding operations are complete and the task is
ready to run.

1-14

,~ i

Synchronous Aborts
When the currently executing task encounters an abort condition, the abort bit will be set
in the DQE. The CPU scheduler will then process the abort request.
Outstanding I/O (Abort)
If an aborting task has outstanding I/O, further abort processing will be deferred until all
outstanding I/O is complete. End action routine execution will be inhibited, and task
abort status reflected in the FCB.
Messages in Receiver Queue (Abort)
All outstanding messages sent to an aborting task will be unlinked from the message
receiver queue, and treated as complete with abnormal status.
Outstanding Run Requests (Abort)
If an aborting task has outstanding run requests (with call back) for other tasks, further
abort processing will be deferred until all such requests are complete. End action routine
execution will be inhibited, and task abort status will be reflected in the Run Request
Block.

Run Requests in Receiver Queue (Abort)
If an aborting task has requests in its run receiver queue, it will be unlinked and treated

as complete with abnormal status. If any run requests still remain in the queue, a new
copy of the task is activated.
Abort Receiver (Abort)
If an aborting task has an abort receiver, control will be transferred to it. All
outstanding operation or resource waits will have been completed, and all no-wait I/o or
no-wait run requests (with call back) will have been completed when the abort receiver is
entered. End action routines associated with no-wait operations which completed while
the abort request was outstanding will not have been executed. Status bits reflecting
this will be posted in the appropriate FCB's and RRB's. Any files open at the time the
abort request was received will remain open on an abort receiver entry. Any resources
allocated at the time the abort request was received will also remain allocated when the
abort receiver is executed.
Files (Abort)
If an aborting task has no intercepting abort receiver, all files open at the time the abort

request was encountered will be automatically closed.

I-I')

Resources (Abort)
If an aborting task has no intercepting abort receiver, all previously allocated resources

will be deallocated, and the task will no longer be active in the system.
1.4.3

Delete Task

The delete task service is called by the system on behalf of a task that encounters a
second abort condition during processing of an initial abort request. This service may
also be asynchronously initiated by another task of the same ownername or by operator
communications.
Asynchronous Delete
When a task wishes to delete another task, of the same ownername, it calls the
asynchronous delete service. The task to be deleted may be in a ready-to-run state, or it
may be in a wait state (e.g., wait for execution signal, wait for resource, or wait for
operation complete). In any case, the Delete task bit is set in the DQE, and the task is
linked to the ready to run list or to the memory request queue for inswap. An exception
is made for a task already in the memory request queue. In this case, the task will not be
linked into the ready-to-run queue until memory scheduler processing is complete.
Synchronous Deletes
When the currently executing task encounters a delete condition, the delete task bit will
be set in the DQE. The CPU scheduler will then process the delete request.
Outstanding I/O (Delete)
Delete processing will cause all outstanding I/O to be terminated (killed); if I/O is no
wait it is forced into its end action receiver (if it has one) then I/O is terminated.
Messages in Receiver Queue (Delete)
All outstanding messages sent to a task being deleted will be unlinked from the message
receiver queue, and treated as complete with abnormal status.
Outstanding Run Requests (Delete)
If a task being deleted has outstanding run requests for other tasks, any call back will be
ignored.
Run Requests in Receiver Queu~ (Delete)
If a task being deleted has requests in its run receiver queue, it will be unlinked and

treated as complete with abnormal status. If any run requests still remain in the queue,
a new copy of the task is acti va ted.
1-16

o

(

Abort Receiver (Delete)
Abort receivers are not processed for tasks being deleted.
Files (Delete)
Files associated with a task being deleted are not automatically closed.
Resources (Delete)
All resources associated with a task being deleted are deallocated, and the task is no
longer active in the system.

1.5

Scheduler-Debug Interface

Design Goals
The structure of the Scheduler-Debug interface is dictated by the following major design
goals:
(1)

DEBUG may optionally be associated with a task at task activation time, or
subsequently associated with a terminal task when the break key is struck.
DEBUG may also be associated with a task dynamically through a system
service call.

(2)

When a task that has DEBUG associated with it is executing, two methods of
entering DEBUG are provided: (a) The executing task encounters a previously
set DEBUG trap instruction, or (b) The terminal operator depresses the break
key.

(3)

Entering DEBUG mode via trap or break is allowed during execution of
software (task) interrupt receivers (e.g., message, end action, and break).

(4)

DEBUG will intercept any task aborts, automatically enter the DEBUG mode,
and inform the operator of the abort reason.

(5)

System entry into the abort receiver will be "soft" in that outstanding I/O
requests will be completed, and files will remain open and allocated. This
allows the operator the ability to correct and proceed from the environment
that caused the abort condition.

Debug Entry Points
To accommodate the scheduler interface, and achieve the DEBUG design goals, DEBUG
is organized into five entry points. These entry points are reflected by an address table
(HA T) structure at the beginning of the DEBUG program. When DEBUG is loaded, the
address of the DEBUG HAT is stored in T .DBHAT in the TSA. The first word of the HAT
contains the number of DEBUG entry points. Subsequent words contain the address of
the individual DEBUG entry points. The entry points p'rovided are:
1-17

ENTRY POINT

DESCRIPTION

1

Debug startup
Debug restart
Trap/break
User break exit
Abort

2
3
4

5
Task Interrupt Status

DEBUG may examine a byte (DQE.A TO in the dispatch queue entry to determine the
status of task interrupts. When DEBUG is entered, DQE.ATI contains the definition of
all active task interrupts.
BIT

o
1
2
3
4
5
6-7

MEANING

LABEL
Reserved
DQE.AEAl
DQE.ADM
DQE.AUB
DQE.AEA
DQE.AMI
Reserved

Active
Active
Acti ve
Acti ve
Acti ve

end action interrupt 1
Debug mode interrupt
user break interrupt
end action interrupt 2
message interrupt

TSA Stack Pushdown Level Interpretation
For all DEBUG entry points, except Restart, the context associated with the most
recently interrupted task level will be contained in T.CONTXT. Nested levels of task
interrupt will be contained in the TSA stack. Unless one of the task interrupt levels
(other than DQE.ADM) is active, the TSA stack will be clean (empty) on entry to
DEBUG. If task interrupts are active, the context storage in the TSA will be in reverse
order of priority (e.g., highest priority = most recent). Note that in the active task
interrupt bit assignments bit 0 is the lowest priority, etc.
Exit from DEBUG Mode
Whenever DEBUG is executing (regardless of entry point) the task is said to be in DEBUG
mode. DEBUG mode may be exited by calling one of the following H.EXEC entry points.
ENTRY POINT
H.EXEC,22
H.EXEC,23

DESCRIPTION
Go to Specified Task Context
Run User Break Receiver

c
1-18

1.5. J

Entry Point 1 - Startup

This entry point is accomplished in either of two methods: (1) DEBUG is activated with
the user task, or (2) the user task may issue a SVC call to load and execute DEBUG.
DEBUG Activated with User Task
The program activation service which runs on behalf of the task being activated, detects
that DEBUG is to be activated with the task. When the task has been loaded, a special
service is called to load DEBUG. Once DEBUG is loaded, the service will store the
normal startup registers and PSD in a DEBUG context block in the TSA (T.CONTXT).
The service will then adjust the stack in the TSA to enter DEBUG at the DEBUG startup
entry point. When DEBUG is entered the stack is clean, DEBUG mode is set, and
T.CONTXT contains the user task startup registers and PSD.
DEBUG Activated by Load and Execute (M.DEBUG) SVC
When the user task issues a load and execute DEBUG SVC, the system service will load
DEBUG, store the user's registers and PSD in T.CONTXT, set DEBUG mode, and adjust
the TSA stack for entry at DEBUG's startup entry point.

1.5.2

Entry Point 2 - Restart

This entry point will be executed when DEBUG wishes to terminate any outstanding I/O,
discard any outstanding messages, and clear the TSA stack. A DEBUG restart is invoked
by a DEBUG call to H.EXEC,24.

1.5.3

Entry Point 3 - Trap/Break

This entry point will be executed when a hardware break or M.INT is received by the user
task being debugged. It will also be entered when a trap SVC is executed. On entry,
T .CONTXT will contain the interrupted context and the DEBUG mode task interrupt flag
will be set.

1.5.4

Entry Point 4 - User Break Exit

This entry point will be executed when the user task being debugged executes a break
exit. Note that a user task being debugged may only execute his break receiver by giving
a break command to DEBUG. DEBUG will in turn call H.EXEC,23. Normal break
receiver entry is reserved for DEBUG use when DEBUG is associated with a task. At the
time DEBUG's user break exit entry point is entered, T.CONTXT will contain the most
recent level of pushdown from the TSA "tack. The number of pushdowns in the TSA
stack will vary based upon the number of active task interrupts (e.g., message, end
action).

1-19

1.'.'

Entry Point , - Abort

o

This entry point will be executed when an abort request is received for the user task and
no user abort receiver has been specified. The user task context at the time the abort
was received will be in T.CONTXT in the TSA. If a task interrupt (e.g., message or break
receiver) was in effect at the time the abort request was received, the TSA stack will be
at the associated level of pushdown. Otherwise, the TSA stack will be clean.
Wait I/O Operation Status on Abort Receiver Entry
When the abort receiver is entered, any wait I/O operation will have first been
completed. This means that if an abort request is received for a task with wait I/O
outstanding, abort processing will be deferred until the wait I/O is complete. It should be
noted that a service is provided by operator communications to terminate (kill)
outstanding I/O requests associated with the specified task. When an I/o request is
terminated, appropriate status will be posted in the FeB.
No-Wait I/O Operation Status on Abort Receiver Entry
When the abort receiver is entered, aU no-wait I/O operations will have been
completed. If an abort request is received for a task with no-wait I/O outstanding, abort
processing will be deferred until all no-wait I/O requests are complete. User end action
routine processing will be inhibited for no-wait I/O completions when the task is
aborting. Task abort status will be posted in the FCB.

,~,

V

File Status on Abort Receiver Entry
All user files will remain open on entry to the task abort receiver.
Inhibit of Abort Receiver Entry
If an abort condition is detected during abort processing for a previously detected abort

condition, all outstanding I/o will be terminated (killed), no status will be posted, abort
receiver entry will be inhibited, resources will be deallocated, and the task removed from
the system.
Re-use of Abort Receiver
Privileged tasks may re-establish an abort receiver from within an abort receiver. This
allows privileged tasks to enter their abort receiver more than once. Unprivileged tasks
may establish a one-shot abort receiver, but will be aborted if an attempt is made to reestablish this receiver.

o
1-20

1.6

MPX-32 Task Interrupts

In addition to the 64 levels of execution priority available for task execution, the MPX32 scheduler provides a software interrupt facility within the individual task
environment.
Task Interrupt Priorities
Individual tasks operating in the MPX-32 environment may be organized to take
advantage of the task unique software interrupt levels. Each task in the MPX-32 system
may have six levels of software interrupt:
Level Priority

o
I
2

3
4
5

Description
Reserved for operating system use
DEBUG
Break
End Action
Message
Normal Execution (Run Request>

Task Interrupt Receivers
An individual task is allowed to issue system service calls to establish interrupt receiver
addresses for both break and message interrupts. The DEBUG interrupt level is reserved
for system use by tasks running in DEBUG mode. The end action interrupt level is used
for system post processing of no-wait I/O, message, or run requests. It is also used for
execution of user task specified end action routines. The normal execution level is used
for run request processing and general base level task execution.
Task Interrupt Scheduling
Task interrupt processing is gated by the MPX-32 scheduler during system service
processing. If a task interrupt request occurs while the task is executing in a system
service, the scheduler will defer the interrupt until a return is made to the user task
execution area.
System Service Calls from Task Interrupt Levels
A task may utilize the complete set of system services from any task interrupt level. It
is prohibited, however, from making a wait-for-any-no-wait-completion call (M.ANYW)
from an end action routine. It is therefore illegal to issue an I/O request on any FCB
which is busy or may have post processing outstanding.

1-21

Task Interrupt Context Storage
When a task interrupt occurs, the scheduler will automatically store the interrupted
context into the TSA pushdown stack. This context will be automatically restored when
the task exits from the active interrupt level.
Task Interrupt Level Gating
When a task interrupt occurs, the level is marked active. Additional interrupt requests
for that level are queued until the level active status is reset by the appropriate level
exit system service call. When the level active status is reset, any queued request will
be processed.
In addition, the following services can be used to inhibit higher priority task interrupts:
M.ASYNCH

Resets the asynchronous task interrupt mode back to the default
environment.

M.DSMI

Disables the task interrupts for messages sent to the calling task.

M.DSUB

Deactivates the user break interrupt and allows user breaks via the
terminal BREAK key to be acknowledged.

M.ENMI

Enables task interrupts for messages sent to the calling task.

M.ENUB

Activates the user break interrupt and causes further user breaks via
the terminal BREAK key to be ignored.

M.SYNCH

Causes message and task interrupts to be deferred until the user
makes a call to M.ANYW,M.ASYNCH, M.EAWAIT, or M.WAIT.

Note that any deferred task interrupts will be processed when a lower level task
interrupt calls the M.ANYW ,M.EA WAIT or M. WAIT services.
User Break Interrupt Receivers
A task may enable the break interrupt level by calling the M.BRK monitor service to
establish a break interrupt receiver address. The level becomes active as a result of a
break interrupt request generated either from a hardware break or from a M.INT service
call which specified this task. When the break level is active, end action, message, and
normal execution processing is inhibited. The level active status is reset by calling the
M.BRKXIT monitor service to exit from the pseudo interrupt (break) level.
User End Action Receivers
When a task issues a no-wait I/O, send message, or send run request, a user task end
action routine adddress may optionally be specified. If specified, the routine will be
entered at the end action priority level from the appropriate system post processing
routine. When the end action level is active, processing at the message or normal
1-22

0

execution level is inhibited. The level active status is reset by calling the appropriate
end action service:
End Action
Type

End Action
Exit Service

I/O
Send Message
Send Run Request

H.IOCS,34
M.XMEA
M.XREA

All types of user end action exits provide a "return" or "continue-wait-for-any" option.
An interrupt exit will normally rerurn to the interrupted context. A task may, however,
have issued a series of no-wait request calls followed by a wait-for-any-completion
service call from the base level. This wait service (M.ANYW) will place the task in an
interruptible wait state, allowing the execution of post processing and end action
routines associated with the no-wait call. The "return" or "continue wait" end action exit
options allow the exiting end action routine to either return to the point following the
wait-for-any call or to continue the wait-for-any state. Note: A task is prohibited from
making a wait-for-any service call from an end action routine.
User Message Receivers
A task may enable the message interrupt level by calling the M.RCVR system service to
establish a message interrupt receiver address. The level becomes active as the result of
a message send request specifying this task as the destination task. When the message
level is active, normal execution processing is inhibited. Upon entry to the message
interrupt receiver, Rl contains the address of the queue entry (MRRQ) in memory pool.
The receiver may optionally call a service M.GMSGP to store the message in a user
receiver buffer. No-wait I/O is permitted in conjunction with the M. WAIT service.
After appropriate processing, the message interrupt level may be reset by calling the
M.XMSGR system service to exit from the message interrupt receiver.
User Run Receivers
User run receivers execute at the normal task execution (base) level. The cataloged
transfer address is used as the run receiver execution address. The run receiver
mechanism is provided by the system to allow queued requests for task execution with
optional parameter passing. When a run request is issued, the task load module name is
used to identify the task to be executed. If a task of that load module name is currently
active, the run request will be queued from the DQE of the specified task. If the
specified task is not active, it will first be activated. When a task begins execution as
the result of a run request, R 1 contains the address of the run request queue entry. The
receiver may optionally call a service M.GRUNP to store the run parameters in a user
receiver buffer. After appropriate processing, the run receiver task may exit by calling
the M.XRUNR system service. Any queued run requests will then be processed.
User Abort Receivers
(

User abort receivers execute at the normal task execution (base) level. The user task
may optionally establish an abort receiver by calling the M.SUAR monitor service. If an
1-23

I
~ I

abort condition is encountered during task operation, control will be transferred to it.
Upon entry, any active software interrupt level will have been reset, all outstanding
operations or resource waits will have been completed, and all no-wait requests will have
been processed. End action routines associated with no-wait requests which completed
while the abort was outstanding will not have been executed. Status bits reflecting this
will be posted in the appropriate FCB's and PSB's. Any files opened or resources allocated
at the time the abort condition was encountered will remain opened and/or allocated
when the abort receiver is executed. The TSA stack will be clean, and the context at the
time the abort condition was encountered will be stored in T.CONTXT. When the abort
receiver is entered, R6 contains a status byte reflecting task interrupt status at the time
the abort condition was encountered.
Bit

Meaning When Set

24
25
26
27

N/A
N/A
User Break Interrupt Active
End Action Interrupt Active
Message Interrupt Active

28

0"11

The standard exit service is used to exit from an abort receiver. If another abort
condition is encountered, while a task is in an abort receiver, the task will be deleted.
1.7

MPX-32 Send/Receive Facilities

MPX-32 provides both message and run request send/receive processing. Run request
services allow a task to queue an execution request (with optional parameter pass) for
another task. Message services allow a task to send a message to another active task.
The services provided for use by the destination tasks are called "receiving task
services". Those provided for tasks which issue the requests are called "sending task
services".
1.7.1

Receiving Task Services

Establishing Receiver Capability
Establishing Message Receivers -- In order to receive messages sent from other tasks, a
task must be active and have a message receiver established. A message receiver is
established by calling the monitor service M.RCVR, and providing the receiver routine
address as an argument with the call.
Establishing Run Receivers -- Any valid task may be a run receiver. Although a set of
special run receiver services are provided, in the most simple case, they need not be
used. The run receiver mechanism is provided by the system to allow queued requests for
task execution, with optional parameter passing. The cataloged transfer address is used
as the run receiver execution address. The task load module name is used to identify the
task to be executed. If a task of that load module name is currently active, and is a
single-copied task, the run request will be queued until the task exits. If a task of that
,load module name is currently active, but is not a single-copied task, the load module
will be activated (multi-copied) to process this request. When a single-copied task exits,

O·

' ','

,I

1-24

any queued run requests will be executed. If a run request is issued for a task that is not
currently active, an activation will automatically be performed.
Execution of the Recei ver Program
Execution of Message Receiver Programs - When a task is active and has a message
receiver established, it may receive messages sent from other tasks. A message sent to
this task will cause a software (task) interrupt entry to the established message receiver.
Execution of Run Receiver Programs - When a valid task is executed as a result of a run
request sent by another task, it will be entered at its cataloged transfer address. A run
receiver executes at the normal task execution (base) level.
Obtaining the Passed Parameters
Obtaining Message Parameters - When the message receiver is entered, Rl contains the
address of the message queue entry in memory pool. The task may optionally retrieve
the message directly from memory pool, or the task may call a receiver service
(M.GMSGP) to store the message into the designated receiver buffer. If the M.GMSGP
service is utilized, the task must present the address of a five-word Parameter Receive
Block (PRB) as an argument with the call.

(

Obtaining the Run Request Parameters - When the run recei ver is entered, R 1 contains
the address of the run request queue entry in memory pool. The task may optionally
retrieve the run request parameters directly from memory pool, or the task may call a
receiver service (M.GRUNP) to store the run request parameters into the designated
receiver buffer. If the M.GRUNP service is utilized, the task must present the address
of a five-word Parameter Receive Block (PRB) as an argument with the call.
Exiting the Receiver Program
Exiting the Message Receiver - When processing of the message is complete, the
message interrupt level must be exited by calling the M.XMSGR service. When
M.XMSGR is called, the address of the return parameter buffer, and the number of bytes
(if any) to be returned to the sending task. The RXB will also contain a return status
byte to be stored in the Parameter Send Block (PSB) of the sending task. After message
exit processing is complete, the message receiver queue for this task will be examined
for any additional messages to process. If none exist, a return to the base level
interrupted context will be performed.
Exiting the Run Receiver Task -- When run request processing is complete, the task may
use either the standard exit call (M.EXIT), or the special run receiver exit service
(M.XRUNR).
If the standard exit service (M.EXIT) is used to exit the run receiver task, no user status

or parameters will be returned. Only completion statuus will be posted (in the scheduler
status word) of the Parameter Send Block (PSB) in the sending task. After completion
processing for the run request is accomplished, the run receiver queue for this task is
examined, any queued run request will cause the task to be re-executed. If the run
receiver queue for this task is empty, a standard exit will be performed.
1-25

If the special exit (M.XRUNR) is used to exit the run receiver task, the address of a two-

word Receiver Exit Block (RXB) must be provided as an arguument with the call. The
RXB will contain the address of the return parameter buffer, and the number of bytes (if
any) to be returned to the sending task. The RXB will also contain a return status byte
to be stored in the Parameter Send Block (PSB) of the sending task. After completion
processing for the run request is accomplished, the exit control options in the RXB are
examined. If the "wait" exit option is used, the run receiver queue for this task is
examined for any additional run requests to be processed. If none exist, the task will be
put into a wait-state, waiting for the receipt of new run requests. Execution of the task
will not resume until such a request is received. If the "terminate" exit option is used,
any queued run requests will be processed. If the run receiver is empty, however, a
standard exit will be performed.

0

Waiting for the Next Request
In addition to the wait options described under the heading "Exiting the Receiver
Program", a special message-wait call is provided. When operating at the base execution
level, a task that has established a message receiver may invoke a service call (M.SUSP)
to enter a wait-state until the next message is received.
A task may also make use of the M.ANYW service from the base software level. The
M.ANYW service is similar to M.SUSP. The difference is that whereas the M.SUSP waitstate will be ended only upon receipt of a message interrupt, timer expiration, or resume,¥~.
the M.ANYW wait-state will be ended upon receipt of any message, end action, or break
'0
software interrupt.
1.7.2

Sending Task Services

Sending the Request
Message Send Service - A task may send a message to another active task, providing
that task has a message receiver established. The sending task must identify the
destination task by task activation sequence number. When the send message service
(M.SMSGR) is called, the address of a Parameter Send Block (PSB) must be provided as an
argument. The PSB format allows for the specification of the message to be sent, any
parameters to be returned, scheduler and user status, as well as the address of a user end
action routine. No-wait and no-call-back mode control options are also provided.
Send Run Request Service - A task may send a run request to any active or inactive
task, identifying the task by load module name or by task number if the task is
multicopied. When the run request service (M.SRUNR) is called, the address of a
parameter Send Block (PSB) must be provided as an argument. The PSB format allows
for the specification of the run request parameters to be sent, any parameters to be
returned, scheduler and user status, as well as the address of a user end action routine.
No-wait and no-call-back mode control options are also provided.

c
1-26

Waiting for Request Completion

(

Waiting for Message Completion - A message may be sent in either the wait or no-wait
mode. If the wait mode is used, execution of the sending task will be deferred until
processing of the message by the destination task is complete. If the no-wait mode is
used, execution of the sending task will continue as soon as the request has been
queued. The operation in progress bit in the scheduler status field of the PSB may be
examined to determine completion. A sending task may issue a series of no-wait mode
messages followed by a call to the M.ANYW system wait service. This allows a task to
wait for the completion of any no-wait mode messages previously sent. The completion
of such a message will cause resumption at the point after the M.ANYW call.
Waiting for Run Request Completion - Waiting for a run request completion follows the
same form and has the same options as waiting for message completion.
End Action Processing
Message End Action Processing - User specified end action routines associated with nowait mode message send requests are entered at the end action software interrupt level
when the requested message processing is complete. Status and return parameters will
have been posted as appropriate. When end action processing is complete, the M.XMEA
service must be called to exit the end action software interrupt level.
Run Request End Action Processing - Run request end action processing follows the
same form and has the same options as message end action processing. The only
difference is that the M.XREA service is used instead of M.XMEA.

("

Parameter Send Block (PSB)
The Parameter Send Block (PSB) is used to describe a send request issued from one task
to another. The same PSB format is used for both message and run requests. The
address of the PSB (doubleword bounded) must be presented as an argument when either
the M.SMSGR or M.SRUNR services are invoked.

(

"

",',

' ..

!

1-27

Parameter Send Block (PSB)

o

Word

o

7

15

8

o
16

23

24

3

ILoad
Module Name (PSB.LMN) or Task Number if Message (PSB. TSKN) or
if run request to multicopied load module

I
- - - - r-··---·

Priority
(PSB.PRI)

2

Reserved

3

Reserved

4

Return Parameter
Buffer Length (Bytes)
(PSB.RPBL)

5

Number of Bytes
Actually Returned (PSB.ACRP)

I

Return Parameter Buffer Address (PSB.RBA)
· _ · _ _ _ _ w·

Reserved
._-.---

7

-'-~."

___

No-Wait Request End Action Address (PSB.EAA)

- - .---.... . ..---..

Completion
Status
(PSB.CST)

Number of Bytes
To Be Sent (PSB.SQUA)

Send Buffer Address (PSB.SBA)

Reserved

6

--

~

~---

. -----

Processing
Start
Status
(PSB.IST)

.-.

User
Status
(PSB.UST)

Options
(PSB.OPT)

WORD 0
Bits 0-31

Load Module Name - Characters 1-4 of the name of the load module to
receive the run request, or
Task Number - The task number of the task to receive the message, or
task number of the multicopied task to receive the run request.

WORD 1
Bits 0-31

Load Module Name - Characters 5-8 of the name of the load module to
receive the run request, or zero if Word 0 contains the task number.

WORD 2
Bits 0-7

Bits 8-15
1-28

Priority - This field contains the priority of the send request (1-64). If
the value of this field is zero, the priority used will default to the
execution priority of the sending task. This field is not examined if the
sending task is not a privileged program.
Reserved.

0 ,'

/1

f,

Bits 16-31

Number of Bytes to be Sent - This field specifies the number of bytes
to be passed (0-768) with the message or run request.

WORD 3
Bits 0-7

Reserved.

Bits 8-31

Send Buffer Address - This field contains the word address of the
buffer containing the parameters to be sent.

WORD 4
Bits 0-15

Return Parameter Buffer Length - Contains the maximum number of
bytes (0-768) that may be accepted as returned parameters.

Bits 16-31

Number of Bytes Actually Returned - This field is set by the send
message or run request service upon completion of the request.

WORD 5

«

Bits 0-7

Reserved.

Bits 8-31

Return Parameter Buffer Address - Contains the word address of the
buffer into which any returned parameters will be stored.

WORD 6
Bits 0-7

Reserved.

Bits 8-31

No-Wait Request End Action Address - Contains the address of a user
routine to be executed at a software interrupt level upon completion of
the request.

WORD 7
Bits 0-7

Completion Status - This bit encoded field contains completion status
information posted by the operating system as follows:
Bit

(-

Meaning When Set

0

Operation in progress (busy) (PSB.OIP)

1

Destination task was aborted before
processing for this request (PSB.DTA)

completion of

2

Destination task was deleted before
processing for this task (PSB.DTD)

completion

3

Return parameters truncated (attempted return exceeds
return parameter buffer length) (PSB.RPT)

4

Send parameters truncated (attempted send exceeds
destination task receiver buffer length) (PSB.SPT)

of

1-29

Bits 8-15

5

User end action routine not executed because of task abort
outstanding for this task (may be examined in abort
receiver to determine incomplete operation) (PSB.EANP)

6-7

Reserved.

()

Processing Start (Initial) Status - This value encoded field contains
initial status information posted by the operating system as follows:
Code

Definition

o

Normal initial status (PSB.IST)

1

Message request task number invalid (PSB. TSKE)

2

Run request load module name not found in System Master
Directory (SMD) (PSB.LMNE)

3

File associated with run request load module name is
password protected (PSB.LMPE)
File associated with run request load module name does
not have a valid load module format (PSB.LMFE)

Bits 16-23
1-30

5

Dispatch Queue Entry (DQE) space is unavailable for
activation of the load module specified by a run request
(PSB.DQEE)

6

An I/O error was encountered while reading the SMD to
obtain the file definition of the load module specified in a
run request (PSB.SMIO)

7

An I/O error was encountered while reading the file
containing the load module specified in a run request
(PSB.LMIO)

8-9

Reserved

10

Invalid priority specification. Note: An unprivileged task
may not specify a priority which is higher than its own
execution priority (PSB.PRIE)

11

Invalid send buffer address (PSB.SBAE)

12

Invalid return buffer address (PSB.RBAE)

13

Invalid no-wait mode end action routine address (PSB.EAE)

14

Memory pool unavailable (PSB.MPE)

15

Destination task receiver queue is full (PSB.DTQF)

-

User Status - As defined by destination task.

0;\
'f'

(

Bits 24-31

Options - This field contains user request control specification. It is
bit encoded as follows:
Bit

Meaning When Set

24

Request is to be issued in no-wait mode (PSB.NWM)

25

Do not post completion status or accept return
parameters. This bit is examined only if bit 24 is set.
When this bit is set, the request is said to have been issued
in the "no call-back mode". (PSB.NCBM)

Parameter Receive Block (PRB)
The Parameter Receive Block (PRB) is used to control the storage of passed parameters
into the receiver buffer of the destination task. The same format PRB is used for both
message and run requests. The address of the PRB must be presented when either the
M.GMSGP or M.GRUNP services are invoked by the receiving task.

(

c
1-31

Parameter Receive Block (PRB)

o

Word

15 16

7 8

31

o

Status
(PRB.ST)

1

Receiver Buffer
Length(PRB.RBL)

2

Ownername of Sending Task (Word 1) (PRB.OWN)

3

Ownername of Sending Task (Word 2)

o

Parameter Receiver Buffer Address
(PRB.RBA)
Number of Bytes
Actually Received
(PRB.ARQ)

Task Number of Sending Task (PRB. TSKN)

4

.
WORD 0
Bits 0-7

Status-value encoded status byte

'"3,c'

Code

Bits 8-31

Definition

o

Normal status

1

Reserved

2

Invalid receiver buffer address (PRB.RBAE)

3

No active send request (PRB.NSRE)

4

Receiver buffer length exceeded (PRB.RBLE)

5-7

Reserved

Parameter Receiver Buffer Address - This field contains the word
address of the buffer, into which the sent parameters will be stored.

WORD 1
Bits 0-15

Receiver Buffer Length - Contains the length of the receiver buffer
(number of bytes).

Bits 16-31

Number of Bytes Actually Received - This value is set by the operating
system and is clamped to a maximum equal to the receiver buffer
length.

1-32

o

WORDS 2,3
Bits 0-63

Ownername of Sending Task - Set by the operating system to contain the
ownername of the task which issued the parameter send requesl.

WORD 4
Bits 0-31

Task Number of Sending Task - Set by the operating system to contain
the task activation sequence number of the task which issued the
parameter send request.

Receiver Exit Block (RXB)
The Receiver Exit Block (RXB) is used to control the return of parameters and status
from the destination (receiving) task to the task that issued the send request. It is also
used to specify receiver exit-type options. The same format RXB is used for both
messages and run requests. The address of the RXB must be presented as an argument
when either the M.XMSGR or M.XRUNR services are called.

1-33

,
,0'

Receiver Exit Block (RXB)
Word

o

78

15 16

31

o

Return
Status
(RXB.ST)

Return Parameter Buffer Address
(RXB.RBA)

1

Options
(RXB.OPT)

Reserved

Number of Bytes
to be Returned
(RXB.RQ)

WORD 0
Bits 0-7

Return Status - Contains status as defined by the receiver task. Used
to set the user status byte in the Parameter Send Block (PSB) of the
task which issued the send request.

Bits 8-31

Return Parameter Buffer Address - Contains the word address of the
buffer containing the parameters which are to be returned to the task
which issued the send request.

WORD 1
Bits 0-7

Options - This field contains receiver exit control options.
encoded as follows:

It is

Value

Exit Type

Meaning

o

M.XRUNR

Wait for next run request.

M.XMSGR

Return to point of task interrupt.

M.XRUNR

Exit task, process any additional run
requests.
If none exist, perform a
standard exit.

M.XMSGR

N/A

1

Bits 8-15

Reserved.

Bits 16-31

Number of Bytes to be Returned - contains the number of bytes to be
returned on a message or receiver run exit.

Message or Run Request Queue Entry (MRRQ)
The Message or Run Request Queue Entry (MRRQ) is generated by the system to process
a send request. After the MRRQ has been manufactured by the send service, it is
attached to the appropriate queue slot in the DQE of the destination task. When the
receiver program is entered, R 1 will contain the address of the MRRQ in memory pool.
The receiver program may optionally reference the MRRQ directly, without issuing a
M.GRUNP or M.GMSGP service call. The same format MRRQ is used for both messages
and run requests.

1-34

0

Message or Run Request Queue Entry (MRRQ)
I

I

i

Word

o

String Forward Address (MQ.SF)

1

String Backward Address (MQ.SB)
Priority
(MQ.PR)

2

3

Task Number of Sending Task (MQ.TNST)

4

Post Processing Service PSD Word 1, or
Sending Task Ownername Word 1 (MQ.PPSD)
Post Processing Service PSD Word 2, or
Sending Task Ownername Word 2 (MQ.PPSD)

5

(

Address of Parameter Send Block (PSB)
(MQ.PSBA)

6

7

~

I

Passed Parameter
Quantity (Bytes)
or Number Bytes of
Storage Space (MQ.PPQ)

Return Parameter
Buffer Length (Bytes)
or Number Actual
Return Parameters (MQ.RBL)

Completion
Status
(PSB format)
(MQ.CST)

User
Status
(PSB format)
(MQ.UST)

Initial
Status
(PSB format)
(MQ.IST)

Options
(PSB format)
(MQ.OPT)

Variable Length Storage
Area for Passed and
Returned Parameters

~

I

WORD 0
Bits 0-31

String Forward Address - Address of next entry of top-to-bottom list.

WORD 1
Bits 0-31

String Backward Address - Address of next entry in bottom-to-top list.

1-35

WORD 2
Bits 0-7

Priority - Priority (1-64) of this request.

Bits 8-31

Address of Parameter Send Block (PSB) - Contains the logical address
of the PSB in the address space of the task which initiated the request.

o

WORD 3
Bits 0-31

Task Number of Requesting Task - This field contains the task
activation sequence number of the task which issued the request.

WORDS If.-5
Bits 0-63

Post Processing Service PSD - The PSD of the appropriate post
processing service which runs on behalf of the task which issued the
request. This slot is also used to contain sending task ownername.

WORD 6
Bits 0-15

Passed Parameter Quantity - The number of bytes sent to the
destination task.

Bits 16-31

Return Parameter Buffer Length - Contains the length (bytes) of the
return parameter buffer in the task which issued the request.

WORD 7
Bits 0-15

Scheduler Status - This field is used to contain status information to be
posted in the scheduler status field of the PSB upon request completion
(see PSB format).

Bits 16-23

User Status - As defined by destination task.

Bits 24-31

Options -This field contains user request control specifications. It is
bit encoded as follows:
Bit

Meaning When Set

24

Request is in no-wait mode.

25

Request is in no-call-back mode (no-wait, no
status, no return parameters)

Messages and Run Request Services Summary
The following table is provided as a summary of message and run request services
provided by the MPX-32 system.

o
1-36

c

Message and Run Request Services Summary
Run Request
Services

Message
Services

Function

N/A

M.RCVR recvaddr

Establish receiver address

M.GRUNP prbaddr

M.GMSGP prbaddr

Get parameters

M.XRUNR rxbaddr,timel
or
M.EXIT

M.XMSGR rxbaddr

Exit receiver

N/A

M.ANYW time 1
message
or

Wait for receipt of next

Receiver
Services

M.SUSP taskno,timel
Send
Services
M.SRUNR psbaddr

M.SMSGR psbaddr

Send request

M.ANYW time!

M.ANYW time 1
M.EA WAIT time 1

Wait for any request
competition

M.XREA

M.XMEA

Exit user end action
service

Argument

Description

recvaddr

Address of receiver

prbaddr

Address of Parameter Receive Block (PRB)

rxbaddr

Address of Receiver Exit Block (RXB)

psbaddr

Address of Parameter Send Block (PSB)

taskno

Contains zero

timel

Contains zero if indefinite wait, otherwise contains negative
number of time units to be used as a wait time-out value.

1-37

MPX-32 Device Address Specification

1.8

()

Under MPX-32 device addresses are specified using a combination of three levels of
identification. They are Device Type, Device Channel/Controller Address, and Device
Address/Subaddress.
A device may be specified using the generic device type only, which will result in
allocation of the first available device of the type requested.
A second method of device specification is achieved by using the generic device type and
specifying the Channel/Controller Address which results in allocation of the first
available device of the type requested on the Channel/Controller specified.
The third and final method of device selection requires specification of the Device Type,
Channel/Controller, and Device Address/Subaddress. This method allows specification of
a specific device.
Examples of the three methods of device specification follow:
Type I - Generic Device Class
$ASSIGN3 DEV=M9
In this example the file associated with LFC "DEV" will be allocated to any 9-track
tape unit on any channel.

,,r"

''lP'

Type 2 - Generic Device Class and Channel/Controller
$ASSIGN3 DEV=M910
In this example the file associated with LFC "DEV" will be allocated to the first
available 9-track tape unit on channel 10. The specification is invalid if a 9-track
tape unit does not exist on the channel.
Type 3 - Specific Device Request
$ASSIGN3 DEV=M91001
In this example the file associated with LFC "DEV" will be allocated to the 9-track
tape unit 01 on channel 10. The specification is invalid if unit 01 on channel 10 is not
a 9-track tape.
GPMC/GPDC devices are specified in keeping with the general structure as defined.
For instance, the CRT at subaddress 04 on GPMC 01 whose channel address is 20
would be identified as follows:
$ASSIGN3 DEV=TY2004
A special device type "NU" is available for NULL device specifications. Files
accessed using this device type generate an End-of-File upon attempt to read and
normal completion upon attempt to write.

1-38

o

(

Assignment of logical file codes to the operator console is achieved through usage of
the device type "CT".
A description of device selection possibilities would be constructed as follows:
DISC
DC
OM

DM08
DM080l
DF
DFOt,.
DFOt,.OI

Any Disc
Any Moving Head Disc
Any Moving Head Disc on Channel 08
Moving Head Disc 01 on Channel 08
Any Fixed Head Disc
Any Fixed Head Disc on Channel at,.
Fixed Head Disc 0 I on Channel at,.

TAPE
MT
M9
M910
M91002
M7
M712
M71201

(

Any Magnetic Tape
Any 9-track Magnetic Tape
Any 9-track Magnetic Tape on Channel 10
9-track Magnetic Tape 02 on Channel 10
Any 7-track Magnetic Tape
Any 7-track Magnetic Tape on Channel 12
7-track Magnetic Tape 01 on Channel 12

CARD EQUIPMENT
CD
CR
CR78
CR7800
CP
CP7C
CP7COO

Any CR/CP
AnyCR
Any CR on Channel 78
CR on Channel 78 Subaddress 00
Any CP
Any CP on Channel 7C
CP on Channel 7C Subaddress 00

LINE PRINTER
LP
LP7A
LP7AOO

Any LP
Any LP on Channel 7A
LP on Channel 7A Subaddress 00

l- 39

/1

MPX-32
Device Type Codes
Dev

Type
Code

Device
Mnemonic

00
01

CT
DC
OM
DF
MT
M9
M7
CD
CR
CP

02
03
04
05

06
07

08
09
OA

OB
OC
OD
OE

OF
10
11
12
13

14
15 .
16
17
18
19
lA
IB
1.9

LP
PT
TY
CT

FL
NU
CA

UO
Ul
U2
U3

U4
U5

U6
U7

U8
U9

LF

Device Description
Operator Console (Not Assignable)
Any Disc Unit
Any Moving Head Disc
Any Fixed Head Disc
Any Magnetic Tape Unit
Any 9-track Magnetic Tape Unit
Any 7-track Magnetic Tape Unit
Any Card Reader/Reader Punch
Any Card Reader
Any Card Reader Punch
Any Line Printer
Any Paper Tape Reader Punch
Any Teletype Compatible Device (other than Console)
Operator Console (Assignable)
Floppy Disc
Any Null Device
Communications Adapter
User Supplied Device
User Supplied Device
User Supplied Device
User Supplied Device
User Supplied Device
User Supplied Device
User Supplied Device
User Supplied Device
User Supplied Device
User Supplied Device
Line Printer/Floppy Controller (used only with SYSGEN)

MPX-32 CPU Scheduling

The MPX-32 CPU scheduler is responsible for allocating CPU execution time to active
tasks. Tasks are allocated CPU time based on execution priority and execution
eligibility. Execution priority is specified when a task enters (is cataloged into) the
system. Execution eligibility is determined by the task's readiness to run.
Execution Priorities
The MPX-32 system provides 64 levels of execution priority. These priority levels are
divided into two major categories. Real-time tasks operate in the priority range 1-54.
Time distribution tasks operate in the priority range 55-64.

1-40

o

Real Time Priority Levels (1-54)
Scheduling of Real Time Tasks in MPX-32 occurs on a strict priority basis. The system
does not impose time-slice, priority migration, or any other scheduling algorithm which
will interfere with the execution priority of a real time task. Execution of an active real
time task at its specified priority level is inhibited only when it is ineligible for execution
(not ready to run). Execution of a real time task may, of course, always be preempted by
a higher priority real time task that is ready to run.
Time Distribution Priority Levels (55-64)
For tasks executing at priority levels 55-64, MPX-32 provides a full range of priority
migration, situational priority increment, and time quantum control.
Priority Migration

(

The specified execution priority of a time distribution task is used as the tasks base
execution priority. Each time distribution task's current execution priority is determined
by the base priority level as adjusted by any situational priority increment. The current
execution priority is further adjusted by increasing the priority (by one level) whenever
execution is preempted by a higher priority time distribution task, and decreasing the
priority whenever the task gains CPU control. The highest priority achievable by a time
distribution task is priority level 55. The lowest priority is clamped at the task's base
execution level.
Situational Priority Increments
Time distribution tasks are given situational priority increments in order to increase
program responsiveness.
The effect of situational priority increments is to give
execution preference to tasks that are ready to run after having been in a natural wait
state. A task that is CPU bound will migrate toward its base execution priority.
Situational priority increments are invoked when a task is unlinked from a wait state list,
and relinked to the ready to run list.
Situation

Priority Increment

Terminal input wait
complete
I/o wait complete
Message (send) wait
complete
Run request (send)
complete
Memory (inswap) wait
complete

Base level + 2
Base level + 2
Base level + 2
Base level + 2
Base level + 3

1-41

Time Quantum Controls
The MPX-32 system allows for the specification of two time quantum values at system
generation time. If these values are not specified, system default values will be used.
The two quantum values are provided for scheduling control of time distribution tasks.
The first quantum value (stage I) indicates the minimum amount of CPU execution time
guaranteed to a task before preemption by a higher priority time distribution task. The
stage I quantum value is also used as a swap inhibit quantum after inswap. The second
quantum value represents the task's full time quantum. The difference between the first
and second quantum values defines the execution period called quantum stage 2. During
quantum stage 2, a task may be preempted and/or outswapped by any higher priority
task. When a task's full time quantum has expired, it is relinked to the bottom of the
priority list, at base execution priority.

o

Time quantum accumulation is the accumulated sum of actual execution times used by
this task. A task's quantum accumulation value is reset when the task voluntarily
relinquishes CPU control (e.g., suspend, wait I/O, etc.).
State Chain Management
The current state of a task (e.g., ready to run, waiting for I/O, etc.) is reflected by the
linkage of the dispatch queue entry associated with the task into the appropriate state
chain. The ·state queues are divided into two major categories: ready to run and
waiting. The re\~dy-to-run category is subdivided by priority, with a single queue for the
real time priorities and a separate queue for each of the time distribution priority
levels. The "waiting" category is subdivided according to the resource or event required
to make the task eligible for execution.

o

o

I! .
I

1-42
,('

(

MPX-32 State Queues
Ready to Run Queues
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.

Current CPU Task (in execution) - CURR
Current IPU Task (in execution) - CIPU
IPU requesting state - RIPU
Real Time Priority Levels (1-54) - SQRT
Time Distribution Priority Level 55 - SQ55
Time Distribution Priority Level 56 - SQ 56
Time Distribution Priority Level 57 - SQ57
Time Distribution Priority Level 58 - SQ58
Time Distribution Priority Level 59 - SQ59
Time Distribution Priority Level 60 - SQ60
Time Distribution Priority Level 61 - SQ61
Time Distribution Priority Level 62 - SQ62
Time Distribution Priority Level 63 - SQ63
Time Distribution Priority Level 64 - SQ64
Wait-Mode Operation Queues

(

15.
16.
17.
18.
19.

Wait-Mode
Wait-Mode
Wait-Mode
Wait-Mode
Wait-Mode

Interactive Input - SWTI
I/O - SWIO
Send Message - SWSM
Send Run Request - SWSR
Low Speed Output (not implemented) - SWLO

Execution Wait Queues
20. Suspended Waiting for Message Interrupt, Timer Expiration, or Resume - SUSP
21. Waiting for Run Request or Timer Expiration - RUNW
22. Operator Hold, Waiting for Continue - HOLD
Wait For Any Operation Complete Queue
23. Waiting for Completion of any No-Wait I/O, No-Wait Message, No-Wait
Run Request, or any Message Interrupt or Break - ANYW
Waiting for Resource Queues
24.
25.
26.
27.
28.

1.10

Waiting for
Waiting for
Waiting for
Waiting for
Waiting for

Disc Space - SWDC
Peripheral Device - SWDV
FISE - SWFI
Memory - MRQ
Memory Pool - SWMP

FAT/FPT and Blocking Buffer Allocation

During the task allocation process, separate areas are reserved in a task's TSA for
FAT /FPT pairs and blocking buffers. The size of each area is fixed for the duration of a
task's execution. The size of the FAT/FPT area limits the number of file codes that a
task can have allocated concurrently. The size of the blocking buffer area limits the
number of file codes assigned to blocked devices or files that a task can have allocated
concurrently. The number of entries in each area is established as follows.

1-43

'('.~
'"
)~

FAT /FPT Area

\

..

Non-shared task: one FAT and FPT entry for each cataloged assignment plus one entry
for each Job Control or TSM assignment that does not override a cataloged assignment
plus the number specified on the FILES Cataloger directive.
Shared task: the number specified on the FILES Cataloger directive.
Blocking Buffer Area
Non-shared task: from the assignments resul ting from merging Cataloger and Job
Control or TSM assignments, one buffer for each ASSIGN 1, plus one buffer for each
ASSIGN3 to a magnetic tape or disc unit on which the unblocked option is not specified
plus one buffer for each ASSIGN2 plus the number specified on the BUFFERS Cataloger
directive.
Shared task: the number specified on the BUFFERS Cataloger directive.
Cataloger, Job Control, and TSM ASSIGN 1 and ASSIGN3 directives are modified by the
addition of an "unblocked" specification as follows.
ASSIGN 1 fc=file,(password),(U)
ASSIGN3 fc=device,(U)
where:

U specifies that I/O to the file or device is to be unblocked. If this
parameter is absent, I/O to the file or magnetic tape or disc device is
blocked.

Files specified on ASSIGN2 directives are blocked by default.
The following Cataloger directives are added.
FILES number
where:

number specifies the maximum number of dynamically allocated file
codes that a non-shared task has allocated concurrently. It specifies the
maximum number of file codes that a shared task has allocated
concurrently.

BUFFERS number
where:

number specifies the maximum number of dynamically allocated file
codes assigned to blocked files or devices that a non-shared task has
allocated concurrently. It specifies the maximum number of file codes
assigned to blocked files or devices that a shared task has allocated
concurrently.

"Files" and "buffers" override parameters may be specified to the Parameter Task
Activation (M.PTSK) system service. These parameters allow addition of FILES and
BUFFERS Job Control and TSM directives if required by a future "load and goll
capability.

(',.)",
i",

'il

1-44

1.11

Indirectly Connected Interrupts

An indirectly connected interrupt is an interrupt that may be associated with a MPX-32
task. When the interrupt occurs, the associated task will be resumed. An interrupt is
declared as indirectly connected at system generation (SYSGEN) time. This declaration
will cause SYSGEN to generate an Indirectly Connected Task Linkage Block (ITLB). The
ITLB is permanently associated with the specified interrupt level, but only becomes
associated with a MPX-32 task when the M.CONN system service is invoked. A task may
be disconnected from an interrupt level by invoking the M.DISCON system service.
Connect Task To Interrupt Service (M.CONN)

(

The M.CONN system service associates a MPX-32 task with an external interrupt that
was declared at system generation time to be indirectly connected. When called,
M.CONN is presented the priority level of the interrupt and the task activation sequence
number (T ASKNO) of the task. The T ASKNO is first validated to insure that it is both
currently active and of the same ownername as the calling task. If so, the M.CONN
service next checks to see if the specified task is already connected to an interrupt.
DQE.ILN in the DQE will contain the interrupt priority level if the task is already
connected. If the task is not previously connected, the M.CONN service will search the
Indirectly Connected Task Linkage Table OTL T) to find the linkage block (ITLB)
associated with this interrupt. If one exists and is not already connected, the DQE
address of the task being linked is stored in word 1 of the ITLB to reflect the linkage.
DQE.ILN in the DQE is then set to contain the interrupt priority level. Note: The task
will be automatically disconnected from the interrupt on abort, delete, or exit.
Disconnect Task From Interrupt Service (M.DISCON)
The M.DISCON system service disconnects a MPX-32 task from an external interrupt to
which it had previously been connected. When called, M.DISCON is presented the task
activation sequence number (TASK NO) of the task as an argument with the call. If the
specified task is not connected to an interrupt, DQE.ILN in the DQE will be equal to zero
and the request will be ignored. Otherwise, DQE.ILN will contain the external interrupt
priority level. M.DISCON will use this priority level to locate the linkage block (ITLB) in
the linkage table (ITL T). The DQE address (word 1 of the ITLB) will then be cleared to
mark the level as disconnected. DQE.ILN will also be cleared in the DQE of the
specified task.
Indirectly Connected Task Linkage Table OTL T)
The Indirectly Connected Task Linkage Table (ITL T) is a variable length table built by
the system generation program (SYSGEN) and it contains an entry for each interrupt
specified as being indirectly connectable. An entry is called an Indirectly Connected
Task Linkage Block (ITLB) and is 24 words in length. The address of the ITL T is
contained in C.ITL T. The number of entries in ITL T is contained in C.NITI. Both C.ITL T
and C.NITI are initialized by SYSGEN.

1-45

Indirectly Connected Task Linkage Block (ITLB)
An entry in the Indirectly Connected Task Linkage Table is called an Indirectly
Connected Task Linkage Block (ITLB). An ITLB is 24 words long and is used to associate
an external interrupt with an indirectly connected task.

o

I~

1-46

Indirectly Connected Task Linkage Block (ITLB)
Word 0
(

31

0

Priority Level

1

DQE Address of

.

[DATAW X'YY']

[DATAW OJ

Ind. Conn Prog.
Old PSD Word I

2

(DATAW 0]

-3

Old PSD Word 2

[DATAW 0]

4

New PSD Word 1

[GEN 1/1, 12/0, 19/W($+2W)]

.

--,.~

5

New PSD Word 2

6

Increment Global

[GEN 1/1, 14/0, 1/1, 1/0, 1/0, 14/0 ]

[ABM 31,C.GINT]

Interrupt Count Inst.

(

7

Save Register Inst.

[STF RO,$+9W]
---

Branch and Link

8

-~.~-

[BL ICP]

to ICP Routine
Address of Reg. Save
Area for S.EXEC5 Call

9

[LA X2, $+7W]

10

Old PSD for S.EXEC5 Call

[LD R6, $-8W]

11

Block External Interrupts

[BEl]

12

Deactivate Interrupt

[DAI XIY'll]

Branch Back for

13

S.EXEC5 Call
14
15

(~

--

16
23

---_

...

_--..,.

_.

[BL ICP.20]
-

Reserved for Future Use

j

I

Register Save Area

-1-47

Word 0
Bits 0-31

Priority Level - Set by SYSGEN to contain the priority level of
the associated interrupt.

Word 1
Bits 0-31

DQE Address of Indirectly Connected Program - Contains the
Dispatch Queue Entry (DQE) address of the task to be resumed
on occurrence of this interrupt. Initially set equal to zero by
SYSGEN. Initialized by M.CONN system service.

Words 2,3
Bits 0-63

Old PSD -Old PSD slot of Interrupt Control Block. Used for
storage of the PSD associated with the interrupted context.
Initially set equal to zero by SYSGEN. The dedicated interrupt
location (IVL) is initialized by SYSGEN to contain the address
of word 2 of the ITLB.

Words 4,5
Bits 0-63

New PSD - New PSD slot of Interrupt Control Block. Contains
the PSD to be used on occurrence of this interrupt. Causes
execution to begin at ITLB word 6 in privileged mode,
unblocked state, with old map status retained.

Word 6
Bits 0-31

Increment Global Interrupt Instruction - Execution will begin
at this location upon occurrence of the associated interrupt.
Contains an add bit in memory instruction to increment the
global interrupt count.
It must be the first instruction
executed in ICP. This location is initialized by SYSGEN to
contain a ABM 31,C.GINT.

Word 7
Bits 0-31

Save Registers Instruction - Contains a store file instruction to
save all 8 registers in words 16-23 of the ITLB. This location is
initialized by SYSGEN to contain a STF RO,$+9W.

Word 8
Bits 0-31

Branch and Link to ICP Routine - Executed after the register
save instruction on occurrence of the associated interrupt.
Transfers control to the single-copied ICP routine.
This
location is initialized by SYSGEN to contain a BL ICP.

Words 9-13

Control is returned to this location after S.EXECI4 is called in
the ICP routine. Set up is made for exiting the interrupt, and
then control is tranferred back to ICP for the S.EXEC5 call.

Words 14-15

Reserved for future use.

Words 16-23

Register Save Area.

( '~'. J
.....

1-48

"

Indirectly Connected Interrupt Program OCP)
The Indirectly Connected Interrupt Program OCP) is a single copied routine that
processes all indirectly connected external interrupts. It is entered in unblocked mode
with the end address (+ 1W) of the linkage block (lTLB) in RO. The global interrupt count
will have been incremented within the ITLB and the registers from the interrupted
context will have been stored in Words 16-23 of the block. When ICP is entered, it will
check ITLB word I to verify connection of the interrupt to a MPX-32 task. If the
interrupt is not connected, it will be ignored and ICP will transfer back to the ITLB to
exit the interrupt. If ITLB word I contains a DQE address, the associated task will be
resumed by calling S.EXECI4 who will return control to word 9 of the ITLB. Set up is
made for exiting the interrupt within the ITLB, and then execution is transferred back to
ICP.20 for the S.EXEC5 exit.
H.ICP

ICP.10
ICP.20

(

TRR
LW
BCF
TRSW
BU
BL

RO,Rl
R2,-8W,Rl
ZR,ICP.IO
RO
S.EXECI4
S.EXEC5

1.12

Miscellaneous System Macros

1.12.1

M.BACK

ITLB END ADDRESS TO R I
GET DQE ADDR OF IND CONN TASK
CONTINUE IF CONNECTED
BRANCH BACK TO ITLB TO EXIT
RESUME PROGRAM

Functional Description
This macro backspaces the current address of the file by the specified number of file or
record marks.
Macro Call
Calling Sequence:
M.BACK ARG 1, [ARG2], ARG3
where:
ARGI

is the FCB address

ARG2

is the optional character R to specify record (otherwise file is
assumed)

ARG3

contains the number of record or file marks to be backspaced
(the number specified must be word-scaled, e.g., 1W for 1
record)

1-49

1.12.2

M.CALL

Functional Description
This macro generates a supervisor call instruction.
Macro Call
Calling Sequence:
M.CALL ARG 1,ARG2
where:

1.12.3

ARGI

is the name of a system module

ARG2

is an entry point number 0,2,3, ••• ) within the system module

M.CLSE

Functional Description
This macro marks the file closed to subsequent service, writes an optional end-of-file
mark, and performs an optional rewind.

"",'

Macro Call
Calling Sequence:
M.CLSE ARGl, [ARG2], [ARG3]
where:

1.12.4

ARGI

is the FCB address

ARG2

is the optional character string EOF, the presence of which will
cause an end-of-file mark to be written

ARG3

is the optional character string REW, the presence of which will
cause the file to be rewound

M.DFCB

Functioned Description
This macro allows the user to create a file control block (FCB) and set the appropriate
parameters and specifications common to I/o requests which will be issued for the file.

1-50

C',

(

Macro Call
Calling Sequence:
M.DFCB

ARG 1,ARG2,ARG3,ARG4,ARG5, [ARG6],
[NWT),
[NER], [DFT],
[NST],
[RAN] ,
[EVN
[556]
rLDRl
rINT
[ ASC]
BIN ,
LNLDJ, LpCK,
ODD,
800

J

1

where:
ARGI

is the ASCII character string to be used as the symbolic label
for the address of the FCB

ARG2

is the ASCII character string to be used as the logical file code
in the FCB (this file code can be one to three characters in
length)

ARG3

is the optional transfer count (bytes)

ARG4

is the optional data transfer address

ARG5

is the optional error return address

ARG6

is the optional random access address expressed as the
hexadecimal block number (original zero) relative to the base
of the random access file

NWT

is the optional character string which sets the no-wait I/o
specification indicator

NER

is the optional character string which sets
peripheral error processing indicator

DF!

is the optional character string which sets the inhibit data
formatting indicator

NST

is the optional character string which sets the inhibit status
testing indicator

RAN

is the optional character string which sets the random access
mode indicator

ASC or BIN

is the optional character string which will set the forced ASCII
or forced binary mode specification, respectively, for read or
punch operations performed when the file code for this file is
assigned to a card reader or card reader/punch device

(

the inhibit

LOR or NLO is the optional character string which will specify skip leader
or do not skip leader, respectively, when the file code for this
file is assigned to a paper tape reader/punch device

1-51

INT or PCK

is the optional character string which will specify interchange
or packed modes, respectively, when the file code for this file
is assigned to a magnetic tape device

0'"

EVN or ODD is the optional. character string which will specify even or odd
parity, respectively, when the file code for this file is assigned
to a magnetic tape device
556 or 800

1.12.'

is the optional character string which will specify 556 or 800
bpi tape densities, respectively, when the file code for this file
is assigned to a magnetic tape device

M.DFCBE

Functional Description
This macro allows the user to create an expanded file control block (FCB) and set the
appropriate parameters and specifications common to I/O requests which will be issued
for the file.
Macro Call
Calling Sequel1ce:
M.DFCBE ARGI,ARG2,ARG3,ARG4.ARG5, [ARG6]
(NWT], [NER), [DFI], [NST],
(RAN],
[EVNJ
[5561
ASC] [LDRJ [INT
[ BIN.,
NLD, PCK, ODD,
800J,ARG7,ARG8

J

where:

1-52

ARGI

is the ASCn character string to be used as the symbolic label
for the address of the FCB

ARG2

is the ASCII character string to be used as the logical file
code in the FCB (this file code can be one to three characters
in length)

ARG3

is the optional transfer count (bytes)

ARG4

is the optional data transfer address

ARG5

is the optional wait I/O error return address

ARG6

is the optional random access address expressed as the
hexadecimal block number (original zero) relative to the base
of the random access file

NWT

is the optional character string which sets the no-wait I/O
specification indicator

NER

is the optional character string which sets the inhibit
peripheral error processing indicator

o

DFI

is the optional character string which sets the inhibit data
formatting indicator

NST

is the optional character string which sets the inhibit status
testing indicator

RAN

is the optional character string which sets the random access
mode indicator

ASC or BIN

is the optional character string which will set the forced
ASCII or forced binary mode specification, respectively, for
read or punch operations performed when the file code for
this file is assigned to a card reader or card reader/punch
device

LOR or NLD

is the optional character string which will specify skip leader
or do not skip leader, respectively, when the file code for this
file is assigned to a paper tape reader/punch device

INT or PCK

is the optional character string which will specify interchange
::>r packed modes, respectively, when the file code for this file
is assigned to a magnetic tape device

EVN or ODD

is the optional character string which will specify even or odd
parity, respectively, when the file code for this file is
assigned to a magnetic tape device

556 or 800

is the optional character string which will specify 556 or 800
bpi tape densities, respectively, when the file code for this
file is assigned to a magnetic tape device

ARG7

is the optional no-wait I/O normal end-action service address

ARG8

is the optional no-wait I/O error end-action service address

(

(

1.12.6

M.EIR

Functional Description
This macro is called by the resident system modules initialization entry points at entry.
It stores register a for later recall by M.XIR, the initialization entry point exit macro
(see Section 1.12.24).
Macro Call
Calling Sequence:
M.EIR

1-53

1.12.7

o

M.FWRD

Functional Description
This macro advances the current address of the file by the number of file or record
marks specified.
Macro Call
Calling Sequence:
M.FWRO ARG 1, [ARG2] ,ARG3
where:

1.12.8

ARGI

is the FCB address

ARG2

is the optional character R to specify record (otherwise file is
assumed)

ARG3

contains the number of record or file marks to be advanced (the
number specified must be word-scaled, e.g., 1W for 1 record)

M.INIT

Functional Description
".~

This macro is used to provide for user initialization of device handler parameters via
entry point S. The code generated by this macro is executed by SYSGEN and overlayed.

0

Macro Call
Calling Sequence:
M.INIT

ARGI, [ARG2] , [.t\RG3] ,[ARG4] , [ARG5] , [ARG6],
[ARG7] ,[ARGS] , [ARG9] ,[ARG 10] ,(ARG 11),
[ARG 12] , [ARG 13] , [ARG 14-] , [ARG 15] , [ARG 16),
[ARGI7]

where:
ARG 1

is the entry point truncated label, e.g., MTO for magnetic
tape handler.
This argument must be three ASCII
characters. The first two represent the device mnemonic and
the third is zero (0).

ARG2

is the optional specification for modification of the TO 2000
level test to no-operation

ARG3-ARG 17

are the optional special parameter addresses to be initialized,
i.e., SPA's

Usage
M.INIT MTO"SPA 1,SPA2,SPA3
This macro, when placed as the last source statement in the device handler, will provide
the necessary code to initialize the handler. The 'HAT' must be modified to specify entry
point S and an additional entry must be made in the table (ACH MTOO.8).
1-.54-

o

1.12.9

(

M.INITX

Functional Description
This macro is called by the handler initialization macros to combine basic instruction and
commands with priority levels and device addresses for later execution within the
handler.
Macro Call
Calling Sequence:
M.INITX ARG 1,ARG2
where:
ARGI

contains the basic instruction or command

ARG2

contains a mask which is ORed with ARG 1
NOTE:

Whenever this macro is called, register 5 must be preloaded with the properly positioned
priority level or device address.

1.12.10

M.IOFF

Functional Description
This macro generates a Block External Interrupt (BEn instruction which prevents the
CPU from sensing all external interrupt requests generated by the I/O channel and
RTOM.
Macro Call
Calling sequence:
M.IOFF

1.12.11

M.IONN

Functional Description
This macro generates an Unblock External Interrupt (UEO instruction which causes the
CPU to sense all external interrupt requests generated by the I/O channel and RTOM.
Macro Call
Calling Sequence:
M.IONN
1-55

1.12.12

M.IVC

Functional Descr iption
This macro connects a handler entry point to an interrupt vector location.
Macro Call
Calling Sequence:
M.IVC ARG 1,ARG2
where:

1.12.13

ARGI

is the register number containing the interrupt level

ARG2

is the handler entry point address label

M.KILL

Functional Description
This macro generates a request for the System Override Interrupt/Trap level. A HALT
instruction follows the request in the event that the system is not in the Protect mode..r-"',
Macro Call
Calling Sequence:
M.KILL ARGI
where:
ARGI

1.12.14

contains the address of a four character ASCII crash code

M.MODT

Functional Description
This macro builds an entry in the module address table.
Macro Call
Calling Sequence:
M.MODT ARG 1,ARG2
where:
ARGI

is the address label of the module's HAT table

ARG2

is the module number

0 '·

I:,.)

.~.

1-56

1.12.15

(

M.OPEN

Functional Description
This macro is used for control gating purposes. It results in the termination of context
switching being inhibited.
Macro Call
Calling Sequence:
M.OPEN

1.12.16

M.RTNA

Functional Description
This macro provides the facility to return to the caller from a system module to some
address other than that specified by the saved PSW. It is intended to be used primarily
for denial returns. It operates functionally in the same way as the M.RTRN macro. The
interrupt handler tests for the presence of an address specification in the parameter and
replaces the saved PSW if an address is found.
.

Macro Call
Calling Sequence:
M.RTNA addr,rl,r2,r3, ••• ,r8
where:

1.12.17

addr

is the register number of the register containing the address
to which to return control

rl , ••• ,r8

is a list of the register numbers (0,1,2, ••• ,7) identifying the
registers to be preserved through the register pop-up

M.RTRN

Functional Description
This macro is the complement of M.CALL and allows a system module to return to the
caller with registers preserved. The system service performs a register pop-up (except
for those to be preserved) and returns to the location specified by the saved PSW.
Macro Call
Calling Sequence:
M.RTRN rl,r2,r3, ••• ,r8

1-57

I

where:
rl ••• ,r8

1.12.18

is a list of register numbers (0,1,2, ••• ,7) identifying the
registers that are to be preserved through the register pop-up

M.SHUT

Functional Description
This macro is used for control gating purposes. It results in context switching being
inhibited. This macro should not be used in a user task that is eligible for IPU execution
(see M.USHUT).
Macro Call
Calling Sequence:
M.SHUT

1.12.19

M.SPAD

Functional Description

,~''!I,

\",Jii

At each register push-down level, twenty-two scratchpad storage cells are provided for
the use of re-entrant system modules. The scratchpad storage macro, M.SPAD, provides
a convenient means of referencing the current level of scratchpad storage. The M.SPAD
macro will perform any memory reference operating on at least a word boundary (i.e.,
LW, STF, ARMD, DVMW, etc.) or any bit in memory operation (i.e., TBM, SBM, ABM,
ZBM).
Macro Call
Calling Sequence:
M.SPAD mnem,r,s,x
where:
mnem

is an instruction mnemonic defining the operation that is to
be performed

r

is the register number (0-7) or bit position (0-31) on which the
operation is to be performed, or is null

s

is the scratchpad cell number (1-22) to be referenced by the
operation

x

is an index register number (1,2, or 3) that will be utilized in
performing the operation

o
, ,

,~

1-58

1.12.20

(

M.SVCT

Functional Description
This macro builds one entry in the SVC table for each of the SVC's defined in the calling
module's prototype SVC table.
Each one word entry contains the address of the
corresponding SVC, i.e., the 20th entry contains the address of the 20th SVC.
Macro Call
Calling Sequence:
M.SVCT ARGl,ARG2
where:

1.12.21
(

ARGI

is the address label for the calling module's prototype SVC
table

ARG2

is the number of SVC entries in the module's prototype SVC
table

M.TRAe

See Chapter 7 in the MPX-32 Technical Manual.

1.12.22

M.TYPE

Functional Description
This macro types a user specified message, and performs an optional read on the system
console teletype.
Macro Call
Calling Sequence:
M.TYPE ARG1,ARG2,ARG3,ARG4

where:
ARGI

is the output message address

ARG2

is the output transfer count

ARG3

is the optional input message address

ARG4

is the optional input transfer count

1-59

1.12.23

M.USHUT

Functional Description
This macro is used to inhibit context switching of a user task. It should be used in user
tasks that are eligible for IPU execution (see M.SHUT).
Macro Call
Calling Sequence:
M.USHUT
1.12.24

M.XIR

Functional Description
This macro is called by the resident system module's initialization entry points right
before they exit. It decrements the number of entry points in the calling module by one,
so the initialization entry point is no longer included, and returns to the SYSGEN
processor.
Macro Call
Calling Sequence:
M.XIR ARGI
where:
ARGI
1.12.25

is the address label of the module's HAT table

HMP.INIT

Functional Description
This macro is used to provide for user initialization of MIOP device handler parameters
via entry point 8. The code generat.ed by this macro is executed by SYSGEN and
overlayed.
Macro Call
Calling Sequence:
HMP .INIT ARG 1
where:
ARGI

1-60

is the entry point truncated label, e.g., ASO for the
Asynchronous Communications Handler. This argument must
be three ASCII characters. The first two represent the
device mnemonic and the third is zero (0).

o

1.12.26

IB.INIT

Functional Description
This macro is used for MIOP initialization via entry point 8, where register 7 contains the
CDT address and register 2 contains the address of the current context block.
Macro Call
Calling Sequence:
IB.INIT

(

1-61/1-62

/r". ·.

~

2.

SYSTEM TABLES AND VARIABLES

2.1

Commmications Region

The Communications Region is an area of main memory reserved for use by MPX-32 for
storage of common data. This data is referenced via symbols which are equated to
absolute memory locations. Together with each symbol given below is the length of the
variable associated with the symbol. The length is in units which is also the minimum
boundary on which the variable resides.
Bit variables are contained in a set of contiguous words with the symbol C.BIT equated to
the address of the first word. Bit variables are equated to bit positions relative to
C.BIT. Bit variables are referenced by a combination of the variable symbol and C.BIT,
e.g.,
TBM

C.AFLK,C.BIT

C.ACT A (Word)

Address of activation table.

C.ACTN (Byte)

Number of entries in activa':lon table.

C.ACTSEQ (Word)

Running count of task activations, used to form right most 24 bits
of task number when a task is activated. SYSGEN initializes this
word to zero.

C.ADAT (Word)

Contains the address of the DQE address table (DAT).

C.ADMASK (Word)

Maximum address bit mask for machine.

C.AFLK (Bit)

Accounting File Locked Indicator.

C.AFL W (Bit)

Request for J.JOBC to list contents of accounting file.

C.ANYW (3 Words)

Standard format linked list head cell for all tasks that are
ineligible for CPU control, waiting for the completion of any nowait mode I/O request, any no-wait mode send message request,
any no-wait mode send run request, or any message or break
interrupt.

C.BIT (2 Words)

Symbol associated with the beginning of the bit variables.

C.BPRI (Byte)

The default software priority level at which batch jobs execute.

2-1

C.BTCH (Bit)

When set, task currently in execution is a batch task.

C.BUP (Byte)

Base execution priority of currently executing task.

C.CAL (Dwd)

Calendar devices as follows: century (binary), year (binary),
month (binary), day (binary), and number of interrupts from
midnight.

C.CDT A (W ord)

Address of Controller Definition Table.

C.CDTN (Hwd)

Number of entries in Controller Definition Table.

C.CENT (Byte)

Current century in binary.

C.CHT A (Word)

Address of Channel Definition Table (CHT).

C.CHTN (Hwd)

Number of entries in the Channel Definition Table (CHT).
,f"~

',j/

C.CIPU (3 Words)

Standard format linked list head cell for all IPU tasks ineligible
for CPU control, waiting in general queue.

C.CONF (Byte)

Configuration flags. Bit 0 is set if CPU accelerator is present;
bit I is set if IPU accelerator is present; bit 2 is set if IPU is
present; bit 3 is set if a memory-only system.

C.CPRI (Word)

Byte 0 contains C.CUP; byte I contains C.BUP; byte 2 contains
C.IOP; byte 3 contains C.US.

C.CPUACC (Bit)

If set, CPU accelerator is present.

C.CSWI (Bit)

Task to task context switch inhibited. This bit is set by the
M.SHUT procedure and cleared by the M.OPEN procedure.

C.CUP (Byte)

Current execution priority of currently executing task.

C.CURR (3 Words)

Standard format linked list head cell for the CPU Dispatch Queue
entry of the currently executing task. This list may have a
maximum of two entries: one for the current real time task Of
any) and one for the current time distribution task (if any).

2-2

c

C.DALMAP

(Word)

«

Contains the address
(initialized by FISE).

of

the

Disc Allocation

Map Buffer

C.DAMAPT (Word)

Contains the address of the Disc Allocation Map Table (initialized
by SYSGEN).

C.DAMCST (Word)

Address of Disc Allocation Map Checksum Table (initialized by
SYSGEN).

C.DA TE (Dwd)

The current date (Gregorian) as input by the operator in the
format: MM/DD/YY.

C.DA Y (Byte)

Current day in binary.

C.DBTLC (Byte)

TLC used for System Debug.

C.DEBUG (Word)

Address location of Debugger.

C.DQUE (Word)

Address of CPU Dispatch Queue Area~ The CPU Dispatch Queue
Area is a variable length table built by SYSGEN. It contains the
number of 42-word Disoatch Queue Entries (DQE's) specified at
system generation timE

C.DTTA (Word)

Address of Device Type Table.

C.DTTN (Byte)

Number of entries in Device Type Table.

C.EMAC (Hwd)

Total count of valid E type memory modules available.

C.EMCC (Hwd)

T ota! count of valid E type memory modules configured (minus 1
if the swap device is E-class and extended memory is present in
the system).

C.EMTA (Word)

Address of eventmark table.

C.EMTL (Byte)

Low address of eventmark area.

C.EMTM (Hwd)

Maximum number of eventmarks.

2-3

C.ETLOC (Word)

Address of event trace logic.

C.FADR (Word)

Reserved.

C.FGONR (Word)

DQE address of task gating FISE.

C.FGPM (Bit)

Post-mortem dump requested when a real-time task aborts.

C.FIRST

Symbol equated to the absolute memory location at which the
Communications Region begins.

C.FL T A (Word)

Address of file lock table.

C.FL TC (Hwd)

Number of File Lock Table (FL T) entries currently in use.

C.FLTM (Hwd)

Maximum number of file locks.

C.FREE (3 Words)

Standard format linked list head cell for free entries in the CPU
Dispatch Queue. C.FREE is the first of a set of Communications
Region variables which are contiguous in memory.
These
variables, listed in the order in which they appear in memory, are
as follows:
C.CIPU
C.RIPU
C.FREE
C.PREA
C.CURR
C.SQRT
C.SQ55
C.SQ56
C.SQ57
C.SQ58
C.SQ59
C.SQ60
C.SQ61
C.SQ62
C.SQ63
C.SQ64
C.SWTI
C.SWIO
C.SWSM
C.SWSR
C.SWLO
C.SUSP
C.RUNW

2-4

c

C.HOLO
C.ANYW
C.SWOC
C.SWOV
C.SWFI
C.MRQ
C.SWMP
C.SWGQ
C.SPCH
C.FSFLGS (Byte)

FISE flags. Bit 0 indicates FISE busy; bit I indicates FISE gated
externally; bit 2 is set if temporary allocation or reset if
permanent allocation.

C.GINT (Word)

Contains the count of all outstanding interrupts and traps (except
SVC). It is incremented as the first instruction of every interrupt
or trap service routine, and decremented by S.EXEC5, the
standard interrupt and trap exit routine.

C.HIMAP (Hwd)

Number of the last map block of logical address space available
to a task.

C.HMAC (Hwd)

Total count of valid H type memory modules available.

C.HMCC (Hwd)

Total count of valid H type memory modules configured.

C.HOLO (3 Words)

Standard format linked list head cell for all tasks that are
ineligible for CPU control, waiting for a continue request to be
received.

C.ICS (Bit)

Reserved for ICS.

C.IOLA (Word)

CPU idle time accumulation value in seconds, cleared by
SYSGEN. This value is incremented when the countdown value in
C.IOLC expires.

C.IOLA!

IPU idle time accumulation value in seconds, cleared by
SYSGEN. This value is incremented when the countdown value in
C.IOLC! expires.

(Word)

C.IOLC (Word)

CPU idle time countdown value, cleared by SYSGEN. This value
is used to load the interval timer when no tasks are ready to run.
When a task becomes ready to run, the interval timer is read and
the value is stored in this word.

2-5

C.IDLCl (Word)

IPU idle time countdown value cleared by SYSGEN. This value is
used to load IPU accounting interval timer (if present) when no
tasks are ready to run on the IPU. When a task becomes ready to
run, the IPU accounting interval timer is read and the value is
stored in this word.

C.INTC (Word)

Interrupt counter (number of interrupts from zero which is
midnight) used for time of day calculations.

C.IOP (Byte)

I/o priority of currently executing task.

C.IPU (Bit)

If set, IPU is present.

C.IPUACC (Bit)

If set, IPU accelerator is present.

C.IPUIT (Bit) ,

If set, IPU accounting interval timer is present.

C.IPUITl (Word)

Address of the IPU accounting routine, S.IPUIT 1, which performs
accounting functions after an IPU trap is fielded. Initialized by
SYSGEN.

C.IPUIT2 (Word)

Address of the IPU accounting routine, S.IPUIT2, which performs
accounting functions prior to the starting of the IPU. Initialized
by SYSGEN.

C.IPUOFF (Bit)

If set, IPU is off-line.

C.ITL T (Word)

Contains the address of the Indirectly Connected Task Linkage
Table (ITL T). Initialized by SYSGEN.

C.ITRS (Hwd)

Interval timer resolution, in tenths of microseconds, as derived
from the SYSGEN ITIM directive.

C.JOBA (Word)

Contains memory address of the Job Table.

C.JOBL (Bit)

Set by a System Input task after a file has been linked into the
System Input Directory (M.SID).

C.JOBN (Word)

Number of entries in the Job Table.

2-6

o

o

o

(-

C.LODC (Dwd)

The system listed output device to be used as a default in
Operator Communications commands. Bytes 0 and 1 contain the
ASCII device type code. Bytes 2 and 3 contain the ASCII channel
number. Bytes 4 and 5 contain the ASCII subaddress.

C.LSPT (Bit)

List patches indica tor.

C.MACH (Byte)

C.MA T A (Word)

Address of the memory tables.

C.MEMNL Y (Bit)

If set, memory-only system.

C.MERRI

f

Machine currently in use as follows:
= 32/55 (not applicable)
1
= 32/75
= 32/27
2
3
= Reserved
4
= 32/87
= Reserved
5-15

o

(Bi~)

A memory error has been detected by H.IP02.

C.MERR2 (Bit)

A memory error has been detected by J.SW APR.

C.MERR3 (Bit)

Nonpresent memory has been detected by J.SW APR.

C.MGRAN (Word)

Machine dependent map granularity.

C.MIDL (W ord)

Address of the list of map registers used by the operating system.

C.MIOP (Word)

Address of first entry of MIOP jump table.

C.MODD (Word)

Address of variable length Module Address Table. Initialized by
SYSGEN. The Module Address Table contains entries in module
number sequence. Each entry consists of one word which contains
the address of the entry point transfer list (HA T) of the
associated module.

C.MODN (Byte)

Number of entries in the Module Address Table.
SYSGEN.

C.MONTH (Byte)

Current month in binary.

Initialized by

2-7

C.MPAA (Word)

G"

Low address of the patch area.

"

C.MPAC (Word)

Current address of the patch area.

C.MPAH (Word)

High address of the patch area.

C.MPL (Word)

Address of Master Process List. Length of list is (in words)
C.NDQE+l. First entry points to C.MSD (hardware requirement).

C.MRQ (3 Words)

Standard format linked list head cell for all tasks ineligible for
CPU control, waiting for memory to become available.

C.MSD (W ord)

Contains map segment descriptor for OS (BPIX).
C.MIDL (hardware requirement).

C.MTIM (Word)

Number of clock interrupts per second. Initialized by SYSGEN.

C.MVTA (Word)

Address of mounted volume table.

C.MVTN (Hwd)

Number of entries in mounted volume table.

C.NITI (Byte)

Contains the number of 24-word Indirectly Connected Task
Linkage Block (ITLB) entries in the Indirectly Connected Task
Linkage Table (ITL T). Initialized by SYSGEN.

C.NOLOAD (Bit)

Module which cannot be loaded (SYSGEN flag).

C.NOS (Hwd)

Number of blocks required for SYSGEN code.

C.NQUE (Byte)

Number of entries (255 maximum) in CPU Dispatch Queue.

C.NRST (Hwd)

Number of blocks required for restart code.

C.NTBA (Word)

Total space currently available on all disc units.

C.NTIM (Word)

Number of clock interrupts per time unit. Initialized by SYSGEN.

It points to

iC'"
"

2-8

~,

C.PODC (Dwd)

The system punched output device to be used as a default in
Operator Communications commands. Bytes 0 and 1 contain the
ASCII device type code. Bytes 2 and 3 contain the ASCII channel
number. Bytes 4 and 5 contain the ASCII subaddress.

C.POOL (Word)

Address of Memory Pool.

C.PREA (3 Words)

Standard format linked list head cell for CPU Dispatch Queue
entries that are in the pre-activation state.

C.PRIV (Bit)

When set, task currently in execution is a privileged task.

C.PRNO (Byte)

Contains the DQE entry number of the currently executing task.
It is in the range 1-255, and (when word format adjusted) may be
used as an index to the DQE address table (DA T), to obtain the
DQE for the associated task. Note: the address of the DQE
add:ess table (DA T) is contained in C.ADA T.

C.PSWRD (Dwd)

Indicates a valid password to use for system files.

C.REGS (Word)

TSA address of the current task.

C.REV (Word)

MPX-32 release and interim release.

C.RIPU (3 Words)

Standard format linked list head cell for all IPU tasks ready to
run, waiting in general queue.

C.RMTA (Word)

Address of resourcemark table.

C.RMTL (Byte)

Low address of user resourcemark area.

C.RMTM (Hwd)

Maximum number of resourcemarks.

C.RRUN (Byte)

Contains the count of memory release events. It is incremented
by H.EXEC,9 when a memory scheduler event is reported. It is
cleared by the memory scheduler (swapper) when processing of
the memory request queue begins. It is decremented by the
swapper when memory is deallocated by the swapper. It is
cleared by the swapper before H.EXEC,8 is called. H.EXEC,8
will rerun the swapper if C.RRUN is not equal to zero.

2-9

,I

C.RUNW (3 Words)

Standard format linked list head cell for all tasks that are
ineligible for CPU control, waiting for a run request to be
received, or for the expiration of a timer.

C.SBUF (Dwd)

First word contains address of memory pool.
contains the number of words in memory pool.

C.SCB T (Bit)

Continuous batch mode indicator.

C.SCDIPU (Word)

Schedule IPU routine address.

C.SGOS (Word)

The default size of the SGO file to be allocated for each batch
job.

C.SIBP (Bit)

When set, indicates to J.SOUT the banner page should be
inhibited.

C.SICTD (Word)

Address of MIOP test device status processor, H.SICTD.

C.SIDD (Bit)

Set when batch system input device is 7-track magnetic tape and
its density is 556.

C.SIDP (Bit)

Set when batch system input device is 7-track magnetic tape and
its parity is odd.

C.SIDV (Dwd)

The system input device to be used as a default in Operator
Communications commands. Bytes 0 and I contain the ASCII
device type code. Bytes 2 and 3 contain the ASCII channel
number. Bytes 4 and 5 contain the ASCII subaddress.

C.SIMM (Bit)

When set, inhibits magnetic tape mount message.

C.SLEN (Byte)

Number of blocks valid in System Input File (SIF) data.

C.SMAC (Hwd)

Total count of valid S type memory modules available.

C.SMCC (Hwd)

Total count of valid S type memory modules configured.

2-10

Second word

(

C.SMDD (Dwd)

First word contains starting disc address of the SMD.
word contains SMD length in 192-word blocks.

Second

C.SMDS (Word)

Number of entries in the SMD.

C.SMDUDT (Hwd)

Contains UDT index of device on which the SMD resides.

C.SMTA (Word)

Address of the Shared Memory Table area. Size is determined by
SYSGEN SHARE directive.

C.SMTN (Byte),

Number of entries in Shared Memory Table.

C.SMTS (Byte)

Number of bytes in Shared Me!1"0ry Table entry.

C.SPAD (Word)

Address of CPU sera tchpad image•

C.SP ADOK (Bit)

Do not zero unused scratchpad locations mode.

C.SQ" (3 Words)

Standard format linked list head cell for the list of ready-to-run
priority leyel " time distribution tasks.

C.SQ'6 (3 Words)

Standard format linked list head cell for the list of
priority level '6 time distribution tasks.

C.SQ'7 (3 Words)

Standard format linked list head cell for the list of ready-to-run
priority level 57 time distribution tasks.

C.SQ'8 (3 Words)

Standard format linked list head cell for the list of ready-to-run
priority level '8 time distribution tasks.

C.SQ'9 (3 Words)

Standard format linked list head cell for the list of ready-to-run
priority level '9 time distribution tasks.
.

C.SQ60 (3 Words)

Standard format linked list head cell for the list of ready-to-run
priority level 60 time distribution tasks.

C.SQ61 (3 Words)

Standard format linked list head cell for the list of ready-to-run
priority level 61 time distribution tasks.
• .

. C.SQ62 (3 Words)

Standard format linked list head cell for the list of reaqy-to-run
priority level 62 time distribution tasks.

I

.

ready-t~-run

Change 1
2-11

C.. SQ63 (3 Words)

standard format linked list head cell for the list of ready-to-run
priority level 63 time distribution tasks.

C.SQ64 (3 Words)

Standard format linked list head cell for the list of ready-to-run
priority level 64 time distribution tasks.

C.SQRT .(3 Words)

Standard format linked list head cell for the list of ready-to-run
real time (priority level 1-'4) tasks.

C.SRTA (Word)

Address of shared resource table.

C.SRTN (Hwd)

Number of entries in shared resource table.

C.STR TR (Bit)

. SYSGEN is in the starter system mode of the accounting file.

C.SUDT (Hwd)

Swap device UDT index set by SYSGEN.

C.SUPA (Bit)

Unidirectional file allocation mode indicator.

C.SUSP (3 Words)

Standard format linked list head cell for all tasks that are in an
execution suspend mode, waiting for a message interrupt, a timer
expiration, or a resume task request.

C.SVTA (Word)

Address of variable length SVC Table. Initialized by SYSGEN.
The SVC table contains entries in SVC (type I or 2) number
sequence. Each entry consists of one word which contains the
address of the service associated with the SVC number. Type 2
entries (restricted to privileged users) will have bit 0 set.

C.SVTN (Hwd)

Number of entries in the SVC Table. Initialized by the System
Generation (SYSGEN) program.

C.SW AP (Word)

Contains the DQE address of the memory scheduler (swapper)
when it is waiting for a memory event.

C.SWDC (3 Words)

Standard format linked list head cell for all tasks ineligible for
CPU control, waiting for disc space to become available.

C.SWDV (3 Words)

Standard format linked list head cell for all tasks ineligible for
CPU control, waiting for a peripheral device to become available.

2-12

c
.'
·
;

'"

C.SWFI (3 Words)

Standard format linked list head cell for all tasks ineligible for
CPU control, waiting for the File System to be ungated.

C.SWGQ (3 Words)

Standard format linked list head cell for all tasks ineligible for
CPU control, waiting in general queue.

C.SWIO (3 Words)

Standard format linked list head cell for all tasks waiting for the
completion of wait-mode I/o requests.

C.SWLO (3 Words)

Standard format linked list head cell for all tasks waiting for the
completion of low speed output.

C.SWMP (3 Words)

Standard format linked list head cell for all tasks ineligible for
CPU control, waiting for memory pool to become available.

C.SWSM (3 Words)

Standard format linked list head cell for all tasks waiting for the
completion of a wait-mode send message request.

C.SWSR (3 Words)

Standard format linked list head cell for all tasks waiting for the
completion of a wait-mode send run request.

C.SWTI (3 Words)

Standard format linked list head cell for all tasks waiting for the
completion of wait-mode interactive (terminal) input.

C.SYCS (Word)

The initial size in 192-word blocks to be allocated for each SYC
file as the job is being spooled to disc.

C.SYMT AB (Dwd)

Name of the symbol table file.

C.SYSB (Bit)

SYSBUILD is active in memory only.

C.SYSGEN (Word)

SYSGEN scratch area.

C.SYSTEM (Dwd)

Name of current system image.

C.TABLES

Symbol equated to the absolute memory location at which
SYSGEN built tables begin. This location is on a word boundary.

2-13

C.TDQl (Word)

Time distribution quantum stage 1, in interval timer units.
Initialized by SYSGEN. This value is used to load the interval
timer when CPU control is dispatched to a time distribution task
under one of the following conditions:
1)

2)
3)
4-)

o

The task is initially selected after activation;
A task is initially selected after the termination of a
voluntary wait state (e.g., wait I/O, or timed suspend);
A task is initially selected after inswap;
A task is re-selected after completion of its full
quantum.

During the quantum stage 1 interval, the currently executing task
is not eligible for outswap, and may not be preempted from CPU
control by a higher priority time-distribution task. If preempted
by a realtime task, the stage 1 time-distribution task remains
ineligible for outswap until it has been re-selected and its stage 1
quantum expires.
C. TD02 (Word)

Time distribution quantum stage 2, in interval timer units.
Initialized by SYSGEN. This value is used to load the interval
timer when the stage 1 quantum for the currently executing task
expires. (The quantum stage 2 value may be added to the
quantum stage I value to define the full task quantum.)

C. TDQ3 (Word)

Time distribution full quantum value, in interval timer units.
Initialized by SYSGEN. This value is the sum of the quantum
stage 1 and stage 2 values.

C.TENT (Byte)

Number of timer table entries.

C. TERM (Bit)

When set, task currently in execution is a terminal task.

C. TMAC

Counts contained in fourhalfwords of all memory types
available. It is derived from configured size minus the 0.5. size
and any running task. It is constructed as follows:

(DWD)

1)

2)
3)
4-)

Total amount of memory available
Amount of 'E' memory available (C.EMAC)
Amount of 'H' memory available Extended
Extended
Operand r-1ap Operand Hap
Block 16
Block 17
Map 'Image
Descriptor
List
(Extended Operand Map)

TV Map Addition or
L ~_IL1.t Prima
--.,

--

~

Extended
Extended
Operand Map Operand Map
Block 30
Block 31

I
~~1

ff/ t

~ B'l.t_ _
!Ex~
tended Ma~
~ddition
'

I

- -,

I

_/'-......_----,

Physical

8

.r-_ _A.~--\

i

Address

31

16 17

I. . . .

2-71

(

st DOE is always Swapr
C.MPL
I W(C. MSD)
BPIX
2 DOE.MSD
3 DOE.MSD

,...--_ _ Number oC Maps in the 0/5
C.MSD
C.MIDL

C.DOE

C.MIDL
4000
4001
4002
4003

o

MIDL

0

C. TSAD

1
= 0 iC 'F'

I

Class
Swap Devic:e
Y = Number oC
Maps in Task
to be Out/In
Swa ed
A Number oC

Poin
Swapped
Task TSA

=

DOE.MSD

T.MIDL
32 HW

/

~~~

~T_.M
__E_M_L~____~

32 HW

CODE

MSD

=Map Segme

C. TSAD
t

Descriptor
MPL

= Master Proc ss

DOE

= Dispatch Oueu

MIDL

= Map Image De-

MEML

= Memory Attribut

TSAD

List
= Current Task TSA

List
Entry
scriptor List
32 HW

CODE

Last
DOE

Maps in the
Task

C. TSAD
T.MIDI-

32 HW

T.MEML

32 HW

MPX-32 Mappinq Structure for 32/7x

.'

CODE

2-72

0",

DOE.MSD is maintained
for compatibility only
(C. MIDL)

-

8000
8002
8004
8006
8008
BOOA

BOOC

~"O

UJ

IG

...
0

E-4 3

0

C.MIDL
Zero

2

3

(j

(C.MPL)

C.MIDL

0

1
1

800E
8010
8012

(C.MSD)

I # Map I

8001
800l
8005
8007
8009
BOOB
800D
800F
8011
8013

Zero (J .SWAPR)

·

(C.TSAD/when current)
Swapper TSA
1

J.SWAPR is
~----~~~--~ special case.
4
See
2
~----~~~~~documentation
5 T.MIDL

S~eEi!l_C!s!_

J. S~'1APR DOE

1

T.MIDL

*

-- -

T.MEML

Scecial Case
T.MIDL
Mac I

3 6

7

T.MIDL

(C.TSAD/when current)
Task A TSA
T.MI::>L

(C DOE+2*DOE.SIZE)
Task A DOE

·

2

* Map I

T.MIDL

-- -

T.MEML

N

of maps
in Task ~l
"
T.MIDL (Task N)

.

(C DOE+3*DOE SIZE)
(C.TSAD/when current)
Task B DCE
Task B TSA
T.MIDL
# r.1ap I
T.t-1IDL
3

·

T .tmr·iL

(

.

"'"
,

MPX-32 Map Structure for 32/27

2-73

2.6

Disc Management

The following variables contain the definition of the System Master Directory (SMD).
UDT index of disc
~ontaining SMD

C.SMDUDT
C.SMDD

C.SMDS

.Must be
zero

Startmg diSC address
(Starting Block Number)

Must be
zero

Length in 192-word
blocks

INumber of entries in SMD

Variables used by H.FISE for gating are as follows:
C.FGONR

IDQE Address of FISE gate owner

1

C.FSFLGS
Bit 0
Bit I
Bit 2
Bits 3-7

2.6.1

-

SMD Entries

SMD.SIZE is equated to the SMD entry length.

2-74

=
=
=
=
=

FISE busy
gated externally
temporary allocation if set·
permanent allocation if reset
Reserved

0

Word

Disc File SMD Entry
7 8

o

o

15 16

31

File name (SMD.AFN)

1
2

File type
(SMD.FTYP)

Start disc address (starting
(SMD.SBN)
block number)

3

File indicators
(SMD.FIN)

Length in 192-word blocks
(SMD.BIF)

4

User name (SMD.AUN)
5

7

(

UDT index (SMD.UDTX)

Compressed password
(SMD.PWD)

6

Reserved (SMD.NU)

Word

Me!Tlory Partition SMD Entry
o
7 8

15 16

31

0
File Name (SMD.AFN)
1

2

Starting logical page /I
(SMD.SLP)

3

File indicators
(SMD.FIN)

Memory class
(SMD.MC)

Starting physical page /I
or zero (SMD.SPP)
Length in pages
(SMD.LIP)

4
Reserved
5

Compressed password
(SMD.PWD)

6

Reserved

Reserved (SMD.NU)

7

Notes

1.

File type (SMD.FTYP) specifies a two-character hexadecimal code which is output by
the File Manager in ASCII. Default is 00.
ED
EE
FE

- EDITOR SAVE
- EDITOR STORE
- EDITOR Workfile

2-75

::
,'r

FF
BA
CA
01-99
2.

-

SYSGEN-created
BASIC (unused)
Cataloged Load Module
Available for Customer Use

Bits in SMD.FIN are assigned as follows.

o

-

1
2
3
4
5
6
7

-

2.6.2

If
If
If
If
If
If
If
- If

set,
set,
set,
set,
set,
set,
set,
set,

permanent file is active
SYSGEN memory partition
File Manager (do not save)
fast file
collision mapping
non-SYSGEN memory partition
password is required to write
password is required to read/write

Disc Allocation Map Table

C.DAMAPT contains the address of the Disc Allocation Map Table. C.DALMAP contains
the address of the Disc Allocation Bit Map Buffer. C.DAMCST contains the address of
the Disc Allocation Map Checksum Table. Refer to Section 3.7.39 for further details.
Disc Allocation Table

o

7 8

15 16

o

Number of words in bit map
(DAT.NWDS)

1

Flags

2

Number of 192W blocks in allocation map (DAT.NBM)

3

Number of 192W free blocks in unit (DAT.BFU)

I

23 24

31

UDT index of the disc described by
this map (DAT.UDTO

Starting block number of allocation map (192W)(DAT.SBM)

This table contains an entry for each disc defined to the system as follows:
Word 0
Bytes 0-1
Bytes 2-3

Number of words in map
UDT index of the disc described by this map

Word 1

2-76

Bit 0

Resident flag - set if map currently in memory, reset if map on
disc

Bits 1-7

Reserved

Bytes 1-3

Starting block number of map

c'

(
Word 2
Byte 0

Reserved

Bytes 1-3

Length of map in 192W blocks

Word 3
Number of 192W blocks currently available for allocation on this disc
The end of the table is indicated by Word 0 being zero.
The Checksum Table contains one word for each Disc Allocation Table entry. SYSGEN
initializes the Checksum Table so that each word has bit 0 set and bits 1-31 are zero.

(

2.7

Batch Processing

2.7.1

Spooled File Directories

Spooled file directories contain definitions of System Control (SYC), System Listed
Output (SLO), and System Binary Output (SBO) files. The Spooled Input Directory
(M.SID) contains definitions of SYC files. The Spooled Output Directory (M.SOD)
contains definitions of real-time SLO and the SBO files and the definitions of batch SLO
and SBO Link Files. Each job has an SLO Link File and and SBO Link File which contain
definitions of the job's SLO and SBO files respectively. Entries in M.SID and M.SOD are
linked by priority. Entries in SLO and SBO Link Files are sequential. A header entry
occupies the first 12 words of the M.SID and M.SOD files. The header entry is followed
by entries which contain actual file definitions. Unused entries must be zeroed.

(\
2-77

Organization of Spooled Files

SMD

!C
.......

-::::>

.--

~.SIO.......

M. SC:O

Spooled
Input
Oi rectory
(M. S 10)

......

......

"-

.......

Spooled~

____________________

Output
Oi rectory
(M. SC:O)

,-r5
SYC
Fi les

~

RealTime
SLO de
SBO
F i I es

~

.........

Batch
SLO
Link
Fi les

Batch
SBO
Link
F i I es
i'"

.".

Batch
SLO
Files

Batch
SBO
Files

o
2-78

(

System Input (M.SID) and System Output (M.SOD) Directory Formats

2.7.2

Word 0

T

o
1

Header
Entry

2

3

15 16

31

Index to first entry (0
Index to last entry (1)
Priority of first entry
Priority of last entry
I
Last assigned job sequence number in binary (2)

4

Reser ved
11

o
1
2

3

File
Definition
Entry

4

5
6
7
8
9
10
11

Job name or real-time task's sequence number (SD.NAME)
M.SID: owner name from $JOB (SO.DEST)
M.SOD: assigned destination task's pseudonym (SD.DEST)
M.SID: Reserved
M.SOD: pseudonym of current destination processil1K task (SD.CURR)(3)
Job sequence number in ASCII (SD.JSEQ)
Disc space definition of SYC, real-time SLO/SBO, or batch
SLO/SBO link file (SD.DEF)(4)
Priority (SO.PRJ)
I
Index to next entry (SD.INDEX)(l)

Flaes (SD.FLAGS)(5)

Notes
(l)

Bits 0-7 contain the entry number of the M.SID/M.SOD entry relative to the
beginning of the 192-word block that contains the entry. This value must be
shifted left two places to obtain an index relative to the beginning of the 192word block. Bits 8-31 contain the block number relative to the beginning of
M.SID/M.SOD of the 192-word block that contains the entry.

(2)

M.SID only. Unused in M.SOD.

(3)

For M.SOO entries for jobs not completed, contains "BUILDING".

(4)

The format of disc space definitions is as follows.

Word

o
I

2

o

7 8

15 16

31

1

UDT index

Starting disc address in 192-word blocks
Length in 192-word blocks

2-79

(5)

Bits in SO.FLAGS are assigned as follows:
o
Set if M.SOO entry is for a batch job (SO.BA TCH)
1
Set if M.SIO entry is for sequential job (SO. SEQ)
2
Set if M.SOO entry is real-time and output is complete (SO.COMP)
3
Set if M.SOO entry is for SBO 1

31

Notes
(1)

The string forward address is a 1W field which points to the first entry in the
top-to-bottom chain. When the list is empty, it contains the address of the
head cell.

(2)

The string backward address is a 1W field which points to the first entry in the
bottom-to-top chain. When the list is empty, it contains the address of the
head cell.

(3)

The head cell priority is a IB field which contains a dummy head cell priority
which is always zero.

(4)

The count value is a IB field which contains the number of entries in the list.
This value is incremented/decremented as required by subroutines S.EXEC8
through S.EXECll.

3-37

o

Standard Linked List Entry Header Format
WORD

o

1
2

0

PRIORITY (3)

7 8

15 16
23 24
STRING FORWARD ADDRESS (1)
STRING BACKWARD ADDRESS (2)
AVAILABLE FOR USE AS DEFINED BY ENTRY
FORMAT

~

1

Notes
(1)

The string forward address is a I W field which points to the next entry in the
top-to-bottom chain. If this is the last entry in the top-to-bottom chain, the
string forward address will be the address of the head cell.

(2)

The string backward address is a I W field which points to the next entry in the
bottom-to-top chain. If this is the last entry in the chain, the string backward
address will be the address of the head cell.

(3)

The priority field is a 1B field containing the priority of this entry. The
acceptable range of this value is 1-255. Note that priority zero is reserved
for use as a dummy priority by the head cell.

Misc.

The last entry in the top-to-bottom chain is the first entry in the bottom-totop chain. The last entry in the bottom-to-top chain is the first entry in the
top-to-bottom chain.

3.1.53

Subroutine S.EXECI2 - Report Memory Scheduler Event

Functional Description
S.EXEC12 is called when the status of allocated memory changes such that it is either
deallocated or becomes more eligible for swapping. The purpose of this subroutine is to
insure the appropriate execution of the memory scheduler task. If the memory-request
list is empty, no additional processing is required and a return is made to the user. If the
memory-request list is not empty, C.RRUN is incremented, and the memory scheduler
state is checked. If the memory scheduler is in the wait-for-memory-event list, it will
be removed from that list and placed in the ready-to-run list at the priority of the
highest priority entry in the memory-request list. A return will then be made to the
calling routine.
Entry Conditions
Calling Sequence
BL

3-38

S.EXEC12

o

Registers:

(

None
Exit Conditions
Return Sequence:
TRSW

RO

Registers:
R3,R6
RI,R2,R4,R5,R7

3.1.54

Saved
Destroyed

Subroutine 5.EXEC13 - Break Specified Task

Functional Description
S.EXEC 13 is called by the appropriate I/O handler from the interrupt service routine, or
by the M.INT monitor service. It's purpose is to set the DEBUG-Break requested flag in
the DQE if DEBUG is associated with the task and if the DEBUG mode active task
interrupt flag is not already set. If DEBUG is not associated with the task, but a user
break receiver has been established, the user-break requested flag will be set in the
DQE. If DEBUG is not associated with the task, and no user break receiver has been
established, the break is ignored.
A return to the calling routine is made upon
completion of processing.
Entry Conditions
Calling Sequence:

BL

S.EXEC13

R2

DQE address of task to receive break

R3

Address of 2W scratchpad area {doubleword bounded}

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
X3==X3-4W (scratchpad pointer)
R 1,R2,R4

Saved

R5,R6,R7

Destroyed

3-39

3.1.55

Subroutine S.EXECI4 - Resume Specified Task

Functional Description
S.EXEC 14 may be called either from an interrupt service routine or from a system
service operating on behalf of a task. It's purpose is to resume the execution of a
suspended task. If the specified task is not in a suspended state, no action will be
taken. If the specified task is suspended and outswapped, it will be unlinked from the
suspended list, and linked to the memory request list. Otherwise, it will be unlinked from
the suspended list, and linked to the ready-to-run list at its current priority.
Entry Conditions
Calling Sequence:

BL

S.EXEC14

R2

DQE address of task to be resumed

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
None returned

3.1.56

R2

Saved

R 1,R3,R4,R5,R6,R7

Destroyed

Subroutine S.EXEC 15 - Suspend Execution of Current Task

Functional Description
S.EXEC 15 is called to suspend execution of the current task. The DQE for the current
task is unlinked from the ready-to-run list, and linked to the suspended list. Control is
then transferred to the CPU scheduler to select the next task for execution.
Entry Conditions
Calling Sequence:

BL

S.EXEC 15

R6

Zero if indefinite suspend, otherwise contains negative
timer units

Registers:

3-40

(

Exit Conditions
Branch to CPU Scheduler;
When resumed, the task will continue operation at the most recent context in the
pushdown stack.

3.1.57

Subroutine S.EXECI6 - Suspend Execution Of Specified Task

Functional Description
S.EXEC16 is called to suspend execution of the specified task. The DQE is marked to
indicate that an asynchronous suspend has been requested. The suspend request will be
processed on behalf of the task being suspended, when the CPU scheduler selects that
task for execution.
Entry Conditions
Calling Sequence:

BL

S.EXEC16

R2

DQE address of task to be suspended

R6

Zero if indefinite suspend, otherwise contains negative
timer units

Registers:

(

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
None returned

3.1.58

Rl,R2,R3

Saved

R4,R5,R6,R7

Destroyed

Subroutine S.EXEC17 - Abort Current Task

Functional Description
(-\
....

S.EXEC 17 is called either from a system service, or from a system trap level. Its
purpose is to store the abort code and set the abort requested bit in the DQE. It will
then reset the TSA stack to a level routine.

3-41

If the task has an abort receiver established, the DQE.ABRA flag will be set and a return
will be made to the calling routine. If no abort receiver is established, the DQE.ABRT

o

flag will be set and the task will be marked as leaving the system (by setting the
DQE. TL VS flag). A return will then be made to the calling routine.
Entry Conditions
Calling Sequence:
BL

S.EXEC17

R5

Abort code char acters 1-4

R6,R7

Abort code characters 5-12

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

R2

DQE address of current task

R4,R7

Saved

Rl,R3,R5,R6

Destroyed

Registers:

3.1.59

c

Subroutine S.EXECI8 - Abort Specified Task

Functional Description
S.EXEC 18 is called from a system service. Its purpose is to store the abort code and set
the abort requested (asynchronous) bit in the DQE. It will then return to the call1ng
routine. The abort requested bit will not be examined until the scheduler selects this
task for execution.
If the specified task is in the SUSP, ANYW, or RUNW list, it will be unlinked from the
wait list and linked to the ready to run list. If the task does not have an abort receiver
established, DQE.TLVS and DQE.ABRT will be set. If an abort receiver has been
established, only DQE.ABRA will be set.

Entry Conditions
Calling Sequence:
BL

S.EXEC18

Rl

DQE address of task to be aborted

R5

Abort code characters 1-4

R6,R7

Abort code characters 5-12

Registers:

3-42

o

C

Exit Conditions
Return Sequence:
TRSW

RO

R2

DQE address of task to be aborted

R4

Saved

R I,R3,R5,R6,R7

Destroyed

Registers:

3.1.60

Subroutine S.EXEC 19 - Abort Task Processing Control Subroutine

Functional Description
S.EXEC 19 is an internal H.EXEC subroutine which is called only by S.EXEC21 to process
an abort request on behalf of the currently executing task. The purpose of S.EXEC 19 is
to control the sequencing of abort processing by calling abort processing modules
associated with the pertinent subsystems:

(

Module

Description

S.EXEC26

Remove context switch or FISE gating if any.

S.EXEC23

Terminate all messages in receiver queue.

S.EXEC22

Defer continued processing until all outstanding no-wait
operations are complete.

S.EXEC25

Terminate active run request (if any).

S.EXEC43

Reactivate task if additional run requests queued.

S.EXEC27

Transfer control to abort receiver if any.

S.MONS2

Remove task associated timers.

H.MONS,38

Disconnect interrupt (if interrupt connected).

S.EXEC76

Update execution accounting value.

[H.TSM,4]

TSM task abort/delete processing (called only if TSM task).

[H.SOUT,26]

Batch task abort processing (called only if Batch task).

(~

3-43

Module

Description

H.ALOC,3

Close and deallocate system critical files.
Close and deallocate user I/o files/devices with blocking
buffer purge and automatic EOF as appropriate.
Deallocate all swap files and memory (excluding TSA).
Deallocate TSA memory, DQE space, clear C.PRNO, transfer
control to the CPU scheduler.

Entry Conditions
Calling Sequence:
BU

S.EXECI9

Registers:
None

c

Exit Conditions
Return Sequence:
Clear

C.PRNO

BU

S.EXEC20

Registers:
None
3.1.61

Subroutine S.EXEC20 - CPU Scheduler

Functional Description
S.EXEC20 is an internal H.EXEC subroutine.
It is called by S.EXEC5 when all
outstanding interrupts or traps have been exited, or by M.RTRN/M.RTNA with the return
context on the TSA stack. Its purpose is to check for a ready-to-run task that is higher
in priority than the currently executing task. This check is quickly made because the
linkage of any task to the ready-to-run queue will cause a priority comparison between
that task and the currently executing task. If the newly ready to run task is of higher
priority, an indicator is set for S.EXEC20. S.EXEC20 will either return to the context of
the current task, process a task interrupt on behalf of the current task, or select a higher
priority task for execution.

3-44

o

Entry Conditions
Calling Sequence:

BU

S.EXEC20

Registers:
None
Exit Conditions
Dispatch of CPU control

3-45

c

()

~~

\~,)

w
I

~

en
IPU offline
or
not Sysgened
no
}

..

no
yes

If there are no current tasks, one of three actions will occur: (I) if there are R/T tasks ready to
run one will be selected by SX20.'; (2) if there are no R/T tasks, C.CURR will be examined for - - - - - - ,
a preempted TID task and if found, it's context will be reestablished;
if there is no preempted task, SX20.' will be allowed to search for a TID task and select one or go into CPU wait
until the next interrupt.

en

This block of logic does the preparation and relinking of the current CPU task from the
C.CURR to its ready-to-run state. The interval time is collected and stored, the quantum flags
reinitialized, and the priorities reset. A branch to S.EXEC" links the current task to a ready
state.

no

If the current CPU task is executing an OS service on behalf of the IPU, the IPU inhibit flag will
be set to prevent it from being selected for IPU execution before it has finished in the OS.

no

If there is a higher priority task requesting and context switching is not inhibited, there are two
logical paths. If there is a real time task requesting, the current time distributed task will be
preempted and the real time task selected as the current CPU task. If the higher priority task
is not real time, the current TID task will be permitted to complete its allotted rotation time
before task reselection occurs.

I
..

f

yes

o
I 1--

-*,_

t-)
'----

"j;C)
"-'---

~

.~

~

....

II there is an IPU online and it is idle, a branch link will be e)(ecuted to a subroutine ot H.CPU
called SCHEO. SCHEO scans the ready queues and selects the highest priority ready-to-run
task which is eligible for the IPU. The task will be linked to the IPU head cell and tlte IPU
started. If the IPU is off line, an unconditional branch will direct execution around the IPU test
and branch code in S.EXEC20.

.

The state chain queues are searched from the highest priori ty (SQR T) to the lowest (SQ64) •
When an entry is found (j.e., state chain where tht head cell count> I) the first entry in the .....__
chain is unlinked and relinked to the current head cell (C.CURR). The context of the
communication region is established. The CPU is then remapped for the new current task; the
map and protect registers are loaded into the CPU scratchpad. Finally, the interval is read,
reset, loaded, and started.

Is the recovered
PSD in the OS

no
- - - - - - . . . . . If there is an online IPU e)(ecuting a task, it will be tested for eligibility vis-a-vis software
interrupts and system action requests. II the task is found to be ineligible for the IPU, a flag

(EXEC.STR) will be set to indicate that the task should be remo\led from the IPU and linked to a
ready state in the CPU.

yes
Is a delete task
requested

yes

I
.. ~
no

eset stack
c(ontrol to
S. EXEC21

Pop Stack
and
Transfer control
to recovered PSD

__--'

The current CPU task is then tested for software interrl)gts and/or system action requests. If
either one is found requesting, control is passed to S.EXEC21 to process the request.
If there are no software interrupts or system action requests, processing continues in S.EXEC20.

The next step occurs only if there is an IPU online. The current CPU task will be tested for the
IPU inhibited state by zeroing the IPU inhibit flag (DQE.IPUH). If the task is not inhibited, it
will be tested for the IPU biased option. A biased task will replace the current IPU task if it is
of higher priority. If the task is not biased and is not optioned CPU only, it will be an IPU
candidate only if the IPU is idle.
If the current CPU task is optioned CPU only, is IPU inhibited, or for some other rcason (no IPU
in the system) the current CPU task is not an IPU candidate, the task's stack will be pushed and
control passed to it via LPSD.

w
I

~

-J

~

.~

~.I

.

3.1.62

Subroutine S.EXEC21 - Process Task Interrupt

Functional Description
S.EXEC2l is called by S.EXEC20 to process any task interrupt requests, after the CPU
scheduler has determined that the return address in the task context is not in the
operating system area. It processes both system action interrupt requests in DQE.SAIR,
and requested software task interrupts in DQE.RTI.
Entry Conditions
Calling Sequence:
BU

S.EXEC21

R2

DQE address

Registers:

Exit Conditions
Return Sequence:
Transfer control as appropriate for task interrupt, or return to interrupted
context.
Task Interrupt Request Processing (S.EXEC2l)
System Action Task Interrupts (DQE.SAIR)
PRIORITY
(BIT)
LABEL
0

DQE.DELR

DESCRIPTION

PROCESSING
ROUTINE

DELETE TASK REQUEST

S.EXEC28

RESERVED
2

DQE.HLDR

HOLD TASK REQUEST

S.EXEC51

3

DQE.ABTR

ABOR T TASK REQUEST

S.EXEC19

4

DQE.EXTR

EXIT TASK REQUEST

S.EXEC29

5

DQE.SUSR

SUSPEND TASK REQUEST

S.EXEC21

6

DQE.RRRQ

RUN REQUEST

S.EXEC21

7

RESERVED

,fI'!""·'h

't)

3-48

Requested Software Task Interrupts (DQE.RTI)
PRIORITY
(BIT)
LABEL

o

DESCRIPTION

RESERVED
DQE.EAIR

END ACTION REQUEST (PRIORITY 1)

2

DQE.DBBR

DEBUG BREAK REQUEST

3

DQE.UBKR

USER BREAK REQUEST

4

DQE.EA2R

END ACTION REQUEST (PRIORITY 2)

5

DQE.MSIR

MESSAGE INTERRUPT REQUEST

6-7

RESERVED

3.1.63

Subroutine S.EXEC22 - Wait for Completion Of All No-Wait Operations

Functional Description
S.EXEC22 is called from either the task abort or task exit processing control subroutines
(S.EXECI9 or S.EXEC29). Its purpose is to delay until all outstanding no-wait processing
is complete. It accomplishes this by calling H.EXEC,25 until the number of outstanding
no-wait requests is equal to zero. A return is then made to the calling routine.
Entry Conditions
Calling sequence:
BL

S.EXEC22

R2

Current task DQE address

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
R 1,R2,R3,R4,R5,R7

Saved

R6

Destroyed

3-49

(

f~"'.

"'-'I

3.1.64

Subroutine S.EXEC23 - Terminate Messages In Receiver Queue

Functional Description
S.EXEC23 is called from one of the task termination processing control subroutines
(S.EXEC 19, S.EXEC28, or S.EXEC29). Its purpose is to unlink all messages from the
receiver queue and to terminate these messages, relinking any waiting tasks to their
respective ready-to-run queues. A return is then made to the calling routine.
Entry Conditions
Calling Sequence:

BL

S.EXEC23

Registers:
None
Exit Conditions
Return Sequence:
TRSW

RO

Registers:
All registers destroyed

3.1.65

Subroutine S.EXEC24 - Reserved

3.1.66

Subroutine S.EXEC25 - Terminate Next Run Request In Receiver Queue

Functional Description
S.EXEC25 is called from one of the task termination processing control subroutines
(S.EXEC19, S.EXEC28, or S.EXEC29). Its purpose is to unlink the next run request from
the receiver queue, and to terminate the requests with abnormal status. A return is then
made to the calling routine.
Entry Conditions
Calling Sequence:

BL

S.EXEC25

X3

Scratch pad address

Registers:

o

i:

3-50
I

Exit Conditions

(

Return Sequence:
TRSW

RO

Registers:

3.1.67

X3=X3-4W

Scratch pad address

R 1,R2,R4,R 5,R6,R7

Destroyed

Subroutine S.EXEC26 - Remove Task Gating

Functional Description
S.EXEC26 is called from one of the task termination processing subroutines (S.EXEC 19,
S.EXEC28, or S.EXEC29). Its purpose is to remove any outstanding gating mechanisms
associated with the terminating task (e.g., context switch or FISE). A return is then
made to the calling routine.
Entry Conditions
Calling Sequence:

(

BL

S.EXEC26

R2

Current task DQE address

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
All registers preserved
3.1.68

Subroutine S.EXEC27 - Transfer Control To Abort Receiver

Functional Description
S.EXEC27 is called from the abort task processing control subroutine (S.EXEC 19). Its
purpose is to transfer control to the user task abort receiver if one exists. Otherwise, a
return will be made to the calling routine.
Entry Conditions

(

Calling Sequence:

BL

S.EXEC27
3-51

<,

I

Registers:
Current task DQE address

R2
Exit Conditions
Return Sequence:

RO (or LPSD to abort receiver)

TRSW
Registers:

All registers preserved

3.1.69

Subroutine S.EXEC28 - Delete Task Processing Control Subroutine

Functional Description
S.EXEC28 is an internal H.EXEC subroutine which is called only by S.EXEC21 to process
a task delete request on behalf of the currently executing task. The purpose of
S.EXEC28 is to control the sequencing of delete task processing modules associated with
the pertinent subsystems:
Module

Description

S.MONS2

Remove task associated timers.

H.MONS,38

Disconnect interrupt (if connected).

S.EXEC26

Remove context switch or FISE gating if any.

H.IOCS,38

Terminate all outstanding I/O requests

S.EXEC23

Terminate all messages in receiver queue.

S.EXEC25

Terminate active run request (if any).

H.ALOC,3

Close and deallocate system critical files.
Close and deallocate user I/O files/devices with minimal processing
required (no attempt to preserve data integrity).
Deallocate all swap files and memory (excluding TSA).
Deallocate TSA memory, DQE space, clear C.PRNO, transfer control
to CPU scheduler.

S.EXEC4-3

Reactivate task if additional run requests queued.

S.EXEC76

Update task execution accounting value.

[H.TSM,4-]

TSM task abort/delete processing (called only if TSM task).

[H.SOUT,26]

Batch task delete processing (called only if Batch task).

S.ALOC2

Deallocate TSA and DQE.

3-52

0

·<

.,'.1

Entry Conditions

(

Calling Sequence:
BU

S.EXEC28

Registers:
None
Exit Conditions
Return Sequence:
Clear

C.PRNO

BU

S.EXEC20

Registers:
None
3.1.70

Subroutine S.EXEC29 - Exit Task Processing Control Subroutine

Functional Description

(

S.EXEC29 is an internal H.EXEC subroutine which is called only by S.EXEC21 to process
an exit request on behalf of the currently executing task. The purpose of S.EXEC29 is to
control the sequencing of exit processing by the exit processing modules associated with
the pertinent subsystems:
Module

Description

S.MONS2

Remove task associated timers.

H.MONS,38

Disconnect interrupt (if connected).

S.EXEC26

Remove context switch or FISE gating if any.

S.EXEC22

Defer continued processing until all outstanding no-wait operations
are complete.

S.EXEC25

Terminate active run request if any.

H.ALOC3

Close and deallocate system critical files.
Close and deallocate user I/O files/devices with blocking buffer purge
and automatic EOF as appropriate.
Deallocate all swap files and memory (excluding TSA).
Deallocate TSA memory, DQE space, clear CPRNO, transfer control
to CPU scheduler.

(

S.EXEC43

Reactivate task if additional run requests queued.

S.EXEC76

Update task execution accounting value.

[H.TSM,3 ]

TSM task exit processing (called only if TSM task).

[ H.SOUT,26J

Batch task exit processing (called only if Batch task).

S.ALOC2

Deallocate TSA and DQE.
3-53

Entry Conditions
Calling Sequence:
S.EXEC29

BU

Registers:
None
Exit Conditions
Return Sequence:
Clear

C.PRNO

BU

S.EXEC20

Registers:
None

3.1.71

Subroutine S.EXEC30 - Reserved

3.1.72

Subroutine S.EXEC31 - Report No-Wait Rm Request Post Processing
Complete

Functional Description
S.EXEC31 is called to report the completion of no-wait run request post processing. Its
purpose is to clear the task interrupt processing lock, and to return to the point of task
interrupt. It will discard one level (the most recent) of push down in the TSA. A
M.RTRN will then be issued to return to the point of task interrupt.
Entry Conditions
Calling Sequence:

BL

S.EXEC31

Registers:
None
Exit Conditions
Return Sequence:
M.RTRN
Registers:
None

3-54

(to previous context)

(

3.1.73

(

Functional Description

Staoutine S.EXEC32 - Report Wait Mode Ram Request Complete

S.EXEC32 is called by the appropriate run request exit processor on behalf of the
requested task. Its purpose is to report completion of the wait mode rlBl request to the
requesting (waiting) task. The waiting task is removed from the wait list and placed in
the ready-to-run list (or in the memory request list if an inswap is required).
Entry Conditions
Calling Sequence:

BL

S.EXEC32

Xl

DQE entry address of sending task

X2

MRRQ address

X3

Address of 22W scratch pad area

Registers:

Exit Conditions

("

Return Sequence:
TRSW

RO

Registers:

3.1.74

X3=X3-4W

Scratchpad address

RI,R2,R4,R5,R6,R7

Destroyed

Subroutine S.EXEC33 - Report No-Wait Mode Run Request Complete

Functional Description
S.EXEC33 is called to report the completion of run request processing. The call is made
on behalf of the task which processed the run request. The requesting task may be in the
wait-for-any-run-request-completion state. If so, it will be removed from that list and
linked to the ready-to-run list (or to the memory request list if an inswap is required).
The run request queue entry will be linked to the DQE task interrupt list and will contain
the no-wait mode run request post processing service address. When the scheduler
dispatches control to the task, the specified routine will be entered as a preemptive
system service.

3-55

Entry Conditions
Calling Sequence:

BL

S.EXEC33

Rl

DQE address of sending task

R2

MRRQ address

R3

Address of 22W scratchpad area

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
X3=X3-4W

Scratchpad address

R 1,R2,R4,R5,R6,R7

Destroyed

3.1.75

Subroutine S.EXEC34 - Reserved

3.1.76

Subroutine S.EXEC35 - Report No-Wait Mode Message Post Processing
Complete

Functional Description
S.EXEC35 is called to report the completion of no-wait mode message post processing.
Its purpose is to clear the task interrupt processing lock, and to return to the point of
task interrupt. It will discard one level (the most recent) of pushdown in the TSA stack.
A M.R TRN will then be used to return to the point of task interrupt.
Entry Conditions
Calling Sequence:

BL

S.EXEC35

Registers:
None

3-56

(..,:,
Jtl

(
(

Exit Conditions
Return Sequence:
(to previous context)

CPU scheduler
Registers:
None

3.1.n

Subroutine S.EXEC36 - Report Wait Mode Message Complete

Functional Description
S.EXEC36 is called by the appropriate message exit processor on behalf of the task that
processed the message. Its purpose is to report completion of wait mode message
processing to the waiting task. The waiting task is removed from the wait list and placed
in the ready-to-run list (or in the memory request list if an inswap is required).
Entry Conditions
Calling Sequence:

(

BL

S.EXEC36

Xl

DQE entry address of sending task

X2

MRRQ address

X3

Address of 22W scratchpad area

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
X3=X3-4W

Scratchpad address

R 1,R2,R4,R5,R6,R7

Destroyed

(

3-57

3.1.78

Stmroutine S.EXEC37 - Report No-Wait Mode Message Complete

Functional Description
S.EXEC37 is called to report the completion of message processing. The call is made on
behalf of the task which processed the message. The task which sent the message may
be in the wait-for-any-message-completion queue. If so, it wHl be removed from that
list and linked to the ready-to-run-list (or to the memory request list if an inswap is
required).
The message queue entry will be linked to the DQE task interrupt list and will contain
the no-wait mode message post processing service address.
When the scheduler
dispatches control to the task, the specified routine will be eentered as a preemptive
system service.
Entry Conditions
Calling Sequence:

BL

S.EXEC37

Rl

DQE address of requesting task

R2

MRRQ address

R3

Address of 22W scratchpad area

Registers:

/"'''';
~y

,if

>\

l,<,,~

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
Scratchpad address
R 1,R2,R4,R5,R6,R7
3.1.79

Destroyed

Subroutine S.EXEC38 - Inhibit Swap Of Current Task

Functional Description
S.EXEC38 is called to set the inhibit swap flag (DQE.LKIM) in the DQE of the current
task. A return is then made to the calling routine.

o

()
3-58

(

(

Entry Conditions
Calling Sequence:

BL

S.EXEC38

Registers:
None
Exit Conditions
Return Sequence:
TRSW

RO

Registers:

3.1.80

R2

Destroyed

R 1,R3,R4,R5,R6,R7

Saved

Subroutine S.EXEC39 - Enable Swap of Current Task

Functional Description
S.EXEC39 is called to reset the inhibit swap flag (DQE.LKIM) in the DQE of the current
task. A return is then made to the calling routine.
Entry Conditions
Calling Sequence:

BL

S.EXEC39

Registers:
None
Exit Conditions
Return Sequence:
TRSW

RO

Registers:
R2

Destroyed

R 1,R3,R4,R5,R6, R7

Saved

3-59

3.1.81

Subroutine S.EXEC40 - Reserved

3.1.82

Subroutine S.EXEC41 - Exit Run Receiver

o

Functional Description
S.EXEClJ.I is called to exit a run receiver when the M.XRUNR exit type is invoked. Its
purpose is to process the exit according to the specifications contained in the Receiver
Exit Block (RXB). The run receiver queue will be examined, and if not empty, the task
executed again at the point following the M.XRUNR call on behalf of the next request.
If the queue is empty, the exit options are examined. If option bit 0 is set, the task will
be placed in a wait-state, waiting for the next run request to be received. If option bit 0
is reset, the task will exit the system.
Entry Conditions
Calling Sequence:

BL

S.EXEClJ.I

Rl

Current task DQE address

R2

Receiver Exit Block (RXB) address

X3

Scratchpad address

Registers:

0"
"

"\

Exit Conditions
Return Sequence:
No return (rerun task or exit)
3.1.83

Subroutine S.EXEC42 - Exit Message Receiver

Functional Description
S.EXEC42 is called to exit a message receiver when a M.XMSGR service has been
called. If the message interrupt is not active, the task will be aborted. Its purpose is to
reset the task interrupt lock and to process the exit according to the specifications in the
Receiver Exit Block (RXB). The message receiver queue will be examined, and if not
empty, the message interrupt will be invoked again on behalf of the next request. If the
queue is empty, a return will be made to the point of interrupt (or following
M.SUSP /M.ANYW) at the base execution level.

o
,

I,

3-60

:.
I

,

Entry Conditions
Calling Sequence:
BL

S.EXEC42

Rl

Current task DQE address

R2

Receiver Exit Block (RXB) address

X3

Scratch pad address

Registers:

Exit Conditions
Return Sequence:
No return to caller (rerun message receiver or return to user base level
context)

3.1.84

Subroutine S.EXEC43 - Reactivate RlDl Receiver Task

Functional Description
S.EXEC43 is called to examine the run receiver queue of a run receiver task that has
used a standard M.EXIT call. S.EXEC43 is called by S.EXEC28, S.EXEC29, or S.EXEC 19.
If queued run requests exist, a call to H.ALOCI is made to reactivate the task. If
H.ALOC 1 makes a denial return, all outstanding requests are terminated with abnormal
status. If H.ALOCI successfully starts the activation, S.EXEC43 wi11link any remaining
queued requests to the DQE of the task being activated. A return is then made to the
calling routine.
Entry Conditions
Calling Sequence:
BL

S.EXEC43

Registers:
None
Exit Conditions
Return Sequence:
TRSW

RO

Registers:

()
All registers destroyed

3-61

3.1.85

Subroutine S.EXEC44 - Change Priority Level of Current Task

0··'
.

..

Functional Description
S.EXEC44 is called to change the priority level of the current task. The specified
priority level is stored in DQE.CUP and DQE.BUP and as the priority level of the
currently executing task. (No relink of this task is required since it is linked to the
special state chain for the currently executing task.) A return is then made to the
calling routine.
Entry Conditions
Calling Sequence:

BL

S.EXEC44

R6

Priority level

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

Registers:

3.1.86

R2

Current task DQE address

R 1,R3,R4,R5,R6,R7

Saved

Subroutine S.EXEC45 - Change Priority Level of Specified Task

Functional Description
S.EXEC45 is called to change the priority level of the specified (not current) task. The
specified task may either be in a ready-to-run state, or in a wait state. If the task is in a
ready-to-run state, the specified priority is stored in DQE.CUP and in DQE.BUP. The
task is then unlinked from its current ready to run list and relinked to the ready to run
list associated with the new priority. If the task was in a wait state, it will be relinked
according to its new priority into the same wait list. A return will then be made to the
calling program.

o

()

3-62

Entry Conditions

(-

(

Calling Sequence:

BL

S.EXEC45

R6

Priority level

Rl

DQE address of specified task

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
All registers destroyed

(-

3.1.87

Subroutine S.EXEC46 - Reserved

3.1.88

Subroutine S.EXEC47 - Reserved

3.1.89

Subroutine S.EXEC48 - Convert Task Number to DQE Address

("""

"

.~

Functional Description
S.EXEC48 is called to calculate the DQE address of the specified task.
Entry Conditions
Calling Sequence:

BL

S.EXEC48

R7

Task activation sequence number of specified task

Registers:
Exit Conditions
Return Sequence:
TRSW

RO

Registers:

('

R2

DQE address of specified task

R 1,R3,R4,R5,R7

Saved

R6

Destroyed
3-63

3.1.90

Subroutine S.EXEC49 - Construct MRRQ

Functional Description
S.EXEC49 is called to construct an MRRQ entry for either a message or run request.
Space for the MRRQ is allocated from memory pool. The MRRQ is constructed
according to the contents of the Parameter Send Block (PSB) specified as a calling
parameter.
Entry Conditions
Calling Sequence:

BL

S.EXEC49

R2

Parameter Send Block (PSB) address

X3

Scratchpad address

Registers:

Exit Conditions
Return Sequence:
I

TRSW

RO (CC 1 set indicates memory pool unavailable)

RI

MRRQ address

X3=X3-4W

Scratchpad address

R2,R4

Saved

R5,R6,R7

Destroyed

Registers:

3.1.91

Subroutine S.EXEC50 - Link MRRQ To Run Receiver Of Destination Task

Functional Description
S.EXEC50 is called to link the designated MRRQ entry to the run receiver queue of the
specified task. If the target task is in a RUNW wait state, it will be unlinked from the
wait list and linked to the ready-to-run list.
Entry Conditions
Calling Sequence:

BL

3-64

S.EXEC50

Registers:

(

Rl

Target task DQE address

R2

MRRQ address

X3

Scratchpad address

R5

Zero indicates unlink if in PREA list

R7

Task activation sequence number of target task

(

Exit Conditions
Return Sequence:
TRSW

RO (CC 1 set indicates invalid target task)

X3=X3-4W

Scratch pad address

Rl,R2

Saved

R4,R5,R6,R 7

Destroyed

Registers:

('

("
3.1.92

Subroutine S.EXEC51 - Link Current Task To Designated Wait State

Functional Description
S.EXEC51 is called to place the currently executing task in the designated wait state. If
the task is a time distribution task, the execution time accounting value is updated in the
TSA. The current quantum value for next dispatch is updated in DQE.CQC for both realtime and time distribution tasks. When linkage to the wait state is complete, the
memory scheduler is resumed if entries are queued in the memory request list.
Entry Conditions
Calling Sequence:
BEl
BL

STATUS
S.EXEC51

Rl

Address of wait state headcell

R2

Current task DQE address

Registers:

Exit Conditions
Return Sequence:

C:

No return to calling routine
M.RTRN to TSA stack context when task is ready to run

3-

c,)

Registers:
None
3.1.93

Subroutine S.EXEC52 '"': Message Or Run Request Post Processing Subroutine

Functional Description
S.EXEC52 is called on behalf of the sending task when a message or run request has been
processed by the destination task. It will transfer the return parameters to the return
buffer designated in the PSB, update PSB status, and deallocate the MRRQ.
Entry Conditions
Calling Sequence:
BL

S.EXEC52

R2
X3

MRRQ address
Scratchpad address

Registers:

Exit Conditions
(1~'\

Return Sequence:
TRSW

VI

RO

Registers:

3.1.94

X3=X3-4-W

Scratchpad address

R5

Saved

R 1,R2,R4-,R6,R7

Destroyed

Subroutine S.EXEC53 - Validate PS8

Functional Description
S.EXEC53 is called to validate the parameters contained in the Parameter Send Block
(PSB) associated with a message or run request. An immediate return is made if the
most recent context on the TSA stack reflects a privileged caller. Otherwise, S.ALOC20
is called to verify the PSB address arguments, and general parameter validation is
performed.

o

o
3-66

Entry Conditions
Calling Sequence:

BL

S.EXEC53

R2

PSB address

X3

Scratchpad address

Registers:

Exit Conditions
Return Sequence:
TRSW

RO (CC 1 set indicates validation error)

X3=X3-4W

Scratch pad address

R6

Contains error code if CC 1 set, otherwise destroyed

R2

Saved

R 1,R4,R5,R7

Destroyed

Registers:

(
3.1.95

Subroutine S.EXEC54 - Move Byte String

Functional Description
S.EXEC54 is a register reentrant routine which moves a byte string of the designated
length from the origin address to the destination address.
Entry Conditions
Calling Sequence:

BL

S.EXEC54

RI

Origin (from) address

R2

Destination (to) address

R7

Negative number of bytes to be transferred

Registers:

(
3-67

Exit Conditions
Return Sequence:
TRSW

RO

R3,R4,R5

Saved

R 1,R2,R6,R7

Destr9yed

Registers:

3.1.96

Subroutine S.EXEC55 - Unlink Task From Designated List and Link To Ready
List

Functional Description
S.EXEC55 is called to link a task to the ready-to-run queue. It will unlink the task from
the designated list, then link the task to the ready list associated with its current
priority. If the task is outswapped and cannot run, it will be linked to the memory
request queue and the memory scheduler will be resumed.
Entry Conditions
Calling Sequence:
BEl

BL

STATUS
S.EXEC55

Rl

Designated list headcell address

R2

DQE address

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

R2,R4,R7

Saved

Rl,R3,R5,R6

Destroyed

Registers:

I

3-68

~

(

3.1.97

Subroutine S.EXEC56 - Resume Memory Scheduler

Functional Description
S.EXEC56 is called as a result of a memory scheduler event. An immediate return will
be made if no memory requests are queued. Otherwise the memory scheduler is made
ready to run at the priority of the highest priority memory request queued.
Entry Conditions
Calling Sequence:
BEl

BL

STATUS
S.EXEC65

Registers:
None
Exit Conditions
Return Sequence:
TRSW

RO

R4,R6,R7

Saved

Rl,R2,R3,R5

Destroyed

Registers:

3.1.98

Subroutine S.EXEC57 - Link Task To Ready List By Priority

Functional Description
S.EXEC57 is called to link the designated task to the ready to run list associated with its
current priority.
Entry Conditions
Calling Sequence:
BEl

BL

STATUS
S.EXEC57

R2

DOE address of specified task

Registers:
~\

C .'

Exit Conditions
3-69

Return Sequence:
TRSW

RO

R2,R4,R6,R7

Saved

R 1,R3,R5

Destroyed

Registers:

3.1.99

Subroutine S.EXEC58 - Link MRRQ To Message Receiver Of Destination Task

Functional Description
S.EXEC58 is called on behalf of the sending task to link an MRRQ entry to the message
receiver queue of the destination task.
Entry Conditions
Calling Sequence:

,

'~j

,

BL

S.EXEC58

Rl

Destination task DQE address

R2

MRRQ address

X3

Scratch pad address

R7

Task activation sequence number of destination task

Registers:

Exit Conditions
Return Sequence:
TRSW

RO (CC 1 set indicates invalid destination task)

X3=X3-4W

Scratchpad address

R 1,R2,R4

Saved

R5,R6,R7

Destroyed

Registers:

()

3-70

(

3.1.100 Subroutine S.EXEC.59 - Reserved
3.1.101 Subroutine S.EXEC60 - Validate PRB
Functional Description
S.EXEC60 is called to validate the Parameter Receive Block (PRB) of the destination
task, when the destination task has made a request for the message or run request
parameters. Validation is bypassed if the most recent pushdown on the TSA stack
reflects a privileged caller. Otherwise general PRB validation is performed.
Entry Conditions
Calling Sequence:

BL

S.EXEC60

R2

PRB address

X3

Scratchpad address

Registers:

Exit Conditions

(

Return Sequence:
TRSW

RO (CC 1 set indicates validation error)

R6

Error code if CC 1 set, otherwise destroyed

R2

Saved

Rl,R4,R5,R7

Destroyed

X3=X3-4W

Scratchpad address

Registers:

3.1.102

Subroutine S.EXEC61 - Transfer Parameters From MRRQ To Receiver
Buffer

Functional Description
S.EXEC61 is called on behalf of the destination task after a request for message or run
request parameters has been made. The sent parameters are transferred by S.EXEC61
from the MRRQ entry to the receiver buffer specified in the PRB.
Entry Conditions

3-71

il

~1

(f-"'-

Calling Sequence:

V

C'j)
'I

BL

S.EXEC61

Rl

MRRQ address

R2

PRB address

X3

Scratchpad address

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

X3=X3-4W

Scratchpad address

Rl,R2,R4,R5

Saved

R7

Destroyed

R6

Status code: O=OK, 4=Receiver buffer length exceeded

Registers:

(F"""

0
3.1.103

,

,

,c,v

Subroutine S.EXEC62 - Validate RXB

Functional Description
S.EXEC62 is called to validate the Receiver Exit Block (RXB) after the destination task
has issued an exit from message or run request processing.
Entry Conditions
Calling Sequence:

BL

S.EXEC62

R2

RXB address

X3

Scratchpad address

Registers:

Exit Conditions

c

Return Sequence:
TRSW

3-72

RO (CC 1 set indicates validation error)

o

(

(

Registers:

3.1.104

R6

Error code if CC I set, otherwise destroyed

X3=X3-4W

Scratchpad address

R2

Saved

RI,R4,R5,R7

Destroyed

Subroutine S.EXEC63 - Transfer Return Parameters From Destination Task
ToMRRQ

Functional Description
S.EXEC63 is called on behalf of the destination task to transfer return parameters to the
MRRQ after the destination task has issued an exit from message or run request
processing.
Entry Conditions
Calling Sequence:

BL

S.EXEC63

Rl

MRRQ address

R2

RXB address

X3

Scratch pad address

f

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

X3=X3-4W

Scratchpad address

R 1,R2,R4,R5

Saved

R6,R7

Destroyed

Registers:

3-1'3

3.1.105 Subroutine S.EXEC64 - No-Wait Mode Message Post Processing Subroutine
Functional Description
S.EXEC64 is invoked as a preemptive system service (end action priority 2) on behalf of
the sending task. It in turn calls S.EXEC52 to accomplish post processing of the MRRQ.
It will optionally vector to a user specified end action routine, or call H.EXEC,34 to
report no-wait message post processing complete.
Entry Conditions
Calling Sequence:
Preemptive system service
Registers:
R2

MRRQ address

Exit Conditions
Return Sequence:
No return is made
S.EXEC64 will exit to the user end action routine or to H.EXEC,34
Registers:
Rl

3.1.106

PSB address on entry to user end action routine

Subroutine S.EXEC65 Subroutine

No-Wait Mode Run Request Post Processing

Functional Description
S.EXEC65 is invoked as a preemptive system service (end action priority 2) on behalf of
the sending task. It in turn calls S.EXEC52 to accomplish post processing of the MRRQ.
It will optionally vector to a user specified end action routine, or call H.EXEC,28 to
report no-wait run request post processing complete.
Entry Conditions
Calling Sequence:
Preemptive system service
Registers:
R2

3-74

MRRQ address

(

Exi t Conditions
Return Sequence:
No return is made
S.EXEC65 will exit to the user end acti'on routine or to H.EXEC,28
Registers:
RI

3.1.107

PSB address on entry to user end action routine

Subroutine S.EXEC66 - Deallocate MRRQ

Functional Description
S.EXEC66 is called to deallocate an MRRQ when processing associated with the MRRQ is
complete. S.ALOC22 is called to return the MRRQ space to memory pool.
Entry Conditions
Calling Sequence:
BL

S.EXEC66

R2

MRRQ address

X3

Scratchpad address

c

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
X3=X3-4W

Scratchpad address

R5

Saved

RI,R2,R4,R6,R7

Destroyed

(

3-75

1:~

"Ic,

3.1.108

Subroutine S.EXEC67 - Link Entry To End Action Queue

'''-JlFunctional Description
S.EXEC67 is called on behalf of the destination task when destination task processing of
a no-wait mode message or run request is complete. Its purpose is to link the MRRQ
entry to the end action queue of the sending task. This will cause the appropriate post
processing routine to be invoked as a preemptive system service on behalf of the sending
task.
Entry Conditions
,Calling Sequence:
BEl
BL

STATUS
S.EXEC67

Rl

DQE address of sending task

R2

MRRQ address

X3

Scratch pad address

Registers:

~"'lExit

Conditions

Return Sequence:
TRSW

RO

X3=X3-4W

Scratchpad address

R 1,R2,R4,R6

Saved

R5,R7

Destroyed

-

Registers:

3.1.109

Subroutine S.EXEC68 - Construct And Vector Context To User End Action
PSD

Functional Description
S.EXEC68 is called by the send request post processing logic to vector to a user specified
end action routine. Control will be transferred with mapped, unblocked status.
Entry Conditions
Calling Sequence:

I{)
3-76

BL

S.EXEC68

1,\

(

Registers:
Rl

PSB address

R6

User end action routine address

Exit Conditions

Return Sequence:
No return
LPSD to user end action routine
Registers:
R2

3.1.110

PSB address

Subroutine S.EXEC69 - Common No-Wait Post Processing Merge Point

Functional Description
S.EXEC69 is called to remove the task interrupt processing lock and mark the task
interrupt request if additional end action entries are queued. The most recent level of
context in the TSA stack is discarded, and an M.RTRN is issued to pop to the previous
context level.
Entry Conditions
Calling Sequence:
BL

S.EXEC69

Rl

Current task DQE address

Registers:

Exit Conditions
Return Sequence:
No return to caller
M.R TRN to previous context level
Registers:

c:

None

3-77

I,!

3.1.111

Subroutine S.EXEC70 - Terminate All Run Requests In Receiver Queue Of
Current Task

Functional Description
S.EXEC70 is called when an error is encountered in attempting to reactivate a
terminating task with additional run requests queued. S.EXEC70 will in turn call
S.EXEC25 until the receiver queue is empty.
Entry Conditions
Calling Sequence:

BL

S.EXEC70

X2

Current task DOE address

X3

Scratchpad address

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

Registers:

3.1.112

X3=X3-4W

Scratchpad address

R2

Saved

RI,R4,R5,R6,R7

Destroyed

Subroutine S.EXEC71 - Insure Startup Of Destination Run Receiver Task

Functional Description
S.EXEC71 is called to unlink the destination task from the RUNW or PREA list (unless
R5 is not zero), and to link the destination task to the ready list at the priority specified
in R6.
Entry Conditions
Calling Sequence:
BEl

BL

3-78

STATUS
S.EXEC71

c\

"I

(

Registers:

(
R2

DQE address of destination task

R5

Zero if task is to be unlinked from PREA list

R6

Priority

Exit Conditions
Return Sequence:
TRSW

RO

Registers:

3.1.113

R2,R4

Saved

R I,R3,R5,R6,R7

Destroyed

Subroutine S.EXEC72 - Report Wait

I/o Starting

Functional Description
S.EXEC72 is called to process a report of wait mode I/O starting. A check is made to
see if the associated I/O has already completed. If so, an immediate return is made.
Otherwise the swap inhibit flag will be set (unless RO bit I is set) and the task will be
linked to the designated wait list.
Entry Conditions
Calling Sequence:
BU

S.EXEC72

RO

Bit 0 set indicates task is swappable during I/O

RI

Address of wait list headcell

Registers:

Exit Conditions
Return Sequence:
No return to caller
CPU scheduler return to context on TSA stack when I/O complete
Registers:
None

3-79

3.1.114

Subroutine S.EXEC73 - Replace Context On TSA Stack

Functional Description
S.EXEC73 is called to replace the most recent context on the TSA stack with the
designated context block.
Entry Conditions
Calling Sequence:

BL

S.EXEC73

Rl

Address of lOW context block

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

Registers:

3.1.115

Rl,R3

Saved

R2,R4,R5,R6,R7

Destroyed

Subroutine S.EXEC74 - Reset Stack To User Level

Functional Description
S.EXEC74 is called on abnormal task termination to reset the stack to the point of last
user call.
Entry Conditions
Calling Sequence:

BL

S.EXEC74

Registers:
None
Exit Conditions
Return Sequence:
TRSW

3-80

RO

G

(

(

Registers:

3.1.116

R2,R4,R6,R7

Saved

Rl,R3,R5

Destroyed

Subroutine S.EXEC75 - Situational Priority Increment Subroutine

Functional Description
S.EXEC75 is called to increment the priority of the specified task. Priority adjustment
is bypassed if the specified task is a real time task.
Entry Conditions
Calling Sequence:

BL

S.EXEC75

R2

DQE address of target task

R4

Situational priority increment

Registers:

(

Exit Conditions
Return Sequence:
TRSW

RO

Registers:

3.1.117

R 1,R2,R3,R4,R6,R7

Saved

R5

Destroyed

Subroutine S.EXEC76 - Update Task Execution AccolDlting Value

Functional Description
S.EXEC76 is called during task termination processing. The interval timer is read and
the elapsed time added to T.IT AC in the TSA.
Entry Conditions
Calling Sequence:

BL

S.EXEC76

3-81

~egisters:

R2

Current task DQE address

()

Exit Conditions
Return Sequence:
TRSW

RO

Registers:

3.1.118

R3

Current task TSA address

R 1,R2,R4,R6,R7

Saved

R5

Destroyed

Subroutine S.EXEC77 - Update DQE.CQC On Preemptive Context Switch

Functional Description
S.EXEcn is called by S.EXEC20 when a context switch is being performed as a result of
preemption by a higher priority task. Its purpose is to update the current quantum value
in the DQE (DQE.CQC) for use when the preempted task is re-dispatched.
Entry Conditions
Calling Sequence:
BEl
BL

STATUS
S.EXEC77

R2

Current task DQE address

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

R 1,R2,R4,R6

Saved

R3,R5,R7

Destroyed

Registers:

o

o
3-82

(

3.1.119

Subroutine S.EXEC78 - Move Context From Stack to T.CONTXT

Functional Description
S.EXEC78 is called when the context of the PSD, RO-R7, and PC are copied from the
TSA of the current task to the Debug context area. After filling the T.CONTXT area, it
will return to the calling routine.
Entry Conditions
Calling Sequence:

BL

S.EXEC78

Registers:
None
Exit Conditions
Return Sequence:
TRSW

RO

RI

Current pushdown address from T.REGP

R3

TSA Address of current task

R2,R4-,R5

Unchanged

R6,R7

Destroyed

Registers:

(

3.1.120

Subroutine S.EXEC79 - Push Current Context onto Stack for Deferred EA
Pull

Functional Description
S.EXEC79 is called to format a PSD with the privileged mode set, the condition codes
clear, the Extended Addressing Mode clear, the right halfword instruction clear, the
arithmetic exception trap clear, and the PC pointing into H.EXEC25 in word one. Word
two has the Map Mode set and CPIX of the specified task. The subroutine will then place
the PSD and the registers (with the contents at the end of the subroutine) onto the
stack. After placing the information onto the stack, the subroutine will return to the
calling routine.
Entry Conditions
Calling Sequence:

BL

()

S.EXEC79

.'

3-83

Registers:
R2

DQE Address of specified task

Exit Conditions
Return Sequence:

3.1.121

R2,R3,R6,R7

Unchanged

Rl,R4,R5

Destroyed

Subroutine S.EXEC80 - Start IPU and Verify

Functional Description
S.EXEC80, when called, will reset the IPU run flag and initialize and start the IPU
verification timer. The subroutine will then return control to the calling routine.
Entry Conditions
Calling Sequence:

BL

S.EXEC80

Registers:
None
Exit Conditions
Return Sequence:
TRSW

RO

Registers:
Rl,R2,R3,R5,R6,R7

Unchanged

R4

Destroyed

'

( ,"
3-84

3.2

(-

System Services (H.MONS)

ENTR Y POINT
H.MONS,l
H.MONS,2
H.MONS,3
H.MONS,4
H.MONS,5
H.MONS,6
H.MONS,7
H.MONS,8
H.MONS,9
H.MONS,lO
H.MONS,ll
H.MONS,12
H.MONS,13
H.MONS,14
H.MONS,15
H.MONS,16
H.MONS,17
H.MONS,18
H.MONS,19
H.MONS,20·
H.MONS,21
H.MONS,22
H.MONS,23
H.MONS,24
H.MONS,25
H.MONS,26
H.MONS,27
H.MONS,28
H.MONS,29
H.MONS,30
H.MONS,31
H.MONS,32
H.MONS,33
H.MONS,34
H.MONS,35
H.MONS,36
H.MONS,37
H.MONS,38
H.MONS,39
H.MONS,40
H.MONS,41
H.MONS,42
H.MONS,43
H.MONS,44

SVC
NUMBER

DESCRIPTION

42
PHYSICAL DEVICE INQUIR Y
43
PERMANENT FILE ADDRESS INQUIRY
44
MEMOR Y ADDRESS INQUIRY
45 CREA TE TIMER ENTRY
46 TEST TIMER ENTRY
47 DELETE TIMER ENTR Y
48
SET USER STATUS WORD
49
TEST USER STATUS WORD
4A* CHANGE PRIORITY LEVEL
4B CONNECT TASK TO INTERRUPT
4E TIME OF DAY INQUIR Y
4F MEMOR Y DUMP REQUEST
50
LOAD OVER LA Y SEGMENT
51
LOAD AND EXECUTE OVERLAY SEGMENT
52
ACTIV ATE TASK
53 RESUME TASK EXECUTION
54 SUSPEND TASK EXECUTION
55 TERMINATE TASK EXECUTION
56
ABOR T SPECIFIED TASK
57
ABORT SELF
40
ALLOCA TE FILE OR PERIPHERAL DEVICE
4-1
DEALLOCATE FILE OR PERIPHERAL DEVICE
4-D ARITHMETIC EXCEPTION INQUIRY
4-C T ASK OPTION WORD INQUIRY
58
PROGRAM HOLD REQUEST
60 SET USER ABORT RECEIVER ADDRESS
61
SUBMIT JOB FROM DISC FILE
62
ABORT WITH EXTENDED MESSAGE
63
LOAD AND EXECUTE INTERACTIVE DEBUGGER
N/ A DELETE INTERACTIVE DEBUGGER
5A DELETE TASK
64 GET TASK NUMBER
73 PERMANENT FILE LOG
74USERNAME SPECIFICATION
7A GET MESSAGE PARAMETERS
7B GET RUN PARAMETERS
7C WAIT FOR ANY NO-WAIT OPERA TION COMPLETE,
MESSAGE INTERRUPT OR BREAK INTERRUPT
5D DISCONNECT TASK FROM INTERRUPT
5E EXIT FROM MESSAGE RECEIVER
5F* PARAMETER TASK ACTIVATION
65 GET ADDRESS LIMITS
66 DEBUG LINK SERVICE
6B RECEIVE MESSAGE LINK ADDRESS
6C SEND MESSAGE TO SPECIFIED TASK

* Implies that this service is available to privileged users only.
N/ A implies reserved for internal use by MPX-32.

c.

.

()

ENTRY POINT
H.MONS,45
H.MONS,46
H.MONS,47
H.MONS,48
H.MONS,49
H.MONS,50
H.MONS,51
H.MONS,52
H.MONS,53
H.MONS,54
H.MONS,55
H.MONS,56
H.MONS,57
H.MONS,58
H.MONS,59
H.MONS,60
H.MONS,61
H.MONS,62
H.MONS,63
H.MONS,64
H.MONS,65
H.MONS,66
H.MONS,67
H.MONS,68
H.MONS,69
H.MONS,70
H.MONS,71
H.MONS,72
H.MONS,73
H.MONS,99

SVC
NUMBER

DESCRIPTION

6D
6E
6F
70
7D
7E
7F
N/ A
N/A
N/A
N/ A
N/A
2E
2F
N/ A
N/ A
N/ A
19
lA
N/ A
2D
IE
IB
IC

SEND RUN REQUEST TO SPECIFIED TASK
BREAK/TASK INTERRUPT LINK
ACTIVATE TASK INTERRUPT
EXIT FROM TASK INTERRUPT LEVEL
EXIT RUN RECEIVER
EXIT FROM MESSAGE END ACTION ROUTINE
EXIT FROM RUN REQUEST END ACTION ROUTINE
RTM CALM 'X55' EXIT
RTM CALM X'52' ACTIVATE
RTM CALM X'54' SUSPEND SELF
RTM CALM X'40' ALLOCATION FILE OR DEVICE
RTM CALM X'41' PHYSICAL DEVICE INQUIRY
DISABLE MESSAGE TASK INTERRUPT
ENABLE MESSAGE TASK INTERRUPT
GET PHYSICAL MEMORY CONTENTS
CHANGE PHYSICAL MEMORY CONTENTS
RTM CALM X'73' LOG FILE(S)
RESOURCEMARK LOCK
RESOURCEMARK UNLOCK
REMOVE RSM LOCK ON TASK TERM
TASK CPU EXECUTION TIME
ACTIVATE PROGRAM AT GIVEN TIME OF DAY
SET SYNCHRONOUS TASK INTERRUPT
SET ASYNCHRONOUS TASK INTERRUPT
RESERVED
15 DATE AND TIME INQUIRY
14 GET DEVICE MNEMONIC OR TYPE CODE
13 ENABLE USER BREAK INTERRUPT
12 DISABLE USER BREAK INTERRUPT
N/ A SYSGEN INITIALIZATION

N/ A implies reserved for internal use by MPX-32.
RTM System Services Under MPX-32
MPX-32 will accept call monitor (CALM) instructions which are syntactically and
functionally equivalent to the RTM CALM's. These CALM's are implemented for
compatibility purposes, only. The user is encouraged to use the new MPX-32 System
Services, instead of CALM's, because they will run faster and support the new
capabilities available in MPX-32. Mixing CALM's and SVC's in the same program
element is discouraged.

1",'',"\
1'",1
1

Generally, RTM CALM's will operate under MPX-32 without any change in syntax or
function. A few seldom-used CALM's have been deleted, and others may have additional
restrictions applied to them. In general, however, the changes to the users source code
should be minimal in the conversion from RTM to MPX-32.

3-86

On a CONCEPT/32 computer, a new SVC type 15 replaces CALM instructions. During
reassembly of a program, the Assembler automatically converts CALM instructions to
their equivalent SVC 15,X'nn' number if Option 20 is set.

( ..

Also, an address exception trap will be generated when a doubleword operation code is
used with an incorrectly bounded operand, therefore coding changes will be required
when a trap occurs.
Under MPX-32 the following RTM CALM implementation is slightly different from its
RTM equivalent:
CALM X'73'

Permanent File Log (The file definition is returned in sectors
instead of allocation units).

The following RTM CALM's have been deleted in MPX-32.
CALM X'62'

Unlink Dynamic Job Queue Entry (not required in MPX).
M.DDJS or CALL M:UNLKJ

CALM X'63'

Acti vate with Core Append (replaced by memory expansion and
contraction services of MPX).
M.ACAP (was not in RTM run-time)

CALM X'64'

Retrieve Address of Appended Core (same as CALM X'63').
M.APAD (was not in RTM run-time)

CALM X'65'

Initialize reentrant library pointers (MPX-32 does not support the
RTM reentrant run-time library).

All Random Access Calls
CALM X'59'

Random Access OPEN (MPX-32 does not support DRAH).
(CALL M:OPEN)

CALM X'5A'

Random Access READ (same as CALM X'59').

CALM X'5B'

Write Function (same as CALM X'59').
(CALL M:WRITE)

CALM X'5C'

Define Function
(CALL M:DEFINE)

CALM X'5D'

Find Function
(CALL M:DEFINE)

TSS CALM's
MPX-32 replaces TSS with TSM, a new online support package.
CALM's X'80' - X'84' have been deleted.

Therefore, all TSS

(

C
3-87

FORTRAN Run-Time

o

OPX-32 does not contain the FORTRAN run-time package. Certain performance
differences will be associated with certain functions as have been highlighted in the
monitor service section.
Summarizing
M:CONNECT is equivalent to M:CONRES.
M:UNLKJ is deleted.
M:IOEX
1.

Files are left open after dispatch to abort receiver.

2.

Normal exit does not result in dispatch of control to abort receiver.

3.

Only privileged users may re-establish an abort receiver from an abort receiver
(only one abort allowed for unprivileged user).

M:LOG - note SMD layout is different in MPX.
M:BLOCK
1.

The user may specify blocking via the JCL or Catalog directives, rather than
use this service.

2.

Number of block files is specified by user via JCL and Catalog directives.
. Blocking buffers are maintained in user's TSA rather than in run-time
package. Not limited to 5.

3.

c

-

Number of FCB's has been expanded to 64.

o

3-88
---~--~.----.~.---

-

-

3.2.1

Entry Point 1 - Physical Device Inquiry

(

See Section 7.8.16 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.2

Entry Point 2 - Permanent File Address Inquiry

See Section 7.8.8 of the MPX- 32 Reference Manual for a detailed description of this
entry point.

3.2.3

Entry Point 3 - Memory Address Inquiry

See Section 8.3.1 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.4

Entry Point 4 - Create Timer Entry

See Section 8.2.33 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.5

Entry Point 5 - Test Timer Entry

See Section 8.2.43 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.6

Entry Point 6 - Delete Timer Entry

See Section 8.2.14 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.7

Entry Point 7 - Set User Status Word

See Section 8.2.32 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.8

Entry Point 8 - Test User Status Word

See Section 8.2.42 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.9

Entry Point 9 - Change Priority Level

See Section 8.2.29 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3-39

3.2.10

Entry Point 10 - Connect Task To Interrupt

.f"'See Section 8.2.8 of the MPX-32 Reference Manual for a detailed description of this
''-'entry pomt.
.
3.2.11

Entry Point 11 - Time-Of-Day Inquiry

See Section 8.2.40 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.2.12

Entry Point 12 - Memory Dump Request

See Section 8.3.2 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.2.13

Entry Point 13 - Load Overlay Segment

See Section 8.2.27 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.14

Entry Point 14 - Load and Execute Overlay Segment

"~ee Section 8.2.27 of the MPX-32 Reference Manual for a detailed description of this
'''L4!ntry point.

3.2.15

Entry Point 15 - Activate Task

See Section 8.2.1 in the MPX-32 Reference Manual for a detailed description of this
entry point.
3.2.16

Entry Point 16 - Resume Task Execution

See Section 8.2.37 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.2.17

Entry Point 17 - Suspend task Execution

See Section 8.2.38 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.2.18

Entry Point 18 - Terminate Task Execution

See Section 8.2.20 of the MPX-32 Reference Manual for a detailed description of this
entry point.

e

3-90

-

3.2.19

Entry Point 19 - Abort Specified Task

(

See Section 8.2.4 of the MPX-32 Reference Manual for a detailed description of this
entry point •.

3.2.20

Entry Point 20 - Abort Self

See Section 8.2.4 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.21

Entry Point 21 - Allocate File Or Peripheral Device

See Section 7.8.1 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.22

Entry Point 22 - Deallocate File Or Peripheral Device

See Section 7.8.6 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.23

Entry Point 23 - Arithmetic Exception Inquiry

See Section 8.2.41 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.24

Entry Point 24 - Task Option Word Inquiry

See Section 8.2.28 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.2.25

Entry Point 25 - Program Hold Request

See Section 8.2.23 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.26

Entry Point 26 - Set User Abort Receiver Address

See Section 8.2.36 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.27

(

Entry Point 27 - Submit Job From Disc File

See Section 8.2.7 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3-91

(-'\

"I

,

3.2.28

Entry Point 28 - Abort With Extended Message

( ''

)

.. '.

r

_.F

~

See . Sec~ion 8.2.4 of the MPX-32 Reference Manual for a detailed description of this
entry pOlnt.
.
3.2.29

Entry Point 29 - Load and Execute Interactive Debugger

See Section 8.2.10 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.2.30

Entry Point 30 - Delete Interactive Debugger

Functional Description
A call to this entry point will cause the Interactive Debugger to be disassociated with the
calling task.
Entry Conditions
Calling Sequence:
M.CALL
Exit Conditions
Oeturn Sequence:

H.MONS,30

o

M.RTRN
Registers:
None
External References
System Macros:
M.RTRN
Abort Cases:

I

I
,I

None
Output Messages:
None

,I
,I

, I

Iii

3-92

Ii
1'1
i'

Ii I

3.2.31

Entry Point 31 - Delete Task

See Section 8.2.11 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.2.32

Entry Point 32 - Get Task Number

See Sections 8.2.24 and 8.2.26 of the MPX-32 Reference Manual for a detailed
description of this entry point.
3.2.33

Entry Point 33 - Permanent File Log

See Section 7.8.15 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.2.34

Entry Point 34 - Username Specification

See Section 7.8.28 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.2.3.5

(

Entry Point 3.5 - Get Message Parameters

See Section 8.2.21 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.2.36

c

Entry Point 36 - Get Rm Parameters

See Section 8.2.22 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.2.37

Entry Point 37 - Wait For Any No-Wait Operation Complete; Message
Interrupt Or Break Interrupt

See Section 8.2.2 of the MPX-32 Referel1ce Manual for a detailed description of this
entry point.
3.2.38

Entry Point 38 - Disconnect Task From Interrupt

See Section 8.2.13 of the MPX-32 Refer-nce Manual for a detailed description of this
entry point.
3.2.39

Entry Point 39 - Exit From Message Receiver

See Section 8.2.47 of the MPX-32 Refer, nce Manual for a detailed description of this
entry point.

3-93

c;

3.2.40

Entry Point 40 - Parameter Task Activation

See Section 8.2.30 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.41

Entry Point 41 - Get Address Limits

See Section 8.3.7 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.42

Entry Point 42 - DEBUG Link Service

See Section 8.2.51 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.43

Entry Point 43 - Receive Message Link Address

See Section 8.2.31 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.44
"".

Entry Point 44 - Send Message To Specified Task

See Section 8.2.34 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.45

Entry Point 45 - Send Run Request To Specified Task

See Section 8.2.35 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.46

Entry Point 46 - Break/Task Interrupt Link

See Section 8.2.5 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.47

Entry Point 47 - Activate Task Interrupt

See Section 8.2.25 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.48

Entry Point 48 - Exit From Task Interrupt Level

See Sections 8.2.6 and 8.2.45 of the MPX-32 Reference Manual for a detailed description
of this entry point.

·c'' 'I>·
"

3-94

3.2.49

Entry Point 49 - Exit Run Receiver

See Section 8.2.49 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.50

Entry Point 50 - Exit From Message End Action Routine

See Section 8.2.46 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.51

Entry Point 51 - Exit from Run Request End Action Routine

See Section 8.2.48 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.52

Entry Point 52 - Terminate Task Exectution

Functional Description
This entry point performs all normal termination functions required of exiting tasks. All
devices and memory area are deallocated, related table space is erased, and the task's
Dispatch Qu~ue entry is cleared. If a timer or interrupt level is associated with the task,
it will be reactivated, connected, and suspended. Resident tasks are merely suspended.
Entry Conditions
Calling Sequence:
CALM
(or)
M.CALL

X'55'
H.MONS,52

Registers:
None
Exit Conditions
Return Sequence:
Return to EXEC for sweep of Dispatch Queue
Registers:
None

(

,If"",
i{j

External References
System Macros:
M.RTRN
Abort Cases:
None
Output Messages:
None
3.2.53

Entry Point 53 - Activate Task

Functional Description
This entry point is used to activate a task.
caller.

The task assumes the owner name of the

Entry Conditions
Calling Sequence:
CALM

X'52'

(or)

M.CALL

H.MONS,53

R6,R7

1-8 ASCII character left-justified blank filled program name
for which an activation request is to be queued.

Registers:

Exit Conditions
Return Sequence:
M.RTRN
Note: If the task being activated is not in the system, an abort indication is
not given.
Registers:
None

3-96

External References
System Macros
M.RTRN
Abort Codes:
None
Output Messages:
None

3.2.54

Entry Point 54 - Suspend Task Execution

Functional Description
This entry point results in the suspension of the caller or any other task of the same
owner name for the specified number of time units or for an indefinite time period, as
requested. A task suspended for a time interval results in a one-shot timer entry to
resume the task upon time-out of the specified interval. A task suspended for an
indefinite time interval must be resumed through the M.SUME system service (see
MPX-32 Reference Manual Volume 1, Section 8.2.37).
Entry Conditions
Calling Sequence:
CALM

X'54'

(or)

M.CALL

H.MONS,54

R7

zero if suspension for
requested

Registers:
an

indefinite time interval is

(or)
the negative number of time units to elapse before the
caller is resumed
Exit Conditions
Return Sequence:
M.RTRN

3-97

Registers:

o

None
External References
System Macros:
M.RTRN
M.IOFF

M.IONN
M.OPEN

M.CALL

Abort Cases:
None
Output Messages:
None
3.2•.5.5

Entry Point .5.5 - Allocate File or Peripheral Device

Functional Description
This entry point dynamically allocates a peripheral device, a permanent disc file, a
temporary disc file, or a SLO or SSO file, and creates a File Assignment Table (FAT)
entry for the allocated unit and specified logical file code. This entry point may also be
used to equate a new logical file code with an existing logical file code.
Entry Conditions
Calling Sequence:
CALM
(or)
M.CALL

H.MONS,55

Rl

denial return address

R5 byte 0

function code as follows:

X'40'

Registers:

I =assign
2=assign
3=assign
4=assign
5=assign
bytes 1,2,3

file
file
file
file
file

code
code
code
code
code

to
to
to
to
to

a
a
a
a
a

user or system permanent file
system file code
peripheral device
defined file code
system permanent file only

file code to be assigned

o
3-98

(

Exit Conditions
Return Sequence:
M.RTRN

condition code 1 is set in the program status doubleword if
the calling task has read but not write access rights to the
specified permanent file

Registers:
None
(or)
Return Sequence:
M.RTRNA 1

for denial returns if the requested file or device cannot be
allocated.

Registers:
None
(or)

Return Sequence:
M.RTRNA2

condition code 2 is set in the program status doubleword if
the calling task does not have read or write access rights to
the specified permanent file.

Registers:
None
External References
Error Conditions:
None
Output Messages:
None

3-99

3.2.56

Entry Point .56 - Physical Device Inquiry

Functional Description
This entry point returns to the caller physical device information describing the unit to
which a specified logical file code is assigned.
Entry Conditions
Calling Sequence:
CALM

X'42'

(or)

M.CALL

H.MONS,56

R5

three character logical file code for which physical device
information is requested in bytes 1, 2, and 3

Registers:

Exit Conditions
Return Sequence:
M.RTRN

7

R7

zero, if the specified logical file code is unassigned

Registers:

(or)

Return Sequence:
M.RTRN

5,6,7

R5

disc=number of 192-word blocks in file
magnetic tape=reel identifier
all other devices =0

R6

bytes 0,1= maximum number of bytes transferrable to
device
bytes 2,3= device mnemonic (2 ASCII characters)

R7

bits 0-5 = device type code
bits 6-15 = device address
bits 16-23 = system file codes as follows:
o = not a system file
I = SYC file
2 =SGO file
3 = SLO file
4 = SBO file

Registers:

c
I

iii\,

3-100

bits 2lt-31

= disc = number of 192-word blocks per
allocation unit
= magnetic tape = volume number (0 if single
volume)
= all other devices = 0

Note: If the file is a SYC or SGO file that is not open, bits
13 through 15 of R 7 are returned equal to 1 or 2. All other
result bits are not applicable.
External References
System Macros:
M.RTRN
Abort Cases:
None
Output Messages:
None
3.2.57

Entry Point 57 - Disable Message Task Interrupt

See Section 8.2.l5 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.2.58

Entry Point 58 - Enable Message Task Interrupt

See Secton 8.2.18 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.2.59

Entry Point 59 - Get Physical Memory Contents

Function Description
This entry point forces the specified physical address to an 8 word boundary and returns
the memory contents of that 8 word block to the callers 8 word buffer area, which must
be on an 8 word boundary.
.
Entry Conditions
Calling Sequence:
M.CALL

H.MONS,59

3-101

Registers:
Rl

physical address of memory

R2

caller's buffer address, must be on an 8 word boundary

o

Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
External References
Abort Cases:
None
Output Messages:
None
3.2.60

Entry Point 60 - Change Physical Memory Contents

Functional Description
This entry point stores a given value at the physical address specified by the caller.
Entry Conditions
Calling Sequence:
M.CALL

H.MONS,60

Rl

physical address to change

R7

value to be stored

Registers:

Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
3-102

o

(

External References
Abort Cases:
None
Output Messages:
None

3.2.61

Entry Point 61 - Permanent File Log

Functional Description
This entry point provides a log of currently existing permanent files.
Entry Conditions
Calling Sequence:
CALM

X'73'

(or)

f

M.CALL

H.MONS,61

R4

contains a byte-scaled value which specifies the type of lot
to be performed as follows:

Registers:

o
1
2
3
4

specifies
specifies
specifies
specifies
specifies

a single named system or user file
all permanent files
system files only
user files
a single named system file

If R4 contains zero and a user name is associated with the
calling program, an attempt is made to locate the user file
directory entry for the given file name. If unsuccessful, the
system file directory entry is located, if any. If a user name
is not associated with the calling program, the file is
assumed to be a system file.
If R4 contains 3 and the calling program has an associated
user name, that user's files are logged or all files are logged
if the calling program has no associated user name.

R5

contains the address of an eight-word area where the file
directory entry is to be stored

3-10'

Exit Conditions
Return Sequence:
M.RTRN

4,5

R4

If type ='N' or "0" (R4=0 or 4), R4 is destroyed.

R5

Contains zero if type = "N" or "0" (R4=0) and the specified
file could not be located or type = "A", "5", or "U" (R4=1,2
or 3) and all pertinent files have been logged. Otherwise,
R5 is unchanged.

Registers:
If type =
"A", "5", or "U" (R4=1,2 or 3), this entry point is called
repeatedly to obtain all the pertinent file definitions. The
type parameter in R4 is specified in the first call only. R4
is returned containing the address of the next directory
entry to be returned. The value returned in R4 must be
unchanged upon the subsequent call to this service.

External References
System Macros:
M.CALL

M.RTRN

Abort Cases:
MS28

A permanent file log has been requested, but the address
specified for storage of the directory entry is not contained
within the calling task's logical address space.

MS30

Task has attempted to obtain a permanent file log in a
memory-only environment.

Output Messages:
None
3.2.62

Entry Point 62 - Resourcemark Lock

See Section 7.8.22 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.2.63

Entry Point 63 - Resourcemark Unlock

See Section 7.8.23 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3-104

0

3.2.64

Entry Point 64 - Remove RSM Lock on Task Term

Functional Description
This entry point searches the Resourcemark Table for the calling tasks program
number. If found, locks belonging to the task are cleared, the task is dequeued, and the
lock is given to the next task waiting for that resource.
Entry Conditions
Calling Sequence:
M.CALL

H.MONS,64

Registers:
None
Exit Conditions
Return Sequence:
M.RTRN
External References:
H.EXEC,36
Abort Cases:
None
Output Messages:
None
3.2.65

Entry Point 65 - Task CPU Execution Time

See Section 8.2.50 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.2.66

Entry Point 66 - Activate Program at Given Time of Day

See Section 8.2.44 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.2.67

Entry Point 67 - Set Synchronous Task Interrupt

See Section 8.2.39 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3-1 ,-.

3.2.68

Entry Point 68 - Set Asynchronous Task Interrupt

See Section 8.2.3 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.69

Entry Point 69 - Reserved

3.2.70

Entry Point 70 - Date and Time Inquiry

See Section 8.2.9 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.71

Entry Point 71 - Get Device Mnemonic or Type Code

See Section 8.2.12 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.72

Entry Point 72 - Enable User Break Interrupt

See Section 8.2.19 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.73

Entry Point 73 - Disable User Break Interrupt

See Section 8.2.16 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.2.74

Entry Point 99 - SYSGEN Initialization

Functional Description
This entry point is for internal use only and is called during SYSGEN. H.MONS sets up its
Entry Point Table, then returns to SYSGEN.

·C~·'··"

I

3-106

.;

3.3

System Output Module (H.SOUT)

The System Output module consists of entry points for processing listed (SLO) and
punched (SBO) spooled output files. Certain entry points are designed to be called
exclusively by other H.SOUT entry points and are so noted.
System Input Directory (M.SID), System Output Directory (M.SOD) and link file indexes
used as parameters throughout H.SOUT consist of a word with bits 0-7 containing the
entry number of the entry relative to the beginning of the 192-word block that contains
the entry. This value must be shifted left two places to obtain an index relative to the
beginning of the 192-word block. Bits 8-31 contain the block number relative to the
beginning of the M.SID, M.SOD or link files of the 192-word block that contains the
entry.
Entry
Point
H.SOUT,1
H.SOUT,2
H.SOUT,3
H.SOUT,4
H.SOUT,5
H.SOUT,6
H.SOUT,7
H.SOUT,8
H.SOUT,9
H.SOUT,IO
H.SOUT,11
H.SOUT,12
H.SOUT,13
H.SOUT,14
H.SOUT,15
H.SOUT,16
H.SOUT,17
H.SOUT,18
H.SOUT,19
H.SOUT,20
H.SOUT,21
H.SOUT,22
H.SOUT,23
H.SOUT,24
H.SOUT,25
H.SOUT,26

Description
LINK SLO OR SBO FILE TO SYSTEM OUTPUT QUEUE
RESERVED
PROCESS END OF JOB
GET AND DELETE M.SID ENTRY
GET NEXT SLO OR SBO FILE
LOG M.SID OR M.SOD
ALLOCA TE SLO OR SBO FILE
PROCESS DEPRINT COMMAND
PROCESS DEPUNCH COMMAND
ACTIV ATE SYSTEM OUTPUT TASK
DELETE JOB'S SLO OR SBO FILES
DELETE REAL-TIME SLO OR SBO FILE
SYSTEM OUTPUT TASK ABORT PROCESSING
RELINK M.SID OR M.SOD ENTR Y
FIND FREE AND WRITE M.SID OR M.SOD ENTRY
SET SYSTEM OUTPUT TASK'S USER STATUS WORD
GET NEXT LINKED M.SID OR M.SOD ENTRY
GA TE AND READ HEADER
BUILD SYSTEM FAT, FPT AND FCB
LINK M.SID OR M.SOD ENTRY
UNLINK M.SID OR M.SOD ENTRY
SEARCH JOB TABLE
READ SPECIFIED M.SID OR M.SOD ENTRY
BUILD USER DISC FAT AND FPT ENTRIES FOR A DISC FILE
CONVERT DEVICE ADDRESS TO HEXADECIMAL
BATCH TASK EXIT REPORTING

3-107

3.3.1

Entry Point 1 - Link SLO or SSO File To System Output Queue

Functional Description
This entry point adds the definition of a completed SLO or SBO file to a system output
queue and activates a System Output task to process the file.
Entry Conditions
Calling Sequence:
H.SOUT,1

M.CALL
Registers:
R3

Address of FAT

Exit Conditions
Return Sequence:
M.RTRN
Registers:

-

None

~'

External References
Abort Cases:
SMll

Unrecoverable I/O error to the allocation map denial
received from H.FISE,4 on attempted deallocation of file
space.

Output Messages:
None

3.3.2

Entry Point 2 - Reserved

3.3.3

Entry Point 3 - Process End of Job

Functional Description
This entry point initiates output to destination terminal devices of a completed job's
accumulated SLO and SBO files.

3-108

o

(

Entry Conditions
Calling Sequence:
M.CALL

H.SOUT,3

Registers:
R7

ASCII job sequence number

Exit Conditions
Return Sequence:
M.RTRN

i.

Registers:
None
External References
Abort Cases:

(

SM04

A job with the specified job sequence number cannot be
located in the Job Table.

SMll

See H.SOUT,l

Output Messages:
None

3.3."

Entry Point" - Get and Delete M.SID Entry

Functional Description
This entry point unlinks and deletes an entry from the System Input Directory, M.SID.
Entry Conditions
Calling Sequence:
M.CALL

H.SOUT,4

Registers:
R3

memory address at which 12-word unlinked entry is to be stored

o if unlinked entry is not to be

returned

3-10Q

R7

job sequence number in ASCII

()

o to get first M.SID entry
1 to get first M.SID entry that is not sequential
Exit Conditions
Return Sequence:
M.RTRN

7

Registers:
R7

M.SID index of entry found

o if entry was not found
External References
Abort Cases:
None
Output Messages:
None
3.3.'

Entry Point' - Get Next SLO or S80 File

Functional Description
This entry point returns information on the next linked SLO or SBO file defined in the
System Output Directory (M.SOD) or Link File associated with a M.SOD entry.
Entry Conditions
Calling Sequence:
M.CALL

H.SOUT,5

Registers:
Rl

address of FCB to be allocated to the file

o if file is not to be allocated
R6,7

index of previous file processed with R6 containing the M.SOD index
and R7 containing the job link file index if previous was batch

0

~
R6
3-110

M.SOD index and

o to obtain the first SLO or SBO file of a

R7

(

job

(or)

R6

0 if no previous SLO or SBO file was processed

Exit Conditions
Return Sequence:
M.RTRN

1,3,4,5,6,7

Rl

bit 0

1 if no further files remain in M.SOD to be processed

bit 1

1 if the previous file processed was a background file and no
further SLO or SBO files remain to be processed in the job

bit 2

1 if returned file is first file in a batch job

bit 3

1 if returned file is batch

bit 4

1 if returned file is SLO

bit 5

1 if returned file was assigned to a specific device

Registers:

r(
R3

job sequence number in ASCII if batch file is returned

R4,5

real-time task sequence number or job name

R6

M.SOD index of entry found

R7

Link File index if SLO or SBO file is for a batch job

If R 1 is not equal to zero in the call, the file code contained in the FCB

specified in R 1 is returned allocated to the SLO or SBO file.
External References
Abort Cases:
SM05

The previous entry specified in the call could not be located
in M.SOD

Output Messages:
None

3-1l I

3.3.6

Entry Point 6 - Log M.SID or M.SOD

Functional Description
This entry point returns consecutive System Input Directory (M.SID) or System Output
Directory (M.SOD) entries.
Entry Conditions
Calling Sequence:
H.SOUT,6

M.CALL
Registers:
RI

address at which to store 12-word M.SID or M.SOD entry

o if
R5

M.SID or M.SOD entry is not to be returned

bit 29= 1

to return with FISE gated

bit 30= 1

to clear current destination in M.SID or M.SOD entry
corresponding to the returned entry

bit 31

R6

=0

to log M.SID

=1

to log M.SOD

index of M.SID or M.SOD entry returned from previous call

o if first call to this entry point
Exit Conditions
Return Sequence:
M.RTRN

6

Registers:
R6

M.SID or M.SOD index of returned entry

o if

no first or next M.SID or M.SOD entry

If R 1 specifies an address in the cali, the M.SID or M.SOD entry is stored at

the specified address.

External References
Abort Cases:
None
Output Messages:
None
I'

,~

3-112

3.3.7

Entry Point 7 - Allocate SLO or SSO File

Functional Description
This entry point provides the System Output task a means of allocating a previously
output SLO or SBO file.
Entry Conditions
Calling Sequence:
M.CALL

H.SOUT,7

Registers:
Rl

address of FCB containing file code to be allocated to the SLO or SBO
file

R6

M.SOD index of SLO or SBO file

R7

Link File index of SLO or SBO file if file is batch

o if SLO or

SBO file is real-time

Exit Conditions
Return Sequence:
M.RTRN
{or}
M.RTRN

6

Registers:
Unchanged if the specified file exists with the file code in the specified FCB
allocated to the file
(or)
R6

0 if the specified file does not exist

External References
Abort Cases:
SM03

FAT /FPT space is not available

Output Messages:
None

3-11

~,

3.3.8
"I

Entry Point 8 - Process Deprint Command

Functional Description
This entry point processes the operator command DE PRINT.
Entry Conditions
Calling Sequence:
H.SOUT,8

M.CALL
Registers:

R5 bit 31 = 0 for de print current only
= 1 for deprint all files

For deprint current:
R6,7

destination task pseudonym

For deprint all:
R6,7

real-time task sequence number in ASCII
(or)

R6
R7

=0

and

ASCII job sequence number

Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
External References
Abort Cases:
None
Output Messages:
None

3-114

o

3.3.9

Entry Point 9 - Process Depunch Command

Functional Description
This entry point processes the operator command DEPUNCH.
Entry Conditions
Calling Sequence
M.CALL

H.SOUT,9

Registers:
R5 bit 31 = 0 for depunch current only
= 1 for depunch all files

For depunch current:
R6,7

destination task pseudonym

For de punch all:
R6,7

(

I

real-time task sequence number in ASCII
(or)

R6

o

R7

ASCII job sequence number

and

Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
External References
Abort Cases:
None
Output Messages:

c-'

None

3-1.

3.3.10

Entry Point 10 - Activate System Output Task

Functional Description
This entry point activates System Output tasks for other resident system functions.
Entry Conditions
Calling Sequence:
M.CALL

H.SOUT,IO

Registers:
Option I for SYSASSIGN and REPRINT operator commands:
R5 bit 30

=1

R6,7

left justified device type code and four-character device
address in ASCII

Option 2 for H.SOUT,1 and H.SOUT,3:

=I
bit 28 = a
=I

R5 bit 29

bit 27

R6,7

if SLO
if SBO

=a

if batch

=I

if real-time
destination task pseudonym

(or)

R6

a if

no destination task is assigned

Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
External References
Abort cases:
SM12
Output Messages:
None

3-116

Attempt to activate System Output task unsuccessful

3.3.11

Entry Point 11 - Delete Job's SLO or SBO Files

Functional Description
This entry point deletes the disc space occupied by a job's SLO or SBO files and notifies
any System Output task processing the files if that task is not the caller.
Entry Conditions
Calling Sequence:
M.CALL

H.SOUT,ll

Registers:
R6

0 if SLO
non-zero if SBO

R7

job sequence number in ASCII

Exit Conditions
Return Sequence:

(

M.RTRN
Registers:
None
External References
Abort Cases:
SMll

See H.SOUT, 1

Output Messages:
None

3.3.12

Entry Point 12 - Delete Real-Time SLO or SBO File

Functional Description
This entry point deletes the disc space occupied by a real-time SLO or SBO file and
notifies any System Output task processing the file if that task is not the caller.

3-117

Entry Conditions
Calling Sequence:
M.CALL

H.SOUT,12

Registers:
R5

0 if delete only if current destination matches calling task's name

R5

non-zero if delete unconditionally

R6

M.SOD index

Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
External References
Abort Cases:
SMll

See H.SOUT,l

Output Messages:
None
3.3.13

Entry Point 13 - System Output Task Abort Processing

Functional Description
This entry point is called by System Output tasks upon task abort to ensure M.SOD
bookkeeping.
Entry Conditions
Calling Sequence:
M.CALL

H.SOUT,13

Registers:
None

3-118

c

Exit Conditions
(

Return Sequence:
M.RTRN
Registers:
None
External References
Abort Cases:
None
Output Messages:
None

3.3.14

Entry Point 14 - Relink M.SID or M.SOD Entry

Functional Description

(

This entry point relinks a job's M.SID or M.SOD entry as required by a specified priority.
Entry Conditions
Calling Sequence:
M.CALL

H.SOUT,14

Registers:
R4 bit 31

bit 30

=0

if M.SID entry

= 1

if M.SOD entry

=0

if current destination not to be cleared in M.SID or
M.SOD entry

=1

if current destination to be cleared

bit 28 = 0

for a SLO M.SOD entry

= 1

for a SBO M.SOD entry

bit 26 = 0
= 1

if assigned destination not to be changed
if value from RO, I to be stored in M.SID or M.SOD
assigned destination

3-119

R5

new priority of M.SID or M.SOD entry

R7

job sequence number in ASCII of M.SID or M.SOD entry to be
relinked

Exit Conditions
Return Sequence:
M.RTRN
(or)

M.RTRN

7

Registers:
Unchanged if the specified entry was found
(or)

R7

0 if specified entry was not found

External References
Abort Cases:
None
Output Messages:
None
3.3.15

Entry Point 15 - Find Free and Write M.SID or M.SOD Entry

Functional Description
This entry point adds a new entry to M.SID or M.SOD and links the entry at its priority.
Entry Conditions
Calling Sequence:
M.CALL

H.SOUT,15

Registers:
R3

address of II-word M.SID or M.SOD entry

R5 bit 31.

0 for M.SID entry
I for
M.SOD entry
,

3-120

o

Exit Conditions
Return Sequence:
M.RTRN

5

Registers:
R5

0 if free entry was not found
M.SID or M.SOD entry index if free entry was found with the new entry
linked at the priority specified in the furnished entry

External References
Abort Cases:
None
Output Messages:
None

3.3.16

Entry Point 16 - Set System Output Task's User Status Word

Functional Description
This entry point stores the specified value in a System Output task's user status word for
communication with the task.
Entry Conditions
Calling Sequence:
M.CALL

H.SOUT,16

Registers:
R5

value to be set in bits 0-31 of user status word

R6,7

pse.J,Jdonym of System Output task

Exit Conditions
Return Sequence:
M.RTRN

7

Registers:
R7

o if

task is not active

Unchanged if task is active
3-121

'" ,

External References
Abort Cases:
None
Output Messages:
None

3.3.17

Entry Point 17 - Get Next Linked M.SID or M.SOD Entry

Functional Description
This entry point is for internal use by H.SOUT only. No gating is done.
Entry Conditions
Calling Sequence:
H.SOUT,17

M.CALL

The system FAT, FPT, and FCB are assumed to be buH t. A valid M.SID or
M.SOD block is assumed to be contained in the system buffer.

/~""

.

.....:0

Registers:
R3

memory address of M.SID or M.SOD entry returned from previous call
to this entry point

o on first call to this entry point
R4

index to first M.SID or M.SOD entry from header entry on first call to
this entry point

Exit Conditions
Return Sequence:
M.RTRN

3,5

Registers:
R3

memory address of next linked M.SID or M.SOD entry.
contained in system buffer

o if
R5

3-122

Entry is

none

M.SID or M.SOD entry index, if any

o

External References
Abort Cases:
None
Output Messages:
None

3.3.18

Entry Point 18 - Gate and Read Header

Functional Description
This entry point is for internal use by H.SOUT only. No gating is done.
Entry Conditions
Calling Sequence:
M.CALL

H.SOUT,18

Registers:
R5 bit 31

o for

M.SID

1 for M.SOD

Exit Conditions
Return Sequence:
M.RTRN

3,4

(or)
M.RTRN

3,4,5,6,7

Registers:
R3,4

0 if M.SID or M.SOD does not exist
(or)

R3

non-zero if M.SID or M.SOD exists and

R4-7

first four words of M.SID or M.SOD header entry

If M.SID/M.SOD exists, the system buffer contains its first 192-word block.

c\

Return is with FISE gated.

3-123

( ""\:V

External References
,

.,.'

I

Abort Cases:
None
Output Messages:
None
3.3.19

Entry Point 19 - Build System F AT, FPT, and FeB

Functional Description
This entry point is for internal use by H.SOUT only.
Entry Condi tions
Calling Sequence:
M.CALL

H.SOUT,19

Registers:
R4 bit 30

bit 31

1 if R5-7 contain the file's disc space definition

o

o

if M.SID file

1 if M.SOD file

Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
I/O error return addresses are inserted in FCBs to abort as follows on unrecoverable I/O
errors encountered when these FCBs are used.
SM08

Unrecoverable I/O error on file whose disc space definition was
furnished.

SM09

Unrecoverable I/O error on System Input Directory, M.SID.

SMIO

Unrecoverable I/O error on System Output Directory, M.SOD.

o

i
I

I
I
I
,

itI,
"

i,.';.

3-124

External References
Abort Cases:
SMOI

Call specified M.SID, but M.SID is not defined
Master Directory (SMD).

SM02

Call specified M.SOD, but M.SOD is not defined in the SMD.

SMl3

Unrecoverable I/o error to the SMD received from H.FISE,1.

In

the System

Output Messages:
None

3.3.20

Entry Point 20 - Link M.SID or M.SOD Entry

Functional Description
This entry point is for internal use by H.SOUT only. No gating is done.
Entry Conditions
Calling Sequence:

(

M.CALL

H.SOUT,19

Registers:

= 1 to clear current destination field
bit 31 = 0 if M.SID entry
= 1 if M.SOD entry

R4 bit 30

in entry to be linked

bit 26 = 0 if assigned destination not to be changed

= 1 if

value from RO,1 to be stored in assigned destination

R5

priority of entry to be linked

R7

M.SID or M.SOD entry index

The system F AT, FPT and FCB must be built for M.SID/M.SOD prior to calling
this entry point.
Exit Conditions
Return Sequence:
M.RTRN

3-L: .

Registers:
None
External References
Abort Cases:
SM06

Entry linkage has been destroyed on the System Input Directory,
M.SID

SM07

Entry linkage has
Directory, M.SOD

been destroyed on the System Output

Output Messages:
None

3.3.21

Entry Point 21 - Unlink M.SIO or M.SOO Entry

Functional Description
This entry point is for internal use by H.SOUT only. No gating is done.
Entry Conditions
Calling Sequence:
M.CALL

H.SOUT,2l

Registers:
R3

memory address at which l2-word unlinked entry is to be
stored

o if unlinked entry is not to be returned
R4 bit 25
bit 31

1 if unlinked entry is to be cleared to zero

o if

M.SID entry

1 if M.SOO entry
For M.SID entries, the following additional information is contained in R4:
bit 28

o to return sequential or non-sequential entry
1 to return non-sequential entry only.
zero

If set, R6,7 must be

For M.SOD entries in calls where the M.SID or M.SOD index is not specified in
R6, the following additional information is contained in R4:

3-126

C

bit 28

a for

a SLO entry

1 for a SBO entry

R6,7

contain the identification of the entry to be unlinked in one of the
following forms:

R6

M.SID or M.SOD index
(or)

R6

a and

R7

job sequence number in ASCII
(or)

R6

a and

R7

0 to unlink the first M.SID or M.SOD entry

The system FAT, FPT and FCB must be buH t for M.SID/M.SOD prior to calling this entry
point.
Exit Conditions
Return Sequence:
M.RTRN

7

Registers:
R7

the entry's M.SID or M.SOD index if the specified entry was found

a if the specified entry was not found
External References
Abort Cases:
None
Output Messages:
None

3-127

3.3.22

Entry Point 22 - Search Job Table

Functional Description
This entry point locates a specified Job Table entry.
Entry Conditions
Calling Sequence:
H.SOUT,22

M.CALL
Registers:
R7

job sequence number in ASCII

Exit Conditions
Return Sequence:
M.RTRN

3

Registers:
R3

memory address of Job Table entry

o if

Job Table entry

Wcl';

not found

External References
Abort Cases:
None
Output Messages:
None

3.3.23

Entry Point 23 - Read Specified M.SID or M.SOD Entry

Functional Description
This entry point for internal use by H.SOUT only. No gating is done.
Entry Conditions
Calling Sequence:
M.CALL

H.SOUT,23

C·"'·\

I'

3-128

':

Registers:

o for

RO bit 31

M.SID entry

1 for M.SOD entry
M.SID or M.SOD entry index

Rl
(or)

o to read first

M.SID or M.SOD entry (header entry)

Exit Conditions
Return Sequence:
M.RTRN

1

Registers:
Rl

memory address (in System Buffer) of entry

o if specified entry does not exist

(

External References
Abort Cases:
None
Output Messages:
None

3.3.24

Entry Point 24 - Build User Disc FAT and FPT Entries for a Disc File

Functional Description
This entry point simulates the allocation function by building FAT and FPT entries for a
disc file.
Entry Conditions
Calling Sequence:
H.SOUT,2f.t.

M.CALL
Registers:
Rf.t. bit 0

o

bit 1

o

if permanent file
1 if temporary file
if blocked file
1 if unblocked file
3-12C

R4

file code in bytes 1-3

R5,6,7

disc space definition

Exit Conditions
Return Sequence:
M.RTRN

7

Registers:
R7

non-zero if blocking buffer and FAT space is available

o if blocking buffer or FAT space is unavailable
External References
Abort Cases:
None
Output Messages:
None
3.3.25

Entry Point 25 - Convert Device Address to Hexadecimal

Functional Description
This entry point is for internal use by H.SOUT only.
Entry Conditions
Calling Sequence:
M.CALL

H.SOUT,25

Registers:
R2

UDT entry address

Exit Conditions
Return Sequence:
M.RTRN

4,5

Registers:
R4

two-character device mnemonic in bytes 3 and 4 in ASCII

R5

four-character device address in ASCII

,

I~
I~

3-130

(-

External References
Abort Cases:
None
Output Messages:
None

3.3.26

Entry Point 26 - Batch Task Exit Reporting

Functional Description
This entry point is used by the Executive for reporting batch task exits, aborts, and
deletes.
Entry Conditions
Calling Sequence:
M.CALL

H.SOUT,26

Registers:
None
Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
External References
Abort Cases:
None
Output Messages:
None

3.3.27

Entry Point 99 - SYSGEN Initialization

Functional Description
This entry point is for internal use only and is called during SYSGEN. H.SOUT sets up its
Entry Point Table, then returns to SYSGEN.
3-131

Input/Output Control System (H.IOeS)

3.4

Entry Point Summary
ENTRY POINT
H.IOCS,l
H.IOCS,2
H.IOCS,3
H.IOCS,4
H.IOCS,5
H.IOCS,6
H.IOCS,7
H.IOCS,8
H.IOCS,9
H.IOCS,10
H.IOCS,ll
H.IOCS,12
H.IOCS,13
H.IOCS,14.
H.IOCS,15
H.IOCS,16
H.IOCS,17
H.IOCS,18
H.IOCS,19
H.IOCS,20
H.IOCS,21
H.IOCS,22
H.IOCS,23
H.IOCS,24
H.IOCS,25
H.IOCS,26
H.IOCS,27
H.IOCS,28
H.IOCS,29
H.IOCS,30
H.IOCS,31
H.IOCS,32
H.IOCS,33
H.IOCS,34
H.IOCS,35
H.IOCS,36
H.IOCS,37
H.IOCS,38
H.IOCS,39
H.IOCS,40
H.IOCS,41
H.IOCS,42
H.IOCS,43
H.IOCS,99

3-132

DESCRIPTION

OPEN FILE
REWIND FILE
READ RECORD
WRITE RECORD
WRITE END OF FILE
RESERVED FOR INTERNAL USE BY H.IOCS
ADV ANCE RECORD
ADV ANCE FILE
BACKSPACE RECORD
EXECUTE CHANNEL PROGRAM
RESERVED FOR INTERNAL USE BY H.IOCS
RESERVE CHANNEL
RELEASE CHANNEL
SYSTEM CONSOLE TYPE
SUSPEND USER UNTIL I/O COMPLETE
RESERVED FOR INTERNAL USE BY H.IOCS
GET MEMORY POOL BUFFER
RESERVED FOR INTERNAL USE BY. H.IOCS
BACKSPACE FILE
UPSPACE
ERASE OR PUNCH TRAILER
EJECT /PURGE ROUTINE
CLOSE FILE
RESER VE FHD PORT
WAIT
CONSOLE WAIT
RELEASE FHD PORT
ABSOLUTIZE TCW FOR CLASS 'E' DEVICES
HANDLER ENTRY POINT 5 AND 2 INTERFACE
ADJUST TCW FORMAT TO BYTES
ADJUST TCW FORMAT TO HALFWORDS
ADJUST TCW FORMAT TO WORDS
RESERVED FOR INTERNAL USE BY H.IOCS
NO-WAIT I/O END ACTION RETURN
RESERVED FOR INTERNAL USE BY H.IOCS
RESTART I/O
VIR TUAL ADDRESS VALIDA TE
KILL ALL OUTSTANDING I/O
SPECIAL DISCONTIGUOUS MEMORY CHECK
BUILD lOCO'S FOR EXTENDED I/O READS AND WRITES
RESERVED FOR INTERNAL USE BY H.IOCS
RESERVED FOR INTERNAL USE BY H.IOCS
RESERVED FOR INTERNAL USE BY H.IOCS
SYSGEN INITIALIZATION

(

Subroutine Summary
SUBROUTINE
S.IOCSI
S.IOCS2
S.IOCS3
S.IOCS4
S.IOCS5
S.IOCS6
S.IOCS7
S.IOCS8
S.IOCS9
S.IOCSIO
S.IOCSII
S.IOCS12
S.IOCS13
S.IOCS14
S.IOCS15
S.IOCS16
S.IOCS17
S.IOCS18
S.IOCS19
S.IOCS20
S.IOCS21
S.IOCS22
S.IOCS23
S.IOCS24
S.IOCS25
S.IOCS26
S.IOCS27
S.IOCS28
S.IOCS29
S.IOCS30
S.IOCS31
S.IOCS32
S.lOCS33
S.IOCS34

3.4.1

DESCRIPTION

POST I/O PROCESSING
PERFORM DEVICE TESTING
UNLINK I/O QUEUE FROM CDT
HALF-ASCII TO FULL ASCII CONVERSION
PERIPHERAL TIME OUT
BUFFER TO BUFFER MOVE ROUTINE (BYTE)
BUFFER TO BUFFER MOVE ROUTINE (WORD)
BUFFER TO BUFFER MOVE ROUTINE (DOUBLEWORD)
I/O HANDLER ABORT
DELETE I/O QUEUE AND OS BUFFER
GPMC DEVICE STATUS
STORE 10CD'S FOR EXTENDED I/O
ALLOCA TE I/O QUEUE AND BUFFER SPACE
RESERVED
DELETE I/O QUEUE AND OS BUFFER
FIND FPT
LINK FAT
INITIALIZE BLOCKING BUFFER
GET SYC/SGO SPACE DEFINITION
GET DATA ADDRESS AND TRANSFER COUNT
READ LOGICAL BLOCKED RECORD
REPOR T BLOCKED I/o ERROR
POST PROCESS NON-DEVICE ACCESS I/O
RESTORE FCB PARAMETERS FROM 10Q
SAVE FCB PARAMETERS IN SPAD
WRITE LOGICAL BLOCKED RECORD
PERFORM IMPLICIT OPEN
INITIALIZE IOQ ENTRY
REPORT I/O COMPLETE
ADVANCELOG~ALBLOCKEDRECORD

MARK UNITS OFFLINE
RESTORE FCB PARAMETERS FROM SPAD
UPDATE DISC FAT
ALLOCA TE VARIABLE IOQ ENTRY

Entry Point 1 - Open File

See Section 7.8.9 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.4.2

Entry Point 2 - Rewind File

See Section 7.8.25 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3-1:' "'

3.4.3

Entry Point 3 - Read Record

See Section 7.8.18 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.4.4

Entry Point 4 - Write Record

See Section 7.8.31 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.4.5

Entry Point 5 - Write End Of File

See Section 7.8.30 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.4.6

Entry Point 6 - Reserved for internal use by H.IOCS

Write blocked End of File - this routine called internally by Entry Point 5.

3.4.7

Entry Point 7 - Advance Record

See Section 7.8.12 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.4.8

""-.,,,/

Entry Point 8 - Advance File

See Section 7.8.12 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.4.9

Entry Point 9 - Backspace Record

See Section 7.8.2 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.4.10

Entry Point 10 - Execute Channel Program

See Section 7.8.34 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.4.11

Entry Point 11 - Reserved (lUlused)

3.4.12

Entry Point 12 - Reserve Channel

See Section 7.8.24 of the MPX-32 Reference Manual for a detailed description of this
entry point.

c
,:i

3-134

(

3.4.13

Entry Point 13 - Release Channel Reservation

See Section 7.8.21 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.4.14

Entry Point 14 - OPCOM Console Type

See Section 7.8.26 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.4.15

Entry Point 15 - Suspend User Until I/O Complete

Functional Description
Suspend checks the operation in progress bit in the FCB. If the bit is set, suspend calls
the executive to wait until I/O completes. If the bit is reset, suspend performs a
M.RTRN immediately.
Entry Conditions
Calling Sequence:
M.CALL

H.IOCS,15

Registers:
RI

FCB address
NOTE

The FCB address must be the address of the same FCB used to initiate the
transfer on which the I/O suspend is being made.
Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
Abort Cases:
None
Output Messages:
None
3-1"3 s

()
.."

3.4.16

Entry Point 16 - Reserved (mused)

3.4.17

Entry Point 17 - Get Memory Pool Buffer

Functional Description
This entry point is used to obtain chunks of memory from the system memory pool. The

maximum amount of core to allocate is 192 words.
before returning to the calling task.

All core can be optionally zeroed

If core is not available, the calling task will be suspended (via H.EXEC,6) until available.

Note that all core returned has the attribute that its virtual address is the same as its
absolute address.
Entry Conditions
Calling Sequence:
M.CALL

H.IOCS,l7

Registers:
RO

Bit 0, set if zeroing of core desired

RO

Bit 0, reset if no zeroing desired

R7

number of words to allocate

Exit Conditions
Return Sequence:
M.RTRN

R6,R7

Registers:
R6

start virtual (same as absolute) address

R7

actual number of words in buffer (may be more than requestep amount)

Abort Cases:
None
Output Messages:
None

3-136

o

(

3.4.18

Entry Point 18 - Reserved (mused)

3.4.19

Entry Point 19 - Backspace File

See Section 7.8.2 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.4.20

Entry Point 20 - Upspace

See Section 7.8.27 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.4.21

Entry Point 21 - Erase Or Punch Trailer

Functional Description
The volume record is written if BOT on multi-volume magnetic tape; and ERASE/WRITE
EOF performed if BOT on multi-volume magnetic tape.
Erase, punch trailer is not applicable to blocked or system files (i.e., SYC, SGO, SLO,
SBO).
Entry Conditions
Calling Sequence:
M.CALL

H.IOCS,21

(or)

SVC

1,X'3E'

Registers:
Rl

FCB address

Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
Abort Cases:
1012

File not opened in write mode.

3-137

1013

Illegal operation on system file.

Output Messages:
MOUNT /DISMOUNT messages if EOT on multi-volume magnetic tape
3.4.22

Entry Point 22 - Eject/Purge Routine

Functional Description
This entry point performs the following functions:
If the file is blocked and output active, a purge is issued. Return is made to

the user.
Writes volume record if BOT on multi-volume magnetic tape.
Performs ERASE/WRITE EOF if EOT on multi-volume magnetic tape.
Eject is not applicable to system files (i.e., SYC, SGO, SLO, SBO).
Entry Conditions
Calling Sequence:
M.CALL

H.IOCS,22

Registers:
Rl

FCB address

Exit ConCfitions
Return Sequence:
M.RTRN
Registers:
None
Abort Cases:
1013

Illegal operation on system file.

Output Messages:
MOUNT/DISMOUNT messages if EOT on multi-volume magnetic tape
3.4.23

Entry Point 23 - Close File

See Section 7.8.3 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3-138

(

3.4.24

Entry Point 24 - Reserve Dual Ported Disc/Reserve FHD Port

See Sections 7.8.20 and 7.8.36 of the MPX-32 Reference Manual for a detailed
description of this entry point.

3.4.25

Entry Point 25 - Wait I/o

See Section 7.8.29 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.4.26

Entry Point 26 - System Console Wait

See Section 7.8.5 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.4.27

Entry Point 27 - Release Dual Ported Disc/Release FHD Port

See Sections 7.8.19 and 7.8.35 of the MPX-32 Reference Manual for a detailed
description of this entry point.

3.4.28

Entry Point 28 - Absolutize TCW for Class 'E' Devices

Functional Description
Absolutize transfer control word for class 'E' devices.
Entry Conditions
Calling Sequence:
M.CALL

H.IOCS,28

Registers:
Rl

FCB address

R6

TCW associated with class IE' device with address virtual

Exit Conditions
Return Sequence:
M.RTRN

R6

Registers:
R6

TCW associated
absolutized

with

class

IE'

device

with

address

3-139

(

Il_ >~

Abort Cases:
TCW address not within class lEI memory.

1047

Output Messages:
None
3.4.29

Entry Point 29 - Handler Entry Point 5 and 2 Interface

Functional Description
This entry point performs the following functions:
Places I/O request in a prioritized queue.
Branches to appropriate executive entry point to report type of I/O initiated.
For Wait I/O, branches to I/O post processing; for No-Wait I/O, returns
immediately to the user.
Entry Conditions
Calling Sequence:
M.CALL

H.IOCS,29

used internally to H.IOCS by blocked I/O
routines

BU

H29

used by internal H.IOCS routines to
complete normal I/O processing

Registers:
Rl

FCB address

Exit Conditions
Return Sequence:
See Return Sequence for S.IOCSI (Section 3.4.45).
3.4.30

Entry Point 30 - Adjust TCW Format to Bytes

Functional Description
This entry point adjusts the transfer control word (TCW) to bytes. The adjusted quantity
is clamped so as to not exceed the maximum quantity specified.

I
I

i
,j\

3-140

Entry Conditions
Calling Sequence:
M.CALL

H.IOCS,30

Registers:
Rl

FCB address

R6

TCW

R7

maximum quantity

Exit Conditions
Return Sequence:
M.RTRN

4,6

Registers:
R4

adjusted quantity

R6

adjusted TCW

Abort Cases:
1024

Boundary error.

Output Messages:
None

3.4.31

Entry Point 31 - Adjust TCW Format to Halfwords

Functional Description
This entry point adjusts the transfer control word (TCW) to halfwords.
quantity is clamped so as not to exceed the maximum quantity specified.

The adjusted

Entry Conditions
Calling Sequence:
M.CALL

H.IOCS,31

Registers:
RI

FCB address

R6

TCW

R7

maximum quantity
3-141

Exit Conditions

-,

Return Sequence:
M.RTRN

4,6

Registers:
R4

adjusted quantity

R6

adjusted TCW

Abort Cases:
1024

Boundary error.

Output Messages:
None
3.4.32

Entry Point 32 - Adjust TCW Format to Words

Functional Description
f""\ ,

I

This entry point adjusts the transfer control word (TCW) to words. The adjusted quantity
is clamped so as not to exceed the maximum quantity specified.
Entry Conditions
Calling Sequence:
M.CALL

H.IOCS,32

Registers:
Rl

FCB address

R6

TCW

R7

maximum quantity

Exit Conditions
Return Sequence:
M.RTRN

4,6

Registers:

3-142

R4

adjusted quantity

R6

adjusted TCW

~

Abort Cases:
1024

Boundary error.

Output Messages:
None
3.4.33

Entry Point 33 - Reserved for internal use by H.IOCS

Read blocked record service, called internally by Entry Point 3 - read record.
3.4.34

Entry Point 34 - No Wait I/O End Action Return

See Section 7.8.32 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.4.35

Entry Point 35 - Reserved for internal use by H.IOCS.

Write blocked record service, called internally by Entry Point 4 - write record.
3.4.36

Entry Point 36 - Restart I/o

Functional Description
This entry point is used to restart I/O for devices where no-wait I/O incurred error or
wait I/O retry aborted.
It is also used to restart I/O after an I/O channel is released back to the system.
Entry Conditions
Calling Sequence:
M.CALL

H.IOCS,36

Registers:

RO

I/O queue address (from CDT.FIOQ)

Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
Abort Cases:
None
(-"

Output Messages:
None

3-14 :,

3.4.37

Entry Point 37 - Virtual Address Validate

Functional Description

()

This entry point verifies that a given virtual start address through an optional transfer
length is within a user's legal limits of program execution.
Entry Conditions
Calling Sequence:
M.CALL

H.IOCS,37

Registers:
R6 bits 0-11
bits 12-31

ignored
virtual start address

R7 bits 0-15
bits 16-31

ignored
transfer length in bytes

Exit Conditions
Return Sequence:
M.RTRN

6

Registers:
R6

virtual start address (same as on entry)
(or)

o (transfer outside legal limits)
Abort Cases:
None
Output Messages:
None
3.4.38

Entry Point 38 - Kill All Outstanding I/o

Functional Description
This entry point is used to terminate all outstanding I/O for the current executing task.
Peripheral time-out is forced for pendhg I/O whereas queued I/O is removed from the
CDT string. Appropriate status will be set to indicate either device time-out or "I/O
killed" respectively.

3-144

0

(

Entry Conditions
Calling Sequence:
M.CALL

H.IOCS,38

Registers:
None
Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
Abort Cases:
None

:(

Output Messages:
None

3.4.39

Entry Point 39 - Discontiguous E-Memory Data Address Check

Funct_ional Description
This entry point ensures that a given virtual data transfer is within E-memory and will
not cross discontiguous memory blocks base on an optional transfer length.
Entry Conditions
Calling Sequence:
M:CALL

H.IOCS,39

Registers:
R6

bit 0-11
bits 12-31

ignored
virtual start address

R7

bit 0-15
bits 16-31

ignored
transfer length in bytes

Exit Conditions
(---

Return Sequence:
M.RTRN

0

3- \1, •.

Registers:
RO

0, if transfer address are out of E-memory, or cross discontiguous
memory blocks
(or)

RO

not equal to 0, if transfer address are within contiguous E-memory
Note:

RO=I,

Operating system
(virtual =absolute)

portion

of

E-memory

RO=2,

Not in operating system portion of E-memory
(virtual =absolute)

Abort Cases:
None
Output Messages:
None

3.4.40

El'!try Point 40 - Build lOCO's for Extended I/O Reads and Writes

Functional Description
Breaks down lOCO into two or more transfers and sets data chaining bit in lOCO if
discontiguous.
Absolutes lOCO address.
Stores lOCO's into lOCO buffer within I/O queue and increments lOCO buffer address as
required.
Entry Conditions
Calling Sequences:
M.CALL

H.IOCS,40

R3

I/O queue address

R6

lOCO word 1 with command only (Bits 8-31 = 0).

R7

lOCO word 2 with flags only (Bits 8-31 = 0).

Registers:

Note: The 20-bit virtual data start address is in cell IOQ.FCT2 and the
adjusted transfer count is in cell IOO.FCT3.

I,
I~

'3-146

(

Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
Abort Cases:
1046

Dynamic storage space for lOCO's within IOQ exhausted.

Output Messages:
None

3.4.41

Entry Point 41 - Reserved (unused)

3.4.42

Entry Point 42 - Reserved (unused)

3.4.43

Entry Point 43 - Reserved (unused)

3.4.44

Entry Point 99 - SYSGEN Initialization

Functional Description
Performs any required H.IOCS initialization at SYSGEN time.
If no extended I/O devices are configured, all associated H.IOCS entry points are

overlaid. (Note: Because of this feature, only extended I/O routines are allowed at the
end of H.IOCS.)
Entry Conditions
Calling Sequence:
Branch to H.IOCS initialization
Entry Point "H.IOCS. I"
Registers:
R5

HA T address of GPMC device handler if applicable (e.g.,
H.ASMP)

R6

UDT address, if applicable

3-147

R7
.,..,

bits 0-7

hardware priority level, if applicable

bits 8-31

COT address, if applicable

.r"",

\_-~

Exit Conditions
Return Sequence:
H.IOCS

M.XIR

(Special SYSGEN Initialization Termination Macro)
NOTE

no extended I/O devices are configured, the
initialization entry pointer is updated with a new pointer
such that extended I/O related H.IOCS entry points are
overlaid.

If

Registers:
Same as on entry.
Abort Cases:
None
Output Messages:

o

None
3.4.45

Subroutine S.IOCSI - Post I/O Processing

Functional Description
This routine is entered via a branch and link directly after a wait I/O request completes
or indirectly as a Task Interrupt service when a no-wait I/O request completes.
If wait I/o completed with errors, applicable error messages are output and I/o retry
attempted unless error processing is inhibited. If error processing is not applicable, an

abort message is output or the error return address is taken. Note that wait I/O would
take the error return in FCB word 6.
For the no-wait I/O requests or wait I/O requests, appropriate data conversions and
buffer transfers from system buffers to user buffers are performed. Any system buffer
which had been allocated and the I/o queue itself are deallocated.
If no-wait I/O completed with errors, the no wait error end action address in word 14- of
the FCB is honored if present. The user must return via H.IOCS,34- to exit his error end
action service. If no error end action address is present, status information is posted in
the FCB and a return is made to the user. Note that if an abort of this task had been
issued, the end action routine will not be called anp a status bit will be set to indicate
this.

3-14-8

c

For wait I/O with errors for which retry is applicable yet the operator aborted, all
system buffers and the I/O queue are deallocated and the I/O queue is unlinked from the
CDT.
For no-wait I/O that completes without error, the no-wait normal end action address in
word 13 of the FCB will be honored if present. The user must return via H.IOCS,34 to
exit his normal end action service. Note that if an abort had been issued for this task,
the end action routine will not be called and a status bit will be set to indicate this.
Wait I/o that completes without error always returns back one word beyond the original
point of call.
Entry Conditions
Calling Sequence:
BL

S.IOCSI

(wait I/O)

(or)
LPSD (I/O queue + 4W)

(no-wait I/O)

Registers:
R3

I/O queue address

Exit Conditions
Return Sequence:
M.RTRN

{normal wait I/O completion; or error
processing inhibited.

(or)
MRTNA REGISTER

(error return, wait I/O) (address from FCe,
word 6)

(or)
Xl
BL

FCB ADDRESS
ERROR-END-ACTION

(no-wait, complete with error) (address
from FCB.NWER)
(Note: User exits via H.IOCS,34)

(or)
Xl
BL

FCB ADDRESS
NORMAL-END-ACTION(no-wait, complete without error) (address
from FCB.NWOK)
(Note: User exits via H.IOCS,34)

M.CALL H.EXEC,12

(normal no-wait I/O completion; or error
process.ing inhibited; or no end-action
addresses specified)
3-

1',·)

1 -

.

(Note:
Post I/O processing will be reinitiated when I/O completes)
wait I/O retry:
(or)

M.CALL H.EXEC,l
H.EXEC,2
H.EXEC,3

wait I/O interactive input
wait I/O terminal output
wait I/O (not interactive input or terminal
output)
(Note:
Post I/O processing will be reinitiated when I/O completes)

Registers:
None unless noted.
Abort Cases:
1021

Unrecoverable I/O error.
.~.

Output Messages:
*DTCHSA INOP: R,A?
where:
DT

device type code (e.g., LP)

CH

channel number

SA

sub address

I/O ERR DEVICE: DTCHSA STATUS (XXCCDDDD)=ZZZZZZZZ LFC KKK
where:
DT

device type code

CH

channel number

SA

subaddress

ZZZZZZZZ actual status returned
KKK

logical file code associated with I/O

c:'
3-150

(

3.4.46

Subroutine S.IOCS2 - Perform Device Testing

Functional Description
This routine performs device testing for applicable class IE' devices. TD 8000, TO 4000
and TO 2000 test level commands are issued and status returned in the I/o queue.
Entry Conditions
Calling Sequence:
BL

S.IOCS2

RI

I/o queue address

R2

COT address

R3

address of test device instructions (TO 8000 followed by TO 4000
and TO 2000)

Registers:

Exit Conditions

(

Return Sequence:
TRSW

RO (or) TRSW

Rl,R2,R3

undisturbed

R6,R7

destroyed

R7

Registers:

Abort Cases:
None
Output Messages:
None
3.4.47

Subroutine S.IOCS3 - Unlink I/o Queue from COT

Functional Oescription
This routine unlinks the just complete I/o queue entry from the COT active I/O queue
string.
Entry Conditions

(

Calling Sequence:
BL

S.IOCS3

3-151

Registers:
R2

I/o queue address

R3

COT address

Exit Conditions
Return Sequence:
TRSW

RO

RI

COT address

R2,R3

undisturbed

R4,R6,R7

destroyed

Registers:

Abort Cases:
None
Output Messages:

0I~.. \

None
3.4.48

Subroutine S.IOCS4 - Half ASCn to Full ASCn Conversion

Functional Description
This routine takes half ASCII input and translates each byte into full ASCII code. The
full ASCII data is put directly back into the half ASCII buffer.
Entry Conditions
Calling Sequence:

BL

S.IOCS4

R2

address of half ASCII buffer

R4

negative number of bytes to conyert

Registers:

Exit Conditions
Return Sequence:
TRSW

3-152

RO

o

Registers:
R2,R3,R4,R6

destroyed

Abort Cases:
None
Output Messages:
None
3.4.49

Subroutine S.IOCS5 - Peripheral Time Out

Functional Description
This routine performs peripheral time out checking for all devices with I/O outstanding.
This routine is entered every timer unit and will branch to device handler entry point 4
(Lost Interrupt) for processing if the time limit is exceeded.
Entry Conditions
Calling Sequence:

BL

S.IOCS5

Registers:
None
Exit Conditions
Return Sequence:
TRSW

RO

Registers:
Rl,R2,R3,R4,R5,R6,R7destroyed
Abort Cases:
None
Output Messages:
None

3- '''i_

3.4.50

Subroutine S.I0CS6 - Buffer to Buffer Move Routine (Byte)

Functional Description
This routine moves the contents of one buffer to another buffer, one byte at a time.
Entry Conditions
Calling Sequence:
BL

S.IOCS6

RI

from buffer byte address

R2

to buffer byte address

R4

negative number of bytes to move

Registers:

Exit Conditions
Return Sequence:
TRSW

o

RO

Registers:
RI,R2,R4,R6

destroyed

Abort Cases:
None
Output Messages:
None
3.4.51

Subroutine S.IOCS7 - Buffer to Buffer Move Routine (Word)

Functional Description
This routine moves the contents of one buffer to another buffer, one word at a time.
Entry Conditions
Calling Sequence:
BL

S.IOCS7

o
3-154

Registers:
Rl

from buffer word address

R2

to buffer word address

R4

negative number of words to move

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
R 1,R2,R4,R6

destroyed

Abort Cases:
None
Output Messages:
None
3.4.52

Subroutine S.IOCS8 - Buffer to Buffer Move Routine (Doubleword)

Functional Description
This routine moves the contents of one buffer to another buffer, one doubleword at a
time.
Entry Conditions
Calling Sequence:

BL

S.IOCS8

Rl

from buffer doubleword address

R2

to buffer doubleword address

R4

negative number of doublewords to move

Registers:

Exit Conditions

c

Return Sequence:
TRSW

RO

3-155

Registers:
R I,R2,R4,R6

destroyed

Abort Cases:
None
Output Messages:
None
3.4.53

Subroutine S.IOCS9 - I/O Handler Abort

Functional Description
This routine is used by all I/O handlers which encounter fatal input parameter errors
during op-code (entry point 5) processing.
Entry Conditions
Calling Sequence:
BL

. S.IOCS9

Registers:
Rl

File Control Block Address

R5

ASCII Abort Code

Exit Conditions
Return Sequence:
M.CALL
3.4.54

H.MONS,28(abort with extended message)

Subroutine S.IOCSIO -Delete I/O Queue and OS Buffer

Functional Description
This routine deallocates the I/O queue and any system memory pool core areas used
during I/O.
Entry Conditions
Calling Sequence:
BL

3-156

S.IOCSI0

c

Registers:
R3

I/o Queue address

Exit Conditions
Return Sequence:
TRSW

R6

Registers:
Rl

FCB address

RO,R2,R3,R4,R5,R6,R7destroyed
Abort Cases:
None
Output Messages:
None
3.4.55

Subroutine S.IOCS 11 - GPMC Device Status

Functional Description
This routine performs device status testing for GPMC devices. A test device command is
issued and status is returned.
As of MPX-32 Release 1.4, this subroutine is no longer physically a part of IOCS. It is
loaded as a separate module only if the user SYSGENs using pre-1.4 GPMC support (i.e.,
MUX=QGPMC). For details on GPMC support, see Chapter 13.
Entry Conditions
Calling Sequence:
BL

S.IOCSII

RO

Return address

R2

IOQ entry address

R3

Device context block

R4

Status mask

Registers:

(~.

3-157

Exit Conditions

,

Return Sequence:
TRSW

"

'(,,"

,

RO

Registers:
RO,Rl,R2,R3,R4same as on entry
R5

address of COT

R6

specific TO - TIO command

R7

device status in right halfword

Abort Cases:
None
Output Messages:
None

3.4.56

Subroutine S.IOCS12 - Store lOCO's for Extended I/O

Functional Description
This routine dynamically stores lOCO's into the I/O queue as required during extended
I/O request processing.
Entry Conditions
Calling Sequence:
BL

S.IOCS12

RO

Return address

R3

I/O queue address

R6

lOCO most significant word

R7

lOCO least significant word

Registers:

Exit Conditions
Return Sequence:
TRSW

3-158

•

RO

~

~"'IiL.>I

Registers:

{

RO,Rl,R2,R3,R4,R6,R7same as on entry
R5

last dynamic lOCO location

Abort Cases:
1038

Dynamic storage space for lOCO's within 10Q exhausted.

Output Messages:
None
3.4.57

Subroutine S.IOCS13 - Allocate I/o Queue and Buffer Space

Functional Description
This routine must be called by entry point 5 of device handlers processing operation
codes for which I/O queue entries are required (i.e., those operations which result in a
device access).
Entry Conditions

(

Calling Sequence:

BL

S.IOCSl3

Rl

FCB address

R2

FAT address

R3

COT address

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
Unchanged
Abort Cases:
1033

Unprivileged user data buffer not in user's area.

Output Messages:
None.
3-159

I
I

Subroutine 5.IOCS14 - Reserved
Subroutine S.IOCSU - Delete I/o Queue and OS Buffer

£"'.
U'

Functional Description
This routine deallocates the I/o queue and any system memory pool core areas used
during I/O. It is called from the handlers as a result of an OPCOM KILL request.
Entry Conditions
Calling Sequence:
BL

S.IOCS15

R3

I/o queue address

Registers:

Exit Conditions
Return Sequence:
TRSW

R6

Registers:
Rl

10Q address

RO,R2,R3,R4,R5,R6,R7destroyed
Abort Cases:
None.
Output Messages:
None.
3.4.60

Subroutine S.IOCS16 - Find FPT

Functional Description
This routine is used to find a FPT entry in the user's TSA with a logical file code which
matches that in the user's FCB.
Entry Conditions
Calling Sequence:
BL

3-160

S.IOCSI6

c

(--

Registers:
Rl

FCB address

R3

TSA address

R4

X'OOFFFFFF' (mask value)

R5

lfc from FCB

Exit Conditions
Return Sequence:
TRSW RO

no matching lfc

RO+IW

match and FPT open

RO+2W

match and FPT closed

Registers:

3.4.61

Rl

FCB address

R3

FPT address

R5

lfc from FPT

R2,R6,R7

destroyed

Subroutine S.IOCS 17 - Link F AT

Functional Description
This routine is used to link a FAT to a FCB and a FCB to a FPT.
Entry Conditions
Calling Sequence:
BL

S.IOCS17

R1

FCB address

R3

FPT address

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

3-16 i

Registers:

3.4.62

Rl,R3

unchanged

R2

FAT address

R4

destroyed

Subroutine S.IOCS18 - Initialize Blocking Buffer

Functional Description
This routine is used to initialize a blocking buffer.
Entry Conditions
Calling Sequence:
BL

S.IOCS18

Rl

FCB address

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

R3,R4

destroyed

Registers:

3.4.63

Subroutine S.IOCS19 - Get SYC/SGO Space Definition

Functional Description
This routine is used to retrieve the address of a SYC or SGO file space definition.
Entry Conditions
Calling Sequence:
BL

S.IOCS19

Rlj.

FAT system file code

Registers:

I

3-162

~;,

Exit Conditions

(

Return Sequence:
TRSW

RO

R2

address of SYC!SGO file space definition

R5,R7

destroyed

Registers:

3.4.64

Subroutine S.IOCS20 - Get Data Address and Transfer Count

Functional Description
This routine extracts the user's data address and transfer count from an 8 or 16 word
FCB. The extracted transfer count is always in bytes and the extracted data address is
always a pure address (no F and C bits). The transfer count is clamped to the maximum
value for the device or transfer type.
Entry Conditions
Calling Sequence:

{

BL

S.IOCS20

Rl

FCB address

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

R3,R4

destroyed

R6

data address

R7

transfer count

Registers:

3.4.6.5

Subroutine S.IOCS21 - Read Logical Blocked Record

Functional Description
This routine performs a read of a logical blocked record, i.e., it transfers a logical
blocked record from a blocking buffer to a user's data area.

3-163

o

Entry Conditions
Calling Sequence:
BL

S.IOCS21

R1

FCB address

R2

next read/write address

R3

blocking buffer address

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
FCB address

Rl

R2,R3,R4,R5,R6,R7destroyed
3.-4.66

Subroutine S.IOCS22 - Report Blocked I/o Error

Functional Description
This routine is used to report an error on a blocked I/o operation.
Entry Conditions
Calling Sequence:
BL

S.IOCS22

R1

FCB address

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

R1

FCB address

R3,R4

destroyed

Registers:

3-164

o

3.4.67

Subroutine S.IOCS23 - Post Process Non-Device Access I/o

Functional Description
This routine post processes non-device access I/O, i.e., logical blocked I/O requests and
other I/O requests for which no device access occurs.
Entry Conditions
Calling Sequence:
BU

S.IOCS23

Rl

FCB address

Registers:

Exit Conditions
Return Sequence:
None
Registers:
None
3.4.63

Subroutine S.IOCS24 - Restore FCB Parameters from IOQ

Functional Description
This routine restores original FCB parameters following a physical I/O done on behalf of
a user who requested blocked I/O.
Entry Conditions
Calling Sequence:

BL

S.IOCS24

R1

FCB address

R3

I/O queue address

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

Rl

FCB address

R2

address of saved parameters

R3

I/O queue address

Registers:

(

3-165

users or iginal opcode

R4-

3.4.69

R7

special status byte

R6

destroyed

Subroutine S.IOCS2.5 - Save FCB Parameters in Spad

Functional Description
This routine saves original FCB parameters and inserts new FCB parameters prior to a
physical I/o to be done on behalf of a user who requested blocked I/O.
Entry Conditions
Calling Sequence:
BL

S.IOCS2.5

R1

FCB address

R3

blocking buffer address

R7

special status byte

Registers:

Spad Cells Used:

"I, 2, 3

Exit Conditions
Return Sequence:
TRSW

RO

R2

address of saved parameters

R4-,R6

destroyed

Registers:

3.4.70

Subroutine S.IOCS26 - Write Logical Blocked Record

Functional Description
This routine performs a write of a logical blocked record, i.e., it transfers a logical
blocked record from the users data area to a blocking buffer.
Entry Conditions
Calling Sequence:
BL

S.IOCS26

Rl

FCB address

R2

blocking buffer address

Registers:

3-166

'U
'"

,':

(

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
Rl

FCB address

R2,R3,R4,R5,R6,R7destroyed

3.4.71

Subroutine S.IOCS27 - Perform Implicit Open

Functional Description
This routine performs an implicit open of a logical file code on behalf of the calling IOCS
entry point. If the open service is called (i.e., file not already open), the open is
performed in the WAIT mode. If the file opened is the null device, a return is made
directly to the user.
Entry Conditions
Calling Sequence:

«

BL

S.IOCS27

Rl

FCB address

Registers:

Spad Cell Used:

2

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
Rl

FCB address

R2

FAT address

R3,R4,R5,R6,R7

3.4.72

destroyed

Subroutine S.IOCS28 - Initialize IOQ Entry

Functional Description
This routine initializes the IOQ parameters from the FCB, CDT, UDT and FAT. It also
sets the program number into the IOQ and sets FCB.IOQA.

3-1::' -

Entry Conditions
Calling Sequence:

BL

S.IOCS28

Rl

FCB address (or TCPB address)

R2

F AT address (or zero)

R3

CDT address

R6

IOQ address

R7

number of words extra in this 10Q

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
RI,R2,R3,R6
R4,R7
3.4.73

same as on entry (masked with X'FFFFF')

-.

destroyed

Subroutine S.IOCS29 - Report I/O Complete

Functional Description
This routine is called by handlers to report

I/O completion.

Entry Conditions
Calling Sequence:

BL

S.IOCS29

Rl

program number

R2

10Q address

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
R2,R6

IOQ address

RO,R I,R 3,R4,R5,R7destroyed
Note: IOQ.RTN is used to save the return address before calling S.EXECl, S.EXEC2,
S.EXEC3 or S.EXEC4.

3-168

c

3.4.74

Subroutine S.IOCS30 - Advance Logical Blocked Record

Functional Description
This routine performs an advance logical blocked record; no transfer is required, only
next read/write address is updated.
Entry Conditions
Calling Sequence:

BL

S.IOCS30

Rl

FCB address

R2

current logical record

R3

blocking buffer address

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

Rl

FCB address

R6

destroyed

Registers:

3.4.75

Subroutine S.IOCS31 - Mark Units Offline

Functional Description
This routine marks a controller, and all the units connected to the controller, offline.
Entry Conditions
Calling Sequence:

BL

S.IOCS3l

Rl

COT address

Registers:

5- '

Exit Conditions
Retu.rn Sequence:
TRSW'

RO

RI

COT address

R3,R7

destroyed

Registers:

3.4.76

Subroutine S.IOCS32 - Restore FCB Parameters from Spad

Functional Description
This routine restores original FCB parameters from spad subsequent to physical
operations performed on behalf of a user who requested blocked I/o operations.
Entry Conditions
Calling Sequence:

BL

S.IOCS32

Rl

FCB address

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

R2

address of saved parameters

R4,R6

destroyed

Registers:

3.4.77

Subroutine S.IOCS33 - Update Disc FAT

Functional Description
This routine is called by disc handler programs to update the users FAT prior to
performing a disc file operation which would move the disc file relative block address in
the forward or backward direction. Checks are made to determine whether the operation
would cause the current disc address to move outside the file boundaries.

3-170

c

(

Entry Conditions
Calling Sequence:
Bl

S.IOCS33

•

Registers:
Rl

FCB address

R2

FAT address

R7

blocks spanned in operation (+ if forward, - if backward)

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
R6 .
0 if operation within file bounds.
. causes EOM/EOF or BOM.

Not equal to 0 if operation

R7

logical disc address (block number) for current operation

R3,R4,R6

destroyed

Subroutine S.IOCS34 - Allocate Variable IOQ Entry

3.4.78

Functional Description
This routine is called by entry point 5 of device handlers processing opcodes for which
I/O queue entries are required (i.e., opcodes resulting in a device access). It allows the
handler to specify the amount of additional space it wants added to the end of the IOQ
entry for creation of the actual IOCl chain.
Note: The IOQ may be extended by an additional 3 words if blocked I/O is being done.
For F-class devices, this routine:
o

allocates and initializes an 10Q entry.

For D- and E-class devices, this routine:

(

o

allocates and initializes an 10Q entry.

o

allocates an OS I/o buffer if necessary.

o

builds a TCW if necessary.

3-1 :"

1

'I
I
I

Entry Conditions
Calling Sequence:
BL

S.IOCS34

R1

FCB address

R7

number of words to extend the 10Q by

Registers:

Note: Enters S.IOCS13 for completion of 10Q building.
Spad Cells Used:

12, 13, 15-22

Exit Conditions
Return Sequence:
TRSW

RO

R2

destroyed

Registers:

o
3-172

(

3.5

Resource Allocator (H.ALOC)

Entry Point Summary

ENTRY POINT
H.ALOC,l
H.ALOC,2
H.ALOC,3
H.ALOC,4
H.ALOC,5
H.ALOC,6
H.ALOC,7
H.ALOC,8
H.ALOC,9
H.ALOC,lO
H.ALOC,11
H.ALOC,12
H.ALOC,13
H.ALOC,14
H.ALOC,15
H.ALOC,16
H.ALOC,17
H.ALOC,18
H.ALOC,19
H.ALOC,20
H.ALOC,99

SVC
NUMBER
N/A
N/A
N/A
N/A
N/A
N/A
N/A
X'69'
X'6A'
X'67'
X'68'
X'71'
X'72'
X'79'
N/A
N/A
N/A
N/A
X'lF'
N/A
N/A

DESCRIPTION
CONSTRUCT TSA AND DQE
TASK ACTIVATION PROCESSING
TASK EXIT PROCESSING
ALLOCA TE MEMORY
DEALLOCA TE MEMORY
ALLOCATE FILE/DEVICE
DEALLOCA TE FILE/DEVICE
GET DYNAMIC EXTENDED INDEXED DATA SPACE
FREE DYNAMIC EXTENDED INDEXED DATA SPACE
GET DYNAMIC TASK EXECUTION SPACE
FREE DYNAMIC TASK EXECUTION SPACE
SHARE MEMORY WITH ANOTHER TASK
GET SHARED MEMORY (INCLUDE)
FREE SHARED MEMORY (EXCLUDE)
GET E CLASS I/O MAP BLOCK
FREE E CLASS I/O MAP BLOCK
ALLOCA TE FILE BY SPACE DEFINITION
SHARE CSECT MEMORY WITH ANOTHER TASK
UNLOCK AND DEQUEUE SHARED MEMORY
DEALLOCA TE MEMORY DUE TO SWAPPING
SYSGEN INITIALIZATION

N/ A implies reserved for internal use by MPX-32

(
3-173

Subroutine Summary
SUBROUTINE

DESCRIPTION

S.ALOCI
S.ALOC2
S.ALOC3
S.ALOC4
S.ALOC5
S.ALOC6
S.ALOC7
S.ALOC8
S.ALOC9
S.ALOCIO
S.ALOCII
S.ALOC12
S.ALOC13
S.ALOC14
S.ALOC15
S.ALOC16
S.ALOC17
S.ALOC18
S.ALOCI9
S.ALOC20
S.ALOC21
S.ALOC22
S.AlOC23
S.ALOC24
S.ALOC25
S.ALOC26
S.ALOC27
S.ALOC28
S.ALOC29
S.ALOC30
S.ALOC31

READ AND VERIFY PREAMBLE
DEALLOCA TE TSA AND DQE
WRITE PROTECTION IMAGE TO RAM (32/7x only)
MAGNETIC TAPE DISMOUNT MESSAGE
MAGNETIC TAPE MOUNT MESSAGE
DEALLOCATE ALL PERIPHERAL DEVICES
TEST FOR DEVICE ON SYSTEM
GET FIRST MATCHING UDT
GET NEXT MATCHING UDT
ALLOCATE DISC FILE BY SPACE DEFINITION
ALLOCA TE BLOCKING BUFFER
LOCA TE FPT IF A T ADDRESS FOR ALLOCATED LFC
LOCATE SHARED MEMORY TABLE ENTRY
ALLOCA TE FPT IFA T
ALLOCA TE SHARED MEMORY SW AP FILE
DELETE SWAP FILE SPACE
UPDA TE MAP SEGMENT DESCRIPTOR COUNT IN DQE
GET SWAP FILE SPACE
REMAP USERS ADDRESS SPACE
VALIDA TE BUFFER ADDRESS
ALLOCA TE MEMORY POOL BUFFER
RELEASE MEMORY POOL BUFFER
COMPRESS FILE NAME
UNCOMPRESS FILE NAME
SET ANY BIT IN MEMORY
CLEAR ANY BIT IN MEMORY
TEST ANY BIT IN MEMORY
DEALLOCA TE DEBUGGER MEMORY
LOAD DEBUG OVERLAY
CREATE A PROTECTION IMAGE
UPDA TE TASK PROTECTION IMAGE DUE TO INCREASE IN
EXECUTION SPACE (32/7x only)
UPDA TE SHARED MEMORY PROTECTION IMAGE
UPDA TE T ASK PROTECTION IMAGE DUE TO DECREASE IN
EXECUTION SPACE (32/7x only)

S.ALOC32
S.ALOC33

'~

3-174

Entry Point 1 - Construct TSA and DQE

Functional Description
This entry point is called by H.MONS,I.5 and H.MONS,40 to initialize a primitive TSA and
DQE for task activation. This is ac:hieved in the following manner:

Determine if task is already in execution. If not•••
Allocate a free DQE from the free list and attac:h it to the preactivation list.
Build a primitive DQE.
.
Merge in the load module information table.
Check for privileged execution and allocate swap file.
Allocate one map block of memory and logically locate it in the first invalid
map block found in the parent's TSA in which to build the c:hild's TSA.
Construct a primitive TSA for the child.
Update T.REGS and T.REGP to point to the second phase of activation,
H.ALOC,2.
.
Un map the child from the parent's logical space but leave the child linked to
the preactivation state.
Special Cases:
,,AI1Y load module" starting with the letters 'SYSG' will be treated as the
SYSGEN task which requires special loading.
Entry Conditions

Calling Sequence:
M.CALL

H.ALOC,I

Registers:
RI

address of parameter block, or zero if none

R6,R7

name of specified load module

Exit Conditions
Return Sequence:
M.RTRN R6,R7
Registers:
R6

o if valid request, non-zero if invalid

R7

task DQE address of new or existing task

I
Change 1
3-175

0,
,

Entry Point 2 - Task Activation Processing

Punctional Description
This entry point is entered on behalf of a new task being activated. It· performs all
necessary functions to complete the introduction of the new tas~ to the system. This is
accomplished by the following sequence:

I·

Get resource requirements from the load module.
Merge 'any extra requirements from the parameter block.
Verify all ASSIGN I's, ASSIGN2's, ASSIGN3's and ASSIGN4's.
Determine complete TSA' size and initialize-remaining TSA data.
Determine total task size and initialize bases.
Create a protection image (32/7x only).
Allocate all memory needed and distribute to proper locations in the task.
Create a protection image (CONCEPT/32 ~mly).
Mark all PAT's and F'PT's free to allocate.
Allocate permanent fUes, static partitions and spooled files.
Allocate temporary disc files and other· peripherals.
Move the preamble into scratchpad and call H.LODR,1 (see Section 8.1.4).
Include task debugger if requested.
Dispatch the task.

Special Cases:
The common error code return paths for the Allocator are found in this entry

point.

.

Entry Conditions

CallIng Sequence:
Entered by pop of TSA stack bull t

~y

H.ALOC,I

Registers:
All zero
Exit Conditions
Return Sequence:
Dispatch to transfer address or to H.MONS,20 with abort code in R,S

o
Change 1
3-176

'I','

(

3.5.3

Entry Point 3 - Task Exit Processing

Functional Description
This entry point is called by S.EXEC18. The abort code, if any, will be output. The task
clean-up includes the deallocation of all peripherals, disc space, memory and memory
pool. Finally the TSA and DQE are deallocated and a return is made to the scheduler via
S.EXEC20.
Entry Conditions
Calling Sequence:
M.CALL

H.ALOC,3

Registers:
None
Exit Conditions
Return Sequence:
BU

(

S.EXEC20 (CPU scheduler routine)

Entry Point 4 - Allocate Memory

3.5.4

Functional Description
This entry point is called by H.ALOC entry points 1, 2, 8, 10, and 15. It is also called by
the Swapper. Its function is to allocate the memory required for the calling task. The
memory is returned in the form of map image descriptors (MIDL) and memory attributes
(MEML), one MIDL and one MEML per map block. Swappable map counts ih the DQE are
incremented as needed based on the MEML information. The entries in the memory
allocation table are updated to reflect allocation.
Special Cases:
1.

For CONCEPT /32 machines, the protection granules remain as they were
before the call.

2.

For 32/7x machines, the protection image is unchanged by this entry point.

Entry Conditions
Calling Sequence:
M.CALL

H.ALOC,4

Registers:
Rl

address of MIDL (half word bounded)

3-177

R5

right half word = number of map blocks required
left half word =

1 = E memory

o

2= H memory
3= S memory
R3

address of MEML (HW bounded)

Exit Conditions
Return Sequence:
M.RTRN or M.RTRN R5
Registers:
If the request cannot be fully satisfied, no memory is allocated by this
service.

CC I is set if unable to allocate all required memory and R5 contains the
number of map blocks which cannot be allocated now.
CCI is reset if request is successful and R5 is unchanged.
Physical memory definitions in MIDL. Memory attributes returned in MEML.
DQE.CME, DQE.CMH, and DQE.CMS incremented for each swappable map.
3.5.5

Entry Point 5 - Deallocate Memory

Functional Description
This entry point is called by H.ALOC entry points 3, 9, 11, and 14. Its function is to
deallocate memory as directed by the map image descriptor list (MIDL) and the memory
attribute list (MEML) which are required inputs to this routine. Memory can be of mixed
types and of mixed swappable characteristics. The swappable count in the DQE is
updated according to the information in the MEML.
Special Cases:
1.

For 32/7x machines, the protection image is not changed.

2.

For CONCEPT/32 machines, the protection granules are set to show a
protected map hole exists.

Entry Conditions

o

Calling Sequence:
M.CALL
3-178

H.ALOC,5

(

Registers:
RI

address of MIDL (halfword bounded)

R5

number of map blocks to deallocate

R3

address of MEML (HW bounded)

Exit Conditions
Return Sequence:
M.RTRN
Registers:
DQE.CME, DQE.CMH, and DQE.CMS are decremented for each swappable
map.
3•.5.6

Entry Point 6 - Allocate File/Device

Functional Description

f

This entry point is called by H.ALOC,2 or by H.MONS,21. It performs all necessary steps
to allocate a file based on a 3 word RRS entry. The FAT, FPT and if necessary, blocking
buffer, are all allocated and initialized in this service.
Entry Conditions
Calling Sequence:
M.CALL

H.ALOC,6

Registers:
Rl

address of 3 word RRS entry

Exit Conditions
Return Sequence:
M.RTRN Rl or M.RTRN RI,R6,R7
Registers:
RI

o if

cel

set if allocation denied
R6 = scan mask
R 7 = device requirements mask

allocation was unsuccessful. Otherwise unchanged.

3-179

If allocation is denied for a permanent file, R7 will contain

one of the following error codes:
1 if file is exclusively locked
2 if FL T is full
set if allocation error
R6 = error code
R7 = 0

CC2

Error Conditions:
R6= 1
=2
=3
=4
=5
=6
=7
=8
=9
= 10
=11
=12
=13
=14
=15
=16
=17

-

permanent file non-existent
illegal file password specified
no FAT /FPT space available
no blocking buffer space available
shared memory table entry not found
invalid shared memory table password specified
dynamic common specified in ASSIGN 1
unrecoverable I/O error to SMD
SGO assignment specified by terminal task
no 'UTI file code exists for terminal task
invalid RRS entry
LFC in ASSIGN4 non-existent
assigned device not on system
device in use by requesting task
SGO or SYC assignment by real-time task
common memory conflicts with allocated task
duplicate LFC allocation attempted

3.5.7 Entry Point 7 - Deallocate File/Device
Functional Description
This entry point is called by H.ALOC,2 and 3 and by H.MONS,41. The FAT associated
with the lfc is deallocated unless an active ASSIGN4 is vectored through it. In that case,
only the FPT is deallocated. For any deallocated peripheral a call is made to the
scheduler via H.EXEC,15 to allow reallocation. File space is deallocated by calling
H.FISE,4.
Entry Conditions
Calling Sequence:
M.CALL

H.ALOC,7

Registers:
R5

right justified ASCII logical file code

C·
\

3-180

i\

,:!

(

Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
Error Conditions
CC 1

3.5.8

=SET - unrecoverable I/o error to SMD
Entry Point 8 - Get Dynamic Extended Indexed Data Space

See Section 8.3.8 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.5.9

Entry Point 9 - Free Dynamic Extended Indexed Data Space

See Section -8.3.5 of the MPX-32 Reference Manual for a detailed description of this
entry point.

:(
3.5.10

Entry Point 10 - Get Dynamic Task Execution Space

See Section 8.3.9 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.5.11

Entry Point 11 - Free Dynamic Task Execution Space

See Section 8.3.6 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.5.12

Entry Point 12 - Share Memory With Another Task

See Section 8.3.11 of the MPX-32 Reference Manual for a detailed description of this
entry point.

3.5.13

Entry Point 13 - Get Shared Memory (INCLUDE)

See Section 8.3.10 of the MPX-32 Reference Manual for a detailed description of this
entry point.

(.

3-18 :

3.'.14

Entry Point 14 - Free Shared Memory (EXCLUDE)

See Section 8.3.3 of the MPX-32 Reference Manual for a detailed description of this
entry point.

o

Entry Point IS - Get 'E' Class I/O Map 8lock
Functional Description
This entry point is called by H.IOCS on behalf of a user who has requested a transfer of
greater than 192 words to an 'E' class device, but has not specified a contiguous 'E' class
memory buffer. An 'E' class map block will be allocated and mapped through logical
address X'FOOOO'. It is understood that H.IOCS will use X'FOOOO' through X'F3FFF' to
buffer no-wait requests, and will use X'F4000' through X'F7FFF' to buffer wait requests
for I/O. If the map block is unavailable the user will be suspended by H.EXEC,5.
Special Cases:
'E' class devices are not supported by the CONCEPT /32 machines. Therefore,
this routine is not needed for CONCEPT /32 support.
Entry Conditions
Calling Sequence:
M.CALL

H.ALOC,15

Registers:
None
Exit Conditions
Return Sequence:
M.RTRN

R6

Registers:
R6

physical address of 8K buffer

CC 1

set if map block already allocated

3.'.16

Entry Point 16 - Free 'E' Class I/O Map 8lock

Functional Description
This entry point is called by H.IOCS on behalf of a user whose 'E' class I/O has completed
and been moved.
Special Cases:
'E' class devices are not supported by the CONCEPT/32 machines. Therefore,
this routine is not needed for CONCEPT /32 support.

3-182

0

Entry Conditions
Calling Sequence:
M.CALL

H.ALOC,16

Registers:
None
Exit Conditions
Return Sequence:
M.RTRN
Registers:
None

3.5.17
{_

Entry Point 17 - Allocate Disc File By Space Definition

Functional Description
This entry point allocates a FAT /FPT for the space definition provided by the caller. If
bit zero of R4 is set, the system FAT /FPT is allocated. If bit zero of R5 is set, a
blocking buffer is allocated.
Entry Conditions
Calling Sequence:
M.CALL

H.ALOC,17

Registers:
R4

LFC (bit 0 set for system FAT /FPT)

R5

UDT index (bit 0 set for blocking buffer)

R6

sector address

R7

number of sectors

Exit Conditions
Return Sequence:
M.RTRN

Rl, R2, R3, R5

3-13-:,

o

Registers:
Rl

UDT address

R2

FPT address

R3

FAT address

R5

blocking buffer address if required

CCI

set, no FAT /FPT space

CC2

set, no blocking buffer space

3.5.18

Entry Point 18 - Share CSECT Memory with Another Task

Functional Description
This entry point is called only by H.ALOC,2. It is a subset of H.ALOC,12.
3.5.19

Entry Point 19 - Unlock and Dequeue Shared Memory

See Section 8.3.12 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.5.20

:"-.iii

Entry Point 20 - Deallocate Memory Due to Swapping

Functional Description
This entry point is called only by the Swapper. Its function is to deallocate memory as
directed by the map image descriptor list (MIDL) and the memory attribute list (MEML)
which are required inputs to this routine. Memory can be of mixed types but all map
blocks are swappable. The swappable count in the DQE is updated according to the
information in the MEML.
Special Cases:
1.

For 32/7x machines, the protection image is not changed.

2.

For CONCEPT/32 machines, the protection granules are not changed.

Entry Conditions
Calling Sequence:
M.CALL

H•.A.LOC,20

Registers:
Rl
3-184

address of MIDL (halfword bounded)

o

(
Note:

R3

address of MEML (half word bounded)

R5

number of map blocks to deallocate

DQE.CME, DQE.CMH and DQE.CMS are decremented for each swappable
map. Protection registers are unchanged. MEML and MIDL reflect maps
deallocated.

Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
3.5.21

Entry Point 99 - SYSGEN Initialization

Functional Description
This entry point performs any necessary SYSGEN initialization.
(

Entry Conditions
Calling Sequence:

BL

*HAT+18W

Regis.ters:
None
Exit Conditions
Return Sequence:
TRSW
3.5.22

RO

Subroutine S.ALOCI - Read and Verify Preamble

Functional Description
This subroutine is used to read the preamble of a load module into the sysem buffer. The
doubleword filename is compared with the name specified in the preamble. Error
conditions are returned. This subroutine is used for activation and overlay functions.

(J

Entry Condition
Calling Sequence:

BL

S.ALOCl

Registers:
left-justified filename of load module

R6,R7

Words 6 and 7 of scratchpad are assumed equal to R6 and R7
respecti vel y
Exit Conditions
Return Sequence:
RO

TRSW
Registers:
R6,R7

unchanged if valid load module, else indeterminate

R5

zero if valid, else
2
3
4
6
7

file not found
file is password protected
invalid preamble
I/o error on SMD
I/O error on file

RI

address of preamble (T.BBUFA)

R2

current register pointer (T.REGP)

R3

address of TSA

Note:
3.5.23

if
if
if
if
if

This routine uses word 29 of scratchpad.

Subroutine S.ALOC2 - Deallocate TSA and DQE

Functional Description
This subroutine deallocates all TSA map blocks and updates the memory allocation
table. It also clears the tasks DQE and relinks it to the DQE free list.
Entry Conditions
Calling Sequence:

BL

3-186

S.ALOC2

/r'''',
'"';11>/

(

Registers:
None
Exit Conditions
Return Sequence:
Return to S.EXEC20
Registers:
None
3.5.24

Subroutine S.ALOC3 - Write Protection Image to RAM (32/7x only)

Functional Description
This subroutine is for use on a SYSTEMS 32/7x computer and it writes the protection
image contained in T.PROT into the hardware protection registers. If the task is
privileged, this subroutine is not executed.
Entry Conditions
(

Calling Sequence:

BL

S.ALOC3

Registers:
None
Exit Conditions
Return Sequence:
TRSW

RO

RO,R2

destroyed

Registers:

Note: Words 16-23 of scratch pad are used.
3.5.25

Subroutine S.ALOC4 - Magnetic Tape Dismount Message

Functional Description
This subroutine is used to issue a dismount message to the operators console.
operator response is required.

No

3-187

fl,
V

Entry Conditions
Calling Sequence:
S.ALOC4

BL
Registers:
R3

FAT address

Exit Conditions
Return Sequence
TRSW

RO

Registers:
RI,R2,R4,R5,R6,R7

destroyed

R3

unchanged

3•.5.26 Subroutine S.ALOC.5 - Magnetic Tape Momt Message
Functional Description
This subroutine is used to issue a mount message in the following format to the operators
console. A response is required by the operator.
{ !ASKt ,taskname,taskno MOUNT reel VOL volume ON devmnc
Jobno

f

,

.

DEV'R'A'H?~I devmn~ 'J

R densltyr)

A
H

\
)

Entry Conditions
Calling Sequence:
BL

S.ALOC5

Registers:
R1

FCB address

Exit Conditions
Return Sequence
TRSW

RO

Registers:
RI

3-188

unchanged

o
~

,

,

(

R2,R3,R4,R5,R6,R7

destroyed

CCI

set if abort requested, otherwise CC I =0

Abort Conditions:
If abort response input from operator, the requesting task is aborted with an MS25.

3.5.27

Subroutine S.ALOC6 - Deallocate All Peripheral Devices

Functional Description
A scan is made of the FPT IF ATIS and the non-disc devices are deallocated. Devices are
made available and FPT IF AT and blocking buffer entries freed. Peripherals made
available are reported to the executive via H.EXEC, 13.
Entry Conditions
Calling Sequence:

BL

S.ALOC6

Registers:
None required
Exit Conditions
Return Sequence:
TRSW

RO

Registers:

3.5.28

R2,R3,R4,R5,R6

destroyed

RI,R7

unchanged

Subroutine S.ALOC7 - Test For Device On System

Functional Description
This subroutine builds a scan mask and requirements mask from a user provided ASSIGN3
type RRS. System tables are checked to see if the specified device is in the system.
Entry Conditions
Calling Sequence:

(

BL

S.ALOC7

3-18 Ci

i,t~
);

Registers:
RI.

address of 3 word RRS entry

Exit Conditions
Return Sequence:
TRSW

RO

Registers:

3.5.29

RI,R2

unchanged

R3

address of first matching UDT

R4,R5

destroyed

R6

scan mask

R7

requirements mask

CCl

set if device not found

Subroutine S.ALOC8 - Get First Matching UOT

Functional Description
This subroutine sets up a scan of the UDT's for a specified mask and request. The first
matching entry is returned. No allocation is made of the device. Other matching entries
are obtained by calling S.ALOC9.
Entry Conditions
Calling Sequence:

BL

S.ALOC8

R4

scan mask

R7

requirements mask

Registers:

Exit Conditions
Return Sequence:
TRSW

3-190

RO

(

Registers:
RI,R2,R4,R7

unchanged

CCI

set, matching UDT not found

CC2

set if user has all of requested devices previously
allocated

The following registers should not be modified if S.ALOC9 is to be called to
get next matcing device:

3.5.30

R3

UDT address

R5

internal status register

R6

loop count

Subroutine S.ALOC9 - Get Next Matching UOT

Functional Description
This subroutine is called after calling S.ALOC8 to get first matching UDT entry. A
forward scan is made for unshared devices first. A reverse scan is then made for a
shared or unshared matching device. Registers 3, 5 and 6 should not be modified between
calls. No device allocation is made.
Entry Conditions
Calling Sequence:

BL

S.ALOC9

Registers:
R3

current UDT address (from previous call)

R4

scan mask

R5

internal status register (from previous call)

R6

loop count (from previous call)

R7

requirements mask

Exit Conditions
Return Sequence:
TRSW

RO

3-19 !

(',i
"""

Registers:

3.5.31

Rl,R2,R4,R7

unchanged

CCl

set, matching UOT not found

CC2
R3

set if user has all requested devices previously
allocated
UOT address

R5

internal status register, if required

R6

loop count, if required

Subroutine S.ALOCI0 - Allocate Disc File By Space Definition

Functional Description
This subroutine allocates a FAT /FPT for the space definition provided by the caller. If
bit zero of R4 is set, the system FAT /FPT is allocated. If bit zero of R5 is set, a
blocking buffer is allocated.
Entry Conditions
Calling Sequence:

BL

S.ALOCIO

R4

LFC (bit 0 set for system FAT/FPT)

R5

UOT index (bit 0 set for blocking buffer)

R6

sector address

R7

number of sectors

Registers:

Exit Conditions
Return Sequence:

3-192

Rl

UOT address

R2

FPT address

R3

FAT address

R5

blocking buffer address if required

R4,R6,R7

destroyed

o

(

Error Conditions:
CCI

set, no FAT /FPT space

CC2

set, no blocking buffer space

Note:
3•.5.32

Uses word 31 of scratch pad for storage.

Subroutine S.ALOC 11 - Allocate Blocking Buffer

Functional Description
This subroutine allocates a free blocking buffer for the caller. The control word in the
blocking buffer is cleared and the buffer empty bit is set. The buffer is marked
allocated. The blocking buffer address is inserted in the FAT and the blocking buffer
active bit is set in the status word. If the FAT address provided is the system FAT, the
system blocking buffer is unconditionally allocated. CCI is set if no blocking buffer is
available.
Entry Conditions
Calling Sequence:
BL

I(

S.ALOCll

Registers:

R3

FAT address

Exit Conditions
Return Sequence:
TRSW

RO

Registers:

3•.5.33

R3

FAT address

R5

blocking buffer address (0 if no allocation)

R4

destroyed

CCI

set if no blocking buffer found (R5=O)

Subroutine S.ALOC12 - Locate FPT/FAT Address For Allocated LFC

Functional Description
This subroutine scans the allocated FPT entries for a matching LFC. The FPT and FAT
addresses are returned for the matching LFC. If bit zero of register 5 is set on entry,
the system FPT and FAT addresses are returned. No comparison check is made for the
LFC in the system FPT.
3-193

Entry Conditions
Calling Sequence:

BL

S.ALOC12

Registers:
LFC to match (bit 0 set indicates get system FPT IF AT
addresses)

R5
Exit Conditions
Return Sequence:
TRSW

RO

Registers:

3.5.34

R2'

FPT address (0 if no match)

R3

FAT address (0 if no match)

R5

LFC with byte 0 cleared

R4-

word address mask (X'FFFFFF')

CC1

set no match found (R2,R3 zeroed)

Subroutine S.ALOCI3 - Locate Shared Memory Table Entry

Functional Description
This subroutine is used to find the first entry in the Shared Memory Table which contains
the name and task number specified by the caller. It is also used to find a free entry.
Entry Conditions
Calling Sequence:

BL

S.ALOC13

R4-,R5

owner name

R6,R7

name of shared memory partition or zero to locate a free entry

Registers:

(or)
R4-

3-194-

task activation number

(

R5

o

R6,R7

name of shared memory partition or zero to locate a free entry

Exit Conditions
Return Sequence:
TRSW

RO

Registers:

3.5.35

Rl

address of shared memory table entry or 0 if not found

R4

destroyed

R5,R6,R7

unchanged

Subroutine S.ALOC14 - Allocate FPT/FAT

Functional Description
This subroutine will locate an available FPT and associated FAT. The FPT is marked
unavailable and the LFC and FAT address inserted. The associated FAT is marked
unavailable and cleared. If bit zero of R5 is set on entry, the system FPT/FAT is
unconditionally allocated.
Entry Conditions
Calling Sequence:

BL

S.ALOC14

Registers:
R5

logical file code to allocate (bit 0 set indicates system
FPT IF AT be allocated)

Exit Conditions
Return Sequence:
TRSW

RO

Registers:

(

R2

FPT address (0 on no space available)

R3

FAT address (0 on no space available)

R5

LFC with byte 0 cleared

R4

destroyed
3-195

I~,

3.5.36

'V

CCI

set, allocation denied

CC2

set, matching LFC exists (R2=FPT ADDR, R3=FAT ADDR)

Subroutine S.ALOC15 - Allocate Shared Memory Swap File

Functional Description
This subroutine allocates temporary disc space for use as a swap file. The shared
memory table is updated to reflect the space information for the swap file. If a swap
file is successfully allocated, the swappable bit in the shared memory table is set.
Entry Conditions
Calling Sequence:

BL

S.ALOC15

Registers:
address of shared memory table

RI
Exit Conditions
Return Sequence:
TRSW

RO

Registers:
(

RI

address of shared memory table

R3

unused

R2,R4,R5,R6,R7

destroyed

SMT updated with swap file information
Error Conditions:
CCI
3.5.37

set, unrecoverable I/o error to SMD

Subroutine S.ALOC16 - Delete Swap File Space

Functional Description
This subroutine deallocates temporary disc space used as a swap file.
updated to reflect the new swap file status.

3-196

The DQE is

(

Entry Conditions
Calling Sequence:
BL

S.ALOC16

Registers:
None
Exit Conditions
Return Sequence:
TRSW

RO

Registers:
RO

error code, if any

R3

DQE address (C.CURR)

R4,R5,R6,R7

destroyed

Error Conditions
CCI
3.5.38

set, unrecoverable I/O error to SMD

Subroutine S.ALOC 17 - Update Map Segment Descriptor Count In DQE

Functional Description
This subroutine updates byte 0 of DQE.MSD, which is the number of map image
descriptors required to map the CPIX. The count is determined by examining TSA
variables T.EBUF, T.DSOR, T.DSSZ, T.CSOR, T.CSSZ, T.MPOR, T.MPSZ, T.EAOR and
T.EASZ.
Entry Conditions
Calling Sequence:
BL

S.ALOC1?

Registers:
None
Exit Conditions
Return Sequence:
TRSW

RO

3-197

Registers:
R3

TSA address

R2

DQE address

R4

number of map blocks in CPIX

DQE.MSD (byte 0) is updated by contents of R4

3.5.39

Subroutine S.ALOC18 - Get Swap File Space

Functional Description
This subroutine allocates temporary disc space for use as a swap file. The device
denoted by SYSGEN as the swap device is tested first for allocation of the file. If a
failure occurs, allocation will be attempted on any device that has the same
classification as the swap device. If a swap file cannot be allocated for the calling task,
the task is marked unswappable and allowed to be dispatched. The DQE is updated to
reflect the space definition of the swap file.
Entry Conditions
Calling Sequence:

BL

S.ALOC18

Register~:

R5

number of map blocks that are to be swappable

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
RO

error code, if any

R3

DQE address

Rl,R2,R4,R5,R6,R7

destroyed

Error Conditions
CCI

set, unable to allocate file. DQE.FCRS is set to show
task is forced to be unswappable.

,i'/,

3-198

3. 5. If.O

(

Subroutine S.ALOC 19 - Remap Users Address Space

Functional Description
This subroutine is used during allocation and deallocation of memory to add or delete
physical maps from the users address space. The hardware map registers are reloaded
with the new map images.
Entry Conditions
Calling Sequence:

BL

S.ALOC19

Registers:
None
Exit Conditions
Return Sequence:
TRSW

RO

Registers:

(

R3,R4,R5
3.5.41

destroyed

Subroutine S.ALOC20 - Validate Buffer Address

Functional Description
This subroutine is used to verify a logical address provided by the user. The following
inquiries are made:
Is the starting address lower than the DSECT start address?
Do the addresses specified cross a map block boundary?
Are the addresses specified in a valid map block?
Are the addresses specified in the extended address space?
Are the addresses specified in a protected area?
Entry Conditions
Calling Sequence:

BL

S.ALOC20

Registers:

(:

R6

20 bit logical starting address

R7

number of bytes to validate (buffer size). If zero, single
address check is made.
3-199

("

Exit Conditions
Return Sequence:
TRSW

';)
..•.

RO

Registers:
R6,R7

unchanged

RI,R2,R4,R5

destroyed

CC4

set, invalid address (i.e., in OS, below DSECT, or not
mapped into users space)

CC3

set, locations specified are protected

CC2

set, buffer crosses map block boundary

CCI

set, address below DSECT

Status:

3.5.42

Subroutine S.ALOC21 - Allocate Memory Pool Buffer

Functional Description.
This subroutine is used J;y system services requiring temporary memory for I/O queue
entries, I/O buffering, and messages. No attempt is made to track the use of such
buffers by the memory management services. Thus use of this service must be
restricted. Buffers are allocated on a double word boundary.
Entry Conditions
Calling Sequence:
BL

S.ALOC21

Registers:
number of words required

R7
Exit Conditions
Return Sequence:
TRSW

RO

Registers:

3-200

R3

starting address of memory pool {doubleword bounded}

R7

number of words rounded to 2W increment

RI,R2

destroyed

Status:

(

CCl

set, no memory available and R3=0

Abort Cases:
None

3.5.43

Subroutine S.ALOC22 - Release Memory Pool Buffer

Functional Description
This subroutine will deallocate a previously allocated memory pool buffer.
Entry Conditions
Calling Sequence:

BL

S.ALOC22

Registers:
R3

starting address of memory pool

R7

number of words to deallocate

Exit Conditions
Return Sequence:
TRSW

RO

Registers:

3.5.44

R3

unchanged

Rl,R2,R4,R7

destroyed

Subroutine S.ALOC23 - Compress File Name

Functional Description
This subroutine converts 8 bit ASCII coded characters to 6 bit ASCII coded characters.
Hex 20 is subtracted from each byte to get new code.
Entry Conditions
Calling Sequence:

BL

S.ALOC23

(
3-20 I

Registers:
R6,R7

8 bit ASCII coded name blank filled

Exit Conditions
Return Sequence:
TRSW

RO

Registers:

3.5.45

R6,R7

6 bit ASCII coded name in lower 48 bits

CCI

set if character found

R2,R3,R4,R5

destroyed

X'20' or

X' 5F'

Subroutine S.ALOC24 - Uncompress File Name

Functional Description
This subroutine converts 6 bit ASCII coded characters to 8 bit ASCII coded characters. A
hex 20 is added to each 6 bit value to get new 8 bit value.
Entry Conditions
Calling Sequence:
BL

S.ALOC24

Registers:
R6,R7

6-bit ASCII coded name right-justified in lower 48 bits of
R6,R7

Exit Conditions
Return Sequence:
TRSW

RO

Registers:

3-202

R6,R7

8 bit ASCII coded name

R2,R3,R4,R5

destroyed

3.5.46

(

Subroutine S.ALOC25 - Set Any Bit In Memory

functional Description
This subroutihe is used to set any bit in memory.
Entry Conditions
Calling Sequence:
BL

S.ALOC25

Registers:
R2

base address of bit string

R4

relative bit number (0-2**20)

Exit Conditions
Return Sequence:
TRSW

RO

Registers:

(
3.5.47

R2

unchanged

R4,R5

destroyed

I

Subroutine S.ALOC26 - Clear Any Bit In Memory

Functional Description
This subroutine is used to clear any bit in memory.
Entry Conditions
Calling Sequence:
BL

S.ALOC26

Registers:
R2

base address of bit string

R4

relative bit number (0-2**20)

Exit Conditions
Return Sequence:

(

TRSW

RO
3-203

Registers:

3.5.48

R2

unchanged

R4,R5

destroyed

o

Subroutine S.ALOC27 - Test Any Bit In Memory

Functional Description
This subroutine is used to test the status of any bit in memory.
Entry Conditions
Calling Sequence:

BL

S.ALOC27

Registers:
R2

base address of bit string

R4

relative bit number (0-2**20)
I·~\

Exit Conditions

\

!

'
3-225

Return Sequence:
M.RTNA

4

R4 is the denial return address in case of an
unrecoverable I/O error to the allocation map

Registers:
None
External References
System Macros:
M.CALL
M.RTRN
M.RTNA

H.FISE,17; H.FISE, 18; H.EXEC,16

Abort Cases:
None
Output Messages:
None
3.7.5

Entry Point 5 - Allocate Permanent Disc Space

Functional Description
This entry point functions identically to Entry Point 3 with the exception that the
allocation map is searched from the end toward the beginning for a bit string of
sufficient length to satisfy the request. Allocating permanent file space at the end of
the disc and temporary file space at the beginning reduces fragmentation of disc usage,
and reduces the time required to allocate space. If Unidirectional File Allocation mode
has been set via the Operator Communications MODE command, this algorithm is used to
allocate temporary space also.
This entry point decrements the count of total disc space available on all units in
C.NTBA.
Entry Conditions
Calling Sequence:
M.CALL

H.FISE,5

R4

contains the denial return address in case of an unrecoverable
I/O error to the allocation map

Registers:
·~····· ,
G

\'

,

'

I~

3-226

(

R5

contains the Unit Definition Table (UDT) index (entry number)
of the entry which defines the disc for which the space
allocation is requested, or zero to indicate any disc.

R7

contains the number of 192 word blocks requested for allocation

Exit Conditions
Return Sequence:
M.RTRN

5,6,7

R5

contains the UDT index of the disc where the space was
allocated

R6,R7

contain the space definition of the allocated file space

Registers:

(or)
zero if the requested space was not available
(or)
Return Sequence:
M.RTNA

4.

R4. is the denial return address in case of an unrecoverable
I/O error to the allocation map

Registers:
None
External References
System Macros:
M.CALL
M.RTRN
M.RTNA

H.FISE,17; H.FISE,18

Abort Cases:
None
Output Messages:
None

3-227

3.7.6

Entry Point 6 - Ungate FISE

Functional Description
This entry point makes FISE avaialable for use and allows any users that are suspended
awaiting FISE to gain access to it. If applicable, the calling task is permitted to be
swapped after FISE is unga ted.
Entry Conditions
Calling Sequence:
M.CALL

H.FISE,6

Registers:
None
Exit Conditions·
Return Sequence:
M.RTRN
Registers:
None
External References
System Macros:
M.CALL
M.RTRN

H.EXEC,18

System Subroutines:
S.EXEC39
Abort Cases:
None
Output Messages:
None

c~

C',:

I

3-228

3.7.7

Entry Point 7 - Deallocate Permanent Disc Space

Functional Description
This entry point is called to release permanent disc file space, making it available for
allocation. Although temporary space may be deallocated through this entry point, Entry
Point 4 should be used for that purpose. The allocation map for the specified disc is read
into a FISE buffer area if it is not already in memory; the bit string corresponding to the
specified space definition is reset; the allocation map is rewritten on the disc and a
return is made to the caller.
This entry point increments the count of total disc space available (C.NTBA).
Entry Conditions
Calling Sequence:
M.CALL

H.FISE,7

Registers:
R4

contains the denial return address in case of an unrecoverable

I/O error to the allocation map

R5

contains the UDT index of the disc on which the file resides

R6

contains the starting disc address

R7

contains the number of 192 word blocks to release

Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
(or)
Return Sequence:
M.RTNA

4

R4 is the denial return address in case of an unrecoverable

I/o error to the allocation map

Registers:
None

3-22-=1

o

External References
System Macros:
M.CALL
M.RTRN
M.RTNA

H.FISE,17; H.FISE,18; H.EXEC,16

Abort Cases:
None
Output Messages:
None

3.7.8

Entry Point 8 - ASCn Compression

Functional Description
This entry point performs compression on an ASCII character string to yield its halfword
equivalent.
Entry Conditions
Calling Sequence:
M.CALL

H.FISE,8

R6,R7

contain the one to eight character ASCII string, left-justified,
and blank filled

Registers:

Exit Conditions
Return Sequence:
M.RTRN

7

R7

contains the equivalent of the ASCII string in the right half word

Registers:

External References
System Macros:
M.RTRN

()

3-230

Abort Cases:
None
Output Messages:
None

3.7.9

Entry Point 9 - Gate FISE

Functional Description
This entry point gates FISE and prevents its use by any other task until Entry Point 6 is
called. If FISE is currently gated when this call is made, the scheduler is notified and the
calling task is placed in a "Waiting For FISE" queue until FISE is freed by a call to Entry
Point 6. Once gated, the calling task will not be allowed to swap until FISE is ungated.
Entry Conditions
Calling Sequence:
M.CALL

H.FISE,9

Registers:

(

None
Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
External References
System Macros:
M.CALL
M.RTRN

H.EXEC,17

System Subroutines:
S.EXEC38

3-231

Abort Cases:
None
Output Messages:
None
3.7.10

Entry Point 10 - Get User SMD Entry

Functional Description
This entry point is used to locate the entry for a specified user permanent file in the
System Master Directory. If unsuccessful, an attempt is made to locate a system file or
memory partition of the specified name, however, Entry Point 1 should be used for this
purpose.
Entry Conditions
Calling Sequence:
M.CALL

H.FISE,lO

R3

contains the denial return address in case of an unrecoverable
I/O error to the SMD

R4,R5

contain the user name consisting of one to eight ASCII
characters, left-justified, and blank filled

R6,R7

contain the permanent file name consisting of one to eight
ASCII characters, left-justified, and blank filled

Registers:

Exit Conditions
Return Sequence:
M.RTRN

5,6,7

R5

contains the UDT index in bytes 2 and 3

R6,R7

zero if the entry for the file could not be located

Registers:

(or)
The space definition of the specified file as follows:

,
I

I

3-232

.I

R6

R7

byte 0

file type

bytes 1,2,3

starting disc address or starting memory
page

byte 0

File indicators as follows:
Bit
Bit
Bit
Bit
Bit
Bit
Bit
Bit

O-Active Permanent File
I-SYSGEN Memory Partition
2-Not saved via SAVE DEVICE
3-F AST File
Lt.-Collision Mapping
5-Non-SYSGEN Memory Partition
6-Write Protected (RO)
7-Password Protected (PO)

bytes 1,2,3 number of 192 word blocks in file or number of
memory pages (bytes 1,2 only)

o If no file, or a user file, was found

Additionally CCI

1 If a System file was found
(or)
Return Sequence:
M.RTNA

3

R3 is the denial return address in case of an
unrecoverable I/O error to the SMD

Registers:
None
External References
System Macros:
M.RTNA
M.RTRN
System Subroutines:
S.FISEI
S.FISE2
S.FISE3
Abort Cases:
None
Output Messages:
None

3-233

3.7.11

Entry Point 11 - Permanent File Allocation Check

Functional Description
This entry point checks access rights to a permanent file being statically or dynamically
allocated.
Entry Conditions
Calling Sequence:
M.CALL

H.FISE,ll

R2,R3

contain the one to eight character password, left-justified, and
blank filled

R4,R5

contain the one to eight character user name, left-justified, and
blank filled, or zero if allocation of a system file only is to be
checked

R6,R7

contain the one to eight character permanent file or memory
partition name, left-justified, and blank filled

Rl

contains the address of a three word permanent file resource
requirement summary entry

R4,R5

contain the one to eight character user name, left-justified, and
blank filled, or zero if allocation of a system file only is to be
checked

R6

contains zero

Registers:

(or)

Exit Conditions
Return Sequence:
M.RTRN

5,6,7

R5

unT index of disc on which file resides

R6,R7

contain the space definition of the specified permanent file. If
access to the file is restricted and a matching password was not
furnished, bits 6 and 7 of R 7 are returned as follows:

Registers:

Bit 6
Bit 7
Bi ts 6,7

3-234

=1
=1
=0

Write access is not allowed
No access is allowed
If read and write access is all owed

(or)

R6,R7

zero if the specified file could not be located

Addi tionall y:
CC I = 1 if an unrecoverable I/O error occurred
External References
System Macros:
M.CALL
M.RTRN

H.FISE,8

System Subroutines:
S.FISEI
S.FISE2
S.FISE3
Abort Cases:
None
Output Messages:
None
3.7.12

Entry Point 12 - Create Permanent File

See Section 7.8.4 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.7.13

Entry Point 13 - Change Temporary File To Permanent

See Section 7.8.17 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.7.1"

Entry Point 1" - Delete Permanent File or Non-SYSGEN Memory Partition

See Section 7.8.7 of the MPX-32 Reference Manual for a detailed description of this
entry point.
3.7.15

Entry Point 15 - Permanent File Log

Functional Description

(

This entry point provides a log of currently existing permanent files and memory·
parti tions.

3-235

Entry Condi tions
Calling Sequence:
M.CALL

H.FISE,15

R4

contains a byte-scaled value which specifies the type of log to
be performed as follows:

Registers:

= 0 specifies
= I specifies
= 2 specifies
= 3 specifies
= 4 specifies

a single named system or user file
all permanent files
system files only
user files
a single named system file

If R4 contains zero and a user name is associated with the

calling task, an attempt is made to locate the user file directory
entry for the given file name. If unsuccessful, the system file
directory entry, if any, is located. If a user name is not
associated ",(ith the calling task, the file is assumed to be a
system file.
If R4 contains 3 and the calling task has an associated user
name, that user's files are logged or all files are logged if the
calling task has no associated user name.

R5

contains the address of an eight word area where the file
directory entry is to be stored

R6,R7

contain the one to eight character file name if R4 contains
4

,,~)

a or

Exit Conditions
Return Sequence:
M.RTRN

4,5

R4

If R4 contains

R5

contains zero if R4 contained a or 4 in the service call and the
specified file could not be located, or R4 contained 1,2, or 3 and
Otherwise, R5 is
all pertinent files have been logged.
unchanged.

Registers:

3-236

a or 4 in the service call, R4 is destroyed. If R4
contains 1,2,or 3 in the service call, this service is called
repeatedly to obtain all the pertinent file descriptions. The
parameter in R4 is specified in the first call only. R4 is
returned containing the address of the next directory entry to be
returned. The value returned in R4 must be unchanged upon the
subsequent call to this service.
--

c

Additionally, the eight word SMD entry, if any, is stored at the address
specified in R5. The password field contains zero or one to indicate the
absence or presence of a password respectively.

(

CC 1 is set to I if there was an unrecoverable I/O error
External References
System Macros:
M.CALL
M.RTRN

H.IOCS,3

System Subroutines:
S.FISEI
S.FISE2
S.FISE3
Abort Cases:
None
Output Messages:

!I

None

3.7.16

I

'I

Entry Point 16 - Validate Usemame

Funtional Description
This entry point validates a user name and optional key against the user name file,
M.KEY, if it exists.
Entry Conditions
Calling Sequence:
M.CALL

H.FISE,16

R3

should contain zero

R4,R5

contain the one to eight character user key, left-justified and
blank filled, or zero in R4 and R5 contains the compressed user
key

R6,R7

contain the one to eight character user name, left-justified and
blank filled. Each character must have an ASCn equivalent in
the range 01 through 7F.

Registers:

(~

3-237

I
II!.i
I'

i
I

--I

o

Exit Conditions
Return Sequence:
M.RTRN
(or)
M.RTRN

3

6,7

Registers:
R3

contains the address of an 8W area in T.BBUF A which contains
the M.KEY entry, or is zero if no M.KEY file is present

R6,R7

unchanged if the user name is valid. Both R6 and R7 are zero if
the user name contains invalid characters or is not contained in
M.KEY or the user key is not correct.

Additionally, CCI

=I if an unrecoverable I/O error occured

External References
System Macros:
M.CALL
M.RTRN

H.FISE,I; H.FISE,8; H.IOCS,3

System Subroutines:
S.FISE3
Abort Cases:
None
Output Messages:
None
**NOTE: MPX-32 M.KEY file entries are twelve words long**
Words 0-1
2-3
t,.-5
6
7

8-9
10-11

3-238

Username
OPCOM Flags
Tab Settings
Unused
Compressed key in right half word
Left halfword is zero
Key (ASCII)
Unused

o

I
I

\,.1
I

3.7.17

Entry Point 17 - Read Allocation Map Into Memory

Functional Description
This entry point determines if the allocation bit map for the specified disc is resident in
memory or not, and reads the map into memory if required.
Entry Conditions
Calling Sequence:
M.CALL

H.FISE,17

R3

contains the UDT index of the disc whose allocation map is to be
read

Registers:

Exit Conditions
Return Sequence:

( .

M.RTRN

3

R3

unchanged or zero if the specified UDT index does not exist

Registers:

Additionally, CC 1 is set if an unrecoverable I/o error occurred when trying to
read the map.
External References
System Macros:
M.CALL
M.RTRN

H.IOCS,3

System Subroutines:
S.FISE3
Abort Cases:
None
Output Messages:
None

3-239

3.7.18

Entry Point 18 - Write Allocation Map to Disc

Functional Description
This entry point writes the currently resident allocation bit map back to the disc it
describes.
Entry Conditions
Calling Sequence:
M.CALL

H.FISE,18

Registers:
None
Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
Additionally, CC 1 is set if an unrecoverable I/O error occurred when trying to
write the map.
External References
System Macros:
M.CALL
M.RTRN
System Subroutines:
S.FISE3
Abort Cases:
None
Output Messages:
None

3-240

H.IOCS,4

:0······"\','

(

3.7.19

Entry Point 19 - Undefined

Functional Description
This entry point is reserved for future expansion. Its current intended use is to
implement a Contract File Space service. A call to this entry point causes an immediate
return to the calling task; no action is taken prior to the return.
Entry Conditions
Calling Sequence:
M.CALL

H.FISE,19

Registers:
None
Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
External References
System Macros:
M.RTRN
Abort Cases:
None
Output Messages:
None

3.7.20

Entry Point 20 - Create Permanent File

Functional Description
This entry point allocates disc space for the specified permanent file and writes a
corresponding entry into the SMD. Optionally, the allocated space is zeroed.

3-24 ;

Entry Conditions
Calling Sequence:
CALM

X'75'

(or)
M.CALL

H.FISE,20

Rl

bytes 1,2
byte 3

Registers:

R2
R3

file size
bit 0
bit 1
bit 10
bit 11
bit 14
bit 15
byte 2
byte 3

set if a system file
set if pre-zero
set if not a save device
set if a fast file
set if read onl y
set if password only
contains device type code
contains optional device address
(if present, bit 16 is also set)

R4,R5

password or R4=0

R6,R7

file name

Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
(or)
Return Sequence:
M.RTRN 6,7

3-242

contain restricted file code
contains file type code

(

Registers:
R6

= I,
=2,
=3,
=4,
=5,
=6,
=7,
=8,
=9,

R7

zero

file already exists
fast file collision mapping occurred
restricted access but no password supplied
disc space unavailable
specified device not configured or available
specified device is off-line
SMD is full
specified device type is not configured
file name or password contain invalid characters

External References
System Macros:
M.RTRN
M.CALL
Abort Cases:
FSOI
FS02

(

Unrecoverable I/O error to SMD
Unrecoverable I/O error to disc allocation map

O'-!tput Messages:
None
3.7.21

Entry Point 21 - Change Temporary File to Permanent

Functional Description
This entry point changes the status of a temporary file allocated to the calling task to
permanent. The file must be an open, temporary, SLO or SBO file.
Entry Conditions
Calling Sequence:
CALM

X'76'

(or)
M.CALL

H.FISE,21

RI

byte 3

contains file type code

R2

bytes 0,1,2

contain logical file code

Registers:

3-24';

R3

bit
bit
bit
bit
bit
bit

0
1
10
11

14
15

set
set
set
set
set
set

if a system file

if
if
if
if
if

o

pre-zero
not a save device
a fast file
read only
password only

R4,R5

password or R 4=0

R6,R7

file name

Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
(or)
Return Sequence:
M.RTRN 6,7
Register~:

R6

=1,
=2,
=3,
=4,

file already exists
fast file collision mapping occurred
restricted access but no password supplied
file not open, temporary, SLO or SBO file
=7, SMD is full
=9, file name or password contain invalid characters

R7

zero

External References
System Macros:
M.RTRN
M.CALL
Abort Cases:
FSOI
FS02

Output Messages:
None

Unrecoverable I/O error to SMD
Unrecoverable I/O errror to disc allocation map

o
:

ill

3-244

3.7.22

Entry Point 22 - Set Exclusive File Lock

See Section 7.8.14 in the MPX- 32 Reference Manual for a detailed description of this
entry point.
3.7.23

Entry Point 23 - Release Exclusive File Lock

See Section 7.8.13 in the MPX-32 Reference Manual for a detailed description of this
entry point.
3.7.24

Entry Point 24 - Set Synchronization File Lock

See Section 7.8.11 in the MPX-32 Reference Manual for a detailed description of this
entry point.
3.7.25

Entry Point 25 - Release Synchronization File Lock

See Section 7.8.10 in the MPX-32 Reference Manual for a detailed description of this
entry point.
3.7.26

Entry Point 26 - Set Exclusive File Lock (M.CALL Only)

Functional Description
This entry point is provided for use by other system services. It is functionally identical
to the M.FXLS (H.FISE,22) service except that it identifies the file by the concatenated
UDT index and starting sector rather than by logical flle code.
Entry Conditions
Calling Sequence:
R6
R4
M.CALL

Concatenated UDT index and file starting sector number
timev (see H.FISE,22)
H.FISE,26

Exit Conditions
Return Sequence:
M.RTRN

R7

R7

= 0, Request accepted, file is exclusively locked.

Registers:

(~'

= I, Request denied, file is allocted to multiple tasks, or is .
already exclusively locked and cannct be exclusively locked by
this task.

3-24-5

= 2, Request denied, FLT space not available.
Note 1: applies to privileged requests to exclusively lock an
unallocated file, and does not apply to SVC utilization through
H.FISE,22.

o

= 3, Request denied, time-out occurred while waiting for FL r
space. (See Note I above.)
= 4, Request denied, time-out occurred while waiting to become

lock owner.
3.7.27

Entry Point 27 - Release Exclusive File Lock (M.CALL Only)

Functional Description
This entry point is provided for use by other system services. It is functionally identical
to the M.FXLR (H.FISE,23) service except that it identifies the file by the concatenated
UDr index and starting sector rather than by logical file code.
Entry Conditions
Calling Sequence:
R6
M.CALL

Concatenated UDr index and file starting sector number
H.FISE,27

o

Exit Conditions
Return Sequence:
M.RTRN

R7

R7

=0, Request accepted, exclusive file lock released
= 1, Request denied, an exclusive file lock owned was not owned

Registers:

by this task
3.7.28

Entry Point 28 - Set Synchronization File Lock (M.CALL Only)

Functional Description
This entry point is provided for use by other system services. It is functionally identical
to the M.FSLS (H.FISE,24) service except that it identifies the file by the concatenated
UDT index and starting sector rather than by logical file code.

o
3-246

"~-------"--

-- - - - - - - -

Entry Conditions
(

Calling Sequence:
R6
R4
M.CALL

Concatenated UDT index and starting sector number
timev (see H.FISE,24)
H.FISE,28

Exit Conditions
Return Sequence:
M.RTRN

R7

R7

=0, Request accepted, synchronization lock set.

Registers:

= I, Request denied, synchronization lock already owned by
another task.

= 2, Request denied, time-out occurred while waiting to become
lock owner.

= 3, Request denied, matching FL T entry not found.
3.7.29

Entry Point 29 - Release Synchronization File Lock (M.CALL Only)

Functional Description
This entry point is provided for use by other system services. It is functionally identical
to the M.FSLR (H.FISE,25) service except that it identifies the file by the concatenated
UDT index and starting sector rather than by logical file code.
Entry Conditions
Calling Sequence:
R6
M.CALL

Concatenated UDT index and starting sector number
H.FISE,29

Exit Conditions
Return Sequence:
M.RTRN

R7

R7

=0, Request

accepted, synchronization lock released.

= 1, Request

denied, synchronization lock was not set.

Registers:

3.7.30

Entry Point 30 - Release File Allocation in FLT

Functional Description

o

This entry point is provided for use by system static and dynamic deallocation services.
It searches the FLT for a matching file identifier. Once a matching FLT entry is found,
any outstanding locks owned by the current task are released, and the allocation count is
decremented. If the allocation count then equals zero, the FL T entry is marked
available. The associated wait queues will also be pulled.
Entry Conditions
Calling Sequence:
R6

M.CALL

Concatenated UDT index and file starting block number
H.FISE,30

Exit Conditions
Return Sequence:
M.RTRN
3.7.31

Entry Point 31 - Wait for Release of Exclusive File Lock

Functional Description
This entry point is provided for use by system static and dynamic allocation services. It
searches the FL T for an existing exclusive lock on the specified file. If one exists, the
task is placed in a wait state until the lock is released. Otherwise, an immediate return is
issued.
Entry Conditions
Calling Sequence:
R6

M.CALL

Concatenated UDT index and file starting block number
H.FISE,31

Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
~··\
C
,,'

3-248

,I

3.7.32

f

Entry Point 32 - Wait for FLT Entry Space

Functional Description
This entry point is provided for system static and dynamic allocation services. It returns
immediately if FL T entry space is available, otherwise the task is placed in a wait state
until FL T space is available.
Entry Conditions
Calling Sequence:
M.CALL

H.FISE,32

Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
3.7.33

Entry Point 33 - Record Disc File Allocation In FLT

Functional Description
This entry point is provided for use by the allocation system service to maintain system
wide information on all currently allocated permanent disc files. It is used in conjunction
with H.FISE,30 which is called by the deallocation system service.
Entry Conditions
Calling Sequence:
R6

M.CALL

File ID (Concatenated UDT index and starting sector)
H.FISE,30

Exit Conditions
Return Sequence:
M.RTRN
Registers:
None

(
3-249

3.7.34

Entry Point 34 - Exclusive Lock File U Unallocated

Functional Description
This entry point is used to insure that a file is not currently allocated by any task, and
then to set an exclusive lock to prohibit subsequent allocations. It is used by the filedelete system service, and is used in conjunction with H.FISE,35.
Entry Conditions
Calling Sequence:
R5
R6

M.CALL

UDT index
Starting sector address
H.FISE,34

Exit Conditions
Return Sequence:
M.RTRN

R4

R4

= 0, Request accepted.

Registers:

= 1, Request denied, file is allocated.
= 2, Request denied, file is exclusively locked (but not allocated)

by another task.
= 3, Request denied, FL T space unavailable.

3.7.35

Entry Point 35 - Release Exclusive Lock (Unallocated File)

Functional Description
This entry point is identical to H.FISE,27 except that it accepts the UDT index and
starting sector address as separate arguments, then concatenates them to form the file
identification.
Entry Conditions
Calling Sequence:
R5
R6

M.CALL

3-250

UDT index
Starting sector address
H.FISE,35

..~

Exit Conditions

(

Return Sequence:
M.RTRN
Note: Request is ignored if the calling task is not the lock owner.
Registers:
None
3.7.36

Entry Point 36 - Release Exclusive Locks For Unallocated Files On Task
Termination

Functional Description
This entry point is called during task termination processing to release any file exclusive
locks which are set for files which the task did not have allocated. Note that exclusive
locks on allocated files are released when the file is deallocated.
Entry Conditions
Calling Sequence:
M.CALL

H.FISE,36

Exit Conditions
Return Sequence:
M.RTRN
Registers:
None
3.7.37

Entry Point 99 - SYSGEN Initialization

Functional Description
This entry point is for internal use only and is called during SYSGEN. H.FISE sets up its
Entry Point Table then returns to SYSGEN.
3.7.38

System Master Directory (SMD)

Functional Description

(

Each permanent file, temporary file, or memory partition has associated with it a two
word space definition which describes the location, length, etc. of the file or memory
3-251

partition. The space definition of permanent files or memory partitions resides on the
System Master Directory, and together with the permanent file name, user name and
password, or memory partition name, comprise the SMD entry.
The space definition of temporary files are retained in the File Assignment Table area of
the defining task's TSA until termination of the task or completion of System Output. At
that time, these definitions are returned to the File System Executive for deallocation of
the defined space. Deallocation of permanent file space is performed via Entry Point 14
or by the File Manager upon encountering a DELETE directive.
Memory partitions, similar to permanent disc files, have a two word space definition in
the associated SMD entry. The SMD entry for a statically allocated memory partition is
built by SYSGEN when a PARTITION directive is specified. This type of partition can be
deleted only by omitting the definition in a subsequent SYSGEN warm or cold start. The
SMD entry for a dynamically allocated memory partition is built by the File Manager in
response to a CREA TEM directive. This type partition is deleted by the File Manager
upon encountering a DELETE directive, or alternatively via Entry Point 14.
System Master Directory (SMD) Entry
Permanent File Format:
Word 0,1

contain the one to eight ASCII character, left-justified, blank
filled file name

Word 2,3

contain the space definition as follows:
Word 2
Byte 0

File Type -This field contains one or two
hexadecimal digi ts to identify the origin of the
file as follows:

ED - Editor Save File
EE - Editor Store File
FE - Editor Work File
FF - SYSGEN Created File
BA - BASIC File
CA - Cataloged Load Module
Bytes

1-3

This field contains the starting (base) disc
address of the file expressed as the starting
allocation unit number.

Word 3
Byte 0

File Indicators - Bits set in this field indicate the
following:
Bit

0I
2

Active Permanent File
SYSGEN Memory Partition
File is not saved in response to the SAVE
FILE File Manager directive
..~

3-252

3
4

5
6
7

Bytes 1-3

FAST File
Collision Mapping
Non-SYSGEN Memory Partition
Password required to write (read-only file)
Password required to read or write
(password-only file)

This field contains the number of 192 word blocks
in the file

Word 4,5

contain the one to eight ASCII character, left-justified, blank
filled, user name or zero if no user name is associated with the
file

Word 6

contains the compressed password or zero in Bytes 0 and 1 and
the UDT index of the disc on which the file resides in Bytes 2
and 3

Word 7

Zero

Memory Partition Format:
Word 0,1

contain the memory partition name; GLOBALxx or DATAPOOL

Word 2,3

contain the space definition as follows:
Word 2
Bytes

0-1

Bytes 2-3

contain the partition's starting logical
number

page

contain the partition's starting physical page
number if the partition is created by SYSGEN or
are zero for a non-SYSGEN partition

Word 3

(

Byte 0

File Indicators - Same as in Permanent File
Format definition above

Byte 1

Memory Class - this field contains a 1,2, or 3 to
indicate the class of memory (E, H, or 5) this
partition is to be allocated

Bytes 2-3

This field contains the number of pages allocated
for the partition

Word 4,5

Zero (Memory partitions are always System files)

Word 6

contains the compressed password or zero in Bytes 0 and 1 and
zero in Bytes 2 and 3

Word 7

Zero

3-253

3.7.39

Disc Allocation Maps

Functional Description
Each disc consists of a string of 192 word records. Disc space is allocated in blocks
(called allocation units) of records. The number of records in an allocation unit is disc
dependent.
Each type of disc contains a different number of allocation units.
Allocatable disc space is followed by a variable length record which serves as the space
allocation map for the device. The map begins with the first bit of the record and
consists of as many bits as there are allocation units on the disc. Each bit defines the
state of the corresponding allocation unit and is set if the unit is allocated and reset if
the unit is available for allocation. Following the allocation map is unused disc space
(less than one allocation unit in length) which results from the disc sizes not being even
multiples of the allocation unit. Additionally, an area of the disc may be reserved for
diagnostic purposes, and therefore, not available for allocation (see Section 3.7.37.2).
A separate allocation bit map is maintained for each disc defined to the system at
SYSGEN. The File System Executive builds an Allocation Map Table defining each
allocation map during its SYSGEN Initialization phase. The allocation maps reside on the
particular disc they define and are read into memory one at a time as required.
If control switch 0 is set, checksumming is performed on the bit maps whenever they are

read from disc, written to disc, or changed during disc space allocation/deallocation. An
Allocation Map Checksum Table, containing one entry for each disc, is defined at
SYSGEN time. Detection of a checksum error causes execution of M.KILL with the
abort code FS04 in R5.
The allocation bit maps vary in length as described above and as shown in the following
table:

3-254

''''--'''

-..

~

Unit
Size

Type

Wordsl
Sector

Sectors/
Track

Number
of
Heads

Max
Cylinders
- ------ -- ---

-

~

Sectorsl
Cylinder

Max
Sectors

Sectors/
Allocation

Max
Alloc.
Units

\,00)

Bit Map
Size·

Max Byte
Capacity

•

"•

\,00)

\D

•

4MB

Fixed Head

192W

23

2~6

0

0

'888

'888

184

4.'2MB

~MB

Fixed Head

192W

23

4

64

92

'888

'888

184

".'2MB

10MB

Cartridge Disc
'MB Removable
Media
5MB Captive
Media
Totals

96W

16

2

"00

J2

12,800

12,800

200

4.91MB

96W

16

2

400

32

12,800

12,800

200

4.91MB

64

2',600

2',600

400

9.82MB

"C

400

11'

46,000

2

23,000

719

3S.32MB

9

800

II'

92,000

2

46,000

1438

70.6'MB

III
0-

2712

268.49MB

4

40MB

Moving Head

192W

21

80MB

Moving Head

192W

23

,
,

300MB

Moving Head

192W

23

19

800

437

349,600

4

87,400

3

1334

Extended I/O Devices
1MB

Floppy Disc

64W

26

2

77

52

4002

5MB

Fixed Head

192W

20

4

64

80

'120

192W

20

800

20

16,000

192W

20

800

20

16,000

40

32,000

32MB

Cartridge Disc
16MB Removable
Media
16MB Captive
Media
Totals

2

I

'120

184

3.93MB

2

8000

2'0

12.28MB

2

8000

2'0

12.28MB

16,000

'00

24.56MB

400

100

40,000

2

20,000

615

30.72MB

20

800

100

80,000

2

40,000

12'0

61.44MB

20

19

800

380

304,000

"

76,000

2315

233.47MB

Moving Head

192W

20

80MB

Moving Head

I92W

300MB

Moving Head

192W

• Decimal Words

w

1.02MB

,
,

40MB

Note:

0
n
0

Iii'

The 10MB Cartridge Disc and 32MB Cartridge Disc contain removable and captive media within a single cabinet. Software treats the removable and captive
medias as separate devices, each with its own device subaddress. Figures presented for these devices include each medias capacity and total drive capacity.
All discs with a Unit Size of 24MB or larger have reserved cylinders that are not useable by the operating system, i.e., the 80MB Moving Head Disc physically has
823 cylinders, however, only 800 are defined to the operating system.

N
\..n
\..n

1'.-

727 -

F

II

Q
.....

.......

-of

(I)

~

VJ

......

I
N

•

~

VI
0'\

I'.)

o

Iii'

n

D D DLJ

i
D D D D D DLl D DIJ D D[]

192-1
Word
Record

Unused

I

~

--i

Allocation Unit
(1 to 4 Records)
~

,.

o

Allocatable Disc Space

Allocation
Map
"tI

>Reserved

Total Disc Space

~j

(

3.7.40

MPX-32 Disc File Gating

MPX-32 provides both mutual exclusion and access synchronization methods of disc file
gating. These functions are used by system services and are available to privileged and
unprivileged tasks to ensure the access integrity of associated files.
3.7."'0.1

General Method

MPX-32 maintains a memory resident File Lock Table (FLT). It contains an entry for
each permanent disc file that is currently allocated. An FL T entry in turn contains an
allocation count to reflect multiple tasks which concurrently have the associated file
allocated. A file is uniquely identified in the FL T by the concatenation of its UnT index
and starting sector number. The two-word FLT entry also contains space to reflect the
program number of the task which has exclusively locked the file, or the program number
of the task which has a synchronization lock set for the file.
3.7."'0.2

Locking Services

Services are provided to set exclusive or synchronization locks for files that are
allocated to a task. A task may use a logical file code (lic) to identify the file when the
lock request is m~de.
3.7.40.3

Exclusive Lock (FXL)

In order for an unprivileged task to exclusively lock a file, the file must be allocated to
the requesting task, and will therefore have an entry in the FL T. When an FXL request is
made it will be accepted if the file is allocated to the requesting task, and is not
concurrently allocated to another task. Once a file has been exclusively locked, other
tasks will be prevented from allocating it until the exclusive lock is released.
3.7."'0.'"

Synchronization Lock (FSL)

In order for a task to set a synchronous lock for a file, the file must first be allocated to
the requesting task, and will therefore have an entry in the FL T. When an FSL request is
made, it will be accepted if the file is allocated and an FSL for the file is not already
owned by another task which has the file concurrently allocated.
3.7.40.5

Task Queueing

When a locking service is requested, the task may optionally specify an immediate denial
return if the lock is unavailable, or the task may specify that it wishes to wait until the
lock is available. If it specifies the wait option, it may also specify a watchdog timer
value to ensure a return of control to the task if the lock does not become available
within the time specified.

3-257

3.7.40.6

Cooperative Environment

It should be understood that use of the file locking services is voluntary. Participating
tasks must utilize the file locking services in a cooperative environment to ensure
properly synchronized access and to avoid deadlock situations.

3.7.41

System Subroutine S.FISE! - Search SMD For Entry

Functional Description
This subroutine searches the SMD for the specified entry and returns the address of an
8W area containing the SMD entry if successful. If a username is specified, a search is
made for the named userfile, else a system file is assumed. If the named userfile does
not exist, the entry describing the system file of the same name is returned, if any.

******************************************************************************
*

CAUTION

*

*

When this subroutine is called, it is assumed
that calls have previously been made to gate FISE
and also that the caller will un gate FISE after
S.FISE I returns

*
*
*
*
*

*

*

*
*

******************************************************************************

Entry Conditions
Calling Sequence:

BL

S.FISE 1

Rl

contains the FCB address - FCB, FAT, and FPT must be setup
for I/O to the SMD

R4,R5

contain the one to eight ASCII character, left-justified, blank
filled username, or zero if a system file only is to be found

R6,R7

contain the one to eight ASCII character, left-justified, blank
filled filename of the entry to be found

Registers:

Exit Conditions
Return Sequence:
TRSW

3-258

RO

Registers:
R2
CC 1
CC2

3.7.42

contains the address of an 8W area containing the SMD entry if
the specified file exists
=0 if the specified file was found

=1 if no file was found
= 0 if no file was found

or a user file was found during a user
search
= 1 if a System file was found while looking for a user file and
none existed

System Subroutine S.FISE2 - Setup FAT for SMD I/O

Functional Description
This subroutine sets up the system FAT to perform I/O to the SMD. It uses registers R 1,
R2, R3, and R5.
f

Entry Conditions
Calling Sequence:

:(

BL

S.FISE2

R3

contains the UDT index of the disc on which the SMD resides

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

Rl

contains the system F AT address

R5

contains the logical file code '(S)'

Registers:

3.7.43

System Subroutine S.FISE3 - Setup System FPT and FeB

Functional Description
This subroutine sets up the system FPT and FCB for I/O. It uses registers R 1, R2, R3,
R4, and R5.

3-259

Entry Conditions
Calling Sequence:
BL

S.FISE3

Rl

contains the system F AT address

R4

contains the denial return address in case of an unrecoverable
I/O error to the SMD

R5

contains the logical file code '(S)'

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

R3

contains the system FCB address

Registers:

Additionally, the system FPT and FCB are setup for a 192 word transfer
to/from T.BBUFA
3.7.44

System Subroutine S.FISE4 - Record Disc File Allocation in FLT

Functional Description
This subroutine modifies the File Lock Table (FL T) to reflect the additional allocation.
Entry Conditions
Calling Sequence:
BL

S.FISE4

R6

contains file ID (concatenated UDT index and starting sector
number)

Registers:

Exit Conditions
Return Sequence:
TRSW

RO
' '···
C··
i

3-260

~

Registers:

(

3.7.45

RI,R2,R3,R5

destroyed

R4,R6

saved

R7

0, request accepted
1, request denied (file is exclusively locked)
2, request denied (FL T space not available)

System Subroutine S.ASE5 - Wait for FL T Entry Space

Functional Description
This subroutine enqueues the caller until File Lock Table (FL T) space becomes available.
Entry Conditions
Calling Sequence:

BL

S.FISE5

Registers:
None
Exit Conditions
Return Sequence:
TRSW

RO

Registers:

3.7.46

Rl,R2,R3

saved

R4,R5,R6,R7

destroyed

System Subroutine S.ASE6 - Wait for Release of File Exclusive Lock

Functional Description
This subroutine enqueues the caller until the file lock owner releases the file lock.
Entry Conditions
Calling Sequence:

(>

BL

S.FISE6

3-261

Registers:
R6

contains file ID {concatenated UDT index and starting sector
number}

Exit Conditions
Return Sequence:
TRSW

RO

Registers:
R l,R2,R3,R5,R7

destroyed

R4,R6

saved

System Subroutine S.FISE7 - Release Disc File Allocation in FLT

3.7.47

Functional Description
This subroutine decrements the use count in the file by one. The entry is cleared when
the use count goes to zero.
NOTE

Queued exclusive locks (QFXL) must be pulled if an exclusive lock
(FXL) is owned by the releasing task or if the decremented
allocation count is less than or equal to 1 and FXL is not set.
Entry

C~nditions

Calling Sequence:

BL

S.FISE7

R6

contains file ID {concatenated UDT index and starting sector
number}

Registers:

Exit Conditions
Return Sequence:
TRSW

RO

Registers:

3-262

R 1,R2,R3,R5,R7

destroyed

R4,R6

saved

c

3.7.48

(

System Subroutine S.FISE8 - Search FLT for Matching Entry

Functional Description
This subroutine searches the File Lock Table (FL T) for a matching concatenated file ID.
Entry Conditions
Calling Sequence:

BL

S.FISE8

R6

contains file ID .IBP.DIR=
*
*****************************************************************
A. LODS.A. LODX
DIRTV
KEYWD
C'LOD'
STRING.A.LOD1
PARAM
KEYWD
C'IBP'.A.LOD2
KEYWD
C 'DIR '
PARAM
DNUMB.A.LOD3

START

*A.LODS
A.LOD!

A. LOD1.
A.LOD2
A. LOD3

1

EGU
STW
S13M
13U
STW
13L
BCT
SSM
BU
STD
BU
STW
SBM
13U
STW
TRR
BNZ
S8M

au

A.LOD3.1 STW
A. LODX

au

STW

au

S

RO.SCN.RTRN
O.S.LOD
*SCN. RTRN
O.SCN. RTRN
CONDEV
LA. LOD1. 1
1. SCN. RTRN
*SCN.RTRN
6.C:LODC
*SCN. RTRN
O.SCN. RTRN
C: S I BP. C: 13 IT
*SCN. RTRN
O.SCN.RTRN
7.7
A.LOD3.1
1. SCN. RTRN
*SCN. RTRN
7.5. SOD
*SCN. RTRN
RO,SCN. RTRN
SCN. RTRN

START ACTION ROUTINE
SAVE RETURN ADDRESS
INDICATE LOD DEFINED
RETURN TO SCANNER
SAVE RETURN ADDRESS
SCAN DEVICE MNEMONIC
NO ERROR DEVICE FOUND
SET ERROR INDICATOR CCI
RETURN TO SCANNER
SET DEFAULT SYSTEM PUNCHED DEVICE
RETURN TO SCANNER
SAVE RETURN ADDRESS
INHIBIT BANNER PAGE
RETURN TO SCANNER
SAVE RETURN ADDRESS
NO. OF DIRECTORY BLOCKS
MUST aE NON-ZERO
SET ERROR INDICATOR
RETURN TO SCANNER
SAVE NO. OF DIRECTORY BLOCKS
RETURN TO SCANNER
END ACTION ROUTINE

*****************************************************************
*
POD.. <:DEVMNC)
*
*****************************************************************
DIRTV
C 'POD'
KEYWD
STRING,A. POOl
PARAM

*
ETCETERA
*
*****************************************************************

*

5-14

I lEND
*
*****************************************************************
SECTION
C 'END'
*****************************************************************
*
END OF STATEMENT DEFINITION LIST
*
*****************************************************************
KWEND
END
START

C,","

h

5.3

Table Building

5.3.1

System Tables

SYSGEN's main function is building the tables used by a MPX-32 system. Utilizing the
supplied directives, SYSGEN tailors the tables for the installation required. Some of the
system tables which SYSGEN builds are first formed as linked lists in SYSGEN's scratch
space and are later inserted in the target file after all pertinent information has been
collected. Section 5.3.1.1 provides a list of all the tables with which SYSGEN interfaces,
and where information about them can be found.

(

5-1 "

Tables Referenced in SYSGEN

5.3.1.1

,tI
! "". . ,

Name of Table
.." Acti vation Table
. Channel Definition
Table - CHT
Controller Definiton
Table - CDT
Device Identification
Table - DID
Device Type Table - DTT
Disc Allocation Map
, Checksum Table - DAMCST
Disc Allocation Map Table
DQE Address Table - DA T
DOE Table
File Lock Table - FL T
GPMC Jump Table
Indirectly Connected Task
Linkage Table - ITL T
Job Table
Map Tables
Memory Allo~ation Table
Memory Pool
Module Table
Patch Area
Resourcemark Table - RMT
Scratch Pad
Shared Memory Table - SMT
SVC Table
Timer Table
Unit Definition Table UDT

SYSGEN Interaction

,)Ii

Where Documented

Built by SYSGEN
Partially built by SYSGEN

Ref. Man., Vol. 3, Sec. 9.1
Tech. Man., Sec. 2.4.11

Built by SYSGEN

Tech. Man., Sec. 2.4.5

Used by SYSGEN

Tech. Man., Sec. 5.2.1

Used and filled in by SYSGEN
Allocated and zeroed
by SYSGEN
Built by SYSGEN
Built by SYSGEN
Allocated, zeroed &:
linked by SYSGEN
Alloca ted and zeroed
by SYSGEN
Allocated and zeroed
by SYSGEN
Allocated and initialized
by SYSGEN
Allocated and zeroed
by SYSGEN
MPL, MSD &: MIDL built
by SYSGEN
Built by SYSGEN
Allocated and zeroed
by SYSGEN
Allocated and zeroed
by SYSGEN
Allocated and zeroed
by SYSGEN
Allocated and zeroed
by SYSGEN
Partially built by SYSGEN
Allocated and initialized
by SYSGEN
Allocated and zeroed
by SYSGEN
Allocated and zeroed
by SYSGEN
Built by SYSGEN

Tech. Man., Sec. 5.2.1
Tech. Man., Sec. 2.6.2
Tech. Man., Sec. 2.6.2
Tech. Man., Sec. 2.3.3
Tech. Man., Sec. 2.3.2
Ref Man., Vol. 1, Sec. 2.9.1.6
See H.MUXO
Tech. Man., Sec. 1.12
Tech. Man., Sec. 2.7.4
Tech. Man., Sec. 2.5.3

''-..)1i

Tech. Man., Sec. 2.5.2
Tech. Man., Sec. 2.5.1
Tech. Man., Sec. 1.13.14
Ref. Man., Vol. 3, Sec. 9
Ref. Man., Vol. 1, Sec. 2.Q.l.;;
32/70 Tech. Man., Sec. 3-77
Tech. Man., Sec. 2.5.3
Tech. Man., Sec. 1.13.20
Ref. Man., Vol. 1, Sec. 8.2.33
Tech. Man., Sec. 2.4.6

C··
.

5-16

\",'

5.3.2

(

Internal Tables

As SYSGEN processes directive input, it collects some information in its own internal
tables for utilization later in the task. It has three tables which are limited to internal
use: the Partition Table, the Module Table and the Interrupt/Trap Table. See Section
5.3.2.1.
The Partition Table is built with information provided from the Partition directives in
Phase One (S.PHOl). It is later used to initialize the Share Memory Table in Phase Four
(S.PH04). SYSGEN's internal Module Table, not to be confused with the system Module
Table, is a table of all system and user modules that are to be loaded in the target file.
It is built in Phase One and utilized in Phase Two (S.PH02) to build the load map table.
The Interrupt/Trap Table is also used to build the load map table, and it is additionally
used to create interrupt entries in the scratch pad in Phase Two.

(

5- 17

5.3.2.1

"r"

SYSGEN Internal Tables

\~j:')

Partition Table
Word

o

String forward address (PAR.LINK)

I

Start logic
Page If
(PAR.SPG)

2

Physical
Map block If
(PAR.PBN)

3

If pages
(PAR.NPG)

Reserved

4

Partition Name

5

(PAR.NAME)
Module Table

Word

o

String forward address (MOD.LINK)

If of entry points
(MOD.NEPT)

Module number
(MOD. NO.)

2

Module name
(MOD.NAME)

3
4

Reserved

5

Reserved

Module type
(MOD.L TYP)
Interrupt/Trap Table

Word

o

String forward address ((NT. LINK)
Interrupt
type
(INT. TYP)

2

Priority
level
(INT.L! )

Controller
class
{INT.ClS)

Reentrant
descriptor
ONT.REEN)

Interrupt handler name
(INT.NAME)

3
4

5

5-18

Pointer to device handler list
([NT .HNDA)
Device type
code
(INT .DTC)

Channell/
(INT.CHAN)

Sub address
(INT.SUBA)

Module
type
(INT.l TYP)

C··'\

I'

:

i

Notes
1. Bits in INT .TYP are assigned as follows.
1
2
3
lj.

5
6-7
2

If set, indirect (TYP.NDIR)
If set, direct (TYP.DIR)
If set, service interrupt (TYP .SI)
If set, GPMC service interrupt (TYP.GPMC)
If set, extended I/o service interrupt (TYP.XIO)
Reserved

Values for INT.CLS are as follows.
Value=O - TLC line printer
Value=1 - TLC card reader
Value=2 - TLC teletype
Value=3 - RTOM interval timer
Value=D - TCW class with blank bits
Value=E - TCW class
Value=F - Extended I/O

5.4

Handler and Module Loading and Initialization

In Phase Three (S.PH03) of the SYSGEN task, the system modules, user modules,
interrupt handlers and trap handlers are all loaded and initialized for the target file.
SYSGEN reads the object input file (OBJ) and scans the load table built in Phase Two for
a match on the program name in the binary object record file. When a match is found,
the module is copied to a temporary disc file and subsequently loaded as often as it
appears in the load table. If the object module does not match one entered in the load
table, it is skipped.
The last entry point of all modules and handlers is reserved for SYSGEN initialization,
and provides the capability of self-initialization. SYSGEN calculates the address of the
last entry point of each module and does a Branch and Link to that location, thus
initializing the module. On return from the initialization via the macro M.XIR (see
Chapter 1), the current entry in the load table is cleared, the current address pointer
gets updated, and the initialization code is zeroed and overlayed with the next module.

5.5

Special Considerations

5.5.1

MAPTGT /MAPHOST Routines

SYSGEN initially obtains two 8K blocks of memory in which to build the target system
and acquires additional 8K blocks as needed. By using the internal routine MAPTGT, it
can map its acquired memory to address zero, replacing the host operating system. This
enables SYSGEN to use Communication Region equates as references within the target
system instead of within the host. When it becomes necessary for SYSGEN to use host
system variables or services, it utilizes the internal routine MAPHOST to put the host
system back in place. Mapping back and forth prevents SYSGEN to be run with the
Debugger.

5-19

5.5.2

Special Case Activation

il

~.

,"J

SYSGEN is a two 8K map block task. In order to allow SYSGEN to build target systems
as large as 7 map blocks on the 32/7x and as large as 28 map blocks on the CONCEPT /32,
the system allocator special cases it and loads it at address X'38000', which is the 8th
block on the 32/7x and the 29th map block on the CONCEPT /32. This gives SYSGEN a
maximum of 7 map blocks of memory on the 32/7x and a maximum of 28 map blocks on
the CONCEPT /32 in which to map the target system.

c
5-20

(

-

6.

BA TCH TASK DESCRIPTIONS

6.1

CATALOGER

6.1.1

Introduction

The Cataloger builds load modules from an object code file assigned to lfc SGO.
External references are resolved from a user specified subroutine library assigned to lfc
DIR and LIB and from the system subroutine library assigned to lfc LID and LIS. The
catalog directives are input from lfc SYC and the load module map is output to lfc SLOe
The load module is a system permanent file created by the Cataloger; its file name is the
program name supplied in the CATALOG directive.
Exit Conditions:
Normal Exit:
CALM X'55'
Abnormal Exits:
CALM X' 57' Abort
Abort Cases:
CTOI

Physical end-of-file encountered on permanent file containing System
Subroutine Library (MPXLIB) or assigned user library. Contents of the library
altered subsequent to creation.

CT02

Load module file specified with Catalog cannot be allocated.

CT03

Unrecoverable I/o error encountered on the OAT APOOL dictionary file
assigned to OPO.

CT04

Listed output space is depleted and additional SLO space cannot be allocated.

CT05

Unrecoverable I/O error on file or device assigned to SBM for SYMTAB
output.

CT06

An error occurred, conditional Batch directives are still processed.

6.1.2

Processing Regions

The Cataloger consists of four distinct processing regions each of which is identified by a
letter as follows:
X - External
M - Main
C - Control Card Interpretation and First Object Code Pass
B - Second Object Code Pass
(-

Program tags, subroutine names, and names of variables begin with the letter of the
region with which they are associated.
6-1

6.1.2.1

X Region

o

The X region is composed of subroutines relating to MPX provided services.
6.1.2.2

M Region

The M region is primarily composed of subroutines, variables, and tables which are
referenced by more than one region. It also contains the entry point called by MPX in
response to the $EXECUTE CATALOG Job Control Statement. When the entry point is
called, the limits of the general table area are established and control is transferred to
the C region. The general table area occupies the free memory allocated to the
Cataloger, but following the Cataloger program logic. The utilization of this area is
depicted in 6.1.2.3.1.
6.1.2.3

C Region

The C region interprets Cataloger directives and makes the first pass over the object
code comprising each segment being cataloged. Information about each program
element, its external definitions and common blocks is extracted and stored in the
symbol table (SYMTAB). SYMTAB is built from the high memory end of the general
table area toward low memory. SYMTAB data restored with the SYMTAB directive is
stored first in the table. SYMT AB entry formats are presented in 6.1.2.3.1. The first
entry for each segment is the control entry. The control entry is followed by a program
name entry.
For each segment, a table of external references from EXCLUDE directives is built from
the low memory end of the general table area. This table is followed by a table of
undefined external references. Names from INCLUDE directives are placed in the
undefined external references table. It also contains any unsatisfied external references
encountered during the processing of a segment. If unsatisfied externals exist after all
program elements have been processed from the SGO file for a segment, the subroutine
libraries are searched for the externals. Program elements that satisfy external
references are selected from the libraries. Any remaining undefined external references
are ignored since they may be satisfied by segments that are subsequently processed.
If the first pass over the object code for aU segments is successful, SYMT AB addresses
are made module relative, and control is transferred to the B region.

o
6-2

6.1.2.3.1

General Table Area

MPFST

Segment External
References From
EXCLUDE
Directives (2 Words Per Entry)

MXCL

External References
To Be Included In
Segment From SGO file
and INCLUDE directives
(2 words Per Entry)

MPNXT
(Last
Entry
Stored

MPFST

Program Element
Data

MRMTX
Relocation Matrix
MDPFT
Datapool Table

(

MSYMN
(Ist cell
of next
entry to
be
stored)

MSYMN
+4 W

----------SYMTAB Entries
Completed
2nd Control Entry

SYMTAB

SYMTAB Entries
1st Control Entry
MPLST

1st Segment Entry
Object Code
Pass 1

MPLST
Object Code
Pass 2

6-3

6.1.2.3.2

SYMTAB Entries

o

·f~

',"-,J
6

8

16

31

I

Lin k b a c k 1ft he L I NKBACK d ire c t i ve i sus ed, the identities of
En t r i e s s p e c i fie d 0 v e r I a y s e gme n t s are s a v e d in entries built
I toward low memory in 4-word blocks.

I
Segment
(Module)
Entry
0

Must be zero
ID

Overlay level

Sequence Number

Flags

Option

Number of

Flags

Linkback Entries

1 0 0 0 0 0
1

Overlay Level
(Main i s zero)

I

Sequence Number
(Main i s zero)

2
3

ASCI I Segment Name, Left Justified

4

Must be zero

5

Origin of Segment TSA Relative*

6

Number of Bytes in Module Common Delta

7

Transfer Address

Last (END) Address of Segment
* Bit z e roo f the wo r dis set i f the 0 rig 1 n i s the end
of a specified segment; bit is set if the origin is in
the end of the previous overlay level.

Flags

10

The CATALOG directives for the overlay was preceded by an
LORIGIN or ORIGIN directive.

01

The segment has a transfer address.

Option Flags

6-4

00000001

Suppress printing of module map

00001000

Suppress output of load module to disc file

00010000

Punch load module on cards

00100000

Output Segment's SYMTAB

O~'··
',,"

c

Defined
Entry
0
Point

0

8

6

I

ID

31

Flags
0 1 a 0 0 0
Section Number
Module relative address
ASCI I Name, Left Justified

1
2

3

o
Conmon

6

ID
0 0 I 0 0 0*

0

8

Flags*

Section Number **

3J
Size in Bytes (zero i f
allocated in another element

Module relative address

ASCI I Name, Left Justified

2
3

* The ID is 091100 for the first COMMON entry for a given global COMMON block.

(

**

Address (if allocated in another element, the address of the entry where
allocated).

Flags:
10 Common block is program origined in this element
01 Common block is Cataloger allocated in this element

o
Section
Entry
0

Section
Number
2

3

(

6

ID
0 0 0 1 0 0

8

31

Flags
Size in bytes
Section Origin

ASCI I Name, Left Justified

o
ID

Program 0 0
Name

a a a

1

a

Sub Lib. Block No.
Sub.Lib
Rec.
Containing
1st Record
Log.
No.

Flags

Section Number

1

31

16

8

6

Module transfer address i f
contained in this element (MTADD)

ASCI I Name, Left Justified

2

3
Flags:
10 Word 1 of entry contains Module Transfer Address
01 Program is from System Subroutine Library

a
Con t ro I
Entry

6

a a
1

Total SYMTAB Entries
for this element

ID

0

a a a

1

Flags*

Max. Bound
Required

2 Number of Words
in this Element

3

31

8

Number of words (Byte Scaled)
Allocated this Element for
Comnon and Bounding

I

(Byte Scaled) of Object Code

Module Relative Address of this E 1emen t ,
the Address of its Comnon i f any

i. e. ,

*Bit 8 set if section code
Flags:
10 Program element is from System Subroutine Library
01 Element is last in segment including (System Subroutine Library routines)

6.1.2.4

B Region

The B region makes a second pass over the object code and outputs the cataloged
segments in load module format. Absolute overlays are output in absolute format.

o
6-6

c

At the beginning of the B region, the space in the general table area not occupied by
SYMTAB is partitioned. An area large enough to build the core image of the largest
program element in the segments being cataloged is reserved. An area for an associated
relocation matrix is also reserved. Each bit in the matrix corresponds to a word in the
program element data area and is set to one if the word contains relative data. The
remaining space is allocated for a datapool table. The three-word datapool table entries
contain the datapool item name in the first and second words and the item's address in
the third word. During the second pass over the object code, the datapool item table is
searched for each datapool reference that is encountered. If not found, an attempt is
made to locate the item in the datapool dictionary. If the item is found, it is added to
the datapool table. Items are added sequentially to the table. Wraparound occurs when
table space is exhausted, with new items replacing previously stored items.
An image of each program element comprising each segment is built in memory before
being written to the segment's disc file (if not suppressed). A module map of a segment
is printed before the next segment is formatted. After all segments are processed,
request SY MT ABs are output.

6.1.3

Load Module Structure

A load module consists of one or more program elements in a form which requires only
load origin biasing at load time. A program element is the unit of program organization
bounded by the assembler directives IIPROGRAMII and "END". Program elements include
programs written by the user and any subroutines called from subroutine libraries. All
program elements must be assembled in the relative mode.
Each load module occupies a permanent file whose name is the name by which the
module is known to the system.
The load module consists of up to 6 major segments. They are: the preamble, the
resource requirement summary, CSECT data, CSECT relocation matrix, DSECT data, and
DSECT relocation matrix. Either the CSECT segments or the DSECT segments may be
omitted if they are empty. The resource requirement summary block is always present
even if it is empty.

6-7

I

,I
!

Load Module Preamble Equates
Byte

:f "\.

Word

V

-

0

0

PR.NAME

8

2

PR.USER - User name

10

4

PR.UKEY - Userkey

14

5

PR TRAN- Module transfer address

18

6

PR.CNTL

PR.FLAG

PR.NRRS

PR.PRIOR

lC

7

PR.PAGLEC

PR.PAGED

PRo PGS IZ

PR.MEMS

20

8

PR.PAGEG

PR.FILE

PR.BUFR

RESERVED

24

9

PR.OPTN

28

10

PR ORGC - Starting byte address of code section

2C

11

PR.CQ'\IC

-

Comnon delta

30

12

PR.ENOC

-

Ending byte address of code section

34

13

PR.SFAC

-

Relative f i Ie address of code section

38

14

PR.BYTEC - Number of bytes in code section

3C

15

PR.CHKC - Code section checksum

40

16

PR.SFACR

44

17

PR.BYTCR - Number of bytes in matrix

48

18

PR CHKCR- Matrix checksum

4C

19

PR.ORGD

50

20

PR.COV\D

54

21

PR.ENDD - Ending byte address of data section

58

22

PR.SFAD

5C

23

PR.BYTED - Number of bytes in data section

60

24

PR.CHKD

64

25

PRo SFADR - Address of data section relocation matrix

68

26

PR.BYTDR

6C

27

PR.CHKDR - Matrix checksum

I

70

28

PR.Snc - Global symbol block number

I

74

29

PR.SYMP

78

30

PR.DATE - Date load module was created

6-8

Load module name

-

Program option word

-

-

Starting byte address of data section

I

j

i
I
~

Comnon delta

-

Relative f i Ie address of data section

-

Data section checksum

-

-

Address of code section relocation ma t r i

Number of bytes in matrix

-

Local symbol block number

1

I

i

!

-

C'"
I

II

(

Control Information
Load Module Name (PR.NAME)
The left-justified and blank filled eight-character ASCII name of the load module.
This name must match the file name and the file must be a system file.
User Name (PR.USER)
The left-justified and blank filled eight-character ASCII user name associated with
the load module. This field is zero if the USERNAME directive was not used.
User Key (PR.UKEY)
The compressed (half word) ASCII user key associated with the load module.
field is zero if the USERNAME directive was not used.

This

Module Transfer Address (PR. TRAN)
The module relative address of where the module is to start execution when loaded.
Bit 7= 1 indicates the transfer address is absolute.
Control (PR.CNTL)

(

A flag byte that defines the following software characteristics:
Bit 0 set
Bit 1 set
Bit 2 set
Bit 3 set
Bits 4-7

= Reserved

= Reserved
= Overlay segment (PR.OVER)
= Privileged task (PR.PRIV)
=Reserved

Flags (PR.FLAG)
A flag byte that defines the following software characteristics:
Bit 0 set = absolute CSECT load addresses (PR.ABSC)
Bit I set = resident (PR.RES) (program cannot be swapped to back store when
in execution)
Bit 2 set = shared (PR.SHR) (a single copy can be shared by two or more users)
Bit 3 set = absolute OSECT load addresses (PR.ABSO)
Bit 4
= reserved
Bit 5 set = multicopy (PR.MUL TI)
Bits 6-7 = reserved
RRS CNT (PR.NRRS)
The number of entries in the Resource Requirement Summary Table.
Priority (PR.PRIOR)
The base execution priority of the cataloged task/program.

6-9

CSECT pgs (PR.PAGEC)
The number of 512-word pages in CSECT.
DSECT pgs (PR.PAGED)
The number of 512-word pages in DSECT. This is derived from the ending address of
the DSECT (PR.ENDD).
Block Size (PR.PGSIZ)
Defines the map block granularity required by the program. This granularity is the
granularity specified in the ENVIRONMENT directive. It is the number of 512-word
protection granules in a map block (10 hexadecimal for a 32/7x or 4 hexadecimal for
a CONCEPT/32).
Mem Class (PR.MEMS)
Defines the class of memory required by the program. This memory class is the
memory class specified in the ENVIRONMENT directive. The values currently
defined are:
1 for E-class memory, 2 for H-class memory, and 3 for S-class
memory. The default value is 3.
Common pgs (PR.PAGEG)
The number of 512-word pages in Global Common/Datapool.
Files (PR.FILE)
The number from the Files directive. The default value is 5 (the requirement for the
Debugger).
Buffers (PR.BUFR)
The number from the Buffers directive. The default value is 3 (the requirement for
the Debugged.
Program Option Word
A 32-bit program option word.
Description of CSECT and DSECT
CSECT Origin (PR.ORGC)
The address at which to begin loading the CSECT. Bit 7 indicates absolute origin.
CSECT Common Delta (PR.COMC)
Not used, contains 0 (zero).
CSECT Ending Address (PR.ENDC)
The address of the first free word after the CSECT.
,,~

6-10

(

CSECT Data Block Number (PR.SFAC)
The file relative block number of the CSECT data.
CSECT Data Byte Count (PR.B YTEC)
The number of bytes of CSECT data.
CSECT Data Checksum (PR.CHKC)
The checksum for the CSECT data. All half words of CSECT data are summed in a
register.
CSECT Relocation Matrix Block Number (PR.SFACR)
The file relative block number of the CSECT relocation matrix.
CSECT Relocation Matrix Byte Count (PR.B YTCR)
The number of bytes, rounded up to a multiple of 4, of CSECT relocation matrix.
CSECT Relocation Matrix Checksum (PR.CHKCR)

(

The checksum for the CSECT relocation matrix. All half words of CSECT relocation
matrix are summed in a register.
DSECT Origin (PR.ORGD)

i

The address at which to begin loading the DSECT. Bit 7 indicates absolute origin.

I

DSECT Common Delta (PR.COMD)
Not used, contains 0 (zero).

!I

DSECT Ending Address (PR.ENDD)
The address of the first free word after the DSECT.
DSECT Data Block Number (PR.SF AD)
The file relative block number of the DSECT data.
DSECT Data Byte Count (PR.BYTED)
The number of bytes of DSECT data.
DSECT Data Checksum (PR.CHKD)

c

The checksum for the DSECT data. All half words of DSECT data are summed in a
register.

6-11

OSECT Relocation Matrix Block Number (PR.SF AOR)
The file relative block number of the DSECT relocation matrix.
DSECT Relocation Matrix Byte Count (PR.BYTOR)
The number of bytes, rounded up to a multiple of 4, of OSECT relocation matrix.
OSECT Relocation Matrix Checksum (PR.CHKOR)
The checksum for the OSECT relocation matrix. All half words of OSECT relocation
matrix are summed in a register.
Global Symbol Block Number (PR.SYMG)
The relative sector number of the global symbol table. A zero indicates no symbols.
Local Symbol Block Number (PR.SYMP)
The relative sector number of the local symbol table. A zero indicates no symbols.
Date of Creation (PR.OA TE)
A doubleword containing the date the load module was created.
identical to that for C.DA TE.

The format is

Common blocks are allocated within a segment according to these rules:
1.

A common block is allocated preceding the program element which contains a
common origin referencing the block.

2.

If a common block is not referenced by a common Origin, it is allocated

preceding the first program element which contains its definition.
Program areas which are reserved but do not contai:n data and are not included in the
module common delta exist as words of zeros on disc. Therefore, these areas are
initialized to zero when loaded into core. The module common delta is an area at the
beginning of the module which occupies no space on disc and which is not initialized when
loaded. It includes bounding and common which precedes the first program element and
which precedes any common which is referenced by a common origin.

Each program element's assembled relative zero is placed on a doubleword boundary.
Common blocks are placed on 8-word boundaries. The main segment of a module with
overlays is placed on a 8-word boundary. If necessary, the size of the transient area is
increased so that it consists of an integral number of 8-word units.
References can be mad~ from an overlay segment to symbols contained within the main
segment. These symbols may be contained in subroutines called from the subroutine
libraries. The symbols are established by using the assembler directives "OEF" and
"COMMON". Within the overlay, the assembler directives "EXT" and "COMMON" allow
the symbols to be referenced. Th~ main segment may reference symbols which are
"OEFs" in overlay segments as main overlays reference symbols in lower level overlays.
Other linkage is dependent on the use of the LINKBACK directive.

6-12

~.

'\...II

6.1.4
(

Symbol Table Output Format

The Symbol Table (SYMT AB) is output by the Cataloger in a format similar to object
records output by the assembler. The format of each record is as follows:
Byte 0

I

FF

2,3

Byte Count*

Checksum

4,5
Sequence Number

6
Data Blocks

*Number of bytes in data block on card
Each data block is preceded by a control byte in the form XXXXNNNN. XXXX identifies
the data block type and NNNN specifies the number of bytes of data in the block. If
NNNN is zero, the number of bytes is 16. Data block types and their contents are as
follows:
Type (Hex)

No. Bytes Data

o

16

The Symbol Table data output as four-word
entries from high to low memory.

5

I to 8

The name of the segment during
cataloging the SYMTAB was output.

F

I

None - signals end of output.

Contents

whose

A Type 5 block is output first. Type 0 blocks are output next and are terminated by a
Type F block. All cards, except the last, contain six data blocks. The last may contain
up ~o seven blocks (6 data and I end).

6.1 •.5

Load Module Format (Card)

When card output of a load module is specified, an image of the load module is built on a
temporary file. This image is identical to the load module output to the module'S
permanent file. An integral number of 192-word records are punched to cards from the
temporary file. Therefore, 192 words are output from the last record of the module
whether the module occupies the entire record or not.
Cards containing the load module are formatted as follows:
Byte

2,3

1

Type (1)

Byte
Count

(2)

Checksum of
Data

4,5
Sequence
Number

6
Data
Blocks ( 3 )

(1)

For all cards of the module except the last, the hexadecimal value FF is
entered. The last card contains the value DF.

(2)

The number of bytes of data on the card.
The load module data. Each card contains 28 words of data except that the
last card may contain fewer.
6-13

6.1.6

r'('r>.

Object Language

\..,

The object code is the output of the language processors and is the primary input to the
Cataloger. It describes the contents to be placed into the load module as a result of the
inclusion of the object module into the Cataloger's input stream. The details of the
object language follow.
6.1.6.1

Object Module Records

The object module consists of 1 or more variable length records up to 120 bytes. Each
record contains 6 bytes of header information which describe that object record.
Byte I (Record Type)

This byte field contains either X'FF' or X'DF'. A value of
X'DF' indicates the last record of the current object
module.

Byte 2 (Byte Count)

This byte field contains the number of data bytes in the
current record. It ranges from 2 to 114 (X'2', to X'72') and
does not include the 6 bytes of header information.

Bytes 3,4 (Checksum)

This half word field is the checksum of the data bytes
within the record. It is computed by adding the data bytes
and truncating the sum to a half word.

Bytes 4,5 (Sequence)

This half word field is the sequence number of the current
object record. Its initial value is 1. If the field overflows,
the count is reset to 1.

6.1.6.2

Object Commands

The data portion of the object records consists of a series of object commands. Each
object command is described by a control byte. The control byte is the first byte (byte 0)
of each object command and contains two fields, the function code and the byte count.
The function code is the left hand four bits and ranges from X'O' to X'F'. The byte count
is the right hand four bits and is the count of data bytes for each command, exclusive of
the control byte. A byte count of 0 is interpreted as X' 10' data bytes.
A 'stringback' is a linked list of data that are terminated by a zero address. The word
containing the zero address is absolute rather than relocatable. The Cataloger will make
that word relocatable if necessary. The addresses in the list are module relative and are
19 bit word addresses. The Cataloger preserves bits 30 and 31 in stringing back the data.
The individual commands are detailed below.

C'·
,

6-14

,

6.1.6.2.1 Absolute Data

o

I

len

Absolute Data

I

len: Number of bytes of absolute data, 1-16.
6.1.6.2.2 Program Origin

1

I

3

I

Program Origin

19-bit origin, right justified.
Bit 0 must be set.
6.1.6.2.3 Absolute Data Repeat

I

.2

len

I

I
Absolute Data

repeat

len-I:

Number of bytes of absolute data, 1-15.

repeat:

Number of times to repeat data, 1-255.

6.1.6.2.4 Transfer Address
I

3

I

Transfer Address

19-bit transfer address, right justified.
Bit 0 must be set.
6.1.6.2.5 Relocatable Data

len

I

I

Relocatable

Data
len:

Number of bytes of relocatable data, 4-16.
of 4.

Must be a mUltiple

6-1 .:

6.1.6.2.6 Program Name
,~

5

"l,

I
Program

len

Bound
Program Name:

1 to 8 character program name.

Bound:

3-byte field containing the minimum bounding requirement
for the program. The nominal value is X'8', the maximum
is X'20' or 8 words.

6.1.6.2.7 Relocatable Data Repeat

6

I

len

repeat

Re 10 cia tab I e

I

Data
len-I:

Number of bytes of relocatable data, 4-12.
of 4.

repeat:

Number of times to repeat data, 1-255.

Must be a multiple

6.1.6.2.8 External Definition

7

len

symbol

Definition Address
Symbol Name:

1-8 character name of symbol being defined.

Definition Address:

19-bit address, right justified. Bit 0 must be set.

6.1.6.2.9 Forward Reference

8

6

Data
Address

6-16

Data:

19 bits of data, right justified.
relocatable

Address:

19-bit address of stringback list. Data is put into each word in
list. List is terminated by absolute a link. Bit a must be set.

Bit 0, if set, indicates data is

c

6.1.6.2.10 External Reference

len

9

Symbol Name

Stringback Address
Symbol Name:

1-8 character name of symbol being referenced.

Stringback Address:

19-bit address of stringback list. External address
is put into each word in the list.
List is
terminated by absolute 0 link.

6.1.6.2.11 Common Definition
I

len

A

I

Comnon Name

Block

Size

I

I

Common Name:

1-8 character name of common.

Block:

I-byte block number, assigned by compiler.

Size:

2-byte size of common in bytes.

6.1.6.2.12 Common Reference

B

1en

I

Block

Comnon

I

Reference
Block:

I-byte common block number referenced by data.

Common Reference:

4-12 bytes of data that reference a common
block. The base address of the common block is
added to the low order 19 bits of each word.

6-17

6.1.6.2.13 DATAPOOL Reference

c

I

len

I

Symbol Name

DATA POOL Reference
Symbol Name:

1-8 character name of symbol in DATA POOL.

DAT APOOL Reference:

4-bytes of DA T APOOL reference. Symbol's value
is added to low order 19 bits of DA TAPOOL
reference.

6.1.6.2.14 Escape to Extended Functions

D

X

Function code of X'D' indicates extended item. See Section 6.1.6.3.
6.1.6.2.15 Common Origin

E

I

3

Block

Origin

Block:

I-byte common block number.

Origin:

2-byte offset from beginning of com mon block.

6.1.6.2.16 Object Termination

F

I

o

This record terminates the object code for the current module.
6.1.6.3 Extended Object Commands

The extended object commands differ from the previous commands in the following
respects:
Byte 1 contains the function code ranging from 1 to B.
Byte 2 contains the length of the item including byte
Each command is detailed below.
6-18

o.

C"."
•

I

6.1.6.3.1 Section Definition

D

0

0

sect. no.

I

I

0

I

bounding

section size (bytes)

section name

sect. no.

I
-

8 characters

0= DSECT
I = CSECT

section name

**DSECT*
**CSECT*
!

6.1.6.3.2 Section Origin

D

I,

o

0

o

2

sect. no

o

8

o

origin

(
origin:

The offset within the section to establish as the new origin.

II
I

6.1.6.3.3 Section Relocatable Reference

~

D

0

0

sect. no.

4

-

3

length

rept. cnt.

I

Ii
i!
"

0

0

relocatable data

248 bytes.

sect. no.:

Section number the address is defined in.

rept. cnt.:

The number of times to repeat the data. A value
of 0 is equivalent to a value of 1.

relocatable data:

Data in multiples of 4 bytes whose rightmost 19
bits is a relocatable address.

6-19

6.1.6.3.4 Section Transfer Address

D

0

0

I

4

sect. no.

0

8

I

0

0

transfer address

transfer address:

The offset within the section that is the transfer
address.

6.1.6.3.5 Section External Definition

D

0

0

I

5

sect. no.

length

J

0

0

definition address

symbol name

definition address:

1

-

8 characters

The offset within the section where the symbol is
defined.

6.1.6.3.6 Section External Reference

D

0

sect. no.

0

6

length

I

0

0

string back address

symbo I name

stringback address:
Note:

I

1-8 characters

The offset within the section where the stringback
list begins.

If the address is zero and bit 0 of the address is set, a stringback is
performed to address zero of the section.

A single stringback list may not include references to both CSECT
and DSECT.

o
6-20

6.1.6.3.7 Section Forward Reference

D

0

I

7

0

I

c

0

0

0

sect. no.

definition address

sect. no.

stringback address

definition address:

The offset within the section where the symbol is
defined.

stringback address:

The offset within the section where the stringback
list begins.
I

6.1.6.3.8 Large Common Definition

D

0

I

8

0

comnon no.

I

length

0

0

comnon size (bytes)

comnon name

I

-

8 characters

(
common no.: Number assigned by compiler to common block.

6.1.6.3.9 Large Common Origin

D

0

0

corrmon no.

9

I

0

8

I

0

0

corrmon origin

common origin: Offset from beginning of common.

6.1.6.3.10 Large Common Reference

D

0

comnon no.

0

A

lengthl

rept. cnt.

4

-

0

0

relocatable data

248 bytes

common no:

Common the address is defined in.

rept. cnt.:

The number of times to repeat the data.
equivalent to a value of 1.

A value of 0 is

6-21

o

6.1.6.3.11 Debugger Information

fig

D

0

type

B

I

length

1

flag

address

1

size

symbol name

8 characters

I

(if any)

corrrnon name

8 characters

I
flg:

=

bit 4

Symbol is in extended memory (address is that of a 24bit pointer to the symbol).
= Symbol is a formal parameter (address is that of a
pointer to the symbol).
= Symbol is in common. The common name follows the
symbol's name.
= Symbol is in DA T APOOL.

bit 5
bit 6
bit 7
length:

18 if symbol is not in common
26 if symbol is in common

flag:

bit 0

type:

0

I
2
3
4
5
6
7
8
9
10
II
14

=

Symbol is in CSECT

=

integer* I
integer*2
integer*4
integer*8
real*4
real*8
complex*8
complex*16
bit logical
logical*1
logical*4
character
statement label
procedure

=

=
=
=

=
=

-=
=
=

=

=
15 --

6-22

address:

23-bit bit address. Bits 29-31 indicate bit within byte while hits
9-28 indicate hyte address.

size:

Length of datum in hytes.

symbol name:

8 character, left-justified, blank filled variable name.

comrn,

Macro:
M.TRAC

20

TBM
BCT
SVC

O,C.TRACE
1,$+2W
X'A'20

Implanted in H.IP27 such that R5 contains the CALM number.

Trace Table Entry

Word

0

1

Type 20

CALM Number

Interrupt Counter (C.INTC)

2
PSD

3
4

Ownername (DQE.ON)

5
6

DQE Entry II
(DQE.NUM)

Task Activation Sequence Number
(DQE.TAN)

Stack Frame Address
(T.REGP)

7
Printout:
C.INTC

=XXXXXXXX PSD =XXXXXXXX XXXXXXXX
MODULE = XXXXXXXX
CALM = XXXXXXXX

CALM TASK

T .REGP = XXXXXXXX

o
7-22

7.21

Trace Type 21 - Mobile Event Trace 1

. Implanted by the System Debugger via ET command.
Trace Table Entry

Word 0

Stack Frame Address
(T.REGP)

Type 21

1

Interrupt Counter (C.INTC)

2

DQE Schedule Flags (DQE.USHF)

3

Requested Task
Interrupts
(DQE.RTI)

Active Task
Interrupts
(DQE.ATI)

4

I

PSD

I
I

5

6

7

J
DQE Entry /I
(DQE.NUM)

Swap Inhibit
Flags
(DQE.SWIF)

Task Activation Sequence Number
(DQE.TAN)

I

System Action
Interrupt Requests
(DQE.SAIR)

Printout:
C.INTC

ET III TASK
USHF
SWIF

= XXXXXXXX

=XXXXXXXX

=XX

SAIR

RTI/ATI

PSD

= XXXXXXXX

= XXXXXXXX

T.REGP

XXXXXXXX

= XXXXXXXX

=XX

7-23

7.22

Trace Type 22 - Mobile Event Trace 2

Implanted by the System Debugger via ET command.
Trace Table Entry:

Word 0

Type 22

Contents of GPR 0

1

Contents of GPR 1

2

Contents of GPR 2

3

Contents of GPR 3

4

Contents of GPR 4

5

·Contents of GPR 5

6

Contents of GPR 6

,
I
I

i
!

7

Contents of GPR 7

Printout:
RO = XXXXXXXX

R 1 = XXXXXXXX R2 = XXXXXXXX

R3=XXXXXXXX

R4 = XXXXXXXX

R5 = XXXXXXXX R6 = XXXXXXXX

R7=XXXXXXXX

o
!!

Ii
I

7-24

I,

7.23 Trace Type 23 - SVC Type 15

(

Macro:
M.TRAC

23

TBM
BCT
SVC

O,C.TRACE
1,$+2W
X'A',23

Implanted in H.IP06.
Trace Table Entry

Word 0

Type 23

Bits 20-31 of the SVC

Interrupt Counter (C.INTC)
2

(

3

4

PSD
5
6

Task Activation Sequence Number (C.TSKN)

7

Stack Frame Pointer (T.REGP)

Printout:
C.INTC

SVC 15 TASK = xxxxxxxx PSD = xxxxxxxx xxxxxxxx
SVC = dddd

7-25/7-26

8.
( .

SYSTEM INITIALIZERS AND BUILDERS

This chapter describes the components of MPX-32 that are responsible for loading and
initializing the system when it is booted. The components involved are:
o
o
o

The SDT loader contained within the File Manager
The BOOT7X or BOOT27
SYSBUILD, J.INIT, J.TINIT, and RESTART system tasks

A system boot can be performed in various operating environments and involve various
system devices. In a given environment, all of the above components or a subset may be
required.
Fi~ures 8-1 - 8-3 describe the components which come into play when the system is
booted from a Software Distribution Tape (SDT), booted from the CPU front panel, and
booted from an online RESTART command.

~

..

Loader

(

(--

I.

Reads system
into memory

2.

Reads BooTxx
into memory

3.

Transfers
control to
H.LD

I

SYSINIT

I

1.

Initializes
disc/SMD
(cold start
only).

2.

Puts disc
image of
bootstrap
and system
on SMD device

3.

Initializes
system.

4.

Defines and
links SYSBUILD
as a task.

.

I

MPX-32I

1.

.I

SYSBUILD

I

Transfers
1.
control to
SYSBUILD as
a ready-to
run, realtime task

Forms disc
files from
remaining
load modules
named in
SDT directive.

2.

Positions
tape to
user files
(Master SDT
only).

Figure 8-1
Components and Functions in Boot from an SDT
Q

IRLOAD I
1.

Reads base or default
system into memory from disc.

2.

Initializes system.

I MPX-32 I

•
1.

Transfers control to
CPU Scheduler.

Figure 8-2
Components and Functions in Boot from CPU Front Panel

IRESTART I
1.

Sets restart flags
in RLOAD (default!
one-shot image
defined).

2.

Reads RLOAD
from disc to
memory via
internal buffer

3.

[ RLOAD

~

I

1.

Reads base,
default, or
one-shot
system into
memory from
disc.

2.

Initializes
system.

~

I

1.

Performs simulated
system reset.

Figure 8-3
Components and Functions in Boot from Online RESTART

8-2

MPX-32I

Transfers
control to
CPU
Scheduler.

"' __ i#1

8.1

SOT Loader

8.1.1

Functional Description

The SOT loader is a section of code written to a Software Distribution Tape (SOT) by the
portion of the File Manager that processes the SOT directive. Its purpose is to read load
modules from the SOT into memory until it encounters a transfer address. At that time,
it transfers control to that address and execution continues within the context of the last
module loaded.
8.1.2

SDT Loader Activation

The SOT loader is activated from the SDT by depressing the IPL button on the CPU front
panel with the address of the input device displayed on the keyboard. The loader code
must be the first piece of information contained on the SOT.

8.1.3

Required Input

The SOT loader requires no input. However, the starting load point may be altered bv
supplying a value other than zero in register 3 prior to depressing the IPL button.
Starting load points default to X'800' for the SYSTEMS 32/7x and X'780' for the
CONCEPT /32. .

(

8.1.4

SOT Loader Processing

The SDT loader is written to tape as absolute code by supplying the SOT directive to tr'>
File Manager. The loader code is then followed by any other load modules whose name-are supplied in the directive.
When the IPL button is depressed, the firmware reads the SOT loader from the IPL
medium into memory, starting at absolute address zero. Control is then transferred t(1
location zero, at which time the loader reads load modules into memory from tape or
floppy disc sequentially starting at the load point specified in register 3 or the defaul t
load point if register 3 is zero.
Modules are read in 192W blocks by means of a buffer reserved in low memory. The load
module preamble is read first and the appropriate information is extracted from it. Then
the Resource Requirement Summary (RRS) block of the preamble is ignored, and the
remainder of the module is loaded into memory.
A checksum is performed while loading each module. The checksum is compared with
the checksum value supplied in the preamble. If the checksum values do not agree, the
loader halts execution.
If a relocation matrix is specified in the preamble, a bias factor (determined by the load

point) is added to all relocatable items after the module has been loaded into memory.
After loading the last block of the load module, the loader checks the preamble data to
determine if a transfer address is specified. If it is, control is transferred to that address
and loading is complete. If no transfer address is specified, the next load module is rear'
in from tape, and the process continues until the loader encounters a transfer address.

8.1.5

SOT Loader Results

At successful completion (no checksum errors), all load modules on the tape up to and
including the first module with a transfer address are present in memory.
Loading has commenced at the appropriate load point, with all memory locations below
the load point undefined. For a normal boot from a System Distribution Tape (SDT),
memory resident code consists of the version of MPX-32 specified in the SDT directive,
immediately followed by the BOOTxx load module.
From this point, control is
transferred to the BOOT xx entry point as the first transfer address encountered during
loading.
The system images created by SYSGEN do not contain a transfer address.

8.2

BOOTxx (RLOAD, SYSINIT, and SYSBUILD)

The cataloged load module, BOOTxx, is responsible for system boot from an SDT only. It
consists of two program sections. The first section is named RLOAO. RLOAD contains
the bootstrap code necessary to boot MPX-32 from a moving-head (XIO/non-XIO) or
fixed-head (non-XIO) disc.
The second program section is named, SYSINIT. SYSINIT consists of code which is first
executed as a standalone process and later as a task. Running standalone, SYSINIT
creates a disc image of the bootstrap code and the MPX-32 load module on the System
Master Directory (SMD) device. This allows subsequent boot operations to be directed
from the SMO device rather than the IPL device.
SYSINIT then establishes the task, SYSBUILD, as a ready-to-run, real-time task.
SYSBUILD creates disc files from load modules on the SOT under a fully operating
version of MPX-32 (which does not yet include the File Manager). SYSBUILD is actually
comprised of code contained within the SYSINIT program section and is executed as a
task after the operating system becomes active. None of the programs or tasks
contained within the BOOTxx load module require any input other than replies to console
prompts, which will be discussed in context.
Section 8.2.1 shows the structure of BOOT xx.

c\
8-4

(

8.2.1

BOOT xx Components
BOOT xx LOAD MODULE
RLOAD PROGRAM SECTION
SYSTEM BOOTSTRAP
(written to sector 0
of SMD device)

STANDALONE
CODE/DATA

SYSINIT PROGRAM SECTION
(HAND-BUlL T TSA)
SYSBUILD TASK
(forms disc files
of load modules
read from SDT)

-------(CODE/DATA - DSCECT)

~------

-

H.LD (BooTxx, TRANSFER ADDRESS)
STANDALONE
SYSTEM AND DISC
INITIALIZATION

STANDALONE
CODE/DATA

8.3

The RLOAD Program Section

8.3.1

RLOAD Activation

o

The system bootstrap code, RLOAD, is activated after a system has been installed from
an SOT. The user depresses the IPL button on the CPU front panel with the physical
channel and subaddress of the SMD device displayed on the keyboard. The bootstrap code
will have been previously placed at Sector 0 of the SMD device by SYSINIT and will be
transferred from there into memory by the firmware during Initial Program Load (IPL).

8.3.2

RLOAD Processing

When the IPL button is depressed on the CPU front panel with the SMD device address
displayed on the keyboard, the firmware reads the bootstrap code into low memory,
starting at absolute address zero.
The amount of code read in by the firmware varies, depending on the device class (XIO or
non-XIO). The bootstrap must be able to determine the class status of the IPL device
prior to executing any of its code. This is accomplished by means of a Device Parameter
Table (OPT) and overlay logic. The Device Parameter Table (Section 8.3.4) contains
information about the specific system to be booted, and about the device from which
that system is to be loaded.
The bootstrap code is always read from the SMD device. However, the operating system
can be loaded from the same device or another disc on the same controller as the SMD
device. To accommodate this flexibility, the Device Parameter Table can contain
information specific to three different versions of the operating system: the base system
read from the SOT, a default system supplied via the on-line RESTART task, or a oneshot test system supplied via on-line REST AR T.
If it is loading from a non-XIO device, the bootstrap code overlays itself by reading from
Sector 0 of the SMD device. This is necessary because only 96W are read into memory on
IPL, from a cartridge disc, an amount insufficient to include all of the bootstrap code.
Hence, overlay logic is provided within the first 96W of the bootstrap code to insure that
all of RLOAD is resident before loading is attempted. This operation is not necessary for
XIO devices.

Next the appropriate scratchpad entries are established to perform standalone I/o to the
console and boot devices. The console i.s assumed to have physical address, X'7801' (TLC)
or X'7EFC' (fOP), while the boot device information is obtained from the Device
Parameter Table by testing the status of the Restart bit flags (base, default, or oneshot).
When the default bit is set, the bootstrap code displays a message at the console, giving
the user the ability to select the default or base image before loading begins. The
appropriate system image is then loaded into memory in 192W blocks.
The load module preamble is read first to obtain the starting sector address, byte count,
and checksum value of the system image on the disc. The RRS block is ignored. Loading
starts at X'800' for the 32/7x or X'780' for the CONCEPT/32. The last block of the
system load module contains the trap and interrupt vectors established for handlers at
SYSGEN. After the system is loaded, this block is ~oved down to low memory as an
absolute module starting at X'O'.

0
i,Ii
I'

8-6

A checksum is performed in a manner similar to that employed by the SDT loader (see
. Section 8.1.4) and compared to the value obtained from the load module preamble, if the
preamble value is non-zero. If the values do not correspond or if any other I/O error is
encountered during loading, error retry logic is executed a set number of times.
With loading complete, the firmware scratchpad is initialized from information contained
in the system area pointed to by C.SPAD. Finally, the service interrupt levels for all
peripheral devices and designated RTOM interrupt levels are enabled along with the CPU
mode. A wait state is then induced. When the interval timer fires, control is transferred
to S.EXEC20 (the CPU Scheduler) within the context of a fully operational system.
8.3.3

RLOAD Results

When the bootstrap process is complete, the system indicated by the setting of the
Restart flags is loaded into memory and initialized just as though a warm start from tape
had been performed.
8.3.4

(

The Device Parameter Table (DPT)

Function:

Defines device information necessary to boot base, default, or oneshot versions of MPX-32.

Built By:

BOOTxx/REST AR T

Managed By:

BOOTxx, REST AR T, and RlOAD

Word II
(Dec ima 1 )

o
1
2

3
4
5
6
7
8
9
10
11

Offset
(Hex)

o
4

8
C

10
14
18

15
16

lC
20
24
28
2C
30
34
38
3C
40

17

44

18

48
4C
50
54

12

13
14

19

20
21

o

7 8
R.NRST

15 16

23 24
SG.NOS

31

SG. IMAGE
SG. IMAGE Con t •
DF. IMAGE
DF IMAGE Cont.
IMAGE
IMAGE Cont.
SG. STBlK
DF.STBlK
STBlK
SG.PHYDV
SG LOGDV
DF.PHYDV
DF.LOGDV
IPLDV
SG. SPT
SPT
DF.SPT
I
I RSFLAGS
NBLK
SG. SPB
SPB
DF.SPB
I
J SG.ClAS
OF.CLAS
SG. SPC
CLASS
I
SPC
OF. SPC
OEVT
SG.OEVT
OF.OEVT
I
I SG.NHDS
OF.NHDS
NHDS
I

8- ".

Bit(s)

!!!!!!!.

0-1$

R.NRST
SC.NOS

1-2
3-4

SG.IMAGE
OF.IMAGE

'-6
7

IMAGE
SC.STBLK

8
9

OF.STBLK
STBLK

~
0

16-11

SG.PHYOV
SC.LOCOV

10

11
12

OF.PHYOV
OF.LOCOV

13

14
l'

IPLOV

0-7

SC.SPT

I-I'
16-21

OF.SPT
SPT
RSFLAGS

211
2'
26
27-31
16
17

NBLK

0-7

SG.SPB

8-1'
16-23
24-31

OF.SPB
SPB
SC.CLAS

18

0-7
I-U
16-31

OF.CLAS
CLASS

19

0-1'
16-31

20

0-7

21

8-1'
16-23
24-31
0-7
8-1'

SG.SPC
OF.SPC
SPC
SC.OEVT
DF.DEVT
DEVT
SG.NHOS
DF.NHDS
NHDS

Set By

Reset By

Size of bootstrap in 192'1' blocks
Size of base system module in 192'1' blocks

BOOTxx
BOOTxx

BOOTxx
BOOTxx

Sue system name (MPX-12)
Default system name
Current system name
Startins disc block of base system
Startins disc block of default system
Startins disc block of current system
Sase physical channeJlsubaddress
Sue losical channel/subaddress
Default physical channeJlsubaddress
Default losical channel/subaddress
Current physical channeJlsubaddress
SMO device sector per track
Default device sectors per track
Current device sectors per track
Restart bit flags
One-Shot System
Default Image Present
Console is an lOP
Reserved
Size of current system in 19211' blocks
SMO device sectors per block
Default device sectors per block
Current device sectors per block
SMO device dass (XIO or non-XIO)
Default device class
Current device dass
SMD device sectors per cylinder
Default device sectors per cylinder
Current device sectors per cylinder
SMD device type (MH or FH)
Default device type
Current device type
No. of heads on SMD device
No. of heads on default device
No. of heads on current device

BOOTxx
RESTART

REST",RT

RLOAO

RESTAkT

Description

"',

BOOTllx

BOOTxx

BOOT~lo:

BOOTD
RLOAD

BOOTIIY
RESTART

BOOTxx
BOOTD
RESTART
RESTART

BOOTxx
BOOTxx

RLOAD
BOOTD

RESTART

RESTART
RESTART

RLOAD

BOOT""
RESTART
RESTART

RESTART

RESTART

RLOAO

RLOAO

BOOTD

BOOTxx
REST,".R T

RESTART

,.tr",
,"I,
",

RESTART
RLOAO
BOOTD

REST,"" BOOTxx

RESTART
RLOAD

RESTART
REST,4RT

BOOTxx
RESTART

800Txx
RESTART

RLOAD
BOOTD
RESTART
RLOAD

RESTART
BOOT xx
REST,A,RT
RESTART

800Tllx
RESTART

800Txx
REST,A.R T

RLOAD

RESTART

c
:

"

1Ii
I

8-8

I

8.4

The SYSINIT Program Section

8.4.1

SYSINIT Activation

(
The SYSINIT program is activated by the SDT loader when its entry point is encountered
as a transfer address during a boot from the SDT. Execution continues within SYSINIT as
standalone code, since certain operating system elements have not yet been initialized.

8.4.2

SYSINIT Processing

The SYSINIT program section is used only during system boot from an SDT. When control
is transferred to its entry point by the SDT loader, the operating system is present in
memory, but has yet to be completely initialized.
SYSINIT first loads the firmware scratchpad from information contained within the
system code pointed to by C.SP AD. If the System Debugger has been included as part of
the operating system, control is transferred to it. The remainder of the standalone
portion of system initialization can then be traced by the user.

(

The appropriate information required to describe the SMD device is then placed in the
Device Parameter Table (contained within the RLOAD bootstrap code). The information
for the DPT is extracted from the SMD entry of the Unit Definition Table (UDT), which
is part of the system code. This information is then used by the bootstrap code whenever
a boot of the base system is requested.
The user is then given the option of performing a cold or warm start via a prompt at the
console. If a cold start is selected, a new disc allocation bit map is written out to every
disc identified in the disc allocation map table pointed to by C.DAMAPT using
information contained in the associated UDT. After initializing all bit maps, a zeroed
SMD is written out to the SMD device.
A cold start assumes that the SMD device was either void of any useful information or
the user wished to remove all traces of the file structure of the previous system.
If a warm start is selected, the modifications to the disc allocation bit maps and the SMD

are bypassed. From this point on, processing is the same for a cold or warm start.
The RLOAD bootstrap code is now written out to the SMD device in 192W blocks,
starting at Sector O. A psuedo load-module preamble is written out to the first block
following the bootstrap code. The pseudo preamble contains the starting sector address
of the system image, a byte count, and a zero checksum value. This is followed by a
dummy RRS block to conform to the standard MPX-32 load module format.
Next, the system image, loaded from tape and presently residing in memory, is written
out to the SMD device in 192W blocks, starting at the sector specified in the preamble.
The tape image of the system thus becomes the base system loaded by the bootstrap code
on subsequent system boots from the front panel (providing a default or one-shot system
has not been selected). If any errors occur during I/o to the disc, error retry logic is
executed a set number of times.

After the system image is written to the SMD device successfully, memory is allocated
and defined for the SYSBUILD task. A Dispatch Queue Entry (DQE) is constructed and
linked to the head of the real-time task queue. A disc allocation bit map is then written
to the SMD device to protect the bootstrap and system images (residing on the low end of
the disc) from possible overwrite by the SYSBUILD task.

t ..

'V

When this is completed, the last block of the system image in memory is moved to the
dedicated location in low memory. This block contains the trap and interrupt vectors
defined by the handlers at SYSGEN. The service interrupt levels for all peripheral
devices defined in the Controller Definition Table (CDT) are enabled along with
designated R TOM interrupt levels. The CPU mode is set, and a wait state is induced.
Up to this point, the operating system has been resident but unable to function on its
own. Hence, all I/O operations have been performed using standalone code. Now, when
the Real-Time Clock fires, execution continues within the context of SYSBUILD as the
first ready-to-run, real-time task under a functioning operating system.
8.4.3

SYSINIT Results

The system read in from the SDT is identified as the base system and an image of it is
written to the SMD device along with the bootstrap code.
If a cold start has been selected, the SMD and disc allocation bit maps of all discs are
destroyed and re-initialized. The necessary memory management and data structures are
constructed so that SYSBUILD is created as a ready-to-run task. The resident system,
read from the SDT, is initialized so that it can function on its own.

8.5

The SYSBUD..O Task

8.5.1

SYSBUaO Activation

Execution commences within the context of the SYSBUILD task when the Real-Time
Clock fires after having been enabled by SYSINIT. This occurs after all system
initialization is complete, and the operating system is capable of functioning as an
independent entity.
8.5.2

SYSBUll..O Processing

SYSBUILD is code within the SYSINIT program that can be executed as a task in order to
take advantage of the full functionality of the operating system, specifically, the
services in the I/O Control System (IOCS).
First, SYSBUILD allocates and opens the device associated with the address displayed on
the CPU front panel during IPL.
If the IPL device is a magnetic tape mechanism, the user receives the standard MOUNT
message on the console and can either continue loading modules from tape or abort the
SYSBUILD function. The MOUNT message is not displayed when IPL is performed from a
floppy disc. If a resume indication is received in response to the MOUNT message, load
modules are read from the tape and written to the SMD device under the control of IOCS
until SYSBUILD detects an End-of-File mark (written by the File Manager).

8-10

0

This alJows key load modules to be introduced to the system at a time when the File
Manager is not present. Load modules required at this point are: J.INIT (for final system
initialization), J.TSM and OPCOM (for user communication with the system), and
FILEMGR (for restoring subsequent files). See Volume 3, Chapter 4 of the MPX-32
Reference Manual for a complete description of the SOT directive.
Upon detecting an EOF mark on the IPL medium, SYSBUILO rewinds the tape. The tape
needed for subsequent RESTORE operations via the File Manager can then be mounted.
The rewind function only applies when starting up a system from a master SOT in which
several versions of the operating system are present on the tape. After performing the
rewind (if necessary), SYSBUILD exits normally. This allows the Swapper to activate
J.INIT as the next task for final system initialization functions.

8.5.3

SYSBUILD Results

All load modules included in the File Manager SOT directive after BOOT xx are written to
the SMO device so that they are available immediately when control is transferred to the
operating system.

8.6

On-line Restart

8.6.1

Functional Description

The cataloged load module, RESTART, functions as a task and provides the user with the
ahility to reboot MPX-32 online, under TSM control.
RESTART allows the user to replace the existing system with the base system defined
from the SOT or with a system of his own. If a system other than the base system is
indicated, the user can specify that system as the default for subsequent bootstraps or as
a one-time-only, test version.
RESTART is a privileged task and produces the same effect on the system as a boot from
the CPU front panel.

8.6.2

RESTART Activation

RESTART is activated in a manner similar to any other TSM task. However, the user
must be privileged in order to gain access to the utility. For a full description of the
TSM RESTART command, see Volume 3, Chapter 5 of the MPX-32 Reference Manual.

8-11

8.6.3

Required Input

0',"
,

"

REST AR T needs to know which system to use. If no name is specified in the REST AR T
command line, the base system created from the SDT (or the default system, if one is
pre~ent) will be used. If a name is specified in the command line, it may be designated as
the default system by providing an additional keyword after the system name.
The only operator input required by REST AR T is a response to a prompt at the user's
terminal. This prompt is issued by REST AR T prior to loading a new system and has the
following format:
DO YOU WANT TO BOOT (YIN):
8.6.4

REST ART Processing

The REST AR T task begins by verifying that the access flags of the user indicate a
sufficient privilege to continue the boot procedure. If the user has sufficient privilege,
RESTART reads the RLOAD bootstrap image from sector 0 of the SMD device into a
512W internal buffer. The internal buffer now contains the Device Parameter Table used
by the bootstrap code to determine what system to load and where it resides.
Next, the RESTART command line is parsed using the standard TSM scanning routines. If
no system name is specified in the command line, RESTART checks to see if the Default
bit is set within the Device Parameter Table. If a default image is indicated, the logical
and physical channel information for the device associated with that image are
initialized for use by the bootstrap code. If a default image is not indicated, the channel
information for the base system on the SMD device is used.
When a system name is supplied in the command line, RESTART checks to see if the
specified name matches the name of the base system (MPX-32). (This name is
established in the Device Parameter Table by BOOTxx before it writes the RLOAD
bootstrap image out to disc.)
If the specified name does not match the base name, the file location is determined using

the File System Execution (FISE). Then, using information contained in the UDT entry
for this file, the appropriate information is inserted into the buffer image of the Device
Parameter Table to identify the system as a one-shot system.
The first two blocks of the specified system image are read into a 384W internal buffer.
Information in this buffer is compared to the corresponding information in the resident
system image to insure that no changes will be made to the SMD when the new system is
loaded. If the two SMD definitions are discrepant, the RESTART task is aborted with an
error message.
Upon successfuUy verifying the integrity of the SMD, RESTART checks to determine if
the DEF AUL T option has been selected for this file. If so, the one-shot system data
previously inserted in the buffer image is duplicated in the corresponding default
parameter locations of the DPT to identify it as the default system. The Restart default
bit flag is also set in the buffer image at this time. The Device Parameter Table portion
of the internal buffer now reflects the device data necessary to honor the RE~T AR T
command.

8-12

o

(

RESTART writes the first block of the buffer back to sector 0 of the SMD device,
thereby installing the new device data for subsequent bootstrap operations. If a one-shot
only request has been made (file name with no DEF AUL T option), the one-shot Restart
bit flag is set in the internal buffer. In order to preclude the one-shot system from being
selected on a system boot directed from the CPU front panel, the one-shot Restart bit is
never set in the disc image of the bootstrap code.
The user is now given the option of continuing with the boot procedure or exiting via a
prompt at the console. If the response to the prompt indicates that no further action is
to be taken, RESTART exits normally. If the user has specified the DEFAULT option,
default information has been written to the SMD device and it will be reflected in all
subsequent boots from the CPU front panel, even though the online boot operation may
have been bypassed.
If the user chooses to boot, modifications to the Device Parameter Table are completed

and a simulated system reset is performed. In the simulated system reset, REST ART
issues appropriate termination commands to all devices defined in the Controller
Definition Table (CDT) found to be active with I/O operations. This is necessary to
insure that these devices will be properly initialized by the RLOAD bootstrap operation.
RESTAR Tis final action is to write the internal buffer containing the RLOAD bootstrap
image into low memory and to branch to the portion of the code that starts beyond the
overlay logic. From this point, system startup proceeds as if a boot from the CPU front
panel had been initiated.

(

8.6.5

RESTART Results

The system specified in the command line is brought up as the new, resident operating
system. All devices and I/O activity are terminated and re-initialized. If the DEFAUL T
option is selected, the Device Parameter Table within the bootstrap image on the SMD
device is changed to reflect the presence and characteristics of the default system.
8.7

J.INIT and J.TINIT Tasks

See the MPX-32 Reference Manual, Volume 3, Chapter 9, for J.INIT documentation.
J.TINIT is described in Volume 1, Chapter 5.

8-13/8-::

9.

INTERNAL PROCESSING UNIT (IPU)

9.1

Overview

The IPU is a parallel CPU connected directly to the SelBUS. Scheduling for the IPU is
accomplished by the MPX-32 executive and a new resident module, H.CPU. Execution of
an IPU task is initiated and controlled by a small executive module, H.IPU.
Synchronization between the IPU and CPU is maintained by the use of six (6) new traps
supported by the 75A version of the CPU/IPU.
Task execution in the IPU is transparent to the user. User intervention is not required
for the IPU to execute task level code.
If an IPU accounting interval timer is present and SYSGEN'd into the system, IPU

execution time and idle time are tabulated by the resident handler H.IPUIT.
9.1.1

IPU-Memory Interface

The IPU can address all locations of physical memory. All memory allocation occurs
before a task is queued for execution in the IPU. The Task Service Area (TSA) for the
task is constructed before the task is passed to the IPU, and contains appropriate map
block allocation. The IPU and CPU are thus coordinated in use of memory.
9.1.2

IPU-CPU Interface

New traps are implemented to coordinate IPU processing. Traps are:

9.1.3

0

Start IPU processing

0

IPU Supervisor Call

0

IPU errors (non present memory, undefined instruction, privileged instruction,
etc.)

0

IPU Call Monitor

o

Stop IPU processing

o

Terminate IPU processing and re<;chedule IPU
System Services and I/O

When a SVC, CALM, or undefined instruction (CD, TC, etc.) is encountered during
execution of a task by the IPU, execution is forced back to the CPU. If the task is IPU
biased, execution will remain in the CPU only for the single SVC, CALM, or undefined
instruction; the next instruction will be e ,ecuted in the IPU. Any unbiased task will be
allowed to execute as many instructions in the CPU as the scheduling algorithm and
system resources will allow.

9-1

9.2

Data Stroctures

9.2.1

Program Status Doubleword (PSD)
I
CONOITION
CODES
I

P
R
I
V

o

1

2

3

E H
X I
T S
T

4

I)

6

ct."lY
"'\
I

I

I

I

I

A P
E S
X D
P

M
A

7

9 10 11 12 13 14 15 16 17 18 19 20 21 21 23 24 25 26 27 28 29 30 3 1

8

1":-1 : : : : :~:<

N
R

PROGRAM COUNTER

P

i

I

I

I

0=0
=1

Unprivileged mode
Privileged mode

Bits

1-4

Condition codes as follows:
Bit 1 =CC1
Bit 2 = CC2
Bit 3 =CC3
Bit 4 =CC4

Bit

5=0
=1

Extended mode (OFF) CEA
Extended mode (ON) SEA

Bit

6=0
=1

Last instruction executed was not a right half word
Last instruction executed was a right half word

Bit

7=0
=1

Arithmetic exception trap mask (OFF)
Arithmetic exception trap mask (ON)

*Bit

8=0

Computer is in PSW mode (displayed PSD only) (PSW
mode not used by IPU)
Computer is in PSD mode (displayed PSD only)

9=0
=1

Reserved

Bits 13-29

Logical word address

Bit 30

Next instruction is a right halfword

Bit 32

Bit 33

62 63

Unmapped (displayed PSD only)
Mapped (displayed PSD only)

Bits 10-12

*Bit 31

K

::::I, 111 ,~fGI : : : : :,,:< : : : : 1+1

Bit

*Bit

L

I

31 33 34 36 36 37 J8 39 40 41 42 43 44 45 46 47 48 49 50 51 52 63 54 5f> 56 57 58 59 60 61

=1

B

Blocked (displayed PSD only)
Map mode
O=Unmapped
l=Mapped
Reserved

*These bits are used for display only and are not present in the PSD stored in memory.

9-2

o

Bits 34-45

Provide a word index into the Master Process List (MPL) for the base
process

Bit 46

Reserved

Bit 47

Retain current map contents

Bits 48-49

Interrupt control flags as follows:
Bits
4849

00
o1
1 0
1 1

operate with unblocked interrupts
operate with blocked interrupts
retain current blocking mode
retain current blocking mode

Bits 50-61

Provide a word index into the Master Process List (MPL) for the
current process

Bits 62-63

Reserved

9-3

9.2.2

IPU Status Word

Bit

Definition

°
1

=0, Class 0, 1, 2, or E error*
=1, Class F (Extended I/O) error*
=0,

I/O processing error

=1, Interrupt processing error*

2

Final bus transfer error

3

Bus number transfer error

4

I/O channel busy or busy status bit error*

5

Ready timeout error*

6

I/o DRT timeout error*

7

Retry count exhausted error*

8

Operand fetch parity error

9

Instruction fetch parity error

10

Operand non present error

11

Instruction nonpresent error

12

Undefined PSD mode instruction error

13

Memory fetch DR T timeout error

14

Reset channel error*

15

Channel WCS not enabled error

16

Map not found (LEM, SEM, CEMA instructions only) or map register address
overflow (map context switch)

17

Unexplained memory error

18

BRI I/O error*

19

Undefined instruction PSW mode only*

20

Map invalid access or map mode restriction error

21

IPU privileged violation or IPL I/O or memory error flag

22

IPU power fail occurred

23

IPU arithmetic exception

24

Enable arithmetic exception trap

25

Disable PSD mode traps

26

Block mode is active

27

IPU status or CPU power fail memory error (32/7x only)

28

Reserved

29

Reserved

30

Reserved

31

*
9-4

=0, CPU mode 55
mode 75

=1, CPU

Not applicable to IPU

9.3

Options

There are two scheduling options related to IPU task execution -- IPU biased and CPU
only. Either option may be specified at catalog time or at execution time.

9.3.1

IPU Bias

This option is specified as IPUB and causes every task level instruction to be executed by
the IPU.

9.3.2

CPU Only

This option is specified as CPUO and causes the task to run only in the CPU.

9.4

Task Scheduling

The relationship between the CPU and IPU is symbiotic with the CPU in the dominant
role. The IPUls function is to execute task level, unprivileged code in parallel with CPU
execution.
There are
execution:
address of
C.CIPU at
waiting for

two C. head cell addresses used by the operating system to control IPU
C.CIPU and C.RIPU. C.CIPU contains the Dispatch Queue Entry (DQE)
the task currently executing in the IPU. There is only one task linked to
any time. C.RIPU contains the DQE addresses of tasks biased to the IPU
IPU execution.

The CPU is responsible for all task scheduling, I/O, and System Services as well as for
execution of its own scheduled tasks. Synchronization and communication between the
CPU and IPU are accomplished through the use of six new trap vectors in low memory.
Tasks will be scheduled by the CPU for execution in the IPU dependent on their
cataloged status as biased or unbiased tasks.

9.4.1

IPU-Biased Tasks

Tasks cataloged with a bias to the IPU will be queued on the IPU ready-to-run state
queue, C.RIPU. Er.tries will be linked by priority, with the highest at the head. As long
as tasks reside on the IPU ready queue they will monopolize IPU execution, ahead of
higher priority unbiased tasks. Task replacement of biased tasks in the IPU will occur
when a higher priority task is queued to the IPU ready state. If a biased task is linked to
C.RIPU while a higher priority task is currently in the IPU, the higher priority task will
continue to run in the IPU.

9.4.2

Unbiased Tasks

When there are no IPU biased tasks queued to the ready-to-run state, IPU task selection
will proceed with the unbiased tasks. A search through the ready states, real time to
priority 64, will begin looking for the first eligible task. Eligibility consists of the
following:
o

Task is not restricted to CPU execution.

o

Task is not inhibited from execution.

o

There are no run requests or messages outstanding against the task.
9-5

If all three of the above are met, the candidate task is selected for IPU execution. If
;f
not, the next lower priority task is tested. If there are no tasks meeting the IPU'4.,;,:

eligibility requirements, the IPU remains idle.

9.4.3

CPU-Only Tasks

Tasks cataloged as CPU-only will not be selected for IPU execution. Typically these
tasks are I/o bound.

9.5

IPU Execution

When a task is running in the IPU, it will continue until one of the following occurs:
1.

The IPU encounters a System Service request (SVC or CALM).

2.

The IPU encounters an exceptional or error condition (privileged instruction,
undefined instruction).

3.

The CPU executes a 'START IPU' instruction.

In each of the above cases, the IPU will trap via a dedicated vector to the IPU trap
handler in order to process the event.

9.5.1 Execution of Time Distribution Tasks in the IPU
Tasks running in the IPU with Batch priorities (55-64) are not subject to priority
migration or time distribution while executing in the IPU.

9.5.2

SVC, CALM, Undefined Instructions and Errors

When a SVC, CALM, undefined instruction, or error is encountered during execution of a
task by the IPU, an internal trap occurs in the IPU. Processing for each trap is as
follows:

.

SVC

IPU SVC processing consists of 15 indirect secondary vectors pointing to a
single ICB. When a trap occurs, the OLD PSD is backed up 1 word to point
to the SVC. The corrected PSD and the registers are pushed on the task's
stack and the CPU is signaled to take control of the task and schedule
another for the IPU.

CALM

The IPU CALM trap consists of a single ICB, PSD retard mechanism and a
request for the CPU to take the task and schedule a replacement. The PSD
retard mechanism requires the use of bit 6 as well as the F and C bits of the
old PSD to determine if the 'calm' is in the left or right half word.

ERRORS

Defined errors are map fault and privilege errors. These are processed by
writing an extended abort code (either MFOl.IPU or PVOl.IPU) into the task's
dispatch queue and setting the delete request bit.
Undefined instruction errors are special case errors in the IPU. Undefined
instructions include all I/O class instructions and most of the other
privileged instructions (refer to the appropriate IPU Technical Manual for
more detailed information on the IPU instruction set). When an undefined

9-6

1";,.,'\"

'-'

instruction is encountered during execution of a task, the IPU will trap to
error processing logic with the undefined instruction bit set in the status
word. The error logic is special cased for undefined instruction to back-up
the PSD, push the stack and pass the task back to the CPU for execution of
the instruction.
Undefined errors in the IPU are all those errors other than map fault,
privilege error or undefined instructions. They are reported to the user as
'IPOI '.
Arithmetic exceptions in the IPU (as in the CPU) are handled by H.IPOF.
9.5.3

CPU Execution of IPU Tasks

An IPU-biased task sent to the CPU for execution of an exceptional condition (SVC,
CALM, etc.) will execute in the CPU only until the PSD points back to the task execution
area. At this point, the task will be relinked to the IPU ready state.
An unbiased task which has executed in the IPU but has been returned to the CPU will
remain in the CPU until it has completed or has been reselected for IPU execution.

(

9.6

IPU Executive Module Descriptions

9.6.1

Entry Point 1 - IPU Executive

This entry point is used to request task scheduling, start task execution, or stop task
execution on the receipt of traps from the 'START IPU'.
9.6.2

Entry Point 2 - Execute IPU Task

This entry point is used to remap the IPU to the task's map, perform a context switch,
and dispatch control to the task.
9.6.3

Entry Point 3 - SVC Trap Handler

This entry point is used to correct the PSD to allow the CPU to re-execute an offending
instruction. A call to the PUSH and HALT subroutines will be executed.
9.6.4

Entry Point 4 - CALM Trap Handler

This entry point is used to correct the PSD to allow the CPU to re-execute an offending
instruction. A call to the PUSH and HALT subroutines will be executed.
9.6.5

Entry Point 5 - Exceptional Condition (ERROR) Trap Handler

This entry point is used to correct the PSD to allow the CPU to re-execute an offending
instruction. A call to the PUSH and HALT subroutines will be executed.
9.6.6

Subroutine S.IPU 1 - Perform Stack Push

This subroutine pushes the registers and PSD of the current task into the next stack
frame as defined by T.REGP. This is a clean-up activity in preparation for the return of
task control to the CPU.

9-7

Subroutine S.IPU2 - IPU Initialization

9.6.7

This subroutine initializes the IPU by storing the MPL address in the scratch pad and by
setting the CPU (IPU) status word to 75 mode.
9.6.8

Subroutine S.IPU3 - Terminate IPU Execution

This subroutine contains both the trap which signals the CPU to trap and the privileged
wait instruction which is the quiescent state of the IPU.
9.7

IPU Scheduler Module Descriptions

9.7.1

Entry Point I - Field IPU Halt

This entry point fields the IPU 'HALT' trap. It schedules IPU tasks based on the following
criteria:
1.

If the head cell count of the IPU current state is 0, then the IPU is idle.

Entry point 2 schedules the current task.

2.

If the head cell count is greater than 0 and the Inhibit IPU flag is set, entry
point 2 unlinks the current task, relinks it at its base priority state, then

schedules the new IPU task.

3.

If the head cell count is greater than 0, but the Inhibit IPU flag is reset,
entry point 2 unlinks the task from the current state, relinks it to the IPU

request queue, then schedules the new IPU task.
Entry Point 2 - Schedule IPU-Biased Tasks

9.7.2

If tasks are queued to the IPU request queue, this entry point unlinks the highest priority
task, relinks it to the IPU current state, and calls the IPU start subroutine. If there are

no tasks· on the IPU request queue, this entry point goes to entry point 3 for unbiased task
selection.
9.7.3

Entry Point 3 - Schedule Unbiased Tasks

This entry point begins at the real time state queue to select an IPU candidate. It tests
each encountered task for IPU eligibility as follows:
1.
2.
3.
4.
5.

IPU inhibit flag = reset
CPU-Only flag = reset
No system actions (DQE.SAIR = 0)
No run requests (DQE.R TI =0)
Execution address is not in the operating system

This entry point continues testing each lower priority task until an eligible candidate is
found. It unlinks that task from its ready state and relinks it to the IPU current state.
This entry point then calls the start IPU subroutine. If no elibible task is found, it leaves
the IPU idle.

9-8

Subroutine S.CPUI - Link Task to IPU Request State

9.7.4

This subroutine links a task to the IPU request queue. If the task is higher priority than
the current IPU task, IPU task replacement takes place.
9.7.5

Subroutine S.CPU2 - IPU Eligibility Test

This subroutine contains the tests for task eligibility to run in the IPU.
checked are:

a.

Is the task executing in the monitor (DQE.OSD)?

b.

Is the task CPU only (DQE.IPUR)?

c.

Is the task IPU inhibited (DQE.IPUH)?

d.

Is a system action request pending against the task (DQE.SAIR)?

9.8

IPU Accounting Module Descriptions

9.8.1

Entry Point 1 - Field Interval Timer Interrupt

The items

This entry point fields the IPU accounting interval timer interrupt. If there is a current
IPU task, it updates a local IPU execution time accumulator. If the IPU is idle, the IPU
idle time accumulator (C.IDLAl) is updated. The timer is then reset for I second and the
handler is exited.
9.8.2

Subroutine S.IPUIT I - Perform Accounting After IPU Trap

This subroutine is called by H.CPU after an IPU HALT trap is fielded. It updates the
TSA of the current IPU task with the accumulated IPU execution time and resets the
interval timer to accumulate idle time.
9.8.3

Subroutine S.IPUIT2 - Perform Accounting Prior to Starting the IPU

This subroutine is called by H.CPU just prior to calling S.EXEC80 to start the IPU. It
updates the IPU idle time accumulator and resets the timer to accumulate execution
time.
9.9

IPU SYSGEN Directive

Upon encountering the following directives, SYSGEN automatically includes H.IPU and
H.CPU in the target system and sets C.IPU to indicate the IPU is configured:
//HARDWARE
/PARAMETERS
IPU
If an IPU accounting interval timer is present, the following is required (after the

/INTERRUPTS directive):
PRIORITY =77,R TO" =(channel,subaddress),PROGRAM=H.IPUIT,INTV
However, if a Scientific Accelerator is also configured, priority 3F should be used for the
IPU accounting interval timer.
9-9/9-1';

I

:

-.~/

10.

MPX-32 HANDLER FOR HIGH SPEED DATA INTERFACE (HSD)

10.1

HSD Overview

The HSD handler is an optional software component of MPX-32 which provides general
device support for user devices connected to an MPX-based SERIES 32 computer.
The handler design is based on the notion that the HSD hardware acts as a controller: it
performs hand shaking with the CPU and performs all SelBUS operations needed to fetch
and store either data or status relating to requested operations. Therefore, references to
the HSD imply controller functions which are generic to I/O operations in general. The
device attached to the HSD is the user's addition. Little is known or presumed about its
nature. The general assumption is that the device can source and/or synchronize data
with the possibility of presenting device specific status on request.
For additional information, refer to the High Speed Data Interface Technical Manual,
publication number 325-329132-000.
10.2

Related Data Structures

The HSD handler provides a software interface between MPX-32 tasks and the HSD. The
HSD, in turn, provides a hardware interface to a user device. The HSD is a class 'D' I/o
device that uses an Input/Output Command List (IOCl) located in the processor memory
to provide the commands for the operation. The IOCl is made up of one or more
Input/Output Command Blocks (IOCB's). For each I/O operation processed by the HSe
handler, an IOCl will be constructed. When the operation can be, it will be initiated b~
loading the address of the IOCl into the Transfer Interrupt (TI) location assigned to the
device and executing the command device instruction START I/O for the HSD.
10.2.1

HSD I/O Command Block Structure

The HSD uses a four word 10CB with the following format:

0

7 8

23 24

15 16

~

1

Word

o

HSIXMD

UDDOv1D

Transfer Count

1

Data Address or Device Comnand

2

Unused by Hardware (Software)

3

HSD/Device Status Word

10-

C'

", \

where:
-,,

HSDCMD is the HSD command and defines the operation of the controller with the
following bit definitions:
Bit

o
1
2
3
4
5
6

7

UDDCMD

is the user device dependent command byte and is
passed by the HSD to the user device.

Transfer Count

is the count in bytes to transfer when the operation is
not a command transfer or Transfer in Channel.

Data Address

is the physical address of data to be read or written (if
data transfer operations) or the address of the 10CB to
process next if a Transfer in Channel.

Device Command

is a 32-bit value sent to the device in the case that
HSDCMD Bit 1 is set to A 1.

Unused Word

is made available for use by the software.

HSD/Device
Status Word

10.2.2

When set indicates input transfer, reset for output.
Command transfer, Word 1 of 10CB is sent to device.
Device status request, store into Word 3 of 10CB.
Continue on Error.
Interrupt when completed processing 10CB.
Transfer in channel; that is, branch to specified 10CB.
Command chain, that is, execute next 10CB.
Data chain, continue transfer with address and count specified
in the next 10CB.

is used to store operation status whenever an interrupt
on end of block is requested or to store external device
status returned in the case that HSDCMD Bit 2 is set.

IOCB Classes

The HSD I/o Command List (IOCL) is composed of one or more I/o Command Blocks
(IOCB's). Each 10CB is one of the following general classes depending on the bits set in
HSDCMD:
1.

2.
3.
4.
5.

Device Command Transfer
Device Status Transfer
Transfer in Channel
Data Transfer Request
Data Chain Descriptor

o

10-2
".

i

(

10.2.2.1

Device Command Transfer

Device commands are operations with the command transfer bit set in the HSDCMD
byte. The second word of the 10CB is sent to the device. This is generally used to
provide device addressing or commanding. This is normally followed by a transfer
request, but not necessarily.

10.2.2.2

Device Status Transfer

Under normal conditions, the status posted in the IOCB is controller status, i.e., generic
information about the transfer. If specific information about the device is desired, it
must be specifically requested by constructing an 10CB with bits 2 and 4 set in
HSDCMD. This will cause the HSD to request the specific device status, and store it in
the 10CB word 3. By convention, bit 0 of the returned status in word 3 is set to a 1 to
flag device status as opposed to controller (HSD) status.

10.2.2.3

(

Transfer In Channel

This command is used to instruct the HSD to continue processing the IOCL at the address
specified in the second word of the 10CB. This is a branch in the I/O Command List. A
TIC is gener:ally. used to link discontiguous IOCL's together to form one logically
contiguous command set or it is used to cause the device to reexecute the I/O Command
List. In this case, the interrupt on end of block (word 3 of IOCB) is usually set to inform
the software that the device has restarted the I/O command list.

10.2.2.4

Data Transfer Request

All 10CB's which do not have the command transfer, device status request, or transfer in
channel bits set are data transfer requests. Write request is indicated by setting bit 0 of
HSDCMD to A 1.

10.2.2.5

Data Chain Descriptor

This form of 10CB can only occur following a data transfer or another data chain
descriptor IOCB. It has the effect of specifying a continuation of the current transfer
operation. It is used to effect a "scatter write" or "gather read." One use is to account
for the discontinuities in the logical-to-physical mapping of tasks in MPX-32.

10.3

HSD Request Processing

The handler will accept requests in two general formats. One looks very much like other
MPX-32 I/O requests where the buffer address and transfer count as well as an optional
device control word is included in the File Control Block (FCB). This is referred to as
FCB format.
The other format permits the user to construct an I/O Command List (JOCL) and to have
the FCB reference this list of commands to define the desired operation. This is referred
to as STARTlO format.
10--

The STARTIO format is indicated by I/O function EXCPM (Execute Channel Program)
and the 15 remaining function codes are FCB format.

{;

In START I/O format, there are two variations. The difference is whether the IOCL
provided is a logical or physical 10CL. A physical 10CL is a final device I/O command
list ready to be processed by the device. All addresses are physical and discontinuities in
the logical to physical mapping have been resolved by breaking the request into
physically contiguous segments with data chaining. A logical 10CL is an I/O command
list representing the desired operation into the logical address space of the task. It must
be transformed to a physical 10CL. This means that the addresses must be changed to
physical, and logical address discontinuities must be accounted for by breaking the
transfer into a series of data chained transfers.
For tasks which will perform the same operation repeatedly, the overhead of translation
may not be acceptable. The physical 10CL can be generated once and used on each
subsequent request. Note that tasks using a single physical IOCL must be privileged and
non-swapable. Physical IOCL is indicated by the task setting the "Data Format Inhibit"
bit in the FCB general control flags byte.
10.3.1

FCB Format Request

This form of request provides an interface to the user device compatable with standard
devices and provides the flexibility to control almost any device. The FCB interface is
designed to permit a device command and/or a data transfer to be initiated as the result
of a user request. The standard MPX-32 FCB used to request I/O contains fields to~/
define buffer address, byte count, and device address. See Volume 1, Chapter 7 of the
MPX-32 Reference Manual for relateci FCB information.
For requests which involve data transfer, the buffer address and byte count describe the
user buffer for the operation. The device address field in the FCB is used to supply the
data to send to the device for device command transfers.
.
Note:

MPX-32 supports two variant forms of the FCB, normal and
extended. Both forms are supported, however, the normal
form has limited transfer count and device address fields
which will restrict functionality.

MPX-32 supports 16 I/O operation codes. Section 10.3.1.1 defines the operation code
number, its name, its corresponding IOCS entry point number for reference, its use by
the HSD handler, and special considerations.

10-4

10.3.1.1

Name

EP

0
1
2

OPEN
RWND
READ

1
2
3

device/handler init
device control function
output data transfer

3

WRITE

4

input data transfer

4
5
6
7
8
9
10
11
12
13
14
15

WEOF
EXCPM
ADVR
ADVF
BKSR
BKSF
UPSP
ERPT
EJCT
CLOSE
RSVP
RLSP

5
10
7
8
9
19
20
21
22
13
24
27

Op Code

(

I/o Operation Codes

10.3.1.2

Use

device control function
ST AR TIO format request
device control function
device control function
device control function
device control function
device control function
device control function
device control function
device/handler reset
device control function
device control function

Notes
only called once until close
(rewind device)
may cause device command
status
may cause device command
status
(write end of file)
not used for FCB format
(advance record)
(advance file)
(backspace record)
(backspace file)
(up space)
(erace or punch trailer)
(eject)
(reserve port)
(release port)

Device Open

This function is intended for user device specific processing as required. The standard
handler will contain a null routine that can be expanded by the user as needed.
10.3.1.3

Device Close

This is the complementary function to open and will also consist of a null routine.
10.3.1.4

Device Control Functions

All device control functions will dispatch to a common routine in the device driver. An
internal table, which could be written at open time, is used to set the UDDCMD field of
the IOCB. The device address field from the FCB is used as the device command word
(IOCB word 1) and will be sent to the device.
Users have the option of adding specific processing to the standard handler on a per
operation code basis. The first FCB special flag bit (bit 8 of word 2 of FCB) is used to
indicate if device specific status should be requested after the device command
transfer. This results in a second IOCB being added to the IOCL. The device status wlll
be returned in extended I/O status word 2 of the FCB. This requires that the request be
made using the expanded FeB.

(
10- 5

10.3.1.5

Data Transfer Initiate Requests

Input and output requests are processed in the same fashion. The only difference is the
direction bit in the HSDCMD. The following special flag bits are used to control the
operation:
SCFG
SCFG
SCFG
SCFG

0
1
2
3

Request Device Status After Transfer
Send Device Command Prior to Data Transfer
Disable Timeout on this Request
Set UDDCMD from Least Significant Byte of Word 2

Request Device Status After Transfer - This bit indicates that an IOCB should be
added to the IOCL to retrieve device specific status after the data transfer has
completed.
Send Device Command Prior to Data Transfer - This bit indicates that an 10CB
should prefix the data transfer to transmit a device command word to the device. If
the FCB is the expanded form, the value sent is the 32-bit expanded random access
address. Otherwise, the value sent is the least significant 20 bits of word 2 of the
10CB: the random access address field.
Disable Timeout on this Request - This flag indicates that the operation will take an
indeterminable period of time and the handler should wait an indefinite period of
time for the I/O to complete. This generally only has meaning on read operations.
Set UDDCMD from Least Significant Byte of Word 2 - This bit indicates the
UDDCMD byte in the data transfer operation should be set from the least significant
byte of the random access address field of the FCB. This provides the ability to pass
additional control information to the device without modifying the device driver.

10.3.2

STARTIO #Format Requests

The STARTIO format is intended to permit tasks to take full advantage of the hardware
capability available from their device/HSD interface.
A STARTIO format request is indicated by the operation code EXCPM. The data format
inhibit flag bit indicates request with physical IOCL. For physical 10CL requests, the
handler simply queues the request for processing. For logical requests, the IOCL must be
made physical.
This involves three transformations. First, all addresses in data transfer 10CB's must be
converted to physical. In addition, each time a transfer crosses a physical boundary,
(8KW for a 32/7x and 2KW for a CONCEPT/32), the request must be broken at the
boundary, and data chaining must be specified to account for the physical discontinuity
of the task address space. Finally, Transfer in Channel request addresses must be
updated to reflect the final address of the target 10CB. This must account for
expansions in the 10CL due to intervening data transfers that have crossed map blocks.

10-6

The HSD device handler in MPX-32 supports two additional functions as part of the start
I/O protocol. They are:
1.
2.

Subtract one and branch non-zero 10CB (SOBNZ).
Asynchronous status presentation.

These functions are initiated when the
interrupt when Transfer Interrupt (TI)
indicates that the interrupt on End of
the list. The 10CB could be a TIC or a
10.3.2.1

HSD handler receives a non-terminal interrupt (an
status does not indicate End of Line (EOL». This
Block bit was set on an 10CB that was not last in
command with the command chaining bit set.

Subtract One and Branch Non-Zero

This function is a special version of the Transfer in Channel 10CB. It provides the ability
for the task to specify that a series of 10CB's may be executed a specific number of
times.

0

(

7 8

2324

15 16

11

Word

a
1

-2
3

HSIX1v1D

UDDCMD

1

Not Used

Address of Next IOCB
Initial Count

Current Count

Normal Next IOCB Address

The HSDCMD specifies Transfer In Channel (TIC) and interrupt on end of block. When
processing starts, the initial count and current count values are equal to the number
minus 1 of times to execute the IOCB loop. The contents of word 1 and 3 are equal of
the address of the 10CB to execute in the loop.

(-

Each time the HSD processes the TIC, it will interrupt. The handler will detect the
interrupt to be a SOBNZ function and subtract one from the current count value. When
this causes the count to go to zero, word 1 is modified to contain the 10CB following the
SOBNZ. On the next pass, the interrupt will indicate that processing has passed out of
the loop. The handler resets word 1 to the loop IOCB from word 3 and resets the current
count from the left half word of word 2.

10- 7

( '"

I.

'I

, .¥

10.3.2.2

..

Asynchronous Status Presentation and Notification

Asynchronous status presentation and notification is a software analog to the hardware
capability to receive an interrupt and HSD status on the completion of each block, or the
ability to explicitly request status from the device at the completion of any operation.
Asynchronous Status Presentation - When a logical JOCL is converted to physical
and asynchronous status is required. The address of the logical 10CB is saved in
word 2 of the physical 10CB. When the HSD handler receives a non-terminating
interrupt, the 10CB indicated by the TI location indicates status should be posted in
the user space. This is done by copying word 3 of the physical 10CB to word 3 of
the logical 10CB and by adding to the right halfword of word 2 of the logical 10CB
to indicate that the status changed.
Asynchronous Notification - Asynchronous notification is a logical extension to the
I/o end action routines in MPX-32. They are delivered with the same priority as
I/o end action routines so that notification routines will not interrupt end action
routines and vice/versa.
Whenever the HSD updates status in the task's logical address space, it checks to
see if the previously requested notification has been delivered. If yes, the request
for notification interrupt is requeued to the Task Interrupt Dispatch Queue. If it
has not been delivered, nothing further is done. Whenever the task receives the
interrupt. It must check for all possible status changes until it finds one that has
not changed. On the next interrupt, the task can be assured that the status will
have changed, since the hardware executes the 10CL in a well defined order. The
task should know where to look for status changes.
10.4

HSD I/O Request Processing Details

When an I/O request is made by a task in MPX-32, 10CS performs some initial
validation. If validation is successful, IOCS transfers control to the associated device
driver at entry point five with the address of the user's FCB as input. Byte zero of the
FCB is set to contain the requested operation code in the range of 0 to 15. The handler
performs an indexed jump based on this value. In the standard driver, this will result in
codes 0 to 13 going to the FCB format request routine, 14 to the logical 10CL routine,
and 15 going to the physical IOCL routine.
10.4.1

FeB Format Request Processing

Processing of the FCB request is done in two phases. First, the required size of the IOCL
is computed. This is added to the size of the I/O Queue Entry (lOQ) and the 10Q is
allocated from the system's memory pool. The I/O queue portion is then initialized by
the IOCS routine INIT .IOQ. The JOCL is then constructed according to the tables based
on the tasks operation code. The request is queued to the CDT and initiated in its turn.
When it completes, the final status is sent into the FCB and the request is terminated.

10-8

o

(
10.4.1.1

FCB Request JOCl Size Computation

The IOCL for FCB format request has from one to three sections in it. They are any
combination of:
1.
2.
3.

Device Command Transfer IOCB
Data Transfer IOCL
Device Status Request IOCB

The device command and status IOCBls are always one word. Space is allocated if the
related function is required. The data transfer IOCL is one IOCB to initiate the request
with one additional IOCB for each map block crossed by the transfer. The total size is
the sum of the required pieces.
10.4.1.2

FCB Request JOCl Construction

The following procedure defines the construction of the IOCL:
1.

Set IOCBPTR to first IOCB.

2.

If device command transfer required, then:

o set HSDCMD to CMDXFER
o set device address from FCB to word 1 of IOCB
If data or device status transfer required, then:

o set command chain in HSDCMD
o advance IOCBPTR
o ENDlF
ENDlF
or
If data transfer, then:

o set HSDCMD to read
o if transfer is write, then set output bit in HSDCMD
W: set XFERADR in IOCB to transfer address·
o set XFERCNT in IOCB to number of bytes within map block
o add XFERCNT to transfer address
o subtract XFERCNT from transfer count
If transfer count greater that zero, then:

o set data chain in HSDCMD
10-9

o advance IOCBPTR
o go to W
o ENDIF
3.

If device status request, then:

o set command chain in HSDCMD
o advance IOCBPTR
o ENDIF
4.

If device status transfer, then:

o set HSDCMD to XFRDEVSTAT
5.
10.4.2

Set interrupt on End of Block in HSDCMD (for last IOCB)
Logical IOCL STARTIO Format Request

Users of this form of request will generate a logical IOCL. This will contain some
number of IOCB's that define their operation. The IOCL will perform anyone the
following operations:
1. Command Device
2. Transfer In Channel
3. Data Transfer
4. Data Chain
The logical IOCL must be converted to a physical IOCL since the device deals in terms of
physical addresses which can not be generated by a non-privileged user. Also, transfers
which cross map block boundaries must be separated using data chaining to allow for
physical memory discontinuities. The entire IOCL is copied to the system memory pool
to perform the conversion. This insures the physical IOCL itself is physically contiguous.
10.4.3

Conversion of Logical to Physical IOCL

The conversion process varies for each type IOCB in the logical IOCL. Command device
IOCB's need no conversion other than the move to the physical IOCL.
Transfer In Channel IOCB's must be moved and the physical address of the target IOCB
must be found. This results in a two pass conversion of the IOCL. During pass 1, the
TIC's are simply copied to the physical IOCL. Also on pass 1, word 3 of each IOCB in the
physical IOCL is loaded with the logical address of its counterpart in the logical IOCL.
This serves as a logical to physical address translation table. At the end of pass 1, when
the IOCL has been expanded to its maximum size, pass 2 is initiated. Pass 2 searches the
physical IOCL for TIC's and then searches the physical IOCL for the JOCL which
corresponds to the logical IOCB referenced in the TIC. The address is updated.
Data transfer and data chained entries are handled the same way as TIC's. Each time the
requested transfer crosses a map block, the IOCB is divided and data chaining is
specified. This results in the physical IOCL becoming larger than its logical counterpart
I.,'

10-10

I

(

which necessitates the use of the translation table for conversion. (Same as previously
described for TIC's.)
The size of the physical IOCl is equal to the size of the logical IOCl plus the additional
space required for the additional data chain entries needed. Therefore, the size is
computed by adding the number of TIC, device command, and device status 10CB's plus
the number needed to map each data transfer initiate or data chain IOCB.

10.4.4

Physcial JOCL Processing

Service of this request is a subset of the logical 10Cl processing in that the 10Cl needs
no conversion. Tasks must be privileged and resident to use this form of the request. An
I/o queue and a notification packet is allocated for processing this request. When
asynchronous status is presented by the device, aU that is done is to bump the right
half word of word 2 of the 10CB and request a task interrupt.

10.5

Common Request Handling

For aU requests, an I/o queue is allocated and set to describe the request. This includes
the 10Cl address to account for the variation in location of the 10Cl depending on the
request type.

(

10.6

Product Relationships

The HSD handler becomes an integral part of the MPX-32 system when included at
SYSGEN time. The handler is designed to operate with MPX-32 release 1.2 and above. It
will require minimum 1.2 level software to operate.

10.7

Device Considerations

Development of the generic HSD handler has uncovered several characteristics of the
HSD which would require a significant increase in the overhead of using the device if
programmed around. They are described in this section.
1.

The device will not interrupt on END-OF-LIST unless explicitly told to do so.
It is software's responsibility to insure that the IOE bit is set whenever an IOCB
does not have COMMAND or DATA CHAINING set in order to insure that an
interrupt is generated when the device goes idle.

2.

In the case of non-present memory or FIFO overflow when the 10CB has
CONTINUE ON ERROR set, the device will post status but only interrupt if the
INTERRUPT ON END OF BLOCK bit is set. It was felt that the device should
interrupt when it posts error status.
When the HSD is operated in MODE 2, only NON-PRESENT MEMORY errors are
effected by CONTINUE ON ERROR. Therefore, it is recommended that MODE
2 be used and that CONTINUE ON ERROR be avoided since NON-PRESENT

10-1 '

MEMOR Y errors are serious and their cause should be determined and
eliminated.
3.

If the device stops a transfer due to DEVICE-END-OF-BLOCK and is executing
an IOCB in a data chain sequence that is not the last 10CB in that sequence, it
will stop processing the IOCL. The device will not interrupt unless the IOE bit
was set in the IOCB currently being processed, or the device is operating in
MODE 2. INTERRUPT ON END OF BLOCK for an 10CB of this nature is not the
normal case. This behavior varies depending on whether it is the last data
chaining IOCB or not. Also, if COMMAND CHAIN and no INTERRUPT ON END
OF BLOCK is set in the IOCB for which DEVICE-END-OF-BLOCK is posted, no
residual byte count is given. In other words, if there is no interrupt, no residual
byte count is posted.
As indicated, this problem does not exist in MODE 2, therefore, it is again
recommended that the device be operated in MODE 2 to prevent this behavior
from causing a problem.

4.

When EXTERNAL MODE is active and the software issues a CD STARTIO, the
device rejects the command with a privilege violation, but no indication is given
to the software. The operation will timeout, resulting in a HALT I/o being
issued which will kill the external operation if it is still going.
This problem only becomes apparent when the device is operated in a
combination of normal (internal) and external control mode. This is probably
rare, however, there is no clean work around. One approach is to have the user
device force an error at the end of each external mode transfer. This will cause
an interrupt each time and if the handler had started a transfer, it would know to
restart the operation. Note that any device timeout must be set long enough to
insure that the external transfer can complete or else it may get aborted in the
device timeout routine.

5.

If the interrupt bit is set on a TIC, no SI STATUS is posted, the interrupt is

delivered, and the TIC address is lost, causing the device behavior to be
unpredictable.
Interrupts on TIC IOCBs must be avoided. When the software needs to know that
the HSD has executed a TIC, it should set the INTERRUPT ON END OF BLOCK
on the previous IOCB. By the time the software finds out what is going on, the
HSD will have long since executed the TIC and will be off processing the IOCL at
the point indicated by the TRANSFER IN CHANNEL IOCB. The speed of the
HSD guarantees this. Also, if the TIC is being used to effect a channel program
loop and manages to complete the IOCB preceeding the TIC before the software
has deactivated the interrupt, the HSD will stall and wait until the level becomes
inactive. Therefore, if the software wants to perform a loop counting operation
and modify the branch address, it can do so with repeatable behavior as long as
the interrupt service routines run with the interrupt level active until after the
adjustment, or the decision not to adjust the TIC destination address, is made.

c
10-12

«

H.

MEMORY-ONLY MPX-32

11.1

System Modifications

A synopsis of modifications
(MPX-32/M) follows.
H.I.I

made to

MPX-32 to create memory-only MPX-32

System Resource Allocator (H.ALOC)

The resource allocation module is modified primarily in the areas of task preactivation
and activation (entry points 1 and 2). Details of these changes are discussed in the
MPX-32 Reference Manual, Volume 3, Section 10.5.
All references to establishing a swapping mechanism for the task are removed. Any
ASSIGN 1 Ofc to file} or ASSIGN2 (lfc to system input/output file) references in the
Resource Requirement Summary (RRS) block of the load module are ignored and all code
associated with the processing of these assignments is deleted. All code associated with
the allocation of files of any kind is removed.
Each task is ~ssigned the pseudonym TSM.xxxx where xxxx represents the logical address
of the system console or zero if a console is not configured. This allows all tasks to
communicate with the operator's console via the TSM mechanism without requiring any
changes to the resident module H. TSM. In lieu of this, the task pseudonym entry in the
activation parameter block is ignored during an activation from M.PTSK.
In addition to the normal abort conditions, an abort indication will be issued by the
memory-only system allocator for the following reasons:

I
'If
I

(1)

If attempting to allocate an unshared resource that was not available during

task activation.
(2)

If insufficient memory to perform task loading.

(3)

If inability to resume SYSBUILD during system installation.

(4)

If inability to deallocate IPL device after dynamic task activation.

(5)

If attempt to share memory via a dynamic memory partition.

H.l.2

File System Executive (H.FISE)

The file system executive is reduced extensively from its MPX-32 counterpart. All entry
points are defined with the exception of entry points 8 (ASCII compress) and 22 (SYSGE0.:
initialization),
All entry points return an unrecoverable I/O error or null return
indication. If a call is made to any of the non-applicable entry points, the caller will be
able to process the returned conditions as though the call had been made under MPX-32.

l'

:1

I,

I'

11.1.3

System Loader (H.LODR)

The system loader has been converted to a sequential loading device. Information
obtained from the preamble buffer is interpreted to determine the starting locations of
the various load module sections, as with random access loading. However, if the current
position in the load module does not match the starting position of a particular section,
the appropriate number of records are advanced to position the file location to the
correct point before the information in that section is processed.

11.1.4

System Spooled Output (H.SOUT)

The concepts of system input/output files and batch job stream do not exist in MPX-32!M
and all references to it have been eliminated from the resident system code.

11.1.5

System Swap Scheduler (J.SW APR)

The system swap scheduler is modified to preclude the inswap or outswap of any task.
All references to the swap device are removed. The routine that searches for an outswap
candidate unconditionally suspends itself through entry point 8 of H.EXEC. Therefore,
when a memory scheduling event occurs, outswapping will not take place (hence, no
inswapping).
The swapper task continues to perform the functions of MOS memory initialization and
other memory related operations in the MPX-32!M environment.

C·."'·
'

'.'''\

i~

11-2
!"

12.

E-CLASS DEVICE HANDLERS

This chapter defines a prototype Class E device handler.
12.1

Entry Point I - Queue Drive Interrupt Service Routine

Functional Description
This entry point accomplishes rlevice access on behalf of queued I/O service requests.
Individual queue entries are processed in the order of the requestor's software priority.
Processing of an I/O queue by this entry point continues until the queue is exhausted or
until the associated channel is reserved by a user wishing to issue I/O requests directly.
Upon entry, this routine will typically perform the following functions:
1.

Post-access processing associated with the device access which has just been
completed. Post access processing most typically will include device testing,
automatic error retry, status information update in the 10Q, minimal format
conversions, unlinking of the queue entry for which processing has been
completed, and finding the next highest priority queue entry in the I/O queue
for processing.

2.

Pre-access processing associated with the next queued device access
request. Pre-access processing most typically will include minimal format
conversions and set up of multiple command device instructions which might
be necessary to complete servicing for this single request.

(

Issuance of the Command Device instructions necessary to service a particular request
may, of course, include the storing of the associated TCW (transfer count and data
address) in the appropriate dedicated TI (transfer interrupt) location.
When the queue has been emptied, processing is discontinued, and the service interrupt is
connected to Entry Point 3 (Spurious Interrupt Service Routine).
Entry Conditions
This entry point is entered at the service interrupt level, as the result of the completion
of a command issued to a device.
The new PSD (program status doubleword) is set so that the machine state will be
unmapped, interrupts unblocked, and the interrupt level that is being serviced active.
The current map at interrupt time is retained. Note that all referenced addresses must
be absolute.
The global interrupt count (C.GINT) must be incremented and all registers saved.
Exit Conditions
After issuing the next command, or after determining that the I/O queue is empty and no
more commands are to be issued, this entry point returns to the point of interrupt after
performing the following functions:
1.

Report I/O complete via the appropriate executive routine (S.EXEC 1,
S.EXEC2, S.EXEC3, or S.EXEC4).
12- !

7..

Restore the state of the machine to mapped, block all interrupts and issue a
deactivate request on the interrupt level being serviced.

3.

Exit via executive routine (S.EXECS)'

12.2

Entry Point 2 - Queue Start Interrupt Service Routine

Functional Description
This entry point initiates processing of the I/o queue for this channel. Upon entry, this
routine will set the interrupt linkage such that subsequent interrupts at this level will
cause execution of Device Handler Entry Point I (Queue Drive Interrupt Service
Routine). With the exception of post-access processing, (none exists since a command is
not completing), and the method of exiting, this entry point is functionally identical to
the Queue Drive entry point. This routine will therefore, typically merge with entry
point 1 at the pre-access processing phase.
Entry Conditions
This entry point is entered via a "BL" from IOCS with interrupts blocked. IOCS will
cause execution of this entry point whenever a request is queued for this channel and the
queue is not actively being driven.
Calling Sequence:
M.IOFF
BL
*2W,R2
BL W(-4W),R2
M.IONN

(Block Interrupts)
(From 10CS to EP2)
GPMC devices
(Unblock interrupts)

Registers:
Rl
R2

=

=

CDT Address
Handler HAT address (H.MUXO's HAT if GPMC) (WDO of 6 word
interrupt block if extended I/O)

Exit Conditions
This entry point exits directly back to H.IOCS via a TRSW after restoring the saved
registers.

12.3

Entry Point 3 - Spurious Interrupt Service Routine

Functional Description
This entry point is connected to the appropriate SI level whenever the I/O queue is not
being driven (the channel is not in use). The function of this entry point is to prevent a
spurious type interrupt from causing illegal execution of the normal handler entry
points. Normally, this entry point will keep a tally of all such spurious interrupts
·received. This tally can be used as a check to insure proper operation of the I/O channel.

12-2

C~\I

(

Entry Conditions
This routine is entered from the associated SI interrupt level. The global interrupt count
(C.GINT) mtist be incremented and all registers saved.
Exit Conditions
Exit from this entry point is via executive routine S.EXEC5.

12.4

Entry Point 4 - Lost (Timed Out) Interrupt Processor

Functional Descr iption
The function of this entry point is to take corrective measures appropriate to the device
when an expected service interrupt fails to occur. A running tally of all such time-outs
is normally kept for subsequent reference. Typical corrective action is to reset the
status of the channel by executing a CD "Terminate" command to the channel. This will
cause entry into entry point I where normal status testing and error retry can occur.
Entry Conditions

(

Whenever a command is issued to a device (normally in Entry Point 1 or Entry Point 2) a
timer associated with the channel for that device may be set. Every timer unit the real
time clock interrupt handler (H.IPCL) calls S.IOCS5 to see if a timer has expired. If the
timer has expired, S.IOCS5 forces execution of entry point 4 of the Device Handler.
When an interrupt occurs, a handler utilizing this time-out feature must reset the timer
so that it will not expire. Execution of this entry point of the handler takes place at the
priority level of the clock connected to H.IPCL.
Calling Sequence:
M.IOFF
BL
*4W,R2
M.IONN

(Block Interrupts)
(From S.IOCS5 to handler EP4)
(Unblock Interrupts)

.

~I

I!
'I

Registers:

!
R 1 = UDT address
R2 = HAT address of handler
R3 = CDT address

I

Exit Conditions
After taking the appropriate corrective measures, the Device Handler Entry Point 4 must
return to S.IOCS5. This can be accomplished by execution of the TRSW instruction.

12- ~

12.5

Entry Point 5 - Opcode Processing Reentrant Service

((-:-~\

"'-.Ji

Functional Description
In requesting a particular operation to be performed, the user program will invoke the
appropriate lacs entry point (open, read, write, etc.). The IOCS entry point will
accomplish processing of this request which is common to all devices (e.g. general
parameter validation, etc.). Ultimately, however, the IOCS entry point must pass control
to the appropriate device handler for request processing which is unique to each device.
This is accomplished by the 10CS entry point storing an operation (function) code in the
first byte of the FCR and then entering entry point 5 of the Device Handler. Entry point
5 will then examine the saved OP code to determine the requested operation. User
control specifications pertinent to the request are of course, contained in the FCB.
Entry point 5 may wish to examine these specifications in order to handle the service
request. For service requests which do not require device access, (e.g. rewind of a disc
file) a service complete return can be made to IOCS. For requests which require device
access, the handler should call subroutine S.IOCS 13 to allocate I/O queue space and
buffer space if necessary. The handler should then make a "Request Must be Queued"
return to 10CS. If this type of return is taken, laCS will expect to find in registers 5, 6,
7, the special information which must be stored in I/o queue entry words. These three
words are called the Handler Function Words, and may contain whatever information is
desired to be passed from Device Handler entry point 5 to Device Handler entry point(s)
1 and/or 2. These function words would typically contain (I) any special handling flags
required, (2) the transfer quantity and data address (TCW), and (3) the appropriate
command device instruction.
Entry Conditions
Calling Sequence:
RL

*5W,R3

(Iocs to handler EP 5)

Registers:
R 1 = FCR address
R2 = FAT address
R 3 = HAT address
Exit Conditions
Entry point 5 must select one of the following four returns by branching unconditionally
to the external labels listed below.
Return 1 (Illegal OP code-BU ILOPCODE) is selected when the OP code passed to the
device handler is clearly in error (e.g. a read operation requested from the line printer
device handled.
Return 2 (Servicing Complete-BU SERVCOMP) is selected when the request has been
serviced, with no device access required (e.g. rewind of disc file). This return may also
be taken to ignore requests for operations which have no meaning for this device, but
which the user program may have included for the sake of device interchangeability.

12-4

(

Return 3 (Post Transfer Processing Required-BU POSTPROS) is selected when device
access is required and a request must be queued, but in addition, lengthy post transfer
processing, which should not be done at the interrupt service routine level, must be
performed. Lengthy format conversion or input data manipulation are examples of this
type of post transfer processing. This will cause 10CS to impose "wait" I/o upon the
user, and when the requested device access is complete, to enter Device Handler Entry
Point 6 to accomplish the post transfer processing at the user's software priority level.
Return 4 (Queue Request-BU IOLINK) is selected when normal device access is required
to service the request.
(Note: Registers 5, 6, 7 must contain the handler function words as described above).
Registers:
R1
12.6

=

FCB address

Entry Point 6 - Post Transfer Processing Service

Functional Description
This entry point is used if the device requires lengthy post transfer processing after
input.
It would typically be used for lengthy format conversion or input data
manipulation.

(

Entry Conditions
This entry point is entered at the software priority level of the user on whose behalf the
original I/O request was issued.
Calling Sequence:
BL

*6W,X3

(IocS to handler EP6)

Registers:
RO = Return address
Rl = FCB address
R2 = FAT adress
R3 = HAT address of handler
Exit Conditions
This entry point exits to 10CS by executing a TRSW RO instruction.
Registers:
R 1 = FCR address

('
12-')

12.7

Entry Point 7 - Error Processing

* 't,

,L>

Functional Description
This entry point is entered at the software priority level of the user when 10CS
determines that an error or abnormal condition was encountered during device access.
Entry Conditions
Calling Sequence:

BL

*7W,R2

(Iocs to handler EP7)

Registers:
R 1 = FCB address
R2 = HAT address of handler
R3 = IOQ address
Exit Conditions
Entry point 7 must select one of the two returns listed below. The return is selected by
adding 0, or 1 words to the return address contained in register zero, and then executing
a TRSW RO instruction to effect the return.
Return 1 (Operator Intervention Not Applicable) is selected when operator intervention,
followed by operator specified retry of the device access is not applicable to this
particular error. It should be noted here that compatible treatment of error status
between entry points 1 and 7 is necessary. In order to effect operator specified retry,
the I/O queue entry on whose behalf the error was encountered must be left strung to the
Controller Definition Table (COT), and not unlinked as it would be if it was determined
by entry point 1 that operator specified retry did not apply. If this return is taken, the
IOQ must have been unlinked from the COT during entry point I processing.
Return 2 (Allow Operator Intervention) is selected when it is desired that an error
notification message be printed by IOCS on the operator's console, and the operator given
the opportunity to specify retry or abort of the I/O operation. If this return is taken, the
IOQ must remain linked to the COT during entry point 1 processing.
Registers:
R 1 = FCB address
R3 = IOQ address
12.8

Entry Point 8 - Device Handler Initialization I/o Handlers

Functional Description
This entry point, which may be entered only by SYSGEN, provides the capability of
handler self-initialization of all DCC/device dependent parameters, i.e., Command
Device and Test Device instructions. Device handler initialization, which is normally
entry point 8, must be the last entry point of a handler, and code connected to this entry
point should physically be located at the end of the handler.

il."''''
V

12-6
, I

i

(

Communications between the system (including SYSGEN) and the handler is via the
handler's Halfword Address Table (HAT). This protocol makes the following options
available to the handler:
1.

In all cases, SYSGEN resumes loading of subsequent modules at the address
indicated by the entry point 8 HAT pointer. This enables the handler to
allocate or release space to the system. Generally, this option is used to
overlay the handler initialization once it has been executed.

2.

If a copy of a reentrant handler has already been loaded (to service another

DCC), the handler initialization may' link its HAT to that logic. Space
occupied by the unneeded logic may be returned to the system by updating the
address in its entry point 8 HAT pointer.
Entry Conditions
Calling Sequence:
*8W,R2

BL

(SYSGEN to handler EPg)

Registers:
RO
R2
R5
R6
R7

(

= Return address
= HA T address of handler
HAT address of GPMC device handler if applicable (e.g., H.ASMP)
= UDT
address
=
bits
0-7
hardware priority level
= bits 8-31
CDT address

Exit Conditions
Return Sequence:
M.XIR
Note:

HAT

(Special SYSGEN Initialization Termination Macro)

"HAT" is a label equated to 0 relative within the handler.

Registers:
Same as on entry
Common Handler Subroutines
A set of resident, reentrant subroutines are provided for use by the I/O Device
Handlers. This set of subroutines is designed for use by entry point or 2 of a device
handler or by the I/O post processing routine S.IOCS 1.

12- -

12.9

Subroutine S.IOCS2 - Common Test Device

Functional Description

o

The' purpose of this routine is to accomplish device testing and to update the resulting
status information in the user's I/o queue entry. It is entered at the device SI priority
level.
Entry Conditions
Calling Sequence:

BL

S.IOCS2

Registers:
R 1 = 10Q address
R2 = COT address
R3 = address of test device parameter block
Note: This test device parameter block consists of 3 test device instructions for the
appropriate device as follows:
TD8000
TD4000
TD2000
In the case of a device to which 2000 level status does not apply, two NOP instructions
may replace the TD2000.
Exit Conditions
Return Sequence:
TRSW RO"
Registers:
R 1,R2,R3,R4,R5
RO,R6,R7
12.10

= same as on entry
= destroyed

Subroutine S.IOCS3 - Common Queue Entry Unlink

Functional Description
The purpose of this routine is to unlink the current I/O queue entry from the Controller
Definition Table (COT) link list. It is entered by entry point 1 of the device handler or by
the I/O post processing routine S.IOCS I at the device SI priority level or with interrupts
blocked respectively.
I

i

I,
"

12-8

Entry Conditions

(

Calling Sequence:
BL

S.IOCS3

Registers:
R2 = 100 address
R3 = CDT address
Exit Conditions
Return Sequence:
TRSW

RO

Registers:
Rl
R2,R3
RO,R4,R5,R6,R7

12.11
(

=

CDT address

= same as on entry
= destroyed

Subroutine S.IOCS4 - Half ASCn to ASCn Conversion

Functional Description
The purpose of this routine is to convert half-ASCII to ASCII coded data. It is caned by
the special I/O post processing routine S.IOCS 1 and runs at the requestor's software
priority. Note that the data is converted in place within the buffer ,i.e., data to be
converted buffer = destination buffer.
Entry Conditions
Calling Sequence:
BL

S.IOCS4

Registers:
R2
R2
R4

=
=
=

address of data to be converted
destination address for converted data
negative number of bytes to convert

Exit Conditions
Return Sequence:
TRSW

RO

12-

Registers:
RO,Rl,R5,R7
R2,R3,R4,R6

12-10

=
=

same as on entry
destroyed

12.12

(

E-CLASS Line Printer Handler Coding Example

.LINE PRINTER HANDLER
• DATE 6/0l/8Z
TIME I 17144
PROGRAM
H.~POO
t ••

RELtASE 1.5 MPX

HEAOEA

H.I-POO

-

*•• ** ••• tt._ •• *t.* ••••••••••••••
•• - ••• _.*_.***.**et_.*_*_*
____ *t __
.
.
. . . . ._t_
.
.
.

*
*

--•

LINE PRINTER HANDI-ER

*

*
*
*.tt.
__ ***** •• ___ t**_t*_*_._*_ •• _- ______ *_*._*_*.* __ ._-**- •• *****-*-*---M.EYUI
ENOM
M.IOQ.
ENOM
M.COT.
ENOM
M.UOT.
ENOM
M.FCB.
fNOM
.... ICS.
ENOM
M.OQE.
ENOM
EXT
EXT
EXT
EXT
EXT
EXT
EXT
ExT
ExT
EXT
EXT

. ,

a.ExEC)
a.ExEC"
S.EXECS
I.IUCSZ
S.lOCS)
I.IOCS10

J

1.~OCS15

I

:~

S.10(';S13
lLOPC.9DE
SERVCOMP
lU'-INf(

*

•*
*
HAT
".LPOO

SPINT

('-

•*
•
•
•

HANDLER AOUREIS TABLE
EQU
DEf
EQU
DATA"
ACH
AC"
ACH
AC"
At"
AtH
AC"
At"

I

".LPOO,LPOO.8
S
I

L.POO.l
L.POO.i
L.P~O.l

L.POO.4
L.PIIO.5
&.POO.e.
&.1'00.7
&.POO.I

LINI PRINTIR

NUM8ER 0' HANDLER ENTRY POINTS
QUEU£ DRIVE INTERRUPT SERVICE ROUTINE
QuEU£ ITARt IhTERRUPT SERVICE ROUTI~~
SPU~IOU& INTERRUPT SERVICE ROUTI~E
LOST (TIM~D OUT) INTERRUPT PROCESSO~
Opcuut PROCESS IN. REENTRANT SERVICE
POST TRANS'ER PROCESSIN& SERVICE
ERRO~ PROC£IIIN& ENTRY POINT
INIT i. P • .

12- !

I

••
PAl

';""1

PAZ
tlAl
tlA4
tlA5
PA6
~A7

PA8
~A9

PAU
PAll
~All

PA14
I'A15

*
*
*

•HL.PCOT
~PAl

SPAi
SPA]
SPA4
SPA5

•

COMMgN PARANETER'
DATA"
TD
TO
T&l
CO
OATA~

01

to1

Itl

CD
DATA ..
OATA ..
OATA.
OATA ..

EQU

DATA ..
SPA'
TAttLE
FOR
• CO
SPA7
DATA~
SPAI
DATA"
S~A9
DATA ..
SPA10
DATA"
~~All
DATA"
SPA1Z
OATA"
ttLPFCT8L &lATA.

•*
•
ITACK
ACTIVE
CO*'iAO"
FLAi.
ENTRY'T

X'7A',X'1000'
X"AI,X'4000'
X'7A',X'iOOO'
X'7A',X'O'
-4
;C'Zl'
X'Zl'
x'al t
."A',X'1000'
.
0
0

.

,

0

0
I

S-l"
.'FfD68800'
X'I"F068000'
X'FFuoaaoo'
X'FF&)6~100'

X'FF&l'"l00'

COT ADDRESS
Ttl IUUO
Ta) 4UOO
TO iOufl
Cil "SAS IC)
•
Lost !NTERRUPT TIME OUT YALUE
OlSAdLE INTtRRUPT INSTRUCTION
ENASLE INTE~~UPT INSTRUCTION
HtQU~~T l~Tt~~UPT INSTHuCTION
CIl Tt.WMINAT~
SPu~lous INTEN~UPT COUNTER
LOST1~TERRUPT CUUNTER
TI D~UICATEO LOCATION
51 OfUICATEO
LOCATION
-

E. P. 8 II'41T
- CD t::JECT AeiD PRINT
• Ca) NO SPACE AND PRINT
1 Ca) c.JECT ANI) PRINT
U Cal SPACE (OUUBLE SPACE)
CD SPACE AND PRINT

1

Z
3

•5

X'F'O'O_OO'

CU EJtCT (OP-CUOE)
ONLY (QTY TO PRINT EQU ZERO)
X'FFOoOIOO'
• CO EJECT
.
x"'w,oaoo'
• CO ~JECT
X'FFU60IuO'
1 CO eJECT
X'FFOoOl00'
0 CO iPACE
X"FO'0100'
SPACE CD SPACE
X"'DolOOO'
CO'Tt~MINATE
C' ',C·O',C'l"C~.~,~'·'

'O~MAT

CUNT~OL

INTERNAL SAVE CELLS, FLAGS, AND MASKS
tlOUNO
'II'
11£1
.1111 .

DATA'
lQU
~OSTPROC EQU
COTEMMFL EQ",
MASKi.
DATA.
MAS"l'
DATA.
MAl.lA0'- DATA.
TERMSTAT DATA.
'OUND
,SC.''''.
1t11
12-12

E. P •• INIT

0

LU,E PH INTER
SPECIAL PARAMETERS
DATA ..
DATAW
DATA"
DATA"
DATA ..

I

...

8"
I'"
1"

o

Z
3
7

X'"",

X'fi'",,'
xt"""
.·.0••••• 0·
•• lD

a...

RlillTIR SAVE ARIA
ACTIYI QUiUE ADOR"I
~VM''''~Tl~ WUlUI ADORE ••
, .. Ail
I' SiT • iNTI.IO AT I'Z
l' I&T • 'OST 'ROCESIINi RlQUIRlO
l' S.T • CD T£RMINAT£ "AI ISSUED
n.o .YT£ MAlIC
TttRI& I'T' MAl"
Dec iRa, CO TI'-MINATt
IC .... " MUIT I' DOUILlwo.l I(wHOID
i i -OlD ICRAT'MPAD
1.llle

,a.

C)

(

**_ •• *---_ .. _-*--**.****- ••• _* •• **---***._-**_ •• *-* ••• ******************
••
**
LINE PRINTE~ HANOLEH
*
£NT~Y PUINT 1
*

*
QUEuE OWl~E INTERRUPT ~ERVICE ROUTINE
•
*_.**_ •• _**-***--**---*****----**-*.******._* ••• ******-****-*********.****
,

LPOO.l

*IOCDA
TCw
EPl

lU

WEZ

2~

GEN
DAlAW

12IX'800',20/W(EP1J EPl EXtCUTAHLE CODE AOUR
x'UU010000'
UNMAP~EO, 847
~l~P CURR MAP
a~a, D49 • U • UN8LK INT I LEAVE ACT
AOOH uF 2ND .. ONO OF lOCO (32/c7)
o
D~DICATEO lCw LOCATION (32/27)
o
AuO l'TO GL.UeOL INTERHUPT CNTH
11,C.GINT
SAvE'WEGlSTf.~S
IiCO,5TACK

OATAW
OATA~

ADM

STF
M.TRAC
1FT
TDM
deT
1FT

svc

102ES
102E9

T~M

as

GOON

GONOOS
Noeo ...

TaM
BCT
BU
Lt.

ZttM
ZDM
tfCT
TaM
eCF
SiM
ZIlM
LJIW

SNL.

•
*

f'UR ut.ttuG

7

.~~.

7dO~EA

( .fQ. es,102Ett

svc

10l£9

""A',7

J

Rl,ACTlV£
Rl,CUMQEAOR
wl,R2

GET QUEUE ENTRY ADDRESS
SAVE AS COMPL.ETING gUEUE AOOR
Rl a ACTIVf. 109 ENTRY AuORESS

22,IOQ.FLGS,Xl
UNL.INK
3,IUQ.CONT,Xl
SE',GOON
HL'TUS
H2,AC1IV£

COMMAND ISSUED?
YES, dlUNCH
IS TfSTINi INHIBITED?
YES, tlRANCH
NO, TtST AND PLACE STATUS IN 109
ifT ACTIVt gU~UE ENTRY AUORESS
CL.EA~ CO TE~MINATE FL"
C~EAW OOU8L~ FLA'
8KANCH IF SET

COT£~MFL,FLAGS

O,!Ow.FCT1,Xi
SET,OODUB
1,IOQ.FCT1,Xi
SEI,NOIitOM
5,IOw.IOST,X2
O,lOQ.STAT,x2
R7,lOQ.FCT2,x2
R7,20

,

~lLL

eOM f LoUa

NO, aRANeH
SET dOM FLA' IN IOQ WRD 14
C~EA~ IN PRo'REsa 8IT IN lOQ
FfTCH TCW FROM 109
~iEP wUANTITY ONL.Y

R7,IOQ.UTRN,Xi STOH£ QUANTITY TRANSFEREO INTO IOQ
EQU
I
"ETCM COT AUDRESS
LW
fel"A1
INDICATE PUST PROCESSINi REQUIRED
StfM
POtsTPROC,"L'(lS
UNL.INK log ENT"Y FROM 109 CMlIN
ENTRY.

STM

UNLINK

7,~1

C. TlUCF, 102E9
7,l.;.TRACE
1,a .. 2w

X'C',X'21'

ANOP

ENOM
Lw
STW
TRR

=

102£9

1FT

SVC
GOTO

AH~A

X'tfl,X'21'

GOlD
102EA

OLPSU SAYf

'

,

~OUNO

:1
.1

I

•
•
•
•
•

XZ • luQ ADDRESS
Xl • C~T 4DO"£8'
EXITI
Xl & .XJ • U~CriANGEO
Hl,H4,R&
O;STHOYEO

-"GEP~

8L
EQU
La

=

az

Lw
L.
ST"
SdM
Lw
LW
ST"
Sd'"
L.ei
el
dL.T
L.A
ST"
LMI'f

i""

NORMCO

SET.TIM

Li'f

STW
SSM
EXM
EXIT
EXITl

•
•
•
•

Cl(80

UNLINK 1/0 QUEUE FROM COT

ANY MORE 1/0 QUEUE ENTRIES?
NO, dRA,...CH
FtTCM 1 BYTE MASK
~~T NExT ~Utut ENT~Y AOOR FROM COT
R~,cur."IOQ,)(l
SAVE w~EUE ~NT~Y AOORESS
"~,ACTlvE
o , 10111 • S TAT, )"f
SET !~ P~OG~ESS STATUS IN QUEUE ENTRY
GtT Tew F~OM QUEUE ENTRY
R7,10Q.FCT~,x~
GC:T CiJT AuOr(ESS
~3,PAl
r(7,.COT.TIAO,X3 STOR~ TCw IN OED. TI LOC. VIA COT
SET !IO uUTSTANOING IN COT
1,cor.FLGS,X3
Ft:TeH CPu TYPE
H7;C.MACI'!
3i.17t.t
R7,l
IF SU ••• SET TIME OUT VAL.UE
~Er.TIM
tiC7;rCW
F~T~" AOOH OF OEOICATEO TCW LOCATION
STORf TCw AOOR rN Ioca
~7,·IoeOA
"3,IOQ.UOTA,X2 ftTC~ UOT AuORESS
R7,PA6
FETCH TIME OUT VAL.UE
fH,UOT.PTOy,X3 8TO~~ TIME UuT INTO UOT
1. , U0 r • F L Ga, x1
SET 110 OUTST06 SIT IN UOT
IOQ.FCTl,X2
EXECUTE CO IN QUEUE ENTRY
R2,C~T.IOCT,Xl

wEMPT
t(,,',MASK38

~eF­

ENTRYPT,FL.AGS
SE',E.ITl
POSTPROC,FL.AGS
St:T,'-'ERGE

L.ft

~c,Cu~QEAOR

TR~

~c'Rb

L8
L.A

Rl,IOQ.PRGN,X2
Rl,SCR8L.K

T8M
BNS
T"R

2adOQ.FL.GS,XZ
CI(80
Rl,RJ

F~TCH PROGRAM NUMBER
FETCH liW SCRATCH 8LOCK ADDR
HI • PRUwRAM NUM8ER
Ri • log AOORESS
Rl • II WHO SCRATCH 8L.OCK AOOR
R, • log AOOR~55
~1L.L. COMMAND ISUEOl
NO, tlliUNCH
RJ • COMP~ETING log ENTRY ADDRESS

8L

5.1U(;315
MER'!

OEL.ETE THE 109 ENTRY
8HANC'"

ZdM
8eT
ZdM

au

EQU
T8M

8S

NOWAIT

a.IOCSl

a

SL.
dU
EQU
8L.

CLEAR ENTRY POINT FL.AG
8RANCH IF ENT~Y FROM EPi
S~OULO POST PROCEsa EXIT BE TAKEN?
Nu, ClRANCH
F~TCri CO~PLET1NG IOQ ADDRESS
Ro .-10Q ADDR

I
O,IOg.CO~T,Xi

NOWAIT
I.ExtCl

WAIT 1/0 COMPL.ETE?
NO, IRANCH
REPORT EvENT • WAIT 1/0
8HANel'!

8.EXEC4

REPORT EVENT • NO WAIT 1/0 CM'LT

Mi~'£
I

COMP~ET!

•
•

MERGE

EQU
LA
CALLEXEC EQU
1.0

LA
".TRAC
1FT
TiM
ICT
1FT
'OTO

1FT

IVC
GOTO
'02~E

'OiEC

ENDM
L.PSU

SVC
ANOP

*

1l0UND
RESTRMAP C;EN
DATA ..

(

fETCH EPI AODkEas

'R6, ICS.OLD, X2
M.!,SJACK

ffTCH OLD PSD (EPI OR EP3)
F~TCH AOOR OF REG lAVE BLOCK
FOR uUtus.

l,iU-

C.lfUCF,·102EC
a,C.TtlACE
1"·2~

•

~E.Q. 7.10iED

X'IS',X'~l'

S~C

102ED

R2,LPOg.1

'O~EC

II .EQ.

e,,02EE

X'C',X'ZI'
'UifC

""A',es

RESTRMAP

RESTURE CURRENT MAP

10
12/x'800',20/Wl008EIJ NEw PSD
X'80UI0~OO'
. 1133 a IK GRAN, 841 • KEEP CURR MAP

*
D08El

lEI

DAll

OAT ...
iL

S.EXECS

DAI dUILT IY EPI • ITORED HERE
EXIT TO a.E.XEC, NO RETURN

EXIT2

LF
TRS ..

RO,ITACK
NO

~ETURN

EQU

I

Llf

RT.SPINT
R7,.PA1S

BLOCK

o

EXT~NNAL

INTERRUPTS

REaTORE RE&lSTERI

•

•
*

*
WEMPT

•
•

aTW
L."
L."
IMW
iU

*

•
QUEUE ENTRY
DODUI
EQU
LH
aCT
L.W
ST.
L.I
t"T

~Z'COMQElOR
~Z,IOIiI.UDTl,X2

UOT.PTOv,X2
EAlT

ADOR~SI

&ET SPURIDUI INTERRUPT ADDRESS
STaRt IN II DtD. LaC.
FETC" CDMPLE.TIN& QUEUE ADDRESS
FfTC" UOT ADDWESS
Z~RO TIME OUT VALuE

IN H2

I

Rl,IOQ.FCT1.1H,XZ
&ET QUANTITY
L.E,HORMCD
BRANCH IF HO DATA TO PRINT
RT,IOQ.'CTZ,Xi FEtCH TCW
R7,.~ll.
aTORi IHTO TI DEDICATED L.OCATION
~7,C;MAC"
FETCH CPU TYPE
a7.i
3i/1xt

1'1 ;"

8Lf
LA
STW
SET.LTIM LW
L"
STW
EXM
au
HLPTOS

EQU
L~

LA
IttM
aeF
Lw
ST"
8U
NoeDTERM EQU
8L
LW

HLP ERR

•

k2,PA1
R3,PA2
CUTEI'(MFL,FLAGS
SET,NUCOTfRM
~q,TE"MSTAT

w4,IIJIl.IOST,Xl
HL"'E~R

S

IF SO ,., SET LOST INTRPT TID
E~
FETCH AODR UF DEOIC~TEO TCW LOCATION \ )
U~OATE IOC8 WITH TCW ADDRESS
FiTCH-UOT AOUHESS
fETt" LOST INT TIMEOUT VALUE
srol'(£ TIME \JuT INTO UOT
CO UPSPACE
A~O
PNINT
.

GfT COT ADO~ESS
AuDwfSS OF TO 8LOCK
tL.EAW co TERMINATE FLAG
NOT StT '.~ PROCEED NORMALLY
dlTS 1,10,16
STUR~'STATUS INTO IOQ ~RO 14
eUNTlNuE-~~OC~SSlNG

LMW
SCT
TSR

S.IUCS2
R1,AeTlvE
R4,MASl(ld
w6,IUQ.IOST,x1
lW,GuON
IH., 10

PERFURM DEY ICE TESTING
G,T QUEUE ENTWY ADDRESS
STATUS MASI(
_
GfT STATUS, ANY ~RHURS1
NU, tflUNCH
Yt.S, ~NY OCC ERRORS?

8CT
TtlR

SET,I1LPERR
REt,le

YES, dRANCH
NO, l~ UEVICE INCJP

atF
S8M
au
ToM
aCF
loM
8u

SfT,"~OTINOP

NO, ~I'(ANeH
YES, SET-GENERAL STATUS FI.AIi

L~

NOTiNOP

SET.LTIM
R7,TCW
R7,*IOCOA
rCi, l\.hil.IJOTA,Xa
,0,PA6
R7, UIH .PTOY, xa
SPAS
EXAT

EQU
I."
S8M
TtlM
8CT
ToM
8eT
ZSM
S8M
jU

4,LUQ.IOST,Xl
ML"'EWR
2S;IUQ.IOST,X1
SET,I1L.PERR
1,ICJw.IOST,X1
GUVN

•R2,ACTIVE
b,IOQ.FI.GS,Xa
1,10Q.CONT,Xi
SE T, l~oaOM
19; IOfil.FL.li3,Xa
SET,~080M

O,IOQ.STAT,Xi
PO~TPROC,'I.A"

QEMPT

HOF STATUS??
NO, dRANCH
RfSET ERROR CONDITION FOUND BIT

QUEUt ENTRY AODRESS
SfT fHROR FOUNO FLAG IN 109
EMROR PROCESSINIi INHIBITEO?
YES, dlUNCH
CHECK FOR NO-WAIT 1/0
YES, .0 UN~INK IOQ
C~EAR 'IN PRO'RES8' INDICATOR IN QU£U
INCICATl POST PROC!SSIN' ElIT R!gUI~'

C,.\

'/

1~- 'M

***_.**.****.* •• ****.*.***.***********.******-*****.************* •• -.*.-

••

Ll~E

PHINTEH
ENT~Y

•
•

*•

HANDL~A

POI~T

Z
QUEuE aIA"T INTERHUPT SERV1CE ROUTINE

*

•

*
•

****************.**************t***'**t********.**~~t*t*tt***t*t.*****.*

LPOO.Z

STF

RO,STAC~"

86M
Lw

ENTRYPT,FLA~~

S~T

Rl,PAl
R6,MAT+1W

GfT

Lw
Slw

au

~6'*PA1S

.

SAV~'H~bl~TtHS'
QU~U~ SfAHT
t~T AUOH~SS

G~T ~u£uE O~lVE

STOH~

IN'SI

D~O.

.

.

FLAG
AOuRESS
LOC.

MGEPc=

("
12-1 ..

• •• _** ___ * __ *•••• ******_**.*
*•• _*******.*
__ •• ***_*****
•• ** __ ** ••. t_*_
.
. __ ••.....
. .
...
. ... .
.

-*

LINE PRINTER HANDLER
ENTrtY POINT 3
SPURIOUS INTE~RUPT

-

-

~

-*
•

SERVICE RUUTINE

•

*
*
.***---*.*-_
••• *•• ***--*_._.*._*****-******._***-*****.**-*
SOUND
1U·
. . ... - . .
-. . -' . ••
. *~**~******
.
LPOO.3

kEZ

*
EP3

2ft

OLOP5U SAVE AHEA

GfN

1~/X'800',20/W(EPl)

OATAit

X'U00100UO'

IH.I

2"

AaM
STF

~O,STACj(

M.

31,C.GINT

flUC

1FT
TaM
BCT
1FT
SvC
C;OTO

JOZFO

1FT
SVC
1i0TO

svc

ANOP

ENOM
AdM
.LA

au

1,iU

.

tP 1 EXECUTABLE CODE AODR
d~1 : ~EEP CURR MAP
a 0 • UNeL~ INT' LEAVE ACT

UNMAP~EO,
8~8, -d49

AOU 1 TO GLUBOL INTERRUPT COUNT
SAIJE"REGISTERS
FUR OtduG

C.TRACF,10ZEF
f,C.TRACE
1,i+lit
7 .trlll. 7"OZFO
X'tt',X'21'
lOZEF
1 .EIIl. e,10iFl
X'C',X'il'

'Oif'

~'A',7

31,PAli
RZ,Lto'UO.3
CAL.L£XEC

INCREMENT SPURIOUS INTERRUPT COUNTER
FETCH EP3 AOD~ESI
BRANCH

'·."'C
-J

I,
i

12-18

(

****--.*.* .. *._ ..... *.. *.* ... _* ..... **.*_.*._-* ...... *-*****-.-_._._-.-..
. .

•

. .

•

LINE PHINTEH HANDLER
tNT'" POINT •
Losr INTtWHUPT PROCESSING

LPOO.4

EQU

I

AdM
ElM
S6M
TWSw

31,PA13

.

--•
•

---** ... _.*--_.--_ .. _*-**-_ .. _._--**---._._----**_.* ..... -.*.--.. *•• _••• _.*
•

INC~tMENT

LOST INTERRUPT COUNTER

CUfEKMFL,FLAGS

ISSUE CD TERMINATE
SET ~o TEWM. FLAG ISSuEO dIT

~o

H~TuWN

8~Al~

12-

**************_***** ••• _••• _.*.* ••• **
•• *.** ••••• ** ••• tt*t_ •• *_ •
. . ••
. **.*.**
.

*
•

•
~'I

:0

PRINTEN HANU~ER
ENT';'Y POII-H 5
OPCuUE PRuCESSING REENTRANT SERVICE
Rl:FCd ADDRESS
ENTt~=
Ai-FAT AOOiCESS

~IN~

*

•

--

*
•
*
••• ** •• t*ttt*t**t*.*************** ••• ******* •• *********t****.*t*tt.t*****•
~POO.5

*

HANO~ER

OTAB

RWNO

EQU

."

~1

EXM
8FT

114,X'l'
PAZ
OEVINOP

Z~

115

FUNCTION COUE FaN 8'T
tXECUTE 'T08000'
j~A ON ALL eCls SET
C~EAR FUNCTION WOI

~a
S~~

~3,FCts.OPCD,Xl

GfT

ttU

*UTAI3,X3

OPCODE
BOUND

Ecau

ACI1AC"
ACM
AeM
AC,",
AC,",
ACM
ACM
AeM
AC,",
AC ..
AC"
AC,",
AC,",
At'"'
AC"

EQU
SiR

EJCT

..

VECT~R

VECTUR TO OPCCJOE PROCESSOR

TAB~E

•UPEN

RWND
AE4D
N~.~T

"EUF
uNuSED
ADvR
AD'I'
~IUR
aJ(~F

1
i
3

"!»t.
7
I
9

UtitSP

iU

E~PT

11

EJ"T
CLi!
uNUSED
UNuSED

•RS,l
•

Ecay

I

LW

Rl,PAl

8L.

S.10CS13

LW

RT,SPAt.
10~lHK

READ

Ecau
EQU
EQU
EQU

•
~
•

12-20

CQUE FRUM FC8

1ft

Ih.

AOVR
AOV'

.

~J,i

M8QR
UNUSED

UP

..,

ii
14
1~

aET tlDN

F~A;

IN HANDLER FUNCTION

WD~

GiT CUT AOOR
;ET iOQ
CO EJiCT
MUIT-.' QUEUED RETURN

0

EQU
EQU
8L

I
I
I

•

EI1PT

£QU
EQU
EQU
fwU

~CR

aLo

SENVCOMP

6KSR
dKSF
OPEN
CLSE
wEOF

TMSw

ILOPCOOE

ILLEwAL OR UNSPECIFIED RETURN

S

I
REQU~ST

5ERVICIN. COMPL.ETE RETURN

NO

*
*

*
UPSP

EQU

I

Lw

R3,PAl
8.10CS13
R7,SPA4

ilL
LoW

au
~RIT

EwU
Lw
aL
LoW
LoW

(

L.W
LMH
L.W
M.CALL

svc

ENOM
.... C.LL

svc

ENOM

R],PAl
5.10eS13

GET CUT AOOR
(ifT luQ
Ri,FC~.lOQA,Xl
FiTCH 109 ADDRESS FROM FCB
Ri,I"'Q.UOTA,Xi F~TCH UOT AOORESS FROM 109
A4,MASKid
FETC" ~ aYTE MASK
A7,UOT.MSX,Xi
FETCH MAX TRANSFER COUNT FROM WOT
GET tCw FROM FCe
"et,FCS.TCw,X1
ADJUST AND CLAMP QUANTITY
I'4.IOCS,30
O,H.IUCS*i5e+30
H •.~ocs,ia

MAKE TCw ABSOL.UTE

O,H.I0CS*iSe+ia
R7,SPAS

TKR

iU

T8M
BCT
L.W
L.W
SEA

i,FCI •• CF',X1
SET,!!IBQR
HZ,FeB.IOQA,X1
A],10Q.T8UF,Xi

III

109

I

II",

L.t)
CEA

(

(i~T

CO SPACE

MBY~

LoW

SUI
'NMw
SLL
OAR
AaR
SAL.
L.l
C.M8
ICT

GET COT AOOR

CO SPACE ANU PAINT (OEFAULT NO Fe)
SET WUANTITT IN HFW!
DATA FORMATTIN(i INHIBITEO?
\'I:.S

CltT lUg AOOA
GiT AOOR OF BUFFER IN USER'S SPACE
SET ~ITENOEg ADORESSING
GtT Ft; CHAR
CL.EAN EXTENOED ADDRESSING

R5.1
Ae,MASKAOR
R5'ZO
A5,Re
~e,31

A!I,iO
Rc,·~B

DfCREMENT QUANTITY
~EEP-'UORESS UNLY
INSERT NEw QUANTITY
INCAEMENT AODR
COUNTlR

~4,HL.PFCTBL.+5B,Ri

EQ,'CFNO
Rl,l-cw

FC CHAR FOUNO
CONTINUE Sf.RCH
12-2 !

FCFND

LI
TRN
ILL
Cl
aCF

Ri,-58
RZ,Ri

SCStf

tC),O

~z,z
~Z,

II"

EQ,'+ZW

Ll
TRRM

HLPOUT
DfVl~OP

•*

Ztt,HLPOUT
RZ,6tf

Ilu

MtsLl~

Rl,HLPCDT,RZ
~";X'48FO'

al.L
STW
bU

,-POOL

12-22

ANY UATA TO 8E PRINTED

BeF
ADI
L..

LI

ASSUME SPACE I' NOT FOUND
CUNViRT TU PPSITIVE
CONvi~T TO wORD DISPLACEMENT
11 THIS A DOU~L£ SPACE AND PRINT?
NO
Y~S, SET DOUBLE FLA;

R~'FCB.SFL~,Xl

SEHVCOMP

YfS
AOJUST POINTEH FOR NO DATA
~£T APP~OPRIATE CO INSTRUCTION
Musr dE QUEUED RETURN
8UILU STATUS TO PLACE IN FC8
S~T tRROR CUND., OEVICE INOP AND
T~ST STATuS 81TS IN THE FC8 •
MOV~ TO Fl~ST HALF OF STATUS wRD
PLACE IN FCB
SERVICE COMPLETE RETURN TO laCS
DUMP LITE~ALS HERE

(
••• *•••••••••••••••••••••••••••
*••••
•••.
*•• *••••••• **-- ••
..
.. *
. ••
. _•• _••• _.*.**.

•

-•-

LINE PRINTER HANDLER
£NTWY POINT ,
POST T~AN~FE~ PROCESSING

LPOO."

EQU
TASW

••

-•••••••• *.* •• -* ••••••••• *•••••• *.* •• *._ ••• *•• _••••• *-*.***_ ••• _._-*--* ••I

. . . .

•

. . .,.

NOT APPLICAHLE • RETURN

NO

-* ••••••••••• -*.* •••••• *******.*--. •••• *.- •• _**-*-*.*.*****_._*-_
•• _----.

•
•
LINE PRINTER HANDLER
•
•
ENTK' POlNT 7
•
•
fHHON PROCESSING
•
•
•
•
***--*-_._**._*--*.***-*._-._*.***.***-*****_.*** ••• _••• *.*****.****** ••

LPOU.1

EwU
AOI

TRS~

I

~O,l"

wo

.

..

.

YES • OPERe INTERVENT. APPLIC.

i

I,
!,

*****.-_ •• *** •••• *** •• ****** •• *.*
••• ** ••
. ••
. ****.*****_
.........
. . **.***.************
.. . . .. .

*
*
*
**

LINE

PRl~TEH

ENTHY

•

**

HANULER

I'Ol~T

I

-0
•

"ANOLE~ l~lTIALIZATION

**.** •••••• *.*** •••• *••• ** ••••• ** •••• *.*.**.* •• ****************t* •• *t***
LPO,,~PAi,S~Ai;SPA1,ipA4,S'A5,SPA',SPA7,4

M.INIT

LPOO.8

-

SPA8,SPA9,SPA1Q,S~Al1,S~Ala
. .
.

M.EIM
ENUM
ST"
Lw
LB

.

7,PAI
1,~Al

5,CDT.CHAN,1
5,~3

S~C

S,AOf!F7
SUI
H.INITX f"a,:OaF8
.,PAa
LW
ANMw
.,:OaF8
5,.
O.. R
.,~Al

ST~

ENDM
p'3,&OaF8
H.INITX
L__
.,PA3
ANM ..
',iOlF8
O.. R·
5, ..
ST ..
..,~Al
ENDM
H.INITX P'4,&Oi'8
LW
.,PA"
ANMW
',iO~F8
5, ..
O~R
.,~A4

Sr.I

ENOM
M.INITX P15,lOaF8
LVI
tt,PA'
ANMW
6,iOiF8
5, •
ORR
ST ..
ENDM
LNW
SCT
"PM"
DVM"
BCF
L.l
10i'9
ST ..
L..
SRC
12-24

• ·,~'5
5,P, ..
ZIti '~i"

4,C.MTIM
4,~.I'HIM

6,AOiF9
5,1
5,5

TRN
t

'5,P"
5,CDf.lPL.,1
5,!)

o

M.!N!TX PA7,I02FI

(

L"
ANMIf
OAR

.,P"
',IU~FI

5,!

ST.
.,PAl
ENDM
M.INITX P'8,!OcFI
.,PA8
Lif
ANM"
,-,'O~FI
O~A
5,!
ST"
ENDM
M.1t~lTX

L"
ANMW
O~A

,-,PAl
P'9,~02F8

,-,P'9
,,'U~F8

5,!
,-,P"

ST"
£t4DM
Lfl
5,iOlF7
".IN!TX PAll,IOlFI
Lw
,-,~AII
,-,IOZFI
AN"'''
OAR
5,1t

(,-

ft,r'All

LI
TAR
SLL
OAM.
STL8
Cl
IlLT

2,CDT.IPL,1

END.

L"

2,~

5,'OlF'
5,UA!1
"C.MACH

4,5W,)

ADM..

,

I
I,

i

IOlFj
3,"AT+l.

LA
ST"
IT"
Ll

AOJ

I,

"i ,
),ll

ADM.
TAR
ILL
ADM"
lUI
ILL

I

5,~,

ZitI

ILL

(~\

..

ST"

r

",PA14
4,"DT.TIAD,1
5,i'Fl'

),i

5,C.IP'D

2,1

S,1l
S,U,)
2,4

i,l

i,"•

i,~1f,3

12-25

ST ..
LW
ZaR

.,O,Z

STW
au

2,4W,]

],HAT+1W

J,~l

(~:
.,$<'

l02F8

AOI

SLL

1.1

l02FC

l02F£

La
Cl
eCT
SLLO
1RA

LA
8TW
L.
ST.
1"
LW
ST ..

2,)C'10'

2,2
2,I.:.SPAO
5,iH,l
5, . (140'
5,Io'AI4
5,COT.TIAO,1
7,""40'.,COT.IPL,l

ADMW
LH
SuI
ST"
STW

102FD

lO~FC

.,'''l3'
...

ADA
ST"

6,loaFO
6,a
6,?

1,5

5,PA15
.,HAT
6,CDT.SIHA,1
.,HAT+] ..
.,~PA1S

lOZ'Z,&02'E
.,Ioa"
.,ttA4
ANOP

LW

S,!Oi'7

SPA1,I0300
M.INIT. SPA1,IUi,.
.,SPAI
L"
ANM..
.,&OZF.
OR.
S,!
1"

10]00

ST.
INOM

.,!'AI
AHQ,

a'AI,'.IOl
1"
M.INITI "AI,IOi,.
I. •
.,"AI

.....

·.10i'.
I,.

Oft"

10Jll

I'.
''"*

.,,'AI
AH~

I"~

"AI,l"'1
-.1."1 "Al,'.I'.
,,"'AJ

....

,"If

OM

•• 1IU'

I,.

C

')

,~

12-26

STW

(

"SPA]

E~DM

lOlOZ

ANOP
1FT

L-.

STW

1010]

10305

,oro

4,~PA4

ANOP

(/

L..

G'I-PU' .EQ. G'CPU',IUJ05
4,I"A14

ST ..

4,~~A4

60TO

,O$(lb

L.W

,,~PA4

ANOP
IFP
S~A4'10lU4
H.IN1T. :lPA4~'UZF8
b,:O~F8

O~~

S,e

ST"
ENDM

,,::if'A4

LW

,,~p,,!»

ANOP
SPAS,10lU7
IFP
H.INITX SPA~,'UZFI

ANM ..
ONR

5,'

ST ..

"SPAS

lI,lUZre

ENDM

10107

ANOP
IFP
SPA',103u8
M.INITl SP.",OZF8
,,')PAII
LW
ANM ..
"loiF8
5,11
OHR
ST ..
ENUM

'0]08

.,~PA'

AN UP
St'.7,&OlUCf
IFP
M.INITX SPA7,'UZF8
L..
"SPA7
ANM ..
,,:OZF8
5,.
ORR
STII
ENDM

'O]OCf
('~'

"\

lOJ,,"

1FT

AN"'''

10104

6'I.PO' .EQ • G'eNU',IulOl
• ,~AI4

.,~PA7
A~OP

SPAe,IOlOA
IF'
M.INITX IPAe,1Ui!Fe
Lw
"SPAI
ANMII
',iOl F•
O~R

5,.

ST ..

"IP"I
l2-27

-.-.-----.-~

..

"-~~-:-.--.

-----"~-

.. -----

-"---~-

.. -.-

--

--

-

..

ENDM
l030A

IFP

ANOP

8PA',IO)01

H.INITl SPA',IOiF.
.,~PA9
L"

ANMW
OKR

.,luaF.
s, •

ar"

• ,SPA'

ENOM

10)OB

ANOP
8p A
IFP
... 10,,030C
.
H.INITl SP"lo,~oa,a

LW

,030e

,030D

.,~PA1O

ANMW
ORR

.,iolF.

ST ..
ENOM

.,!PA10

aT"
ENOM

.,!'Al1

5,'

ANOP
8PA11,1030D
IFP
H.INITX SPAll"oaFI
.,SPAll
Lif
ANM..
.,:OiF.
ORR
5,.

ANO'
a'Ali,,0301
IF'
M.INlT. S'Alt£,lOiF.
LW
6,i'All
.,:OIF.
ANM"
ORR
5,.
ST ..
ENOM

'030£

",

ANOP

10.50'
10310

M.INITI
ANOP

10306
101"
'Oi'.
,0."

loa,'

'OJII

('

V

.,S'Ali

M.INIT.
ANO'

•

,

{~
. 'l

'Oi,.,,030'
lOi,4,IOIF.

I"

10i'5,10110
I.Oi", I 8i'.

I"

104",101••

M.INIT'
A,.OP

'O~",'8."

IU

lOJII
0

OAT'"
DATA ..
OAT."
OAT.'-

"'CO,"",
1'80,aool.'
.',co.oooo·
•..

lau

IMOM
M.lll
INOM
'NO

",T

0
i4

12-28

I
I
-~

,"-

-.--

-._--

-~--

..---.-

_ ....

-.

13. GENERAL PURPOSE MULTIPLEXER (GPMC) SUPPORT
13.1 Overview
The General Purpose Multiplexer Controller (GPMC) is structured as follows:
o All General Purpose Device Controller (GPDC) handlers are system reentrant,
therefore only one copy of a handler is needed per system.
o All handlers and the interrupt executive use common logic where reasonable,
reducing duplication of logic. In addition, as much GPMC specific logic as possible
is placed within this common logic, removing it from IOCS. If a GPMC is
configured, this group of routines is loaded only once.
o SYSGEN creates only one Controller Definition Table (CDT) entry per GPMC
(regardless of the number of device addresses) and no longer creates a handler entry
point jump table.
o All I/o requests are queued from the Unit Definition Table (UDT) entry.
Current devices supported are:
9103
9104
9109
9110
9116

(

Extended GPMC, Class D (16MB)
GPMC, Class E (1/2 MB) (32/7X only)
Synchronous Line Interface Module (SLIM)
Asynchronous Line Interface Model (ALlM)
Binary Synchronous Line Interface Module (BLlM)
Card Reader and/or Punch
Paper Tape

13.2 Hardware Structure
SelBUS

I
Controller

GPMC
9103 or 9104

I
GPDC interface
9105 or 9106

GPDC Bus

ALIM

9110

BSLIM

9116

GPDC Chassis

Channels

13-1

Refer to the GPMC Technical Reference Manual, 325-329104/9103, for details of the
GPMC operation. Refer to the appropriate technical manual part number 325-32XXXX
where XXXX is th~ model number, for details of a particular GPDC channel's operation.
13.3 Software Structure
13.3.1 Input/Output Control System (lOCS)
The GPMC enqueues IOQ entries onto the UDTs. Code previously contained within IOCS
that is solely required for GPMC operation is in a separate subroutine module which is
loaded only if a GPMC is configured.

13.3.2 GPMC Interrupt Executive (H.MUXO)
The GPMC Interrupt Executive, H.MUXO, is entered every time an interrupt occurs at
the level for which the GPMC is configured. H.MUXO queries the GPMC to find which
channel caused the interrupt, and then vectors to the handler's Service or Spurious
Interrupt entries via the contents of IB.EP in the device Interrupt Block, which is built by
SYSGEN and filled by the handler. Since H.MUXO is entered only on an interrupt, it
contains one entry point which comprises both. IOCS goes directly to the device handler
by using the contents of UDT.SIHA.
The handler entry point is found by: 1) locating the device UDT through the list
CDT .UTn, 2) locating the device context or "interrupt" block whose address is saved in~'
UDT.CP,LK, and 3) branching through IR.EP in the interrupt block.

13.3.3 GPDC Device Handlers (H.??MP)
These handlers contain all eight stanrlard hamiler entry points, and perform the actual
IOCS handler functions. However, their order in the handler address table has been rearranged. They are not entered clirectly when an interrupt occurs.
The SYSGEN initialization entry point determines how many ore-built device interrupt
blocks are needed (maximum is 64) and instructs SYSGEN to overlay the remainder of the
blocks with the next handler.
These handlers are system re-entrant and only one copy is needed per rv\PX- 32 system
\-vhen controller(s) are present. In addition, different handlers use common logic within
the module "GPMC.SUP," which is loaded only when GP\1C(s) are configured. This
reduces their aggregate size.
13.3.4 Normal I/O Logic
When a normal IOCS request for input or output (such as read or write) occurs, the
opcode entry processes it, returninp appropriately if it is either illegal or a logical
"NOP". If an actual I/O nperation is rpeded, the entrY point builc-ls J.n 100.
The 100 is returned tn memnrv pnol, eitf-)er due to I/O cnmpletion nr a task: rlelete.

11-2

(

In the case of a Model 9104 GPMC which can only reference physical E memory, an OS
buffer may also be obtained, and pointed to by 10Q.FBUF.
This is performed
automatically by IOCS, and it returns the buffer when the 10Q is released.

13.3.5 Execute Channel Program
The user has the ability to perform direct channel I/O using physical addresses from a
privileged task. The I/O transfer address points to an I/O Command List (IOCL).

13.4 Data Structures
13.4.1 System Blocks
The following communication region variables are special to GPMC support.

13.4.1.1 Controller Definition Table (COT)
One CDT is generated for each GPMC, and the CDT fields added for the lOP support are
utilized.
COT Variables Used:

f

CDT.CLAS
CDT.FLGS
CDT.IOST
CDT.SIHA
CDT.UTn

Hexadecimal OE for Model 9104, hexadecimal OD for Model 9103.
Bit 2 (CDT.GPMC) is set to indicate a GPMC controller.
Bit 0 (CDT .NIOQ) is set for the new structure.
Bit 1 (COT.MUX) is set to indicate a multiplexing controller.
Points to the H.MUXO HAT.
Where n is a hex digit from 0 to F a table of sixteen entries, each of
which corresponds to a channel. If a device is configured, the
corresponding entry contains the address of the UOT, or zero if no
UDT corresponds.

13.4.1.2 Unit Definition Table (UDT)
One UDT is built by SYSGEN for each configured address and is flagged as having 100
entries queued from it.
UDT var iables used:
UDT.CBLK
UDT.SIHA
UDT.STA2
UDT.TIAD
UDT head cell

points to the interrupt block which corresponds to this device.
points to the appropriate device handler HAT.
bit 0 is set to indicate 10Qs are strung from UDT.
is filled with the TI location address (for debug purposes only).
10Q entries are queued here.

13- 3

13.4.2 Architecture
13.4.2.1 Overview
Assume that you have two GPMCs. Each has 3 ALIMs; in addition, one has two BSLIMs
and the other has a card punch and a paper tape. You would have the following in
memory:

Subroutines
comnon logic
GP!VK: I:

H.I'v1UXO

CDT

Only resident if a GPMC present
GP!VK: 2:

H.I'vllJXO

CDT

One per GPMC.
llDT

28, one per device.

H.ASMP

H.BSVlP

H.CPMP

H.PTMP

Interrupt Block

28, one per device.

o
13-4

13.4.2.2 Interrupt Block

Dec ima 1
Offset

+---------------------------+
!
IB.QEADR
!
+---------------------------+
!
IB.CMPQE
* !
+---------------------------+
!
IB.CDTD
* !
+---------------------------+
!
H.AUT
H.AUTCNT
*!
+---------------------------+
!
IB.DQEAD
!

aw

current IOQ entry address

w

+---------------------------+
!
IB.CDTA
* !
+---------------------------+
!
IB.UDTA
* !
+---------------------------+
!
lB.
lB.
lB.
IB.* !

5 W

address of IOQ entry just
completed
prototype for device CDs
&. TDs
GPMC status/residual byte
count
address of UDT location
which points to DQE of
task allocating
address of CDT

6 W

address of UDT

!

2 W

3 W

4 W

7 W

LICNT SPCNT OPKODE DHBF
(See Note 1)
Bit 6
Bit 7

+---------------------------+
!
IB.EP
* !

8 W

+---------------------------+
!
lB. EXIT
!
+---------------------------+
!
IB.LITIM
* !
+---------------------------+
!
H.CNT
!
+---------------------------+
!
H.BUF
!
+---------------------------+
!
H.NCT
!
+---------------------------+
!
IB.IOCL
!

9 W

+~--------------------------+

!

OPTIONAL
DEVICE DEPENDENT
I NFORMAT I CN

lOW
11 W
"12 W
13 W

14 W

handler entry
address to
use (queue drive or
spurious interrupt)
return address from
handler entry
time 0 u t val u e
(in timer units)
I/O transfer count
in bytes
I/O buffer address
negative of transfer
count remaining
1st doubleword of GPMC
IOCL

16 W

!

handler dependent

+---------------------------+
(~

* referenced by GPMC/SUB or H.MUXO

13-5

Note I
Lost Interrupt Count
LIeNT
SpeNT
Spurious Interrupt Count
OPKODE IOCS Byte Operation Code
f)HPlF
Oevice Handler Bit Flags as follO'.vs:
Plit (.,
Bit 7

Postprocessinf needed (tells H.~"UXI) to report I/O completion)
CD terminate issued by lost interrupt entry

13.4.2.3 Data Block Linkage

--------------------

.~~---~~------------~~

~DT.SIHA

~------------------H.MUXO
CDT.UTn

.•

---!----------------UDT
- -- - - - - - - -

-:- -.,. - -

; rUDT head ce 11
.

--~

unT. S IHA

~--------------------!
H.??MP handler

II

I

UDT .CBlK

I

--_\_--------------------~~:~~~~~-~~~---

!
~IOO.CDTA lOO.UDTA

~

~

IPl.EP

IB.QEADR

~ ___________ L_________ 7
!

100

!

Linkage Values
CDT.SIHA
CDT.UTn
UDT.SIHA
UDT.CBlK

m.EP
IB.QEADR
IOO.CDTA
IOQ.UDTA

points to HAT of H.MUXO.
where "n" is the device number (0 to F). Points to UDT of corresponding
device.
points to HAT of appropriate LIM handler (H. ??MP).
points to Interrupt Block which corresponds to this device.
points to either Entry Point ) or Entry Point 3 in corresponding device
handler, depending on whether there is I/O in progress.
points to the IOQ Entry which is currently being performed.
CDT address.
UDT address.

DQE
pointers (not shown)
UDT.DQEA points to DQE of task if device not shared.
IB.DQEA
points to UDT.DQEA.

I~':t··.

V

,

!f
13-6

13.5 Handler Entry Points

(
13.5.1 H.MUXO
E.P.
Entered on interrupt. Registers saved in register file in GPMC Context Block, and
restored on exit to S.EXEC5.
2

SYSGEN initialization. Entered with COT address in register 7.

13.5.2 H. ??MP
Entry points have designated names.
E.P.
SI.

Entered by H.MUXO, which finds this address in the interrupt block variable
IB.EP.
Register 3 points to the UDT.
The Interrupt Block is found thru
UDT.CBLK.

IQ.

Entered by H.IOCS,29, who finds it via UDT.SIHA. Register 3 points to the UOT.
The Interrupt Block is found thru UDT .CBLK. Returns through E.P. 1 logic.

SP.

Post Transfer processing - returns thru RO.

LI.

Entered by S.IOCS5 or H.IOCS,38. Register 2 is the HAT Address, Register 3 is
the UDT address.

OP.

Entered by H.MUXO if GPMC has an interrupt for this type of device. H.MUXO
finds this address thru the interrupt block variable IB.EP. Register 3 points to the
UOT. The Interrupt block is found thru UDT.CBLK. Returns to H.MUXO through
H.EXIT return address in Interrupt Block.

PX.

Entered by H.IOCS,29. Register 1 is the FCB address, register 2 is the HAT
address (unused), and register 3 is the UOT address. The Interrupt block is found
thru UDT .CBLK.

01.

Error Processing - returns thru RO.

SG.

SYSGEN initialization logic. Register 7 points to the CDT.

13.6 Common Logic
The following subroutines are contained in the module GPMC.SUB, which is loaded by
SYSGEN if any GPMCs are configured. They permit the GPDC device handlers to be
smaller.

13-7

13.6.1 Subroutine S.GPMCO - Report GPMC Status

Entry
RO
R2

R3
Exit
RO-R4
R 5,R6

R7

it.·.·..·~ · .· i

\'V

Return address
10Q address
Interrupt Block Address
Unchanged
Destroyed
Device Status in Right Halfword

13.6.2 Subroutine S.GPMC 1 - I/o Initiation Logic

Entry
R2

R3
R6

10Q Address
Interrupt Block Address
IOCL address

13.6.3 Subroutine S.GPMC2 - Lost Interrupt Logic

Entry
RO
R2

R3

10CS return address
Handler Address (unused)
UDT address

Exi t - Di rect to 10CS
RO-R3
Unchanged
R4-R7
Destroyed
13.6.4 Subroutine S.GPMC3 - Operation Initiation and IOQ Entry Acquisition
If the opcode vector table entry bit 0 is set, an IOQ is built for the user. If bit 1 in the

word is set,the IOQ is extended by enough space to hold the absolutized IOCL necessary
to perform the requested 10.
Entry
RO
Rl
R2
R3

H.??MP return address (not used)
FCB address
Opcode vector table address
Interrupt Block address

Exit - via vector table
RO,Rl,R3
unchanged
Other Registers

Indeterminate

C",'\·

!

,)

iii

13-8

13.6.5 Subroutine S.GPMC4 - Execute Channel Program Inspection and Absolutizing

(

New IOCL is produced in a memory pool buffer whose address is placed in IOQ.FBUF, and
whose size is placed in IOQ. WOSB. The User's IOCL address is placed in IOQ. TBUF (not
yet implemented).
Entry

RO
Rl

E.P. 5 return address
FCB address

13.7 GPMC Support Macros
13.7.1 IB.DAT1,IB.DAT2
Functional Description
This macro defines the standard information for a Device Interrupt Block. Special
handler information should be inserted between IB.DA T I and IB.DA T2. The latter macro
closes the Interrupt Block Definition and computes its size. This macro must start on a
doubleword boundary.

e

For use by unique handler logic, the SET label H.IOCL always points to the physical
address of IB.IOCL in the current Interrupt Block.
Calling Sequence:
IB.DATI
(handler specific information)
IB.DAT2
Use the REPT directive to get mUltiple copies of the interrupt block.

13.7.2 M.IB
Functional Description
This macro establishes the Interrupt Block offset labels. It maps to the contents of
IB.DAT 1. Special handler information may be equated starting at IB.DFSIZ, which is
doubleword bounded.
Calling Sequences:
M.IB

13.7.3 GPDC.IT

(

Functional Description
This macro generates the SYSGEN Initialization logic for a GPMC handler.

13-9

Calling Sequence:
GPDC.IT

labL timout]

where:
lab

starting label, SG.lab

tim out

is a positive number indicating the number of seconds for device timeout. If
not provided, a word variable "PA6" should contain the negative timeout
count.

13.7.4 M.DIB
Functional Description
This macro is called by GPDC.IT to initialize the Device Interrupt Block. This macro
contains special case code for the ALIM (Model 9110) handler.
Calling Sequence:
M.DIB

type

where:
type

is the information passed to GPDC.IT as "lab"

13.8 User Handlers
Customers writing their own GPMC/GPDC handlers need not use the common logic of
GPMC.SUB, although in most cases it can simplify design and development. Customer
wr itt en handlers do not need to be reentrant, however, if they are not, interrupt
reentrancy must be specified in the SYSGEN directives.
Customer written handlers must use the Interrupt Block arrangement because H.MUXO
and GPMC.SUB reference certain locations.

13-10

14.

DISC PROCESSOR HANDLER

14.1

Overview

The Extended I/O Disc Handler is a software component of MPX-32 intended to provide
support for Extended I/O Disc Processors connected to an MPX-based SERIES 32
computer.
The product is designed to support any number and mix of extended I/O disc drives listed
below. These include fixed-head discs (FHD), moving-head discs (MHD), and cartridge
module drives (CMD).
The design supports IOCS callable I/O service requests as described in the MPX-32
Reference Manual, Volume 1.
An execute channel program capability has been incorporated to allow the priviledged
user to execute his own IOCD list. Care should be exercised when using this feature as
only minimal support has been included. No validation of commands or addresses is
performed. Tasks should be cataloged as resident (see MPX-32 Reference Manual,
Volume 1, Chapter 2) and all IOCD addresses made absolute. Basic error conditions are
detected and noted in the FCB, however, sense information generation, error correction,
and error retry are the responsibiJi ty of the user. It should be noted that sense
information relates to the last I/O request to the disc which mayor may not be that of
the requesting user. Reserve and Release 10CDs must never be included within an
execute channel program 10CD list (see Sections 14.2.1.3.16 and 14.2.1.3.17).
14.1.1

Discs Supported

f

The following discs are supported by the extended I/O disc handler.

:1

i

Compatible Disc Drives

Man uf actu rer
CDC
CDC
CDC
CDC
CDC MHD FHD CMD (

ID II
9320
9323
9733-5
9448-32

~

Heads

MHD
MHD
FHD
CMD

5
19
4
1+1

Byte
Capacity

SYSGEN
Device
Code

82,958,400
315,241,920
5,160,960
33,183,360

MH080
MH300
FHOO5
CD032

Cylinders
823
823
64
823

Control Data Corporation
Removable media, moving-head disc
Captive media, moving-head disc
Cartridge module drive, removable and captive media

Moving head rliscs (MHD) are available in both single and dual-port versions.

The 5 megabyte Fixed Head Disc (FHD) is by definition a fixed head device with 256
fixed heads. However, software must treat this unit as a moving head disc with 64
cylinders and 4 heads. The fixed head disc may be single or dual ported.
A Cartridge Module Drive (CMD) is two devices in one package. The first is the
removable media (MHO) and the second is the captive media (FHD). MPX-32 software
dedicates the even subchannel to the removable media and the odd subchannel to the
captive media. Cartridge module drives will only operate in the single-port mode.
14.1.2

Track Format

The disc processor and disc handler support two track formats. One format, designated
F16, provides 16 data sectors where each data sector contains storage for 1024 data
bytes. The second format, designated F20, provides 20 data sectors where each data
sector contains 768 data bytes. While the disc processor and disc handler are capable of
supporting both track formats, only the F20 format is supported within the MPX-32
operating system.
14.1.3

Dual Subchannel I/o

The disc processor firmware allows two communication paths to each device. These
paths are called subchannels and occur in sequential even and odd pairs. This is to say
that a device with a unit address plug of I (see Section 14.6) has software subaddress
assignments of 02 and 03.
Under MPX-32, dual subchannel I/O is applicable only to cartridge module drives where
the even subchannel is dedicated to the removable media and the odd subchannel is
dedicated to the captive media. For SYSGEN purposes, this device must be assigned an
even subaddress on the DEVICE directive.
For devices other than cartridge module drives, the odd subchannel address is unusable
and should never be assigned on the SYSGEN DEVICE directive.
14.1.4

Dual Port Support

14.1.4.1

Normal Support

Dual porting allows two CPUs to share a single disc drive. In order to maintain disc and
system integrity, mechanisms must exist to prevent both CPUs from accessing the device
at the same time. This is accomplished through device reservation which makes the
device unaccessable to the nonreserving CPU. Device reservation may be implicit or
explicit.
Implicit device reservation is a disc processor func·tion and is transparent to the
operating system. If a drive is defined as dual ported, the disc processor automatically
issues a RESERVE command to the device before initiating an I/O request. Once the I/O
is complete, the disc processor issues a RELEASE command. An I/O request from the
opposing CPU will be postponed from the time the RESERVE is issued until the RELEASE
is performed.

14-2

()

Explicit device reservation makes a device unaccessable to the opposing CPU for a user
requested period of time. The explicit device reservation is user invoked through the
M.RESP service request. The device remains unavailable to the opposing CPU until the
user releases the device through the M.RELP service request. When performing explicit
device reservation, the release timer switch located on the disc drive must be set to the
off position to disable the drive from performing its own release. (This is a drive
performed release which is different from the implicit disc processor release mentioned
above. Also, the channel 1 and channel 2 inhibit switches located on the disc drive must
be in the off position. Should more than one user on the same CPU have a device
explicitly reserved at the same time, the drive will not be released until the last such
user explicitly releases it.

14.1.4.2

System Failure in Dual-Port Environment

In a dual-port environment, there exists the possibility that one of the systems may fail
while having the shared disc reserved. Should this happen, the shared disc would be
unaccessable to the opposing CPU because the failing system (CPU or disc processor)
would have no way of releasing the drive. A mechanism is available to preclude this
from happening.

('-

When an explicit reserve (M.RESP) is issued to a. device that is already reserved by the
opposing CPU, a SYSGEN defineable time out value (DPTOV) begins to count down.
Should this timer expire before the device becomes available, a priority override (POR)
command is issued to gain absolute control over the device. A drive that is selected
using the POR command remains reserved to the channel gaining control over the drive
until such time that the channel releases the drive.

14.1.5

Maximum Byte Transfer and lOCO Generation

The MPX-32 services available for user Read and Write requests allow for a maximum
transfer of 1,000,000 hexadecimal bytes (1,048,576 decimal bytes) per request. Requests
larger than this are truncated to this amount.
H.IOCS,40 processes Read and Write requests by building data chained lOCOs as
necessary to span map blocks. The number of lOCOs generated for any transfer request
depends on how large the transfer is and where, within the MAP block, the buffer begins.

14.1.6

Hardware/Software Relationship

The dual-ported XIO disc hardware/software relationship is presented in Figure 14-1.
The system consists of disc drives (I.O-n.n which can be either single or dual port, disc
processors (l-n), and the disc handler.
The disc handler consists of three parts. H.EXIO is the interrupt fielder and corresponds
one for one with the number of disc processors configured. H.DP02 is a system reentrant
handler that processes I/O requests. Context Blocks are areas of storage and record
keeping and correspond one for one with the number of active subchannels configured.
They are physically located at the end of H.DP02.
Up to eight (8) disc drives can be connected to any disc processor. The number of disc
processors configured per system is limited by the number of channels and cabinet space
available.
14-3

.

,

~

CPU I

CPU 2

SEL8US

SEL8US

.t:o

I
.t:o

,-----------ll

H. EX 10

OISC
PROCESSCQ
I

H.EXIO ._

DISC
PROCESSCQ
2

DISC
PROCESSCQ
I

H. EXIO

1..._ _ _ _ _ _--,

DISC
I--_~I PROCESSCR

11--_...(

H. EXIO

2
H.DP02

H.DP02

CXNTEXT
8UXX 1.0

CXNTEXT

81..OCX n.7

0
0
0

II

0
0
0

I

I I

0
0
0

I I

~ PROC~SSCQ
DISC
~Il~
n.
n.t
.

410------ Software ---- . . . . . -- -----------

o

0
0
0

II

81
I

-...........

U
Hardware/Firmware

DISC
PROC~SSCR
U

-------------~

I I
[

a:M'EXT
8LCXlC. 1.0

8~~71

LI H.EXIO

I

.... -----

Sot tware

...I

-------

····~
c.
.... wi
"'-__ .7

14.2

Extended

I/o Commands and CPU Instructions

The Extended I/O (XIO) philosophy provides channel commands and CPU instructions for
accomplishing I/O requests. The following is a summary of these features and their use
by software.

14.2.1

XIO Channel Commands

14.2.1.1

Command Summary

The following is a summary of the XIO channel commands.
Channel Command

(

Initiate Channel (INCH)
Sense (SENSE)
Transfer in Channel (TIC)
Write Data (WD)
Write Sector·Label (WSL)
Write Track Label (WTL)
Read Data (RD)
Read Sector Label (RSL)
Read Track Label (R TL)
Read Angular Position (RAP)
No Operation (NOP)
Seek Cylinder (SKC)
Format for No Skip (FNSK)
Lock Protected Labels (LPL)
Load Mode Register (LMR)
Reserve (RES)
Release (REL)
Rezero (XEZ)
Test S tar (TESS)
Increment Head Address (IHA)
Priority Override (POR)
Set Reserve Track Mode (SRM)
Reset Reserve Track Mode (XRM)
Read ECC (REC)

Command Code
X'OO'
X'04'
X'08'
X'Ol'
X'3l'
X'5l'
X'02'
X'32'
X'52'
X'A2'
X'03'
X'07'
X'OB'
X'13'
X'IF'
X'23'
X'33'
X'37'
X'AB'
X'47'
X'43'
X'4-F'
X'5F'
X'B2'

MPX
Service Call
None
None
None
M.WRIT
None
None
M.READ
None
None
None
None
None
None
None
None
M.RESP
M.RELP
None
None
None
None
None
None
None

Used by
MPX Software
Yes
Yes
Yes
Yes
No
No
Yes
No
No
No
Yes
Yes
No
No
Yes
Yes
Yes
Yes
No
No
Yes
No
No
Yes

I
I'
1

I
I'

:1I
!
ii'
j'!

I'

,

,I

14.2.1.2

IOCD Format

All channel commands have the following IOCD format:

00
Word 1

07

08

31

Conmand
Code

Word 2

Absolute Date Addresss

Flags

Byte Count

15 16

00

31

Flag bits 00 through 04 have the following significance:
Bit

Mnemonic

00

DC
CC
SLI
SKIP
PCI

01
02
03
04

Name
Data Chain
Command Chain
Suppress Incorrect Length Indication
Skip Read Data
Program Controlled Interrupt

The command code field defines the operation to be performed during command
execution.
The data address must be a 24-bit absolute addresss.
TIC branch address must be 24-bit addresses that address word boundaries.
The requirements for lOCO validity apply to all 10CDs regardless of the contents of the
command code field.
The requirements are:
o
o
o

lOCO word 2 bits 05 through 15 must be zero
The PCI bit must be zero
The byte count must be nonzero

14.2.1.3

Commands

14.2.1.3.1

Initialize Channel (INCH)

This command is the means by which disc drive information is relayed to the disc
processor and the means by which a buffer area is declared and made available for use by
the Disc Processor. An INCH command must be the first I/O command to any channel
that has a disc processor configured and is performed automatically by the disc handler

14-6

C

''!\

"

'

(

as a result of the first I/o request to the channel. The data address specified in the
INCH lOCO points to a nine word buffer that must fall on a word boundary. The first
word of this nine-word buffer must contain a 24-bit address that points to a file bounded
224 word buffer that is used by the disc processor for record keeping. The remaining 8
words contain disc drive information pertinent to each of the 8 drives that may be
configured. The following diagram shows the overall picture of this relationship.

INCH IOCD

00

I

9-Word Buffer Address
Byte Count = 36 10

Word 1
Word 2
Word 3

9-Word Buffe r

224 Word Buffer Address
Drive Attribute Register, Drive 0
Drive Attribute Register, Drive 1

1-

I~

·
·
·
·

·

Word 9

Drive Attribute Register, Drive 7

I

,.

224 Word BufferFile Bounded

Drive Attribute Register - layout is as follows:

o

78

Flags
Bits

~}
2

3
45

6-7

15 16
Sector Count

23 24
MHD Count

31

FHD Count

Meaning
10 = FHD
01 = MHD
11 = MHD with FHD option
00 = Reserved
1 = Cartridge Module Drive
Reserved
1 = Drive Not Present
1 = Drive is Dual Ported
Reserved for future expansion; must be zero

1

14-7

Sector Count

is the number of sectors per track (I4 16 ).

MHO Count

is the number of heads on the MHO or the number of heads for
the removeable media portion of the cartridge module drive.

FHD Count

is the number of heads for the captive media portion of the
cartridge module drive.

The drive attribute register for a 40 MB single port moving head disc would be generated
as follows:
DATAW

rI -

40 4 50
X'T TL-_-8_'_ _ _ _ _ Zero FHD count
5 MHO count
20 Sectors per Track
Moving Head Disc

The drive attribute register for an 80 MB dual ported moving head disc would be
generated as follows:
DATAW

X'44140'iOO'
TL-----Zero FHD count
MHO count
20 Sectors per Track
&.---------Dual port indication
'----------Moving Head Disc

T
T
II ...--------5

The drive attribute register for a 5 MB single port fixed head disc would be generated as
follows:
DATAW

X'40140400'
_T_ _ _ _ _ Zero FHD count
4 MHO count
20 Sectors per Track
& . - - - - - - - - - Moving Head Disc

T
T. .
I-

T

The drive attribute register for a 32 MB cartridge module drive would be generated as
follows:
DATAW

X'12°TI4TL-l_9f_'_____ 1 FHD count
-

1 MHD count
20 Sectors per Track
Cartridge Module Drive

The drive attribute register for a drive that is not present would be generated as follows:
DATAW

X'OfoOOOO'
Drive Not Present
I;
I
I

14-8

Sense (SENSE)

14.2.1.3.2

(

This command is a means by which information can be retrieved concerning the results of
the last SIO processed by a subchannel.
The disc handler issues the SENSE command to generate information regarding I/o error
completions and uses the information in determining certain retry requirements. The
Sense information is stored in the absolute data address specified in the Sense lOCO.
When the disc handler issues a SENSE command, it specifies a data address in the context
block associated with the device (see Section 14.3.6). Some of the sense information
generated is passed to the user (see Section 14.3.12).
Note: The drive is reselected if a byte count greater than 12 is specified.
The following describes the information returned from the SENSE command:
SENSE Information

o

7

8

15

23

16

24

31

Word

I,

1

Cylinder

2

Mode

t

Track

Byte

Sector

I

Contents of SENSE Buffer Register
Drive Attribute Register

3

Drive Status

4

Not Used

Word 1:

current cylinder, track and sector.

Word 2:

Mode Byte - bit assignments are as follows:

Bit

Function

o

A 1 implies that the drive carriage will be offset.

1

This bit is effective only when bit 0 is in the 1 state; a zero implies a
positive track offset and a 1 implies a negative track offset; a positive
offset is an offset toward the next higher cylinder number.

2

A 1 implies a read timing offset.

3

This bit is effecti ve only when bit 2 is in the one state; a a implies that a
positive read strobe timing adjustment will be used; a 1 implies that a
negative read strobe timing adjustment will be used.

14--9

Function

Bit

4

A 1 implies diagnostic mode for Error Corrrection Code (ECC)
generation and checking.

5

A 1 implies that reserved tracks can be accessed without causing an
error; a zero implies that reserved track data cannot be written.

6

A 1 implies that the associated Subchannel (SSC) will access the captive
media portion of a cartridge module drive (CMO).

7

A 1 implies that the channel functions will use the RAM buffer for data
operations, i.e., buffer mode is invoked.

When all Mode bits are set to the zero state, data operations occur between main
memory and a Moving Head Disc (MHO); this setting might be considered to be the
normal mode. A Halt Channel Directive (HCHNL) places all channels in this mode. A
Halt I/O (HIO) does not change the selected subchannel's mode.
Word 2: Contents of SENSE Buffer Register - bit assignments are as follows:
Meaning

Bit
8
9

10
11

12
13
14
15
16
17

18
19

20
21
22

23
24
25
26
27

28
29
30
31

•

Command Rejected
Intervention Requested
Spare
Equipment Check
Data Check
Data Over or Under Run
Disc Format Error
Defective Track Encountered
Last Track Flag Encountered
At Alternate Track
Write Protection Error
Write Lock Error
Mode Check
Invalid Memory Address
Release Fault
Chaining Error
Lost Revolution
Disc Addressing or Seek Error
Buffer Check
ECC Error in Sector Label
ECC Error in Data
ECC Error in Track Label
Reserve Track Access Error
Uncorrectable ECC

Word 3: Drive Attribute Register - For layout, see Section 14.2.1.3.1.

o
14-10

r

I

Word 4: Orive Status - hit assignments are as follows:
Bit

o
1
2
3
4
5
{.,

7
8

9
10
11
12
13
14
15

14.2.1.3.3

(

Meaning
Seek End
Unit Selected
Sector Pulse Counter Bit 0
Sector Pulse Counter Bit 1
Sector Pulse Counter Bit 2
Sector Pulse Counter Bit 3
Sector Pulse Counter Plit 4
Sector Pulse Counter Bit 5
Disc Drive Detected a Fault
Seek Error
On Cylinder
Unit Ready
Write Protected
Drive is Busy
Spare
Spare
Transfer In Channel (TIC)

This command causes Input/Output Command Doubleword (IOCD) execution to continue
at the address specified in the TIC command. Effectively, a TIC serves as a branch for
lOCO execution. A TIC command cannot point to another TIC command nor can it be
the first commancl in an lOCO list.
The TIC command is used by the handler to link lOCOs located in the Context Block (see
Section 14.3.6) to lOCOs located in the I/O Queue OOQ).
14.2.1.3.4

Write Data (WD)

This command transfers data to the disc from the address specified in the lOCO. Entry
point 5 of H.DP02 processes user Write requests by calling H.IOCS,40 to build Write Data
lOCOs within the IOQ.
14.2.1.3.5

Write Sector Label (WSL)

This command is the means by which sector labels are written to the disc.
It is not currently used by the disc handler.

14.2.1.3.6

Write Track Label (WTL)

This command is the means by which track labels are written to the disc.
It is not currently used by the disc handler.

14-11

1".2.1.3.7

Read Data (RD)

This command transfers data from the disc to the address specified in the lOCO. Entry
point 5 of H.DP02 processes user Read requests by calling H.IOCS,40 to build Read Data
lOCOs within the 10Q.
1".2.1.3.8

Read Sector Label (RSL)

This command reads sector labels from the disc.
It is not currently used by the disc handler.

1".2.1.3.9

Read Track Label (RTL)

This command reads track labels from the disc.
It is not currently used by the disc handler.
1".2.1.3.10

Read Angular Position (RAP)

This command reads the sector pulse counter from the disc.
It is not currently used by the disc handler.
1".2.1.3.11

No Operation (NOP)

This command executes without selecting the associated disc drive.
Completed Read Data lOCOs within the I/O Queue (lOQ) lOCO list are changed to NOP
commands at entry point 1 of H.DP02 when performing error correction code (ECC)
logic.
1".2.1.3.12

Seek Cylinder (SKC)

This command causes a disc head seek/select to the specified cylinder, track, and
sector. The address specified in the Seek Cylinder command points to a memory word
which contains the following:

o

15 16

o

Cylinder

23 24
Track

I

31
Sector

Entry point 5 of H.DP02 computes the cylinder, track, and sector address for user
requested' reads and writes, and stores this information into the I/O Queue cell named
10Q.FCTl. S.IOCS12 is then called to build the seek lOCO and store it into the 10Q.

14-12

.rL"'.::..
'"

(

14.2.1.3.13

Format for No Skip (FNSK)

This command is used by the diagnostic to format a disc.
It is not currently used by the disc handler.
14.2.1.3.14

Lock Protect Label (LPL)

This command involves write lock.
It is not currently used by the disc handler.
14.2.1.3.15

Load Mode Register (LMR)

This command is used to identify a byte of information which specifies the manner in
which I/O is to take place with the disc. The address specified in the Input/Output
Control Doubleword (IOCD) points to this byte of information which is physically located
in the I/O Queue. See Section 14.2.1.3.2 (Word 2, Byte 0 of the Sense Information) for
interpretation of the mode bits.
The disc handler automatically generates this command as the first lOCO presented for
disc access user requests. The command physically resides in the Context Block.

(

14.2.1.3.16

Reserve (RES)

This command causes a device to be reserved to the requesting CPU until such time as a
Release (REL) or Priority Override (POR) is issued. The command is user callable
through the M.RESP service routine and is associated with dual-port operations. Execute
channel programs must never include a Reserve command and should use the M.RESP
service routine when device reservation is desired.
14.2.1.3.17

Release (REL)

This command causes a Reserved device to be released by the reserving CPU. The
Release will not be issued if more than one task has the device Reserved. The command
is user callable through the M.RELP service routine and is associated with dual-port
operations. Execute channel programs must never include a Release command and should
use the M.RELP service routine when device release is desired.
14.2.1.3.18

Rezero (XEZ)

This command is effectively a recalibration request to the disc which resets the drive's
seek logic and causes the drive to locate cylinder and track zero. Entry point 1 of
H.DP02 uses it to recover from seek and drive fault errors. The command physically
resides in the Context Block.

14-1 .,

14.2.1.3.19

Test Star (TESS)

",-"

It)

This command causes the currently addressed cylinder, track, and sector to be compared
to that specified by the Test Star lOCO. It can be used to skip the next sequential
lOCO.
It is not currently used by the disc handler.
14.2.1.3.20

Increment Head Address (IHA)

This command is used to select sector zero of the next sequential track in the associated
disc drive.
It is not currently used by the disc handler.
14.2.1.3.21

Priority Override (POR)

This command provides a mechanism for overriding and disabling dual-ported disc drive
Reserve functions. The drive specified in the POR command is absolutely reserved to
the requesting channel until the channel Releases the drive.
This command is used by the handler to gain control of a drive that is reserved by the
opposing channel in a dual ported configuration if that channel does not ReJease the drive
within a specified period of time. This time value is an optional SYSGEN parameter
(DPTOV) which defaults to two timer units.
14.2.1.3.22

Set Reserve Track Mode (SRM)

This command allows all data areas designated as reserve tracks to be read or written. It
should be noted that in order for this to work, the reserve track mode jumper must be set
on the Device Interface Adapter (DIA) board.
It is not currently used by the disc handler.
14.2.1.3.23

Reset Reserve Track Mode (XRM)

This command makes all data areas designated as reserve tracks unavailable for write
operations.
It is not currently used by the disc handler.
14.2.1.3.24

Read ECC (REC)

This command causes the channel to compute and present error correction information
needed to recover from a disc read error. The information returned to the address
specificied in the Read ECC lOCO contains the following:

14-14

o

15

(

31

16

Correction Mask

Displacement

where:
Displacement

is the number of bits from the end of the last sector
transferred to the last bit in the field found to
contain the error.

Correction Mask

is a 9-bit correction mask that can be used to correct
erroneous data stored in memory.

The Read ECC command is used at entry point 1 of H.DP02 to recover from data errors.

14.2.2

CPU Instructions

14.2.2.1

Instruction Summary

I

The following is a summary of the Extended I/O CPU instructions.

(

Instruction
Code

Mnemonic
SIO
TIO
HIO
HCHNL
RSCHNL
STPIO
RSCTL
ECI
DCI
ACI
DACI

14.2.2.2

Function

X'2'
X'3'
X'6'
X'5'
X'5'
X'4'
X'8'
X'C'
X'D'
X'E'
X'F'

Start I/O
Test I/O
Halt I/O
Halt Channel
Reset Channel
Stop 1/0
Reset Controller
Enable Channel Interrupt
Disable Channel Interrupt
Activate Channel Interrupt
Deacti vate Channel Interrupt

CPU Instruction Format

All Extended I/O CPU instructions have the following format:

o
Op Code

8 9

5 6
R

12 13
Instruction
Code

31

15 16

Aug Code

Constant

14-1 "

Bits 00-05:

specifies the operation code, hex 'FC'.

Bits 06-08:

specifies the general register, when nonzero, whose
contents will be added to constant to form the logical
channel and subaddress.

Bits 09-12:

specifies the instruction code.

Bits 13-15:

specifies the augment code, hex '7'.

Bits 16-31:

specifies a constant that will be added to the contents of R
to form the logical channel and subaddress. If R is zero,
only constant will be used to specify the logical channel
and subaddress.

14.2.2.3

Condition Codes

Condition codes are generated for all extended I/O instructions and indicate the
successful or unsuccessful initiation of an I/O instruction. For extended I/O purposes,
the four normal condition code bits are interpreted as a four bit hexadecimal number
ranging from 0 - F. This means that there are 16 possible condition code responses to an
extended I/O instruction. The following is a summary of extended I/O condition code
assignments.-

,~.'\\

V

14-1 (,

Extended I/o
Condition Code Assignments

(
Condition Code

Ie

Hex Value

Meaning

CCI

CC2

CC3

CC4

0

0

0

0

X'O'

Accepted Will Echo

0

0

0

1

X'I'

Channel Busy

0

0

1

0

X'2'

Channel Inoperable or Undefined

0

0

1

1

X'3'

Subchannel Busy

0

1

0

0

X'4'

Status Stored

X'5'

Unsupported Transaction

X'6'

Unassigned

X'7'

Unassigned

X'8'

Request Accepted

X'9'

Unassigned

X'A'

Unassigned

X'B'

Unassigned

X'C'

Unassigned

X'D'

Unassigned

0

X'E'

Unassigned

1

X'F'

Unassigned

0

0

0

1

0

1

0

0

0

0

0

1

0

1

0

0

0

0

0

0

14- 17

14.2.2.4

Condition Code Checking

Condition code checking within the disc handler varies depending on the instruction
issued. The following summarizes condition code checking and disc handler action.
14.2.2.4.1

o

For SIO Instruction

Hex
Condition Codes

Meaning

Action

X'8'

Request Accepted

Continue normal processing

X'I'

Channel busy

Retry 1 time, if unsuccessful
process next I/o request

X'3'

Subchannel Busy

Retry I time, if unsuccessful
process next I/o request

X'2'

Channel

Set operator intervention
bit, show
error condition for FCB,
abort I/O request

or

Inoperative

Undefined

X'4'

Status

Stored

X'5'

Unsupported

Transaction

Branch to H.EXIO
process
as
though
interrupt had occurred

and
an

Show error condition for
FCB, abort the I/O request

X'6',X'7'

Unassigned
X'9"X'F.

1
Not supported by the disc
processor

X'O'

14.2.2.4.2

For HIO Instructions

Hex
Condition Codes
X'4'

Meaning

Action

Status Stored

Branch to H.EXIO and process as
though an interrupt had occurred

NO OTHER CONDITION CODES ARE CHECKED

14-18

Show error condition for
FCB, abort the I/O request

o

L.;.
I
I

I

14.2.2.4.3

(

For Remaining Instructions

For ACI, DACI, RSCTL, RSCHNL, DCI, and ECI instructions:
NO CONDITION CODES ARE CHECKED

14.2.2.5

Instructions

14.2.2.5.1

Start I/o (510)

The 510 instruction is used to hegin I/O execution if the subchannel number is valid and
the channel has no pending final status. If the channel has pending final status, the 510
instruction is rejected with a status stored condition code response. The status stored
response is equivalent to an interrupt status presentation and must be treated as such as
no further indication of the I/O completion is given.
The 510 instruction is used by entry point I of H.DP02 as indicated above.

14.2.2.5.2

Test I/o (TIO)

The TIO instruction is used to test controller status and to return appropriate condition
codes and status reflecting the state of the channel and addressed subchannel.

:(

The TIO instruction is not used by the disc handler.

14.2.2.5.3

Halt I/o (HIO)

The HIO instruction is directed to a particular subchannel; the channel and subchannel
respond to the HIO by terminating all activities in the subchannel at the end of the
current- sector. The instruction will not halt the I/O to a malfunctioning device. The
HIO instruction does not affect subchannels other than the subchannel addressed:
however, it will generate a status stored response if status is pending in any of the
channel's subchannels and reject the HIO instruction. The status stored response is
equivalent to an interrupt status presentation and must be treated as such as no further
indication of the I/O completion is given.
The HIO instruction is used by entry point 4 of H.DP02 to recover from I/O requests that
time-out.

14.2.2.5.4

Halt Channel (HCHNL) and Reset Channel (RSCHNL)

HCHNL and RSCHNL are the same instruction.
These instructions terminate all activity in the channel. Issuance of these instructions
requires that an INCH command (see- Section 14.2.1.3.1) be performed before any
subsequent I/O to the affected channel.
The RSCHNL instruction is used at entry point 5 of H.DP02 prior to issuing the INCH
command.

14-19

14.2.2.5.5
..... 1

Stop I/O (STPIO)

The STPIO instruction is used to perform an orderly termination of an lOCO list by
stopping lOCO execution at the completion of the current lOCO. The STPIO instruction
applies only to the addressed subchannel; however, if there is pending status for any
subchannel associated with the addressed channel, the instruction will not be executed
and a status stored condition code response will be returned. The status stored response
is equivalent to an interrupt status presentation and must be treated as such as no
further indication of the I/o completion is given.
The STPIO instruction is not used by the disc handler.
14.2.2.5.6

Reset Controller (RSCTL)

The RSCTL instruction causes the addressed subchannel to terminate its I/O operation
immediately. If the subchannel is in a hung condition the device will be reset so that
normal I/O operations may resume. The RSCTL instruction will always be accepted, will
never generate a status stored response, and will never generate an interrupt.
The RSCTL instruction is used to recover from the HIO instruction issued at entry point
4 of H.DP02 should it also time out. This condition would indicate that the device is
actually broken. It should be noted that when the RSCTL instruction is issued at EP4, a
HIO instruction is also issued to gain access to EP I processing.
14.2.2.5.7

Enable Channel Interrupt (Eel)

The ECI instruction causes the addressed channel to be enabled to request interrupts
from the CPU.
The ECI instruction is used at entry point 5 of H.DP02 prior to issuing the INCH
command.
14.2.2.5.8

Disable Channel Interrupt (DCI)

The DCI instruction causes the addressed channel to be disabled from requesting
interrupts from the CPU.
The DCI instruction is used at entry point 5 of H.DP02 prior to issuing an Enable Channel
Interrupt (ECI) instruction.
14.2.2.5.9

Activate Channel Interrupt (ACI)

The ACI instruction causes the addressed channel to begin actively contending with other
interrupt levels preventing its level and all lower priority levels from requesting an
interrupt.
The ACI instruction is used by H.DP02 for protection of certain sensitive code paths.

!

14-20

~

14.2.2.5.10

Deactivate Channel Interrupt (DACO

The DACI instruction causes the addressed channel to remove its interrupt level from
content ion.
The DACI instruction is used by H.EXIO just prior to entry point I and 3 exits. It is also
used to clear explicit ACI instructions within H.DP02.

14.3

Related Data Structures

This section outlines the data structures used by the disc handler.

14.3.1

I/O Queue (lOQ)

See the MPX-32 Technical Manual, Chapter 2.

14.3.2

Unit Definition Table (UDT)

See the MPX-32 Technical Manual, Chapter 2.

14.3.3

Controller Definition Table (CDT)

See the MPX-32 Technical Manual, Chapter 2.

14.3.4

File Control Block (FCB)

See the MPX-32 Technical Manual, Chapter 2.

14.3.5

File Assignment Table (FAT)

See the MPX-32 Technical Manual, Chapter 2.

14.3.6

Context Block

A Context Block exists for each active subchannel and serves as a storage area for
information regarding the subchannel and its operation.
The Context Blocks are
physically located at the end of the disc handler (H.DP02) and contain the following:

14-21

Context Block Format
Word

o

II of H.DP02 Entry Points
H.DP02 EP 1 Address

2

H.DP02 EP2 Address

3

H.DP02 EP3 Address
H.DP02 EP4 Address

5

H.DP02 EP5 Address

6

H.DP02 EP6 Address

7
8

H.DP02 EP7 Address
Status Word 1 1
Status Word 2 1

9

10

Active I/o Queue Address 2

11

Flagword 3

12

CDT Address 4

13

Sense Buffer Word 1 5

14

Sense Buffer Word 2 5

15

Sense Buffer Word 3 5

16

Sense Buffer Word 4 5

17

Channel Address and Sub address

18

Address of IOCD Pointer Within H.EXIO 6

19

II Error Retries Attempted

20

II Sectors/Cylinder

21

ECC Data

22

Rezero IOCD Word I

23

Rezero IOCD Word 2

24

Load Mode IOCD Word 1

25

Load Mode IOCD Word 2

14-22

«

'C

(

Word

26

TIC lOCO Word 1

27

TIC lOCO Word 2

28

Sense lOCO Word 1

29

Sense lOCO Word 2

30

Read ECC lOCO Word I

31

Read ECC lOCO Word 2

32

POR lOCO Word 1

33

POR lOCO Word 2

34

Working Status Word I 7

35

Working Status Word 2 7

36

H.EXIO OLDPSD Address 8

37

Successful SIO Counter

38

Error Retry Counter

39

Lost Interrupt Counter

40

II of Reset Controller Commands Issued

41

If of ECC Corrections Performed

42

ECC Bit Displacement

43

Not Used

44

Last Buffer Address for Previous lOCO (ECC Logic)

45

Start Buffer Address for Current lOCO (ECC Logic)

4(;

Address of End of Erring Sector (ECC Logic)

47

Address of Erring Halfword (ECC Logic)

48

It of Bytes Transferred for Current lOCO (ECC Logic)

49

End of Current IOCf) Buffer (ECC Logic)

50

Dual Port Time Out Value 9

51

1/ of Reserves Active for this Subchannel

I
I

ECC Byte Displacement

14-23

Notes:
1.

This is the status doubleword returned when an interrupt fires or when a status
stored response is generated as a result of the SIO and HIO instructions (see Section
14.3.7).

2.

This is the address of the IOQ for which an interrupt is pending.

3.

Flagword bits have the following meaning:
Bit

Meaning

1

if set, lost interrupt

2

if set, I/O completed for a device that had timed out

0, 3-31

reserved

4.

COT address associated with this channel.

5.

See Section 14.2.1.3.2 for format of these four words.

6.

Contains the address of the fourth word of the interrupt context block located in
H.EXIO.

7.

Used for error retry logic.

8.

Contains the address of the interrupt context block located in H.EXIO.

9.

This is the SYSGEN specifiable time-out value for dual-ported (DPTOV) discs.

14.3.7

/'-

."\

l"j

Status Doubleword

A Status Doubleword is presented each time an interrupt is generated or as a result of
the "status stored" response to a SIO or HIO instruction. It has the following format:
Word

0

1

Sub-channel

2

Status

8 9

I

15 16

31

lOCO Address

J

Residual Byte Count

Word 1:
Subchannel - subchannel address of interrupting device
. lOCO Address - this address points 8 bytes past the last lOCO processed

14--24-

o

Residual Byte Count - number of bytes not transferred for the last lOCO processed

14.3.8

Input/Output Control Doubleword (IOCD)

See Section 14.2.1.2.

14.3.9

Interrupt Context Block

See the 32/70 Series Reference Manual.

14.3.10

Sense Buffer

See Section 14.2.1.3.2.

14.3.11

INCH Buffer

See Section 14.2.1. 3.1.

Status Returned to User's FeB

14.3.12

The handler places the following information into the IOQ which is relayed back to the
user's File Control Block (FCB) by IOCS. Not all of the sense information obtained by
the handler is returned to the user.
From

.IOQ Word

IOQ.IOST

Special Bits
Set by handler

IOQ.ISTl

Mode
Byte

IOQ.IST2

Status
Bits

IOQ.UTRN

Nwnber of bytes
red

Note:

14-26

Status
Bits

Contents of
Sense Buffer
Register
Residual
Byte Count

STATUS + 2H

Becomes FCB
Word
Special Bits
Set by handler

SENSE BUFFER
WORD 2

Mode
Byte

STATUS WORD 2

Status
Bits

COMPUTED BY
HANDLER

Nwnber of bytes
transferred

I

Status
Bits

Contents of
Sense Buffer
Register

I

Residual .
Byte Count

FCB.SFLG
FCB.ISTI

FCB.IST2
FCB.REeL

For Execute Channel Program requests, IOQ.IST 1 contains STATUS WORD 1 and
IOQ.UTRN is invalid.

J 4.4

(

XIO Disc Interrupt Fielder (H.EXIO)

One copy of H.EXIO exists for each channel that is connected to a disc processor. It
serves as the interrupt/event fielder for that channel and as the link to entry points 1 and
2 of H.DP02.
Entry Point Summary

14.4.1

H.EXIO has four entry points as follows:
Entry Point
EPI
EP2
EP3
EP8

Handler Entry
Point Name

Function

EPIAND3
EP2
EPIAND3
EXIO.8

Queue Drive Interrupt Service Routine
Queue Start Service Routine
Spurious Interrupt Service Routine
SYSGEN Initialization
,

14.4.2

Entry Point 1 and 3 - Queue Drive Interrupt Service Routine Spurious
Interrupt Service Routine

Because it is not known whether a valid or spurious interrupt/event has occurred until
some processing has taken place within H.EXIO, entry points 1 and 3 are physically the
same. Entry point 1 and 3 is entered any time one of the following occurs:
o
o
o

an interrupt fires
status is stored as a result of the SIO instruction in entry point I of H.DP02
status is stored as a result of the HIO instruction in entry point 4 of H.DP02

I

I'

I

I
1
I

I
III,
ji

14.4.2.1

Ii
I,
I,

Processing - When an Interrupt Fires

i

Calling Sequence:
Entered through Service Interrupt (SI) vector location, where the new Program Status
Ooubleword (PSO) causes the system to go unmapped with interrupts unblocked and the SI
level active. This is always the initial mechanism for reporting I/O complete for a given
channel.
Registers Passed in Calling Sequence: None.
Control Transferred to:
o
o
14.4.2.2

Entry point 1 of H.DP02 if valid interrupt
Exit routine of H.EXIO if spurious interrupt
Processing - As a Result of Status Stored for Start I/O (510)

Calling Sequence:
Entered from entry point I of H.DP02 by:

14-27

o
o

setting bit within H.EXIO indicating entry is from H.DP02
BU *XIO.EP13,X3 X3 = H.EXIO OLDPSD address

Registers Passed in Calling Sequence:
RO

=

context block address that was in effect when the Status Stored Condition
Code was generated in response to the SIO instruction.

Control Transferred To:
o
o
14.4.2.3

Entry point 1 of H.DP02 if status was stored for a valid I/O request
Entry point 2 of H.DP02 if status was stored for a spurious event
Processing - As a Result of Status Stored for Halt I/o (HIO)

Calling Sequence:
Entered from entry point 4 of H.DP02 by:
o
o
o

setting bit within H.EXIO indicating entry is from H.DP02
setting bit within H.EXIO indicating entry is from EP4 of H.DP02
BU *XIO.EP 13, X2 X2 =H.EXIO OLDPSD address

Registers Passed in Calling Sequence:
RO

=

context block address that was in effect when the Status Stored Condition
Code was generated in response to the HIO instruction.

Control Transferred To:
o
o
14.4.2.4

Entry point 1 of H.DP02 if status was stored for a valid I/o request
Entry point 2 of H.DP02 if status was stored for a spurious event
Common Processing

External Routines Called:
o
o

Entry point 1 of H.DP02 .
Entry point 2 of H.DP02

Functions Performed:
o
o
o
o
o

14-28

increments global interrupt count (C.GINT) - only when an interrupt fires
saves registers - only when an interrupt fires
determines the validity of the interrupt or status stored event
fetches the context block address of the offending device
transfers control to appropriate processing as defined above

Exit Sequence:
o
o
o
o

LPSD
BEl
DACI
BL

return to the mapped mode
block external interrupts
deactivate interrupt level
S.EXEC5 (no return)

Registers Passed in Exit Sequence:
R6 and R7 - PSD in effect when the interrupt occurred
R2 - address of the register save area

14.4.3

Entry Point 2 - Queue Start Service Routine

Entry point 2 of H.EXIO is entered from 10CS each time it queues an I/O request and the
channel is not busy. It is entered with interrupts blocked and the appropriate context
block address.
Calling Sequence:
Entered from H.IOCS,29 by:
BEl
BL

*XIO.EP2,X2

Block External Interrupts
X2 = H.EXIO OLDPSD address

Registers Passed in Calling Sequence:
R3

=Context Block address

External Routines Called:
o

Entry point 2 of H.DP02

Functions Performed:
o
o

sets bit indicating a handler EP2 entry
transfers control to EP2 of H.DP02

Exit Seguence:
TRSW

RO

Registers Passed in Exit Seguence:
All registers returned unchanged.

14-29

14.4.4

Entry Point 8 - SYSGEN Initialization

Entry point 8 of H.EXIO is called by SYSGEN when configuring a new system.
Calling Sequence:

BL

*IW,X2

X2

=H.EXIO HAT address

Registers Passed in Calling Sequence:
R7 = CDT address
External Routines Called: None.
Functions Performed:
o

provides a buffer area used by the disc processor for storage and record
keeping

o

builds the deactivate channel interrupt (DACI) instruction for EP I and EP3
exit routines

o

computes the SI vector location address and initializes it with the H.EXIO
execution address

o

stores the SI scratchpad address into CDT.SIAD

o

builds the drive attribute information table needed for channel initialization
(INCH)

Exit Sequence:
M.XIR

HAT

(Special SYSGEN Initialization Termination Macro)

Note: 'HAT' is a label equated to 0 relative within the H.EXIO handler.
Registers Passed in Exit Sequence:

14.5

Non~.

XIO Disc Handler (H.DP02)

One copy of H.DP02 exists for each system that supports the disc processor. Its function
is to process I/o requests on behalf of the user.

C_-j.,\
I

I

14-30

ii
I

I'

Entry Point Summary

14.5.1

H.DP02 has 8 entry points as follows:
Entry Point

Handler Entry
Point Name

EPI
EP2
EP3
EP4
EP5
EP6
EP7
EPg

DP02.!
DP02.2
DP02.3
DP02.4
DP02.5
DP02.6
OP02.7
OP02.8

14.5.2

Function
Queue drive interrupt service routine
Queue start service routine
Spurious interrupt service routine
Lost (timed out) interrupt processor
Op code processing routine
Post transfer processing routine
Error processing routine
SYSGEN initialization

Entry Point 1 - Queue Drive Interrupt Service Routine

Entry point 1 of H.DP02 performs I/O post-access processing for completed I/o requests
and pre-access processing associated with all queued I/O requests for non busy devices on
the interrupting channel.
Calling Sequence:
This entry point is called from H.EXIO entry point 1 by a:
*JUMPLOC

BU

where JUMPLOC contains the address of EP 1 of H.OP02.
Registers Passed In Calling Sequence:
R3

=Context Block address of completing subchannel

External Routines Called:
S.IOCS3
S.IOCS15
S.IOCS29

unlink 100 from Controller Definition Table (COT) chain
delete IOQ for task delete requests
report I/O complete

Functions Performed:
Entry point 1 performs the following functions
0
0
0
0
0
0

('

0
0

stores status into IOQ
computes and stores transfer count into IOQ
issues SENSE commands when needed
stores SENSE information into 10Q
determines if error condi tions exist
processes error conditions and does retries as required
initiates I/O for queued I/O requests
takes various action in response to condition codes returned from SIO
commands
14-'31

o
o
o
o
o

processes device time-outs
unlinks 10Q from CDT chain
processes requests for task deletes
reports I/o complete
issues priority override for dual ported discs that time out

Exit Sequence:
Entry point 1 always exits with an unconditional branch to the H.EXIO exit processing
routine.
BU

X3 = H.EXIO OLDPSD address

*XI0.XIT,X3

Registers Passed in Exit Sequence: None.
14.5.3

Entry Point 2 - Queue Start Service Routine

Entry point 2 of H.DP02 serves as the link between EP2 of H.EXIO and the pre-access
processing code of H.DP02 EP 1.
Calling Sequence:
This entry point is called from H.EXIO entry point 1 by a
BU

*JUMPLOC

where JUMPLOC contains the address of EP2 of H.DP02
Registers Passed In Calling Sequence:
R3

=context block address

associated with the I/O request

External Routines Called: None.
Functions Performed:
Branches to pre-access processing code of H.DP02 EP 1.
Exit Sequence:
Entry point 2 merges with entry point 1 and uses its exit sequence to return to H.EXIO.
Registers Passed in Exit Sequence: None.
14.5.4

Entry Point 3 - Spurious Interrupt Service Routine

Entry point 3 of H.DP02 is a dummy entry point which is never called because spurious
interrupts are discovered and processed at EP3 of H.EXIO.

..~.

14-32

(

14.5.5

Entry Point 4 - Lost Interrupt Service Routine

Entry point 4 of H.OP02 is entered from S.IOCS5 to take corrective measures
appropriate to the device when an expected Service Interrupt (SI) fails to occur. It is
also entered from H.IOCS,38 when a 'KILL' command is issued for I/O that has started
but has not completed. Because a Halt I/O (HIO) instruction is issued, EP4 contains logic
to handle a status stored response.
Calling Sequence:
This entry point is called from either S.IOCS5 or H.IOCS,38 with:
BEl
BL

Block External Interrupts
*4W,X2 X2 = H.DP02 Halfword Address Table (HAT) address

Register Passed in Calling Sequence:
R 1 = UOT address
External Routines Called:
H.EXIO

if HIO produces status stored response

Functions Performed:

If

o

terminates device activity and sets lost interrupt flag

i'

i

Exit Sequence:

,I

Entry point 4 returns to the calling sequence with a:
TRSW

,1

RO

Registers Passed in Exit Sequence: None.
14.5.6

Entry Point 5 - Opcode Processing Service Routine

14.5.6.1

Common Processing

Entry point 5 of H.DP02 is called by IOCS to process various user I/O requests.
Calling Sequence:
BL

*5W,R3

R3 = H.DP02 Halfword Address Table (HAT) address

Registers Passed in Calling Sequence:
RI
R2

= FCB address
= FAT address

14-33

External Routines Called:
S.IOCS13
H.IOCS,40

build an IOQ
set up lOCOs in 10Q

S.IOCS33

update File Assignments Table (FAT) and File Control
Block (FCB); return files starting block number

S.IOCSI0

delete IOQ

S.IOCSI2

set up lOCOs in IOQ

Exit Sequence:
All entry point 5 returns are to IOCS through one of the following calls:
o

BL 10LlNK

used when normal device access is required to service the
request

o

BL SERVCOMP

used when request has been serviced with no device access
required

o

BL ILOPCODE

used when op code passed to EP 5 is in error

Registers Passed in Exit Sequence: None.
14.5.6.2

Opcode Dependent Processing

14.5.6.2.1

Opcode Summary Table

The following table summarizes FCB op code assignments.
02 Code
X'OO'
X'Ol'
X'02'
X'O)'
X'04'
X'05'
X'06'
X'07'
X'08'
X'09'
X'OA'
X'OB'
X'OC'
X'OD'
X'OE'
X'OF'
I

Timeout
Value
0
0
4
4
0
0
0
0
0
0
0
0
0
0
2
0

Function

EP5 return to 10CS

Open File
Rewind File
Read
Write
Write End-of-File
Execute Channel Program
Advance Record
Advance File
Backspace Record
Backspace File
Upspace
Erase
Eject
Close File
Reserve
Release

Service Complete I
Service Complete
Queue Request
Queue Request
Service Complete
Queue Request
Service Complete
Service Complete
Service Complete
Service Complete
Service Complete
Service Complete
Service Complete
Service Complete
Queue Request
Queue Request

Open commands normally take the service complete return except for the first
I/O request to the channel which forces channel "initialization (INCH).

G
I~

14-34

(

where:
Op code is a hexadecimal number from OO-OF used by 10CS and EP5 only
Timeout Value is in seconds
Service Complete returns to IOCS SERVCOMP routine
Queue Request returns to 10CS IOLINK routine

14.5.6.2.2

Open

Open commands are normally processed in EP5 by taking the service complete return
with no other action. The exception to this is when OPEN is called the first time for a
given channel. The first OPEN call will effect a channel initialization (INCH) by:
o
o
o
o
o
o
o
o
o
o

calling S.IOCS 13 to build an 100
issuing a Reset Controller (RSCTL) instruction
issuing a Reset Channel (RSCHNL) instruction
delaying for 32000 timer units
issuing a Disable Channel Interrupt (DCI) instruction
issuing an Enable Channel Interrupt (ECI) instruction
setting up the 100 with an execute channel program request which points to an
INCH command lOCO
setting the bit in IOO.FLGS specifying execute channel program
storing a positive timeout value in seconds into IOQ.FCT4
taking the q'ueue request return to IOCS

14.5.6.2.3

Read

Read commands are processed in EP 5 by:
o
o
o
o
o
o
o
o

calling S.IOCS 13 to build an 10Q
calling S.IOCS33 to update the FAT and FCB and return the absolute starting
block number for the requested file
computing a seek address
calling S.IOCS12 to set up a Seek command lOCO within the 100
calling H.IOCS,40 to set up a Read lOCO or lOCOs within the IOQ
building mode byte within the 100
storing a positive timeout value in seconds into IOQ.FCT4
taking the queue request return to 10CS

14.5.6.2.4

Write

Write commands are processed in EP5 by:
0
0
0
0
0

('

0
0
0

calling S.IOCS 13 to build an IOQ
calling S.IOCS33 to update the FAT and FCB and return the absolute starting
block number for the requested transfer file
computing a seek address
calling S.IOCS12 to set up a Seek command lOCO within the 100
calling H.IOCS,40 to set up a \Vrite lOCO or lOCOs within the 10Q
building mode byte within the IOQ
storing a positive timeout value in seconds into IOO.FCT4
taking the queue request return to IOCS

14-35

14.5.6.2.5

Rewind

Rewind commands are processed in EP 5 by:
o
o
o

zeroing the current disc address in the FAT
setting the Beginning of Media (BOM) flag in the FCB
taking the service complete return to IOCS

14.5.6.2.6

Write End-of-File

Write End-of-File commands are processed in EP5 by taking the service complete return
to IOCS with no other action.

14.5.6.2.7

Execute Channel Program

Execute Channel Program commands are processed in EP5 by:
o
o
o
o

calling S.IOCS 13 to build an IOQ
setting the bit in IOQ.FLGS specifying execute channel program
storing a positive timeout value in seconds into IOQ.FCT4
taking the queue request return to IOCS

14.5.6.2.8

Advance Record

Advance Record commands are processed in EP5 by:
o
o

calling S.IOCS33 with a count of + 1 to update the FAT and FCB
taking the service complete return to IOCS

14.5.6.2.9

Advance File

Advance File commands are processed in EP 5 by taking the service complete return to
IOCS.

14.5.6.2.10

Backspace Record

Backspace Record commands are processed in EP5 by:
o
o

calling S.IOCS33 with a count of -1 to update the FAT and FCB
taking the service complete return to IOCS

14.5.6.2.11

Backspace File

Backspace File commands are processed in EP5 by taking the service complete return to
IOCS.

G
14-36

14.5.6.2.12

Upspace

Upspace commands are processed in EP 5 by taking the service complete return to IOCS.
14.5.6.2.13

Erase

Erase commands are processed in EP 5 by taking the service complete return to IOCS.
14.5.6.2.14

Eject

Eject commands are processed in EP5 by taking the service complete return to IOCS.
14.5.6.2.15

Close File

Close File commands are processed in EP 5 by taking the service complete return to
IOCS.
14.5.6.2.16

Reserve

Reserve commands are processed in EP5 by:
o
o
o
o
o
o

calling S.IOCS 13 to build an IOQ
calling S.IOCSI2 to set up a Reserve lOCO within the IOQ
setting bit in IOQ specifying Reserve command
building mode byte within the IOQ
storing timeout value in seconds into IOQ.FCT4
taking queue request return to IOCS

14.5.6.2.17

Release

Release commands are processed in EP 5 by:
o
o
o
o
o
o
14.5.7

calling S.IOCS 13 to build an IOQ
calling S.IOCS 12 to set up a Release lOCO within the IOQ
setting bit in IOQ specifying Release command
building mode byte within the IOQ
storing timeout value in seconds into IOQ.FCT4
taking queue request return
Entry Point 6 - Post Transfer Processing Service

Entry point 6 of H.DP02 is a dummy entry point and should never be called.
14.5.8

Entry Point 7 - Error Processing for Operator Intervention

. Entry point 7 of H.DP02 does an immediate TRSW
operator intervention error retry.

RO return thus disallowing any

14-37

Entry Point 8 - SYSGEN Initialization

14.5.9

Entry point 8 of H.DP02 is entered by SYSGEN when SYSGEN encounters an extended

I/O disc specified in the Controller Definition Table (CDT). It is called only once
regardless of the number of channels configured with extended I/O discs.
Calling Sequence:
BL

*8W,R2

R2 = H.DP02 Handler Address Table (HAT) address

Registers Passed In Calling Sequence:
R7

=CDT address

External Routines Called: None.
Function Performed:
Entry point 8 performs the following functions for all extended I/O disc CDTs, UDTs and
context blocks:
o
o
o
o
o
o
o
o
o
o
o

provides memory space allocation for context blocks
stores handler Halfword Address Table (HAT) address into CDT .SIHA
stores context block address into UDT .CBLK
stores CDT address into context block
stores max transfer byte count into UDT.MBX
stores channel address and device subaddress into context block
stores SYSGEN specifiable timeout value (DPTOV) into context block for
dual ported devices
computes and stores number of sectors per cylinder into context block
stores service interrupt vector address into context block
stores channel 10CD vector address location into context block
converts EP5 time out values to seconds and stores into EP5 time out table

Exit Sequence:
M.XIR

HAT

(Special SYSGEN Initialization Termination Macro)

Note: 'HAT' is a label equated to 0 relative within the H.DP02 handler.
Registers Passed in Exit Seguence: None.
14.5.10

Error Processing for Conventional I/O Requests

When an I/o operation completes, the 16 status bits presented in the Status Doubleword
are checked for error conditions. If only Channel End (CE) and Device End (DE) are
presented, the I/o operation is considered complete with no errors and normal postaccess processing is continued. If other bits are found to be set, the handler issues a
SENSE command to gain additional information regarding the error.
The Sense
information is stored in the context block for the device (see Section 14.2.1.3.2). The
status bits, sense bits, and drive status bits are then interrogated to determine
appropriate action as described next.
14-38

'G
i",·

(

14•.5.10.1

Abort the I/o Request

The following Status bits, Sense bits, and Drive Status bits will abort the I/o request:
Status Bit

2
3
4

Meaning
Incorrect Length
Program Check
Channel Data Check
Channel Control Check

5
Sense Bit

8
9
10
12
14
18
19
20
21
23
30

Meaning
Command Reject
Operator Intervention Required*
Spare
Data Check
Disc Format Error
Write Protect Error**
Write Lock Error
Mode Check
Invalid Memory Address
Chaining Error
Reserve Track Access Error

1

(
Drive Status Bit

12

Meaning
Write Protected**

All of the above errors will cause the Error Condition Found bit (1) in Word 3 of the FCB
to be set which indicates to the user that the I/o operation completed abnormally.
14•.5.10.2

Retry the I/o Request

The following Sense bits will cause five (5) retries of the whole IOCD list before aborting
the I/O request:
Sense Bit

11
13
27
29

*
**

Meaning
Equipment Check
Data Over or Under Run
ECC Error in Sector Label
ECC Error in Track Label

This condition will also cause the Device Inoperable bit (4) in Word 3 of the FCB
to be set.
If I/O request was a write, this condition will also cause the Write Protection
Violation bit (3) in Word 3 of the FCB to be set.

14-39

I/o requests which timeout will be retried five (.5) times.
I
-I

o

If error retry is unsuccessful, the Error Condition Found bit (1) in Word 3 of the FCB will
be set which indicates to the user that the I/O operation completed abnormally.

There exists the capability within the disc processor to retry erring read commands using
various combinations of carriage and timing offsets as defined by the "Mode" byte
specified by the Load Mode Register command (see Section 14.2.1.3.2). This capability is
extremely useful for recovering data from transportable disc packs and shall be
incorporated in a future version of the XIO disc handler.

1"•.5.10.3

Perform Read ECC Correction Logic

The following Sense bits will cause the ECC logic to be performed:
Sense Bit

Meaning
ECC Error in Data

.28

When an ECC Error in Data is detected, the Read ECC command is issued to obtain
correction information. This information is invalid if the Status returned from the Read
ECC command contains other than Channel End (CE) and Device End (DE) or if the bit
displacement exceeds the sector size. In either case the error correction logic is
bypassed and error retry is initiated as per Section 14.5.10.2.
When the correction information is determined to be valid, the bit displacement is used
to locate the address of the erring bits. If the address is outside the users buffer, no
error correcting takes place and the I/O request is considered complete without error. If
the address is within the users buffer, the data is corrected. The 10CD list is then
modified to begin data transfer from the point of interruption and the I/o transfer is
continued.

14.5.10."

Rezero and Retry

The following Sense bits and Drive Status bits will cause drive recalibration and retry of
the whole 10CD list:
Sense bit

2.5

Meaning
Disc Addressing or Seek Error

Drive Status Bit
8
9

Meaning
Disc Drive Detected a Fault
Seek Error

The Sense bits and Drive Status bits not specifically mentioned above are considered
'don't care' items and normal post-access processing is continued.

o

~

i·
:

i
I

I~

14-40

Iii
Iii
I

14.5.11

Error Processing for Execute Channel Program Requests

Error processing for execute channel programs is impossible to perform at the handler
level; therefore, only a minimal amount of support can be given. Information returned
will consist of Status Words I and 2 passed to FCB Words 11 and 12. If bits other than
Channel End (CE) and Device End (DE) are present, bit 1 (error condition found) of Word
3 in the FCB will be set. Bits 16-31 of Word 3 are valid. Sense information generation,
error correction, and error retry are the responsibility of the user.
14.6

SYSGEN Directives

SYSGEN 'CONTROLLER' and 'DEVICE' directives are used to define XIO discs configured
in an MPX-32 system. See Volume III of the MPX-32 Reference Manual for details.
Each disc drive attached to a disc processor is assigned a unique unit address in the range
o to 7. This unit address is determined by a unit address plug installed in the drive or by
switches contained in the drive depending upon drive type. The device subaddress
specified on the SYSGEN 'DEVICE' directive is the unit address from above multiplied by
2 and converted to its hexadecimal equivalent, i.e., unit address 7 is specified as OE.
Sample SYSGEN directives follow:
CONTROLLER=DM08, PRIORITY = 16, CLASS=F, MUX=XIO, HANDLER=(H.EXIO,I) I
DEVICE=OO, DTC=DM, HANDLER=(H.DP02,S), DISC=MH040 2
DEVICE=02, DTC=DM, DISC=MH080 3
DEVICE=04, DTC=DM, DISC=(MH040,D), DPTOV=3 4
DEVICE=06, DTC=DM, DISC=CD032 5
1.

The CONTROLLER directive specifies an IF' class, extended I/O moving head disc on
channel 8 at priority level 16. The handler name (interrupt fielded is H.EXIO and is
channel reentrant (one copy per channen.

2.

This DEVICE directive specifies a 40 MB moving head disc assigned to subaddress
00. The handler is H.DP02 and is system reentrant (one copy per system).

3.

This DEVICE directive specifies an 80 MB moving head disc assigned to subaddress
02.

4.

This DEVICE directive specifies a 40 MB dual-ported moving head disc assigned to
subaddress 04 with a dual-port timeout value of three (3) timer units.

5.

This DEVICE directive specifies a 32 MB cartridge module drive. The removable
media portion (MHD) of the cartridge module drive is assigned subaddress 06 and the
captive media portion (FHD) is assigned subaddress 07 (by SYSGEN).

14-41/14-42

15.0

INPUTIOUTPUT PROCESSOR (lOP) HANDLER

15.1

Introduction

(
This chapter describes in functional terms the software requirements for integrating
Input/Output Processor (lOP) hardware into MPX-32. It also serves as a guide to
programmers whose task is to design device handler programs for lOP controllers.
This chapter is not intended to supply detailed lOP hardware information. Such
information can be found in the lOP Technical Manual and in the individual lOP
Controller Technical Manuals.

15.2

Hardware Overview

15.2.1

Hardware Block Diagram Description

A block diagram of the lOP and associated hardware elements is contained in Figure 15-1
and is explained in the paragraphs which follow.

15.2.1.1

The Input/Output Processor (lOP)

The lOP is a multifunction processor which plugs into the SelBUS and requires two
SelBUS addresses. The lOP is an I/o multiplexing channel capable of interfacing up to I FlOP controllers to the SelBUS. Each of the 16 controllers can communicate with
m~ltiple devices.
The lOP also provides two ports for the connection of two TTY compatible devices, each
of which can function as both System Control Panel and operator console.
Optionally, the lOP can also provide the same real-time interrupt input capability that
one R TOM board provides with the exception that only 4 external interrupts are available
to the user.

15.2.1.2

lOP Control Panel/Operator Console

The lOP eliminates the need for a System Control Panel by providing the most commonly
used System Control Panel functions as interactive commands on a CRT or TTY which is
connected to one of the two integral lOP ports. The same CRT or TTY also functions as
the operator console.
Each port can operate in the full duplex mode, and will support a TTY compatible device
or a modem for remote operation. One port is designated as the master port and the
second port is designated as the slave port.
Upon system power-up, the devices connected to both ports are automatically activated
in the control panel mode. While in control panel mode, the CRT or TTY is driven
strictly by lOP firmware. Automatic switching from control panel mode to operator
console mode is effected when the CPU enters the RUN mode. In the operator console
mode, the CRT or TTY is driven by software. Upon transition of the CPU from RUN to
15-

1

SeiBUS
Channel nn, nn+l
0
1

RTa.i

Interrupt
Inputs

~

,

lOP
FD

I

3

Input/Output
Processor

I

lI

-

lOP
Subchannel.

Slave
(Control Pane 1 I)
onsole Dev i ce
FF
FE

Bus
Subchannel

Subchannel

1

0

lOP
Controller I

- --

o'-'_--..
1
...

,
,

Master
{ Control Pane 1/1
Console Dev ice
J

Fe

F

.-_~J

F

lOP
Con t roll er 2

o

- - ---

I
lOP
Con t ro Iler 16

--1

F

o

I

---

B

Device
Addresses

G
Figure 15-1. lOP Hardware Block Diagram
15-:/

HAL T, the CRT or TTY device is automatically switched to the control panel mode. The
transition from operator console mode to control panel mode can also be effected via
software (i.e., operator command).
For a list of control panel mode displays and interactive commands, consult the lOP
Technical Manual. A description of the operation of the slave port can also be found in
the lOP Technical Manual.

15.2.1.3

lOP Controllers

The lOP supports up to 16 independent device controllers. Each controller connects to
the mUltipurpose bus. All controllers connected to a particular lOP share both the
channel address and service interrupt (SI) priority of their parent lOP.
Each lOP controller has a subchannel address which is its multipurpose bus address. Each
lOP controller supports up to 16 devices except the controller on subchannel F, since four
subchannel F addresses are com m i tted to the control panel/console devices.
Even though the lOP is theoretically capable of addressing 254 devices, the amount of
RAM configured on the lOP limits lOP addressability to 124 devices.

15.2.1.4

lOP

~upport

fO(" Real-Time Interrupts

As an option, the lOP can, in addition to its other previously described functions, assume
the role of an RTOM. That is, it can process up to 16 real-time priority interrupt levels.
If the RTOM function is required for a CONCEPT /32 CPU, the appropriate real-time
interrupt levels should be configured in CPU scratchpad using the odd SelBUS address of
the 10P's even/odd address pair. If the RTOM function is required for a 32/7x CPU, the
10P's even/odd address pair must be 78/79 with the appropriate interrupt levels
configured in CPU scratchpad using address 79. If the R TOM function is not required on
a 32/7x CPU, the lOP SelBUS address pair should start at less than 78.

15.2.2

lOP Device Addressing

lOP device addresses have the following format:
CCSD, where
CC = Channel/lOP Address
S = Subchannel/Controller Address
D = Device Address

15.2.3

lOP Protocol

lOP devices use standard F-cJass I/O (XIO) instructions with the following exceptions:
Enable WCS (EWCS), Write Channel WCS (WCWCS), and Grab Controller (GRIO) except
in the case of the console which uses a special form of GRIO to facilitate usage of the
MPX-32 System Debugger.
Operation of the IOP/XIO instructions is explained in the lOP Technical Manual.
15--

15.2.4

Detailed lOP Hardware Information

f~

It)

For detailed IOP hardware information, see the lOP Technical Manual.
15.3

Software Overview

15.3.1

Software Block Diagram Description

A block diagram of MPX-32 software related to the lOP and the control of lOP devices is
contained in Figure 15-2. The various elements of Figure 15-2 are explained in the
paragraphs which follow.
15.3.1.1

lOP Device Handler Programs

lOP device handler programs are designed to provide generalized MPX-32 I/O support for
specific lOP device controllers. Each handler consists of six entry points. Each entry
point represents a functional block of code as follows:
Entry Point OP. - Operation Code Processor
This entry point performs device specific processing of user I/O requests including the
formatting of I/O queue entries.
Entry Point IQ. - I/O Queue Processor
This entry point processes I/O queue entries in order to initiate actual device I/O.
Entry Point SI. - Service Interrupt Processor
This entry point performs all service interrupt processing, status reporting, and
automatic error recovery if applicable.
Entry Point LI. - Lost Interrupt Processor
This entry point performs handler recovery from a lost service interrupt due to device
timeout.
Entry Point PX. - Special Post Transfer Processor
This entry point performs optional handler related processing after completion of the I/O
request but before return to the requesting task. This entry point operates at task
priority level.
Entry Point SG. - SYSGEN Initialization Processor
Executed by SYSGEN during MPX-32 image construction and subsequently overlayed.
Builds and initializes DCAs, and initializes other MPX-32 I/O data structures.
15-4

o

User I/O
Requests

I/O
Control
System
H.lOCS
EP

lOP
Channel
Executive
H.IOPX
OP.

EP

..

AIlS Is

for devices
on th is lOP
SI .

IQ.

Ll.

Px.

Device
Handler
H.xxIOP

Device
Handler
H. yy lOP

Q
Device
Context
Area

Device
Context
Area

Device
Context
Area

Figure 15-2. Software Block Diagram
15- 5

15.3.1.2

lOP Device Context Areas

Associated with each device connected to an lOP controller is an lOP Device Context
Area (DCA). The lOP DCA allows lOP device handlers to be system level reentrant by
containing pointers to system tables associated with the device, and by providing
temporary storage locations for each device.
The

confi~uration

15.3.1.3

of the DCA is discussed in detail in subsequent paragraphs.

lOP Channel Executive

The lOP Channel Executive program fields interrupts on behalf of all controllers
connected to a particular lOP. Subsequent to fielding an interrupt the lOP Channel
Executive passes control to the interrupt servicing entry point of the appropriate lOP
device handler. The lOP Channel Executive locates the correct lOP handler by locating
the appropriate UDT.
Returns from handler interrupt servicing entry points are made via the lOP Channel
Exe.cutive.
15.3.1.4

H.IOCS/IOP Handler Interaction

H.IOCS makes calls to entry points OP., IQ., LI., and PX. of lOP device handlers to
perform the device specific processing required when users execute I/O requests.
15.4

Required Data
Implementation

Structure. Additions

15.4.1

Data Structure Additions

15.4.1.1

Channel Definition Table (CHT)

and

Modifications

for

lOP

The CHT as shown in Section 2.4.11 of the MPX-32 Technical Manual will be constructed
to support the lOP Channel Executive program and lOP Handlers. The first 14 words will
include a register save area, CHT.REGS, and a service interrupt control area comprised
of CHT.OPSD, CHT.NPSD, CHT.IOCL, and CHT.STAT. Locating these items in the CHT
serves to centralize them for easy scrutiny. CHT.REGS must begin on a register file
boundary.
Fields CHT.IPL, CHT.CHAN, and CHT.FLGS will provide lOP attribute descriptors.
Fields CHT .CDTO through CHT .CDTF will contain the addresses of the CDT entries for
the controllers connected to the corresponding lOP. These addresses will provide for the
fastest possible service interrupt response times by allowing the lOP Channel Executive
the most convenient access method to the lOP handler interrupt servicing entry point.
These addresses will be used together with the analogous UDT addresses (CDT.UTO
through CDT.UTF) described in Section 2.4.5 of the MPX-32 Technical Manual. Entries
for unimplemented controllers will be set to zero.

,4"c,
V
i

il
15-6

1:
I'
I
I

Field CHT.STDW is a double word location into which the lOP will store its channel
status.
Field CHT .EXIT contains the address of the exit entry point in the corresponding lOP
Channel Executive program. lOP handler interrupt servicing entry points will branch to
the exit procedure via the address contained in CHT.EXIT.
Field CDT.INCH contains the address of the channel initialization entry point in the
corresponding lOP Channel Executive program.
Only lOPs will have a CHT entry, and these entries will not affect the operation of any
currently implemented device handlers.
15.4.2

Data Structure Modifications

15.4.2.1

Controller Definition Table (CDT)

The CDT is modified as shown in Section 2.4-.5 of the MPX-32 Technical Manual. First,
to allow for the possibility of an I/O queue per UDT (i.e., per device), bit 0 of CDT .IOST
when set indicates that no I/O queue entries are linked to the corresponding CDT.
Second, bit f, of CDT.FLGS, when set, indicates that the corresponding CDT represents
an lOP controller.

(

Third, in order to achieve the fastest possible lOP device interrupt response times, each
CDT contains the addresses of all associated UDTs in ascending order of device address.
Entries for unimplemented device addresses contain zero.
These modifications will not affect operation of existing device handlers.
15.4.2.2 -

Unit Definition Table (UDT)

Several significant modifications have been made to the UDT for lOP implementation as
shown in Section 2.4-.6 of the MPX-32 Technical Manual and are described in the
following paragraphs.
To allow for the queueing of I/O requests on a per device basis, the UDT contains the
standard MPX-32 linked list head cell format as represented by fields UDT.FIOQ,
UDT.BIOQ, UDT.LPRI, and UDT.IOCT. In addition, bit 0 of UDT.STA2, a new status
byte, indicates that an I/O queue is linked from the corresponding UDT when set.
Bit 1 of UDT .ST A2 indicates, when set, that the corresponding UDT represents an lOP
device.
These modifications will not affect operation of existing device handlers.

15-7

15.4.2.3

Commtmication Region Variables

The following communication region variables have been added to support the CHT:
C.CHT A

Address of Channel Definition Table (CHT)

C.CHTN

Number of Channel Definition Table (CHT) entries

15.5

Required Modifications to Existing Software For lOP Implementation

15.5.1

10CS Modifications

10CS is modified to take into account the differences in 10CS to lOP handler
communication, I/O queueing on a per device basis, and other features new to lOP
handlers.

15.5.1.1

10CS to lOP Handler Commtmications

15.5.1.1.1

10CS Calls to lOP Handler Entry Points OP. and 10.

H.IOCS,29 is modified to determine whether calls to the opcode processor entry point
(OP.) or the I/O queue processor entry point (IQ.) are for lOP devices, and, if so , to
locate the handler via the UDT or initialized I/O queue entry (IOQ.DCAA) rather than via
the CDT.

15.5.1.1.2

10CS Calls to lOP Handler Entry Point PX.

S.IOCS 1 is modified to determine whether calls to the special device post processor entry
point (PX.) are for lOP devices, and, if so, to locate the handler via the I/O entry queue
(IOO.DCAA) rather than via the COT.

15.5.1.1.3

10CS Calls to lOP Handler Entry Point LI.

S.IOCS5 is modified to determine whether calls to the lost interrupt processor entry
point (U.) are for lOP clevices, ancl, if so, to locate the hancler via the UDT rather than
via the COT.

15.5.1.2

I/O Queue Entry Linking and Unlinking

15.5.1.2.1

Linking an Entry to an I/O Queue

H.IOCS,29 is modified to cleterminc whether I/o queue entries 2.re to be linked to the
COT or the UDT, anc present S.EX~CS 'common link subroutine} with the appropri2tE'
head cell address.

G

15.5.1.2.2
(

Unlinking an Entry from an

I/o Queue

S.IOCS3 is modified to determine whether I/O queue entries are to be unlinked from the
COT or the UDT, and to perform the unlinking accordingly.
15.5.1.3

Kill I/O Queue Search

H.IOCS,38 is modified to search for I/O queue entries linked from UOTs as well as from
COTs.
15.5.2

SYSGEN Modifications

15.5.2.1

Data Structure Requirements

SYSGEN has been modified to support the data structure additions and modifications as
described in Section 15.4 of this chapter.
15.5.2.2

Device Requirements

Samples of SYSGEN directives required for lOP support are shown in Figure 15-3.
I

(-

I,

·•. ·1·.·

15.5.2.2.1

lOP Controller Directive

All lOP controllers connected to the same lOP have the same channel address. One copy
of the lOP Channel Executive program (H.IOPX) is loaded per lOP. SYSGEN keys off the
MUX=IOP directive for this purpose unless the optional "HANOLER=XXXX" keyword is
present on the directive. In addition, one CHT entry is created per lOP.
The "SUBCH=n" keyword indicates which lOP subchannel a controller is connected to,
and is used to verify proper device address specifications on subsequent device directives
(i.e., the subchannel should match the first device address digit).
Note that the device mnemonic (and therefore device type) may be different on the
controller and device directives.
15.5.2.2.2

lOP Device Directive

Each lOP device directive contains the name of the handler which services it. However,
lOP handlers are assumed to be system level reentrant, and, therefore, SYSGEN
configures only one copy of each required handler.

15-9

il
:1
;1
1.'1

CONTROLLER = LF12, PRIORITY=lA, CLASS=F, MUX=IOP, SUBCH=I
DEVICE=( 10,2), DTC=FL, HANDLER=H.FLOIOP
DEVICE=18, DTC=LP, HANDLER=H.LPOIOP
FL1210, FL1211
LP1218

Floppy Disks
Line Printer

CONTROLLER=TY12, PRIORITY=lA, CLASS=F, MUX=IOP, SUBCH=2
DEVICE=20, DTC=TY, HANDLER=H.ALOIOP
DEVICE=21, DTC=TY, HANDLER=H.ALOIOP
TY 1220, TY 1221

8-Line Asynchs

CONTROLLER=CT12, PRIORITY=lA, CLASS=F, MUX=IOP, SUBCH=O
DEVICE=OO+Ol, DTC=CT, HANDLER=H.CTOIOP
CTOO

Console Terminal

PRIORITY =13, RTOM=(13,OC), PROGRAM=H.IP 13
Software interrupt level 13 corresponding to lOP channel 13 (the odd
aqdress of even/odd address pair 12 and 13) and subaddress C (which is the
l's complement of the relative physical priority, 3).

o ,Figure 15-3. Sample lOP SYSGEN Directives
15-10

15.5.2.2.3
(

lOP RTOM Function Directive

SYSGEN does not require modification to process priority interrupt directives for the
lOP and construct the required scratch pad cell images. Note that the interrupt physical
address must be an odd number address of an even/odd address pair, and that the even
number address must appear in the controller directive set. Since the interrupt physical
sub address is the one's complement of the relative physical priority (O-F), the unused and
superfluous first hexdigit should be zero.
15.5.2.3

lOP SYSGEN Initialization

SYSGEN calls the initialization entry point of the lOP Channel Executive and of each
lOP handler with the address of the CHT in register I (R3).

(

15.6

New Software Required For lOP Implementation

15.6.1

lOP Channel Executive - H.IOPX

15.6.1.1

Interrupt Fielding Entry Point

When an interrupt occurs on an lOP channel the interrupt fielding entry point in the
corresponding copy of H.IOPX will automatically be entered. The interrupt fielding
entry point will, after updating the global interrupt count and saving all registers, locate
the handler servicing the interrupting device via the appropriate CHT, COT, and UOT
entries. Control will then be passed in the unmapped mode to the service interrupt
processor (entry point SI.) of the device handler.
15.6.1.2

Interrupt Exit Entry Point

In order to exit an lOP interrupt level, the service interrupt processor of the lOP handler
will call the interrupt exit entry point of the appropriate copy of the lOP Channel
Executive. The address of the interrupt exit entry point will be located via the COT.
The interrupt exit entry point will restore the mapped mode, deactivate the interrupt
level, and branch to S.EXEC5.
15.6.1.3

Initialize Channel Entry Point

The initialize channel entry point is called only once to perform a channel initialization
(INCH) to the lOP. This consists of a single lOCO which indicates to the lOP where
interrupt status from the lOP is to be posted. This entry point is called by the device
handler of the first device on an lOP to be opened.

15-1 i

15.6.1.4

Initialization Entry Point

The initialization entry point is an overlayable procedure called by SYSGEN to initialize
certain local and global variables as follow:
Variable Name
N/A
CHT.NPSD
CHT.EXIT
CHT.INCH
IOPADDR
INCHIOCD

Description
SI vector location
New PSD address in Service Interrupt Control Area (SICA)
Address of H.IOPX interrupt exit entry point
Address of H.IOPX initialize channel entry point
lOP channel address
IOCD used to perform initialize channel (INCH)

15.6.2

lOP Device Handlers

15.6.2.1

lOP Device Context Area - H.DCAxxx

15.6.2.1.1

Device Context Area Configuration

The configuration of a prototype DCA is shown in Figure 15-4.
element of the DCA is also explained in the figure.

The purpose of each

DCA.SIZE

REZ

lW

Size of this DCA

DCA.UADD

REZ

lW

Address 1 This Unit

DCA.CHTA

REZ

lW

CHT Entry Address This Unit

DCA.CDTA

REZ

1W

CDT Entry Address This Unit

DCA.UDTA

REZ

lW

UDT Entry Address This Unit

DCA.IOQA

REZ

lW

Current IOQ Address This Unit

DCA.LINC

REZ

lW

Lost Interrupt This Unit

DCA.SINC

REZ

lW

Spurious Interrupt Count This Unit

DCA.RETR

REZ

lW

DCA.FLAG

REZ

lW

Retry Count This Unit
Bit Flags This Unit Y

DCA.TIMO

REZ

16W

Timeout Value Table - 1 entry, 1 opcode

DCA.SENI

REZ

lW

IOCD for Sense Status

DCA.SENS

REZ

NB

Sense Status This Unit

,

,

1-'0,

(

,

\

\",

\

-

, r

v

\

"

, r t)

\....\'-

,',

n
1\ "

".\',
\

"

r- \ '

()
Figure 15-4. lOP Device Context Area
15-12

1.5.6.2.1.2

(~'

Device Context Area Construction and Initialization

Entry point SG. of each lOP handler will construct and initialize the appropriate number
of DCAs. Space for the DCAs will be allocated at assembly time via assembly in entry
point SG. of a system macro named DCA.DA T A. A repeat count will be set representing
the maximum number of that type of device which is possible to configure. During
SYSGEN initialization, entry point SG. will scan the UDT for its handler name, and will
initialize only the required number via system macros DCA.INII and DCA.INI2. Entry
point SG. will then cause the remaining DCAs to be overlayed by SYSGEN. Provisions
will be made in the design of the aforementioned macros to allow for additional space in
the DCA and for insertion of user code to perform any required unique initialization.

15.6.2.1.3

Device Context Area Element Access

Elements of a DCA will be referenced via symbolic offsets which are defined in the
system macro DCA.EQUS. The names of the symbolic offsets defined in OCA.EQUS will
be the labels shown in Figure 15-4.

15.6.2.2

lOP Device Handler Programs

Section 15.8 contains an lOP device handler prototype or skeleton which can be "filled in"
with device specific code to produce a unique lOP device handler. This handler prototype
should be used as a time saving device, a learning tool, and a guide to coding standards to
be followed in all lOP device handlers.

(

Section 15.9 contains an actual sample lOP device handler.

1.5.6.3

Miscellaneous New Software

1.5.6.3.1

Report I/O Complete - S.IOCS29

This subroutine is called from entry point 1 of lOP handlers to report I/O completion to
the MPX-32 Executive program. S.IOCS29 determines the type of I/O starting and call
the appropriate Executive subroutine.

15.6.3.2

Mark Units Offline - S.IOCS31

This subroutine is called from entry point 4 of lOP handlers when it is determined that a
device is broken. S.IOCS31 marks all UOT entries of a particular controller off-line and
malfunctioning, and marks the COT malfunctioning.

1.5.7

lOP Floppy Disc Handler Program (H.FLIOP)

The lOP floppy disc handler program (H.FLlOP) is system level reentrant, i.e., only one
copy of H.FLlOP is required regardless of the number of floppy discs or lOPs configured
in a system. Reentrancy is accomplished via device context areas (OCAs). One DCA is
created and initialized in the SYSGEN iritialization entry point for each floppy disc
configured.
15- .

As with all lOP device handlers, interrupts are fielded by the lOP channel executive
program (H.IOPX), and then turned over to the service interupt entry point of H.FLIOP
for processing.

0

,
.~I

15.7.1

Functional Characteristics By Entry Point

15.7.1.1

Opcode Processor (OP.)

The following operations are supported by H.FLlOP:
Operation

User Call

Open

M.FILE

Remarks
1.
2.

Performs lOP channel initialization if first
lOP operation.
Initializes FAT. Rewind is implicit

Rewind

M.RWND

Resets current disc address in FAT to zero.

Read

M.READ

1.
2.
3.
4.

Write

Resets EOF detection flag if user inhibits
data formatting, if read is blocked, or if read
is random access.
Saves original FAT parameters in I/O queue
for EOF processing in service interrupt entry
point.
Updates FAT for read operation.
Builds IOCL consisting of SEEK + READ
commands with data chaining as necessary.

M.WRIT

Same processing as for read with exceptions: (I)
No EOF processing considerations
(2) IOeL
consists of SEEK + WRITE commands.

M.WEOF

Same processing as for write except that
X'OFOOOOOO' is written to the current block.

Execute Channel
Program

N/A

Not supported in MPX-32 Release 1.5.

Advance Record

M.FWRD

Adds one (block) to the current disc address in
FAT.

Advance File

M.FWRD

Same processing as for read with exception: (1)
I/O queue indicators set such that read is
repeated until EOF detected. (2) Read buffer is
local to handler and read count is 1 word.

Backspace Record

M.BKSP

Subtracts one (block) from the current disc
address in FAT.

Write

15-14

End-of-File

o
!

~

Remarks

Operation

User Call

Backspace File

M.BKSP

Same processing as for Advance File except that
read is in the backward direction.

Upspace

M.UPSP

Formats diskette to MPX-32 format which is 256
bytes per sector, double density.

(

15.7.1.2

I/o Queue Processor OQ.)

The I/O queue processor performs standard I/O queue scheduling as outlined in the
prototype lOP device handler.
15.7.1.3

Service Interrupt Processor (SI.)

The service interrupt processor performs standard I/O interrupt processing for the floppy
disc as outlined in the prototype lOP device handler with the following additional
considerations.
15.7.1.3.1

(

Read End-of-File Processing

Unless explicitly inhibited by the user (via bit 2, FCB.CBRA) or implicitly inhibited (via
blocked or random access operation) SI. will look for the pseudo EOF character
(X'OFOOOOOO') when processing an interrupt for a read. The first word of each 192 word
block read is examined for the pseudo EOF character. If found, the EOF indicator in the
I/o queue entry is set. This will eventually cause the EOF indicator in the users FCB to
be set.
Since the current disc address in the FAT is updated for the read prior to the operation,
and since the EOF is likely to be detected on the first block (or some block other than
the last block read), the current disc address in the FAT will have to be adjusted after
the EOF is detected.
In order to accomplish the adjustment, the original FAT
parameters (prior to being updated for the read) are saved in the I/O queue entry. These
values are then updated via subroutine S.FLlO 1 upon EOF detection.
The FAT is not available to the service interrupt entry point (because it runs unmapped)
so actual updating of the FAT is performed in the special post transfer processor (PX.)
which runs at task priority level.
15.7.1.3.2

Backspace File and Skip File Processing

For both these operations, a one block read is set up in the opcode processor (OP.).
During service interrupt processing, the first word of the block is tested for EOF. If EOF
was not detected, the original rOeL is updated to point to the next or previous block, and
the original FAT parameters now in the I/O queue entry are updated (via subroutine
S.FLlO I). The 10CL is then reexecuted. When the EOF is detected, processing is as
described in Section 15.7.1. 3.1.

15- 1 c;

15.7.1.3.3

Error Recovery Processing

If interrupt status indicates an error condition (i.e., unit check reported) a sense status
-I

command is executed to gather sense data. Refer to the Line Printer/Floppy Controller
Technical Manual for a listing of sense data generated by the floppy controller. Error
conditions are categorized as unrecoverable error, seek error and data error. If
unrecoverable errors are reported, no retry is attempted. If a seek error is reported, the
floppy is rezeroed followed by up to 5 reexecutions of the user's original request. If data
errors are reported, the user's original request is reexecuted up to 5 times. If still
unsuccessful, the seek error recovery procedure is followed.

15.7.1.4

Lost Interrupt Processor (LI.)

The Lost Interrupt Processor performs standard lost interrupt and kill I/O processing as
in the prototype lOP device handler.

15.7.1.5

Special Post Transfer Processor (PX.)

The special post transfer processor updates the FAT from I/O queue entry parameters in
order to complete processing for a read in which EOF was detected, a backspace file, or
an advance file operation. See section 15.7.1.3.1.

15.7.1.6

SYSGEN Initialization Processor (SG.)

The SYSGEN Initialization Processor creates (at assembly time) and initializes (at
SYSGEN time) floppy disc device context areas (DCAs). Currently, up to two DCAs will
be created and initialized. If more than 2 floppy discs are to be configured in a system,
the count on the repeat (REPT) assembler directive immediately following label
'DCASTAR T' must be increased, and H.FLIOP reassembled.

·C."'.
I

I 5-1 (,

i

.~XllX1XXXIXX~Xl.XX

SPACt.

(

~A~OLER

.

10

•••• -.*._** •• *--******.*.*_._-.***-**-.
..-*._*.*******._-_.****.-.*.*-*.-,
MIGHTS
ccccc
~~~~~

**

Rl~'~ICT~O

LEGE~O

*

•
•
•

USE, OuPLICA1I0I\4, Off OISCLllSUkE IS Sut\JEtT TU Tl1l

*

Iola:.SfwICTIO"lS STA1EO IN SYSrE."IS· LltE~St. AGHEtME.H
(FUHM NU. 1218J UH, FUw GOVE~~~~NT CUsrOME~S,

*
*

*

yAW 1-104.''"'.
*
*
****_._**.**.tt********._*****._** •• ***_*_*.*.**_**************_.**._.*._*

TlTLE
tllolUbtUM

.*** •••••• -*.-_.****-*--**-**----**-**--*-****-***-*****-.*-*.-*-_.*.-**
*
*
*

**
*
*

THIS

Hf£NTRANT ~HIC~ MEANS THAT U~LY U~E CUpy
SHOULO dE CO~FIG~HEU INTO AN M~X-3l SYSTEM HEG'ROLES~ U~ THE
NUMdE~ uF OEVleE~ UF THIS l'~E _NU TI11:. ~U~blR ~F IUP'S CU~FIGUktO
Ii" TOT HE S ~ S 1 EM.
HA~OLlH

I~

s,srE~

•*
-

*
*
*
****t._.
__ •• _._ ••• __ •• __ *****_ •• _.* __ .****_*** •••••• ***.******. ___ ***._.*
-

SPACE
M.EQUS

1

"". TtKS

uCA.EwLJS
EXT
EXT

(

I:.XT

Exr
EXT
I:.XT

EXT
EIT

EXT
EXT
EXT

HAT

~.t::J(£e5

S.IUCSJ
S.IueS1U
S.10eS13
S.lueS15
S.luCSc9
S.lUCS.H

ILopeOIJE
SERVCOMJI
IOLINI(
PUSTPRUS

~PACE

J

u'T'~

&

AC ...

UP.
HI.

Aew
AC~
AC~

Ae ...

51.
LI.

.dl"ULEW AUiJHt.SS TAoLt
uPCuOE PNOCfSSUR Aui,)H~SS
1/0 YUEuE PHOCESSUR 'Ui,)N~SS
SE~vICE l~T PROCfSSOW 'OOR~~S
LOST INTERHUPT PROCESSOR AOUWESS

Pl.

PUST XFtR

5G.

*MuST 8f AUuEU ME~t.
INITIALIZATION PHUCESSON AOUw
*TMIS MuST TM£ LAST ENTRY PUINT
uPCUOE PRoCtSSON

PHUCfSSU~

AUO~E~S

-'uuI1IO~AL ~~T~Y PUl~TS ;IF ~Ey'6,

~YSGE~

-.-_. __ .... _._ .. --*_ .... *--*_ ••••••••• _.--*_ ... *._ .. _-._.*-*---_ ... *_.-.
TITLE

-•

M.XXIOP

*.***.**_**. ___ .* •••• _. ___ • __ *•• ___ •• _.*_._ ••• *_* •• _. __ .*a***_a_ ••••• __ _
.
-

UP • • UPCovi PRuCEiSOR

-

15- ; ~

*
*
*

*

*
*

**
*

*

*
*

rHIS ENTHY P~l~T [S ACTUALLY A SU8~OUTI~E E.T£NSIO~ ~f H.IUCS,~~,
A PO~TluN UF [uCS LOGIC COMMON TO ALL 1/0 SERVI~ES wHlCH A~E
CAPAdLE INITIArlNG A PHYSICAL U~VICE ACCESS. IT 1S CALLEO IU
PNOCESS THt u~CUO~ PlUGGEO [NTO TH~ FC_ ijY THE 1/0 SERYIC~
ONI~INALLY CAlLto ~y THE U~ER.

rHE PURPOSE O~ OPe IS TO EXAMINE r~f OPCOOE
FC~ CUNTNUL 3PtClflCArlUNS, ANU TU INDICATE
.CJIO~ 15 TU dE '.KEN. IN OWUEH Tu IhOlCA'E
JAKtN, U~. rAK~S 1 UF q ~US~I~lE ~fTURhS TO
ILUPCUOE

*

StNVCU~P

*
*

*
*
*
*

IUlIN~
PUST~WOS

IF NETUNN 3

*

~'
J
l

~.

*

'

*
**
*
*
*
**

I, uPCUOE ILLEGAL FU~ THIS otYlCE
~E~vlCE COMPLETE, NO UEv ACCESS ~EUU*
j , LIN~ HEYUEST TO 1/0 QUEuE
*
4. Ll~~ WEYU~ST + PuST P~uCESSlhG ~EWO *
~.

rA~EN

uP, MUST FINSr.

*
*
*
*

•
*

*
*

•

*
*

*

*
*

2. dUlLD l~TO TME 1/0 YUfUE E~TRY IN THE SPACE wESERvtO FUR
IT, AN 1/0 COM~ANO LIST (lOCl) wITH THE PROPtN COMMANO
C~UES ANO fLAGS USI~' IUCS SUij~OUTINE S.luCS1i A~O loes
E~rHY POINT M.IUCS,~U.

*~
*

•*

j.

*

*
*
*
*
*
*

15

.

1. CALL IuCS SU8WUUT1NE S.IUeSl] TO ALLOCATE ANU tNITIALIlE
*
AN I/U ~UEuE ENTHY. fUUH luU EhTwY ~UHOS, CALLfU HANOLE~
*
FUNCTIUN ~UNUS AHE UF ~PtCIAL INTEHtS~ TU THt PWU~WAMMER. *
UP UN l~r~, INTO THE OPCUU~ ~WUCESSl~G RUUTl~~ THET ~~E
*
SET uP AS FULLO~S:
*
IOQ.FCTl - ijlTS 0-7 ~ W~~O AUJ UPCOOE,81TS 0-]1 F~Et*
10Q.FCTi • USER'S LUGlCAL UATA AUDRE!S
*
IUY.FCf3 - USER'S ~YTE T~ANSfEw COUNT
*
IOY.FCT4 - AvAILABLE
*

•

•
•

(IOLlh~)

ANO OTHf~ PfNTlhEhT
TO ".lUC~,Zq ~~AT
WHAT ACT1UN IS IU ~~
H,lUCS,~~ AS FULLUWS:

~

•*
•

•

OR, IF THE USER ~EQutSTS ElECUTION OF HIS CHANNE~ ~HOGRAM, *
vALIDATE THE DATA ANEAS, AND ABSOLUTIlE THE UATA AUURESSES *
uSlN' lUCS SU8ROUTI~E S.10CS3]
*

*

4 lPOSTPRO~) INOICATES THAT A~ 1/0 HEYUEST 1~ TU ~E
fO THE I/U QUEUE FOA THIS DE~lCi AS I~ HETuAN ] (lULIN~),
AND ALSO THAT AFTEN THE AlQUEST HAS BEEN COMPLETED wuT ~~FOH[
~ETUR~ TO OR NOTIF"lCArION OF THE USER, THE SPECIAL OivICE ~OST
PROCESSING E~J~Y PUINT (PI.) "ILL HE CALLED.
'AKING

~~TURN

Ll~KE~

**
*

*
*
*
*
*
**********.***.*.**********.********************************************
*
•
*
*
*
*
*

CALLE.:

H.IOCS,l.

CALLERS PNIONITYI

'ASK LIYfL

INTE~~uPJSI

UN~LOCK£O

*
*
*

,ALLIN;

.L

•

S£QuE~efl

~£'IITERS

15-18

INI

Rl

*1_,XZ

•

*
*

•
*
•

·C
\;

,

.,.)

","AOO.".
'i~

•(' •

Re!
MS

",ETUIolN SEYUI:.NCE:

•-

HAT
-- uor

nU
I2U

AUu"'tSS
AUOWESS

*
*
*

Ok,
lOLlfliK
SEHVCO"'P O~ ,

ttU

lLOfo1C()U~

t$U

POSTPHlIS

'*•

UW,

*
.*
•
*
•
w1
"'EGISTEMS
UuT:
fCB
AOlJkt:.SS
•
•
•*t* ••• ******-.** ••• _••• ****.****"**.*** __ ._* __ ._**_.** ••••• * •• * __ •••• _.•

*.

*

SPACe:
THE

O~COOE

3

VECTUR

TAeL~

~HICH

FuLLu~S

CO~TAINS

IHI:.

AUIJIolES~E~

Of

PRUCEUURES uloluE"'~O BY (JPCOIJE NU~~Ew. EACH
** ENTRY ..US 8ll u SET IF THt:. 'S!)IICIAfllJ PHUClLWwE IolEt.lUl..ct:.S AN l/U
** ~Ut:.UI:. ENTRY. SYM~OLIC u~cuu~s AWt ALSO LISfI:.U.
** THl UPCOOE.

*

uPlift
OPEN.UP

("

'II~

I T .UP

l/X,jl/~(OPI:.N)

lOU

o

~EI\I

l/X,

EQU
C.EN
tQU

1

2

bEN
eQU

3

1/l,.s1/~(HEAu)
l/x,~l/rd

... RlT)

ilE~

1/l"H/~(W'tEOF)

t:QU
bEN
EQU
GEN

4

1/1l"S1/,trlf::XCP)
'5

t/X,,51/W't(AOVIot)

.:, t:: 1\1

1/1,Sl/l'f(AUvF)

ll>~F'.UP

E.QU

1

J.,aSP .OP
~QPT

.UP

,JCT .Op
'LSE.OP

ufo1l:.~

S1/~lwwi'4u)

t.~U

iI(SF.OP

~-

S

GEII4

ADVR.OP

'iI(SR.OP

("~"

eQU

P~OCESSING

AOVA~CE

"'t.COI"O

ft

Gf:..

1/X,11/V.(df(SH)

EQU
GEN
EQU
GEN
EQU

8

AUVA""Cf FILl:.

"ACf(SPACt wtCOwu

1/~,,51/W't(~KSF')

dACf(SPACE fILE

1/."Hltt{u~SP)

uPS,",ACE

q

lU

GE~

In'"H/~lEMPT)

EQO
liEN
EQU
GEN
eQU
GEN
GEN

11

SPACE
dOUNO
EQU

1

l/X,31/~lEJCT)

t:.~ASE

OW

P~NCH

r"'AILEN

EJECT

1 Ii!
1/1,.Sl/~(CLSt::)

CLOSE

1)
1/1,31/W't(U~US)

1/1,31/"'(UNUS)

UNUSED
UNUSED

1W
S

* PROCEDuRE ro ALLUCAT E AN 110 Qua:.uE ENTRY, IF ."ECt.SiAWY, AND
• VECTOR TO THE ,PPHOPIA'E OPCUOE PROCESSING PROCEDURE

La

~2,F'C8.0~CO,Xl

GET OPCOOE

~MOM

FCd
15-19

l.)I'.O.OO

ALJJllSl 11PCUUE
UP ClJ () i.. 1 i! K &
GEr OPCUUf P~UCEUUME AUU~ES~
~~ IF 110 ~UEUE ENTRY ~uT ~tlJ'U
GET l/U ~UEUE eNTHY
GET IUU ENTRY AUUH~SS
SAVE UPCUUE IN luQ EN1RY
\~U/olO

lRo-i

i>i2,2
1<2,1<&

L~

~1.l,UPiAti,X?.

SLL

S A VE

tj I\j ."

UP.O.OV

dL
L ..~

5.1U(;Sl.5
R2,FCB.IUQA,Xl

~T~

~b,IOlJ.r-CTl,l(2

t:.QU

$

LW

~3,UOT.OCAA,)(3

T~~

Kb,~2

dU

*UPTAti,R2

GET AOO~tSS OF UEVICE CUNTExT AWEA
I~')CtOlJwt::

~I(!i"

EQu

UP.q.uu

t.UU
All(

*

••
•

PWllCEull~£

,;f(SF
UP.I.VU

••

~.,

•

UP.d.U"

•
(

*.

Tll

PlwfU~M

tUC~SPACl:.

I:..~pr

-IJP.C.O"

I)t:. II 1Cl:.

ru

"'t.WFuootM

d4CKStlACt.

UP .l). UV

••

•

o"'.I:..vo

••

•

t t( t:.

ut:.PE,.. IJENT CUOt:. GUE::.

I'1bolt.

Ut->~t"ACt::

•

t:.'JU
t,QU

.a

'X'

LJEVICE Uf:. f' EI~ L)I:: fH CUUE GUES I"ItJo4T

cuUE (iUt.S f'1tRE

GUt~

HtkE.

CL~t:

Il.LE(;Al. lJPCuuE FUM PHS uEvICt

u~uS

uP.f.uv

Egu
fQU
ljU

TITl.E

•
j

Il.U"-COuE
H.lllll)P

I/ll

l~uEuf

P."""Ct.SSUI(

•••••••••••••••••••••• * •••••••••• * ••••••••••••••• * ••••••••••••••••••••• ,

•

lU. - lIU IWlUt:: P"'UCt:SSUM
•
•*.** •••••••••••••••••••••••••••••• * •••••••••••••••••••••••••••••••••••• ,

•*

rMrs

E~rN'

PUI~T

IS CALLED dY H.IUCS,2Q AFTER l.lNKINb

T~I:.

ilC
15-2 '

*
*
•
*
*
*

-*

•

QUEUE E~T~' C~k.rEU BY UP. TO THE lID QUEUE FOR THIS DEvICE,
IF THE l/U wu~ut ~AS EM~lY WHEN THE E~lHY wAS ~1~~EU.
fH[S

THE

•

0'.

tNTRY PUINT IS ALSO CAL~EO ~y
TO AUTOMATICA~l' ~ROCESS
.FTEW S~HVICE INTf~~UPT PHOC~SSI~G IS CU~PLE!E.

1/0 ~u~ut

THIS ENT~Y P~lNT IS ALSU CALLEU ~, ~I. IF OEVICE
FAILS, HEQUI~ING THE 1/0 QUEUE TO Sf RfSTAkTEO.

TEH~INATIUN

AI~-''''

•

\yl

~

It

,*

.
•

-*
*

*

* ••• -*-_.*---***-*-*-**._****-*.-*************.**********.*** •• ****.*.**
*
*
CALLE~:
O~,
*
•

•

OR,

*
*
*
*

*

CALLE~S

PKlu~IrY:

*
*

•

TASK LEVEL IF H.IOCS,2Q
IUP INTtRRUPT LEvtL IF SI.
KEAL·TI~E CLUCK INT LVL I~ LI.

-*

•
•

It

*

*
*
•
*
*

-

INTEHRuPTS:

dLUCKfD IF H.IOCS,2Q
lOP LEVEL ACTIVE IF SI.
HT CLOCK LEVEL ACTIVE IF LI.

CALLING SEYUtNC£:

.:tL

.lw,X2

~L

IQ.

IF H.IUCS,.2Q
IF 51. OR L.~.

It

~EGISTERS

•

IN:

"'2 a HAT

I(]

•

.,0

*

•

~ETU"'N

•*
*

~EGISTt:.ICS

SEWUfNCEI

--

TRSw

'OD~ESS

UOT lODHESS
IUY AOLJWfSS

IF H.IUCS,i9

IF .... IuCS,~9

RU

R1

-**
*
*

-*
It

. """

*
It

It

OUT:

•

MUST NOT dE OISTU"'SEU

-*-

•

*.***.-****.*-*-*-** ••• _*-** •• *****.*-*._**_.---*---*.*** ••• _••••• _.*.**

•**

**
**
*

:)PACE
dOUNO
EQU

•

L~

~2,UUT.OCAA,XJ

ZSM

u,DCA.FLAG,X2

3
UI

bET DCAlOO .. fSS
CLEAR UNEXPECTED INTENHUPT INOICATU"

PRUCEouRE TO PHUCESS NkXT 110 QUEUE ENTRY. THIS PROCEOURE ASSUMES
THE I/O QUEuE FO~ T~IS DEVICE IS LINKED TO ITS UUT, lNO MuST BE
MOOIFIEO IF THE 110 YUEUE IS LINKEO TO TME COT FOR THIS O~VICE.
EQU

•Re.,UUT.IOCT,XJ

oZ

IQ.l.05

La
*** MOIolE

15-22

10Q ENTRIES TO PROCESS
LW
1ie.,UOT.FIOQ,Xl
~T ..

1of~,lJCA.Ioca,xi

TRR

H 3,RS

TAA

~Jt,w 1

5B ...

O,lOQ.STAT,Xl

L. ..
I.'

~1,DC'.CHTA,lZ

ft., IOG.IOCD, lU. .

A~'t IOQ ENTWli:Sl
Sli IF NO IoQ ENTRIES

_iT NEXT lOW ENTRY
SAllE. IN UCA
UOT lODRESS TO RS
IOQ ENTRY .U~R£'S TO NJ
I~OlCATE 108 ENTR' ACTIVI
GET CMT ADORES.
.IT .00.1"

~

-loeL

. . ---- . . --

C""

;, I

LW

"'&,CHl.IUCL.1Cl
"'l,t)CA.TIMO,xl
toll,IOY.Joell,xJ
"'b,U,ll

l~tol

tol~,Wl

ST"
LA
.O"'t4

(

51,..

tolb,UOT.PTOV,Xl

LH

~b,UCA.U'O",Xc!

~I)

1.1.1.V~

•IJUl.PTUY,llj

~IIIIJ

l"'"
L ""."t

IJ CA. !CJ I.., "' ,

X2
\,UUT.fLGS,xj

It;M
Sb""
• ••

I( E ,

TIMEOUT

~t.'

uor

lllot .\1

I I~ • 1 • 1 u

fU

O,uCA.FLAG,.~

V'L~E

'U

rHl~

UPkHA'l~~

,

AUUWfSS
HI
Sfuf'lE TIMEUUT VALVt. l~ uur
(it.T U~IT AUU~t.SS·
J~ulCATf 1/0 OU1STANU1NG THIS OtVICt.
ISSUE STAHl l/u

l,UOT.f-LGS,Xl
tol&,O
1.... l.1u
"u
I-IO"lf 1U"" t~T~lt~ TU PWOClSS - lUY IS
SS~

Slu

* ••

~HUH~ Il'4TU t ... r lUCl A~IIf'lt:.~~
(if r AOOklSS Uf" UCA T l/1tt.UUl I At;Lt
OFfSEt lr..rU utA.l1,,",0 ~ASt.lI UI~ vPCUut.

t~PTY

CUH~E~T llMEUUl VALUE
lE"u CUHHtNT lUW t:.~r~y 'uu~t.SS
I~UIC'Tt. ~o l/U UU'SlAN01~G THiS
J~UIC4Tt. l~TlH~UP'S NUr tlPttTtU

lt~U

CALLt.tol

i UU

:J

TRS~'4

tol(J

TITLf

1"t.~J(IUP

St~VICE

INTEkHU~r

Pf'lOCES~UH

... _-.------*._*_.* .. *--... _---.-.-**-.*** .... _*._ ..• **-*._.*--.*** .... -

•-

•
*_ .... _* ..... _.** .. _. ___ .. __ ... ___ .•.. _*.*_*_.**._ .. _.*.*_ .. _. ___ .*t_ •• •_

-•

•

•*
•
*
*
*

-•
-*

•

THIS t:.ft4T"'Y ~uIl'4r IS Ef'4TtWEU "'HI:., .. E:.Ilt:.1it AN
I::» .,-: It:.LIJELJ bY 1'1.1uPJ(. St,wvICt. !1... rt.l(~uPT
.. ilL L U·'t J '''b :

1. t> E 1 EH I~ 1 ~ t. THE

In A:) UI~

11~rE:.WAUPT
pto(UCI:.S::»l~b

FNV'" lHl~ OI:.IiICf. !,.tLUUf.;) Tn':

•
•
•

F UI'i I'" f EHH UP r III ~ •

POST STATuS FUR USt:.~.
5. .,: t. r C1'1 AU 01 r h)." A L St:: ~ SE u ATA,IF 1'4 t. Ct. 5 SA" Y•
.... AJTEf'IIIPT t:.~~UW ~ECOlltkY, If Nt.CI:.SSAkY.
.,. tJ; .. Llfll~ IllY l:.i~TIolY FwUIl1 IUw.
n. ~l~uwT I/u COMPL~Tf. TO t.E:.C.
1. AUTUMATICALLY ~RUCESS ~Elr IUQ tNTI(Y

l.

•
•
•
•
•

•* •••••••••••••••••• _•••• --_ •• ** ••••••• -_ •• _ ••• _ •••••• -*--._ .. _.*.* •••••••
•
CALL!:.I(:
".ll1~l
•*
•
IUP INTbHhJt'r Lt:.VEL
•
•
*
Ift4T~HWuPTS:
lU~ Lt.Vt.L ACTIVE:.
•
•
•
•

--

CALLI:.~S

*

CALL1ft445 Sb.lut::I'o4CE:

"u

•

>'4

H3,LJCl.Ul)f',X~

~L

Ltt

dH IF NO C~Ah"'EL E~HU~S
1'.. uICAli:. E:I 11~rt:~l'luP'S AS SPII~l\JUS. IF THE UlvlCE IS CA"'ln~t:: uF
.- Glijtl'(ATlI.b ASy·jC~wO, .. UuS Ir~lt.tolkljtJrs, TI'd5 PkuCt:.UUlo/l "'u~T HI:. '''UU!F lEt).
*ft

t tJLJ

...

A B '1

j

~t;

...

~u

*
*. jJIoiOCt:.UUIolt:.
*

51.3.vu

TU

-

tAIT lNli:.WHuPl LEvEL

jJlo(UCt.ss '"'10

r''f Tt:. ..

I(~,wj

oL

~.IUCS1~

Lw
l."

Hc,lOY.DCAl,Xl
~ 3 , I) CA. UuTA , )( c

~L

1"" •

Lff
'jO

..,~,LJCA.CHrl,l~

*C'"".tlIT,xc!
TU

t,(,I1I

P-tUCt.5S 1-410

I(

U~ T

HJR

A

SPUl(luuS

1I\jTt.~RUpr

l~OlCA't.

TIMt:.ouT

u~"tCU~E~A~L~

Sd''''

l~uIC'Ti:.

Ew~UR

':jU

SI.1.10

CU~"'LET~

Pjo/uCESSl~G

U5t.I'C ~TAluS
l/u ~~N
USEw ~T1TuS

l~

If'ltTtN~UPT

lAl

DEv

Ot.PEI\jOEf'ltT

u~"ECUVt"A~Lt

XlI, X

ul:.V

uEPE~~E~T

Ht.CUvtI'CAdLt.

lRk

MAS~

I:.~"UW

~AS~

$

"'h,lUQ.ISTl,.xc
"", uWolEMASI(

GET t.RROW STATuS INFU
STu"E I~ I~~ ENTI'lY
bEl UN~ECuvfjo/A~LE ~~~u~

'(b,~CA.SE~~,)(j

~A5~

-;Z

51.'J.05

t;W

5t;M

h, IUIJ.~LGS, x~

Sbr04

1,Iu().r(JST,l~

LMt\

:1

l~

~

Lt"i

I

I•

j

l~ulCATE.

tQU
LW
ST",

,

fUR A UI:VICI: TIMe.UvT

ul~~t:I"ASK

*

CUuNT

,,-ET COT lOUIH.SS
IJ"4LINK IUQ t,r.,rro(Y HW~ IllY
lUI", Ef>4TkY AUIJIolE.S::a TU ":5
IJi:.Lt:.TE lUQ E·"T..,Y
G~r UCA AUUHf.SS
1I~ T uCT Al)Ujo/I:.SS
~p(OCESS NI:X1
I L1W t I~ T" 'f
"t.T CI-iT AOL)kt::SS
~x Ir I~TE.p('WPT l.t.VtL VIA ,",.lUPl

Io'wdCE.Lh,JRE:. TU tJ.cuCt.::;::; SlU SEf'.4St:. srATuS

SI.~.vo

CGu~T

l~T

KILL

10, !u(J. IuSl,)(~
1 u oJ • r l. I; S , xi.
l.IUlJ.lUST,xc!

UATA"
Ttil Y1-1 A51( UIt 1 AIt

,,.,r

~PIJ~luuS

b,

:'d""

*

*er-If .1:1( IT,.q

i

Sri :..

-i*

bLU~AL

;/],UCA.cuTA,l(]
S.lUC5j

~1«(JC't.ULlIolt:.

S I.".uv

LOCAL

!NtH~~ENT

E.UU

r-.,"

*
**

l~C~EMENT

l.t4
';L

<-

1 , U CA. 5 1 ,.~ C , )( l

15,C,",f.5tJU~,)(1

t(~,DCA.SENS,Xj

~lTM

E~wO~

MAS~

srA'u~

IF NO uN~i:.CuvERA~Lt l/u ~RRU~5
SET IUY E~Tw' ERQO~ l~UICATU~
INUICATE E"WUR IN uSE" STATuS
I ,,--

xxx
:U.;.US

dU

SI.l.lU

EQU
L-

I

L""
:U

•
•

5ET OTHER O~V DEP STAfUS INDICATORS
COMPLETE PROCESSING

~4,MTRYM4SK

•• SENS,lC.5
51.1.1U
~6,DC

GET RECOVE~A~Lf
MASK wITH ENWON
DH IF NO ERNUNS

** PROCEOURE TO PEHFORM ERROR RECOVERY

~EtWYLIM

•

~I.b.UO

EQU

IIX

c.QU

a

T8!14
dNS
SI.«».OS

1, 109 .CO,H, Xl

Sl.6.0~

S8M

l,IOY.IUST,Xl

!:IU

~l.l.lU

~QU

S

AttM
LI
CAMW
IjGT

31,DCA.RETC,XJ
Rb, .. ETRYLIM
Mb,OCA.RETC,.]
5I.b.OS

lMIfe

St::lM

UCA.~ETC,x3
b,IO~.FLGS,xl

~aM

1,10(,l.10sr,x2

dU

"".

•

EQU

51.1.10

,

MASK
.

P~OCES51N'

UEV OEPENOfNT MAX. UF

XXX
SI.b.10

E~~O~

STATU~

~ETRIES

USEN INHIBIT E~ROR P~uCESSING1
tjN IF IhHItUTEO
INUICATE tWHOR 1N US EN STATUS
COMPLETE PROCESSING
UpuATE ~ETwY CUUNTER
GET MAX. RtTRIES
HETMY LIMIT tXCEEOED?
~R IF NOT EXCEEDED
CLEAR RETNY cuuNrEw
SET lOQ ENTRY E~"UH INOICATUR
INUICATE ENHUR l~ USE" srArUs
SET OTHER OEV OEP STATUS INDICATORS
CO~PLETE PROCESSING

,I

xxx

PROCEDuRE TO PROCESS

uEV OEPENOENT RErRY LUGIC GUES HEwE
INTE~RUPT

FlfOM

A

CHAN~EL

PRU'~AM

5I.S.OU EQU
S
* EXECUTE CHANNEL PRUGRAM NOT IMPLEMENTED IN HPJ 1.4
HALT
TITLE
H.XAIOP
LOST I~TERRUPT P"OCES~OR

.*" ......

.

-** •••••••••• " •••• _••• ,,*.** •••••• ** ••••• - ••••• _••• -_." ••••••••••

LI. - LOST INTER~UPT PROCESSOR
•
•
•.**._**.*--****-*** ••• - •• **.*_.**." •••• _._.* •• *.- ••••••••••••••••••••••••
•• THIS eNTRY POl~T IS CALLED ~y S.IOCS5 (O~ ~EHALF OF T~E ~EAL.Tl~E ••

6'

"
•

CLOC~ I~TERHUPT HA~OL~~) ~HEN
~.IUCS,38 1~ OHDEN TO ~ILL AN

•
•
•
•

IN COTM CASES THE CURRENT
1/0 ( ... 10) INST~UCTION. IF
UP. PERFO~MS fHE ~EQUIREO
TME CONr~ULLEIf ANO uEVICE

•

5.IUCS5 AND H.IOCS,J8 ENTER LI. wITH INTERRUPTS BLOCKED. I~
ADDITION H.IOCS,38 ENTERS LI. wITH CONTEXT SwITCHIN_ INHI8ITED.

"

•

·•
•

A DEVICE TI~EUUT OCCURS,
UuTSJANOIN& 1/0 HEQuEsr.

A~D

.
•

*

REQUEST IS TERMINATED ~lTH A HALT
•
TP1E CUNTROLLER RESPUNOS TU THE HIO,
- •
INTERHUPT HANOLIN'. IF THE HIU Tl~ES QuT~
ARE P~ESUMED M1LFUNCTI0~lNi.
*

1/0

*

•
1\

,C

***.**.**** ••••• *." ••••• *•••• _.*_ •• ** ••••••••••• *••• " •• a._ •• *.a ••••• _*.,
CALLER:

*

•

S.IOCSS
i~

15-26

I
,

,

("

--*-

CALLERS

lf04TEwWUPTS.

NT CLUCK
lO~TEXT

SEQUENCE:

*

C1LLl~G

*

~tGISTf_RS

*
-*

wETUIolN SEYUENCE:

LI.

SPACE
i:fOllIllO
EQU

I~:

LEvEL A(llyE

I~TERwUPT

I~T~k~UPTS

*

•
•

-*

~HIUWITY:

*

bLO~~tu

S~11CHJ~G

*
*
*
*
*
*

dL

"2
"3

=

HAl AOlHtESS

= UOT

-

,*

INHlbIllO

AOOW~SS

*

*
•
wEGISTERS OUT&
NOdE REg'O
*
•
*
*
***.****.-_*** •• *.*********_*.*** •• **********.***.********t************_
3

lw
S

*

-- PHOCEDURE TU TtkMINATE DEVICE ANO FURCE AN INTERRUPT YIA HALT

*

w2,uOT.t.>Cl,,)(j
31,L>Cl.LINC,)(2

LI.
.~~

1,DCA.FLAG,l(~

stt""

i(

~5

Ll.1.00

LW
STw
L.H

w&,LI.rI~O

ril0

"&,0

w&,uUT.PTOv,Kj
'" &, UUr • CHAN, Xj
wO

TRS'"

*
**
*

P~UCEDLJAE

LI.l.UU

1/0

DCA A(JOwf.S!
uPOATt. LOST INfEwRUPT CUUI'41
INIJICATE HALT 110 ISSuED
dw IF HALT 1/0 TIMED UUT
GET TIMEOUT VALUE FUR HALr 1/0
STUwE l~ UUT
bf.r DEVICE AUOwESS
ISSUE HALT 110
"'ETURN 10 CALLER
~t.T

TO CLEAN uP ... HEN HALT 1/0

TIMES OUT

eQU
ll:5""

STw
L.W
1.."
T~R

dL

rWR

1,OCA.FLlG,XC!
RO,1..1.wETN
1ot3,lJOT.OCAA,X]
Rl,UCl.COTA,x3

lot],"'''

UNITS OFFLINE ANU

DCA lOOHESS TV ~l
GET CURRENT 1/0 QUEUE E~T"Y
GET COT AUORE-SS
U~~INK 109 ENTRY FRUM IUW
THIS A kILL KE~UEST1
dH IF OEVItt TIME OUT

~2,OCA.IUQA,XJ

TRR

AO~RESS

~AHK

W],OC1.COTl,x3
S.IOCS3
l2,lOQ.FLGS,.i!
LI.l.05

dNS

~ETUR~

W4,1ot 3

LW

.e* FINAL CLEANUP

SAvE

GET DCA AOOkESS
GET COT AOONESS FOR THIS UNIT
uCA AUOwESS TO WG

5.1U(S31

LW

ttL
T8M

CLEAR HIO ISSUEO FLAG

MALFUNCTIO~l~G

k~STONE

lOU~ESS

HJ~

K 1 L ~ RE YUt. 5 T
R2,1ol]
lOW ENTHY ADDRESS TU loll

5.1UCS10
OEALLUCATE IOQ E~lN'
Ll.l.tO
•• * FINAL CLEANUP fUW L>EVICE TIME UUT
LI.l.u~
EQU
I
LWI
H&,lUW.UOU,ll G£. T u&H ADORE.S
ST ..
Nb,L.I.UOTA
SAvE FOR LATER
58",
b,IOlJ.FLGS,XC!
lNDICATE UNRECO~EHA8I..t I/V ENR
S8.-.
G,IOQ.IOST,X2
INOIC1T£ DEVICE IHOPEkl8LE
8L
8U

15-27

tiL
L-iL

IO,lOtl.IOST,XC!
HI, lUt~.t'folGN, Xi!
S.IOCSt9
Hl,LI.UOfA
IW.

t:QU

I

Lw

~O,Ll.RETN

HIS..,

RO
1...
1111
"2

SdH
L.8

Ll.l.lU

LI.RETN
LI.uOTA
L1. T1(.10

IolES
~ES

lUTA ...
TITLE

H.XJ(lOt'

INDICATE OEVICE TJME UUT
GET D~E ~UMtsEH
~£PORT 1/0 COMPLETE
"ESTORE UOT AOOHESS
~ESTAHT 10Q TO FLUSH f~I~TI~G ENTHlls
GtT R~TU~N
~ETUHN TO

AUO~ESS

CALLER
LI. AETURN AOORESS SAYE AREA
L.I. UOT AOOHESS SAvE AREA
rIMtouT VALUE F~" HIO
S~ECIAL POST XFE~ p~uCESSUH

***************** •• ***.*********************_*****_***a** •• *••• *._** ••••

**

S~~CIAL

Pl. -

-

POST XFEN PROCtSSOR

-

*

*
******.*.***--*.-***--*****._-**-.*--*--*-*_.**---*_.-***._--*-**--*-***

**

*
-

THIS

~NTRY ~OINT IS CALLEO dY S.lOCS1 (GENEHALIZEO l/U POST
~HOCESSING) wHENEVER ~ETU"N fAU~ UP. IS VIA -POSTPRUS-. THIS
ENTRY PUINT EX~CUTES AT T4SK PWI0~lTY, AND THEHEFORE CAN ~E

*

USED fa pwoviot

-

, .. AI~SF'ER

-

OvtI'tHEAD.

-•
•
*.-.
-••

(eG.,

A~Y

LlATA

SPECIAL PHUCESSING ASSOCIATED WlrM A DATA
THA,-,SLATIUN) AT A LOw Lt:.V~ OF SYSTt:.H

--

*
*

*
*

-

-***._-.*.*._****--*-**-*-**--*-*._**.*--.***.***-*.*-****--.**-*_ ••• _.*
*
•
CALLtH:

S.luCSl

CALLEHS PHluNITr:

TASf( LEvU.

INTERHUPTSZ

UNSLOCKEO

CAL.LING

tiL

St:.~UENCEI

~EGIST~~S

IN:

"1

•
•
•

•
•
•
•

*Sw,Xi

..- FCi

•

AOLlkES.

*

•

I'ti :a HAT AOOIo(ESS
.. 3
UOT AOONESS

•

-•*

~ETUIolN

•*

SEwUI:.NCEZ

~EGlSTE~S

LlUr:

TNS ..

NO

•

Fce

~1

•*

*
*
•*

AOO~ESI

*._*_ •• e •• e*._e •• ** •• *, •••• _* •••• *_*.*._._ ••••••••• *••• *••••••••••••••••
SPACE

1

dOUNO

1"

PI.
EQU
I
•
OtvICE oEPENutNT COOE GUES "ERE IF Pl. IS REQUIHEO
T~9"

~O

TITL.E

H.IIIOP

SYSGE~

INITl'LIZATIO~

PROCESSOR

••• ee •••••••••• _•••••• *.* ••••••••••••• *•••••••• *•••••••••••••••••••• _ •••

•
•
SG • • SYSGEN INITIALIZATION
•
•
•*e* •••• **.*.e***e*.*** •••••••• _••• _•• _**.* ••••••••••••••••••••••••••••• •_
•• T~IS ENT.Y POl~T IS CALLED 8Y SYS'£~ FOR T~I ~URPO" 01 IHITIALIJ- •*
P~OCESSOH

f

15-28

(

•
*
•

-••
•
•

ING CERTAIN HA~DL~~ PAWAMETtHS, INIllALIZIN& u~VICE CU~llxr A~t.S
tUCA'S) A~O INI'l'LIZI~G etNT'I~ UATA STNUC'u~t tLtMt~rs Uuwl~G
fME CUN5TWUCII~~ UF AN MPX·3~ IMAGE.
UCA'S FUN

THIS

~ANULEW

AWE

CwtAT~u

VIA

T~i

~tPl'Tt~

'SStM~L'

Of VeA'S IS
poll El(tt:UTIU,~ uF

'I;E MACwU, ·OCA.lJAJA-. A ·';All'~IJ'1 I~UMtftW
C"EAltU ()uwl.~b MAI'WLEW ASStMtlLf. UUHINb
EfliTIH PuItH, VI"!:: Del IS I;'\ilTlALIlE:.U FOr(
rMt, NA~E UF THIS "4A'~tlLEW. A.~' 1oit:.:',Alto/liolG
T-..t: CIJUE IN THIS t.NT~f ".ILL nE IJVt~LAI0
NIlSl IJHYSICALLY 1)1:. IHt LA!)T 1:.:'41"0' ?lIl~T

uF

1HlS

_
_

_

-

._
_

*

CU:oIIAINI,'IIG *
UCA'S A'''v THt WEMAil'4uEW O~ _
dY SYSbtN. TH~.•H,fUl(t hHS *
OF lt1t:. HAIWLtW.
_
E.A(.H

lIUT

ll~'-CY

•
-••• ** ••••• **_.**- ••••• _-* ••••• _.*. __ .* ••• **------****-** •••• ** •• *- •• *_ ••*
•
r
r
•
-•
lut-< IT r:
•
-*
•
C ALL·tW:

SY';\ii:N UuwING

C~LLt:.~S

1"1(

lNT£RWUPTS:

•
•

CALLING

•

(

*
*
*

"

~t.T(jkN

I

:

I~ :

SE",uU~Ct

~t:blSTt::I'lS

lJ C

IUN

•

lOA

SE~Utr~cE.

-ituI~Tt>cS

I(

lOA

•

*

IMAbt:. C\,/1'45

dL
!'Cj

:

UuT:

Pt1YSICAL tl'4I1'1'1

LAST

= eMT

rt-Ft.toi,

uOvO"v'

cCH>, P"I~I HUff-EM,
cfF>, '"'wI .... T DuF~t.W,

"
-- OC'"
IvCU
- ",S

- luCU

,Ii

lUlll AUDio(

LS" t CUUI~ r

rt2,rtJ

S.IuCS12
1 UL I :~K
2

ou

SPACE

*

lUOt(
ADL,)t(

1 UU. IS T1 , x2
rt3,UC .... C;;TA,~3
r(~,CrH .luCL,xl

fIof t(
dL

PROCEOU~t

UI~

--

U)

--

,

0)

I

STW

*.

I

lot 5,

LW

•

-= Fee

riC?

TO PijUClSS

t:gU
t:QU

~

r"fIt

Wb,rtc!

~HIT

LOAO IOU.IUCu AOvltJlNTU 10(5
GlI CHr lUCK FWUM UtA
SAVt:. JO(J.luCU .. ,WI( IN CreT
('IT lu~ AUlJrt If'4Tu W]
St.Tut-' 10Cu 1 i.. 1UIII f uli( I/U t,;u~Tio/UL
Ite.TUI(N 1U lues Tu LIN" Tr1t. luU

(; tolU

uPCuuE

j

S8""

11,lUQ.~LGS,X2

lei ...
dl1lS

2,'-Cd.GCFG,Xl
Ut-'.b.lu

l~

tts

"'UP.b.U5

Lilli

IIIIb,LP,C M ull

Tet ...

8,FCt).beFG,x~

GET IUY AOUH INTU kt' 2
SET ~HITE fLAG l~ lOQ
IS DATA fUt(~ATTl~G INHI~IT~u 11
~U, GU UO FU"MATTING
~t"U Ht' TO DE USlU FUN luCu LS~
IS TM~"t SuP~OSE TO dt NU fuHM Chft(L
Its, ~O FORMS CO~T~UL IS ~ifOfU
Ue.fAULT FOHMS CNT~L l~ SI~G~E LF
by SETUP 10CU FUN UUI~UT

UP.7.UO
j
t,QU
Wb,LP.CMOl
LA
~U fuHMS C~TRL O~LY PfltlNI duFF~~
uP. 7. U 0
dU
~u ~ETuP lUtu FU" OUT~uT
*** FORMAT OUTPuT AeCO"OING TO FIRST CHAH IN UATA ~~FFEHOP.b.10 egu
I
I~H
Xl,I(S
SAvf FC~ AuuH I~
5
LIII
~1,lOQ.FCT2,X~
btT OAT DufFEN AOU~ FHUM lU~
Lit
"~,u,Kl
~fT FIRST dyrt IN UATA ~u~FfH
ll,luQ.ftT2,X2 l~CN DATA 8U~FER AuUN 1 o'Tf
Ad'"
LW
"b,IOQ.FCT!,X2 GET .FER tOuNT FHO" luQ
SUI
~&, 1ufCH Ii' 1 dYTE
liU

OP.b.1J5

"E.

.*_ ••

ST"

~&,luQ.FCT1,xc

L.~"
~QU

W1,~PFC~UM

UP.b.15

1~

IU~

c•• e

dId
SUl
••••• CUNVENT
OP.&.20 EQU
.0 .....
:iLL
lR

'~T

~E~

NU"~tR

OF

C"A~S

1~

ft,;

TA~Lt

$
COMPA~E FC CHAR TO FC TA~Lf
YP.&.20
~H IF MATCH
li(1,uP,&.15
INCH NE~ tNT 'NU dR IF ~UI tf"U
"1,1
IF TA~Lt f~PTIE& S~T ~l • -1; FC :'
T~ x/v CO •• ANU TO ~E UiEU IN lUCO
"4,LPFCT~L.5~,Rl

dEw

•••••

SfuHE NEw CUUNT

CI'IECK FC CH.H AGAINST Ft TAttLe.

~c

I
~l,LPFCNUM

MAKE NE. eNT A POSITIVE 'AdLE

"1,2
N7

MA~E

l~OEX

INDEX A WORO INOEX
C~fAR wE. TU ~E uSEU fUR luCU LS~
L.iIII
~b,IOQ.FCT3,xl
TfST .FE~ COUNT TO SEi IF LENO
UP.&.c5
1F HOT liRO~
TQ uo-,C • vATA lFt~
"HZ
fiET 1/0 COMMANO F~O~ CMO TABLE FOR CONTROL O~L' (~U UAJA-AFt~)
AOI
wl,C~.OFSET
AOO OFFSET INTO CMO TA8LE Tu Fe [~uf
L.
~~,C.O.T8~,Rl
.iT 1~ 'OMMAHO 'OA F~~ CU~T~OL

.a

15- "3 '5

fWI(

••••• (tt'

Up.~.ou
tJu
111..1 CU1'1/'IAI'41J "'l'(ull

U"'.th~'

t:. 1.1 tJ
~

•

*•
*•

,)

" b , 1.;"10. T d L ,

IKK

..('.:),Iq

~PACt.

1

Co ,-.

••
••

.-*

.

=

rT

~"uCE5S

Iiii.

L0t4

R.5,OCA.r:HTA,~2

dU

*CHI.ElIT,xJ

SPACE

1

•• P~UCEUUHf TO PHOCESS AN UNEXPECTEO INTERWUPT. THl~ P~UCEOU"E TREATS
•• UNExPECTEO INTtH~U?TS AS SPU~luuS. IF TH~ UEVICf 15 CAPAdLE OF
•• GE~~~Arl~G AS'NC~rcUNUUS INrt~Ru~TS, THIS ~~UC~UUHE MUST dE MOUIFIEU.
••
~~T~Y : rCl = UCA AOOH
••

~2

.-

"3

Auu~

AuO~

EYU

~

AD""

.H,DC'.SI~C,Xl

Ao'"

•

= l~~
= CHI

15,CHT.SPu~,.J

oU

*CHT .EXIT, xJ

;SPACE

1

l~C"EME~T LOCAL SPURIUUS
INcre~ME~T GLUdAL SPURIuuS
tllT INTE~~u~T ~f~f~

IN! COUNT
I~T COUNT

** PRUCEOuRE TO p"oetss HIO INTER~UPT FUR A KILL
**
~NTRY I re1
UCA AOU~

.*
**

~3

*
51.l.vu

$
~3,UCA.CDTA,Xl

I. III

S.10CSJ
"i,rel
S.lueS15
;ci,10Q.OCAA,)(1

"'Ill

"3,ue'.I.IOT',X~

01.

hi.

L.!IW

I;)U

re j, DC A• CI'H A, R.e
.CHT .ElIT, xl

~PACE

1

r~A

P~uCEuuAE

TO

£~TAY

E:QU
:SdM
::»8#14
:)0#14
s~

15-40

Auu~

t:QU

ttL

**
••
**
*
51.1.&.1)0

'DuN

L'"

dL

*.*

=
= luQ
= C"'

~~

..

P~OCESS

:

~IO

= UCA

~1

liET CUT AOl>kESS
UNLINK IUQ E~TAY F~UM 10Q
lOw EHT~' A~UNESS TO N3
u~l.t. TE lUg I:.'~T~"
GfT ueA AOurCl:.SS
IIET uuT AuO~tSS
P~uCESS ~ExT lUQ ENT~Y
~ET C~' AuuwESS FRuM UCA
EllT lkTE""I.IPT I.Evt~ vI. H.IO'.

I~TERHI.IPT

FUW , OEvICE TIMI:.UUT

AOOR
"l..= 109 AOuie
Nl a CMf 'uO~
S

.1,IOY.CONT,lc
b,IOw.FLGS,xc
1,lUw.lOST,xc
JO .. IOQ.IOST,.c

INOICATE

E~~UA

l~OIC'TE

uNrcECOyt"'~L~

PAYt INHIBITEQ
1/0 EM_
I~OlCATt fWNUA IN USf~ STAT~'
l~uIC'TE TIMEOUT IN U~E~ jTATul

'c!,

':

;

CUMPLtlE

dU

*.

•

**
**
**

~PACE

1

TO PKOCES~ 510 SENSE
ENTRY I Kt
DCA ADO~
Ni = l~Y A~u~
"3 = CHT AiJuk

PHOC~OUHf

•

=

sr.Ju~

l~T~~WUPT

,
uty OEPENOtNl

UNR~MASK

UATAww

X'Ff-fOuOuu'

SI.!).uu

t.QU

•W&,ClCA.SENS,xl

•

PWuCtSS1~~

U~"tCuV~WAdLf

tww

~.~~

GET EHHUH STATUS I~Fu
STUrli
IN Ivy E~lHY
ST..,
h
rl4,u
IHf:.MASK
bET
UNHtCUvtHAdLf
iHrlUH MASK
L.W
"&,uCA.SENS,Xl MASK ~I'H tHWOR STA1U~
L"'''
drl If ~U U~"lCIJYt"A~L.~ I/U t~HUHS
sld.lv
dZ
&,lul.l.FLGS,X~
Sff IUY E~T~' f:.H~UH l~ulCATIJ"
5tH4
1 , 1 OQ. lOS 1 • • l
l~UICAT~ fHrlUH £N uSfrl S"Tu~
SO'"
t'HOCESSIN(;
FOR
UhrlECUVtHAdLf
f:.~~U~
E~~OR
COMPLETE
••••
O,lvQ.CONT,Xl
TE&1 FUN NO-~AIT 1/0
TOM
dH IF NU-~AIT 1/0
SI.5.0i
dS
ffST FUrl tWMUM p"UCtSSII'4G IIH11~11 t.u
1,1IJU.CUNT,1l~
fb""
:U.5.0;)
~~ IF E~HU~ P~OC ~OT l~"I~l'~U
dl'llS
~
5I.5.0C! UhJ
GET eDT AUOHfSS fOR UNL.IN"II'4(; IuQ
~J,lOQ.COTA.lCC!
L.W
UNLINK 109 fOH NO-wAI' I/IJ ~I ER~U~5
S.10CS3
dL
I
51.5.05 eQU
Nl,lOQ.PRGN,XC! bET OQE NUMafR F~OM IUQ
Ld
~EPUMT 1/0 COMPLtTE
S,luCSC!9
dL
;ci,lOQ.DCAA,XC! .~f GCA AOu .. lS.
L.III
~],DCA.UOTA,J(C!
GET UOT AOu"t.SS
Lfi
UOT.PTOv,XJ
l~~U TIMtOUT ~'LUE
ZfI4W
CI.EAH 1/0 OUTSTANOI~G FLA~ l~ UOT
1,uUr.FLGS,XJ
lD""
U,iJCA.FI.AG,xi
'~ulCATE l~TlRWUPTS ~UT tlPtCTfu
So""
Hl,tJCA.CrUA,XC! lit' CHT AOuwfSS
L...
-t;Hf.EXIT,xJ
f:.AIl l~TEHWUPT LEVEL vlA ".IUP~
dU
SPACE
1
L.ft

~&,lU(.l.IST1,)(~

,(

*.

*

PROCEDURE TO PROCESS_INTERRUPT fWO"" A

C"A~NEL

PRO'~A~

*

51.e.00 eQU
•
•
ElECUTf CHANNEL PHUGRAM NOT
HALT
TITLE
H.LPIOP

IM~LtMENTED

Ih MPX 1.4

LUST

INTEH~UPT

INTE~~UPT

PROCESSOR

P~OCES5uH

* •••••••• * •••••••••••••••••••• * ••••••••••••••••••••••••••• ** •• - ••• * •••••

*

*

•

~1.

- LOST

-

.
*

-*

* •••••• *._ .........•.•......... *..... * ••• * ••• - ••••••••••••••••••••••••••
*•

(-

•
•
•
•a
•

THIS ENTAY ~OlNT IS CALLED 8' S.10eS5 (ON BEHALf OF THE WE'L-TI~E
CLOCK INTERRUPT HANDLf:.~J ~MfN A U~~ICE TIMEOuT OCCUH5, A~U d'
H.Ioes.31 IN uRDf~ TO ~ILL AN UUTSTANDIN. 1/0 HEQUfST.

0

•
•

•

•

IN 80TH CASES THE CURRENT 1/0 ~fQUfST IS lERMlNATEU ~lTH A HALT
•
1/0 lHI0) INSTRUCTION. IF THE cu~rHOLL~R RESPO~O' TO THE HIO,
•
OPe 'iRfOAMI THE REQUIREO INTER"UPf H'NOLl~" l' THi Hl~ TIMES uvT •

I

'I

.. ,
,

THE

AND DEVICE ARE

S.IOCS~ A~U

•

AODITION H.luCS,38

•

,-,,

C~NTRULlE~

*
*

-

PHESu~EO

MALfU~CTIONIN~.

•

t~TER LI. wiTH INfEHRUPTS dLOC~~D. IN
E~'EAS LI. nllH CONTExT S~11C"I~& l~hlbllED.

H.IOCS.)8

*
*
*

.*

",-~

U

*-*.*.**.**.** •• _-*-***.*-*-* •••• **.** •• ***._* •• *---.-***.*** ••. ***
... .•• --*~

••

5.10CS5 , H.IoCS,]8

CALLE .. '

•
•
•
•
•
•*

CALLfRS

PKju~lTya

~E-L·'j~E

CLUC~

I~TEwWUPT

LEVEL

~T CLOC~ INrEH~UP' LEVEL AC'I~E
l~rt~HU~TS ~LUC~EU
CU~rfXr S~lTeHIHG INH1~lT~D
CALLI~G

*

•
•
•
•

S~YUE~CEI

~ETUA~

:

*
*
*

•
•
•

SE~UENCE:

uUf;

"'tGISTE~~

..-.
•

HAT ALlONESS
ftJ : UOT AuOR~SS

*
*
*

-..
•

~L

K~

*
*
*
*

*
•
• ********** ••• *.*** •••• *••••• *_ ••••••••• *-** ••• *._ ••• *••• *****--_.* •••• 3 '
, 1"

~PACE

gOUN!)
tQu

LI.

•

••

*.

**

P~UCEDU~E TO
iNT~Y

a

If~MINATE
~i
UCA

=

Jl,OCA.LINC,.~

~I:S""

oS

"UCA.FLAG,X.!
Ll.1.011

L~

~tt,Ll.TIMO

Lt1

Iitt,uUT • .,rov,xJ
.CI'1Afh XJ
"'tt,v
~tt,uUT

PHUCEUu~~

*

eQU

.cu
~

FUNCE

A~

INTlHRUPT YIA HALT I/u

AOD~

"'2,uOT.OCAA,lJ

rHS ..
SPACE

A~U

A~U~

A~M

r11u

LI.l.uu

: uor

DEVICE

Lw

Sl __

•**

I

~3

.*

.

GET DCA AOOHESS
~puArE LuST INTt~RUPT Cuu~T
l~~lCArE HALT 1/0 ISSUEU
~H IF HALT 1/0 TIMEU uuT
~tT TIM~OUT VALuE FuR HALT 110
~TONE IN UIH
~tT utvlCE AUU~ES$
IssuE HALT 1/0
HETu~N TO CALLER

.

TO CLEAN uP

~H£N

HALT 1/0 TIMES uuT

I

lli~

1,UCA.FLAG,1~

Shl

tolO,LI."'ETN

LV.

~l,OCA.CDTA,

CLEAR HI0 ISSuEU FLAG
SAvE RETUMN AO&J"ESS
.ET cor A&JURESS Fuw rHIS UNIT
MA~~ u~lTS uFFLl~i ANU MALFUNCTIU~l~.
~ET CuT AOO~fSS
.
~ET CUN~ENT I/O ~UEUE ENr~T ADD~ESS

• .!
:i.lueSl&
rc],&JCA.CuTA,Xi
L~
L~
l'ic,uCA.lOQ4,li
dL
tS.luCSJ
u~LIN" 10" fNT~'
cc,10Q.FLGS,X2 rHIS A KILL REQUEST1
TlS""
a~s
Ll.1.0S
aN IF OE~lC£ rlM£ OuT
*** Fl~AL CLEANuP FuH KILL REQUEST
dL

15-42

o

TRw

~2,W.5

lu~

E~TwY

AuU~ESS

TU

~J'

OEALL.UCATl lUQ tN1HY

S.II.)CS10
LI.I.IQ
••• FINAL CLEANUP f~~ UEVICE TIMt UUT
LI.I.U!) t,QU
"'b,lOIll.UOTA,x2 (it T UOT AlJlJwt.SS
Lti
,sAvl ,.ow lATEN
•
Plb,LI.UOTA
51 ...
II'4UICATl
Ulllwi::t;UVEK'AMLt.
I/U ll-lH
b,IUa.f'LG:S,)(~
S" .'"
l~uICATi uEvICt. INu~i::~'dL~
q,IUt~.l\JST,X~
SdM
10,lUil.luST,A2 l~UICATf O~vlCc Tl~t. uUl
!:io:'1
(it r LlwE NIF-1ljt.",
I'( 1 , Ilh';' • P wG r~ , A. 2Ld
wt,PUkT 1/0 LUM~L~TE
~.lUCSc!'1
dL
~Esrul-lE uuT AUUK~S~
~3,L.l.UuTA
Lt'I
o(t.sTAwT IUU Tu fL~SH t.xlsll~' E~TI-llts
lw.
dL
a
LI.I.lO t,~U
ufT HETu~~ AOU~t.bS
~O,LI.kETN
Lti
0(0
~tTUrCN TU CALLt.W
rKSW
L.I. "ETu~N AULl~t.~S SAVt Al-lfA
lI.KETN wt.S
1"
LI. uuT ADUwt.SS SAVt ~KEA
Itt
LI.uOTA Pits
'I~t:uuTVALuE FUN'HIO'
.~
OArAf'4
L I. T1'''0
SP~CIAl ~OST .FEW ~HuCt:SSUH
r1.L~Il>~
TITLE
til
cUJ

,

._ ...•. _._-_.*- ••.. *_.- •• -_ .•.. *.. *•... _*._--* ..•. ***.-.-*-.* .... -..

~.**

*
•
•
•
• __ ••• _••• _*. __ •• _.*--*.*.- •. *••• _.-••• -._.-.* ••••• ***.**_ •• ** •• *•... *
._.

•

(

••

-•*

-•

T~lS

ENTRY POI~T IS CALLED ~Y S.lUCSI l(it~EWALIl~V 1/0 ~us,
PWOCESSING) ~Ht~~VER ~ETU~N ~I-lUM OPe IS VIA ·POSrPRUS*. 'MIS
E~T~Y POINT fAt.CUTtS AT TAS~ PHlU"!TY, ANU T"~~~Fu"f CAN·d~
USEU TO P~UVIOE Ar~y SPECIAL P~uCESSING .SSOCIAI~U ~llH A DATA
TRI~SFE~ (EG., OATA T~ANSLATI0N) AT A LU~ LEVEL OF SYSTl~ ,

*

I'J

O~E~~EAU.

*._ •• -._ ••....•••. _•• _•• ** •. _*.***.****._****.*_ •• _*--*_.*_ •••••.• _* .....•
•
•

•t:
•
•
*

-•

CALLENI

S.lUCSl

:II

CALLERS

TASK LEvEL

11

.1

PRIORIT.."

if

CALLING SEQUENCEI

oL

.5~,X2

•
•

"E~lS1EUS

"1 • FC8 AOU"t.SS

•*

• uUT Auu.cC;SS

•

U"'~LUCKt.U

!NTt~~UPTS'

*

~

•
•

•
•
•*
•

1""

~2

iC 3

-- "AT

"ETURN sEliiutNCEI

TRS"

KEGlSTE~S

HI

UUT I

•

AOIJ"ESS

*

-•

RO

•

•

FCw ADDWESS

t

*-.* ••••• *••••••• *.••••• -•.•• -•.•••• *••• *_._*.* ••••• * •• -.*** ••• _••• -..•..
SPACE

(:'

1

dOUHU
1"
P..
iQU
I
•
DEVICE OEPENOEHT CODE 'O£S

~ERE

IF PX. IS REQUIRED
l5-4

'~S;N

S'S~~N INITIALIlATIUN ~WUCES~OR
.*** .• *** •••••••• --_. __ •• *-*--.**--*** ••• *.**. __ •••• *.*****-_ ••• **-*_ •• -.

111 Lt:

*

~~.

•

~fSGEN

-

l"lfIALllAlluN

~NUCfSSON

,

.

*

-

••• ***.*** ••• _.* ..• * ••• _ •• -_._._.-.-_._-* •• -.- ••• -._ ••• *-**._-_._-••••••*
.
•
•
*
•

*

*

•
•

•
t

•

*

*

THIS

•

INII1ALIZ- l~~ Ci~TAI~ MA~ULE" PARAM£TtH$, INlllALIlI~~ ~tV1Ct: tu~Ttll A~EA5
•
\liCA':d AIIU ! ..... lTIAL.1l1I'.lb (;twl41hl tJATA SHWcrUwi:. tL.~,.,t''4r~ lHJlI(l"'\i
•

Ttti

~~l~Y

PUl~f

1~

CALL~U

(;\Ji~!;ll'(ut..rlu'"

uf

AI~

dY ~'SGEN FU~ THE PUkP05t: ~F

... PA-.s~

i··,Abt..

•

UtA'S fUM hi!:) HANI,)Lt.1'( Awt. (.wEATt:.u VIA TNt: . ct.PEATEU ASsE'.. tH.Y OF
Tri t. ;'1 A C to( U , • UCA. UA r A·. A ,.... A X .1 MUM 'of U .11 Ut. R U.. IJ C A'S 1 S
CIIlt.ATiiJ vUHll'4b tU,"ULftol AS:)t.t·IDL.". uUrH"", TI'1t. t.(tCUThJN UF TI'1U:i
f;,IIITloiY PIJlhd, villi:: DCA IS IiI/I r IAL.llt", foO .. t:.A," UUr t.1~rreY ,,,,rHAINIMi
Trif:. r~AMf. Uf ,,11.::) nAI~I,)Lt:.Jo(. AtH HLMAl'~I.~G &)CA'S ANU. IHt. tCt,I\IIAlNuEW Uf
T~t:. C~iJt I'" T"I~ ~~f~" ~lLL bf ~Vt.wLAIIJ DY S'SGE~. T~ErC~~Utol~ THIS
MuST r'rHSICALL.T d( THE LAST tlHkl' "'aIr", uF THE ~AI~ULt.;'.

•

•

•

•

*

•
-

•

"
"
•
t

CALLl:.w:

*

~AlLtMS

*
*
*

1·~T£KIotU~TS:

•

UUk IlliG l"'AGf. CUNSlwucrluN

S'~bt.N

"'tollulotlf1:

.'4/A

"

*

-*
*

•

..-./ A

1.1

~ALLINt;

"

•-

:) t iii u t. i'4 Ct:

-
Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.6
Linearized                      : No
Create Date                     : 2016:10:25 15:05:16-08:00
Modify Date                     : 2016:10:25 15:53:14-07:00
XMP Toolkit                     : Adobe XMP Core 4.2.1-c041 52.342996, 2008/05/07-21:37:19
Metadata Date                   : 2016:10:25 15:53:14-07:00
Producer                        : Adobe Acrobat 9.0 Paper Capture Plug-in
Format                          : application/pdf
Document ID                     : uuid:4a843255-0bb6-b14e-85ca-ef2078094ea3
Instance ID                     : uuid:29c50429-04e4-7c49-bd11-c8b74affd3d8
Page Layout                     : SinglePage
Page Mode                       : UseNone
Page Count                      : 734
EXIF Metadata provided by EXIF.tools

Navigation menu