SOS_Reference_Manual_Jun61 SOS Reference Manual Jun61

SOS_Reference_Manual_Jun61 manual pdf -FilePursuit

SOS_Reference_Manual_Jun61 SOS_Reference_Manual_Jun61

User Manual: SOS_Reference_Manual_Jun61

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

DownloadSOS_Reference_Manual_Jun61 SOS Reference Manual Jun61
Open PDF In BrowserView PDF
o
Distribution No.1

Reference Manual

This is the first in a series of distributions of material which, when complete, will
constitute the reference manual for the SHARE 709 System. Each distribution will
contain pages to be inserted into a loose-leaf binder, and may consist of basic
material for one or more of the sections of the manual and/or replacement pages
which correct previously published material. In addition, each distribution will
contain a list of current pages of the manual, a list of the form numbers of all
previous distributions, and, if necessary because of new included sections or
extensive changes, an updated table of contents.
A three-ring loose-leaf binder, SOS Reference Manual - SHARE System for the
mM 709, form X28-1213, will be supplied to 709 installations to hold the pages
issued in these distributions. A set of index tabs will also be "provided with the
binder to facilitate reference to a particular part of the system. The set of tabs
will be printed with titles and section numbers of the various parts of the system,
as follows:
01
02
03
04
05
06
07
08
09
10
11
12
13

Introduction
SCAT Language
Compiler
Lister
Modify and Load
Debugging System
Input/Output System
m Monitor
SHARE Monitor
Programming and Operating Notes
Glossary
Appendices
Index

This, then, will be the arrangement of the manual. In connection with the above
outline of the SOS reference manual, it should be noted that Section 10, Programming
and Operating Notes, was included as a means whereby programming techniques,
operating methods, etc., which have been found useful by one user of SOS, could be
conveniently included in this manual and thereby communicated to the other users
of the system. Material of this sort, which is intended for inclusion in the manual,
should be addressed to: .

SHARE System for the IBM 709
© 1959 by InternationalhsiliessMacltines Corporation

SOS Group
704/709 Applied Programming
International Business Machines Corporation
590 Madison Avenue
New York 22, New York

It is also anticipated that a companion manual, the SHARE-709-System General
Information Manual, will be published in the future. That manual will approach
SOS on a more basic level and will be intended primarily for persons who are
unacquainted with SOS.

In order to facilitate updating of the manual, all pages will specify the distribution
number and will include a date, consisting of the month and year published, and a
page number. All page numbers, except those for the appendices, will be six digits
separated into three groups of two digits by a decimal point. The first two digits
will be the section number, the next two digits the chapter number within that
section, and the last two digits will be the number of the page within the chapter.
For example, 05.02. 04 will be the number of the fourth page of the second chapter
in the Modify and Load Section (05). The page numbers of the appendices will be
eight digits long. The first two will be 12 (the section number of the appendices),
the next three groups of two digits will be (in order), appendix number, chapter
number, and page number.

o
Reference Manual

Distribution No.2

This distribution contains additional reference material for the SHARE 709
System. The attached pages include both new material and pages to replace
some previously published. The new material consists of: Section 01: Introduction; Section 08: IB Monitor; and four appendices (Section 12). It will be
noted that the appendices included in this distribution are not consecutively
numbered. The spaces in the numbering have been left so that the series of
appendices presently planned will be numbered in an orderly fashion. The
replacement pages include an updated Table of Contents and listing of current
pages.
Users of SOS are invited to contribute material, for inclusion in Section 10:
Programming and Operating Notes, so that programming techniques, operating
procedures, etc. which have been found useful by them may be communicated
to other users of the system. Such material should be addressed to:
SOS Group
704/709/7090 Applied Programming
International Business Machines Corporation
1271 Avenue of the Americas
New York 20, New York

SHARE System for the IBM 709

o
Reference Manual

Distribution No.3

This distribution contains additional reference material for the SHARE 709
System. The attached pages include both new material and pages to replace
some previously published. The new material consists of Section 06:
Debugging System; one chapter of Section 07: Input/Output System; and initial
pages for Section 13: Index. The replacement pages include an updated
Table of Contents and listing of current pages.
Users of SOS are invited to contribute material, for inclusion in Section 10:
Programming and Operating Notes, so that programming techniques,
operating procedures, etc., which have been found useful by them may be
communicated to other users of the system. Such material should be
addressed to:
SOS Group
704/709/7090 Applied Programming
International Business Machines Corporation
1271 Avenue of the Americas
New York 20, New York

SHARE System for the IBM 709

o
Reference Manual

Distribution No.4

This distribution contains additional reference material for the SHARE 709
System. The attached pages include both new material and pages to replace
some previously published. The new material consists of five chapters of
Section 07: Input/Output System; and Section 09: SHARE Monitor. The replacement pages include an updated Table of Contents and Index, and a listing
of current pages.
Users of SOS are invited to contribute material, for inclusion in Section 10:
Programming and Operating Notes, so that programming techniques, operating
procedures, etc., which have been found useful by them may be communicated
to other users of the system. Such material should be addressed to:
SOS Group
704/709/7090 Applied Programming
International Business Machines Corporation
1271 Avenue of the Americas
New York 20, New York

SHARE System for the IBM 709

o
Distribution No.5

Reference Manual

This distribution contains material for inclusion in the SHARE 709 System
Reference Manual. The attached pages include both new material and pages to
replace some previously published. The new material consists of Section 02:
SCAT Language; Section 03: Compiler; two chapters of Section 07: Input/Output
System; and two appendices. The replacement pages include an updated Table
of Contents and listing of current pages, and index pages.
Users of SOS are invited to contribute material, for inclusion in Section 10:
Programming and Operating Notes, so that programming techniques, operating
procedures, etc., which have been found useful can be communicated to other
users of the system. Such material should be addressed to:
SOS Group
704/709/7090 Applied Programming

International Business Machines Corporation
1271 Avenue of the Americas
New York 20, New York

SHARE System for the IBM 709

ACKNOWLEDGEMENT TO THE SHARE ORGANIZATION

The SHARE 709 System described in this manual was developed under the
auspices of the SHARE organization of 704 and 709 users. The specifications
for the various components of SOS were developed over a period of eighteen
months by the SHARE 709 System Committee which was established in December
1956. This committee originally consisted of:
Chairman:
Mr. Donald L. Shell

General Electric Company, Cincinnati, Ohio

Members:
Miss Elaine M. Boehm
Mr. Ira Boldt
Mr. Harvey Bratman
Mr. Vincent DiGri
Mr. Irwin D. Greenwald
Miss Maureen E. Kane
Miss Jane E. King
Mr. Owen R. Mock
Mr. Stanley Poley
Mr. Thomas B. steel
Mr. Charles J. Swift

IBM, New York
Douglas Aircraft Corp., Santa Monica, Calif.
Lockheed Aircraft Corp., Los Angeles, Calif.
IBM, New York
Rand Corporation, Santa Monica, Calif.
IBM, Poughkeepsie
General Electric Co., Schenectady, New York
North American Aviation, Los Angeles, Calif.
Service Bureau Corp., New York
System Development Corp., Santa Monica, Calif.
Convair, San Diego, Calif.

Subsequently, during implementation of SOS by IBM, the numerous modifications
and clarifications which have become necessary and desirable have been worked
out through liaison with the current SHARE 709 System Committee.

00.00.01
2 (2/60)

PREFACE

In writing this manual, it has been assumed that readers are familiar with the
material contained in two IBM manuals:
General Information Manual: IBM 709 -7090 Data Processing System,
form D22-6508
Reference Manual: IBM 709-7090 Data Processing System, form A22-6503.
In particular, a knowledge of methods of symbolic programming is assumed.
Those readers who are unfamiliar with symbolic programming are referred to
the sections of the above manuals which deal with that subject. It is anticipated
that a primer on symbolic programming and assembly programs in general
and on SOS in particular will become available in the near future. At such time
as it is available, notice will be given in this manual.

00.00.03
2 (2/60)

TABLE OF CONTENTS
ACKNOWLEDGEMENT TO THE SHARE ORGANIZATION

0'0'.0'0'.0'1

PREFACE

0'0'.0'0'.0'3

TABLE OF CONTENTS

0'0'.0'.0.0'5

CURRENT PAGES

0'0.0'0'.15

SECTION 0'1: INTRODUCTION

0'1.0'0'.0'1

SCAT
Compiler
Lister
Modify and Load
Debugging System
Input/Output System
Monitor

0'1. 0'0'.0'2
0'1. DO'. 0'2
0'1. 0'0',. 0'2
0'1.00'.0'3
0'1.0'0'.0'3
0'1.0'0'.0'3
0'1.0'0'.0'4

SECTION 0'2: SCAT LANGUAGE
Operation Codes
Symbols
Integers
The Location Field
The Location Counter
Arithmetic Expressions
The Use of H*H as a Term
Sense Indicator Instructions
Boolean Symbols and Expressions
The Variable Field
Comments Field
Remarks

0'2.0'0'.0'1
0'2.0'0'.0'1
0'2.0'0'.0'2
0'2.0'0'.0'2
0'2.0'0'.0'3
0'2.0'0'.0'3
0'2.0'0'.0'6
0'2.0'0'.0'6
0'2.0'0'.0'7
0'2.0'0'.0'8
0'2.0'0'.11
0'2.0'0'.11

SECTION 0'3: COMPILER
Classification of SOS Operations
Machine Operations
Pseudo-Operations
Pseudo-Operations which Control the Location Counter
ORG (Origin)
BSS (Block Started by Symbol)
BES (Block Ended by Symbol)

{)o. 00. 05
5 (6/61)

0'3.0'0'.0'1
0'3.0'0'.0'1
0'3.0'0'.0'1
0'3.0'0'.0'1
0'3.0'0'.0'1
0'3.0'0'.0'3
0'3.0'0'.0'5

Pseudo-Operations for Relating Symbols
EQU (Equals)
SYN (Synonym)
BOOL (Boolean Equals)
Pseudo-Operations for the Introduction of Data
DEC (Decimal Data)
OCT (Octal Data)
BCI (Binary Coded Information)
VFD (Variable Field-Definition)
DUP (Duplicate)
LBR (Library Program)
EXEMPT (Exempt from Relativization)
Macro-Operations
MACRO (Macro-Instruction Definition)
BEGIN (Begin Subroutine)
RETURN (Return)
HEAD (Heading)
ETC (Et Cetera)
SQZ (SQUOZE)
END (End)
TCD (Transfer Card)

03.00.06
03.00.06
03.00.08
03.00.08
03.00.10
03.00.10
03.00.14
03.00.16
03.00.17
03.00.20
03.00.21
03.00.24
03.00.26
03.00.27
03.00.34
03.00.37
03.00.40
03.00.44
03.00.45
03.00.46
03.00.47

SECTION 04: LISTER
Chapter 1: SCAT Listings
Compiler Error Listing
Modifications Listing
Symbol and Pseudo-operation Error Listing
Program Listing
Symbol Listing
Chapter 2: Reference Systems
Relative Numbering
Alter Numbering

04. 01. 01
04. 01. 02
04. 01. 02
04.01. 03
04.01. 04
04.01. 04
04.02.01
04.02.01
04.02.02

Chapter 3: Pseudo-operations

04.03.01

UNLIST

04.03.01
04.03.01
04.03.02
04.03.03
04.03.04
04.03.04

LIST

DETAIL
TITLE
SPACE
EJECT

00.00.06
5 (6/61)

SECTION 05: MODIFY AND LOAD
Chapter 1: Main Features

05.01. 01

Chapter 2: Pseudo-Operations

05.02.01

CHANGE
ALTER
ERASE
SYMBOL
ASSIGN

05.02.01
05.02.06
05.02.09
05.02.12
05.02.14

SECTION 06: DEBUGGING SYSTEM
Chapter 1: General Features

06.01. 01

Chapter 2: Information Macro-Instructions

06.02.01

PANEL
CORE
TAPE
DSC
TRAP
UNTRAP
Chapter 3: Modal Macro-Instructions

USE
POINT
BUFFER
NUCASE
FORMAT
ON
OFF
Chapter 4: Conditional Macro-Instructions

WHEN
UNLESS
AND
OR
EVERY
Combining Conditional Macro-Instructions
Chapter 5: Expansions of Debugging Macros

00.00.07
5 (6/61)

06.02.02
06.02.03
06.02.05
06.02.08
06.02.09
06.02.10
06.03.01
06.03.02
06.03.03
06.03.04
06.03.05
06.03.06
06.03.07
06.03.08
06.04.01
06.04.04
06.04.05
06.04.06
06.04.07
06.04.08
06.04.09
06.05.01

SECTION 07: INPUT/OUTPUT SYSTEM
Chapter 1: The Input System - INTRAN
Rules for Specifying INTRAN Macros
Special Registers and Indicators
Purpose of the Input System
IIMAGE
Modal I-Macros
INTRAN
The Read-In Macros
ISCRIB
IREADY
IBRNCH
IFILE
IREDUN
The Internal Processing I-Macros
The Column Counter
ICOLR
ICOLIN

mcc
mcw
Rules for Use of N in the Conversion macros
IOCTAL
IBIN
lINT
IF LOAT
IFIX
ISCAN
lMASK
ICHAR
ISPILL
Error Return: ICHAR8; ISPILL
ISCALE
IOVPCH
IEOR
IRPT
Expansions of INTRAN macros
Chapter 2: The Output System-OUTRAN
Rules for Specifying OUTRAN Macros
Special Registers and Indicators
Purpose of the Output System
OIMAGE
00.00.08

9 (6/61)

07.01.01
07.01. 01
07.01.03
07.01. 03
07.01. 05
07.01.06
07. 01. 07
07.01.07
07.01. 07
07.01.16
07.01.19
07.01. 20
07.01. 21
07.01. 22
07.01.23
07.01.24
07.01. 24
07.01.24
07.01.25
07.01. 26
07.01.27
07.01. 28
07.01. 30
07.01.31
07.01. 34
07.01. 38
07.01.39
07.01.43
07.01.46
07.01. 47
07.01.49
07.01. 50
07.01.52
07.01.52
07.01.54
07.02.01
07.02.01
07.02.02
07.02.03
07.02.05

OUTRAN
Macro Classifications
The Internal Processing Macros
The Column Counter
OCOLR
OCOLIN
OCOLC
OBCC
OBCW
OOCTAL
OBIN
OINT
OFLOAT
OFLFIX
OFIX
OFXFLO
OMASK
OSPILL
OPOINT
OZERO
OOVPCH
ORPT
The Write-Out Macros
OSCRIB (SHARE Monitor System)
Output Modes
Special Conditions
OSCRIB (IB Monitor System)
Output Types
Special Conditions
Use of the Buffer Area
OREADY
OSPACE
OHEAD
OREDUN
OTPEND
Expansions of the OUTRAN Macros
Chapter 3: Input Editor
Input Data Package
Control Cards
ENDRCD
ENDGRP
ENDFILE
ENDTAPE

00.00.09
5 (6/61)

07.02.05
07.02.05
07.02.07
07.02.07
07.02.07
07.02.07
07.02.08
07.02.09
07.02.10
07.02.10
07.02.12
07.02.13
07.02.14
07.02.16
07.02.18
07.02.20
07.02.21
07.02.25
07.02.28
07.02.29
07.02.30
07.02.32
07.02.34
07.02.34
07.02.35
07.02.37
07.02.40
07.02.41
07.02.42
07.02.45
07.02.49
07.02.52
07.02.52
07.02.55
07.02.57
07.02.58
07.03.01
07.03.01
07.03.02
07.03.02
07.03.02
07.03.02
07.03.02

NOMORG
FORMAT
ETC
The $ Class
Format Statements
Basic Field Specifications
Other Specifications
General
Data Conversion
Error Analysis
Type 1 Errors
Type 2 Errors
Type 3 Errors
Error Messages
Type 1 Errors
Type 2 Errors
Type 3 Errors
Chapter 4: Output Editor
Macro-Instructions
XFORM
XPRINT
XPUNCH
XHEAD
XFOOT
XSPACE
XEJECT
XCOUNT
Format Statement Specifications
Basic Field Specifications
Line Spacing
Counter Control by Format Statements
Expansion of Output Editor Macros
Example

Chapter 5: S HARE Monitor Transmission Macros
READ
STEPR
STEPF
WRITE
WEOF
BACKR
BACKF
00.00.10
5 (6/61)

07.03.02
07.03.03
07.03.04
07.03.04
07.03.04
07.03.05
07.03.06
07.03.07
07.03.08
07.03.09
07.03.09
07.03.09
07.03.09
07.03.09
07.03.09
07.03.10
07.03.10
07.04.01
07.04.01
07.04.01
07.04.02
07.04.03
07.04.03
07.04.04
07.04.04
07.04.04
07.04.04
07.04.04
07.04.06
07.04.07
07.04.07
07.04.09
07.04.10
07.05.01
07.05.02
07.05.02
07.05.03
07.05.03
07.05.03
07.05.03
07.05.03

BACKT
IN

OUT
RUSH
DISP
Expansions of SHARE Monitor Transmission Macros
Chapter 6: SHARE Monitor Buffering Routines

07.05.03
07.05.04
07.05.05
07.05.06
07.05.06
07.05.07
07.06.01

07.06.03
General Purpose Routines
07.06.04
Add Buffer - SYSBFD
07.06.05
Write Logical Records - SYSNPT
07.06.06
Read Logical Records - SYSRTK
07.06.08
Backspace Logical Record - SYSBKS
07.06.09
Rewind Tape - SYSRWD
07.06.10
Buffering Routine Flags
07.06.10
General Purpose Flags
07.06.10
Block Flag
07.06. 10
Logical End of Record Flag
07.06.10
Logical End of Group Flag
07.06.10
Logical End Flag
07.06.10
Special Purpose Flags
Nominal Origin Flag
07.06.10
07.06.11
Immovable Block Flag
07.06.12
Symbol Flag
07.06.12
Sequence Flag
07.06.13
Special Purpose Routines
07.06.14
Read Word - SYSWTK
07.06.17
Write a Block Flag - SYSBLK
Write a Data Word - SYSINF
07.06.18
Write a Terminating or Non-Data Fhig - SYSWHT07. 06. 19
Dispatching Routines
07.06.21
Dispatching Initiation - SYSDIS
07. 06. 22
Normal Dispatching - SYSDIS
07. 06. 23
Dispatcher Suppression - SYSDPS
07. 06. 24
Chapter 7:

m

Monitor Transmission Macros

Operation of the Transmission Macros
Transmission Macros
READ
WRITE
WRITEF
REWIND
BACK
00. 00. 11
5 (6/61)

07.07.01
07.07.02
07.07.03
07.07.03
07.07.03
07.07.04
07.07.04
07.07.04

RUSH
IN
OUT
DISP
CLEAR
CUT
CSKIP
Expansions of the

m Monitor Transmission Macros

Chapter 8: Data Sentences
Data Sentence Processing
Punching Data Sentences
Error Conditions
Example

07.07.05
07.07.05
07.07.06
07.07.07
07.07.08
07.07.08
07.07.08
07.07.09
07.08.01
07.08.01
07.08.02
07.08.02
07.08.03

SECTION 08: IB MONITOR
Chapter 1: Input
Compilation
List
Punch a New SQUOZE Deck
Punch Absolute Deck
Execution

08.01.01
08.01. 01
08.01.01
08.01.01
08.01.01
08.01. 01

Chapter 2: Control Cards

08.02.01

JOB
DATE
CPL
CPLRB
SQZ
LS
LIST

PS
PA

LG
MOD
ENDMOD
DS1
GO
PAUSE
STOP

00.00.12
5 (6/61)

08.02.01
08.02.02
08.02.02
08.02.02
08.02.03
08.02.03
08.02.04
08.02.04
08.02.05
08.02.05
08.02.06
08.02.06
08.02.06
08.02.06
08.02.07
08.02.07

Chapter 3: Job Deck Arrangement

08.03.01

SECTION 09: SHARE MONITOR
Chapter 1: Introduction
Conver sion and Input/Output Routines
Chapter 2: Control Cards
JOB
LOAD
SCAT
Single Text SQUOZE Decks
IDENT
ASSIGN
DATA
Chapter 3: Input Deck Arrangement

09.01. 01
09.01. 01
09.02.01
09.02.01
09.02.02
09.02.03
09.02.03
09.02.04
09.02.05
09. 02. 06
09.03.01

Chapter 4: Communication Region Transfer Points and Associated 09. 04. 01
Standard Routine s
Chapter 5: Execution Coordination Utility Routines
Comment Attached Printer - SYSCAP
Mediary Tape Loader - SYSMTL

09.05.01
09.05.02
09.05.03

Chapter 6: Availability of Machine Components

09.06.01

SECTION 11: GLOSSARY

11.00.00

SECTION 12: APPENDICES
Appendix 1: Table of Permissible Characters

12. 01. 00. 01

Appendix 2: SQUOZE Operation Codes

12.02.00.01

Appendix 3: SQUOZ E Deck Format
Chapter 1: General Arrangement

12. 03. 01. 01

Chapter 2: Preface

12.03.02.01

Chapter 3: Heading Table

12.03.03.01

00.00.13
5 (6/61)

Chapter 4: Macro-Instruction Name Table

12.03.04.01

Chapter 5: Blank Card

12.03.05.01

Chapter 6: Macro-Instruction Skeleton

12.03.06.01

Chapter 7: Introduction

12.03.07.01

Chapter 8: Dictionary

12.03.08.01

Chapter 9: Footnotes

12.03.09.01

Chapter 10: Text

12.03.10.01

Appendix 10: 32K IB Monitor Operating Notes
Chapter 1: Equipment Requirements

12. 10. 01. 01

Chapter 2: Operating Instructions and Programmed Halts

12.10.02.01

Appendix 12: SHARE Monitor System and Library Tape
Generation and Updating

12.12.00.01

System Tape Format
Use of System Tape Writer

12.12.00.01
12.12.00.02

Appendix 13: SHARE Monitor Operating Notes
Chapter 1: Control Cards

12.13.01.01

Chapter 2: Input Deck Arrangement

12.13.02.01

Chapter 3: Starting Operation

12.13.03.01

Chapter 4: System Tape Reassignment

12.13.04.01

Chapter 5: Restart Procedure

12.13.05.01

, SECTION 13: INDEX

00.00.14
5 (6/61)

00.00.01
00.00.05
01.00.01
02.00.01
03.00.01
04.01. 01
04.01. 03
04.01. 05
05.01. 01
05.02.01
05.02.03
05.02.05
06.01. 01
06.02.01
06.02.03
06.02.05
06.02.07
06.03.01
06.04.01
06.04.05 '
06.04.07
06.04.09
06.05.01
07.01. 01
07.02.01
07.03.01
07.04.01
07.04.03
07.04.05
07.05.01
07.05.05
07.05.07
07.06.01
07.07.01
07.08.01
08.01. 01
08.02.01
08.02.03
08.02.05
08.02.07
08.03.01
08.03.03
09.01. 01
09.02.01

00.00.15
5 (6/61)

-

00. 00. 04
00.00.17
01.00.04
02. 00. 11
03.00.47
04.01. 02
04.01. 04

-

05.01. 02
05.02.02
05.02.04
05.02.16
06. 01. 02
06.02.02
06.02.04
06.02.06
06.02.10
06.03.08
06. 04. 04
06.04.06
06.04.08
06.04.10
06.05.04
07.01. 57
07.02.62
07.03.11
07.04.02
07.04.04
07.04.11
07.05.04
07.05.06
07.05.08
07.06.24
07.07. 10
07.08.03

- 08.02.02
- 08.02.04
- 08.02.06
- 08.03.02
- 09. 01. 04
- 09.02.02

2
5
2
5
5
3
2
1
1
2
4
1
5
5
3
5
3
3
3
5
3
5
5
5
5
4
4
5
4
4
5
4
4
4
4
5
5
3
5
3
3
5
4
4

2/60
6/61
2/60
6/61
6/61
1/61
2/60
11/59
11/59
2/60
3/61
11/59
6/61
6/61
1/61
6/61
1/61
1/61
1/61
6/61
1/61
6/61
6/61
6/61
6/61
3/61
3/61
6/61
3/61
3/61
6/61
3/61
3/61
3/61
3/61
6/61
6/61
1/61
6/61
1/61
1/61
6/61
3/61
3/61

09.02.03
09.02.05
09.03.01
09.04.01
09.05.01
09.06.01
11.01.,01
11.02.01
11.03.01
11.04.01
11.05.01
11.06.01
11.07.01
11.09.01
11.12.01
11.13.01
11.15.01
11.,16.01
11.lS.01
11.19.01
11. 20. 01
11. 21. 01
12. 01. 00. 01
12. 02. 00. 01
12. 03. 01. 01
12. 03. 02. 01
12.03.03.01
12.03.04.01
12.,03. 05. 01
12. 03. 06. 01
12.03.07.01
12. 03. 08. 01
12. 03. 09. 01
12. 03. 10. 01
12.10.01.01
12. 10. 02. 01
12. 12. 00. 01
12. 13. 01. 01
12.13.02.01
12. 13. 03. 01
12 .. 13. 04. 01
12.13.05.01
13.01. 01
13.02.01
13.03.01

00.00.16
5 (6/61)

- 09. 02. 04
- 09.02.07
- 09.04.04
- 09.05.03
- 09.06. 02

5
4
4
4
4
4
5
5

- 12. 02. 00. 02
- 12. 03. 02. 02

- 12. 03. 06. 03
- 12. 03. 08. 04
- 12. 03. 09. 03
- 12. 03. 10. OS
- 12. 10. 02. 02
- 12. 12. 00. 05
- 12. 13. 01. 02
- 12. 13. 03. 02
- 12. 13. 04. 05

- 13.02.02
- 13.03.03

5
5
5
5
5
5
5
5
5
5
5
5
5
5
2
2
2
2
2
2
2
2
2
5
5
5
5
5
5
5
5
5
5

5
5
5
5

6/61
3/61
3/61
3/61
3/61
3/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
2/60
2/60
2/60
2/60
2/60
2/60
2/60
2/60
2/60
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61

13.04.01
13.05.01
13.06.01
13.07.01
13.08.01
13.09.01
13.10.01
13.12.01
13.13.01
13.14.01
13.15.01
13.16.01
13.18.01
13.19.01
13.20.01
13.21.01
13.22.01
13.23.01
13.24.01
13.26. 01

- 13.04.03
- 13.05.03

- 13. 09. 04
- 13.12.02
- 13. 13. 02
-

13. 15. 04
13.16.02
13.18.02
13.19.05

Total number of current pages: 461

00.00.17
5 (6/61)

5
5
5
5
5
5
4
5
5
5
5
5
5
5
5
5
5
5
4
5

6/61
6/61
6/61
6/61
6/61
6/61
3/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
6/61
3/61
6/61

INTRODUCTION

The SHARE 709 System is designed to provide all the advantages of symbolic
assembly, and, at the same time, eliminate most of the disadvantages associated
with other symbolic assembly systems. For example, the use of most assembly
programs permit only two options for making changes to an assembled program:
A.

Changes may be made in symbolic form, and inserted into the symbolic
source deck, which must then be reassembled. Thus, each time changes
are made in a program there is a resulting loss of machine time.

B.

The changes may be made in machine language and "patched" into a program.
This method, while conserving machine time, does require tedious record
keeping to relate machine language patches to the symbolic listing.

The SHARE 709 System provides the advantages of making changes in symbolic
form with little increase of machine time over the loading of binary punched
cards. The method by which this is accomplished is described in the various
parts of this manual as the need arises.
An additional feature of SOS is the facility for listing debugging information in
symbolic form, rather than actual or machine language as was previously required.

The SHARE 709 System also includes provisions for:
A.

The use of mnemonic operation codes (including a large group of pseudooperations) .

B.

Arbitrarily chosen location symbols.

C.

Relative and complex addressing.

D.

The definition of special purpose macro-instructions for use in a given
program.

Further details are given in the discussion which follows of the various parts
of SOS.
Although SOS is in reality an integrated system, it has for convenience and easy
reference been divided into the following subsystems:
A.

The SHARE-Compiler-Assembler-Translator (SCAT). This subsystem has
also, for convenience of discussion, been subdivided into three parts:
1.
Compiler

01. 00. 01
2

(2/60)

2.
3.

Lister
Modify and Load

B.

The Debugging System

C.

The Input/Output System

D.

Monitor. (Two monitor programs are described in the manual: the IB
Monitor and the SHARE Monitor. )

SCAT
As indicated above, this subsystem will be described in three different parts:
Compiler, Lister, and Modify and Load. These three parts together perform
all the functions associated with symbolic assembly. In addition, SCAT produces
symbolic listings, performs all the mechanics of incorporating modifications
into a program, and loads programs for execution.
A.

Compiler
The Compiler performs the first part of the assembly of a symbolic source
program. This consists of reading symbolic cards, translating the information contained in them into, and producing, a compact binary-codedsymbolic (SQUOZE) form of the program. This SQUOZE form of the program
contains all the information supplied in the source program, including
remarks cards, and comments from instruction cards. (For detailed information concerning the composition and form of the SQUOZE program,
the reader is referred to the appropriate appendix. )
The SQUOZE deck produced by the Compiler may be used in either of two
ways:
1. It may be used with a symbolic deck and other SQUOZE decks as input
to subsequent Compiler passes, and incorporated with the symbolic
deck to form one SQUOZE program as output. This feature makes it
possible to write a program in parts and debug each part before combining
them.
2. It may be used as input to Modify and Load, which completes assembly
and loads the program for execution.

B.

Lister
The SCAT Lister is in reality a part of the Modify and Load program.
However, since the Lister is used by the Compiler as well as by Modify
and Load, and because knowledge of certain features of the listing produced

01. 00. 02
2 (2/60)

by SCAT are required for the understanding of the discussion of Modify and
Load, the Lister is considered separately in this manual.
The Lister provides the counterpart of an assembly listing of a program.
The listings produced include all the symbolic information, including
remarks and comments, from the original source program deck as modified
by subsequent changes, and the machine language program generated.

c.

Modify and Load
Input to Modify and Load is a SQUOZE program and, when necessary,
symbolic cards which indicate changes to be made in the program. Modify
and Load completes the assembly of the input, incorporates symbolic
modifications (if included with the input) and loads the program into storage
for execution.
Modify and Load also provides the following features:
1. A new SQUOZE program, which incorporates symbolic changes, can
be prepared when desired. (A new listing of the program will also
be prepared. )
2. An absolute binary deck can be punched from a SQUOZE program.
3. A new listing of a program in SQUOZE form can be prepared when
required.

DEBUGGING SYSTEM
The Debugging System consists of a group of closed subroutines and their
associated macro-instructions, which may be written into a program at strategic
points, or included as program changes through Modify and Load. These subroutines provide the instructions necessary to print-out symbolic information
which will aid in debugging.

INPUT/OUTPUT SYSTEM
The Input/Output System consists of a set of macro-instructions which cause
the generation in a program of the instructions necessary for input and output
conversion of several types. These macro-instructions are a general purpose
type and are intended to be interspersed with machine instructions as necessary
to achieve special purpose input/output for a given job.

01. 00. 03
2

(2/60)

MONITOR
The input to the Monitor program consists of one or more "job decks." A job
deck, as the term is used in this manual, is a program deck to be processed
by SOS (symbolic, 8QUOZE, or a combination of the two), together with control
cards to indicate the functions to be performed on the program, i. e., compile,
list, load, etc. The processing of each program is controlled by the Monitor
as specified in the control cards included in a job deck.
When a job deck is used as input to the Monitor, the Monitor reads the control
card(s) included in the deck, determines the part of SOS required for the processing of the deck and loads the required part. Control is then transferred to
the processor loaded by the Monitor. That program then processes input until
the end of the job deck is reached, or a new control card is encountered, or an
error occurs. When the end of the deck is reached or a new control card is
encountered, the Monitor is reloaded into storage and the process is repeated.
If an error occurs, the Monitor will print a message indicating the error and will,
if possible, continue the processing of the job. If it is not possible for the Monitor
to continue, it will skip to the next job.
This manual describes two Monitor programs which can be used with 80S; for
detailed information on each, see the appropriate sections of the manual.

01. 00. 04
2 (2/60)

SCAT LANGUAGE
A symbolic program consists of an ordered set of symbolic instructions. These
instructions are punched into IBM cards. one per card, keeping the same order.
The resulting (ordered) deck is then used as input for the Compiler.
An instruction consists of an ordered string of Hollerith characters.

(For a list
of the allowable characters, see Appendix 1.) An instruction is divided into
four fields. From left to right they are:

a.
b.
c.
d.

the
the
the
the

location field (always 6 columns)
operation field (1 to 7 columns)
variable field (variable length)
comment field .(variable length)

The fields are separated by the character "blank. "
Since only 72 of the 80 columns of an mM card can be used for an instruction, the
length of an instruction is limited to 72 characters (except for three cases; see
page 03. 00. 44).
Every instruction should specify an operation in the operation field. However, it
will often happen, depending on the operation, that the location field and/or the
variable field may be left blank. The comment field is provided merely as a
means for improving the readability of program listin,gs, and may always be
omitted. All comments are retained and included in program listings. Each will
appear with its associated instruction(s). For further provisions for writing
comments, see page 02.00. 11 concerning the use of "*" for remarks.
Operation Codes
Each operation which SOS recognizes, including all of the 709/7090 machine
operations, is abbreviated by a mnemonic operation code placed in the operation
field. (A blank operation field is equivalent to PZE; see page 03. 00. 01.) This
code is a string of from one to six alphabetic characters. Indirect addressing
of an operation, where permitted, is indicated by placing an asterisk (*) at the
end of the code. The asterisk is then considered part of the operation code. The
operation code may be as long as seven characters when indirectly addressed.
Symbols
A symbol is any string of from one to six non-blank Hollerith characters. At
least one character must be non-numeric, and ~ may be:
+

02.00.01
5 (6/61)

-

* /

$ =

For example, "A", "AI", "(1)", "12345X" are all legal symbols. However,
"123456A", "AbB" where b represents a blank, "A = B", "123 H , "A, B" are not
symbols.

"=" is not allowed because it is reserved for a special purpose.
are considered legitimate characters of a symbol.

Leading zeros

It is important to distinguish between operation codes and symbols. An operation
code must be taken from a fixed set of codes which is the code-vocabulary of SOS.
This vocabulary may be expanded, within a given program, by means of the operation
MACRO (see page 03. 00. 27). Symbols, on the other hand, are chosen arbitrarily
by the programmer. An operation code is recognized as such by the fact that it
appears in the operation field. Symbols cannot appear in the operation field, but
may appear either in the location field or the variable field.

Integers
An integer is a string of numeric characters. Integers will usually be interpreted
as decimal (base 10), but sometimes as octal (base 8), depending on the operation
code in the instruction where they appear.
By this definition, integers are always positive. There are certain restrictions
on the maximum size of an integer. These depend on its use, and are described
on pages 02. 00. 05, 02. 00. 06, and 03. 00. 18.
The Location Field
The location field of an instruction should either be blank or else contain a symbol.
The use of an integer in the location field is an error. It is ignored and flagged
as a possible error in the output listing (see page 04. 01. 02).
The normal purpose of a location symbol is to give a name to an instruction, so
that the instruction may be referred to by this name in other instructions of the
program. However, for the location symbol of some "pseudo-instructions, " this
is not true (see page 03. 00. 06). In fact, placing a given symbol in the location
field of some instruction is the only way of establishing this symbol as a name.
Every.symbol used in a program should appear exactly once in the location field
of some instruction in the program. If it does not appear as a location symbol,
the symbol is said to be undefined. If it appears more than once, it is said to
be multiply defined and of course is ambiguous as a name. The listing produced
by the assembly process will contain, for a given source program, a list of all
undefined symbols and also a list of all multiply defined symbols (see page 04. 01. 04).

02.00.02
5 (6/61)

