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 .
Page Count: 474
Download | |
Open PDF In Browser | View 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 AF13, 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 : 474EXIF Metadata provided by EXIF.tools