Although there is nothing logically wrong in naming an instruction without ever
using the name, it is generally desirable to use a location symbol for an instruction
only if a symbol is needed to refer to the instruction elsewhere in the program.
The reason for this is that the Compiler, processing the source program, constructs
a "dictionary" of location symbols in core storage. The amount of core storage
which can be allotted for this purpose, although reasonably large, is limited and
the extra symbols may cause compilation to be stopped. An error will be flagged
on the output listing if this occurs.
The Location Counter
Each entry in the dictionary contains a location symbol and the "value" of the
location symbol. This value is an absolute binary number denoting an actual
machine cell. The instruction with the given location symbol will finally occupy
this cell when the object program is later loaded by Modify and Load (however,
see page 04.02. 01).
In order to assign the proper value to each location symbol used in the source
program, the Compiler uses a special cell called the location counter. The
location counter can be initially set to an arbitrary value by the source program
(see page 03.00.02).
For each machine instruction processed in the source program, the location
counter is increased by 1. Certain pseudo-instructions, on the other hand, may
result in no increase or an increase of more than 1 (see page 03. 00. 04).
Whenever a location symbol occurs with an instruction being processed, the
symbol is entered in the dictionary with the current value in the location counter
as the value of the symbol. For certain pseudo-instructions, a dictionary entry
is not made (see page 03.00. 20 and following).
Arithmetic Expressions
A reference by one instruction to another instruction of a program may be made
by using the symbolic name (location symbol) of the instruction. For example,
suppose that the following instruction appears in a program:
Location

Operation

Variable Field

START

CLA

L(1)

Control may be transferred to this instruction by:
Location

02.00.03
5 (6/61)

Operation

Variable Field

TRA

START

However, sometimes a programmer must refer to an instruction that does not
have a name. If he wishes, he may go back and give a name to the instruction.
This, however, is not necessary. Suppose he wishes to transfer control to the
instruction CLA GAMMA in the following sequence.
Location

Operation

Variable Field

ALPHA

TRA
CLA
SUB
STO
TPL

BETA
GAMMA
L(1)
GAMMA
DELTA

STGAM

This may be done by either of the following instructions:
TRA
TRA

ALPHA+1
STGAM-2

Thus, an unnamed instruction may be referred to by using the name of an
instruction somewhere in its vicinity and adding or subtracting an integer or
symbol.
The combination "ALPHA+l" or "STGAM-2" is called a relative expression. A
relative expression is the sum or difference of not more than two symbols or
constants. The presence in an expression of a $, *, /, or more than one plus or
minus sign defines the expression as complex. A negative symbol or constant in
an address field is treated as relative, i. e., is treated as zero minus the symbol
or constant.
Relative expressions should be used with care, since a later insertion or deletion
of instructions between X and X+n (or X-n) changes the instruction to which "X+n"
(or "X-nil) refers. This is the outstanding disadvantage of a so-called "relative
coding" system. It i,s theoretically possible, though rarely advis~ble, to use
only one name in an entire program and make all references relative to that name.
Occasionally it may be found useful to combine symbols and integers in more
complicated ways than in a relative expression. For example:
A*B
A/B
A*B/C+D*2-E
The Compiler recognizes and correctly interprets, according to the ordinary
rules of arithmetic, any meaningful arithmetic expression which can be constructed
from symbols, integers, and the four arithmetic operations:

02.00.04

5 (6/61)

+
*
/

(addition)
(subtraction)
(multiplication)
(division)

Since left and right parentheses can occur as legitimate characters in a symbol,
they cannot be used as grouping marks in an expression. Thus, "A multiplied
by (B+C)" must be written as "A*B+A*C". Most, but not all, expressions using
parentheses can be written without parentheses. Note that A/ (B+C) cannot be
written without using parentheses, and hence cannot be used.
The evaluation of an arithmetic expression is carried out as follows: First,
all symbols must be defined and all integers appearing in the expression are taken
as decimal. Integers must be less than 235. The whole expression will be indicated
as an error on the output listing for either of the following violations:
a.
b.

Any of the symbols in the expression are not defined.
An integer exceeding 235 _1 occurs in the expression.

The evaluation proceeds by first scanning the expression from left to right and
performing all multiplications and divisions. (In division, only the integral part
of the quotient is retained; the remainder is discarded.) Then another left-to-right
scan is made and all additions and subtractions. are performed.
All arithmetic is carried out using 35 binary bits and a sign. If, at any point in
. these operations, the numeric part of the result exceeds 235 _1, only the rightmost
35 binary bits are kept, i. e., the number is reduced modulo 235. If the result,
R, after the second scan is negative, R is replaced by the 2s complement of the
absolute value of R, i. e., R becomes (235_IRI). When the expression has been
completely processed, the value taken for the expression is the rightmost 15 bits
of R, i. e., R is reduced modulo 215 .
Ordinarily, none of the computations should result in more than 15 bits, but the
expression is still considered meaningful if 15 bits is exceeded.
Note the term expression is meant to include not only relative and complex
expressions, but also simple expressions consisting of a single symbol or integer.
Thus "A" and "7" are expressions, as are "-A·" and "-7".
According to the rules given above, "-7" would yield the 15-bit value (77771)8'

02.00.05
5 (6/61)

The Use of "*,, as a Term
An important and extremely useful convention is another meaning for the asterisk
(*) in an expression. When the Compiler encounters an "*,, as a term in an
expression (i. e., in that part of the expression where a symbol or integer should
logically be), it interprets the "*,, as the current value of the location counter.
For example, assume the location counter contents are 155 when the following
instruction is processed:
Location

Operation

Variable Field

TRA

*+2

Then the relative expression "*+2" is evaluated as 155+2=157, so that a transfer
to the second instruction after the TRA instruction is indicated. An "*,, employed
in this way represents a kind of "floating address, " and by it judicious use in a
program one can often avoid introducing superfluous names. For instance,
TRA *-2 always means "transfer control to the second instruction preceding this
instruction" and that instruction need not be named. There is no confusion between
the use of "*,, as a term and its use to indicate multiplication in an expression,
e. g., the expression "***" means "the current value of the location counter
multiplied by the current value of the location counter. "
Sense Indicator Instructions
Special provisions are made in the SCAT language for dealing with sense indicator
instructions. Unlike the 15-bit address of ordinary instructions, a sense indicator
instruction has a "mask" of 18 bits, which is really a string of 18 independent
logical (Boolean) hits.
The mask field (which corresponds to the address field of an ordinary symbolic
instruction) of a sense indicator instruction written in the SCAT language must
contain a single octal number or a single symbol. If this condition is violated,
the mask will be evaluated as zero and an error will be indicated on the output
listing. The same treatment is given to an integer mask for any of the following
violations:
a.

The integer representation contains the character "8" or "9" so that it is
clear ly not octal.

b.

The integer value exceeds 2 18 _1.

c.

The integer representation uses more than 12 characters.

02.00.06
5 (6/61)

Boolean Symbols and Expressions
If a symbol is used in the mask field of a sense indicator instruction, this symbol

should be defined by means of a special pseudo-operation whose sole purpose is
to define such symbols. Such symbols are called "Boolean" symbols and have an
l8-bit range, as distinct from "ordinary" symbols with a 15-bit range.
An expression involving Boolean symbols and/or octal integers is called a "Boolean"
expression. A Boolean expression which does not consist simply of an octal
number or a (Boolean) symbol must occur only in a BOOL pseudo-instruction
(see description of BOOL, page 03. 00. 08). An expression should never be "mixed, "
i. e., if one of the symbols in an expression is Boolean or one of the integers is
octal, then all symbols should be Boolean and all integers should be octal in this
expression. Similarly, if there is one ordinary symbol or decimal integer in an
expression, then all symbols should be ordinary and all integers decimal.
The rules for constructing a Boolean expression resemble those for an arithmetic
(ordinary) expression. However, the meanings of the four operations, "+", "_",
"*", and "/" are Boolean rather than arithmetic. They are simply:
"+,, ("or" ,
"inclusive or",
"union")

"-"

("exclusive or",
"symmetric difference ")
0-0=0
o- 1 = 1
1- 0=1
1- 1=0

0+0=0
0+ 1 = 1
1 + 0 =1
1+1=1

"/" ("ones complement",
"*" ("and",
"inter section")

o* 0 = 0
o* 1 = 0

"complement" ,
"not")
/0=1
/1=0

1 * 0=0
1 * 1 =1
Note that the operations "+", "-", and "*,, are ordinarily operations connecting
two terms, whereas the operation "/" ordinarily involves one term. However,
by convention, "A/B" is taken to mean "A*/B." Thus the table for "/" as a twoterm operator is:
0/0 = 0
0/1 = 0
1/0 = 1
1/1 = 0
02.00.07
5 (6/61)

Other conventions are:
+A
-A
*A
A/

= A+ = A
= A- = A
= A* = A

}

one operand missing

= 0

+=0
-=0
* = (777777) 8
/=0

both operands missing

The above tables completely define the four Boolean operations for one-bit
quantities and hence for the 18-bit Boolean quantities in SCAT. For if A and B
are 18-bit Boolean quantities, each can be regarded as a string of 18 independent
one-bit quantities. Thus C = A *B (for example) is simply obtained by 18 parallel,
independent "AND" operations, where each "AND" is performed between one bit of
A and the corre sponding bit of B.
For example,
(123456)8 * (234567)8 = (020446)8
(123456)8 + (234567)8 = (337577)8
(123456)8 - (234567)8 = (317131)8
/ (123456)8 = (654321)8
The evaluation of a Boolean expression proceeds as described for an arithmetic
expression, but the four operations are interpreted as Boolean in the sense defined
above, rather than arithmetic. First, the operations "*,, and "/" are carried out
from left to right, and then the operations "+" and "_". Eighteen-bit Boolean
arithmetic is used in all stages, and the final value of the expression is 18-bit
Boolean.
For restrictions on integers in a Boolean expression, see page 03. 00. 10.
The Variable Field
In order to specify a 709/7090 machine instruction completely, the programmer
can, and sometimes must, specify a certain combination of address, tag, and
decrement (or count), depending on the operation used in the instruction. For
example, a TIX instruction requires an address, tag, and decrement; LXD requires
an address and tag but must not have a decrement; CLA requires an address and
may have a (operative) tag, but must not have a decrement; PXD requires a tag,
must not have a decrement, but may have an (inoperative) address; CLM must not
have any address, tag, or decrement; etc.

02.00.08
5 (6/61)

The complete details for all 709/7090 operations can be found in the 709 and 7090
reference manuals.
The address A, and/or the tag T , and/or the decrement D, of an instruction are
specified in the instruction's variable field, in that order (i. e., A, T, D). The
subfields A, T, D are separated by commas. For example, the following instruction
specifies an address ALPHA, tag of 4, decrement of 1.
Location

Operation

Variable Field

TIX

ALPHA, 4, 1

The end of the variable field is signalled by the occurrence of the first blank
'character in scanning from left to right. Hence, there must be no blanks left
between the subfields of the variable field, nor within the subfields themselves.
The sole exception to this is the pseudo-operation Bel (see page 03.00. 16).
For those operations which require a tag but no address, the address zero should
be used, e. g. ,
Location

Operation

Variable Field

PXD

0,4

Two very useful conventions in specifying variable fields are provided:
a.

If one or more of the subfields of a variable field is to be zero, the programmer
may omit writing the "0" character and use only the separating comma. For
example:
Operation

Variable Field

can be written:

TXL
TXL

ALPHA, 0, 5
ALPHA"5

can be written:

TXH
TXH

0,0,5
, ,5
0,4

can be written:

PXD
PXD

,4

Notes: 1. In a subfield which is not the last subfield of the variable field, never
replace the "0" with a blank, since the blank signals the end of the
variable field.

02.00.09
5 (6/61)

2. If zero subfields are omitted, messages are printed to indicate that
they are possible errors, and zeros are inserted in the subfields.
b.

If the programmer wishes to specify the value

°

in the last subfield, or
subfields of the variable field, he may do so by omitting these fields along
with their separating commas. For example:
Operation

Variable Field

can be written:

TXL
TXL

ALPHA,4,
ALPHA, 4

can be written:

TXL
TXL

ALPHA, 0,
ALPHA

TXH

0,0,0

can be written:

TXH

can be written:

PXD
PXD

°
°

0,0

Certain pseudo-instructions in SOS require more than three subfields in the variable
field. The same convention applies to these; i. e., if the last n subfields are to
contain zeros, they may all be omitted along with their separating commas. The
restrictions on the address (mask) field of sense indicator instructions have already
been stated. With the exception of this special case, the subfields of the variable
field of a 709/7090 machine instruction may contain any arithmetic expression.
F or instance:
Location

Operation

Variable Field

TIX

A*B+C,D/E-F,G*29+H

is perfectly legal, so long as the symbols A, B, ... , H are all defined and are
arithmetic.
The use of Boolean symbols in other than a sense indicator instruction is not
strictly prohibited but can result in errors which will not be flagged in the output
listing. A Boolean symbol used by itself as an address or decrement, can change
the tag or operation field, respectively. For example, if A and B are Boolean
symbols with value (777777)8, then the instruction TIX A, 1, B will result in the
absolute machine word (7 77777 7 77777)8 which has an undesired prefix and tag
of 7. Such an error will not be detected and indicated to the programmer. However,
if A and B (in the example) did not exceed 15 bits (i. e., were less than 215), the

02.00.10
5 (6/61)

correct prefix and tag would result. A Boolean symbol occurring in a relative
or complex expression will be detected and indicated as a possible error on the
output listing. The expressions in the address and decrement subfields will be
evaluated as previously described, i. e., the rightmost 15 bits of the results
will be placed in the address or decrement. However, only the rightmost three
bits of a result will be placed in the tag, i. e., the result is reduced modulo 23 .
Certain pseudo-operations in SOS will be described later which require variable
fields in different forms. In an instruction using such operations, the subfields
of the variable field have special restrictions. The rules for specifying the
variable field depend on the given pseudo-operation. These rules are set down
in the following sections with the description of the pseudo-operation.
Comments Field
Any non-blank characters found after the blank that signals the end of the variable
field will be regarded as comments and will appear unaltered in the output listing.
The start of this field must be separated from the end of a preceding non-blank
variable field by at least one blank. However, if the variable field is blank, the
comments field must not start to the left of column 17. It ends in or before
column 72. This field may contain blanks. It does not affect execution of the
instruction, but it is retained by SOS for inclusion in program listings.
Remarks
Any card with "*,, in column 1 is called a "remarks" card. When such a card
is encountered, columns 2 through 72 are treated as commentary. This
commentary is saved and printed out as a single line on the output listing, exactly
as it is written. Such a card has no other effect on the processing of the source
program.
Remarks cards can be extremely useful in producing a readable output listing.
One or more such cards might be placed at the beginning of the program for
different descriptive purposes, or inside the program to include pertinent
information for the reader of the program.

02.00.11
5 (6/61)

THE COMPILER
Classification of SOS Operations
Every operation in the SOS language belongs to one of two classes: 709 machine
operations (e. g., CLA, LXD, RDS, or IOCD) and non-machine operations. A
non-machine operation is called a "pseudo-operation." Instructions using
pseudo-operations are called "pseudo-instructions. "
The 15 operations associated with the Data Synchronizer Channels are put in the
same class as ordinary operations and the "commands" in which these operations
appear are specified in the same way as ordinary machine instructions.
Note that SOS provides the following 12 codes, which can be used in a convenient
mnemonic way to specify only the prefix (leftmost three bits) of the instruction,
accompanied by the usual variable field pattern of address, tag, decrement.
PZE
MZE
PON
MON
PTW
MTW

(Plus zero)
(Minus zero)
(Plus one)
(Minus one)
(Plus two)
(Minus two)

PTH
MTH
FOR
FVE
SIX
SVN

(Plus three)
(Minus three)
(Four)
(Five)
(Six)
(Seven)

Machine Operations
A machine instruction (i. e., an instruction using a machine operation) always
generates one 36-bit binary machine word in the object program. The rules for
specifying the location field and the variable field of a machine instruction have
already been given in Section 02.
Pseudo-Operations
Unlike machine instructions, some pseudO-instructions may generate more than
one machine word in an object program o"r may generate no words at all. The
pseudo-operations of SOS have a variety of functions which will be seen in the
following pages.
Pseudo-Operations Which Control the Location Counter
The function of the following three pseudo-operations is principally to control
the contents of the location counter (see page 02. 00. 03).
A.

ORG (Origin)
If a programmer wishes the origin of his program (i. e., the location of the

first word in his object program) to be (3490)10, he may simply preface his
source program with the pseudo-instruction:
03.00.01
5 (6/61)

Location

Operation

Variable Field

ORG

3490

No word is generated in the object program by this instruction. Its effect is to
cause the Compiler to set the location counter to the value (3490)10- If the
instruction immediately following the ORG is ALPHA CLA BETA, then the
symbol ALPHA will receive the value (3490) 10 when placed in the dictionary_
The binary word which results from the CLA BETA part will be ear-marked for
location (3490)10, and subsequently assigned to this location by Modify and Load.
(However, see page 04.02.01.)
ORG instructions may appear anywhere in the program. Moreover, the expression
in the variable field need not be an integer as in the above example. It may be
any arithmetic expression. For example:
Location

Operation

Variable Field

ORG

ALPHA+BETA*GAMMA-l

Thus, the variable field of an ORG instruction consists of a single subfield. If
more than one subfield is used (e. g., ORG A, B), only the first, in this case A,
will be used. The remaining subfields will be ignored, and an error flagged in
the program listing. The effect of the above instruction (and, in general, any
ORG instruction) is to cause the location counter to be set to the value of the
expression in the variable field. Of course, any symbols used in the variable
field expression of the ORG must be eventually capable of receiving values, i. e. ,
they must be defined in the sense given on page 02. 00. 02. However, they need
not have been assigned values before they are used. In the above example, ALPHA
and/or BET A and/or GAMMA need not have appeared as location symbols before
the ORG instruction itself.
A location symbol can meaningfully appear in an ORG instruction, for example.
Location

Operation

Variable Field

ALPHA

ORG

3490

This instruction will cause the symbol ALPHA to be entered in the dictionary
of symbols with the associated value of (3490)10. If the variable field had been
a symbol or some non-simple expression, then the value of ALPHA in the
dictionary would have been the value of that symbol or expression. Note that,
in this example, if the next instruction were
Location

03.00.02
5 (6/61)

Operation

Variable Field

CLA

BETA

then the same effect cO\lld also have been obtained by writing
Location

ALPHA

Operation

Variable Field

ORG

3490
BETA

CLA

On the other hand, if the programmer were to write

Location

Operation

Variable Field

ALPHA
GAMMA

ORG

3490
BETA

CLA

Then ALPHA and GAMMA would both be entered into the dictionary, with the
value (3490)10' Another way of achieving such an effect will be seen in the
pseudo-operation EQU.
.
The Compiler does not require the presence of an ORG at the beginning of the
source program, nor anywhere within the source program. If the programmer
fails to use an ORG instruction to set the location counter to an initial value,
the Compiler will assume that the program is to begin at a location to be
determined later.
Lower core storage will ordinarily contain a part of the SHARE Monitor. For
this reason, a source program with no initial ORG instruction will not be started
at location (00000)8' Instead, the initial location is assigned by the monitor as
the lowest available location.
Since a certain part of lower core storage is normally required for the functioning of SOS, the programmer should not specify a program origin which is so low
that the object program will conflict with this required part. An error will be
indicated on the output listing if a· program origin which is too low is specified.
B.

BSS (Block Started by Symbol)
A programmer will often need to reserve a block of one or more words of core
storage for such purposes as "erasable storage, " input and output buffers, etc.
If, for example, in writing his source program, he needs to reserve the next
50 words, he may write:
Location

03.00.03
5 (6/61)

Operation

Variable Field

BSS

50

When encountered, this instruction will cause the location counter to be
increased by (50)10.
If it is desired to given the name ALPHA to the first word of the block, the

instruction can be written:
Location

Operation

Variable Field

ALPHA

BSS

50

With BSS, it is not possible to associate location symbols with any words of
the reserved block except the first word. This, however, can be accomplished
by EQU.
Like ORG, the variable field of a BSS instruction may contain any arithmetic
expression, for example:
Location

Operation

Variable Field

ALPHA

BSS

BETA/GAMMA+4*DELTA-3

The effect of the above instruction is to enter ALPHA in the dictionary with
the current value of the location counter, and then to increase the location
counter by the value of the arithmetic expression in the variable field. The
general comments about ORG also apply to BSS.
Unlike ORG, the variable field of a BSS instruction may have a second subfield
which can be used to provide information for later use by the Debugging
System. The programmer can specify this information by placing, in the
second subfield, an alphabetic format code which he can choose from one
of the following list of seven codes:
Code

Format Intended

C

Command (DSC control word)
Floating point number
Hollerith (binary coded decimal) information
Octal integer
Symbolic instruction
Variable Format
Fixed point number

F
H

o
S
V
X

For example, suppose a programmer writes the following instruction:

03.00.04
5 (6/61)

Location

Operation

Variable Field

ALPHA

BSS

50, F

By use of the F, he specifies that the 50 words in the block beginning Oat
ALPHA are to be interpreted as floating point numbers. Subsequently,
whenever the Debugging System is to dump information from this block,
the words will appear in the output as floating point numbers.
If the programmer does not intend to use the Debugging System, he will, of
course, have no need for specifying a second subfield in a BSS instruction.
For further information on the meaning and use of the seven format codes,
see page 06. 01. 02 and following.
C.

BES (Block Ended by Symbol)
This pseudo-operation has exactly the same properties as BSS, except that
when it is used with a location symbol, the symbol is associated with the
first word following the reserved block (rather than with the first word of
the block). For example, suppose a programmer writes
Location

Operation

Variable Field

ALPHA

BES
CLA

50
BETA

Then the symbol ALPHA becomes associated with the instruction CLA BETA.
Thus, the programmer could with equivalent results, have written
Location

Operation

Variable Field

ALPHA

BES
CLA

50
BETA

On the other hand, if the programmer writes
Location

Operation

Variable Field

ALPHA
GAMMA

BES
CLA

50
BETA

then ALPHA and GAMMA would both be entered into the dictionary, each with
the value of the location counter at the time the CLA instruction is. processed.

03.00.05
5 (6/61)

Thus, the effect of the instruction ALPHA BES 50 is to increase the location
counter by (50)10 and then to enter ALPHA into the dictionary with the
resulting value in the location counter. Note that ALPHA BES 50 is equivalent
to ALPHA ORG *+50.
As with BSS, a second subfield can be used in the variable field of a BES
instruction to specify one of the seven possible formats for the reserved block.
Pseudo-Operations for Relating Symbols
The following three pseudo-operations serve the sole function of equating two
or more symbols, or of assigning a value to a symbol.
A.

EQU (Equals)
When writing a source program, a programmer may want to use a name for
something, the precise nature of which he does not yet know. For example,
he might wish to refer to some instruction which he has not written down,
and does not yet want to decide on the name of this instruction. For example,
he may be at a point such as:
Location

Operation

Variable Field

CLA
SUB
TZE

ALPHA
BETA

where he knows what he wants to do next if c(AC) is not zero but he would
like to leave the address of the TZE instruction unspecified until later. He
may, of course, leave this address blank temporarily. He may want to
write something arbitrary such as TZE Xl, just to make the instruction
complete (especially if his program is being punched in batches). Later
when he decides what the instruction Xl is to be, he may be satisfied to use
the name (location symbol) Xl for this instruction. If he is not satisfied
with the name Xl, he may go back and replace it with the symbol he has
decided on wherever he has used it. However, for one reason or another,
this replacement may be impractical, e. g., if instruction cards referring
to Xl have already been punched.
In the above example, suppose the programmer has actually written Xl
and later decides that what he has called Xl should be called NOGOOD.
Then he could simply write

03.00.06
5 (6/61)

Location

Operation

Variable Field

CLA

ALPHA
BETA
Xl

SUB
TZE

NOGOOD
Xl

PXA
EQU
AXT

where the PXA and AXT instructions are two instructions of the NOGOOD
subroutine. Xl EQU NO GOOD specifies that the symbols NO GOOD and
Xl are to be equivalent.
The above situation is one of many examples where the pseudo-operation
EQU can be used very conveniently and effectively. Even if, in this example,
the name Xl had occurred in many places, before or after the EQU instruction,
Xl would still be equated to the symbol NOGOOD.
Moreover, the EQU instruction could have been put anywhere in the program,
before or after the instruction named NOGOOD. The general comments about
ORG also apply to EQU. As with ORG, the variable field of an EQU instruction
can contain any arithmetic expression, subj ect to the restrictions described
under ORG. For example, one can write
Location

Operation

Variable Field

ALPHA

EQU

BETA *GAMMA-DELTA/9+17

The effect of the above instruction is to enter ALPHA in the dictionary with
the value of the arithmetic expression in the variable field. Unlike ORG,
BSS, and BES, the pseudo-operation EQU does not affect the value in the
location counter.
An EQU instruction is meaningless if it does not have a location symbol. An
EQU instruction without a location symbol will have no effect and an error
will be indicated on the output listing.

03.00.07
5 (6/61)

Like ORG, the variable field of an EQU instruction should contain only one
subfield, namely an arithmetic expression. If more than one subfield
appear s in the variable field of an EQU instruction, only the first will be used .
. The remaining subfields will be ignored and an error indicated on the output
listing.
In the example given above, the variable field of the EQU instruction in each
case contains a symbolic expression. The variable field expression may
also be completely numeric. For example:
Location

SHIFT

Operation

Variable Field

LLS

SHIFT

EQU

35

Here, the symbol SHIFT receives the value 3510 by virtue of the EQU instruction.
B.

SYN

(Syn~nym)

In the SCAT language, SYN is simply another code for EQU, and they may
be used interchangeably. The reason for providing two codes is purely
historical.
C.

BOO L (Boolean Equals)
If the programmer uses the Sense Indicators in a program, he may often

need to write instructions in which the 18-bit address ("mask") corresponds
to the 18 leftmost or 18 rightmost bits of this special register. If he cannot
conveniently predetermine what particular sense indicator positions he would·
like to use, he might write, for example:
Location

Operation

Variable Field

RIR

SENSX

Later, when he has decided that SENSX should be, say, the rightmost four
positions (i. e., positions 32, 33, 34, and 35 of the Sense Indicator register),
he can write:

03.00.08
5 (6/61)

Location

Operation

Variable Field

SENSX

BOOL

17

where the 17 is interpreted as an octal number equivalent to
000 000 000 000 001 1112' The effect of the instruction SENSX BOOL 17 is
similar to the effect of SENSX EQU 17. However, they differ in two important
respects:
1.

For EQU, the 17 would be interpreted as decimal, while for BOO L, the
17 is taken as octal.

2.

For BOOL, the symbol SENSX would be entered into the dictionary with
a special indication that this symbol is "Boolean, " while with EQU, the
symbol SENSX receives no such special indication.

In the above example, the variable field of the BOOL instruction contains an
octal integer t which is a special case of a Boolean expression (see Section 02).
The variable field of a BOOL instruction can in general contain any Boolean
expression. For example, one might write:
Location

Operation

Variable Field

A

BOOL

B*C+D-707070

where the variable field expression is Boolean, i. e., B, C, D are Boolean
symbols, 707070 is an octal integer, and the operations (*, +, and -) are
Boolean (see Section 02).
It is not necessary that the symbols used in the variable field expression
should already have received values when the BOOL instruction is first
encountered. However, the symbols should all be defined in the sense that
each symbol in the expression should occur once in the location field of some.
other BOOL instruction, since all symbols used must be Boolean and a
Boolean symbol can be defined by a BOO L instruction.

As in ORG and EQU, the variable field of a BOOL instruction should contain
only one subfield. If more than one subfield appears, only the first will be
used. The remaining subfields will be ignored and an error indicated on the
output listing.
The variable field expression of a BOOL instruction will be evaluated as zero,
and an error will be indicated on the output listing, for any of the following
reasons:
1. An integer appears in the expression using the character 8 or 9, so that
the integer is clearly not octal.

03.00.09
5 (6/61)

2. An integer appears in the expression, and the value of the integer exceeds
235 _1.
3. An integer appears in the expression and the representation of the integer
uses more than 12 numeric characters.
If the variable field of a BOO'L instruction uses some non-Boolean (i. e. ,
ordinary) symbol, this symbol will be treated as. though it were Boolean
and a possible error will be indicated on the output listing.
Pseudo-Operations for the Introduction of Data
The following four pseudo-operations can be used to introduce decimal, octal,
binary-coded-decimal, or mixed data from the source program into the object
program.
A.

DEC (Decimal Data)
This pseudo-operation causes the decimal numbers specified in the variable
field to be converted to binary, and assigned to successive locations
beginning with the current value of the location counter. If there is a location
symbol, it is entered in the dictionary with the current value of the location
counter. The first (i. e. , leftmost) decimal number specified in the variable
field can be referred to by this location symbol.
Example:
Suppose the value in the location counter is (3900)10' when the following
instruction is encountered:
Location

Operation

CONST

DEC

Variable Field
1,-3,5,-7,9

The effect of this instruction is to enter the symbol CONST in the dictionary
with the value 3900. The five integers 1, -3, 5, -7, 9 are converted to binary
and assigned to locations 3900, 3901, 3902, 3903, 3904, respectively. The
value of the location counter upon completion will be 390510'
If the programmer desires to add the integer 9 to the contents of the AC,
he may now write:
Location

03.00.10
5 (6/61)

Operation

Variable Field

ADD

CONST+4

Every decimal number must be represented by a string of characters from
the following set of 15 characters:
0
1
2
3
4
5

+

E
(numeric
characters)

B

(plus sign)
(minus sign)
(decimal point)
(exponent)
(binary point)

6

7
8
9
In order to represent a valid decimal number, the composition of the string
must satisfy the rules given below.
There are three types of decimal numbers which can be specified in the
variable field of a DEC instruction:
1. Integers
2. Fixed point numbers
3. Floating point numbers.
A given decimal number is recognized as belonging to one of these three
types by the representation of the number itself.
The sign of any decimal number is always specified by the first character,
"+" or "_". If no initial "+" or "-" is given, the sign is assumed to be "+".
Integers are represented by a string of numeric characters only (with possibly
a leading sign character). For example, -31 is an integer, but -31. is not.
An integer is converted to a 35-bit binary number with sign and stored in
positions S, 1-35 of the 709 binary word cell, the position of the binary point
in the cell being at the right-hand end of the word. For instance, -31 would
convert to (400 000 000 037)8'
The term "integer" as used here differs from the term "integer" defined in
Section 02, where it essentially means a non-negative whole number to be
dealt with according to the rules for evaluating a symbolic expression. For
example, the instruction PZE -1 converts to (000 000 077 777)8, while
DEC -1 converts to (400 000 000 001)8' On the other hand, PZE 1 and
DEC 1 both convert to (0'00 000 000 001)8. The reader can always determine
which meaning of integer is intended by considering the context.

03.00.11
5 (6/61)

A fixed point number or a floating point number may have a decimal point
and/or a signed decimal scale factor. The scale factor is indicated by the
character E and is placed after the principal part of the number. If the
decimal point is not present, it is assumed to be at the right-hand end.
For example, the strings 314159. E-5 and 314159E-5 each represent the
number (3. 14159)10 (i. e., 314159. 0 x 10- 5). The sign of the scale factor
may be omitted if it is +. Thus, for example, the number (3. 14159)10
might be presented by . 314159E+l or .314159El. The character E, which
indicates a decimal scale factor, may also be omitted, but only if the scale
factor is signed. Thus, (3. 14159)10 could be represented by 314159-5 or
.314159+1 (but not, of course, by .3141591).
A number is recognized as being floating point and will be converted to a
normalized floating point binary number if and only if its principal part
contains a decimal point and/or it has a decimal scale factor, but not if it
uses the character B. Thus, all the examples given in the previous paragraph
(i. e., 314159. E-5, 314159E-5, .314159E+l, .314159El, 314159-5, .314159+1)
are floating point numbers. Another representation of 3. 1415910 in floating
point form would be simply the string 3. 14159.
A number is recognized as being fixed point if and only if the string representing
it contains the character B. The B must be followed by a signed integer (as
usual, if the sign is +, it may be omitted). This integer specifies the position
of the binary point in the cell in which the fixed pOint binary number resulting
from the conversion is ,to be stored. The B-integer is used to count from the
left-hand end of the binary word cell from left to right. Thus, B = 0 specifies
a binary point between positions Sand 1, and B = 35 specifies a binary point
immediately to the right of position 35. The B-integer can thus be thought
of as the number of integral places.
It is not necessary for the B-integer to be positive.

A negative value means
the binary point is positioned outside of the left-hand end of the cell. The
B-integer may also exceed 35, e. g., 2. OB+36 would convert to (000 000 000 001)8.
Here the binary point is one position outside the right-hand end of the word cell.
Note that it is possible to lose bits on the left-hand end of the number if the
B-integer is improperly chosen. For example, 1. 5BO results in the loss
of the integral bit of the converted result (1. 1)2. If such a loss on the left
occurs, the number will be taken as zero and an error indicated on the
output listing.
It is also possible, and generally unavoidable, to lose bits on the right for
a fixed point decimal number. For example, 3. OB+36 would cause the
rightmost I-bit in (11)2 to be lost, because the word cell has only 35 bits.
This loss could have been avoided by specifying a B-integer of 35 instead

03.00.12
5 (6/61)

of 36. However, numbers like (0.4)10 which equals (.314631463146 •.. ')8
do not have a finite binary representation, so that O. 4BO will result in an
unavoidable loss of bits on the right. If bits are lost from the right-hand
end, no error will be indicated, and the best possible result will be obtained.
A fixed point number may have a decimal point and/or a decimal scale factor;
e. g., 314159E-5B2, 31415~. E-5B2, and 3. 14159B2 are all fixed point numbers.
However, the presence of the B alone is sufficient to define a number as fixed
point; e. g., 32B6 is fixed point.
Note that an integer can always be represented equivalently by using a fixed
point representation with a B-integer of 35, e. g., -31 is equivalent to
-31B35.
If the string repre senting a fixed point number contains both Band E, the
B-part and the E-part should both be placed after the principal part of the
number, but their relative order is unimportant. For example, 314159B2E-5
is equally as acceptable as 314159E-5B2.

A 709/7090 word cannot accommodate integers whose absolute value exceeds
235 _1 or floating point numbers whose absolute value exceeds approximately
1038 . Hence no decimal numbers outside of these ranges should be specified
in a DEC instruction.
If an integer exceeding 235 _1 or a floating point number exceeding approximately
1038 (in absolute value) is specified in a DEC instruction, the number will be
taken as zero and an error indicated on the output listing. There is no
restriction on the number of numeric characters which may be used in
representing a number, so long as these rules are followed.
The number of decimal numbers which may be specified in a si~le DEC
instruction is limited only by the number of subfields which can be written
in the variable field (this depends on the le~gth of the variable field and the
lengths of the strings representing the numbers).
Any combination of types -of numbers is allowable in a single DEC instruction;
for example, CONST DEC 2,3, 1, O. 9B5. However, it is generally preferable
for all numbers in a given DEC instruction to be the same type.
The reason for this is that a DEC instruction location symbol has an associated
format code which is entered into the dictionary along with the location symbol
itself. This code is retained and later used by the Debugging System to
determine how numbers are to be interpreted, whether as fixed point (format
code X) or as floating point (format code F). The format code used is determined
by the type (format) of the first decimal number appearing in the variable

03.00.13
5 (6/61)

field of the DEC instruction (in the above example, this would be X). The
remaining decimal numbers in the variable field will be assumed to be of
the same format, and if they are not, they will not appear on the debugging
output list a s originally written.
B.

OCT (Octal Data)
This pseudo-operation causes octal integers in t he variable field to be
converted to binary, and aSSigned to successive locations beginning with
the current value of the location counter. If there is a location symbol,
the symbol is entered in the dictionary with the current value of the location
counter. Thus, the octal integer specified in the leftmost subfield of the
variable field can be referred to by this symbol.
For example, suppose the value of the location counter is 390010 when the
following instruction is encountered:
Location

Operation

Variable Field

OCTDAT

OCT

777777777777, -77,66,-55,44

The effe'ct of this instruction is to enter the symbol OCTDA T in the dictionary
and to convert the five octal integers in the variable field to binary. The
numbers are assigned to locations 3900, 3901, 3902, 3903, 3904, respectively,
leaving the value of the location counter at 390510. Thus, the symbol
OCTDAT+2, for example, may be used to refer to the number 668 specified
by this instruction.
Every octal integer must be represented by a string of characters from the
following set of 10 characters:

o
1
2
3
4

numeric character s

5
6

7
+

(plus sign)
(minus sign)

An octal number may consist of up to 12 numeric characters and may be

preceded by a sign.

03.00.14
5 (6/61)

If more than 12 digits are used in representing the number, or if an 8 or 9
is included, then the number is converted as zero and an error is indicated
in the output listing.
The. sign of the octal number provides an easy way to specify the sign of the
binary result. + and - specify a O-bit or I-bit, respectively, in the sign
position. An alternative way of specifying the leftmost bit of the binary result
is by using twelve octal digits in representing the number. If the leftmost
octal digit is 4, 5, 6, or 7, this implies that the leftmost binary bit of the
result is 1 (i. e., a - sign). For small octal integers such as -77 8 , it is
easier to write -77 than to write 400000000077 (these two strings are equivalent
and convert to (400 000 000 077)8). However, the 12-digit, signless
representation can always be used for any 3S-bit binary number and is
preferable if 12 octal digits must be used in any case.
If a sign and 12 octal digits are used to represent an octal number,
redundancies or inconsistencies arise (unless the leftmost octal digit is
regarded as base 4 instead of base 8). For example, +700000000000 and
-300000000000 are inconsistent, while -700000000000 and +300000000000
are both redundant. If an octal number is represented by 12 octal digits
and an explicit sign, and the leftmost digit is 4, 5, 6, or 7, then an error
is indicated in the output listing. The following conventions are then used
in conversion:
sign and leftmost octal digit
+0
-0
+1
-1
+2
-2
+3
-3
+4

-4
+5
-5
+6
-6
+7
-7

03.00.15
5 (6/61)

binary result (bits S, 1, 2)
000
100
001
101
010
110
011
111
100
100
101
101
110
110
111
111

C.

BCI (Binary Coded Information)
One to ten words of binary coded information can be provided in the object
program by means of a BCl instruction. The variable field of a BCl
instruction has two subfields.
The first subfield specifies the number of words of information. This first
subfield must contain a number from 1 through 9 t or else consist only of the
comma which is used to separate the two subfields. In this case the number
of words of information is taken as ten.
The second subfield specifies the BCl information and must consist of a
continuous string of Hollerith characters, including comma, blank, etc.
The number of characters taken from the second subfield is six times n,
where n is the specification of the first subfield.
If a BCI instruction has a location symbol, the symbol is entered in the
dictionary with the current value of the location counter. The n words of
Hollerith information are converted to n words, consisting of six binarycoded-decimal characters each. These n words are assigned to the n
successive locations beginning with the current value of the location counter.
Thus, the first word of BCD information can be referred to by the location
symbol name.
For example, suppose the location counter value is 390010 when the following
instruction is encountered:
Location

Operation

Variable Field

IDENT

BCI

3, THISbISbAbBCI

(where "b" indicates the character, blank)
The effect of this instruction would be to enter the symbol IDENT into the
dictionary with the value (3900)10' and to store the BCD representation of
the three Hollerith words. The words would be stored as follows:
3900
3901
3902

THISbI
SbAbBC
Ibbbbb

where b represents a blank, i. e., the core storage BCD character 1100002'
The value of the location counter would be 3903 10 . The programmer could
then refer to the first word in, say, an IOCD command by means of the
symbol IDENT.
03.00.16
5 (6/61)

D.

VFD (Variable Field-Definition)
The preceding three pseudo-operations describe means of introducing decimal,
octal, or Hollerith information into the object program in units of words.
However, it will often be found desirable to prescribe information in smaller
units of a word.
It is, of course, possible (though sometimes not convenient) to use the
prefix, decrement, tag, address format of a word by specifying a proper
machine instruction, e. g., SVN 9, 1, 127 results in a prefix (bits 0-2) of 7,
a decrement (bits 3-17) of 127" a tag (bits 18-20) of 1, and an address
(bits 21-35) of 9. Even in such cases, the use of VFD may be found easier,
because its basic unit of information is a bit, instead of a word. It allows
the programmer to specify a continuous string of bits. from left to right,
starting at the left-hand end (O-bit) of a word.
As an example, suppose the programmer would like to break up a single
36-bit word into four subfields: positions 0-9, positions 10-14, positions
15-29, and positions 30-35. Suppose also that he would like to have placed
in these four subfields, respectively, the following four pieces of information:
The binary equivalent of the decimal integer 895.
2. The binary equivalent of the oct~l integer 37.
3. The binary value of the symbol ALPHA.
4. The binary coded value for the character C.
1.

Then he may simply write:
Location

Operation

Variable Field

VFD

10/895,05/37,151ALPHA, H6/c

The four subfields of the variable field of the above instruction are, as usual,
separated by commas a·nd the variable field itself is terminated by a blank.
The term "variable field" of the symbolic instruction is not to be confused
with the name VFD meaning "variable field-definition;" this latter term is
meant to indicate that the binary words of the converted result have been
broken up into the "variable field" format.
From the above sample instruction would be generated a machine word which
contains (assuming ALPHA is location 185638):

03.00.17
5 (6/61)

Specification

Bits

Contents

10/895
05/37
15/ALPHA
H6/C

0-9
10-14
15-29
30-35

1577 8
37 8
185638
23 8

(895 10)

Note that the number preceding the "/" in the instruction subfield defines the
length (number of bits) of the binary subfield. If the letter 0 precedes this
number, this indicates that the information to follow the "/" is an octal
integer, while the letter H indicates Hollerith information.
The absence of any letter indicates that the information following the "/"
is to be regarded as an ordinary (arithmetic) expression, and is to be evaluated
according to the standard rules, except that only the rightmost n bits of the
result are to be used, where n is the length of the subfield.
Hence, an integer is treated as in an arithmetic expression, not as an integer
in the sense of DEC, where it is converted to a signed binary number. For
example, VFD 18/-1, 18/1 converts to (777 777 000 001) 8. The restrictions
on the arithmetic expression here are those given in Section 02. Hence,
no integer should exceed 235 _1. Integers larger than 215_1, but less than
235 , ~ allowable and will be properly converted.
If the binary result requires less than n bits, the result will be placed in the

right-hand end of the binary subfield, and zeros will be filled in on the left.
This is also true of octal fields. For example, VFD 36/8 and VFD 036/10
both convert to (000 000 000 010)8.
The examples given thus far specify information to be packed into a single
binary word, and the sum of the lengths of the binary subfield is 36. This
is not a requirement. Any number of binary words can be specified, using
any number of binary subfields. (See the description of ETC.) Moreover,
subfields may overlap the binary words. For example;
Location

Operation

Variable Field

PACKIN

VFD

30/1,012/777

is allowable and converts to the

~o

binary words:

000 000 000 107 8
770 000 000 000 8

03.00.18
5 (6/61)

Note in the above example that the sum of the two subfield lengths is 42,
which is not a multiple of 36. As implied, this results in the unspecified
bits of the last-used word being taken as 0' s. (In the example, there are
30 such bits.) Thus, the example could equally well have been written
PACKIN VFD 30/1,.012/777,30/0. The number of words generated by a
VFD instruction is, of course, always the smallest integer greater than
or equal to the sum of the lengths of all the subfields divided by 36.
Note in the above example that the location symbol PACKIN appear s in the
instruction. As in the three previously described pseudo-operations, such
a symbol is entered into the dictionary with the current value of the location
counter, so that the first word of information generated by the VFD instruction
can be referred to by this symbol. The value of the location counter is then
increased by the number of words generated. In the above example, if the
location counter value had been 390010 when the instruction was· encountered,
the symbol PACKIN would have received the value 390010 and the final
value of the location counter would have been 3902 10 .
The length of a subfield must not exceed 63 10 • If a binary subfield length
exceeding 63 10 is specified, this length is taken as 6310 and an error is
indicated in the output listing.
Although decimal integers (i. e., integers in an ordinary subfield) should
not exceed 235_1, there is no limit on the number of octal digits that can
be specified in an octal (0) subfield,beyond the limitation mentioned in
the previous paragraph and the limitation imposed by the length of the
instruction card.
The length specified in a Hollerith (H) subfield should, in general, be a
multiple of 6, since one Hollerith character converts to six binary bits.
However, it is not required. If the bit-length specified is too small to
accommodate the character s specified, the resulting string of bits is
truncated, on the left, to that length. If the bit-length is too large, the
string is right-justified, 1. e., placed in the right-hand end of the binary
subfield. However, the left-hand Wlused bits in this case are filled out
with the binary code for blank, i. e., 1100002. If the Hollerith subfield
bit length is too large and is not a multiple of 6, a terminal segment of
this six-bit code is used to fill out the subfield on the left.
Any Hollerith characters, except blanks and commas, can be used in an H
subfield. Blanks and commas are, of course, not permitted because they
are used to terminate the variable field and to separate subfields of the
variable field, respectively.

03.00.19
5 (6/61)

DUP (Duplicate)
The instruction DUP M, N causes the next M instructions to be duplicated N times.
For example, suppose that the current value of the location counter is 390010
when the following instructions are encountered:
Location

Operation

Variable Field

DUP
DEC
DEC
DEC

3,30
1
2
3

The effect of these four instructions will be to assign the 90 integers 1,2,3,1,
2,3, ... ,1,2,3 to the 90 locations 3900, 3901, 3902, 3903, ... 3988, 3989,
respectively. The value of the location counter will be left at 399010.
Exactly the same effect could have been obtained by writing
Location

Operation

Variable Field

DUP
DEC

1,30
1,2,3

Note, as in this example, that some or all of the instructions to be duplicated
may be pseudo-instructions, which may in turn generate more than one word
in the object program. DUP M, N increases the location by the quantity: N
times (the number of machine instructions plus the number of words reserved
by principal pseudo-operations).
No more than ten principal pseudo-operations (BSS, BES, TCD, HEAD, ORG)
may appear within the range of a DUP instruction.
If a location symbol is used with a DUP instruction, this symbol will be entered

in the dictionary with the value of the location counter at the time the DUP
instruction-is encountered. Thus, this symbol can be used to refer to the first
word generated by the DUP instruction (in the above example, this would be
location 390010).
If an instruction to be duplicated has a location symbol, this symbol is associated
with the first, and only the first, occurrence of the duplicated instruction.
No instruction which a DUP instruction specifies is to be duplicated may itself
be a DUP instruction or an END instruction.

03.00.20
5 (6/61)

If; in the instruction DUP M, N; M and/or N are missing, zero, non-numeric,
or complex, an error will be flagged on the output listing and M will be replaced
by 1 and/or N will be replaced by 2.
LBR (Library Program)
Normally, each installation using SOS will have available, during the execution
of the Compiler, one (or possibly more than one) tape containing a set of library
programs. Each of these library programs will normally conform to SHARE
standards and will exist on the tape in SQUOZE (binary-coded-symbolic) form.
Moreover, each library program on the tape will have an identification
recognizable by the Compiler, so that the Compiler can search the library tape
for a specified program, and incorporate it into the source program being processed.
The identification label is not to be thought of as a symbol.
identifying string of alphanumeric characters.

It is simply an

The library program itself, being in SQUOZE form, will ordinarily use certain
location symbols. The programmer is provided with means for incorporating
all, some, or none of these symbols in the object program. Usually he will
probably prefer to eliminate all symbols except possibly the first one used in
the library program by specifying that the library program is to be "relativized. "
A program is said to be "completely relativized" if only one iocation symbol is
used and all references are made relative to this symbol. For example, consider
the following "unrelativized" program:
Location

Operation

Variable Field

USEPI

TZE
FAD
FDP
TRA
DEC
DEC

EXIT
UNITY
PI
1,4
1.0
3.14159

EXIT
UNITY
PI

The above program will be completely relativized with respect to the symbol
"USEPl" if it appears in the form:

03.00.21
5 (6/61)

Location

Operation

Variable Field

USEPI

TZE
FAD
FDP
TRA
DEC
DEC

USEPl+3
USEPl+4
USEPl+5
1,4
1.0
3. 14159

A program may also be "partially relativized" in the sense that more than one,
but not all symbols are retained.
Now suppose that the programmer is at a point in writing his source program
where he would like to specify incorporation of a certain library program. Suppose
that his program is on the standard library tape and that the program has
identification IDENT. Suppose further that the programmer. would like to have
the program relativized with respect to the first symbol of the program. Then
he can simply write:
Location

Operation

Variable Field

LBR

IDENT

When the instruction is encountered, the Compiler will search the standard
library tape for the program labeled IDE NT, relativize this program, and
incorporate the resulting program into the source program. The first word
of the generated program will be assigned the value in the location counter at the
time the LBR instruction is encountered. The number of words generated by
an LBR instruction will be the total number of words generated by all the
instructions of the library program itself, and the value in the location counter
will have been increased by this number when the Compiler has finished processing
the LBR instruction. Thus the effect is just as if the original symbolic instructions
for the library 'program had been inserted into the source program in the place
of the single LBR instruction (except for the relativization which will result in
the omission of symbols as illustrated above). Of course none of the omitted
symbols will be entered into the dictionary. All retained symbols, like USEPl
in the example above, will be entered into the dictionary.
It will often be the case that the programmer, in using a library program, will

not want to retain any of the symbols in the library program in his final object
program dictionary, because of possible conflicts with his own source program
symbols. He may also not want to know (nor be forced to refer to the library
program description) the symbol to which he must refer when he calls for the
library program in his main program (normally, he does this with a TSX to
the library program). All he really needs to know is the identification and
the tape. In the above example, "LBR IDENT", he did not even have to specify
the tape, since he knew it was the standard library tape. The identification
label IDENT in this case mayor may not be the same as the name of the program,
i. e., the symbol of the starting instruction of the program (to which the main
program must transfer). In this case, he may construct a symbol, say SUBRI,
and write:

03.00.22
5 (6/61)

Location

Operation

Variable Field

SUBRI

LBR

IDENT

The effect of this instruction will be to enter the symbol SUBRI into the dictionary.
The value used for SUBRI will be the same as the value assigned to the first
word generated by the LBR instruction, i. e., the value of the location counter
when the LBR instruction is encountered. If this first word already has an
associated symbol because such a symbol appears within the library program
itself, then this symbol will be omitted and relativization will occur with respect
to the programmer's symbol SUBRI, unless the symbol is specifically "exempted
from relativization" (see the description of EXEMPT following). Thus the
programmer, by specifying relativization and by using his own location symbol
SUBRI, has effectively omitted all the symbols used in the library program. He
may then enter the library program by the instruction:
Location

Operation

Variable Field

TSX

SUBRI, 4

The programmer may not want to relativize the library program. In this case,
he can write:
Location

Operation

Variable Field

SUBRI

LBR

IDENT, U

where the second subfield, U, means "Wlrelativized." In this case, all of the
original symbols used in the library program are entered into the dictionary,
and the programmer must be careful not to use these symbols in his own program
as location symbols. Even in this case, the symbol SUBRI might be used to
enter the library program, since it will still be in the dictionary with the value
assigned the first word generated by the LBR instruction. If the first word
already has an associated location symbol because such a symbol appears in
the library program itself, then either this symbol or SUBRI can be used,
since both have the same value.
If the first subfield of the variable field of a LBR instruction (i. e., the identification
subfield) is zero or blank, then the instruction must have a location symbol,
and this location symbol will also be used to serve as the identification label.
Thus, SUBRI LBR is equivalent to SUBRI LBR SUBRI, and SUBRI LBR 0, U is
equivalent to SUBRI LBR SUBRI, U.

If the second subfield of the variable field is omitted, or contains anything
except the single character U, then the program will be relativized.

03.00.23
5 (6/61)

EXEMPT (Exempt from Relativization)
This pseudo-operation has meaning only when used in a source program which
is intended to be a library program. It is used to specify which symbols in
the library program are to be exempted from relativization.
Since the Compiler has no means of distinguishing a source program intended
to be a library program from a source program which is not, the Compiler
always generates a list of exempt symbols specified by an EXEMPT instruction,
even though this list will have no meaning unless it is to be part of a program
on a library tape.
The variable field of an EXEMPT instruction may have one or more subfields.
Each subfield must contain a symbol which occurs as a location symbol somewhere
in the library program in which the EXEMPT instruction occurs. When the
instruction occurs the symbols given in the variable field are arranged in a list
of exempt symbols. If more than one EXEMPT instruction is used, the additional
symbols are also added to this list. The order of the symbols is unimportant.
The list is retained with the compiled library program when the program is placed
on the library tape. When the library program containing this "exempt list" is
cailed in by an LBR instruction which specifies relativization (i. e., does not
use the character U in the second subfield of the variable field) all exempt symbols
are entered into the dictionary. That is, they will be exempt from relativization
and will not disappear from the library program when it is incorporated into the
main program. (See page 03.00.21. )
Actually, a special list is not used, an exempt symbol in the library program is
indicated as exempt by the use of a bit in the dictionary entry for this symbol.
Of course, if the U (specifying "unrelativized") is used in the LBR instruction,
all.symbols are retained and the exempt list is ignored.
As an example, suppose that a library program whose identification is "SINCOS"
is planned to be used in two ways, one to evaluate the Sine function where the
user must enter the program by TSX SIN, 4 and the other to evaluate the Cosine
function where the user must write TSX COS,4. Suppose that the library program
is arranged as follows:

03.00.24
5 (6/61)

Location

Operation

Variable Field

SIN

xxx

xxxx

COS

xxx

xxxx

ERROR

xxx

xxxx

EXIT

xxx

xxxx

EXEMPT

SIN, COS

where the two symbols SIN and COS have been exempted.
Now if LBR SINCOS is included in a source program, the library program, when
incorporated into the source program, will be relativized using the symbols SIN
and COS. Thus, both of these symbols will be retained, but all other location
symbols (ERROR, EXIT, etc.) will be removed.
If the instruction SINE LBR SINCOS is used, both the symbols SIN and SINE
would be entered into the dictionary with the same value, namely the location
value assigned to the first word generated by the library program. In such
a case, the internal library symbol, SIN, not the external symbol" SINE, will
be used for relativization. However, since SIN and SINE both have the same
value, the programmer could enter the subroutine by either TSX SIN, 4 or
TSX SINE, 4.
To illustrate relativization with respect to more than one symbol, suppose that
the following library program has been processed by the Compiler, and placed
on the library tape with identification IDENT:

03.00.25
5 (6/61)

Location

Operation

Variable Field

USEPI

TZE
FAD
FDP
TRA
DEC
DEC
EXEMPT

EXIT
UNITY
PI
1,4
1.0
3.14159
USE PI, UNITY

EXIT
UNITY
PI

When the instruction LBR IDENT is encountered during processing some program,
the following will be incorporated:
Location

Operation

Variable Field

USE PI

TZE
FAD
FDP
TRA
DEC
DEC

USEPI+3
UNITY
UNITY+l
1,4
1.0
3.14159

UNITY

If no symbols in a library program are specifically exempted from relativization
and an LBR instruction is used to incorporate the program into a source program,
where the LBR instruction specifies relativization but has no location symbol,
then it is necessary that the first instruction of the library program which
generates a machine word have a location symbol. If this condition is violated,
an error will be indicated on the output listing, the first symbol will be considered
to be exempt, and complete relativization will be done using this symbol.
A location symbol should not be used with an EXEMPT instruction itself, since it
would be logically meaningless because EXEMPT generates no machine words.
If a location symbol is used in an EXEMPT instruction, it will be ignored and
an error indicated on the output listing.
Macro-Operations
A macro-operation is a special type of pseudo-operation. An instruction whose
operation is a macro-operation is called a macro-instruction. The most significant
property of a macro-instruction is that it generates n machine words where n
is greater than or equal to 1 (ordinarily, n is greater than 1, hence the term
"macro") .

03.00.26
5 (6/61)

The instructions generated by a macro-instruction are what is often called an
"open subroutine". Unlike a "closed subroutine", whose use is ordinarily
independent of its location in storage, the instructions generated by a macro
are executed "in-line", i. e., serially with the rest of the main program.
A macro can be regarded as an abbreviation for a block of instructions (or
words resembling instructions). The block of instructions generated by a
macro is determined by its definition and the items used in the variable field.
The definition consists of a "skeletal pattern" of instructions. This skeleton
is filled in with the items in the variable field of the macro.
Two classes of macro-operations are provided for by SOS. The first class
consists of macros which the programmer himself can define, these are called
"programmer macros." The second class consists of a large set of permanent
macros comprising the vocabularies of the Input/Output System, Debugging
System and SHARE Monitor routines. In addition, there are two special macros:
BEGIN and RETURN (see below). This set is called "system macros. "
A.

MACRO (Macro-Instruction Definition)
This pseudo-operation is not itself a macro-operation and does not generate
any machine words. It is used to define programmer macros.
Suppose that the programmer has written a source program with the following
structure:
Location

03.00.27
5 (6/61)

Operation

Variable Field

CLA
ADD
STO

FEDTAX
STATAX
TOTAX

CLA
ADD
STO

XSUBI
YSUBI
ZSUBI

CLA
ADD
STO

PART I
PART2
TOTAL

The pattern of three instructions (which in this particular example appears
three times in the source program) might be abbreviated by some alphabetic
name, e. g., QSUM. This abbreviation could then be defined as follows:
Location

Operation

Variable Field

QSUM

MACRO
CLA
ADD
STO
END

VI, V2, V3
VI
V2
V3

The above sequence of five instructions itself generates no words in the
obj ect program - the sequence constitutes the definition of the programmer
macro called QSUM. This definition is then inserted in the source program
before the first place the three instructions are required. The programmer
could replace each of the three blocks in his source program as follows:
Location

Operation

Variable Field

(5-instruction definition occurs somewhere here)

03.00.28
5 (6/61)

QSUM

FEDTAX, STATAX, TOTAX

QSUM

XSUBI, YSUBI, ZSUBI

QSUM

PART1, PART2, TOTAL

Note, as in the above simple example, the following points:
1. QSUM, which appears in the location field of the instruction whose
operation is MACRO, is not a symbol. It is a name for the programmer macro-operation defined. This name is not entered in the dictionary
as a symbol. Instead it is retained in a special table of programmer
macros along with its skeletal definition. When the name appears in
the operation field of an instruction, the definition in the table of
programmer macros is generated in the program. Since the name
is used as an operation code, it must be no more than six alphabetic
characters long, and must not coincide with any other operation code.
Since the macro-name is not a symbol, it may be identical to a true
location symbol (appearing elsewhere in the source program) without
confusion between the one and the other.
A useful fact to remember is that none of the operation codes in SOS
(machine or pseudo, including system macros) begin with the character
Q. Thus, as in the example, the use of Q as the first character in the
name of a programmer macro insures non-ambiguity.
2. The variables (V1, V2, and V3 in the example) which appear in the
variable field of the instruction whose operation is MACRO, and also
in the skeleton which immediately follows, only indicate the order items
must be specified and the places each is to be inserted. For example,
suppose a programmer defines the macro QSUM as above and then writes:
Location

Operation

Variable Field

QSUM

TOTAX, FEDTAX, STATAX

Then the following block is generated in the source program:
Location

Operation

Variable Field

CLA

TOTAX
FEDTAX
STATAX

ADD
STO

03.00.29
5 (6/61)

On the other hand, if his definition had b~en written QSUM MACRO
V3, Vl, V2 with the skeleton the same as in the original definition,
then the instruction QSUM TOTAX, FEDTAX, STATAX would expand
into the same instructions as before.
3. The end of the macro-definition must always be indicated by the use
of an END instruction immediately following the last instruction in
the skeleton. The location and the variable fields of the END instruction
should be blank. (For another meaning of END, see description following. )
As in the case of LBR, DEC, etc., a location symbol used in a programmer
macro-instruction will be given the same value as the value assigned to the
first word generated by the instruction. For example, using the above
definition of the macro QSUM, the instruction
Location

Operation

Variable Field

TAX

QSUM

FEDTAX, STATAX, TOTAX

would generate the instructions
Location

Operation

Variable Field

TAX

CLA
ADD
STO

FEDTAX
STATAX
TOTAX

In the example given above, the elements of the skeleton required to be
filled-in were simply address subfields of the skeleton instructions, and in
the example using the defined macro, these address subfields were filled
in by symbols. In general, a variable used in any skeleton instruction may
appear in the location field, the operation field, or in any of the subfields
of the variable field. Moreover, the variables may take on values which are
expressions (symbols, integers, or non-simple expressions) or Hollerith
characters. For example, the following definition is possible.
Location

Operation

Variable Field

QPOLY

MACRO
AXT

LOOP

FMP
OP
XCA
TIX

COEFF,LOOP,DEG,T,OP
DEG,T
COEFF
GAMMA
COEFF+DEG+l, T

LDQ

END
03.00.30
5 (6/61)

LOOP, T, 1

Note that the variable LOOP appears in a location field, OP appears in an
operation field, and COEFF and DEG appear combined and uncombined in
address subfields. Note also that GAMMA is a symbol, not a variable,
and presumably will be defined (in the sense of being assigned a location
value) elsewhere in the program. Of course, any use of the operation
QPOLY in a macro-instruction must be accompanied by appropriate
specifications for values of the variables. For example, LOOP must be
given a value which is a pure symbol, and this symbol, being a location
symbol, can be used only once in the program - otherwise it would be
multiply defined. OP must be some legitimate operation code, like FSB.
(The "value" of the operation code in such a case as this might also contain
a final * to specify indirect addressing in the instructions in which it
appears, e. g., FSB*.)
Having written the above definition of QPOLY, suppose that the programmer
now writes:
Location

Operation

Variable Field

QPOLY

C1-4, FIRST, 5,4, FAD

Then this macro-instruction will expand into the following block of six
instructions:
Location

FmST

Operation

Variable Field

AXT
LDQ

FAD

5,4
Cl-4
GAMMA
C1+2,4

XCA
TIX

FmST,4, 1

FMP

Notice that these instructions are the result of simple replacement in the
definitional skeleton, except for the expression "Cl+2", which results from
the skeleton address "COEFF+DEG+l", where COEFF=Cl-4 and DEG=5.
Unlike the examples given thus far, the definitional skeleton of a programmer
macro may also use pseudo-operations which generate one or more machine
words, i. e., "VFD", "BCI", system macros, etc.
Moreover, the definition of a programmer macro may itself contain one or
more programmer macros, which in turn may be defined using programmer
macros, etc., with no restriction as to depth. Note, however, that a
programmer macro may not contain itself since this would lead to the
generation of infinitely many instructions. For example, suppose we define:

03.00.31
5 (6/61)

Location

Operation

Variable Field

QADD

MACRO
CLA

A,B,C'

ADD
STO

QADD
END

A
B
C

A,B,C

Now if the programmer were to write

QADD

ONE,TWO,X

CLA

ONE
TWO

this would expand to

ADD
STO

X

QADD

ONE,TWO,X

which would in turn expand into

CLA

ADD
STO
CLA

ADD

ONE
TWO
X

ONE
TWO

STO

X

QADD

ONE, TWO, X

and so on.
The pseudo-operation LBR could be used in the definitional skeleton, but
this will generally make sense only if the identification (and location symbol,
if any) is variable, and if different uses of the macro-operation specify
different library programs to be incorporated. Otherwise each use would
result in the same library program being incorporated more than once.
Suppose that the following definition is given:
Location

Operation

Variable Field

QCSEQ

MACRO
TSX
VFD

SUBR, T, LABEL, SCALE
SUBR,T
H36/LABEL, 36/SCALE

END
03.00 .. 32
5 (6/61)

Then if the programmer writes:
Location

Operation

Variable Field

QCSEQ

PRINT, 4, SECOND, 35

he will effectively obtain the following block of instructions:
Location

Operation

Variable Field

TSX
VFD

PRINT, 4
H36/SECOND, 36/35

The last example illustrates how, by using an appropriate definition, the
programmer can write a calling sequence in a single instruction. There
may be many places in his program where he requires a calling sequence
of this particular form, and in each place, he can use his established
definition of the operation QCSEQ. By thoughtful use of programmer macros,
much writing can be saved and the readability of the source program itself
may be improved.
The maximum number of definitions (i. e., number of different programmer
macro-operations) -which can be used in a single source program is 100.
However, there is no limit on the length of any single definition, i. e., the
number of instructions in the skeleton, nor to the sum of the lengths of all
definitions used.
Because of internal space considerations, the maximum number of variables
which can be used in the definition, and hence the use, of a programmer
macro-operation is 32. However, any instruction whose operation is MACRO
and any instruction using a defined macro-operation can be extended to more
than one symbolic card by means of the pseudo-operation ETC.
The use of * (current contents of the location counter) as the "value" for
a parameter used as an address in a macro-skeleton is permissible and will
be interpreted in the natural way; e. g., given the definition:

03.00.33
5 (6/61)

Location

Operation

Variable Field

QLDTR

MACRO
CLA
TRA
END

X
Y

X,Y

then the instruction
QLDTR

ALPHA, *+1

would generate the instructions
CLA
TRA

ALPHA
*+1

where *+ 1 would refer to the instruction following the TRA instruction.
The use of a programmer macro-operation with an indirect address
indication e. g., SUMMAC* will result in the use of an indirect address in
the fir st instruction of the expansion.
In addition to symbols, integers, non-simple expressions, etc., another
kind of "value" that a variable in a macro-definition can take on is a
heading character. (See description of HEAD following. )
If a programmer macro which uses a given name is defined in the source
program, and if a new definition using the same name occurs later in the

program, then any use of this name as a macro-operation which appears
after the new definition is referred to the new definition, not the old one.
B.

BEGIN (Begin Subroutine)
BEGIN and RETURN (see below) are related special-purpose system macros.
They have been provided in SOS as an aid in specifying basic linkage within
a closed subroutine, particularly within library programs.
A standard SHARE library program requires a calling sequence with the
following structure:
Operation

Variable Field

TSX

LmPG,4

(transfer to error routine)

03.00.34
5 (6/61)

}

Transfer to library program.
N words of information determined by LmPG specifications.
(mayor may not be required)
Place of normal return.

The library program itself must provide for a normal return to the fir st
instruction following the calling sequence by means of, say, "TRA K, 4"
where K is the total number of words in the calling sequence, including the
TSX instruction and the error transfer which may appear as the last word
of the calling sequence.
Since index register 4 (XR4) is used in the return transfer, the library
program must initially save and finally restore the contents of XR4 before
TRA K, 4 is executed if it employs XR4 in another connection. Another
SHARE convention requires that the contents of XR4 be saved regardless of
whether it is used. (This is for debugging purposes.) As will be seen,
BEGIN does not require that this convention be followed, but the use of
RETURN does require it.
The general form of a BEGIN instruction is:
Location

Operation

Variable Field

FIRST

BEGIN

K,T,I,E

where FIRST is a location symbol associated with the first instruction
generated by BEGIN and K, T, I, and E have the following meanings:
1.

2.

K is as defined above, i. e., the location of the normal return relative to the
TSX instruction in the calling sequence.
T specifies the set of index registers which are to be initially saved and
finally restored. T is interpreted just as a tag in an ordinary machine
instruction. That is, T = 0 specifies saving no XR's, T = 1 specifies
XRl, T = 2 specifies XR2, etc.
If the SHARE convention of always saving XR4 is adhered to, T must
be 4,5,6, or 7. On the other hand, T = 0, 1, 2, or 3 are acceptable,
and each of these values results in the desired instruction expansion.
Note, however, that RETURN cannot be used in this case.

3.

I specifies whether the contents of the Sense Indicators are to be saved.
If I = 0, then the indicators are not saved and restored; if I = 1, then the
contents of the indicators are saved and restored. I = 0 is the normal
case, and, of course, can be indicated by simply omitting the I-subfield.

4.

E is used to indicate whether to save and restore the conditions for data
channel trapping. If E = 0, or is omitted then the conditions are not saved
and restored. If E = 1 the conditions will be saved and restored.

03.00.35
5 (6/61)

Trapping will be disabled within the closed subroutine unless the routine
enables its own trapping conditions. *
The number of machine instructions into which a BEGIN macro-instruction
expands is a function of the values of T, I, and E. The maximum number is
20, obtained by using T = 7, I = 1 and E = 1. For example
Location

Operation

Variable Field

LIBPG

BEGIN

2, 7, 1, 1

Location

Operation

Variable Field

LIBPG

TXL
AXT
AXT
AXT
LDI
STI*
LDI
XEC

*+11
**,4
**,2
**,1
*+5
SYSENB
*+4
SYSENB
2,4

expands into

TRA

PZE
PZE
XEC

SXA
SXA
SXA
STI
LDI*
STI
STZ*

LDI

SYSDSB
*-11,4
*-11,2
*-11,1
*-5
SYSENB
*-8
SYSENB
*-9

Second set executed

Fir st set executed

The first set of instructions ("first" from the standpoint of execution) saves
the index registers and the sense indicator register, and disables all channel
traps. The second set restores these special registers and then returns (by
TRA 2,4) to the main program. The first instruction of the expansion,
TXL *+11, skips over this second set, and the first instruction of the second
set, AXT 0,4, will presumably be transferred to from some later instruction
in the subroutine. It will be seen that this transfer can be affected by the
macro-operation RETURN.

* This option is available only with the SHARE Monitor.
03.00.36
5 (6/61)

If the SHARE convention of saving XR4 is followed, the smallest number of
instructions obtainable from a BEGIN macro-instruction is four. For example:
Location

Operation

Variable Field

LIBPG

BEGIN

3,4

Location

Operation

Variable Field

LIBPG

TXL
AXT
TRA

*+3
0,4
3,4
*-2,4

expands into:

SXA

The logical minimum is two instructions, LIBPG BEGIN 1 expands into:
Location

Operation

Variable Field

LIBPG

TXL

*+2
1,4

TRA

c.

RETURN (Return)
Often a library program will be written to detect one or more possible kinds
of errors during its execution, e. g., unacceptable input, overflow, etc.
As mentioned under BEGIN, the SHARE convention, in case of an error,
will be to cause a return to the main program one location before the place
of normal return. In order to distinguish between different 'kinds of errors
in the same library program, the standard SHARE procedure will involve
placing an error code (by means of instructions executed within the library
pro6'ram) in the decrement part of the first instruction of the library program,
which, as seen above, is a TXL instruction with a zero tag. The programmer
who writes the library program chooses these error codes for his particular
program as he pleases. In the calling sequence for this library program, he
can write a transfer, as the last instruction, to a subroutine to analyze the
kind of error, making use of the error code stored within the library program.
The macro-operation RETURN is designed to provide the programmer with
means for specifying, within the subroutine:
1.
2.

03.00.37
5 (6/61)

instructions to effect a normal return
instructions to effect an error return using a certain error code.

In both cases 1 and 2, it is assumed that a BEGIN instruction, or machine
instructions equivalent to the expansion of a BEGIN instruction, with an
associated location symbol of, say, "LmPG", has been written.

Then, as an illustration of case 2, the macro-instruction:
Location

Operation

Variable Field

BACK

RETURN

LffiPG

Location

Operation

Variable Field

BACK

TRA

LIBPG+1

will expand simply into:

The specified transfer to LIBPG+ 1 is the desired link to the restoring set
of instructions associated with the BEGIN instruction.
Since this use of RETURN results in a single instruction, the programmer
could as well write BACK TRA LmPG+l, instead of using the macro,
As an illustration of an error return, suppose that the error code is 8.
Then the programmer may write this error code in a second subfield of
the variable field, as follows:
Location

Operation

Variable Field

ERRI

RETURN

LIBPG, 8

The specification, as in this example, of any expression except zero (or
blank) in the second subfield of the variable field always results in a fourword expansion. The expansion for this example would be:
Location

Operation

Variable Field

ERRI

AXT
SXD
LXA
TXI

8,4
LIBPG,4
LmPG+1,4
LffiPG+2,4, 1

As can be seen, the effect of these four instructions will be to:
1.
2.
3.

place the error code, "8", in the decrement part of the instruction at LmPG
restore XR4
increase the contents of XR4 by 1

03.00.38
5 (6/61)

4.

transfer to the second instruction after LffiPG.

Note that the above instructions assume that XR4 has been saved in the
manner prescribed by a BEGIN instruction, and also that the exit instruction
is TRA K,4, which when executed will result in a return to the location one
less than the normal return (since the contents of XR4 have been increased
by 1 by the TXI instruction).
As an illustration of the joint use of BEGIN and RETURN, consider the following
sequence:
Location

Operation

Variable Field

SR

BEGIN
TPL
RETURN
DVP
STQ
RETURN

2,7,1
SR2
SR,l
ALPHA
BETA
SR

SRI
SR2
SR3

The instruction named SRI specifies an error return with an error code of
1, while the instruction named SR3 specifies a normal return. This sixword sequence would be expanded into the following 19-word set of
instructions:
Location

Operation

Variable Field

SR

TXL
AXT
AXT
AXT
LDI
TRA
PZE
STI
SXA
SXA
SXA
TPL
AXT
SXD
LXA
TXI
DVP
STQ
TRA

*+7
0,4
0,2
0,1
*+2
2,4

SRI

SR2
SR3
03.00.39
5 (6/61)

*-1
*-5,1
*-7,2
*-9,4
SR2
1,4
SR,4
SR+1,4
SR+2, 4,1
ALPHA
BETA
SR+l

HEAD (Heading)
It is frequently convenient, and sometimes necessary, to construct a source

program by writing it in pieces, where these pieces are finally put together
and compiled as a total program. Different pieces of the program may be
written by different programmers, or by the same programmer with considerable
time elapsing between the writing of the pieces.
Suppose, in such a situation, that a program block, say B1, has been written,
that another program block, B2, is in the course of being written, and that B1
and B2 eventually are to be joined together into a single program. Certain
location symbols have already been used in writing block B1, and certain other
location symbols, different from the location symbols used in B1, must now
be used in writing block B2. Otherwise, such symbols would be multiply defined.
This seems to mean that the programmer who is writing the block B2 must be
concerned with the symbols used in B1, even though B2 might be quite independent
of B1.
If B1 and B2 are completely independent of each other in the sense that neither

makes reference to the symbols defined in the other, then it might be convenient
to have B1 and B2 processed independently. On the other hand, such a procedure
might be more time-consuming and even very inconvenient in certain situations.
For example, if B2 is eventually to be loaded into core storage immediately
following B1, and the size of the B1 object program is not easy to compute.
However, if the symbols he is using in block B2 which might conflict with the
symbols in B1 are all less than six characters in length, the programmer can
completely ignore the symbols in B1 by prefacing B2 with the following pseudoinstructions:
Location

Operation

Variable Field

HEAD

x

where the single character X may be any non-blank character allowable in symbols
(see Appendix 1).
This pseudo-instruction, HEAD X, generates no words in the obj ect program.
When such an instruction is encountered, the symbols of all following instructions,
until another HEAD is encountered, whether they appear in the location field or in
the variable field, are treated as though they were "headed" by the character X
provided that these symbols are five or less characters in length. Thus the
symbols used in block B1 which are less than six characters long cannot
possibly conflict with the symbols used in block B2. Six-character symbols are
not affected, i. e., they are immune from "heading".

03.00.40
5 (6/61)

A symbol, ALPHA, headed by a non-blank heading character, X, is not to be
thought of as identical with the symbol XALPHA. On the contrary, the heading
character is essentially on a different level from the characters which make up
the string representing the symbol. The property, belonging exclusively to
six-character symbols, of being immune from heading, will also be seen to be
useful.
A symbol is said to be "unheaded" if and only if its representation uses exactly
six characters. For example, the symbol COMMON is unheaded. Every
symbol, e. g., ALPHA, whose length is less than six characters, is considered
to be headed, whether or not it is under control of a HEAD pseudo-instruction
as described above. If ALPHA is under control of HEAD X (where X is some
non-blank heading character), then ALPHA is said to be "headed by X". If
ALPHA is under control of a HEAD instruction with a blank variable field or is
not under control of any HEAD instruction, then ALPHA is said to be "headed
by blank". Hence, ALPHA headed by a blank should be regarded as identical
to the symbol ALPHA.
Of course, if a HEAD instruction with a non-blank variable field does not occur
in the entire source program, all considerations of heading can be ignored.
This is the reason for not introducing the concept of headed symbols earlier.
A HEAD instruction with a blank variable field must be used if the programmer
desires to discontinue the heading process. For example, note that the instruction
HEAD and the instruction HEAD 0 are quite different. "0" is an allowable
heading character and must be distinguished from the character blank. In the
ease assumed above, where the blocks BI and B2 are joined together in one
program, suppose that B2 must be put somewhere in the middle of BI, as follows:
Location

Operation

Variable Field
}

HEAD

X

first part of block Bl

J

block B2

HEAD
}

second part of block Bl

Here, the second HEAD instruction effectively serves the purpose of nullifying
the instruction HEAD X.

03.00.41
5 (6/61)

In this example, the entire program might have been prefaced by a HEAD with a

blank variable field. As implied above, however, such a HEAD instruction would
be superfluous, since the symbols in the first part of block B1 are automatically
headed by blank, being under the control of no HEAD instruction at all.
As a concrete illustration, consider the following sequence:
Location

(3000) ALPHA
(3001) GAMMA1
(3002) ALPHA
(3003) DELTA1
(3004) BETA
(3005) BETA

Operation

Variable Field

ORG
CLA
CLA
HEAD
CLA
CLA
CLA
HEAD
CLA

3000
GAMMA1 (3001)
ALPHA (3000)
X
DELTA1 (3003)
ALPHA (3002)
GAMMA1 (3001)
DELTA1 (3003)

The value assigned to each location symbol is given by the parenthesized number
to the left of the instruction in which this location symbol appears, and the value
corresponding to the address symbol is given by the number to the right of the
instruction.
Notice in this example that the symbols ALPHA and DELTA each appear twice
in a location field, once headed by blank, and once headed by X, and that each
different appearance results in a different value. ALPHA headed by blank is
entered into the dictionary with value 3000, and ALPHA headed by X, and BETA
headed by blank receive values 3004 and 3005, respectively.
Because of the different headings, these two appearances constitute two different
symbols, so that this is not a case of multiple definition. On the contrary, the
address symbol in the instruction GAMMA1 CLA ALPHA, not being under control
of a HEAD instruction, is headed by blank and is given the value 3000, whereas the
address symbol in the instruction DELTA1 CLA ALPHA is under control of
HEAD X, and is given the value 3002.
Notice also in the above example that GAMMA1 and DELTA1, being six-character
symbols, are unheaded, and can be used for reference either inside or outside
the headed region in which they appear as location symbols.
The device of referring in one headed region to a symbol defined in another
headed region by making this symbol six characters long, is often inconvenient.
In order to facilitate cross-referencing between headed blocks, the following
convention can be used:

03.00.42
5 (6/61)

Suppose that a headed symbol, say ALPHA headed by X, has been defined by
some instruction. Suppose further that this symbol is to be referred to in an
instruction under the control of the instruction HEAD Y. Then the desired
reference can be made by writing the string X$ALPHA.

In general, if the two-character string "C$", where C is any allowable heading
character, is placed in front of the head~d reference symbol ALPHA, then the
result is ALPHA headed by C. To specify ALPHA headed by blank, one simply
writes $ALPHA, with no character preceding the $ character. (A blank must
}lot be used ahead of the $, since this always indicates the end of the variable
field. )
Note that location symbols cannot beheaded by means of "$".
As an illustration of the use of $, consider the following:
Location

(3000) ALPHA
(3001) BETA
(3002) ALPHA
(3003) BETA

(3005) ALPHA

(3007) GAMMA

Operation

Variable Field

ORG
CLA
CLA
HEAD
CLA
CLA
CLA
HEAD
CLA
CLA
HEAD
CLA
CLA

3000
BETA (3001)
X$ALPHA (3002)
X
BETA (3003)
$ALPHA (3000)
Y$ALPHA (3005)
Y

X$BETA (3003)
$GAMMA (3007)
ALPHA (3000)
Y$ALPHA (3005)

where the value assigned to each loc~tion symbol is given by the parenthesized
number to the left of the instruction in which this location symbol appears, and
the value corresponding to the address symbol is given by the number to the
right of the instruction.
All symbols which occur in the instructions generated by a macro-instruction
are affected by a controlling HEAD instruction in the same way as symbols in
ordinary instructions are affected. This is also true of the .symbols in instructions
generated by a library program if the library program is called for incorporation
into the source program by means of an LBR instruction which specifies relativization.
On the other hand, if the program is called for by an LBR that specifies no
relativization, all headings internal to the library program will be retained and

03.00.43
5 (6/61)

will take precedence over any previous external HEAD instructions. These
internal HEAD instructions, however, will be effective only in the scope of the
incorporated library program. Thus, an external heading control preceding the
LBR instruction will be nullified only temporarily by internal HEAD instructions.
Since every library program is considered to be headed by blank the programmer
must refer to the beginning of the library prpgram by $ whenever the reference
. is within a headed region. For example, suppose the programmer wants to use
the library program LIBPG by entering it via a TSX. If he is within a region
headed, say, by X, he must enter the program by a TSX $LmPG, 4.
In defining a programmer macro (see MACRO), it is permissible to use a
variable which can take on a heading character as a value. For example:

Location

Operation

Variable Field

QMOVE

MACRO
CLA
STO
END

V1, V2, va
V1$V2

va

defines a macro-operation where V1 is a heading character. With this definition,
if one writes:
Location

Operation

Variable Field

QMOVE

X,ALPHA+BETA*GAMMA+1,DELTA

then one obtains the expansion:
Location

Operation

Variable Field

CLA
STO

X$ALPHA+X$BETA*X$GAMMA+1
DELTA

Note that a heading character applied to a non-simple expression (e. g. ,
ALPHA+BETA*GAMMA+1) affects all the symbols used in the expression.
A location symbol should not be used in a HEAD instruction. If a location symbol
is used in a HEAD instruction, it is ignored and an error is indicated on the output
listing.
ETC (Et Cetera)
With three exceptions, all instructions in SOS must be limited to a single instruction
card, i. e., 72 columns. The purpose of ETC is to provide for extending this
72-character limit in the following three cases:

03.00.44
5 (6/61)

1.

2.
3.

a VFD instruction
a MACRO instruction (used to define a programmer macro)
a system or programmer (defined) macro-instruction.

Suppose that the variable field of an instruction whose operation is VFD, MACRO,
or any system or programmer macro-operation, is too long to fit on a single
card. Then the variable field of this instruction can be broken off after some
subfield, say the nth subfield, and continued in the variable field of a second
card, beginning with the n+1th subfield of the instruction, by writing ETC in
the operation field of the second card. The comma which ordinarily separates
the nth from the n+ 1th subfield must appear as the last character in the variable
field of the first card, not the first character in the variable field of the second
card.
The omission, on the first card, of the separating comma between the two
subfields will cause an error to be indicated on the output listing, but the
comma is assumed to be present.
The location field in an ETC card should be left blank. If a location symbol is
used in an ETC card, this symbol will be ignored and an error will be indicated
on the output listing.
If one ETC card is' still not sufficient to specify the variable field of the instruction,
additional ETC cards can be used, without limit.
As an illustration, consider:
Location

Operation

Variable Field

VFD
ETC
ETC

18/1, HIS/ABC, 18/2,
H18/DEF, 18/3,
H18/GHI

Note that this is an. example of a single pseudo-instruction (which generates
three words in the object program) although it requires three cards.
SQZ (SQUOZE)
SQUOZE decks produced by 80S can be combined with symbolic coding during
compilation. The place at which a SQUOZE deck is to be included is indicated
by an SQZ instruction. If the symbolic input component and SQZ input component
are the same, the SQZ deck is inserted in the symbolic deck following the SQZ
card. If they are different, the SQZ deck must be immediately available at the
input component when the SQZ card is encountered.

03.00.45
5 (6/61)

The location symbol of an SQZ card has the value it would receive if the SQZ
card were an instruction. An SQZ deck loaded on-line is assumed to be column
binary unless the variable field contains the symbol RB, in which case it is
treated as a row binary deck.
The deck cannot contain symbolic modification cards, cannot be preceded or
followed by blank cards and must be in the form produced by the system.
In the 32K IB Monitor system the programmer macros in the deck (see page 03. 00. 27)
are combined and may be used thereafter. In the 8K IB system programmer
macros are' not combined. All symbols in the SQ Z deck retain their original
heading. No heading characters introduced within the SQUOZE deck affect
symbols used after the point where it is inserted. If both texts are in the
SQUOZE deck, commentary text is combined (if present) and non-commentary
text is ignored. If only non-commentary text is present, it is combined.
Cards are checked for checksum agreement, sequence number, and presence
of the SQZ punch (minus sign for control word).
Note: A symbolic deck may consist solely of SQZ cards with SQZ decks and
an END card.
Additional details are given in Chapter 3, Section 08.
END (End)
This pseudo-operation has two distinct applications:
1.

END is used to indicate the end o~ a skeleton for a programmer macro.
This application has already been mentioned under MACRO. In this case,
the operation END should appear by itself, with a blank location field and
blank variable field.

2.

END must also be used at the physical end of every source program, to
indicate the end of the source program. Here, the variable field is pertinent
and should consist of a single subfield. This subfield should contain the
address which constitutes the starting-point of the program. This address,
as usual, may be any legal arithmetic expression, but will ordinarily be an
integer or the symbol used to name the fir st executed instruction of his
source program, e. g., START.

Suppose that the Compiler encounters the pseudo-instruction:

03.00.46
5 (6/61)

Location

Operation

Variable Field

END

ALPHA

This instruction will produce two effects:
1.

The Compiler assumes that there are no more instructions to be processed.

2.

The symbol ALPHA, which presumably apPears with its assigned value in
the dictionary, is saved in a special way. Later, when the MOdify and Load
program has finished loading the object program, the information is used
to transfer control to the core storage location corresponding to ALPHA
to begin execution of the object program.

In case the programmer has requested his object program in absolute binary
form, the result of END ALPHA will be a transfer card containing the absolute
address corresponding to ALPHA.
Although an END instruction generates no words in the object program, a location
symbol used in an END instruction is processed in the usual way, i. e., entered
into the dictionary with the current value in the location counter. This value
will be, of course, one greater than the value corresponding to the final word
generated by the source program.
TCD (Transfer Card)
This pseudo-operation will have the same effect as the second application of the
pseudo-operation END described above, except that it will not cause the Compiler
to assume that the source program is at an end. That is, the pseudo-instruction:
Location

Operation

Variable Field

TCD

ALPHA

causes ALPHA to be saved as control information for later use by the Modify
and Load program, as in the case of END ALPHA. After processing the TCD
instruction, processing continues with the next instruction.
The rules governing the location field and the variable field of a TCD instruction
are the same as for an END instruction.

In case the programmer requests his object program in absolute binary form, the
result of TCD ALPHA will be simply an ordinary transfer card containing the
absolute address corresponding to ALPHA. This is the reason for the code
"TeD". This pseudo-operation is provided, for example, to allow programs
which are too large to fit in core storage to be loaded in pieces, each piece being
terminated by a transfer card.
03.00.47
5 (6/61)

LISTER
CHAPTER 1: SCAT LISTINGS

Symbolic listings of a program reproduce, with some exceptions, the symbolic
source program deck. The exceptions which are never reproduced are:

I II.

1.

Invalid operation codes, which are replaced in the listing by

2.

Invalid symbols, such as those longer than six characters, which are
replaced by 1111//.

3.

The shortened forms of extended operation codes, which are changed to,
and listed in their extended forms, e. g., the instruction WRS 1169 is listed
as WTBB 1.

In addition to the above, words generated by the BCI, DEC, DUP, LBR and
OCT instructions or by macro-instructions are not normally listed in detail
(see Chapter 3). Instead, only a "title line" and the first word generated by
these instructions are printed. (The "title line" reproduces the card containing
the BCI, DEC, DUP, LBR, OCT, or macro-instruction.) All generated words
may, however, be listed by exercising one or more of the options available.
When a SQUOZE deck is listed, comments are aligned with the first comment
in the program, and therefore may not be aligned as in the source deck.
Symbolic listings produced by SCAT may consist of four main parts:
A.

The first part may be either of two items depending on whether the program
is being processed by the Compiler or by Modify and Load.
1.

During Compiler processing, this part is a listing of errors found in the
program (see "Compiler Error Listing" below).

2.

During processing by Modify and Load, this part is a listing of the
modification cards (if any) for the program and any errors found in those
cards (see "Modifications Listing" below).

B.

The next part produced is a listing of all inconsistently defined principal
pseudo-operations and of all undefined and doubly-defined symbols in the
program. (See "Symbol and Pseudo-Operation Error Listing. ")

C.

The third part of the listing will be the symbolic program with absolute
(octal) equivalents. (See "Program Listing. ")

04.01. 01
3 (1/61)

D.

The final part is a (dictionary) listing of all symbols in the program which
have been defined at least once. (See "Symbol Listing. ")

Each of these four parts of the listing is described in more detail in the following
paragraphs.

COMPILER ERROR LISTING
The list of errors detected during the processing of a program will be headed
by the statement
COMPILER ERROR LIST XX/XX/XX
where XX/XX/XX is the date of compilation, if supplied to the Compiler; otherwise it will be 0/ 0/00. This statement will be followed by a list of all instructions,
including comments and alter numbers (see Chapter 2) in which errors were
found. Messages which indicate the type of errors found will be given following
each instruction. If no errors are found by the Compiler, this part will consist
of merely the statement
NO ERRORS FOUND BY COMPILER

MODIFICATIONS LISTING
A listing of all modification cards is always produced during processing of a
EQUOZE deck, if the deck includes such cards. If no modification cards are
included, this listing will, of course, be omitted.
The modifications listing may also include messages indicating errors found in
modification cards. These messages will follow immediately after the cards
in which the errors were found. Error messages (when using 32K SOS only) will
be indicated by a row of asterisks to make them easily distinguishable.

04. 01. 02
3 (1/61)

A sample of a modifications listing is given below.

CHANGE CRTl+16,CRTl+17
ClM
llS
35
ALTER
45,46
ClM
llS
35
CHANGE ST AF 13, control will be transferred to the location
determined by the current mode of the modal macro OSPILL with c(MQ) = 3.
If IS N S 12 (which is the ordinary case), then the contents of location Y -c(T)
are considered as a 36-bit, signless integer, and converted to the corresponding
string of 12 octal digits. The rigqtmost N digits are stored in the specified
image subfield.

Thus, if c(3000) = (000 000 000 077)8' then the execution of the instruction
Operation

Variable Field

OOCTAL
would set

3000,0,21,3

c(image columns 21 through 23) = (077)
BCD

c(column counter) = (24)
10
If the specified image subfield length is too small to accommodate the number
(i. e., if N < 12 and the (12-N) leftmost digits in the 12-octal-digit converted
result are not all zeros), then control will be transferred to the location determined by the current mode of OSPILL with c(MQ) = 9.

For example, if the instruction in the illustration above had been OOCTAL
3000,0,21,1, then such an OSPILL transfer would occur because of the loss
of the leftmost 7 digit.
If N = 13, then the contents of location Y-c(T) will be converted as a 35-bit,
signed integer to produce a 13-character string consisting of a sign followed by
12 octal digits (the leading digit cannot exceed 3). If the sign is +, it will be
suppressed, i. e., stored as a blank character.

Example:
If c(3000) = (000 000 000 077)8' then the execution of
Operation

Variable Field

OOCTAL
would cause

3000,0,21,13

c(image columns 21 through 33)

= (b000000000077)
BCD

c(column counter)

= (34)

10
07.02.11
5 (6/61)

Note that leading zeros are never suppressed.
In addition to OSPILL, the modal macros OMASK and OEOR also apply to
OOCTAL.
OBIN Y,T,C,N
The execution of this macro-instruction causes the contents of cell Y -c(T), considered as a 36-bit signless integer, to be converted to a binary integer; i. e. ,
a 36-character string of O-digits and I-digits. The rightmost N digits of this
string are then stored in the N-character image subfield beginning at column C.
If N is 0, or is omitted, the value of N will be taken as 36. The value of N
should not exceed 36. If N >36, then control will be transferred to the location
determined by the current mode of OSPILL with c(MQ)= 4.
Thus, if c(3000) = (000 000 000 077)8' then the execution of the instruction
Operation
OBIN
would set

Variable Field
3000,0,21,7

c(image columns 21 through 27) = (0111111)BCD
c(column counter) = (28)10

If the specified image subfield length is too small to accommodate the number,
i. e., if N<36 and the (36-N) leftmost digits in the converted result are not all

zeros, control will be transferred to the location determined by the current
mode of OSPILL with c(MQ) = 10.
For example, if the instruction in the illustration above had been OBIN 3000,0,
21,5, then an OSPILL transfer would occur because of the loss of the leftmost
1 digit.
Note that the results of using OBIN never involve the characters + or -, and
that leading zeros are not suppressed.
In addition to OSPILL, the modal macros OMASK and OEOR also apply to
OBIN.

07.02.12
5 (6/61)

OINT Y,T,C,N
The execution of this macro-instruction causes the contents of cell Y -c(T),
considered as a 35 -bit, signed binary integer, to be converted to a decimal
integer, thus producing a sign and a string of 11 decimal digits. The rightmost
N digits of this string, with leading zeros replaced by blanks and with an extra
blank character attached to the beginning of the N-digit string, is then stored in
the N+lth character image subfield beginning at column C. Finally, if the sign
of the integer is negative, a - character replaces the rightmost blank character
(i. e., the - immediately precedes the most significant digit). If the absolute
value of the integer is 0, so that the II-digit converted result is all zeros, then
the above procedure is not used. Special rules, detailed in the description of
the modal macro OZERO (see below), apply in this case.
Leading zeros and + signs are suppressed, but the length of the image subfield
is always N+l, not N. *
If N is 0, or is omitted, the value of N will be taken as 11. The value of N should
not exceed 11. If N> 11, then control will be transferred to the location determined by the current mode of OSPILL with c(MQ) = 2.

Thus, if c(3000) = (400 000 000 017)8' then the execution of the instruction
Operation
OINT
would set

Variable Field
3000,0,21,3

c(image columns 21 through 24)

=

(b-15)BCD

c(column counter) = (25 )10

If the specified image subfield length is too small to accommodate the number,
i. e., if N < 11 and the (11-N) leftmost digits in the I1-digit converted result are

not all zeros, then control will be transferred to the location determined by the
current mode of OSPILL with c(MQ) = 8.
For example, if the instruction in the illustration above had been OINT 3000,0,
21,1, then an OSPILL transfer would occur because of the loss of the leftmost
digit.

* Unless

a non-normal OOVPCH mode is in effect (in which case the length is N; see 00VPCH below).

07.02.13
5 (6/61)

In addition to OSPILL, the modal macros OMASK, OEOR, OZERO, and OOVPCH
also apply to OINT.
OFLOAT Y,T,C,N,K
The execution of this macro-instruction causes the contents of location Y -c(T) to be
regarded as a floating point binary number (i. e., I-bit sign, 8-bit characteristic,
27 -bit fraction), possibly not normalized. This number is first normalized and
then converted to floating point decimal form, i. e., to a string composed of a
principal part ("mantissa") followed by an exponent part (decimal scale factor).
This string is then stored in the image subfield beginning at the column number
specified by C.
The number of characters in the string (and hence the length of the image subfield used) depends on Nand K, as follows:
The principal part of the number will consist of a sign (+ will be suppressed)
followed by N+K decimal digits, with the leftmost digit non-zero. If K =1= 0,
a decimal point will be used to separate the N leftmost and the K rightmost
digits, so that the principal part is composed of N+K+2 characters. In this
case, N

=

0 is allowable and will cause the point to occur between the sign

and the leftmost digit. If K = 0, a decimal point will not be used, so that
the principal part is composed of N+1 characters. When K = 0, an N = 0
is not allowable and will cause a meaningless result.
If the converted result is zero then special rules apply which are given under
the description of the modal macro OZERO (see below).

An exponent part will always appear following the principal part.
part will not use the character E *, but always commences with a
suppressed). The sign is followed by exactly two decimal digits,
absolute value of the decimal exponent exceeds 99, in which case
digits will be used. Leading zeros are not suppressed.

This exponent
sign (+ is not
unless the
three decimal

Ordinarily, the absolute value of the decimal exponent will not exceed 38, but
the use of an additional decimal scale factor by means of OSCALE (see below)
may cause it to exceed 99.

* Unless the current OOVPCH mode is non-normal;

07.02.14
5 (6/61)

see description of OOVPCH below.

Thus, the number of characters in the generated string is normally*:
N +4

if

K

=

N+K+5

if

K

=

0

(sign and exponent)

0

(sign, decimal point, and exponent)

When the exponent requires three decimal digits this number of generated
characters is increased by 1.
As an illustration, suppose that c(3000) = (601 500 000 000)8' i. e. the standard
floating point binary representation of (-1. 25) . Then the execution of the
. t ruc t'Ion
10
Ins
Operation

Variable Field

OFLOAT
would set

3000,0,21,3,0

c(image columns 21 through 27) = (-125-02)BCD
c(column counter)

=

(28)10.

On the other hand, the instruction
Operation

Variable Field

OFLOAT
would result in

3000,0,21,0,3

c(image columns 21 through 28)
c(column counter)

=

= (-.

125+01)BCD

(29)10

Whereas the instruction
Operation

Variable Field

aFLOAT
would result in

3000,0,21,1,3

c(image columns 21 through 29)
c(column counter)

=

= (-1. 250+00)BCD

(30)10.

* Unless the current OOVPCH mode is non-normal; see description of OOVPCH below.

07.02.15
5 (6/61)

There are three restrictions with respect to OFLOAT whose violation will cause
a transfer of control to the location determined by the current mode of OSPILL.
These .are:
1.

N+K must not exceed 8.
with c(MQ) = 5.

Violation of this restriction leads to a control transfer

2.

The absolute value of the decimal exponent of the converted result must
not exceed 999. Violation of this restriction leads to a control transfer
with c(MQ) = 15.

3.

The floating point binary number in location Y -c(T), if not normalized,
should not be so small as to cause a floating point underflow when it is
normalized. Violation of this restriction leads to a control transfer
with c(MQ) = 13.

In addition to OSPILL and OSCALE, the modal macros OEOR, OZERO, and
OOVPCH, also apply to OFLOAT.
OFLFIX Y,T,C,N,K
The execution of this macro-instruction has the following effect:
The contents of location Y-c(T) is regarded as a floating point binary number
possibly not normalized. * This number is first normalized and then converted
to fixed point decimal form which consists of a signed string of decimal digits,
possibly with a decimal point. This string is then stored in the image subfield
beginning at the column number specified by C.
If K

=

0, the string which is developed will consist of N+K +2 characters; one
character for the sign, N digits representing the integral part of the number
(N may be 0), followed by a decimal point and K digits representing the fractional
part of the number.
If the current OOVPCH mode (see below) is non-normal, then the number of

characters generated is 1 less than indicated above.
If K = 0, no decimal pOint will be used, and the string will consist of N+1

characters; one character. for the sign and N digits representing the integral
part of the number. In this case, the specification of N = 0 is not allowable
and will cause a meaningless result.

* If bits 9-35 of the contents of location Y -c(T)

are all zeros, special rules apply.
under the description of the modal macro.OZERO (see below).

07.02.16
5 (6/61)

These are given

Leading zeros in the integral part of the number and plus signs are suppressed.
Minus signs will appear in the position immediately to the left of the high-order
non-zero digit in the integral part, or immediately to the left of the decimal
point.
For example, suppose that c(3000) = (601 500 000 000)8' i. e., is the standard
floating point binary representation of (-1. 25 )10' Then the execution of the
instruction
Operation

Variable Field

OFLFIX
would set

3000,0,21,3,0

c(image columns 21 through 28)

=

(bb-l. 250)BCD

c(column counter) = (29)10'
However, the instruction
Variable Field

Operation
OFLFIX
would cause

3000,0,21,3,0

c(image columns 21 through 24) = (bb-1)BCD
c(column counter)

=

(25)10'

OFLFIX can convert to any fixed point number up to 16 characters long. *
However, since a normalized floating point binary number can be accurate only
to eight decimal integers, OFLFIX will pad trailing zeros on numbers with
N+K greater than eight (or in some cases, nine). IfK> 8, fractional numbers
(without integers) will have significant zeros inserted between the decimal point
and the eight converted characters. Note, however, that accuracy is only as
great as the eight (or nine) non -zero characters, if an integer part is present.
For instance, with the following converted results,
512,064,470,000

The last 4 zeros are padding and not accurate.

512.06447000

The last 3 zeros are padding and not accurate.

* In the IB Monitor version of OUTRAN,
does not apply.

07.02.17
5 (6/61)

OFLFIX converts up to 8 characters only, and this paragraph

.00000005126447

The first 7 zeros were inserted but each
character is significant.

. 00512064470000

The last 4 zeros are padding and not accurate .

There are three re&trictions with respect to OFLFIX whose violation will cause
a transfer of control to the location determined by the current mode of OSPILL.
These are:
1.

N+K must not exceed 16 (8 for the IB Monitor version).
restriction leads to a control transfer with c(MQ) = 6.

Violation of this

2.

N must be large enough to accommodate the integral part of the converted
result, e. g., if c(3000) = (-1. 25)10 as in the above example the specification of N = 0 is inadequate. * If this restriction is violated, an attempt
will be made to give a result wherever possible by placing the number, in
floating point form, within the space provided. ** If this attempt fails, control
is transferred to OSPILL with c(MQ) = 11.

3.

If the floating point binary number in location Y -c(T), is not normalized, it
should not be so small as to cause a floating point underflow when normalized.
Violation of this restriction leads to a control transfer with c(MQ) = 14.

In addition to OSPILL, the modal macros OEOR, OSCALE, OZERO, and OOVPCH
apply to OFLFIX.
OFIX Y,T,C,N,K,B***
The execution of this macro-instruction causes the contents of location Y -c(T)
to be regarded as a fixed point binary number with the position of the binary point
determined by the value of the B-parameter*** and by the current mode of the modal
macro OPOINT. This number is converted to fixed point decimal form which
consists only of a signed string of decimal digits possibly with a decimal point.
This string is then stored in the image subfield beginning at the column number
specified by C.

*

**

Note here that the effect of any decimal scale factor introduced by the modal macro OSCALE must
also be provided for in the converted result. Thus, in this example, if OSCALE -1 is in effect, N::O
would be adequate since the converted result would have the value (-0. 12Sho.
The attempt to place the number in the image in floating point form will not occur when using the IB
Monitor version of OUTRAN. Control will always transfer to OSPILL with c(MQ) = 11.

***The B-parameter cannot be handled by the version of OUTRAN used with the IB Monitor and is thus
always assumed to have a zero value.

07.02.18
5 (6/61)

The B-parameter* modifies the location of the binary point in the fixed point
number to be converted. It supplements the OPOINT modal value (see below)
and is effective only for the OFIX in which it appears. For example, if the
mode of OPOINT is normal, i. e., the binary point is between bit positions
S and 1, a B value of 35 will place the binary point to the right of bit position
35. The converted number will then be an integer with no fractional part.
The rules for specifying N and K, and the make-up of the generated BCD string
are the same as for OFLFIX, except that N+K may be no larger than 11. Thus,
the length of the image subfield used will be N+K+2 if K =1= 0, and N+ 1 if K = o.
Example:
Suppose that c(3000) = (000 000 000 005)8 and the binary point is between positions
33 and 34.** This is a fixed point-binary representation of (1.01)2 = (1.25)10.
Then the execution of the instruction
Operation
OFIX
would set

Variable Field
3000,0,21,3,3

c(image columns 21 through 28) = (bbblo 250)

BCD

c(column counter) = (29)10
However, the instruction
Operation
OFIX

Variable Field
3000,0,21,3,0

would result in c(image columns 21 through 24) = (bbbl)BCD
c(column counter) = (25 )10
There are three restrictions with respect to OFIX whose violations will cause a
transfer of control to the location determined by the current mode of OSPILL
(described below). These are:
1.

N+K must not exceed 11. Violation of this restriction leads to a transfer
with c(MQ) = 7.

* The B-parameter cannot be handled by the version of OUTRAN used with the IB Monitor and is thus
always assumed to have a zero value.
**The combined effect of OPOINT and the B-parameter is assumed to be 33.

07.02.19
5 (6/61)

2.

N must be large enough to accommodate the integral part of the converted
results, e. g., if c(3000) = (1. 25)10' as in the above example, the specification of N = 0 is inadequate. * Violation of this restriction leads to a
transfer with c(MQ) = 12.

3.

If A denotes the absolute value of a number, as originally represented in
fixed point binary in location Y-c(T) and by the current OPOINT mode and
B, ** then A x 10K must not exceed 235 _1. Violation of this restriction
leads to a transfer with c(MQ) = 16.
For example, such a violation would occur on the execution of uOFIX 3000,
0,21,0,11" where c(3000)= (200 000 000 000)8 with normal OPOINT mode.
Here, A = (0.1)2 = (0.5)10' so that A x 10K = (0.5) x 1011> 235.
However, if OSCALE -1 were in effect, then A = (0.5) x 10- 1= (0.05), so
that A x 10K =(0.05) x 10 11= 5 x 109 < 2 35, which is not a violation.

In addition to OPOINT and OSPILL, the modal macros OEOR, OSCALE, OZERO
and OOVPCH also apply to OFIX.
OFXFLO Y,T,C,N,K,B***
The execution of this macro-instruction causes the contents of location Y -c(T)
to be regarded as a fixed point binary number with the position of the binary
point determined by B and the current mode of o POINT . This number is converted
to a normalized floating point binary number and stored in location Y -c(T).
Control is then transferred to OFLOAT. All parameters, except B, are then
interpreted by the OFLOAT program and the number is converted to floating point
decimal form. This string is then stored in the image subfield beginning at the
column specified by C.
The parameters, except B, must meet the OFLOAT specifications and the number
of characters in a string, depending on Nand K, is calculated exactly as for the
OFLOAT routine.

*

**

Note that the possible extra effect of a decimal scale factor introduced by the modal macro OSCALE
(described below) must also be included in the converted result. Thus, in the example, if OSCALE -1
is in effect, the specification of N = 0 would be adequate since the converted result would be the
value (0. 125ho.
The possible effect of a decimal scale factor introduced by the modal macro OSCALE (described below)
must also be included here in the value of the number.

***OFXFLO is not available with the IB Monitor.

07.02.20
5 (6/61)

Example:
Assume c(3000) = (000 012 400 000)8 and the OPOINT mode is normal.
the instruction
Variable Field

Operation
OFXFLO
will set

Then

3000,,10,2,2,17

c(image columns 10 through 18)= (b. 10. 50+00)BCD
c(column counter)

= (19)10

Note that since OPOINT was normal, the B-parameter established the binary
point to the right of bit position 17. The B-para-meter is additive to the OPOINT
modal value (see OPOINT below) and applies only to the macro-instruction in
which it is specified.
OMASK Y,T,C,N
This modal macro is used to establish a mode of execution for instructions
using one of the five macro-operations:
OOCTAL
OBIN

OINT
OBCC
OBCW
If the mode associated with OMASK is normal, the above five macros will function
as already described. As mentioned previously, either of the instructions OMASK
o or OUTRAN will set this mode to normal.

The execution of the instruction OMASK Y, T, C, N defines a binary subfield,
where Y-c(T) specifies literally the length (in bits) of the subfield, and C specifies
the number of the first bit of the subfield. N, which is normally 0, is described
below. The defined subfield is taken with respect to a 36-bit word with bits
numbered 1 - 36; not 0, 1 - 35. Thus, if index register 4 contains 1 when the
instruction OMASK 16, 4, 22 is executed, then the subfield so defined will be the
address part of the cell, i. e., bits 22 through 36.

07.02.21
5 (6/61)

After the instruction OMASK Y, T, C is executed, any subsequent instructions of
the forms
Operation
OOCTAL
OBIN
OINT

Variable Field
ALPHA, TAG, COL, LENGTH
ALPHA, TAG, COL, LENGTH
ALPHA, TAG, COL, LENGTH

will have the same effect as usual, except that, in each case, the number used
(i. e., converted and stored in the record image) will not be simply the contents
of cell ALPHA-c(TAG). Instead, the subfield defined by ..the controlling OMASK
instruction, will be extracted and converted. It is assumed here that the subfield
length· Y -c(T) does not exceed 35. For other cases, see below.
Example:
If c(3001) = (700 011 777 777)8' then the execution of the instructions

Operation
OMASK
OINT
would set

Variable Field
15, 0, 40
3000,0,21,1

c(image columns 21 and 22) =(b9)BCD

The extracted subfield in this case is the 15-bit string (00011)8' and the word
used is. (OOe 0.00 000- 011)8.
Note, as implied in the above example, that the C of the OMASK instruction may
exceed 36. Thus, the specified subfield, although defined in this case with respect
to location 3000, does not lie in location 3000. It is in fact the decrement part
of location 3001. However, any OMASK instruction (as applied to an OOCTAL,
OBIN,or OINT instruction) must specify a subfield which lies entirely in a single
cell. For example, the instruction OMASK 15, 0, 31, or any OMASK instruction
with Y -c(T) exceeding 36, would not be allowable. If this restriction is violated,
the attempted execution of the OOCTAL, OBIN or OINT instruction will lead to
a transfer of control to the location determined by the current mode of OSPILL
with c(MQ) = 1.
In the special case where the length Y -c(T), of the extracted subfield is specified
as 36 which requires the specification of C as 1 or 1 plus some multiple of 36,
the leftmost bit of this subfield, the sign bit, will be unconditionally changed to
zero. For example, if c(3000) = (400 000 000 005)8' then the execution of the
instructions

07.02.22
5 (6/61)

Operation

Variable Field

OMASK
OINT

36~0,1

3000,0,21,1

would result in c(image columns 21 and 22)

=

-(b5)BCD (not (-5)BDC)'

Thus, the sign of the 36-bit number used by an OOCTAL, OBIN, or OINT instruction and controlled by a non-normal OMASK mode is always positive ..
Note, however, that a sign bit included in an extracted subfield of length less than
36 is treated -as an ordinary numeric bit. For example, if c(3000) = (400 000 000
000)8' then the execution of the instructions
Operation
OMASK
OINT
would set

Variable Field
3,0,1
3000,0,21,1

c(imagecolumns 21 and 22) = (b4)BCD

After the instruction OMASK Y, T , C is executed, any subsequent instructions of
the forms
Operation
OBCC
OBCW

Variable Field
ALPHA, TAG, COL, LENGTH
ALPHA, TAG, COL, LENGTH

will have the usual effect, except that the source region for the string of
characters to be moved by the OBCC or OBCW instruction to the image region
does not begin with the first character position in location ALPHA - c(TAG).
Instead the region begins with bit position C, considering C = 1 as the leftmost
bit of ALPHA - c(TAG). Thus, if c(3000) = (ABCDEF)BCD andc(3001)=
(GHIJKL)BCD' then the execution of the instructions
Operation
OMASK
OBCC
would cause

07.02.23
5 (6/61)

Variable Field
0,0,31
3000,0,21,7

c(image columns 21 through 27) = (FGHIJKL)BCD'

In the above example, C = 31 happens to correspond to the leading bit in a character position (of which there are six: C = 1,7,13,19,25,31). This is not required.
C is arbitrary, and a character (six-bit group) may overlap two words.
Note that Y and T in the instruction OMASK Y, T, C, when applied to OBCC and
OBCW, are irrelevant.
In the instruction OMASK Y, T, C, N; N must have one of the two values

°

or 1.
The specification of N :::: 1 indicates a "floating mask." Thus, each time the
OMASK instruction is applied by the execution of an instruction using one of the
five macros subject to OMASK control, the number of the leading bit of the subfield is increased by the length, Y -c(T), of the subfield.
Example:
Suppose, that c(3000) :::: (0001 0002 0003)8 and c(3001) :::: (0004 0005 0006)8.
Then the execution of the instructions
Operation
OMASK
OINT
OINT
OINT
OINT

Variable Field
12,0,1,1
3000,0,21,1
3000,0,0,1
3000,0,0,1
3000,0,0,1

would resuit in c(image columns 21 through 28) :::: (b1b2b3b4)BCD
Note that the effect of the above example could be achieved (at more cost in space)
by the instructions:
Operation
OMASK
OINT
OMASK
OINT
OMASK
OINT
OMASK
OINT

07.02.24
5 (6/61)

Variable Field
12,0,1
3000,0,21,1
12,0,13
3000,0,0,1
12,0,25
3000,0,0,1
12,0,37
3000,0,0,1

A floating mask can also be applied to OBCC and OBCW.

For example, if

c(3000) = (ZZZZZA)BCD
c(3001) = (ZZZZZB)BCD
c(3002) = (ZZZZZC)BCD
then the execution of the instructions
Operation
OMASK
OBCC
OBCC
OBCC

Variable Field
36,0,31,1
3000,0,21,1
3000,0,0,1
3000,0,0,1

would result in c(image columns 21 through 23) = (ABC)BCD
OSPILL Y,T
This modal macro is used to establish a mode which relates to the six conversion
macros, and which has already been mentioned in the description of these macros.
When an instruction of the form OSPILL Y, T is executed, the OSPILL subroutine
computes and establishes the effective address Y -c(T). Later, control will be
transferred automatically to this established address in anyone of the situations
given below. The contents of the MQ at the time of the control transfer to location
Y -c(T) can be used to distinguish the different conditions.
Contents
ofMQ

Condition

°

OBCC Y, T, C, N or OBCW Y, T, C, N executed with N=O.

1

An OOCT AL, OBIN, or OINT instruction executed under control
of an OMASK instruction specifying a binary subfield extending
into more than one binary word (see description of OMASK).

2

OINT Y, T, C, N executed with N:>11.

3

OOCTAL Y, T, C, N executed with N:> 13.

4

OBIN Y, T, C, N executed with N> 36.

07.02.25
5 (6/61)

Contents
ofMQ

Condition

5

OFLOAT Y, T, C,N,K or OFXFLO Y, T, C,N,K,B executed
with N+K> 8.

6

OFLFIX Y, T, C, N, K executed with N+K > 16.

7

OFIX Y, T, C, N,K executed with N+K > 11.

8

OINT Y, T , C, N executed with N too small to accommodate
the converted number (see OINT).

9

OOCTAL Y, T, C, N executed with N too small to accommodate
the converted number (see OOCTAL).

*

10

OBIN Y, T, C, N executed with N too small to accommodate
the converted number (see OBIN).

11

OFLFIX Y, T, C, N, K executed with N too small to accommodate
the integral part of the converted result (see OFLFIX).

12

OFIX Y, T, C, N, K executed with N too small to accommodate
the integral part of the converted result (see OFIX).

13

An OFLOAT instruction executed which operated on a binary
floating point number that caused a floating point underflow
when normalized (see OFLOAT).

14

An OFLFIX instruction executed which operated on a binary

floating point number that caused a floating point underflow
when normalized (see OFLFIX).

15

The execution of an OFLOAT or OFXFLO instruction gives
a converted result with a decimal exponent greater than 999
in absolute value (see OFLOAT).
(Note below the exception in this case with respect to the
column counter. )

16

OFIX Y, T, C, N, K executed, which operated on a fixed point
binary number whose value A, considering the binary point as
defined by the current OPOINT mode and including the effect
of a possible decimal scale factor introduced by OSCALE, is
such that A x 10K > 2 35
-1. (See OFIX. )

* With the IB Monitor,
07.02.26
5 (6/61)

when N + K

>

8.

With the exception of the case where c(MQ) = 15, the execution of a conversion
macro-instruction leading to anyone of the above types of OSPILL control,
transfer will not cause any change in the contents of the column counter or of
the record image.
However, if the execution of OFLOAT Y, T, C, N, K leads to an OSPILL transfer
with c(MQ) = 15, then the OFLOAT subroutine, before transferring control, will
first store the principal part (omitting the exponent part) of the converted result
in the specified image subfield. Then the column counter is increased by either
N+l (K=O) or N+K+2 (K =1= 0), the length of the principal part. ThUS, the contents
of the column counter will be the number of the column where the exponent part
would have commenced if it had not been too large.
The normal mode associated with OSPILL is a transfer to an address inside the
SOS program. The routine beginning at this location causes printing of a
message, on the debugging output unit, describing where the error occurred
and giving the contents of the MQ and AC for analysis. *
It is possible to return to the object program when an OSPILL error occurs,
by setting the OSPILL mode to the location of a section of coding which terminates
with a TRA SYSOTI. ** This will returncontrol to the main program at the location
immediately following the macro which caused the error condition.
Normally, the field specified by the macro that spilled will be filled with Xs.
If Xs are not desired, a non -zero value should be placed in the decrement of
SYSOTI before transferring to it. This will advance the column counter beyond
the field without inserting anything.
At the time of the spill, the registers contain:
AC
MQ

decrement: column counter
address: location of macro causing spill
type of spill

Analysis, after the spill, can be made before returning to the object program,
but an Output macro cannot be used. The use of such a macro would destroy
preset conditions within OUTRAN and a later return via SYSOTI would fail.

*

When used with the IB MOnitor, the normal mode of OSPILL is a recognizable stop.

**This error return feature is not available when using the IB Monitor.

07.02.27
5 (6/61)

OPOINT Y, T
This modal macro applies only to OFIX and OFXFLO and is used to define, by
means of the literal value Y -c(T), the position of the binary point in any fixed
point binary number processed by a later OFIX or OFXFLO instruction.
Example:
Suppose that c(index register 4) = 3 when the following instruction is executed:
Operation

Variable Field
35,4

OPOINT

Then, until a new OPOINT mode is established, any binary word converted by
a subsequent OFIX or OFXFLO instruction would be treated as though its binary
pOint were placed between positions 32 and 33. Thus, the 36-bit binary string
(000 000 000 034)8 would be regarded as representing the number (11. 100)2 =
(3.5)10'
The B-parameter* of an OFIX or OFXFLO instruction is additive to the current
OPOINT value. Thus when an OPOINT 10 is followed by the instruction
Operation

Variable Field

OFIX

DAT A, , , , , 25

the B value of 25 to be added (algebraically) to the OPOINT value of 10, making
the effective location of the binary point to be to the right of bit position 35.
The normal mode for OPOINT defines the binary pOint as being between bit
positions 0 and 1. Thus, the execution of OPOINT 0 or OUTRAN causes all
fixed point numbers to be treated as proper fractions.
The speCification of a negative value Y -c(T); e. g., OPOINT -2; is allowable and
will be properly interpreted.
OSCALE Y,T
The execution of this modal macro-instruction defines a decimal scale factor lOS,
where S is specified literally by the value Y -c(T). This scale factor is applied to
all decimal numbers resulting from execution of any OFLOAT, OFIX, OFLFIX,
or OFXFLO instruction, until a new OSCALE mode is established.

* With the IB Monitor,

07.02.28
5 (6/61)

the B-parameter is not recognized.

Example:
Suppose c(index register 4) = 1 when the following instruction is executed:
Operation

Variable Field
6,4

Then the scale factor 105 is established. Then, if an OFLOAT instruction is
executed which would normally produce the BCD string b123-01, the string
b123+04 would be produced instead..
The normal mode for OSCALE is the scale factor 10 0 = 1. This is, of course
equivalent to applying no scale factor at all.
The specification of a negative power of 10 (e. g., OSCALE -2) is allowable.
OZERO Y, T
This modal macro applies only to the execution of OINT, OF LOAT , OFLFIX,
OFXFLO and OFIX instructions. It provides a means for controlling the manner
of representing results when they are zero.
There are only two modes possible for OZERO: the normal mode and the nonnormal mode, specified respectively by a zero and a non-zero value for Y-c (T).
For the normal mode, the following rules hold:
1.

When an OINT, OFLFIX, or OFIX instruction is executed and the decimal
digits in the converted result are all zeros, the resulting BCD string which
is stored in the record image will consist of either bO (if the sign is plus) or
-0 (if the sign is minus) in the two rightmost BCD positions. Blanks occupy
all other positions.

2.

If an OFLOAT or OFXFLO instruction is executed with c(Y-c(T»9_35=
(000 000 000)8 (i. e., if the binary number being processed has a zero

mantissa) then, regardless of the mode of OSCALE, the resulting BCD
string which is stored in the record image will be either bO+OO (if the
number is positive) or -0+00 (if the number is negative) in the five rightmost character positions. Blanks will occupy all other positions.
For the non -normal mode, the following rules hold:
1.

Same as rule 1 above except that, if the number is positive, the string will
consist entirely of blank characters.

07.02.29
5 (6/61)

2.

Same as rule' 2. above except that, if the number is positive, the string
(including the positions in the exponent part) will consist entirely of
blank characters.

Note that the rules for determining the number of characters stored in the record
image and the consequent amount by which the column counter is increased still
hold, regardless of the OZERO mode and whether the converted result is zero.
Thus, if c(3000) = (0'00 600 000 000)8' and if the OZERO mode is normal, then
the execution of
Operation

Variable Field

OF LOAT
would result in

3000,0,21,5,3

c(image columns 21 through 33) =(bbbbbbbbbO+OO)BCD
c(column counter) = (34)10'

OOVPCH Y,T,C
This macro, which applies only to OINT, OFLOAT, OFLFIX, OFXFLO, and
OFIX instructions, can be used to cause the "overpunching" of signs in the
decimal number representation resulting from the execution of any of these instructions. Ordinarily, OOVPCH, if employed at all, will be used only in the
construction of record images which are to be punched into cards.
In the g.eneral form OOVPCH Y, T , C the C-value· must be either 1 or 2.
1.

OOVPCH Y, T, 1
When an instruction of the form OOVPCH Y, T, 1 is executed, the OOVPCH
subroutine computes and establishes the literal value Y -c(T). Subsequent
to this, any BCD character string resulting from the execution of an OINT,
OF LOAT , OFLFIX, OFXFLO, or OFIX instruction will be altered as
follows before being stored in the record image:
The sign character of the number (in the case of OFLOAT and OFXFLO,
the sign character of the principal part of the number), will be removed
from the string and combined with (in the sense of overpunching) the nth
character of· the resulting string where n = Y-c(T). The character with
which the sign is combined must be an actual numeric' character, not a
decimal point or a blank character resulting from a suppressed: zero, although such non-numeric characters are included in the count. Thus the
length of the character string, and consequently the. length o:f the image
subfield used, is reduced by 1 from the-lengths as previously stated.

07.02.30
5 (6/61)

For example, suppose that the following OOVPCH mode has been given:
Operation

Variable Field
7,0,1

OOVPCH

Then, if c(3000) is such that the subsequently executed instruction
OFLFIX 3000,0,21,3,3 would normally cause
c(image columns 21 through 28)= (bbblo 250)BCD
c(column counter) = (29)10
the result which would be produced instead, be.cause of the given OOVPCH
mode, would be:
+
c(image columns 21 through 27) = (bbl. 250)BCD

c(column counter) = (28)10.
Note that + overpunch is not suppressed, but actually appears as the conventional 12-punch combined with the numeric character.
2.

OOVPCH Y, T, 2
A macro-instruction of this form applies only to OFLOAT and OFXFLO
instructions and is used to cause overpunching with respect to the exponent
part of the number only. However, .since the exponent sign also plays the
role of a separator its removal is accompanied by the insertion of the
character E in its place. Hence, unlike the case C = 1, there is no reduction
in the number of character positions used. The position Y -c(T) in this case
is counted beginning in the first numeric position of the exponent part. Of
course, since the exponent can consist of at most three numeric characters,
the value' of Y -c(T) is restricted to 1,2, or 3.
Example~

Thus, if the 'result of an aFLOAT instruction is normally, say, "-125-01",
then the use ,of the non -normal mode
Operation

Variable Field
2,0,2

would produce the- result -l25EOJ (1. e., -125E'()I) instead.

07.CJ2.31
5(6/61)

The normal mode associated with OOVPCH for both types (C = 1 and 2) is no
overpunching. Both can be simultaneously set to normal by using the instruction
OOVPCH or OUTRAN. Either can be set independently to normal by using
OOVPCH 0,0, C with C = 1 or 2.

°

OEOR Y,T,C
When an instruction of the form OEOR Y, T, C is executed, the OEOR subroutine
compues and establishes the effective address Y-c(T) and saves the specified
C-value. Later, if a conversion macro-instruction or an OBCC, OBCW, or
OBLANK instruction is executed and specifies an image subfield in which the
number of the rightmost column exceeds this saved C-value, then control will
be transferred to the address Y-c(T).
For example, if the instruction
Operation
OEOR

Variable Field
5000,0,72

has been executed, then the execution of the instruction

Operation
OBCC

Variable Field
3000,0,71,3

would cause a transfer of control to location 5000.
After the attempted execution of a macro-instruction which leads to an OEOR
transfer of control, the contents of the column counter will in general be meaningless. In some cases the contents of the illegal image subfield specified by the
instruction will have been changed by the attempted execution.
The normal mode associated with OEOR * is a transfer of control whenever the
rightmost column of the specified image subfield exceeds 120. The transfer
will be to a location within the SOS program. where a message will be written
on the debugging output unit indicating in which macro the error occurred.
ORPT R,I,J
This special control macro can be used to repeat the execution of any active
internal processing macro-instruction, i. e., of any conversion macro-instruction
or OBCC, OBCW, or OBLANK instruction.

* With the IB Monitor,

07.02.32
5 (6/61)

the normal mode of OEOR leads to a recognizable stop.

When an instruction of the form ORPT R, I, J is executed, the first active internal
processing macro-instruction which is executed thereafter will be executed a
total of R times (instead of only once), the first time using the Y, T, and C fields
as specified, the second time with Y increased by I, and C increased by J; etc.
Note that if the macro-instruction which is repeated uses indirect addressing,
it is the direct address, Y, and not the indirect address, c(Y)21-35' which is
increased by I.
For example, the execution of the two instructions
Operation
ORPT

OBCC

Variable Field
5,1,6
3000,0,21,2

is equivalent to the execution of the five instructions
Operation

OBCC
OBCC
OBCC
OBCC
OBCC

Variable Field
3000,0,21,2
3001,0,27,2
3002,0,33,2
3003,0,39,2
3004,0,45,2

In ORPT R, I, J; the value of R must be non-zero. The specification of a negative
value for I or J (e. g., ORPT 5, -1, -6) is allowable and will have the effect of
decreasing the value of Y and C, respectively, in the subsequent repeated
executions of the active macro-instruction.

07.02.33
5 (6/61)

THE WRITE-OUT MACROS
The following six macros are concerned with the write -out stage.
two are active macros and the last four are modal macros.

The first

OSCRIB Y, T, C, N (SHARE Monitor System)*
OSCRIB is used to initiate writing of a tape record, a printed line, or a punched
card.
Y -c(T) specifies the location of a cell whose address contains the standard
709/7090 code for the desired output unit. C is used to specify the number of
words to be transmitted from the I-region. N makes possible the distinction
between the eight modes of possible output (see Table 1).
Function

709/7090 Unit Code
(octal)

Required
N

STH

Storage to BCD tape

X201 through X210

STHB

STHP

C

W

0

C=O
C~O

W = 14
W= C

X221 through X230
Storage to Binary tape BCD for
columnar binary punching offline. (Results in Hollerith cards)
cards)

3

ineffective

24

Storage to BCD tape. CalTiage
control by OHEAD and OSPACE
(for off-line printing)

X201 through X210

1

C=O
C$ 20
C> 20

W= 20
W= C
W= 20

STB

Storage to Binary tape

X221 through X230

2

ineffective

28

SPH

Storage to on-line printer
(First character in buffer
is for cartiage control)

Y361 (SYSPRT)

0

C=O
C$20
C> 20

W= 20
W= C
W = 20

Y361 (SYSPRT)

1

C=O
CS 20
C> 20

W = 20
W=C
W = 20

MODE

SPHP

Storage to on-line printer
. (Carriage control by OHEAD
and OSPACE)

SCH

Storage to on-line punch
(BCD)

Y341 (SYSPCH)

0

ine ffe cti ve

12

SCB

Storage to on-line punch
(Columnar binary)

Y341 (SYSPCH)

1

ineffe cti ve

24

Notes:
X and Yare the channel numbers required. A programmer need not be concerned with the numbers
if symbolic tape references are used.
W is the number of words, ,in the I-region, that are actually used.
If the 709/7090 code given is not acceptable, or if W is too large, an error condiction occurs.
This is controlled by OREDUN.

* See page 07.02.40 for

07.02.34
5 (t)/61)

description of OS CRIB for IB Monitor System.

Output Modes
STH :Tape - BCD-Normal
The first W words in the I-region (see Table 1) are written on tape as a BCD
record.
If W is more than 28 words, then the standard I-region cannot be used, and a
larger I -region must be defined by means of OIMAG E.

This type of output is usually used for off-line Hollerith card punching, or for
off-line printing under single space or double space control. To punch a full
80-column card, W should be 14, in which case the last four characters are
not relevant.
STHB: Tape-Binary-Hollerith Image
The first 12 words in the current buffer are converted from BCD to a 24-word
column binary image and written on tape as a binary record.
This type of output allows the off-line punching of Hollerith cards with the offline punch in the binary mode. Thus, mixed information (BCD and binary)
can be punched from the same tape with one setting of the punch control switch
(binary mode).
STHP:Tape-BCD-Special
This type of output is used for off-line printing with the printer Carriage Control
switch set to Program.
The first W words in the I-region are shifted right one character (6 bits), and
a spacing character is inserted in the first position. If W = 20, the last character
is lost. If W < 20, then W+1 words are transmitted, and the last 5 characters
are blanks.
For other than standard single spacing, OSPACE can be used to control spacing.
Headings and line counts can be controlled by OHEAD.
Automatic page overflow does not take place; however, OHEAD can be used to
control page overflow.
STB :Tape - Binary
The first 28 words in the I-region are written on tape as a binary record.

07.02.35
5 (6/61)

This is normally used to punch column binary cards off-line. *
S PH: Print-on -line.
The first W BCD words in the current buffer (II or 12 ) are printed on-line
(except the first character in the buffer - see below).
If W is 12 or less, a 72-character line will be printed (any trailing characters

beyond W up to character 72 will be automatically blank).
If W is greater than 12, a 120-character line will be printed.

Note that the
speed of printing for 120-character lines is 75 lines per minute, and that the
OSCRIB routine must wait a full print cycle for the printing of the right hand
portion of the line.
The first character of the buffer is assumed to be for carriage control. (See
IBM 700-7000 Series Auxiliary Operations manual, form A22-6502.) It should
be placed there by the programmer for his own spacing requirements. Since
the first character is for carriage control, the maximum number of BCD
characters that can be printed on line is 119, not 120.
SPHP:Print-on-line-Special
The first W BCD words in the current buffer are printed on-line.
The type of line to be printed is similar to that described above for the SPH mode.
However, in this mode, the first character is a spacing character placed there
by the OHEAD or OSPACE routines. All other characters are moved one character
space to the right so that only (6*W)-1 characters will be printed; the maximum
for one line being 119 characters.
For other than standard single .spacing, OSPACE can be used to control spacing.
Headings and line counts can be controlled by "OHEAD. "
SCH :Punch-Hollerith
The first 12 BCD words in the I-region are punched on-line as the first 72-columns
of a Hollerith card.

* The first column should contain 7- and 9-punches,

07.02.36
5 (6/61)

which must be supplied by the programmer.

SCB:Punch Binary
The first 24 words of the current buffer are converted from row binary to column
binary form and punched on-line in the first 72 columns on a card.
The OSCRIB routine will not automatically insert the characteristic 7 - and 9punches into the column binary card. They must be supplied, if desired, by
the programmer.
Special Conditions
A special condition can occur during the execution of an OSCRIB instruction.
In this case, instead of returning control to the instruction follOwing the OSCRIB
instruction, control is transferred to a speCial location.
Transfer of control might occur to the location specified by OHEAD, if effective.
If an end-of-tape mark is encountered, or an error condition occurs, control is
transferred to a standard error message routine, or to the location speCified by
OTPEND or OREDUN, respectively, if they are effective. The MQ and AC will
in general contain some pertinent information. Transmission of the current
record mayor may not take place. Table 2 gives a summary of the different
special conditions that can occur.

SPECIAL CONDITION
Headings
End-of- Tape CTUNIT =
CTUNIT f.
Mark
Redundancy CTUNIT =
qUNIT /:
Error
I-Region Too Small
Unit Not Assigned
Illegal N or Unit Name

07.02.37
5 (6/61)

PTUNIT
PTUNlT
PTUNIT
PTUNIT

Modal Macro
Effective
OHEAD
OTPEND
OTPEND
ORFDUN
OREDUN
OREDUN
OREDUN
ORFDUN

Does Transmission
Take Place?
NO
NO
YES
NO
YES
NO
NO
NO

MQ
Accumulator
Register Decrement Address

0
0

1
2
3

CUNIT
CUNIT
CUNIT
CUNIT

llc
CUNIT
CUNIT

CUNIT
PUNIT
PUNIT
PUNIT
PUNIT
CUNIT
PUNIT
PUNIT

CUNIT and PUNIT are the standard machine codes for the current and previous
transmission units, respectively. CTUNIT and PTUNIT mean the current and
previous tape units, respectively, regardless of mode (BCD or Binary). When
there is no previous transmission PUNIT = O. b:.c is the difference between W
for the OS CRIB instruction and the actual size of the I -region.
Headings.
This applies only when current output type is Print-on-line (SPHP) or TapeBCD-Special (STHP) and the current mode of OHEAD is non-normal. Whenever
the nU1nber of lines, including spaces, that have been transmitted is equal to
or gr~ater than the number specified by the OHEAD mode, then control is transferred! to the location specified by the OHEAD mode. Transmission does not
take place.
End-of-Tape Mark.
Whenever the previous transmission involved a tape, then, during the execution
of the current OS CRIB instruction, the transmission which was initiated by the
last OSCRIB instruction is tested for end of tape. If an end-of-tape condition
occurred, control is transferred to the location determined by the current mode
of OTPEND.
Transmission does not take place if the current and previous tape units are the
same. If the tape units are different, the current transmission is initiate

~

This card is used with a SQUOZE deck when it is desired to list a program. The
LS card is used with SQUOZE decks which do not include symbolic modifications.
The listing produced is identical with the one prepared when the SQUOZE deck
was punched.
If the SQUOZE deck to be listed is in row binary form, this card must contain
"RB-" in columns 16-17. If the deck is columnar binary, columns 16-17 are left
blank.

*This is a Compiler pseudo-instruction, rather than an
card, and is only included here for convenience.

08.02.03

3 (1/61)

m Monitor control

LIST

~IST
I
SYMBOL

:I
OPERATION: ADDRESS, TAG, DECREMENT I COUNT

I

~

REMARKS

LABEL

I

0 0 0 0 0 00000000
mO
°000000 II 0000100000000000000000000000000000000000000000000000 0 0 IS0 Ii0 &70 &1"101112
1314151&7J117S1O
, 2 3 4 S 6 1\' S 10 111213141SI161118 192021222324 2S 2121 28 29 303132 33 34 3S 36 37 3139404142 43 44 4S46 47 4849 SO SI S2S3S4SS SlS7 SI 5S60 &1 52&3

:r

tIll 1 1 1111111111111111111111111111111111111111111111111111111111111111111 11111111

:;u

&4

The LIST card will also cause a program listing to be prepared.
from LS in the follOwing ways:

VI
~

LIST differs

1.

LIST does not require, as does LS, that the SQUOZE deck to be listed not
include symbolic modifications.

2.

The listing will be of the type prepared by the debugging macro-instruction
CORE since, in fact, CORE is used to list the program. Thus, the listing
produced by a LIST will be little more than a symbolic storage dump.

PS

~~

.....

SYMBOL

1
I

,

OPERATION I ADDRESS, TAG, DECREMENT I COUNT

I

~

REMARKS

LABEL

:

0000000 I 000000:000000000000000000000000000000000000000000000 0 0 0 0 0 0 pOD 00000000000

rn,t 11111
, · · · 111, · """"'"
,,,,,,,,,,,.,, "" ... ;,. .. """ ".. "..... "". "...... """" .. "... "....... oro" "I""'" n . :r
1 I 1111111111111 1 1 11 11111111111111111111111111111111111111.1111111111111111
VI
~

:;u

The PS card is used to cause punching of a new SQUOZE deck. In order to punch
a new SQUOZE deck, symbolic modifications must be included. However, this
requirement may be fulfilled by inserting a MOD and an ENDMOD card (see
below) in the SQUOZE deck. When a new deck is punched a new listing of the
program is prepared.
Columns 16-17 and 18-19 are also punched with "RB" when input and/or on-line
output, respectively, are to be in row binary form. If input and/or output are
to be columnar binary the appropriate pair of columns is left blank. Thus, if:
columns 16-19 contain:
RBRB
RBbb
bbRB
bbbb
where "b" represents a blank.

08. 02. 04
3 (1/61)

input is:

and output will be:

row binary
row binary
columnar binary
columnar binary

row binary
columnar binary
row binary
columnar binary

PA

f
I

I

OOOIl
I

rn

I
I

OPERATION:I ADDRESS, TAG, DECREMENT I COUNT

SYMBOL

to

REMARKS

LABEL

I

o0 0 0 0 0 0 0 0:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000000

(I)

2 3 4 5 , II' '181112131415\'611'8'9102'2223242526212129303' 32113435 3631 J839484142434445464~4I49585152535455565151596861&2636465H6161ct1811 12 1314151611111910 %

t 1 1111

J>

1111111111111111111111111111111111111111111111111111111111111111111 11111111 ::u

The PA card indicates that an absolute binary deck is to be prepared from the
SQUOZE input deck. The SQUOZE deck mayor may not contain symbolic
modifications.
Columns 16-17 and 18-19 are also punched "RB" when input and on-line output,
respectively are to be in row binary form. If input and/or on -line output are to
be columnar binary, the appropriate pair of columns is left blank. Thus, if:
columns 16-19 contain:
RBRB
RBbb
bbRB
bbbb

input is:

and output will be:

row binary
row binary
columnar binary
columnar binary

row binary
columnar binary
row binary
columnar binary

where "b" represents a blank.

LG

SYMBOL

....G
I

I

I

\

OPERATION: ADDRESS, TAG, DECREMENT I COUNT---.

I

R£MARKS

LABEL

I

0 0 0 0 0 O~O 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000000
~OOOOOO 00
1 910 1112131415;'.11111910212223241526t12829JOJl J2JJJ4J536Jll8J940tl t24J44454641484958515253545556515859686162636465666161691DI112 13141516111119.
I 2 3 4 5 611

(I)

%

J>

111111111111111111111111111111111111111111111111111111111111111111 11111111 ::u
1111111
1
.
.

This card indicates that the SQUOZE input is to be converted to absolute in
preparation for listing (by LIST) or for execution. The absolute form of the
program is written on tape B1 in n+1 files, where n TCD instructions are present
in the program. These sections are written as the first, second, ... , n+ 1th
files. The first n of these files are terminated by a TeD instruction and the
n+lth file by an END (which, is required to be present). Thus, if no TCD
instructions are used in the program, there will be only one file written on tape.
(The subsequent use of the tape files written by LG is included with the descriptions
of the DS1 and GO cards.)

H the SQUOZE input deck is in row binary form, this card must contain "RB"
in columns 16-17. If the deck is columnar binary, columns 16-17 are left blank.

08.02.05
5 (6/61)

MOD
I

I

I
SYMBOL

I

OPERATION: ADDRESS, TAG, DECREMENT I COUNT

II

REMARKS

LABEL

I

o0 0 0 0 0 0 0 0 0 0 0 aola aaaa0 a0 aa0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 aaDO 8 0 0 a
2345'1 ••

~"n"u"~"~"a~~nHaavn~M~nn~~~D»H~~QO~~"~.U~~U~~~ ~U~~.~~~M

•• ~ ••

~nnnu~~nnn.

CII

%

11111111111111111111111111111111111111111111111111111111111111111111111111111111 ~

This card is used to indicate the start of symbolic modification cards. (It is
never listed. )

ENDMOD

SYMBOL

r

D

I I I I
OPERATION: ADDRESS, TAG, DECREMENT I
I II :I

COUNT

~

REMARKS

LABEL

100
I 00000000000100000000000000000000000000080000000000088000808080008808008800000
•• ••
23451
1.'""n"u"~"""a~nnN~ann~~~nn~~.D~~~~~~~~"~.U~~U"~~~U~~.~R~M

~

CII

~nnnM~~n~~. %

•

,11111 1 1 1 1 1 1 1 1 111 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 I I I I I 1 I 1 1 1 1 1 1 1 1 1 1 :u

ENDMOD indicates the end of symbolic modification cards for a given program.

DS1
S1

I

SYMBOL

f

I

OPERATION: ADDRESS, TAG, DECREMENT I C O U N T .

REMARKS

LABEL

II

E""'" .. "......,. ". """"" ....... "... "." ..."""." ...... , ..... , .........."...""" .... , ... •
00000001000000100000000000000000000000000000000000000000000008000880008001180000

CII
%

, III t 1111111111!11111111111111111111111111111111111111111111111111111111111111111 :u

This card indicates that data sentences (see Chapter 8, Section 07) follow, and
will cause the data sentence to be written in absolute on tape BI, following the
absolute form of the program, as files n+2, n+3, ... ,n+m, where m is the number
of data sentences. If errors are detected in the data sentences, error messages
will be printed.

GO

r'
I

I

SYMBOL

I

OPERATION: ADDRESS, TAG, DECREMENT I C O U N T .

I

REMARKS

m'o··,T·".""" . 'DID... "aDo. 0."""" """" •• "••••• ". n."" ........... " ." ••• " ••• "." ....... .,,,,
000000000000

LABEL

I

0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 0 00000000

CII

lJl4nlllllln .. %

•

-11111111111111111111111111111111111111111111111111111111111111111111111111 11111111 :u

This card causes the debugging system to be loaded into core storage below location
(3000)10 and file 1 from tape Bl to be loaded into the locations assigned to the instructions in the record. Control is then transferred to the location specified by
the TeD or END card of file 1.
08.02.06
5 (6/61)

PAUSE

SYMBOL

AUSE

:

I

I

!

I

OPERATION: ADDRESS, TAG, DECREMENT I COUNT

I

~

REMARKS

LABEL

I

00000 0 0 0 II 0 00 oio 0 • 8 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 000 000 000 0 0 0 0 0 0 0 0 0 0 0 8 DO 00 0 8 0 0 • 8 0 0 0 0 0 8 0 0 0 0.0 0 0 0

en

23.511.t~"n~U~~"R".~nnH~.n

%

••• ~u»~~»»»B.U~u~~.uau~~u~~ •• D••• ~uaMa.~ •• ~nnnu~~nnn.

,11111111111111111111111111111111111111111111111111111111111111111111111111111111 ~

PAUSE causes a halt in such a way that processing can be continued by depressing
the Start key.

STOP
STOP

I

I
I

OPERATION: ADDRESS, TAG, DECREMENT I COUNT

SYMBOL

III

II

~

REMARKS

LABEL

I

oII 0 • 8 0 0 .:••••• I • 0 0 ••• I 0 I • I 0 8 8 • 8 0 0 I 0 8 8 0 0 0 8 0 8 • 0 0 0 ••••• 0 0 0 I 8 0 •• 0 0 0 8 0 0 00000000

en

%
2 3 II
• 5D
I 1. til" 12 11M 151""" ".IIDDMI5." ••• 31 J2» ~35 »31.31 ••1.2.3~~ ••'.U.51 U53~ •• 5' ••• lIaal4 •• 'I •• 1I11 n 73'.15~nnn. 10
t 1111 1 1 1 1 1 1 1 1 111 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 11111111 :u

A STOP card causes a final halt, i. e., depressing the Start key will not continue
processing. The card also causes an end-of-file mark to be written on the
output tapes, if any, and the tapes to be rewound.

08.02.07
3 (1/61)

m

MONITOR

CHAPTER 3: JOB DECK ARRANGEMENT
As stated in Chapter 1, there are five types of processing which may be selected
by m Monitor Control Cards. These are:
A.
B.
C.
D.
E.

Compilation
List
Punch a new SQUOZE deck
Punch an absolute binary deck
Execution

The arrangement and content of job decks for each of these types of processing
is basically the same, and is given below.
1.

JOB card

2.

Pre-processing control card:

3.

a.

CPL, CPLRB - input is a symbolic deck.

b.

LS - a SQUOZE input deck is to be listed.

c.

PS - a new SQUOZE deck is to be punched.

d.

P A - an absolute binary deck is to be punched.

e.

LG - a SQUOZE deck is to be loaded for execution or for listing by
means of LIST.

Input deck
a.

If the preceding card is CPL or CPLRB this is a symbolic deck. SQUOZE
decks without modification may be included, but such decks must be
preceded by either an SQZ (or SQZ RB) card. Alternatively, this type
of job deck may be loaded in the following way:
(1) All cards, except row binary SQUOZE decks, may be entered from
tape. The SQZ (or SQZ RB) control card is included at the appropriate
points in the symbolic program on tape. If columnar binary decks are
to be entered from tape, they must appear where they are to be
incorporated.

08.03.01
3 (1/61)

(2) The row binary SQUOZE decks and, if desired, columnar binary
SQUOZE decks to be incorporated into the program, are stacked
in the card reader in the order in which they are used in the program.
For example, the arrangement of the input tape would be:
JOB
CPL

}

symbolic cards

}

symbolic cards

}

symbolic cards

SQZ

SQZ RB

END
Blank card

The two SQUOZE decks to be incorporated into the program would be
entered from the card reader. The columnar binary deck must, of course,
be the first in the card reader and must be followed by one in row binary.
The columnar binary SQUOZE deck may also be written on tape following
the SQZ card and only the row binary deck read from cards.
b.

In all other cases, this is a SQUOZE deck. Modification cards may be
included in the deck. These cards must be preceded by a MOD card,
followed by an ENDMOD card, and then inserted immediately preceding
the blank card in the SQUOZE deck.
Modifications must be included, if the preceding control card is PS.
However, this requirement is satisfied by the presence of a MOD and an
ENDMOD card.
Modifications may .llQt be included if the preceding card is LS. In all other
cases, modifications are optional.

4.

Blank card (required with CPL and CPLRB; optional for all others).

5.

Data sentence deck, if desired. This deck may include any number of data
sentence blocks. Each data sentence block must be preceded by a DS1
card and followed by a blank card.

08.03.02
3 (1/61)

6.

Post Processing Package
a. GO - The program is to be executed. This may be followed by input
data if any.
b.

LIST - if the program is to be listed in the form of a symbolic core dump.

c.

PAUSE - if a halt is desired between jobs.

Operator Instructions
In addition to the job deck components listed above, a set of cards with operating
instructions (columns 8-13 of such cards must be blank), and a PAUSE card may
be inserted immediately following the JOB or DATE card. These cards will
cause printing of instructions for the operator and a pause while the instructions
are followed. Then, when the Start key is depressed processing will be continued.
STOP
A STOP card may be used to terminate input (i. e., a group of stacked jobs).

08.03.03
5 (6/61)

SHARE MONITOR
CHAPTER 1: INTRODUCTION
The SHARE Monitor operates as a three phase system. All jobs are processed
through one phase before going into the next phase.
In general, Phase 1 converts a stack of jobs, in the form of SQUOZE or symbolic
decks into machine language codes, and associated data packages into binary data.
The results of this conversion are stacked on a system intermediate tape.
Symbolic and SQUOZE decks may also be converted by Phase 1 into new or
revised SQUOZE decks, absolute decks, and listings. These are stacked on the
appropriate system peripheral output units.
Phase 2 executes each of the stack of job codes formed in Phase 1. For each
job the system assigns the required tapes, loads the necessary system input/output
routines, loads the code and executes it. Jobs using the Debugging System or
Output Editor write condensed binary output on a system intermediate tape.
Phase 3 converts the stacked output from Phase 2 and writes it on the appropriate
peripheral output units.
Conversion and Input/Output Routines
Routine

Usage

Compiler; Modify
and Load

Performs all conversion of symbolic and SQUOZE decks
during Phase 1.

Input Editor

Converts and edits data packages during Phase 1 if
requested by the programmer. The data package for
each job is placed immediately behind the symbolic or
SQUOZE deck. By using this routine, the programmer
avoids having to furnish his own routines and core storage
areas for editing of input data during execution of his job
in Phase 2.

Buffering Routines

These routines are in core storage and are available to the
programmer at all times. They must be used by an
execution job to read data packages processed through
Phase 1. They may also be used to read and write
programmer intermediate tapes.

09. 01. 01.
4 (3/61)

Transmission
Macro Routines

These routines are read into core storage just prior to the
execution of a job which specifies their use. They are
used to read and write programmer tapes.

INTRAN Routines;
OUTRAN Routines

These are brought into core storage just prior to the
execution of a job which specifies their use. They allow
the programmer to read, write, and edit information
using his own input or output units.
These routines occupy considerable core storage during
execution of a job. Therefore, if this space is required
for an object program, the Input and Output editors should
be used.

Debugging Routines

These routines are brought into core storage just prior
to the execution of a job which specifies their use. Information macros cause writing of condensed binary
output on a system intermediate tape. Debugging information for all jobs is converted to peripheral form in
Phase 3.

Output Editor Macro
Routines

These routines may always be used by the programmer
during execution of his job. The routines write editing
information and unedited output data on the same
intermediate tape used by the Debugging System. The
Output Editor itself is used by the system in Phase 3 to
edit and convert this information to peripheral form for
all jobs. Hence, no space is required for output editing
during execution of the job.

Tape Usage
The system normally uses the following tapes:
Phase
1

09.01. 02
4 (3/61)

Tape Name

Contents or Use

SYSPOT (Peripheral
Output Tape)

Listings converted from symbolic or
SQUOZE decks for all jobs.

SYSPPT (Peripheral
Punch Tape)

SQUOZE or converted Absolute decks from
Modify and Load or the Compiler for all jobs.

SYSES1
SYSES2

Erase tapes used by Modify and Load or the
Compiler.

Phase

2

Tape Name

Contents or Use

SYSPIT (Peripheral
Input Tape)

Original job decks.

SYSMIT

System intermediate tape.

SYSMOT

System intermediate tape.

SYSTAP

Contains all system components

SYSMIT

See above.

SYSMOT

See above.

SYSTAP

See above.

No peripheral tapes are assigned or used by the system during
Phase 2.
3

SYSDOT (Debugging
Contains converted debugging output for
Peripheral Output Tape) all jobs.
SYSPOT (Peripheral
Output Tape)

Contains edited and converted printed output
for all jobs using the Output Editor.

SYSPPT (Peripheral
Punch Tape)

Contains edited and converted punch
output for all jobs using the Output Editor.

SYSMIT

See above.

SYSMOT

See above.

SYSTAP

See above.

Non-standard system use:
1. The programmer may, if he desires, have his job executed in Phases 1 or 3
rather than in Phase 2. This will mean, of course, that fewer tapes are
available to him; however, it does allow the programmer to write directly
on the peripheral output units.
2. Special programmer tapes have names of the form SYSXRN or SYSXUN where
X and N are the channel letter and unit number respectively. Rand U denote
reserved Ilr utility tape.
09.01. 03
4 (3/61)

Such a symbolic tape name serves as a location symbol for a cell containing
the absolute tape address assigned to that symbolic tape. This absolute tape
address is in the address field of the cell and is always a decimal mode address.
Thus, to read tape SYSAR5 independent of system subroutines, in the binary
mode, the following sequence could be used.

09.01. 04
4 (3/61)

CLA
ORA
STA

SYSAR5
BIN
SEL

SEL

RDS

**

BIN

OCT

20

SHARE MONITOR
CHAPTER 2: CONTROL CARDS
Control cards provide a compact and flexible method of communication between
the programmer, the operator, and the system.
All SHARE Monitor control cards have the following common characteristics:
1. Column 1 contains 7-, 8-, and 9-punches to identify it as a control card.
2. The operation code of the control card is punched in the normal SCAT format,
i. e., beginning in column 8.
3. The variable field must be separated from the operation code by at least one
blank column, and must begin no later than column 16, i. e., in SCAT format.

4. If a normal case is defined for an item in the variable field of a control card
and this normal case meets the programmer's needs, it is not necessary to
punch the parameter in the control card. Parameters need be specified only
in situations which require other than the normal case. If the variable field
is entirely blank on a control card which has a normal case defined for all
items, the System will employ the normal case for all items.

Note: Only one comma should be inserted between the items actually punched
on the control card.
The following sections describe the control cards.
JOB
The JOB card must be the first card of any deck to be processed by the system,
since it serves to notify the system that a new job is about to commence.
JOB
where

09.02.01
4 (3/61)

JN,RN,MN,ET,EMO,EPO

JN = Job Number
RN = Run Number
MN = Man Number
ET = Estimated Running Time (Unit is O. 01 hrs. )
EMO = Estimated Mediary Output (Words)
EPO = Estimated Peripheral Output (Records)

The information contained in the variable field of the JOB card serves the following
purposes:
1. It causes the system to enter the Accounting Initiation routine.
2. The identifying information (job-, run-, and man-numbers) is passed along
from phase to phase to identify debugging and other peripheral output.
3. The estimated running time may be used by an Interval Trap routine or by
the operator to determine whether the obj ect program is using too much time
in the execution phase.
4. The estimates of mediary and peripheral output will enable the System to
discover and forestall such errors as excessive debugging output, etc.
Each installation may, with a minimum amount of modification to the Monitor,
specify its own parameters for the JOB card.
LOAD
The LOAD card follows the JOB card in the input deck and indicates that a
SQUOZE deck (with or without a modification package) is to follow. The card
furnishes all the required information as to which parts of the system will be
requi.red, when they will be required, and how they are to operate on the
associated SQUOZE deck.

where

LOAD

A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q

A =

+ for input with only commentary text
- for input with only non -commentary text
B for input with both SQUOZE texts
R for row binary input
C for columnar binary input
GOlF to execute if no errors
GO to execute if no definite error s
GOGOGO to execute provided the system was able to produce
an executable code.
NOGO to suppress execution
1-execute program in phase 1
2-execute program in phase 2
3-execute program in phase 3
SQZ to punch new SQUOZE deck
NOSQZ to suppress punching SQUOZE deck
+ to output only commentary text
- to output only non-commentary text
B to output both texts

=
=
B =
=
C =
=
=
=
D =
=
=
E =
=
F =
=
=

09.02.02
4 (3/61)

G =
H

J

=
=
=
=

=

N

=
=
=
=
=
=
=

P

=
=

K

L
M

=
Q

=
=

ABS to punch absolute deck
NOABS to suppress punching absolute deck
R for row binary output
C for columnar binary output
LIST to obtain listing
NOLIST to suppress listing
DICT to write a dictionary as part of the program listing
NODICT to suppress dictionary output
DEBUG to execute with the Debugging System
NOB UG to execute without the Debugging System
SS to use System Symbols
NS to suppress use of System Symbols
IN to execute with INTRAN
NOIN to execute without INTRAN
OUT to execute with OUTRAN
NOOUT to execute without OUTRAN
NOMAC to execute without Transmission macros
TRMAC to execute with Transmission macros

The normal case is:
LOAD B, C, GO, 2, NOSQZ, +, NOABS, C, NOLIST, DICT, DEBUG, SS, NOIN,
NOOUT, NOMAC
SCAT

The SCAT card informs the System that a symbolic deck to be compiled follows.
The card causes the presetting necessary to fulfill the demands of the various
parameters.
SCAT C, D, E, F, G, H,J, K, L, M, N, P, Q
(The parameters C through Q are as described above for the LOAD card).
The normal case is:
SCAT NOGO, 2, SQZ, +, NOABS, C, LIST, DIeT, DEBUG, SS, NOIN,
NOOUT, NOMAC
SINGLE TEXT SQUOZE DECKS
The options for single text output on both the SCAT card and the LOAD card,
and the options for single text input on the LOAD card, may be exercised. The
admissible parameter forms are as follows:

09. 02. 03
5 (6/61)

B = both texts are present or required.
= text with commentary only is present or required.
- = text without commentary only is present or required.

+

No difficulty should be experienced with single text output. Use of this option will
result in a SQUOZE deck which is numbered consecutively throughout, and has only
one text section. The Preface card will contain the correct text word counts.
Single text input may consist of either a double text deck, with one text section
manually removed; or a single text deck which was produced by a previous single
text output run. In the former case, the Preface card, which must not be changed
indicates that the SQUOZE deck is double text. The input parameter on the LOAD
card must correspond to the actual state of the deck. In the latter case, the Preface
card describes the deck completely and the input parameter on the LOAD card
is ignored.
The following points should be noted:
1. Single text output may be obtained from double text input and vice versa. If,
however, single text input has only text without commentary, then the two
text sections of the double text. output will, in the absence of modifications,

be identical.
2. The normal case for output is single text with. commentary. The normal case
for input is double text. A single text input deck will load without difficulty
even though double text input is specified or implied by the LOAD control card.
3. An absolute deck can be pWlched on the same run as single text SQUOZE deck.
4. Alter numbers and relative numbers are the same for text without commentary
as for the corresponding text with commentary. Thus, for instance, it is
possible to load with modifications using only text without commentary and
referring alter numbers to a listing of text with commentary.
5. All operations previously possible with double text are possible with single
text.
IDENT
The IDENT card is used, if de~ired, in conjunction with a SCAT or LOAD card
and its associated deck. A and B, which are described below, are punched in the
9-right and 8-left word of the SQUOZE deck Preface card, and will appear in the
upper right-hand corner of each page of the listing, if a listing is requested. C
is punched in the stated columns of each card in the SQUOZE deck if the punchsequencing device is installed on the on-line card punch.
09.02.04
5 (6/61)

The IDENT card (if used) must be positioned between the JOB card and the SCAT
or LOAD card.
IDENT A,B,C
where

A is the first BCI word for the Preface
B is the second BCI word for the Preface
C is the BCI field for columns 73-76

(Note: Commas and blanks are illegal BCI characters in the above fields since
they serve as field terminators.)
Identification in the Preface card will follow the rules given below.
1. If an IDENT card exists, in a SCAT run, identification in the Preface comes
from the first two subfields of the IDENT card.
2. If no IDENT card exists, the identification is taken from the first and third
subfields of the JOB card. In a LOAD SQZ run the identification in the
Preface of the output deck will be the same as that of the input deck unless
an IDENT card is included whose first two subfields are non-zero or non-blank.
ASSIGN
The ASSIGN card causes a physical tape unit to be assigned to the symbolic reserve
tape and utility tape names referred to by a job. The ASSIGN cards would normally
be inserted in the input deck by a machine operator with knowledge concerning
available tapes. However, certain installations may desire that the programmer
know what physical tapes are available for his use. The ASSIGN card has the form:
ASSIGN

XN=SYSXZN

where:

x = A through

F, specifying a symbolic channel
N = 1 through 8, specifying a symbolic tape drive
Z = R for Reserved Tape assignment
Z = U for Utility Tape assigment

The assignment of utility and/or reserved tapes is accomplished by placing the
appropriate ASSIGN cards after the JOB card and before the LOAD or SCATcard of the job for which the assignment is to be effected.

09.02.05
4 (3/61)

Examples:

a.

ASSIGN

B5 = SYSBRI

This card assigns unit 5, channel B as symbolic tape SYSBRI for the
job with which this ASSIGN card is associated.

b.

ASSIGN

C2

= SYSAUI

The above card will assign physical unit 2, channel C for use in all
references to symbolic utility tape Al during the execution of the
object program.
At the conclusion of execution of the object program using the above ASSIGN
cards, tape drives B5 and C2 would be rewound by the System. and the
operator would be instructed as follows:
REMOVE

B5 = SYSBRI

Thus. remove messages are given only for reserved tapes.
DATA

The DATA control card causes the following cards (or records) on the system input
unit to be converted and/or transcribed on the specified tape unit in standard buffered
format during Phase 1. Data processed through Phase 1, whether edited or not,
must be read by the executing program using the Buffering routines SYSRTK
or SYSWTK.
If the programmer wishes the data to be converted and edited, the parameters of

the DATA card cause appropriate initialization prior to entry into the Input Editor
(see page 07. 03. 01) for conversion and transcription. If data is to be only transcribed on the specified tape unit, the Input Editor is not required. BCD records
are written as 12-word logical records and binary records are written as 24-word
logical records. A subsequent DATA control record causes an Logical End of
Group flag to be written; any other control record causes a Logical End flag to
be written on SYSMOT or an End of Logical Tape flag to be written on SYSXRN.
In the latter case, SYSXRN will be rewound and become unassigned.
The format of the DATA control card is:
DATA
where

09.02.06
4 (3/61)

A,B,C

A = EDIT if the Input Editor is to be used for conversion and transcription.

= NOEDIT if simple transcription is required.

B = GO to continue processing if bad data is encountered by the
Input Editor.
=

GOlF to discard the job if bad data is encountered.

C = SYSMOT if data is to be placed on the System Mediary Output
Tape.
= SYSXRN if data is to be placed on reserved tape

''X. "
The normal case is:
DATA EDIT, GOlF, SYSMOT

09.02.07
4 (3/61)

''N'' on channel

SHARE MONITOR
CHAPTER 3: INPUT DECK ARRANGEMENT
Owing to the ordered sequence in which the va rious components of the System
perform their functions on a given job, there are strict rules for the arrangement of the input deck. The first of these rules is that the JOB card must be
the first card in a deck. The JOB card may be followed by an IDENT card, and/or
ASSIGN cards. The next card must be either a LOAD or a SCAT control card,
depending upon the type of operation to be executed. The composition of the
remainder of the deck for each of these cases is described below:
A. LOAD control card
SQUOZE program deck (no blank card at end of SQUOZE deck)
Data package(s) (optional, see below)
B. SCAT control card
Symbolic deck (terminated by an END card)
Data package(s) (optional if 'GO" requested, see below)
Data packages may be for Input Editor translation (EDIT) or for mere transcription
(NOEDIT). Their arrangements are:
A. EDIT

DA T A control card
Blank card
Data cards
ENDA T A control card
Blank card
B. NOEDIT
DA T A control card
Data cards
Multiple data packages may be used at the positions of the input decks as noted
above, and in such a set, some can be EDIT packages while others are NOEDIT
packages.
Note: The above are all of the allowable sequences of cards in an input deck for
one job. Successive jobs are merely repetitions of these sequences.

09.03.01
4 (3/61)

SHARE MONITOR
CHAPTER 4: COMMUNICATION REGION TRANSFER POINTS AND ASSOCIATED
STANDARD ROUTINES
Transfer points are designed to allow the programmer three options in dealing
with errors discovered in the object program. Each transfer point consists of
two instructions within the Communication Region, the first of which is labeled
with a system symbol to which the programmer may refer. A transfer point
is of the form
SYSXYZ

TXH

TXL
where

** , , **

XYZ" 0

SYSXYZ is the reference system symbol
XYZ is the System routine normally entered.

The option desired by the programmer is exercised through modification of the
instruction at SYSXYZ. Under no circumstances may the instruction at SYSXYZ+l
be altered or replaced by the object program.
The options afforded the programmer are:
A. Execute the standard routine provided by the System with the return determined
by the System routine entered.
Method
If the first instruction is not preset by the programmer, the TXH at SYSXYZ

will fail. Entry will be made to the specified System routine via the
TXL at SYSXYZ +1.
B. Execute the standard routine provided by the System and return to the address
specified by the programmer.
Method
The decrement of SYSXYZ is preset by the object program with the special
return. After the standard System routine has been entered and executed,
control is transferred to the address specified in the decrement.

09.04.01
4 (3/61)

C. Execute a special routine provided in the object program.
Method
The instruction at SYSXYZ is replaced by a transfer to the object programs'
special routine.
D. Execute a special programmer routine followed by the System routine.
Method
The instruction at SYSXYZ is replaced by a transfer to the object program"s
special routine. This routine then transfers to. SYSXYZ+ 1 after performing
its own functions.
E. Execute a special programmer routine followed by the System routine but
making a return specified by the programmer.
Method
The instruction at SYSXYZ is replaced by an instruction such as TXL OWNl,
OWN2. Transfer to SYSXYZ causes entry to OWNl. After OWN1 is completed,
it transfers to SYSXYZ+1 to carry out the System routine. The System
routine then makes the special return to OWN2.
There are nine transfer points and associated standard routines which the programmer
may wish to use. Where applicable the setting of an error indication will result
in a message which will be part of the debugging output for the job.
A. SYSERR: The standard Unexpected Error routine provides a message on
SYSDOT saying 'THIS JOB HAS CAUSED A RETURN TO SYSERR FROM XXXX."
If no special return is given in the decrement of SYSERR, the system will
load SNAP into core and give a console scoop before returning to SYSTEM.
The console scoop is suppressed for special returns to avoid the possibility
of SNAP covering the obj ect code.
The calling sequence to SYSERR is:
TSX
SYSERR,4
No return normally
B. SYSBAD:
TSX
X
09.04.02
4 (3/61)

SYSBAD,4
TAPE,T, Y

where

X = PZE for read
= MZE for write
TAPE = location of tape unit address
T = 0 for BCD mode
= 7 for binary mode
Y = location of the beginning of the I/O table

The Bad Spot routine will reposition the tape and read or write the records
indicated in the object program's I/O list. If the routine is not able to
accomplish this without encountering a condition listed below, the tape will
be positioned as found and the program transfers to SYSTRC. That routine
prints the number of the unit which cannot be used successfully and transfers
back to the monitor to process the next job. The conditions which may cause
this are:
1. record or end-of-file cannot be written, five attempts have been made to do

so. Blank tape has been written prior to each attempt.
2. records in the I/O list cannot be read successfully. The tape was correctly
repositioned, but 10 attempts to re-read have resulted in redundancy.
3. in repositioning the tape from an ambiguous command list (see below),
the routine is not able to read the first five words without redundancy.
15 attempts have been made.
4. beginning-of-tape has been encountered while the routine is trying an extrabackspace and comparison of the 5 words (see below), in order to find
the correct position for re-reading.
5. the tape cannot be correctly repositioned although more than 25 extra records
have been backspaced and the first 5 words compared.
The I/O list is specifically restricted in that it may not contain more than 25
records with count type commands.
In writing a tape, there is no question about the number of records which must

be backspaced before another attempt can be made to write. Read commands,
unless they are exclusively 10RP or 10RT, force the Bad Spot routine to do a
special search. It backspaces the minimum number of records, reads the first
five words referred to in the command list and compares them to the first five
words which must have been read into storage. A match, or a match except for
a single bit, is recognized as a correct position for an attempt at re-reading.
Therefore, an IORP or IOSP at the beginning of the list must specify a word
count of at least 5, and refer to a tape record which contains five or more words.

09.04.03
4 (3/61)

The routine will not make the comparison unless the first five words, at least,
can be read without redundancy; up to 15 attempts will be made to read the first
five words of the record.
When the comparison shows that the tape is not yet in position, another backspace
is executed and the comparison made again. A beginning-of-tape encountered
at this stage will cause the routine to abandon the job after spaeing the tape
forward in order to leave it as found.
C. SYSTRC: The standard Tape Redundancy Check routine is entered by a
TSX SYSTRC, 4 with the symbolic name of the tape unit in index register 2.
An indication of the error is made in the problem status indicators and the
routine exits to SYSERR.
D. SYSIOC: The standard Input/Output Check routine is entered by a TSX SYSIOC, 4.
An indication of the error is made in the problem status indicators and the
routine exits to SYSERR.
E. SYSTDC: The standard Divide Check routine is entered by a TSX SYSTDC, 4.
Normally this routine goes to SYSERR after leaving an indication of the error.
F. SYSTUF: The standard Floating Point Underflow routine is entered when a
floating point underflow is trapped. The register in which underflow occurred
is set to zero and an error indication made. Return is normally to the object
program at the instruction following the one causing underflow.
G. SYSTOF: The standard Floating Point Overflow routine is entered when a
floating point overflow is trapped. Normally this rO'lttine exits to SYSERR
after leaving an indication of the error.
H. SYSTRP: The standard Transfer Trap routine is entered if ETM is executed
in a programmer's job and no entry to a programmer's routine has been placed
in location SYSTRP. The standard routine will create a message on the
debugging output unit indicating that no programmer routine was furnished
and will go on with the next job.
I. SYSSTR: A store location and trap instruction normally causes entry to the
Unexpected Error Routine SYSERR.

09.04.04
4 (3/61)

SHARE MONITOR
CHAPTER 5: EXECUTION COORDINATION UTILITY ROUTINES
Certain system routines are available to the programmer at execution time for
the purpose of performing standard operations. These routines are:
Routine

Name

Page

Comment Attached Printer

SYSCAP

09.05.02

Mediary Tape Loader

SYSMTL

09.05.03

09.05.01
4 (3/61)

TITLE:

COMMENT ATTACHED PRINTER: SYSCAP

PURPOSE:

SYSCAP may be used to print up to 12 words of information
in a single line on an on-line printer. The routine should
be used only for those messages to the operator which are
vital to the operation of a job.

CALLING SEQUENCE:

TSX

SYSCAP,4

X

L, ,N

return
where X =
=

L =
N=

PZE to force a skip to channel 2 of the
carriage control tape
MZE to suppress skipping
the location of the first BCI word to be printed
the number of BCI words to be printed

The N BCI words are converted into a line image and the
machine is delayed until the printer channel is free. The
comment is then transmitted to the printer.

09.05.02
4 (3/61)

TITLE:

MEDIARY TAPE LOADER: SYSMTL

PURPOSE:

SYSMTL may be used by the programmer to load a program
section, following a TCD card into core storage from
SYSMIT, the mediary input tape.

CALLING SEQUENCE:

TSX

SYSMTL,4
SYSMIT, ,R

X

where X =
=
R=
=

NOTES:

PZE to preset core to TSX SYSERR,4
suppress presetting
is the return address
o to use return on tape, i. e., the address
specified on the END or TCD card
l\!~~aro

Upon return, the sign of the accumulator is positive if
loading is terminated by a TCD card. The sign is negative
if loading is terminated by an END card. In either case,
the address of the END or TCD card may be found in
location SYSTRA.
SYSMTL assumes that SYSMIT is in correct logical
position.
To alternate program files or load them in other than
sequential order, the tape must be positioned properly
by use of the Buffering routines SYSBKS, SYSWTK,
and SYSRTK.

09.05.03
4 (3/61)

SHARE MONITOR
CHAPTER 6: AVAILABILITY OF MACHINE COMPONENTS
During Phase 2, the following machine components are available for use by
the programmer:
A. Core storage above the system origin, which is the location of the first cell
following those routines which must remain in core storage at all times, and
those special System routines requested by the programmer for use in the
execution of his job. This location is found in the address field of location
SYSORG. Unless specified by an ORG card in the program, code will be
automatically assigned above the system origin.
1. If INTRAN is requested, SYSORG will be at least 42,200 octal.

2. If OUTRAN is requested, SYSORG will be at least 26, 500 octal.
3. If the Transmission macros are requested, SYSORG will be at least 13,700

octal.
4. If, the Debugging System is requested, SYSORG will be at least 12, 600
octal.
5. If no System routines are requested SYSORG will be at least 10, 500 octal.

B. All drum units.
C. The on-line printer may only be used to print special operator instructions
by means of the System subroutine SYSCAP
D. All tapes except those designated as system tapes may be assigned as reserved
or utility tapes. The system tape SYSMIT may be read to:
1. Load sections of a program following a TCD card, with the aid of the
System Mediary Tape Loader, SYSMTL.
2. Load data converted by the System during Phase 1. In this case the Buffering
routines SYSRTK (the routine which reads a logical record) and SYSWTK
(the routine which reads a single word) are used.
During execution of a job's code in Phase 2 the following machine components are
not available to the programmer:

09.06.01
4 (3/61)

A. Core storage from decimal location 00000 through the system origin.
B. The three System tapes SYSMIT, SYSMOT, and SYSTAP except as noted
above.
C. Sense switches 1 through 6.
D. The MQ entry keys.

09.06.02
4 (3/61)

11
Accuracy

Correctness or freedom from error (as contrasted
with precision).

Address

1. A label, name, or number identifying a register,
location or unit where information is stored.
2.

Loosely, the address field of a machine word.

Alphameric

A generic term for alphabetic letters, numerical digits.

Assembly Program

A program to translate a routine written in a symbolic
machine language into absolute machine instructions,
and to assign machine storage for those instructions
and data.

11. 01. 01
5 (6/61)

BCD

Abbreviation for binary-coded-decimal.

Binary Cards

Cards containing up to twenty-three 36-bit binary
words together with an origin, a word count, and
an AC L checksum.

Binary Cards, Row

Binary cards in which successive bits are found by
reading columns 1-36 and 37-72, alternately, rowby-row starting with row 9.

Binary Cards, Column

Binary cards in which successive bits are found by
reading down the columns (starting with the leftmost,
column 1).

Blocking

The combining of two or more data or item records
into a tape record, or block.
By thus reducing the number of inter-record gaps on
tape, the acceleration or deceleration time per data
record is reduced, and the number of data records which
may be contained in a given length of tape is increased.

Block Length

The total number of words contained in one block.

Bootstrap

A technique or device designed to bring itself into a
desired position by means of its own effort, e. g. ,
a special machine routine to bring itself into the
computer from an input device.

Buffer

An area assigned for use as an intermediate storage
area for data to be transmitted between storage and
input/output devices.

11.02.01
5 (6/61)

Call

To transfer control to a subroutine by means of a
calling sequence.

Card Field

A fixed number of consecutive card columns assigned
to a unit of information, e. g., card columns 15-20
can be assigned to identification.

Calling Sequence

An instruction that (1) records its own location and
(2) transfers program-control to a closed subroutine,
together with as many locations as are necessary to
hold the information ("parameters" or "arguments")
needed by the subroutine.

Character

A decimal digit, alphabetic letter, or special symbol
such as $, %, etc.

Check

1.

Parity check - one type of redundancy check.

2. Redundancy check - use of summation bits and
redundant bits (check digits) to insure accuracy
of tape information.
Clear (Verb)

To erase the contents of a storage location or register
by replacing the contents with a pre-determined
character, such as zeros, ones, nines.

Closed Subroutine

A routine which is not inserted as a block of instructions
within a main routine but is entered by basic linkage
from the main routine.

Column Binary

A form of binary card punching in which the first word
on the card occupies columns 1-3 and, for a full card,
the last word occupies columns 70-72. Bits 0-11 of each
word go into positions 12-9 of the leftmost of the three
allotted columns, etc.

Compare

To examine the representation of two groups of characters
for the purpose of discovering relative magnitude.

Conditional Transfer

A transfer which occurs only when a certain condition
exists at the time control passes to the transfer instruction.

Control Card

A card which contains input data or parameter s for
a specific application of a general routine.

11.03.01
5 (6/61)

m
Dump

11. 04. 01
5 (6/61)

To copy the contents of part or all of some storage
medium onto another storage medium,e. g., to write
the contents of core storage on a peripheral output
tape through a translator.

Edit

To rearrange information for machine output or input.

Exponent

That portion of a floating point number which represents
an integral power.

11.05.01
5 (6/61)

II
Field

A set of one or more contiguous bits or characters
treated as a unit of information.

File

1. A collection of records, an organized collection
of information.
2. On tape, a sequence of records terminated by an
end-of-file mark and file gap.

Fixed Length Records

Records comprising a file in which every record is
the same length.

Flag

A field which serves as a signal to a processor.

Format

The predetermined arrangement of characters, fields,
lines, page numbers, punctuation marks, etc.

11. 06. 01
5 (6/61)

m
Grouping

11.07.01
5 (6/61)

Combining two or more records.

D
Initialization

Setting counters, switches, and instruction addresses
at specified times in a program.

Instruction

1.

Machine Instruction - An instruction directly
recognizable by a machine.

2. Symbolic Instruction - In an assembly language,
a group of symbols which can be translated directly
into a machine code, i. e., there is a correspondence
(usually one-to-one) between a symbolic instruction
and a machine code (object language) instructions.
3. Pseudo-Instruction - A group of symbols which causes
the Assembler to depart from the normal mode of
translating symbolic instructions and to take some
appropriate special action.
4. Macro-Instruction - A pseudo-instruction which
calls for the insertion into the obj ect routine of
a sequence of instructions generated from a skeletal
definition by the insertion of any parameters supplied.
Interrupt

A procedure by which the normal operation of the program
is temporarily suspended by a special signal. The
signal might be external to the computer, or might be
caused by an error condition, or by the completion of
an asynchronous operation. The machine branches to
a routine appropriate to the cause of the interrupt, and
at the completion of the routine, normal operation is
resumed. Sometimes called trapping.

I/o

Abbreviation for input/output.

11.09.01
5 (6/61)

II
Library

A group of standard, proven routines which may be
incorporated into larger routines.

Library Routine

A sequence of instructions which is used often enough
to be identified and placed on file, and which is either
the same sequence in all applications or else a sequence
which is self-initializing through the use of parameters
supplied at execution time.

11. 12.01
5 (6/61)

II
Macro-Instruct; on

A pseudo-instruction which calls for the insertion
into the object routine of a sequence of instructions
generated from a skeletal definition by the insertion
of any parameters supplied.

Mask

A machine word used with a logical instruction to
eliminate undesired bits from another word.

Monitor

A routine which exercises supervisory control over
some other program or collection of programs. When
the collection of routines comprises all those normally
used in the operation of a computer, the Monitor and
the entire collection is called an operating system.

11. 13. 01
5 (6/61)

Object Program

The machine language program which is the final output
of a coding system.

Off-Line

Pertaining to the operation of input/output devices or
auxiliary equipment not under direct control of the
central processing unit.

On-Line

Pertaining to the operation of input/output devices under
direct control of the computer.

Open Subroutine

A separately coded sequence of instructions which is
inserted into another instruction sequence directly in
the line of flow of control. Sequences generated by
macro-instructions are an example of open subroutines.

Origin

1. The absolute storage address of the beginning of

a program or block.
2. In relative coding, the absolute storage address to
which 'addresses in a region are referenced.
Overflow

In an arithmetic operation, the generation of a quantity

beyond the capacity of the register.
1.

For addition, generation of a sum greater than the
capacity of a sum register.

2. For division, generation of a quotient greater than
the capacity of the quotient register.

11.15.01
5 (6/61)

Precision

11.16.01
5 (6/61)

The number of significant digits in a quantity
(see "Accuracy").

Record

A Wlit of information for computer input or output. A
record may be of indefinite length, and need not be read
in its entirety. A physical record is the smallest unit
at which an input or output device may be positioned.

Redundancy Check

A check which uses extra bits.

Register

The hardware for temporarily storing information while
or Wltil it is used. (Usually not main storage. )

Reset

To set a field or switch back to an initial or standard
condition.

Rewind

To return a magnetic tape to its beginning point.

ROWld-off Error

The error resulting from dropping the least significant
digits of a number, and adj usting the most significant
digits.

Routine

A sequence of machine instructions which carry out

a well-defined function.
Row Binary

11. 18. 01
5 (6/61)

A binary card format in which the first word occupies
the first 36 columns of the 9 row (hence, 9L), the
second word occupies columns 37-72 of the 9 row
(hence, 9R), the third word occupies 8L, and so on
through 12R.

Self-loading

A term applied to a sequence of instructions which are
so constructed that the first few instructions make the
machine accept the following instructions automatically.
(Sometimes referred to as "bootstrap. ")

Simulator

1.

A program or routine cOl.-responding to a
mathematical model or representing a physical model.

2. A routine which runs on one computer and imitates
the operations of another.
Snap, Snapshot

A dynamic Dump, obtained by somehow interrupting
the progress of a computation while a Monitor routine
collects the desired information, after which the machine
status at the time of interruption is restored and the
computation resumed. The routine in SOS which
performs such fWlctions is called SNAP and the routine
which converts the information for output is called
SNAPTRAN.

Subroutine

See "Open Subroutine" and "Closed Subroutine. "

Supervisor

See "Monitor. "

Symbolic Coding

1.

Broadly, any coding system in which symbols other
than machine addresses are used.

2. A method of coding in which addresses are
represented by arbitrary symbols bearing no
absolute or relative relationship to actual memory
locations (these symbols may be descriptive of the
contents). In fact, the symbolic coding itself may
bear little resemblance to machine language.
Symbolic Language

Any collection of symbols used in programming to
represent operation codes, fWlctions and/or addresses,
with rules of usage.

Symbolic Modification

The insertion or deletion of coding in a SQUOZE deck
by reference to symbolic locations in the original source
program.

11.19.01
5 (6/61)

II
Tracing

An interpretive diagnostic technique to record executed
instructions and results on an output device during
execution.

Translate

To change information from one form of representation
to another without significantly affecting the meaning.

Trapping

1. A hardware provision for interrupting the normal

flow of control of a program while transfer is
made to a known location. The trapping features
are most commonly used by Monitor routines or
for commWlication between input and output routines
and the programs using them.
2. A technique of debugging for obtaining information
during the execution of a routine.

11.20.01
5 (6/61)

m
Utility Routines

11. 21. 01
5 (6/61)

Standardized routines which perform a basic service.

APPENDIX 1

TABLE OF PERMISSIBLE CHARACTERS

~

~

J..

...U
Q)

C1I
J..
C1I

(;

0

"0

U

Q)

"5'"0
s:l
,t ~
J-o

blank blank

t

I

.....
C1I

..... t)

Q)
0
"0-

o
U

Cl

Q)
O'l

~

-

o~ .....C1I
Q)

...

o

0

"0

U

U Q)-

Cl

p.

U
B Uj:QE-I). The
dummy entry (the one with the second word entry 700 000 700 OOOS or
600 000 700 OOOS) will appear in the normal position, i. e., in the sorted list.
Reference in the Text or Footnotes to a multiply defined symbol will be to this
entry. The remaining n dictionary entries appear after the entry for the
END card. The entries are referred to in the ordinary way within the
dictionary. That is, the reference in one entry to a next item which is
multiply defined will be to an item following the entry END, not to the
dummy entry.
12.03. OS. 04
5 (6/61)

APPENDIX 3

SQUOZE DECK FORMAT

CHAPTER 9: FOOTNOTES

This section begins on a new card and uses as many cards as are necessary.
The footnotes are arranged in the order in which they were developed by SOS.
Each footnote occupies as many bits as are required; and each new footnote
begins in a new data word. Footnotes are punched as follows:
Bits S, 1-17 of the first data word used may be punched in either of two
ways depending on the pseudo-operation which corresponds to the footnote:
I.

ORG, BSS, BES, TCD, and END:
Bit Positions Used
S
1

Contents
1 - beginning of new footnote.

o - no symbol is associated with the pseudo-operation.
1 - a symbol is associated with the pseudo-operation.

II.

2- 4

000

5-17

If bit 1 is 0: Unused.
If bit 1 is 1: The position in the Dictionary of the
location symbol of the instruction.

SYN, EQU, and BOOL:
Bit Positions Used
S

Contents
1 - beginning of a new footnote.

1

Unused.

2

o - pseudo-operation is

SYN or EQU.
1 - pseudo-operation is BaaL.

3- 4

Unused.

5-17

The position of the next entry made in the Dictionary.

12. 03. 09. 01
5 (6/61)

The remainder of the footnote is divided into 18-bit units which are punched
as follows:
Bit Positions Used

o
1- 3

o-

Contents
Continuation of footnote (carried at the beginning
of a word only).

Connector:
000
001
010
011
100
101
110
111

+

End of footnote

$

*

/

Unused

If the connector is 011 ($) bits 4-17 contain the

base 50 representation of the heading character.
If the connector is 010 (end of footnote) hits 4-17

contain zeros. Note that if the connector would fall
in bit positions 1-3, the end of the footnote is
indicated by the beginning of the next footnote.
When the connector is +, -, *, or /, bits 4-17
are used as indicated below.
4

o - Constant follows, succeeding bits are used as
indicated below.
1 - Dictionary reference follows (in bits 5-17).

5

o - 12-bit constant follows.
1 - 18- or 35-bit constant follows.

6

If bit 5 is 0, this is the high-order bit of a 12-bit
constant.
If bit 5 is 1:
o - 18-bit constant follows
1 - 35-bit constant follows

7-17

If constant is 12 bits long, these are the 11 low-

order bits.
If constant is 35 bits long, these bits are unused.
12.03.09.02
5 (6/61)

When a constant is 18 or 35 bits long and the preceding connector is in bit positions
19-21, the constant is carried in the following word which is punched:
Bit Positions Used
S

1-18

19-35

Contents

o - continuation of previous footnote.
18-bit constant or high-order bits of 35-bit
constant
Low-order bits of 35-bit constant, or next connector
(in this case the continuation bit is not used).

If the preceding connector is in bit positions 1-3, an 18-bit constant will
appear in bit positions 18-35.
If a footnote requires more than 36 bits, succeeding 18-bit units are used.

12.03.09.03
5 (6/61)

APPENDIX 3

SQUOZE DECK FORMAT
CHAPTER 10: TEXT
This section is supplied in two forms; one with commentary and one without
commentary. Both sections are divided into groups of 230 data words. Each
group appears in the order in which they appear in the program; however, within
each group, the data words appear in inverse order.
The non-commentary text differs from the commentary text in the following respects:
1. where a single bit is used (see below) to indicate whether comments do or do
not follow, the bit is always zero in the non-commentary text and the comment
field is omitted.
2. when a character count is used instead of a single bit, the count will be zero;
the comments are again omitted.
3. information in the variable and comments fields of DEC, DUP, LBR, SQZ,
macro-instructions, ETC following a macro, and listing pseudo-operations
are omitted.
4. remarks are omitted.
5. The operation fields of macro-instructions are omitted.
Note that in all cases, the alter numbers are the same in both commentary and
non-commentary texts.
The number of data words required for the text of an instruction varies according
to the information included with the instruction, so that the text can only be
thought of as strings of bits. Within a string, the bits have the following significance
in the order of their appearance.
Number of
Bits Used

Contents

o

1

1

I.

Comments
Instruction follows. (See I below. )
Special item follows. (See n below. )

Instructions:
1

o
1

1

o
1

12.03.10.01
5 (6/61)

Five bit o.per ation code.
Nine bit operation code.
Instruction not indirectly addressed.
Instruction indirectly addressed.

5 or 9

Operation
code
00

2

01
10
11

o or

XX

1 or 2

0,3 or

~

1 or 2

Address of
dictionary
reference
1
00
01

1
00

o
1

o or

XX

o or

1

Decrement
or count

o
1

1

o
1

o or 1

o
1

12.03.10.02
5 (6/61)

Simple address; dictionary reference or
constant follows. (See Note 1, page 12. 03. 10. 07. )
Complex address; expression follows. (See
Note 2, page 12. 03. 10. 07. )
Relative address; expression follows. (See
Note 3, page 12. 03. 10. 07. )
No address; next field is omitted.
Address sizes depend .on the form, and the
dictionary reference size. (See Notes 1-3,
page 12.03.10.07.)
No tag; next field is omitted.
Absolute tag; tag follows.
Complex tag; expression follows.
page 12. 03. 10. 07. )

(See Note 2,

tag

01

o or 1

(SQUOZE code for operation)

No decrement; next three fields are omitted.
Simple decrement field; decrement follows.
(See Note 1, page 12. 03. 10. 07. )
Complex decrement field; decrement follows;
(See Note 2, page 12. 03. 10. 07. )
Decrement field contains a count for variable
length arithmetic or convert instruction.
Decrement field is not a count.
Decrement sizes depend on the form and the
dictionary reference size. (See Notes 1-3,
page 12. 03. 10. 07. )
Sign of decrement is +.
Sign of decrement is -.
No comments are associated with the instruction
Comments are present, and follow.
Comment begins in the same column as the first
comment in the program.
Comment does not begin in the same column as the
first comment in program.

o or 6

o or XX
IT

Count of
Characters
in comments
Comments
(BCD form)

The number of bits used for this entry is six times
the character count.

Special Item:

00
01
11
10

2

Principal pseudo-operation. (See IT. A. below.)
Commentary. (See II. B. below.)
Data. (See IT. C. below.)
Control (See II. D. below).

Principal Pseudo-operations:
1
0
Operation is ORG, BSS, or BES.
1
Operation is EQU, SYN, or BOOL.

A.

xx

Dictionary
Reference

o

1

1

o or

1

o
1

o or

6

The number of bits used, XX, is specified in data
word 7, bits 3-17 of the Preface.
No comments are associated with the item.
Comments are present and follow.
Comment begins in the same column as the first
comment in the program.
Comment does not begin in the same column as
the first comment in the program.

Count of
characters
in comments

o or

XX

B.

Commentary:
1
0
1

Comments
(BCD form)

The number of bits used for this entry is six times
the character count.

Pseudo-operation. (See II. B. (1) below. )
Remarks. (See II. B. (2) below. )

(1) Pseudo-operations:

3

12.03.10.03
5 (6/61)

000
001
010
011
100
101
110
111

ETC
DUP
Macro-instruction
LBR
DEC
OCT
BCI
SQZ.

7

XX

Count of characters in variable field and/
or comments

Number of BCD characters (not carried with
OCT and BCI, see Note 3, Page 12. 03. 10. 07).
In the case of macro-instructions, the operation
code is also included.

Variable
field and/or
comments'
(BCD form)

The number of bits used for this entry is six
times the character count.

(2) Remarks:
3
000
001
010
011
100
101
110
111

C.

LIST
UN LIST
DETAIL
TITLE
SPACE
EJECT
Unused
Remarks

7

Count of
char acter s in
variable
field and/or
comments

If entry is 000000, no variable field follows.

XX

Variable field
and/or
comments
(BCD form)

The number of bits used for this entry is six
times the character count.

Data item

One entry is made for pseudo-operation and
each data word of an OCT, BCI and DEC instruction (See Note 4, page 12. 03. 10. 07. )

o

No comments are associated with the item.
Comments are present and follow.

-36Data:
1

1

o or 1

o
1

o or 6

12.03.10.04
5 (6/61)

Character
count of
comments

Comment begins in the same column as the first
comment in the program.
Comment does not begin in the same column as
the fir st comment in the program.
This information is associated with only the last
item from an OCT, BCI or DEC card.

o or XX
D.

Comments
(BCD form)

Control:
00

2

10
11
01
(1)

XX

TCD:
Dictionary
reference

o

1

1

o or 1

o
1

o or

The number of bits used for this entry is six
times the character count.

End of modifications (used only by Modify and
Load).
TCD. (See ll. D. (1) below. )
END. (See ll. D. (2) below. )
Other. (See U. D. (3) below.)

The number of bits used for this entry is
specified in data word 7, bits 3-17 of the Preface.
No comments are associated with the item.
Comments are present and follow.
Comment begins in the same column as the first
comment in the program.
Comment does not begin in the same column as
the first comment in the program.

Character
count of
comments

6

OorXX

(2)

xx

Comments
(BCD form)

The number of bits used for this entry is six
times the character count.

END:

Dictionary
reference

The number of bits used for this entry is
specified in data word 7, bits 3-17 of the Preface.

8

Residue of
synchronization count

256-x, where x is the number of entries, including
this one, which have been made since the last
synchronization count. (See (3) below.)

1

o

No comments are associated with the item.
Comments are present and follow.

1

o or

1

o
1

12.03.10.05
5 (6/61)

Comment begins in the same column as the fii-st
comment in the program.
Comment does not begin in the same column as
the first comment in the program.

o or 6

Character
count of
comments

OorXX

Comments
(BCD form)

(3) Other:
000
001
010
011
100
101
110
111

3

(a) HEAD:
Heading
character

6

1

0

1

o or

1

0
1

o or 6

Character
count of
comments

o or XX

Comments

(b)

XX

12.03.10.06
5 (6/61)

VFD:
Variable
field

The number of bits used for this entry is six
times the character count.

Synchronization count (every 256th entry).
Heading. (See U. D. (3)(a) below. )
VFD. (See n. D. (3)(b) below.)
Reserved for expansion of the system.

Base 50 representation of heading character.

No comments are associated with the item.
Comments are present am follow.
Comment begins in the same column as the first
comment in the program.
Comment does not begin in the same column as
the first comment in the program.

The number of bits used for this entry is six
times the charaoter count.

The number of bits used for this entry depends
on the length of the variable field and the size
required for dictionary references. The entry
is subdivided into fields as shown in ll. D. (3)(b)
i. below.
The format is:
K1L1F1 K2 L 2F 2. · · KnLnF nKn+1

i.
2

Variable field subdivisions:
Field type:
K
00 - Complex field follows. (See
Note 1, below.)
01 - end of VFD instruction.
10 - Hollerith field follows.
11 - Octal field follows.

6

L

Bit count of field which follows.

L

F

VFD subfield.

Note 1: A simple field, R, is a dictionary reference if the first bit is 1. The
number of hits used for the reference is specified in data word 7, bits 3-17
of the Preface. R is a constant if the first bit is O. If the next two bits are:
00 - a four-bit constant follows.
01 - a twelve-bit constant follows.
10 - an eighteen-bit constant follOWS.
11 - a thirty--five-bit constant follows.
Note 2: Complex fields have the form T 1R1 T 2R2... T nRnT n+ V where T represents
the type of connector used in a complex field; and R is used to represent
dictionary references or constants shown in Note 1. Exception: If T = 011
($), the R which follows is the 6-bit, base 50 heading character which
preceded the $ in the original symbolic field.
If T is 000 the connector is +

001
010
011
100
101
110
111

"
"

"
"
"

End of field

$

*

/

Unused

Note 3: Relative fields have the form RIR2S; where R is as shown above and S
is used to represent a sign in a relative expression; S always occupies
one bit only. If S is 0, the sign is plus (+); if S is 1 the sign is minus (-).
Note 4: For OCT, BCI, and DEC instructions, n+1 entries are made. For BCI,
n is defined by the first subfield of the instruction. For OCT and DEC,
n is the number of subfields in the variable field. The first entry is for
the pseudo-operation, the remaining entries are for the n data words.
If comments are also included with anyone of these instructions, only the
n+ 1 th entry will include the comments.
12.03.10.07
5 (6/61)

Examples
The complex field A+B/C*D+35, where (A), (B), (C), (D) represent the positions
in the dictionary of the entry for A, B, C, and D, respectively, would appear
in the text as:
000 1 (A) 000 1 (B) 101 1 (C) 100 1 (D) 000 0 01 000000100011 010
Taking the bits in order, they have the following significance:
000
1
(A)
000
1
(B)
101
1
(C)
100

+ (the signs are always explicitly given).
Dictionary reference follows.
n-bit Dictionary reference for A.
+
Dictionary reference follows.
n-bit Dictionary reference for B.
/
Dictionary reference follows.
n-bit Dictionary reference for C.
*

1

Dictionary reference follows.

(D)
000

o
01
000000100011
010

n-bit Dictionary reference for D.
+
Constant follows.
Constant is 12-bits long.
35
end of field

The relative field A-35, on the other hand, would appear as
l.!J~}'

A

12.03.10.08
5 (6/61)

\ 0 01

000090100011j~

35

-

APPENDIX 10

32K IB MONITOR OPERATING NOTES

CHAPTER 1: EQUIPMENT REQUIREMENTS

The use of the 32K IB Monitor with SOS requires the availability of the following
system components:
A.

IBM 711 Card Reader

B.

IBM 716 Printer

C.

IBM 721 Card Punch

D.

Three to seven tape units:
1.

Unit A1. This unit is used for the SOS system tape and is, of course,
always required.

2.

Unit A2. Output for off-line listing is written on this tape.
unit need only be available when there is to be such output.

3.

Unit A3 is used for two purposes:
a. If Sense Switch 1 is Up, all input is assumed to have been written on
tape by off-line card-to-tape operations, and is read from this tape.
b. When a SQUOZE deck is to be read on-line in columnar binary form,
this tape is used for intermediate storage of input if insufficient
storage space is not otherwise available.

4.

Unit A4. H the library tape is required for the processing of a job deck,
it must be on this unit. When the library tape is not required, this unit
need not be readied.

5.

Unit A5 is used when SQUOZE or absolute binary output is to be punched
off-line. The unit need only be readied when there is to be such output.

6.

Unit Bl must always be readied and is used as a work tape for input by
SOS.

7.

Unit B2 must also always be readied.
working tape for output.

12.10.01.01
5 (6/61)

Hence, the

This tape is used by SOS for a

APPENDIX 10

32K IB MONITOR OPERATING NOTES

CHAPTER 2: OPERATING INSTRUCTIONS AND PROGRAMMED HALTS

A.

Ready the required tape units as outlined above (only tape Al need be rewound).

B.

Place either the SHARE 1 or SHARE 2 control panel in the printer.

C.

If input is to be read from cards, ready job decks in the card reader.

D.

Set Sense Switches for the desired options as follows:
Sense
Switch
1

Setting
UP
DOWN

2
3

Presently unused.
UP

DOWN
4

UP
DOWN

5

UP

DOWN

12.10.02.01
5 (6/61)

Option
Input is to be read from tape (A3 must be
readied).
Input is to be read from cards (card reader
must be readied with input).

Only monitor control cards and error statements

are to be printed on-line.
All printing is to be done on -line.
Normal procedure is to be used when loading
the system.
After loading the system, the debugging output
from the preceding job is to be printed. This
feature makes it possible to re"cover debugging
output when the previous job affected the
operation of SOS and had to be terminated.
All information for printing, including monitor
control cards and error statements, is to be
written on tape A2 for off -line tape -to-printer
operations. (Tape A2 must, of course, be
readied. )
No information is to be written on tape A2.

6

UP

DOWN

All card output is to be written on tape for
off -line tape -to-colunmar -binary -card
operation, regardless of whether control cards
specify row binary or columnar binary output.
Card output is to be punched on-line in either
row binary or columnar binary as specified
in the control cards.

Note: H both Sense Switches 3 and 5 are Up during Modify and Load processing,
information for printing will be written on tape A2 and not listed on-line.
E.

Depress the Clear key and then the Load Tape key.

HALTS
There are four programme<;:i halts which may occur during processing of a job
deck:
Location
cOWlter (octal)

1370

Explanation
A STOP card has been encountered. If Sense Switch 1
is Up, tape A3 has been rewound. If printing is to be
done off-line, an end-of-file has been written on tape
A2 and the tape rewound. Similarly, if output decks
are to be punched off-line, an end-of-file has been
written on tape A5, and the tape rewound. Tape Al
is always rewound.

1402

A PAUSE card has been encountered. Depression of
the Start key will cause processing to continue.
OR
An end-of-file condition has occurred while reading
input from tape A3.

1746

An end-of-tape condition has occurred on tape A2.

2420

An end-of-tape condition has occurred on tape A5.

In each of the above cases, a message will be printed on-line indicating the
condition which caused the halt. When any other condition arises, an error
statement will be printed out (and, if Sense Switch 5 is UP, written on tape A2)
indicating the condition, (see Appendix 11); when possible the Monitor will continue
processing. If it is not possible to continue, the Monitor will terminate processing
of the job deck and skip to the next deck.

12.10.02.02
5 (6/61)

APPENDIX 12

SHARE MONITOR SYSTEM AND LffiRARY TAPE GENERATION AND UPDATING

In order to incorporate revisions to the various files of the System, the programmer

responsible for the maintenance of SOS at his installation must be familiar with
the use of the WST (Write System Tape) control card, the operation of the WST
file, and the format of the System Tape.
The SHARE Distribution Agency distributes changes either in the form of a modification package to the current SQUOZE deck of a particular file, or in the form
of a new SQUOZE deck of that file. Therefore, installation-specific revisions
should be accomplished by modifications to the current SQUOZE deck using
CHANGE rather than ALTER in effecting such modifications.
The SQUOZE deck with its modifications must be converted to 709-type absolute
binary before being written on the System Tape.· Modify and Load can be used
for this conversion.
System Tape Format
Each file on the System Tape begins with a one-word Bel file identifier for use by
the System Tape Loader routine. The file identifier is followed by the absolute
code comprising that file. The code is divided into 256-word records. The last
record of a file is a one-word transfer address corresponding to the transfer
card of the absolute binary deck, followed by a physical end-of-file mark.
The format of the System Tape is as follows:
EOF mark
FILE 1:
File Identifier
Record 1
256 words each
Record n
Transfer address record
EOF mark
FILE 2:
File Identifier
Record 1
256 words each
Record m
Transfer address record
12.12.00.01
5 (6/61)

EOF mark

}

files consisting of 256-word records

EOF mark
Terminal check sum file (File Identifier is 777 777 777 777 8)
Use of System Tape Writer
The WST file is loaded into core storage whenever a WST control card is recognized, whether during Initiation or during Phase 1.
The following control cards are recognized by the System Tape Writer:
A.

CHANGE X, Y (X and Yare BCI file identifiers)
The CHANGE card has two possible functions:
1. If the variable field is X, Y, the files on the System records from the
beginning of X to the end of Y would be deleted.

For example,
CHANGE

rnTRAN,rnTRAN

would delete that file from SYSTAP. Any or all new files following that
CHANGE card and preceding the next CHANGE or END card would be
inserted at this point.
2.

B.

If the variable field contains only X, the new files following that CHANGE
card and preceding the next CHANGE or END card will be inserted
following the file identified by X.

CODE A
A is a file identifier of 1-6 BCI characters. The CODE control card is used
to establish the file identifier (see above) for the subsequent absolute deck.

C.

ROW
The ROW control card indicates that the absolute deck following is in row
binary. The row binary deck must be followed by a blank card. No equivalent
control card or blank card is required if the absolute deck is column binary.

12.12.00.02
5 (6/61)

D.

LAST
The LAST control card causes the System Tape Writer to write an end-offile mark on the new tape.

E.

END
The END control card indicates that the last modification file has been read
and that the remainder of the System Tape should be copied directly. The
check sums written in the Terminal check sum file will be recomputed before
being written.

Each of the five control cards described above is punched in the standard format.
The exception is that the variable field, when required, must commence in
column 16. In addition, column 1 of each card must contain 7-, 8-, 9-punches.
The System Tape Writer, as presently assembled, is capable of processing files
of up to 44, 000 8 words in length. Files must be inserted and/or deleted in the
order in which they appear on the input System Tape. The primary reason for
this restriction is that duplicates of one or more files (using the same file identifier)
may appear on the System Tape to reduce tape searching time. WST prints an
ordered list of file identifiers for this purpose before the updating process is
started.
Examples:
Three examples of the input deck format for System Tape modification are given
below:
A.

The purpose of this deck is to replace the current files of M1 and INTRAN
with new versions:
WST
Blank
CHANGE MI, MI
CODE M1
ROW
New row binary absolute deck (with Transfer card)
Blank (used in conjunction with ROW. Note that this is omitted when
the absolute deck is column binary. )
LAST
CHANGE INTRAN,INTRAN
CODE INTRAN
New column binary absolute deck
LAST
END

12.12.00.03
5 (6/61)

B.

The purpose of this input deck is to replace the current file of M8, the Modify
and Load Lister, with a new version and to insert the Output 'Editor on a tape
that previously contained no version of the editor. For this example, it is
assumed that the most logical position for the Output Editor is immediately
following SNAPTRAN, the debugging translator.
WST
Blank
CHANGE M8, M8
CODE M8
Absolute deck of M8 in column binary
LAST
CHANGE SNPTRN
CODE OUTED (OUTED is the file identifier of the Output Editor.)
ROW
Absolute deck of Output Editor in row binary
Blank
LAST

END
C.

The following deck will reproduce a tape.
WST
Blank

END
Two methods can be used to perform a WST run from a peripheral input tape.
A.

Arrange the deck as mentioned above.

B.

Start the input tape with the CHANGE card of the first file to be changed (or
inserted after), then CODE, etc. In this case the loader must have the GO
card replaced with a WST card and a blank card following that. Sense Switch
2 will be Up.

C.

A JOB card can be used if the deck is to be placed on SYSPIT. Follow this
with a WST card, a blank, and so on as prescr.ibed. The standard loader
should then be used with the GO card and Sense Switch 2 Up.

Naturally, only column binary cards can be read by the off-line card reader.
If the job is to be read on-line with Sense Switch 2 Down, the JOB card method
should not be used. The proper method is to replace the GO card of the loader
with a WST card, followed by a blank, CHANGE card, etc.

12.12.00.04
5 (6/61)

The following procedure is to be used to write a System Library tape as a file
on SYSTAP or as a separate tape.
Set deck up as follows:

**

CHANGE

SCAT1

**
**

TABLE
ITEM

LBR
NAME1

**
**
**

ITEM

}
}

NAMEn

(the file after which Library
routines are desired)
(the name of subroutine)
SQUOZE deck
(must be column binary)
(name of last routine)
SQUOZE deck

LAST
END

The procedure to write the Library file as a separate tape requires exactly the
same deck setup as above, except that the CHANGE card is replaced by a
NOTAPE card ** (NOTAPE is punched in columns 8-13). In this case, the library
tape will be written on SYSES2, or unit B4 if there are no special assignments.
The job is run in the same way as a WST run, with the finished tape being denoted
by an on-line message. In all cases, the message will indicate a completed
SYSTAP, when in reality, if the Library tape is being written separately, the
finished tape is not SYSTAP, but SYSLBR.
This may be run as mentioned above using either on-line or off-line input.
Library file must be in column binary form.

** 7-,

8-, and 9-punches required in column 1.

12.12.00.05
5 (6/61)

The

APPENDIX 12

32K IB MONITOR OPERATING NOTES

CHAPTER 1: EQUIPMENT REQUIREMENTS

The use of the 32K IB Monitor with SOS requires the availability of the following
system components:
A.

IBM 711 Card Reader

B.

IBM 716 Printer

C.

IBM 721 Card Punch

D.

Three to seven tape units:
1.

Unit AI. This unit is used for the SOS system tape and is, of course,
always required.

2.

Unit A2. Output for off-line listing is written on this tape.
unit need only be available when there is to be such output.

3.

Unit A3 is used for two purposes:
a. If Sense Switch 1 is Up, all input is assumed to have been written on
tape by off-line card-to-tape operations, and is read from this tape.
b. When a SQUOZE deck is to be read on-line in columnar binary form,
this tape is used for intermediate storage of input if insufficient
storage space is not otherwise available.

4.

Unit A4. If the library tape is required for the processing of a job deck,
it must be on this unit. When the library tape is not required, this unit
need not be readied.

5.

Unit A5 is used when SQUOZE or absolute binary output is to be punched
off-line. The unit need only be readied when there is to be such output.

6.

Unit Bl must always be readied and is used as a work tape for input by

Hence, the

sos.
7.

Unit B2 must also always be readied.
working tape for output.

12. 12.01. 01
2
(2/60)

This tape is used by SOS for a

APPENDIX 12

32K IB MONITOR OPERATING NOTES

CHAPTER 2: OPERATING INSTRUCTIONS AND PROORAMMED HALTS

A.

Ready the required tape units as outlined above (only tape Al need be rewound).

B.

Place either the SHARE 1 or SHARE 2 control panel in the printer.

C.

If input is to be read from cards, ready job decks in the card reader.

D.

Set Sense Switches for the desired options as follows:
Sense
Switch
1

Setting
UP
DOWN

2
3

Presently unused.
UP

DOWN
4

UP

DOWN

5

UP

DOWN

12.12.02. 01
2
(2/60)

Option
Input is to be read from tape (A3 must be
readied).
Input is to be read from cards (card reader
must be readied with input).

Only monitor control cards and error statements
are to be printed on-line.
All printing is to be done on-line.
Normal procedure is to be used when loading
the system.
After loading the system, the debugging output
from the preceding job is to be printed. This
feature makes it possible to re"cover debugging
output when the previous job affected the
operation of SOS and had to be terminated.
All information for printing, including monitor
control cards and error statements, is to be
written on tape A2 for off-line tape-to-printer
operations. (Tape A2 must, of course, be
readied. )
No information is to be written on tape A2.

6

UP

All card output is to be written on tape for
off-line tape-to-columnar-binary-card
operation, regardless of whether control cards
specify row binary or columnar binary output.
Card output is to be punched on-line in either
row binary or columnar binary as specified
in the control cards.

DOWN

Note: If both Sense Switches 3 and 5 are Up during Modify and Load processing,
information for printing will be written on tape A2 and not listed on-line.
E.

Depress the Clear key and then the Load Tape key.

HALTS
There are four programmed halts which may occur during processing of a job
deck:
Location
counter (octal)
1370

1402

Explanation
A STOP card has been encountered. If Sense Switch 1
is Up, tape A3 has been rewound. If printing is to be
done off-line, an end-of-file has been written on tape
A2 and the tape rewound. Similarly, if output decks
are to be punched off -line, an end -of -file has been
written on tape A5, and the tape rewound. Tape Al
is always rewound.
A PAUSE card has been encountered. Depression of
the Start key will cause processing to continue.
OR

An

end~of-file

condition has occurred while reading
input from tape A3.
1746

An end -of -tape condition has occurred on tape A2.

2420

An end-of-tape condition has occurred on tape A5.

In each of the above cases, a message will be printed on-line indicating the
condition which caused the halt. When any other condition arises, an error
statement will be prin~ed out (and, if Sense Switch 5 is UP, written on tape A2)
indicating the condition, (see Appendix 13); when possible the Monitor will continue
processing. If it is not possible to continue, the Monitor will terminate processing
of the job deck and skip to the next deck.

12.12.02.02
2
(2/60)

APPENDIX 13

SHARE MONITOR OPERATING NOTES
CHAPTER 1: CONTROL CARDS

This chapter, and the remaining chapters of the appendix, are of interest to
operators only. In the following material, knowledge of the information contained
in Section 09, chapters 1, 2 and 3 is assumed. Therefore the reader of this
appendix should have first read those chapters.
A.

ASSIGN
An ASSIGN control card is employed to cause a change in the status or use of
an I/O unit. It is placed before the GO control card (see below) in the loader.
It may also be used between phases.
The format of an ASSIGN card is:
ASSIGN XN=Z
where X is an alphabetic channel designation (A through F)
N is a tape number (not used for card equipment)
Z is the assignment desired for the specified I/o unit.
Z = OFF to disconnect the unit and make it unavailable for use.

= ON to place the I/O unit in an "unassigned and available" status.
= SYSXXX, referring to the Communication Region control word
for the symbolic unit named.
Examples:
1.

ASSIGN C = SYSCRD
causes the System to use the card reader on channel C for on-line input.

2.

ASSIGN A5

= OFF

will force the System to avoid the use of tape drive 5 on channel A for
any purpose and to print an error message to the operator if an attempt
is made to assign A5 for System or object program use.
3. ASSIGN A5 = ON
will return the specified physical unit to available status.

12.13.01.01
5 (6/61)

4. ASSIGN B4 = SYSPOT
will cause tape B4 to be used as the Peripheral Output Tape during all
subsequent phases which require it until reassignment or initialization.
Note: Reassignment of system tapes is permitted only at specific
intervals. SYSTAP may be reassigned only during initiation, SYSMIT
and SYSMOT between cycles (i. e., preceding execution of the input
phase), and all other system tapes between phases.
B.

DATE
A DATE control card may be placed before the GO card in the loader. The
date is then available for use by the accounting routines, by the Compiler
which places it in 4-left row of the Preface card of SQUOZE decks, and by
the Lister which places it on each page of listings. The format of a DATE
card is:
DATE M/D/Y
where M consists of 2 decimal digits specifying the month
D consists of 2 decimal digits specifying the day

Y consists of 2 decimal digits specifying the year.
C.

GO
A GO card must be the last card in the loader. It indicates that all System
control cards have been read, and causes the System to commence execution
of Phase 1.
The format of this card is:
GO
No parameters are necessary.

D.

END

An END card must be the last control card in a stack of jobs. It specifies
that all the jobs to be executed in this cycle of operation have been read.
The format of this card is:
END
No parameters are necessary.

12.13.01.02
5 (6/61)

APPENDIX 13

SHARE MONITOR OPERATING NOTES
CHAPTER 2: INPUT DECK ARRANGEMENT
The input deck consists of a stack of intermixed "Compiler" or "Modify and
Load" jobs in any order. Each job deck will contain the program control cards
necessary for that job. All program control cards must have 7-, 8-, and 9punches in column one.
The Job Deck
Each job deck consists of a job card, a "Compiler" or "Modify and Load" deck,
and possibly a data deck.
An END control card must follow the stack of jobs. This card must have 7-, 8-,
and 9-punches in column one; and END punched in columns 8-10.
Note: If it appears that the end of the peripheral input tape will be reached, a
symbolic deck for a SCAT job may be divided into two parts. The first
part should have a card placed behind it which has ENDTAP punched in
columns 8-13. No other punches should appear in the card. The remainder
of the input decks may now be placed on another tape. This facility is not
available for SQUOZE decks. The system will print a request to mount
the second tape when it is needed.
The stack of jobs constituting an input deck is the same whether read on-line or
off-line. However, row binary cards cannot be read by off-line card-to-tape
equipment.

12.13.02.01
5 (6/61)

APPENDIX 13

SHARE MONITOR OPERATING NOTES
CHAPTER 3: STARTING OPERATION
Operation of the SHARE Monitor System is started by means of a Loader deck.
This deck may contain six or more cards. The last card of the deck is a GO
card.
The system assumes a two channel machine with five tapes on each channel. Any
variance in the number of tapes per channel will require the use of ASSIGN
cards placed before the GO card in the Loader deck.
Before operation is begun, five tapes on each channel must be readied. The units
should be dialed 1, 2, 3, 4, 5 on Channel A and 1, 2, 3, 4, 5, on Channel B.
The steps required for starting operation are given below. The standard addresses
for the system tape and peripheral input tape are assumed.
A.
B.
C.
D.
E.
F.
G.

H.

Ready the System Tape on Bl.
Ready the Peripheral Input Tape on B2.
Ready tapes on B3, B4, B5, AI, A2, A3, A4, A5.
Place Loader deck, containing any necessary ASSIGN cards, in card reader.
If input is from cards, place input deck following loader.
Ready card reader.
Set Sense Switches as indicated below.
Depress the Clear and the Load Cards keys.

After a period of initialization the printer will indicate that the system is entering
Phase 1. A stop will then occur with the location counter containing 45 8 . If no
alteration of the tape assignments is necessary, the operator may continue by
depressing the Start key.
As each job is started, the program control cards for that job will be printed.
If Sense Switch 1 is Down, the identification of the file being read from the
System Tape will also be printed on-line.
From time to time instructions concerning the readying or removal of tapes will
also be printed. Operation may be continued, when these instructions have been
carried out, by d'epressing the Start key.
If a request for tape assignment is made, the operator need only place the corresponding absolute address in the address portion of the Entry keys and depress
the Start key. Tapes designated as free on the status list should be used to fill
such requests. Any illegal assignments will result in a message and a stop for
resetting the entry keys.

12.13.03.01
5 (6/61)

If any halt other than 45 8 occurs, transfer to location 46 8 , If the system cannot
continue, use the restart procedure (see page 12. 13. 05. 01).
Sense Switch Settings
Sense
Switch
1

Setting

Option

UP

Do not print file identifications on-line.
Print identifications on-line.

DOWN
2

UP
DOWN

3

UP
DOWN

4

5
6

UP

5 (6/61)

Write print-output on tape for off-line printing.
Write print-output on-line.

DOWN

Tape assignments changes are not required
(see page 12. 13. 04. 01).
Tape assignment changes are required.

UP

(Not used; must always be Up. )

UP

Write card output on tape for off-line punching.
Punch card output on-line.

DOWN

12.13.03.02

Input is to be read from tape.
Input is to be read from cards.

APPENDIX 13

SHARE MONITOR OPERATING NOTES
CHAPTER 4:

SYSTEM TAPE REASSIGNMENT

The operator must be concerned with tape assignments at three different points
in the processing of a stack of jobs.
A.

During Initiation
ASSIGN cards may be placed in the loader to reassign the systern tapes
SYSPOT, SYSPPT, SYSPIT, SYSES2, SYSES1, SYSMIT, SYSMOT and
SYSDOT. The assignments specified on these cards will hold throughout the
entire cycle unless changed between phases.

B.

Between Phases
The Monitor will halt after printing the necessary ready and remove messages
and the tape status list. At this time, the assignment of some system tapes
may be altered.
If the operator desires to change the assignment of a system tape from the
card reader, he must:
1.
2.

Set Sense Switch 4 to Down.

3.
4.

Ready the appropriate ASSIGN cards in the reader.
Depress the Start key.

Enter the prefix MTH (7) in the MQ entry keys.

For example, to assign a new tape as SYSMOT the card would be:
ASSIGN

XN

=

SYSMOT

An end of file or an error will terminate processing of ASSIGN cards.
If the Monitor requests assignment of a specific tape, e. g. ,

ASSIGN

SYSMOT

the operator may use the method outlined above, or the following:
1.

2.
3.
4.

Set Sense Switch 4 Down.
Enter the prefix PZE in the entry keys.
Enter the physical address of the tape to be assigned as SYSMOT, in
the address position of the Entry keys.
Depress the Start key.

12.13.04.01
5 (6/61)

Note: SYSMIT may not be reassigned between phases.
If the operator wishes to change the output mode from on-line to off-line, or
vice versa, he should:
1.
2.
3.
4.

SQt Sense Switch 4 Down.
Place the prefix MON in the Entry keys.
Change the sense switches as desired.
Depress the Start key.

The necessary output changes will be made, a new tape status list will be
printed, and the halt at location 458 will occur. Sense Switch 4 may now
be set to Up and the Start key depressed to enter the phase.
C.

Between Jobs
An ASSIGN card of the form ASSIGN XN = SYSXYN for each reserved or
utility tape desired at execution time is placed between the JOB card and
the SCAT or LOAD card.
At execution time, the system will print messages to ready the reserved and
utility tapes for the next job to be executed. A halt will then occur. If the
tape assignments described are insufficient or erroneous, the operator may
correct them either by using ASSIGN cards in the card reader or by direct
entry from the Entry keys. The type of change made will depend on the
prefix in the Entry keys. In no case may the assignment of other than reserved
or utility tapes be made at this time. The proper setting for the Entry keys
is shown in the table below.

FUNCTION

KEYWORD
PREFIX ADDRESS

General Form

PFX

DECREMENT

ANALOGOUS CARD

A (physical address)

B (symbolic designation
as if it were physical)

Assign Reserved Tape PON

A

B

ASSIGN XN = SYSYRM

Assign Utility Tape

PTW

A

B

ASSIGN XN

= SYSYUM

*Assign System Tape

PZE

A

ASSIGN XN

= SYSYYY

Make Physical unit
a vailable for new
assignment.

MZE

A

ASS IGN XN

= ON

Make Physical Unit
Unavailable

PTH

A

ASSIGN XN = OFF

Process ASSIGN cards MTH
in card reader
* This entry is made only upon request by monitor.

12.13.04.02
5 (6/61)

Miscellaneous Notes
In some instances a program will use special tapes during execution. The person
setting up the input deck must have information concerning the symbolic addresses
of the tapes to be used and the phase in which the job will be executed. Any physical
tape may be assigned for these symbolic addresses provided the tape is not already
in use. There is no restriction concerning channel. This assignment is made
with the use of an ASSIGN control card of the form
ASSIGN

XN = SYSYYY

where SYSYYY is the programmer's symbolic tape address such as SYSAR1,
SYSBU4, etc.
XN is the tape to be used (X is the channel letter and N is the tape unit on
that channel).
If the programmer is using a symbolic tape (i. e., a tape referred to by a symbolic
name) as input, it will be necessary for the operator to mount that tape on the unit
specified by the ASSIGN card.
For example, suppose that a programmer specifies that he needs tape SYSBR3.
If tape A4 is to be used, the ASSIGN card would be

ASSIGN

A4 = SYSBR3

This card and any other required ASSIGN cards would be placed immediately after
the JOB card for this job. An ASSIGN card is required for every symbolic tape
unit used by the programmer.
Because of the importance of proper tape utilization to obtain maximum system
efficiency it is suggested that a chart, similar to the one shown in the example
below, be set up for each stack of jobs.
Example:
Suppose there is a stack of jobs with the following requirements:
Job
1
2
3
4
5
6

7
8

Symbolic Tapes
SYSAR1, SYSBU1
SYSAR1
SYSAR4, SYSBR2, SYSAU8
sYSAU2
SYSBR2
SYSBR2, SYSAU4
SYSBU6
none

12.13.04.03
5 (6/61)

Execution Phase
3
1
2
2
1
2
2
2

A table can then be formed on the basis of the phase in which the job will be
executed. Normal system tape assignments are assumed. As shown in the table,
the use of system tapes during Phases 1 and 3 is rather extensive if all operations
are to be off-line. Thus, the majority of jobs should be executed in Phase 2.
After entering the tapes which remain the same during an entire phase, we then
assign tapes as required for each job, so that the operator has time to mount
and remove tapes where necessary.
If necessary, the tapes assigned as erase tapes (SYSESN) may be used as utility
or reserved tapes for Phase 1 execution. The system will handle them automatically
as though these were free and available tapes.
Prior to starting the next job, the system will stop if tapes normally used as erase
tapes were used on previous jobs as reserved or utility tapes. Removal messages
will be printed if the tapes were used as reserve tapes, and ready messages will
be printed for those erase tapes involved.

3

2

1

PHASE
2

S

3

4

6

7

8

1

SYSPOf

SYSPOf

-

-

-

-

-

SYSPOf

A2

SYSPPT

SYSPPT

-

-

-

-

-

SYSPPT

A3

SYSMIT

SYSMIT

SYSMOT

SYSMOT

SYSMOf

SYSMIT

A4*

SYSESi

SYSESi

SYSAU8

-

-

-

-

SYSDOf

AS

-

SYSBR3

SYSARl

-

-

SYSBU6

-

-

B1

SYSTAP

SYSTAP

SYSTAP

SYSTAP

SYSTAP

SYSTAP

SYSTAP

SYSTAP

B2

SYSPIT

SYSPIT

-

SYSAU2

-

-

-

SYSARl

B3

SYSMOT

SYSMOf SYSMIT

SYSMIT

SYSMIT

SYSMrr

SYSMrr

SYSMOf

B4*

SYSES2

SYSES2

-

-

SYSBR2

-

-

-

BS

SYSARl

-

SYSBR2

-

SYSAU4

-

-

SYSBUl

JOB NUMBER
TAPE NUMBER
Ai

:>< >< >< >< >< >< >< ><
SYSMOT SYSMOT

* ASSIGN cards for utility and reserved tapes may refer to the same tape unit used as SYSES 1 and
SYSES2 even though the job is to be executed in Phase 1.

12.13.04.04
5 (6/61)

The ASSIGN cards required for the above assignments would then be:
JOB 5

JOB 1
ASSIGN B2 = SYSAR1
ASSIGN B5 = SYSBU1

ASSIGN A5 = SYSBR3
JOB 6

JOB 2
ASSIGN B5 = SYSAR1

ASSIGN B4 = SYSBR2
ASSIGN B5 = SYSAU4

JOB 3
ASSIGN A5 = SYSAR1
ASSIGN B5 = SYSBR2
ASSIGN A4 = SYSAU8
JOB 4
ASSIGN B2 = SYSAU2

12.13.04.05
5 (6/61)

JOB 7
ASSIGN A5 = SYSBU6
JOB 8
none

APPENDIX 13

SHARE MONITOR OPERATING NOTES
CHAPTER 5: RESTART PROCEDURE
If for some reason the monitor is written over during any phase of operation, it
may be restored and operation begun with the next job to be processed. The
procedure is as follows:
A.

Note the tape assignments for SYSMIT and SYSMOT in the most recent tape
status list. Make up an ASSIGN card for each of these.

B.

Remove the first three cards of the loader deck and replace with the
Recovery card.

C.

Place the two ASSIGN cards in front of the GO card in the loader deck.

D.

Depress the Clear key and the Load Cards key. Run all the cards in the
revised loader deck through the card reader.

E.

The system will be reloaded and initialized, and a stop will occur after a
message is printed instructing the operator to place the phase number, in
which to restart, in the entry keys. This phase number is determined from
the tape status list. If input phase is indicated, this is Phase 1. The execution
phase is Phase 2, and the output phase is Phase 3.

F.

After setting the phase number in the keys, depress the Start key. The
printer will indicate that restart has succeeded.

G.

Restore the loader deck to its original form by removing the two ASSIGN
cards and replacing the first three cards.

Note: The Recovery card is good only if the system tape is on B1. If non-standard
assignments have previously been made for peripheral input, output and
punch tapes, it will be necessary to include ASSIGN cards for those as well
as for SYSMIT and SYSMOT.

12.13.05.01
5 (6/61)

active macros
INTRAN
OUTRAN

07.01. 06
07.02.06

Add Buffer routine

07.06.04

alter numbers

04.02.02

ALTER

05.02.06

and

02.00.07

AND

06.04.06

arithmetic
expressions
operations

02.00.03
02.00.05

ASSIGN

assign a symbol to a word
in a headed area
in an unheaded area

05.02.14
09.02.05
09.03.01
12. 13. 01. 01

05.02.13
05.02.12

attempt to read from unassigned unit

07.01. 11
07.01. 21

availability of machine components

09.06.01

Aw

07.03.04
07.04.06

13.01. 01
5 (6/61)

BACK

07.07.04
07.07.10

BACKF

07.05.03

BACKR

07.05.03

BACKT

07.05.03

backspace

07.05.03
07.06.08

Backspace Logical Record routine

07.06.08

Bad Spot routine

09.04.02

basic field specifications

07.03.05

BCD to Hollerith conversion

07.04.06

BCI

03.00.16

BEGIN

03 00.34

beginning of
comments field
tape

02.00.11
07.05.03

BES

03.00.05

binary
integers
point specification

tape record not column binary
to decimal conyer sion
to octal conversion

13.02.01
5 (6/61)

07.01. 29
07.02.12
03.00.12
07.01. 35
07.01.48
07.02.18
07.02.20
07.02.28
07.01.21
07.04.46
07.04.07

blank
columns
input
output
in format statements
in variable field
data field
operation code
block
flag
of data
re serva tion

07.03.08
07.04.07
07.03.07
02.00.09
07.01. 44
02.00.01

07.06.10
07.04.04
03.00.03
03.00.05

BOOL

03.00.08

boolean
expressions
operators
symbols
equate two

02.00.07
02.00.07
02.00.07
03.00.08

BSS

03.00.03

BUFFER

06.03.04

buffer
allocation for TAPE macro
al ternation
definition
INTRAN

OUTRAN
initiation
requirements
Buffering routines

13.02.02
5 (6/61)

06.03.04
06.03.05
07.01.18
07.01. 05
07.02.05
07.01.14
07.06.21
07.06.01
07.06.09
09.01. 01

calling
library programs
sequences

03.00.23
03.00.34

cards not assigned alter numbers

04.02.02

cC

07.04.05
07.04.07

CHANGE

05.02.01
12.12.00.02

change tape assignments

12.13.03.07

character codes

12. 01. 00. 01

characters not permitted in symbols

02.00.01

checking
I/O indicator
transmission

07.07.03
07 .. 01.11

classification of operations

03.00.01

CLEAR

07.07.08
07.07.10

clear buffer area

07.02.08

CODE

12.12.00.07

column
binary
indication missing
output
counter
INTRAN
OUTRAN

07.01.11
07.04.03
07.01. 23
07.02.07

combining conditional Debugging macros

06.04.09

Comment Attached Printer routine

09.05.02

comments
in listing

02.00.11
04. 01. 01

13.03.01
5 (6/61)

communication region
m Monitor
SHARE Monitor
Compiler
functions
conditional Debugging macros

control cards
IB Monitor
SHARE Monitor
Input Editor
conversion
and printing of a data block
of data
Input Editor
Output Editor

07.07.02
09.04.01
03.00.01
09.01.01
01.00.02
06.01. 01
06.04.01

08.02.01
09.02.01
07.03.02

07.04.02
07.03.04
07.04.06

CORE

06.02.03

counter
control by format statements
column

07.04.05

INTRAN
OUTRAN

location

07.01. 23
07.02.07
02.00.06

complement

02.00.07

complex expressions

02.00.04

conventions for conyer sion of octal integers

03.00.15

CPL control card
effect of
use of

08.02.02
08.03.01

cross reference between headed areas

03.00.42

CSKIP

07.07.08

13.03.02
5 (6/61)

current value of location counter

02.00.06

CUT

07.07.08

13.03.03
5 (6/61)

m
DATA

07.03.01
09.02.06
09.03.01

data conversion
Input Editor
control codes
Output Editor

07.03.01
07.03.08
07.03.04
07.03.01
07.04.06

data sentences
decks
error conditions in
example of
punching

07.08.01
08.03.02
07.08.02
07.06.03
07.06.02

DATE

08.02.02
12. 13. 01. 02

debugging format codes

03.00.04
03.00.06
03.00.13

Debugging macros
conditional

06.01. 01
06.01. 01
06.04.01
06.04.06
06.04.08
06.04.07
06.04.05
06.04.04
06.01. 01
06.02.01
06.02.03
06.02.08
06.02.02
06.02.05
06.02.09
06.02.10
06.01. 01
06.03.01
06.03.04
06.03.06
06.03.05
06.03.06
06.03.07

AND
EVERY
OR
UNLESS
WHEN
information
CORE
DSC
PANEL
TAPE

TRAP
UNTRAP
modal
BUFFER
FORMAT
NUCASE
ON
OFF

13.04.01
5 (6/61)

POINT
USE

06.03.03
06.03.02

Debugging Message Writer routine

09.05.04

Debugging System

07.07.02
09. 01. 02

DEC

03.00.10

decimal
integer conversion

numbers

scale

03.00.18
07.01. 30
07.02.13
07.03.05
07.03.06
03.00.10
07.01. 34
07.01.38
03.00.12
07.01.31
07.01.32
07.01. 36
07.01. 49
07.02.28
07.03.06

define
new symbol
undefined symbol
unused symbols

05.02.15
05.02.15
02.00.03

delete and insert words in a program
by ALTER
by CHANGE

05.02.06
05.02.02

delete
commentary from a .program
Macro-Instruction Name Table and Macro-Instruction
Skeleton Table from SQUOZE deck
programmer macro-instruction
words in a program
by ALTER
by CHANGE

13.04.02
5 (6/61)

05.02.09
05.02.10
05.02.10
05.02.06
05.02.02

DETAIL

04.03.02

discontinue heading

03.00.41

DISP

07.05.06
07.07.07
07.07.10

Dispatching Initiation routine

07.06. 22

dispatching routines, SHARE Monitor

07.06.21

Dispatcher Suppression routine

07.06.24

Divide Check routine

09.04.04

$ FORMAT

07.03.01
07.03.04

$ STOP

07.03.04

DSC

06.02.08

DS1 control card
effect of
use of

08.02.06
08.03.02

DUP

03.00.21

duplicate instructions

03.00.20

13.04.03
5 (6/61)

effect on indicators
INTRAN
OUTRAN

07.01. 03
07.02.03

EJECT

04.03.04

END

03.00.46
08.02.05
12.12.00.03
12. 13. 01. 02

end
of file

-of-file return
of group
of macro skeleton
of source program
of tape
of variable field

07. 01. 11
07.01. 18
07.01. 20
07.05.04
07.03.02
03.00.30
03.00.46
07.02.57
07.05.02
02.00.09

ENDATA

07.03.01

ENDFILE

07.03.02
07.03.03

ENDGRP

07.03.02
07.03.03

ENDMOD control card
effect of
use of

08.02.06
08.03.02
08.04.04

ENDRCD

07.03.02
07.03.03

ENDTAPE

07.03.02

EOF return

07.05.04

EQU

03.00.06

13.05.01
5 (6/61)

equate two
boolean symbols
ordinary symbols

03.00.08
03.00.06

equipment requirements
32K IB Monitor

12. 10. 01. 01

ERASE

05.02.09

error
analysis
bits

listings
compiler
modifications
symbol and pseudo-operation
return

ETC

07.03.08
07.05.05
07.07.06
07.07.07
04.01. 02
04.01. 02
04.01. 03
07.05.02
07.05.04
07.05.05
07.07.03
07.07.04
07.07.05
07.07.06
03.00.44
07.03.04

evaluation of expressions
arithmetic
boolean

02.00.05
02.00.07

EVERY

06.04.08

Ew.d

07.03.05

Ew. dBb

07.03.05

Ew. d. i

07.04.06

Ew. d. iBb

07.04.06

exclusive or

02.00.07

13.05.02
5 (6/61)

execute

08.03.04

execution job deck

08.03.04

EXEMPT

03.00.24

exempted symbols in library program

03.00.23

exempt from relativization

03.00.24

expansion of macros
BEGIN

IB Monitor Transmission
INTRAN

Output Editor
OUTRAN

SHARE Monitor Transmission

03.00.26
07.07.09
07.01.54
07.04.09
07.02.58
07.05.07

expressions
arithmetic
boolean
complex

02.00.03
02.00.07
02.00.04

extended operation codes

04.01. 01

extending variable field

03.00.44

13.05.03
5 (6/61)

II
fixed point numbers
binary
decimal

07.02.18
03.00.12

flag word

07.04.03

Floating Point Overflow routine

09.04.04

Floating Point Underflow routine

09.04.04

floating
mask
point
decimal number s

decimal to binary conversion
spill

07. 01. 41
07.02.24
03.00.12
07.02.14
07.02.20
07.03.05
07.03.09

footing

07:04.04

FOR

03.00.01

FORMAT

06.03.06
07.03.03

format
codes for Debugging macros
statements

06.01. 02
07.03.04
07.04.02

FVE

03.00.01

Fw.d

07.03.05
07.04.06

Fw.dBb

07.03.05
07.04.06

13.06.01
5 (6/61)

m
general purpose
Buffering routines
flags

GO

13.07.01
5 (6/61)

07.06.03
07.03.02
08.02.06
08.03.04
12. 13. 01. 02

m
HEAD

03.00.40

headed areas, cross-referencing

03.00.42

heading
characters as parameters of programmer macros

03.00.40
03.00.34
03.00.44
07.04.04

page
Hollerith data conversion

13.08.01
5 (6/61)

07.03.05
07.04.03

a
mcc

07.01. 24

mcw

07.01. 25

mIN

07.01. 28

m

Monitor
32K equipment requirements
32K operating instructions
32K programmed halts
control cards

CPL
CPLRB
DATE
DS1
ENDMOD

GO
JOB

LG
LIST
LS
MOD
PA
PAUSE
PS
STOP
Transmission macros

12. 10. 01. 01
12.10.02.01
12.10.02.02
08.02.01
08.02.02
08.02.02
08.02.02
08.02.06
08.02.06
08.02.06
08.02.01
08.02.05
08.02.04
08.02.03
08.02.06
08.02.05
08.02.07
08.02.04
08.02.07
07.07.01

mRNCH

07.01.19

ICHAR

07.01.43

ICOLIN

07.01. 24

ICOLR

07.01. 24

IDENT

09.02.04
09.03.01

identification of library programs

03.00.21

IEOR

07. 01. 52

IFILE

07.01. 20

IFIX

07.01.34

13.09.01
5 (6/61)

IF LOAT

07.01. 31

TIMAGE

07.01. 05

TINT

07.01. 30

IMASK

07.01. 39

Immovable Block flag

07.06.11

IN

07.05.04
07.07.05
07.07.09

inclusive or

02.00.07

incorporation of
headed library programs
headed SQUOZE decks
SQUO ZE decks in symbolic programs

03.00.43
03.00.46
03.00.45

indirect addressing
of operation in programmer macro
of programmer macro

03.00.31
03.00.34

information macros, Debugging System

06.01. 01
06.02.01

initiation of read

07.01.13

input
data class codes
installation standard
deck arrangement
IB Monitor
SHARE Monitor

Input Editor
control cards
da ta package
Input/Output Check routine

13.09.02
5 (6/61)

07.03.01
07.04.02
07.04.02
08.03.01
09.03.01
12.13.02.01
07.03.01
09. 01. 01
07.03.02
07.03.01
09.04.04

Input/Output System functions

01. 00. 03

insert words in a program
by ALTER
by CHANGE

05.02.06
05.02.03

instructions for operator, printing of

08.03.03

integers

02.02.02
03.00.11

internal processing
macros
INTRAN
OUTRAN
stage
INTRAN
OUTRAN
INTRAN

effect on indicators
internal processing stage
macros

mcc
mcw
mIN
mRNCH
ICHAR
ICOLR
ICOLIN
IEOR
IFILE
IFIX
IF LOAT
IIMAGE
lINT
IMASK
INTRAN
IOCTAL
IOVPCH
ffiEADY
IREDUN
13.09.03
5 (6/61)

07.01. 22
07.02.07
07.01. 04
07.02.04
07.02.01
07.03.01
07.07.02
09.01.02
07.01. 03
07.01. 04
07. 01. 24
07.01. 25
07.01. 28
07.01. 19
07.01. 43
07.01. 24
07.01. 24
07.01. 52
07.01. 20
07.01.34
07.01. 31
07.01. 05
07.01. 30
07. 01. 39
07.01. 07
07.01. 27
07.01. 50
07.01.16
07.01. 21

IRPT
ISCALE
ISCAN
ISCRIB
ISPILL
read-in stage

07.01. 52
07.01. 49
07.01. 38
07.01. 07
07.01. 46
07.01. 04

inter section

02.00.07

introduction of data
BCI
in units of bits
octal

03.00.10
03.00.16
03.00.17
03.00.14

I/O table

07.05.01
07.07.01

invalid
operation codes
symbols

04. 01. 01
04.01. 01

IOCTAL

07.01. 27

IOVPCH

07.01. 50

IPOINT

07.01.48

I-region

07.01. 05
07.02.05

ffiEADY

07.01.16

mEDUN

07.01. 21

mPT

07.01. 52

irregular characters in data

07.01.44

ISCALE

07.01.49

ISCAN

07.01. 38

ISCRIB

07.01. 07

ISPILL

07.01. 46

Iw

07.04.06

13.09.04
5 (6/61)

D
JOB control card
effect of
use of
job deck

13.10.01
4 (3/61)

09.02.01
09.03.01
08.02.01
08.03.01
01.00.04

II
LAST

12.12.00.03

LBR

03.00.21

leading
bl ank in data
zeros in symbols

07.01. 43
02.00.02

LG control card
effect of
use of

08.02.05
08.03.04

library program
calling
exempted symbols in
identification
symbols entered in dictionary

03.00.21
03.00.23
03.00.23
03.00.21
03.00.22

line counts

07.02.52

lines per page

07.04.03

LIST
control card
effect of
use of
pseudo-operation

08.02.04
08.03.03
04.03.01

lister functions

01.00.03

listings
program

09.01. 01
04.01. 01

LOAD

09.02.02
09.03.01

location
field
counter
Logical End
flag
of File flag
of Group flag

13.12.01
5 (6/61)

02.00.02
02.00.03

07.06.10
07.03.02
07.03.02
07.06.10

of Record flag
of Tape flag
LS control card
effect of
use of

07.03.02
07.06.10
07.03.02

08.02.03
08.03.01

look-ahead information

07.01. 08
07.01. 10

loss of bits in converted result

03.00.12

13.12.02
5 (6/61)

m
machine components, availability

09.06.01

MACRO

03.00.27

macro classifications

OUTRAN

07.02.06

macro-instructions
definition
end of skeleton

03.00.26
03.00.27
03.00.30

mask

02.00.06
07.01. 41
07.02.21

maximum
number of
parameters for programmer macros
programmer macros
subfield length for VFD
value of decimal numbers

03.00.33
03.00.33
03.00.19
07. 01. 37

mediary tapes
input
output

07.06.01
07.03.01
07.03.01

Mediary Tape Loader routine

09.05.01

missing column binary indication

07. 01. 11

mixed
expressions
mode tapes

02.00.07
03.00.10
07.01. 10

MOD control card
effect of
use of

08.02.06
08.03.02

modal macros
Debugging System

INTRAN
OUTRAN

13.13.01
5 (6/61)

06. 01. 01
06.03.01
07.01. 06
07.02.06

Modify and Load
functions
main features
pseudo-oper a tions

SYMBOL

01.00.03
05. 01. 01
05.02.01
05.02.06
05.02.14
05.02.01
05.02.09
05.02.12

modifications listing
sample

04.01. 02
04.01. 03

MON

03.00.01

monitor fWlctions

01.00.04

MTH

03.00.01

MTW

03.00.01

multiply defined symbols
in text
in principal pseudo-operations

02.00.02
04.01. 04
04.01.04

MZE

03.00.01

ALTER
ASSIGN
CHANGE
ERASE

13.13.02
5 (6/61)

m
naming programmer macros

03.00.29

nominal origin
conversion
· flags

07.03.02
07.03.06
07.04.07
07.03.10

NOMORG

07.03.02

no previous transmission before ffiEADY

07.01.19

Normal Dispatching routine

07.06.23

not

02.00.07

Not-In return

07.05.04
07.07.05

Not-Out return

07.05.05
07.07.07

NUCASE

06.03.05

numeric modifiers for field specifications

07.03.07

Nw

07.03.06
07.04.07

NwO

07.03.06
07.04.07

13.14.01
5 (6/61)

OBCC

07.02.09

OBCW

07.02.10

OBIN

07.02.12

object program, termination

06.01. 01

OBLANK

07.02.08

OCOLC

07.02.08

OCOLIN

07.02.07

OCOLR

07.02.07

OCT

03.00.14

octal
data
integers

conventions for conversion of

03.00.14
03.00.14
03.00.18
07.02.10
07.03.06
03.00.15

OEOR

07.02.32

OFIX

07.02.18

OFLFIX

07.02.16

o FLOAT

07.02.14

OFXFLO

07.02.20

OHEAD

07.02.52

OIMAGE

07.02.05

OINT

07.02.13

OMASK

07.02.21

omission of zero subfields

02.00.09
02.00.10

13.15.01
5 (6/61)

ones complement

02.00.07

OOCTAL

07.02.10

OOVPCH

07.02.30

operating instructions
32K IB Monitor
SHARE Monitor

12.10.02.01
12.13.00.00

operations
arithmetic
boolean

02.00.05
02.00.07

operation codes
listing of
extended
invalid

02.00.01

OPOINT

07.02.28

or

02.00.07

OR

06.04.07

OREADY

07.02.49

OREDUN

07.02.55

ORG

03.00.01

origin

03.00.01

ORPT

07.02.32

OSCALE

07.02.28

OSCRm
m Monitor
SHARE Monitor

07.02.40
07.02.34

OSPACE

07.02.52

OSPILL

07.02.25

13.15.02
5 (6/61)

04. 01. 01
04. 01. 01

OTPEND

07.02.57

OUT

07.05.05
07.07.06
07.07.10

output
buffer alternation
modes
types

OUTRAN
effect on indicators
macros

OBCC
OBCW
OBIN
OCOLC
OCOLIN
OCOLR
OFIX
OFLFIX
OF LOAT
OFXFLO
OHEAD
OIMAGE
OINT
OMASK
OOCTAL
OOVPCH
OPOINT
OREADY
OREDUN
ORPT
OSCRm
m Monitor
SHARE Monitor
OSPACE
OSPILL
OTPEND
13.15.03
5 (6/61)

07.02.46
07.02.49
07.02.34
07.02.35
07.02.40
07.02.41
07.02.05
07.07.02
09.01.02
07.02.03
07.02.08
07.02.10
07.02.12
07.02.07
07.02.07
07.02.07
07.02.18
07.02.16
07.02.14
07.02.20
07.02.52
07.02.05
07.02.13
07.02.21
07.02.10
07.02.30
07.02.28
07.02.49
07.02.55
07.02.32
07.02.40
07.02.34
07.02.52
07.02.25
07.02.57

OUTRAN
OZERO
Output Editor
macros

07.02.05
07.02.29
07.04.01
09.01. 02
07.04.01

overpunching

07.01. 50
07.02.30
07.03.06
07.04.07

Ow

07.03.05
07.04.06

OZERO

07.02.29

13.15.04
5 (6/61)

PA control card
effect of
use of

08.02.05
08.03.03

page
ejection
suppression of
footing
heading
numbering

07.04.03
07.04.04
07.04.04
07.02.52
07.04.03

PANEL

06.02.02

parentheses
in format statements
not permitted for grouping

07.03.07
02.00.05

PAUSE control card
effect of
use of

08.02.07
08.03.01
08.03.03

permissible characters

12. 01. 00. 01

persistent redundancy

07.01. 11
07.01. 18
07. 01. 21

phases, SHARE Monitor

07.03.01

PON

03.00.01

pP

07.03.06

prefix code s

03.00.01

print counter

07.04.05

priority assignment

07.07.05

processing controlled by monitor

08. 01. 01

programmer macros

03.00.27

13.16.01
5 (6/61)

programmed halts
32K IB Monitor

12.10.02.02

PS control card
effect of
use of

08.02.04
08.03.01

pseudoinstructions
undefined symbols in principal
multiply defined symbols in principal
operations
circular definition, indication of
listing

04.01. 03
04.01. 04
04.01. 03
04.03.01

PTH

03.00.01

PTW

03.00.01

punch an absolute binary deck

08.03.01
09.02.02
09.02.03

punch a new SQUOZE deck

08.03.01
09.02.02
09.02.03

PZE

02.00.01
03.00.01

13.16.02
5 (6/61)

III
07.05.02
07.05.04
07.07.03
07.07.09

READ

Read
Logical Record routine
Word routine

07.06.05
07.06.14

read-in macros

07.01.07

record
types

INTRAN
OUTRAN
too long for I-region

07.01.03
07.02.03
07.01.09
07.01. 21

redefine
I-region

INTRAN
OUTRAN
programmer macros
symbols defined by EQU, SYN, or BOOL
reference
systems
alter number s
relative numbers
to unnamed instructions
relative
expressions
numbers
instructions not assigned
negative

07.01.05
07.02.05
03.00.34
05.02.15

04.02.02
04.02.02
02.00.04

02.00.04
04.02.01
04.02.01

relativization of library programs
with no exempt symbols

03.00. 23
03.00.26

remarks

02.00.11

repeat execution of macros

INTRAN
OUTRAN
13.18.01
5 (6/61)

07.01.52
07.02.32

repetition of field specifications

07.03.08
07.04.07

reproduce system tape

12.12.00.04

restrictions
ALTER
arithmetic expressions
binary integer s

CHANGE
decimal
integers
numbers

floating point
masks
octal numbers

SYMBOL

05.02.07
02.00.05
07.01. 29
05.02.07
03.00.19
07.01. 31
03.00.13
07.01.37
07.01. 39
07.01. 31
02.00.06
03.00.15
03.00.19
07.01.28
05.02.07

RETURN

03.00.37

REWIND

07.07.04
07.07.09

Rewind Tape routine

07.06.09

ROW

12.12.00.02

rules for decimal number s

03.00.12

RUSH

07.05.06
07.07.05
07.07.09

13.18.02
5 (6/61)

saving
data channel trap conditions
index register contents
register contents
INTRAN
OUTRAN
sense indicators

03.00.35
03.00.35
07.01. 03
07.02.02
03.00.35

scale factor

03.00.12

SCAT control card

09.02.03
09.03.01

sense indicator instructions

02.00.06

Sequence flag

07.06.12

setting modal macros to normal
Debugging System
INTRAN
OUTRAN

06.03.05
07.01. 07
07.02.05

SHARE Monitor
control cards
Dispatching routines
library tape
operation
phases
restart
system tape
tape
format
usage
Transmission macros

09.02.01
07.06.21
12.12.00.01
12.12.00.05
12.13.03.01
07.04.01
09.01.01
12.13.05.01
12.12.00.01
12.12.00.01
09.01. 02
07.05.01

single text SQUOZE decks

09.02.03

SIX

03.00.01

source program, end of

03.00.46

SPACE

04.03.04

13.19.01
5 (6/61)

spacing
before printing
control for off-line printing
special
output conditions
purpose
Buffering routines
flags
spill conditions

SQUOZE
decks
combined with symbolic decks
format
operation codes

07.03.07
07.04.04
07.04.07
07.02.52

07.02.37
07.02.42
07.06.13
07.06.10
07.01.46
07.02.25

01.00.02
09.02.03
03.00.46
12.03.00.00
12.02.00.01

SQZ

03.00.45
08.02.03
08.03.01

stack table

07.05.01
07.07.01

standard buffer for TAPE

06.02.05
06.03.04

step
files
records

07.05.03
07.05.02

STEPF

07.05.03
07.05.04

STEPR

07.05.02
07.05.04

STOP control card
effect of
use of

13. 19. 02
5 (6/61)

08.02.07
08.03.03

storage allocation

07.07.02

Store Location and Trap

09.04.04

SVN

03.00.01

Sx.y.z

07.03.06

Symbol
flag
listing
sample

07.06.12
04.01. 04
04.01. 05

SYMBO L pseudo-operation

example of use of
restrictions on use of
symbols
boolean
equate two
listing of invalid
undefined in text
undefined in principal pseudO-instructions
multiply defined in principal pseudo-instructions
multiply defined in text

05.02.12
05.02.13
05.02.13
02.00.01
03.00.08
03.00.06
04.01. 01
04.01. 04
04.01. 03
04.01. 03
04.01.04

symbolic modifications, position in SQUOZE
deck

08.03.02
08.03.04

symmetric difference

02.00.07

SYN

03.00.08

SYSBAD routine

09.04.02

SYSB FD routine

07.06.04

SYSBKS routine

07.06.08

SYSB LK routine

07.06.13
07.06.17

SYSCAP routine

09.05.02

SYSDIS routine

07.06.23

13.19.03
5 (6/61)

SYSDPI routine

07.06.22

SYSDPS routine

07.06.24

SYSERR routine

09.04.02

SYSINF routine

07.06.13
07.06.18

SYSIOC routine

09.04.04

SYSMOT

07.03.02

SYSMTL routine

09.05.01

SYSNPT routine

07.06.05

SYSORG

09.06.01

SYSRTK routine

07.03.01
07.03.02
07.03.09
07.06.12

SYSRWD routine

07.06.09

SYSSTR routine

09.04.04

SYSTDC routine

09.04.04

SYSTEM

07.07.03
07.07.04
07.07.05

System
macros
tapes

03.00.27
09.01. 02

SYSTM1

07.07.02

SYSTM2

07.07.02

SYSTM3

07.07.03

SYSTOF routine

09.04.04

13.19.04
5 (6/61)

SYSTRC routine

09.04.04

SYSTRP routine

09.04.04

SYSTUF routine

09.04.04

SYSWHT routine

07.06.13
07.06.19

SYSWTK routine

07.03.02
07.03.10
07.06.13
07.06.19

13.19.05
5 (6/61)

II
table generated by TRAP

06.02.09

TAPE
allocation of buffer for

06.02.05
06.02.05
06.03.04
06.02.06

examples of
Tape Redundancy Check routine
tape
reassignment
redundancy error
usage
m Monitor
SHARE Monitor

09.04.04

12.13.04.01
07.02.55
12.10.02.01
09.01.02

TCD
effect on input for execution

03.00.47
08.02.05

terminal blanks in data

07.01.44

TITLE pseudo-operation

04.03.03

title line

04.01.01

too full return

07.05.05

tr ansfer points

09.04.01

Transmission
macros
m Monitor
SHARE Monitor
routines

07.07.01
07.05.01
07.07.02
09.01.02

trap table

06.02.09

TRAP

06.02.09

type 1 errors

07.03.09

type 2 errors

07.03.09
07.03.10

type 3 errors

07.03.09
07.03.10

13.20.01
5 (6/61)

II
undefined symbols
in principal pseudo-instructions
in text

02.00.02
04.01. 03
04.01.04

Unexpected Error routine

09.04. 02

union

02.00.07

UNLESS

06.04.05

UN LIST

04.03.01

unmodified left parentheses

07.03.08

UNTRAP

06.02.10

USE

06.03.02

use of
* as a
term
parameter of a programmer macro
boolean symbols
LBR in programmer macros
output buffer area
programmer macros within programmer macros

02.00.06
03.00.33
02.00.10
03.00.32
07.02.45
03.00.33

13.21.01
5 (6/61)

I!I
variable field
end of
extending

02.00.08
02.00.09
03.00.44

variable field-definition

03.00.17

VFD

03.00.17

13.22.02
5 (6/61)

II
WEOF

07.05.03

wH

07.03.05
07.03.07
07.04.06

WHEN

06.04.04

WRITE

07.05.03
07.07.03
07.07.09

Write
a Block Flag routine
a Terminating or Non-data flag routine
Data Word routine

07.06.17
07.06.19
07.06.18

write end of file

07.05.03

WRITEF

07.07.04
07.07.09

write library tape

12.12.00.05

Write Logical Record routine

07.06.06

write-out
macros
stage

07.02.34
07.02.04

WST

12.12.00.02

WX

07.03.06
07.04.07

13.23.02
5 (6/61)

XCOUNT

07.04.05
07.05.09

XEJECT

07.04.04
07.04.09

XFOOT

07.04.04
07.04.09

XFORM

07.04.01
07.04.09

XHEAD

07.04.03
07.04.09

XPRINT

07.04.02
07.04.09

XPUNCH

07.04.03
07.04.09

XSPACE

07.04.04
07.04.09

13.24.01
4 (3/61)

zero subfields

13.26.02
5 (6/61)

02.00.09

International Business Machines Corporation
Data Processing Division, 112 East Post Road, White Plains, N. Y.

Printed in U. S. A.

328-1219



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.3
Linearized                      : No
XMP Toolkit                     : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:56:37
Producer                        : Adobe Acrobat 9.13 Paper Capture Plug-in
Modify Date                     : 2009:09:12 11:55:21-07:00
Create Date                     : 2009:09:12 11:55:21-07:00
Metadata Date                   : 2009:09:12 11:55:21-07:00
Format                          : application/pdf
Document ID                     : uuid:34b028a0-5784-40e8-9cc4-6588cc92d0a4
Instance ID                     : uuid:bd1e4d0e-bbbc-4ffa-ac56-c8ce3cbe3d2a
Page Layout                     : SinglePage
Page Mode                       : UseOutlines
Page Count                      : 474
EXIF Metadata provided by EXIF.tools

Navigation menu