11.07.2015 Views

Program Logic Manual - All about the IBM 1130 Computing System

Program Logic Manual - All about the IBM 1130 Computing System

Program Logic Manual - All about the IBM 1130 Computing System

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

File Number <strong>1130</strong>-36Form Y-26-3714-2<strong>Program</strong> <strong>Logic</strong><strong>IBM</strong> <strong>1130</strong> Disk Monitor <strong>Program</strong>ming <strong>System</strong>, Version 2<strong>Program</strong> <strong>Logic</strong> <strong>Manual</strong><strong>Program</strong> Numbers<strong>1130</strong>-0 S-005<strong>1130</strong>-OS-006This publication describes <strong>the</strong> internal logic of <strong>the</strong> <strong>IBM</strong> <strong>1130</strong> DiskMonitor <strong>Program</strong>ming <strong>System</strong>, Version 2. The contents are intendedfor use by persons involved in program maintenance, and for systemprogrammers who are altering <strong>the</strong> program design. <strong>Program</strong> logicinformation is not necessary for <strong>the</strong> use and operation of <strong>the</strong> program;<strong>the</strong>refore, distribution of this manual is limited to those who areperforming <strong>the</strong> aforementioned functions.Restricted Distribution


PREFACEThis publication is composed of four parts. Part 1is a description of each of <strong>the</strong> components of <strong>the</strong>monitor system. Sections of Part 1 are devoted to:<strong>System</strong> Communication areas<strong>System</strong> LoaderCold Start <strong>Program</strong>sResident MonitorSupervisorCore Image LoaderCore Load BuilderDisk Utility <strong>Program</strong> (DUP)Assembler <strong>Program</strong>FORTRAN Compiler<strong>System</strong> LibraryStand-alone UtilitiesEach description includes a discussion of <strong>the</strong> logicalstructure and functional operation of <strong>the</strong> component,table formats, and core storage layouts.Part 2 is a description of <strong>the</strong> techniques and proceduresfor use by personnel involved in systemmaintenance and/or modification during error diagnosisand program analysis.Part 3 is <strong>the</strong> flowcharts for <strong>the</strong> monitor systemcomponents described in Part 1.Part 4 is <strong>the</strong> appendices provided to supportParts 1 through 3.CONVENTIONS OBSERVEDThe following conventions have been observed in thispublication:• Numbers written in <strong>the</strong> form /XXXX are hexadecimalnumbers; numbers written without apreceding slash (/) are decimal numbers.• The diagrams showing <strong>the</strong> layouts of core storageare intended to illustrate <strong>the</strong> contents of corestorage and <strong>the</strong>ir relative locations; no exactrepresentation of size or proportion is intended.• The use of absolute addresses has been avoidedin this manual; symbolic addresses have beenused instead. The absolute equivalents to <strong>the</strong>seaddresses may be found in <strong>the</strong> listing in AppendixB.PREREQUISITE PUBLICATIONSEffective use of this publication requires that <strong>the</strong>reader be familiar with <strong>the</strong> following publications:<strong>IBM</strong> <strong>1130</strong> Functional Characteristics (Form A26-5881)<strong>IBM</strong> <strong>1130</strong> Input/Output Units (Form A26-5890)<strong>IBM</strong> <strong>1130</strong> Assembler Language (Form C26-5927)<strong>IBM</strong> <strong>1130</strong> Subroutine Library (Form C26-5929)<strong>IBM</strong>' <strong>1130</strong> Disk Monitor <strong>System</strong>, Version 2, <strong>Program</strong>mingand Operator's Guide (Form C26-3717)Third Edition (Feb 1969)This is a major revision of <strong>the</strong> previous edition of this manual (Y26-3714-1),which is now obsolete. The manual has been updated to agree with Modification5 of <strong>the</strong> <strong>1130</strong> Disk Monitor <strong>System</strong>, Version 2. The new materialincludes information on changes and additions to <strong>the</strong> Monitor <strong>System</strong>, whichgive <strong>the</strong> programmer <strong>the</strong> ability to access <strong>the</strong> Graphic Subroutine Packageto support <strong>the</strong> <strong>1130</strong>/2250 system in a stand-alone environment. It alsoincludes information on RPG and Disk Data File Conversion <strong>Program</strong> (DFCNV)Text changes are indicated by a vertical line to <strong>the</strong> left of <strong>the</strong> affected text.Figure changes are indicated by a bullet to <strong>the</strong> left of <strong>the</strong> figure caption.Specifications contained herein are subject to change from time to time.Any such change will be reported in subsequent revisions or TechnicalNewsletters.Requests for copies of <strong>IBM</strong> publications should be made to your <strong>IBM</strong> representativeor <strong>the</strong> <strong>IBM</strong> branch office serving your locality.A form is provided at <strong>the</strong> back of this publication for reader's comments.If <strong>the</strong> form has been removed, comments may be addressed to <strong>IBM</strong> NordicLaboratory, Technical Communications, Box 962, Lidings 9, Sweden.ID International Business Machines Corporation, 1967, 1968


CONTENTSSECTION 1. INTRODUCTION 1 SECTION 7. CORE IMAGE LOADER 27Flowcharts 27SECTION 2. COMMUNICATIONS AREAS 3 Phase 1 27In-core Communications Area (COMMON) 3 Phase 2 27Disk-resident Communications Area (DCOM) 3 Core Layout 28Drive- and Cartridge-dependent Parameters 3 Debugging/Analysis Aids 30SECTION 3. SYSTEM LOADER 9 SECTION 8. CORE LOAD BUILDER 33Flowcharts 9 Flowcharts 33Phase 1 9 General Comments 33Functions 9 Overlay Scheme and Core Layout 33Buffers and I/O Areas 9 Disk Buffers 34Communication From Phase 1 to Phase 2 9 Core Image Buffer (CIB) 34Phase 2 Load Table 35Functions, Initial Load and Reload 10 EQUAT Table 35Functions, Initial Load Only 10 LOCAL, NOCAL, FILES, and G2250 Information 35Functions, Reload Only 10 ISS Table 35Buffers and I/O Areas 10 Interrupt Branch Table (IBT) 35Subphases 11 Incorporating <strong>Program</strong>s Into <strong>the</strong> Core Load 36Subphase 1 11 Pass 1 36Subphase 2 12 Pass 2 36Subphase 3 13 LOCALS and SOCALs 37Core Layout 13 Interrupt Level Subroutines (ILSs) 37Cartridge Identification Sector 13 Transfer Vector (TV) 37<strong>System</strong> Location Equivalence Table (SLET) 14 Linkage to LOCALS 37Reload Table 14 Linkage to <strong>the</strong> <strong>System</strong> Overlays (SOCALs) 38DEFINE FILE Table 39SECTION 4. COLD START PROGRAMS 1 5 Phase Descriptions 40Flowcharts 15 Phase 0 40Cold Start Loader 15 Phase 1 40Cold Start <strong>Program</strong> 15 Phase 2 40Core Layout 15 Phase 3 41Phase 4 41SECTION 5. RESIDENT MONITOR 17 Phase 5 41Flowcharts 17 Phase 6 42COMMA 17 Phase 7 42Skeleton Supervisor 17 Phase 8 42CALL LINK, CALL DUMP, CALL EXIT Processor 17 Phase 9 42E Error Traps 17 Phase 10 42ILSs 17 Phase 11 42Disk I/O Subroutine 17 Phase 12 42Phase 13 42SECTION 6. SUPERVISOR 19 Debugging/Analysis Aids 42Flowcharts 19Monitor Control Record Analyzer - Phase 1 19 SECTION 9. DISK UTILITY PROGRAM (DUP) 43JOB Control Record Processing - Phase 2 20 Flowcharts 43<strong>System</strong> Update <strong>Program</strong> 20 DUP Operatior 43Delete TEMPLET - Phase 3 21 Core Storage Layout 43XEQ Control Record Processor - Phase 4 21 DUP Control Records 44Supervisor Control Record Processing - Phase 521 Location Equivalence Table (LET)/Fixed LocationLOCAL/NOCAL Control Record Processing 21 Equivalence Table (FLET) 44FILES Control Record Processing 21 I DCOM Values 45G2250 Control Record Processing 21 IOAR Headders 45EQUAT Control Record Processing 22 DUP Concatenated Communications Area (CATCO) 45Supervisor Control Record Area (SCRA) 22 DUP Phase Descriptions 49<strong>System</strong> Core Dump <strong>Program</strong> - Phase 6 23 DUP COMMON (DUPCO) 49Auxiliary Supervisor - Phase 7 23 DUP CONTROL (DCTL) 51G2250 Control Record Processor 24 STORE 52Core Layout 24 FILEQ 54iii


E■DU MP 55 Phase 4 83DUMPLET/DUMPFLET 56 Phase 5 84DELETE 57 Phase 6 84DEFINE 57 Phase 7 85DEXIT 58 Phase 8 852501/1442 Card Interface (CFACE) 59 Phase 9 86Keyboard Interface (KFACE) 60 Phase 10 861134/1055 Paper Tape Interface (PEACE) 60 Phase 11 87PRECI 62 Phase 12 88DUP Diagnostic Aids 63 Phase 13 89General 63 Phase 14 89PRECI 63 Phase 15 90STORE 63 Phase 16 91Phase 17 92SECTION 10. ASSEMBLER PROGRAM 65 Phase 18 93Flowcharts 65 Phase 19 94Introduction 65 Phase 20 94<strong>Program</strong> Operation 65 Phase 21 95Assembler Communications Area 66 Phase 22 95Overlay Area 66 Phase 23 95Symbol Table 66 Phase 24 96Intermediate I/O 67 Phase 25 96Double-Buffering 67 Phase 26 96Phase Descriptions 67 Phase 27 96Phase 0 67Phase 1 67 SECTION 12. SYSTEM LIBRARY 99Phase 1A 67 Flowcharts 99Phase 2 68 Contents List 99Phase 2A 1 68 Interrupt Level Subroutines 105Phase 3 68 ILS 02 105Phase 4 68 ILSO4 105Phase 5 68 Mainline <strong>Program</strong>s 105Phase 6 69 Disk Initialization <strong>Program</strong> (DISC) 105Phase 7 69 Print Cartridge ID (IDENT) 106Phase 7A 69 Change Cartridge ID (ID) 106Phase 8 69 Disk Copy (COPY) 106Phase 8A 69 Delete CIB (DLCIB) 107Phase 9 69 Dump SLET Table (DSLET) 107Phase 10 70 DISK Data file Conversion <strong>Program</strong> (DFCNV) 107. 1Phase 11 71 Flowcharts 107.1Phase 12 71 General <strong>Program</strong> Description 107.1Phase 13 71 Part 1 Entry point 107. 1ERMSG 71 Part 1 Internal Subroutines 107.1ARCV 71.1 Part 2 Entry point 107.1APCV 71.1 Part 2 Internal Subroutines 107.1Core Layout 71.1 Part 3 Entry point 107.1Part 3 Internal Subroutines 107.2SECTION 11. FORTRAN COMPILER 73 Part 4 Field Conversion Subroutines 107.2Flowcharts 73 Part 4 Internal Subroutines 107. 3General Compiler Description 73 Part 4 External Subroutines 107. 3Phase Objectives 73 Synchroneous Communications Adapter (SCAT 1) 108Core Layout 75 Synchroneous Communications Adapter (SCAT 1) 108. 5FORTRAN Communications Area 76 Synchroneous Communications Adapter (SCAT 1) 108.12Phase Area 77String Area 77 SECTION 1 3. SYSTEM DEVICE SUBROUTINES 109Symbol Table 78Statement String 80 SECTION 14. STAND-ALONE UTILITIES 111Compilation 81 Disk Cartridge Initalization <strong>Program</strong> (DCIP) 111Compiler I/O 81 Disk Initialization 111Fetching Compiler Phase 81 Disk Dump 111Phase Description 82 Disk Copy 112Phase 1 82 UCART 112Phase 2 82Phase 3 83 PROGRAM ANALYSES PROCEDURES 113iv


Introduction<strong>Program</strong> Analysis Procedures SummaryIdentification of <strong>the</strong> Failing Component or FunctionSubroutine Error Number/Error Stop ListsCore Dump ProcedureCore Location ProcedureCore Location ProceduresFACArithmetic and Function Subprogram Error IndicatorsLIBF TVLIBF TV SOCAL LinkageCALL TVDisk I/O SubroutineDFT (DEFINE FILE Table)ArrysConstants and IntegersCOMMONIn-core SubroutinesLOCAL/SOCAL Flipper (FLIPR)LOCAL AreaSOCAL AreaGeneralized Subroutine Maintenance/Analysis ProcedureTrace Back ProceduresSubroutine Looping Capabilities<strong>System</strong> Device SubroutinesLibrary SubroutinesSubroutine Data Charts<strong>System</strong> Device Subroutine for Keyboard/ConsolePrinter<strong>System</strong> Device Subroutine for 1442/1442<strong>System</strong> Device Subroutine for 2501/1442<strong>System</strong> Device Subroutine for Console Printer<strong>System</strong> Device Subroutine for 11 32<strong>System</strong> Device Subroutine for 1403<strong>System</strong> Device Subroutine for 1134/1055<strong>System</strong> Device Subroutine for Disk - DISKZCARDZPNCHZREADZTYPEZWRTYZPRNZPRNTZPAPTZCARDOCARD1READO 156113 READ1 157113 PNCHO 1.58113 PNCH1 160115 TYPEO 162115 PRNT1 164115 PRNT3 166115 PAPT1 168115 PAPTN 170118 PLOT1 172118 OMPR1 174119 WRTYO 176119 DISK1 177119 DISKN 180119119119119 FLOWCHARTS 185119 <strong>System</strong> Overview 185120 <strong>System</strong> Loader 1.86120 Cold Start <strong>Program</strong>s 192120 Supervisor 1.93120 Core Image Loader 203120 Core Load Builder 205120 Disk Utility <strong>Program</strong> 207120 Assembler <strong>Program</strong> 220120 FORTRAN Compiler 240125 <strong>System</strong> Library 274125 APPENDIX A. EXAMPLES OF FORTRAN OBJECT CODING. 307126128 APPENDIX B. LISTINGS 323130 DCOM 323132 Resident Image 324134 Resident Monitor 324136 DISKZ 329138 Equivalences 334140 Cold Start <strong>Program</strong> 336142 Cross-Reference 337144145 APPENDIX C. ABBREVIATIONS 339146147 APPENDIX D. MICROFICHE 345148150 APPENDIX E. DISK DATA FORMAT 349152154 INDEX 350


ILLUSTRATIONSFigures1. Core Layout During <strong>System</strong> Loader Operation2. Core Layout During Cold Start3. Core Layout During Supervisor Operation4. Core Layout on Supervisor Entry at $EXIT (DISKZin Core).5. Core Layout on Supervisor Entry at $EXIT (DISKZNot in Core)6. Core Layout on Supervisor Entry at $DUMP7. Core Layout on Supervisor Entry at $LINK (Link inDisk <strong>System</strong> Format)8. Core Layout on Supervisor Entry at $LINK (Link inCore Image Format)13 9. Core Layout During Core Load Builder Operation • . 3416 10. Layout of <strong>the</strong> Transfer Vector 3825 11. SOCAL Linkage in <strong>the</strong> LIBF Transfer Vector 3912. CALL Transfer Vector for SOCALs 3928 13. Core Layout during Disk Utility <strong>Program</strong> Operation. 4314. Core Layout During Assembler <strong>Program</strong>29 Operation 7229 15. Core Layout During FORTRAN CompilerOperation 7630 16. FORTRAN Scan Example 9317. Core Layout During User Core Load31 Execution 119Tables1. The Contents of COMMA2. The Contents of DCOM3. The Contents of <strong>the</strong> FORTRAN CommunicationsArea4. The Contents of <strong>the</strong> FORTRAN Symbol TableID Word4 5. FORTRAN Statement ID Word Type Codes 806 6. Conversion of FORTRAN FORMATSpecifications 8777 7. FORTRAN Forcing Table 918. Error Number List. . . . 11679 9. Error Stop List 118Flowdiagrams1. General Procedure for <strong>Program</strong> Analysis2. Procedure for Identification of <strong>the</strong> FailingComponent or Function3. Core Dump Procedure113 4. Generalized Subroutine Maintenance/AnalysisProcedure114 5. Trace Back Procedures115121122FlowchartsDMS01. Disk Monitor <strong>System</strong>, <strong>System</strong> Overview 185SYL1. <strong>System</strong> Loader, General Flow 186SYL2. <strong>System</strong> Loader, Phase 1 187SYL3. <strong>System</strong> Loader, Phase 2 188SYL4. <strong>System</strong> Loader, Phase 2 189SYL5. <strong>System</strong> Loader, Phase 2 190CST1.CST2.SUP1.SUP2.SUP3.SUPO4.Cold Start LoaderCold Start <strong>Program</strong>Supervisor, Skeleton SupervisorSupervisor, Monitor Control Record AnalyzerSupervisor, Job ProcessorSupervisor, Delete (Temporary Items) Let191192193194195196vii


SUP05„ Supervisor, XEQ Processing 197SUP060 Supervisor, Control Record Analyzer • 198SUP7„ Supervisor, Control Record Processor 199SUP8„SUP9„Supervisor, Control Record Processor • • 200Supervisor, Control Record Processor 201SUP10• Supervisor, Auxiliary Supervisor 202CIL1. Core Image Loader, Phase 1 203CIL2. Core Image Loader, Phase 2 204CLB01- Core Load Builder, Initialization 205CLB02. Core Load Builder, Master Control 206DUP1. Disk Utility <strong>Program</strong>, CCAT 207DUP2. Disk Utility <strong>Program</strong>, DCTL 208DUP3. Disk Utility <strong>Program</strong>, STORE 209DUPO4. Disk Utility <strong>Program</strong>, FILEQ 210DUP5. Disk Utility <strong>Program</strong>, FILEQ 211DUP6. Disk Utility <strong>Program</strong>, FILEQ 212DUP7. Disk Utility <strong>Program</strong>, DDUMP 213DUP8. Disk Utility <strong>Program</strong>, DDUMP 214DUP09• Disk Utility <strong>Program</strong>, DUMPLET/DUMPFLET 215DUP10. Disk Utility <strong>Program</strong>, DELETE 216DUP11. Disk Utility <strong>Program</strong>, DEFINE 217DUP12. Disk Utility <strong>Program</strong>, DEXIT 218DUP13. Disk Utility <strong>Program</strong>, PRECI 219ASM01. Assembler <strong>Program</strong>, General Flow 220ASMO2. Assembler <strong>Program</strong>, Phase 0 221ASM3. Assembler <strong>Program</strong>, Phase 1 222ASM4. Assembler <strong>Program</strong>, Phase lA 223ASM5. Assembler <strong>Program</strong>, Phase 2 224ASM6. Assembler <strong>Program</strong>, Phase 2A 225ASM7. Assembler <strong>Program</strong>, Phase 3 226ASMO8. Assembler <strong>Program</strong>, Phase 4 227ASM9. Assembler <strong>Program</strong>, Phase 5 228ASM10. Assembler <strong>Program</strong>, Phase 6 229ASM11. Assembler <strong>Program</strong>, Phase 7 230ASM12 • Assembler <strong>Program</strong>, Phase 7A 231ASM13. Assembler <strong>Program</strong>, Phase 8 232ASM14. Assembler <strong>Program</strong>, Phase 8A 233ASM15. Assembler <strong>Program</strong>, Phase 9 234ASM16. Assembler <strong>Program</strong>, Phase 9 235ASM17. Assembler <strong>Program</strong>, Phase 9 236ASM18. Assembler <strong>Program</strong>, Phase 10 237ASM19. Assembler <strong>Program</strong>, Phase 10A 238ASM20. Assembler <strong>Program</strong>, Phase 11 239A5M21. Assembler <strong>Program</strong>, Phase 12 240ASM22 . Assembler <strong>Program</strong>, Error Message Phase 241ASM23. Assembler <strong>Program</strong>, Read Conversion Phase 242ASM29 • Assembler <strong>Program</strong>, Punch Conversion Phase 243ASM2S. Assembler <strong>Program</strong>, Phase 1 3 243.1ASM26. Assembler <strong>Program</strong>, Phase 13 243.2FOR1. FORTRAN Compiler, General Flow 244FOR2. FORTRAN Compiler, Phase 1 245FOR3. FORTRAN Compiler, Phase 2 246FOR4. FORTRAN Compiler, Phase 3 247FORDS. FORTRAN Compiler, Phase 4 248FOR6. FORTRAN Compiler, Phase 4 249FOR7. FORTRAN Compiler, Phase 5 250FOR8. FORTRAN Compiler, Phase 5 251FOR9. FORTRAN Compiler, Phase 6 252FOR10. FORTRAN Compiler, Phase 7 253FOR11. FORTRAN Compiler, Phase 8 254FOR12. FORTRAN Compiler, Phase 9 255FOR13. FORTRAN Compiler, Phase 10 256FOR14. FORTRAN Compiler, Phase 11 257FOR15. FORTRAN Compiler, Phase 12 258IFOR16. FORTRAN Compiler, Phase 13 259FOR17. FORTRAN Compiler, Phase 14 260FOR18. FORTRAN Compiler, Phase 15 261FOR19. FORTRAN Compiler, Phase 16 262FOR20. FORTRAN Compiler, Phase 17 262FOR21. FORTRAN Compiler, Phase 18 269FOR22. FORTRAN Compiler, Phase 19 265FOR23. FORTRAN Compiler, Phase 20 266FOR24. FORTRAN Compiler, Phase 21 267FOR25. FORTRAN Compiler, Phase 22 268FOR26. FORTRAN Compiler, Phase 23 269FOR27. FORTRAN Compiler, Phase 24 270FOR28. FORTRAN Compiler, Phase 25 271FOR29. FORTRAN Compiler, Phase 26 272FOR30 FORTRAN Compiler, Phase 27 273UTL01 <strong>System</strong> Library, ID 274UTL02. <strong>System</strong> Library, FSLEN/FSYSU 275un03. <strong>System</strong> Library, ADRWS 276UTL4. <strong>System</strong> Library, DISC • 277UTL5. <strong>System</strong> Library, RDREC . 278UTL6. <strong>System</strong> Library, IDENT .. 279UTL7. <strong>System</strong> Library, CALPR . 280UTL8. <strong>System</strong> Library, COPY • • 281UTL9. <strong>System</strong> Library, DLCIB . • 282UTL10. <strong>System</strong> Library, DSLET 283UTL11. <strong>System</strong> Library, MODIF 284UTL12. <strong>System</strong> Library, MODIF 285UTL13. <strong>System</strong> Library, MODIF 286DCN10. <strong>System</strong> Library, DFCNV CHART A 286. 1DCN11. <strong>System</strong> Library, DFCNV CHART B 286. 2DCN12. <strong>System</strong> Library, DFCNV CHART C 286. 3DCN1 3. <strong>System</strong> Library, DFCNV CHART D 286. 4DCN14. <strong>System</strong> Library, DFCNV CHART E 286. 5DCN1 5. <strong>System</strong> Library, DFCNV CHART F 286. 6DCN16• <strong>System</strong> Library, DFCNV CHART G 286. 7SCA1. <strong>System</strong> Library, SCAT2 Call Processing 287SCA2. <strong>System</strong> Library, SCAT2 Interrupt Processing 288SCA3. <strong>System</strong> Library, SCAT2 Interrupt Processing 289SCA4. <strong>System</strong> Library, SCAT3 Call Processing 290SCA5. <strong>System</strong> Library, SCAT3 Interrupt Processing 291SCA6. <strong>System</strong> Library, SCAT3 Interrupt Processing 292SCA7. <strong>System</strong> Library, SCAT3 Interrupt ProcessingSCA8. <strong>System</strong> Library, SCAT3 Interrupt Processing. . •293.1SCA09 • <strong>System</strong> Library, SCAT3 Interrupt Processing. , 293.2FIO01. <strong>System</strong> Library, FORTRAN Non-disk I/O 294FI2. <strong>System</strong> Library, FORTRAN Non-disk I/O 295FI3. <strong>System</strong> Library, FORTRAN Non-disk I/O 296F1004. <strong>System</strong> Library, CARDZ 297FI5. <strong>System</strong> Library, CARDZ 298FI6. <strong>System</strong> Library, PRNTZ 299FI7. <strong>System</strong> Library, PAPTZ 300FI8. <strong>System</strong> Library, READZ 301FI9. <strong>System</strong> Library, WRTYZ 302H010. <strong>System</strong> Library, PRNZ 303F1011. <strong>System</strong> Library, PNCHZ 304FIO12. <strong>System</strong> Library, TYPEZ 305F1013. <strong>System</strong> Library, HOLEZ 306viii


SECTION 1. INTRODUCTIONThe <strong>1130</strong> Disk Monitor <strong>System</strong>, Version 2, consistsof <strong>the</strong> following components:Communication AreasThis component consists of <strong>the</strong> in-core communicationarea (COMMA) and <strong>the</strong> disk-resident communicationarea (DCOM).Generally speaking, COMMA contains only thoseparameters required by <strong>the</strong> monitor system to fetcha program stored on disk in disk core image format(DCI).DCOM contains all <strong>the</strong> parameters required by<strong>the</strong> monitor system that are not found in COMMA.<strong>System</strong> LoaderThis component provides <strong>the</strong> means for loading all,or reloading a part of, <strong>the</strong> monitor system onto disk.In o<strong>the</strong>r words, <strong>the</strong> <strong>System</strong> Loader generates <strong>the</strong>monitor system on disk.Cold Start <strong>Program</strong>sThis component consists of <strong>the</strong> Cold Start Loader and<strong>the</strong> Cold Start <strong>Program</strong>.The Cold Start Loader is <strong>the</strong> bootstrap loader usedin <strong>the</strong> IPL procedure to initiate <strong>the</strong> operation of <strong>the</strong>Cold Start <strong>Program</strong>.The Cold Start <strong>Program</strong> reads <strong>the</strong> monitor system,i. e. , <strong>the</strong> Resident Monitor, into core storage andtransfers control to it.CALL LINK, and CALL EXIT statements, andvarious I/O traps.One of <strong>the</strong> three disk I/0 subroutines is presentin <strong>the</strong> Resident Monitor at all times. The disk I/Osubroutine in <strong>the</strong> Resident Monitor is <strong>the</strong> only suchsubroutine in core storage at any one time. Any of<strong>the</strong> three disk I/O subroutines can be used by <strong>the</strong>user. The DISKZ subroutine is used by <strong>the</strong>monitor system programs; DISKZ is initially loadedwhen a cold start is performed.SupervisorThis component consists of <strong>the</strong> Monitor ControlRecord Analyzer (MCRA), <strong>the</strong> Supervisor ControlRecord Analyzer, <strong>the</strong> Auxiliary Supervisor, and<strong>the</strong> <strong>System</strong> Core Dump program.The MCRA is <strong>the</strong> program that reads and analyzes<strong>the</strong> monitor control records, initiating <strong>the</strong> actionsindicated on those control records.The Supervisor Control Record Analyzer is <strong>the</strong>program that reads and analyzes <strong>the</strong> Supervisorcontrol records, passing <strong>the</strong> information on <strong>the</strong>secontrol records to <strong>the</strong> Core Load Builder.The Auxiliary Supervisor is <strong>the</strong> program calledto perform specialized supervisory functions for <strong>the</strong>monitor system.The <strong>System</strong> Core Dump program is <strong>the</strong> programused to print all or selected portions of <strong>the</strong> contentsof core storage on <strong>the</strong> principal print device. Thedump can be dynamic (execution of <strong>the</strong> calling coreload is resumed after <strong>the</strong> completion of <strong>the</strong> dump) orterminal (a CALL EXIT is executed after <strong>the</strong> completionof <strong>the</strong> dump).Resident MonitorThis component consists of three intermixed parts:(1) COMMA, (2) <strong>the</strong> Skeleton Supervisor, and (3)one of <strong>the</strong> three disk I/0 subroutines -- DISKZ,DISK1, or DISKN.COMMA is defined above, under CommunicationAreas.The Skeleton Supervisor consists of <strong>the</strong> coreresidentcoding necessary to process CALL DUMP,Core Image LoaderThis component consists of two parts, <strong>the</strong> first beingan intermediate supervisor for <strong>the</strong> monitor system,<strong>the</strong> second being a loader for user and system programsin core image format.Phase 1 of <strong>the</strong> Core Image Loader is fetched intocore storage as <strong>the</strong> result of an entry to <strong>the</strong>Skeleton Supervisor. Phase 1 is <strong>the</strong> program thatdetermines <strong>the</strong> type of entry made and <strong>the</strong> program(s)Section 1. Introduction 1


to be fetched as a result.Phase 2 of <strong>the</strong> Core Image Loader is <strong>the</strong> programthat fetches into core storage and, if indicated,transfers control to <strong>the</strong> program(s) indicated byphase 1.Core Load BuilderThis component is <strong>the</strong> program that converts a mainlineprogram from disk system format (DSF) to a coreload, a program in disk core image format (DCI);that is, <strong>the</strong> Core Load Builder relocates <strong>the</strong> mainlineprogram and all <strong>the</strong> subroutines required and constructs<strong>the</strong> o<strong>the</strong>r necessary parts of <strong>the</strong> core load,e. g. , <strong>the</strong> transfer vector, LOCALs, and SOCALs.Disk Utility <strong>Program</strong> (DUP.)This component provides <strong>the</strong> means for performing<strong>the</strong> following functions, largely through <strong>the</strong> use ofcontrol records only:• Make available <strong>the</strong> contents of disk storage inpunched or printed format -- DUMP,DUMPDATA.• Print a map of <strong>the</strong> contents of <strong>the</strong> variable portionsof disk storage -- DUMPLET,DUMPFLET.• Store information on <strong>the</strong> disk in disk systemformat (DSF), disk data format (DDF), or diskcore image format (DCI) -- STORE,STOREDATA, STOREDATACI, STORECI,STOREMOD.• Remove information from <strong>the</strong> User/Fixed Area ---DELETE.• Alter <strong>the</strong> allocation of <strong>the</strong> Fixed Area on <strong>the</strong> diskor delete <strong>the</strong> Assembler <strong>Program</strong> and/or <strong>the</strong>FORTRAN Compiler from <strong>the</strong> monitor system --DEFINE.• Initialize <strong>the</strong> Working Storage area on disk --DWADR.• Provide file protection for <strong>the</strong> contents of diskstorage.Assembler <strong>Program</strong>This component is <strong>the</strong> program that translates <strong>the</strong>statements of a source program written in <strong>the</strong> <strong>IBM</strong><strong>1130</strong> Assembler Language into a program in disksystem format (DSF).FORTRAN CompilerThis component is <strong>the</strong> program that translates <strong>the</strong>statements of a source program written in <strong>the</strong> <strong>IBM</strong><strong>1130</strong> Basic FORTRAN IV Language into a program indisk system format (DSF).RPG CompilerThis component is <strong>the</strong> program that translatesspecifications written in RPG language into a programin disk system format (DSF). <strong>1130</strong> RPGlogic is described in <strong>the</strong> publication, <strong>IBM</strong> <strong>1130</strong> RPG<strong>Program</strong> <strong>Logic</strong> <strong>Manual</strong>, Form Y21-0010.<strong>System</strong> LibraryThis component consists of (1) a complete libraryof input/output (except disk I/O), data conversion,arithmetic, and function subroutines, (2) selectivedump subroutines, and (3) special programs for diskmaintenance.<strong>System</strong> Device SubroutinesThis component consists of a library of specialsubroutines, one for each device (except <strong>the</strong> disk)used by <strong>the</strong> monitor system programs. These subroutinesand DISKZ are <strong>the</strong> only device subroutinesused by <strong>the</strong> monitor system programs.UtilitiesThis component consists of <strong>the</strong> following stand-alone,self-loading utility programs:• The Disk Cartridge Initialization <strong>Program</strong> i DCIP)• The Core-Dump-to-Printer <strong>Program</strong>In general <strong>the</strong> organization of and flow of controlthrough <strong>the</strong> <strong>1130</strong> Disk Monitor <strong>System</strong>, Version 2,is shown in Flowchart DMS01.2


SECTION 2. COMMUNICATIONS AREASTHE IN-CORE COMMUNICATIONS AREA (COMMA)COMMA includes, for <strong>the</strong> most part, only thosesystem parameters that are required to link from onecore load to ano<strong>the</strong>r that is stored on disk in diskcore image format (DCI). The exceptions are thoseparameters that would create awkward communicationbetween monitor system programs if <strong>the</strong>yresided in DCOM.COMMA is not a single block of locations in <strong>the</strong>Resident Monitor; <strong>the</strong> system parameters that constituteCOMMA are intermixed with <strong>the</strong> various partsof <strong>the</strong> Skeleton Supervisor.Table 1 is a description of COMMA by parameter.The entries are arranged in alphabetic sequence foreasy reference. See <strong>the</strong> listing of <strong>the</strong> ResidentMonitor in Appendix B. Listings for <strong>the</strong> absoluteaddresses associated with <strong>the</strong> parameters in thistable.THE DISK-RESIDENT COMMUNICATIONS AREA(DCOM)DCOM contains those parameters that must be passedfrom one monitor system program to ano<strong>the</strong>r but arenot found in COMMA.Table 2 is a description of DCOM by parameter.The entries are arranged in alphabetic sequence foreasy reference. See <strong>the</strong> listing of DCOM in AppendixB. Listings for <strong>the</strong> relative addresses associatedwith <strong>the</strong> parameters in this table.DRIVE- AND CARTRIDGE-DEPENDENTPARAMETERSWhenever a parameter that is associated with a diskcartridge is required for system use during a job,a table of five such parameters (a quintuple), one foreach of <strong>the</strong> five possible drives, is reserved inCOMMA or DCOM. The first of <strong>the</strong> five parametersis assigned a label. Such a parameter is said to bea drive- or cartridge-dependent parameter, whicheverterm is applicable.The position in <strong>the</strong> quintuple indicates <strong>the</strong> logicaldrive number of <strong>the</strong> drive on which <strong>the</strong> associatedcartridge is mounted. Thus, <strong>the</strong> first parameter ina quintuple is associated with logical drive zero, <strong>the</strong>second with logical drive one, etc. The assignmentof logical drive numbers is done during JOB processing;t hat is, <strong>the</strong> logical drive numbers are assignedin <strong>the</strong> sequence specified on <strong>the</strong> JOB monitor controlrecord. Thus, <strong>the</strong> first cartridge specified isassigned to logical drive zero, <strong>the</strong> second to logicaldrive one, etc. If no cartridges at all are specified,<strong>the</strong>n <strong>the</strong> current logical drive zero is defined aslogical drive zero for <strong>the</strong> job being defined. Thedrive- and cartridge-dependent parameters for allunspecified cartridges are cleared to zero, exceptfor logical drive zero as noted above.JOB processing includes <strong>the</strong> reading of DCOM and<strong>the</strong> ID sector from each specified cartridge and <strong>the</strong>setting up of <strong>the</strong> drive- and cartridge-dependentquintuples in DCOM on <strong>the</strong> master cartridge.Initialization of <strong>the</strong> quintuples is done during coldstart processing, which defines logical drive zero(and all associated drive- and cartridge-dependentparameters for logical drive zero) as <strong>the</strong> physicaldrive selected in <strong>the</strong> Console Entry switches (seeSection 4. Cold Start <strong>Program</strong>s). <strong>All</strong> o<strong>the</strong>r valuesin <strong>the</strong> drive- and cartridge-dependent quintuples arecleared to zero.Section 2. Communications Areas 3


Table 1. The Contents of COMMALABELDESCRIPTIONLABELDESCRIPTION$ACDEthroughSACDE+4$ACEXand$ACEX+1$CCAD$ACDE contains <strong>the</strong> device code for <strong>the</strong> physical diskdrive assigned as logical disk drive 0. SACDE+ 1 through$ACDE+4 contain <strong>the</strong> device codes for logical disk drives1, 2, 3, and 4, respectively. The device code iscontained in bits 11-15.$ACEX and $ACEX+1 are <strong>the</strong> locations in which <strong>the</strong>contents of <strong>the</strong> accumulator and extension, respectively,are saved by <strong>the</strong> Supervisor when entered at<strong>the</strong> $DUMP entry point.$CCAD contains <strong>the</strong> address of <strong>the</strong> lowest-addressedword of COMMON to be saved on <strong>the</strong> Core ImageBuffer (CIB) by <strong>the</strong> Core Image Loader.SCH 12 $CH12 contains <strong>the</strong> address of $CPTR, $1132, or $1403depending upon <strong>the</strong> device defined as <strong>the</strong> principalprint device--<strong>the</strong> Console Printer, 1132 Printer, or1403 Printer, respectively.$CIBA$CIBA-1$CILA$CLSW$COMN$CORE$CPTR$CTSW$CIBA contains <strong>the</strong> sector address of <strong>the</strong> first sector of<strong>the</strong> Core Image Buffer (CIB) in use by <strong>the</strong> monitorsystem programs during <strong>the</strong> current job. The logicaldisk drive number is contained in bits 0-3.$CIBA-1 contains 4095 minus <strong>the</strong> location of $CIBA.This value is used as <strong>the</strong> word count (In conjunctionwith $CIBA, which contains <strong>the</strong> sector address of <strong>the</strong>CIB) in saving <strong>the</strong> first 4K of core storage followingan entry at $DUMP.$CILA contains <strong>the</strong> address of <strong>the</strong> end of <strong>the</strong> disk I/Osubroutine currently In core storage minus 4. $CILAalways points to <strong>the</strong> word count (followed by <strong>the</strong>sector address) of phase 1 of <strong>the</strong> Core Image Loader.$CLSW Is a switch indicating to phase 2 of <strong>the</strong> CoreImage Loader <strong>the</strong> function it is to perform. The switchsettings are as follows:Setting MeaningPositive Load <strong>the</strong> indicated disk I/OsubroutineZero or Load <strong>the</strong> indicated core loadNegative and its required disk I/Osubroutine. Zero indicatesthat <strong>the</strong> core load has justbeen built by <strong>the</strong> Core LoadBuilder; negative indicatesthat <strong>the</strong> core load is storedin <strong>the</strong> User or Fixed Area incore image format.$COMN contains <strong>the</strong> number of words of COMMONdefined for <strong>the</strong> core load currently in execution.$CORE contains a code indicating <strong>the</strong> number of wordsof core storage within which <strong>the</strong> monitor system programsare to operate. The codes are as follows:Code Size of Core Storage/1000 4096 words/2000 8192 words/4000 16384 words/8000 32768 words$CPTR is a dummy channel 12 indicator for <strong>the</strong>Console Printer.$CTSW is a switch indicating that a monitor controlrecord has been detected by a monitor system programo<strong>the</strong>r than <strong>the</strong> Supervisor. The switch settings are asfol lows:Setting MeaningPositive Monitor control record detectedZero Monitor control record not detected$CWCT$CWCT+1$CXR1$CYLNthrough$CYLN+4$DABL$DADR$DBSY$DCDE$CWCT contains <strong>the</strong> number of words of COMMONto be saved on <strong>the</strong> Core Image Buffer (CIB) by <strong>the</strong>Core Image Loader.$CWCT+1 contains <strong>the</strong> sector address of <strong>the</strong> first sectorof <strong>the</strong> Core Image Buffer (CIB) to be used for <strong>the</strong> savingof COMMON by <strong>the</strong> Core Image Loader. The logicaldisk drive number is contained in bits 0-3.$CXR1 is <strong>the</strong> location in which <strong>the</strong> contents of indexregister 1 are saved by <strong>the</strong> Skeleton Supervisor.$CYLN contains <strong>the</strong> sector address of sector C on <strong>the</strong>cylinder over which <strong>the</strong> access arm on logical diskdrive 0 is currently positioned. $CYLN+1 through$CYLN+4 contain analogous sector addresses I or logicaldisk drives 1, 2, 3, and 4, respectively.$DABL contains <strong>the</strong> second word of <strong>the</strong> IOCC usedto reset <strong>the</strong> Synchronous Communications Adapter.$DABL is, <strong>the</strong>refore, aligned on an odd word boundary.$DABL contains /5540, <strong>the</strong> bit configuration of anInitiate Write with modifier bit 9 on.$DADR contains <strong>the</strong> disk block address of <strong>the</strong> firstsector of <strong>the</strong> program or core load to be fetched intocore storage and executed.$DBSY is a switch indicating whe<strong>the</strong>r or not a diskI/O operation is in progress. The switch settings areas follows:Setting Meaningzero Disk I/O not in progressnon-zero Disk I/O in progress$DBSY is simultaneously used as a retry counter byDISKZ and DISK1.$DCDE contains <strong>the</strong> number of <strong>the</strong> logical disk drive onwhich <strong>the</strong> program to be fetched by <strong>the</strong> Core ImageLoader is to be found. The drive number is containedin bits 0-3.$DCYL$DCYL through $DCYL+2 contain <strong>the</strong> defective cylthroughinder addresses (<strong>the</strong> contents of words 1, 2, and 3$DCYL+I4 of sector 0, cylinder 0) for <strong>the</strong> cartridge mountedon logical disk drive 0. $DCYL+3 through $DCYL+14contain analogous addresses for <strong>the</strong> cartridges onlogical disk drives 1, 2, 3, and 4, respectively.$DDSW$DMPF$DREQ$DZ IN$DDSW contains <strong>the</strong> device status word (DSW) sensedduring <strong>the</strong> last disk 1/0 operation performed.$DMPF contains <strong>the</strong> contents of <strong>the</strong> word following<strong>the</strong> branch to <strong>the</strong> $DUMP entry point, i.e., <strong>the</strong>dump format code.$DREQ is a switch indicating <strong>the</strong> disk I/O subroutinethat has been requested. The switch settings c re asfollows:Setting Meaningpositive DISKNzero DISK Inegative DISKZ$DZ IN is a switch indicating <strong>the</strong> disk I/O subroutinepresently in core storage. The switch settings are asfol lows:Setting Meaningnegative DISKZ is in corezero DISK1 is in corepositive DISKN is in core4


&Table 1. The Contents of COMMA (ContinuedLABELDESCRIPTION$FPADthrough$FPAD+4$GCOM$FPAD contains <strong>the</strong> sector address of <strong>the</strong> first sector ofWorking Storage on <strong>the</strong> cartridge mounted on logicaldisk drive 0. The logical disk drive number is containedin bits 0-3. $FPAD+1 through $FPAD+4 containanalogous sector addresses for <strong>the</strong> cartridges on logicaldisk drives 1, 2, 3, and 4, respectively.$FPAD through $FPAD+4 are effectively <strong>the</strong> fileprotectionaddresses for <strong>the</strong> cartridges in use. Theseaddresses are adjusted in non-temporary mode only.$GCOM contains <strong>the</strong> address of GCOM, <strong>the</strong> communicationarea for <strong>the</strong> Graphic Subroutine Package (GSP).GCOM contains common areas, pointers, and indicatorsthat are used by most of <strong>the</strong> GSP subroutines. GCOM alsocontains <strong>the</strong> system display program for <strong>the</strong> GSP.LABEL$LKNMand$LKNM+1$LSAD$NDUPDESCRIPTION$LKNM and $LKNM+ I contain <strong>the</strong> name, in namecode, of <strong>the</strong> program or core load to be executed next.$LKNM is aligned on an even word boundary.$LSAD contains <strong>the</strong> absolute sector address of <strong>the</strong> firstsector of <strong>the</strong> first LOCAL (or SOCAL if <strong>the</strong>re are noLOCALS) for <strong>the</strong> core load currently in core. Thelogical disk drive number is contained in bits 0-3.$NDUP is a switch indicating whe<strong>the</strong>r or not DUPoperations may be performed. The switch settings areas follows:$GRINSGRIN is <strong>the</strong> Graphic Initialization program indicator.Setting Meaning$HASH through $HASH +11 are a work area used vari-ously by <strong>the</strong> monitor system programs.$HASHthrough$HASH + 11$IBSY$IBSY is a switch indicating whe<strong>the</strong>r or not an I/Ooperation involving <strong>the</strong> principal I/O device is inprogress. The switch settings are as follows:Setting Meaning$NEND$NXEQzero Permit DUP operationsnon-zero Inhibit DUP operations$NEND is equivalent to <strong>the</strong> address of <strong>the</strong> end ofDISKN plus 1.$NXEQ is a switch indicating whe<strong>the</strong>r or not executionof a user core load may be performed. Theswitch settings are as follows:$IBT2zero Principal I/O device not busynon-zero Principal I/O device busy$IBT2 contains <strong>the</strong> address of <strong>the</strong> interrupt branchtable (IBT) for interrupt level 2. Since <strong>the</strong> disk is <strong>the</strong>only device on interrupt level 2, $IBT2 contains <strong>the</strong>address of <strong>the</strong> interrupt entry point in <strong>the</strong> disk I/Osubroutine currently in core storage.$PAUSSetting Meaningzero Permit core load executionnon-zero Inhibit core load execution$PAUS is a switch set by every ISS that does not set$IOCT when initiating an I/O operation, e.g., SCAT1.The switch settings are as follows:$IBT4$IOCT$IBT4 contains <strong>the</strong> address of <strong>the</strong> interrupt branch table(IBT) for interrupt level 4 used by <strong>the</strong> program currentlyin control.$IOCT is <strong>the</strong> IOCS counter for I/O operations. $IOCTis incremented by 1 for each I/O operation initiated.$IOCT is decremented by 1 for each I/O operationcompleted or terminated. $IOCT equals zero whenall I/O operations have been completed.$PBSYSetting Meaningzero Exit from <strong>the</strong> PAUS subroutinenon-zero Branch back to <strong>the</strong> WAIT in <strong>the</strong>PAUS subroutine$PBSY is a switch indicating whe<strong>the</strong>r or not an I/Ooperation involving <strong>the</strong> principal print device is inprogress. The switch settings are as follows:$IREQ$KCSW$LAST$IREQ contains <strong>the</strong> address of <strong>the</strong> subroutine servicing<strong>the</strong> INTERRUPT REQUEST key on <strong>the</strong> Keyboard (interruptlevel 4). This address is supplied by <strong>the</strong> user core loadusing <strong>the</strong> INTERRUPT REQUEST key. Unless an addressis supplied $IREQ contains <strong>the</strong> address of <strong>the</strong> $DUMPentry point.$KCSW is a switch indicating whe<strong>the</strong>r or not (1) <strong>the</strong>Keyboard has been defined as <strong>the</strong> principal input deviceand/or (2) <strong>the</strong> Console Printer has been defined as <strong>the</strong>principal print device. The switch settings are asfollows:Settings Meaningnegative Ei<strong>the</strong>r <strong>the</strong> Console Printer is <strong>the</strong> principalprint device or <strong>the</strong> Keyboard is<strong>the</strong> principal input device, but notbothzero Nei<strong>the</strong>r is <strong>the</strong> Console Printer <strong>the</strong>principal print device nor is <strong>the</strong>Keyboard <strong>the</strong> principal input devicepositive The Console Printer is <strong>the</strong> principalprint device and <strong>the</strong> Keyboard is<strong>the</strong> principal input deviceDepending on <strong>the</strong> setting on $KCSW, <strong>the</strong> system devicesubroutine for <strong>the</strong> Keyboard/Console Printer ei<strong>the</strong>rpermits or inhibits <strong>the</strong> overlapping of input and output.$LAST is a switch indicating whe<strong>the</strong>r or not <strong>the</strong> lastcard has been read by <strong>the</strong> system device subroutine servicing<strong>the</strong> card input device. The switch settings are asfollows:Settings Meaningzero Last card has not been readnon-zero Last card has been read$PGCT$PHSE$RMSW$RWCZSetting Meaningzero Principal print device not busynon-zero Principal print device busy$PGCT contains <strong>the</strong> number, in binary, of <strong>the</strong> page of<strong>the</strong> job listing currently being printed.$PHSE contains <strong>the</strong> SLET ID number (In bits 8-15) of <strong>the</strong>phase of <strong>the</strong> monitor system program currently in control,excepting <strong>the</strong> Cold Start <strong>Program</strong> and <strong>the</strong> SkeletonSupervisor. $PHSE always contains zero when a usercore load is in control. Bits 0-7 of $PHSE sometimescontain a subphase ID number.$RMSW is a switch indicating <strong>the</strong> entry point at which<strong>the</strong> Skeleton Supervisor was entered and, hence, <strong>the</strong>type of CALL causing <strong>the</strong> Skeleton Supervisor to beentered. The switch settings are as follows:Setting Meaningpositive Entry at $DUMPzero Entry at $LINKnegative Entry at $EXIT$RWCZ is a switch indicating <strong>the</strong> type of operation lastperformed by <strong>the</strong> CARDZ subroutine. The switch settingsare as follows:Setting Meaningzero Last operation a Readnon-zero Last operation a Punch$SCAN $SCAN through $SCAN+7 are an area used by <strong>the</strong> 1132throughPrinter when printing a line. This area is also used as$SCAN+7 a work area by <strong>the</strong> monitor system programs.Section 2. Communications Areas 5


"Table 1 . The Contents of COMMA (Concluded)Table 2. The Contents of DCOMLABEL$SNLT$SYSC$UFDR$UFIO$ULETthrough$ULET+4$WRD1$WSDRDESCRIPTION$SNLT is <strong>the</strong> location used for sense light simulationby FORTRAN programs. The bits are used as follows:Bit Sense Light14 113 212 311 4$SYSC contains <strong>the</strong> version and modification levelnumbers identifying <strong>the</strong> <strong>1130</strong> Disk Monitor <strong>System</strong>.Bits 0-7 contain <strong>the</strong> version number; bits 8-15 contain<strong>the</strong> modification level number.$UFDR contains <strong>the</strong> number of <strong>the</strong> logical disk driveon which <strong>the</strong> unformatted I/O area in use by <strong>the</strong>monitor system programs during <strong>the</strong> current job is tobe found. The drive number is contained in bits 0-3.SUF10 contains <strong>the</strong> displacement, in sectors, from <strong>the</strong>start of <strong>the</strong> unformatted I/O area to <strong>the</strong> sector atwhich <strong>the</strong> writing or reading of <strong>the</strong> next logicalrecord to or from <strong>the</strong> unformatted I/O area is to begin.$ULET contains <strong>the</strong> sector address of <strong>the</strong> first sectorof LET on <strong>the</strong> cartridge mounted on logical disk drive0. The logical disk drive number is contained inbits 0-3. $ULET+1 through $ULET+4 contain analogoussector addresses for <strong>the</strong> cartridges on logicaldisk drives 1, 2, 3, and 4, respectively.$WRD1 contains <strong>the</strong> address at which <strong>the</strong> first word of<strong>the</strong> core image header of <strong>the</strong> core load to be/beingexecuted will/does reside.$WSDR contains <strong>the</strong> number of <strong>the</strong> logical disk driveon which <strong>the</strong> Working Storage in use by <strong>the</strong> monitorsystem programs during <strong>the</strong> current job is to be found.The drive number is contained in bits 0-3.LABEL#ANDUthrough#ANDU+4DESCRIPTION#ANDU contains <strong>the</strong> displacement, in disk blocks,from word 0, sector 0, cylinder 0 on <strong>the</strong> cartridgemounted on logical disk drive 0 to <strong>the</strong> last disk blockof <strong>the</strong> User Area on that cartridge, plus 1 disk block.#ANDU+1 through #ANDU+4 contain analogous displacementsfor <strong>the</strong> cartridges on logical disk drives 1,2, 3, and 4, respectively.#ANDU through #ANDU+4 are effectively <strong>the</strong> adjustedaddresses of <strong>the</strong> ends of <strong>the</strong> User Areas on <strong>the</strong>cartridges In use. These addresses are adjusted insteadof # BNDU through #13NDU+4 during temporarymode, in parallel with # BNDU through fiBNDU+4during non-temporary mode.# BNDU #BNDU contains <strong>the</strong> displacement, in disk blocks,through from word 0, sector 0, cylinder 0 on <strong>the</strong> cartridge# BNDU+4 mounted on logical disk drive 0 to <strong>the</strong> last diskblock of <strong>the</strong> User Area on that cartridge, plLs 1 diskblock. O BNDU+1 through # BNDU+4 contain analogousdisplacements for <strong>the</strong> cartridges on logicaldisk drives 1, 2, 3, and 4, respectively.# BNDU through # BNDU+4 are effectively <strong>the</strong> baseaddresses of <strong>the</strong> ends of <strong>the</strong> User Areas on <strong>the</strong>cartridges in use. These addresses are adjusted onlyduring non-temporary mode, in parallel with #ANDUthrough OANDU+4.#CBSW#CIAD#CBSW is a switch indicating to <strong>the</strong> Core Load Builder<strong>the</strong> type of exit to be made. The switch settings areas follows:Setting MeaningZero Return to Core Image Loadernon-zero Return to DUPOCIAD contains <strong>the</strong> relative location in sector@IDAD (within DISKZ) where <strong>the</strong> address of <strong>the</strong>Core Image Loader is to be found.SXR3X$ZEND$1ENDSXR3X contains <strong>the</strong> setting of index register 3 for <strong>the</strong>core load in core.$ZEND Is equivalent to <strong>the</strong> address of <strong>the</strong> end ofDISKZ plus 1.$1END Is equivalent to <strong>the</strong> address of <strong>the</strong> end ofDISK1 plus 1.$1132 $1132 is a switch indicating whe<strong>the</strong>r or not channel12 has been detected on <strong>the</strong> 1132 Printer. Theswitch settings are as follows:#CIBAthroughOCIBA+4#CIDNthrough#CIDN+4#CIBA contains <strong>the</strong> sector address of <strong>the</strong> Core ImageBuffer (CIB) on <strong>the</strong> cartridge mounted on logical diskdrive 0. The logical disk drive number is containedin bits 0-3. #CIBA+1 through #CIBA+4 containanalogous sector addresses for <strong>the</strong> cartridges on logicaldisk drives 1, 2, 3, and 4, respectively.#CIDN contains <strong>the</strong> ID (<strong>the</strong> contents of word 4,sector 0, cylinder 0) of <strong>the</strong> cartridge mounted onlogical disk drive 0. O CIDN+1 through #CIDN+4contain <strong>the</strong> !Ds of <strong>the</strong> cartridges on logical riskdrives 1, 2, 3, and 4, respectively.Setting Meaningzero Channel 12 not detected or a skipto channel 1 executednon-zero Channel 12 detected$1403 $1403 is a switch indicating whe<strong>the</strong>r or not channel12 has been detected on <strong>the</strong> 1403 Printer. Theswitch settings are as follows:Setting Meaningzero Channel 12 not detected or a skipto channel 1 executednon-zero Channel 12 detected#CSHN #CSHN contains <strong>the</strong> number of sectors availcble forthroughexpansion of <strong>the</strong> monitor system programs on <strong>the</strong>O CSHN+4 system cartridge mounted on logical disk drive 0.6 CSHN-F1 through # CSHN+4 contain analogous numbersfor any system cartridges mounted on logicaldisk drives 1, 2, 3, and 4, respectively.# DBCT #DBCT contains <strong>the</strong> number of disk blocks occupiedby <strong>the</strong> program, core load, or data file named on aDUP control record.# DCSW #DCSW is a switch indicating to <strong>the</strong> ADRWS program<strong>the</strong> type of exit to be made. The switch settings areas follows:Setting MeaningZero Branch to $EXIT in SkeletonSupervisornon-zero Return to DUP# ENTY #ENTY contains <strong>the</strong> address of entry point 1 in <strong>the</strong>program placed into system Working Storage oy <strong>the</strong>Assembler or FORTRAN Compiler. This address is<strong>the</strong> address to be placed into word 12 of <strong>the</strong> DSF programheader by DUP or <strong>the</strong> address from which word 1of <strong>the</strong> core image header is generated by <strong>the</strong> CoreLoad Builder.#ECNT#ECNT contains <strong>the</strong> number of EQUAT records thathave been processed by <strong>the</strong> Supervisor and ;:cored on<strong>the</strong> SCRA.6


*Table 2. The Contents of DCOM (Continued)LABELDESCRIPTIONLABELDESCRIPTION#FCNT#FHOLOFCNT contains <strong>the</strong> number of files defined for <strong>the</strong>core load being built or <strong>the</strong> execution to be initated.#FHOL contains <strong>the</strong> displacement, in disk blocks,from word 0, sector 0, cylinder 0 to <strong>the</strong> first diskblock of <strong>the</strong> largest unused (1DUMY) area in <strong>the</strong>Fixed Area on <strong>the</strong> cartridge to which a STORE operationis to be made.# FLET #FLET contains <strong>the</strong> sector address of <strong>the</strong> first sectorthroughof F LET on <strong>the</strong> cartridge mounted on logical diskO F LET+4drive 0. The logical disk drive number is containedin bits 0-3. #FLET+1 through O F LET+4 containanalogous sector addresses for <strong>the</strong> cartridges onlogical disk drives 1, 2, 3, and 4, respectively.# FMAT #FMAT is a switch Indicating <strong>the</strong> format of <strong>the</strong> conthroughtents, if any, of Working Storage on <strong>the</strong> cartridge# FMAT+4 mounted on logical disk drive 0. #FMAT+1 through# FMAT+4 are analogous switches for Working Storageon logical disk drives 1, 2, 3 and 4, respectively.The switch settings are as follows:O FPADthroughO FPAD+4Setting Meaning-2 disk core image format (DCI)zero disk system format (DSF)+1 disk data format (DDF)OFPAD contains <strong>the</strong> sector address of <strong>the</strong> first sectorof Working Storage on <strong>the</strong> cartridge mounted onlogical disk drive 0. The logical disk drive numberis contained in bits 0-3. #FPAD+1 through# FPAD+4 contain analogous sector addresses for <strong>the</strong>cartridges on logical disk drives 1, 2, 3, and 4,respectively.# FPAD through #FPAD+4 are effectively <strong>the</strong> fileprotectionaddresses for <strong>the</strong> cartridges in use. Theseaddresses are adjusted in non-temporary mode only.# FRDR #FRDR contains <strong>the</strong> number of <strong>the</strong> logical disk driveon which <strong>the</strong> cartridge specified by <strong>the</strong> "FROM"cartridge ID (in columns 31-34 of <strong>the</strong> DUP controlrecord) is mounted. The drive number is containedin bits 12-15. A negative number indicates that noID was specified.# FSZE #FSZE contains <strong>the</strong> number of disk blocks containedin <strong>the</strong> largest unused (IDUMY) area in <strong>the</strong> Fixed Areaon <strong>the</strong> cartridge to which a STORE operation is to bemade.#GCNT#GCNT contains <strong>the</strong> number of G2250 subroutines tobe defined for <strong>the</strong> core load being built or <strong>the</strong> executionto be initiated.# JBSW #JBSW is a switch indicating <strong>the</strong> mode of operationestablished by <strong>the</strong> last JOB monitor control record.The switch settings are as follows:Setting Meaningzero temporary modenon-zero non-temporary mode.# LCNT #LCNT contains <strong>the</strong> number of LOCALS specified for<strong>the</strong> execution to be initiated or <strong>the</strong> core load beingbuilt.# LOSW #LOSW is aswitch used by CLB to indicate <strong>the</strong>fol lowing.Setting Meaningzero LOCAL may not call a LOCALone LOCAL may call a LOCALO MDF 1#MDF2#MDF1 contains, in bits 8-15, <strong>the</strong> number of DUPcontrol records to be processed by DUP when calledby <strong>the</strong> MODIF program. # MDF1 also contains, inbits 0-7, <strong>the</strong> number of errors detected by DUP during<strong>the</strong> processing of <strong>the</strong> DUP control records for <strong>the</strong>MODIF program.#MDF2 is a switch indicating to DUP that controlmust be returned to <strong>the</strong> MODIF program. The switchsetting are as follows:Setting Meaningzero Do not return to MODIFnon-zero Return to MODIF# MPSW OMPSW is a switch indicating to <strong>the</strong> Core Load Builderwhe<strong>the</strong>r or not a core map is to be printed for each coreload built during <strong>the</strong> current execution. The switchsettings are as follows:Setting MeaningZero Do not print a core mapnon-zero Print a core map# NAME NAME and O NAME+1 contain <strong>the</strong> name, in nameandcode, of <strong>the</strong> program, core load, or data file currently# NAME+1 being processed by <strong>the</strong> Supervisor, DUP, Core LoadBuilder, or Core Image Loader. The name is obtainedfrom a control record or from a LET/FLET search.# NAME is aligned on an even word boundary.# NCNT #NCNT contains <strong>the</strong> number of NOCALs specified for<strong>the</strong> execution to be initiated or <strong>the</strong> core load beingbui It.#PCIDthroughO PCID+4#PCID contains <strong>the</strong> ID (<strong>the</strong> contents of word 4, sector0, cylinder 0) of <strong>the</strong> cartridge mounted on physicaldisk drive 0, if that drive is "ready". #PCID+1through #PCID+4 contain <strong>the</strong> IDs of <strong>the</strong> cartridges onphysical disk drives 1, 2, 3, and 4, respectively, if<strong>the</strong> corresponding drives are "ready". The entriesfor "not ready" drives contain zeroes.# PIOD #PIOD is a switch indicating <strong>the</strong> device defined as <strong>the</strong>principal I/O device for <strong>the</strong> system. The switchsettings are as follows:Setting Principal I/O Devicepositive 2501 with 1442, any modelzero 1442, Model 6 or 7negative 1134 with 1055# PPTR #PPTR is a switch indicating <strong>the</strong> device defined as <strong>the</strong>principal print device for <strong>the</strong> system. The switchsettings are as follows:Setting Principal Print Devicepositive 1403 Printerzero 1132 Printernegative Console Printer# RP67 #RP67 is a switch indicating <strong>the</strong> type of card I/0device present on <strong>the</strong> system. The switch settingsare as follows:Setting Card I/0 Devicezero 2501 with 1442, Model 5positive 1442, Model 6 or 7# SCRA #SCRA contains <strong>the</strong> sector address of <strong>the</strong> first sectorthrough of <strong>the</strong> Supervisor Control Record Area (SCRA) on <strong>the</strong># SCRA+4 cartridge mounted on logical disk drive 0. The logicaldisk drive number is contained in bits 0-3. #SCRA+1through # SCRA+4 contain analogous sector addressesfor any system cartridges on logical disk drives 1, 2,3, and 4, respectively.Section 2. Communications Areas 7


Table 2. The Contents of DCOM (Concluded)LABELDESCRIPTION# UHOL #UHOL contains <strong>the</strong> displacement, in disk blocks,from word 0, sector 0, cylinder 0 to <strong>the</strong> first diskblock of <strong>the</strong> largest unused ( I DUMY) area in <strong>the</strong> UserArea on <strong>the</strong> cartridge to which a STORE operation isto be made.# ULET #ULET contains <strong>the</strong> sector address of <strong>the</strong> first sector ofthrough LET on <strong>the</strong> cartridge mounted on logical disk drive 0.# ULET+4 The logical disk drive number is contained in bits 0-3.# ULET+1 through #ULET+4 contain analogous sectoraddresses for <strong>the</strong> cartridges on logical disk drives 1,2, 3, and 4, respectively.# USZE #USZE contains <strong>the</strong> number of disk blocks containedin <strong>the</strong> largest unused (1DUMY) area in <strong>the</strong> User Areaon <strong>the</strong> cartridge to which a STORE operation is to bemade.#WSCTthroughO WSCT 1-4#WSCT contains <strong>the</strong> number of disk blocks occupiedby a program, core load, or data file placed intoWorking Storage on <strong>the</strong> cartridge mounted on logicaldisk drive 0. # WSCT+1 through #WSCT+4 containanalogous disk block counts for <strong>the</strong> contents of WorkingStorage on logical disk drives 1, 2, 3, and 4,respectively.8


SECTION 3. SYSTEM LOADERFLOWCHARTSGeneral: SYLO1Phase 1: SYLO2Phase 2: SYLO3 - SYLO5PHASE 1FUNCTIONSPhase 1 determines which card I/O subroutine isrequired, e. , 1442 or 2501. If <strong>the</strong> 2501 is <strong>the</strong> cardreader, <strong>the</strong> <strong>System</strong> 2501 Subroutine overlays <strong>the</strong><strong>System</strong> 1442 Subroutine. Both subroutines areassembled as part of Phase 1 and are naturallyrelocatable.Phase 1 also reads <strong>the</strong> Console Entry switches toget <strong>the</strong> physical drive number (0-4) for <strong>the</strong> cartridgeto be loaded. It sets up <strong>the</strong> PROGRAM STOP keyinterrupt trap. The Keyboard INTERRUPT REQUESTkey is made non-effective until <strong>the</strong> monitor systemprograms have been loaded.Phase 1 reads <strong>the</strong> Resident Monitor and DISKZobject decks into core storage and initializes <strong>the</strong>mpreparatory to loading phase 2 of <strong>the</strong> <strong>System</strong> Loaderto disk.Phase 1 picks up defective track data from sector@IDAD on <strong>the</strong> cartridge to be used to initialize <strong>the</strong>disk I/O subroutine.Phase 1 loads phase 2 to cylinders 198 and 199(sectors /0630 through /063D) on disk. (Thesesector addresses are absolute; <strong>the</strong>y are assembledas part of <strong>the</strong> phase 2 deck.) If an initial load isbeing performed, subphase 1 is loaded to sector/0635 , overlaying a part of <strong>the</strong> reload processingsubroutine. Subphases 2 and 3 are loaded to sectors/063A and /063C.Phase 1 stores <strong>the</strong> Resident Image on sector&RIAD. (DISKZ is stored on disk by phase 2.)On reload operations, <strong>the</strong> SLET and Reload Tableare tested for agreement with <strong>the</strong> checksum residingin <strong>the</strong> last word of <strong>the</strong> Reload Table sector. Ifno checksum is present, <strong>the</strong> cartridge is assumedto have been loaded by a modification level 0 <strong>System</strong>Loader. Consequently <strong>the</strong> first two sectors of SLETwill be packed, and <strong>the</strong> third SLET sector cleared.Phase 1 processes <strong>the</strong> <strong>System</strong> Configurationrecords, saving <strong>the</strong> data obtained in <strong>the</strong> phase 1communications area for use by phase 2. At <strong>the</strong>end of <strong>the</strong> Configuration records processing, <strong>the</strong>accumulated data is checked for errors and consolidatedfor phase 2. If a CORE control record ispresent, its contents are processed and replace <strong>the</strong>calculated core size.Phase 1 processes <strong>the</strong> PHID control record(s),checks for errors, and saves <strong>the</strong> data obtained foruse by phase 2. The version and modificationlevel number is taken from <strong>the</strong> first PHID controlrecord and saved.Phase ID pairs must be in ascending order on <strong>the</strong>PHID record(s) with no intervening blank fields. Iftwo PHID records are present, <strong>the</strong> second may containblank fields after <strong>the</strong> last phase ID pair.Phase 1 fetches phase 2 from disk into corestorage and transfers control to it at BA000.BUFFERS AND I/0 AREASCard InputAA904: an 80-word buffer that contains card imagesin left-justified 12 bit/word format, as read by <strong>the</strong>1442 or 2501 card I/0 subroutine.AA902: a 60-word buffer that contains <strong>the</strong> 12 bit/word data from buffer AA904 after it has beencompressed to 16 bits/word.Paper Tape InputA: an 80-word buffer for PTTC/8 records.B: a 60-word buffer into which binary data frombuffer BIGCB is compressed.C: a 1-word buffer used for <strong>the</strong> DEL charactertest when reading binary paper tape records.BIGCB: a 108-word buffer for binary paper taperecords, 108 frames, left-justified.Disk Input and OutputBUFFR: a 640-word buffer used in all disk I/Ooperations.BUFR1: a 320-word buffer, used only for <strong>the</strong> SLET/RELOAD table checksum calculation.COMMUNICATION FROM PHASE 1 TO PHASE 2The Console Printer Subroutine (WRYTZ) and <strong>the</strong><strong>System</strong> I/O Subroutine (1442 or 2501) are in a lowcore position not overlayed by Phase 2. Phase 2 is<strong>the</strong>n able to use <strong>the</strong>se subroutines.Section 3. <strong>System</strong> Loader 9


Likewise, information acquired by Phase 1 thatmust be passed on to Phase 2 and error messages requiredby both phases reside in a low core positionso as not to be overlayed by Phase 2.PHASE 2At <strong>the</strong> conclusion of ei<strong>the</strong>r an initial load or reload,<strong>the</strong> SLET and Reload Tables are checksummedand <strong>the</strong> result stored in <strong>the</strong> last word of <strong>the</strong> ReloadTable sector.Phase 2 displays appropriate error messages, asI necessary, using <strong>the</strong> WRTYZ subroutine in corestorage.FUNCTIONS, INITIAL LOAD AND RELOADPhase 2 checks <strong>the</strong> phase ID number sequence forascending order and completeness throughout aninitial load, and during <strong>the</strong> addition of one or moreprograms during a reload. At o<strong>the</strong>r times duringa reload, <strong>the</strong> phases present should be in ascendingorder, but omissions are allowed.Phase 2 performs a checksum test on all type A(data) records.Phase '2 builds <strong>the</strong> Reload Table in core storageas <strong>the</strong> monitor system program phases are loaded.Each 3-word entry in <strong>the</strong> table consists of <strong>the</strong> IDnumber of a phase requesting SLET data, <strong>the</strong> relativelocation within <strong>the</strong> requesting phase where <strong>the</strong>SLET data is to be stored, and <strong>the</strong> number of SLETitems to be supplied by <strong>the</strong> <strong>System</strong> Loader. On aninitial load, this Reload Table is written to disk insector nRTBL.If so indicated in columns 12 through 15 of <strong>the</strong>Load Mode control record, phase 2 bypasses <strong>the</strong>programs described by phase ID pairs 2, 3, 8 and/or 9 from <strong>the</strong> PHID control record(s).Phase 2 updates <strong>the</strong> version and modification levelnumbers in <strong>the</strong> parameter #SYSC in sector ( 9.,D DCOMof <strong>the</strong> cartridge. These numbers are taken directlyI from <strong>the</strong> first PHID control record. No comparisonwith previous version and modification level numbersis made.Phase 2 determines from <strong>the</strong> data obtained from<strong>the</strong> <strong>System</strong> Configuration records which devices are<strong>the</strong> principal I/0 and principal print devices. Phase2 builds five special sets of SLET entries for <strong>the</strong>specified devices as well as for <strong>the</strong> principal I/0 andprint device conversion subroutines.Phase 2 steps through <strong>the</strong> Reload Table andsearches out every phase requesting SLET data.It <strong>the</strong>n searches out <strong>the</strong> SLET data that is requested,places it in <strong>the</strong> requesting phase, and writes thatphase back to disk. This continues until <strong>the</strong> end of<strong>the</strong> Reload Table (/F FEE) is reached.Phase 2 substitutes zeros for <strong>the</strong> SLET data requestedby a phase if that phase requested a programdescribed by phase ID pair 2, 3, 8 or 9 and thatprogram is not present on <strong>the</strong> cartridge. For examp:le,<strong>the</strong> Assembler <strong>Program</strong> (represented by phase ID pair3) may have been deleted or never loaded.FUNCTIONS, INITIAL LOAD ONLYPhase 1 has cleared to zero <strong>the</strong> sectors that willbecome <strong>the</strong> SLET table. The SLET entries arefilled in as each monitor system program is stored.Phase 2 checks for missing phases. <strong>All</strong> phasesspecified in <strong>the</strong> PHID control record must be present,except when one or more programs are bypassed.Phase 2 keeps a record of <strong>the</strong> highest sector loadedso that <strong>the</strong> sector addresses for <strong>the</strong> Supervisor ControlRecord Area (SCRA), Core Image Buffer (CIB), LocationEquivalence Table (LET), and User Area (UA) ondisk may be correctly established.Phase 2 checks <strong>the</strong> data obtained from <strong>the</strong> I,oadMode control record, and if a program is bypassed,no gap is left in SLET. The next program loadedfollows immediately on <strong>the</strong> cartridge and <strong>the</strong> SLETentry for its first phase fills <strong>the</strong> first availablelocation in SLET.FUNCTIONS, RELOAD ONLYPhase 2 verifies that <strong>the</strong> file-protection address isnot greater than /062F. (O<strong>the</strong>rwise, phase 2 cannotbe temporarily stored on disk.)Each time a phase with a positive phase ID numberis reloaded, <strong>the</strong> Reload Table is searched. If thatphase ID is present, it is removed and <strong>the</strong> tablerepacked.Phase 2 updates <strong>the</strong> SLET entries for each phaseas that phase is reloaded.Phase 2 provides for expansion of <strong>the</strong> system into<strong>the</strong> Cushion Area when required. If a phase growsby more than one sector, it is expanded accordingly.<strong>All</strong> subsequent SLET entries are updated each timean expansion occurs. A check is made to see that<strong>the</strong> Supervisor Control Record Area (SCRA) is notoverlayed.The phase ID range of an existing program may beexpanded at <strong>the</strong> 'upper end' to permit addition of oneor more phases to that program. In such a case,<strong>the</strong> phase whose ID is one less than <strong>the</strong> first phase tobe added must be present so that a pointer can locate<strong>the</strong> position in SLET where data for <strong>the</strong> added phasewill be inserted. SLET entries above <strong>the</strong> addedphase will be shifted to provide 4 SLET words for10


I<strong>the</strong> new phase. <strong>System</strong> programs above <strong>the</strong> addedphase will be shifted toward and into <strong>the</strong> cushionarea as necessary.<strong>System</strong> programs may be added to <strong>the</strong> system programarea if each such program meets <strong>the</strong> followingrequirements:1. It is described by a phase ID pair in <strong>the</strong>second PHID record.2. It is described by a phase ID pair whoselower limit is greater than any phase IDin SLET.3. No fixed area exists on <strong>the</strong> cartridge.Before <strong>the</strong> program is stored, <strong>the</strong> SCRA, CIB, LETand UA will be shifted so that <strong>the</strong> 'high' end adjoins<strong>the</strong> system loader storage area at <strong>the</strong> end of <strong>the</strong>cartridge. When <strong>the</strong> type '81' record is processed,<strong>the</strong> SCRA, CIB, LET and UA will be shifted backfrom <strong>the</strong>ir temporary location to new sector addressesdetermined by <strong>the</strong> length of <strong>the</strong> program(s) added.A new cushion area will be established. User Areaand chain addresses in LET are updated.Once a program addition has started, <strong>the</strong> systemloader reload operation is similar to an initial load.<strong>All</strong> phases must be present and in sequence from<strong>the</strong> first phase of <strong>the</strong> added program up to andincluding <strong>the</strong> last phase ID present in <strong>the</strong> secondPHID record. The additional disk storage area requiredwill be equivalent to <strong>the</strong> length of <strong>the</strong> addedprogram(s), plus up to 15 sectors to rebuild <strong>the</strong>cushion area.Since <strong>the</strong> <strong>System</strong> Loader resides on <strong>the</strong> last twocylinders during its operations, working storageshould be at least equal to <strong>the</strong> length of <strong>the</strong> addedprogram(s) plus 31 sectors before performing <strong>the</strong>addition.Phase 2 constructs an in-core Reload Table. At<strong>the</strong> end of <strong>the</strong> monitor system program reload, <strong>the</strong>data that was accumulated as one or more phaseswere reloaded is first compared with <strong>the</strong> existingReload Table on disk. Entries are replaced oradded to <strong>the</strong> Reload Table as necessary. Then <strong>the</strong>updated Reload Table is processed as describedabove.BUFFERS.AND I/O AREASCard InputCARD1: an 80-word buffer that contains card imagesin left-justified 12 bit/word format, as read by <strong>the</strong>1442 or 2501 card I/O subroutine.CARD2: an 80-word buffer used in conjunction withbuffer CARD1 for double buffering capability. Thisbuffer is used only by <strong>the</strong> 2501 card I/0 subroutine.PKBFR: a 60-word buffer into which 12 bits/worddata is compressed from buffer CARD1 when a 1442is used as <strong>the</strong> input device, or from buffers CARD1and CARD2 when a 2501 is used.Paper Tape InputB: a 60-word buffer into which binary data frombuffer BIGCB is compressed.C. a 1-word buffer used for <strong>the</strong> DEL charactertest when reading binary paper tape records.BIGCB: a 108-word buffer for binary paper taperecords, 108 frames, left-justified.Disk Input and OutputBUFR1: a buffer that is used to ga<strong>the</strong>r <strong>the</strong> data thatwill become <strong>the</strong> Reload Table. Its length is variable,up to 320 words. The word count (never over /0140)may be found in location BUFR1. This buffer isalso used in calculating <strong>the</strong> SLET/RELOAD Tablechecksum.BUFR2: a 320-word buffer used in disk I/O operations.BUFR3: 320 words + core above 4K buffer used forreading or writing a SLET sector. During a reloadoperation that requires expansion into <strong>the</strong> CushionArea of <strong>the</strong> cartridge, a sector of SLET from BUFR3is saved by writing it on <strong>the</strong> first sector of <strong>the</strong> CIB.The CIB is not cleared afterward.SUBPHASESSubphase 1Subphase 1 contains <strong>the</strong> subroutines that are usedonly during an initial load. Phase 1 determines from<strong>the</strong> Load Mode control record <strong>the</strong> type of load beingperformed, and ei<strong>the</strong>r overlays subphase 0 or by -passes <strong>the</strong> subphase 1 portion of <strong>the</strong> phase 2 deck.Most of <strong>the</strong> functions of this subphase involve <strong>the</strong>checking of <strong>the</strong> ID number of eacn phase as it is encountered.An error message is displayed whenevera phase ID is encountered that is out of sequenceor was not specified on <strong>the</strong> PHID control record.Section 3. <strong>System</strong> Loader 11


1Subphase 2Subphase 2 contains <strong>the</strong> procedures for systeminitialization prior to <strong>the</strong> loading of <strong>the</strong> <strong>System</strong>Library. After <strong>the</strong> type 81 (end-of-system) recordhas been read, phase 2 fetches this subphase into<strong>the</strong> overlay area.Subphase 2 modifies <strong>the</strong> coding for <strong>the</strong> processingof those types of records that are no longer expected,so that if one of <strong>the</strong>se records is encountered, anerror message is printed.A SLET search is performed for <strong>the</strong> word countand sector address of <strong>the</strong> Core Image Loader to bestored at <strong>the</strong> end of <strong>the</strong> Disk I/0 Subroutine, DISKZ.Subphase 2 reads DCOM into <strong>the</strong> buffer BUFR3and initializes or updates <strong>the</strong> following:Subphase 2 reads <strong>the</strong> Resident Image from disk into<strong>the</strong> buffer BUFR2 and initializes or updates <strong>the</strong>following:Location$CH12$CORE$DREQValue Insertedaddress of channel 12 indicator for<strong>the</strong> principal print device, as determinedfrom REQ control records, i. e. ,$1403, $ 1132, or $ CPTRcore size (may be actual, or set byCORE control record)a negative value (indicating DISKZ)Location1) SYSC#RP67Value Insertedversion and modification level fromPHID control recorda positive value if a 1442, Model 6 or7 is present, zero o<strong>the</strong>rwiseliPIOD <strong>the</strong> value indicating <strong>the</strong> principal I/0device, as determined from REQ controlrecords (+=2501/1442, 0=1442/1442,- =1134/1055)4IPPTR <strong>the</strong> value indicating <strong>the</strong> principal printdevice, as determined from REQ controlrecords (+=1403, 0=1132, - =ConsolePrinter)If CIAD relative location in sector @IDAD whereCIL word count and sector address ismaintainedIIANDU file-protection disk block address#BNDU file-protection disk block address$IREQ$ULET$C1LA$DZIN$FPAD$DCYL$IBT2address of DUMP entry point ($DUMP)sector address of LET for logicaldrive 0address in which <strong>the</strong> word count andsector address of Phase 1 and <strong>the</strong> CoreImage Loader is to be phaced ($ V, END-4)a negative value (indicating DISKZ)file-protection sector address forlogical drive 0table of defective cylinders (fromsector @IDAD)address of level 2 interrupt branchtable#FPADCIBAfile-protection or Working Storagesector addresssector address of CIB#SCRA sector address of Supervisor ControlRecord Area#ULET sector address of LET#CSHN number of unused sectors between lastsystem program and Supervisor ControlRecord Area.On an initial load <strong>the</strong> first sector of LET isestablished and initialized with a 1DUMY entry,Working Storage disk block address, User Area sectoraddress, and <strong>the</strong> number of unused words in <strong>the</strong>first sector of LET. <strong>All</strong> o<strong>the</strong>r words in LET areset to zero until <strong>the</strong> <strong>System</strong> Library is loaded.On a reload in which one or more programs arecalled, <strong>the</strong> chain addresses in LET are updatedto reflect <strong>the</strong> new position of LET on <strong>the</strong> disk dueto <strong>the</strong> shift to make room for <strong>the</strong> new programs(s).Subphase 2 fetches and transfers control to subphase3.12


Subphase 3Subphase 3 clears <strong>the</strong> sign bits from all sectoraddresses in SLET and resets <strong>the</strong>m according to <strong>the</strong>data obtained from <strong>the</strong> <strong>System</strong> Configuration records.(The sign bits are used to indicate which, if any, I/Odevices are not present on <strong>the</strong> system.)Subphase 3, on a reload operation, compares allentries in <strong>the</strong> Reload Table built in core storage with<strong>the</strong> Reload Table on disk. Phase ID numbers in <strong>the</strong>Reload Table on disk that match phase ID numbers in<strong>the</strong> Reload Table in core storage are replaced bythose from <strong>the</strong> table in core storage. Any additionalphase ID numbers from <strong>the</strong> table in core storagethat are not present in <strong>the</strong> table on disk are added to<strong>the</strong> table on disk. At <strong>the</strong> conclusion of this updateof <strong>the</strong> Reload Table on disk, it is completely reprocessedby <strong>the</strong> RLTBL subroutine in phase 2.Subphase 3 places <strong>the</strong> word count and sectoradress of phase 1 of <strong>the</strong> Core Image Loader,obtained from SLET, into DISKZ in core storageand into DISKZ on cylinder 0.If a normal reload is being performed, subphase 3prints "END RELOAD" to <strong>the</strong> console printer andbranches to $ EXIT. If <strong>the</strong> '81' record was followedby a "// XEQ MODIF" record, subphase 3 branchesto <strong>the</strong> Auxiliary Supervisor with a minus 6 parametercausing a "// XEQ MODIF" record to be placed in<strong>the</strong> Supervisor buffer. The Supervisor <strong>the</strong>n executesMODIF.On an initial load, subphase 3 branches to <strong>the</strong>Auxiliary Supervisor with a parameter of minus 5,causing a dummy DUP monitor control record to beplaced in <strong>the</strong> Supervisor buffer and <strong>the</strong> MonitorControl Record Analyzer to be called via <strong>the</strong> EXITentry point in <strong>the</strong> Skeleton Supervisor. The MonitorControl Record Analyzer <strong>the</strong>n calls DUP to store<strong>the</strong> <strong>System</strong> Library.CORE LAYOUTFigure 1 shows <strong>the</strong> layout of <strong>the</strong> contents of corestorage during <strong>System</strong> Loader operation.C1442/2501Bootstrap Loader\— (2'Res MonitorCRes Monitor//. . / /.: / / DISKZ DISKZLDPH2 LDPH2 LDPH2CommunicationsAreaConsole PrinterSubroutine<strong>System</strong> 1442Subroutine<strong>System</strong> 2501SubroutinePhase1BUFFRBUFRTCommunicationsAreaConsole PrinterSubroutine7Card I/OSubroutinePhase1BUFFRBUFR1/,/,,CommunicationsAreaConsole PrinterSubroutineCard I/OSubroutinePhase2SubphaseArea(0,1,2,3)BUFR1(Reload Table)BUFR2BUFR3(SLET)Extendsto fillavailablecore•Figure 1. Core Layout During <strong>System</strong> Loader OperationCARTRIDGE IDENTIFICATION SECTOROn an initial load, <strong>the</strong> <strong>System</strong> Loader uses <strong>the</strong> contentsof <strong>the</strong> cartridge ID sector (sector OIDAD) asfollows:The first three words of <strong>the</strong> sector (<strong>the</strong> defectivecylinder table for <strong>the</strong> cartridge, initialized by <strong>the</strong>DCIP program) are placed into its disk I/O subroutine40Section 3. <strong>System</strong> Loader 13


prior to performing any disk operations, and intolocations $DCYL through $DCYL+2 in <strong>the</strong> ResidentImage.The fourth word of <strong>the</strong> sector (<strong>the</strong> cartridgeidentification word, initialized by <strong>the</strong> DCIP or DISCprogram) is placed into location #CIDN in DCOM.The seventh word of <strong>the</strong> sector is <strong>the</strong> cartridgeload status word. Minus 2 indicates that an initializationhas been performed and an initial load only ispermitted. Plus 2 indicates that <strong>the</strong> cartridge hasbeen initial-loaded and a reload only is permitted.SYSTEM LOCATION EQUIVALENCE TABLE (SLET)SLET occupies three adjacent sectors on <strong>the</strong> systemcartridge. Its functions are:• To provide a convenient means for locating eachmonitor system program that has been stored on<strong>the</strong> system cartridge.• To indicate which are <strong>the</strong> principal I/0 devicesfor <strong>the</strong> system.• To indicate which devices, if any, are not presenton <strong>the</strong> system.When <strong>the</strong> <strong>System</strong> Loader initially stores a phaseof a monitor system program on <strong>the</strong> disk, it makesa 4-word entry in SLET for that program consistingof:1. The phase identification (phase ID) number.2. The core loading address of <strong>the</strong> phase. This is<strong>the</strong> address in which <strong>the</strong> word count is to bestored prior to fetching <strong>the</strong> phase from <strong>the</strong> disk.3. The word count of <strong>the</strong> phase, not including <strong>the</strong>two words occupied by <strong>the</strong> word count and sectoraddress used in fetching <strong>the</strong> phase from disk.4. The sector address of <strong>the</strong> phase.During an initial load, <strong>the</strong> SLET sectors arecleared to zero. The 4-word entries describingeach phase are built into <strong>the</strong> table, phase by phase,as <strong>the</strong> monitor system programs are loaded. (Aprogram or phase not included during an initial loadcannot later be included in a reload operation unless<strong>the</strong> program to be reloaded meets <strong>the</strong> requirementsdescribed under FUNCTIONS, RELOAD ONLY.O<strong>the</strong>rwise a new initial load must be performed.)<strong>All</strong> phase ID numbers in SLET are in ascendingorder. No duplications exist. The only jumps insequence are between programs, not between phaseswithin a nroaram.The five 4-word entries describing <strong>the</strong> principalI/O devices and <strong>the</strong> corresponding conversion subroutinesare built by <strong>the</strong> <strong>System</strong> Loader and do notcome directly from program decks.The contents of SLET can be obtained at any timeby an execution of <strong>the</strong> DSLET program (see <strong>the</strong>description of DSLET under Mainline <strong>Program</strong>sin Section 12. <strong>System</strong> Library).RELOAD TABLEThe Reload Table occupies one sector on <strong>the</strong> systemcartridge. It contains a 3-word entry for each phasethat requests SLET information. Word 1 of eachentry contains <strong>the</strong> phase ID number of <strong>the</strong> requestingphase. Word 2 of each entry contains <strong>the</strong> address of<strong>the</strong> location, relative to <strong>the</strong> beginning of <strong>the</strong> phase,where <strong>the</strong> SLET entries are to be inserted into <strong>the</strong>requesting phase. Word 3 of each entry contains <strong>the</strong>number of 4-word SLET entries to be inserted into<strong>the</strong> requesting phase. The phase ID number of <strong>the</strong>requesting phase itself is in 2's complement formto indicate to <strong>the</strong> <strong>System</strong> Loader that SLET data isrequested by that phase.When completed at <strong>the</strong> end of an initial load orreload operation, <strong>the</strong> Reload Table consists of astring of 3-word entries, as described above, exceptthat <strong>the</strong> phase ID numbers have been recomplementedby <strong>the</strong> <strong>System</strong> Loader. At <strong>the</strong> end of <strong>the</strong> string is/FFFF. It may be at an odd or an even address,depending upon <strong>the</strong> length of <strong>the</strong> string. The lestword of <strong>the</strong> Reload Table is used for <strong>the</strong> SLET andReload Table checksum. At <strong>the</strong> end of an initialload, <strong>the</strong> phase ID numbers are in ascending order.After one or more reload operations <strong>the</strong> phase IDnumbers may or may not be in ascending order.When a DEFINE VOID ASSEMBLER or DEFINEVOID FORTRAN operation is performed by DUP,all phase ID numbers belonging to <strong>the</strong> voided program(s)are removed from <strong>the</strong> Reload Table. Theremaining 3-word entries in <strong>the</strong> Reload Table arepacked toge<strong>the</strong>r and terminated with /FFFF.14


SECTION 4. COLD START PROGRAMSFLOWCHARTSCold Start Loader: CSTO1Cold Start <strong>Program</strong>: CSTO2COLD START LOADERThe Cold Start Loader is <strong>the</strong> one-card bootstrap usedto initiate <strong>the</strong> operation of <strong>the</strong> Cold Start <strong>Program</strong>,which in turn initiates <strong>the</strong> operation of <strong>the</strong> monitorsystem.Since it is loaded by <strong>the</strong> IPL procedure, allinstructions in <strong>the</strong> Cold Start Loader are in IPLformat. Hence, <strong>the</strong> program must construct allIOCCs as well as any long instructions requiredby it.The first word set up after entering <strong>the</strong> programis <strong>the</strong> second word of <strong>the</strong> IOCC for reading <strong>the</strong> ConsoleEntry switches. After this is done, <strong>the</strong> numberof <strong>the</strong> physical drive to be assigned as logical drive0 is obtained from <strong>the</strong> Console Entry switches. Theprogram <strong>the</strong>n checks to see if <strong>the</strong> number obtainedis valid (0-4, inclusive). If it is not, <strong>the</strong> programcomes to a WAIT from which <strong>the</strong> user may restartby entering a valid number and pressing <strong>the</strong> STARTkey. Once a valid number has been obtained, <strong>the</strong>device code for <strong>the</strong> drive specified is constructedand saved (for use by <strong>the</strong> Cold Start <strong>Program</strong> as wellas <strong>the</strong> Cold Start Loader).After setting up <strong>the</strong> second word of <strong>the</strong> IOCC forsensing <strong>the</strong> disk (with reset), <strong>the</strong> program senses <strong>the</strong>disk. <strong>All</strong> bits except <strong>the</strong> not-ready bit (bit 2) aremasked out. If <strong>the</strong> drive is not ready, <strong>the</strong> programcomes to <strong>the</strong> same WAIT mentioned above.Four long instructions are built, and <strong>the</strong> finalsteps in <strong>the</strong> setting up of <strong>the</strong> IOCC for seeking areperformed. The word count of <strong>the</strong> Cold Start <strong>Program</strong>plus <strong>the</strong> word count of DISKZ plus 27 is storedin DZ000-29, <strong>the</strong> 27 being <strong>the</strong> number of wordsreserved in sector @MAD for parameters.After setting up <strong>the</strong> second word of <strong>the</strong> IOCCfor reading <strong>the</strong> disk, <strong>the</strong> program initiates aseek toward <strong>the</strong> home position, one cylinder at atime. When <strong>the</strong> seek is complete, sector zero on<strong>the</strong> cylinder currently under <strong>the</strong> read/write headsis read from <strong>the</strong> disk„ If no disk error occursduring this read and if <strong>the</strong> sector address is that ofsector @IDAD, <strong>the</strong>n a branch is made to $ZEND,which is <strong>the</strong> address of <strong>the</strong> first word of <strong>the</strong> ColdStart <strong>Program</strong>.If <strong>the</strong> sector address is not that of <strong>the</strong> Cold Start<strong>Program</strong>, ano<strong>the</strong>r seek toward <strong>the</strong> home position isinitiated. This seek-and-read process is repeateduntil <strong>the</strong> proper sector address is found. (Therefore,acartridge with invalid sector addresses causes<strong>the</strong> program to function improperly.) Any diskerror results in <strong>the</strong> program coming to a WAIT witha /3028 in <strong>the</strong> storage address register.COLD START PROGRAMThe Cold Start <strong>Program</strong> is fetched from <strong>the</strong> diskand given control by <strong>the</strong> Cold Start Loader.Using <strong>the</strong> same device code that was set up by<strong>the</strong> Cold Start Loader for <strong>the</strong> physical drive assignedas logical drive 0, <strong>the</strong> Cold Start <strong>Program</strong>reads <strong>the</strong> Resident Image into its normal location incore storage. Once this operation is performed,location zero is initialized with an MDX to $DUMP+1and <strong>the</strong> Auxiliary Supervisor is entered with aparameter of minus 1, causing it to place a dummyJOB monitor control record into <strong>the</strong> Supervisorbuffer and execute a CALL EXIT.CORE LAYOUTFigure 2, panel 1, shows <strong>the</strong> layout of <strong>the</strong> contentsof core storage after <strong>the</strong> Cold Start Loader has beenloaded and, in turn, has fetched sector @IDAD fromlogical drive 0 into core storage. This sector isread into core such that <strong>the</strong> DISKZ subroutineresides at DZ000, followed by <strong>the</strong> Cold Start <strong>Program</strong>.Figure 2, panel 2, shows <strong>the</strong> layout of <strong>the</strong> contentsof core storage after <strong>the</strong> Cold Start <strong>Program</strong> hasfetched <strong>the</strong> Resident Image from sector @RIADfrom logical drive 0 into core storage. TheResident Image, like DISKZ, is fetched in such afashion that all locations occupy <strong>the</strong>ir permanentpositions in core storage.Section 4. Cold Start <strong>Program</strong>s 15


Cold StartLoaderResidentImageParametersDISKZ DISKZCold Start Cold Start<strong>Program</strong> <strong>Program</strong>71gure 2. Core Layout During Cold Start16


Page Blank In Original


Page Blank In Original


SECTION 6. SUPERVISORFLOWCHARTSMonitor Control Record Analyzer: SUP02 - SUP05Supervisor Control Record Analyzer: SUP06-SUP08Auxiliary Supervisor: SUP10<strong>System</strong> Core Dump <strong>Program</strong>: SUP09MONITOR CONTROL RECORD ANALYZER -PHASE 1The Monitor Control Record Analyzer is <strong>the</strong> programthat decodes monitor control records and takes <strong>the</strong>specified action.The Monitor Control Record Analyzer is enteredvia <strong>the</strong> EXIT entry point in <strong>the</strong> Skeleton Supervisor.This entry causes phase 1 of <strong>the</strong> Core Image Loaderto fetch <strong>the</strong> Monitor Control Record Analyzer andtransfer control to it.The Monitor Control Record Analyzer utilizes <strong>the</strong>system I/O device subroutines. Three of <strong>the</strong>se subroutines(an input, an output, and <strong>the</strong> appropriateconversion subroutine) are fetched into core storageby <strong>the</strong> Monitor Control Record Analyzer itself,using SLET information provided by <strong>the</strong> <strong>System</strong>Loader.The Monitor Control Record Analyzer readsmonitor control records from <strong>the</strong> principal inputdevice into <strong>the</strong> Supervisor buffer, which occupieslocations @SBFR through @SBFR+79 and contains amonitor control record in unpacked, right-justifiedEBCDIC format.The principal conversion subroutine checks formonitor control records. If <strong>the</strong> principal conversionsubroutine detects a monitor control record during<strong>the</strong> execution of a monitor system program o<strong>the</strong>rthan <strong>the</strong> Monitor Control Record Analyzer, $CTSWin COMMA is set to a positive non-zero value, <strong>the</strong>monitor control record is converted to unpacked,right-justified EBCDIC format, and <strong>the</strong> record ispassed to <strong>the</strong> Monitor Control Record Analyzer in<strong>the</strong> locations assigned as <strong>the</strong> Supervisor buffer.If a JOB record is recognized Phase 2 is fetchedand control passed to it.Upon detecting an ASM, FOR or RPG monitorcontrol record <strong>the</strong> Monitor Control Record Analyzerfetches <strong>the</strong> first phase of <strong>the</strong> specified program usingSLET information provided by <strong>the</strong> <strong>System</strong> Loader,and transfers control to it.Upon detecting a DUP monitor control record,<strong>the</strong> Monitor Control Record Analyzer tests $NDUP,<strong>the</strong> non-DUP switch, in COMMA. If $NDUP is zero,<strong>the</strong> Monitor Control Record Analyzer fetches andtransfers control to <strong>the</strong> first phase of DUP. O<strong>the</strong>rwise,an error message is printed and <strong>the</strong> nextcontrol record is read for processing.Upon detecting a PAUS monitor control record,<strong>the</strong> Monitor Control Record Analyzer comes to aWAIT at $PRET. When <strong>the</strong> PROGRAM START keyis pressed, <strong>the</strong> Monitor Control Record Analyzerreads and processes <strong>the</strong> next control record.Upon detecting a TYP monitor control record,<strong>the</strong> Monitor Control Record Analyzer replaces <strong>the</strong>SLET information used to fetch <strong>the</strong> principal inputdevice subroutine and its associated conversionsubroutine with <strong>the</strong> SLET information for <strong>the</strong> Keyboardinput subroutine and its associated conversionsubroutine. These subroutines are <strong>the</strong>n fetched andused for <strong>the</strong> reading and converting of subsequentinput records from <strong>the</strong> Keyboard.Upon detecting a TEND monitor control record,<strong>the</strong> Monitor Control Record Analyzer replaces <strong>the</strong>SLET information used to fetch <strong>the</strong> principal inputdevice (<strong>the</strong> Keyboard) subroutine and its associatedconversion subroutine with <strong>the</strong> SLET informationfor <strong>the</strong> device subroutine and conversion subroutineused with <strong>the</strong> device normally assigned as <strong>the</strong>principal input device, i. e. , not <strong>the</strong> Keyboard.These subroutines are <strong>the</strong>n fetched and used for <strong>the</strong>reading and converting of subsequent input records.Upon detecting a CPRNT monitor control record,<strong>the</strong> Monitor Control Record Analyzer replaces <strong>the</strong>SLET information used to fetch <strong>the</strong> principal printdevice subroutine with <strong>the</strong> SLET information for <strong>the</strong>Console Printer output subroutine. (This replacementis permanent and can be changed only by<strong>System</strong> Loader with a reload function.) This subroutineis <strong>the</strong>n fetched and used for <strong>the</strong> printingof subsequent output records on <strong>the</strong> ConsolePrinter.Upon detecting an EJECT monitor control record,<strong>the</strong> Monitor Control Record Analyzer ejects <strong>the</strong> pageon <strong>the</strong> principal print device, prints <strong>the</strong> currentpage heading, and reads and processes <strong>the</strong> nextmonitor control record.Upon detecting an XEG monitor control record,<strong>the</strong> Monitor Control Record Analyzer tests $NXEQ,<strong>the</strong> non-execute switch, in COMMA. If $NXEQ iszero, <strong>the</strong> Monitor Control Record Analyzer fetchesand transfers control to PHASE 4 (see below).O<strong>the</strong>rwise, <strong>the</strong> Monitor Control Record Analyzerprints an error message and reads <strong>the</strong> next controlSection 6. Supervisor 19


Page Blank In Original


Page Blank In Original


lank (<strong>the</strong> mainline is in Working Storage) <strong>the</strong> namein <strong>the</strong> SCRA is set zero.EQUAT Control Record ProcessingThe pair(s) of subroutine names found in <strong>the</strong> EQUATControl Record are converted to name code andstored to sector 7 of <strong>the</strong> SCRA.SUPERVISOR CONTROL RECORD AREA (SCRA)Sectors 0 and 1 of <strong>the</strong> SCRA are occupied by <strong>the</strong>LOCAL information for <strong>the</strong> core load or executioncurrently in progress (see diagram, below). Thefirst word of sector 0 contains <strong>the</strong> word count of <strong>the</strong>information stored in <strong>the</strong> two LOCAL sectors.Sectors 2 and 3 of <strong>the</strong> SCRA are occupied by <strong>the</strong>NOCAL information for <strong>the</strong> core load or executioncurrently in progress (see diagram, below). Thefirst word of sector 2 contains <strong>the</strong> word count of<strong>the</strong> information stored in <strong>the</strong> two NOCAL sectors.Sectors 4 and 5 of <strong>the</strong> SCRA are occupied by <strong>the</strong>FILES information for <strong>the</strong> core load or executioncurrently in progress (see diagram, below). Thefirst word of sector 4 contains <strong>the</strong> word count of <strong>the</strong>information stored in <strong>the</strong> two FILES sectors.Sector 6 is occupied with G2250 information for<strong>the</strong> core load or execution currently in progress.The format of information in <strong>the</strong> LOCAL/NOCALsectors is as follows:Subroutine NameWord Count (sign bit is set to indicate that this is<strong>the</strong> last word count)Mainline NameSubroutine NameSubroutine NameSection 2 I !MIMIIfNot UsedThe format of information in <strong>the</strong> FILES sectorsis as follows:Word Count, one word specifying <strong>the</strong> number of words in <strong>the</strong> IwoFILES sectors occupied by FILES information, including <strong>the</strong>word count.File Number, one word specifying in binary <strong>the</strong> numberassigned to <strong>the</strong> file in a FORTRAN DEFINE FILEstatement and by which <strong>the</strong> file is referencedFile Name, two words in name code format specifying <strong>the</strong>name of <strong>the</strong> file as it appears in LET/FLET (zerosif no file name is specified) .Cartridge ID, one word specifying in binary <strong>the</strong> IDof <strong>the</strong> cartridge containing <strong>the</strong> precedingnamed file (zero if no cartridge ID isspecified) .File NumberFile NameCartridge IDFile NameFile NumberWord Count, one word specifying <strong>the</strong> number of wordsoccupied by LOCAL/NOCAL informationinclusive from A to B.Mainline name, two words in name code format (blanksif no mainline name is specified)Subroutine Name, two words in ndme code formatspecifying a LOCAL,/NOCAL subroutine associatedwith <strong>the</strong> precedingmainlineSubroutine NameSubroutine NameMainline1 Word Count, from B to <strong>the</strong> nextNameword count.4 Mainline and Subroutine Names "' IA—SSSector2 I1 Cartridge IDThe information in <strong>the</strong> EQUAT sectorsis as follows:I Word Original New Original NewmdSubroutine SubroutineNSuatoeut Subrout ine SubroutineCount NameNameNana1=,n+1Sector 1 0 7 I ISector 1I 2 I 3 I 4 . 1In 3 In 2 In n IWIWI IIFirst pairn is equal to 4 (number of pairs)n must be less than or equal to 40Not UsedLast pair22


The format of <strong>the</strong> information in <strong>the</strong> G2250 sectoris as follows.Sector I6Word Count, one word specifying <strong>the</strong> number of words oneG2250 information record occupies in <strong>the</strong> G2250sector, including <strong>the</strong> word count. A word countis included for each G2250 record.Mainline Name, two words of blanks in name code format.(blank if mainline program is executed fromworking storage).GCOM, two words in name code format specifying<strong>the</strong> graphic communication control block.Subroutine Name, two words in name codeformat.Subroutine Na mes-1 indicatesword followinglast entrySYSTEM CORE DUMP PROGRAM - PHASE 6If an entry was made to <strong>the</strong> Skeleton Supervisor at.$Dump, <strong>the</strong> Skeleton Supervisor writes <strong>the</strong> contentsof location $CIBA+1 through 4095 on <strong>the</strong> CIB, <strong>the</strong>nfetches and transfers control to phase 1 of <strong>the</strong> CoreImage Loader. If $DMPF (<strong>the</strong> dump format indicator)is zero or positive, <strong>the</strong> Core Image Loaderfetches into core storage and transfers control to<strong>the</strong> <strong>System</strong> Core Dump program.The Dump program requires <strong>the</strong> principal printdevice subroutine. This subroutine is fetched intocore storage by <strong>the</strong> Dump program itself utilizingSLET information provided by <strong>the</strong> <strong>System</strong> Loader.If dump limits are specified, <strong>the</strong>se checks aremade:• If both limits are zero, <strong>the</strong> lower limit is leftzero and <strong>the</strong> upper limit is set to core size.• If a limit is larger than core size, <strong>the</strong> limit issubtracted from <strong>the</strong> core size and <strong>the</strong> differenceis used as <strong>the</strong> limit.• If <strong>the</strong> lower limit is greater than <strong>the</strong> upper limit,a wrap-around dump is given. That is, corestorage between <strong>the</strong> lower limit and <strong>the</strong> end ofcore storage is dumped, <strong>the</strong>n core storagebetween location 0 and <strong>the</strong> upper limit is dumped.The lower dump limit is checked to determinewhich, if any, sections of <strong>the</strong> CIB must be read into<strong>the</strong> dump buffer. If any or all of <strong>the</strong> contents of <strong>the</strong>CIB are to be dumped, <strong>the</strong> CIB is read into corestorage in sections; sectors 0-3 constituting section1, sectors 4-7 constituting section 2, and sectors8-12 constituting section 3. Since <strong>the</strong> first six wordsof core storage were not stored to <strong>the</strong> CIB, <strong>the</strong>contents of <strong>the</strong> dump buffer are offset by six words.These six words are filled in from words 0-5 in <strong>the</strong>case of section 1 and are saved from <strong>the</strong> end of <strong>the</strong>previous section in <strong>the</strong> cases of sections 2 and 3.Locations greater than 4095 were not stored to <strong>the</strong>CIB and are dumped from <strong>the</strong>ir original locations.If $DUMP contains no return address (i. e. , iszero), <strong>the</strong> Dump program executes a CALL EXIT.If $DUMP contains a return address (i. e. isnon-zero), <strong>the</strong> Dump program restores <strong>the</strong> contentsof core storage in three stages. First, <strong>the</strong>locations between $CIBA+1 and <strong>the</strong> beginning of <strong>the</strong>disk I/O subroutine are restored from <strong>the</strong> CIB.Second, <strong>the</strong> locations between <strong>the</strong> beginning of <strong>the</strong>disk I/O subroutine and <strong>the</strong> beginning of <strong>the</strong> principalprint device subroutine are restored. Third, <strong>the</strong>locations between <strong>the</strong> beginning of <strong>the</strong> principal printdevice subroutine and location 4095 are restoredfrom <strong>the</strong> CIB. Control is <strong>the</strong>n returned to <strong>the</strong> restoredcore load at <strong>the</strong> location following <strong>the</strong> dumpparameters.AUXILIARY SUPERVISOR - PHASE 7If an entry was made to <strong>the</strong> Skeleton Supervisor at$DUMP and $DMPF (<strong>the</strong> dump format indicator)is negative, phase 1 of <strong>the</strong> Core Image Loaderfetches into core storage and transfers control to<strong>the</strong> Auxiliary Supervisor.The Auxiliary Supervisor has <strong>the</strong>se functions:• It writes dummy monitor control records in<strong>the</strong> Supervisor buffer for processing by <strong>the</strong>Monitor Control Record Analyzer.• It prints error messages for errors detected by<strong>the</strong> Core Image Loader.• It aborts a JOB.The Cold Start <strong>Program</strong> calls <strong>the</strong> AuxiliarySupervisor with a parameter of minus one (-1). Thisparameter causes <strong>the</strong> Auxiliary Supervisor to placea dummy JOB monitor control record in <strong>the</strong> Supervisorbuffer, convert from binary to EBCDIC <strong>the</strong>cartridge ID of <strong>the</strong> cartridge from which <strong>the</strong> coldstart was made and store it in <strong>the</strong> SupervisorBuffer, set $CTSW non-zero, and executes a CALLEXIT.The ILSO4 subroutine calls <strong>the</strong> Auxiliary Supervisorwith a parameter of minus two (-2) if aninterrupt occurs from <strong>the</strong> Keyboard INTERRUPTREQUEST key and <strong>the</strong> user has not provided a servicingsubroutine for that interrupt. This parametercauses <strong>the</strong> Auxiliary Supervisor to set $IOCT, $IBSYSection 6. Supervisor 23


Page Blank In Original


Page Blank In Original


Page Blank In Original


SECTION 7. CORE IMAGE LOADERFLOWCHARTSPhase 1: CIL01Phase 2: CIL02PHASE 1Phase 1 of <strong>the</strong> Core Image Loader handles <strong>the</strong> threeentries to <strong>the</strong> Skeleton Supervisor - LINK, DUMP,and EXIT, The Core Image Loader is assigned thistask in order to minimize transfer time (via CALLLINK) from one link to ano<strong>the</strong>r.Phase 1 of <strong>the</strong> Core Image Loader is naturallyrelocatable. It is read into core storage by <strong>the</strong>Skeleton Supervisor immediately following whicheverdisk I/O subroutine is currently in <strong>the</strong> ResidentMonitor. (This can be done by <strong>the</strong> Skeleton Supervisorwith minimal core requirement because <strong>the</strong>word count and sector address of this phase permanentlyreside at <strong>the</strong> end of each disk I/0 subroutine.)If <strong>the</strong> Skeleton Supervisor was entered at$DU1V1P ($RMSW is positive), phase 1 tests$DUMPF, <strong>the</strong> dump format code indicator. If$DMPF is negative, phase 1 fetches and transferscontrol to <strong>the</strong> Auxiliary Supervisor. If $DMPF isnot negative, phase 1 fetches and transfers controlto <strong>the</strong> <strong>System</strong> Core Dump program.If <strong>the</strong> Skeleton Supervisor was entered at $ EXIT($RMSW is negative), phase 1 tests $DZIN to determinewhe<strong>the</strong>r DISKZ is in <strong>the</strong> Resident Monitor. IfDISKZ is in <strong>the</strong> Resident Monitor, phase 1 fetchesand transfers control to <strong>the</strong> Monitor Control RecordAnalyzer. If DISKZ is not in <strong>the</strong> Resident Monitor,phase 1 fetches phase 2 of <strong>the</strong> Core Image Loader.Using phase 2 as a subroutine, phase 1 overlaysDISK1 or DISKN with DISKZ.. Phase 1 <strong>the</strong>n fetchesand transfers control to <strong>the</strong> Monitor Control RecordAnalyzer.If <strong>the</strong> Skeleton Supervisor was entered at $LINK($RMSW is zero), phase 1 tests $COMN in COMMAto determine if COMMON was defined by <strong>the</strong> coreload just terminated. If $COMN is non-zero, phase1 saves Low COMMON on <strong>the</strong> CIB. (Low COMMONis <strong>the</strong> lowest 320 words that could have been definedas COMMON by <strong>the</strong> core load just terminated.)Depending on <strong>the</strong> disk I/O subroutine currently in<strong>the</strong> Resident Monitor, Low COMMON is defined asfollows:Low COMMONDisk I/0 Subroutine Decimal HexadecimalDISKZ 896 - 1215 /0380 - /04BFDISK1 1216 - 1535 /04C0 - /05FFDISKN 1536 - 1855 /0600 - /073FThe area occupied by Low COMMON is used byphase 1 as a disk I/O buffer during <strong>the</strong> LET/FLETsearch and/or as <strong>the</strong> area into which phase 2 isfetched when phase 2 is to be used to fetch DISKZ.Once Low COMMON has been saved, or if noCOMMON was defined by <strong>the</strong> core load just terminated,phase 1 searches LET/FLET for <strong>the</strong> nameof <strong>the</strong> program or core load to be executed next.The name of tile link has been saved in $LKNM by <strong>the</strong>Skeleton Supervisor.If <strong>the</strong> link is in disk system format (DSF), phase1 saves any COMMON defined below 4096 on <strong>the</strong>CIB. It <strong>the</strong>n fetches phase 2, uses phase 2 as asubroutine to overlay DISK1 or DISKN with DISKZ,fetches phase 0/1 of <strong>the</strong> Core Load Builder, andtransfers control to phase 1 of <strong>the</strong> Core LoadBuilder.If <strong>the</strong> link is in disk core image format (DCI),phase 1 fetches and transfers control to phase 2 tofetch <strong>the</strong> link and <strong>the</strong> required disk I/O subroutine,if necessary, and to transfer control to that link.Special Techniques. Phase 1 of <strong>the</strong> Core ImageLoader places a disk call subroutine in COMMA at$HASH+8 through $HASH+19. Using this disk callsubroutine, phase 1 is able to overlay itself whenfetching phase 2, <strong>the</strong> Monitor Control RecordAnalyzer, etc.PHASE 2Phase 2 of <strong>the</strong> Core Image Loader is naturallyrelocatable. It is read into core storage (by phase1) immediately following <strong>the</strong> end of phase 1 if it isto be used by phase 1 to fetch DISKZ, or (by ei<strong>the</strong>rphase 1 or <strong>the</strong> Core Load Builder) following <strong>the</strong> endof <strong>the</strong> disk I/O subroutine currently in <strong>the</strong> ResidentMonitor if it is to fetch and transfer control to acore load. Phase 2 provides two functions: (1)to overlay <strong>the</strong> disk I/O subroutine currently in <strong>the</strong>Resident Monitor with <strong>the</strong> requested disk I/O sub-Section 7. Core Image Loader 27


Page Blank In Original


Page Blank In Original


0 0 0 0COMMA, COMMA, COMMA, COMMA,Skeleton Skeleton Skeleton SkeletonSupervisor Supervisor Supervisor SupervisorDISK1OrDISKNCore ImageLoader,Phase 1LET/FLETBufferLowCOMMONDISK]orDISKNCore ImageLoader,PhaseLET/FLETBufferLowCOMMONCOMMONBelow4096,SavedCOMMONAbove4096,NotSavedprDISKZDISKZCore Load4 Builder,Phase0/1Figure 7. Core Layout on Supervisor at $LINK (Link in Disk <strong>System</strong>Format)Ahas been saved by phase 1, and <strong>the</strong> LET/FLETsearch buffer has been allocated. In panel 2, phase2 of <strong>the</strong> Core Image Loader has been fetched byphase 1; <strong>the</strong> core image header buffer has beenallocated by phase 2. In panel 3, <strong>the</strong> disk I/0 subroutinerequired by <strong>the</strong> program being linked to hasbeen fetched into <strong>the</strong> Resident Monitor. Panels4, 5, and 6 represent three different cases. Inpanel 4 <strong>the</strong> program being linked to is a DC[ program,whereas in panels 5 and 6 it is a DSF program.Although <strong>the</strong> Core Load Builder is calledinto core in <strong>the</strong> DSF cases, it is not shown herein order to simplify <strong>the</strong> diagram. In panel 4, <strong>the</strong>program being linked to has been fetched by phase2. In panel 5, COMMON defined by <strong>the</strong> previouscore load below location 4096, previously savedon <strong>the</strong> CIB by phase 1 of <strong>the</strong> Core Image Loader,as well as <strong>the</strong> program being linked to, has beenfetched by phase 2. In panel 6, <strong>the</strong> portion of<strong>the</strong> program being linked to that is contained in<strong>the</strong> CIB (<strong>the</strong> portion below location 4096, placedin <strong>the</strong> CIB by <strong>the</strong> Core Load Builder) has beenfetched by phase 2.DEBUGGING/ANALYSIS AIDSTo facilitate <strong>the</strong> finding of errors in and associatedwith <strong>the</strong> Core Image Loader, NOP instructions havebeen placed at critical locations in <strong>the</strong> Core ImageLoader; <strong>the</strong>y are: CM000+1, CM118-5, CM180,LD000+1, GETCL, and LD100+8. These NOPs canbe replaced by WAIT instructions so that core dumpscan be taken at various stages during Core ImageLoader execution. An analysis of <strong>the</strong> core dump(s)may provide enough information to locate <strong>the</strong> problem.Bear in mind that <strong>the</strong> Core Image Loader isnaturally relocatable. Thus, all modificationsmade to it must be executable irrespective of corelocation.30


0 0 0 0 0 0COMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorDISKZ DISKZ Required Required Required RequiredDisk I/0 Disk I/0 Disk I/O Disk I/OCore Image Subroutine Subroutine Subroutine Subroutine///////Loader'Phase 1 Core Image Core ImageLET/FEETLoader,Phase 2Loader,Phase 2BufferLinkCI HeaderThatCoreBufferPortionLowLoadofCOMMONCore LoadLoadedFromC IBLinkCoreLoadCOMMONBelow4096,RestoredCOMMONAbove4095,NotSavedButNotOverlaidThatPortionofCore LoadAbove4095,PlacedInCore ByCore LoadBuilderFigure 8. Core Layout on Supervisor Entry at $LINK (Link in Core Image Format)Section 7. Core Image Loader 31


SECTION 8. CORE LOAD BUILDERFLOWCHARTSPhase 1 (IN): CLBO1Phase 2 (MC): CLB02The Core Load Builder builds a specified mainlineprogram into an executable core load. The mainlineprogram, with its required subroutines (LOCALsand SOCALs included), is converted from disksystem format (DSF) to a format suitable for execution.During <strong>the</strong> conversion, <strong>the</strong> Core Load Builderalso builds <strong>the</strong> core image header record and <strong>the</strong>transfer vector. The resulting core load is suitablefor immediate execution or for storing on <strong>the</strong> disk indisk core image format (DCI) for future execution.GENERAL COMMENTSEach phase of <strong>the</strong> Core Load Builder has beenbroken up into a series of relatively small, selfcontainedsubroutines. After initialization (phase 1)control remains in <strong>the</strong> Master Control subroutine,which is a part of phase 2. (The labels in this subroutineall start with "MC". ) In o<strong>the</strong>r words, <strong>the</strong>basic control logic is found in <strong>the</strong> Master Controlsubroutine.The labels assigned to constants and work areaswithin subroutines are in <strong>the</strong> range 900-999. Whenevernoted, even-numbered labels are on evenboundaries, and odd-numbered labels are on oddboundaries. Constants and work areas in RCOM(phase 0) are mnemonic and are arranged in fourgroups, each ordered alphabetically. Double-wordcells are in one group, indexed cells are in a second;constants are in a third; and switches and work areasare in a fourth. The labels of switches are of <strong>the</strong>form "LSWx", where "x" is a number. The labelsof constants are of <strong>the</strong> form "Kx", where "x" isei<strong>the</strong>r <strong>the</strong> number, in decimal, defined in <strong>the</strong> constantor <strong>the</strong> four hexadecimal digits defined in <strong>the</strong>constant.Patch areas are usually found at <strong>the</strong> end of a phase.Each one is defined by a BSS followed by a DC.OVERLAY SCHEME AND CORE LAYOUTThe overlays (phases) of <strong>the</strong> Core Load Builder havebeen organized to allow maximum core storage for<strong>the</strong> Load Table while minimizing <strong>the</strong> flip-flopping ofphases. "Minimizing" here means that, during aone-pass building process (no LOCALs or SOCALs),<strong>the</strong> phases are executed serially from 1 through 6(excluding 5). During a two-pass building process(LOCALs and/or SOCALs required), <strong>the</strong>re is someflip-flopping of phases 3 and 5.Phase 0 is never overlaid. It contains <strong>the</strong> subroutinesthat must never be overlaid, as well aswork areas and constants required by more than onesubroutine.Phase 1 is fetched along with phase 0. The onlydifference is that phase 2 overlays phase 1 but not,of course, phase 0. Phases 3, 4, 5, 6, and 12 overlay<strong>the</strong> last part of phase 2.Phases 7-10 contain messages. They all requirethat <strong>the</strong> principal print subroutine be in <strong>the</strong> databuffer; <strong>the</strong>se phases <strong>the</strong>mselves are executed from<strong>the</strong> LET/FLET search buffer.Phase 11 prints <strong>the</strong> file map and phase 12 <strong>the</strong> coremap. Both of <strong>the</strong>se phases require that <strong>the</strong> principalprint device subroutine be in <strong>the</strong> LET/FLET searchbuffer. Phase 11 is executed from <strong>the</strong> data buffer.Figure 9, panel 1 shows <strong>the</strong> layout of <strong>the</strong> contentsof core storage after phases 0 and 1 of <strong>the</strong> Core LoadBuilder have been fetched into core storage by phase1 of <strong>the</strong> Core Image Loader or <strong>the</strong> STORE functionof DUP.Figure 9, panel 2 shows <strong>the</strong> layout of <strong>the</strong> contentsof core storage after phase 1 has fetched phase 2,overlaying itself. Phase 2 has allocated <strong>the</strong> areas for<strong>the</strong> Load Table and <strong>the</strong> disk I/O buffers.Figure 9, panel 3 shows <strong>the</strong> layout of <strong>the</strong> contentsof core storage after any one of <strong>the</strong> overlay phaseshas been fetched by phase 2.Phase 1 includes <strong>the</strong> subroutines called by <strong>the</strong> initializationsubroutine. In this way, phase 2 can overlayphase 1 completely. Phase 2 includes <strong>the</strong> subroutinescalled by <strong>the</strong> relocation subroutine, RL. Theorder of <strong>the</strong> subroutines in this phase is important.Those that are required only during <strong>the</strong> relocation of<strong>the</strong> mainline (MV, ML, CK, DC, DF, and FM) comeSection S. Core Load Builder 33


0 U) ®COMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorDISKZ DISKZ DISKZPhase0Phase1Phase0Phase2DiskI/0BuffersLoadTab leThatPortionofCore LoadAbove5056Phase0Phase2Phases3,4,5,6,12,13Phase7,8,9,10,11LoadTableThatPortionofCore LoadAbove5056Figure 9. Core Layout During Core Load Builder Operationlast so that <strong>the</strong>y may be overlaid by phase 3. Phase 3includes <strong>the</strong> subroutines required to choose a subroutine(as opposed to a mainline) from <strong>the</strong> Load'Table and relocate it. Phases 4 and 6 round out <strong>the</strong>one-pass core load building process. Phase 4determines whe<strong>the</strong>r or not SOCALs are required,and, if so, whe<strong>the</strong>r or not <strong>the</strong>y can be employed tomake <strong>the</strong> core load fit into core storage. It alsoprocesses ILSs. Phase 6 performs <strong>the</strong> miscellaneousjobs, such as creating <strong>the</strong> transfer vector, that canbe done only at <strong>the</strong> end of <strong>the</strong> process of building acore load. Phase 5 is executed only during pass 2in a two•pass building process. It organizes <strong>the</strong>LOCALs and SOCALs for relocation, including <strong>the</strong>irspecial linkages.DISK BUFFERSThere are three buffers used by <strong>the</strong> Core LoadBuilder. Each is 320 words long, not counting <strong>the</strong>word count and sector address, and each has aprimary use, although it may be used temporarilyfor something else. For example, <strong>the</strong> LET searchbuffer is used primarily to hold a sector of LET/FLET when searching that table. However, it containsone of <strong>the</strong> message phases (phases 7-10)whenever a message is printed.The data buffer is a buffer for <strong>the</strong> User Area.The program currently being incorporated into <strong>the</strong>core load is read into this buffer, one sector at atime. For example, after a sector of <strong>the</strong> mainlineis read into this buffer from <strong>the</strong> User Area orWorking Storage, <strong>the</strong> relocation of <strong>the</strong> mainline canbegin. When this sector of <strong>the</strong> mainline has beenrelocated, ano<strong>the</strong>r sector (if any) is fetched, andso on until <strong>the</strong> entire mainline is relocated.The main use of <strong>the</strong> CIB buffer is to contain <strong>the</strong>CIB, one sector at a time. For example, if a coreload is to occupy locations 1000 - 1639, <strong>the</strong>n <strong>the</strong> firstsector of <strong>the</strong> CIB contains <strong>the</strong> part of <strong>the</strong> core loadthat is to occupy 1000 - 1319 and <strong>the</strong> second sector1320 - 1639. As <strong>the</strong> core load is built, <strong>the</strong> LocationAssignment Counter (LAC) reflects <strong>the</strong> ultimate coreaddress of <strong>the</strong> data word currently being relocated.In this example, <strong>the</strong> LAC would start at 1000, thuscausing sector 1 of <strong>the</strong> CIB to be read into <strong>the</strong> CIBbuffer. This first word of <strong>the</strong> core load would beplaced in <strong>the</strong> first word of <strong>the</strong> CIB buffer and <strong>the</strong>LAC advanced by 1. Assuming no data breaks, <strong>the</strong>LAC will eventually be incremented to 1320. Then<strong>the</strong> contents of <strong>the</strong> CIB buffer will be written outon sector 1 of <strong>the</strong> CIB, and sector 2 will replacesector 1 in <strong>the</strong> CIB buffer. In short, each word ora core load is always transferred to <strong>the</strong> CIB via <strong>the</strong>CIB buffer.The data and CIB buffers are combined into asingle 640-word buffer for <strong>the</strong> purpose of fetching<strong>the</strong> LOCAL, NOCAL, FILES, and G2250 informationfrom <strong>the</strong> SCRA.CORE IMAGE BUFFER (CIB)The Core Image Buffer is used by <strong>the</strong> Core LoadBuilder, <strong>the</strong> Core Image Loader, and <strong>the</strong> SkeletonSupervisor. The Core Load Builder uses it to storeany part of <strong>the</strong> core load that is to reside (when <strong>the</strong>34


core load is executed) below location 4096 if <strong>the</strong> sizeof core is 4K, o<strong>the</strong>rwise <strong>the</strong> part of <strong>the</strong> core loadbelow 5056. The first word of <strong>the</strong> mainline is storedin <strong>the</strong> first word of <strong>the</strong> CIB following <strong>the</strong> core imageheader, and subsequent words follow similarly. Thus,<strong>the</strong> mainline must be relocated first, and a subsequentORG that would set <strong>the</strong> Location AssignmentCounter below its first value is not allowed.LOAD TABLEThe Load Table is used by <strong>the</strong> Core Load Builderprimarily to tell what subprograms to include in <strong>the</strong>core load as well as at what time during <strong>the</strong> processof core load building to include a given subprogram.O<strong>the</strong>r uses of <strong>the</strong> table are discussed below. Itexists only during <strong>the</strong> building of a core load.There is an entry in <strong>the</strong> Load Table for (1) everyLOCAL/NOCAL entry point specified for a givenmainline and (2) for each subprogram entry pointreferenced in a core load, via CALL or LIBF. Forexample, even though subprogram A is called fivetimes, <strong>the</strong>re is only one entry in <strong>the</strong> Load Table forA. On <strong>the</strong> o<strong>the</strong>r hand, if A and B are differententry points to <strong>the</strong> same subprogram and both arereferenced, <strong>the</strong>n <strong>the</strong>re will be an entry for A andano<strong>the</strong>r for B.Each of <strong>the</strong> Load Table entries is four words inlength. The first entry occupies locations 4086 -4089, <strong>the</strong> second 4082 - 4085, etc if core size is4K, o<strong>the</strong>rwise locations 5046-5049, 5042-5045, etc.The first two words of each entry contain <strong>the</strong> name(in name code) of <strong>the</strong> subprogram that caused <strong>the</strong>entry to be made. Bit zero of <strong>the</strong> first word is setif <strong>the</strong> entry is that of a LOCAL, bit one is set if <strong>the</strong>entry is that of a CALL. Mainlines and interruptlevel subroutines never appear in <strong>the</strong> Load Table.Words three and four of each entry are zero when<strong>the</strong> entry is first made. As <strong>the</strong> relocation of a givensubprogram begins, word three is set with <strong>the</strong> entrypoint, i.e. , <strong>the</strong> absolute, address. In this way, <strong>the</strong>Core Load Builder can tell by looking at its LoadTable entry whe<strong>the</strong>r or not a subprogram has beenrelocated and where it has been relocated to.Word four is put to several uses, most of whichinvolve LOCAL processing. The use of this word ata given time is dependent upon <strong>the</strong> pass (1 or 2) and/or whe<strong>the</strong>r <strong>the</strong> subprogram associated with <strong>the</strong> LoadTable entry is a LOCAL that was specified in <strong>the</strong>LOCAL information in <strong>the</strong> SCRA. As an explanation,suppose that A and B are entry points to <strong>the</strong>same subprogram, and A ( but not B) appears in<strong>the</strong> LOCAL information in <strong>the</strong> SCRA. Both A andB can be called in <strong>the</strong> core load:, in such a caseA is said to be specified and B unspecified. Theseterms are useful in <strong>the</strong> following context.The values stored in word four at various timesare: (1) <strong>the</strong> class code (for a non-LOCAL), (2) <strong>the</strong>address of <strong>the</strong> Flipper Table entry, (3) /008 forevery subroutine called by a LOCAL, (4) <strong>the</strong> wordcount of a LOCAL, (5) <strong>the</strong> address of <strong>the</strong> Load Tableentry for <strong>the</strong> specified entry point for <strong>the</strong> LOCALcurrently being relocated, and (6) <strong>the</strong> address of <strong>the</strong>LIBF TV that corresponds to <strong>the</strong> entry in <strong>the</strong> LoadTable.Since locations 4097-5056 are reserved for <strong>the</strong>Load Table (core size greater than 4K) CLB has toread in that part of <strong>the</strong> core load pr ior to exit toCIL or DUP.EQUAT TABLEThe Equat Table consists of at most ten pairs ofnames of subroutines or names of files defined in aDSA statement. The first name in each pair is <strong>the</strong>subroutine or <strong>the</strong> file to be substituted with <strong>the</strong>second name of each pair. This checking is doneduring relocating of a mainline or its subroutines.Thus no name is added to <strong>the</strong> Load Table before ithas been checked against <strong>the</strong> Equat Table.LOCAL, NOCAL, FILES, and G2250 INFORMATIONLOCAL, NOCAL, FILES, and G2250 information isobtained from <strong>the</strong> Supervisor Control Record Area(SCRA). This information is supplied by <strong>the</strong> SupervisorControl Record Analyzer (see Section 6:Supervisor) or <strong>the</strong> STORE CI function of DUP (seeSection 9: Disk Utility <strong>Program</strong>). For <strong>the</strong> formatof LOCAL, NOCAL, FILES, and G2250 informationin <strong>the</strong> SCRA, see Section 6: Supervisor or Section 9:Disk Utility <strong>Program</strong>.EQUAT information is obtained from <strong>the</strong> SCRA.This information is supplied by <strong>the</strong> SupervisorControl Record Processing phase of <strong>the</strong> Supervisor(see Section 6: Supervisor). For <strong>the</strong> format ofEQUAT information in <strong>the</strong> SCRA, see Section 6:Supervisor.ISS TABLEThe ISS Table is used by <strong>the</strong> Core Load Builder as itconstructs Interrupt Branch Tables for ILSs. When<strong>the</strong> address to which an ISS is to be relocated becomesavailable, that address is stored in <strong>the</strong>appropriate entry in <strong>the</strong> ISS Table. For example, ifan ISS for <strong>the</strong> 1132 Printer (ISS number 6) is beingrelocated to location /1000, <strong>the</strong>n /1000 is stored inSection 8. Core Load Builder 35


constructed by <strong>the</strong> Core Load Builder and stored in<strong>the</strong> core image header record. When <strong>the</strong> CoreImage Loader fetches a core load (including <strong>the</strong> coreimage header), <strong>the</strong> address of <strong>the</strong> IBT for level 4is stored in location $IBT4, from which it is accessedby ILSO4, The IBT for ILSO2 is a single word,$IBT2, which contains <strong>the</strong> address of DZ000+4,regardless of <strong>the</strong> disk I/0 subroutine present in <strong>the</strong>Resident Monitor. This address is stored in $IBT2by <strong>the</strong> Core Image Loader as it fetches <strong>the</strong> requesteddisk I/0 subroutine. The IBTs for <strong>the</strong> remainingELSs are constructed and stored in <strong>the</strong> ILSs <strong>the</strong>mselvesby <strong>the</strong> Core Load Builder.After all subprograms have been relocated, <strong>the</strong>Core Load Builder constructs <strong>the</strong> IBTs. The IBTsfor all ILSs except ILSO2 are constructed as describedbelow. Bear in mind that <strong>the</strong>se ILSs arewritten with special constants stored in each IBTentry. These constants, which will be overlaid by<strong>the</strong> Core Load Builder, are as follows: The firsteight bits of each constant represent <strong>the</strong> incrementto be added to <strong>the</strong> loading address of <strong>the</strong> correspondingISS to get <strong>the</strong> address of <strong>the</strong> interrupt serviceentry point; for <strong>IBM</strong>-supplied ISSs, this value isfour, except for <strong>the</strong> "operation complete" entry pointfor <strong>the</strong> 1442 subroutines, for which <strong>the</strong> value isseven. The second eight bits are @ISTV plus <strong>the</strong>ISS number; thus, each <strong>IBM</strong> entry has an identifierto relate it to a specific ISS.The Core Load Builder fetches one word at a timefrom <strong>the</strong> IBT, e. , one of <strong>the</strong> special constantsoccupying <strong>the</strong> IBT locations in <strong>the</strong> ILS. The secondeight bits of <strong>the</strong> word fetched are used to compute<strong>the</strong> address of <strong>the</strong> ISS Table entry for <strong>the</strong> ISSnumber indicated. If <strong>the</strong> ISS Table entry is non-zero,it contains <strong>the</strong> loading address of <strong>the</strong> ISS itself,which is <strong>the</strong>n incremented by <strong>the</strong> value stored in <strong>the</strong>first eight bits of <strong>the</strong> word fetched. The resultingaddress, which is <strong>the</strong> address of <strong>the</strong> interruptservice entry point, replaces <strong>the</strong> special constantthat supplied <strong>the</strong> two eight-bit values. If <strong>the</strong> ISSTable entry is zero, <strong>the</strong> special constant is replacedwith <strong>the</strong> address of $STOP, <strong>the</strong> PROGRAM STOPkey trap in <strong>the</strong> Skeleton Supervisor. This processof replacing special constants continues until a zerois fetched from <strong>the</strong> IBT, indicating that <strong>the</strong> entireIBT has been processed. Except for ILSO4, thiszero is <strong>the</strong> entry point to <strong>the</strong> ILS itself.INCORPORATING PROGRAMS INTO THE CORELOADPASS 1The mainline is relocated first. Any calls foundduring this relocation are compared with <strong>the</strong> EquateTable and if no match is found <strong>the</strong>y are put in <strong>the</strong>Load Table, But if a match is found <strong>the</strong> originalsubroutine name is replaced with <strong>the</strong> new subroutinename before putting it in <strong>the</strong> Load Table, Hence<strong>the</strong> Load Table will contain <strong>the</strong> name of subroutinesthat will be loaded ra<strong>the</strong>r than <strong>the</strong> subroutines thatare called, After <strong>the</strong> mainline has been converted,each subprogram represented in <strong>the</strong> Load Table isrelocated, generally in <strong>the</strong> order found in <strong>the</strong> tableitself. An entry is flagged as having been relocatedby storing <strong>the</strong> address of <strong>the</strong> entry point in <strong>the</strong> thirdword of <strong>the</strong> entry. Before an entry is relocated,<strong>the</strong> names of all <strong>the</strong> entry points to <strong>the</strong> entry beingconsidered for relocation are compared with <strong>the</strong>name of each entry preceding it in <strong>the</strong> Load Table.A match indicates that <strong>the</strong> current entry is simplyano<strong>the</strong>r entry point to a previously relocated subprogram.Thus, <strong>the</strong> current entry is not relocated;instead, <strong>the</strong> absolute address of <strong>the</strong> entry point isdetermined and stored in <strong>the</strong> third word of <strong>the</strong> entryto signify that it has already been relocated.Fur<strong>the</strong>rmore, <strong>the</strong> names of all <strong>the</strong> entry pointsto <strong>the</strong> entry being considered for relocation are comparedwith <strong>the</strong> name in each entry in <strong>the</strong> Load Tablefollowing it. If a match occurs, <strong>the</strong> third words ofboth entries are filled in with <strong>the</strong> absolute addressof <strong>the</strong> entry point. Thus, <strong>the</strong> Load Table is scannedforward and backward for o<strong>the</strong>r entry points to <strong>the</strong>subprogram currently being considered for relocation.PASS 2The Load Table is scanned during pass 2 in <strong>the</strong> sameway as during pass 1. The only difference is thatsubprograms are relocated in a certain order duringpass 2, thus necessitating multiple passes through<strong>the</strong> Load Table; in fact, one pass is required for eachclass of subprograms. Thus, all <strong>the</strong> in-cores (class0) are relocated first, followed by LOCALs, subprogramsin SOCAL 1 (class 1), subroutines inSOCAL 2 (class 2), and subroutines in SOCAL 3(class 3), in that order,36


LOCALs AND SOCALsIf during <strong>the</strong> first pass <strong>the</strong> Core Load Builder(phase 4) determines that an Assembler core loadwill not fit into core storage even with any LOCALsthat have been specified, <strong>the</strong> core load buildingprocess is terminated. However, for a FORTRANcore load special overlays (SOCALs) of parts of <strong>the</strong>core load will be created during a second pass ifthis will make <strong>the</strong> core load fit. The decision ofwhe<strong>the</strong>r to proceed with a second pass is made afterphase 4 accounts for <strong>the</strong> sizes of <strong>the</strong> LOCAL area,if any, <strong>the</strong> flipper and its table, and each of <strong>the</strong>SOCALs. If <strong>the</strong> check shows that SOCAL option 1(SOCAL 1 and SOCAL 2) will be insufficient, <strong>the</strong>na fur<strong>the</strong>r check is made for option 2 (all threeSOCALs). If option 2 is still insufficient, processingis terminated; o<strong>the</strong>rwise, a second pass is made.During pass 2, <strong>the</strong> entire core load is builtagain, but, unlike during pass 1, subprograms arerelocated in a special order. First, <strong>the</strong> mainlineand <strong>the</strong> in-core (class 0) subprograms are relocated,followed by: <strong>the</strong> flipper; <strong>the</strong> LOCALs, if any; <strong>the</strong>arithmetic and function (class 1) subprograms; <strong>the</strong>non-disk FIO (class 2) subroutines; and, ifnecessary, <strong>the</strong> disk FIO (class 3) subroutines.The same procedure described above is necessaryif LOCALs are employed without SOCALs. In o<strong>the</strong>rwords, LOCALs, as well as SOCALs, require twopasses.INTERRUPT LEVEL SUBROUTINES (ILSs)After all o<strong>the</strong>r subprograms have been relocated,<strong>the</strong> Interrupt Transfer Vector (ITV) in <strong>the</strong> coreimage header is scanned. Except for <strong>the</strong> entriesfor interrupt levels 2 and 4, a non-zero entrycauses <strong>the</strong> corresponding ILS to be incorporatedinto <strong>the</strong> core load. (ILSO2 and ILSO4, unlesssupplied by <strong>the</strong> user, are a part of <strong>the</strong> ResidentMonitor.) See Interrupt Branch Table, above,for a description of <strong>the</strong> processing of that part ofan ILS.TRANSFER VECTOR (TV)The transfer vector consists of two parts: <strong>the</strong>LIBF TV and <strong>the</strong> CALL TV, The former provides<strong>the</strong> linkage to LIBF subprograms, <strong>the</strong> latter toCALL subprograms. The LIBF TV was created toenable <strong>the</strong> LIBF statement to require only onestorage location during execution. This is desirablebecause <strong>1130</strong> FORTRAN object code contains a veryhigh percentage of calls to subprograms. Longbranches to those subprograms would greatly increasecore requirements for core loads over amethod that employs short branches. By replacing<strong>the</strong> LIBF statement with a short BSI, tag 3, to atransfer vector entry, which could <strong>the</strong>n supply <strong>the</strong>long branch to <strong>the</strong> desired subprogram, this problemis solved. The cost, of course, is that XR3 is takenaway from <strong>the</strong> user and <strong>the</strong> transfer vector is limitedto 255 words, This means <strong>the</strong> LIBF TV has amaximum of 85 3-word entries, two of which become<strong>the</strong> real-number pseudo-accumulator (FAC) and anindicator for certain arithmetic subroutines. Thus,<strong>the</strong> user is limited to LIBFs to not more than 83separate subprogram entry points per core load.There is no <strong>the</strong>oretical limit on <strong>the</strong> number ofCALL entry points per core load, for <strong>the</strong> CALLstatement is replaced by an indirect BSI to <strong>the</strong>desired subprograms. However, <strong>the</strong> number ofCALL and LIBF references combined must notexceed <strong>the</strong> capacity of <strong>the</strong> Load Table, which isapproximately 150 entries.The CALL TV entry is one word only, <strong>the</strong> addressof <strong>the</strong> subprogram entry point. This makes it possibleto replace a CALL statement with an indirectBSI to <strong>the</strong> corresponding CALL TV entry, even though<strong>the</strong> address of <strong>the</strong> subprogram itself may not beknown at <strong>the</strong> time <strong>the</strong> CALL is processed.When stored on disk in disk core image format(DCI), <strong>the</strong> LIBF TV follows <strong>the</strong> last word of <strong>the</strong> lastsubprogram in <strong>the</strong> core load. It may leave one wordvacant between it and <strong>the</strong> CALL TV in order tomake <strong>the</strong> pseudo-accumulator (FAC) begin on anodd boundary. The CALL TV immediately follows<strong>the</strong> indicator entry in <strong>the</strong> LIBF TV. During execution<strong>the</strong> TV extends downward in core storage from<strong>the</strong> lowest-addressed word in COMMON.Whereas <strong>the</strong> CALL TV entry consists of only oneword (<strong>the</strong> address of <strong>the</strong> subprogram), <strong>the</strong> LIBF TVentry consists of three words. The first is a linkword (initially zero), and <strong>the</strong> second and third are along BSC to <strong>the</strong> subprogram entry point.Figure 10 shows <strong>the</strong> layout of <strong>the</strong> transfer vectorin core storage.Linkage to LOCALsThe LOCAL/SOCAL flipper (FLIPR) is included in acore load if that core load requires LOCALs and/orSOCALs. The flipper transfers control to a LOCAL,Section 8. Core Load Builder 37


Dummy one - word entry in CALL TV(if necessary) to ensure odd addressfor FACLast Second First Indicators FAC Last Second FirstLIBF LIBF LIBF CA LL CALL CALL151 I- I I I I I I I Jf.48— LowCore tt_HighCoreL_Figure 10. Layout of <strong>the</strong> Transfer VectorLIBF TV CALL TV COMMONTransfer Vectorfetching it first, if necessary. It does likewise fora SOCAL, except that it is never entered if a subprogramis called that is a part of <strong>the</strong> SOCAL currentlyin <strong>the</strong> SOCAL area (see Linkage to <strong>the</strong> <strong>System</strong>Overlays).The Flipper Table immediately precedes <strong>the</strong>flipper. It consists of a 6-word entry for each entrypoint specified in <strong>the</strong> LOCAL information in <strong>the</strong> SCRA(for a given mainline) that is referenced by a CALLand a 5-word entry for each entry point referenced bya LIBF'. If a subprogram has more than one entrypoint but only one is specified in <strong>the</strong> LOCAL information(a specified LOCAL), <strong>the</strong>re is a Flipper Tableentry for each entry point referenced in <strong>the</strong> coreload.The format of a 5-word (LIBF) entry in <strong>the</strong>Flipper Table is as follows:WordDescription1-2 BSI L FL0003 Word count of <strong>the</strong> subprogram4 Sector address of <strong>the</strong> subprogram5 Entry point address in <strong>the</strong> subprogramThe format of a 6-word (CALL) entry in <strong>the</strong>Flipper Table is as follows:WordDescription1 Link word2-3 BSI L FLO104 Word count of <strong>the</strong> subprogram5 Sector address of <strong>the</strong> subprogram6 Entry point address in <strong>the</strong> subprogramLinkage to <strong>the</strong> <strong>System</strong> Overlays (SOCALs)In order to assure very fast transfer to a subprogramthat is a part of a SOCAL that is in core storage ata given time, special transfer vector entries aremade for SOCAL subprograms. They are differentfrom <strong>the</strong> standard LIBF and CALL linkages, and <strong>the</strong>yare different from <strong>the</strong> linkage to a LOCAL. TheSOCAL transfer time is approximately 20 microseconds,compared to 150-180 microseconds 'to aLOCAL. (Both timings assume a 3.6 microsecondstorage cycle.)Figure 11 shows an entry in <strong>the</strong> LIBF TV for anin-core subprogram (entry 2) and <strong>the</strong> special Linkagein <strong>the</strong> LIBF TV for SOCAL subprograms (entries3-8). Entry 1 is <strong>the</strong> LIBF TV entry for a SOCALsubprogram. The "disp" is a displacement to <strong>the</strong>second word of <strong>the</strong> linkage for <strong>the</strong> SOCAL in which<strong>the</strong> subprogram is found.The example represented in Figure 11 is one thatrequires SOCAL option 2; TV entries 5 and 8 wouldnot appear if option 1 were used. Entry 1 is <strong>the</strong>last entry in <strong>the</strong> LIBF TV, i. e. , <strong>the</strong> highestaddressedword of <strong>the</strong> transfer vector. Suppose that(1) a LIBF to FADD were made and (2) SOCAL 1 werenot in core. The LIBF would be a BSI to <strong>the</strong> firstword of entry 1, which would <strong>the</strong>n BSI to <strong>the</strong> secondword of entry 3. Entry 3 would MDX to <strong>the</strong> firstword of entry 6, which would transfer control to <strong>the</strong>LOCAL/SOCAL flipper subroutine (FLIPR) atFL230, <strong>the</strong> entry point in FLIPR for fetching <strong>the</strong>arithmetic subprograms. The flipper would fetchSOCAL 1, change <strong>the</strong> third word of entry 3 to MDXto *-3, and BSC to <strong>the</strong> first word of entry 3, which<strong>the</strong>n transfers control to FADD. The flipper wouldalso ensure that <strong>the</strong> third words of entries 4 and 5were both MDX to *-12.38


LOWCORE./‘. BSC L I FL210 I BSS 1 ENTRY 8 - a branch to <strong>the</strong> entry pointin <strong>the</strong> flipper for fetching SOCAL 3;an unused wordI BSC L I FL220 BSS 1 ENTRY 7 - a branch to <strong>the</strong> entry pointin <strong>the</strong> flipper for fetching SOCAL 2;an unused wordBSC L I FL230 BSS 1 ENTRY 6 - a branch to <strong>the</strong> entry pointin <strong>the</strong> flipper for fetching SOCAL Itan unused wordBSC I MDX "-12 I ENTRY 5 - a branch to a subroutine inSOCAL 3 via word 3 of LIBF TVentry; a branch to fetch SOCAL 3<strong>the</strong> first word of entry 3, followed by a transfer ofcontrol to FADD. The transfer has required only 2short BSIs, a short MDX, and an indirect BSC.The linkage for a CALL to a function is somewhatdifferent from that just described. Suppose that(1) SOCAL option 2 was used and (2) each SOCALconsists of two subprograms, FABS and FSQR being<strong>the</strong> functions in SOCAL 1,Figure 12 shows SOCAL 1, SOCAL 2, and SOCAL3 as <strong>the</strong>y are stored on <strong>the</strong> disk. The first 2 wordsof each of <strong>the</strong>se SOCALs are <strong>the</strong> CALL TV for<strong>the</strong> subprograms in that SOCAL.A CALL to FSQR, for example, would be anindirect BSI to <strong>the</strong> second word of whichever SOCALhappened to be in <strong>the</strong> SOCAL area. If this wereSOCAL 1, control would be immediately transferredto FSQR. O<strong>the</strong>rwise, control would first be given to<strong>the</strong> LOCAL/SOCAL flipper at FL200, <strong>the</strong> entry pointin FLIPR for fetching <strong>the</strong> function subprograms.The flipper would fetch SOCAL 1 and re-execute <strong>the</strong>original CALL to FSQR.I BSC I I I MDX *-12ENTRY 4 - a branch to a subroutine inSOCAL 2 via word 3 of LIBF TVentry; a branch to fetch SOCAL 2I BSC MDX *-12 I ENTRY 3 - a branch to a subroutine inSOCAL 1 via word 3 of LIBF TVentry; a branch to fetch SOCAL 1I DC*I BSC L I FLOAT I ENTRY 2 - a link word; a branch toan in-core subroutine, i.e.,FLOATDEFINE FILE TABLEThe processing of <strong>the</strong> DEFINE FILE Table normallyconsists of filling in word 5 (<strong>the</strong> sector address) foreach entry in <strong>the</strong> DEFINE FILE Table preceding <strong>the</strong>mainline program.However, additional processing is required whena file must be truncated, i.e. , <strong>the</strong> space availableon <strong>the</strong> disk is insufficient to store <strong>the</strong> number ofrecords defined in <strong>the</strong> file. If <strong>the</strong> file is in <strong>the</strong> User /Fixed Area, or if it is <strong>the</strong> only file in a particularWorking Storage, <strong>the</strong>n <strong>the</strong> Core Load Builder attemptsto truncate it enough to fit.I DC *-* I BSI 3 disp I DC FADD I \ENTRY 1 - a link word; a branch to<strong>the</strong> SOCAL linkage for a subroutinein SOCAL 1; <strong>the</strong> address of a subroutinein SOCAL I, i.e., FADDHIGHCOREFigure 11. SOCAL Linkage in <strong>the</strong> LIBF Transfer VectorALL TV for FABS,consisting of <strong>the</strong>entry point addressof FABSCALL TV for FSQR,consisting of <strong>the</strong>entry point addressof FSQRL200, <strong>the</strong> address of FL200<strong>the</strong> entry point in<strong>the</strong> flipper forfetching SOCAL 1Suppose now that FADD were called again beforesome subprogram in ei<strong>the</strong>r SOCAL 2 or SOCAL 3were called. This time <strong>the</strong> LIBF would cause aBSI to <strong>the</strong> first word of entry 1 and <strong>the</strong>n to <strong>the</strong>second word of entry 3, The MDX would <strong>the</strong>n be toFABS FSQR A SubroutinesFunction 'Function I IFigure 12. CALL Transfer Vector for SOCALsSection 8. Core Load Builder 39


First, <strong>the</strong> entire DEFINE FILE Table is fetchedand stored in <strong>the</strong> unoccupied area allocated to <strong>the</strong>Load Table. If <strong>the</strong> Core Load Builder determinesthat a file can be truncated, <strong>the</strong> number of recordsand <strong>the</strong> disk block count in <strong>the</strong> appropriate DEFINEFILE Table entry are modified accordingly. Aseach entry is completed, all seven words are relocatedin <strong>the</strong> same manner as <strong>the</strong> o<strong>the</strong>r words of <strong>the</strong>core load.The processing consists of comparing <strong>the</strong> filenumber of a DEFINE FILE Table entry with each of<strong>the</strong> file numbers in <strong>the</strong> FILES information in <strong>the</strong>SCRA, if any. If a match occurs, <strong>the</strong> name of <strong>the</strong>disk area associated with <strong>the</strong> file number obtainedfrom <strong>the</strong> FILES information is found in LET/FLET,and <strong>the</strong> absolute sector address of that disk areais placed in word 5 of <strong>the</strong> DEFINE FILE Tableentry. If none of <strong>the</strong> file numbers from <strong>the</strong> FILESinformation match <strong>the</strong> file numbers in <strong>the</strong> DEFINEFILE Table, <strong>the</strong> file is set up in Working Storage,e. , <strong>the</strong> relative (to beginning of Working Storage)sector address is stored in <strong>the</strong> DEFINE FILETable. The sign bit is set to indicate that this isa relative address. In ei<strong>the</strong>r case, <strong>the</strong> systemcartridge is assumed unless a cartridge ID hasbeen specified in <strong>the</strong> FILES information.The format of a DEFINE FILE Table entry is asfollows:SymbolicWord Description Reference1 File number2 Number of records in <strong>the</strong> file3 Number of words per record4 Address of <strong>the</strong> associatedvariable5 Sector address of <strong>the</strong> file;initially zero, filled in by<strong>the</strong> Core Load Builder6 Number of records per sector7 Disk block count of <strong>the</strong> filePHASE DESCRIPTIONSPHASE 0@FLNR@RCCT@WDR C@ASOC@SCAD@RCSC@BCNTPhase 0 always remains in core. It consists of twomain sections, (1) <strong>the</strong> basic subroutines required byall o<strong>the</strong>r phases and (2) <strong>the</strong> constants and work areasshared by two or more subroutines. The lattersection is known as RCOM.The following is a list of <strong>the</strong> subroutines thatcomprise phase 0 and <strong>the</strong> functions <strong>the</strong>y perform.SubroutineLK000LS000FunctionFetch a phaseSearch LET/FLETRH000 Fetch <strong>the</strong> mainline program headerrecordNW000 Fetch <strong>the</strong> next word in sequence frofrom <strong>the</strong> data buffer, reading anew sector when nexessaryBT000 Add an entry to <strong>the</strong> Load TablePM000 Fetch one of <strong>the</strong> message phaseand transfer control to itGP000 Read from or write to <strong>the</strong> diskTL000 Terminate LoadingEX000 Print a message and exitCN000 Test a subroutine name for disk I/OPHASE 1Phase 1 performs <strong>the</strong> initialization functions thatmust be done prior to <strong>the</strong> relocation of <strong>the</strong> mainline.Initialization consists of, principally, fetching DCOMand extracting <strong>the</strong> parameters stored <strong>the</strong>re that -are needed by <strong>the</strong> Core Load Builder and fetching <strong>the</strong>mainline leader record and saving <strong>the</strong> information<strong>the</strong>rein.In addition, phase t makes an entry in <strong>the</strong> LoadTable for each LOCAL, NOCAL and G2250 specifiedin <strong>the</strong> LOCAL, NOCAL and G2250 information in <strong>the</strong>SCRA, if any.The following is a list of <strong>the</strong> subroutines thatcomprise phase t and <strong>the</strong> functions <strong>the</strong>y perform.Subroutine FunctionIN000 Initialize <strong>the</strong> Core Load Builder, process<strong>the</strong> mainline header process LOCAL,NOCAL and G2250 names from <strong>the</strong> SCRA.LN000 Enter LOCAL, NOCAL and G2250 namesin <strong>the</strong> Load Table.PHASE 2After <strong>the</strong> execution of Phase 1, part of Phase 2remains in core until <strong>the</strong> core load is completed.Phase 2 contains <strong>the</strong> Master Control subroutine,<strong>the</strong> relocati on subroutine, and <strong>the</strong> transfer subroutine,among o<strong>the</strong>rs (see below). Master Controlsupplies <strong>the</strong> basic logic for <strong>the</strong> Core LoadBuilder. The relocation subroutine supplies <strong>the</strong> lologic for relocating a program, i. e. , incorporatingrating it into <strong>the</strong> core load. The transfer subroutineprovides <strong>the</strong> logic for transferring arelocated word of <strong>the</strong> core load to <strong>the</strong> CIB, <strong>the</strong>CIB buffer, or Working Storage, whichever isappropriate. These three subroutines are basicto <strong>the</strong> process of building a core load.The following is a list of <strong>the</strong> subroutines thatcomprise Phase 2 and <strong>the</strong> functions <strong>the</strong>y perform.40


SubroutineMC000RL000FunctionMaster control for <strong>the</strong> Core LoadBuilderRelocate a program; convert itfrom disk system format tocore image formatThe data and CIB buffers are combined into asingle 640-word buffer for <strong>the</strong> purpose of fetching<strong>the</strong> *LOCAL, *NOCAL, *FILES and *G2250 informationfrom <strong>the</strong> SCRA.40. 1


The transfer subroutine provides <strong>the</strong> logic for transferringa relocated word of <strong>the</strong> core load to <strong>the</strong> CIB,<strong>the</strong> CIB buffer, or Working Storage, whichever isappropriate. These three subroutines are basic to<strong>the</strong> process of building a core load.The following is a list of <strong>the</strong> subroutines thatcomprise phase 2 and <strong>the</strong> functions <strong>the</strong>y perform.Subroutine FunctionM C000RL000TS000CQ000TR000XC000DC000MV000ML000CK000DF000FM000PHASE 3Master control for <strong>the</strong> Core LoadBuilderRelocate a program; convert itfrom disk system format to diskcore image formatProcess <strong>the</strong> IBTCheck name of subroutines or filesdefined in a DSA statementagainst <strong>the</strong> Equate Table.Output one data word to core ordiskFill in exit control cells duringpass 2Process DSA statementsOutput <strong>the</strong> DEFINE FILE TableCheck mainline loading addressfor validityCheck for overlay of core load andCOMMONProcess <strong>the</strong> DEFINE FILE TableentriesPrint a map of <strong>the</strong> DEFINE FILETablePhase 3 performs four functions. It checks <strong>the</strong>information in subroutine header records (exceptILSs) and stores it in RCOM. It also ensures thatduring pass 2 <strong>the</strong> subprograms are relocated byclass, i.e. , class 0 first, LOCALs second, class 1third, class 2 fourth, and class 3 fifth. It compares<strong>the</strong> reference to each subprogram, i.e., CALL orLIBF, with <strong>the</strong> type (from <strong>the</strong> program headerrecord). Lastly, as a subprogram is chosen forrelocation, phase 3 checks whe<strong>the</strong>r or not it hasalready been relocated under a different name, i. e. ,ano<strong>the</strong>r entry point.The following is a list of <strong>the</strong> subroutines thatcomprise phase 3 and <strong>the</strong> functions <strong>the</strong>y perform.SubroutineFunctionHR000 Process <strong>the</strong> program headerrecord for subroutines00000 Control <strong>the</strong> loading of subroutinesby typeTY000 Verify subroutine referencesSV000 Scan Load Table for multiplereferencesPHASE 4Phase 4 performs two functions. It incorporatesILSs into <strong>the</strong> core load and it determines whe<strong>the</strong>r ornot a core load fits in core storage or can be madeto fit with SOCALs by computing <strong>the</strong> core that canbe saved by employing SOCALs.The following is a list of <strong>the</strong> subroutines thatcomprise phase 4 and <strong>the</strong> functions <strong>the</strong>y perform,Subroutine FunctionIL000 Fetch and relocate an ILSET000 Calculate core load sizePHASE 5Phase 5 creates <strong>the</strong> Flipper Table if LOCALs havebeen specified, sees to it that <strong>the</strong> flipper is relocated,and provides <strong>the</strong> logic for building each SOCAL.This phase is flip-flopped with phase 3. It is broughtinto core storage once if <strong>the</strong>re are LOCALs and oncefor each SOCAL, which implies a maximum of fourtimes.The following is a list of <strong>the</strong> subroutines thatcomprise phase 5 and <strong>the</strong> functions <strong>the</strong>y perform.Subroutine FunctionPL000PS000FF000Process LOCAL subprogramsProcess SOCAL subprogramsRelocate <strong>the</strong> LOCAL/SOCALflipper, FLIPRSection 8. Core Load Builder 41


PHASE 6Phase 6 performs several miscellaneous functionsthat must follow <strong>the</strong> actual building of most of <strong>the</strong>core load. The most important of <strong>the</strong>se is <strong>the</strong> constructionof <strong>the</strong> transfer vector from <strong>the</strong> Load Table,O<strong>the</strong>r functions performed in phase 6 are filling inexit control cells and completing <strong>the</strong> core imageheader.The following is a list of <strong>the</strong> subroutines thatcomprise phase 6 and <strong>the</strong> functions <strong>the</strong>y perform,Subroutine FunctionTV000 Build <strong>the</strong> transfer vectorTP00 ,0 Complete core image header, fillin exit control cells, etc.PHASE 7Phase 7 formats and prints (via <strong>the</strong> principal printdevice subroutine) all messages from 1100-R10.These messages contain no variables.PHASE 8Phase 8 formats and prints (via <strong>the</strong> principal printdevice subroutine) all messages from R16-1/23.These messages contain a 5-character name following"R XX".PHASE 9Phase 9 formats and prints (via <strong>the</strong> principal printdevice subroutine) all messages from 1139-1147.These messages contain a hexadecimal addressfollowing "R XX".PHASE 10Phase 10 formats and prints (via <strong>the</strong> principal printdevice subroutine) all messages from R64-R68.These messages contain a 5-character name following"R XX".PHASE 11Phase 11 formats and prints (via <strong>the</strong> principal printdevice subroutine) <strong>the</strong> files portion of <strong>the</strong> map. Itis entered only if (1) a map is requested and (2) <strong>the</strong>reare files defined.PHASE 12Phase 12 formats and prints (via <strong>the</strong> principal printdevice subroutine) <strong>the</strong> allocations of core storage.It is entered only if a map is requested.PHASE 13Phase 13 is entered from phase 2 when a GSB, GBE,or GBCE order is encountered. The GSB processingadds <strong>the</strong> relocation factor to <strong>the</strong> GSB address to insurethat it is below core location 8192. The GBE and GBCEprocessing enters <strong>the</strong> name of <strong>the</strong> external subroutinein <strong>the</strong> Load Table. The GBE or GBCE order is <strong>the</strong>nreplaced with a GB or GBC Indirect through <strong>the</strong> transfervector entry.DEBUGGING/ANALYSIS AIDSStopping <strong>the</strong> Core Load Builder at <strong>the</strong> prope r timeis often <strong>the</strong> key to pinpointing problems in monitorsystem and, in some cases, user programs. Thereare NOP instructions in several critical locations in<strong>the</strong> Core Load Builder; <strong>the</strong>y are: LK000+1, PM000+1,IN000+1, MC000, E1000+1, E2000+1, E3000+1, andE4000+1. These NOPs can be replaced by WAITinstructions so that core dumps can be taken atvarious stages of <strong>the</strong> core load building process.A WAIT replacing <strong>the</strong> NOP at PM000+1 is often <strong>the</strong>most useful, for it can be used to stop <strong>the</strong> Core LoadBuilder just before an error message is printed.Bear in mind that, even though an error is detectedby <strong>the</strong> Core Load Builder, it may well be due to afailure somewhere else in <strong>the</strong> monitor system. Themessage printed may not be a very good indication of<strong>the</strong> error; many checks are present in <strong>the</strong> Core LoadBuilder simply to keep it from destroying itself.For example, a common message is 1116, and <strong>the</strong>name given in <strong>the</strong> message may well be somethingthat makes no sense or was not referenced in <strong>the</strong>core load. The problem may well be erroneousoutput from <strong>the</strong> FORTRAN Compiler or Assembler<strong>Program</strong> or a destroyed User Area. In such a casean analysis of <strong>the</strong> contents of <strong>the</strong> data buffer BUFLOusually provides <strong>the</strong> clue to <strong>the</strong> error.To facilitate path tracing through <strong>the</strong> Core LoadBuilder, all subroutines in <strong>the</strong> Core Load Builderare entered with BSI instructions.42


SECTION 9. DISK UTILITY PROGRAM (DUP)FLOWCHARTSCORE STORAGE LAYOUTCCAT: DUP01DCTL: DUP02STORE: D UP03FILEQ: D UPO4-06DDUMP: D UP07 -08DUMPLET: D UP09DELETE: DUP10DEFINE: DUP11DEXIT: DUP12PRE CI: DUP13The Disk Utility <strong>Program</strong> (DUP) is actually a groupof programs provided by <strong>IBM</strong> to perform certainfrequently required operations involving <strong>the</strong> disksuch as storing, moving, deleting, and dumpingdata and/or programs. These operations are called,for <strong>the</strong> most part, by user-supplied DUP controlrecords.Figure 13 shows <strong>the</strong> layout of core storage duringDUP operation. Panel 1 shows <strong>the</strong> overlay schemeused for 4K systems, panel 2 for 8K systems, panel3 for 16K systems, and panel 4 for 32K systems.0 0 0 0COMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorDISKZ DISKZ DISKZ DISKZOverlayAreaOverlayAreaOverlayAreaOverlayAreaDUP OPERATIONSTORE/DUMPBufferSTORE/DUMPBufferSTORE/DUMPBufferSTORE/DUMPBufferWhen DUP is called, <strong>the</strong> phases CCAT and DUPCOare brought into core storage. CCAT forms <strong>the</strong> requiredDUP I/O subroutine sets (phases 14, 15, 16)and records <strong>the</strong>m. CCAT also forms <strong>the</strong> balance ofUPCOR, including CATCO and <strong>the</strong> principal printdevice subroutine, and is completely overlaid bypart of UPCOR, leaving only <strong>the</strong> DUPCO part ofphase 1 in core storage as part of UPCOR.Control is passed to REST (of DUPCO) and RESTin turn calls DCTL into core storage.In general, DCTL reads, prints, decodes andchecks <strong>the</strong> control records, and <strong>the</strong>n calls in <strong>the</strong> requiredphase to continue processing as <strong>the</strong> functionrequires.The called phase completes <strong>the</strong> function, including<strong>the</strong> printing of <strong>the</strong> terminal message. Controlis <strong>the</strong>n passed to REST (of DUPCO), which restoresCATCO areas to zero as required for initialization,fetches DCTL if it is not already in core (4K system),and branches to DCTL to read <strong>the</strong> next record.When a monitor control record is read, a CALLEXIT is executed by DEXIT.UPCORPhase DCTL DCTL DCTLUPCORPhaseSTOREPhaseUPCORPhaseSTOREPhaseDUMPPhaseUPCORPhaseFigure 13. Core Layout During Disk Utility <strong>Program</strong> OperationSection 9. Disk Utility <strong>Program</strong> (DUP) 43


DUP CONTROL RECORDSIn <strong>the</strong> table below, DUP control records are classifiedby type according to <strong>the</strong> phases required to complete<strong>the</strong>ir processing.TypeSTORESTOREMODSTOREDATASTOREDATACISTORECIDUMPDUMPDATADELETEDEFINE FIXED AREADEFINE VOIDASSEMBLERDEFINE VOID FORTRANDEFINE VOID RPGDUMPLETDUMPFLETDWADRPhases R uiredDCTL, STORE , DUPCODCTL, FILEQ, STORE,DEXIT, Core LoadBuilder, PRECI, DCTL,STORE, DUPCODCTL,DDUMP,DUPCODCTL,DLETE,DUPCODCTL,DFINE,DUPCODCTL,DMPLT,DUPCODCTL,DEXIT,ADRWS<strong>Program</strong>, DUPCOLOCATION EQUIVALENCE TABLE (LET)/FIXE:DLOCATION EQUIVALENCE TABLE (FLEDLET is <strong>the</strong> table through which <strong>the</strong> sector addressesof programs and data files stored in <strong>the</strong> User Areamay be found. Each entry in this table consists ofthree words, <strong>the</strong> first two of which are <strong>the</strong> programor file name in name code. The third word is <strong>the</strong>disk block count of <strong>the</strong> program or file. Bits 0 and 1.of <strong>the</strong> first word denote <strong>the</strong> format of <strong>the</strong> entry, i. e. ,DSF, DCI, or DDF. The corresponding bit patternsare 00, 10, and 11. The 01 pattern is reserved forfuture use. For a DSF subroutine having multipleentry points, <strong>the</strong> disk block count is zero for allentry points except <strong>the</strong> first.Padding is inserted wherever a DCI or DDFentry is preceded by a DSF entry, and is reflectedin LET as if a program called "1DUMY"were stored. That is, each instance of paddinggenerates a 1DUMY entry in LET, and <strong>the</strong> blockcount for each of <strong>the</strong>se entries is <strong>the</strong> number ofdisk blocks to <strong>the</strong> nearest sector boundary (maybe zero). The last entry in LET is always a1DUMY entry that reflects <strong>the</strong> number of diskblocks from <strong>the</strong> end of <strong>the</strong> last program stored in<strong>the</strong> User Area to <strong>the</strong> end of <strong>the</strong> disk.Each sector of LET contains a header, w'nchoccupies <strong>the</strong> first five words of <strong>the</strong> sector. The firstword contains <strong>the</strong> sector number, which is 0, 1, ,or 7. The second contains <strong>the</strong> sector address of <strong>the</strong>User Area for this cartridge. The third is reservedfor future use. The fourth contains 315 minus threetimes <strong>the</strong> number of LET entries found in this sector,i.e., <strong>the</strong> number of words unused (avai.lable) inthis sector. If this is not <strong>the</strong> last sector of LET onthis cartridge, <strong>the</strong>n <strong>the</strong> fifth word contains <strong>the</strong> addressof <strong>the</strong> next sector of LET. If it is <strong>the</strong> lastsector of LET and if <strong>the</strong>re is no FLET on this cartridge,this word contains zero; o<strong>the</strong>rwise, it contains<strong>the</strong> address of <strong>the</strong> first sector of FLET. Ino<strong>the</strong>r words, this fifth word (chain address) is usedto chain from LET through FLET, sector by sector.Bits 0-3 of <strong>the</strong> fifth word are always zeros. Notethat, when referring to a dump of LET, <strong>the</strong> aboveheader words are expressed in hexadecimal.FLET is <strong>the</strong> table through which <strong>the</strong> sector addressesof programs and data files stored in <strong>the</strong>Fixed Area may be found. FLET is analogous toLET in <strong>the</strong> format of its entries and its use by <strong>the</strong>monitor system programs.LET/FLET is searched by LETSR of DCTL for<strong>the</strong> name decoded from DUP control records of <strong>the</strong>STORE, DUMP, and DELETE types. The informationrequired by o<strong>the</strong>r DUP phases is recorded inCATCO. If a DSF program is being stored, <strong>the</strong>nLETSR also searches LET/FLET for <strong>the</strong> secondaryentry point names as well.STORE inserts <strong>the</strong> required entries into LET/FLET (one entry for each entry point). If a DCIprogram or data file is being stored and paddingis required, <strong>the</strong>n a 1DUMY LET/FLET entry isinserted prior to <strong>the</strong> named LET/FLET entry. <strong>All</strong>secondary entry points have <strong>the</strong>ir entries on <strong>the</strong>same sector as <strong>the</strong> LET/FLET entry for <strong>the</strong> primaryentry point.44


DUP CONCATENATED COMMUNICATIONSAREA (CATCO)LocationRelative Address(decimal)CATCO contains <strong>the</strong> following elements:• DCOM values that are read from DCOM andplaced in CATCO by CCAT of DUPCO.• IOAR headers (word counts and sector addresses)required by DUP, furnished to COAT by <strong>the</strong><strong>System</strong> Loader, converted by CCAT to two-wordentries each, and placed in DCOM by CCAT ofDUPCO.• Words used only by DUP for switches, smallwork areas, and communications between variousDUP phases.• I/O addresses used by DUP, initialized by CCATof DUPCO.DCOM VALUESDCOM is read from <strong>the</strong> master cartridge by CCATof DUPCO whenever DUP is called by <strong>the</strong> MonitorControl Record Analyzer. The following parametersin DOOM are used by DUP:LocationRelative Address(decimal)#ANDU 35#BNDU 40#CBSW 10#CIAD 27#CIBA 60#CIDN 55#CSHN#DBCT906#DCSW 24#ENTY 16#FCNT 7#FHOL 20#FLET 75#FMAT 70#FPAD 45#FRDR 19#FSZE 21#GCNT 30#JBSW 9LCNT 11These parameters are referred to by an index registerthat contains <strong>the</strong> address of <strong>the</strong> first word ofDOOM plus <strong>the</strong> displacement given above.Whenever a parameter in DCOM has been changedby DUP and control is being relinquished to ano<strong>the</strong>rmonitor system program, DUP writes <strong>the</strong> DCOMvalues in CATCO to DCOM on <strong>the</strong> master cartridgebefore exiting. If a change has been made thatrefers to a satellite cartridge, <strong>the</strong> DOOM values arealso written to DOOM on <strong>the</strong> affected cartridge.See <strong>the</strong> description of DOOM in Section 2. CommunicationAreas for details regarding <strong>the</strong> aboveparameters.IOAR HEADERSCATCO contains <strong>the</strong> IOAR header for each phase ofDUP required by o<strong>the</strong>r phases during <strong>the</strong> execution of<strong>the</strong> various DUP functions; <strong>the</strong>y are:Location#MDF1 13#MD F2 14#MPSW 12#NAME 4#NCNT 15#PCID 50#PIOD 25#PPTR 26#RP67 17#SCRA 65#TODR 18#UHOL 22#ULE T 80#US ZE 23#WSCT 85Phase Name Phase NumberDCHDR DCTL 2STHDR STORE 3FLHDR FILEQ 4D MHDR DDUMP 5DLHDR DMPLT 6DTHDR DLETE 7DFHDR D FINE 8DXHDR DEXIT 9UCHDR UPCOR 10Section 9. Disk Utility <strong>Program</strong> (DUP) 45


LocationPIHDRSIHDRPTHDRCIHDRPhase NameKFACEC FACEPFACEPRECIPhase Number11121317These headers are initialized by CCAT of DUPCOwhenever <strong>the</strong> Monitor Control Record Analyzer callsDUP. The contents of <strong>the</strong>se headers are not alteredby any phase of DUP.Each. IOAR header consists of two words, word 1containing <strong>the</strong> word count and word 2 containing <strong>the</strong>sector address of a phase. Each pair is aligned onan even boundary.SWITCHESThe following DUP switches are initialized by CCATof DUPCO and not altered by any function of DUP.ADDR2 -- Keyboard interrupt address, to be put inlocation $IREQ by MASK of DUPCO so that duringa masked operation, <strong>the</strong> Keyboard interrupt isdelayed by DUP until a critical operation iscompleted.KBREQ -- Contents of location $IREQ, saved byCCAT of DUPCO when DUP is given control, andrestored by DEXIT of DUP when leaving DUP.INOUT -- Indicator for <strong>the</strong> principal I/O devicewhen DUP was called by <strong>the</strong> Monitor ControlRecord Analyzer.Negative = Paper Tape.Zero = Cards.Positive = Keyboard.PTPON -- A non-zero value if paper tape devices areare present on <strong>the</strong> system.IBT -- Nine locations containing <strong>the</strong> interrupt branchtable for level 4, initialized by CCAT of DUPCOand <strong>the</strong> card and paper tape interface phases.The following locations are used by DUP for internalcommunication, and are initialized to zeroby REST before each DUP control record is processed.ASMSW -- Set non-zero by DFCTL of DCTL when aDEFINE control record indicates that <strong>the</strong> Assembler<strong>Program</strong> is to be deleted from <strong>the</strong> mastercartridge. Used by DFINE for functional flowcontrol.BITSW -- Set non-zero by RE015 of DCTL to allow<strong>the</strong> MDUMP subroutine in DUPCO to call <strong>the</strong><strong>System</strong> Core Dump program while executing variousDUP phases. It is set on <strong>the</strong> basis of <strong>the</strong>contents of column 35 of <strong>the</strong> DUP control records.This column is not normally used, but it may beused to obtain snap-shot core dumps while performingDUP operations. A zero punched in thiscolumn causes all possible DUP dumps to occur.O<strong>the</strong>r numbers cause core dumps to be takenwhen <strong>the</strong> phase with <strong>the</strong> same phase ID is in control(See DUP Diagnostic Aids.).BLKSW -- Set by <strong>the</strong> DUP I/O interface subroutine(in IOBLK) when reading control records if <strong>the</strong>record is nei<strong>the</strong>r a monitor control record (//) ora DUP control record (*D or *S). If turned on,DCTL turns it off and returns to <strong>the</strong> GETHO entryof <strong>the</strong> DUP I/0 interface subroutine. This permitsDUP to pass non-control records, including blanks,at <strong>the</strong> maximum rate of 1000 per minute with asingle buffer.CIERR -- Set to a DUP error code for an errordetected by PRECI during a STORECI operation.DCTL checks CIERR when entered from PRECI(CISW is non-zero) and goes to DEXIT thruLEAVE of DUPCO with <strong>the</strong> specified error code.PRECI cannot go directly to LEAVE because DUPUPCOR may not be in core storage at this timedue to <strong>the</strong> possibility of being overlaid by <strong>the</strong> coreload being built.CISW -- Set by DCTL when *STORECI is <strong>the</strong> functionspecified on <strong>the</strong> DUP control record. Used byDCTL to detect an entry from PRECI (during a*STORECI function). Used by STORE to determine<strong>the</strong> functional path to be used.CLBSW Set non-zero by PRECI. Used by STOREto indicate an entry from PRECI after <strong>the</strong> CoreLoad Builder has built <strong>the</strong> core load for <strong>the</strong>STORECI function.46


CL1, CL2 -- The addresses of <strong>the</strong> lower and upperlimits, respectively, of parameters in CATCOto be cleared to zero by REST of DUPCO.CNTNO -- Used by GETBI of <strong>the</strong> DUP I/O interfacesubroutine (in IOBLK) to record <strong>the</strong> count ofbinary records being read or punched. Permitschecksum and sequence check operations.DATSW The binary equivalent of <strong>the</strong> decimalvalue in <strong>the</strong> count field of <strong>the</strong> DUP control record.Entered by DACNT of DCTL. A non-zerovalue represents ei<strong>the</strong>r STOREDATA,DUMPDATA, DEFINE FIXED AREA count, orSTORECI with *FILES, *LOCAL, and *NOCALcontrol records following. Contents are in diskblocks if <strong>the</strong> input is from disk, records if froman I/0 device. Used by DUMP, STORE, DEFINEand FILEQ as a count; also used to control functionalflow. FILEQ clears DATSW before callingSTORE.DBADR -- Set by LETSR of DCTL to <strong>the</strong> disk blockaddress of <strong>the</strong> program represented by <strong>the</strong> lastLET/FLET entry searched. Used by DUMP andDELETE to indicate <strong>the</strong> disk block address of <strong>the</strong>desired program or data file.DELSW Set by LETSR of DCTL to point to <strong>the</strong> requiredentry in LET/FLET.minus one word.Actually contains a value somewhere in <strong>the</strong> bufferLETAR. Used by DMPLT when dumping <strong>the</strong>entry point(s) or name of a single program. Usedby DELETE to point to an entry in LET/FLETthat is to be deleted. Used by STORE to point toan entry in LET/FLET where <strong>the</strong> entry point(s)is to be inserted.DFNSW -- Set by DFCTL of DCTL to indicate aDEFINE FIXED AREA operation. Used byFRLAB of DCTL to bypass <strong>the</strong> decoding of <strong>the</strong>FROM field.DKSAD -- Set by DUP30 and DUP34 of DUPCO toindicate <strong>the</strong> sector address (without a logical drivecode) of <strong>the</strong> current GET or PUT operation.DUMPP -- Two words located on even boundary, setby all DUP phases requiring special monitoringdumps. Used by MDUMP of DUPCO to specifylower and upper limits to be dumped to <strong>the</strong>printer.EBCSW -- Set non-zero by DCTL when a STOREDATAor a DUMPDATA control record contains an E incolumn 11. Used by STORE when input data is tobe stored in packed EBCDIC format, i. e. 80 cardcolumns to 40 words, and by DUMP when suchdata is to be converted and dumped to cards orprinter.FRWS -- Set non-zero by SC130 if <strong>the</strong> FROM fieldis Working Storage. Used by DCTL for functionalflow control and error checking.FXSW -- Set non-zero by SC130 or SC170 of DCTLwhen ei<strong>the</strong>r <strong>the</strong> FROM or <strong>the</strong> TO field, respectively,of <strong>the</strong> DUP control record specifies <strong>the</strong>Fixed Area or when <strong>the</strong> control record specifiesDEFINE FIXED AREA. Used by DCTL for errorchecking and functional flow control. Used byDFINE, STORE and DUMP for functional flowcontrol.FORSW -- Set non-zero by DFCTL of DCTL when aDEFINE control record indicates that <strong>the</strong>FORTRAN Compiler is to be deleted from <strong>the</strong>master cartridge. Used by DFINE for functionalflow control.IOSW -- Set non-zero by ei<strong>the</strong>r SC130 or SC170 ofDCTL when any I/O device is specified in <strong>the</strong>FROM or TO field of <strong>the</strong> DUP control record.Used by DCTL for error checking and functionalflow control. Used by DUMP and STORE for functionalflow control.LETSW -- Set positive by LECTL and negative byFLCTL of DCTL. Used by DUMPLET to indicate,respectively, a full LET/FLET dump or a FLETdump only.LSTLF -- Set by LETSR of DCTL to <strong>the</strong> sector address(with a logical drive code) of <strong>the</strong> last LET/FLET sector searched. If only one sector wassearched, <strong>the</strong>n <strong>the</strong> address of that sector isentered in LSTLF. Used by DUMP and DELETEto identify <strong>the</strong> logical drive required.MODSW -- Set non-zero if STCTL of DCTL detecteda STOREMOD function specified by <strong>the</strong> DUP controlrecord. Used by STORE for functional flowcontrol.NAMSW -- Set non-zero by LETSR of DCTL when aname is found in LET/FLET that matches <strong>the</strong> nameSection 9. Disk Utility <strong>Program</strong> (DUP) 47


specified on <strong>the</strong> DUP control record. Used byDCTL for error detection and functional flow control.Used by DUMPLET to indicate that only <strong>the</strong>specified LET/FLET entry is to be dumped.NEGSW -- Set non-zero by DFCTL of DCTL when aminus sign is detected in column 31 of a DEFINEFIXED AREA control record. Used by DEFINEto indicate expansion (zero) or contraction (nonzero)of <strong>the</strong> Fixed Area.PGMHL -- Word count (length) of <strong>the</strong> program headerin DSF programs. Set by RDHDR of DCTL to<strong>the</strong> actual program header length. Used bySTORE to start <strong>the</strong> placement of <strong>the</strong> first dataheader in <strong>the</strong> DSF output. Set by DUMP from <strong>the</strong>program header. Used by STORE to update LETwith <strong>the</strong> required number of entries.P1442 Set by CCAT of DUPCO to contain <strong>the</strong> wordcount and sector address of <strong>the</strong> <strong>System</strong> 1442 subroutine.Used by DDUMP to read <strong>the</strong> <strong>System</strong>1442 subroutine into core when dumping to cards.PHDUP -- Duplicate of $PHSE to permit printedidentification of <strong>the</strong> DUP phase requesting a coredump.PRPAR -- Two words specifying <strong>the</strong> default limitsto be dumped by MDUMP. Set by any module ofDUP desiring to use MDUMP for monitoring DUI3'sstatus. Usually set to point at key parametersand work areas.PRSW -- Set non-zero by SC170 of DCTL whenprinting is specified as <strong>the</strong> desired output on <strong>the</strong>DUP control record. Used by DCTL for error detectionand by DUMP for functional flow control.PTSW -- Set non-zero by SC130 or SC170 whenpaper tape is specified in <strong>the</strong> FROM or TO fieldof <strong>the</strong> DUP control record. Used by DCTL forerror detection and functional flow control. Usedby DUMP for functional flow control.I RPGSW -- See ASMSW and FORSW.SDWDS -- The number of words yet to search in <strong>the</strong>current LET/FLET sector. Set by LETSR ofDCTL. Used by LETSR of DCTL to test for <strong>the</strong>sector search complete condition.STCSW -- Set non-zero by ST400 of DCTL when <strong>the</strong>CI is detected in columns 11 and 12 of <strong>the</strong>STOREDATACI control record. Used by STOREfor functional flow control.STSW -- Set non-zero by STCTL of DCTL when aSTORE control record is found. Set by LETSR ofDCTL to <strong>the</strong> sector address (with a logical drivenumber) of <strong>the</strong> LET/FLET sector that contains <strong>the</strong>1DUMY entry that may be replaced by <strong>the</strong> entryfor <strong>the</strong> program to be stored. Used by DCTL forfunctional flow control. Used by STORE to hold<strong>the</strong> LET/FLET sector address and drive codeprior to inserting <strong>the</strong> LET/FLET entry for <strong>the</strong>program or data file to be stored.TEMPI, TEMP2 -- Two words, on an even boundary,used by various phases of DUP for miscellaneouspurposes; e. , DUP10 of DUPCO returns fourEBCDIC characters in TEMPI and TEMP2 as <strong>the</strong>result of converting from binary to hexadecimalfor purposes of printing.TOWS -- Set non-zero by SC170 if <strong>the</strong> TO field isWorking Storage. Used by DCTL for error checkingand functional flow control.T3MSW -- Set non-zero by STCTL of DCTL when atype 3 or 4 subroutine contains a SOCAL levelnumber specified on <strong>the</strong> DUP control record. Usedby STORE to modify <strong>the</strong> type field in <strong>the</strong> programheader before storing <strong>the</strong> subroutine to disk.UASW -- Set non-zero by SC130 or SC170 of DCTLwhen ei<strong>the</strong>r <strong>the</strong> FROM or TO field of <strong>the</strong> DUPcontrol record specifies <strong>the</strong> User Area. Used byDCTL for error checking and functional flow control.Used by STORE for functional flow control.WSSW -- Set non-zero by SC130 or SC170 of DCTL if<strong>the</strong> FROM or TO field of <strong>the</strong> DUP control recordspecifies Working Storage. Used by DCTL for errordetection. Used by DUMP and STORE forfunctional flow control.XEQSW -- Set non-zero by PLUS2 of DCTL whencalling in <strong>the</strong> required DUP phase to indicate thatexecution of that phase is desired ra<strong>the</strong>r I,han returningto PLUS2. Set non-zero by any o<strong>the</strong>r DUPphase using GET of DUPCO to fetch o<strong>the</strong>r phasesfrom <strong>the</strong> disk that are to be executed immediately.Used by GET of DUPCO to determine whe<strong>the</strong>r toreturn to <strong>the</strong> link address (zero) or to execute<strong>the</strong> phase just fetched (non-zero).48


The following switches are initialized to zero byCCAT of DUPCO, set by PLUS2 of DCTL, and notreset by REST of DUPCO. These are cleared byDEXIT before UPCOR is saved in preparation tocalling <strong>the</strong> Core Load Builder. This forces DCTLon return from <strong>the</strong> Core Load Builder via PRECI tofetch STORE again as it may have been overlaid by<strong>the</strong> core load being built.2112 -- Set non-zero by PLUS2 of DCTL when fetchingano<strong>the</strong>r DUP phase. Used by REST ofDUPCO: if zero, DCTL must be fetched fromdisk; if non-zero, DCTL has already beenfetched.PH3 -- Set non-zero by PLUS2 of DCTL when fetchingSTORE. Used by PLUS2 of DCTL: if zero,STORE must be fetched from disk; if non-zero,STORE has already been fetched.2114 -- Set non-zero by PLUS2 of DCTL when fetchingDDUMP. Used by PLUS2 of DCTL: if zero,DDUMP must be fetched from disk; if non-zero,DDUMP has already been fetched.IOREQ -- Set non-zero by PLUS2 of DCTL in caseI/O o<strong>the</strong>r than from <strong>the</strong> specified I/O device isrequired (i.e. , Keyboard input when <strong>the</strong> DUPoperation is a STORE from cards). Checked byREAD of DCTL, and, if still non-zero, <strong>the</strong> principalI/O section (DUP phase 14) is brought backinto core storage.I/O ADDRESSESThe following are <strong>the</strong> I/O addresses required by <strong>the</strong>various DUP phases. They are initialized by CCATof DUPCO when DUP is given control. <strong>All</strong> exceptTHIS and NEXT remain as initially set. <strong>All</strong> (exceptSDBUF) contain <strong>the</strong> address of an I/O buffer inUPCOR. Thus, <strong>the</strong> locations of <strong>the</strong> referencedbuffers are dependent on core size; in any case, <strong>the</strong>yalways reside in <strong>the</strong> upper 4K of core storage.SDBUF always resides in <strong>the</strong> first 4K of core storage.CRBUF -- Set to <strong>the</strong> address of an 81-word bufferused for reading DUP control records in unpackedEBCDIC.HDBUF -- Set to <strong>the</strong> address of <strong>the</strong> buffer used forprinting <strong>the</strong> page heading after each page restoreperformed during any DUP operation. The contentsof this buffer are in packed EBCDIC.IOBLK -- Set to <strong>the</strong> starting address for <strong>the</strong> I/0block portion of UPCOR. The I/O block containsone of phases 14, 15, or 16 of DUP.SDBUF -- Set to <strong>the</strong> address of <strong>the</strong> 322-word bufferused by <strong>the</strong> STORE, DDUMP, and DELETE functionsof DUP. This buffer always resides in <strong>the</strong>first 4K of core storage.LETAR -- Set to <strong>the</strong> address of <strong>the</strong> 322-word bufferused for <strong>the</strong> LET/FLET search of DUP. Thisbuffer is also a one-sector buffer, or <strong>the</strong> secondhalf of a two-sector buffer used in disk I/O operations.PEBUF -- Set to <strong>the</strong> address of a buffer used forprinting <strong>the</strong> DUP control records (41 words inpacked EBCDIC) or for printing a LET dump, aFLET dump, a program dump, or a data dump(61 words in packed EBCDIC).THIS -- Set to <strong>the</strong> address of one of two buffers usedfor double buffering of binary input (see NEXT).The buffer is 81 words long.NEXT -- Set to <strong>the</strong> address of one of two buffersused for double buffering of binary input (see THIS).The buffer is 81 words long.DUP PHASE DESCRIPTIONSDUP COMMON (DUPCO)• Initializes <strong>the</strong> I/O phases required by DUP andbuilds <strong>the</strong> DUP Communications Area (CATCO).• Performs functions commonly required by o<strong>the</strong>rDUP phases.The initialization function of DUPCO is performedby a subroutine known as CCAT. CCAT resides in anarea reserved for <strong>the</strong> <strong>System</strong> print subroutine, but isnot overlaid by it until all o<strong>the</strong>r initialization has beencompleted. This initialization includes:• Construction of <strong>the</strong> DUP paper tape I/O phase ifpaper tape is attached. This phase is written toSection 9. Disk Utility <strong>Program</strong> (DUP) 49


<strong>the</strong> disk area reserved for DUP phase 16 at<strong>System</strong> generation time.• Construction of <strong>the</strong> DUP principal I/0 phase(without Keyboard). This phase is written to <strong>the</strong>disk area reserved for DUP phase 15 at <strong>System</strong>generation time.• Construction of <strong>the</strong> DUP principal I/O phase.This phase is written to <strong>the</strong> disk area reservedfor DUP phase 14. This phase is left in corestorage at IOADR.• Initialization of all I/O-dependent switches inCATCO.• Incorporation of DCOM from <strong>the</strong> master cartridgeinto CATCO.• Incorporation of IOAR headers (word counts andsector addresses) of o<strong>the</strong>r DUP phases intoCATCO. This information is supplied to CCATby <strong>the</strong> <strong>System</strong> Loader.• Initialization of DUP's page heading buffer with<strong>the</strong> heading contained in sector @HDNG.• Fetching <strong>the</strong> <strong>System</strong> device subroutine for <strong>the</strong>principal print device. This subroutine overlaysall but a few words of CCAT. These lastwords are cleared to zero just before branchingto REST.The functions that are common to all DUP phasesare included in <strong>the</strong> non-overlaid section of DUPCO.These functions are provided by <strong>the</strong> following subroutines:WRTDC -- This subroutine is used by STORE,DELETE, and DEFINE when it is necessary toupdate DCOM. This includes <strong>the</strong> updating ofDCOM on any affected satellite cartridge as wellas on <strong>the</strong> master cartridge.PHIDM -- This subroutine is used to modify <strong>the</strong>next-to-high-order hexadecimal digit of $PHSEin COMMA. It is used primarily by DUP's I/Ofunctions to illustrate in a core dump <strong>the</strong> I/Ooperation last performed. The modifications are:1 Read from disk2 Write to disk4 Convert binary to EBCDIC5 Print terminal messages8 Read cards9 Read paper tapeARead KeyboardPHID -- This subroutine is used to record <strong>the</strong> phaseID of <strong>the</strong> phase in execution in $PHSE of COMMA.It is also used by some DUP phases to illustrate<strong>the</strong> progress of execution from one section of <strong>the</strong>phase to <strong>the</strong> next. When used for this purpose,<strong>the</strong> high-order digit of $PHSE is changed to <strong>the</strong>appropriate phase section modifier. A core dumpindicates <strong>the</strong> last section of <strong>the</strong> phase that wasexecuted.MASK -- This subroutine is used to prevent recognitionof <strong>the</strong> INTERRUPT REQUEST key. The functionof this key is to terminate <strong>the</strong> current job,but DUP must not allow this termination to takeplace while in a critical operation. Therefore,functions that affect LET/FLET, <strong>the</strong> User or FixedArea, <strong>the</strong> CIB, and DCOM delay its recognition(STORE, DELETE, DEFINE).LEAVE -- This subroutine is used to fetch DUP'sexit phase (DEXIT) to print an error message orservice a special exit, such as an exit to <strong>the</strong> CoreLoad Builder (STORE CI function), an exit to <strong>the</strong>ADRWS program (DWADR function), or an exit to<strong>the</strong> Supervisor following <strong>the</strong> trapping of a monitorcontrol record.MDUMP -- This subroutine makes selective calls to<strong>the</strong> <strong>System</strong> Core Dump program. See DUI) DiagnosticAids.BINEB -- This subroutine is used to convert binarynumbers to EBCDIC hexadecimal characters. Itis used primarily to convert a number for insertioninto a phase termination message, e. g. ,a cartridge ID, a disk block count.PRINT -- This subroutine is used to print a line on<strong>the</strong> principal print device. It interfaces with <strong>the</strong><strong>System</strong> principal print device subroutine.PAGE -- This subroutine is used to skip to channel 1and print a page heading if <strong>the</strong> principal print deviceis <strong>the</strong> 1132 or 1403 Printer. If <strong>the</strong> ConsolePrinter is <strong>the</strong> principal print device, five carriagereturns are executed before <strong>the</strong> page heading isprinted.SO


LINE -- This subroutine is used to single-space <strong>the</strong>principal print device.REST -- This subroutine is used to chain from oneDUP function to <strong>the</strong> next. When a function iscompleted without errors, <strong>the</strong> DUP phase in controlprints its termination message and exits toREST. REST determines whe<strong>the</strong>r or not it isnecessary to bring DCTL into core storage (i. e. ,core size is 4K, or DCTL has not yet been loaded),and, if necessary, fetches DCTL. REST <strong>the</strong>nexits to DCTL.ENTER -- This subroutine is used to save <strong>the</strong> accumulatorand extension, <strong>the</strong> overflow and statusindicators, as well as XR1, XR2, and XR3. XR1is <strong>the</strong>n loaded with <strong>the</strong> address of <strong>the</strong> CATCOpointer.RTURN -- This subroutine is used to restore <strong>the</strong>contents of <strong>the</strong> accumulator and extension, <strong>the</strong>overflow and carry indicators, as well as XR1,XR2, and XR3, as saved by <strong>the</strong> ENTER subroutine.GET -- This subroutine is used to read <strong>the</strong> disk usingDISKZ. XR3 points to <strong>the</strong> IOAR header for thisread when GET is entered, and XR1 contains <strong>the</strong>address of <strong>the</strong> CATCO pointer.PUT -- This subroutine is used to write to <strong>the</strong> diskusing DISKZ. XR1 and XR3 are initialized in <strong>the</strong>same manner as described for <strong>the</strong> GET subroutine.Some error checking is done of <strong>the</strong> wordcount and sector address in <strong>the</strong> case of GET andPUT. No check is made in GET or PUT as to <strong>the</strong>validity of <strong>the</strong> logical drive code associated with<strong>the</strong> sector address. GET and PUT assume <strong>the</strong>proper logical drive code has been included with<strong>the</strong> sector address.Errors DetectedThe following DUP errors are detected in DUPCO by<strong>the</strong> GET and PUT subroutines: D92 and D93.DUP CONTROL (DCTL)• Reads, prints and decodes DUP control records.• Sets switches in CATCO to reflect <strong>the</strong> parametersspecified on <strong>the</strong> DUP control record.• Searches LET for <strong>the</strong> name specified on STORE,DUMP, DUMPLET and DELETE type controlrecords.• Detects errors in <strong>the</strong> fields of <strong>the</strong> DUP controlrecords.• Calls into core storage <strong>the</strong> required DUP phaseand exits to it.DCTL remains in core storage during DUP operationsfor configurations of 8K or larger, except duringSTORECI. DCTL is executed after <strong>the</strong> RESTfunction of DUPCO for each DUP control record aswell as after PRECI during <strong>the</strong> processing of aSTORE CI control record.PUP Control (DCTL) may be considered in threelogical parts: <strong>the</strong> READ subroutine, <strong>the</strong> DCTL subroutines,and <strong>the</strong> PLUS2 subroutine.READ SubroutineThis is <strong>the</strong> entry point into DCTL. It performs <strong>the</strong>following functions:• Reads and prints DUP control records.• Flushes invalid DUP subjobs.• Checks for a monitor control record and exitswhen one is detected.• Ensures that <strong>the</strong> required DUP I/O subroutineset is in core storage.• Decodes <strong>the</strong> function field of <strong>the</strong> DUP controlrecord into <strong>the</strong> various DUP types.• Goes to one of <strong>the</strong> subroutines in <strong>the</strong> second logicalpart of DCTL to continue <strong>the</strong> decoding and processingof <strong>the</strong> specified type of DUP control record asfollows:Control Record Subroutine Called*STORE*DUMP*DUMPDATA*DUMPLET*DUMPFLET*DELETE*DE FINE*DWADRSTCTLDUCTLDACTLLECTLFLCTLDLCTLDFCTLWACTLSection 9. Disk Utility <strong>Program</strong> (DUP) 51


DCTL SubroutinesThese subroutines make up <strong>the</strong> second logical partof DCTL. These subroutines perform <strong>the</strong> followingfunctions for <strong>the</strong>ir particular control record type.• Decode <strong>the</strong> balance of <strong>the</strong> Function field asrequired.• Decode <strong>the</strong> FROM and TO device or area fields.• Decode <strong>the</strong> Name field and perform a LET/FLETsearch if <strong>the</strong> name is required.• Decode <strong>the</strong> Disk I/O subroutine required withSTORECI.• Decode and record <strong>the</strong> Count field as required.If <strong>the</strong> operation is a STORECI, FILEQ is broughtinto core storage using <strong>the</strong> PLUS2 subroutine,• Decode <strong>the</strong> FROM and TO Cartridge ID fields.• Check <strong>the</strong> validity of all fields and go to <strong>the</strong>DEX1T phase if any errors are detected.• Prevent restricted phases from being called inand executed during Temporary mode of operation.• Record all required data in CATCO for use by <strong>the</strong>required phase.• Go to <strong>the</strong> appropriate entry point in <strong>the</strong> PLUS2subroutine to fetch and transfer control to <strong>the</strong>DUP phase required to finish <strong>the</strong> processing of<strong>the</strong> specified DUP subjob.PLUS2 SubroutineThis subroutine is <strong>the</strong> third logical part of DCTLand is <strong>the</strong> normal-exit subroutine. The various entrypoints to PLUS2 set up respective IOAR headers thatcause <strong>the</strong> desired DUP phase to be called into corestorage and executed. This subroutine performs <strong>the</strong>following functions:• Sets up <strong>the</strong> IOAR header if <strong>the</strong> required DUPphase is not already in core storage.• Fetches and/or executes <strong>the</strong> required DUP phase.Buffers Used By DCTLControl records are read into <strong>the</strong> area defined byCRBUF and converted to packed EBCDIC in <strong>the</strong> areadefined by PEBUF. It is from PEBUF that <strong>the</strong> controlrecord is printed by <strong>the</strong> principal print device subroutineand from which <strong>the</strong> various fields are decoded.Binary records read for STORE are placed into <strong>the</strong>two buffers specified by THIS and NEXT in order toprocess secondary entry points that are on <strong>the</strong> headerrecord.LET/FLET sectors are read one at a time into<strong>the</strong> area specified by LETAR to be searched for <strong>the</strong>name specified on <strong>the</strong> control record.Errors DetectedThe following DUP errors are detected in DCTL:D01, D02, D03, D05, D06, D12, D13, D14, D15,D16, D17, D18, D19, D20, D21, D22, D23, D24,D25, D26, and D27.STOREThe STORE phase of DUP resides in <strong>the</strong> DUP phaseoverlay area if <strong>the</strong> core size is 4K or 8K, (yr. in <strong>the</strong>overlay area plus 8K if <strong>the</strong> core size is 16K or 32K.This phase is read into core storage <strong>the</strong> first timeDCTL recognizes a STORE control record. It remainsin core storage on a 16K or 32K machine aslong as DUP has control of <strong>the</strong> system (i. e. must bebrought back into core storage when performing aSTORECI operation).STORE may be considered in seven logical parts,each of <strong>the</strong> following subroutines constituting onelogical part.ST000 SubroutineThis is <strong>the</strong> entry point to STORE. It serves as amaster control for STORE, causing various o<strong>the</strong>rsections of STORE to be executed as <strong>the</strong>y are requiredfor various STORE operations.52


IOWS SubroutineThis subroutine is executed whenever a STORE operationis from card or paper tape. It provides <strong>the</strong>following functions:• Reads card or paper tape records punched insystem, data, or core image format.• Moves data from card or paper tape buffer(s) to adisk buffer.• Writes <strong>the</strong> disk buffer to Working Storage (or to<strong>the</strong> User Area or Fixed Area if <strong>the</strong> operation is aSTOREDATA or STOREDATACI to <strong>the</strong> UserArea or Fixed Area). If <strong>the</strong> operation is to WorkingStorage, Working Storage of <strong>the</strong> cartridge definedas <strong>the</strong> TO cartridge is used. By default,this is <strong>the</strong> <strong>System</strong> Working Storage.• Updates <strong>the</strong> Working Storage disk block count andformat when operation is to, or through, WorkingStorage.WD000 SubroutineThis subroutine is executed whenever a STORE operation(except STORECI, STOREDATA, orSTOREDATACI from cards or paper tape) is to <strong>the</strong>User Area or <strong>the</strong> Fixed Area. It performs <strong>the</strong> followingfunctions:• Adjusts <strong>the</strong> destination User Area or Fixed Areadisk block address to <strong>the</strong> next sector when not ata sector boundary, if <strong>the</strong> operation is a STORE-DATA or STOREDATACI.• Makes <strong>the</strong> required disk block adjustment whenmoving a system format program to <strong>the</strong> UserArea.• Moves data or a program in Working Storage to<strong>the</strong> User Area or <strong>the</strong> Fixed Area. If <strong>the</strong> operationis from Working Storage, Working Storageof <strong>the</strong> cartridge defined as <strong>the</strong> FROM cartridgeis used. By default, this is <strong>the</strong> <strong>System</strong> WorkingStorage. If <strong>the</strong> operation is a STORE from cardsor paper tape, <strong>System</strong> Working Storage is used.DOLET SubroutineThis subroutine is executed whenever a STORE operationis to <strong>the</strong> User Area or Fixed Area (exceptSTOREMOD). It performs <strong>the</strong> following functions:• Reads <strong>the</strong> LET or FLET sector to which <strong>the</strong> entrypoint name (or names) is to be added.• Checks if a 1DUMY padding entry is required before<strong>the</strong> name is entered when storing data or coreimage programs to <strong>the</strong> User Area.• If a LET sector cannot contain <strong>the</strong> entry, updates<strong>the</strong> header words of <strong>the</strong> LET sector and writes <strong>the</strong>completed LET sector to disk.• Enters a name (or names) in a LET or FLET sectorand updates <strong>the</strong>. "words available" entry in<strong>the</strong> header. In <strong>the</strong> case of a LET sector, <strong>the</strong>terminal 1DUMY disk block size is decrementedby <strong>the</strong> number of disk blocks stored.• Decrements <strong>the</strong> 1DUMY size in <strong>the</strong> FLET sectorby <strong>the</strong> number of disk blocks stored. <strong>All</strong> entriesthat follow this FLET entry are pushed to <strong>the</strong> rightby <strong>the</strong> size of one entry (3 words).UPDCM SubroutineThis subroutine is executed whenever <strong>the</strong> STORE operationis to <strong>the</strong> User Area (except STOREMOD). Itupdates DOOM as follows:• Clears <strong>the</strong> Working Storage disk block count(#WSCT) of <strong>the</strong> TO drive in DOOM to zero.• Puts <strong>the</strong> disk block address of <strong>the</strong> end of <strong>the</strong> UserArea (plus one disk block) into #ANDU in DCOM(in <strong>the</strong> entry in <strong>the</strong> drive-dependent parameter for<strong>the</strong> cartridge affected by <strong>the</strong> STORE operation).• Determines if <strong>the</strong> STORE operation is in Temporarymode; does not put <strong>the</strong> disk block addressof <strong>the</strong> end of <strong>the</strong> User Area into #BNDU of <strong>the</strong> TOdrive during Temporary mode.• Updates <strong>the</strong> base file-protection address in DCOM(#FPAD) of <strong>the</strong> TO drive if <strong>the</strong> STORE operationis not during Temporary mode.Section 9. Disk Utility <strong>Program</strong> (DUP) 53


SNOFF SubroutineFixed Area is <strong>the</strong> buffer specified by SDBUF. It isone sector long if <strong>the</strong> core size is 4K; o<strong>the</strong>rwise,This subroutine is executed by all STORE operations. it is seven sectors long.It terminates <strong>the</strong> STORE function as follows. LET/FLET sectors are read and written one ata time, using <strong>the</strong> buffer specified by LETAR.• Moves <strong>the</strong> cartridge ID of <strong>the</strong> TO drive into <strong>the</strong> When STORE reads binary records, it reads <strong>the</strong>mSTORE terminal message. into <strong>the</strong> area specified by THIS and NEXT. If storingfrom cards, double buffering is used; THIS and NEXT• Moves <strong>the</strong> disk block address where <strong>the</strong> data or are each considered to be 80 words long. If .storingprogram was stored into <strong>the</strong> STORE terminal from paper tape, double buffering is not used; THISmessage.and NEXT are considered to be an extended buffer,large enough to contain <strong>the</strong> maximum length record• Moves <strong>the</strong> disk block count of <strong>the</strong> program or data (108 words).into <strong>the</strong> STORE terminal message.• Uses <strong>the</strong> PRINT subroutine in DUPCO to print<strong>the</strong> terminal message.Errors Detected• Exits to <strong>the</strong> REST subroutine in DUPCO to clear<strong>the</strong> CATCO switches and restore DCTL if it is not The following DUP errors are detected in STORE:in core storage. D30, D31, D33, D90, and D93.ST700 SubroutineThis subroutine is executed when performing aSTOREMOD operation. It performs <strong>the</strong> followingfunctions:• Computes <strong>the</strong> location within <strong>the</strong> User Area orFixed Area sector at which <strong>the</strong> old version of <strong>the</strong>program begins.• Moves <strong>the</strong> new version of <strong>the</strong> program into <strong>the</strong>buffer to replace <strong>the</strong> old version, one word at atime.When an output sector is completed, it is writtento <strong>the</strong> User Area or Fixed Area. The next User orFixed Area sector is <strong>the</strong>n read into <strong>the</strong> buffer toallow <strong>the</strong> word by word replacement to continue.The entire STOREMOD process is under controlof <strong>the</strong> disk block count. The number of disk blocksreplaced by <strong>the</strong> new version is determined by <strong>the</strong>disk block count of <strong>the</strong> old version, as found in LET/FLET. STOREMOD does not alter this count.Buffers Used By STOREThe disk buffer used for moving data or programsbetween Working Storage and <strong>the</strong> User Area or <strong>the</strong>FILEQThis phase of DUP is read into core storage by DCTLwhen <strong>the</strong> Count field (27-30) of <strong>the</strong> STORECI controlrecord is non-zero. The function of FILEQ is toprocess <strong>the</strong> records following <strong>the</strong> STORECI controlrecord and place <strong>the</strong> processed records into <strong>the</strong>SCRA for use by <strong>the</strong> Core Load Builder. Four typesof STORECI control records are processed by thisphase; *LOCAL, *NOCAL, *FILES, and G2250.FILEQ consists of <strong>the</strong> subroutines LC000, FR000,GR200, and LF200.LC000This subroutine processes *LOCAL and *NOCALcontrol records. A mainline name is not specifiedon <strong>the</strong>se records when <strong>the</strong>y follow <strong>the</strong> STORE CIcontrol record; an error is indicated if one is specified.Thus, <strong>the</strong> mainline name is set to blanks. <strong>All</strong>subroutine names specified in *LOCAL or *NOCALcontrol records are converted to name code.LOCAL/NOCAL information for <strong>the</strong> core loadto be built is stored in <strong>the</strong> SCRA.The format of LOCAL/NOCAL information in <strong>the</strong>SCRA is shown on page 22.54


FR000This subroutine processes *FILES control records.File numbers are converted to binary. File names,if specified, are converted to name code; if unspecified,<strong>the</strong> name is set to blanks. Cartridge IDs, ifspecified, are converted to binary; if unspecified,<strong>the</strong> ID is set to zeros.FILES information for <strong>the</strong> core load to be builtis stored in <strong>the</strong> SCRA.The format of FILES information in <strong>the</strong> SCRA isshown on page 22.GR000This subroutine processes *G2250 records. A mainlinename is not specified on <strong>the</strong>se records when <strong>the</strong>yfollow <strong>the</strong> STORE CI control record. An error isindicated if a mainline name is specified. Thus, <strong>the</strong>mainline name is set to blanks. <strong>All</strong> G2250 subroutinenames determined from G2250 control recordinformation are converted to name code.G2250 information for <strong>the</strong> core load to be built isstored in sector 6 of <strong>the</strong> SCRA. The format of G2250information in <strong>the</strong> SCRA is shown below.Word Count, one word specifying <strong>the</strong> number of words oneG2250 information record occupies in <strong>the</strong> G2250sector, including <strong>the</strong> word count. A word countis included for each G2250 record.Mainline Name, two words of blanks in name code format.GCOM, two words in name code format specifying<strong>the</strong> graphic communication control block.Subroutine Name, two words in name codeformat.Subroutine Na rne-1 indicatesword followinglast entry 1DDUMPThe DDUMP phase of DUP resides in part of <strong>the</strong>first or fifth 4K block of core storage, dependingon whe<strong>the</strong>r <strong>the</strong> core size is 4K, 8K, 16K, or 32K.Only on a 32K machine does <strong>the</strong> DDUMP phasereside in <strong>the</strong> fifth 4K block of core storage.This phase is read into core storage whenDCTL recognizes a DUMP control record. Thisphase uses all <strong>the</strong> subroutines in DUPCO that areneeded, e. g. , disk reading and writing.DD000This is <strong>the</strong> mainline of <strong>the</strong> DDUMP phase. Itinitializes <strong>the</strong> parameters of <strong>the</strong> subroutines, setsup <strong>the</strong> IOAR headers for <strong>the</strong> areas used for input/output, and directs <strong>the</strong> execution of <strong>the</strong> subroutines.XG000This subroutine gets <strong>the</strong> words from <strong>the</strong> disk and, if<strong>the</strong> program is in DSF, <strong>the</strong> words are typed as todata, header indicator, or last data word.LF200This subroutine provides <strong>the</strong> exit for FILEQ. Whenall *LOCAL, *NOCAL, *FILES, and G2250 controlrecords have been processed, DCTL is read intocore storage using <strong>the</strong> GET subroutine in DUPCOwith <strong>the</strong> execute switch (XEQSW) set. DCTL begins<strong>the</strong> processing of <strong>the</strong> header of <strong>the</strong> mainline programthat is to be stored in core image format.Buffers Used By FILEQSector6II IThe following subroutine names will be entered in <strong>the</strong> G2250sector of <strong>the</strong> SCRA if <strong>the</strong>y were specified in <strong>the</strong> G2250 informationrecord.GCHAR or GUPER, <strong>the</strong> character stroke table.GSP12, <strong>the</strong> verification direct entry subroutine.GSP06, <strong>the</strong> scissoring subroutine.GSP05, <strong>the</strong> ICA area expansion subroutine.GSP11, <strong>the</strong> indexed entity scan subroutine.Note: As each subroutine is specified, it will occupy <strong>the</strong> nextavailable position.The buffer used for writing <strong>the</strong> processed controlrecords to <strong>the</strong> SCRA is referred to as SCRAB.SCRAB is ano<strong>the</strong>r name for BUF7, known indirectlythrough CATCO as SDBUF.Errors DetectedThe following DUP errors are detected in FILEQ:D41, D42, D43, D44, D45, D46, D47, and D48.Section 9. Disk Utility <strong>Program</strong> (DUP) 55


XW000This subroutine places <strong>the</strong> data or program inWorking Storage.XF000This subroutine formats <strong>the</strong> data into a system ordata record to be punched.XP000This subroutine checksums, unpacks, and punches<strong>the</strong> record formatted by XF000 on ei<strong>the</strong>r cards orpaper tape as specified.XL000This subroutine prints <strong>the</strong> data or program on <strong>the</strong>principal print device.XC000This subroutine clears <strong>the</strong> print area as directedby XL000.XI000This subroutine inserts <strong>the</strong> data or program wordsinto <strong>the</strong> print area as directed by XL000.XE000This subroutine converts from packed EBCDIC tocard code and places <strong>the</strong> data in a buffer for punching.Buffers Used By DDUMPPEBUF 61-word buffer to hold printed output.THIS --- 81-word buffer to read in cards to checkto see if <strong>the</strong>y are blank.NEXT -- 111-word buffer from which <strong>the</strong> outputis punched.Errors DetectedThe following DUP error is detected in DDUMP: D50.DUMPLET/DUMPFLETThis phase of DUP prints <strong>the</strong> contents of <strong>the</strong> LocationEquivalence Table (LET) and/or <strong>the</strong> Fixed Area LocationEquivalence Table (FLET) in an easily readableformat on <strong>the</strong> principal print device. The extent of<strong>the</strong> dump depends on <strong>the</strong> setting of <strong>the</strong> following threeDUPCO switches:LETSW. When this switch is positive, both LETand FLET are to be dumped; when negative, onlyFLET is dumped.DRIVE. When this switch is negative, LET and/or FLET from all cartridges are dumped; when notnegative, LET and/or FLET is dumped from <strong>the</strong>cartridge specified only.NAMSW. If this switch is on, only <strong>the</strong> LET orFLET entry corresponding to <strong>the</strong> name in #NAMEis printed.One sector of LET/FLET is printed per page.Each sector of LET/FLET dumped is preceded bytwo lines of header information. The first headerline contains <strong>the</strong> contents of <strong>the</strong> following locationsfrom COMMA/DCOM: #CIDN, $FPAD, #FPAD,#CIBA, #ULET, and #FLET.Following this line is a second header line thatreflects information concerning <strong>the</strong> LET/FLETsector being dumped, i. e. , <strong>the</strong>sector number (SCTR NO.),User Area/Fixed Area (UA/FXA),words available (WORDS AVAIL), andchain address (CHAIN ADR).Following <strong>the</strong>se two header lines are <strong>the</strong> LET/FLET entries. Twenty-one lines of entries areprinted, made up of five entries per line but sequencedby column.Once LET and/or FLET have been dumped accordingto LETSW, DRIVE, and NAMSW, DUMPLETprints a terminal message and exits to <strong>the</strong> RESTsubroutine in DUPCO.Buffers Used By DUMPLET/DUMPFLETLETAR -- 322-word buffer to be used to get data PRNTA 61-word buffer in UPCOR used forfrom disk.printing a line.SDBUF -- 320-word buffer to be used to place data LETAR -- 322-word buffer in UPCOR used forin Working Storage.reading a sector of LET/FLET.56


DELETEThe DELETE phase removes programs and datafiles from ei<strong>the</strong>r <strong>the</strong> User or Fixed Area, alongwith <strong>the</strong>ir corresponding LET/FLET entries.DCTL passes control to DELETE after havingread a DELETE control record and having found<strong>the</strong> specified entry in LET/FLET. This sectorof LET/FLET is left in <strong>the</strong> buffer LETAR withDELSW pointing to <strong>the</strong> location previous to <strong>the</strong>specified entry. DBADR is set with <strong>the</strong> User orFixed Area disk block address of <strong>the</strong> program tobe deleted.DELETE compresses LET/FLET by <strong>the</strong> numberof words made available by <strong>the</strong> deleted entry. If<strong>the</strong> deletion is to be from <strong>the</strong> Fixed Area, <strong>the</strong>specified entry is replaced by a 1DUMY entry of<strong>the</strong> same size. If <strong>the</strong>re are adjacent 1DUMY entries,<strong>the</strong>y are combined to form a single 1DUMYentry and FLET is compressed by 0, 3, or 6 wordsdepending upon whe<strong>the</strong>r <strong>the</strong>re are 0, 1, or 2 adjacent1DUMY entries.If <strong>the</strong> deletion is to be from <strong>the</strong> User Area, <strong>the</strong>amount of <strong>the</strong> compression of LET is dependentupon <strong>the</strong> number of words made available by <strong>the</strong>specified LET entry. This number varies sinceDSF programs with multiple entries may be storedin <strong>the</strong> User Area. As in <strong>the</strong> case of FLET, adjacent1DUMY entries may cause additional compressionof 3 or 6 words.The packing of LET/FLET begins in <strong>the</strong> sectorcontaining <strong>the</strong> entry to be deleted and continuesthroughout <strong>the</strong> remainder of LET/FLET. Sincemultiple entries must reside in a single LET sector,<strong>the</strong>y are moved across a LET sector boundary onlywhen room exists in <strong>the</strong> previous sector for all <strong>the</strong>entry points. LET is packed until a DCI programor data file is encountered. The 1DUMY entry,whichnormally precedes this entry, is updated to reflect<strong>the</strong> number of disk blocks required to make <strong>the</strong> DCIprogram or data file start at a sector boundary afterit is moved <strong>the</strong> appropriate number of sectors. Ifa 1DUMY entry did not precede <strong>the</strong> DCI program ordata file, one of <strong>the</strong> appropriate size is inserted tosectorize <strong>the</strong> DCI program or data file. The shrinkageor packing continues until <strong>the</strong> last 1DUMY entryof LET is found.Packing of <strong>the</strong> User Area begins with <strong>the</strong> sectorcontaining <strong>the</strong> program to be deleted. SubsequentDSF programs are shifted by disk blocks into <strong>the</strong>area made available until a DCI program or datafile is encountered. If <strong>the</strong> User Area is beingpacked by an amount equal to or greater than onesector, <strong>the</strong> remaining programs are moved bywhole sectors.After all required disk movement of <strong>the</strong> specifiedDELETE operation is complete, DELETE prints aterminal message to signify completion.Buffers Used By DELETELETAR -- used for storage of LET/FLET sectors.Up to 2 sectors may reside in core storage with<strong>the</strong> addresses of <strong>the</strong> first word of each saved inDE918 and DE919.SDBUF -- used to process <strong>the</strong> User Area. Two oreight sectors of core storage are used dependingupon core size.Errors DetectedThe following DUP errors are detected in DELETE:D70, D71, and D72.DEFINETo initially provide a Fixed Area on a systemcartridge or to increase its size, <strong>the</strong> Core ImageBuffer (CIB), LET, and <strong>the</strong> User Area are movedtoward and partly into Working Storage. WorkingStorage is reduced by <strong>the</strong> increased size of <strong>the</strong>Fixed Area. The sector address of <strong>the</strong> CIB isupdated in DCOM and <strong>the</strong> Resident Image on <strong>the</strong>updated system cartridge. If a Fixed Area isdefined on a non-system cartridge, LET is notshifted because it precedes <strong>the</strong> Fixed Area sectoraddress.To decrease <strong>the</strong> size of <strong>the</strong> Fixed Area on asystem cartridge, <strong>the</strong> Core Image Buffer (CIB),LET, and <strong>the</strong> User Area are moved away fromWorking Storage and into a part of <strong>the</strong> existingFixed Area. Working Storage is increased by <strong>the</strong>amount of <strong>the</strong> decrease in <strong>the</strong> size of <strong>the</strong> Fixed Area.DCOM and <strong>the</strong> Resident Image on <strong>the</strong> updatedsystem cartridge are updated with <strong>the</strong> new sectoraddress of <strong>the</strong> CIB. If <strong>the</strong> size of <strong>the</strong> Fixed Areais decreased on a non-system cartridge, LET is notshifted, as it precedes <strong>the</strong> Fixed Area sector address.Section 9. Disk Utility <strong>Program</strong> (DUP) 57


IITo delete <strong>the</strong> FORTRAN Compiler, <strong>the</strong> RPGCompiler and/or <strong>the</strong> Assembler <strong>Program</strong> from asystem cartridge, all succeeding programs andspecial purpose areas on <strong>the</strong> disk are moved awayfrom Working Storage toward <strong>the</strong> voided area.Working Storage is increased by <strong>the</strong> size of <strong>the</strong>voided program(s).Once a program has been eliminated, it cannotbe restored without an initial load of <strong>the</strong> disk cartridge,including all <strong>the</strong> programs in <strong>the</strong> User orFixed Area.DEFINE determines if a system or non-systemcartridge is being processed by testing DCOM for<strong>the</strong> presence of <strong>the</strong> version and modification levelnumber, which is zero on non-system cartridges.If <strong>the</strong> FORTRAN Compiler and/or <strong>the</strong> Assembler<strong>Program</strong> or <strong>the</strong> RPG Compiler is deleted, all SLETentries for that program(s) are cleared to zero.SLET is also revised to reflect <strong>the</strong> new sector ad-•dresses of those programs that are shifted.<strong>All</strong> entries in <strong>the</strong> Reload Table indicating SLETlookups requested by <strong>the</strong> deleted program(s) areremoved and <strong>the</strong> remaining Reload Table entriesare packed toge<strong>the</strong>r. The revised Reload Table is<strong>the</strong>n reprocessed to generate new sector addresseswhere necessary in <strong>the</strong> monitor system programs.Buffers Used By DEFINELETAR -- a disk I/O buffer.SDBUF --- a disk I/O buffer.Switches and IndicatorsFORSW -- non-zero when <strong>the</strong> FORTRAN Compileris to be deleted.ASMSW -- non-zero when <strong>the</strong> Assembler <strong>Program</strong>is to be deleted.FXSW -- non-zero when <strong>the</strong> Fixed Area is to bedefined or modified.DATSW -- indicates <strong>the</strong> disk block adjustment of<strong>the</strong> Fixed Area.NEGSW -- non-zero when <strong>the</strong> Fixed Area is to bedecreased.1 RPGSW — non-zero when <strong>the</strong> RPG Compileris to be deletedErrors DetectedThe following DUP errors are detected in DEFINE:D15, D70, D80, D81, D82, D83, D84, D85, D86and D87.DEXITThis phase is brought into core storage and executedby <strong>the</strong> LEAVE subroutine in DUPCO. DEXIT performs<strong>the</strong> following functions:• Prints DUP error messages• Traps monitor control records and exits to <strong>the</strong>Supervisor• Links to <strong>the</strong> <strong>System</strong> Library program ADRWSfor DWADR• Passes control to <strong>the</strong> Core Load Builder forSTORECI• Returns control to MODIF when a modificationincludes changes to <strong>the</strong> <strong>System</strong> Library.• Exits to <strong>the</strong> Supervisor upon recognition of <strong>the</strong>INTERRUPT REQUEST key interrupt.DEXIT is called with an indirect branch viaLEAVE. Following <strong>the</strong> branch instruction is aparameter that specifies <strong>the</strong> function to be performedby DEXIT.If <strong>the</strong> parameter is a positive integer, DEXITprints a DUP error message. The message printedcorresponds to <strong>the</strong> integer parameter.If <strong>the</strong> parameter is zero, DEXIT moves a trappedmonitor control record from <strong>the</strong> buffer CRBUF to<strong>the</strong> Supervisor buffer @SBFR. $CTSW in COMMAis Set to minus one (/FFFF) to indicate to <strong>the</strong> Supervisorthat <strong>the</strong> next monitor control record has alreadybeen read.DEXIT checks to see if control should be returnedto <strong>the</strong> <strong>System</strong> Maintenance program, MODIF. If#MDF2 in DCOM is non-zero, DEXIT reads DUPphase 18 into core storage and transfers to it. Thisphase contains part of MODIF, written on this sectorwhen MODIF was last in control. In this mannerMODIF is able to use DUP to delete an old versionof a program or subroutine from <strong>the</strong> <strong>System</strong> Library,and <strong>the</strong>n use DUP to store <strong>the</strong> new version.58


If control is not given to MODIF, DEXIT transfersto $EXIT in <strong>the</strong> Skeleton Supervisor.If <strong>the</strong> parameter is minus two (-2), <strong>the</strong> interruptcaused by <strong>the</strong> INTERRUPT REQUEST key is recognized,causing <strong>the</strong> Supervisor to read records from<strong>the</strong> principal input device until <strong>the</strong> next JOB monitorcontrol record is encountered. DEXIT exits via <strong>the</strong>$DUMP entry point in <strong>the</strong> Skeleton Supervisor witha dump format code of minus two (-2).If <strong>the</strong> parameter is minus three (-3), DEXITtransfers control to <strong>the</strong> Core Load Builder so that<strong>the</strong> DSF program currently in Working Storage canbe converted to core image format for <strong>the</strong> STORECIoperation. Before DEXIT transfers control to phase0/1 of <strong>the</strong> Core Load Builder, <strong>the</strong> area in corestorage bounded by IOADR and <strong>the</strong> end of core storageis written to DUP phase 13 (UPCOR). DUPphase 17 (PRECI) restores this area to core storageafter <strong>the</strong> DCI program has been moved to <strong>the</strong>User or Fixed Area.If <strong>the</strong> parameter is minus four (-4), DEXITinitiates a CALL LINK to <strong>the</strong> <strong>System</strong> Library programADRWS to complete <strong>the</strong> DUP DWADR operation.DEXIT enters <strong>the</strong> Skeleton Supervisor at<strong>the</strong> SLINK entry point with <strong>the</strong> name ADRWS specifiedin name code. The ADRWS program initializes<strong>the</strong> Working Storage sector addresses on <strong>the</strong>cartridge whose logical drive code is found in#TODR in DCOM. ADRWS causes control to bereturned to DUP by placing a dummy DUP monitorcontrol record into <strong>the</strong> Supervisor buffer (SBFRbefore returning control to <strong>the</strong> Skeleton Supervisorvia <strong>the</strong> $EXIT entry point.<strong>All</strong> DEXIT functions write DUP's DCOM buffer tosector @DCOM on <strong>the</strong> master cartridge beforeexiting.Buffers Used By DEXITCATCO -- used to write DCOM on sector @DCOM of<strong>the</strong> master cartridge. The buffer size is 112words.IOADR -- used to write UPCOR on DUP phase 13.The buffer size is approximately 1528 words.B -- used to read phase 0/1 of <strong>the</strong> Core LoadBuilder into core storage. This read is executedfrom core locations 32-39. Approximately480 words are read.@SBFR - /0140 -- used to read <strong>the</strong> MODIF phase(DUP phase 18) into core storage. This readis executed from core locations $SCAN-$SCAN+7.The number of words read is 320.2501/1442 CARD INTERFACE (CFACE)This phase serves as an interface between DUPprograms and <strong>the</strong> system device subroutine forcard I/O. CFACE consists of four subroutines;<strong>the</strong>y are listed below along with <strong>the</strong>ir primaryfunctions:GETHO -- Reads a card and converts from <strong>IBM</strong>Card Code to unpacked EBCDIC.GETBI -- Reads a binary card.PACKB Converts from card binary (1 columnper word) to packed binary (4 columns per 3words), with checksumming.PCHBI -- Punches a card from an 80-word buffer.The phase has four entry points, one correspondingto each of <strong>the</strong> functions listed above. Each subroutineis entered by an indirect BSI instruction to<strong>the</strong> symbolic name listed above. Upon entry to eachsubroutine, <strong>the</strong> registers and status conditions of<strong>the</strong> calling program are saved using <strong>the</strong> ENTERsubroutine in DUPCO. The PHIDM subroutine inDUPCO records <strong>the</strong> phase identification of CFACE.Upon completion of <strong>the</strong> required function andprior to returning to <strong>the</strong> calling program, <strong>the</strong> originalconditions of <strong>the</strong> calling program are restoredusing <strong>the</strong> RTURN subroutine in DUPCO.GETHOThis subroutine is used by DCTL to read DUP controlrecords. The system device subroutine for <strong>the</strong> 2501or <strong>the</strong> 1442 is used to read <strong>the</strong> card. An 81-wordbuffer specified by CRBUF in CAT CO is used for cardinput. GETIIO examines each card for ei<strong>the</strong>r // incolumns 1 and 2 or * in column 1. If this informationis not found in <strong>the</strong> first two columns of <strong>the</strong> card,<strong>the</strong> subroutine returns immediately to DCTL. inthis way, invalid records can be bypassed at maximumcard speed without using a double-buffering technique.Section 9. Disk Utility <strong>Program</strong> (DUP) 59


If // or * is found in column 1, <strong>the</strong> subroutineloops till <strong>the</strong> whole card is read, <strong>the</strong>n converts itfrom <strong>IBM</strong> Card Code to unpacked EBCDIC using<strong>the</strong> system conversion subroutine CDCNV.GETHO packs <strong>the</strong> unpacked EBCDIC data from<strong>the</strong> 81-word input buffer to a 41-word packedbuffer specified by :PEBUF.The subroutine <strong>the</strong>n exits to DCTL.GETBIThis subroutine reads a binary card into an 81-wordbuffer specified by THIS. The system device subroutinefor <strong>the</strong> 2501 or 1442 is used to read <strong>the</strong> card.PACKBThis subroutine converts card binary (one wordper column) in an 81-word input buffer (NEXT)to packed binary (four columns per three words)in a 55-word output buffer (NEXT). The packeddata overlays <strong>the</strong> unpacked data.After packing, <strong>the</strong> checksum of <strong>the</strong> 54 wordsis verified. If <strong>the</strong> checksum is correct, <strong>the</strong> subroutinereturns to <strong>the</strong> calling program. A checksumerror causes an exit to LEAVE in DUPCOwith an error parameter.PCHBIThis subroutine., using <strong>the</strong> system device subroutinefor <strong>the</strong> 1442, punches a card from an 81-wordbuffer specified by NEXT.PEBUF -- 41-word buffer used to hold <strong>the</strong> packedEBCDIC control record, converted from <strong>the</strong>unpacked EBCDIC in CRBUF.KEYBOARD INTERFACE (KFACE)KFACE serves as an interface for DUP programswhen <strong>the</strong> principal input device is <strong>the</strong> Keyboard.KFACE is used by DCTL to read DUP controlrecords from <strong>the</strong> Keyboard.The PHIDM subroutine in DUPCO is used torecord <strong>the</strong> KFACE phase identification. The ENTERsubroutine in DUPCO is used to save <strong>the</strong> conditionsof <strong>the</strong> calling program. A control record of up to80 characters is read and converted from Keyboardcode to unpacked EBCDIC by <strong>the</strong> system devicesubroutine for <strong>the</strong> Keyboard.An EOF character causes <strong>the</strong> termination ofinput and <strong>the</strong> filling of <strong>the</strong> remainder of <strong>the</strong> bufferwith blanks or a word count of 80, whicheve:c is first.The record is read into <strong>the</strong> 81-word buffer specifiedby CRBUF in CATCO in unpacked EBCDIC,<strong>the</strong>n converted to packed EBCDIC and stored in <strong>the</strong>41-word buffer specified by PEBUF in CATCO. TheRTURN subroutine in DUPCO is used to restore <strong>the</strong>conditions of <strong>the</strong> calling program.Buffers Used By KFACECRBUF 81-word input buffer used to hold acontrol record in unpacked EBCDIC.PEBUF 41-word buffer used to hold <strong>the</strong> packedEBCDIC control record, converted from <strong>the</strong>unpacked EBCDIC in CRBUF.Buffers Used By CFACETHIS -- 81-word input buffer used by GETBI forreading binary records.NEXT -- 81-word buffer used by PACKB for packingbinary records (4 columns per 3 words).The packed data overlays <strong>the</strong> unpacked data.Also used by PCHBI for outputting to <strong>the</strong> punch.CRBUF -- 81-word input buffer used by GETHOfor reading control records in unpackedEBCDIC.1134/1055 PAPER TAPE INTERFACE (PFACE)This phase serves as an interface between DUPprograms and <strong>the</strong> system device subroutine forpaper tape I/O. PFACE consists of four subroutines;<strong>the</strong>y are listed below along with <strong>the</strong>ir primaryfunctions:GETHO -- Reads a paper tape record punched inPTTC/8 code and converts it to both unpackedand packed EBCDIC.GETBI -- Reads a binary paper tape record,60


PACKB -- Converts from unpacked binary (twoframes per word) to packed binary, withchecksumming.PCHBI -- Punches a binary paper tape record.The phase has four entry points, one correspondingto each of <strong>the</strong> functions listed above.Each subroutine is entered by an indirect BSIinstruction to <strong>the</strong> symbolic name listed above.Upon entry to each subroutine, <strong>the</strong> registersand status conditions are saved using <strong>the</strong> ENTERsubroutine in DUPCO. Ano<strong>the</strong>r DUPCO subroutine,PHIDM, modifies <strong>the</strong> phase identificationwith <strong>the</strong> PFACE identification.Upon completion of <strong>the</strong> requested function andprior to exiting to <strong>the</strong> calling program, <strong>the</strong> originalconditions of <strong>the</strong> calling program are restoredusing <strong>the</strong> RTURN subroutine in DUPCO.GETHOThis subroutine is used by DCTL to read DUPcontrol records. The system device subroutinefor <strong>the</strong> 1134/1055 is used to read <strong>the</strong> record. An81-word buffer specified by CRBUF in CATCO isused to contain each record read. <strong>All</strong> conversionfrom PTTC/8 code to EBCDIC is performed by<strong>the</strong> system device subroutine. When <strong>the</strong> controlrecord has been read, it is converted to packedEBCDIC within <strong>the</strong> 41-word buffer specified byPEBUF in CATCO. The subroutine <strong>the</strong>n exitsto DCTL.GETBIThis subroutine reads a binary paper tape recordinto a 109-word buffer specified by THIS in CATCO.The system device subroutine for <strong>the</strong> 1134/1055 isused to read <strong>the</strong> record.Note that THIS and NEXT are reversed for eachrecord read when reading binary cards. Whenreading paper tape DCTL places <strong>the</strong> address of <strong>the</strong>buffer having <strong>the</strong> lowest core address into THIS,since <strong>the</strong> reading of binary paper tape recordsrequires an extended buffer. The system devicesubroutine reads each frame (eight bits of data)into one word of <strong>the</strong> buffer.The word count preceding each binary paper taperecord is punched into a single frame, and is readseparately from <strong>the</strong> body of <strong>the</strong> record. After <strong>the</strong>word count is read, it is checked for validity. If it isvalid, it is used to read <strong>the</strong> record that follows.If it is not valid, <strong>the</strong> next frame is read to determineif it is a word count. In this way, deletecharacters and o<strong>the</strong>r special codes may appearbetween binary records or between a control recordand <strong>the</strong> first binary record.PACKBThis subroutine packs <strong>the</strong> binary record as read byGETBI into normal binary data. The packed dataoverlays <strong>the</strong> unpacked data.After packing, <strong>the</strong> checksum of <strong>the</strong> words readis verified. If <strong>the</strong> checksum is correct, <strong>the</strong> subroutinereturns to <strong>the</strong> calling program. A checksumerror causes an exit to LEAVE in DUPCO withan error parameter.PCHBIThis subroutine uses <strong>the</strong> system device subroutinefor <strong>the</strong> 1134/1055 to punch a binary paper taperecord from a 109-word buffer specified by NEXT.Buffers Used By PFACETHIS -- 109-word buffer used by GETBI for readingbinary paper tape records.The two buffers THIS and NEXT, used fordouble buffering when reading binary cards,constitute one extended buffer when readingbinary paper tape records. Double bufferingis not used for binary paper tape records.NEXT -- 109-word buffer used by PCHBI for punchingbinary paper tape records, consisting ofTHIS and NEXT taken as consecutive buffers.CRBUF 81-word input buffer used to hold a controlrecord in unpacked EBCDIC.PEBUF 41-word buffer used to hold <strong>the</strong> packedEBCDIC control record, converted from <strong>the</strong>unpacked EBCDIC in CRBUF.Section 9. Disk Utility <strong>Program</strong> (DUP) 61


PRECIThis phase is read into core storage by <strong>the</strong> CoreLoad Builder after a core load has been built fora STORECI function. This phase resides in <strong>the</strong>DUP overlay area. It moves <strong>the</strong> core load to <strong>the</strong>User Area or Fixed Area before restoring DUPphase 13 (UPCOR). Since UPCOR is not availableto PRECI, copies of <strong>the</strong> DUPCO subroutines PHID,PIIIDM, GET, and PUT have been incorporatedinto PRECI.PRECI is composed of five sections or logicalparts -- PC000, PC040, PC100, PC180, and PC240.PC000This is <strong>the</strong> entry point to PRECI from <strong>the</strong> CoreLoad Builder. DCOM from <strong>the</strong> master cartridgeis read into PRECI's work area, as is <strong>the</strong> coreimage header from <strong>the</strong> CIB. If <strong>the</strong> inhibit DUPfunction switch ($NDUP) has not been set by <strong>the</strong>Core Load Builder, PRECI proceeds. O<strong>the</strong>rwise,<strong>the</strong> PC240 section is used to exit to DCTL after indicatingan error has occurred.DCOM is used to determine <strong>the</strong> logical drivecode of <strong>the</strong> destination drive, as well as <strong>the</strong> startingsector address to which <strong>the</strong> program is to bemoved. From <strong>the</strong> core image header <strong>the</strong> totallength of <strong>the</strong> core load in sectors is determined.A check is <strong>the</strong>n made to determine if <strong>the</strong> programcan be contained in <strong>the</strong> User Area or Fixed Area.If <strong>the</strong> core load is too large, <strong>the</strong> PC240 section isused to exit to DCTL after indicating an error hasoccurred."PC040This section moves LOCAL/SOCAL sectors (ifany) from Working Storage to <strong>the</strong>ir position at <strong>the</strong>end of <strong>the</strong> core load after it has been moved to <strong>the</strong>User Area or Fixed Area. The Working Storagesector address from which <strong>the</strong> LOCALs/SOCALsare moved includes an adjustment for WorkingStorage files when <strong>the</strong>y are present. LOCALs/SOCALs are moved to <strong>the</strong> User or Fixed Area onesector at a time. The number of sectors requiredfor Working Storage files and <strong>the</strong> number of LOCAL/SOCAL sectors are obtained from <strong>the</strong> core imageheader.PC100This section moves that part of <strong>the</strong> core load (including<strong>the</strong> core image header) that resides i:a <strong>the</strong>CIB to its destination in <strong>the</strong> User Area or FixedArea. The length of <strong>the</strong> program (in words) and<strong>the</strong> starting address of <strong>the</strong> core load are used tocontrol <strong>the</strong> number of sectors moved from <strong>the</strong> CIBto <strong>the</strong> User Area or Fixed Area. The core imageheader also indicates if <strong>the</strong> core load exceeds <strong>the</strong>4K boundary; i. e. , <strong>the</strong> core load's load addressplus <strong>the</strong> number of words in <strong>the</strong> core load producesa number greater than 4095.The core load residing in <strong>the</strong> CIB is moved to<strong>the</strong> User Area or Fixed Area four sectors at a time.This move continues until <strong>the</strong> CIB sector containingthat part of <strong>the</strong> core load that resides at location4095 has been moved.PC180This section moves that part of <strong>the</strong> core load thatresides in core storage above location 4095 to <strong>the</strong>User or Fixed Area. The last sector of <strong>the</strong> coreload written to <strong>the</strong> User or Fixed Area from <strong>the</strong>CIB is read into core storage so as to be contiguouswith <strong>the</strong> part of <strong>the</strong> core load residing in core, i.e. ,above location 4095. The remainder of <strong>the</strong> coreload, starting with <strong>the</strong> first word read into corestorage from <strong>the</strong> User or Fixed Area, is <strong>the</strong>n writtento <strong>the</strong> User or Fixed Area, starting at <strong>the</strong> sectorread into core storage.PC240This section restores DUP phase 13 (UPCOR),DCTL (phase 2), and <strong>the</strong>n exits to DCTL. Beforeexiting to DCTL, however, termination data isplaced in <strong>the</strong> DCOM buffer in CATCO, and in CATCOitself. The interrupt locations in low core si,orageare restored for DUP operation, and phase switchesare cleared in order to ensure that DDUMP andSTORE are reloaded from disk. If any error s havebeen detected during PRECI operation, <strong>the</strong> DUPerror message number is communicated back toDCTL through CIERR in CATCO.Buffers Used By PRECIThe disk I/0 buffer used to move all parts of <strong>the</strong>core load to <strong>the</strong> User Area or Fixed Area is located62


at BUF7. <strong>All</strong> references are direct, ra<strong>the</strong>r thanindirect through SDBUF in CATCO, since UPCORis not in core storage during <strong>the</strong> operation of PRECI.DUP DIAGNOSTIC AIDSGENERALDUP has provided a selective, dynamic dump ofvarious core storage areas to facilitate problemanalysis. The core dumps are under <strong>the</strong> controlof column as of individual DUP control records.In general, to obtain a dump of a particular DUPphase, column 35 should contain <strong>the</strong> phase IDnumber of that phase. If column 35 containszero, all DUP phases associated with <strong>the</strong> functionnamed on <strong>the</strong> control record yield a core dump,starting with <strong>the</strong> execution of DCTL. The column35 codes and <strong>the</strong> corresponding DUP phase yieldingcore dumps are shown below.Code in column 3502345679Phase(s) dumped<strong>All</strong> associated phases, startingwith DCTLDCTLSTOREFILEQDDUMPDUMPLETDELETEDEXITThe core dumps include <strong>the</strong> following:Disk I/O Areas -- The buffer area used for <strong>the</strong>disk I/O operation, including <strong>the</strong> area intowhich DUP phases are read, is dumped. Thenumber of words dumped is dependent on <strong>the</strong>number of words read or written.Buffer Areas -- The buffers between BUF4 andPRPNT are dumped in DCTL execution. Thisdump occurs when <strong>the</strong> LET search begins,when <strong>the</strong> LET search on one cartridge iscomplete and <strong>the</strong> next cartridge LET searchbegins, and before <strong>the</strong> required DUP phase(STORE, DUMP, or DELETE) is read.CATCO -- This area of core storage is dumped inconjunction with any dump mentioned above.If a dump (or dumps) is desired during CCATexecution, <strong>the</strong> next to <strong>the</strong> last card (i. e. , <strong>the</strong> lasttype A card) of DUPCO should be removed beforereloading this phase with a <strong>System</strong> Loader reloadfunction. This change in DUPCO causes all possiblecore dumps within DUP to occur regardless of <strong>the</strong>contents of column 35 in any DUP control record.Core dumps are not allowed when <strong>the</strong> DEFINE orPRECI phase is in execution. The <strong>System</strong> CoreDump program uses <strong>the</strong> CIB to save <strong>the</strong> contents ofcore storage, and, since <strong>the</strong> CIB moves during aDEFINE operation and <strong>the</strong> core load to be stored byPRECI is in <strong>the</strong> CIB, serious errors occur if coredumps are taken when executing ei<strong>the</strong>r DEFINE orPRECI.PRECIWhen PRECI is entered from <strong>the</strong> Core Load Builder,<strong>the</strong> phase identification word in COMMA ($PHSE) isinitially set to /0011 by <strong>the</strong> PHIDP subroutine inPRECI. As each subroutine of PRECI is executed,$PHSE is modified by PHIDP as follows:Subroutine in execution Contents of $PHSEPC040 /1011PC100 /2011PC180 /3011PC240 /4011In addition, <strong>the</strong> second hexadecimal digit of $PHSEis modified by <strong>the</strong> IMP subroutine in PRECI eachtime a disk I/O operation is performed.Digit 2 of $PHSESTOREDisk I/O Operation1 Read from Disk2 Write to DiskWhen STORE is entered from DUP control, <strong>the</strong>phase identification word in COMMA ($PHSE) isinitially set to /0003 by <strong>the</strong> PHID subroutine inDUPCO. As each subroutine of STORE is executed,$PHSE is modified by PHID as follows:Section 9. Disk Utility <strong>Program</strong> (DUP) 63


Subroutine in execution Contents of $PIISE subroutine in DUPCO each time an I/0 operationis performed.POWs /1003WD000 /2003 Digit 2 of $PHSE I/O operationDOLET /3003UPDCM /4003 1 Read from DiskST700 /5003 2 Write to DiskSNOFF /6003 4 Convert Binary to EBCDIC5 Print Terminal MessageIn addition, <strong>the</strong> second hexadecimal digit of 8 Read Binary Cards<strong>the</strong> phase identification is modified by <strong>the</strong> PHIDM 9 Read Binary Paper Tape64


SECTION 10. ASSEMBLER PROGRAMFLOWCHARTSGeneral: ASMO1Phase 0: ASMO2Phase 1: ASMO3Phase 1A: ASMO4Phase 2: ASMO5Phase 2A: ASMO6Phase 3: ASMO7Phase 4: ASMO8Phase 5: ASMO9Phase 6: ASM10Phase 7: ASM11Phase 7A: ASM12Phase 8: ASM13Phase 8A: ASM14Phase 9: ASM15-ASM17Phase 10: ASM18Phase 10A: ASM19Phase 11: ASM20Phase 12: ASM21ERMSG: ASM22@ARCV ASM23@APCV:Phase 13:ASM24ASM25 -ASM26The Assembler <strong>Program</strong> is designed to translate <strong>the</strong>statements of a source program written in <strong>1130</strong>Assembler Language into a format that may bedumped and/or stored by DUP or executed directlyfrom Working Storage.Basically, <strong>the</strong> functions of <strong>the</strong> Assembler are:1. Convert <strong>the</strong> mnemonic to machine language(except for Assembler control records).2. Assign addresses to statement labels.3. Insert <strong>the</strong> format and index register bits into<strong>the</strong> instruction, if applicable.4. Convert <strong>the</strong> instruction operands to addressesor data.INTRODUCTIONThe Assembler <strong>Program</strong> is structurally divided intotwo parts, <strong>the</strong> resident portion and <strong>the</strong> overlay portion.The resident portion consists of <strong>the</strong> AssemblerCommunications Area (ASCOM), part of phase 0,phase 9, and <strong>the</strong> phase 9 Communications Area(PHSCO). <strong>All</strong> of <strong>the</strong> o<strong>the</strong>r phases are called intocore storage as overlays.The Assembler <strong>Program</strong> is functionally dividedinto two parts, pass 1 and pass 2. The source programis read and processed, one statement at atime, during each of <strong>the</strong> two passes. During pass 1,<strong>the</strong> source program is read into core storage from<strong>the</strong> principal I/0 device. Unless <strong>the</strong> user specifiesby control record that two-pass mode is in effect,<strong>the</strong> source program is stored on <strong>the</strong> disk, fromwhich it is reentered for pass 2 processing. If twopassmode is specified or required, <strong>the</strong> source programis reentered via <strong>the</strong> principal I/O device forpass 2 processing. (If a list deck or paper tapeobject program is desired, <strong>the</strong> assembly must bemade in two-pass mode.)PROGRAM OPERATIONWhen <strong>the</strong> Monitor Control Record Analyzer detectsan ASM monitor control record, it reads <strong>the</strong> firstsector of <strong>the</strong> Assembler <strong>Program</strong> (phase 0) intocore storage and transfers control to it.Phase 0 reads into core storage all <strong>the</strong> subroutinesrequired during assembly processing for I/O,and phase 9. The word counts and sector addressesof all <strong>the</strong> buffers and major overlay phases are initializedin ASCOM and in phase 9, and <strong>the</strong> boundaryconditions are set for <strong>the</strong> Symbol Table. Phase 1is <strong>the</strong>n fetched and control is passed to it.Phase 1 reads and analyzes control records, setting<strong>the</strong> appropriate switches in ASCOM for <strong>the</strong> optionsspecified. Upon detection of <strong>the</strong> first non-controlrecord, phase 1A is fetched and given control.Phase 1A initializes <strong>the</strong> core addresses for <strong>the</strong>buffers, <strong>the</strong>n fetches and transfers control to phase2 to start statement processing.Statement processing is performed by an op codesearch in phase 9 arid a transfer through a branchtable (that precedes every major overlay) to <strong>the</strong>overlay phase currently in core storage. If <strong>the</strong> requiredoverlay phase is in core storage, executionof <strong>the</strong> phase proceeds. If it is not in core storage,<strong>the</strong> branch table causes a return to phase 9 to fetch<strong>the</strong> required overlay phase. The op code search isperformed again and control is passed to <strong>the</strong> overlaySection 10. Assembler <strong>Program</strong> 65


phase. When <strong>the</strong> overlay phase completes <strong>the</strong> necessaryprocessing, ano<strong>the</strong>r record is read and <strong>the</strong>entire process is repeated.<strong>All</strong> overlays exit by branching to ei<strong>the</strong>r <strong>the</strong>LDLBL or <strong>the</strong> PALBL subroutines within phase 9 and<strong>the</strong>n to STRT9 (<strong>the</strong> op code search). A branch istaken to LDLBL when <strong>the</strong> statement just processedis permitted to have a label. A branch is taken toPALBL when a label is not permitted or is to be ignored.Both LDLBL and PALBL branch to <strong>the</strong>RDCRD subroutine (within phase 9) to read <strong>the</strong> nextrecord just prior to <strong>the</strong>ir return to <strong>the</strong> overlay phasethat called <strong>the</strong>m.ASSEMBLER COMMUNICATIONS AREAThe Communications Area (ASCOM) consists of all<strong>the</strong> indicators and switches referenced by more thanone phase of <strong>the</strong> Assembler <strong>Program</strong>. <strong>All</strong> communicationbetween phases is done through ASCOM.ASCOM resides in core storage following DISKZ andpreceding <strong>the</strong> Overlay Area.Refer to <strong>the</strong> program listings for details regarding<strong>the</strong> contents of ASCOM.OVERLAY AREAThe Overlay Area is <strong>the</strong> area in core storage intowhich <strong>the</strong> statement processing (overlay) phases areloaded as required. Phase 0 is initially loaded intothis area by <strong>the</strong> Monitor Control Record Analyzer(see Section 6. Supervisor). Phases 1, 1A, and 2are sequentially loaded into this area at <strong>the</strong> start ofpasses 1 and 2. Phases 2A, 5, 6, 7, 7A, 8, 8A, 13,@ARCV, and @APCV are loaded into, this area duringpasses 1 and 2 as <strong>the</strong>y are required to processspecific mnemonics and constants, to handle outputoptions, etc. Phase 12 is loaded into this area when<strong>the</strong> END statement is encountered in passes 1 and 2.Phase 4 is loaded into this area at <strong>the</strong> completion ofpass 2. Phases 9, 10, 10A, 11, and ERMSGare not loaded into <strong>the</strong> Overlay Area.The Overlay Area resides in core storage followingASCOM and preceding phase 9.SYMBOL TABLEAs <strong>the</strong> source program is read and processed inpass 1, <strong>the</strong> Symbol Table is built. An entry is madein <strong>the</strong> Symbol Table for each valid symbol definedin <strong>the</strong> source program. Each entry in <strong>the</strong> SymbolTable consists of three words. The first word contains<strong>the</strong> value of <strong>the</strong> symbol. Words 2 and 3 contain<strong>the</strong> symbol itself in name code. The followingexample shows <strong>the</strong> conversion of <strong>the</strong> symbol 'START'to name code for a Symbol Table entry:Symbol Table Entry 2. 2 8 C I 6 6 3..—...—..,..—.....---„—...--,,—.....--,,...—......—,..---.,—,..—/nr--......--^--..10 . 011,010 . 011 , 011 . 010 . 011 , 110 . 010 . 010 , 110 . 111 00 . 111 , 010 .011.11Multiply-defIned indicatorRelocation mode indicatorInput EBCDIC EBCDICChoracter (hexadecimal) (binary)5 E2 11110E3 III/0A C/ 11100D9 11 :01T E3 11,10"Digit I caries depending on <strong>the</strong> settings of <strong>the</strong> Relocation mode andMultiply-defIned indicator).The Symbol Table is built starting at <strong>the</strong> highaddressedend of core storage. Entries are addedto <strong>the</strong> Symbol Table (see below) until its lower limit,<strong>the</strong> end of <strong>the</strong> principal print device subroutine, isreached. If symbols are added to <strong>the</strong> Symbol Tableafter <strong>the</strong> in-core Symbol Table has been filled (I. e. ,<strong>the</strong> lower limit has been reached), <strong>the</strong> overflowSymbol Table is saved, one sector at a time. inWorking Storage on <strong>the</strong> disk. Note that SymbolTable overflow is possible only if <strong>the</strong> Assemblercontrol record *OVERFLOW SECTORS reserving<strong>the</strong> required sectors on disk is present in <strong>the</strong>source program; o<strong>the</strong>rwise, <strong>the</strong> assembly is terminatedat <strong>the</strong> point of Symbol Table overflow.LowCore00100011000110010011Third Entry Second Entry First EntrySymbolValue Symbol NameII---JHigh tCoreAs <strong>the</strong> source program is again read and processedin pass 2, <strong>the</strong> Symbol Table is searched eachtime a reference to a symbol is encountered. Thein-core Symbol Table is searched first. If <strong>the</strong> symbolis not found in <strong>the</strong> in-core Symbol Table and66


Symbol Table overflow has been written on disk,Phase 10A is fetched into core storage to perform<strong>the</strong> search of <strong>the</strong> overflow sectors.A binary search technique is used in <strong>the</strong> SymbolTable search.INTERMEDIATE I/0During pass 1 of an assembly made in one-passmode <strong>the</strong> source program statements are saved ondisk for input to pass 2. Each source statement issaved starting at column 21 and ending with <strong>the</strong>rightmost non-blank column. As saved on disk eachstatement consists of a prefix word containing <strong>the</strong>number of words up to and including <strong>the</strong> prefix wordfor <strong>the</strong> following statement and <strong>the</strong> source statementpacked two EBCDIC characters per word.The intermediate I/0 is written on disk in WorkingStorage, starting at <strong>the</strong> first sector of WorkingStorage if no OVERFLOW SECTORS were specified,or starting at <strong>the</strong> first sector following <strong>the</strong> last sectorof Symbol Table overflow.If a LIST Assembler control record is not presentin <strong>the</strong> source program, comments statements are notsaved in <strong>the</strong> intermediate I/O.During pass 2 of an assembly in one-pass mode,<strong>the</strong> intermediate I/O is read into core storage, onesector at a time. The source statements are unpackedand placed into <strong>the</strong> two I/0 buffers such that <strong>the</strong>y areindistinguishable from statements read from <strong>the</strong> principalI/0 device.DOUBLE-BUFFERING<strong>All</strong> card, paper tape, or Keyboard input to <strong>the</strong>Assembler <strong>Program</strong> is double-buffered, with oneexception; if <strong>the</strong> assembly is being made in two-passmode and <strong>the</strong> LIST DECK or LIST DECK E option hasbeen specified, input during pass 2 is single-bufferedto facilitate punching.The Assembler <strong>Program</strong> uses two 80-word buffersfor double-buffering. While a record is being readinto one buffer, <strong>the</strong> record in <strong>the</strong> o<strong>the</strong>r buffer is beingconverted and processed.Two locations in ASCOM are used to point to <strong>the</strong>two input buffers. One location (RDBFR) always contains<strong>the</strong> address of <strong>the</strong> buffer in which a record isbeing processed. The o<strong>the</strong>r location (RDBFR+1)always contains <strong>the</strong> address of\<strong>the</strong> buffer into whicha record is being read. The RDCRD subroutine inphase 9, which interfaces with <strong>the</strong> principal I/O devicesubroutine, exchanges <strong>the</strong> buffer addresses inRDBFR and RDBFR+1 after each record is read.PHASE DESCRIPTIONSPHASE 0Phase 0 serves as <strong>the</strong> Assembler <strong>Program</strong>'s loader.First, <strong>the</strong> Communications Area (ASCOM) is initializedby phase 0, and <strong>the</strong> required I/O device subroutinesare fetched into core storage. Phase 9, <strong>the</strong>resident portion of <strong>the</strong> Assembler <strong>Program</strong>, is alsofetched into core storage. Phase 0 initializes <strong>the</strong>sector addresses and word counts of <strong>the</strong> variousbuffers utilized by <strong>the</strong> Assembler <strong>Program</strong>, and <strong>the</strong>boundary conditions for <strong>the</strong> <strong>System</strong> Symbol Tableare established. Phase 0 <strong>the</strong>n fetches phase 1 into<strong>the</strong> overlay area and transfers control to it.The switches $NDUP and $NXEQ (in COMMA) areset non-zero to inhibit program execution and/orDUP functions in <strong>the</strong> event <strong>the</strong> assembly is terminatedbefore completion.A Master Overlay Control subroutine (P0130), <strong>the</strong>subroutine interfacing with DISKZ (DISK1), and <strong>the</strong>index register restoring subroutines (STXRS andLDXRS) are part of phase 0 and remain in corestorage during <strong>the</strong> entire assembly; <strong>the</strong> rest of phase0 is overlaid by phase 1. The Master Overlay Controlsubroutine performs <strong>the</strong> fetching of all <strong>the</strong> overlayphases and transfers control to <strong>the</strong> phase just readinto core storage.PHASE 1Phase 1 reads, analyzes, and lists <strong>the</strong> Assemblercontrol records. As each control record is analyzed,<strong>the</strong> various options specified by <strong>the</strong> control recordare indicated in <strong>the</strong> Assembler <strong>Program</strong>'s CommunicationsArea (ASCOM). When <strong>the</strong> first non-controltyperecord is encountered, phase 1 transfers to <strong>the</strong>Master Overlay Control subroutine to fetch phase 1Aand transfer control to it.PHASE 1APhase 1A determines <strong>the</strong> address of <strong>the</strong> DSF bufferand initializes its IOAR header information in <strong>the</strong>Assembler <strong>Program</strong>'s Communications Area(ASCOM). If <strong>the</strong> principal input device is ei<strong>the</strong>r <strong>the</strong>1134 Paper Tape Reader or <strong>the</strong> Keyboard, <strong>the</strong> currentrecord is moved over 20 positions to <strong>the</strong> rightand <strong>the</strong> read-in address is set for position 21 of <strong>the</strong>I/0 area.The number of overflow sectors assigned ischecked for a maximum of 32 and <strong>the</strong> adjusted WorkingStorage boundary for <strong>the</strong> disk output of <strong>the</strong> sourceand object programs is initialized. Phase 1A <strong>the</strong>ntransfers control to <strong>the</strong> Master Overlay Control subroutineto fetch phase 2, which begins statementprocessing.Section 10. Assembler <strong>Program</strong> 67


PHASE 2Phase 2 handles <strong>the</strong> processing of all ENT, ISS,LIBR, ABS, EPR, SPR, ILS, and FILE statements.These statements are header mnemonics and mustappear as <strong>the</strong> first non-control-type statements if<strong>the</strong>y are included in <strong>the</strong> source program. For tillsreason phase 2 is <strong>the</strong> first overlay phase loaded intocore storage to begin statement processing. As eachparticular header mnemonic is processed, <strong>the</strong> necessaryindicators are set in <strong>the</strong> Assembler <strong>Program</strong>'sCommunications Area (ASCOM). The ordering andcompatibility of <strong>the</strong> various header mnemonics ischecked, and <strong>the</strong> program header record informationis built and saved in ASCOM. When a mnemonic nothandled by phase 2 is detected, control is transferredto <strong>the</strong> op code search (STRT9) in phase 9.PHASE 2APhase 2A is called into core storage when a FILEstatement is detected by phase 2. Phase 2A is loadedby a flipper routine within phase 2 and overlays partof phase 2. Phase 2A obtains <strong>the</strong> file informationfrom <strong>the</strong> FILE statement and builds <strong>the</strong> 7-wordDEFINE FILE Table. At <strong>the</strong> completion of phase 2Aprocessing, control is returned to <strong>the</strong> flipper routinein phase 2. The flipper routine restores <strong>the</strong> overlaidportion of phase 2 and branches to <strong>the</strong> op codesearch (STRT9) in phase 9.DCOM of <strong>the</strong> master cartridge, and DOOM of <strong>the</strong>cartridge defined to contain <strong>System</strong>. Working Storageis updated as follows:• The first entry point name of a Type .3, 4, 5, or6 subroutine is placed into <strong>the</strong> two words specifiedby 4 NAME, in internal <strong>1130</strong> NAME code.• The execution address (or first entry pointaddress) is placed in ENTY.• The length of <strong>the</strong> program in disk blocks isplaced in one word of <strong>the</strong> # WSCT quintuplecorresponding to <strong>the</strong> logical drive that contains<strong>System</strong> Working Storage.• A zero is placed in one word of <strong>the</strong> # FMATquintuple corresponding to <strong>the</strong> logical drivethat contains <strong>System</strong> Working Storage to indicatethat this Working Storage contains DSF.The last record read by <strong>the</strong> Assembler <strong>Program</strong>,<strong>the</strong> record following <strong>the</strong> END statement, is movedto <strong>the</strong> Supervisor buffer.In terminating <strong>the</strong> assembly, phase 4 prints foursign-off messages:PHASE 3Phase 3 is called into core storage as part 1 of <strong>the</strong>Assembler <strong>Program</strong>'s exit to <strong>the</strong> Supervisor. Dueto <strong>the</strong> size of phase 3, it overlays part of phase 9instead of <strong>the</strong> Overlay Area.The options of printing, punching, or saving <strong>the</strong>Symbol Table, as requested by <strong>the</strong> user on Assemblercontrol records, are performed. At <strong>the</strong> completionof <strong>the</strong> Symbol Table options processing, phase 4 isfetched into core storage and control is transferredto it.PHASE 4Phase 4 performs <strong>the</strong> final processing for <strong>the</strong> Assembler<strong>Program</strong> and is called into core storage byphase 3. If overflow sectors were specified byAssembler control record, and if Symbol Table overflowoccurred in assembling <strong>the</strong> program, <strong>the</strong> objectprogram, which is residing on <strong>the</strong> disk, is movedback to <strong>the</strong> sector boundary at <strong>the</strong> start of WorkingStorage.1. The number of errors flagged in <strong>the</strong> assembly2. The number of symbols defined3. The number of overflow sectors specified4. The number of overflow sectors requiredPhase 4 <strong>the</strong>n exits to <strong>the</strong> Skeleton Supervisor at <strong>the</strong>$EXIT entry point.PHASE 5Phase 5 is called into core storage to process HDNG,ORG, BSS, BES, EQU, LIST, EJCT, or SPACstatements, These mnemonics are all non•imperativetype statements requiring similar processing andare all grouped, <strong>the</strong>refore, in <strong>the</strong> same overlayphase.68


PHASE 6Phase 6 processes all imperative instructions and<strong>the</strong> DC statement. Since <strong>the</strong>se mnemonics are usedmost frequently, <strong>the</strong> processing for <strong>the</strong>m wasgrouped into one overlay phase.PHASE 7The two mnemonics processed by phase 7 areXFLC and DEC. The conversion of <strong>the</strong> data in <strong>the</strong>statement operands to binary is handled in phase7A. Upon completion of <strong>the</strong> conversion, <strong>the</strong> data isformatted into <strong>the</strong> appropriate floating, fixed, ordecimal format.PHASE 7APhase 7A is fetched into core storage by a flipperroutine within phase 7. Phase 7A converts <strong>the</strong> mantissaof a decimal integer, a fixed- or floating-pointnumber to <strong>the</strong> binary equivalent.Phase 7A contains a scanning process that converts<strong>the</strong> operand to its binary equivalent and a postscanningprocess that converts from powers of 10to powers of 2.The converted decimal data is saved in a bufferthat is part of <strong>the</strong> flipper routine. When <strong>the</strong> conversionis completed, phase 7A returns to <strong>the</strong> flipperroutine that restores phase 7 and transfers controlto it.PHASE 8Phase 8 processes <strong>the</strong> LIBF, CALL, EXIT, LINK,EBC, DSA, and DN statements. The processing of<strong>the</strong> program linking mnemonics -- LIBF, CALL,EXIT and LINK -- is combined with <strong>the</strong> processingof <strong>the</strong> data definition mnemonics -- EBC, DSA, andDN -- since o<strong>the</strong>rwise <strong>the</strong>y would constitute twosmall phases. This is satisfactory in terms ofassembly time since EBC, DSA, and DN are notfrequently used mnemonics.PHASE 8APhase 8A processes <strong>the</strong> DMES statement. The DMESprocessing is performed by a scanning subroutine anda conversion subroutine. The scanning subroutinescans and evaluates <strong>the</strong> operand field, one characterat a time. The conversion subroutine contains atable of packed Console Printer codes and a table ofpacked 1403 Printer codes. The conversion is performedusing an algorithm.PHASE 9The phase 9 communications area (PHSCO) consistsof <strong>the</strong> entry addresses of <strong>the</strong> common subroutineswithin phase 9. Immediately following PHSCO is <strong>the</strong>op code search.STRT9The op code obtained from <strong>the</strong> input record is savedin ASCOM. <strong>All</strong> possible op codes are resident in atable, which has for each op code a two-word indicatorfollowed by a corresponding one-word machinelanguage mnemonic. The op code search is performedby means of a table lookup. When a matchis found, <strong>the</strong> corresponding machine languagemnemonic is picked up and saved in OPCNT inASCOM. Bits 13-15 of OPCNT form a branch tabledisplacement. Using this displacement, an indirectbranch is taken thru <strong>the</strong> table to <strong>the</strong> overlay preparedto process this op code. If <strong>the</strong> overlay is in corestorage, execution proceeds. If it is not, a returnis made to <strong>the</strong> op code search to fetch <strong>the</strong> requiredoverlay phase into core storage. Control is <strong>the</strong>npassed to <strong>the</strong> overlay and statement processingcontinues.If <strong>the</strong> search is terminated due to an invalid opcode, it is determined whe<strong>the</strong>r <strong>the</strong> graphics phaseis in core. If it is in core, control is passed to it,o<strong>the</strong>rwise <strong>the</strong> instruction is processed as an invalidop code.BTHEXBTHEX is a binary-hexadecimal conversion subroutine.The binary data is entered in <strong>the</strong> accumulatorleft-justified, and <strong>the</strong> hexadecimal output is storedby index register 1. The number of characters to beconverted is in index register 2.B4HEXThe B4HEX subroutine is entered when four hexadecimaloutput characters are desired. Index register 2is set to four and a branch is made to BTHEX.Section 10. Assembler <strong>Program</strong> 69


SCANThe SCAN subroutine collects <strong>the</strong> elements of <strong>the</strong>operand field, character by character, performsany arithmetic functions necessary, and evaluates<strong>the</strong> operand.GTHDGGTHDG is <strong>the</strong> new page subroutine. Branches aremade to <strong>the</strong> principal print subroutine to skip tochannel 1, and print <strong>the</strong> heading as specified in <strong>the</strong>last HDNG statement encountered.LDLBLThe LDLBL subroutine scans <strong>the</strong> label field of <strong>the</strong>statement. In pass 1, valid labels are added to <strong>the</strong>Symbol Table if <strong>the</strong>y do not already appear <strong>the</strong>re.The record is saved in <strong>the</strong> intermediate output bufferby INT1 and a branch is made to read <strong>the</strong> next record(RDCRD). When <strong>the</strong> next record is in core, a checkis made for <strong>the</strong> last card. If <strong>the</strong> last card has beendetected, a branch is made to <strong>the</strong> principal conversionroutine (CVADR), and control is returned to<strong>the</strong> calling program.In pass 2, <strong>the</strong> record is listed, if a listing hasbeen requested or <strong>the</strong> record is in error. The nextrecord is fetched and control is returned to <strong>the</strong>calling program.PALBLThe PALBL subroutine is a secondary entry to <strong>the</strong>LDLBL subroutine. PALBL is entered when a labelis not permitted on a statement being processed.GETERA branch is made to GETER when an error occursduring <strong>the</strong> assembly. GETER fetches <strong>the</strong> error messagephase (ERMSG) into <strong>the</strong> first disk buffer (BUFI).RDCRDRDCRD is <strong>the</strong> interface subroutine for <strong>the</strong> principalinput device subroutine. The input buffer is clearedto EBCDIC blanks, <strong>the</strong> input buffer addresses inASCOM are exchanged, and a branch is made to <strong>the</strong>principal input device subroutine to read a record.Index register 1 is set to point at <strong>the</strong> current inputbuffer and control is transferred back to <strong>the</strong> callingprogram.If <strong>the</strong> record previously read was a monitor controlrecord, phase 4 is fetched into core storage andcontrol is transferred to it.P9MVEThe P9MVE subroutine moves <strong>the</strong> input record from<strong>the</strong> input buffer to <strong>the</strong> print buffer. As it moves <strong>the</strong>record, each character is checked for validity. At<strong>the</strong> completion of <strong>the</strong> move, a branch is made to <strong>the</strong>principal print device subroutine to list <strong>the</strong> cecordand control is returned to <strong>the</strong> calling program.INT1INT1 is <strong>the</strong> subroutine used in pass 1 to pack <strong>the</strong> inputrecord into two EBCDIC characters per word andsave it in <strong>the</strong> intermediate output buffer. INT1 isoverlaid by phase 11 for pass 2 processing. INT2 is<strong>the</strong> entry address for phase 11 during pass 2.PHASE 10Phase 10 consists of two subroutines: DTHDR andWRDFO. Phase 10 is fetched by phase 12 in pass 2processing. Phase 10 overlays that section of phase9 dealing with <strong>the</strong> inserting of labels into <strong>the</strong> SymbolTable.DTHDRDTHDR enters a data header into <strong>the</strong> object programoutput in disk system format (DSF) when required andcompletes <strong>the</strong> previous data header.WRDFOThis subroutine writes one sector of disk system format(DSF) output when <strong>the</strong> DSF buffer is full. After <strong>the</strong>sector is written, those words past <strong>the</strong> 320th word of<strong>the</strong> buffer are moved back to <strong>the</strong> beginning a <strong>the</strong> buffer.70


In <strong>the</strong> event <strong>the</strong> buffer is not full and WRDFO isentered from phase 12 END statement processing,<strong>the</strong> DSF buffer is written to Working Storage.PHASE 10APhase 10A is fetched into core storage whenevernecessary to handle Symbol Table overflow. When asymbol is to be added to an overflow sector in pass 1or when <strong>the</strong> overflow sectors are to be searchedfor a symbol in pass 2, phase 10A is called. Phase10A overlays <strong>the</strong> INT1 subroutine in phase 9 whencalled during pass 1; it overlays phase 11 (<strong>the</strong> INT2subroutine) when called in pass 2 of an assembly inone-pass mode.PHASE 11Phase 11 is fetched into core storage in pass 1 duringphase 12 END statement processing if <strong>the</strong> assemblyis in one-pass mode. The function of phase 11 is toread <strong>the</strong> source statements from <strong>the</strong> disk duringpass 2. The source statements saved in pass 1 areread back onto core storage in pass 2 in such a waythat <strong>the</strong>y are indistinguishable from statements readfrom <strong>the</strong> principal I/0 device.PHASE 12In pass 1, phase 12 builds <strong>the</strong> program header recordin <strong>the</strong> DSF buffer. Several counters are reinitializedin ASCOM and <strong>the</strong> buffer pointers are reset for disksystem format (DSF) output. Phase 10 is fetchedinto core storage.If <strong>the</strong> assembly is in two-pass mode, phase 1 isfetched and control is passed to it. If <strong>the</strong> assemblyis in one-pass mode, <strong>the</strong> END statement is saved in<strong>the</strong> intermediate I/O buffer and <strong>the</strong> buffer is writtento <strong>the</strong> disk. Phase 11 is fetched into core storageand <strong>the</strong> first sector of intermediate I/O is read into<strong>the</strong> first disk buffer (BUFI). A branch is <strong>the</strong>n madeto phase 11 to transfer <strong>the</strong> first statement from <strong>the</strong>intermediate I/0 buffer to <strong>the</strong> source input buffer.Phase 1 is <strong>the</strong>n fetched onto core storage and controlis transferred to it.In pass 2, phase 12 branches to DTHDR to build<strong>the</strong> end-of-program data header. If <strong>the</strong> source programis a type 3, 4, 5, 6, or 7 (not a mainline), anexecution address of zero is saved in ASCOM and in<strong>the</strong> source statement buffer. If <strong>the</strong> source programis a type 1 or 2 (a mainline), <strong>the</strong> execution address,e. , <strong>the</strong> END statement operand, is saved inASCOM and in <strong>the</strong> source statement buffer. The lastsector of DSF output is written to <strong>the</strong> disk and <strong>the</strong>disk block count of <strong>the</strong> program is saved in ASCOM.Phase 12 <strong>the</strong>n fetches phase 3 and transfers controlto it.PHASE 13Phase 13 searches <strong>the</strong> master graphics op code tableto determine if <strong>the</strong> mnemonic in <strong>the</strong> current inputrecord is a valid 2250 mnemonic. If <strong>the</strong> mnemonicis not in <strong>the</strong> op code table, control passes to Phase 9to post <strong>the</strong> error code for an invalid mnemonic.When a 2250 mnemonic is found, a branch is made toG4040.G4040 determines if <strong>the</strong> Assembler is in pass 1or pass 2. During pass 1 <strong>the</strong> Location AssignmentCounter (LAC) is incremented by 1 or 2, dependingupon whe<strong>the</strong>r a 1- or 2-word order is being processed.During pass 2 a branch is made to G4070 whichcauses a branch to be made to <strong>the</strong> address containedin <strong>the</strong> fourth word of <strong>the</strong> op code table entry. Thisis <strong>the</strong> address of <strong>the</strong> section that will process <strong>the</strong>order.The format, tag, and operand fields of <strong>the</strong> orderare tested. Control passes to <strong>the</strong> SCAN routine inphase 9 to evaluate any orders which containoperands. When control returns, <strong>the</strong> operands aretested to determine whe<strong>the</strong>r <strong>the</strong>y are valid. If anerror is encountered, control passes to ERFLG topost <strong>the</strong> error. The operand is put in <strong>the</strong> op codebuffer and a branch is made to G4090 to transfer<strong>the</strong> contents of <strong>the</strong> op code buffer to <strong>the</strong> Disk <strong>System</strong>Format (DSF) buffer. G4090 passes control toB4HEX in Phase 9 to convert <strong>the</strong> contents of <strong>the</strong>op code buffer from binary to 4 hexadecimal characters.When control returns it passes to DFOUTwhich moves <strong>the</strong> word to <strong>the</strong> DSF buffer. The LACis incremented by one and <strong>the</strong> op code buffer is setto zero. Control passes to LDLBL to access <strong>the</strong>next record.ERMSGERMSG is called by <strong>the</strong> GETER subroutine withinphase 9 when an error occurs during <strong>the</strong> assemblyprocess. It is loaded into <strong>the</strong> first disk buffer (BUFI).A list of error messages is contained within ERMSG.Section 10. Assembler <strong>Program</strong> 71


Figure 14, panel 3 shows <strong>the</strong> layout of <strong>the</strong> contentsof core storage during pass 2 of an assemblyin two-pass mode.Figure 14, panel 4 shows <strong>the</strong> layout of <strong>the</strong> contentsof core storage during pass 2 of an assemblyin one-pass mode.0 0COMMA, COMMA, COMMA, COMMA, COMMA, COMMA,Skeleton Skeleton Skeleton Skeleton Skeleton SkeletonSupervisor Supervisor Supervisor Supervisor Supervisor SupervisorDISKZ DISKZ DISKZ DISKZ DISKZ DISKZre AASCOM ASCOM ASCOM ASCOM ASCOMResident Resident Resident Resident ResidentPhase Phase 0 Phase 0 Phase 0 Phase 0 Phase 00Overlay Overlay Overlay Overlay OverlayArea Area Area Area Area/ Phase Phase Phase Phase Phase9 9 9 9 9Phase 10 Phase 10 Phase 10IN T1 Phase WA IN TI Phase 11 Phase 10AHDNG HDNG HDNGBuffer Buffer BufferCard I/O Card I/O Card I/O Card I/O Card I/OBuffers Buffers Buffers Buffers BuffersPrint Print Print Print PrintBuffer Buffer Buffer Buffer BufferDisk I/O Disk I/O Disk I/O Disk I/O Disk I/OBuffer Buffer Buffer Buffer 1 Buffer 1PrincipalI/O DeviceSubroutinePrincipalI/O DeviceSubroutinePrincipalI/O DeviceSubroutineDisk I/0Buffer 2Disk I/0Buffer 2Principal Principal Principal Principal PrincipalPrint Device Print Device Print Device Print Device Print DeviceSubroutine Subroutine Subroutine Subroutine SubroutineS. T. S. T. S. T. S. T. S. T.Overflow Overflow Overflow Overflow Overflow/Buffer Buffer Buffer Buffer Buffer_________-------_—_—___-----/Symbol Symbol SymbolSymbolSymbolTable Table Table Table TableAFigure 14. Core Layout During Assembler <strong>Program</strong> Operation72


SECTION 11. FORTRAN COMPILERFLOWCHARTSGeneral: FOR01Phase 1: FOR02Phase 2: FOR03Phase 3: FOR04Phase 4: FOR05-FOR06Phase 5: FOR07-FOR08Phase 6: FOR09Phase 7: FOR10Phase 8: FOR11Phase 9: FOR12Phase 10: FOR13Phase 11: FOR14Phase 12: FOR15Phase 13: FOR16Phase 14: FOR17Phase 15: FOR18Phase 16: FOR19Phase 17: FOR20Phase 18: FOR21Phase 19: FOR22Phase 20: FOR23Phase 21: FOR24Phase 22: FOR25Phase 23: FOR26Phase 24: FOR27Phase 25: FOR28Phase 26: FOR29Phase 27: FOR30The FORTRAN Compiler translates source programswritten in <strong>the</strong> <strong>1130</strong> Basic FORTRAN IV Language intomachine language object programs. The compileralso provides for <strong>the</strong> calling of <strong>the</strong> necessary arithmetic,function, conversion, and input/output subroutinesduring <strong>the</strong> execution of <strong>the</strong> object program.Phases 3 thru 10 are specification phases, processing<strong>the</strong> specification statements and o<strong>the</strong>r definitiveinformation and building <strong>the</strong> basic SymbolTable.Phases 11 thru 18 are compilation phases, analyzingand processing <strong>the</strong> source statements and replacing<strong>the</strong>m with object coding.Phases 19 thru 26 are <strong>the</strong> output phases.Phase 27 is a recovery phase, terminating <strong>the</strong> compilationand executing a CALL EXIT.Thus, <strong>the</strong> FORTRAN Compiler is a "phase"compiler; <strong>the</strong> compiler is passed-by <strong>the</strong> sourceprogram, which resides in core and is massagedinto <strong>the</strong> object program.PHASE OBJECTIVESThe following is a list of <strong>the</strong> compiler phases bynumber and name, and <strong>the</strong>ir major functions:PhaseNumber Phase Name1 Input2 ClassifierFunctionProcess <strong>the</strong> controlrecords; read <strong>the</strong>source statementsand build <strong>the</strong> string.Determine <strong>the</strong> statementtype and place<strong>the</strong> type code in <strong>the</strong>ID word.GENERAL COMPILER DESCRIPTIONThe FORTRAN Compiler consists of 27 sequentiallyexecuted phases:Phases 1 and 2 are initialization and control phases,processing <strong>the</strong> control records and building <strong>the</strong>initial statement string.3 Check Order/StatementNumberCheck for <strong>the</strong> presenceand sequence ofSUBROUTINE,FUNCTION, Type,DIMENSION, COMMON,and EQUIVALENCEstatements; placestatement numbers in<strong>the</strong> SymbolTable.Section 11. FORTRAN Compiler 73


PhaseNumber Phase NameFunctionPhaseNumber Phase Name Function4 COMMON/SUB-ROUTINE orFUNCTIONPlace COMMON variablenames and dimension informationin <strong>the</strong> SymbolTable; check for aSUBROUTINE or FUNC-TION statement and, iffound, place <strong>the</strong> nameand dummy argumentnames in <strong>the</strong> SymbolTable.11 SubscriptDecomposition12 Ascan ICalculate <strong>the</strong> constantsto be used in subscriptcalculation during executionof <strong>the</strong> objectprogram.Check <strong>the</strong> syntax of allarithmetic, IF, CALL,and statement functionstatements.5 DIMENSION/ Place DIMENSION var-REAL, INTEGER, iable names and dimenandEXTERNAL sion information in <strong>the</strong>Symbol Table; indicate<strong>the</strong> appropriate modefor REAL and INTEGERstatement variables.6 Real Constant7 DEFINE FILE,CALL LINK,and CALL EXIT8 Variable andStatementFunction9 DATA Statement10 FORMATPlace <strong>the</strong> names of realconstants in <strong>the</strong> SymbolTable.Check <strong>the</strong> syntax ofDEFINE FILE, CALLLINK, CALL EXITstatements; determine<strong>the</strong> defined file specifications.Place <strong>the</strong> names ofvariables, integer constants,and statementfunction parameters in<strong>the</strong> Symbol Table.Check <strong>the</strong> syntax of <strong>the</strong>DATA statement, checkits variables for validity,and reformat <strong>the</strong> statement.Convert FORMATstatements into a specialform for use by <strong>the</strong>input/output subroutinesduring execution of <strong>the</strong>object program.13 Ascan14 DO, CONTINUE,etc.15 SubscriptOptimize16 Scan17 Expander I18 ExpanderCheck <strong>the</strong> syntax of allREAD, WRITE, FIND,and GO TO statements.Replace DO statementswith a loop initializationstatement and inserta DO test statementfollowing <strong>the</strong> DOloop termination statement;process BACK-SPACE, REWIND,END FILE, STOP,PAUSE, and ENDstatements.Replace subscriptexpressions with anindex register tag.Change all READ,WRITE, GO TO,CALL, IF, arithmetic,and statement functionstatements into a modifiedform of Polishnotation.Replace READ, WRITE,GO TO, and RETURNstatements with objectcoding.Replace CALL,, IF,arithmetic, and statement function statementswith object coding.74


PhaseNumber Phase Name19 Data <strong>All</strong>ocation20 CompilationErrors21 Statement<strong>All</strong>ocation22 List Statement<strong>All</strong>ocation23 List SymbolTable24 List Constants25 Output I26 Output It27 RecoveryFunction<strong>All</strong>ocate a storage areafor variables in <strong>the</strong>object program.List unreferencedstatement numbers,undefined variables,and error codes forerroneous statements.Determine <strong>the</strong> storageallocation for <strong>the</strong> objectprogram coding.List <strong>the</strong> statementnumber addresses,if requested.List <strong>the</strong> subprogramnames in <strong>the</strong> SymbolTable and <strong>the</strong> <strong>System</strong>Library subroutinenames in <strong>the</strong> string,if requested.Compute <strong>the</strong> addressesof <strong>the</strong> constants; list<strong>the</strong> addresses, ifrequested.Build <strong>the</strong> programheader and data headerrecords and place <strong>the</strong>min Working Storage;place <strong>the</strong> real and integerconstants intoWorking Storage.Complete <strong>the</strong> conversionof <strong>the</strong> string toobject coding and place<strong>the</strong> object program intoWorking Storage.Print <strong>the</strong> compilationtermination message;exit by executing aCALL EXIT.CORE LAYOUTFigure 15, panel 1 shows <strong>the</strong> layout of <strong>the</strong> contentsof core storage after <strong>the</strong> Monitor Control RecordAnalyzer has fetched phase 1 of <strong>the</strong> FORTRANCompiler into core storage and has passed controlto <strong>the</strong> control record analyzer portion. The principalprint and principal input device subroutineshave been fetched by phase 1. The card input andprint buffers have been allocated by phase 1.Figure 15, panel 2 shows <strong>the</strong> layout of <strong>the</strong> contentsof core storage after <strong>the</strong> control record analyzerportion of phase 1 has passed control to <strong>the</strong>statement input portion. The control record analyzerportion of <strong>the</strong> phase is overlaid by <strong>the</strong> inputstatement string.Figure 15, panel 3 shows <strong>the</strong> layout of <strong>the</strong> contentsof core storage during <strong>the</strong> execution ofphases 2 through 18. During <strong>the</strong>se phases <strong>the</strong> boundaryseparating <strong>the</strong> statement string and SymbolTable fluctuates as <strong>the</strong> string and Symbol Tableare massaged.Figure 15, panels 4 and 5 show <strong>the</strong> layout of<strong>the</strong> contents of core storage during <strong>the</strong> executionof phases 19 through 24. Panel 4 reflects <strong>the</strong>contents of core storage before any printing hasbeen performed in those phases. In panel 5 <strong>the</strong>lower-addressed portion of <strong>the</strong>se phases has beenoverlaid by <strong>the</strong> print buffer when printing hasbeen performed.Figure 15, panels 6 and 7 show <strong>the</strong> layout of<strong>the</strong> contents of core storage during <strong>the</strong> executionof phase 25. Panel 6 reflects <strong>the</strong> contents ofcore storage before any object coding has beengenerated and written to disk. In panel 7 <strong>the</strong>lower-addressed portion of <strong>the</strong> phase has beenoverlaid by <strong>the</strong> disk output buffer when objectcoding has been generated and written to disk.Figure 15, panel 8 shows <strong>the</strong> layout of <strong>the</strong>contents of core storage after control has beenpassed to phase 26. The disk buffer has beenallocated by phase 26 and is not an overlay.Figure 15, panel 9 shows <strong>the</strong> layout of <strong>the</strong>contents of core storage after control has beenpassed to phase 27. The principal print devicesubroutine has been fetched by <strong>the</strong> phase. TheDCOM buffer has also been allocated by <strong>the</strong>phase.Section 11. FORTRAN Compiler 75


0 0 0 0 0 0 0 0COMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorDISKZ DISKZ DISKZ DISKZ DISKZ DISKZ DISKZ DISKZ DISKZ/./7 DCOMBufferStatement Statement Statement Statement Statement Statement StatementString String String StringStringStringStringA/Phase 1,ControlRecordAnalyzerPortionPrintPrintBuffer Buffer Symbol Symbol Symbol Symbol Symbol SymbolTable Table Table Table Tab le TablePrimaryCard BufferCaPrrid BufferFORTRAN FORTRAN FORTRAN FORTRAN FORTRAN FORTRAN FORTRAN FORTRANCommunications Communications Communications Communications Communications Communications Communications CommunicationsArea Area Area Area Area Area Area AreaPrincipal Principal Print Disk DiskInput Device Input DeviceBuffer Buffer BufferSubroutine SubroutineSecondary Cord Phases PhasesCard Buffer Buffer 19-24 19-24Phase 1,StatementInputPortionPhase 1,StatementInputPortionPhases2-18Phase25Phase25Phase26Phase27// ///,Principal Principal Principal Principal PrincipalPrint Device Print Device Print Device Print Device Print DeviceSubroutine Subroutine Subroutine Subroutine SubroutineROL ROL ROL ROL ROL ROL ROL ROLSubroutine Subroutine Subroutine Subroutine Subroutine Subroutine Subroutine Subroutine//// __LFigure 15. Core Layout During FORTRAN Compiler OperationFORTRAN COMMUNICATIONS AREAThe FORTRAN Communications Area consistsof 16 words of storage where information obtainedfrom <strong>the</strong> FORTRAN control records and compilergeneratedaddresses and indicators are kept.This information is available to any phase needingit. The contents of <strong>the</strong> FORTRAN CommunicationsArea words are described in Table 3.76


Table 3. The Contents of <strong>the</strong> FORTRAN Communications AreaPHASE AREAWord Symbolic Name Description of Contents1 ORG The origin address for an absolute program.2 SOFS The address of <strong>the</strong> start of <strong>the</strong> string.3 EOFS The address of <strong>the</strong> end of <strong>the</strong> string.4 SOFST The address of <strong>the</strong> start of <strong>the</strong> Symbol Table.5 SOFNS The address of <strong>the</strong> start of <strong>the</strong> nonstatement-numberentries in <strong>the</strong> SymbolTable.6 SOFXT Phases 1-20. The address of <strong>the</strong> start of<strong>the</strong> Symbol Table entries for SGTs (subscriptgeneratedtemporary variables).Phases 21-25. The work area word count.7 SOFGT Phases 1-20. The address of <strong>the</strong> start of<strong>the</strong> Symbol Table entries for GTs (generatedtemporary storage locations).Phases 21-25. The constant area wordcount.8 EOFST The address of <strong>the</strong> end of <strong>the</strong> Symbol Table.9 COMON Phases 1-19. The address of <strong>the</strong> nextavailable word for COMMON storage.Phase 20. The address of <strong>the</strong> highestaddressedword reserved for COMMONstorage.Phase 21. Not used.Phases 22-25. Relative entry point.10 CSIZE <strong>All</strong> phases except Phase 20. TheCOMMON area word count.11ERRORPhase 20. The address of <strong>the</strong> lowestaddressedword reserved for COMMONstorage.Bit 15 set to 1 indicates overlap error.Bit 14 set to 1 indicates o<strong>the</strong>r error.12-13 FNAME The program name (obtained from <strong>the</strong> NAMEcontrol record, or a SUBROUTINE orFUNCTION statement) stored in name code.14 SORF Set positive to indicate FUNCTION.Set negative to indicate SUBROUTINE.0 indicates mainline.15 CCWD Control card word.Bit 15 set toBit 14 set toBit 13 set toBit 12 set toBit 11 set toindicates Transfer Trace.indicates Arithmetic Trace.indicates Extended Precision.indicates List Symbol Table.indicates List SubprogramBit 10 set toBit 9 set toBit 8 set to16 IOCS IOCS ControBit 15 set toBit 14 set toBit 13 set toBit 12 set toBit 11 set toBit 10 set toBit 9 set toBit 8 set toBit 7 set toBit 3 set toBit 1 set toNamesindicates List Source <strong>Program</strong>.indicates One Word Integers.indicates Origin.Card Word.indicates 1442 Card ReadPunch, Model 6 or 7.indicates 1134/1055 PaperTape Reader Punch.indicates Console Printer.indicates 1403 Printer.indicates 2501 Card Reader.indicates Keyboard.indicates 1442 Card Punch,Model 5.indicates Disk Storage.indicates 1132 Printer.indicates 1627 Plotter.indicates Unformatted DiskI/O Area.The Phase Area is <strong>the</strong> area into which <strong>the</strong> variousphases of <strong>the</strong> compiler are read by <strong>the</strong> ROL subroutine.The size of <strong>the</strong> Phase Area is determined by<strong>the</strong> size of <strong>the</strong> largest phase of <strong>the</strong> compiler.Each phase, when loaded into <strong>the</strong> Phase Area,overlays <strong>the</strong> preceding phase. There are two phases,however, that are exceptional in that <strong>the</strong>y are loadedat some location o<strong>the</strong>r than <strong>the</strong> Phase Area origin.The ROL subroutine in phase 1 is loaded into highaddressedstorage by phase 1 so that it occupiesinitially <strong>the</strong> position it will occupy throughout <strong>the</strong>compilation. The control record analysis portionof phase 1 is loaded into <strong>the</strong> String Area. This portionof <strong>the</strong> phase is in use only until <strong>the</strong> FORTRANcontrol records have been processed and is overlaidby <strong>the</strong> source statements. Phase 27, <strong>the</strong> RecoveryPhase, which is executed after <strong>the</strong> object programhas been produced, is also read into <strong>the</strong> String Area.STRING AREADuring compilation <strong>the</strong> String Area contains both <strong>the</strong>statement string and <strong>the</strong> Symbol Table. The statementstring is built by <strong>the</strong> Input Phase in an ascendingchain beginning in <strong>the</strong> low-addressed words of<strong>the</strong> String Area. The Symbol Table is built during<strong>the</strong> compilation process in a descending chain beginningin <strong>the</strong> high-addressed words of <strong>the</strong> StringArea.The statement string expands and contracts as itis massaged during <strong>the</strong> compilation process. TheSymbol Table expands as items are removed from<strong>the</strong> statement string and added to <strong>the</strong> Symbol Table.In addition, some phases move <strong>the</strong> entire statementstring as far as possible toward <strong>the</strong> Symbol Table.The last statement of <strong>the</strong> string <strong>the</strong>n resides nextto <strong>the</strong> last Symbol Table entry. As <strong>the</strong> phase operateson <strong>the</strong> statement string, now referred to as<strong>the</strong> input string, it is rebuilt in <strong>the</strong> low-addressedend of <strong>the</strong> String Area. The rebuilt string is referredto as <strong>the</strong> output string. This procedure allowsfor expansion of <strong>the</strong> statement string.17 DFCNT The number of files defined.Section 11. FORTRAN Compiler 77


If at any time during <strong>the</strong> compilation an entrycannot be made to <strong>the</strong> statement string or <strong>the</strong> SymbolTable due to <strong>the</strong> lack of sufficient storage, an overlaperror condition exists. In <strong>the</strong> event of such an overlapcondition, <strong>the</strong> remaining compilation is bypassedand an error message is printed (see CompilationErrors). Ei<strong>the</strong>r <strong>the</strong> size of <strong>the</strong> source program or<strong>the</strong> number of symbols used must be decreased, or<strong>the</strong> program must be compiled on a machine of largerstorage capacity.SYMBOL TABLEThe Symbol Table contains entries for variables,constants, statement numbers, various compilergeneratedlabels, and compiler-generated temporarystorage locations.The first entry of <strong>the</strong> Symbol Table occupies <strong>the</strong>three highest-addressed words of <strong>the</strong> String Area,1. e. , <strong>the</strong> 3 words just below <strong>the</strong> first word of <strong>the</strong>FORTRAN Communications Area. The second entryis positioned in <strong>the</strong> lower-numbered words adjacentto <strong>the</strong> first entry, etc.During <strong>the</strong> initialization of <strong>the</strong> Symbol Table inphase 1, three words are reserved for <strong>the</strong> firstSymbol Table entry. This entry is not made, however,until phase 3. From this point <strong>the</strong> size of <strong>the</strong>Symbol Table varies from phase to phase until itachieves its largest size in phase 18. Its size always.includes <strong>the</strong> three words reserved for <strong>the</strong> nextSymbol Table entry.During phases 3 through 18, <strong>the</strong> Symbol Table containsvariables, constants, and statement numbers.Information for <strong>the</strong>se entries has been removed from<strong>the</strong> statement string and has been replaced by <strong>the</strong>address of <strong>the</strong> ID word of <strong>the</strong> corresponding SymbolTable entry. Also, <strong>the</strong> Symbol Table contains <strong>the</strong>various compiler•generated labels and temporarystorage locations used in compilation.During <strong>the</strong> output phases, 19 through 26, <strong>the</strong>seentries in <strong>the</strong> Symbol Table are replaced by objectprogram addresses that are inserted into <strong>the</strong> objectcoding by phase 26.Format<strong>All</strong> entries in <strong>the</strong> Symbol Table consist of threewords -- an ID word and two Name-Data words.The entries for dimensioned variables are exceptional,however, in that <strong>the</strong>y are six-word entries, <strong>the</strong>additional three words containing <strong>the</strong> dimensioninformation.The ID word occupies <strong>the</strong> lowest-addressed wordof <strong>the</strong> three word entry. The Name-Data wordsoccupy <strong>the</strong> two higher-addressed words.A typical three-word entry is illustrated in <strong>the</strong>following example of <strong>the</strong> entry for <strong>the</strong> integer constant290.ID Word Data Word 1 Data Word 22 9 0 blank blank111000000000000001011001011100111010000000000000000 ILowest-Addressed Highest-AddressedWordWordEntry in hexadecimal form —E000 65CE 0000The entry for <strong>the</strong> subprogram name COUNT wouldappear as:ID Word Name Word 1 Name Word 2COUN T1000000001000000011000011010110100111000101011000111Lowest-Addressed Highest-AddressedWordWordEntry in hexadecimal form - C080 86B4 C56378


ID WordThe layout of <strong>the</strong> Symbol Table ID word is given inTable 4. The ID word is formed when <strong>the</strong> entry isplaced in <strong>the</strong> Symbol Table.Table 4. The Contents of <strong>the</strong> FORTRAN Symbol Table ID WordBitPosition0 1 - Constant0 - VariableStatus and Meaning1 1 - Integer0 - Real2 1 - COMMONName-Data WordsThe Name-Data words of Symbol Table entries have<strong>the</strong> following format:3-4 01 - One dimension10 - Two dimensions11 - Three dimensions5 1 - Statement function parameter/dummy argument6 1 - Statement number7 1 - Statement function nameWord BitContents8 1 - Subprogram name9 1 - FORMAT statement number1 0 0, if <strong>the</strong> following 15 bits contain<strong>the</strong> first half of a constant; 1, if<strong>the</strong> following 15 bits contain anythingo<strong>the</strong>r than <strong>the</strong> first half of aconstant.1-15 First 15 bits of <strong>the</strong> 30-bit SymbolTable entry2 0 Same as bit 0 of word 11-15 Second 15 bits of <strong>the</strong> 30-bit SymbolTable entry10 1 - Referenced statement number or definedvariable11 1 - External12 1 - Generated temporary storage location (GT)13 1 - Subscript-generated temporary variable (SGT)14 1 - <strong>All</strong>ocated variable15 Not UsedThree words are always used for <strong>the</strong> dimensioninformation regardless of <strong>the</strong> number of dimensions.For one-dimensional arrays, all three dimensionwords contain <strong>the</strong> integer constant that specifies <strong>the</strong>dimension of <strong>the</strong> array. For example, <strong>the</strong> entry forarray ARRAY (10) would appear as:Dimension Information Array Name10 I 10 I 10 ID WorcDimensioned EntriesLowest- Highest-AddressedAddressedWordWordThe Symbol Table entry for a dimensioned variablerequires six words: two for <strong>the</strong> array name, onefor <strong>the</strong> ID word, and three for <strong>the</strong> dimension information.The dimension information occupies <strong>the</strong>three lowest-addressed words, <strong>the</strong> ID word occupies<strong>the</strong> next higher-addressed word, and <strong>the</strong> Name-Datawords occupy <strong>the</strong> two highest-addressed words.For two-dimensional arrays, <strong>the</strong> first (highestaddressed)dimension word contains <strong>the</strong> integerconstant of <strong>the</strong> first dimension; <strong>the</strong> middle andlast (lowest-addressed) dimension words bothcontain <strong>the</strong> product of <strong>the</strong> first and second dimensioninteger constants. Thus, <strong>the</strong> dimension informationfor array B(5,15) appears as:Section 11. FORTRAN Compiler 79


Dimension Information Array Name75 I 75 1 5 ID WordFor three-dimensional arrays, <strong>the</strong> first dimensionword contains <strong>the</strong> integer constant of <strong>the</strong> firstarray dimension; <strong>the</strong> middle dimension word contains<strong>the</strong>, product of <strong>the</strong> first and second dimensioninteger constants; <strong>the</strong> third dimension word contains<strong>the</strong> product of <strong>the</strong> first, second, and thirdinteger constants of <strong>the</strong> array dimensions. The dimensioninformation for array C(9,9,9) appears as:Dimension Information Array Name729 81 9 ID Word .<strong>the</strong> number of words used to store that statement,including <strong>the</strong> ID word and statement terminator.The statement type codes, shown in Table 5, areadded in <strong>the</strong> Classifier Phase (except for FORMATstatements).Table S. FORTRAN Statement ID Word Type CodesCodeStatement Types00000 Arithmetic00001 BACKSPACE00010 END00011 END FILE00100 SUBROUTINE00101 REWIND00110 CALL00111 COMMONSTATEMENT STRINGThe source statements are read by <strong>the</strong> Input Phase,converted to EBCDIC, and stored in core storage.The first statement is stored starting at $ZEND, andeach succeeding statement is placed adjacent to <strong>the</strong>previous statement, thus forming <strong>the</strong> source statementsinto a string. The area within which <strong>the</strong>source statements are stored is referred to as <strong>the</strong>String Area.01000 DIMENSION01001 REAL01010 INTEGER01011 DO01100 FORMAT01101 FUNCTION01110 GO TO01111 IF10000 RETURN10001 WRITEID WordFor identification purposes, as each statement isplaced in <strong>the</strong> String Area, an ID word is added at<strong>the</strong> low-address end of each statement. The IDword has <strong>the</strong> following format:Bit Contents0-4 Statement type code5-13 Statement Norm14 Varied; used for interphasecommunication15 1, if statement is numbered; o<strong>the</strong>rwise, 0The Norm is <strong>the</strong> only portion of <strong>the</strong> ID word completedby <strong>the</strong> Input Phase. The Norm is a count of10010 READ10011 PAUSE10100 Error10101 EQUIVALENCE10110 CONTINUE10111 STOP11000 DO test11001 EXTERNAL11010 Statement Function11011 Internal Output Format11100 CALL LINK, CALL EXIT11101 FIND11110 DEFINE FILE11111 DATA80


Statement BodyEach statement, after being converted to EBCDIC,is packed two EBCDIC characters per word. Thisis <strong>the</strong> form in which <strong>the</strong> statements are initiallyadded to <strong>the</strong> statement string.Statement TerminatorStatements are separated by means of <strong>the</strong> statementterminator character, a semicolon. The statementterminator character indicates <strong>the</strong> end of <strong>the</strong> statementbody. This character remains in <strong>the</strong> stringentry throughout <strong>the</strong> compilation process for thatparticular statement type.<strong>All</strong> statements in <strong>the</strong> statement string carry <strong>the</strong>statement terminator except for FORMAT and CON-TINUE statements and compiler-generated errorstatements. Error statements inserted into <strong>the</strong>string by <strong>the</strong> compiler are inserted without <strong>the</strong>terminator character.COMPILATION ERRORSWhen an error is detected during <strong>the</strong> compilationprocess, <strong>the</strong> statement in error is replaced by anappropriate error statement in <strong>the</strong> statement string.Each error statement is added during <strong>the</strong> phase inwhich <strong>the</strong> corresponding error is detected and <strong>the</strong>procedure is <strong>the</strong> same in all phases.1. The type code in <strong>the</strong> erroneous statement's IDword is changed to <strong>the</strong> error type.2. The statement body is replaced by <strong>the</strong> appropriateerror number. The statement number,if present, is retained in <strong>the</strong> Symbol Table and<strong>the</strong> Symbol Table address is retained in <strong>the</strong>error statement on <strong>the</strong> string.3. The statement string is closed up, effectivelydeleting <strong>the</strong> erroneous statement from <strong>the</strong> statementstring.Error statements in <strong>the</strong> statement string are exceptionalin that <strong>the</strong>y do not carry <strong>the</strong> statementterminator character (semicolon).Error indications are printed at <strong>the</strong> conclusion ofcompilation. If a compilation error has occurred,<strong>the</strong> messageI COMPILATION DISCONTINUEDis printed and no object program is placed in WorkingStorage.Error messages appear in <strong>the</strong> following format:CAA ERROR AT STATEMENT NUMBERXXXXX+YYYwhere C indicates <strong>the</strong> FORTRAN Compiler, AA is <strong>the</strong>error number, XXXXX is <strong>the</strong> last encounteredstatement number, and YYY is <strong>the</strong> count of statementsfrom <strong>the</strong> last statement number.There are also error messages in <strong>the</strong> formatCAA ZZZZZZZZZZ...where ZZZZ Z.... is an explanation of <strong>the</strong> errorcondition.See <strong>the</strong> <strong>Program</strong>ming and Operator's Guide publicationfor a list of <strong>the</strong> FORTRAN error numbers,<strong>the</strong>ir explanation, and <strong>the</strong> phases during which <strong>the</strong>yare detected.In addition to <strong>the</strong> errors, undefined variables arelisted by name at <strong>the</strong> end of compilation. Undefinedvariables inhibit <strong>the</strong> output of <strong>the</strong> object program.COMPILER I/0The compiler uses <strong>the</strong> DISKZ . subroutine for all diskI/O operations required during compilation.The compiler uses <strong>the</strong> principal input device subroutineto read <strong>the</strong> control records and source statementsto be compiled, and <strong>the</strong> principal input conversionsubroutine to convert <strong>the</strong> source input toEBCDIC.The principal print device subroutine is used toperform any printing required during <strong>the</strong> compilation.FETCHING COMPILER PHASESThe ROL subroutine loaded into high-addressed storageas part of phase 1, obtains from each phase <strong>the</strong>word count and sector address of <strong>the</strong> next phase to beloaded. This subroutine <strong>the</strong>n reads <strong>the</strong> next compilerphase into core storage and transfers control to it.If a small change is made to <strong>the</strong> ROL subroutine,it also examines <strong>the</strong> Console Entry switches. Ifa request to dump is indicated in <strong>the</strong> switches, itSection 11. FORTRAN Compiler 81


calls <strong>the</strong> <strong>System</strong> Core Dump program via <strong>the</strong> $DUMPentry point in <strong>the</strong> Skeleton Supervisor to dump <strong>the</strong>statement string, <strong>the</strong> Symbol Table, and <strong>the</strong> FOR-TRAN Communications Area. At <strong>the</strong> completion of<strong>the</strong> dump <strong>the</strong> ROL subroutine regains control. It<strong>the</strong>n fetches and transfers control to <strong>the</strong> next phase.PHASE DESCRIPTIONSPHASE 1• Reads <strong>the</strong> control records; sets <strong>the</strong> correspondingindicators in <strong>the</strong> FORTRAN CommunicationsArea.• Reads <strong>the</strong> source statements; stores <strong>the</strong>m in <strong>the</strong>String Area; precedes each statement with apartially completed ID word.• Checks for a maximum of five continuation recordsper statement.• Lists <strong>the</strong> source program, if requested.Phase 1 is composed of two major segments; <strong>the</strong>first analyzes <strong>the</strong> control records and <strong>the</strong> secondinputs <strong>the</strong> source statements. The control recordanalysis portion of phase 1 is loaded into <strong>the</strong> StringArea, while <strong>the</strong> statement input portion is loaded at<strong>the</strong> normal Phase Area origin. The control recordanalysis subroutines, <strong>the</strong>refore, remain in storageuntil <strong>the</strong> processing of <strong>the</strong> control records is completed.They are <strong>the</strong>n overlaid by <strong>the</strong> source statementsas <strong>the</strong> string is built by <strong>the</strong> statement inputportion.Errors DetectedThe errors detected by phase 1 are: 1 and 2.PHASE 2• Determines <strong>the</strong> statement type for each statement.inserts <strong>the</strong> type code into <strong>the</strong> statement ID word.• Places <strong>the</strong> statement terminator character (semicolon)at <strong>the</strong> end of each statement.• Converts subprogram names longer than fivecharacters to five-character names.• Converts FORTRAN-supplied subprogram namesaccording to <strong>the</strong> specified precision.• Generates <strong>the</strong> calls and parameters that initializeI/O subroutines during execution of <strong>the</strong> object program,if <strong>the</strong> IOCS control indicators are present.According to <strong>the</strong> indicators set in <strong>the</strong> IOCS word(word 16) of <strong>the</strong> FORTRAN Communications Area by<strong>the</strong> previous phase, phase 2 generates <strong>the</strong> requiredcalls to FORTRAN I/O. If <strong>the</strong> Unformatted Disk I/OArea indicator is on, a 'LISP UFIO' followed by itsparameter is inserted into <strong>the</strong> string. If <strong>the</strong> Diskindicator is on, a 'LIEF SDFIO' followed by its parameteris inserted into <strong>the</strong> statement string. If anyo<strong>the</strong>r indicator in <strong>the</strong> IOCS word is on, phase 2 inserts<strong>the</strong> 'LIBF SFIO' followed by its parametersinto <strong>the</strong> statement string. The table of device servicingsubroutines (ISSs) is also built and inserted.Phase 2, beginning with <strong>the</strong> first statement of <strong>the</strong>string, checks each statement in order to classify itinto one of <strong>the</strong> 31 statement types. FORMAT statements,already having <strong>the</strong> type code, and compilergeneratederror statements are not processed by thisphase. Each statement name is compared to a tableof valid FORTRAN statement names. Each recognizedstatement name is removed from <strong>the</strong> stringand <strong>the</strong> corresponding ID type code is inserted into <strong>the</strong>statement ID word.Arithmetic statements are detected by location of<strong>the</strong> equal sign (=) followed by an operator o<strong>the</strong>r thana comma. Because of this method of detection,arithmetic and statement function statements bothcarry <strong>the</strong> arithmetic statement ID type until phase 8,which distinguishes <strong>the</strong>m.Names within <strong>the</strong> statement body are convertedinto name code and stored. Names with only one ortwo characters are stored in one word.Phase 2 converts all paren<strong>the</strong>ses, commas, etc. ,into special operator codes. Each operator is storedin a separate word. Also, each arithmetic operator(+, /, *, **) is stored in a separate word, and astatement terminator character (semicolon) is placedafter each statement, except for CONTINUE andFORMAT statements and compiler-generated errorstatements.NOTE: The string words containing name or constantcharacters have a one in bit position 0. Bit82


position 0 of string words containing arithmetic operatorcharacters has a zero.The standard FORTRAN-supplied subprogramnames specified in <strong>the</strong> source program are changed,if necessary, to reflect <strong>the</strong> standard or extendedprecision option specified in <strong>the</strong> control records.Also, <strong>the</strong> six-character subprogram names ofSLITET, OVERFL, and SSWTCH, which are allowedso as to be compatible with <strong>System</strong>/360 FORTRAN,are changed to SLITT, OVERF, and SSWTC, respectively.The word FUNCTION appearing in a Type statementand <strong>the</strong> statement numbers of DO statementsare isolated by <strong>the</strong> Classifier Phase. Isolation isaccomplished by placing a one-word special operator(colon) just after <strong>the</strong> word or name to be isolated.This process aids later phases in detecting <strong>the</strong>sewords and numbers.Errors DetectedThe error detected by phase 2 is: 4.ISUBROUTINE or FUNCTION statementType statements (REAL, INTEGER)EXTERNAL statementsDIMENSION statementsCOMMON statementsEQUIVALENCE statementsA check is also made to ensure that all DATA andDEFINE FILE statements appear within <strong>the</strong> Specificationstatement group. Placement of <strong>the</strong>se twostatement types is optional; however, <strong>the</strong>y must notbe intermixed with EQUIVALENCE statements.The SORF word (word 14) in <strong>the</strong> FORTRAN CommunicationsArea is appropriately modified if aSUBROUTINE or FUNCTION statement is present.The second pass of phase 3 scans <strong>the</strong> statementstring for statements with statement numbers. Eachunique statement number is placed into <strong>the</strong> SymbolTable and <strong>the</strong> address of <strong>the</strong> Symbol Table entry isplaced into <strong>the</strong> string where <strong>the</strong> statement numberpreviously resided.<strong>All</strong> statements having statement numbers previouslyadded to <strong>the</strong> Symbol Table (duplicates of o<strong>the</strong>rstatement numbers) are in error.PHASE 3• Checks <strong>the</strong> subprogram and Specification statementsfor <strong>the</strong> proper order; removes any statementnumbers from <strong>the</strong>se statements.• Checks to ensure that statements following IF,GO TO, CALL LINK, CALL EXIT, RETURN,and STOP statements have statement numbers.• Removes CONTINUE statements that do not havestatement numbers.• Checks <strong>the</strong> statements for statement numbers;checks <strong>the</strong> Symbol Table for a previous entry of<strong>the</strong> same statement number.• Places <strong>the</strong> statement number into <strong>the</strong> SymbolTable; places <strong>the</strong> address of <strong>the</strong> Symbol Tableentry into <strong>the</strong> string.Phase 3 makes two passes through <strong>the</strong> statementstring. The first pass checks to ascertain <strong>the</strong> subprogramand Specification statements are in <strong>the</strong> followingsequence:Errors DetectedThe errors detected by phase 3 are: 5, 6, and 9.PHASE 4• Places COMMON statement variables into <strong>the</strong>Symbol Table; includes dimension information in<strong>the</strong> Symbol Table entries, if present; removes <strong>the</strong>statement from <strong>the</strong> string.• Checks for a SUBROUTINE or FUNCTION statement;places <strong>the</strong> names and dummy argumentsof <strong>the</strong> SUBROUTINE or FUNCTION statement into<strong>the</strong> Symbol Table; deletes <strong>the</strong> statement from<strong>the</strong> statement string.• Checks REAL and INTEGER statements for <strong>the</strong>word FUNCTION.Phase 4 is a two-pass phase. The first pass processesCOMMON statements; <strong>the</strong> second pass processesa SUBROUTINE or FUNCTION statement, includinga FUNCTION designated in a REAL orINTEGER statement.Section 11. FORTRAN Compiler 83


Pass 1 of phase 4 examines all COMMON statements,checking all variable names for validity.Valid, unique variable names found in COMMONstatements are placed into <strong>the</strong> Symbol Table. Duplicatevariable names are in error.When dimension information is present in aCOMMON statement, <strong>the</strong> Symbol Table entry for <strong>the</strong>dimensioned variable is expanded to six words, <strong>the</strong>dimension constants are changed to binary format,and this binary information is inserted into <strong>the</strong>Symbol Table entry. The Symbol Table ID word isupdated to indicate <strong>the</strong> presence of <strong>the</strong> dimensioninformation and <strong>the</strong> level of dimensioning.When all <strong>the</strong> variables in a COMMON statementhave been processed, it is removed from <strong>the</strong> string.The second pass of phase 4 checks for a SUBROU-TINE or FUNCTION statement among <strong>the</strong> Specificationstatements. If ei<strong>the</strong>r is found, <strong>the</strong> SORF word(word 14) in <strong>the</strong> FORTRAN Communications Area ismodified to indicate whichever is applicable. Thesubprogram name is checked for validity. If valid,<strong>the</strong> name is added to <strong>the</strong> Symbol Table and <strong>the</strong> addressof <strong>the</strong> Symbol Table entry is placed into <strong>the</strong>FNAME words (words 12-13) in <strong>the</strong> FORTRAN CommunicationsArea. The subprogram parameters arechecked and, if valid, <strong>the</strong>y are added to <strong>the</strong> SymbolTable and <strong>the</strong> statement is removed from <strong>the</strong> string.The first REAL and INTEGER statements areexamined for <strong>the</strong> presence of <strong>the</strong> word FUNCTION.If <strong>the</strong> FUNCTION specification is found, <strong>the</strong> REALor INTEGER statement is processed in <strong>the</strong> samemanner as a FUNCTION statement, except that <strong>the</strong>subprogram mode is specified explicitly by <strong>the</strong>statement type.Errors ]DetectedThe errors detected by phase 4 are: 7, 8, 10, 11, 12,12, 13, 14, and 15.PHASE 5• Places DIMENSION statement variables into <strong>the</strong>Symbol Table; places dimension information into<strong>the</strong> Symbol Table entries; removes <strong>the</strong> statementfrom <strong>the</strong> string.• Places variables and dimension information fromREAL, INTEGER, and EXTERNAL statementsinto <strong>the</strong> Symbol Table.• Indicates in <strong>the</strong> Symbol Table ID word <strong>the</strong>variable's mode (real or integer).• Checks EXTERNAL statements for <strong>the</strong> namesIFIX and FLOAT, which are not allowed.The processing of phase 5 is done in two passes.The first pass analyzes DIMENSION statements. Eachvariable name found in a DIMENSION statement isfirst checked for validity. If <strong>the</strong> name is valid, <strong>the</strong>Symbol Table is searched for a duplicate. If no duplicateis found, <strong>the</strong> variable name, along with its dimensioninformation, is added to <strong>the</strong> Symbol Table.If a duplicate is found that has not yet been dimensioned,<strong>the</strong> dimension information from <strong>the</strong> variablename is added to <strong>the</strong> existing Symbol Table entry. Ifa duplicate is found that has already been dimensioned,<strong>the</strong> variable name is in error.In a subprogram compilation, a comparison ismade to ensure that no variable name duplicates <strong>the</strong>subprogram name.The second pass of phase 5 examines <strong>the</strong> REAL,INTEGER, and EXTERNAL statements found in <strong>the</strong>statement string. Each variable found in <strong>the</strong>se typesof statements is checked for validity. Valid variablesare compared to <strong>the</strong> Symbol Table entries. Thosevariables duplicated in <strong>the</strong> Symbol Table as <strong>the</strong> resultof prior COMMON or DIMENSION statement entriesare in error. Those not equated to Symbol Tableentries are added to <strong>the</strong> Symbol Table in <strong>the</strong> samemanner as in <strong>the</strong> first pass of this phase.Errors DetectedThe errors detected by phase 5 are: 7, 8, 15, 17,18, 19, 20, 21, and 22.PHASE 6• Scans all IF, CALL, and arithmetic statementsfor valid real constants.• Converts real constants to standard or extendedprecision format, as specified.Each valid real constant encountered in an arithmeticIF, or CALL statement is converted to binary in <strong>the</strong>precision indicated by <strong>the</strong> FORTRAN CommunicationsArea indicators. The Symbol Table is checkedfor a previous entry of <strong>the</strong> constant. If a previous84


entry is found, no new entry is made. The constantoperator, a special code Indicating that <strong>the</strong> followingword is <strong>the</strong> Symbol Table address of a constant,followed by <strong>the</strong> Symbol Table address of <strong>the</strong> constantalready entered is inserted into <strong>the</strong> statementstring in place of <strong>the</strong> constant.If no previous entry in <strong>the</strong> Symbol Table is found,<strong>the</strong> converted constant is added to <strong>the</strong> Symbol Table.The constant operator along with <strong>the</strong> Symbol Tableaddress replaces <strong>the</strong> constant in <strong>the</strong> statement string.The statement string is closed up following <strong>the</strong> alterationof <strong>the</strong> string.Errors DetectedThe following errors are detected by phase 6: 23and 50.PHASE 7• Checks <strong>the</strong> syntax of DEFINE FILE, CALL EXIT,and CALL LINK statements.• Determines <strong>the</strong> defined file specifications.<strong>All</strong> variable names in DEFINE FILE, CALL LINK,and CALL EXIT statements are checked for validityand are added to <strong>the</strong> Symbol Table. <strong>All</strong> valid constantsare converted to binary and are added to <strong>the</strong>Symbol Table.Phase 7 checks to ensure that a DEFINE FILEstatement does not appear in a subprogram.This phase computes <strong>the</strong> file definition specifications,that is, a DEFINE FILE Table consisting ofone entry for each unique file. Each entry consistsof <strong>the</strong> file number, <strong>the</strong> number of records per file,<strong>the</strong> record length, <strong>the</strong> associated variable, a blankword for insertion of <strong>the</strong> file's sector address at <strong>the</strong>time <strong>the</strong> program is loaded for execution, <strong>the</strong> numberof records per sector, and <strong>the</strong> number of diskblocks per file. A count is kept in <strong>the</strong> DFCNT word(word 17) in <strong>the</strong> FORTRAN Communications Areaof <strong>the</strong> number of files defined.Errors DetectedThe errors detected by phase 7 are: 3, 70, 71, 72,73 and 74.PHASE 8• Places variables and integer constants into <strong>the</strong>Symbol Table.• Places parameters from statement function statementsinto <strong>the</strong> Symbol Table.• Replaces operators with pointers to <strong>the</strong> ForcingTable to be used in phase 16.• Converts <strong>the</strong> left paren<strong>the</strong>sis of subscripts to aspecial dimension indicator.Phase 8 checks <strong>the</strong> variable names found in <strong>the</strong> statementstring for validity. Valid variables are addedto <strong>the</strong> Symbol Table. A second check is made to ensurethat all variable names conform to <strong>the</strong> implicitor explicit mode specifications (real and integer).Integer constants are also added to <strong>the</strong> Symbol Table,provided <strong>the</strong>y are unique. However, integer constantsthat are found in subscript expressions arenot added to <strong>the</strong> Symbol Table until a later phase.When adding names and constants to <strong>the</strong> SymbolTable, phase 8 replaces <strong>the</strong>m in <strong>the</strong> string by <strong>the</strong>address of <strong>the</strong>ir respective Symbol Table entries,except if <strong>the</strong>y are found in subscript expressions.The address replacing a constant or name is <strong>the</strong>address of <strong>the</strong> ID word of <strong>the</strong> Symbol Table entryfor that constant or name.Internal statement numbers are located in <strong>the</strong>Symbol Table and are replaced by <strong>the</strong> address of <strong>the</strong>ircorresponding Symbol Table entries; those statementnumbers not found in <strong>the</strong> Symbol Table (i. e. ,not previously entered) are in error.Phase 8 changes <strong>the</strong> ID word of <strong>the</strong> statementfunction statement, until now identical to that of anarithmetic statement, to <strong>the</strong> statement function type.Also, <strong>the</strong> statement function name and <strong>the</strong> parametersof statement functions are added to <strong>the</strong> SymbolTable. These entries in <strong>the</strong> Symbol Table are distinguishedby <strong>the</strong>ir lack of a sign bit in <strong>the</strong> secondword of <strong>the</strong> name.During phase 8, <strong>the</strong> left paren<strong>the</strong>sis on subscriptsis changed to a special left paren<strong>the</strong>sis operator thatindicates <strong>the</strong> order of <strong>the</strong> dimension that follows.This phase also converts all operators, exceptthose in subscript expressions, from <strong>the</strong> 6-bitEBCDIC representation to a pointer value. Thispointer value is derived from <strong>the</strong> Forcing Table. Theconversion is done in preparation for <strong>the</strong> Scan Phase,Section 11. FORTRAN Compiler 85


phase 16, when an arithmetic operational hierarchywill be determined through <strong>the</strong>se pointer values.Errors DetectedThe following errors are detected in phase 8: 7, 24,25, 26, and 43.PHASE 9• Checks <strong>the</strong> DATA statement for correct syntaxand valid variable references.• Reformats <strong>the</strong> DATA statement into a string ofdata groups.Each variable in <strong>the</strong> DATA statement is checked toensure that it has been previously entered into <strong>the</strong>Symbol Table. A check is also made to ensure thata subscript expression for a DATA statement variabledoes not exceed <strong>the</strong> level of dimensioning indicatedin <strong>the</strong> Symbol Table entry for <strong>the</strong> referencedvariable.Phases 9 converts <strong>the</strong> DATA statement into <strong>the</strong>following form:The constant may be one word in length (an integer),two or three words in length (a real number in standardor extended precision), or n words in length (aliteral).Each data pointer has <strong>the</strong> following form:Word Bit Contents1 0 11 0, if no displacement word follows1, if a displacement word follows2 0, non-externally subscriptedvariable1, externally subscripted variable3-4 Zeros5-15 Symbol Table address of <strong>the</strong> variable2 0-15 Displacement word (present only ifvariable is subscripted)A displacement word follows data pointers to subscriptedvariables; its contents are <strong>the</strong> adjusted subscriptoffset.The statement terminator is removed from <strong>the</strong>DATA statement in phase 9.Errors DetectedIDWord Data Group 1 Data Group 2 I'Data Group nPhase 9 detects <strong>the</strong> following errors: 75, 76, 77,78, 79, 80, and 82.PHASE 10Each data group has <strong>the</strong> following form:Data Data DataH eader Constant Pointer 1 Pointer 2 J-n• Converts FORMAT statements into a chain offormat specifications for interpretation by <strong>the</strong>FORTRAN I/O subroutines.Data• Converts <strong>the</strong> Apostrophe (') type format toPointer n_J H type.Each data header has <strong>the</strong> following form:Bits Contents0 01-12 Duplication factor13-15 Length of <strong>the</strong> following constantIn decomposing <strong>the</strong> FORMAT statement, phase 10converts each format type into a format specification(see Table 6). Where required, <strong>the</strong> Field Repeat,Group Repeat, and REDO counts are computed andinserted. At <strong>the</strong> completion of phase 10, <strong>the</strong>FORMAT statement is simply a chain of formatspecifications.The conversion of a FORMAT statement is shownbelow:86


9 9 9 0 A ( 3 H A F. 3 4' 0I 8 7 A 5 6 I 5 3 H X F 9IDWord 999 14,3 A,P =,b F,3,6 E,4,10 / 1,8RR,4 -3 T,1 H,10 b,A N,S W,E R,b I,S H,3 X,Y =,b F,4,9 RR,16Table 6. Conversion of FORTRAN FORMAT SpecificationsFormatType(input)Format Specification (output)4 Bits 5 Bits 7 Bits16 BitsEFAHT/Group RepeatField Repeat0000 DD WW0001 DO WW0010 WW0011 WW0100 WW0101 WW0110 CC0111 Undefined1000 NO1001 NO1010 Not UsedRR 1REDO1011RRDD (decimal width)WW (total field width)CC (carriage control)Maximum = 127 (used only in E andF type formats).Maximum = 127 in E and F type formats,145 in I, A, X, and H typeformats.Positive count of <strong>the</strong> number ofcharacter positions to be skipped.NO (number)RR 1 (group repeat)RR (REDO)Positive count of <strong>the</strong> number ofrepetitions to be made of a field orgroup.Negative count of <strong>the</strong> number of wordsback to <strong>the</strong> first specification of a groupto be repeated.Positive count of <strong>the</strong> number of wordsback to <strong>the</strong> rightmost left paren<strong>the</strong>sis in<strong>the</strong> statement.Errors DetectedThe following errors are detected in phase 10: 27,28, 29, and 30.PHASE 11• Calculates <strong>the</strong> constants needed for object programsubscript computation.• Sets up dummy arguments for <strong>the</strong> insertion ofvariables in <strong>the</strong> object coding.Phase 11 bypasses all FORMAT, CONTINUE, andcompiler-generated error statements. <strong>All</strong> o<strong>the</strong>rstatements are scanned but only those statementsthat contain <strong>the</strong> special left paren<strong>the</strong>sis operatorinserted by phase 8 are operated upon.The subscripting information for each variableis checked for validity.Section 11. FORTRAN Compiler 87


Phase 11 <strong>the</strong>n calculates <strong>the</strong> subscript constantD4 and, depending on <strong>the</strong> dimensioning level, <strong>the</strong>constants D1, D2 , and D 3 . (See below for <strong>the</strong>method of derivation of <strong>the</strong>se constants.)These subscript constants are inserted into <strong>the</strong>subscript expression with <strong>the</strong> subscript indices.The right and left paren<strong>the</strong>sis enclosing <strong>the</strong> subscriptexpression are <strong>the</strong>n changed to special operators tobe used in a later phase.Calculation of <strong>the</strong> Subscript ConstantsAssuming <strong>the</strong> maximum subscript formwherec*v+c'v represents an unsigned, nonsubsGripted, integervariable and c and c' represent unsigned integerconstants,phase 11 computes <strong>the</strong> subscript constants (D-factors)as follows:For a 1-dimension array --A(C i *I + C 2)D 1= C 1*SD 4= (C 2- 1) *SFor a 2-dimension array --A(Ci *I + C 2 , C3 *J + C 4)D 1= C 1*SD 2= L * C 3* SD4 = [ (C2 - 1) L * (C 4 - 1)1 *SFor a 3-dimension array --A(C 1 *I + C2, C3 * J + C4, C 5*K + C 6)D i= C 1*SD 2= L * C 3*SD 3= L * M * C 5* SD 4 = [(C 2 - 1) + L * (C 4 - 1) + L * M * (C ii - 1)I*SIn <strong>the</strong> above formulas,L = first dimension factorM = second dimension factorS = size in words of <strong>the</strong> array entries= 1 for one-word integers= 2 for standard precision= 3 for extended precisionC 1 and C 2 = constants in <strong>the</strong> first dimension valueC and C = constants in <strong>the</strong> second dimension3 4valueC and C = constants in <strong>the</strong> third dimension5 6valueI, J, and K are <strong>the</strong> subscript indices.Errors DetectedThe following errors are detected in phase 11: 31,32, 33, 34, and 35.PHASE 12• Checks <strong>the</strong> syntax of arithmetic, IF, CALL, andstatement function statements.• Checks statement function calls, including nestedcalls, for valid names and <strong>the</strong> correct number ofparameters.• Checks for <strong>the</strong> definition of variables; checks forvalid statement number references in IF statements.The syntax of all CALL statements is checked. Acall operator is inserted between <strong>the</strong> subprogramname and its dummy arguments for use in <strong>the</strong> ScanPhase, phase 16.During <strong>the</strong> analysis of statement function statementsa table is built containing <strong>the</strong> statement functionname and <strong>the</strong> number of parameters associated with88


that function. This table is used in analyzing statementfunction calls, including nested calls, to checkfor <strong>the</strong> proper number of parameters.The syntax of <strong>the</strong> record number expression inDisk READ/WRITE statements is checked. The rightparen<strong>the</strong>sis is changed to a colon operator whichfacilitates <strong>the</strong> scan of <strong>the</strong> Disk READ/WRITE statementin <strong>the</strong> following phase.PHASE 14• Checks for valid syntax in DO statements and innested DO loops.• Generates and inserts at <strong>the</strong> appropriate points<strong>the</strong> coding needed to perform <strong>the</strong> DO test.Errors DetectedThe following errors are detected in phase 12: 36,37, 38, 39, 40, 41, 42, and 43.• Checks <strong>the</strong> syntax of DO, CONTINUE, BACK-SPACE, REWIND, END FILE, STOP, PAUSE,and END statements.PHASE 13• Checks FIND, READ, WRITE, and GO TO statementsfor correct syntax, valid FORMAT statementreferences, and valid variables.• Detects implied DO loops in READ and WRITEstatements; generates <strong>the</strong> indicators necessaryfor later processing of <strong>the</strong> DO loop.When READ and WRITE statements are encounteredin a mainline program, a check is made for <strong>the</strong> presenceof IOCS indicators in <strong>the</strong> FORTRAN CommunicationsArea. <strong>All</strong> READ and WRITE statements in aSUBROUTINE or FUNCTION subprogram do notrequire <strong>the</strong> presence of IOCS indicators.READ, FIND, and WRITE statements are checkedfor valid variables and for proper syntax. READand WRITE statements are checked for a validFORMAT statement reference. Disk READ andWRITE statements are differentiated by means of <strong>the</strong>apostrophe (') separating <strong>the</strong> file number and recordnumber parameters. The appropriate disk or nondiskI/O operator is generated for and inserted intoeach READ or WRITE statement.READ and WRITE statements are also checkedfor implied DO loops. The necessary DO initializeand DO test operators are generated and inserted into<strong>the</strong> statement body.Errors DetectedThe following errors are detected in phase 13: 43,44, 45, 46, 47, 48, 49, 50, and 68.• Checks for a GO TO, IF, STOP, CALL LINK,CALL EXIT, or RETURN statement as <strong>the</strong> lastexecutable statement of <strong>the</strong> source program.BACKSPACE, END FILE, and REWIND statementsare checked for valid unit addresses. Valid unitaddresses are placed into <strong>the</strong> Symbol Table asinteger constants. BACKSPACE, END FILE, andREWIND statements are <strong>the</strong>n replaced on <strong>the</strong> statementstring by a generated LIBF followed by <strong>the</strong>Symbol Table address of <strong>the</strong> unit address. ThisSymbol Table address becomes an argument to<strong>the</strong> MBE.Statements which follow STOP statements arechecked to ensure that <strong>the</strong>y are numbered statements.<strong>All</strong> integers found in PAUSE and STOP statementsare checked to ensure that <strong>the</strong>y are not greater than9999. Valid integers are added to <strong>the</strong> Symbol Tableas integer constants.As <strong>the</strong> DO statements are analyzed for correctsyntax, phase 14 constructs a DO Table in <strong>the</strong> followingformat:Word Contents1 Index2 DO test statement number orGenerated Label3 Test value4 Increment5 DO range statementnumberSection 11. FORTRAN Compiler 89


A DO Table entry is made for each DO statementwhen it is detected. As <strong>the</strong> statements following<strong>the</strong> DO statement are scanned, <strong>the</strong> statement numbersare compared with <strong>the</strong> contents of word 5, <strong>the</strong>range limit, of <strong>the</strong> DO Table entries. When <strong>the</strong>range limit is found <strong>the</strong> DO test coding is insertedinto <strong>the</strong> statement string.The DO Table is built from low-to-high-addressedstorage. It is scanned, however, from high-to-lowaddressedstorage. In this manner, nested DO loopsthat violate range limits are detected.Errors DetectedThe following errors are detected in phase 14: 51,52, 53, 54, 55, 56, 57, 58, 59, 60, 61, and 62.PHASE :L5• Scans READ, WRTEE, IF, CALL, and arithmeticstatements for subscript expressions.• Optimizes subscript calculation by means of <strong>the</strong>Subscript Expression Table.• Generates SGTs (Subscript-generated temporarystorage locations) as necessary.Each unique subscript expression is placed into atable called <strong>the</strong> Subscript Expression Table. Eachentry in this table appears as follows:Word Contents1 D 42 I, first dimension subscript index3 D 14 J, second dimension subscript index5 D 26 K, third dimension subscript index7 D 38 /8010, if entry is not used/0010, if entry is used on this statement/0000, if entry was used on a previousstatementAlso, each unique variable of a subscript expressionis placed into a table called <strong>the</strong> Bound VariableTable.As each subscript expression is entered into <strong>the</strong>Subscript Expression Table, it is removed from <strong>the</strong>string. The subscripted variable is <strong>the</strong>n tagged withSGT indicator bits pointing to <strong>the</strong> Subscript ExpressionTable entry.An SGT (Subscript-generated temporary storagelocation) is generated for each entry made to <strong>the</strong> SubscriptExpression Table. The SGT is placed into anSGT Table. The SGT is also placed into <strong>the</strong> SymbolTable and <strong>the</strong> address of <strong>the</strong> Symbol Table entry isinserted into <strong>the</strong> statement in <strong>the</strong> string.For each subscript expression encountered, ascan is made of <strong>the</strong> Bound Variable Table. If one ormore of <strong>the</strong> variables in <strong>the</strong> subscript expression arenot located in <strong>the</strong> Bound Variable Table, <strong>the</strong> subscriptmust be recalculated. Thus, a unique entry is madeto <strong>the</strong> Subscript Expression Table for <strong>the</strong> expressionand an associated SGT is generated.If, however, all <strong>the</strong> variables of <strong>the</strong> subscriptexpression are located in <strong>the</strong> Bound Variable Table,<strong>the</strong> Subscript Expression Table is <strong>the</strong>n scanned todetermine if a duplicate subscript expression is alreadylocated in <strong>the</strong> table. If no equivalent is found,<strong>the</strong> subscript expression is added to <strong>the</strong> table as aunique entry and an associated SGT is generated.If a duplicate expression is found in <strong>the</strong> SubscriptExpression Table, <strong>the</strong> subscript expression is removedfrom <strong>the</strong> string and is replaced by a pointerto its duplicate in <strong>the</strong> Subscript Expression Table.Thus, identical subscript expressions share <strong>the</strong> sameindices of a common entry in <strong>the</strong> Subscript ExpressionTable and <strong>the</strong> same SGT.Whenever a variable is assigned a new value (i. e. ,appears to <strong>the</strong> left of <strong>the</strong> equal sign in an arithmeticexpression, in <strong>the</strong> argument list of a subprogram,etc.), that variable, if found in <strong>the</strong> Bound VariableTable, is removed from <strong>the</strong> table. This removalfrom <strong>the</strong> Bound Variable Table causes all entries in<strong>the</strong> Subscript Expression Table containing that variableto be removed. The associated SGTs are alsoremoved from <strong>the</strong> SGT Table but remain in <strong>the</strong> SymbolTable. The addresses in <strong>the</strong> string of <strong>the</strong> SGTsin <strong>the</strong> Symbol Table also remain.If a statement is encountered containing a subscriptexpression and having a statement number that isreferenced by some o<strong>the</strong>r statement, <strong>the</strong> entire SubscriptExpression Table is cleared and all subscripts,90


eginning with <strong>the</strong> subscript expression in <strong>the</strong> referencestatement, must be recalculated.The Subscript Expression Table is also clearedwhenever a DO statement is encountered. Followingsubscripts must be recalculated. Implied DO loops,as in READ and WRITE statements, cause only thoseentries involving <strong>the</strong> index of <strong>the</strong> implied DO to becleared. Only <strong>the</strong> subscripts involving that indexmust be recalculated.Errors DetectedThe following error is detected in phase 15: 63.PHASE 16• Converts all FIND, READ, WRITE, IF, GO TO,CALL, statement function, and arithmetic statementsinto a modified form of Polish notation.• Establishes <strong>the</strong> order of arithmetic operationalperformance.• Sets up <strong>the</strong> arguments for subroutine calls to begenerated.Phase 16 converts all READ, WRITE, GO TO, arithmetic,statement function, CALL, and IF statementsto a modified form of Polish notation. This conversionis accomplished through <strong>the</strong> use of a ForcingTable, strings, and an Interpreter.The Forcing Table is a table of 2-word entries.The first word contains <strong>the</strong> left and right forcingvalues for each operator. The first 8 bits constitute<strong>the</strong> left forcing value and <strong>the</strong> last 8 bits, <strong>the</strong> rightforcing value. The second word of <strong>the</strong> 2-word entrycontains <strong>the</strong> address of <strong>the</strong> string to be used by <strong>the</strong>Interpreter when <strong>the</strong> corresponding operator isforced. (See Table 7.)The string address (word 2 of each Forcing Tableentry) for each operator is a pointer used by <strong>the</strong>Interpreter. This pointer designates to <strong>the</strong> Interpretera string of operations that must be performedby <strong>the</strong> Interpreter in order to convert <strong>the</strong>forced operator and its operands to <strong>the</strong> modified formof Polish notation.NOTE: Strings may also contain pointers. Thesepointers designate substrings, which are detailedTable 7. FORTRAN Forcing TableOperatorDefinitionForcing ValueLeft I RightStringPointerN Name Operator 63 00 0Normal Right Paren<strong>the</strong>sis 01 32 0Statement Terminator 3C 3C 0+,- Add, Subtract OA OA 1/,* Divide, Multiply 05 05 1Exponentiation 05 04 1Assign 3B 3C 1( Normal Left Paren<strong>the</strong>sis 31 01 200 000Comma 31 30 3Call Operator 01 01 4Special Paren<strong>the</strong>sis for Literals,Special Paren<strong>the</strong>sis forDimensioned Arrays 31 01 6Unary Minus OA OA 7ac Operator 31 01 84000Ip411)Special Right Paren<strong>the</strong>sis inImplied DOs 31 01 9Subscripting Right Paren<strong>the</strong>sisin Implied DOs 31 01 10I/O Operator before Scan 30 01 11I/O Operator during and afterScan 30 01 12Equal Sign in Implied DOs 31 01 13extensions of <strong>the</strong> string and which are used by <strong>the</strong>Interpreter in <strong>the</strong> same manner as <strong>the</strong> strings.A forcing condition exists if <strong>the</strong> forcing value of<strong>the</strong> right operator is equal to or greater than <strong>the</strong>forcing value of <strong>the</strong> left operator. This condition resultsin <strong>the</strong> left operator being forced; that is, <strong>the</strong>operation to <strong>the</strong> left has precedence. Whenever anon-forcing condition exists, <strong>the</strong> operands and operatorsinvolved remain in <strong>the</strong> statement. Operandsand operators are removed from <strong>the</strong> string only whenan operator is forced and <strong>the</strong> Interpreter-generatedsymbol FAC replaces <strong>the</strong>m.The Interpreter controls <strong>the</strong> conversion of <strong>the</strong>statement to <strong>the</strong> modified form of Polish notation. Aseach operator is forced, <strong>the</strong> Interpreter, using <strong>the</strong>string address from <strong>the</strong> Forcing Table, selects <strong>the</strong>Section 11. FORTRAN Compiler 91


associated string and performs <strong>the</strong> string operations.These operations result in <strong>the</strong> output of <strong>the</strong>forced operator and its operands, resequenced in<strong>the</strong> order of operational performance. The forcedoperator and its operands are put out into <strong>the</strong> outputbuffer by <strong>the</strong> Interpreter and are replaced in <strong>the</strong>statement body by <strong>the</strong> symbol FAC.The scan begins with <strong>the</strong> string pointer movingfrom left to right. When an operator is encountered,<strong>the</strong> scan looks two words to <strong>the</strong> left for a second operator.If none is found, <strong>the</strong> string pointer movesto <strong>the</strong> right, one word at a time, in search of ano<strong>the</strong>roperator. If an operator is found to <strong>the</strong> left, <strong>the</strong>scan converts <strong>the</strong> left and right operators to <strong>the</strong>irrespective forcing values and checks for <strong>the</strong> forcingcondition.If a forcing condition does not exist, <strong>the</strong> scanagain resumes, moving <strong>the</strong> pointer to <strong>the</strong> right. If,however, a forcing condition does exist, <strong>the</strong> Interpreterhandles <strong>the</strong> operator and operands involved.Upon return to <strong>the</strong> scanning process, <strong>the</strong> stringpointer is positioned to <strong>the</strong> same operator thatcaused <strong>the</strong> previous force, <strong>the</strong> symbol FAC residesone word to <strong>the</strong> left in place of <strong>the</strong> forced operatorand its operands, and a new operator resides twowords to <strong>the</strong> left. These operators are <strong>the</strong>n convertedand <strong>the</strong> check is made for <strong>the</strong> forcing condition.If at any time <strong>the</strong> symbol FAC is an operand of aforced operator, FAC is replaced by a GT (generatedtemporary storage location). The GT is <strong>the</strong>n outputtedas <strong>the</strong> operand in place of FAC. FAC again replaces<strong>the</strong> forced operator and operands in <strong>the</strong> statementbody. New GTs are created as <strong>the</strong>y are neededin order to maintain FAC in <strong>the</strong> statement body.At <strong>the</strong> completion of <strong>the</strong> scan process <strong>the</strong> statementbody has been reduced to <strong>the</strong> symbol FAC; <strong>the</strong>statement body now consists of less than four words.The output buffer contains <strong>the</strong> entire statement convertedto <strong>the</strong> modified form of Polish notation.If in looking for a left operator <strong>the</strong> scan must bypass<strong>the</strong> argument list of a call operator, <strong>the</strong> elementsof this argument list are stored temporarilyin a special buffer called <strong>the</strong> Push-down List. When<strong>the</strong> call operator is forced and placed into <strong>the</strong> outputbuffer, <strong>the</strong> Push-down List is <strong>the</strong>n emptied into <strong>the</strong>output buffer in reverse order so that <strong>the</strong> argumentsare restored in <strong>the</strong>ir original sequence following<strong>the</strong> call operator.When <strong>the</strong> scan detects that <strong>the</strong> statement consistsof less than four words (<strong>the</strong> symbol FAC only), <strong>the</strong>output buffer is placed into <strong>the</strong> statement stringoverlaying <strong>the</strong> symbol FAC, and <strong>the</strong> scan moves to<strong>the</strong> next statement.The statement terminator (semicolon) serves asan operator that is scanned as any o<strong>the</strong>r operator,Figure 16 illustrates <strong>the</strong> scanning process.Errors DetectedThe following error is detected in phase 16: 64.PHASE 17• Replaces FIND, READ, WRITE, GO TO, andRETURN statements with compiler-generatedcoding.• Replaces those parts of arithmetic, IF, CALL,and statement function statements that involvesubscripting of variables with compiler-generatedcoding.• Checks subprograms for a RETURN statement;generates <strong>the</strong> return linkage coding.Phase 17 replaces READ, WRITE, and FIND statementsby a call to <strong>the</strong> appropriate I/0 subroutine,along with <strong>the</strong> necessary arguments. Generatedlabels are added to READ and WRITE statements involvingimplied DO loops.Also, statement function, arithmetic, IF, andCALL statements are examined for subscripted variables.Those parts of <strong>the</strong>se statements that involvesubscripts are replaced by compiler-generated coding.In order to produce more efficient coding, phase17, by means of an SGT Table, eliminates redundantloads of <strong>the</strong> same subscript offset. Also, <strong>the</strong> instructionsused to load literal subscripts are placed immediatelybefore <strong>the</strong> indexed operations.Errors DetectedThe following error is detected in phase 17: 69.92


Arithmetic StatementA=B+C*D-EStepContents of<strong>the</strong> stringContents of <strong>the</strong>Output BufferComments1 A BtC*D-E A is not an operator, so <strong>the</strong> pointer, P, moves to <strong>the</strong> right, When scanning to <strong>the</strong> right for ant operator, non-operators are simply skipped. When scanning for an operator to <strong>the</strong> left with whichP to force, non-operators are added to <strong>the</strong> push-down list.2 A = B+C*D-E There is no operator to <strong>the</strong> left with which a forcing condition test can be made; <strong>the</strong>refore, <strong>the</strong>pointer moves to <strong>the</strong> right until an operator is encountered.P3 A = B+C"D-E;tPUsing <strong>the</strong> forcing table, <strong>the</strong> pointer indicates <strong>the</strong> RV (right forcing value) and P - 2 (two positionsto <strong>the</strong> left) indicates <strong>the</strong> LV (left forcing value). The RV of + is OA; <strong>the</strong> LV of = is 3B. OA is notequal to or greater than 3B. The left operator is not forced, and <strong>the</strong> pointer moves to <strong>the</strong> nextoperator.4 A BIC'D-E; The RV of * is 05; <strong>the</strong> LV of + is OA. 05 is not equal to or greater than OA... The left operator istnot forced, and <strong>the</strong> pointer moves to <strong>the</strong> next operator.P5 A BIC*Di E; *CD The RV of - is OA; <strong>the</strong> LV of * is 05. OA is greater than 05. Hence, <strong>the</strong> left operator is forced.*CD is placed in <strong>the</strong> output buffer and <strong>the</strong> symbol FAC replaces <strong>the</strong> outputted operator andTPoperands. The pointer is not moved; an attempt is made to force <strong>the</strong> new left operator.6 A - BFFAC A-E; *CD+B The RV of - is CA; <strong>the</strong> LV of F is OA. OA is equal to OA. Hence, <strong>the</strong> left operator is forced.T+B is added to <strong>the</strong> output buffer. The symbol FAC still replaces <strong>the</strong> contents of <strong>the</strong> output buffer.PThe pointer is not moved; an attempt is made to force <strong>the</strong> new left operator.7 A - FAC-E;tP*CD +BThe RV of - is OA; <strong>the</strong> LV of = is 3B. OA is not equal to or greater than 3B. The left operatoris not forced and <strong>the</strong> pointer moves to <strong>the</strong> next operator,8 A = FAC-E; *CD EB-E The RV of ; is 3C; <strong>the</strong> LV of - is OA. 3C is greater than OA. Hence, <strong>the</strong> left operator isforced. -E is added to <strong>the</strong> output buffer. The symbol FAC still replaces <strong>the</strong> contents of <strong>the</strong>tPoutput buffer. The pointer is not moved; an attempt is made to force <strong>the</strong> new left operator.9 A - FAC; *CD+B-E=A The RV of ; is 3C; <strong>the</strong> LV of = is 3B. 3C is greater than 3B. Hence, <strong>the</strong> left operator isforced. =A is added to <strong>the</strong> output buffer. The symbol FAC still replaces <strong>the</strong> contents of <strong>the</strong>tPoutput buffer,10FAC;*CD+B-E=AThe original statement now consists of three words or less. This indicates that <strong>the</strong> statement hasbeen scanned. The symbol FAC is now replaced by <strong>the</strong> contents of <strong>the</strong> output buffer.11 *CD+B-E-A; The scan is complete.Figure 16. FORTRAN Scan ExamplePHASE 18• Replaces arithmetic, statement function, CALL,and IF statements not involving subscripted variablesby compiler-generated coding.• Completes <strong>the</strong> replacement of arithmetic, statementfunction, CALL, and IF statements that doinvolve subscripted variables by compilergeneratedcoding.• Optimizes IF statement branch instructions.• Handles mixed-mode arithmetic.This phase generates <strong>the</strong> coding necessary to replacearithmetic, statement function, CALL, and IF statements.This phase wholly converts statements of<strong>the</strong>se types that include no subscripted variables andmerely completes <strong>the</strong> conversion, which was partiallycompleted in phase 17, of statements of <strong>the</strong>se typesthat do include subscripted variables.Phase 18 generates <strong>the</strong> code to perform integer,real, and mixed-mode arithmetic. Where possible,integer arithmetic is done in-line. The remainder of<strong>the</strong> coding consists of calls to <strong>System</strong> Library subroutines,followed by argument lists.As needed, calls to <strong>the</strong> FORTRAN-supplied FUNC-TION subprograms IFIX and FLOAT are generated.Section 11. FORTRAN Compiler 93


<strong>All</strong> calls to <strong>the</strong>se subprograms are made MBEs.However, calls to exponentiation subroutines generatedby phase 18 are made CALLs.GTs (generated temporary storage locations) detectedin <strong>the</strong> string by this phase or generated bythis phase for storing intermediate results of arithmeticcalculations are made to agree in mode with<strong>the</strong> function of which <strong>the</strong>y are a part.Errors DetectedThere are no errors detected in phase 18.PHASE 19• Fetches <strong>the</strong> principal print device subroutine foruse by phases 19-24; also provides a print interfacesubroutine for <strong>the</strong>se phases.• <strong>All</strong>ocates storage for COMMON variables.• <strong>All</strong>ocates all storage assignments aligned accordingto EQUIVALENCE statements.• Assigns all allocations according to <strong>the</strong> specifiedprecision of <strong>the</strong> program.• Prints <strong>the</strong> allocations of <strong>the</strong> variables as <strong>the</strong>yare assigned, if requested.Phase 19 performs <strong>the</strong> allocation of <strong>the</strong> variablesfound in <strong>the</strong> Symbol Table; i. e. , <strong>the</strong>se variables areassigned storage addresses in <strong>the</strong> object coding.These addresses replace <strong>the</strong> Symbol Table entriesfor <strong>the</strong> variables.The COMMON area resides in high-addressedstorage during execution of <strong>the</strong> object program.Thus, all COMMON variables are assigned absoluteaddresses within this high-addressed area. Thevariable area resides in storage just below <strong>the</strong> objectprogram during execution. <strong>All</strong> variables notI in COMMON are assigned addresses within thisarea.Phase 19 first allocates COMMON variables foundin <strong>the</strong> Symbol Table. EQUIVALENCE statementsthat include COMMON variables are examined and<strong>the</strong> addresses are aligned during allocation to obtainan equivalence. A check is made to ensure that <strong>the</strong>equivalence does not cause a variable or array elementto be allocated beyond <strong>the</strong> beginning of <strong>the</strong>COMMON area.Variables that appear in EQUIVALENCE statementsare allocated next, one combined equivalencenest at a time. The remaining variables in <strong>the</strong>Symbol Table are finally allocated, real variablesfirst, followed by integer variables.Phase 19 also computes <strong>the</strong> core requirements forconstants after all defined variables have been allocated.The core requirements for variables and forCOMMON are <strong>the</strong>n stored in <strong>the</strong> FORTRAN CommunicationsArea.Errors DetectedThe error detected by phase 19 is ei<strong>the</strong>r: 65, 66,or 67.PHASE 20• Lists any errors that were detected during <strong>the</strong>compilation process.• Rearranges <strong>the</strong> statement string if <strong>the</strong>re were noerrors detected.Phase 20 deletes from <strong>the</strong> statement string EQUIV-ALENCE statements that do not have an error indicatorand replaces EQUIVALENCE statements that havean error indicator by error statements.The Symbol Table is scanned twice. The firstscan detects unreferenced statement numbers andlists <strong>the</strong>m on <strong>the</strong> principal print device. The secondscan detects undefined variables and lists <strong>the</strong>se alsoon <strong>the</strong> principal print device.The statement string is rearranged (if <strong>the</strong>re wereno errors in <strong>the</strong> compilation) so that, if <strong>the</strong>y arepresent, <strong>the</strong> DEFINE FILE Table, format specificationstrings, and arithmetic statement functions precede<strong>the</strong> first executable statement.The statement string is scanned for error statements.Two counters are maintained during <strong>the</strong> scan.The first (STLAB) contains <strong>the</strong> statement number of<strong>the</strong> last numbered statement encountered. The second(STCNT) contains a count of <strong>the</strong> statements encounteredsince <strong>the</strong> last numbered statement. Compilergeneratedstatements and statement numbers are disregardedin <strong>the</strong>se counts.When an error statement is detected, <strong>the</strong>se countersare inserted into <strong>the</strong> error message along with<strong>the</strong> error number for printing.A check is made on all DATA statements. If a dataconstant is defined in COMMON, error 81 is indicated.94


Errors DetectedThe following error is detected in phase 20: 81.allocation found in each of <strong>the</strong>se statements isentered in <strong>the</strong> Symbol Table. The allocation and <strong>the</strong>label are <strong>the</strong>n deleted from <strong>the</strong> string entry.PHASE 21Errors DetectedI.Assigns <strong>the</strong> addresses to statement functions andnumbered statements; inserts <strong>the</strong> allocations into<strong>the</strong> string.There are no errors detected in this phase.• Creates <strong>the</strong> subroutine initialization call, ifrequired.• Calculates <strong>the</strong> core requirements of <strong>the</strong> program;stores <strong>the</strong> result in <strong>the</strong> FORTRAN CommunicationsArea.• Generates <strong>the</strong> statement function return linkagecoding.Phase 21 allocates addresses to all numbered statementsand statement functions. The allocation isplaced into <strong>the</strong> statement string entry, following <strong>the</strong>statement number or function label. A calculationof <strong>the</strong> object program storage requirements is madefrom <strong>the</strong> Location Counter at <strong>the</strong> end of allocationand stored in <strong>the</strong> SOFNS word (word 4) in <strong>the</strong> FOR-TRAN Communications Area.If <strong>the</strong> program being compiled is a subprogram,this phase also creates <strong>the</strong> subroutine initializationcall, CALL SUBIN, along with its dummy arguments;this subroutine directs <strong>the</strong> insertion of argumentsduring execution of <strong>the</strong> object program.Errors DetectedThere are no errors detected in this phase.PHASE 22• Inserts <strong>the</strong> statement allocations into <strong>the</strong> SymbolTable.• Lists <strong>the</strong> statement allocations on <strong>the</strong> principalprint device, if requested.This phase scans <strong>the</strong> statement string for statementfunction statements and numbered statements. ThePHASE 23• Lists <strong>the</strong> Features Supported by <strong>the</strong> program asindicated in <strong>the</strong> FORTRAN Communications Area.• Lists <strong>the</strong> <strong>System</strong> Library subroutines used by <strong>the</strong>program, if requested.• Lists <strong>the</strong> subprogram names found in <strong>the</strong> SymbolTable, if requested.Using <strong>the</strong> indicators in <strong>the</strong> CCWD word (word 15) in<strong>the</strong> FORTRAN Communications Area, phase 23recreates <strong>the</strong> control records that were recognizedin phase 1. These control records (with <strong>the</strong> exceptionof *IOCS) are listed on <strong>the</strong> principal print deviceunder <strong>the</strong> title 'FEATURES SUPPORTED.According to <strong>the</strong> indicators in <strong>the</strong> CCWD word,phase 23 also alters (for purposes of printing only)<strong>the</strong> names of subprograms in <strong>the</strong> compiler-generatedcalls to reflect extended precision, if specified.(The actual compiler-generated coding is not altereduntil phase 26.)If requested, a list is made of all <strong>the</strong> subprogramnames that appear in <strong>the</strong> Symbol Table (all CALLs).Phase 23 also scans <strong>the</strong> statement string, bypassingall one-word statements and tagging <strong>the</strong> names in<strong>the</strong> <strong>System</strong> Library table that are called by <strong>the</strong> program(all LIBFs). While scanning <strong>the</strong> <strong>System</strong>Library table, phase 23 checks <strong>the</strong> indicators in <strong>the</strong>IOCS word (word 16) in <strong>the</strong> FORTRAN CommunicationsArea. A tag is added to <strong>the</strong> names of thosesubroutines that service <strong>the</strong> devices indicated in <strong>the</strong>IOCS word (i. e. , <strong>the</strong> devices listed in <strong>the</strong> *IOCScontrol record). The names of <strong>the</strong> associated conversionsubroutines (if required) are also tagged.The Subroutine table is <strong>the</strong>n scanned and, if requested,<strong>the</strong> tagged <strong>System</strong> Library subroutine names arelisted.Section 11. FORTRAN Compiler 95


Errors DetectedThere are no errors detected in this phase.PHASE 24• Lists <strong>the</strong> Core Requirements.• Lists <strong>the</strong> constants and <strong>the</strong>ir addresses, ifrequested.Under <strong>the</strong> heading 'CORE REQUIREMENTS,' phase24 prints <strong>the</strong> amounts of storage used by <strong>the</strong> program,COMMON area, and variables. The program nameis printed from <strong>the</strong> FNAME words (words 11-12) in<strong>the</strong> FORTRAN Communications Area.If a list request is specified in <strong>the</strong> CCWD word(word 15), <strong>the</strong> real and integer constants are convertedto output coding and listed with <strong>the</strong>ir relativeaddresses according to <strong>the</strong> specified precision.Real constants are listed first, followed by integerconstants.A check is made to see that <strong>the</strong> core requirementsdo not exceed 32767 words. If <strong>the</strong>y do, <strong>the</strong> ERRORword (word 11) in <strong>the</strong> FORTRAN CommunicationsArea is set and output to Working Storage is suppressed.Errors DetectedThere are no errors detected in this phase.PHASE 25• Builds <strong>the</strong> program header arid data header records;places <strong>the</strong>se records onto <strong>the</strong> disk inWorking Storage.• Places real and integer constants into WorkingStorage in absolute mode.Phase 25 initially builds <strong>the</strong> program header anddata header records. These records and <strong>the</strong> BufferCommunications Area carry information to phase 26.The program header and data header records areplaced in Working Storage.The statement string is searched for DEFINE FILEstatements. These statements are analyzed and <strong>the</strong>nplaced into Working Storage. The file specificationsare outputted in absolute mode, except for <strong>the</strong> associatedvariable, which is in relocatable or absolutemode. The statement string is also searched forDATA statements. <strong>All</strong> data constants are placed inWorking Storage in absolute mode.The Symbol Table is scanned twice. The first scanextracts real constants, computes <strong>the</strong>ir allocations,and inserts <strong>the</strong> allocations into <strong>the</strong> Symbol Table. Thesecond scan performs <strong>the</strong> same operations for integerconstants. <strong>All</strong> constants are placed into WorkingStorage in absolute mode.Errors DetectedThere are no errors detected in this phase.PHASE 26• Converts <strong>the</strong> compiled statement string to objectcoding.• Places <strong>the</strong> object program into Working Storage.According to <strong>the</strong> indicators in <strong>the</strong> CCWD word (word15) in <strong>the</strong> FORTRAN Communications Area, phase 26alters <strong>the</strong> subroutine names referenced by <strong>the</strong> compiledprogram to reflect, if necessary, extended precisionas specified by <strong>the</strong> user. Phase 23 made <strong>the</strong>same conversion for listing purposes; this phasemakes <strong>the</strong> conversion during <strong>the</strong> generation o:' <strong>the</strong>object program.Phase 26 converts <strong>the</strong> statement string into <strong>the</strong>object program, which is written in Working Storage.At <strong>the</strong> completion of <strong>the</strong> output, <strong>the</strong> terminationsubroutine (OUTER) inserts <strong>the</strong> necessary data into<strong>the</strong> FORTRAN Communications Area so that <strong>the</strong> RecoveryPhase can complete <strong>the</strong> compilation.Errors DetectedThere are no errors detected in this phase.PHASE 27• Sets up <strong>the</strong> switches and parameters needed by<strong>the</strong> Monitor Control Record Analyzer to assumecontrol.• Prints error messages 86, 96 and 9996


This phase is <strong>the</strong> means by which <strong>the</strong> compiler returnscontrol to <strong>the</strong> monitor system. The phase isentered under <strong>the</strong> following conditions:I. Normal end of compilation, with or withoutprogram errors.2. Disk work area exceeded.3. Control record trap during input phase.In each case <strong>the</strong> Recovery Phase sets indicatorsin <strong>the</strong> FORTRAN Communications Area in order toinform <strong>the</strong> monitor system program called next asto <strong>the</strong> results of <strong>the</strong> compilation. Compilation errors,<strong>the</strong> exceeding of Working Storage, and <strong>the</strong> trapping ofa monitor control record all cause <strong>the</strong> compilationoutput to be suppressed, <strong>the</strong> non-execute switch($NXEQ) to be set, and <strong>the</strong> non-DUP switch ($NDUP)to be set.If <strong>the</strong> compilation is successful, <strong>the</strong> programlength, <strong>the</strong> number of disk blocks used to store <strong>the</strong>program, and <strong>the</strong> execution address are all transmittedto DCOM on <strong>the</strong> master cartridge and toDCOM of <strong>the</strong> Working Storage cartridge if it is o<strong>the</strong>rthan <strong>the</strong> master cartridge.Errors DetectedThere are no errors detected in this phase.UPDATING THE MASTER CARTRIDGEIf <strong>the</strong> compilation is free of errors, DCOM on <strong>the</strong>master cartridge is updated as follows:• The program length in disk blocks is placed inDBCT and in one entry in <strong>the</strong> # WSCT quintuplecorresponding to <strong>the</strong> cartridge that contains<strong>System</strong> Working Storage.• The execution address (or entry point address)is placed in *ENTY.• One entry in <strong>the</strong> # FMAT quintuple correspondingto <strong>the</strong> cartridge that contains <strong>System</strong> WorkingStorage is set to zero to indicate that <strong>the</strong> WorkingStorage contains DSF.In addition, if <strong>System</strong> Working Storage is ono<strong>the</strong>r than <strong>the</strong> master cartridge, # WSCT andFMAT of <strong>the</strong> cartridge containing <strong>System</strong> WorkingStorage are updated as described above.Section 11. FORTRAN Compiler 97


SECTION 12. SYSTEM LIBRARYFLOWCHARTSWrite Cartridge ID (ID):Fetch Phase IDs From SLET (FSLEN):Fetch <strong>System</strong> Subroutine (FSYSU):Write Working Storage Addresses (ADRWS):Initialize Disk Cartridge (DISC):Read *ID Record and Convert (RDREC):Print Cartridge ID (IDENT):Call <strong>System</strong> Print Subroutine (CALPR):Copy Disk Cartridges (COPY):Delete Core Image Buffer (DLCIB):Dump SLET (DSLET):Maintenance <strong>Program</strong> (MODIF):SCAT2, Call Processing:SCAT2, Interrupt Processing:SCAT3, Call Processing:SCAT3, Interrupt Processing:UTL01UTL02UTL02UTL03UTL04UTL05UTL06UTL07UTL08UTL09UT L10UTL11-UTL13SCA 01SCA02-SCA03SCA04SCA05-SCA07FORTRAN Non-disk I/0 (SFIO):CARD Z:PRNTZ:PAPT Z:READ Z:WRTYZ:PRNZ:PNCH Z:TYPE Z:HOLE Z:FI001-F1003FI004-FI005FI006FI007FI008F1009FIO10FIO11F1012FIO13The <strong>System</strong> Library consists of (1) a completelibrary of input/output (except disk I/O), dataconversion, arithmetic, and function subprograms,(2) selective dump subroutines, and (3) specialprograms for disk maintenance.The following is a list of <strong>the</strong> contents of <strong>the</strong><strong>System</strong> Library.UtilityFunction Name si Type Subtype Reference Deck IDSelective Dump on Console Printer DMTDO, DMTXO 4 0 CALL U5B00010Selective Dump on 1132 Printer DMPD1, DMPX1 4 0 CALL U5C00010Dump 80 Subroutine DMP80 4 0 CALL U5A00010Common FORTRANTest Console Entry Switches DATSW 4 8 CALL T3F00010Divide Check Test DVCHK 4 8 CALL T3G00010Functional Error Test FCTST 4 8 CALL T3H00010Overflow Test OVERF 4 8 CALL T3J00010Sense Light Control and Test SLITE, SLITT 4 8 CALL T3L00010FORTRAN Trace Stop TSTOP 4 8 CALL T3M00010FORTRAN Trace Start TSTRT 4 8 CALL T3N00010Selective Dump PDUMP 4 0 CALL T3K00010FORTRAN Sign TransferExtended Precision Transfer of Sign ESIGN 4 8 CALL S2F00010Standard Precision Transfer of Sign FSIGN 4 8 CALL R2F00010Integer Transfer of Sign ISIGN 4 8 CALL T3I00010Extended Precision Arithmetic/FunctionExtended Precision HyperbolicTangent ETANH, ETNH 4 8 CALL S2I00010Extended Precision A**B Function EAXB, EAXBX 4 8 CALL 52000010Section 12. <strong>System</strong> Library 99


Function Name Type Subtype Reference Deck IDExtended Precision Arithmetic/Function (Cont'd)Extended Precision Natural Logarithm ELN, EALOG 4 8 CALL S2E00010Extended Precision Exponential EEXP, EXPN 4 8 CALL S2D00010Extended Precision Square Root ESQR, ESQRT 4 8 CALL S2H00010Extended Precision Sine-CosineESIN, ESINE,ECOS, .ECOSN 4 8 CALL S2G00010Extended. Precision Arctangent EATN, EAT AN 4 8 CALL S2B00010Extended Precision Absolute ValueFunction EABS, EAVL 4 8 CALL S2A00010Standard Precision Arithmetic/FunctionStandard Precision HyperbolicTangent FTANH, FTNH 4 8 CALL R2I00010Standard Precision A**B Function FAXB, FAXBX 4 8 CALL R2C00010Standard Precision Natural Logarithm FLN, FALOG 4 8 CALL R2E00010Standard Precision Exponential FEXP, FXPN 4 8 CALL R2D00010Standard Precision Square Root FSQR, FSQRT 4 8 CALL R2H00010Standard Precision Sine-CosineFSIN, FSINE,FCOS, FCOSN 4 8 CALL R2G00010Standard Precision Arctangent FATN, FAT.AN 4 8 CALL R2B00010Standard Precision Absolute ValueFunction FABS, FAVL 4 8 CALL R2A00010Common Arithmetic/FunctionFixed Point (Fractional) Square Root XSQR 4 8 CALL T1C00010Integer Absolute Function IABS 4 8 CALL T1B00010Floating Binary/EBCDIC DecimalConversionsFBTD (binary todecimal), FDTB(decimal to binary) 4 0 CALL T1A00010<strong>System</strong>LOCAL/SOCAL Flipper F LIPR 3 U5D00010DCOM Update SYSUP 4 0 CALL U5E00010FORTRAN TraceExtended Floating Variable Trace SEAR, SEABX 3 0 LIBF S2J00010Fixed Variable Trace SIAR, SIARX 3 0 LIBF T6B00010Standard Floating IF Trace SFIF 3 0 LIBF R2K00010Extended Floating IF Trace SEIF 3 0 LIBF S2K00010Fixed IF Trace SIIF 3 0 LIBF T6C00010Standard Floating Variable Trace SFAR, SFARX 3 0 LIBF R2J00010GOTO Trace SGOTO 3 0 LIBF T6A00010FORTRAN I/ONon-Disk Formatted FORTRAN I/O SFIO, SIOI, SIOAI,SIOF, SIOAF ,SIOFX, SCOMP,SWRT, SRED,SIOIX 3 3 LIBF T4C00010FORTRAN Find SD FND 3 1 LIBF T4B00010100


Function Name(s) Type Subtype Reference Deck IDDisk FORTRAN I/OSDFIO, SDRED,SDWRT, SDCOM,SDAF, SDF, SDI,SDIX, SDFX,SDAI 3 1 LIBF T4A00010Unformatted FORTRAN I/O UFIO 3 1 LIEF T4D00010URED, UWRT, UIOI, UIOF ,LTIOAL UIOAF, UIOFX, UIOIX,UCOMP, BCKSP, EOF, REWNDCommon FORTRANFORTRAN Pause PAUSE 3 2 LIBF T2A00010FORTRAN Stop STOP 3 2 LIBF T2B00010FORTRAN Subscript DisplacementCalculation SUBSC 3 0 LIBF T2D00010FORTRAN Subroutine Initialization SUBIN 3 0 LIEF T2C00010FORTRAN Trace Test and Set TTEST, TSET 3 0 LIEF T2E00010FORTRAN I/O and ConversionFORTRAN Card 1442 (Read/Punch) CARD Z 5 3 LIBF T5A00010FORTRAN Card 1442-5 (Punch) PNCHZ 5 3 LIEF T5G00010FORTRAN Card 2501 (Read) READZ 5 3 LIBF T5J00010FORTRAN Paper Tape PAPT Z 5 3 LIBF T5F00010FORTRAN 1132 Printer PRNT Z 5 3 LIBF T5H00010FORTRAN 1403 Printer PRNZ 5 3 LIBF T5I00010FORTRAN Keyboard/Typewriter TYPE Z 5 3 LIBF T5K00010FORTRAN Typewriter WRTYZ 5 3 LIBF T5L00010FORTRAN Hollerith to EBCDICConversion HOLE Z 3 3 LIBF T5D00010FORTRAN Get Address Subroutine GETAD 3 3 LIEF T5C00010FORTRAN EBCDIC Table EBCTB 3 3 - T5B00010FORTRAN Hollerith Table HOLTB 3 3 - T5E00010Extended Precision Arithmetic/FunctionExtended Precision Get Parameter EGETP 3 2 LIBF S1E00010Extended Precision A**I Function EAXI, EAXIX 3 2 LIEF S1B00010Extended Precision Divide EDVR, EDVRX 3 2 LIBF S1D00010Extended Precision Float Divide EDIV, EDIVX 3 2 LIBF S1C00010Extended Precision Float Multiply EMPY, EMPYX 3 2 LIBF S1G00010Extended Precision Subtract Reverse ESBR, ESBRX 3 2 LIBF S1H00010Extended Add-SubtractEADD, ESUB,EADDX, ESUBX 3 2 LIBF S1A00010Extended Load-StoreELD, ELDX, ESTO,ESTOX 3 0 LIBF S1F00010Standard Precision Arithmetic/FunctionStandard Precision Get Parameter FGETP 3 2 LIBF R1E00010Standard Precision A**I Function FAXI, FAXIX 3 2 LIBF R1B00010Standard Precision Divide Reverse FDVR, FDVRX 3 2 LIBF R1D00010Standard Precision Float Divide FDIV, FDIVX 3 2 LIBF R1C00010Standard Precision Float Multiply FMPY, FMPYX 3 2 LIBF R1G00010Standard Precision Subtract Reverse FSBR, FSBRX 3 2 LIBF R1H00010Section 12, <strong>System</strong> Library 101


Function Name(s) Type Subtype Reference Deck IDStandard Precision Arithmetic/Function (Contid)Standard Add/SubtractFADD, FSUB,FADDX, FSUBX 3 2 LIBF R1A00010Standard Load/StoreFLU, FLEX,FSTO, FSTOX 3 0 LIBF R1F00010Standard Precision Fraction Multiply XMDS 3 2 LIBF S3I00010Common Arithmetic/FunctionFixed Point (Fraction) Double Divide XDD 3 2 LIBF 531300010Fixed Point (Fraction) DoubleMultiply XMD 3 2 LIBF S3H00010Sign Reversal Function SNR 3 2 LIBF S37 00010Integer to Floating Point Function FLOAT 3 0 LIBF S3C00010Floating Point to Integer Function IFIX 3 0 LIBF S3D00010I**J Integer Function FIXI, FIXIX 3 2 LIEF S31300010Normalize NORM 3 0 LIBF S3E00010Floating Accumulator Range Check FARC 3 2 LIBF S3A00010Interrupt ServiceCard Input/Output (No ErrorParameter) CARD 0 5 0 LIBF U2 A0001.0Card Input/Output (ErrorParameter) CARD1 5 0 LIBF U2B00010Disk Input/Output (No PreoperativeParameter Checking) DISKZ* - - SpecialDisk Input/Output (No Simultaneity) DISK1* LIBFHigh-Speed Disk Input/Output(Simultaneity) DISKN* - - LIBFPaper Tape Input/Output PAPT 1 5 0 LIBF U2D00010Single Frame Paper Tape Input/Output PAPTX 5 0 LIBF U2F00010Simultaneous Paper Tape Input/Output PAPTN 5 0 LIBF U2E00010Plotter Output PLOT1 5 0 LIBF U2G000101132 Printer Output PRNT1 5 0 LIBF U2J000101403 Printer Output PRNT3 5 0 LIBF U2K00010Keyboard/Console Printer Input/Output TYPED 5 0 LIBF U2N00010Console Printer Output WRTYO 5 0 LIBF U20000101231 Optical Mark Page Reader OMPR1 5 0 LIBF U2C000102501 Card Input (No Error Parameter) READO 5 0 LIBF U2L000102501 Card Input (Error Parameter) READ 1 5 0 LIBF U2M000101442 Card Output (No Error Parameter) PNCHO 5 0 LIBF U2I1000101442 Card Output (Error Parameter) PNCH1 5 0 LIBF U2100010*Note: Whereas DISKZ, DISK1, and DISKN are not strictly ISS subroutines (<strong>the</strong>y are stored in <strong>the</strong> <strong>System</strong> Areaby <strong>the</strong> <strong>System</strong> Loader), <strong>the</strong>y are included in this list because <strong>the</strong>y possess many characteristics of ISSsubroutines.102


Function Name(s) Type Subtype Reference Deck IDConversion16 bits to 6 Decimal Characters (CardCode) BIND C 3 LIBF U4B0001032 bits to 11 Decimal Characters BIDEC 3 LIBF U4A0001016 Bits to 4 Hexadecimal Characters(Card Code) BINHX 3 0 LIBF U4C000106 Decimal Characters (Card Code)to 16 bits DCBIN 3 0 LIBF U4G0001011 Decimal Characters to 32 bits DECBI 3 0 LIBF U4H00010EBCDIC to Console Printer OutputCode EBPRT 3 0 LIBF U3A00010Card Code to EBCDIC, EBCDIC toCard Code HOLEB 3 0 LIBF U3B00010Card Code to Console PrinterOutput Code HOLPR 3 0 LIBF U3C000104 Hexadecimal Characters (CardCode) to 16 bits HXBIN 3 0 LIBF U3D00010PTTC/8 to EBCDIC, EBCDIC toPTTC/8 PAPEB 3 0 LIBF U3E00010PTTC/8 to Card Code, Card Codeto PTTC/8 PAPHL 3 0 LIBF U3F00010PTTC/8 to Console Printer OutputCode PAPPR 3 0 LIBF U3G00010Card Code to EBCDIC, EBCDIC toCard Code SPEED 3 0 LIBF U3H00010Fast multi-purpose conversion ZIPCO 3 0 LIBF U3I00010Conversion TablesEBCDIC and PTTC/8 Table EBPA 3 0 - U4K00010Card Code Table HOLL 3 0 - U4P00010Console Printer Output Code Table PRTY 3 0 - U4Q00010EBCDIC to <strong>IBM</strong> Card Code EBHOL 3 0 - U4J000101403 Code to Console Printer Code PT3CP 3 0 - U4R00010Console Printer Code to 1403 Code CPPT3 3 0 - U4F000101403 Code to EBCDIC PT3EB 3 0 - U4S00010EBCDIC to 1403 Code EBPT3 3 0 - U4L00010<strong>IBM</strong> Card Code to Console PrinterCode HOLCP 3 0 - U4000010Console Printer Code to <strong>IBM</strong> CardCode CPHOL 3 0 - U4E00010Console Printer Code to EBCDIC CPEBC 3 0 - U4D00010EBCDIC to Console Printer Code EBCCP 3 0 - U4I00010PTTC/8 Code to <strong>IBM</strong> Card Code PTHOL 3 0 - U4T00010<strong>IBM</strong> Card Code to EBCDIC HLEBC 3 0 - U4M00010<strong>IBM</strong> Card Code to 1403 Printer Code HLPT3 3 0 - U4N00010SCA SubroutinesSCAT1 5 0 LIBF W1F00010PRNT2 5 0 LIBF W1E00010HOLCA 3 0 - W1C00010STRTB 3 0 - W1G00010SCAT2 5 0 LIBF W1H00010SCAT3 5 0 LIBF W1I00010Section 12, <strong>System</strong> Library 103


SCA Subroutines (Cont'd)MainlineFunction Name Type Subtype Reference Deck IDHXCVEBC48110L48333000W1D00010W1A00010W1B00010Initialize Disk Cartridge DISC 2 U6C00010Print Cartridge ID 'DENT 2 U6F00010Write Cartridge ID ID 2 U6G00010Copy Disk Cartridges COPY 2 U61100010Write WS Addresses ADRWS 2 U6A00010Delete CIB DLCIB 2 U6D 00010Maintenance <strong>Program</strong> MODIF 2 U6H00010Dump SLET DSLET 2 U6E00010Paper Tape Utility PTUTL 2 U6I00010<strong>System</strong>/MiscellaneousCall <strong>System</strong> Print Subroutine CALPR 4 0 CALL U7.A00010Fetch Phase IDs from SLET FSLEN 4 0 CALL U7B00010Fetch <strong>System</strong> Subroutine FSYSU 4 0 CALL U7B00010Read *ID Record and Convert RDREC 4 0 CALL U7C00010Interrupt Level SubroutinesInterrupt Level Zero Subroutine ILSOO 7 U1A00010Interrupt Level One Subroutine ILSO1 7 U1B00010Interrupt Level Two Subroutine ILS02* 7 1 U1C00010Interrupt Level Three Subroutine ILSO3 7 UlD00010Interrupt Level Four Subroutine ILSO4* 7 1 UlE 000101627 Plotter SubroutinesScale (Extended Prec.) SCALE 4 0 CALL V1N00010Scale (Std. Pree.) SCALE 4 0 CALL V1000010Grid (Extended Prec.) E GRID 4 0 CALL V1C'00010Grid (Std. Prec.) FGRID 4 0 CALL V1B00010Plot (Extended Prec.) EPLOT 4 0 CALL VlD 00010Plot (Std. Prec.) FPLOT 4 0 CALL VlI00010Point Characters POINT 4 0 CALL V1M00010Character (Extended Prec.) E CHAR 4 0 CALL VIA 00010Character (Std. Prec.) FCHAR 4 0 CALL V1F0001OAnnotation (Extended Prec.)ECHRX, ECHRI,Annotation (Std. Prec.)VCHRI 3 0 LIBF V1B00010FCHRX, FCHRI,WCHRI 3 0 LIBF V1G00010Scaler (Extended Prec.) ERULE 3 0 LIBF VIE 00010Scaler (Std. Prec.) FRULE 3 0 LIBF V1J00010Interface PLOTI 3 0 LIBF V1K00010Pen Mover XYPLT 3 0 LIBF V1P000101627 Plot PLOTX 5 0 LIBF V1L0001O*These are special versions that consist only of BIT information.104


Function Name(s) Type Subtype Reference Deck IDDisk I/0Sequential AccessDirect AccessISAM LoadISAM AddISAM SequentialISAM RandomRPG Decimal ArithmeticSEQOP, SEQIO,SEQCLDAOPN, DAIO,DACLSISLDO, ISLD,ISLDCISADO, ISAD,ISADCISEQO, ISE TL,ISEQ, ISEQCISRDO, ISRD,ISRDC3 0 LIBF Z SA3 0 LIBF ZDA3 0 LIBF ZIL3 0 LIBF ZIA3 0 LIBF ZIS3 0 LIBF ZIRAdd, Subtract and NumericCompareRGADD, RGSUB,RGNCP3 0 LIBF YAIMultiply RGMLT 3 0 LIBF YMVDivide RGDIV 3 0 LIBF YDVMove Remainder RGMVR 3 0 LIBF YMRBinary Conversion RGBTD, RGDTB 3 0 LIBF YCNRPG Sterling and EditSterling Input Conversion RGSTI 3 0 LIBF YSISterling Output Conversion RGSTO 3 0 LIBF YSOEdit RGEDT 3 0 LIBF YEDRPG MoveFrom LO Buffer to Core RGMV1, RGMV5 3 0 LIBF YM1From Core to LO Buffer RGMV2 3 0 LIBF YM2MOVE Operation RGMV3 3 0 LIBF YM3MOVEL Operation RGMV4 3 0 LIBF YM4RPG CompareAlphameric RGCMP 3 0 LIBF YACRPG IndicatorsTest RGSI1 3 0 LIBF YI1Set Resulting On RGSI2 3 0 LIBF YI2Set On RGSI3 3 0 LIBF YI3Set Off RGSI4 3 0 LIBF YI4Test for 0 or Blank RGSI5 3 0 LIBF YI5RPG MiscellaneousTest Zone RGTSZ 3 0 CALL YTZConvert to Binary RGCVB 3 0 CALL YC BObject Time Error RGERR 3 0 LIBF YERBlank After RGBLK 3 0 LIBF YBKAlternating Sequence ALTSE - - LIBF -(User-Written)• Section 12. <strong>System</strong> Library 104.1


'INTERRUPT LEVEL SUBROUTINESINTERRUPT LEVEL TWO SUBROUTINE (ILS02)This interrupt level subroutine is actually a partof <strong>the</strong> Skeleton Supervisor. However, <strong>the</strong> CoreLoad Builder requires that a dummy ILS for leveltwo be stored in <strong>the</strong> <strong>System</strong> Library. The dummysupplied by <strong>IBM</strong> is stored in <strong>the</strong> <strong>System</strong> Libraryas subtype 1, type 7. The coding in <strong>the</strong> dummyILSO2 is immaterial, because <strong>the</strong> Core Load Buildermerely bypasses it when it discovers <strong>the</strong> subtype 1.If <strong>the</strong> user supplies his own ILS02, it must bestored in <strong>the</strong> <strong>System</strong> Library as subtype 0, type 7.INTERRUPT LEVEL FOUR SUBROUTINE (ILSO4)This interrupt level subroutine is actually a partof <strong>the</strong> Skeleton Supervisor. However, <strong>the</strong> CoreLoad Builder requires that a dummy ILS for levelfour be stored in <strong>the</strong> <strong>System</strong> Library. The dummysupplied by <strong>IBM</strong> is stored in <strong>the</strong> <strong>System</strong> Libraryas subtype 1, type 7. The dummy ILSO4 consistsonly of a nine-word table followed by a zero, asfollows:10 71 13 33 46 50 60• c 0 ' 3,4C . , R.43.E,R,v,E.D. , .r 4.54 s,E,R,v,eo,1W1 :Ill ::: 1133,41-,R.v,e,0::,,,. .: ,,,, , ,IIMMINIMINIP , ,3,0, „ ,_ ,I 4,0.3 „ . , , , , „ , , , , , , , , ,,,I 1, 4 3. a .2,5,42„0.1. , , , , . , , „ , , , „ ,III3, 5, , „14,, , , , . ,,04.3,6. . , „AE,Y,640,4,2,01,00:111,50,1,6, ,P,R,1,4,7,E,R,6. 37l,,,M14,7_,EMU .0F,' „ . „ .44eD.-4,6-,7,4,84.6 I 41.1),T,c A r aR11■1111 11111The leftmost eight bits of each word contain <strong>the</strong>relative entry point to <strong>the</strong> ISS for <strong>the</strong> associateddevice, and <strong>the</strong> rightmost eight bits contain @ISTVplus <strong>the</strong> ISS number. These eight words are usedby <strong>the</strong> Core Load Builder to construct <strong>the</strong> IBT forinterrupt level 4.If <strong>the</strong> user supplies his own ILSO4, it must bestored in <strong>the</strong> <strong>System</strong> Library as subtype 0, type 7.MAINLINE PROGRAMSDISK INITIALIZATION PROGRAM (DISC)The disk initialization program has three basicfunctions:• Establishes that <strong>the</strong> cartridges specified in <strong>the</strong>*ID record have no more than 3 defective cylindersand that cylinder 0 is not defective• Changes <strong>the</strong> cartridge labels as specified in <strong>the</strong>*ID record• Initializes portions of sectors 0, 1, and 2 to setup <strong>the</strong> cartridges specified as non-system cartridgesDISC first reads an *II) record to obtain FROMand TO cartridge IDs. It <strong>the</strong>n reads current cartridgeIDs from <strong>the</strong> master cartridge DCOM(#PCID) and compares <strong>the</strong>m with <strong>the</strong> FROM IDsspecified in <strong>the</strong> *ID record. If <strong>the</strong>re are any IDsnot found, an error message is printed on <strong>the</strong>principal print device.DISC next seeks home on all drives to beinitialized (up to four), and writes each of 3patterns to an entire cylinder, one sector at a time.The patterns used, in sequence, are /AAAA, /5555,and /0000.DISC <strong>the</strong>n reads back each sector and comparesit with <strong>the</strong> pattern written (including <strong>the</strong> sector address).If no error occurs, DISC writes <strong>the</strong> nextpattern to <strong>the</strong> same cylinder.If <strong>the</strong> error bit of <strong>the</strong> DSW is set at any time orif <strong>the</strong> data read does not compare with <strong>the</strong> patternwritten, DISC repeats <strong>the</strong> write/read sequence for<strong>the</strong> entire cylinder 50 times, using <strong>the</strong> same pattern.If a second error occurs, DISC puts <strong>the</strong> addressof <strong>the</strong> first sector on <strong>the</strong> cylinder in which <strong>the</strong> erroroccurred in <strong>the</strong> defective cylinder table.DISC performs this write/read sequence foreach of <strong>the</strong> 203 cylinders.Section 12. <strong>System</strong> Library 105


If (1) cylinder zero is defective, (2) more thanthree cylinders are defective, or (3) it is impossibleto write a sector address, DISC types out an errormessage indicating that <strong>the</strong> cartridge may not beused.If <strong>the</strong> cartridge is good, DISC writes <strong>the</strong> defectivecylinder addresses, if any, in <strong>the</strong> first three wordsof sector @IDAD. Wherever a 'defective cylinderdoes not exist, /0658 is written in <strong>the</strong> first three wordsof sector @IDAD. DISC also writes <strong>the</strong> cartridge EDin word four of sector @IDAD, writes zeros in words7-30, and stores an error message program beginningin word 31. If a cold start is attempted using thisnon-system cartridge, control is passed from <strong>the</strong>Cold Start Loader to <strong>the</strong> error message programinstead of <strong>the</strong> Cold Start <strong>Program</strong>. An error messageis printed on <strong>the</strong> Console Printer and no coldstart is effected.DISC initializes <strong>the</strong> following words of DCOM(sector @DCOM):Location#ANDU#BNDU#F PAD#CIDN#CIBA#ULETWord12345678Value Inserted/0200/0200/0020Cartridge ID/0008/0002DISC initializes LET (sector 2) as follows:DISC terminates with a CALL EXIT.Contents/0000/0020/0000/0138/0000,/7112 The name1DUMY (in/4528 name code)/0620subroutine FSLEN. This IOAR header is used tocall in <strong>the</strong> principal print device subroutine whenit is needed by FSYSU.Next, IDENT reads DCOM to obtain #PCID, <strong>the</strong>table of disk cartridge IDs and <strong>the</strong>ir related physicaldrive numbers.IDENT <strong>the</strong>n prints <strong>the</strong> cartridge ID and physicaldrive number from <strong>the</strong> table until all available cartridgeIDs have been printed.IDENT terminates with a CALL EXIT.CHANGE CARTRIDGE ID (ID)This program changes <strong>the</strong> ID on up to four disk cartridges.The IOAR headers for <strong>the</strong> principal input device,principal print device, and principal conversionsubroutines are obtained from SLET on <strong>the</strong> systemcartridge. These subroutines are used for input/output.Using <strong>the</strong> RDREC subroutine, <strong>the</strong> *ID record isfetched. RDREC also builds two tables in corestorage from <strong>the</strong> FROM-TO fields of <strong>the</strong> *ID record,one in packed EBCDIC for printer output, <strong>the</strong> o<strong>the</strong>rin binary for matching <strong>the</strong> cartridge IDs. DOOMis fetched from <strong>the</strong> master cartridge to obtain <strong>the</strong>cartridge ID table (#CIDN).Each drive on <strong>the</strong> system is selected. If <strong>the</strong>selected drive is present, <strong>the</strong> cartridge ID isfetched. The ID is matched with <strong>the</strong> IDs in #CIDN.If no matching ID is found, <strong>the</strong> ID is printed withan error message and <strong>the</strong> job is terminated. Thecartridge ID of <strong>the</strong> selected drive is matched to <strong>the</strong>IDs in <strong>the</strong> FROM-TO table. When a match occurs, <strong>the</strong>cartridge ID is changed to <strong>the</strong> 'TO' ID; <strong>the</strong> ID for<strong>the</strong> cartridge in #CIDN is changed and <strong>the</strong> 'TO' IDis written onto <strong>the</strong> selected drive. IDs that do notmatch entries in <strong>the</strong> FROM-TO table are bypassed.When all IDs have been processed, #CIDN iswritten back to <strong>the</strong> master cartridge and <strong>the</strong> FROM-TO table is printed. After printing <strong>the</strong> FROM-TOtable, ID terminates with a CALL EXIT.DISK COPY (COPY)PRINT CARTRIDGE ID (IDENT)This program copies <strong>the</strong> contents of one or moreThis program prints out <strong>the</strong> ID and <strong>the</strong> physical drive cartridges (except words 0-3 of sector @IDAD) ontonumber of each disk cartridge mounted on <strong>the</strong> system. from one to four o<strong>the</strong>r cartridges.IDENT first fetches <strong>the</strong> principal print deviceCOPY first fetches <strong>the</strong> system device subroutinesubroutine IOAR header from SLET using <strong>the</strong>IOAR headers from SLET using <strong>the</strong> RDREC subroutine.106


The system device subroutines are called in by <strong>the</strong>RDREC subroutine as <strong>the</strong>y are needed by <strong>the</strong> program.The RDREC subroutine also reads <strong>the</strong> *IDrecord and converts <strong>the</strong> numbers to binary andstores <strong>the</strong>m in <strong>the</strong> FROM-TO table.COPY <strong>the</strong>n checks <strong>the</strong> FROM and TO field IDsto ensure that each specified cartridge is available.An error message is printed for <strong>the</strong> unavailableFROM or TO cartridges.<strong>All</strong> available FROM-TO cartridge combinationsare <strong>the</strong>n processed. Sectors 0 thru 7 of cylinder 0of each source cartridge are read and written, exceptfor <strong>the</strong> defective cylinder table, to each specifieddestination cartridge. Sectors 0 thru 7 of <strong>the</strong>next 199 logical cylinders of each source cartridgeare copied, 4 sectors at a time to each specifieddestination cartridge.One cartridge at a time is processed and at <strong>the</strong>end of each, a check for a Keyboard interrupt ismade. If any occurred during <strong>the</strong> previous copy,<strong>the</strong> interrupt is now processed.After all cylinders from <strong>the</strong> specified cartridgehave been copied, a completion message is printedusing <strong>the</strong> principal print device subroutine.COPY terminates with a CALL EXIT.DELETE CIB (DLCIB)This program deletes <strong>the</strong> Core Image Buffer (CIB)from a non-system cartridge to provide additionaldisk storage area for <strong>the</strong> User Area and WorkingStorage. An *ID record is used to specify <strong>the</strong> cartridgeon which <strong>the</strong> CIB is to be deleted.DLCIB uses <strong>the</strong> subroutine RDREC to obtain<strong>the</strong> system device subroutine IOAR headers fromSLET on <strong>the</strong> master cartridge and to fetch <strong>the</strong> *If)record containing <strong>the</strong> affected cartridge ID. TheRDREC subroutine also converts <strong>the</strong> specifiedcartridge ID to binary.If <strong>the</strong> specified cartridge is not present, DLCIBprints an error message and terminates with aCALL EXIT.The CIB of <strong>the</strong> specified cartridge is deleted.The User Area and Working Storage are movedone cylinder closer to cylinder zero. Accordingly,<strong>the</strong> file-protection address for <strong>the</strong> specified cartridgeis altered in <strong>the</strong> $FPAD quintuple in COMMA.DCOM of <strong>the</strong> master cartridge is <strong>the</strong>n read.The sector addresses of <strong>the</strong> CIB, User Area, andWorking Storage are altered. DCOM is writtenback to <strong>the</strong> master cartridge and to <strong>the</strong> alteredcartridge.DLCIB prints <strong>the</strong> new User Area and WorkingStorage addresses for <strong>the</strong> specified cartridge using<strong>the</strong> principal print device subroutine.DLCIB terminates with a CALL EXIT.DUMP SLET TABLE (DSLET)DSLET dumps <strong>the</strong> <strong>System</strong> Location EquivalenceTable (SLET) to <strong>the</strong> principal print device. Four4-word SLET entries are printed per line.DSLET reads <strong>the</strong> SLET table into a 640-wordbuffer in core storage, prints <strong>the</strong> SLET table using<strong>the</strong> principal print device subroutine, and terminateswith a CALL EXIT.Section 12. <strong>System</strong> Library 107


<strong>1130</strong> Disk Data File Conversion <strong>Program</strong>The following information is designed to assist inunderstanding <strong>the</strong> program flowcharts by presentingan overall view of <strong>the</strong> purpose of each major part of<strong>the</strong> program.FLOWCHARTS:CHART ACHART BCHART CCHART DCHART ECHART FCHART GPROGRAM NAME: DFCNVGENERAL PROGRAM DESCRIPTION: The programconverts one <strong>1130</strong> FORTRAN and/or CommercialSubroutine Package (<strong>1130</strong>-SE-25X) disk data file toone <strong>1130</strong> RPG disk data file. FORTRAN files createdusing logical unit number 10 cannot be converted byDFCNV. Converted files cannot be processed asISAM files. The program accepts all FORTRAN andCommercial Subroutine Package (CSP) disk dataformats and a two-word integer format (see AppendixE). The input data may be a disk data file or<strong>the</strong> corresponding cards in card data format. <strong>All</strong>printing is performed on <strong>the</strong> principal printer. Thesubroutine DISK1 is used to perform all disk I/0operations.PART 1:ENTRY POINT: FC000 (CHART A)The system device subroutines for <strong>the</strong> principal inputand print devices and input data conversion areread into core and pertinent interrupt pointers areset.• The File Description card (D in column 72) isread and printed, and its fields are diagnosed forerrors.• LET/FLET searches are performed for input(if disk file input specified) and output files andcalculated file sizes are checked against actual filesizes.INTERNAL SUBROUTINES:FC015 - The card read and/or print function in thissection of <strong>the</strong> program is not specificallysubroutinized, but it is <strong>the</strong> general cardinput function for <strong>the</strong> entire program.CONVT- Subroutine which converts a right-justifiedEBCDIC coded decimal field of variablelength to a one word binary value and advances<strong>the</strong> field pointer beyond <strong>the</strong> fieldjust converted. It accounts for leadingblanks in a File Description (D) card fieldand causes immediate program terminationwhen a D-card field error is detected.SEARC- Subroutine which checks <strong>the</strong> file name referencedby <strong>the</strong> field pointer for validity,packs <strong>the</strong> file name, adds <strong>the</strong> disk dataformat indicator to <strong>the</strong> packed file nameand performs <strong>the</strong> LET/FLET search for<strong>the</strong> file.ERRORS DETECTED: The errors detected in part1 are F01, F02, F03, F06 and F08 (see AppendixF).PART 2:ENTRY POINT: FC016 (CHARTS B and C)• The Field Specification cards (S in column 72) areread and printed, each field specification is diagnosedfor errors and <strong>the</strong> specification information iscompressed and saved.• If it is present, <strong>the</strong> Commercial Subroutine Package A3 format translation table (A in column 72) isread and printed and <strong>the</strong> 40 translation charactersare saved.• The end-of-file card (/ * in column 1 and 2) isread and printed.Note: A general flowchart of <strong>the</strong> compress/save operationdescribed above has been provided in ChartC although this operation is in fact specific to fieldtype. See Appendix for a description of each fieldtype compression.INTERNAL SUBROUTINE:CONVT: Subroutine is described in part 1.ERRORS DETECTED: The errors detected in part 2are F04, F06 and F07. It is noted that only one F04message is printed for each field specification inerror although more than one error may occur withina field specification.PART 3:ENTRY POINT: FCO26 (CHART D)• Final error checking is performed and programt 07. 1 •


termination is effected if any control card or specificationerrors have occurred.• The input data is read, converted and insertedinto <strong>the</strong> RPG data file.• The operation complete message is printed andcontrol is returned to <strong>the</strong> supervisor.INTERNAL SUBROUTINE:CDDSK - Subroutine which converts card data formatteddata to disk data format when cardinput is specified and relocates input dataso that it appears to be disk data.Each of <strong>the</strong> field conversion subroutines is discussedunder part 4.ERRORS DETECTED: The errors detected in part3 are F05, F06 and F09.NOTE: The Disk File protection deliminates$ FPAD - $FPAD +4 of COMMA are modified during<strong>the</strong> conversion portion of DFCNV. These modifiedCOMMA words must be restored prior to fur<strong>the</strong>rprocessing if unforseen problems (accidential immediatestop) cause abnormal termination of DFCNVThese words are restored by DFCNV under normalprogram termination following successful conversion.PART 4FIELD CONVERSION SUBROUTINE (CHARTS E, Fand G):• These subroutines are designed to retrieve <strong>the</strong>input field and use <strong>the</strong> specifications contained in <strong>the</strong>compression area to convert <strong>the</strong> field.• The internal subroutine INSRT (described belowand on CHART G) is called by each conversion subroutineto place <strong>the</strong> converted field into <strong>the</strong> outputrecord. Control is <strong>the</strong>n returned to <strong>the</strong> mainlinepart of <strong>the</strong> program (part 3) to convert <strong>the</strong> nextfield.I-conversion (ICNVT): The sign of <strong>the</strong> integer issaved and its absolute value is converted to 5 decimaldigits (by repeated division by 10). Each digitis placed with positive zone (F) into a 31 word workarea which has been initialized to /F0. The field is<strong>the</strong>n placed in <strong>the</strong> RPG record.J-conversion (JCNVT): The sign of <strong>the</strong> integer issaved and its absolute value is converted to 10 decimaldigits (by repeated division by 10). The decimalconversion is performed by first determining<strong>the</strong> range of <strong>the</strong> two-word integer, converting <strong>the</strong>low order 7 decimal digits, <strong>the</strong>n converting <strong>the</strong> highorder 3 decimal digits after adjusting for <strong>the</strong> rangefactor. Each digit is placed with positive zone (F)into a 31 word work area which has been initializedto /F0. The field is <strong>the</strong>n placed in <strong>the</strong> RPG record.D-conversion (DCNVT): The sign of <strong>the</strong> CSP D1field is saved (from <strong>the</strong> low order of <strong>the</strong> field) and <strong>the</strong>ones' complement of <strong>the</strong> low order word is taken.Each digit (see D1 data format, Appendix E) is placedwith positive zone (F) into a 31 word work area whichhas been initialized to /F0. The field is <strong>the</strong>n p] acedin <strong>the</strong> RPG record.E-conversion (ECNVT): The CSP D4 field (see AppendixE) is converted to Dl format and placed in a200 work work area. The subroutine DCNVT is<strong>the</strong>n used to place <strong>the</strong> field in <strong>the</strong> RPG record.B(C)-conversion (BCNVT): The subroutine INSRT iscalled to insert <strong>the</strong> field into <strong>the</strong> RPG record (notshown on charts).X-conversion (XCNVT): The input data pointer isadjusted to bypass <strong>the</strong> number of words specified(not shown on charts).F-conversion (FCNVT): Each word of <strong>the</strong> input fieldis decoded into 3 translation table displacements bymeans of <strong>the</strong> following formulae.I> 0, N1=(I/1600)+20N1=(1±32000)/1600N2=(I-(N1-20) *1600)/40N3=I-(N1-20) *1600-(N2*40)where I represents <strong>the</strong> input word and N1, N2 and N3represent <strong>the</strong> translation table displacements relativeto card column 40 of <strong>the</strong> first, second and third characters.The 3 translation characters are <strong>the</strong>n retrievedand placed in <strong>the</strong> RPG record. This procedure continuesuntil <strong>the</strong> entire input field has been converted.R-conversion (RCNVT): The real number is loadedinto <strong>the</strong> FAC and normalized. If <strong>the</strong> mantissa iszero, <strong>the</strong> 31 word work area (which has been initializedto /F0) is used to fill <strong>the</strong> RPG field and controlis returned to <strong>the</strong> mainline part of DFCNV. If <strong>the</strong>mantissa is non-zero, <strong>the</strong> sign of <strong>the</strong> field is savedand <strong>the</strong> absolute value of <strong>the</strong> mantissa is used in conjunctionwith FBTN2 and MPY to obtain <strong>the</strong> decimaldigits. Each digit is placed with positive zone (F)▪ 107. 2


into a 31 word work area which has been initialized to/FO. The field is <strong>the</strong>n placed in <strong>the</strong> RPG record.The RPG field is set to zeroes or nines if <strong>the</strong>real number being converted is too small or too largerespectively to fit into <strong>the</strong> RPG field.INTERNAL SUBROUTINES:INSRT- Subroutine which places <strong>the</strong> converted fieldinto <strong>the</strong> RPG record. It uses <strong>the</strong> techniqueof placing one eight-bit character (or twofour-bit packed digits) into <strong>the</strong> RPG fieldat a time, alternating between <strong>the</strong> left andright halves of a word. If a numeric fieldis packed, two decimal digits are retrievedat a time; if unpacked, single digit retrievalis used. Alphabetic retrieval correspondsto that of numeric unpacked exceptthat characters are returned from units of1,2 or 3 words ra<strong>the</strong>r than a one characterper word work area. Once a numeric fieldhas been retrieved, <strong>the</strong> sign sign is added to<strong>the</strong> Field (F=positive; D=negative). SeeDFCNV field type examples section of <strong>IBM</strong><strong>1130</strong> Disk Monitor <strong>System</strong>, Version 2, <strong>Program</strong>mingand Operator's Guide, Form C26-Form C26-3717.FBTN2 - Subroutine which generates <strong>the</strong> first decimaldigit and <strong>the</strong> decimal exponent of areal number field (adapted from RBTDsubroutine, see <strong>IBM</strong> <strong>1130</strong> SubroutineLibrary, Form C26-5929).MPY - Subroutine which generates <strong>the</strong> decimaldigits of a real number field (adaptedfrom FBTD subroutine, see <strong>IBM</strong> <strong>1130</strong>Subroutine Library, Form C26-5929).EXTERNAL SUBROUTINES:FLD- Subroutine which loads a standard precisionfloating point number into <strong>the</strong> FAC(see <strong>IBM</strong> <strong>1130</strong> Subroutine Library, FormC26-5929).E LD— Subroutine which loads an extended precisionfloating point number into <strong>the</strong> FAC(see <strong>IBM</strong> <strong>1130</strong> Subroutine Library, FromC26-5929).NORM- Subroutine which normalizes <strong>the</strong> numberin <strong>the</strong> FAC (see <strong>IBM</strong> <strong>1130</strong> SubroutineLibrary, Form C26-5929).ERRORS DETECTED: The F10 error is detected in<strong>the</strong> R-conversion subroutine RCNVT.107.3 •


SYNCHRONOUS COMMUNICATIONS ADAPTERSUBROUTINE (SCAT1)Alarm. If <strong>the</strong> operation is <strong>the</strong> turning on/off of <strong>the</strong>audible alarm, SCAT1Call Processing1. turns <strong>the</strong> audible alarm on in <strong>the</strong> local systemif digit 4 of <strong>the</strong> control parameter is zeroThe call processing routine2. turns <strong>the</strong> audible alarm off in <strong>the</strong> local systemif digit 4 of <strong>the</strong> control parameter is non-zero• Checks <strong>the</strong> call parameters for errors 3. returns to <strong>the</strong> calling routine at LIBF+2.a Sets up <strong>the</strong> processing of subsequent interrupts Close. If <strong>the</strong> operation is a Close, SCAT1depending on <strong>the</strong> operation requested by <strong>the</strong> call1. resets <strong>the</strong> SCA• Initiates <strong>the</strong> requested operation 2. clears <strong>the</strong> programmed indicators in SCAT13. decrements <strong>the</strong> $SCAT counter by 1 (word 17Operationin COMMA)4. returns to <strong>the</strong> calling routine at LIBF+2When entered via a LIBF, SCAT1Open. If <strong>the</strong> operation is an Open, SCAT11. saves XR1, XR2, accumulator and extension, andstatus1. determines <strong>the</strong> requested mode of operation2. examines <strong>the</strong> control parameter to determine <strong>the</strong> from digit 4 of <strong>the</strong> control parameter (digit 4operation requestedzero indicates Data In, non-zero indicates Data3. obtains and saves <strong>the</strong> I/O area address and error Out)routine address parameters if <strong>the</strong> operation is 2. puts <strong>the</strong> addresses of <strong>the</strong> read response, writean Open, Transmit, or Acknowledge and Receive response, and timeout routines for <strong>the</strong> Openand Error Statisticsoperation into <strong>the</strong> interrupt branch addresses4. determines, if <strong>the</strong> operation is a Transmit or 3. begins transmission of <strong>the</strong> IDLE character forAcknowledge and Receive, from digit 3 of <strong>the</strong>1. 5 secondscontrol parameter if ILRCs will be present in 4. increments <strong>the</strong> $SCAT counter by 1transmitted or received data records (digit 3 5. sets <strong>the</strong> retry counter to 7non-zero indicates ILRCs will be present, zero 6. sets RTBSY on (non-zero)indicates ILRCs will not be present)7. returns to <strong>the</strong> calling routine at LIBF+4Test. If <strong>the</strong> operation is a Test, SCAT11. checks <strong>the</strong> routine busy indicator (RTBSY)2. returns to <strong>the</strong> calling routine at LIBF+3 ifRTBSY is off (zero)3. returns to <strong>the</strong> calling routine at LIBF+2 ifRTBSY is on (non-zero)Auto Answer. If <strong>the</strong> operation is <strong>the</strong> enabling/disabling of <strong>the</strong> auto answer interrupt, SCAT11. (if digit 4 of <strong>the</strong> control parameter is zero)enables <strong>the</strong> auto answer interrupt, saves <strong>the</strong>I/O area address, and returns to <strong>the</strong> callingroutine at LIBF+32. (if digit 4 of <strong>the</strong> control parameter is non-zero)disables <strong>the</strong> auto answer interrupt and returnsto <strong>the</strong> calling routine at LIBF+2Transmit. If <strong>the</strong> operation is a Transmit, SCAT11. puts <strong>the</strong> addresses for <strong>the</strong> read response,write response, and timeout routines for <strong>the</strong>Transmit operation into <strong>the</strong> interrupt branchaddresses2. determines <strong>the</strong> type of transmission from digit 2of <strong>the</strong> control parameter (digit 2 equal to 0indicates transmission of a data record, 1 indicatestransmission of <strong>the</strong> End of Transmissionsequence, and 2 indicates transmission of <strong>the</strong>Telephone sequence)3. performs a Start Write (puts <strong>the</strong> SCA in <strong>the</strong> transmitmode and causes a write response interrupt)4. sets <strong>the</strong> retry counter to 75. sets RTBSY on (non-zero)6. returns to <strong>the</strong> calling routine at LIBF+4108


Acknowledge and Receive. If <strong>the</strong> operation is anAcknowledge and Receive, SCAT11. puts <strong>the</strong> addresses of <strong>the</strong> read response, writeresponse, and timeout routines for <strong>the</strong> Receiveoperation into <strong>the</strong> interrupt branch addresses2. determines <strong>the</strong> type of acknowledgement to betransmitted from digit 2 of <strong>the</strong> control parameter(digit 2 zero indicates a positive acknowledgement,non-zero indicates a negative acknowledgment)3. performs a Start Write (puts <strong>the</strong> SCA in <strong>the</strong>transmit mode and causes a write responseinterrupt)4. sets <strong>the</strong> retry counter to 75. sets RTBSY on (non-zero)0, returns to <strong>the</strong> calling routine at LIBF+4ErrorsWhen SCAT1 detects an error in <strong>the</strong> calling processing,a code indicating <strong>the</strong> error found is placed in<strong>the</strong> accumulator, <strong>the</strong> address of <strong>the</strong> LIBF is placedinto location 40 in COMMA, and a branch is takento location 41, a WAIT. When PROGRAM STARTis pressed, a branch is taken to <strong>the</strong> address inlocation 40 (i.e. , <strong>the</strong> LIBF is re-executed).Interrupt ProcessingThe interrupt processing routine• Handles read response, write response, andtimeout interrupts for <strong>the</strong> Open, Transmit, andReceive operations• Handles <strong>the</strong> auto answer request interrupt• Maintains an error statistics log of certain error• Is able to log timeouts and all characters transmittedand receivedOperationThe paragraphs below describe <strong>the</strong> processing performedby SCAT1 to accomplish an entire operation(Open-Data In, Open-Data Out, Transmit, orAcknowledge and Receive). Actually, this processingis accomplished in a series of interrupts initiated by<strong>the</strong> user's call to SCAT1.An interrupt occurs for each character receivedor transmitted. SCAT1, by means of programmedindicators, keeps track of <strong>the</strong> characters to bereceived or transmitted next. After transmissionor reception of each character, SCAT1 returns to<strong>the</strong> interrupted program.At <strong>the</strong> completion of an entire operation, a turnaroundof <strong>the</strong> line occurs and IDLE characters aretransmitted for 1.5 seconds. During this 1.5seconds <strong>the</strong> user must call SCAT1, specifying <strong>the</strong>next operation to be performed.When entered from ILSO1 due to an interrupt by<strong>the</strong> SCA, SCAT1 senses <strong>the</strong> device status word todetermine <strong>the</strong> type of interrupt.Write Response Interrupt. If a write responseinterrupt has occurred, SCAT11. branches to <strong>the</strong> write response routine pointedto by <strong>the</strong> interrupt response addresses as setup in <strong>the</strong> call processingRead Response Interrupt. If a read responseinterrupt has occurred, SCAT11. checks to determine if a simultaneous timeoutinterrupt has occurred2. branches to <strong>the</strong> timeout routine pointed to by<strong>the</strong> interrupt response addresses as set up in<strong>the</strong> call processing if a simultaneous timeoutinterrupt has occurred3. reads <strong>the</strong> character received by <strong>the</strong> SCA intocore storage if no simultaneous timeoutinterrupt has occurred4. branches to <strong>the</strong> read response routine pointedto by <strong>the</strong> interrupt response addresses as §etup in <strong>the</strong> call processingTimeout Interrupt. If a timeout interrupt has occurred,SCAT11. branches to <strong>the</strong> timeout routine pointed to by <strong>the</strong>interrupt response addresses as set by <strong>the</strong>call processingAuto Answer Interrupt. If an auto answer interrupthas occurred, SCAT11. determines from bit 6 of <strong>the</strong> DSW if <strong>the</strong> autoanswer interrupt is disabled/enabled (bit 6zero indicates disabled, 1 enabled)2. returns to ILSO1 if <strong>the</strong> auto answer interruptis disabled3. stores a non-zero value at <strong>the</strong> I/O area addressif <strong>the</strong> auto answer interrupt is enabled4. disables <strong>the</strong> auto answer interrupt5. returns to ILSO1Write Response (Open). If <strong>the</strong> mode of operationis Data In, <strong>the</strong> write response routine1. transmits <strong>the</strong> End of Idle sequence2. performs a Start Read (puts <strong>the</strong> SCA in <strong>the</strong>1 08. 1


eceive mode and causes a read responseinterrupt)If <strong>the</strong> mode of operation is Data out, <strong>the</strong> writeresponse routine1. transmits <strong>the</strong> End of Idle sequence2. performs a Start Read3. (when <strong>the</strong> read response routine has received<strong>the</strong> End of Idle sequence in response to <strong>the</strong>End of Idle sequence) transmits <strong>the</strong> Inquirysequence4. performs a Start ReadRead Response (Open). If <strong>the</strong> mode of operation isData In, <strong>the</strong> read response routine1. (when <strong>the</strong> write response routine has transmitted<strong>the</strong> End of Idle sequence) expects toreceive <strong>the</strong> Inquiry sequence2. (if <strong>the</strong> Inquiry sequence is received) setsRTBSY off (zero), turns <strong>the</strong> line, around, andbegins transmission of <strong>the</strong> IDLE characterfor 1. 5 seconds (<strong>the</strong> Open-Data In operation iscomplete)3. (if <strong>the</strong> End of Idle sequence is received) turns<strong>the</strong> line around and begins transmission of <strong>the</strong>IDLE character for 1.5 seconds4. (if <strong>the</strong> Inquiry sequence is not received)branches to <strong>the</strong> timeout routineIf <strong>the</strong> mode of operation is Data Out, <strong>the</strong> readresponse routine1. (when <strong>the</strong> write response routine has transmitted<strong>the</strong> End of Idle sequence) expects to receive<strong>the</strong> End of Idle sequence(if <strong>the</strong> End of Idle sequence is received) turns<strong>the</strong> line around and begins transmission of <strong>the</strong>IDLE character for 1.5 seconds3. (if <strong>the</strong> End of Idle sequence is not received)branches to <strong>the</strong> timeout routine(when <strong>the</strong> End of Idle sequence has beenreceived and <strong>the</strong> write response routine hastransmitted <strong>the</strong> Inquiry sequence) expects toreceive <strong>the</strong> CL character followed by <strong>the</strong>ACK2 character5. (if <strong>the</strong> CL character followed by <strong>the</strong> ACK2character is received) sets RTBSY off (zero),turns <strong>the</strong> line around, and begins transmissionof <strong>the</strong> IDLE character for 1.5 seconds (<strong>the</strong>Open-Data Out operation is complete)(if <strong>the</strong> CL character is not received,or if <strong>the</strong> CL character is not followedby <strong>the</strong> ACK2 character) branches to <strong>the</strong>timeout routineTimeout (Open). If <strong>the</strong> mode of operation is datain, <strong>the</strong> timeout routine1. branches to <strong>the</strong> user's error routine if a dataset failure has occurred2. (on <strong>the</strong> first through seventh entries to thisroutine) decrements <strong>the</strong> retry counter by 1,begins transmission of <strong>the</strong> IDLE character for1.5 seconds, and returns to <strong>the</strong> interruptedroutine while ano<strong>the</strong>r attempt is made to receive<strong>the</strong> expected sequence3. (on <strong>the</strong> eighth entry to this routine) branches to<strong>the</strong> user's error routine if synchronization hasnot been established (after 7 attempts <strong>the</strong> End ofIdle sequence was not received in response to<strong>the</strong> End of Idle sequence)4. (on <strong>the</strong> eighth entry to this routine) branches to<strong>the</strong> user's error routine if nothing is receivedin response to <strong>the</strong> End of Idle sequence5. (on return from <strong>the</strong> user's error routine) resets<strong>the</strong> retry counter to 7 if <strong>the</strong> accumulator is nonzeroand returns to ILSO16. performs a Close operation (see "Close" underCall Processing, above) if <strong>the</strong> accumulator iszero and returns to ILSO1If <strong>the</strong> mode of operation is Data Out, <strong>the</strong> timeoutroutine1. branches to <strong>the</strong> user's error routine if a dataset failure has occurred2. (on <strong>the</strong> first through seventh entries to thisroutine) decrements <strong>the</strong> retry counter by 1,begins transmission of <strong>the</strong> IDLE character for1. 5 seconds, and returns to <strong>the</strong> interruptedroutine while ano<strong>the</strong>r attempt is made to receive<strong>the</strong> expected sequence3. (on <strong>the</strong> eighth entry to this routine) branches to<strong>the</strong> user's error routine if synchronization hasnot been established (after 7 attempts <strong>the</strong> Endof Idle sequence was not received in responseto <strong>the</strong> End of Idle sequence)4. (on <strong>the</strong> eighth entry to this routine) branches to<strong>the</strong> user's error routine if nothing is receivedin response to <strong>the</strong> End of Idle sequence5. (on <strong>the</strong> eighth entry to this routine) branches to<strong>the</strong> user's error routine if <strong>the</strong> Inquiry sequenceis received in response to <strong>the</strong> End of Idlesequence or in response to <strong>the</strong> Inquiry sequence6. (on return from <strong>the</strong> user's error routine) resets<strong>the</strong> retry counter to 7 if <strong>the</strong> accumulator is nonzeroand returns to ILSO17. performs a Close operation (see "Close" underCall Processing, above) if <strong>the</strong> accumulator iszero and returns to ILSO1108. 2


Write Response (Transmit). If <strong>the</strong> type of transmissionis Transmit Data, <strong>the</strong> write response routine1. (following <strong>the</strong> initial write response interrupt)transmits <strong>the</strong> Start of Record sequence, using<strong>the</strong> appropriate start of record character--SOR1 for odd numbered records, SOR2 for evennumbered records2. next, transmits <strong>the</strong> data characters from <strong>the</strong>I/O area, building and transmitting ILRCs, ifrequired3. and finally, transmits <strong>the</strong> End of Record sequenceat <strong>the</strong> depletion of <strong>the</strong> data word count4. performs a Start Read (puts <strong>the</strong> SCA in <strong>the</strong>receive mode and causes a read responseinterrupt)If <strong>the</strong> type of transmission is Transmit EOT,<strong>the</strong> write response routine1. (following <strong>the</strong> initial write response interrupt)transmits <strong>the</strong> End of Transmission sequence2. performs a Start ReadIf <strong>the</strong> type of transmission is Transmit TEL, <strong>the</strong>write response routine1. (following <strong>the</strong> initial write response interrupt)transmits <strong>the</strong> Telephone sequence2. performs a Start ReadRead Response (Transmit). If <strong>the</strong> type of transmissionis Transmit Data, <strong>the</strong> read response routine1. (when <strong>the</strong> write response routine has transmitted<strong>the</strong> Start of Record sequence, using <strong>the</strong> appropriatestart of record character, followedby <strong>the</strong> data characters, followed by <strong>the</strong> End ofRecord sequence) expects to receive an acknowledgementincluding <strong>the</strong> appropriateacknowledgement character--ACK1 for oddnumbered records, ACK2 for even numberedrecords--or <strong>the</strong> Error Received sequence2. (if <strong>the</strong> appropriate acknowledgement is received)turns <strong>the</strong> line around, and begins transmissionof <strong>the</strong> IDLE character for 1. 5 seconds (<strong>the</strong>Transmit Data operation is complete)3. (if <strong>the</strong> Error Received sequence is received)decrements <strong>the</strong> retry counter by 1 and re-issues<strong>the</strong> initial Start Write to transmit <strong>the</strong> data record4. (if, after 7 attempts to transmit <strong>the</strong> data record,<strong>the</strong> appropriate acknowledgement is not received)branches to <strong>the</strong> user's error routine5. (on return from <strong>the</strong> user's error routine) resets<strong>the</strong> retry counter to 7 and re-issues <strong>the</strong> initialStart Write to transmit <strong>the</strong> data record if <strong>the</strong>accumulator is positive6. sets RTBSY off (zero), turns <strong>the</strong> line around,and begins transmission of <strong>the</strong> IDLE characterfor 1.5 seconds if <strong>the</strong> accumulator is negative(<strong>the</strong> Transmit Data operation is complete)7. performs a Close operation (see "Close" underCall Processing, above) if <strong>the</strong> accumulator iszero8. (if nothing is received in response to <strong>the</strong> transmitteddata record) a timeout occurs9. (if <strong>the</strong> something o<strong>the</strong>r than <strong>the</strong> appropriateacknowledgement or <strong>the</strong> Error Received sequenceis received) decrements <strong>the</strong> retry counter by 1and issues <strong>the</strong> Start Write to transmit <strong>the</strong> Inquirysequence; <strong>the</strong>n turns <strong>the</strong> line around and expectsto receive <strong>the</strong> appropriate acknowledgementIf <strong>the</strong> type of transmission is Transmit EOT, <strong>the</strong>read response routine1. (when <strong>the</strong> write response routine has transmitted<strong>the</strong> End of Transmission sequence) expects toreceive <strong>the</strong> End of Transmission sequence2. (if <strong>the</strong> End of Transmission sequence is received)sets RTBSY off (zero), turns <strong>the</strong> line around,and begins <strong>the</strong> transmission of <strong>the</strong> IDLE characterfor 1.5 seconds (<strong>the</strong> Transmit EOToperation is complete)3. (if <strong>the</strong> End of Transmission sequence is notreceived) decrements <strong>the</strong> retry counter by 1and re-issues <strong>the</strong> initial Start Write to transmit<strong>the</strong> End of Transmission sequence4. (if, after 7 attempts to transmit <strong>the</strong> End ofTransmission sequence, <strong>the</strong> End of Transmissionis not received in response) branches to<strong>the</strong> user's error routine5. (on return from <strong>the</strong> user's error routine) resets<strong>the</strong> retry counter to 7 and re-issues <strong>the</strong> initialStart Write to transmit <strong>the</strong> End of Transmissionsequence if <strong>the</strong> accumulator is positive6. sets RTBSY off (zero), turns <strong>the</strong> line around,and begins transmission of <strong>the</strong> IDLE characterfor 1.5 seconds if <strong>the</strong> accumulator is negative(<strong>the</strong> Transmit EOT operation is complete)7. performs a Close operation (see "Close" underCall Processing, above) if <strong>the</strong> accumulator iszeroIf <strong>the</strong> type of transmission is Transmit TEL, <strong>the</strong>read response routine1. (when <strong>the</strong> write response routine has transmitted<strong>the</strong> Telephone sequence) expects to receive <strong>the</strong>Telephone sequence in response108. 3


2. (if <strong>the</strong> Telephone sequence is received) setsRTBSY off (zero), turns <strong>the</strong> line around, andbegins transmission of <strong>the</strong> IDLE character for1.5 seconds (<strong>the</strong> Transmit TEL operation iscomplete)3. (if <strong>the</strong> Telephone sequence is not received)decrements <strong>the</strong> retry counter by 1 and re-issues<strong>the</strong> initial Start Write to transmit <strong>the</strong> Telephonesequence4. (if, after 7 attempts to transmit <strong>the</strong> Telephonesequence, <strong>the</strong> Telephone sequence is notreceived in response) branches to <strong>the</strong> user'serror routine5. (on return from <strong>the</strong> user's error routine) resets<strong>the</strong> retry counter to 7 and re•-issues <strong>the</strong> initialStart Write to transmit <strong>the</strong> Telephone sequenceif <strong>the</strong> accumulator is positive.6. sets RTBSY off (zero), turns <strong>the</strong> line around,and begins transmission of <strong>the</strong> IDLE characterfor 1.5 seconds if <strong>the</strong> accumulator is negative(<strong>the</strong> Transmit TEL operation is complete)performs a Close operation (see "Close" underCall. Processing, above) if <strong>the</strong> accumulator iszeroTimeout (Transmit). If a timeout interrupt occurs,<strong>the</strong> timeout routine1. branches to <strong>the</strong> read response routine to handle<strong>the</strong> timeout as if an invalid response wasreceivedWrite Response (Receive). The write responseroutine(if a data record was received in <strong>the</strong> lastAcknowledge and Receive operation) transmitsan acknowledgement, including <strong>the</strong> appropriateacknowledgement character--ACK1 for oddnumbered records, ACK2 for even numberedrecords (if <strong>the</strong> acknowledge is to be positive);<strong>the</strong>n performs a Start Read (puts <strong>the</strong> SCA in <strong>the</strong>receive mode and causes a read responseinterrupt)(if a data record was received in <strong>the</strong> lastAcknowledge and Receive operation) transmits<strong>the</strong> Error Received sequence (if <strong>the</strong> acknowledgementis to be negative); <strong>the</strong>n performs a StartRead(if <strong>the</strong> End of Transmission sequence has beenreceived) transmits <strong>the</strong> End of Transmissionsequence; <strong>the</strong>n performs a Start Read4. (if <strong>the</strong> Telephone sequence has been received)transmits <strong>the</strong> Telephone sequence; <strong>the</strong>n performsa Start ReadRead Response (Receive). The read response routine1. (after <strong>the</strong> appropriate acknowledgement has beentransmitted) expects to receive (1) <strong>the</strong> Start ofRecord sequence, followed by <strong>the</strong> data record(including ILRCs, if required), followed by <strong>the</strong>End of Record sequence,(2) <strong>the</strong> End of Transmissionsequence,(3) <strong>the</strong> Telephone sequence, or(4) <strong>the</strong> Inquiry sequence2. (while receiving data characters) builds an LRCto check against <strong>the</strong> ILRC/LRC received3. (if 1 above is received) compares <strong>the</strong> LRC builtagainst <strong>the</strong> ILRC/LRC and indicates an error in<strong>the</strong> data record if <strong>the</strong>y are not identical4. (if 1 without errors, or 2 above is received) setsRTBSY off (zero), turns <strong>the</strong> line around, andbegins transmission of <strong>the</strong> IDLE character for1.5 seconds (<strong>the</strong> Acknowledge and Receiveoperation is complete)5. (if 3 above is received) branches to <strong>the</strong> user'serror routine6. (on return from <strong>the</strong> user's error routine) transmits<strong>the</strong> Telephone sequence; <strong>the</strong>n performsa Start Read (puts <strong>the</strong> SCA in receive mode andcauses a read response interrupt)7. (if 4 above is received) turns <strong>the</strong> line around,re-transmits <strong>the</strong> appropriate acknowledgement;<strong>the</strong>n performs a Start Read8. (if characters o<strong>the</strong>r than one of <strong>the</strong> above--1, 2,3, or 4-- or 1 above, with errors, are received)decrements <strong>the</strong> retry counter by 1, turns <strong>the</strong>line around, and transmits <strong>the</strong> Error Receivedsequence; <strong>the</strong>n performs a Start Read9. (if, after 7 attempts, one of 1, 2, 3, or 4 aboveis not received) branches to <strong>the</strong> user's errorroutine10. (on return from <strong>the</strong> user's error routine) resets<strong>the</strong> retry counter to 7 and re-transmits <strong>the</strong>Error Received sequence attempting again toreceive one of 1, 2, 3, or 4 above, if <strong>the</strong>accumulator is positive11. sets RTBSY off (zero), turns <strong>the</strong> line around,and begins transmission of <strong>the</strong> IDT,E characterfor 1.5 seconds if <strong>the</strong> accumulator is negative(<strong>the</strong> Acknowledge and Receive operation iscomplete)12. performs a Close operation (see "Close" underCall Processing, above) if <strong>the</strong> accumulator iszero13. (if nothing is received in response to <strong>the</strong> lastacknowledgement transmitted) a timeout occursTimeout (Receive). The timeout routine1. (if nothing is received in response to <strong>the</strong> lastacknowledgement transmitted) branches to <strong>the</strong>108.4


ead response routine to handle <strong>the</strong> timeout as Closeif an invalid response was receivedSYNCHRONOUS COMMUNICATIONS ADAPTERSUBROUTINE (SCAT2)Call ProcessingChart: GAThe call processing portion of SCAT2• Checks <strong>the</strong> call parameters for errors. SCAT2exits to <strong>the</strong> pre-operative error trap (word 4010in COMMA) on any errors detected.• Performs an Auto Answer, Alarm, Test, orClose operation.• Sets up, according to <strong>the</strong> call parameters, <strong>the</strong>required switches and storage locations. Theseswitches and storage locations are used by <strong>the</strong>interrupt processing portion of SCAT2 to perform<strong>the</strong> requested operation during subsequentinterrupts.• Initiates a Receive, Transmit Block, TransmitText, or Transmit End operation.When entered via LIBF, SCAT2 saves <strong>the</strong> contentsof index registers 1 and 2, <strong>the</strong> accumulator, <strong>the</strong>extension, and <strong>the</strong> status indicators. SCAT2 <strong>the</strong>nperforms <strong>the</strong> processing described below for <strong>the</strong>various operations.TestIf RTBSY is non-zero, SCAT2 returns to <strong>the</strong> callingroutine at LIBF+2. If RTBSY equals zero, SCAT2returns to <strong>the</strong> calling routine at LIBF+3,Auto AnswerAccording to digit 3 of <strong>the</strong> control parameter, SCAT2ei<strong>the</strong>r disables <strong>the</strong> auto answer interrupt and returnsto <strong>the</strong> calling routine at LIBF+2 or enables <strong>the</strong> autoanswer interrupt, saves <strong>the</strong> I/O area address parameterat ANS, and returns to <strong>the</strong> calling routine atLIBF+3.AlarmAccording to digit 3 of <strong>the</strong> control parameter, SCAT2ei<strong>the</strong>r turns <strong>the</strong> audible alarm on or turns it off. Inei<strong>the</strong>r case, SCAT2 returns to <strong>the</strong> calling routine atLIBF+2.SCAT2 resets <strong>the</strong> SCA, clears <strong>the</strong> appropriateswitches and storage locations, disconnects <strong>the</strong> SCAfrom <strong>the</strong> communications line, and returns to <strong>the</strong>calling routine at LIBF+2.Receive, Transmit Block, Transmit Text, TransmitEndSCAT2, according to <strong>the</strong> call parameters, sets up<strong>the</strong> switches and storage locations required for <strong>the</strong>requested operation (see Switches and StorageLocations). In all cases <strong>the</strong> idle register is loadedwith <strong>the</strong> SYN character. The acknowledgements areinitialized for a Receive Initial or Transmit Initialoperation. The SCA is placed in <strong>the</strong> receive mode fora Receive Initial operation; o<strong>the</strong>rwise, it is placed in<strong>the</strong> synchronize mode. SCAT2 <strong>the</strong>n sets RTBSY nonzeroand returns to <strong>the</strong> calling routine at LIBF+4.Error StatisticsThe address to an error statistics log is given to<strong>the</strong> user.OptionsAccording to digit 2 of <strong>the</strong> control parameter, <strong>the</strong>options specified in digit 4 of <strong>the</strong> control parameterare ei<strong>the</strong>r enabled or disabled.Interrupt ProcessingCharts: GB, GCThe interrupt processing portion of SCAT2• Handles read response, write response, and timeoutinterrupts for Receive, Transmit Block,Transmit Text, and Transmit End operationsaccording to <strong>the</strong> pertinent switches and storagelocations.• Handles <strong>the</strong> auto answer request interrupt.• Checks for errors in <strong>the</strong> data and communicationsequences received. SCAT2 exits to <strong>the</strong> user'serror routine to process any errors detected.• Maintains an error statistics log of certain errors.• Logs timeouts and all characters transmitted andreceived.108.5


During <strong>the</strong> series of interrupts initiated by <strong>the</strong>call processing portion of SCAT2, <strong>the</strong> interruptprocessing portion performs <strong>the</strong> Receive, TransmitBlock, Transmit Text, or Transmit End operationaccording to <strong>the</strong> switches and storage locations set u}:in <strong>the</strong> call processing. An interrupt occurs (1) whena character has been received in or transmitted by<strong>the</strong> SCA, (2) on a timeout of <strong>the</strong> receive (3 second)timer, (3) on a timeout of <strong>the</strong> transmit (1.5 second)timer used during transmission of Normal EBCDICtext, (4) on a timeout of <strong>the</strong> program (approximately22 second) timer used during transmission of Full-Transparent text, or (5) on a timeout of <strong>the</strong> programtimer during a Receive Initial operation if <strong>the</strong> programtimer is specified to be used. The interrupt1processing consists of updating <strong>the</strong> switches andstorage locations(see Switches and storage Locations),error checking, and reception or transmission of <strong>the</strong>next message or control character, as appropriate.After processing an interrupt, SCAT2 returns to <strong>the</strong>interrupted program.When entered from ILSO1 due to an interrupt by<strong>the</strong> SCA, SCAT2 senses and resets <strong>the</strong> device statusword (DSW) to determine <strong>the</strong> type of interrupt.SCAT2 interrogates <strong>the</strong> DSW bits in, <strong>the</strong> followingorder: auto answer request (bit 4), ready (bit 7),read response (bit 0), write response (bit 1), andtimeout (bit 3). According to <strong>the</strong> DSW bits SCAT2performs <strong>the</strong> processing described below for <strong>the</strong>various types of interrupt.Auto Answer RequestIf <strong>the</strong> auto answer request interrupt is disabled,SCAT2 returns to ILS01. If it is enabled, SCAT2stores a non-zero value at <strong>the</strong> address found in ANS,disables <strong>the</strong> auto answer request interrupt, andnormally returns to ILS01. If an exit to a user'sroutine is specified in an optional call to SCAT2, thisexit with <strong>the</strong> accumulator equal to zero is takenbefore <strong>the</strong> return to ILS01.ReadyThe ready bit of <strong>the</strong> DSW must equal one in order forSCAT2 to process a read response, write response,or timeout interrupt. If <strong>the</strong> ready bit equals zero,an error is indicated and SCAT2 branches to <strong>the</strong> user'serror routine.Read ResponseIn <strong>the</strong> receiving station, read response interruptsoccur as message characters are received; in <strong>the</strong>transmitting station, read response interrupts occuras acknowledgements to <strong>the</strong> messages transmittedare received.SCAT2 reads <strong>the</strong> character received by <strong>the</strong> SCAinto storage at BUF. Then, according to <strong>the</strong> switchesand storage locations set up in <strong>the</strong> call processingor in previous interrupt processing, SCAT2 transfersa message character to <strong>the</strong> user's I/O area ordetermines which control character was received.SCAT2 tests, sets, and/or resets <strong>the</strong> switches andstorage locations depending on <strong>the</strong> characterreceived and returns to ILSO1.During <strong>the</strong> reception of a message SCAT2 resets<strong>the</strong> 3-second timer each time <strong>the</strong> synchronous idlesequence is received to prevent an erroneous receivetimeout.Write ResponseIn <strong>the</strong> receiving station, write response interruptsoccur as acknowledgements to <strong>the</strong> messages receivedare transmitted; in <strong>the</strong> transmitting station, writeresponse interrupts occur as message charactersare transmitted.SCAT2 determines from <strong>the</strong> switches and storagelocations set up in <strong>the</strong> call processing or in previousinterrupt processing <strong>the</strong> message or control characterto be transmitted. SCAT2 tests, sets, and/orresets <strong>the</strong> switches and storage locations dependingon <strong>the</strong> character to be transmitted. SCAT2 <strong>the</strong>nloads <strong>the</strong> character to be transmitted into <strong>the</strong> SCAfor transmission and returns to ILSO1.During <strong>the</strong> transmission of Full-Transparent text,SCAT2 loads <strong>the</strong> idle register in <strong>the</strong> SCA with <strong>the</strong>DLE character so that <strong>the</strong> proper synchronous idlesequence (DLE SYN) is transmitted whenever acharacter gap occurs.TimeoutSCAT2 tests, sets, and/or resets switches andstorage locations depending on <strong>the</strong> operation inprogress and <strong>the</strong> point at which <strong>the</strong> timeout occurred.SCAT2 <strong>the</strong>n, if appropriate, performs specialprocessing according to <strong>the</strong> switches and storagelocations and returns to ILS01.The program timer causes a timeout interruptevery .22 seconds (approximately) during <strong>the</strong> transmissionof Full-Transparent text. This interruptdoes not occur simultaneously with a write responseinterrupt. As <strong>the</strong> result of this interrupt SCAT2sets TOIND non-zero, causing <strong>the</strong> synchronous idlesequence (DLE SYN) to be transmitted on <strong>the</strong> nexttwo write response interrupts.The transmit timer causes a timeout interruptevery 1.5 seconds during <strong>the</strong> transmission of108. 6


Normal EBCDIC text. This interrupt occurssimultaneously with a write response interrupt.As <strong>the</strong> result of this interrupt SCAT2 sets TOINDnon-zero, causing <strong>the</strong> synchronous idle sequence(SYN SYN) to be transmitted.The receive timer determines <strong>the</strong> maximum time(3 seconds) that (1) a transmitting station will waitfor a reply or (2) a receiving station will .receivemessage characters between synchronous idlesequences. The receive timer is reset and restartedeach time <strong>the</strong> synchronous idle sequence isreceived. As <strong>the</strong> result of a receive timer interrupt,SCAT2 sets XMENQ non-zero, causing <strong>the</strong> transmittingstation to transmit ENQ next.The program timer causes a timeout interruptduring a Receive Initial operation if no ENQ isreceived and <strong>the</strong> program timer is specified to beused.Switches and Storage LocationsACK and ACK+1Use/Contents. Storage locations containing <strong>the</strong>alternating positive acknowledgements. ACK contains<strong>the</strong> current acknowledgement; ACK+1 contains<strong>the</strong> alternative acknowledgement.Notes. During <strong>the</strong> call processing for a Receive/Transmit Initial or Transmit End operation, ACKand ACK+1 are loaded with ACKO and ACK1, respectively.During interrupt processing <strong>the</strong> contentsof ACK and ACK+1 are exchanged following <strong>the</strong>successful completion of each Receive Continue,Transmit Block, or Transmit Text operation.ANSUse/Contents. A storage location containing <strong>the</strong>address of <strong>the</strong> location where <strong>the</strong> auto answer indicationis to be stored.Notes. During <strong>the</strong> call processing for an AutoAnswer Enable operation, <strong>the</strong> I/O area addressparameter is saved at ANS. During interrupt processing<strong>the</strong> location whose address is contained in ANSis set non-zero whenever an auto answer requestinterrupt occurs.BCCAUse/Contents. A storage location containing <strong>the</strong>CRC-16 accumulated for <strong>the</strong> message just transmitted/received.Notes. The CRC-16 is accumulated in BCCA by <strong>the</strong>CALC subroutine.BCCRUse/Contents. A storage location containing <strong>the</strong>CRC-16 received following <strong>the</strong> message justreceived.Notes. The CRC-16 received in BCCR is comparedto <strong>the</strong> CRC-16 accumulated by <strong>the</strong> receiving stationin BCCA to determine whe<strong>the</strong>r or not <strong>the</strong> messagewas received correctly.BCC1Use. A switch indicating in a Transmit operationwhich half of <strong>the</strong> CRC-16 is being transmitted; in aReceive operation that <strong>the</strong> next character to bereceived is <strong>the</strong> CRC-16.Settings. For a Transmit operation,Zero = Transmit <strong>the</strong> second half of <strong>the</strong> CRC-16Non-zero = Transmit <strong>the</strong> first half of <strong>the</strong> CRC-16For a Receive operation,Zero = negative of non-zeroNon-zero = CRC-16 is next character to bereceivedNotes. BCC1 is set non-zero in a Receive operationwhen <strong>the</strong> end character (ETB or ETX) has beenreceived or in a Transmit operation when <strong>the</strong> numberof characters to be transmitted (see COUNT) hasbeen decremented to zero. BCC1 is set to zeroafter <strong>the</strong> entire CRC-16 has been received (Receiveoperation) or after <strong>the</strong> first half of <strong>the</strong> CRC-16 hasbeen transmitted (Transmit operation).BCC2Use. A switch indicating which half of <strong>the</strong> CRC-16is being received.Settings.Zero = Receive <strong>the</strong> first half of <strong>the</strong> CRC-16Non-zero = Receive <strong>the</strong> second half of <strong>the</strong> CRC-16Notes. BCC2 is set non-zero after <strong>the</strong> first half of<strong>the</strong> CRC-16 has been received. BCC2 is set to zeroafter <strong>the</strong> second half of <strong>the</strong> CRC-16 has been received.108. 7


BUFUse/Contents. A storage location through whichmessage characters pass when being transferredfrom <strong>the</strong> I/0 area to <strong>the</strong> SCA or from <strong>the</strong> SCA to <strong>the</strong>I/O area.Notes. The character in BUF is <strong>the</strong> characterreceived by <strong>the</strong> SCA that caused <strong>the</strong> last read responseinterrupt or <strong>the</strong> character to be transmitted next by<strong>the</strong> SCA.CLOSEUse. A switch indicating that a Close operation is tobe performed if no response is received to a transmittedEOT.Settings.Zero = Close if no response to EOTNon-zero = Do NOT Close if no response to EOTNotes. CLOSE is set during <strong>the</strong> call processingfor a Transmit End operation according to digit 4of <strong>the</strong> control parameter.COUNTUse/Contents. A storage location containing <strong>the</strong>number of characters transmitted from or <strong>the</strong> numberof characters that were stored into <strong>the</strong> user's I/0 area.Notes. The number in COUNT is incremented duringinterrupt processing as characters are transmitted/received. At <strong>the</strong> end of a Transmit operation, COUNTequals <strong>the</strong> number of characters transmitted. At <strong>the</strong>end of a Receive operation, COUNT equals <strong>the</strong> numberof characters stored in <strong>the</strong> I/O area.:DLSTXUse. A switch indicating that <strong>the</strong> DLE STX sequence,which precedes a message or portion of a messagein Fun-Transparent text, has not yet been encounteredin <strong>the</strong> message being transmitted.Settings.Zero = negative of non-zeroNon-zero = DLE STX sequence not yet encounteredNotes. DLSTX is set non-zero if <strong>the</strong> first characterof a message in Full-Transparent text is not DLE.DLSTX is set to zero after <strong>the</strong> character following<strong>the</strong> first DLE (i. e. , STX) has been transmitted.DSWUse/Contents. A storage location containing <strong>the</strong>device status word (DSW) saved following <strong>the</strong> lastinterrupt.EOTRPUse/Contents. A switch indicating whe<strong>the</strong>r a readresponse should be performed after transmitting anEOT or not.Settings.Zero = Read response to EOTNon-zero = Do NOT Read response to EOTNotes. EOTRP is set during call processing for aTransmit End operation according to digit 3 of <strong>the</strong>control parameter.ERRUUse/Contents. A storage location containing <strong>the</strong>error code to be placed in <strong>the</strong> accumulator beforebranching to <strong>the</strong> user's error routine.Notes. ERRU contains <strong>the</strong> error code for <strong>the</strong> postoperationerror detected by SCAT2.FCODEUse. A switch indicating <strong>the</strong> function to be performed.Settings.Negative = ReceiveZero = Transmit EndPositive = Transmit Block/TextNotes. FCODE is set during call processing accordingto digit 1 of <strong>the</strong> control parameter.FIRSTUse. A switch indicating whe<strong>the</strong>r or not <strong>the</strong> firstcharacter has been transmitted from or received in<strong>the</strong> user's I/O area.Settings.Zero = First character transmitted/receivedNon-zero = First character not yet transmitted/received108. 8


Notes. FIRST is set non-zero during call processing.FIRST is set to zero during interrupt processingwhen <strong>the</strong> first character is transferred to orfrom <strong>the</strong> user's I/O area.IOARUse/Contents. A storage location containing <strong>the</strong>address of <strong>the</strong> user's I/0 area.Notes. The I/O area address parameter is savedat IOAR during call processing,LSDLEUse. A switch indicating that <strong>the</strong> last charactertransmitted or received was DLE.Settings.Zero = negative of non-zeroNon-zero = Last character was DLENotes. LSDLE is set to zero during call processing;it is set to zero during interrupt processing wheneverit is non-zero and <strong>the</strong> character being transmittedis not DLE. LSDLE is set non-zero duringinterrupt processing when DLE is transmitted orreceived.OPTSWUse/Contents. A switch indicating which user optionsare active.Settings. The options are indicated by bit switches.Bit 13 = 1 A no-error exit to a user 's routine isprovided (acc = 0000 16)when <strong>the</strong> lastinterrupt of an operation has been serviced.Bit 14 = 1 An immediate exit to a user's routine isprovided (acc = 0020 ) when a timeout6.occurs prior to receiving an ENQ on aReceive Initial operation using <strong>the</strong> thirdtimer.Bit 15 = 1 An immediate exit to a user's routine isprovided (acc = 0020 ) when a timeout6.occurs prior to receiving an ENQ on aReceive Initial operation using <strong>the</strong> normal3-second timer.Notes; The bit switches are set and reset duringcall processing.OVFLOUse. A switch indicating that <strong>the</strong> message receivedexceeds <strong>the</strong> size of <strong>the</strong> user's I/0 area.Settings.NXTPDUse/Contents. A switch indicating that a pad (FF16)character is to be transmitted next.Settings,Zero = Do not transmit <strong>the</strong> pad characterNon-zero = Transmit <strong>the</strong> pad characterNotes. NXTPD is set non-zero after each turnaroundcharacter or sequence has been transmitted. NTXPDis set to zero after <strong>the</strong> pad character has been transmitted.OPERRUse/Contents. A storage location containing <strong>the</strong>address of a user's routine which is to be enteredas specified in an optional call to SCAT2.Notes. The address parameter is saved at OPERRduring call processing.Zero = negative of non-zeroNon-zero = Overflow of <strong>the</strong> user's I/0 area hasoccurredNotes. OVFLO is set non-zero during interruptprocessing when <strong>the</strong> character just received cannotbe stored in <strong>the</strong> user's I/O area (i.e. , COUNT isnow equal to WDCNT+1).PACKUse/Contents. A switch indicating whe<strong>the</strong>r <strong>the</strong>message to be transmitted/received isspecified as unpacked (i. e. one character perword) or packed (two characters per word).Settings.Zero = Message specified as unpackedNon-zero = Message specified as packedNotes. PACK is set during call processing accordingto digit 2 of <strong>the</strong> control parameter.108. 9


POINTUse/Contents. A storage location containing <strong>the</strong>address, of <strong>the</strong> location within <strong>the</strong> user's I/0 areawhere <strong>the</strong> next character to be transmitted is locatedor where <strong>the</strong> next character received is to be stored.Notes. The address in POINT is incremented duringinterrupt processing as characters are transmittedor received.RETRY'Use/Contents. A storage location used as <strong>the</strong> retrycounter. RETRY contains <strong>the</strong> number of times anoperation is to be attempted,Notes. RETRY is set to eight during call processing.RETRY is decremented by one each time an operationis reattempted. When RETRY equals zero, it isreset to 7 and an exit is made to <strong>the</strong> user's errorroutine.RTBSYUse. A switch indicating whe<strong>the</strong>r or not SCAT2 isbusy, i. e. , is performing a previously initiatedoperation that has not been completed.Settings.Zero = SCAT2 not busyNon--zero = SCAT2 busyNotes. RTBSY is set non-zero during <strong>the</strong> callprocessing for Receive, Transmit Block, TransmitText, and Transmit End operations. RTBSY is setto zero during interrupt processing when <strong>the</strong> operationis completed.SLVMSUse. A switch indicating whe<strong>the</strong>r this station, in <strong>the</strong>event of contention, is to be <strong>the</strong> master station or<strong>the</strong> slave station.Settings.Zero = MasterNon--zero = SlaveNotes. ;SLVMS is set during <strong>the</strong> call processing fora Transmit Initial Block/Text operation accordingto digit 3 of <strong>the</strong> control parameter.STXINUse. A switch indicating that STX is <strong>the</strong> next characterto be transmitted or received.Settings.Zero = negative of non-zeroNon-zero = Next character to be transmitted/received is STXNotes. STXIN is set non-zero when <strong>the</strong> first DLEcharacter of a message in Full-Transparent texthas been transmitted/received. STXIN is set tozero after <strong>the</strong> character following <strong>the</strong> first DLE(i. e. , STX) has been transmitted/received.SUBFUse. A switch indicating <strong>the</strong> sub-function of <strong>the</strong>function to be performed.Settings.Negative = Receive/Transmit Initial or TransmitEOTZero = Receive/Transmit Continue or TransmitDLE EOTPositive = Receive RepeatNotes. SUBF is set during call processing accordingto digit 2 of <strong>the</strong> control parameter.SYN2Use. A switch indicating that <strong>the</strong> synchronous idlesequence is to be transmitted next.Settings.Zero = negative of non-zeroNon-zero = Insert <strong>the</strong> synchronous idle sequencefollowing a transmit timeoutNotes. SYN2 is set to zero during <strong>the</strong> call processingfor a Transmit Initial or Transmit Continueoperation; it is set to zero during interrupt processingafter <strong>the</strong> synchronous idle sequence has beentransmitted. SYN2 is set non-zero during interruptprocessing when a timeout occurs during transmission.SYN5Use/Contents. A storage location containing <strong>the</strong>number of SYN (padding) characters that are toprecede every transmission.108.10


Notes. During call processing SYN5 is set to five.During interrupt processing <strong>the</strong> number in SYN5 isdecremented by one for each SYN character transmitted.When SYN5 equals zero, transmission of<strong>the</strong> message characters or control sequence follows.TBTXUse. A switch indicating whe<strong>the</strong>r Block or Texttransmission is to be performed.Settings.Zero = BlockNon-zero = TextNotes. TBTX is set during call processing accordingto digit 1 of <strong>the</strong> control parameter.TENDUse. A switch indicating that <strong>the</strong> next character tobe transmitted is ETB (in a Transmit Block operation)or ETX (in a Transmit Text operation).Settings.Zero = negative of non-zeroNon-zero ETB or ETX is next character to betransmittedNotes. TEND is set non-zero when all charactersof a message in Full-Transparent text has beentransmitted. TEND is set to zero after <strong>the</strong> endcharacter (ETB or ETX) has been transmitted.TEXTMUse. A switch indicating <strong>the</strong> type of text to betransmitted.Settings.Zero = Normal EBCDIC textNon-zero = Full-Transparent textNotes. TEXTM is set during <strong>the</strong> call processing fora Transmit Block/Text operation according to digit4 of <strong>the</strong> control parameter.TOINDUse. A switch indicating that a receive timeout hasoccurred.Settings.Zero = negative of non-zeroNon-zero = Receive timeout has occurredNotes. TOIND is set non-zero when a receivetimeout occurs in <strong>the</strong> transmitting station whilewaiting to receive an acknowledgement. TOIND isset to zero when an acknowledgement is received.TRANSUse. A switch indicating that Full-Transparent textis being transmitted/received or that <strong>the</strong> CRC-16 is<strong>the</strong> next character to be received.Settings.Zero = negative of non-zeroNon-zero = Full-Transparent text being transmitted/received,or CRC-16 is nextcharacter to be received (if BCC1 isalso non-zero)Notes. TRANS is set to zero during call processing;it is set to zero during interrupt processing after<strong>the</strong> end character (ETB or ETX) has been transmittedoorafter an acknowledgement has been transmitted.TRANS is set non-zero when <strong>the</strong> sequenceDLE STX is encountered in transmitting or receiving,or when <strong>the</strong> end character (ETB or ETX) is received(see BCC1).USERRUse/Contents. A storage location containing <strong>the</strong>address of <strong>the</strong> user's error routine.Notes. The error routine address parameter issaved at USERR during call processing.WDCNTUse/Contents. A storage location containing <strong>the</strong> wordcount of <strong>the</strong> message for a Transmit operation or <strong>the</strong>length of <strong>the</strong> I/O area for a Receive operation, if <strong>the</strong>message is specified as unpacked; i. e. one characterper word. If <strong>the</strong> message is specified as packed, i. e.two characters per word, <strong>the</strong> storage location contains<strong>the</strong> number of characters to be transmitted or<strong>the</strong> maximum number of characters to be received.Notes. The contents of <strong>the</strong> first word of <strong>the</strong> user'sI/0 area are obtained and saved at WDCNT duringcall processing.108.11


WD17IUse. A switch indicating whe<strong>the</strong>r or not <strong>the</strong> SCATcounter, word 17 10in COMMA, has been incrementedby one.Settings.Zero = Word 17 has been decremented by 1 orye 10has not t been incremented by 1.Non-zero = Word 17 has been incremented by 1.10Notes. WD17I is set non-zero during call processingwhen <strong>the</strong> first operation o<strong>the</strong>r than a Close operationis initiated, at <strong>the</strong> same time that word 17 is incrementedby one. WD17I is set to zero Wen a Closeoperation is performed, at <strong>the</strong> same time that word17 10is decremented by one.WRACKUse. A switch indicating that an incorrect acknowledgementwas received prior to a receive timeout.Settings.Zero = negative of non-zeroNon-zero = Incorrect acknowledgement receivedprior to a receive timeoutXMENQUse. A switch indicating that <strong>the</strong> next character to betransmitted or <strong>the</strong> first character to be received mustbe ENQ.Settings.Zero = negative of non-zeroNon-zero = Next character transmitted or firstcharacter received must be ENQNotes. XMENQ is set non-zero during <strong>the</strong> call processingfor a Receive/Transmit Initial operation; it isset non•zero during interrupt processing whenever areceive timeout occurs while attempting to receive anacknowledgement. XMENQ is set to zero duringinterrupt processing when ENQ has been transmittedor received.XMESSUse. A switch indicating that a message is to betransmitted.Settings.Zero = negative of non-zeroNon-zero = Entire message has not yet beentransmittedNotes. XMESS is set non-zero during <strong>the</strong> callprocessing for a Transmit Initial or TransmitContinue operation. XMESS is set to zero duringinterrupt processing when <strong>the</strong> entire message hasbeen transmitted.XNAKUse. A switch indicating that NAK is <strong>the</strong> nextcharacter to be transmitted.Settings.Zero = negative of non-zeroNon-zero = Next character to be transmitted isNAKNotes. XNAK is set non-zero during <strong>the</strong> call processingfor a Receive Repeat operation; it is set nonzeroduring interrupt processing when an error isdetected while receiving a message. XNAK is set tozero during interrupt processing when NAK has beentransmitted.SYNCHRONOUS COMMUNICATIONS ADAPTE RSUBROUTINE (SCAT3)Call ProcessingChart: GDThe call processing performed by <strong>the</strong> SCAT3 subroutineis identical to that performed by <strong>the</strong> SCAT2subroutine, except that (1) SCAT3 does not perform<strong>the</strong> Auto Answer operation as does SCAT2, (2) nooptions can be specified as in SCAT2, (3) SCAT3initiates <strong>the</strong> Monitor operation in addition to thoseinitiated by SCAT2, and (4) SCAT3, in initiating aTransmit Initial operation, places <strong>the</strong> SCA in <strong>the</strong>receive mode initially instead of in <strong>the</strong> synchronizemode, as in SCAT2.MonitorSCAT3 saves <strong>the</strong> selection address and <strong>the</strong> pollingaddress specified in <strong>the</strong> Monitor operation in locationsSELA and POLLA, respectively. SCAT3 sets up <strong>the</strong>108.12


switches and storage locations required for <strong>the</strong>Monitor operation (see Switches and Storage Locations).The idle register is loaded with <strong>the</strong> SYNcharacter and <strong>the</strong> SCA is placed in <strong>the</strong> receive mode.SCAT3 <strong>the</strong>n returns to <strong>the</strong> calling routine at LIBF+4,Interrupt ProcessingCharts: GE, GF, GGThe interrupt processing performed by <strong>the</strong> SCAT3subroutine is identical to that performed by <strong>the</strong> SCAT2subroutine, except that (1) <strong>the</strong> auto answer requestinterrupt, processed by SCAT2, is not processed bySCAT3, (2) interrupt processing for <strong>the</strong> Monitoroperation, not found in SCAT2, is performed, and (3)in <strong>the</strong> case of an error detected during a Monitoroperation, <strong>the</strong> operation is retried indefinitely, andno exit is made to <strong>the</strong> user's error routine, as inSCAT2.Switches and Storage LocationsThe switches and storage locations used by SCAT3are identical to those used by SCAT2, except asnoted below.ADDRUse. A switch indicating that <strong>the</strong> polling or selectionaddress was received while monitoring.Settings.Positive = Polling address receivedNegative = Selection address receivedZero = No address receivedNotes. If ADDR is set non-zero and <strong>the</strong> next characterreceived is not ENQ, NOTME is <strong>the</strong>n set non-zero.ANSThere is no storage location ANS in SCAT3.CLOSEThere is no switch CLOSE in SCAT3.CMODEUse. A switch indicating that SCAT3 is in controlmode, i. e. , is able to recognize <strong>the</strong> polling orselection address as such.Settings.Zero = negative of non-zeroNon-zero = SCAT3 is in control modeNotes. CMODE is set to zero during <strong>the</strong> call processingfor a Receive/Transmit Initial or Monitoroperation; it is set to zero during interrupt processingwhenever an SOH or STX character is received.CMODE is set non-zero during interrupt processingwhen EOT has been received.EOTRPThere is no switch EOTRP in SCAT3.FCODEUse. A switch indicating <strong>the</strong> function to be performed.Settings.Negative = ReceiveZero = MonitorPositive = Transmit Block/Text/EndNotes. FCODE is set during call processing accordingto digit 1 of <strong>the</strong> control parameter. Duringinterrupt processing FCODE is set to zero if SCAT3returns to <strong>the</strong> Monitor operation.ITBSKUse. A switch indicating that <strong>the</strong> next two charactersto be received while monitoring are to be ignored.Settings.Zero = negative of non-zeroNon-zero = Ignore <strong>the</strong> next two charactersNotes. ITBSK is set non-zero when an intermediateblock check (ITB) character or <strong>the</strong> sequence DLE ITBis received while monitoring, in order that <strong>the</strong> twofollowing block check characters not be mistaken forcontrol characters.LSSYNUse. A switch indicating that <strong>the</strong> last characterrecognized while monitoring Normal EBCDIC text wasa SYN character. ' When <strong>the</strong> sequence SYN SYN hasbeen recognized while monitoring Normal EBCDICtext, <strong>the</strong> receive timer is reset.108.13


Settings.Zero = negative of non-zeroNon-zero = Last character recognized was a SYNcharacterNotes. LSSYN is set non-zero during interruptprocessing whenever a SYN character has beenrecognized while monitoring Normal EBCDIC text.LSSYN is set to zero during interrupt processingwhenever any character o<strong>the</strong>r than <strong>the</strong> SYN characterhas been recognized while monitoring NormalEBCDIC text or whenever a timeout has occurred.MONITUse. A switch indicating that a Receive Initial orTransmit Initial operation is monitoring for <strong>the</strong> selectionor polling address, respectively.Settings.Zero = negative of non-zeroNon-zero = Monitor for selection or polling addressNotes. MONIT is set non-zero during <strong>the</strong> call processingfor a Receive Initial or Transmit Initialoperation. MONIT is set to zero when <strong>the</strong> selectionaddress is received during a Receive Initial operation,or when <strong>the</strong> polling address is received during aTransmit Initial operation.NOTMEUse. A switch indicating that, while monitoring, anaddress was received that did not match <strong>the</strong> specifiedpolling or selection address.Settings.Zero = negative of non-zeroNon-zero --- Station's address was not received (butano<strong>the</strong>r station's was received)Notes. NOTME is used to determine whe<strong>the</strong>r aresponse should be transmitted when an ENQ has beenreceived.OPERRThere is no storage location OPERR in SCAT3.OPTSWThere is no switch OPTSW in SCAT3.POLLAUse/Contents. A storage location containing <strong>the</strong>polling address specified in <strong>the</strong> last Monitor operationinitiated.Notes. The polling address is saved at POLLA duringcall processing.POLLIUse/Contents. A storage location containing <strong>the</strong>address of <strong>the</strong> location following <strong>the</strong> location in <strong>the</strong>user's program that contains <strong>the</strong> polling address.The address found at POLLI is used by SCAT3 instoring a non-zero value in <strong>the</strong> location following <strong>the</strong>polling address whenever that polling address isreceived, except during a Transmit Initial operation.Notes. The appropriate address is saved at POLLIduring call processing.SELAUse/Contents. A storage location containing <strong>the</strong>selection address specified in <strong>the</strong> last Monitoroperation initiated.Notes. The selection address is saved at SELAduring call processing.SELIUse/Contents. A storage location containing <strong>the</strong>address of <strong>the</strong> location following <strong>the</strong> location in <strong>the</strong>user's program that contains <strong>the</strong> selection address.The address found at SELI is used by SCAT3 instoring a non-zero value in <strong>the</strong> location following <strong>the</strong>selection address whenever that selection address isreceived, except during a Receive Initial operation.Notes. The appropriate address is saved at SELIduring call processing.SLVMSThere is no switch SLVMS in SCAT3.TBTXUse. A switch indicating whe<strong>the</strong>r Block, Text, orEOT transmission is to be performed.108.14


Settings.Negative = EOTZero = BlockPositive = TextNotes. TBTX is set during call processing accordingto digit 1 of <strong>the</strong> control parameter.TRNSPUse. A switch indicating <strong>the</strong> type of text beingmonitored by SCAT3.Settings.Zero = Monitoring Normal EBCDIC textNon-zero = Monitoring Full-Transparent textNotes. TRNSP is set non-zero during interruptprocessing when DLE STX is received while monitoring.TRNSP is set to zero during interrupt process-ing when SCAT3 resynchronizes with <strong>the</strong> transmittingstation.XNAKUse. A switch indicating that NAK is <strong>the</strong> nextcharacter to be transmitted.Settings.Zero = negative of non-zeroNon-zero = Next character to be transmitted isNAKNotes. XNAK is set non-zero during <strong>the</strong> call processingfor a Receive Repeat operation. XNAK is setnon-zero during interrupt processing when an erroris detected while receiving a message or when <strong>the</strong>selection address is received and SCAT3 is notprepared to receive data. XNAK is set to zeroduring interrupt processing when NAK has beentransmitted.108.15


SECTION 13. SYSTEM DEVICE SUBROUTINESThe system device subroutines are a group ofspecial subroutines used exclusively by <strong>the</strong> monitorsystem programs. These are <strong>the</strong> only devicesubroutines used by <strong>the</strong> monitor system programs,aside from DISKZ. They are listed below:DISKZ1403 Subroutine1132 SubroutineConsole Printer Subroutine2501/1442 Subroutine1442/1442 Subroutine1134/1055 SubroutineKeyboard/Console Printer Subroutine2501/1442 Conversion Subroutine1134/1055 Conversion Subroutine (dummy)Keyboard/Console Printer Conversion Subroutine(dummy)Section 13. <strong>System</strong> Device Subroutines 109


SECTION 14. STAND-ALONE UTILITIESDISK CARTRIDGE INITIALIZATION PROGRAM(DCIP)When DCIP is entered, a message is printed instructing<strong>the</strong> user to select <strong>the</strong> particular DCIPfunction desired. Depending on his choice, one of<strong>the</strong> functions described below is performed.<strong>All</strong> messages, entries through <strong>the</strong> Console Entryswitches, and operator instructions are printed on<strong>the</strong> Console Printer. <strong>All</strong> user options are enteredthrough <strong>the</strong> Console Entry switches.DISK INITIALIZATIONA message is printed instructing <strong>the</strong> user to specify<strong>the</strong> number of <strong>the</strong> physical drive on which is mounted<strong>the</strong> cartridge to be initialized. At <strong>the</strong> same time,<strong>the</strong> user is given <strong>the</strong> option of doing an "addressonly" initialization, that is, an initialization thatwrites correct addresses on a cartridge withoutdisturbing any of <strong>the</strong> data on that cartridge. Theuser is <strong>the</strong>n asked to specify <strong>the</strong> cartridge ID.An entire cylinder of <strong>the</strong> cartridge is written withone of three test patterns. The patterns used are/AAAA, /5555, and /0000. The cylinder is <strong>the</strong>nread back into core storage, one sector at a time,using double-buffering.While one sector is being read, every word ofano<strong>the</strong>r is being examined to see that it compareswith <strong>the</strong> data that was written. If no errors occurin any sector of <strong>the</strong> cylinder, <strong>the</strong> same procedure isrepeated for <strong>the</strong> next pattern, and so on until allthree patterns have been tested.However, if any disk operation causes <strong>the</strong> errorbit of <strong>the</strong> disk device status word (DSW) to be set, orif <strong>the</strong> data read does not compare with that written,<strong>the</strong>n <strong>the</strong> entire write/read/compare procedure isrepeated fifty times on <strong>the</strong> same cylinder with <strong>the</strong>same test pattern. A second error, while in <strong>the</strong>retry mode, causes DCIP to indicate <strong>the</strong> cylinder asbeing defective.If (1) cylinder zero is defective, (2) more thanthree cylinders are defective, or (3) it is impossibleto write a sector address, DCIP types out an errormessage indicating that <strong>the</strong> cartridge may not beused.After every cylinder on <strong>the</strong> cartridge has beentested in <strong>the</strong> above manner, <strong>the</strong> program writes threedefective cylinder addresses and <strong>the</strong> cartridge ID into<strong>the</strong> first four words of sector @IDAD. Where defectivecylinder addresses do not exist, /0658 is written.Words 7-30 of sector @IDAD are set to zeros. DCIPalso writes an error message program, beginning atword 31. If a cold start is attempted using this nonsystemcartridge, <strong>the</strong> error message program printsan appropriate message and no cold start is effected.DCOM (sector @DCOM) is initialized as follows:LocationValue Inserted#ANDU /0200#BNDU /0200#FPAD /0020#CIDNCartridge ID#CIBA /0008#ULET /0002LET (sector 2) is initialized as follows:Word Contents1 /00002 /00203 /0000457618 /0620/00013008/7112 I The name 1DUMY (in name/4528 I code)A message indicating that <strong>the</strong> initialization is completeand <strong>the</strong> addresses of any defective cylinders areprinted on <strong>the</strong> Console Printer.At this time, <strong>the</strong> user is given <strong>the</strong> option of doingadditional testing of <strong>the</strong> disk; i. e. , <strong>the</strong> write/read/compare sequence may be repeated up to 31 times.DISK DUMP.The principal print device is determined by firstinitiating a carriage space operation on <strong>the</strong> 1403Printer. The device status word (DSW) for <strong>the</strong> 1403is <strong>the</strong>n sensed to see if <strong>the</strong> 1403 is busy. If it is not,Section 14. Stand-Alone Utilities 111


<strong>the</strong> same procedure is followed with <strong>the</strong> 1132 Printer.On <strong>the</strong> basis of <strong>the</strong> results of <strong>the</strong> above test, a wordthat points to <strong>the</strong> appropriate conversion table and abranch instruction that branches to <strong>the</strong> proper printercall are set up.The user enters through <strong>the</strong> Console Entryswitches <strong>the</strong> sector address (with <strong>the</strong> drive code) of<strong>the</strong> first sector to be dumped and <strong>the</strong> number of consecutivesectors to be dumped.The logical sector address is determined in <strong>the</strong>following manner. The physical sector address isdecremented by eight for each defective cylinderthat has a lower sector address less than <strong>the</strong> cylinderto be dumped from. If <strong>the</strong> sector being dumped is ona defective cylinder, <strong>the</strong> sector is assigned <strong>the</strong> logicalsector address of DEAD. Defective cylinderdata for <strong>the</strong> cartridge is obtained from sector @MAD.Each of <strong>the</strong> 320 data words of <strong>the</strong>, sector is convertedfrom binary to four hexadecimal characters of<strong>the</strong> appropriate printer code. The data is <strong>the</strong>nprinted, sixteen words per line.DISK COPYDCIP requests <strong>the</strong> user to enter <strong>the</strong> numbers of <strong>the</strong>source and destination drives in <strong>the</strong> Console Entryswitches. The defective cylinder table from <strong>the</strong>source cartridge is fetched and checked to verify that<strong>the</strong> values in it are under 1624 and in ascendingorder.The source cartridge is copied sector by sectoronto <strong>the</strong> destination cartridge. The cartridge IDand defective cylinder table in sector 0, cylinder 0are not copied onto <strong>the</strong> destination cartridge. If asystem cartridge is being copied, <strong>the</strong> cartridge IDfound in DCOM is also not copied.If a cylinder on <strong>the</strong> source cartridge is defective,<strong>the</strong> following cylinder is copied to <strong>the</strong> destinationcartridge. If a cylinder on <strong>the</strong> destination cartridgeis defective, <strong>the</strong> cylinder to be copied from <strong>the</strong> sourcecartridge is copied onto <strong>the</strong> following cylinder.UCARTThe user receives <strong>the</strong> <strong>1130</strong> Disk Monitor <strong>System</strong> on adisk cartridge. The contents of this cartridge areas follows: cylinder 0 contains a copy of <strong>the</strong> ResidentImage, including DISKZ, a copy of <strong>the</strong> CARD() subroutine,a special cold start program, and a disk-tocarddump program; cylinders 1 through 202 contain<strong>the</strong> system decks stored in card images, four cardsper sector.The execution of a cold start with this cartridgecauses sector 0, cylinder 0 to be fetched. Sector 0,cylinder 0 contains DISKZ and <strong>the</strong> special cold startprogram. DISKZ is loaded into <strong>the</strong> locations itnormally occupies in <strong>the</strong> Resident Monitor; <strong>the</strong> specialcold start program immediately follows it. Controlis transferred to <strong>the</strong> special cold start program.The special cold start program fetches <strong>the</strong> ResidentImage (sector 2, cylinder 0) into <strong>the</strong> locations itnormally occupies in low core storage, fetches <strong>the</strong>CARDO subroutine (sector 3, cylinder 0) into corestorage at /0250, and fetches <strong>the</strong> disk-to-card dumpprogram into core storage at /0390. Control istransferred to <strong>the</strong> disk-to-card dump program, whichpunches <strong>the</strong> system decks and terminates.The disk-to-card dump program uses a onecylinderbuffer origined at its high-addressed end.112


PROGRAM ANALYSIS PROCEDURESINTRODUCTIONThe purpose of <strong>the</strong> <strong>Program</strong> Analysis Proceduresis to provide <strong>the</strong> user with a step-by-step methodfor analyzing <strong>the</strong> execution of any monitor systemor user program. The procedure is problemoriented;it begins with some program malfunction,assists <strong>the</strong> user in defining <strong>the</strong> failing componentor function, and provides <strong>the</strong> facility fordetailed analysis of that component or function.PROGRAM ANALYSIS PROCEDURES SUMMARYFlowdiagram 1 shows <strong>the</strong> procedure used for programanalysis. At each step in <strong>the</strong> procedure, <strong>the</strong> parts ofthis document that apply to that step are indicated.IDENTIFICATION OF THE FAILING COMPONENTOR FUNCTIONFlowdiagram 2 shows <strong>the</strong> procedure used to identify<strong>the</strong> component or function failing. Where applicable<strong>the</strong> parts of this document that are pertinent to thatidentification are indicated.Step Analysis ProcedureSupporting DocumentationStartODetermine which program is failing. If it isa subroutine, determine its name and itslocation in core.Failing subroutineIDSubroutineerror numberlistOGet a full core dump.Core DumpProceduresOBlock out and identify <strong>the</strong> significant itemsin <strong>the</strong> core dump listing .Core LayoutsCoreLocation ProceduresOVAnalyze <strong>the</strong> failing subroutine:-Correct input -Dataparameters -To and from Linkage-Function code -I/0 areaeneral SubroutineAna lysisProcedure[GSubroutineDataChartsSubroutineLoopingCapabilitiesIf necessary, determine which programcalled <strong>the</strong> falling subroutine and where itis located in core.Trace BackProceduresAnalyze <strong>the</strong> calling program for correctparameters and linkage. If necessary, continuetracing back several levels of calls.SubroutineData ChartsFlowdiagram 1. General Procedure for <strong>Program</strong> Analysis<strong>Program</strong> Analysis Procedures 113


Reference Analysis ProcedureSupporting Documentation(StartContents of$PHSENon-ZeroMonitor <strong>System</strong> <strong>Program</strong> execution-A DSLET Listing will providereference to phase IDContents of$PRETPre-operative I/O Error-Invalid Control Function-Device Not ReadyError number in ACCshould identify subroutine.Go to SubroutineMaintenance Analysis ProcedureSubroutineError NumberListContents of:$PST1 Level 1$PST2 Level 2$PST3 Level 3$PST4 Level 4_ Post-operative I/O ErrorP -Error Bits in DSWHUsingIAR contents, go to step 11in Trace Back ProceduresTTTrace BackProceduresUsing IAR, XRI, XR2, XR3, ACC,EXT, attempt to correlate back toprogram. Go to step 11 in TraceBack ProceduresO<strong>the</strong>r E mars;IncorrectAnswer, etc.Dump as soonas possibleafter <strong>the</strong> failure.<strong>Program</strong>Ann lysisProceduresFlowdiagram 2. Procedure for Identification of <strong>the</strong> Failing Compon.mt or Function114


SUBROUTINE ERROR NUMBER/ERROR STOPLISTSStartTable 8 lists <strong>the</strong> errors detected by <strong>the</strong> <strong>System</strong>Library ISSs and system device subroutines byerror code, describes <strong>the</strong> conditions under which<strong>the</strong> error is detected, and provides a list of correctiveactions for those errors.Table 9 lists <strong>the</strong> error stop addresses and <strong>the</strong>irmeanings.Retain ConsoleInformation--ACC, EXT,XR I ,XR2,XR3-Lights-Device StatusCORE DUMP PROCEDURETo obtain a dump of <strong>the</strong> contents of core storage,perform <strong>the</strong> following (see Flowdiagram 3):1. If <strong>the</strong> error symptoms indicate that an errorhas occurred in <strong>the</strong> disk or disk I/O subroutine(i.e. DISKZ), <strong>the</strong> <strong>System</strong> Core Dump programshould not be used, because this same disk I/Osubroutine is used to load <strong>the</strong> <strong>System</strong> CoreDump program, thus destroying <strong>the</strong> informationneeded.2. Was <strong>the</strong>re a NOCAL Dump included in <strong>the</strong> coreload? If <strong>the</strong>re was, it may be used to obtain<strong>the</strong> core dump. To obtain <strong>the</strong> core dump, set<strong>the</strong> IAR to <strong>the</strong> entry point of <strong>the</strong> NOCAL Dumpand start.3. If <strong>the</strong> error symptoms indicate an error in <strong>the</strong>principal print device, <strong>the</strong>n <strong>the</strong> <strong>System</strong> CoreDump program should not be used, as it woulddestroy any information needed.4. To retain <strong>the</strong> maximum information, <strong>the</strong> standalonedump procedure should be used.a. By displaying core storage, copy downlocations /0000 to /0050.b. Use <strong>the</strong> stand-alone printer dump to dump<strong>the</strong> rest of core storage.5. To obtain <strong>the</strong> core dump using <strong>the</strong> <strong>System</strong> CoreDump program, set <strong>the</strong> IAR to /0000 and start.Errorin PrincipalPrint DeviceSubroutineFlowdiagram 3. Core Dump Procedurefiles, arrays, and COMMON variables were definedand SOCALs were employed.Figure 17, panel 2 shows <strong>the</strong> layout of <strong>the</strong> contentsof core storage during <strong>the</strong> execution of a user'sFORTRAN core load in which files, arrays, andCOMMON variables were defined. No LOCALs weredefined; no SOCALs were employed.Figure 17, panel 3 shows <strong>the</strong> layout of <strong>the</strong> contentsof core storage during <strong>the</strong> execution of a user'sFORTRAN core load in which no LOCALs, files,arrays, SOCALs were employed. COMMON variableswere defined.Figure 17, panel 4 shows <strong>the</strong> layout of <strong>the</strong> contentsof core storage during <strong>the</strong> execution of a user'sAssembler Language core load.Figure 17, panel 5 shows <strong>the</strong> layout of <strong>the</strong> contentsof core storage during <strong>the</strong> execution of an RPG coreload. For a detailed description of <strong>the</strong> RPG coreload see <strong>IBM</strong> <strong>1130</strong> RPG <strong>Program</strong> <strong>Logic</strong> <strong>Manual</strong>,Form Y21-0010.CORE BLOCK DIAGRAMSFigure 17, panel 1 shows <strong>the</strong> layout of <strong>the</strong> contentsof core storage during <strong>the</strong> execution of a user'sFORTRAN core load in which LOCAL subprograms,CORE LOCATION PROCEDURESThe following core load elements are located bymeans of <strong>the</strong> procedures given with <strong>the</strong> elements.FAC (Floating Accumulator)-- 3 words used as FORTRAN Floating Accumulator-- Located at XR3 + /007D.<strong>Program</strong> Analysis Procedures 11S


•Table 8. Error Number ListDETECTING DETECTING DETECTING DETECTINGHEXADECIMAL SYMBOLIC SUBROUTINE SUBROUTINE SUBROUTINE SUBROUTINEERROR NUMBER ERROR STOP DURING SYSTEM DURING DURING ASSEMBLER 'DURING RPG COREIN ADDRESS PROGRAM FORTRAN LANGUAGE CORE LOAD EXECUTIONERROR EXPLANATION CORRECTIVE ACTIONACCUMULATOR EXECUTION CORE LOAD LOAD EXECUTIONEXECUTION1000 $PRET <strong>System</strong> 1442/1442 CARDZ - 1442 - Device Not Ready 1442 - Ready <strong>the</strong> DeviceSubroutinePNCHZ- CARDO CARDO 1442-6,-7 - Device Not ReadyCARDI- Read initiated withLast Card IndicatoronPNCHO PNCHO 1442-5 - Device Not ReadyPNCHZ$PST4 <strong>System</strong> 1442/1442 CARDZ CARDO 1442 - Device Not Ready 1442-5 - Run out <strong>the</strong> punchSubroutine PNCHZ CARDI CARDO — Ready <strong>the</strong> DevicePNCHOPNCHZPNCHO1442-6,-7 - Ready <strong>the</strong> Device1001 $PRET - CARDOCARD!PNCHOPNCItlCARDOPNCHO1442 - Invalid DeviceSpecified- Device not on system- Invalid FunctionSpecified- Word Count over +80- Word Count zero ornegative1442 - Use Trace Back Proceduresto analyze calling program2000 $PRET <strong>System</strong> Keyboard TYPEZ TYPED Console Printer/Keyboard Console Printer/KeyboardSubroutine,WRTYZ WRTY0 WRTYO - Device Not Ready - Ready <strong>the</strong> Device<strong>System</strong> Keyboard/Console PrinterSubroutine$PST4 <strong>System</strong> Keyboard TYPEZ TYPE() WRTYO Console Printer/Keyboard Console Printer/KeyboardSubroutine,WRTYZ WRTY0 - Device Not Ready - Ready <strong>the</strong> Device<strong>System</strong> Keyboard/Console PrinterSubroutine,-2001 $PRET - - TYPE() Console Printer/Keyboard Console Printer/KeyboardWRTYO WRTYO - Device not on <strong>System</strong>- Invalid Function- Use Trace Back Proceduresto analyze calling programSpecified- Word Count zero ornegative3000 SPRET <strong>System</strong> 1134/1055 PAPTZ PAPT1 1134/1055 - Device Not Ready 1134/1055 - Ready <strong>the</strong> DeviceSubroutine PAPTX -PAPTN$PST4 <strong>System</strong> 1134/1055 PAPTZ PAPTi 1134/1055 - Device Not Ready 1134/1055 - Ready <strong>the</strong> DeviceSubroutine PAPTX -PAPTN3001 SPRET - PAPT1 1134/1055 - Invalid Function 1134/1055 - Use Trace BackPAPTX_PAPTNSpecified- Invalid Check Digit- Word Count zero ornegativeProcedures toanalyze callingprogram4000 SPRET <strong>System</strong> 2501/1442 READZ READO 2501 - Device Not Ready 2501 - Ready <strong>the</strong> DeviceSubroutine READI READO$PST4 - READZ READO 2501 - Device Not Ready 2501 - Ready <strong>the</strong> DeviceREADI READO - Read Error- Feed Check- Run out <strong>the</strong> reader oldretry with last card readand cards run out116


•Table 8. Error Number List (Continued)4001 $PRET - READOREAD)READO2501 - Invalid FunctionSpecified- Word Count over +80- Word Count zero ornegative2501 - Use Trace Back Proceduresto analyze calling program5000 $PRET DISKZ DISKZ DISKZDISK1DISKNDISKZ Disk - Device Not Ready Disk - Ready <strong>the</strong> Device5001 $PRET - DISK1DISKN- Disk - Invalid Device Specified- Device not in <strong>System</strong>- Invalid FunctionSpecified- Area to be writtenFile-protected- Word Count zero ornegative- Starting Sector Addressover +1599Disk - Use Trace Back Proceduresto analyze calling program$PST2 DISKZ DISKZ DISKZDISK1DISKNDISKZDisk - Power Unsafe- Write SelectDisk - Turn power down, wait forCARTRIDGE UNLOCKEDlight to come on, turnpower up, <strong>the</strong>n retry- Call CE on persistent error5002 $PST2 DISKZ DISKZ DISKZDISK)DISKNDISKZDisk - 16 retrys made withoutsuccessDisk - Initiate 16 more retrys- Use ano<strong>the</strong>r drive- Use ano<strong>the</strong>r cartridge- Reinitialize cartridge5003 $PRET DISK1DISKN- - - Disk - Invalid Device Specified- Device not in <strong>System</strong>- Invalid FunctionSpecified- Area to be writtenFile-protected- Word Count zero ornegative- Starting Sector Addressover +1599Disk - Use Trace Back Proceduresto analyze calling program5004 $PST2 DISKZ DISKZ DISKZ DISKZ Disk - Disk Error Disk - Turn power down, wait forCARTRIDGE UNLOCKEDlight to come on, turnpower up, <strong>the</strong>n retry- Call CE on persistent error6000 $PRET <strong>System</strong> 1132SubroutinePRNTZPRNTIPRNT2PRNT3PRNTI1132 - Device Not Ready- End of Forms1132 - Ready <strong>the</strong> Device6001 $PRET - - PRNTIPRNT2PRNT3PRNT11)32 - Invalid FunctionSpecified- Word Count over +60- Word Count zero ornegative1132 - Use Trace Back Proceduresto analyze calling program7000 $PRE -- PLOT1 - 1627 - Device Not Ready 1627 - Ready <strong>the</strong> Device$PST3 ., - PLOT1 - 1627 - Device Not Ready 1627 - Ready <strong>the</strong> Device7001 $PRET -- - PLOT! _ 1627 - Invalid Device Specified- Device not on <strong>System</strong>- Invalid FunctionSpecified- Word Count zero ornegative1627 - Use Trace Back Proceduresto analyze calling program8001 $PRET - - SCATSCAT2SCAT3_SCA - Invalid FunctionSpecified- Invalid Word Count- Invalid SubfunctionSpecifiedSCA - Use Trace Back Proceduresto analyze calling program<strong>Program</strong> Analysis Procedures 117


*Table 8. Error Number List (Continued)8002 $PRET - SCATI - SCA - Receive operationnot completed- Transmit operationnot completed8003 $PRET - - SCATI _ SCA - Synchronization notestablished beforeattempting to performsome Transmit orReceive Operation- Attempting to Receivebefore receiving INQsequenceSCA - Use Trace Back Proceduresto analyze calling programSCA - Use Trace Bock Proceduresto analyze calling program9000 $PRET <strong>System</strong> 1403Subroutine$PST4 <strong>System</strong> 1403SubroutinePRNZ PRNT3 PRNT3 1403 - Device Not Ready- End of FormsPRNZ PRNT3 PRNT3 1403 - Device Not Ready- Print Error1403 - Ready <strong>the</strong> Device1403 - Ready <strong>the</strong> Device9001 $PRET - - PRNT3 PRNT3 1403 - Invalid FunctionSpecified- Word Count over +60- Word Count zero ornegative1403 - Use Trace Back Proceduresto onalyze calling programA000 $PRET - - OMPR _ 1231 - Device Not Ready 1231 - Ready <strong>the</strong> Device$PST4 - OMPRI - 1231 - Device Not Ready- Timing Mark Error- Read Error1231 - Ready <strong>the</strong> Device- Retry with <strong>the</strong> sheet thathas been selected into<strong>the</strong> stackerA001 $PRET - - OMPR-1231 - Invalid FunctionSpecified1231 - Use Trace Back Proceduresto analyze calling program*Table 9. Error Stop ListAbsolute Address Symbolic Address <strong>Program</strong> Explanation/0012 - ColdStartLoader-Invalid disk drive numberin Console Entry Switches-Indicated disk drive notready/004 - Cold -Disk read errorStart -Waiting for interrupt fromLoader seek operation/0046 ColdStartLoader-Wailing for interrupt fromreading sector @IDAD/0029 $PRET+1 <strong>All</strong> ISSs -Preoperative Error/0082 $PST1 +1 Level 1ISSs/0086 SPST2 +1 Level 2ISSs/008A $PST3+1 Level 3ISSs/008E $PST4 +I Level 4ISSs-Postoperative Error onlevel 1-Post-operative Error onlevel 2-Post-operative Error onlevel 3-Post-operative Error onlevel 4ARITHMETIC AND FUNCTION SUBPROGRAMERROR INDICATORS-- 3 words preceding FAC.-- First word (XR3 + /007A) is used for real arithmeticoverflow and underflow indicators.-- Second word (XR3 + /007B) is used for dividecheck indicator.-- Third word (XR3 + /007C) is used for functionsubroutine indicators.-- The loader initializes all three words to zero.LIBF TV (Library Function Transfer Vector)- - One 3-word entry for each LIBF listed in <strong>the</strong>core map.-- Located just preceding ARITH/FUNC ERRORINDICATORS.- - Higher core end is located at XR3 + /0079.-- First LIBF Entry (<strong>the</strong> beginning of LIBF TV) islocated at (XR3 + /0077) - (3 times <strong>the</strong> numberof LIBFs listed in core map).118


COMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorCOMMA,SkeletonSupervisorDISKZ DISKZ DISKZ DISK1orDISKNDEFINE FILE DEFINE FILEConstants,TableTableIntegersArraysConstants,IntegersArraysConstants,IntegersFormatParametersMainline MainlineFormat Format <strong>Program</strong> <strong>Program</strong>Parameters ParametersMainline<strong>Program</strong>In-CoreSubroutinesFlipperTableMainline<strong>Program</strong>In-CoreSubroutinesIn-CoreSubroutinesInitrytin-CoreSubroutinesSubroutinesFLIPRInterrupt .,.../ IntsevrreufitLOCALLevelArea Subroutines SubroutinesSOCALAreaIniteervruortSubroutines7LIEF TV LIBF TV LIBF TVCALL TV CALL TV CALL TVCOMMON COMMON COMMONLIBF TVCALL TV• Figure 17. Core Layout Dur'ng User Core Load ExecutionCOMMASkeletonSupervisorDISKZFixed Routine(Mainline<strong>Program</strong>)VariableSection(Mainline<strong>Program</strong>)In-CoreSubroutineIntservruertSubroutineALIBF TVCALL TVLIBF TV SOCAL LINKAGE- - The 6 or 9 words used to link to <strong>the</strong> SOCAL/LOCAL Flipper.- - Located just preceding <strong>the</strong> First LIBF Entry in<strong>the</strong> LIBF TV.- - 6 words long if SOCAL option 1; 9 words long ifSOCAL option 2.CALL TV (Call Transfer Vector)- - One single-word entry for each call listed in <strong>the</strong>core map.-- Located immediately following FAC.-- First CALL TV Entry is at XR3 + /0080 (add 1 ifaddress comes out odd).- - The Last CALL TV Entry is at (First CALL TVEntry-1) - (Number of CALLs listed in <strong>the</strong> coremap).DISK I/O SUBROUTINE- - <strong>All</strong> Disk I/O subroutines are loaded beginningat CORE LOCATION /00F2.- - The Disk I/O subroutines vary in length (see table)-- The type of disk subroutine in core is contained in$DZ1N (see table)Disk I/OSubroutineLocation inCoreFirstWordContents Currently First Last of User'sof $DZ1N in Core Word Word <strong>Program</strong>FFFF DISKZ /00F2 /01DF /01FE0000 DISK1 /00F2 /0293 /02B20001 DISKN /00F2 /03A1 /03C0DFT (DEFINE FILE Table)-- 7 words for each file defined by <strong>the</strong> user.-- Located at 1 plus <strong>the</strong> end of <strong>the</strong> disk I/O subroutine.ARRAYS (In User's <strong>Program</strong> Area)-- Located immediately following DEFINE FILETable, if any.CONSTANTS AND INTEGERS (In User's <strong>Program</strong>Area)-- Located immediately following ARRAYS, if any.COMMON (The area at "End of Core" defined byCOMMON statement)-- Length of COMMON is contained in $COMN.-- Start of COMMON is highest core address, (XFFF),minus <strong>the</strong> Length of COMMON.IN-CORE SUBROUTINES (subroutines that are incore all <strong>the</strong> time)-- Located immediately following user's mainlineprogram.<strong>Program</strong> Analysis Procedures 119


- - Those subroutines listed in core map that arenot SOCALS or LOCALS are In-Core subroutines.- - The load address of <strong>the</strong>se subroutines is listedwith subroutine name.LDDBSILISTL ENTRY POINTLOCAL/SOCAL FLIPPER (FLIPR)- - Load address given in core map under <strong>the</strong> headingSYSTEM SUBROUTINES.LOCAL AREA (The "Load-on-Call" overlay area)-- Size depends upon largest LOCAL subroutineused.-- Beginning core address is FLIPR + /0066.- - Ending core address is address of SOCAL Areaminus 1.SOCAL AREA (<strong>System</strong> overlay area)- - Located immediately following LOCAL Area.-- Beginning core address is found at FLIPR+ /004D.-- The first word in SOCAL Area contains <strong>the</strong>word count of SOCAL Area.- - Ending core address is <strong>the</strong> beginning address+ <strong>the</strong> word count of <strong>the</strong> SOCAL Area.GENERALIZED SUBROUTINE MAINTENANCE/ANALYSIS PROCEDUREFlowdiagram 4 provides <strong>the</strong> procedure to be used fordetailed analysis of an I/O subroutine. The procedureis applicable to FORTRAN device, general ISS,and system device subroutines.TRACE BACK PROCEDURESLIST DC PARAMETERDCPARAMETERTo place <strong>the</strong> subroutine into a loop:1. Obtain link word from <strong>the</strong> system devicesubroutine.2. The contents of this link word point to <strong>the</strong> locationfollowing <strong>the</strong> long BSI instruction.3. Insert into <strong>the</strong> location following <strong>the</strong> long BSIinstruction an MDX instruction back to <strong>the</strong> LDDinstruction.LIBRARY SUBROUTINES (except 'Z' subroutinesand PLOTX)The linkage to <strong>the</strong> <strong>System</strong> Library device subroutines(ISSs) are of <strong>the</strong> following form:LIBFCALLBSI 3 TVDISP BSI I CALLTVDC CONTROL DC CONTROLDC ARG 1 DC ARG 1Flowdiagram 5 provides <strong>the</strong> procedure to be used totrace back from a failing subroutine to <strong>the</strong> precedingportion of <strong>the</strong> core load, which called <strong>the</strong> subroutine.This procedure can be used to trace all <strong>the</strong> way backto <strong>the</strong> mainline program.SUBROUTINE LOOPING CAPABILITIESSYSTEM DEVICE SUBROUTINESThe linkages to system device subroutines are of<strong>the</strong> form:DC ARGN DC ARGNTo place <strong>the</strong> subroutine into a loop:1. Insert in <strong>the</strong> location following <strong>the</strong> last argumentan MDX instruction back to <strong>the</strong> BSI instruction.2. Some of <strong>the</strong> arguments may have to be changedto point to <strong>the</strong> BSI instruction because <strong>the</strong>y areerror exits or busy addresses.3. Refer to subroutine data charts for uniqueoperating characteristics.120


Assumes CoreLocation Procedureshavebeen donePossible DeviceFailure, RunDiagnostics orLoop CallLoop SubroutineoopingCapabi litiesLFlowdiagram 4. Generalized Subroutine Maintenance/Analysis Procedure<strong>Program</strong> Analysis Procedures 121


Step0Procedurefailing — — ----- —Start withThis procedure assumes <strong>the</strong> user has alreadysomeanalyzed <strong>the</strong> subroutine per SubroutineSubroutineAnalysis Procedures and has blocked outa core dump per Core Location Procedures.Get <strong>the</strong> core map printed during programIloadingA core map is obtained by punching an"L" in column 14 of <strong>the</strong> XEQ card if <strong>the</strong>program being loaded is in disk systemformat.0Multipleentry points inthis subroutineIDetermine which function was being used I( Step 19 )0Get <strong>the</strong> symbolic entry point from <strong>the</strong>Subroutine Data Charts0Find <strong>the</strong> symbolic entry name in <strong>the</strong> core1ma pThis is <strong>the</strong> Core Load Address of thatentry point.00— The subroutine type is obtained from <strong>the</strong>Subroutine Data ChartsThe contents of <strong>the</strong> address — —The Core Loadderived in step 5 is <strong>the</strong> LinkAddress containsWord back to <strong>the</strong> calling<strong>the</strong> Link Wordstatement in <strong>the</strong> callingback to <strong>the</strong>programcaller.( Step 110Add 2 to <strong>the</strong> Core Load Address obtainedin step 5This gives <strong>the</strong> address of <strong>the</strong> word thatpoints to <strong>the</strong> transfer vector.0Get <strong>the</strong> contents of <strong>the</strong> word located atI<strong>the</strong> address computed in step 8This gives <strong>the</strong> address of <strong>the</strong> transfervector.Get <strong>the</strong> first word of <strong>the</strong> transfer vectorIentryThis is <strong>the</strong> Link Word back to <strong>the</strong> callingstatement in <strong>the</strong> calling subroutine.Flowdiagrarn 5. Trace Back ProceduresStep 11 )C122


StepProcedureContinue nowhaving <strong>the</strong> addressof callingstatement(Now determine <strong>the</strong> name of <strong>the</strong> failingsubroutine.Match <strong>the</strong> address of <strong>the</strong> calling programto <strong>the</strong> addresses in <strong>the</strong> core mapStep 17 )Determine which overlay Is in core.Locate <strong>the</strong> SOCAL linkage words in <strong>the</strong>c ore dumpUse <strong>the</strong> Core Dump Analysis Proceduresto locate SOCAL linkage words, 3 foreach overlayVThe word group containing "FOFD" is<strong>the</strong> overlay in coreMark <strong>the</strong> core map to identify all subroutinesIn <strong>the</strong> incore overlay-SOCAL LINKAGE-XXXX XXXX 70FX Overlay 3XXXX XXXX 70FX Overlay 2XXXX XXXX 70FX Overlay 1-The overlay in core contains 70FD inthird word-Overlays not in core contain70F4 (SOCAL level 2) or70F7 (SOCAL level 1) In third wordMake a table of subroutines by overlayassignmentMatch <strong>the</strong> address of <strong>the</strong> ca !ling programobtained in step 7 (CALL) or step 10(LIBF) to <strong>the</strong> addresses marked in step 15The address closest to and less than <strong>the</strong>calling program's address identifies<strong>the</strong> name in core mapYou now have name of calling subroutine.Analyze this subroutine using SubroutineAnalysis Procedures( Step 1Flowdiagram 5. Trace Back Procedures (Continued)<strong>Program</strong> Analysis Procedures 123


StepProcedureGet <strong>the</strong> symbolic location of functioncode from <strong>the</strong> Subroutine Data ChartsThe different entry points are related to<strong>the</strong> various "functions" performed by <strong>the</strong>subroutinene.Find<strong>the</strong> symboliclocation in <strong>the</strong> jsubroutine listingMicrofiche reference to subroutine listingis given in Appendix D.VGet <strong>the</strong> relative address of <strong>the</strong> location' jof function codeThe address at <strong>the</strong> symbolic locationdetermined in step 20 is <strong>the</strong> relativeaddress.Get <strong>the</strong> load point address for thissubroutine from core mapCalculate core location of function IcodeThe relative address determined in step21 plus <strong>the</strong> load point address determinedin step 22 gives <strong>the</strong> location of <strong>the</strong>function code.Get <strong>the</strong> function code from core dump ]and decode with Subroutine Data ChartGet <strong>the</strong> symbolic name for each functionentry point from <strong>the</strong> Subroutine DataChart(Step 5 )Flowdiagrarn 5. Trace Back Procedures (Concluded)124


SUBROUTINE DATA CHARTSSYSTEM DEVICE SUBROUTINE FOR KEYBOARD/CONSOLE PRINTERPhase ID: @ KBCPUsed by: Monitor system programsSubroutines required: ILSO4Linkage: LDD LISTBSI L KB000+1LIST DCDCFUNCTION CODEI/O AREA ADDRESSPreoperative input parameters:Function ACC EXTI/O AreaAddressRead, Convert,Print/7002 Address of I/OAreaWord CountPostoperative conditions and entry points:Function at KB080Symbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelRead, Convert,PrintRegister status:/7002 KB000+1 103000+1 KB020+1 KB020+1MainlineSignificant variables:Saved at/restored fromsymbolic locationACC EXT XR1 XR2 XR3 StatusUsed X X X XSymbolic locationKB080KB160Contents/UseThe function is placed here. It becomes an MDX *+2 when executed.Original word count.KB170KB270Original I/0 area address.Character buffer area, containing a 12-bit character read from <strong>the</strong> Keyboard, <strong>the</strong>rotate/tilt code character printed, or a control character.103280 Data area pointer, pointing to <strong>the</strong> next word in <strong>the</strong> data area into which <strong>the</strong> EBCDICcharacter will be placed.KB290KB370 and KB370+1Remaining word count.Read/Print Control IOCC.<strong>Program</strong> Analysis Procedures 125


SYSTEM DEVICE SUBROUTINE FOR 1442/1442Phase II): @ 1442Used by: Monitor system programsSubroutines required: ILSO4Linkage: LDD LISTBSI L CD000+1LIST DCDCFUNCTION CODEI/O AREA ADDRESSPreoperative input parameters:Function ACC EXT I/O Area AddressRead /7000 Address of <strong>the</strong> I/O No word count is used but anArea80 position area must bespecified.Punch /7001 Address of <strong>the</strong> I/O No word count is used but anArea80 position area must bespecified.Read /7002 Address of <strong>the</strong> I/O No word count is used but anArea80 position area must bespecified.Feed /7003 Not used Not usedPostoperative conditions and entry points:Function at CD090Symbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelRead /7000 CD000+1 CD000+1 CD016+1 CD016+1 0CD010+1 CD010+1 4Punch /7001 CD000+1 CD000+1 CD016+1 CD016+1 0CD010+1 CD010+1 4Read /7002 CD000+1 CD000+1 CD016+1 CD016+1 0CD010+1 CD010+1 4Feed /7003 CD000+1 CD000+1 CD010+1 CD010+1 4126


Register status:MainlineSaved at/restored fromsymbolic locationACC EXT XR1 XR2 XR3 StatusCD120Used X XInterruptlevel 0Interruptlevel 4Saved at/restored fromsymbolic location CD190 CD190+1 CD018UsedSaved at/restored fromsymbolic locationXUsed X X X X XSignificant variables:Symbolic locationContents/UseCD210CD250CD260CD230CD188$LAST$CTSW$IBSYFirst column indicator.Current column address.Second half of <strong>the</strong> last IOCC performed, read or punch.Second half of <strong>the</strong> last IOCC performed, start read or punch.Skip indicator; non-zero = take one feed cycle.Last card indicator; non-zero = last card.Control card switch; non-zero = control card read.Busy indicator for 1442; non-zero = busy.<strong>Program</strong> Analysis Procedures 127


SYSTEM DEVICE SUBROUTINE FOR 2501/1442Phase ID: @ 2501Used by: Monitor system programsSubroutines required: ILSO4Linkage: LDD LISTBSI L RP000+1LIST DCDCFUNCTION CODEI/O AREA ADDRESSPreoperative input parameters:Function ACC EXT I/O Area AddressRead /7000 Address of I/O Area Word countPunch /7001 Address of I/O Area Not usedRead /7002 Address of I/O Area Word countFeed /7003 Not Used Not usedPostoperative conditions and entry points:Function at RP360Symbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelRead /7000 RP000+1 RP000+1 RP020+1 RP020+1 4Punch /7001 RP000+1 RP000+1 RPO40+1 RPO40+1 0RP020+1 RP020+1 4Read /7002 RP000+1 RP000+1 RP020+1 RP020+1 4Feed /7003 RP000+1 RP000+1 RP020+1 RP020+1 4Register status:MainlineInterruptlevel 0Interruptlevel 4Saved at/restored fromsymbolic locationUsed X XSaved at/restored fromsymbolic locationUsedSaved at/restored fromsymbolic locationACC EXT XR1 XR2 XR3 StatusRP440RP480 RP480+1 RP060XUsed X X X128


Significant variables:Symbolic locationContents/UseRP500RP520RP600RP200$LAST$CTSWSIB SYCurrent column address.I/O address for restart information.Word count for 2501 Reader.Device last used:/1702 = 1442/4F01 = 2501Last card indicator; non-zero = last card.Control card switch; non-zero = control card read.Busy indicator; non-zero = busy.<strong>Program</strong> Analysis Procedures 129


SYSTEM DEVICE SUBROUTINE FOR CONSOLE PRINTERPhase ID: @ CPTRUsed by: Monitor system programsSubroutines required: ILSO4Linkage: LDD LISTBSI L CP000+1LIST DC FUNCTION CODEDC I/O AREA ADDRESSPreoperative input parameters:Function ACC EXTI/O AreaAddressAddress of pageRestore /7000 heading buffer(@HONG)Write /7001 Address of I/O Word CountAreaSkip /7002Postoperative conditions and entry points:Function at CP120Symbolic Return Interrupt Return Interruptentry point address at entry point address at levelAD CP000+1 CP000+1 CP020+1 CP020+1Register status:MainlineSaved at/restored fromsymbolic locationACC EXT XR1 XR2 XR3 StatusCP170+2Used X X X X130


Significant variables:Symbolic locationCP120CP200CP350CP350+1CP370CP380CP450Contents/UseThe function is placed here. This word is executed to decode <strong>the</strong> function./7000 is a MDX */7001 is a MDX * + 1/7002 is a MDX * + 2Carriage return counter, used for counting carriage returns for restore.IOCC for printing on console.CP350 contains address of CP450.Actual word count of message not including trailing blanks.Data area pointer, pointing to <strong>the</strong> word containing <strong>the</strong> 2 EBCDIC characters,one of which is being printed.Print character buffer word. The IOCC points to this word, which contains<strong>the</strong> character or control character just printed.<strong>Program</strong> Analysis Procedures 131


SYSTEM DEVICE SUBROUTINE FOR :1132Phase ID: @1132Used by: Monitor system programsSubroutines required: ILSO1Linkage: LDD LISTBSI L PN0004-1LIST DCDCFUNCTION CODEI/O AREA ADDRESSPreoperative input parameters:Function ACC EXTI/O AreaAddressPrint /7001 I/O Area address 0 word count< 80Skip to Channel 1 /7000 I/0 Area address I/O Area isreferencedSpace Immediate /7002 Not used Not usedPostoperative conditions and entry points:Function at PN380Symbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelPrint /7001 PN000+1 PN000+1 PN010+1 PN010+1 1Skip /7000 PN000+1 PN000+1 PN010+1 PN010+1 1Space /7002 PN000+1 PN000+1 PN010+1 PN010+1 1Register Status:ACC EXT XR1 XR2 XR3 StatusMainlineInterruptlevel 1Saved at/restored fromsymbolic locationPN400+1 PN400+3 PN400+5Used X X X X X XSaved at/restored fromsymbolic locationPN200 PN200+1 PN440+1 PN440+3 PN440+5 PN450Used X X X X X X132


Significant variables:Symbolic locationPN040PN050PN060PN070PN080PN090PN100PN110PN120PN130PN150PN170PN180PN370+1PN460+1PN470+1$PBSYContents/UseLast emitter character read as a result of a read emitter response interrupt.Second word of Sense-DSW-with-reset IOCC.Last DSW sensed in interrupt.Second word of Sense-DSW-with-no-reset IOCC.First word of Read emitter IOCC, contains <strong>the</strong> address of location PN040.Second word of Read emitter MCC.First word of Start Printer IOCC, also <strong>the</strong> idle scan counter.Second word of Start Printer IOCC.Print scan counter.Second half of Stop Printer IOCC.Second half of Start Carriage IOCC.Second half of Stop Carriage IOCC.First half of Stop Carriage IOCC and mask to check bits 3, 5, and 6 of Printer DSW.Address of <strong>the</strong> I/O area.Word count.Address of message./0001 indicates I/0 buffer is busy and 49 print scan cycles have not beencompleted./0000 indicates routine may still be busy completing <strong>the</strong> 16 idle scans; however,I/O buffer is ready to accept new input.$CH12Zero = Channel 12 has not been sensed.Non-Zero = Channel 12 has been sensed and skip to channel 1 has not beenperformed.<strong>Program</strong> Analysis Procedures 133


SYSTEM DEVICE SUBROUTINE FOR 1403Phase ID: (00.403Used by: Monitor system programsSubroutines required: ILSO4Linkage: LDD LISTBSI L PR000+1LIST DC FUNCTION CODEDC I/O AREA ADDRESSPreoperative input parameters:Function ACC EXTI/O AreaAddressPrint 1 Line /7001 Address of 0 word count S. 60I/O AreaSkip /7000 Address ofI/O AreaI/O Area isreferencedSpace Immediate /7002 Not used Not usedPostoperative conditions and entry points:Function at PR150I/O Areaword countSymbolicentry pointReturnaddress atInterruptentry pointPrint /7001 Non-Zero PR000+1 PR000 PRO10Skip /7000 Not used PR000+1 PR000+1 PRO10Space /7002 Not Used PR000+1 PR000+1 PR010Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationPR230+1 PR240+1 PR250+1Used X X X X X X:L34


Significant variables:Symbolic locationPR140PRO80PRO80+1PR110PR300PR300+1PRO90PRO90+1PR290+1PRO60PR070PR110PR39.0Contents/UseA NOP after <strong>the</strong> following areas have been adjusted to <strong>the</strong> correct address as aresult of relocation:PR300PR500+1PR180+2PR280+2PR170+1PR220+2PRO80PR400+1PR430+1First word of Print IOCC, contains address of print buffer.Second half of Print IOCC.Second half of Sense-without-reset IOCC,First word of Skip-to-channel-12 IOCC.Second word of Skip-to-channel-12 IOCC.First word of Space immediate IOCC.Second word of Space immediate IOCC.Address of <strong>the</strong> user's I/O area.Storage location for <strong>the</strong> last DSW sensed during interrupt; also, first word ofSense-DSW-with-reset IOCC.Second word of Sense-DSW-with-reset IOCC.Second word of Sense-DSW-without-reset IOCC.60-word buffer from which <strong>the</strong> line is printed.$PGCT Binary page count, where 0 page count 32767$CH12$PBSYChannel 12 switch indicating channel 12 detected in DSW during interrupt;not reset until a skip to channel 1 is requested by <strong>the</strong> user.Printer busy switch, modified during execution of routine.($PBSY) = Zero: routine and printer not busy.= Positive: transmission to printer is in progress; transmissioncomplete has not been received; subroutine I/O buffer is busy.= Negative: transmission complete has been received; subroutineI/O buffer can now be set up with new message.<strong>Program</strong> Analysis Procedures 135


SYSTEM DEVICE SUBROUTINE FOR 1134/1055Phase ID: @ 1134Used by: Monitor system programsSubroutine required: noneLinkage: LDD LISTBSI L PT000+1LIST DCDCFUNCTION CODEI/O AREA ADDRESSPreoperative input parameters:Function ACC EXTI/O AreaAddressRead withoutconversion/7000 Address of I/O Area Word CountPunch /7001 Address of I/O Area Word CountRead with conversion/7002 Address of I/O Area Word CountPostoperative conditions and entry points:Function at PT060Symbolicentry pointReturnaddress atInterruptentry pointInterruptlevelRead with conversion/7000 PT000+1 PT000+1 PT010+1 4Punch /7001 PT000+1 PT000+1 PT010+1 4Read withoutconversion/7002 PT000+1 PT000+1 PT010+1 4Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationUsed X X X136


Significant variables:Symbolic locationPT000+1PT010+1PT060PT340PT360PT370PT380PT460 and PT460+1PT480PT500Contents/UseReturn address to caller from main line.Return address from interrupt.Function code, executed as follows:/7000 = MDX */7001 = MDX *+1/7002 = MDC *+2Data area pointer.Remaining word count.Switch used for reading or punching: /0001 = punch, /0002 = read.Switch used to indicate if conversion of information read is needed:zero = no conversion,non-zero = conversion.IOCC for read and punch.Data buffer. The character to be read or punched is contained here.Counter for counting first 3 characters.<strong>Program</strong> Analysis Procedures 137


SYSTEM DEVICE SUBROUTINE FOR DISK -- DISKZPhase ID: @DZIDUsed by: Monitor system programsAssembler Language programsFORTRAN programsRPG programsSubroutines required: ILSO2Linkage: LDD LISTBSI L DZ000LIST DCDCFUNCTION CODEI/O' AREA ADDRESSPreoperative input parameters:Function ACC EXTI/O AreaAddressI/O AreaAddress + 1Read /7000 or Address of <strong>the</strong> 0 word count Drive code and/0000 I/O Area (must .1 length of defined sector addressbe even) data areaWrite /7001 Address of <strong>the</strong> 0 word count Drive code andI/O Area (mustbe even)5_ length of areato be writtenon disksector addressFind /0000 Address of <strong>the</strong>I/O Area (mustbe even)/0000 Drive code andsector addressPostoperative conditions and entry points:Function at DZ945Symbolicentry pointReturnaddress atInterruptentry pointReturnaddress at—InterruptlevelRead /0000 DZ000 D2.100+5 DZ010 DZ 010 2Write /0100 DZ000 D2.100+5 DZ010 DZ010 2Find /0000 DZ000 D2.100+5 DZ010 DZ010 2Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationDZ100+1DZ100+3Used X X X X X138


Significant variables:Symbolic locationDZ350+1DZ235+1DZ904 andDZ905DZ908 andDZ909DZ901DZ906 andDZ907DZ975DZ912DZ913DZ910Contents/UseAddress of <strong>the</strong> word in COMMA containing <strong>the</strong> current position of <strong>the</strong> heads on <strong>the</strong>referenced disk.Address of <strong>the</strong> first word of <strong>the</strong> I/O Area.C[ C(DZ235+1)] = originally requested word countC[C(DZ235+1) + ] = originally requested sector addressFirst and second words of <strong>the</strong> last IOCC performed (excluding sense DSW).First and second words of forced-Read after-Seek IOCC.Sector address of previously executed forced Read.IOCC developed for user-requested function.Second word of Read-Back-Check IOCC.Word count remaining to be read or written from original.Next sector to be read or written.Second word of Seek IOCC.<strong>Program</strong> Analysis Procedures 139


CARDZFlowcharts: FI004-05Used by: SFIOSubroutine required: HOLEZ, ILS01, ILSO4Linkage: LIBF CARDZ (BSI 3 TV DISP)where ACC = FUNCTION CODEXR1 = I/O AREA ADDRESSXR2 = WORD COUNTPeroperative input parameters:Function ACC XR1 XR2Read/0000I/0 Area AddressWord CountWrite/0002I/0 Area AddressWord CountPostoperative conditions and entry points:Function at C Z912Symbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelRead/0000CARDZLIBF TV linkwordCZ100(column)CZ100(column)1Write/0002CARDZUHF TV linkwordCZ110(op complete)CZ110(op complete)4Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationUsed X X X X X140


Significant variables:Symbolic locationCZ904CZ904+1CZ902CZ923Contents/UseStart read or punch IOCC, set by program depending on function used toinitiate operation.If read, CZ904 + 1 = CZ906 + 1If write, CZ904 + 1 = CZ908 + 1Read or Punch IOCC, set by program depending on function to read or punchcolumns.If read, CZ902 + 1 = CZ906If write, CZ902 + 1 = CZ908Address pointer to I/0 area, incremented on each column interrupt.CZ925 Original I/O area address -1.CZ920CZ010$RWCZDSW is saved here on an operation-complete interrupt.Switch used for waiting for interrupt:Set positive when waiting for any interrupt.Set zero when column interrupt occurs.Set negative when op-complete interrupt occurs.Previous operation switch:/0000 = previous operation was a read./0002 = previous operation was a write.If a write function is to be performed and <strong>the</strong> previous operation was a write,this switch causes CARDZ to read a card and test for // in columns 1-2.CZ918CZ918-3thruCZ918Switch used to test for /1 card before writing on it; zero means only readingor previous operation before write was a read.Buffer area for saving first 3 columns; rest of card is read into fourth wordwhen reading before write.<strong>Program</strong> Analysis Procedures 141


PNCHZFlowchart: FI011Used by: SFIOSubroutines required: HOLEZ, ILS01, ILSO4Linkage: LIBF PNCHZ (BSI 3 TV DISP)where ACC = FUNCTION CODEXR1 = I/O AREA ADDRESSXR2 = WORD COUNTPreoperative input parameters:Function ACC XR1 XR2Write /0002 I/O Area Address Word (character) countof 80Postoperative conditions and entry points:FunctionSymbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelWrite PNCHZ LIBF TV linkwordPZ060(column)PZ0600PZ080(op complete)PZ0804Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationUsed X X X X142


Significant variables:Symbolic locationPZ340PZ340+1PZ360 andPZ360+1PZ400PZ400+1PZ120+1PZ040Contents/UseAddress pointer to I/O area; First word of Punch IOCC, Incremented oneach column interrupt.Second word of Punch IOCC.Feed IOCC for initiating punch operation.Error display indicator.Second word of last card feed IOCC.Original I/0 area address.Switch used for waiting for operation -- complete interrupt:zero = op complete interrupt has occurrednon-zero = waiting for op-complete<strong>Program</strong> Analysis Procedures 143


READZFlowchart: FI008Used by: SFIOSubroutines required: HOLEZ, ILSO4Linkages: LIBF READZ (BSI 3 TV DISP)where XR1 = I/0 AREA ADDRESSPreoperative input parameters:FunctionReadXR1I/O Area AddressPostoperative conditions and entry points:FunctionSymbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelRead] READZ LIBF TV RZ060 RZ060 4link wordRegister status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationUsed X X X X XSignificant variables:Symbolic locationRZ360RZ360+1RZ380Contents/UseI/0 Area Address; also, first word of Read IOCC.Second word of Read IOCC.Switch used for interrupt processing:non-zero = waiting for interruptzero = set by occurrence of interrupt144


TYPE ZFlowchart: F1012Used by: SFIOSubroutines required: HOLEZ, GETAD, ILSO4Linkage: LIBF TYPEZ (BSI 3 TV DISP)where ACC = FUNCTION CODEXR1 = I/0 AREA ADDRESSXR2 = WORD COUNTPreoperative input parameters:Function ACC XR1 XR2Read/0000I/O Area AddressWord count, set to 80 byTYPEZWrite/0002I/O Area AddressCharacter countPostoperative conditions and entry points:Function at KZ910Symbolic Returnentry point address atRead /0000 TYPEZvia LIBF TVlink wordvia LIBF TVInterruptentry pointReturnaddress atInterruptlevelKZ100 KZ100 4Write /0002 TYPEZ link word KZ100 KZ100 4Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationUsed X X X X _Significant variables:Symbolic locationKZ911KZ210+1KZ910KZ906KZ914KZ913KZ900KZ902KZ912Contents/UseOriginal character count plus one.Original I/O area address.Read-Write function indicator word.IOCC used to print characters from KZ914.Buffer word used to hold character to be printed.Saved DSW from Sense-with-reset in interrupt routine.IOCC used to read Keyboard character into I/O area.IOCC used to release Keyboard.Number of remaining characters to be typed. (Each character read is typed.)<strong>Program</strong> Analysis Procedures 145


WRTYZFlowchart: FI009Used by: SFIOSubroutines required: GETAB, EBCTR, ILSO4Linkage: LIBF WRTYZ (BSI 3 TV DISP)where XR1 = I/0 AREA ADDRESSXR2 = WORD COUNTPreoperative input parameters:Function XR1 XR2Write I/O Area Address Character CountPostoperative conditions and entry points:FunctionSymbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelWrite WRTYZ WRTYZ+2 TZ100 TZ100 4Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationUsed X X X XSignificant variables;Symbolic locationTZ907TZ908TZ902Contents/UseNumber of characters remaining to be printed.Output buffer for printing character.IOCC used to print character out of TZ908.146


PRNZFlowchart: FI010Used by: SFIOSubroutines required: ILSO4Linkage: LIBF PRNZ (BSI 3 TV DISP)where XR1 = I/O AREA ADDRESSXR2 = WORD COUNTPreoperative input parameters:Function XR1 XR2Print I/O Area Address Word count, including 1 forcarriage control characterPostoperative conditions and entry points:FunctionSymbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelPrint PRNZ PRNZ+2 WZ 100 WZ 100 4Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationUsed X X X X XSignificant variables:Symbolic locationWZ 904WZ906WZ908WZ 990WZ934WZ 933Contents/UseFirst word of Print IOCC, Address of output area.Address for store after character conversion.Counter for character conversion.EBCDIC-to-1403-Printer-code conversion table.Transfer complete switch: zero = transfer complete.EBCDIC character being converted.<strong>Program</strong> Analysis Procedures 147


PRNTZFlowchart: FI006Used by: SFIOSubroutines required: ILSO2Linkage: LIBF PRNTZ (BSI 3 TV DISP)where XR1 = I/O AREA ADDRESSXR2 = WORD COUNTPreoperative input parameters:Function XR1 XR2Print Output buffer address (first char- Word count, including carriageacter is carriage control)control character.Postoperative conditions and entry points:FunctionSymbolic Return Interrupt Return Interruptentry point address at entry point address at levelPrint PRNTZ PRNTZ+2 AZ100 AZ100 2Register status:ACC EXT XR1 XR2 XR3 StatusMainlineInterruptlevel 2Saved at/restored fromsymbolic locationUsed X X X X XSaved at/restored fromsymbolic locationUsed148


Significant variables:Symbolic locationAZ150+1AZ919AZ900AZ922AZ914AZ924AZ918Contents/UseAddress of first data word in output buffer.Word count.Interrupt exit switch:+ , if line is complete- , if idles complete0 , if waitingSpace counter (positive number of spaces).DSW storage.Scan counter (print).Emitter-character storage.<strong>Program</strong> Analysis Procedures 149


PAPTZFlowchart: FI007Used by: SFIOSubroutine required: ILSO4Linkage: LIBF PAPTZ(BSI 3 TV DISP)where ACC = FUNCTION CODEXR1 = I/O AREA ADDRESSXR2 = WORD COUNTPreoperative input parameters:Function ACC XR1 XR2Read/0000Address of I/O AreaWord count, set to 120by PAPTZWrite/0002Address of I/O AreaWord countPostoperative conditions and entry points:Function at BZ924Symbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelRead/0000PAPTZPAPTZ+2BZ100BZ1004Write/0002PAPTZPAPTZ+2BZ100BZ1004Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationUsed X X X X150


Significant variables:Symbolic locationContents/UseBZ924BZ929BZ300+1BZ010BZ902BZ904BZ925BZ926BZ906Read/Write indicator.Number of words remaining to be read or punched.Address of I/O Area.Routine busy indicator: zero, no interrupt waiting to be processed; nonzero,an interrupt waiting to be processed.IOCC used to Start paper tape reader.IOCC used to Read paper tape.Read area for BZ904, Read paper tape IOCC.Write area for BZ906, Punch paper tape IOCC.DSW from sense-with-reset in interrupt subroutine.IOCC used to Punch paper tape.<strong>Program</strong> Analysis Procedures 151


CARDOUsed by: Assembler Language programs and RPG generated programsSubroutines required: ILSOO, ILSO4Linkage: LIBF CARDO (BSI 3 TV DISP)DC ARG1DC ARG2DC ARG3Preoperative input parameters:Function. ARG1 ARG2 ARG3 I/O Area AddressTest /0000 Return to this word ifbusyReturn to this word if notbusyNot usedRead /1000 I/O Area. Address NSI Word countPunch /2000 I/0 Area Address NSI Word countFeed /3000 Not used NSI Not usedStack /4000 Not used NSI Not usedPostoperative conditions and entry points:Function at CA20Symbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelTest CARDO CA34+1Read /7000 CARDO CA34+1 INT1 INT1 0INT2 INT2 4Punch /7001 CARDO CA34+1 INT1 INT1 0INT2 INT2 4Feed /7002 CARDO CA34+1 INT2 INT2 4Stack /7003 CARDO CA34+1Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationTEMP CA30+1 CA31+1 CA32Used X X X152


Significant variables:Symbolic locationCOUNTCOLMRSTRTRSTRT+1BUSYCHARERRORContents /UseNumber of words left to be transferred.Address being transferred to or from.Word count for restart.Starting address for restart.Busy indicator; non-zero = busy.Second half of <strong>the</strong> Sense DSW IOCC that was last executed.Skip indicator; non-zero = feed a card.<strong>Program</strong> Analysis Procedures 153


CARD'Used by: Assembler Language programsSubroutines required: ILSOO, ILSO4Linkage: LIBF CARD1 (BSI 3 TV DISP)DC ARG1DC ARG2DC ARG3Preoperative input parameters:Function ARG1 ARG2 ARG3 I/O Area AddressTest /0000 Return to this word ifbusyReturn to this wordif not busyNot usedRead /1000 I/O Area Address Address of usererror routinePunch /2000 I/O Area Address Address of usererror routineFeed /3000 I/0 Area Address Address of usererror routineWord countWord countNot usedStack /4000 Not used Not used Not usedPostoperative conditions and enter points:Function at CR24+1Symbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelTest CARD1 EXIT+1Read /0001 CARD1 EXIT+1 INT1 INT1 0INT2 INT2 4Punch /0002 CARD1 EXIT+1 INT1 INT1 0INT2 INT2 4Feed /0003 CARD1 EXIT+1 INT2 INT2 4Stack /0004 CARD1 EXIT+1154


Register status:MainlineSaved at/restored fromsymbolic locationUsedACC EXT XR1 XR2 XR3 StatusTEMP CR42+1 CR44+1 CR46XSignificant variables:Symbolic locationRESTRRESTR+1RESTR+2ERRORINDICINITCOLMCOUNTCHARContents/UseCount information for restart.I/O area address for restart.Address of error routine; also, busy indicator.Skip indicator; non-zero = feed a card.Feed check at read station indicator; non-zero = feed check.Last initiate command given.Address being transferred to or from.Number of words to transfer.Second half of <strong>the</strong> Sense DSW IOCC used.<strong>Program</strong> Analysis Procedures 155


IREADOUsed by: Assembler Language programs and RPG generated programsSubroutines required: ILSO4Linkage: LIBF READO (BSI 3 TV DISP)DC ARG1DC ARG2Preoperative input parameters:Function ARG1 ARG2 I/O AreaTest /0000 Return to this word if busy Not usedRead /1000 Address of word count Word countFeed /1000 Address of word count Word count(must be zero)Postoperative conditions and entry points:FunctionSymbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelTest READO RE 180+1Read READO RE18041 RE048 RE048 4Feed READO RE 18041 RE048 RE048 4Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationUsed X XRE324 RE 144+1 RE 156+1 RE 168Significant variables:Symbolic locationRE228RE264Contents/UseBusy indicator; non-zero indicates busy.I/O area address.156


READ1Used by: Assembler Language programsSubroutines required: ILSO4Linkage: LIBF READ1 (BSI 3 TV DISP)DC ARG1DC ARG2DC ARG3Preoperative input parameters:Function ARG1 ARG2 ARG3 I/O Area AddressTest /0000 Return to this word if busy Return to this word if notbusyRead /1000 I/0 Area Address Address of user's errorroutineFeed /1000 I/O Area Address Address of user's errorroutineNot usedWord countWord count(must be zero)Preoperative conditions and entry points:FunctionSymbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelTest READ1 RE180+1Read READ1 RE180+1 RE048 RE048 4Feed READ1 RE 180+1 RE048 RE048 4Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationUsed X XRE324 RE 144+1 RE 156+1 RE168Significant variables:Symbolic locationRE228RE264RE360+2RE370+2Contents/UseBusy indicator; non-zero indicates busy.I/0 Area address.Address of user's error routine for read error.Address of user's error routine during last card.<strong>Program</strong> Anal ysis Procedures 157


PNCHOUsed by: Assembler Language programs and RPG ;enerated programsSubroutines required: ILSOO, ILSO4Linkage: LIBF PNCHO (BSI 3 TV DISP)DC ARG1DC ARG2DC ARG3Preoperative input parameters:Function ARG1 ARG2 ARG3 I/O Area AddressTest /0000 Return to this word if busy Return to this word if notbusyPunch /2000 Address of I/O Area Return to this wordfollowing callNot usedWord countFeed /3000 Not used NSI Not usedPostoperative conditions and entry points:Function at CA20Symbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelTest PNCHO CA34+1Punch /7001 PNCHO CA34+1 INT1 INT1 0INT2 INT2 4Feed /7002 PNCHO CA34+1 INT2 INT2 4Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationUsed X XTEMP CA30+1 CA31-F1 CA321.58


Significant variables:Symbolic locationCHARCOLMBUSYCOUNTERRORRSTRTRSTRT+1Contents/UseSecond half of DSW last sensed.Address being punched from.Non-zero indicates busy.Number of columns to be punched.Non-zero indicates feed a card (SKIP).Word count for restart.Data address for restart.<strong>Program</strong> Analysis Procedures 159


PNCH1Used by: Assembler Language programsSubroutines required: ILSOO, ILSO4Linkage: LIBF PNCH1 (BSI 3 TV DISP)DC ARG1DC ARG2DC ARG3Preoperative input parameters:Function ARG1 ARG2 ARG3 I/O Area AddressTest /0000 Return to this word if busy. Return to this word if notbusyPunch /2000 Address of I/O Area Address of user's errorroutineFeed /3000 Not used Address of user's errorroutineNot usedWord countNot usedPostoperative conditions and entry points:Function at CA20Symbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelTest PNCH1 CA34+1Punch /7001 PNCH1 CA34+1 INT1 INT1 0INT2 INT2 4Feed /7002 PNCH1 CA34+1 INT2 INT2 4Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationsUsed X XTEMP CA30+1 CA31+1 CA32160


Significant variables:Symbolic locationCHARCOLMBUSYCOUNTERRORINDICRSTRTRSTRT+1RSTRT+2Contents/UseSecond half of Sense DSW IOCC.Address being punched from.Busy indicator; non-zero = busy.Number of columns to punch.Non-zero indicates feed a card (SKIP).Read station feed check if non-zero.Word count for restart.Data address for restart.Address of user's error routine.<strong>Program</strong> Analysis Procedures 161


TYPEOUsed by: Assembler Language programsSubroutine required: ILSO4Linkage: LIBF TYPEO (BSI 3 TV DISP)DC ARG1DC ARG2Preoperative input parameters:Function ARG1 ARG2 I/O Area AddressTest /0000 Return to this word if operationis not completeRead-Print /1000 I/O Area Address Word CountPrint /2000 I/O Area Address Word CountPostoperative conditions and entry points:Function at TY24Symbolicentry pointReturnaddress atInterruptentry pointReturnaddress at]interruptlevelTest TYPEO EXIT+1Read Print /7000 TYPEO EXIT+1 INT1 INT1 4Print /7001 TYPEO EXIT+1 INT1 INT1 4Register status:MainlineSaved at/restored fromsymbolic locationsACC EXT XR1 XR2 XR3 StatusSAVAQ SAVAQ+1 SAV1+1 SAV2+1 SAVSTUsed X X162


Significant variables:Symbolic locationTY24READREAD+1RSTRT+1RSTRT+2COUNTPRINTINITDSWRDRIGHTTEMPITY90+1TY92+1Functional branch instruction:/7000 = MDX * if Read/Print./7001 = MDX *+1 if Print.Pointer to data input area.Last half of Read IOCC.Data area address.Word count.Contents/UseContents depend on <strong>the</strong> function:/7000 - number of words remaining to be read./7001 - count of remaining characters to be printed, initially set to twice <strong>the</strong>word count.IOCC used to print character from TEMPI.IOCC used to release keyboard.Device status word from sensing device in interrupt routine.Switch indicating which character in TEMPI will be used next:/0000 = Use right character/0001 = Go get next word from data area and use left character.Contents depend on <strong>the</strong> function:/7000 - rotate/tilt character converted from hollerith input character fromkeyboard. Character is printed on console from this area./7001 - Temporary storage for printing a character (high order 8 bits was lastcharacter printed).Address of Hollerith table.Address of Rotate/Tilt character table.<strong>Program</strong> Analysis Procedures 163


PRNT1Used by: Assembler Language programs and RPG generated programsSubroutines required: ILSO1Linkage: LIBF PRNT1 (BSI 3 TV DISP)DC ARG1DC ARG2DC ARG3Preoperative input parameters:Function ARG1 ARG2 ARG3Test /0000 Returns to this word ifroutine is busyReturns to this word if routineis not busyPrint /20X0 I/O Area Address Error routine addressX = space control0 , space after print1 , suppress spaceControl /3XY0 Return to this word.Carriage X = immediate controlY = after print controlPrint /40X0 I/0 Area Address Error routine addressNumeric X = space control0 , space after print1. , suppress spacePostoperative conditions and entry points:Function at PARTSymbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelTest PRNT1 EXIT+1Print /20X0 PRNT1 EXIT+1 INT1 INT1 1Control Carriage /3XY0 PRNT1 EXIT+1 INT1 INT1 1Print Numeric /40X0 PRNT1 EXIT+1 INT1 INT1 1164


Register status:ACC EXT XR1 XR2 XR3 StatusMainlineInterruptlevel 1Saved at/restored fromsymbolic location AQ AQ+1 FC58+1 FC58+3 F C5 8+4Used X X X X XSaved at/restored fromsymbolic locationOUT+1Used X XSignificant variables:Symbolic locationContents/UseILLGL+2 Address of call +1.NEGWDCLEARDSWSPSKPASS2's complement of <strong>the</strong> word count.Last entry to <strong>the</strong> clear print buffer routine.DSW from <strong>the</strong> last interrupt.Space count if (-). Skip if (+). Compare for skip response interrupt.Interrupt switch.FC16+1 Address of call +2.STRE3+2 Address of call +3.SCAN+1CTR48CTR16End of <strong>the</strong> I/O area.,--Scan counter to determine when line is complete.Counter for 16 idles.<strong>Program</strong> Analysis Procedures 165


IPRNT3Used by: Assembler Language programs and RPG generated programsSubroutines required: ILSO4Linkage: LIBF PRNT3 (BSI 3 TV DISP)DC ARG1DC ARG2DC ARG3Preoperative input parameters:Function ARG1 ARG2 ARG3Test /0000 Return to this word ifbusyReturn to this word if notbusyPrint /20Z0Z = space control1, space suppressed0, space after printAddress of I/O AreaAddress of error subroutine,error parameter requiredControl/3XY0X = immediate controlY = control after printPostoperative conditions and entry points:FunctionSymbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelTest PRNT3 W3080+1Print Third digit at PRNT3 W3080+1 W3010 W3010 4W3920Control Third digit at PRNT3 W3080+1 W3010 W3010 4W3920Register status:ACC EXT XR1 XR2 XR 3 StatusMainlineSaved at/restored fromsymbolic locationW3905 W3905+1 W3060+1 W3050+1 W3070Used X X X X X166


Significant variables:Symbolic locationW3920W3935W3990Contents/UseFirst word of <strong>the</strong> Sense-DSW-without-reset IOCC; also, Carriage controlcharacter.Routine busy switch, non-zero indicates <strong>the</strong> routine is processing a message.First word of 60-word output buffer.W3975DSW saved for checking of indicator bits at appropriate time; error bitsduring print complete ,ch. 9/12 during carriage operation complete.W3130+1 Address of user output area.• <strong>Program</strong> Analysis Procedures 167


PAPT1Used by: Assembler Language programsSubroutines used: ILSO4Linkage: LIBF PAPT1 (BSI 3 TV DISP)DC ARG1DC ARG2DC ARG3Preoperative input parameters:Function ARG1 ARG2 ARG3 I/O Area AddressTest /0000 Return to this word if<strong>the</strong> operation is notcompleteReturn to this word ifprevious operation iscompleteRead /1X00 I/O Area Address Address of user error Word count (1/2 <strong>the</strong>X=0, Checkroutinenumber of characters)X=1, No checkPunch /2K00 I/O Area Address Address of user error Word count (1/2 <strong>the</strong>X=0, Checkroutinenumber of characters)X=1, No checkPostoperative conditions and entry points:Function at DEVICSymbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelTest PAPT1 RET+1Read /0002 PAPT1 RET+1 INT1 INT1 4Punch /0001 PAPT1 RET+1 INT1 INT1 4Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic location SAVA XR1+1 X.R1+2Used X X X168


Significant variables:Symbolic locationContents/UseDEVICCHECKWDCNTIOARUSERR+2BUFSENSEREADSIOCCFCRDFunction indicator:/0002 = Read./0001 = Punch.Switch for controlling checking function:/0000 = Do not check./FFOO = Check for a Delete or Stop character.Count of remaining words.Data area pointer.Address of user error routine.Temporary storage for word containing 2 characters to be punched.Sense DSW for paper tape.IOCC for starting paper tape reader.Read or punch control word.Character switch:(Punch) Even = Both characters in <strong>the</strong> word have been punched, go get<strong>the</strong> next character.Odd = Punch <strong>the</strong> right character.(Read) Even = Second character of word was just read.Odd = First character of word was just read.<strong>Program</strong> Analysis Procedures 169


PAPTNUsed by: Assembler Language programsSubroutine required: ILSO4Linkage: TJFIF PAPTN (BSI 3 TV DISP)DC ARG1DC ARG2DC •ARG3Preoperative input parameters:Function ARG1 ARG2 ARG3I/O AreaAddressTest /0000 Return to this word if Return to this word ifTest reader <strong>the</strong> previous operation previous operation is/0001 is not complete completeTest punchRead /1X00 I/O Area. Address Address of user Word c ountX=0, Checkerror routine (1/2 <strong>the</strong> numberX=1, No checkof characters)Punch /2X00 I/O Area Address Address of user Word countX=0, Checkerror routine(1/2 <strong>the</strong> numberX=1, No checkof characters)Postoperative conditions and entry points:FunctionSymbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelTest PAPTN RET+1Read PAPTN RE T+1 INTN INTN 4Punch PAPTN RET+1 INTN INTN 4Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationSAVA XR1+1 XR2+1 XR2+2Used X X X X170


Significant variables:Symbolic locationCHECKWDCNTRWDCTIOARRIOARUSER!RUSE1BUFRBUFIndex Register 2IOCCREADSCHAR(RCHAR)SENSRRIOCCIOCC2Contents/Use/FFOO = Check for a Delete or Stop character./0000 = Do not check.Number of words remaining to be punched.Number of words remaining to be read.Address pointer to user data area (punch).Address pointer to user data area (read).Address of user error routine (punch).Address of user error routine (read).Temporary storage for word to be punched.Temporary storage for word to be read into.Address of RDTBL, if reading.Address of PNTBL, if punching.IOCC used for punching a character.IOCC used to start tape reader.Switch used to indicate which half of <strong>the</strong> word is to be used:Even = Both characters in word used.Odd = First character of word was used.DSW received from Sense-with-reset IOCC.IOCC used to read paper tape.IOCC used to punch a Delete character.<strong>Program</strong> Analysis Procedures 171


PLOT1Used by: Assembler Language programsSubroutines used: ILSO3Linkage: LIBF PLOT1 (BSI 3 TV DISP)DC ARG1DC ARG2DC ARG3Preoperative input parameters:Function ARG1 ARG2 ARG3 I/O Area AddressTest/0000Return here if routinebusyReturn here if routinenot busyNot usedPlot/1000I/O Area AddressAddress of user'serror routineWord countPostoperative conditions and entry points:FunctionSymbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelTest PLOT1 RET+1.Plot PLOT1 RET+1 INT1 INT1 3Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationUsed X XSAVAQ SAVAQ+1 XR1+1 XR1-F2—172


Significant variables:Symbolic locationDEVICBUSYDIGITSENSEIOARBUFFIRSTDUPCTCTRLWORKContents/UseNon-zero indicates invalid device.Non-zero indicates busy.Counter to determine which section of packed word is being used.Word count, number of words for this plot.Output area address in user program.Word being decoded for plotting.Non-zero indicates first command.Non-zero indicates repeat some command or plot.Last plot command executed.Command that has been separated out of BUF.<strong>Program</strong> Analysis Procedures 173


OMPR1Used by: Assembler Language programsSubroutines required: ILSO4Linkage: LIBF OMPR1 (BSI 3 TV DISP)DC ARG1DC ARG2DC ARG3Preoperative input parameters:Function ARG1 ARG2 ARG3 NOTETest /0000 Return to this word ifprogram is busyReturn to this word ifprogram is not busyTiming /0001 Return to this word if Return to this word if bitMark bit 8 on in DSW 8 is off in DSWTestRead /1X00 I/O Area Address Address of user errorroutineFeed /3000 NSI (return to thisword after feed)NSIX = 1, Stacker SelectX = 0, No StackerSelectDisconnect /4000 NSI (return to thisword after disconnect)NSIStackerSelect/5000 NSI (return to thisword after StackerSelect)NSIPostoperative conditions and entry points:Function at MPR62Symbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelTest OMPR1 MPR59+1Timing Mark OMPR1 MPR59 +1TestRead /FFFE OMPR1 MPR59+1 INT1 INT1 4Feed /0000 OMPR1 MPR 59 +1 INT1 INT1 4Disconnect OMPR1 MPR59 +1Stacker OMPR1 MPR59+1Select174


Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationSAVAQ SAVAQ+1 SAVX1 MPR56 i-1 MPR58Used X X X X XSignificant variables:Symbolic locationAccumulatorMPR84+2MPR62READREAD+1MPR68CNTRL andCNTRL+1STKSL andSTKSL+1DSCNT andDSCNT+1BUSYMPR64MPR66Index Register 1Contents/UseAt entry to a user error routine:ACC = 0001, Master Mark detected.ACC = 0002, Read Error and/or Timing Mark Error.ACC = 0003, Hopper Empty.ACC = 0004, Document Selected.Entry to user's error routine.Function:/FFFE = Read (2000)/0000 = Feed (3000)IOCC for Read function.Address of user I/O area.NONZERO, Feed has already been performed.ZERO, Feed has not been initiated for this Read function.IOCC for Feed function.IOCC for Stacker select.IOCC for Disconnect function.<strong>Program</strong> busy indicator:zero = Not Busy.non-zero = Busy.Zero, No first character interrupt.Non Zero, Have received first character interrupt.Master mark indicator switch:zero = No master mark.non-zero = Master mark read.Address of <strong>the</strong> calling sequence.<strong>Program</strong> Analysis Procedures 175


WRTYOUsed by: Assembler Language programs and RPG generated programsSubroutines required: ILSO4Linkage: LIBF WRTYO (BSI 3 TV DISP)DC ARG1DC ARG2]Preoperative input parameters:Function ARG1 ARG2 I/O Area AddressTest/0000Return to this word ifoperation is not completePrint/2000I/O Area AddressWord CountPostoperative conditions and entry points:FunctionSymbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelTest WRTYO WR36+1Print WRTYO WR36+1 INT1 INT1 4Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationSAVA WR30+1 WR32+1 WR34Used X X X XSignificant variables:Symbolic locationCOUNTIOARTEMPIPRINTPRINT+1RIGHTTEMPContents/UseDynamic word counter; number of words remaining to be printed.Pointer to data area, address of last word used.Character to be printed, high order 8 bits was last character printed.First word of IOCC to print character out of TEMPI.Second word of IOCC to print character out of TEMPI.Switch indicating which character in TEMPI will be used next:/0000 = Right character./0001 = Go get next word from date area and use left character.Right half of Sense-with-reset IOCC.176


DISK1Used by: Monitor system programs, Assembler Language programsSubroutines required: ILSO2Linkage:* for monitor system programsLDD LISTBSI L D0000LIST DC FUNCTION CODEDC I/0 AREA ADDRESSfor Assembler Language programsLIBF DISK1 (BSI 3 TV DISP)DC ARG1DC ARG2DC ARG3DC ARG4*This subroutine may be entered by user-written Assembler Language programs via <strong>the</strong> LIBF TV or bymonitor system programs via a direct branch. If a direct branch is used, DISK1 uses <strong>the</strong> parameters containedin <strong>the</strong> ACC and EXT to construct <strong>the</strong> parameters of a LIBF and simulates a LIBF entry by calling on itself.Preoperative input parameters (for LIBF entry) t :Function ARG1 ARG2 ARG3 ARG4 I/O Area AddressTest /0000 Not used Return to thisword if busyReturn to thisword if not busyNot usedRead /1000 Address of <strong>the</strong> Address of user Return to this Word 1 = wordI/O Area error routine word after countinitiating Word 2 = drive codeoperation and sectoraddressWrite /2000 Address of <strong>the</strong> Address of user Return to this Word 1 = wordW/ORBCI/O Area error routine word afterinitiatingoperationcountWord 2 = drivecode andsectoraddressWrite /3000 Address of <strong>the</strong> Address of user Return to this Word 1 = word countWithRBCI/O Area error routine word afterinitiatingoperationWord 2 = drivecode and sectoraddressWrite /4000 Address of <strong>the</strong> Address of user Return to this Word 1 = not usedImmediate I/O Area error routine word after initiatingoperation code and sectorWord 2 = driveaddressSeek /500x Address of <strong>the</strong> Address of user Return to this Word 1 = not usedx = seek option I/O Area error routine word after initingoperation code and sectorWord 2 = drivedisplacementaddresspplies to simulated LIBF.<strong>Program</strong> Analysis Procedures 177


Postoperative conditions and entry points:Function at D1928Symbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelTest /0000 D1000 (branch) D1070 D1020 D1020 2D1020+2 (LIBF)Read /0001 D1000 (branch) D1070 D1020 D1020 2D1020+2 (LIBF)Write W/O RBC /0002 D1000 (branch) D1070 D1020 D1020 2D1020+2 (LIEF)Write W/RBC /0003 D1000 (branch) D1070 D1020 D1020 2D1020+2 (LIBF)Write Immediate /0004 D1000 (branch) D1070 D1020 D1020 2D1020+2 (LIBF)Seek W/O Seek /0005 D1000 (branch) D1070 D1020 D1020 2OptionD1020+2 (LIBF)Seek With Seek /0005 D1000 (branch) D1070 D1020 D1020 2Option (D1929=x000) D1020+2 (LIBF)Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationD1912+1 D1912 D1060+2 D1060+4 D1060Used X X X X X178


Significant variables:Symbolic locationD0006D1000D1020+2 LIBF TV entry.Contents/UseIf DISK! was entered by a monitor system program at D1000, this word is used byDISK1 to simulate a LIBF link word. The contents of this word should reference<strong>the</strong> simulated LIBF at symbolic location D0060.Monitor system program entry.D1020+4 LIBF TV link word. Contains <strong>the</strong> address of <strong>the</strong> first parameter in <strong>the</strong> callingsequence.D0235+1 Address of <strong>the</strong> word containing <strong>the</strong> beginning of <strong>the</strong> file-protected area of <strong>the</strong> disk(D0310+1)on <strong>the</strong> specified drive.D0280+1 Address of a table in COMMA containing <strong>the</strong> list of defective cylinders of <strong>the</strong> diskon <strong>the</strong> referenced drive.D0305+1 Address of <strong>the</strong> device code to be used corresponding to <strong>the</strong> referenced drive.(D0330+1)D0350+1 Address of <strong>the</strong> word in COMMA containing <strong>the</strong> current position of <strong>the</strong> heads on <strong>the</strong>(D0390+1)referenced disk.D0901D1901D1902 andD1903D1904 andD1905D1906 andD1907D1908 andD1909D1911D1912 andD1913D1925D1926D1929D1930D1932D1938$DBSYSector address of previously executed Forced Read.Current arm position obtained by reading <strong>the</strong> sector address after seeking.Last two words of sector previously read. The area is used to store an intermediateword count and sector address.IOCC for <strong>the</strong> operation currently being performed.IOCC for <strong>the</strong> user-requested function.IOCC to reader sector address into D1901 after a seek operation.Second word of Sense IOCC.Used to save and restore <strong>the</strong> ACC and EXT.Word count remaining to be read or written from originally requested word count.Next sequential sector to be read or written.Non-zero if <strong>the</strong> seek option was requested.Non-zero if <strong>the</strong> displacement option was requested.Second word of Seek IOCC.Current sector address.Non-zero indicated routine is busy; this word must be cleared to zero before entryto this routine is permitted.<strong>Program</strong> Analysis Procedures 179


DISKNUsed by: Monitor system programs, Assembler Language programsSubroutines required: ILS02Linkage:* for monitor system programsLIST DCDCLDD LISTBSI L D0000FUNCTION CODEI/0 AREA ADDRESSfor Assembler Language programsLIBF DISKN (BSI 3 TV DISP)DC ARG1DC ARG2DC ARG3DC ARG4*This subroutine may be entered by user-written Assembler Language programs via <strong>the</strong> LIBF TV or by monitorsystem programs via a direct branch. If a direct branch is used, DISKN uses <strong>the</strong> parameters contained in<strong>the</strong> ACC and EXT to construct <strong>the</strong> parameters of a LIBF and simulates a LIBF entry by calling on itself.Preoperative input paramaters (for LIBF entry)tFunction ARG1 ARG2 ARG3 ARG4 I/O Area AddressTest /0000 Not used Return to thisword if busyReturn to thisword if not busyNot usedRead /1000 Address of <strong>the</strong> Address of user Return to this Word 1 = wordI/O Area error routine word after initiatingoperation Word 2 = drivecountcode and sectoraddressWrite W/O /2000 Address of <strong>the</strong> Address of user Return to this Word 1 = wordRBC I/O Area error routine word after initiatingoperation Word 2 = drivecountcode and sectoraddressWrite With /4000 Address of <strong>the</strong> Address of user Return to this Word 1 = wordRBC I/O Area error routine word after initiatingoperation Word 2 = drivecountcode and sectoraddressWrite /1000 Address of <strong>the</strong> Address of user Return to this Word 1 = not usedImmediate I/O Area error routine word after initiatingoperationWord 2 = drivecode and sectoraddressSeek /500x Address of <strong>the</strong> Address of user Return to this Word 1 = net usedx = seek optiondisplacementI/O Area error routine word after initiatingoperationWord 2 = drivecode and sectoraddress(Applies to simulated LIBF.180


Postoperative conditions and entry points:Function at DN9 84+XR 1Symbolicentry pointReturnaddress atInterruptentry pointReturnaddress atInterruptlevelTest /0000 DN000 (branch) DN120 DNO20 DNO20 2DNO20+2 (LIBF)Read /0001 DN000 (branch) DN120 DNO20 DNO20 2DNO20+2 (LIBF)Write W/O /0002 DN000 (branch) DN120 DNO20 DNO20 2RBCDNO20+2 (LIBF)Write With /0003 DN000 (branch) DN120 DNO20 DNO20 2RBCDNO20+2 (LIBF)Write /0004 DN000 (branch) DN120 DNO20 DNO20 2ImmediateDNO20+2 (LIBF)Seek W/O /0005 DN000 (branch) DN120 DNO20 DNO20 2Seek OptionDNO20+2 (LIBF)Seek With /0005 DN000 (branch) DN120 DNO20 DNO20 2Seek OptionDNO20+2 (LIEF)Register status:ACC EXT XR1 XR2 XR3 StatusMainlineSaved at/restored fromsymbolic locationDN902 DN902+1 DN110+1 DN110+3 DN100Used X X X X XSignificant variables:Symbolic locationDN230+1Contents/UseIf DISKN was entered by a monitor system program at DN000, this word is used byDISKN to simulate a LIBF link word. The contents of this word should reference<strong>the</strong> simulated LIBF at DN902.DNO20+4 Contents of <strong>the</strong> LIBF link word if called by a user-written LIBF.DN902 and Simulated LIBF parameters for direct branch input:DN902+1 D0010 = /1100 for read input= /2200 for write inputD0010+1 = address I/O areaDISKN is capable of executing 5 drives simultaneously. Reference to <strong>the</strong> proper disk drive work areasis accomplished by use of a table. XR1 is used to point to <strong>the</strong> relative starting position for each specificdrive in <strong>the</strong> table. The starting address in <strong>the</strong> table is computed as follows:<strong>Program</strong> Analysis Procedures 181


Significant variables (Continued):Symbolic locationContents/UswThe contents of location DNXXX+XR1 where DNXXX is <strong>the</strong> first entryin <strong>the</strong> table and XR1 contains twice <strong>the</strong> drive code.Example: Assume drive 1 is referenced. The address would be:DNXXX+(1 x 2) = DNXXX + 2DN952 andDN952+1DN050+1Index Register 2DN978+XR1DN980+x-R1DN982+XR1DN9 83 i-XR1DN970+XRIDN985+XR1DN986+XR1 andDN9 86 +1+XRiDN990+XR1DN991+XR1First and second words of Seek IOCC if one is required; also used as temporarystorage.Drive determination: <strong>the</strong> drive currently being referenced may be determined by<strong>the</strong> contents of Xi11 corresponding to <strong>the</strong> relative starting address in <strong>the</strong> drivetable, or by examining <strong>the</strong> contents of STOX1+1. This location contains twice <strong>the</strong>drive code.Drive code and I/O area address at various times during execution of this routine.Current position (sector address) of <strong>the</strong> heads on <strong>the</strong> referenced drive.Last two words of <strong>the</strong> I/0 area just read into.Address of <strong>the</strong> user's error routine.Current seeking status of <strong>the</strong> drive:/FFFF = drive is seeking, has just seeked, or seek is required./0000 = seek not required, or not in process.Originally requested user function.Error counter for referenced drive for this operation:50 10- C(DN985+XR1) = total errors occurred for this drive during requestedfunction.IOCC for <strong>the</strong> current user-requested operation, except for Seek and Sense DSW.Originally requested sector address.Current sector address for current IOCC.182


Significant variables: (Continued)Symbolic locationDN992-FXR1DN993-FXR1DN994-FXR1DN995-FXR1$DBSYContents/UseRemaining word count to be read or written.Word count to be used in next I/0 operation.Current I/0 area address.Read-back-check counter:100 10= C(DN995+XR1) = total errors occurred attempting to perform RBC.Current status of each of <strong>the</strong> 5 possible drives; i. e. , if drives 0 and 2 are bothbusy, bits 0 and 2 of $DBSY are set to 1.<strong>Program</strong> Analysis Procedures 183


FLOWCHARTS<strong>System</strong>LoaderFlowcharts:SYLO1 - 05Cold StartLoaderFlowchart:CSTOILINKCold Start<strong>Program</strong>Flowchart:CSTO23DUMPEXITSkeletonupervisorlowchort:SUPOICore ImageLoaderFlowcharts:CIL01 - 02EXITentryLINK DUMP DUMP LINKentry, entry, entry, entry,DSF negative non-negative DCIprogram parameter parameter programMonitor ControlRecord AnalyzerFlowcharts:SUP02 - 08Auxi I iarySupervisorFlowchart:SUFI°<strong>System</strong> CoreDump P ogramFlowchart:SUP09DUP FOR RPG ASM XEQrecord record record record recordTerm inal DynamicDump DumpDCI DSFprogram programUSEREXECUTIONSubroutineLibraryFlowcharts:UTL01-13SCA01-07F1001-13Disk Utility FORTRAN RPG Compiler Assembler<strong>Program</strong> (DUP) Compiler Flowcharts: <strong>Program</strong>Flowcharts: Flowcharts: See RPG PLM Flowcharts:DUPOI -13 FOROI - 30 Form Y21-0010 ASMO1 -24EXIT EXIT EXIT EXITCore LoadBui derFlowcharts:CLBOI - 02•LINK LINK EXIT EXIT LINK DUMP EXITFlowchart DMS01. Disk Monitor <strong>System</strong>, <strong>System</strong> Overview• Flowcharts 185


mom texauao ularAS • TO •LkS 2.rettoitkoi.3070133 JO aNa 080313 1031303OIHd 503303913s3Nlinavons 5.01 0701 49014373DI dna H3131 NO 13 111N3 ' '''' • 01 3011009 31971 070133• 033 01 39 •3H1 ailen.0V3H979 3SVHd 113 AO •inr Lals.• NISr5 V 3330iEr9N130001179001A0039315AS 00330e9....• ...•IfS3A •0301 '46ON 1711191 .•IN3S33dION 53310300/I 301 1310• NI 31931001SH•S3A ••••0701ON 1V111N1• EH .'•: 390131373 NO• Z 3SVHd 3901S...... ....OH31991 070133NI S3131333H1 053303d09103033dION 03319300/I 391 I315• NI 31731001SiX• •E 35099900.33103 ONV H313A.ON •••• 0701531 •• 10I1101 •••• SA.01 93N/7 S350Hd•: 049133M-31•NV en 13S •COX4 • 03341300333 SI V91 •.3SVHd 19930$7,4ANV OWO ION 00El• •• E3 .9••• • •A375533339397 NOIHSO30131 ONVdX3231 3SVHd .-9115 • 9117 Z ••35799 40 301335V A713390 • 01 MS 135 •19K531 •0701ON • 1711101 o'.£ 35709905•33131 INN H3133•03• 39791 513 NI: 390303N133710• 0019503 31709043S3A ••• • •••••• 113/90I3SSVON ". SSVdA9 .*•• E3X03070133 39• 9038P5sVg3.303 I315 93373S2300393101<strong>1130</strong>3 3009 • 0001 05330119 •• 13• 131 ••40 301330 ISWII.• 37110111N1 • SO"84? 04016147..5533007 113 135.** * **** x031131N00303SI /VH1• 3S79d 3731303•ANV 0701 ION 00£0ON •.•. •..... 0301S3A•1711101• za•••11..0/1 0373 IOSZ.H113 0/1 0373• 2441 AV133A0...... 4*...10••••X •• ZOON •• 39791 117301533•3••• 3711711131 •GO• 070133–Z •0301-1 gSVH4OnS•331N3 INV 9513i.4307311103 -•ON E ' SSVdA9E330013139301 NO 33090031009 ONO• N0I533A 317090Z3X0350 330733S3A ` ' 244113I3SVHd'X'. E3 •• n-1413M112o•en 135X ASON3•.03070/ SI 3SVHd.•H3V3 SW 41971 1315 01139 • •EC!11011009• 1N3RIS33• 0a13/11MINIZ9Z3SVHd• 3SVHd •00701 330301• 018151009 •...... 0..39• IS• ZO••0 539`• 5x7 530 5••• NV.:"'"•• 919911194X": 189 'xi• £7• 330701 •.173151000. • 2 11421% 1 3d .0— • 30 0701 170079.Z 11 ••••••.••••i7


••Al...Nth FROM •• BOOTSTRAP LOREl2501 WASREADERUSEDClYESOVERLAY 1442SUER. WITH 2501SUER.NO•••••• •002. •002.A2 • A4. • A5•• • 40.10 • • • •.... • • •• A3 .... •• •% *...... ilABSSC % EOP %..A2 ... A3..... A4 45• .. .., 0. : FthrST : FILE LAST- .. TEST .. •. .. IS IT .1. NO St TOR. ... 0,-0. .1.. . 0. ... •SK... 0. .0..... XCARD FOR .0.... .. PRESENT ..... • PROq HD TO : PROC SED TO% R.04. • 0 .4.4. ....:TS• • •02 C2 • • • •***. • ......■ix82 B3• TEST FOR LOAD • SET r •• MODE CARDCOMMUNI ATIDN .•:•• AREA AN FILE••• •F2 C2 • •• ••..•2 C3TEST FOR PHID LOAD PHASE 2CARDAND ENTER ATMAING"40. 00 .... 002. X • • A3 010.X • D2 ..... • •MO•• • •START... xD1 02 i......03•READ CARD INTO TEST FORSCON • • DISPLAY ERROR •• BUFFER A •13 • •B4 85• •INITIALIZE FOR •: SET XCARD TO •BINNING FOR SCON •• CARD NEXT ••4 C S• SECTOR ADOR. • •• WILL BE TAKEN ••CALCULATE CORE•FROM NEXT DATA •C ARDs iLR •• • •g2SiT..X. DI • ..X.DI •'00.4..002•• E4•• •. . .%DATA .0. REQ RElE4 .. E5.. . .•. E2 m. • $(04ERTagli,.NO IS PAK ..*.... YES.0711PIARi... NO..... INDICATOR .. ... aliSaT ....... 0.FOLL W EC OR........ ON .11... .0 .:RTUE• TriBinn0. .. .. .. .. ..*02*YES..110 .. BR:A:ES**... •........• 0 F3.• • • •• • . DI . •F2 0.X. • • ..X: 01 :• • . .......04...% OMSTUFF x MOD E...Fl F2 *. F3 ... F4 XCOMPRESS 2; .. .. .. ...:•klkw•WORDS IN BUF ER..:0 PRESENT ....!!!. 0:0.. RallS. .::.!!! •SEC PR T.eA SS•B •.. .• FROM WOKE/ II•.. . ..•... .• .• •X • H1 • x ••..•• x .0020 •*002.". ..110 ..... • NO • ..G5.CARDX TBL2 %Gl ... •.. % G3.•.•. G4 G50..052..-.cokiAm.-.. YES • •TRANSFER DATACARD ...... •DISPLAY ERROR 3•TO DISK BUFFER...EXPECTED ... • • liAN:i::.!!!... 0•NO .044H:X140.8.00 . . •• A2 •• HI •.X. • •• . . MO. e XCARDP a ṁl............H1.. • CARD *. •.. TYPE .0. *DISPLAY ERROR 9•.• .0•.... ... ...•:...S.B...002 A4...MODE..002 F3....DATA..002 E4....E0P...002 A5..S/D...002 D1..REQ...002 E5.....TERM..002 G5:...CORE..002 K2CORE.002•• K2•• •••K2HREIANO FOR :CPU SIZE•ma...X0 DI ••.INITI J3 ALIZE DISK*:0E40ft/ill/ACK:DATA •• •X* 01 • • •a.• •X.. xH4 .. H5TEST REQ DATA •FOR ERRORS •.. •0.BUFFER ... NO COMPRESS DATA :.... FULL AND SAVE FOR*. . • PHASE 2 •.. ..%• YES ......,D1•.......•J4• • ErAELISH •• FILE THIS •PRIN IPAL PRINT.....SECTOR NEXTAND GET •:DEYNDfC278R!": ••• •Flowchart SYL02. <strong>System</strong> Loader, Phase 1Flowcharts 187


MAINS• ENTER FROM• PHASE 1•SETIOBIINITIALIZE INTERRUPT •BRANCH• ADDRESSES• •XA2 *. A3• 2501NO •READ TO BUFFERREADER ON• SYSTEMOP •0• : A COMPLETEP• YES• •. ..X. F2 • .•.••ASX• CARD TYPEXDUB:..•DATA••D04 AlB2 .. B3 .•.. . .. .. •...RA..:...E0P...003 G5I .. YES•. BUFFER A • X.:. Hs1 2 '...r..! ..... X: ERROR STOP • :..•E0S.••005 Al.. BUSY .. ...D. .. .. ...4. •• NO • NOUVERMCI• •UPDATE VERSION ••AND MODEL LEVEL.NUMBER •X• •Fl • •••••• •DIADDRESSSAVE S ADDRESS OFSECTORFOLLOWINGCUSHION• • •003.F1 •.X• • ••.NOC2 SET INDICATOR•AO ON Al START.READINTO• BUFFE A •C3• POINT ADDRESS •: IMPPEAIINS. .02 *.D3* IS *.BUFFER A2 •BUSYN • • UtP0A NI9 .*• YESF2 •.X.• • .XTPAKF2NO WAIT FOR I/0ISOPERATIONSPACKING .*COMPLETE..REQUIRED••003••1)?•••XSL1 i05FE LAST .5 CORPROCESSED TODISK••XxE2 E3.....E5:HOOKY ADDRESS • .•.. • ... I *. ND +IN/TIAL/ZE FOR •BUFFER A ......BEGINNING OF : SUBWIla TO •*. BU Y ..NEW PHASE• A2 * .. ..i • •• YES ....• YES•MODIFYF3 ADDRESSIN:•SUBROUTINE TO A.•o FE •000.: •: ...X. Fl.003.*.G5*X XSL3 IG2G5• F I L•PACK DATA FROM SECTORRASTA OR A2 TO B PROCESSED TO• • • DISK• • •x: •H2 . H3.:. "LA .:." xi 90,tAna•• YES115COMPLETE SLETENTRIES FORTHIS PHASE•X▪J2CLEAR A2 BUSYINDICATORA5 •.6..•4.0• •• A5 •• • J5• ••UPDATE SIFT ON .DISK •• •. ••••..X. Fl •Flowchart SYL03. <strong>System</strong> Loader, Phase 2188


. 004.• Al•• ••XXSL2 ...FEAT .o.Al .. A3 ...• IS o. 0 DOES 6..• LOADER .. NO ..CARO FOLLOW.. YES • .. ...NO... PASSING X•. SECTX. • PHA!' ID11. PHASES .6 'EU ....NEG IVE .. ..al. .. ..m•' YES • • NO • YES.11.69• •82 ..X• •x ........ x xB1 .1. B2 83.. • • NO ... IS THIS • ...•STORE PHASE ID .PHASE TO BE •. YARAMEgata ••AND OTHER DATA •. .. LOADED .. *I N RELOAD TABLE... ... ••• •• YES•003•• Fl.SFR ONEA4• ••SEARCH SLET FOR...X. THIS PHASE • •• MUSE NOLONGER THAN• IG IN• YES ••••B2 • •CIC2.....C3...C4•CLEAR BYPASS •em E R • .: NOINITIAL NO •G0 TO EXPNO TO SWITCHES• LOAD .6 .....EXPAND INTO • CUSHION •• •• YES• YES•003•• Fl•• •XFINLD x02 03 04 ..... ... ..• FILE THIS PO/NT XR2 TO ••SECTONEXTAND GET • AT IN : •:. M I D ..n..NEXT .• • • •X• . YES ••••••• B2 •• •7(••leo•003•• Fl. FIZZ x• • E3• ...o.•• VERIFY THAT DISPLAY ERROR *PHASE IS IN 11 •ORDER ID •• •:.X: 82Flowchart S11.04, <strong>System</strong> Loader, Phase 2Flowcharts 189


•.4ISLA11.41.0..005•• • •• A3 o...••• •NODAAS A2 A 3 *****• 4.4. A4 A5• •STORE FFFF ATEND OF RELOADTABLE STRINGeINITililZE_CORE• S AND •'WO KZINEVED:• IMAGE •ALTSEPTIVEE..x:18A4NCVlif04 :•• AREA •• PLACE CURRENT •...:EN9WAT AN OF:• CORE GIBING •SETPD131 B2 B3 * : *** ff... B BS• BR TO 4 RES MON ••INCREASE STRINGSET PRINCIPALFETCH APRS ENTER•TO FETCHR DUP TO.LENGTH BY 3I/0 DATA INNEXT OVERLAY• TABLE TO DISK. S TOE •• PUSH END WORDSLET SUBPHASE 3 *SUBROUTINE LIRE.•DOWN STRING•• •••••ClFETCH AND ENTERSUBPHASE 2DI••FETCH CIL DATA• FROM SLET FORDISKZ•••MASK INIZ . .C2 C3 C5CLEAR SLET OFALL SIGN BITSTMOT2•ADDRESSES02•;611EIHNNTM•• NOT PRESENT• •..x:Cragi qitzp2n:• •.400.• D30118-af6 • ':.NO• YES• •EN OF •. YESe . DISK DSTRING• D4 • .NO 0.0.•• A3•:.0.0COMTL04• 'LOAD A PHASE ID:OF D TABLESTRINGSTRING• ••D5•ENCIVIOV E NSK •. . CDT • D4ElE2 E3 X E4• FETCH ICON• • • ••UPDATE CUSHION.• RELOAD NOCLEAR SYSTEM.•• SIZE AND FILE4. OPERATIONLOADER FROM4.. MigE• BACK DISK . STRING .4• YESNO•.C200 xFl F2 x F4 x• • ....E3 • COMPARE ONe.• INITIAL NO• FETCH RELOAD • DISPLAY END • • DISK TABLE IDLOAD•TABLE FROM DISK. • RELOAD• WITH ALL CORE•• • •• TAB LE 1 0.S• YES• •. .GIG4• • SET6 2FADDR TO •UPDATE • +POINT TOEND OF. ANY e. NOADDITIONAL •.IN—CORE RELOAD •MATCH .....WORDS IN DCOM •TABLE• •YES•INITIALIZE •FIRST SECTOR OF.LET•GETRH2READ DISK •RELOAD TABLE •INTO BUFFS •H4• COMPARE NEXT• DISK TABLE ID... 4 WITH ALL CORE• TABLE ID'SJ1•INITIALIZE A •NUMBER OF WORDS•IN RES IMAGE •J2•.• ANY 0.00DATA IN YES • •• DISK .•..•.X• 04 •. TABLE .• • •.•• ND• •• A3 •Flowchart SYLOS. <strong>System</strong> Loader, Phase 2190


161 sIxetlomoLlaarreol 4.1r4S PI0D ' TO.LSD axegomou• W99909d 1/1915 •• 0103 01 11%3 •EN••••;013301%990U:• Oalii1S1N01.Erx••• 3W00 01 •CH•• 1353901AW/aM09:11m098Poinl5•09 .10x19915 0103 40 • 03IA/33dS5539009 110133S• 30180 90i 3003ONV iwnoo 331030 01108O80 do 135 •CA 13x9330 • 01 3301 01109 •• E3S3to..• • • •o' 939N0N • '.1100 •X 30190 '.ON "• 0I190•• s'23 •'. 13)1 •• •S901913091SNI901 •03510038 0,108.CO•S3H31/MS WOHA•O 30190 1031901• AO 838809 0038•10xS3A •......',.41... ..23 X • " • • • 10039 '•• • ON 'm ASIO ."...I, .. ••'.. E3'NUM AM'of 3301 ollne/313S3•HlIM ASIO k1 35930.E90000NOI1V30 199011003X3 1 NI93919• 300W •.19551510160TOl.IVldI


••••10•ENTER FROM COLD.• START LOADER •• •A•GET DEVICE CODE•• FOR LOGICAL 0 •• SET UP BY COLD •• START LOADER • •CL• •• INITIALIZE •*LOCATION 0 WITH••BRANCH TO SUMP• •ADI• SET UP NORO •• COUNT AND +SECTOR ADDRESS •• OF RESIDENT •• IMAGE •EL...*.....• INITIALIZE• SOCYL ENTRIES• FOR POSITIVE• TOFlo** * .....• SET SDBSY AND• SCYLN TO ZERO•01***.m. ......•FETCH RESIDENT •IMAGE•141***.n .....• INITIALIZE ••SACO( ENTRY FOR•• LOGICAL 0 •mon• EXIT TO •• AUXILARY •• SUPERVISOR •Flowchart CST02. Cold Start <strong>Program</strong>192


****A1********* ****A7********* ****A1********** soUPP ENTRY * SExIT ENTRY * SLINK ENTRY *POINT POINT • POINT* * *. **********•*••*PI *..* *. *. YESINTERRUPTS .*...*. RENDING .*$ N7■:****02*********:*INDICATE ENTRY ** RADE AT SExIT ******B1*4* ***** *** *fNDICATE ENTRY *MADE AT SLINK ****************** :**************x . .*****C1***********SAVE REGISTERS,** GET AND SAVE OUMP FORMAT *CURE ********************* * *C 2 ** * ********StaI RTN* ****** ****** ************01************ SAVE FIRST 4K *E CORE UN CIA.*****EI*INDICATE ENTRY ** MADE AT EnumP * ••* * * • * * * * * * * • ****** D7**********• GET AND SAVE *LINK NAME. TWO **wORDS FOLLOWNG** CALL LINK *$* * • * * * * * *x..........E7 N..* N..* *. YES*. INTERRUPTS .5...*. PENDING .t*. .***ND* ***** F2 ***** ******* FETCH CORE *IMAGE LOADER,• PHASE I ******************G7* ******** EXIT TO CORE ** IMAGE LOADER ****************•Flowchart SUPOI. Supervisor, Skeleton SupervisorFlowcharts 193


****A1**********ENTER FROM CORE** IMAGE LOADER ***************.*C132.* NI ..X• ***********R1************FETCH REQUIRED *• SOMANES.....****••**l C ** *.YES.. CCNTROL...*. RECDRO IN .*PUFFER .*. NO*****007.3 *+,RA770******01*■*********RA000 007E7*READ A RECUR°.*************Fl".. .... .y ES . .....**... CMU TD S .*'*.. .*ND****** A2 *...**** x/12*"*..*BRANCH O..* ON 0*3 TO*. PROCESS .... RECORD .**........CMTS..002 01....JOR...002 830.....P4O5..007 F$....CPRN..007 E4....TYPE..002 C4BI:...XEO...002 A3....DUP...002 A4....ASM...002 45:...EOR...002 A5*002*Al*R4503RA52063 4..* .* *. *$NREO, *. YES .* $NDUR .. YES• NO EXECUTE .0.... *. NO OOP .4.... :TUTU; 41E4 NF-:S. SW ON .* • *.SWITCH ON.* . * R. ... *XX **a*** ********* 0.* NONO ....•**** . . ....JO *. * . • j$ r . * ** (11 8.0* ..X* B3 * * • —X* 83 .**** . r .•.. . *..** **** ****PA600•* SET WC SCRr *:REOUPEnDgHASE:"..************ ***** ** ******c3 ****** ****. MOVE ROUTINE **FOR READING IN •*4 PHASE TO THE * $HASH AREA ********* *************D3******.r.*BRANCH TO SHASH** + 3, H4 ***********......*******sr**002*F3 5...* * .X....it XRA460E3 11..* $10CT, YES4. . PENDING .5*. !NERVE .*• NO*007** A4*••*0560 XA4 .. ..***A5** ********.032**.02*RA480 X***•*04.05******5* SET WC S:TR *:IPARRR5TRIVRE:• KEYBD TEND CD.OR P/T *. ****. * *..X* 81 ** *****002** *4**•RA400 X*****E4 ******* ***SET C C SCTR *A WDDR OF * PRIN0IPAL •• PRNTER O *CONSOLE PR T NTER ******E/**********. SET xR3CCORDING e TO ** RECORD TYPE •61 . . *JOB YESRECORD .4....* NO ***** •X . A2 ******tf *FR ***** ...*. ENTR Y POINT ********************•* G2 *.X• ***********G2 ***** ******H1*.. **H x * ***** *****.FLUSH *. YES• • THE JOT .4.... "VOic" **..*X * ****** ** * *** NO*• DI ***.*******E3**** ***** *• BRANCH TO * PREOPERATIVE *. ERROR TRAP *....* DISP HEX FEET w •****** *********** X******** * *.007* DI* 04 *... * *•r.RA440 X******6o..... ******* SKIP TO NEW *READ 4 RECORDPAGE C PRINT* PAGE NO. ***** * * •**** ** ******* ******. ****..X# DI *+R..ROUTINE TO BF MOVEDTO $HASH AREA4 ***** **•**SET WC C SCTR ADD* LOAD I/0 ** AREA AMR• READ FUNCTION *********** ****** *******j/*S'*********J2 0. ****** J4*** ****** PRINT THE *RECORD .r..* R3;0* REQUIRED PHASE *. .. •.. . .************* X..•*. YESBRANCH TO• •NEXT PHASE .* 62 . *......J0B...002 .1....XEQ...002 A3****K2********* ....DUP...002 A4•PRINT ERR* RETURN *** ....ASM...007 A5 *: ."a +* ***#t 4***....FOR...002 A5a*** .Dl **• Flowchart SUP02. Supervisor, Monitor Control Record Analyzer194


SYSUP*****A/**********A2 a.R..a ID LIST t. NEG*ENTRY FROM MCRA: t. ADDRESS.*.**************.*POS*****R1*********:* SET TEMPORARy*MODE SWITCH IF ** a IN COLUMN R •Ltassatattatr*...0••******A3* ****** *t t*******A5• FETCH ID LIST a t PRINT SYSUP **PRINT REMAINING*X FROM DISK*HEADINGIns NOT* * . X * PROCESSED •***•********* ************* ***********•******Rp***** ***** ***mpg ****** ***** ******g5PRINTaID, LOGFETCH If) LIST ** DRIVE, PHYS * a WRITE UPDATED •FROM CORE *..X DRIVE F3R THISD:04 TO MASTERSTORAGE aa CARTRIDGE ** CARTRIDGE •* * * * * * * * * ******** *****•*****ci********** ******c2*********** *****cA ******** **• CONvEPT HOXA a DECIMAL *FET F A •*CARTR/DGE ID C * F FAFN C LWMITE * * SATELLITE*STORE IN MUST ** CARTRIDGE a a CARTRIDGE * •:**************** *****************c4P FTDAN TO A*CALLING ROUTINE.*****01********** •***.02.*****•****SYSUP 103A2* FETCH ID FOR *A * a MASTER* *RIGE .CART IDD F ROMa UPDATE OCOM aLIST *.:***************: *****************XD4 *.*.. * 1p•EQUAL 0*.***:*0. YES■•**••OR..x* "Ansi cAP R .*•*****F1********** E2* **.. DEFINE SCTo •.* a.a ADDR OF GIB a.t CARTRIDGE a. NU* DRIVE CODE OF*.WITH THIS ID .*a 4KING sin g C **.AVAILABLE.*•LJNEuRMATTFD 1/0*S. .****•************•* YESE4 *A.* S..* CARTRIDGE *. NO*.NITH THIS In .•*.AVAILABLE..*.• YES****EB*********• EXIT TO SLExIT •IV SKELETON ** SUPERVISOR •X*****F1********** ******Fp **** ******a INITIALIZE a*FETCH DCOm FROM*COMMA *MASTERA CARTRIDGE a***************** *******************FA ****** ****.* "IINSEP" *ItiNHaFPri.W*CARTRIDGE •****** ***** * *SU500•FIND THE10 IN •a #cT ST la""a CARTRIDGE *%*****01********** *****Gp**********a * *SU500 003E5**SET NO OF EUUAT* a RCDS IN SECNT UPDATE SYSTEM *DCOM TABLES * * * a*********•******* ******* ****** ****xX*•**AG4 ******* *******81**♦*******5U500 003E5* *MOVE ALL ITEMS S EXIT TO SEATIN SKELETON * a .. FROM POSITION *...* UPDATE SYSTEM a.14 THIS DCOM TD** SUPERVISOR******* ******** * a °COM TABLES * a 1NIITAlc141a****** **************** *****PRINT VERSION L*mODLEALL C COREa SITES a** ************•***H2***** *****a SIT ALL HUT a***H4 *********. FIRST ENTRIES at RETURN TO **IN SYSTEM DCOM *CALLING ROUTINE.*TABLES TO ZERO *• ***•.*****************J1♦*********a UPDATE SLFT *14E0 FnP PHASE *A** ***** **********•******J7***********JR8n0* .1NITLZE HONG* BER ***********• •*****Ri* ***** **** ******RQ************RRANCH TO READ *RESTORE PAGE C ** IN PHASE 3 * PRINT J38a * RECORD *•***************** *** *a*•9***** *****00 * AAA , * * A4 *** * . ****•Flowchart SUP03. Supervisor, Job ProcessorFlowcharts 195


J P300****A1**********ENTRY FROM Supy.p HASE 2 *A2 s...UA. PERAKIA4TA. LET .ALAM-Pal-8R:***MA** ****** **A. .. .*.*YES A*RA* • n2 *x;J8310 J5320*.*.*****Bp. ...**********81 ******** *** BI.*.. *ANDO *. NO *SEARCH LET FOR • READ PREVIOUS •.. EQUAL M8N8U .. • END OF . LET SECTOR •A . .* A PERMANENT LET * .A. .*:*********** ** YES.**. ** AA.r *CI. *.x . . C3 *.X* * . x * ***** X x ***.J p50050A.J6330 •A. JI33 xCIC2 S. .****E3**********.4. *. .* A.NO .. ALL A. .* END OF *. NO *UPDATE SITE OF...*. CARTRIDGES .* A. PFRMANFNT .5... MS*.SEARCHED .* 5. LET .* * *A. .. S. .5.*A. :***** ********** •. YES * YES**A,**n2 *.x* *****Y J5340 x.•....**ni********** *****07********** 03 *.* *UPDATF ncom OF *SEARCH LET FOR * .*. 4.*ALL A. NOA DUSTER CART END OF . *. TEMP ITEM S . ......* * TEMPORARY LET A. DELETED .** * * A. .*...•.•***•******* ***** ********** ** %• YES RAMSA aJ2 A* *x 4..4,• ...******A3 **********J5360 •A.El • A.F2 A. .****F3 * *****.* A. .*..a s.• END YES .* ANY A. OF A. NO * SFT UP LAST *FOUAT .* A. TEMP LET 0.... *DUMMY ENTRY SET*S. RECORDS ...*A NOA. FOUND .., * *ANDO - OBNOU •A. ..A YESy.. *****JE1361 x*****F7*•********...*F1**********STARCH LET FOR A Fx1T TO MCRA A * LAST DUMMY A* A A ENTRY A*************** A**. ***** ********.G/ A. G2 A.TURN A. .* A.YES .s .* DUMMY A. NOMAN A. ENTRY FOUND .A...SLFT A. .**. *r.* ' NO A YES*****F1 ******** **• VELEMT ITEMS* SATEL CART A*UPDAT SAE RE OANDU OF*A T**•*****•************. * •—X* CI .* A*A**xx.....m.********. ****.H2**********. • A *SET ABORT JOB *SAVE SIZESWITCH ATEMP* * A DELETED A. .......*********** :**** ********* *.:****J? *.x* .***J8370****J1 A ** *BLANK OUT TEMP •A Foil TO ARCA A ITEMS A* A s A.************** * *••**K7 K7 *... *.RANCH E EXIT A .* END OF A. NOTO PH5 .* ***. sPc464 .*.s.-.... • .. ....***.....*******A YES 44.*. C q *; X * *•**** MAMA *****00,* * *A B3*A3 A* * * *A ..**•Flowchart SUPO4. Supervisor, Delete (Temporary Items) Lett96


****Al**********ENTER FROM MCQA**********************A1************ RFAD IN SCUM *..***********C/ 5. *.I. IN *. YES*. COLUMN 14 Or:*. .*• NOAl *.A5 S..•.*•..5 PU NCH 5. YESN3 .. mAINLINF *.•. IN COLUMN ......*. 24NAME .*.5*. GIVEN .**. .**. .*.** NUYES***** BB***************84 ******** *** SLOSW*SET ZERO LOCALS*• CANNOT CALL LS*• SLOSH*****5**********SET NON - ZERO*LOCALS CAN CALL*F il TjaLnR K ** LOCALS• LOCALS *• SUPV***** ******* *****•* * * * * **********C3•*.•S..* *..* PUNCH 5. YESS. IN COLUMN*. 28 .•*. .**. .*NU*****o/********** *****02*********** 1MPSW* "MK& MAP * ttiP1** StWIH q U O;F **At*** ****** **I.********01* ********** sxlswigcMOONs*****D4* x **** ****** SX3SW •.cr NON - ZERO .s SPECIAL ILSES •REQUESTED * *X....,5.......••EXIT TO CORE •LOAD Auttm• * ******E1*►*********SET NCORO TO NO** OF SUPV CNTRLRCVS *.********** ******SFT FOLLOWING * TWITCHES ZERO *IN DCOM NLCNT, NNCNT, *FONT, • NGCNT, NOCSW ************* *****•*****F1***********READ COLUMN 19 **c SFT REQUESTED*. DISK I/0 * AcCORDINGLT ****************** * * ******* rls*********** WRITE DCOM TO *DISK••••*****G1*********::FFAWROnNYDRT:* * •***********4***•*.*.GA *..* *Ṡ..5 MAINLINE NO*. NAME .**. BLANK .*P. ..• .** YES****G4* * NINOR *SET NAME INDIC X* NON - ZERO *••• •HI *..* *. 5. YESID /FRO .*.*S. *. ..o.5-.-NO***** H3********** *****H4 ***********SET'NINDR, NAME*INDIC, ZERO K it SET TO ZERO *DADA, SECTOR * *CONN socoe •* ADDR OF WS *********** ****** ***•**J1 x j2** ******* * J3...*. 5*** *♦.5 NO OF S.*LOOK UP CORRISP*.*SUPV CNTRL 5. NO * p074% 12 ET * LOGICAL DRIVE * :coAETSP EltlEm *x*INFO FOR PHASE *CURE *WORKING STORAGE* 5.*. ii0I? .*.* 5* * ************* ******.********** ***** ** 5. ...5* YES;X ****5As * x1* ***** ***** . *****K4 *********** *DCDE**** * **SFT DRIVE CODE * *BRANCH TO FETCH** OF o MA I NL I N E **PHASE 5 C ExIT * TO IT *:****** ******** *:. 4.***** ********* ***•Flowchart SUPOS. Supervisor, XEQ Processing;▪;* * * ******* .002** Al * 13*• * . •**** *•.xxFlowcharts 1.97


****AI*ENTER HF.E F.OM♦* PHASE 3 OR **** ** V*114*t*****LF000 ****501▪ SET SCRS FOR **LOCALS, NOCALSv**FILES, 02 750, C*E QU A*********** ***** **5***006** CI •.X*****:****cl* *** *****SET TYPE 3 NON ** ZERO IF EQOAT .5* ONLY ********* ********1E120 A1* ***** *****mono 009E1READ C PRINT A* RECORD ****** ***** ***AE0000A 4 .5. 4.•*♦♦ • * .• NAME 5.* • * * NO .*EOLLOdE0 ay*.*A3 5-.0* SET WC TO ONE * ..*♦. RIGHT .4• * * . *. PAREN .***** * ♦4. .*A5**♦ ****YES. ***** ** J1 * ▪ •..X* A5 •**** • ********** ql* *** ***** 54 *.**** • • .4 *.• * *POINT TO COLUMN* NO .* CHARACTER .4.• 51 .....Y* 7 * * NOT A .40..* * ►S. COMMA .•*0** • • 4. .4*.*; * YESA4***• •E0070 * JI Cl 4. ♦ *.5 *. *pi,*YES .• IS *.CHARACTER A .**. PLANK .*A •. .•1.•** • ND* r* B5 * k*•*0*- 1 4.t4 ti .4 IS *.j, :0.. Ẹ40 .:* CHAti/iR A *:**► 4, PAREN .**8** *. .**. .4• YES*••*• 45 5...****EQ050 .4.A5 *..* *.NO NEXT 4..* .*5 . PLANK .1:*. .**5•* ** B5 *.X• *****YES*****85 ******* *•♦*F/000► READ A RECORD :***** ********* **** 4*DETERMINE TYPE ***►•▪*****E I * ******* •DFTEPRINF TYPE *i• •.*Ci Htt*. WROO.*RCD OF SAME*. ND * **. TYPF AS .5 X WRITE BUFF TO*.PREVIOUS .4 * SCRA •4. .•.. .*.YES.*.E3 •S.*v.** .• *.* * YES .* MORE ANTEp *.JI**** 4. .4S. .** NO••LF200•.N000 * • ** -* * CLEAR BFR FOR ** FETCH FIRST * * TYPES NOT ** NAME OF PAIR 4 • SPECIFIED *• * 4 *LOCALS • 006A3NOCALS 00643FILES 006410275D 00643LQUAT 00543.5.tG2 5.*FBOOg 00941* W11008 009E4 •YES .*tHISVCO4•. r * ** *4.5.8gROWC.5'** STORE NAME * CLEAR DISK SS. .4. 4 ** NOHI •.3 .5 5.* SET INDICS C ♦.* NAME 4. NO 5 5*INITIALIZE FOR * *.*FULlegg! FOLLOWED 4.4.... * WRITE DCOM• A NEW RECORD ♦**54** ♦* *•. .5.** e►*►*R: J1 ♦ • •*** •*••**• . • J1 •r *:X LOCALS 00663 *•**......NDCALS n0663 XI ;:::v85 **********j4.4.*.:****j5 ******* 4*:.....FILES 006AI00941*.515 NAMES..5 PRINT ERROR * • *R2 XRg S. YES45 FETCH CORE *..X MESSAGE G225D 00663 * FETCH SECOND * S..*X* • LOAD BUILDER ** * NAME OF PAIR •. . EQUAT 00563 * *:**** ********* 4♦•; • 4. ; * **.4.:!!!;;4.5* 5 • • .*on** J1 *. J1♦ A * •A***** ***** ****0,00,** oi * Xni:4 * x ***• .FA000 00941* ****K4 *********• * *BRANCH TO EXIT ** r * TO CIL r. STORE NAME . ■ ** •∎DFlowchart SUP06. Supervisor, Control Record Analyzer198


LF000*****A/*********** ** SET LOCAL. *:AC,11 . 00-84 ******************•******R1***********RRODO 009E1* :EAR AND PRINT** ** ** * • * * * • * * * • * * •• EA * **007* . ****CI 5.5.* ***** •XXCl .*• *. C2 *. C3.*. *..* *. .* 5. .* S... LOCAL ** NO .* NOCAL *. NO .. FILES S. ND*.* PRINT ERROR *RECORDS .*.. 50. RECORD .* x*.*. RECORD .* MESSAGE.. *. .* 5. .. x X8. .8* **.. * *. S. . 5.*4. 44ES * VES ■ YES .4** * *•. . C4 . . . * * XX**** ***a*X X *002■.*, .*.01 *. D2 *. 03 .8. * 01*.8 *.5.• *,* 8. .* 8..8 LAST S. *YES .* LAST *. YES .* LAST 8. YES4. R ECORD A .*.... *. RECORD A .*.... S. RECORD A .*5...LOCAL .8 .* 5. NOCAL .8 . 5. FILES .8 x5. .* *. .5 *****4. • X 5. .* X *• .* *0085* NO ND NO • 41** ncre * *008* . ** A3* * 83** 5 * ■* *******EiWR000 009E4WRITE BUFFER TO*SCRA G STORS*ri t* *5 *************E2 ********** *WR000 009E4 •* WRITE BUFFER TO*SCRA SECTORS***N3 WR000 **** 009E4 *** *WRITE BUFFER O*SCRA SECTORS T .4-X.*.El . . 5. F2 *. F3 *..* 5. .**..8 LOCAL 5. YES .* NOCAL *.5.YES .* FILES *. YES * **** *S. INDICATOR .5.... 5. INDICATOR .5.... 5. INDICATOR .*....X5 C4 45 . UN .8 . *. *.UN .* 5. ON •5 * •;***** * * *C4 C4 * * * *• .5** ****S.S..1.05.• 5. .* 5****. .*;*. •.* NO* * * ** NO*****G1*** ********INWJgkhN A *INDICATOR" ON• ***= INPRAM EL ****** ****** * ******008*. A,** *******008* *008** Al* * Al** *•Flowchart SUP07. Supervisor, Control Record ProcessorFlowcharts 199


***** *Sim*000* 5 * * 008*%al* * A2 * 43*• * 4. ** **a* • ••% % %*****Al ****** **** ******A2. ******* **.. * PROOn 009FI * **SET WORD COUNT * .—*SET WORD COUNT r. EU ONE A READ AND PRINT * TO ONE ** * A A RECORD . • A• A * ******** ....******•;X ;...a.m.*** ****** R2 A.* A **POINT A A. A.TO COLUMN* YES ... RECORD *POINT TO COLUMN*** 8 *X* SAME TYPE .• * 7 *. * A. AS LAST .A . A: ******** ****** .. . A. • *A. .5.** NJ •* **** ' . •4, CI *.X ;a *•*4**:OH: ;X*****C/ . * CI A.a A.5.. A A* FETCH AND .**COLUMN A. R. YES * SFT MAINLINE ** CONVERT FILE *5. 7 A COMMA ..x* NAME A BLANK. NUMBERA. A. ... ...A ******* ***** . ****** S. .A• NOX*****DE* ***** *****FROOn on9A1•********* ------**STORE NUMBER TO.*DISK I/O RUFFFR****A...v..*** ******A***** DR***********FN000A* FETCH A140 00943!* CONVERT * MAINLINE NAME A.0El *. ***** E2 *****.*.*:* Cr-VV., A* $ .5I!! *** ..X: SET tli k,"*"ECOMMA .*• NO***** ERB...* ******F q (100 009A1*...X. STORE NAME TO AA I/O RUFFFRA*****F1**********•FN000 009A1*• •*FETCH FILE NAME.*AND CONVERT TO ** NAME CODE *.......*** *****•rm,nn 2 019AI**STORE FILE NAME.*• TO I/O BUFFER a•.*. xHI . . *****H2 **********.. NEXT S. A.R COLUMN A •A. NO * FETCH AND A•S. RIGHT .,•A. p AREN ..V: CARTRIDGE*A. A. .**** AFT•rfEX •A... A... NEXT ♦S. YES.. COLUMN A .*A. BLANK .* xS. .* .....*00654, NO . CI.**** . . ** * .A G3 A.V.• • .**** X****•GE**********G3 *.009AI..* A. mum 009E1.* FOLLOWING A. YES * .A •STORE FILE NAME....COM .A X READ AND PRINT. TO I/0 BUFFER A. A A RECORD •S. .5A. :********** *****.5 ****** *******A NO••*FN000 009A3.CONVERT WEIR. *NAME A;H4* ..* TYPE .. NO•. A. SAME .A. •LAST .A•. .*A. .*A YES••*006*;*****J1***** *****. SET CARTRIDGE A. In bLANK.xX .A. .A.*****K1*** ***** ** K2 A. K3 A..F8000 A .5 A. .A S.A . .5 NEXT A. NU .* FOLLOWING •A. NO*STORE CARTRIDGE* X*. COLUMN ..... ***** X*. COLUMN .*....ID TO 1,0 ..A.BLANK0,... A. BLANK .*A RUFFFR A .** *********** ***4. A. •%• YE S * YES ****• •* CI *.* 5.. ; *X55. S.***• •* A2 *A AR •• ****•Flowchart SUPO8. Supervisor, Control Record Processor•POINT TDCOLUMN!••****• •..X A G3 *■ •****200


"00Zsossaoosa psooau To.tluoD c aosinlacillS . 60c1f1S 4.retionnoue* ******* *ma►** ■*3511008 00111.1*:351021307331":********* WO***X****** ***********300*xe 15mo 000035** 1N35311330 ****** *****IH*****Xsaints ****asst*• •: 0/I Utdqv313: 04 081 3404148 ********** CO*****000330* 351 10103 *10401WIt**W.O0* 5*,01,51.ti.l...4.* * * * * *9015 01 budAnuVIM 01 033108 0110138 11 UV38a 0/1 OSlO 31189* * 0/1 OSLO 31189* * *** * ****►* n****** ** ******** *I4*******10 * x X*900*ON a S3:.*.*050*.**• •* 8' •* 5' .**. 38313 .* *. HAS ** * *..•*. 0333050/1 •* *• 351 Nwnlo . 4 •—• 3A11V03N iNnoa*x * *, .*0337 111001 •*S3A .* NS10 *• •6* S1H1 *• ON • 0809 15.1 13S • * •♦ *3 *. 031 '4 080138 *.* *'5** 83*.•* •* 13 *.00089 00053•01. 54,.. *5. •a'*' NNV19 6 * * **. N00/03 . * :Almounrp:531 'S 1%4N * 6.* *. *********IU****.*•80NwninS3A * .* 1%3N *.•* *••* E1.*•****************** A1051080319 15003 **• (Non IN3W3O3NI** ***********13********** ****** * ***** *****************033300 0/1 • 831400 NSIO NI 314.5 * NO1S83A501 * x .• * . buns 80 GI ** %MO? * :3"31119812510:** ***** ***t9 ***** ****** ****I9*****X* *a * * **If * S3A *ON *■900* *. •* AS O:5*5** *• •* ***** 5• .% *• 0I1VA •* X ■6 1103 * .**• N140101 •** 004308 0/I •*ON ". 15814 0•S3A •* NSIU *••* *• •* *.•* tV•* IV**• 00053 00031


.•.•••▪NNA L FRM CORE.• IMAGE LOADER •• •111'FETCH PRINCIPALPRINT DEVICE• SUBROUTINE •• A2 •.00.•• A3•••• XA2A3 0... •.4... .'ELOWER .. NO• • LIMIT LESS .. X.:.LIMHWEESS ...r...X: E4 :...THAN 2566.. •.THAN 4096.. • •.. .. .. ...... .•YESYES •YES0." 0040.009. •009.03 •.1 84 ..X• • • •01".MM2 11•••MM3B283 84• • FETCH WORDS • • FETCH WORDS •PRINT HEADING • 1286-25 FROM •2566-45 FROM •• • CIB • C18..C1.......YES RETURNADDRESSNOC2 • C3 C4INDICATE NEXTSECTION IS 3CONVERT NEXTADDRESSAND •NEXT 16 WORDS .•INDICATE NEXTSECTION IS 4:• . •X 'X....X • .• .1...X•• A2 • • A2 •D1 Of.... • .*SET LIMITS FOR • .. • .•.• .....11.NO .. ARE THE ...: HHANIXAL :.DUM .1 .. ......."EM:E5 .46..• • .. .0.09.• YES•0 E4.El. LIMISHERWCIB•E2.L• I§Amp. . YESiTrHLAST0. LINE• NOMM4•MAKE E4 LOCATIONS •ABOVE 4096 THE BUFFER FOR DUMPING OF • 4096-CORE •Fl•PR1NT REGISTERSAND INDICATORS• •F2' 1.RINT THE LINEF4INDICATE NEXT • SECTION IS 1 ••.4. 11.1 G2 ... 03. . .0.. .. s•• .. DUMP .. YES• PRINTI HE ADI NG... C OMPLETE X.:. BORNS .:0YES• • .. .. 4.. ..0. ..e. • NO • NO$12 •XI ...HI .. H2 .. x. .....013.•LOWER •. NO• •• EXIT TO $EXIT •6. LIMIT LESS ...... .:. MR .-..!?..•.THAN 1286.0 .. .. • itIplinVEIRNI . • .0 X• YES .... • YES ........ • • • ••009• A3 • A2 Jl ..X • * • •• • .004.11 1.600....MM1 xJl J2.......M.645AHFOOTa le ..... SION•0.......••..t 009 J1:...2 009 83• ....3 009 B4INDICATE NEXT• SECTION IS 2....4 009 E4H4• RESTORE CORE •..X LOAD FROM CIB..j4• RETURN TO •• CALLING LOAD •...*•AZ • •001.6Flowchart SUFI 0. Supervisor, Auxiliary SupervisorFlowcharts 201


......+M. .010+ •*010* .010.0 . A2. ..A!. %At. ...T• • • •. .A5500 X AS100 iAS200 R AS300 k▪••••A2A3 A4A51....A1 DUMMY UP OUP • .ENTER FROM CORE. CONTROL RECORD •IMAGE LOADER • INDICATE THEIN SUPERVISORFWPROARIWAEi lENNINRINgT.APPROPRIATE• BUFFER • • • MESSAGE• •81SET (DUMP 10 ZERO, FETCH •$OMPF•B3 84 85CONVERT •SET SEISM•FETCH PRINCIPAL.CARTRIDGE ID TO.▪ NON-ZEROPRINT DEVICEEBCDIC • • SUBROUTINE •••▪- -C I •.DUMPFORMAT CODEDUMMY UP JOB ...C4CONTROL RECORD IN SUPERVISOR : ENTSULtiONT:BUFFER • • SUPERVISOR •C5CONVERT NAME. INSERT IN MESSAGE • :...-3....010 ASD3SET $CTSW NON-ZERO • ••X05• •• PRINT MESSAGE•••E3EXIT TO $EX1T IN SKELETON • SUPERVISOR •ENSET ANXEDNON-ZERO•...FSEXIT TO $EX1T IN SKELETON •• SUPERVISOR •Flowchart SUP11. Supervisor, <strong>System</strong> Core Dump <strong>Program</strong>202


• A4 :...CM000CM11;... A4114**Al• ENTER FROM : ...SAVE LOW COMMON•• SKELETON ON THE C.111• SUPERVISOR • • •••MOVE DISK READ• ROUTINE TO• (HASH•CM220 X82 *. 63 84 000000 I.... • •.• .• FORMAT •.m. YES •FETCH AUXILARY • •LOOK UP NAME OF...X.. CODE • X SUPERVISOR • LINK IN ••..NEGATIVE 0. • • LET/FLET •... .. • •...IDCI* o.CALL YES• DUMP-•▪ *- .*NO. .XC2 C4 ...••••C3. ... .........C5• FETCH DUMP • • EXIT TO • 0 NAME IN ... NO •PROGRAM AUXILARY .. • LET/FLET 0 X. EXIT TO $DUMP •• • • SUPERVISOR • ... .*... ....111. .4• YES•D1_... ••••02*.*.NO .• • CALL ... • TRANSFER TO •..... LINK .... • DUMP PROGRAM •0. NAME OF ... YES.. A DATA FILE... o. ..• . *....0.... ....0• YES • NO. .. .XEl o.EAo. E5ANY .. ••••E2•..■ COMMON •*. YES •ENTER FROM CORE.0. • DSF OR .... DCI •SET CORE IMAGEBELOW .o.... IMAGE LOADER • ... DCI X•LOADER SWITCH.• 4096 ... • PHASE 2 • .. .* •ECLSW, TO ZERO... ..X• NO .4.0 ..I:6 .000. . • 4 • . 04.•• A4 • Fl ...X.o •.. ..Xo H1 •••••.••• XZ ••••••...Fl ... F2 *. F3 f4 .01... 0. *.... D/SKZ •. ... YES 0. CALL e. NO • FETCH MONITOR • • COMMON ... NO•. MONITOR 0. ... .• • ANALYZER • 0. .*. .• *. 0..X... IN RESIDENT 0. X•. LINK 0. X CONTROL RECORD .. BELOW 4096 .*....• NO • YESX*AYES ........ :...•X. • fl •;( 1 XGI • G2 x G4• 4 ......•SET CORE IMAGE • 'FETCH CORE LOAD. 'EXIT03TO MONITOR. .. itnEER MrSt1 •'LOADER SWITCH. • BUILDER. PHASES *CONTROL RECORD • COMMON AND 4096• SCLSK. TO 1 * • 0 AND 1 • • ANALYZER • • ON THE CIA ••H/ •.X.• •LD000oo.1•••H1FETCH CORE •• IMAGE LOADER• PHASE 2 •*112• EXIT TO CORE •• LOAD BUILDER •• PHASE 0 •• 00...11• EXIT TO CORE •• IMAGE LOADER. •• PHASE 2 •Flowchart CIL01. Core Image Loader, Phase 1Flowcharts 203


• ENTER FRCIM CORER•• IMAGE LOADER, •• PHASE 1 •HI• CORE'.• SWITCH,SCLSW•I02• OISKZYES•X.. REQUESTED .*• 0 • NO•CI C2 *.• FETCH CORE •IMAGE. HEADER• •DISKI YESREQUESTEDB3• PREPARE TO •X• FETCH DISK1• •••••• •• C3C3**. *****• •• PREPARE 70 •A.• FETCH DISKI •• •• NO.....• • x• 02 •.X. D3 *.X• •....... : ....x X xDI . D2 03 04 • ..• TRANSFER • • .. CORE •.....US•PARAMETERS FROM. PREPARE TO • •FETCH REQUESTED .•RETURN TO CORE •• LORE IMAGE • • FETCH DISKN • X DISK I/O SUBP. X.,.. ,4712H, %. 1 X• IMAGE LOADER •HEADER to CoMnA•• • 4. SCLSW, .. • PHASE I ••• 0• •E4 ..0• •El•STORE ABS SCTR •• ADDRESSES OF •• LOCALS AND ••SOCALS, IF ANY,.•IN C.I. HEADER •1141.4E4 ......• FETCH CORE LOAD•• •El ..X..FpNO .. • CORE .. • EXIT TO CORE •..... LOAD IN GIB .. LOAD • •• TESGI..PART OF•.• CORE LOAD •. NOBELOW4096• YESX 71.HI *. H2 H3 *. 04 *..•ALL OF .. . PREPARE TO •• crIRE LOAD •. NO • FETCH ALL OF • .. NECESSARY •R. YES.. DISKN •.. YESBELOW .. X.CORE LOAD BELOW . X Ṭ ? FETCH 0151., X.. REQUESTED ......• ... 4096 .. 4096.. .* • • •iA YES • NO • NO 0011..• •X. •. 02..X. E4 • • •JI•• PREPARE. TO• FETCH ALL OE• CORE LOAD•••• •J4• DISKI.NOREQUESTEDJ5• • PREPARE TO X. FETCH DISK/ •K• H3 •• YES. 000. 1114.•. • •..X. C3 •..X• 03 :*Of.Flowchart CIL02. Core Image Loader, Phase 2204


SOZ sixelpAAINAnoTvezifemul gaapring Inc,/ amp • Tom aregomoid•Z 3SVHd 01 1IX3•Tr....X•OHd-00001• Z 3SVHd H3134 •THIHd-000N1 •• 31901.0,101.♦• N1 /0 1 N /13113%Hd-00019 31991 •0901 NI 3W1N •• 0/1 OSLO 03193•11••1430V3H 39119190*• 13 ••Hd-000H9 V30V3H• 3N11NIVW H713A.10• NO30•140di P313W089d•0391 039 3AVS • •13•0030 H3134•19••• a ••3SVHd VIA d31144•/v••••


A2 .• *. 3• PERFORM •NO: PROCESSING• TP000 — PH 6 •....Al*• ENTER FROM •• PHASE 1 •• •• • • •• 81 ...X •81MC000•••RELOCATE •MAINLINE PROGRAM •• 81000— PH 2 • •2•82CI C2•Mg&LENg-K:O00vo• •• 01 •.X•MCO30D1• FETCH PHASE 3 •LK000 —PH 0• •••11.0• •• El ...X• •MC090••El•GET ENTRY FROM• LOAD TABLE• FETCH PHASE 4LK000 PH 0• •G4• •• YES •O•••••••1•1•0%83 ...* B4.• .. COMMON .. YES • PRINT R47 •.. OVERLAYS X MESSAGE PM000• •.CORE LOAD.• • PH 0 •.. ..NO•.xxMC170MCI BOC3.. ... C4..... ANY .. NO •PRINT EXECUTION.o. ERRORS • .... ...... X MESSAGE PM000 —• RELOCATE•Rinn EgAiiIL000 PH 4 .. .. • PH 0 •• .. ..• YES•iD2 03 04. .. D5• •*LOADING TLOOD • x •• STORECI •• ..• • • .. ...• YESMIDCALCULATE • TERMINATE • .* .. NOL.AVAILAB E COREX. AIPLWER •• ET000 PH 4 • PH 0 .. ... • PHASE 2 •• E3•• .MC/50 •• xE2 .•. .. E3 ...... am*. . ... NO •FETCH PHASE 12 ..• ••LOCALS ORX LK000 — PH 0... SOCALS .*.. ..• YESMC270E4• • • EXIT TO CORE •FETCH DUP • IMAGE LOADER •• •MC060. .Fl• LAST YESENTRY .....• NOF2•FETCH OVERLAYED•PART PHASE 2 ...o• LK000—PH 0 •**ff.F3 ...... w••••*PRINT CORE MAPFOR SUBROUTINES•M2000 — PH 12*1.1• •. RETURN TO DUP •• •.... **Oil• • 81 : • •• G2 .... • • • G4 ..........MC160 x MC120 M x01 ... .. G2 .. 63 ...... ern * Gh.. ... .. ENTRY ... ENTRY •.. YES ...PREVIOUSLY .. YES • FETCH PHASE 6 • • FETCH PHASE 5 ••. RELOCATED .•.... •. RELOCATED .•.•.. LK000 — PH 0 LK000 -. PH 0... YET .. .. LOCAL .. • • • •.. . ..i.11D••••• • NO ••••• .000 • El • • • • et •. • • • H2 o•X • •. ..... ...tomaxMC210 X MC240 x .4.HI H2 H3 ...... a... H4• • . DETERMINE • • ... ...•CHECK NAME FOR • • WHETHER TO • •CREATE TRANSFER. ... LOCALS • .. YES• CALL OR LIRE • •RELOCATE ENTRY • •VECTOR TV000—PH• .. PROCESSED ......XCN000-PH 0 • 00000—PH 3 6 .. YET ..• • :• • ... ..X%.....II• •• A3 • NC330Jl .. J2 .• ...• • J4*qu •••.. ... 10.DISK .. NO .. a. YES.. .. o. .d... 411. .. .. .. . ..lc o. .... x* YES MO • NO *4.0 • YES.. ANY o. NO*.▪ I/0 ENTRY ...... ... BYPASS ...... ... LOCALS .*• • • •El • et •• •....'.....*NO05•••••• •PROCESS SOCALS •..X• PS000 — PH 5 •••H5• SOCALS •• NO▪ COMPLETEDJ5X• YES• •DI:mit• FETCH PHAS E •10000 — PH 44• •XMC220XK1 .. K2 K4 K5• • RELOCATE •.. NO RELOCATE • •PROCESS LOCALS•. • REQUIRED ILS ... PASS I ...... • SUBROUTINE • ADD FLIPPER • SUBROUTINES •8/000—PH 2 • • PL000 — PH 5 • IL000 — PH 4 ••• YES...X••02 •• •••H2 • • ..X• El • ..X• DI • .0* E3 •*low . .***Flowchart CLB02. Core Load Builder, Master Control206


• •• Ah •• •CCATiiA4......*A2• INITIALIZE• ENTER FROM • •CATCO SWITCHES• SUPERVISOR •AND WORK AREAS•• AS REQUIREDxB2.. B3 B4.... • •.. ••. PAPER .. YES •SET CATCO PTPON•... INITIALIZETAPE ON ... X•SWITCH NON-ZERO• INTERRUPT .. SYSTEM ... LOCATIONS ... .• • • • •NO& CI C241SET • NO .0 . 1442-5 • .. .+.• CATCO.RBLINK •X • ON SYSTEM ..••SWITCH NON-ZERO. ... ...0. ...• YESX.X02•BUILD CARD I/O •PHASE• •Ca C4X• WiDgg ER • • READ MOM OF •SYSTEM DRIVE TO••• CATCO •x XD3 D4•WRITE PHASE 16 • • LOPYRSEINTO DISK AT 0 FOR • • REMAINDER OF •• CCATE2•..RITE PHASE 15TO DISK• •xE3.•. ... E4.• PRIN... READ PRINC.NO 0.1/0 W/D KB ... &PRINTER DEVICE •..... ... PAPER ... ROUTINE.... TAPE .. • OVERLAYING •.1. .. CCAT• YESF3•WRITC OPtlik. 15 •• •• •• EXIT TO RESTFlowcharts 207...G2 . ... G3.10 I...••PRINCIPAL •. YES &BUILD KEYBOARD •I/0 .m x PHASE•.KEYBOARD 0. • •... .•• NO.xH2•WRITE PHASE 14 •TO DISKJ2•SET CATCO (ROUT••SM TO INDICATE PRINCIPAL 1/0 •• DEVICE•*OA.• •• A4 •0. •Flowchart DUPO1. Disk Utility <strong>Program</strong>, CCAT


• ▪ •• A2• • A4 •• . ol.o .X PL035•••.••E▪ NTER FROM REST.A2A4• IN DUPCORDITO• PRINT CONTROL •RECORD• •••XDOACTL02 .. 03•.. .... 4.. YES • PROCESS COUNT•DUMPDATA .. A.• FIELD.. ..*. .. •FETCH PRECIPHASE. ****•014•..X. Al •• •STCTLBl .. B2••... 83PL03084•... .. •PROCESS •STORE.•RETURN • *. YES .. .. YESFROM CLB ...... .. •STORE .. X: 491t1, —E 4*. .. .CONTROL KECORDS•o. ...X • 1.4.• NO 4.11. ..•140• a . woo.• • Ah • . . •003.. •..X• Al40..X; ••••DUCTLPL050C2 ... C3 C4.. . • •.. .. YES 0:PROC.81 MP. ••• •DUMP • .•A. FETCH DUMPCI• 60 • X• FETCH STORE• PRINCIPAL.NO▪ I/0 FROM .06...K.B.• YES01..o. .......•FETCH DUP PHASE•14 (PRIN. I/O• SU8R. SET) •........ .4.4.X.... .. X .CONTR8LPRECORDS... .. • • •we▪ NONO*008.• Al*• •XEx.... ....... E2....*READ ••DUMPLET. •........ .0.40NOYESLECTLE3X•SET LET/FLET SW.FL100E4X I.CONTROL RECORDSFLCTLFl .. F2 .. F3•.. •NO .. CONTROL •.. .. .. YES • SET FLET ONLY..... RECORD .. al. • .DUMPFLET .. X: SWit. ... ... .... 0;PL060F4•FETCH DUMPLET•• YES • NO. 1/...• . •010•. . ..X. Al •X XDLCTLPL070GI .. 02.... .....01 ... G4..MONITOR.. .. *.• •CONTROL .. NO .. .. YES •PROCESS •DELETE* •RECORD .0.... .. •DELETE .. X.CONTROL RECORD • X. FETCH DELETECARD .40 ...*. .. •.. .. • • :i• YES OM • NO• •..••, ••••• A2 : . . •011•• ..X. Al •411.44 • •DFCTLPL0801.41. * ..... H2 .. 3 .1. H4.. .. • ••SET UP DEXIT TO .. .. YESGO TO .. •DEFINE x:R5Ht RECORD Xi FETCH DEFINE. SUPERVISOR .. .. •.. .. • •••• NO: •. •07,2•..X. Al •• •WACTL J3 ..miljto•ou ..... .. .. • • ...J4_+EXIT VIA LEAVE • .. • YES *PROCESS RECORD • ETA 1.111JOHS •• IN DUPCO • *. *DWADR .. X.CONTROL RECORD •• • X* V°. .. • • DUPCO •. .. .. • •••NO•K2• • ••Kx• SET UP OUP CTRL. •EXIT VIA LEAVE ••REC ERROR EXIT • X• IN DUPCO • •• • •IVOFlowchart DUP02. Disk Utility <strong>Program</strong>, DCTL208


•003•• Al•• ••iSTOREAl 0. A4 0. A5.0 . 41..I/0 .. YES•..... NO • READ SYSTEM •.. REQUIREDX*. STOREDATA .. X FORMAT RECORDS.• NO.* 0.B1 •.X.• •xEl •. B2...0. B3 R4 05...0...FXA OR .. MOVE FROG. OR. YES 0.: UMW 0:.YES •DATA FXA OR • • READ DATA • .. RECORD • 0. NO• STOREMOD .0UA AESFORMAT RECORDS .. TYPE VALID .0...... O ENOUGH .0X • RE TQUOIR D • ••0 0. 00. NO ..•IVO • YS E •••. •••• . •••• • •• E2 0..X: E2 • ..X: H2 • • •• •x• • •p...44.1.• ••C3...CI 0. C2 ..0.C5.* 0... ..1 ERROR ...... .. YES .0 .• CORE • 11. YES ... DETECT .. YES • WRITE TOSTORECI .0 Xi.. LOAD BUILT .. X.I.WH/LE ST RING.....:WORKING STORAGE•s. .• .. .0 ..CORE L AO.•o...... 0. ...• NO •• NO • NO ••••• •• E2 •..X• 111 •*.e.0.• •.40.001 .• 0. D2.0 .. •OUP EXIT CALLS •.• STORE 0. YES ••CLB WHICH CALLS•. TO WORKING ...... • DDUP . S PRECI0. STORAGE .. • PHASE0. .4 ••** *140 O...4 • 004.• H2 • • •• • • E2 •.Xme • •iimeEl o..*FXA OR *. .0.0E2... UA HOLE .. NDLARGE .0 X.▪ EX/T TO LEAVE. ENOUGH .*.. .4.• YES• YESFLNO DSF 0....*. PROGRAMF2• UPDATE LET OR •..0• REQUIRED •• YESG1•• DO ADJUST•PROGRAM TO END• OF USER AREA•XHI*M8VJAPTSTIMORRFXA AS• REQUIRED •02• •:UPONIARES AS •• •• ▪ •H2 ...X• •• pRINT SIGN OFF •MESSAGE• •J1MASK, DO NOT •ALLOW KBINTERRUPT •00••12• •• EXIT TO REST •• •Flowchart DUP03. Disk Utility <strong>Program</strong>, STOREFlowcharts 209


LF000Al.• SET LOCAL:111Atif OrIILDF•005.• 131.•.X:61RR000 007E1READ AND PRINT• A RECORD ••005•....* • C4..*005. . •CI •.X.• • ,6.4.11 XCI.. C2 .. C3 ..X. ..LOCAL •..•••C4... NO.:.NO.. RECORD .. X.:. WaSab X. RECORD %." x...EXIT TO LEAVE •.. .. X • •.. ..• YES • YES • YES.• •. . C4 . . • ••0.•; X 1DI .. 02 ..6 ,03 .... .... LAST it. YES .. LAST • YES o LAST •. YESRECORD A 6..... .. RECORD A • ...... .. RECORD A• LOCAL .. .. NOCAL .. ... FILES ..% .. . X •006•• NO ..•.NO • NO..i.*006..0066. • A3. • A3• •• . 16 • .i▪ X XEl". E2 E3 ******* 6...WR000 007E4 WR000 007E4 MR000 00714• ----.• •WRITEBUFFER TO•eSCRA SECTORS. :INii8YEPARI2 tNa inqRsT:: •b B 1 4-5▪FlLOCAL.YES• INDICATOR▪ ONF2•INDICATORON•• INWOR ...TLX: C4II. ON000▪ • NO ••••••• C4 •.• •Of.*• NO• •• C4 •• NO01SET LOCALINDICATOR ONG2INHIJKING3SET FILESINDICATOR ONIt•006•. A30••006. .06.• A3•• 0 Al.Flowchart DUPO4. Disk Utility <strong>Program</strong>, FILEQ210


..*006 *.Al.•006•. A2• • • A3•• .......... .X X XAl A2 A3RR000 007E1 •SET WORD COUNT 4.— —. :SET WORD COUNT TO ONE • •READ AND PRINT • • A RECORD • • ••••••FB000 1 X03007AI• •SET•STORE NUMBER TO.MAINLINE•DISK I/O BUFFER.• NAME A BLANK.• • •X81 X 82 ...•83• ..• POINT TO COLUMN. •YES .. RECORD ..B•POINT TO COLUMN••X *. SAME TYPE .. • 7 .. AS LAST .. . • .... ....• •• NO......CI •.XX••••••.00SoC.• .CI..C!.3 *• . .FETCH AND .. CONVERT FILE•.. COLUMN .. NO• NUMBER •.. A COMMA .a. .... ...• YES•X▪ .ElE2o. •• 4.. YES • SET FILE NAME • ••COLUMN A X• BLANK • COMMA .. •.. .. • •NO•FB005 300761...X.*---------------.STORE NAME TO ▪ I/0 BUFFER•••FN000 l 007A3 •f80002 007A1*---------------. • —• FETCH FILE NAME. •STORE FILE NAME••AND CONVERT TO TO I/O BUFFER • NAME CODE • • •XF3.....NEXT *. YES• • COLUMN • A 0,BLANK• G3 ••X.• NO•005•• Bl•• •GI*F8000 00761*-------- -------•STORE FILE NAME*• TO 1/0 BUFFER •▪G3 • G4RR000 007E1FOLLOWING YES• •COLUMN A X READ AND PRINTBLANK • A RECORD •• NOHI.. H2.. NEXT .. •• COLUMN A .. NO • FETCH AND .1. •RIGHT X• CONVERT *• PAREN .. • CARTRIDGE ID . . * •• YES•XH3 H4 ..•FN000 007A3• ... .... TYPE .. NO...: CONVERT MR. • .... S t2ET AS ....• NAME • .. ..X• YES.05*• 0 C4.• •JIJ4•SET CARTRIDGE • ID BLANK ••POINT TO COLUMN.• a •• •K/ n K2 ......*. K3•F0000 • .0NEXT ,.. NO .• FOLLOWING •. NO*STORE CARTRIDGE. X*. .• COLUMN .. X*. COLUMN .*....ID UTOER I/0 • .. BLANK .• .. BLANK ..• B .. *. ..• .. .6 e . i• YES •• YES ....• • ••CI R X• •.... .46.4 16.0.4 •A2 • •• A20..0 .0.0G3Flowchart DUPO5. Disk Utility <strong>Program</strong>, FILEQFlowcharts 211


FB000Al *.%/ODILSAFERFULL.•.0• NOYES* 005.• C460 ••FNOODA30FIRST • *. NOCOLUMN ...........i•4.• YES •0 0• L4• •BISTORE FILENAME. CARTRIDGEID OR SUER.NAME IN DISKI/O BUFFERX• STORE THEAMNIN• BUFFER•INCREMENT MORDCOUNTACCORDINGLYX0. •4.. COLUMN A ....... ..X• NAME CODE0 . COMMA .0 X 0. .0 • •C3C4...•NEXT .. YES •CONVERT NAME TO.•.ND•...01•:CALNURNOLYINE:•.03 4. x.0 0. ••••.6 NEXI 0. YES • RED4TURN TO •0. COLUMN ....... •CALLINO ROUTINE.BLANK .00 . .0•.AORR000EP .04••E2▪ RECORD v. YES ...X:CMINTCOUNT ZERO .0LAIGAMB0. .0• NO•••E3 *.NOTHIS 4.COLUMN THE .60 . SIXTH• NOMR000E4 4....I/OD18;FERCLEARNO•**•••*• •READ A RECORD• •••••VITER°18 K s10• • •.05**•0 CA• • F4••MRITE DISK I/O •BUFFER TO SCRA •GI •• •• PFIORIIHE ••.•002• •.RETURN TO DCTL ••G4• •:CLEAl upin I/O •• •XHI.... *****:RECUS REWIT BY:ONE •6 .6* .H4• RETURN TO •.CALLING ROUTINE.00000:CALI ▪ T8449INE:Flowchart DIJP06. Disk Utility <strong>Program</strong>, FILEQ212


E T z siautromoiacuninact umi2oad A4111111 4s? CI • Lodna lautiamou• •• SA X'•93A400 Indir) : •• HDNOd 01 XN11 •%•--•"98 0114 -81":.40600 00DdX• •4rEr04ZAX: <strong>1130</strong> 01 090139•Tr.•••ONS3!....NVV90Ndisa AO.EH590503N 90111%;• 3H1 ININd •TH04400S3A ••koddno indino .-H3N0d 01 ANI1 .: anmivo•:•;,„-• — ••40600 00040•E9 .4. T9 •X 0. .. •S3A • S3:... . O•j.....• ....• .4. :9NINBAnf50100• .. SM000130 :0 0ON .. 01107 MVO .:* 3301d 01 X011 •X • NI 03001d ••.•• ON .. 11n 1031R839.. x• •SA.... .. .•MOO 000MX• 536 .... P100...... 4A •.....EA ZA .....IA00140 ...• ....0.... SA • • . .•...• •ON ••• •..**H3N0d....• 000130• "8341Neida° • • BM NO 0100 :0 .. NO 3S3801 1d .:.••03.....awom 01100 330/d.S3A• .03000 0000* -. Indir).-E3 03 .....13. 0001000040X0:ON • . :... ..• •(1....• .. ... •• ••030V 1NI9d .9310134 N1Nd NO 01.00• ." 931NI9d ,.• (mon viva V0310 01 0011 3301d 01 X0411 •X •NO 03301dI SV1 ,.. S3A• • •........ ------• 53A , 30 1•,.00600 0003%. *S0000 0001%.•., ind0ino.- 4.•SO 40ZO! .....10 00400! x•O I.4...•• ..... • • X510• ..•::.avormivaNOVA anon viva.NV0/30 •8400P1479 • V 139 01 ANI1 .X.'1 .. . S3A .. X....•10dfRdININd •• • .---------------*£0..•••. •40600 000400.00900 0009X,... S3 43 0100110 x x)8•0V3i400 1NI9d NI 0100 •193501 01 0011*• •.£0600 000IX.SO0001%ON •• 03010190 OVOM ••• 0099004V190 i0 000330 <strong>1130</strong>03H• XiSO:• • 400 100904•53A ..49U/IIROVI••E g • ZO 1000000•• XSIO MONA• anon viva 139 •EV00000•• sgwrinowansdwnoo• "3/IMITMT°IV000aa••• •.10 •.900.


701000XC000 %POO°Al A3 A4• • • •PLACE DATA WORD:•CLEAR THE PRINT. •PLACE CHECKSUM IN BUFFER • • AREA •AND WORD COUNT •• •• • IF NEEDED •• • •••0 000x.e.eit' •'.. B2 ....0..LAST • 0. NOBUFFERf. DATA WORD .0,x• %.442. .•..1. ..1 .. ..,0. .0 .. ..YES •.:ESXPI20... XPI65B4 .. B5••••113 ..PUNCHED..• OUTPUT ON •. NO •PUNCHCIIMRD ON.RETURN .. PAPER0• • ...TAPE . .• .. • •• YESRW100CI•PLACE BUFFER ONDISK•C4•PUNCH RECORD ONPAPER TAPE• •XI0005P2B0. D3O • ..•• 04•PLACE DATA •:RETURN• RETURN•••.1.1••E3• RETURN • Flowchart DUP08. Disk Utility <strong>Program</strong>, DDUMP214


• D Al•••DUMPLET*A/• EXECUTE• ONE-TIME••INITIALIZATIONS•A2• GET LET/FLET..X• AtIa.":14 .• 08ADR.•x..81. ..*. 82..SINGLE .. YES • PRINT DCOM •.. ENTRY .. HEADER LINE.. .. • •*. ....•110MAI• •C1 .XCI • C2 *.• • IS THIS NORESTORE PAGE A SECONDARY •.• *. ENTRY .11YESDI• READ A SECTOR •OF LET/FLET• •D2•FIND PRIMAR••XxEl E2 E3 *.• • . ANY .• PRINT DCDM • • FORMAT AND • .. MORE .. YES.HEADER LINE •PRINT ONE ENTRY X*. ENTRIES TO ......••*. PRINT ..• PER LINE •''..11a. ...•..X• H2 •.....O.FlF2 '• ..F3•HEADER LINE • ..ANOTHER•.• SET UP TO •.• SEFTR ON •. YESX: PRffEi8RNUT.."...CARITI RiDGE.. '*• LET/FLET •.PRINT LET/FLET•.. .. • •• NOG/ G2 G3• FORMAT AND ••PRINT ONE LINE ••ANOTHER YES•• OF LET/FLET •• ENTRIES •XCARTRIDGE•.REQUIREDS. PRUISVPNNT• CARTRIDGE4.4.0CI •• •• H2 •.X• NO: • • • •HI •*NO SECTOR • *. YESALL PRINTER2.WRITI EMli OFF •...j2• EXIT TO DUPCO •• VIA REST •Flowchart DUP09. Disk Utility <strong>Program</strong>, DUMPLET/DUMPFLETFlowcharts 215


DELETE•AI•BA000 ••• INITIALIZE FOR •• PREVIOUS DUMY •• /F ANY •El•NU000 ••COMPUTE SIZE 0F•• ENTRY TO BE •• DELETED •Xct•MU000 •• —••INITIALIZE FOR •FOLLOWING DUNN, •• IF ANY •Dl•CN000 ••SHRINK LET/FLET•• UNTIL DDF OR •• DCI FOUND •El•• INSERT DUMYENTRY F•......... .......Floe*•SH000SHRINK• REMAINDER OF• LET/FLET••••••DU000 ••1/1000Z•• UPDATE LAST ...X.DELETE PROGRAM DUET ENTRY FROM UA •• •.4.HlDELETE • YESFROM UA• • •• NO••••j1*EXIT TO REST IN•DUPCO •• •Flowchart DUP10. Disk Utility <strong>Program</strong>, DELETE216


DEFINE0 *****1000* ******0*****ENTER FRCM OUP • y , ••:212:* CONTROL 0 * *•O•*** Bs *...a * .X*•*•B4 .0. 001 0. 028..0 .. .* +'*. .. ..5 • *. .0 8. ****85**** *****.* VOID 0. NO .0 VOID 0. NC .8. VOID 0. NO •* MODIFY 8. NO * *. ASSEMBLER .0 0*. FORTRAN .0 X*. RPG .8 X*. FIXED AREA .0 X: ERROR **. .0 4. .* *. .* *. .* • r*. .* *. .* *. .** YFS * YES 0.* YES • YES% 1▪ X %.0.E 1 .0. 0. C2 0. C3 4. C4.0 *..* *. .. *. .* 0. .* •. ****.0 N. ND .8 FORTRAN V. NC .* RPG 0. NCS. ASSEMBLER . ►. PRESENT .0.... B. PRESENT .8.... .:0 AiLEIID * :*!!..X: E2 aN. PRESENT .0 . *. . 8. 0... .0 0. .00. .0 .• 8. .0 **Si%% i**** * YES ****►* YES **** 0 NES► : "L.* *"*.*. **** * ** * . * 115 . * * * AB * . * * * BS *• L DI •*.X. •* * ..X* D * S...** ..X* Dl * ** * . *0** • * ****•*** X *8** ****XD I *. *****0.0 S. ***► *REPLACE ADM OF*.* FIXED *. YES . *CIB INTERrALL y *S. AREA .*....X. 55 *.. :.PRESENT * * win * WIZ :*. .5 **** **** AREA * * * * ********** * * * * *B, *lo E2 * **********Ft********** E2 0.* * *.* .*DETERMINE PHASE* .0. FIXED 4. YES* ID RANGE OF * *. AREA TO BE .• 0:IPAZEEMMES:FROG TO 5010 * *.DECREASED.} ** *. .* y****** * ** * ** ***** *. .0 ****************** NO******E4 ********** *****ES ********** GET LAST FLET *..X . SECTOR • ERRORX 0*****Ft* ***** **** ***** F2 * **** ***** REMOVE PHASE .RIOS FROM SLET 6* :1AVIPAIMs* RELOAD TABLE ********* ***** * *** ******* ************ *G2 0...* ***A,*Ẋ .0.*****G1* ******** ***** G2* ****** *** G3 *.*9* * * .*PROCESS REBUILT* * UPDATE MOM a .*.• PREY * 8. YES• RELOAD TABLE S * RESIDENT * 0. FIXED AREA .0*.ASSIGNED .4* * * 0. .******************* NOxF4.*'*..*LAST .. *. NO*.•ENTRY 1 .0 X8.DUNN . .****IES• M NO•05'5.0.D4 ' 0 .. .. C N 1 .*. NO .. ix e t *.*.DUMY A ABSORB .. X.. DUMY ; SOLE .0*. IT .* *. ENTRT .**. .0 .. .**.*.YES••YES*****Ht**** ******* * *• SHIFT UA TO * BUILD SECTOR • EXPAND FOR* CLOSE GAP IN 0 HEADER & RUMP * * FIXED AREA*SYST PROS AREA * SENTRY FOR FLET i * • *I.** ***** **Mt*** ****************** *****..0• G2 • **•*** UPDATE * *REPOSITIONED * UPDATE LET •* r . * * ********* ********I****•H4 *********** * 0* MODIFY FIXED • :DEC TES AREA* AREA* * ** * • 0*•a•. *..0* G2 *Om**8.40..X* G2 *• *•***:R • VPSDO,D6CriL *AD DR I DISKI =* .**"114= * 'T"; *** *x* • REST • IN OUPC0*Flowchart DUP11. Disk Utility <strong>Program</strong>, DEFINEFlowcharts 217


• • ENTER FROM •LEAVE IN DUPCO •EX020.•B5ENTRY o. YES.EX/80 013H4CODE EQUALS• •X..•WRITE OCOM ••• NO•Cl ..101301. .. C4 5ENTRY .. YES:EX180 013H4. PLACE Cli. RECCOOLTRAPPED INX. •.POSITIVE ....SUPERVISOR •.. ..••••• WRITE DOOM • BUFFER• NO••••xiDI.....EX100D3 .. xD4•• 0..10180 013H4•05.. ENTRY .. YES .....PRINT ERROR .. OUP... CODE EQUALS .. • MESSAGE WITH • .• ENTERED . X. •... YES— 4 ..NUMBER OF ENTRY WRITE MOM.. FROM••.. ..•• CODE ••Ca MODIF .... ..• NOI.. ..• NOREXOTOEl ... E2x•• o. •80180 0I3H4•....E3.. ENTRY••••E4 ....E4C. YES .---------------. CODE E EXIT TO ADRWS ALS ........X.*EXIT TO REST IN.VIA LINK IN ..DUPCO — 3 .. .•WRITE DCOM: EINTSULtfONT• • QUDUPCO • • •.. ..• SUPERVISOR ••.A0•EX050FF2• 80180 1013H4 ••WRITE UPCOR TO •DuP PHASE 13• WRITE DOOM • • •F5• FETCH MODIF •EXIT PHASE (12)• GI :.X:EX06; ••• %GISET UP DUMP •FETCH PHASES 0 •FORMAT CODE OF AND 1 OF CORE— 1 • CLUBS BUILDER •...••G5• EXIT TO MODIF• EXIT TO STROP •• IN SKELETON •• SUPERVISOR •EX180....HH4EXIT TO CORE • LOAD2 BUILDER• WRITE DCOM TO •MASTER• • • CARTRIDGE •J4INTERRUPT YESNO• •GI••••....K4• RETU RN TO ••CAL LING ROUTINE••Flowchart DUP12. Disk Utility <strong>Program</strong>, DEXIT218


•014.• Al.• •PRECI*rnA•ENTER l FROM CORE.• LOAD BUILDER •.. .et . 82.•FXA OR *. UA HOLE .1. NO • SET ERROR LARGE .. X•INDICATORS FOR •0. ENOUGH 01 STOREo. ... • .• YES••••12 •.X• •01.04.C/ C2MOVE SOCALS AND • • LOCALS TO • •CLEAR $NDUP TO ALLOW FURTHER • LORAN •• OUP FUNCTIONS •01MOVE PRIG. IN• CI8 TO PROPER •LOCATION IN FDA• OR VA •••02•EXIT TO REST ••El• MOVE PRIG. •ABOVE 4/( TO FAA• OR UA •Fl •1;411E4N)ufi2V• INTO CORE •..X• 12 •Flowchart DUP13. Disk Utility <strong>Program</strong>, PRECIFlowcharts 219


...I•A1•••.. .••••..o.*•001. *001.• A2. • A3•••••••. .B8 I 7(882 i.1m...42+PHASES • .PHASA3 E6 •.........•.....--*--.:ENTER FROM MCRA: • HEADNG. ORG. : • IMPERATIVE:ETChaltaaNT .......... wow...• piockis& ..01.• 0 A4•• •BB3A .•PHASE7 •• "ADEFaa"• •A5•PHASE7A••X : CONVERTER•PHASE°• ASSEMBLER• LOADERCI •.X• •ma,•..•.•..•PHASEI......'CONTROL RECORD• PROCESSOR• ...X• Fl ..X• FlFl.001•• C5.• ••001.• C3•• ••••BRABE14C3 %CS• PHASE12 • •PHASE8• •END STATEMENT LINKAGE • PROCESSOR • « • META •Fl •03 • o. D4DI•PHASE1A .• ..• ..... M ... - .—.. •.. I• •* ASS E BLER ... . PASS .«.......0.FETCH PHASE 10. INITIALIZER .. •o. .*Eloom .....•PHASE2•• HEADER• STATEMENT •• PROCESSOR ••• Fl*ma.•••••PHASE9•• OP CODEtlPROCESSOR•▪REQUIRED YESPHASE INCORENOE2•PHASE2A •• ••STATEMENT•X:FIL$ RMTE3 E4 .... .• f .. ONE NOFETCH PHASE 3 *. PASS MODE ••• • .. .....00. 1• YES 4..... • F5.• • • •CI •• • •F3 I F4•PHASE3• fl• FETCH PHASE 4•885 iF5•PHASEBA •.- -0 • • •• SYMBOL TABLE • FETCH PHASE 11 • *ORES STATEMENT :• PROCESSOR • PRBIEVIOR •• •. .G3..0* CI • ..X. F/ •...ow...•.••• ETCH REQUIRED •PHASE• •H3•PHASE4TERMINATOR •JI• PHASE Co . REQUIRED001 A2• EXIT TO sexIT •: SUPERVISOR"....6 001 A3:...7 001 A4..8 001 C5..BA• 001 F5..••12• 001 C3Flowchart ASM01. Assembler <strong>Program</strong>, General Flow220


A l•ENTER FROM MCRA•B145TAIVralsCuNVERS1uN• SUBROUTINES •C/%FETCH PHASE 9DI• INITIALIZE KEY• PARAMETERS,• BUFFERS•COMMUNICATIONS• AREASElINITIALIZESYMBOL TABLEBOUNDARIESFlRP000• -•• READ A CARD •x61• •FETCH PHASE 1• •••HI.• ••EXIT TO PHASE 1•• •Flowchart ASMO2. Assembler <strong>Program</strong>, Phase 0Flowcharts 221


•• ENTER FROM ••pHASE 0•. PASS 10•PHASE 12—PASS 2.XBI .. 82.....• .• •. PASS..10. 0. NO .• 0 TWO..•. NO.. .•........X•. .. PASS MODE .. .•....• CI•• ....X.• .Xo YES • YES 000.0•• Fl •• •iiCI• RDCRD 015E3 •FETCH NEXT• RECORD •RP000X• READ A CARD •CVADRDI• CONVERT THERECORD• iEl.. E2 ...* ...0 CONTROL .. YES .. .k. YES•. RECORD .•........X.. PASS 2 .•....0 . .. 0. .•.ENO•NO ••.•.0.4 .• FI •.X.•CI • •• • ••••0•04F1•0F2. .. F3.VAL/0 •.. NO • CHANGE • IN• FETCH PHASE IA • 0. CONTROL .. X. COLUMN 1 TO A• • .. RECORD .. MINUS*. .0 •• YES4.4.f.G••• ......• EXIT TO PHASE •IA •• •G2: IMAa• SPECIFIEDD I•H2P9MVE 017AI•PRINT CONTROL• RECORD •..0• CI •.00.0.Flowchart ASM03. Assembler <strong>Program</strong>, Phase 1222


• ENTER FROM •• PHASE 1 ••81.. B2s .••• .. YES • INDICATE evioo •• PASS MODE .. I. AS DSF BUFFER.. *0.* 0.••140CI .o C2•YES •INDICATE /IMF0. • PASS 1 S. AS DSF BUFFER•*ow.• •• 01 •.%. •• NOD/ 02• INDICATE DSF •R FETCH HASE 2 • ADDRESSES IN •• P•• ASCOM •• •X•▪ EXIT TO PHASE 2:E2 . .. E3o. YI/0o* OB/CB *. YES : 1:PITTPA T Tr•.PAPER TAPE OR.. X. R GHT IN BOTH ••.KEYBOARD • BU FFERS •0... .• F2 •.X.F2 .. o. F3.0 0. •MODIFY I/O RTN •• NO • TO FORCE •PASS 1••RECORDS TO COME..0 • IN AT COL 21 •• •• YES..X. F2 •G2.....• INITIALIZE.0 ENOUGH 0. YES• . WORKINGX: WanoVih8STORAGE • PRINT BUFFER•10HZXGETER 015A3PRINT ERROR• MESSAGE •D1 •is000X••••j2: SUMILISR• •Flowchart ASM04. Assembler <strong>Program</strong>, Phase 1AFlowcharts 223


.005 •.005• .005• •005•. A20 • A3*• 64.• 45.• •• •••• • •. . . .YYI i YY2 X YY5 X YY6 iA2 A3A4••••Al• •• DETERMINE THAT • ENTER FROM 0 A5•4• PERFORM ENT .PERFORM ISS/ILS ONLY ONE •PHASE IA • •ERROR CHECKING • •ERROR CHECKING •MUIR•• • •• FETCH PHASE 2A•X0***4131 ******.SET UP ADDRESS• FOR PHASE 9.RETURN TO PHASE2B2 B3*SCAN 015A5INITIALIZEPROGRAM L TYPEEVALUATEAND ENT COUNT*ISS/ILS NUMBER•.I C2 •• *.C3 X••••cl ****** .••YES . 0+SET UP PROGRAM•EXIT TO PHASE 9• ..... PASS 1 .•X • HEADERINFORMATION•X•••• • NO• F4134INDICATE EXIT TO PHASE •PRECISION 24SPECIFIED • • •.000• •..X• F4 ••005.• 04•• •02.....13/ •SCAN 015A5•• ENTER FROM • • -- •PHASE 9: •COLLECT PROGRAM•NAME•••005.• E3•• •YY304XErArtrEalG• ENTER FROM •PHASE 2A •••••XEl .. E2.. . . •B4NEX 01601DETERMINE .•OP CODE .. •: RWAVNI.. 0 ADDRESS uF ENTRY POINT.•. .--------0YY4ERRORE3E4SET UP PROGRAMHEINFORMA ADERTIONE5*FETCH OVERLAYED•PART OF PHASE 2:...ENT...005 A2:...ISS...005 A3 OFOUTXFZXF3.....LIBR..005 D4SAVE OBJECT •SET 4AglaGRAME3 • OUTPUT IN DSF •BUFFER • INFORMATION:...EPR...005 A4..SPR...005 A4 •....ILS...005 A3:...F/LE..005 A5.;(.0X•••••••• F4 •.X•••. x•PALB F L 4 01601......... •• IGNORE LABEL,*GET NEXT RECORD* •G3 0INITIALIZE • ••••G4RELOCATION MODE•AND ADDRESS 0.... •EXIT TO PHASE 9•COUNTER .••• F4 •• .EXIT TO PHASE 9*•Flowchart A.SM05. Assembler <strong>Program</strong>, Phase 2224


•RHAN4 ;FLIPPER•• •x81•• PERFORM FILES ••STATEMENT ERROR.CHECKING • •CIo. . C2. •.• •NO xi BUlgarILES •• PASS 1•. .•..YESDFOUT0 102• •ALLOCATE ROOM • SAVE OBJECT • FOR FILES • OUTPUT IN DSF •TABLE. 7 WORDS:BUFFER•••XEl•10181 016A/•••SCAN LABEL GET.• NEXT RECORD • ••••l*EXIT F TO PHASE 2•• FLIPPER • Flowchart ASM06. Assembler <strong>Program</strong>, Phase 2AFlowcharts 225


9ZZE asEtid ituracad iatcituassv • Lows)" 4.1Egamord• CO 4.0•.0..11VN WVVOOLIdEV••••• Ell ••• vo ggrin ad •Er11011113•• wow 0001 • •ON •NNV111 ".S3A 02103 40• EH ••• Z44 0001son ..... ..•114•1114410N••••• •• E3 :X.:• • • •OVV3V301014 1NI/Id •• NNV/II VO4 avan• •EN..4.4./900141• •X • • E0 ••X•1053: . ... . .. .. ..• x x ..•.31901•...3SVHd 01 1103•• 109WAS HONOd • S3A .. S 21M W ....4, 03V1003V .........L.NIV%.... ON"4. 44,v4••••44 '44 Ed1(. .. :S3A • S3A......4.. .. .. .4.I...319.4C....X:* 3S0Hd H3134..0109WAS "..4. 44•X.H3N0dZ3ON • H3N0d/1NINd..". ..000Ed .. 13"." 00EEd.:. 0419:V. .• :.ONK. ...... 0'•.0 . . E3 •• • •• ON •• ... .4."•• x.4.00I.31901 .. 03111003V '•.4.• 10991S ININd 4.5344 .0 AN/ad ..•NSIO 01 31901•• 109MA5 31I11A •If10H3N0d/ININd •011glagrH3 • VOIBSIONd • x .1g41111$1...ON '. 109NAS•• ••23••XE3 SEEEd00ZEdS3A531.".31 01O1 3Z1 Y11INIE9OEEEd••I:13153003•.•••3AVS 31001 ....108WAS ONIS• 4462143=43Svo44••


.-706 FROM •• PHASE 3 •• •81DVERFLOW NO*.AMIPAg• YESCIOVERFLOW ND..-*.--• YESDI• MOVE OBJECT •• PROGRAM TO •• PERMANENT WS ••SECTOR BOUNDARY.• •El•PRINT ASSEMBLEREND MESSAGES• •Fl• •UPDATE COMMA • •GI• •FETCH MOH• •HIUPDATE DCOMJI ••WRITE DCoM•••KI• CONVERT LAST • .•..K2• RECORD READ, •• MOVE TO • X. SUPERVISOR• SUPERVISOR CR • • •• BUFFERFlowchart ASM08. Assembler <strong>Program</strong>, Phase 4Flowcharts 227


• • ENTER FROM •• PHASE 9 •• ••009•• A3••XA8A3A3 ..... too.•SCAN 015A5• EVALUATE TIT• OPERAND•.009. •009•.A:..A2.• •XA8A4 % XABA5 XA4A5• SCAN 015A5• .SCAN 015A5• •• EVALUATE THE • • EVALUATE DUMP• OPERAND • .1-MTS. FORMAT• • CODE. .X X81 .. 82 ..83.. .. .... OP CODE •... YES.. .. YESNO.. HONG .... X•. PASS I .....PASS 1.. .. .. ..0. .0 *. ..NO• NO•Cl C2 .... .• PREVENT FURTHER: .. LISTING . .. NOPHASE 2 • .. • SPECIFIED .....• MNEMONICSit. ....• YES• ••XDI• MOD2D2GTHDG 015A4PRINT THE• HEADING •• YES• •C3• CHECK FOR•OPERAND SYMBOL• PREVIOUSLY• DEFINED03.X:0 .......CHECK THE •84 85• • • GENERATE AND•PERFORM BES/8SS• • OUTPUT CALL..ERROR CHECKING • • DUMP FOLLOWED• • BY PARAMETERS• • •C5.....DUMP OR POMPPOMPX5• •F3.• •• DUMP 0...•GENERATE AND •OUTPUT CALL EXIT•E 2 . . X:...ORG...009 A3 • •....OSS...009 A4E2...BES...009 A4 •PALBL 01601•....EQU...009 H4 • IGNORE LABEL, •*GET NEXT RECORD.....LIST..009 • •....EJCT..009 H2:...SPAC..009 F5E3•• 0606TINEgIT• I/O BUFFER•• •• F3 •.X• • • •" X* F3 •....DUMP..009 AS••••....POMP..009 A5XABF5 XF3F5• ••E2 •CUBE 016A1• •SCAN 015A5••009.• F5••••• • —• • ••EXIT TO PHASE 9• •iCAN LABEL GET.EVALUATE THE • • • NEXT RECORD OPERAND • • ••EXIT TO PHASE 9•.....•009• •009• •009*• H1•• H4.• • %Hi*•• • . • ..... . ..X.•F3 . . • • •XA8G1 X 0A8G2 X XABH4 X •••.H/ H2 H4•SCAN 015A5•....G3• EVALUATE THE • RESTORE THE • • •OPERANDPAGE: EVALUATE THE• •G5SPACE THE• • •• 46AWIP • LINES •...*..X• E2•J/ J4INDICATE THESPECIFIED LISTCONDITION• •• CHECK FOR •UNDEFINED •• SYMBOLS ..X. F3 • ..X. F3 •Flowchart ASM09. Assembler <strong>Program</strong>, Phase 5228


• ENTER FROM •• PHASE 9 ••01• ••PREVENT FURTHER•PHASE 2 MNEMONICS ••C1*.'... C2'... C3. *. .. .. *SCAN 015A5•.4. OP CODE .. YES .0 *. NO .--IS DC .. X.. PASS 1 .. X. EVALUATE .. *. ... • OPERAND •*. .. .. ..•.AO• YES•• • •..X. G1 •..X. F2 •D1 02•.. OP CODE *. YES .CHANGE OP CODEI.. IS BRANCHX* TO /7000 OR/4C00*. •..• NOx ....X▪El .. •••••E2 E3 ...OPERAND • ... YES • EVALUATE TAG .. .. YES•. • REQUIRED .• X• ••AND FORMAT X•. PASS 1 .•....•. FIELDS •. .. • •. .• .• NO• NO ••!•••....• • G1 •. • F2 .... .....% .... .71X...FT .• .. F2 F3 4.. F4,.. .. .. .. *SCAN 01545•NO •10g6/g; 1 SHORT .. YES --.. PASS 1 RUCTIONx:°'1301UPIRTs°•..• INSTX. EVALUATE... ..OPERAND. .. .. •.. .. .. ..• YES• NO...it• • .•GI *.5.•..itX ... xGI G2G4.LOLBL 01641• • OUTPUT BINARY • ..8i RODE*. COMPUT-------- -------. *INSTRUCT IN. 1 • ..*. NO • DighAiEMINT.*SCAN LABEL. GET* X •OR 2 WORD • TO . .. CONDITIONAL .. -----NEXT RECORD •OSF BU ER *. BRANCH ..INSTRUCT BN D ....• • • . . •.. .. 7(• YES•••••• F2•XH3...•HI• •••EXIT TO PHASE 9•: SPECIFIED• • • CONDITION •••4FORPlw110:66 OFINSTRUCTION • •J4 01545:SCAN:•ENEME ••..X. F2 •Flowchart ASM10. Assembler <strong>Program</strong>, Phase 6Flowcharts 229


..o..X1.11., •..••A3ENTER FROM ENTER FROM • PHASE 9 • PHASE 7A • •RI.... .....B3 1•.•PREVENT FURTHER*FETCH OVERLAYED.PHASE 2 PORTION OF• MNEMONICS • PHASE 7••••• C2 •• •0.0•4• xCI C22 C3.... C5•LOLBL 016A1•.. .. CONVERT •.. YES • MAGUAJDV OAND •X:CHARVIENISTIC• NEXT RECORD . .. .. • COMPLIMENTARY IN HEX• •.. ..• FORM • •MO• NO... PASS I .• X•SCAN LABEL, GET. ...* H ME ...YES X.FLIP1 01.1..4 ....... lc D3 .. D4 D5••••02 .. .. CONVERT •• • .. FlIAT4G ...YES • MAGNITUDE AND ••FETCH PHASE 7A.* •EXIT TO PHASE 9•:CHARMEUSTIC• • • ...SPECOTED.." X: COMPLIMENTARY IN BINARY•. .• • FORM • •• NO• .- • • :XX Xi E3EA••••E/•••• ....•• EXIT TO PHASE • •DE2Varitii TO: • OUTPUT TWOTA FIXED POINT • X• WORDS OF• • FORM * •CONSTANT IN HEX• •DFOUTF4OUTPUT TWOWORDS OFCONSTANT INBINARY• •• C2 •Flowchart ASM11. Assembler <strong>Program</strong>, Phase 7230


.1/1E11/2 *PHA S 7 FLIPPER:BI•RESET SWITCHES•AND BUFFERS TOZERO•CIANALYZE THESIGN•DI• COMPUTE THE ••BINARY MANTISSA.El•••ANALYZE SPECIAL.CHARACTERS •••XFl .• .. F2.61 61. •E/B .. YES • ANALYZE E/BH. SPECIFICATION.• . sailtAs ..16. .16•• NOGI• •COMPUTE POWERS •OF 10 MODIFIER ••xHI .6. H2 3.. 61. UPDATE BINARY • •.46 . NO • EXPONENT AND +ADJUST MANTISSA.MANTISSA .. X• NORMALIZE X•AND EXPONENT BY... ZERO .. MANTISSA POWERS OF 0 •• • •... ...•.YESJ/ J3• *TRANSFER SIGN •ZER9 IFFIAISE L•MANTISSA, AND •BUFFERS8 NARYCHAR CTER TO • • • PHASE 7 BFR ••EXIT TO PHASE 7•• FLIPPER •• •Flowchart ASM12. Assembler <strong>Program</strong>, Phase 7AFlowcharts 231


.13.00A3m•• •ENTER FROM ••PHASE 9 •002A3••SCAN DELIMITERS•4412ciE4 gUNT:BI• •+PREVENT FURTHER.• PHASE 2 •• MNEMONICS_ •83TTCHARACTER COUNTTO I/O BUFFER▪CSP'PHASE 8•.OP CODE•C3CHARACTERS....LIDF..013 Fl....CALL..013 Fl..OSA...013 Fl....LINK..013 Fl....EXIT..013 Fl...EBC...013 A3Fl•ADJUO2 ST LAC SET• UP RELOCATION..X. BITS ASAPPROPRIATE•EX•SCAN 015A5▪ SUBROUTINENAME•03 '•041.. • PASS I .141? ...... x:OWNIFER8FPNA:•• YES••••••▪ • ••..X• GI • ..X• GI• •16001* .460.00130• FR •..•XXI I... XFl 0.PASS t• YES••••• •GI •.X• •IP. NOGI• .0LBL 016A1••SCAN LABEL, GET•X..• NEXT RECORD •• ••F2•OUTFUT WORD IN• HEX TO I/O•BUFFERXG2• OUTPUT WORD 1• IN BINARY TO• D$F BUFFER• ••EXIT TO PHASE 9.• •H2'....YES .•PROCESSING •.• •.STPIMENT.• *• NOxJ2•OUTPUT WORD 2 •IN HEX TO I/O •BUFFER • K2•OUTPUT WORD 2 IN BINARY TO •DSF BUFFER:.0 • GI •.000Flowchart ASM13. Assembler <strong>Program</strong>, Phase 8232


•• ENTER FROM •• PHASE 9 •• •BI• ••RESET SWITCH •AND FLAGS. GET • A CHARACTER •• •....IF.*too• •CI +.5 C2 ....• • • • .•.•• 5.......DM503 • XOMSI5CI •.•.C2 C3**... C4......C5.. ... CHARACTER .+. YES CHECK ..•:••YES...IS APOSTROPHE X: • X.:ISZIAilliai.4:+413 X.:* D1817 .. X: MULTIPLIER.. ...... .. .........•140••..• YES • NOO * .. ...so• • .XDI ...X.:... C2 •• • X..I. . X X %......*DMS10DMSI7DI .. D4 ... OS .....DEVICE .. .. •.01 ...... INDICATOR •. NO .... VI,AR L •. . YES .. VALID .. YES.... X....FOR DEVICE.......:...I5 StAAA CT...".***.CMIACfER..e.o. .. ... oh. ..•• YESo NO •NO .......• • •CONABElCONVERT• CHARACTER TL• DEVICE CODE. •.XOMS22E4 .. ESINDI C AT EA.• it.... .•NO • INDIFRTHE'iTAINNIR!.4. • YES• 01•FlTWo. CHARACOTERS NOPACKED• YESDMS20F4• OUTPUT •DMS24F5•:EiHEJ TAL:CMt5IIEBUFFVUT: CM T• ••BLANKGINO• PASS 2 06•.:ES•OMIT•:4115y1PDIV :• BUFFER •G2• NEXT.YESCHARACTER•..IS REPEAT.. •• NO1.12• •ffiTARAVIR:• Dl •G4• 4•LOIJIL OSA..• •:SCAMARNR8ET:••*EXIT TO PHASE•• •..x. CI • • • • •Flowchart ASM14. Assembler <strong>Program</strong>, Phase 8AFlowcharts 233


Al•GEYER GTHOG SCANA3 A4 AS.SKnaitTFIETO.ENTER PHASE 9'ERAEICVMAIEW• •WALTVUEsXSTRT9B1 4. 82.0 .. •LOLBL 016AI. •YES• -11. ASTERISK IN .. .. X.SCAN LABEL. GET....•.COLUMN 21.. •• NEXT RECORD it. .. • •• NOX83 04 BSEM000 022A1.• • • • e SCAN OPERANDPRINT ERROR PRINT HONG FOR SPECIAL •• MESSAGE • • • CHARACTERS • CIS*04 ******PACKNUR' :C4CS•• RETURN TO • • • EVALUATE EACH •• CALLER • • SPACE A LINE ELEMENT :• ••PERFORM TABLELOOK UP OF OPCODE• •••WURN TO • DETERMINE• CALLER EXPRESSION• VALUE05• FETCH• CORRESPONDING•INDICATOR MORDROCRDE3 ••• CLEAR NEXT•INPUT BUFFER TO• EBCDIC BLANKS•ES• ••NOVE EXPRESSION.+VALUE TO ASCUM •• •• •Fl• BRANCH VIA ••BRANCH TABLE TO.• EX/7 TO ••REOUIRED PHASE ••▪.xF3•ppEE I .. •:.!!!BUoY...FS• RETURN TO •• CALLER • ••G1.:* WRIT *:.!!!CORE• NOG3 . Ṗe. G4• LA CARDYES •INDICATOR X FEED A CARDON•* AO •••HI.... .......• FETCH PHASE•........ 4444*XXH3 .• '.. H4 *. 5... LAST ... .. .... CARD A •.. NO .. LAST .. NOMONITOR ,.. X.. CARD END .. X.READ A RECORD0. CONTROL .. .. STMT .... ..O. .4• YES • YES• •••J1:REQUIRED PH ASEJ3J5• ••EXCHANGE INPUT •• FETCH PHASE 3 • • BER ADDRESSES • • •....3 K ..KS• • ReTURN TO'EXIT TO PHASE 3. CALLER• • • •Flowchart ASM15. Assembler <strong>Program</strong>, Phase 9234


LDLBL Al• CONVERT LABEL •• TO 30 BITS ••RIGHT JUSTIFIED. •131 . ••. B2• • YES • •..•... PASS 1 .. x:,414R8L4RIEE:• •• .. .. • .• NOB4HEXCI• ••DETERMINE LABEL•VALUE. OUTPUT •• VALUE IN HEX •PALBL0/• •.12,94EMITNIIE:• IS AVAILABLE •.•.APB1El ..E4. ... E3 F / RST .. •.GTHDG 0 1 5A4• .. NO.. STATEMENT •. YES • •▪ PASS 1 .................. X*. OR CHANNEL X .RELTSI RME •• .1. *. 12 .... .. **Al. .. .. HEADING• • it. .0• YES • F2 • • NO• .. 0400ii.7(FI .. F2F3..... F4.. *. MICRO 015E3P9MVE OITA/. ONE *. NO • -• ...Ming... YES• •• PASS MODE X GET NEXT RECORD .. OR ANY ..X • LIST THE.. .. • • *. ERRORS ..*.. ... .. ...... .0• YES ••40iXX CVADR xGI G2 G3X .... .•INTI OITA2: . S • • .• .1. YE•SAVE STATEMENT •CONVERT RECORD • *. •• PASS 1 ..IN INT I/O •.. 0.• BUFFER • •.. :..x••10..H2• RETURN TO •• CALLER •X..•XH3... H4.***.0 . .0 *004.. TWO *. YES .. LIST .. NO • *.. PASS MOOE . X*. DECK ......X. F2 •.. .. .. .... .. .. .• ..........NO • YESXJ3•INT2 020A1•*GROVINT958":• BUFFER •J4•PUNCH A CARD•• •• F2 •Flowchart ASM16. Assembler <strong>Program</strong>, Phase 9Flowcharts 235


P9MVE INT1 .0.AlAZ 0. A3•SCAN BUFFER FOR•.. .. •.0 ••. NO 4SCnRgEKITFORCHVIMIthS A •. ASTERISK IN .•• REPLACE THEm •.COLUMN 21.•41. ... •X▪.0 • PRINT YESit. ROUTINEBUSY.•• NO62• YES•iLISTING •.*. YES0. • SPECIFIED*. .0.•• NO83 •B4•0. .• F BUFFER I/0 ULL •. YES •. X • WRITE BFR TO CURRENT DISK••• NOCI x•C3• 0• ••02 PACK AND MOVE • RETURN TO • INPUT 8FR TO • * CALLER • SU VVETIVW• PRINT BFR 8FR•••••Dl• • PACK AND SAVEPRINT A LINERECORD IN INT• • • I/O OFR•D3***E1.0• RETURN TO • •• E 3• CALLER • : 'PAM"• •Flowchart ASM17. Assembler <strong>Program</strong>, Phase 9236


DTHORAlCOMPUTE OSFBLOCK MORDCOUNT%IWO ...A2 .. 43 *.0, DSF • ....• OUTPUT *. NO 0, • END *..NOBUFFER X•..pEllaillE9 IN. ..... FULL ...*. .. ..• YESX8 XSAVE WORD COUNTPloem p ImN0DATA HEADERB•DTHDR 2 018A1•• GENERATE DATA •• HEADER• •CI 62• WRITE CURRENTRESET DSF • • SEgn OF B F •BUFFER POINTERS• • FT S• DISK ••DI D2 *.• . ..INCREMENT • ... DID ... NOBUFFER OVERFLOW ... OVERFLOW .•...WORD COUNT • *. OCCUR 0.• *. .... 0.• YESE2"...El • MOVE WORDSRETURN TO • • WHICH• CALLER•:• 26FRE OBIEDIOK• START OF OFRX..F2• RETURN TO •• CALLER •• •Flowchart ASM18. Assembler <strong>Program</strong>, Phase 10Flowcharts 237


SEVOi asulTc1 6 1.11r1?oici a argtu ss v ' 6 T IAIS V 4.-Tv gam om•:381620 ,1 9M5 11193:4,9•••••• 394.1d 38TT 01939• •EM•11N1 3901038 X • I SSVd .0• • S3A 49f Er •ON •• •901335•141121Vd 3901538•▪ ....... 9HS3A801335 039143;• Ald1110N 11199•▪f90 . 4 031419W3S".39 .4ON •-• 01 SM01335,..3909.*.4.10•S3A •*. .471P7r...030361100ie:"EdON •*. .4• • 4. .4S539009 8115139.0 ONOOd ..• 183939381 • S3A 4 109915 ,..... .Ed .4 14•4901335 •1401A93ok0 H399350 •13• •90133S• MD1193h0 0939 •...... 410• ••433935 A0149330*• WOd 3111311181•• 13• •801335• 191190d 9 3395•19S3A •...o SSVdON


INT2AlFETCH DISKBUFFERADDRESSESBI•CLEAR BO WORD •INPUT BUFFER TO.EBCDIC BLANKS • xCI 0. C2.. . . NEXT. 0 INT. .. YES OR •,.. I/0 BUFFER .0 X INTERMEDIATEEMPTY ... •1/0 FROM DISK•.. ...NODI+UNPACK AND moyE• ONE STATEMENT •• TO STATEMENT •• INPUT BUFFER ••••••El• RETURN TO •• CALLER •• •Flowchart ASM20. Assembler <strong>Program</strong>, Phase 11Flowcharts 239


••••• •• A5• •OAP..•.••.• ENTER FROM •• PHASE 9 • •ASONE.NO▪ . PASS RODE• YES•• •• r4•81 .....•82 83 .. B4•0THOR 018Al•... .. P9MVE 01781.. NO • —•-- —. .. LISTING .. YES•▪ • PASS 1 .. ...X•WRITE LAST DATA. ..0.. SPECIFIED .. X•MOVE STATEMENT• HEADER. EOP • .. .. •TO PRINT BFR •• DATA HEADER • .. .. AND PRINT IT• YES • NC85•1871 017A2•• SAVE END •• STATEMENT:X ▪XC1RESET ERCAT,ADCOM. OPCNT.AND INTSN 1)ZERO. • HAVE PROGRAM ENTRY ':•I!!.xPOINT• NOC3 **. .. Ch•▪ ••bin ':•"' x: CFRE OLNURP ••.SPECIFIED.•0. .4NOCS• WRITE INT I/0 •BFR TO DISK••016.4. *****ALLOW FURTHERPHASE 2MNEMONICS02SCAN 01565FETCH HOADDRESSxF0 03 04 OSWRO0 1 0 .42.• ••WRITE LAST X PUNCH RECORD • FETCH PHASE 11• SECTOR TO .. • • • •DISKElE2• T•CLEAR FIRST 51 • EXECUTION•WORDS OF HEADER ADDRESS IN HEX• TO ZERO IN I/O BUFFER••••••E4 ....•••• %X%E3 Eh • ... 85• COMPUTE DBo.COUNT OF • LIST ... NO• PROGRAM. SAVE • .. DECK E .. .....IN ASCOM .. ..• o. 00YES• FETCH FIRST •SECTOR OF INTERI/0 •Fl F3 F4 F5• • MODIFY RDCRD ••• • •RTN TO PREVENT •P41/56 1PROGRAM • INT2 020A1•FETCH PHASE 3 •• DBL BUFFERING •MOVE FIRST • a • IN PASS 2 • • STATEMENT TO •• INPUT BUFFER ••.• •• X G5• ...•D3+INITIALIZE DSF• ••BUFFER POINTERS •EXIT TO PHASE 3. X • FETCH PHASE 1*•• •H1.4•41 .•••.•••• FETCH PHASE 10 •EXIT TO PHASE I•....... 4..000J1• 464 .....• • RESTORE• ORIGINAL LIST• CONDITIONFlowchart ASM21. Assembler <strong>Program</strong>, Phase 12240


EM0001•FETCH •APPROPRIATE •ERROR MESSAGE •x X0..81 41. ...... •• PRINT .. YES..... ROUTINE•.NOCIX• "42/ACFR...••01••RETURN TO GEIER• •Flowchart ASM22 . Assembler <strong>Program</strong>, Error Message PhaseFlowcharts 241


Al• •:HOttERIU- 2/ZE TO B BITS • ••81....* 0000• TABLE DISPL••C14.4. 0000FETCH TABLEENTRYX.. .DI ..• D2••. •NO9 PUNCH••X. LE HON;... .• • ENTRY ... • •A. .4 ẎES•**•• • OUTPUT RIGHT• HALF OF TABLEENTRYK.•CALL NG ROUTINE.▪ *********Flowchart ASM23, Assembler <strong>Program</strong>, Read Conversion Phase242


AlSAV5014yEAREAX81 82•"• INITIALIZE AU. WORD COUNT OFHE; "..0 .. • 39.. .. ••.;ESI...C/ . 0 . • 4.00C2.• a. •.. LIST .. NO x:SCANFMNITHT• DECK E... .. X .. .. •...• YESXDIX•CLEAR FIRST 17 •• COLUMNS •D2xCONVERT 1 :COLUMN•E2•INCREMENT I/OAREA POINTER •••DECREaN WORDCOUNT• •.G2▪ 0 • LAST NO▪ CHARACTER.YESH2• OR LAST •+CHARACTER WITH •• PUNCH STOP •• CHARACTER • •J2RP000•• PUNCH DATA •....K2• RETURN TO •.CALLING ROUTINE.Flowchart ASM24. Assembler <strong>Program</strong>, Punch Conversion PhaseFlowcharts 243


.....• •:ENTER FROM•A2A3.PHASES • •PHASE17. ........ -------19•KRA. • •:WIRFOUT T :• • CHARTA4•PHASE25.....•*OUTPUT I CHART ••FOR 27 ••81 .....B2 84•PHASE' •PHASE10 • •PHAS218 •PHASE26 •• •••INPUT CHART FOR.• FORMAT'OUTPUT II CHART.01 •STATEMENT CHART•• alPIR IIFOR 28 • • • FOR 12 • •.PHASE CI 2 • •PHASEC/1 •PHAS C C4E19 .PHASE27.---------------.•-- •• CLASSIFIER +DATA ALLOCATION.•RECOVERY CHART CHART FOR 02 • DECOMPOSITIONCHART FOR 21 • FOR 29 ••• CHART FOR 13••DI 02 03•PHASE3 • •PHASE/2 .PHASE20 •.1:1Y 4 TO $1017 •• CHECK ORDER, •• ASCAN I CHARTCOMPILATION •STMT. NO. CHART .• FOR 14ERRORS CHART • • rbitM8R" :• FOR 03 •• FOR 22 •El E2 E3•PHASE4 ••PHASE13•PHASE21 •••COMMON SUER. OR. ASCAN II CHART STATEMENT ••FONG. CHART FOR.• FOR 15 ALLOCATION •• 04, 05 •• CHART FOR 23FL.... ......•PHASE5 •• DIMEN./REAL. ••INTGR., ETNL.•CHART FO R X 06,07.se••F2PHASE 14DO. CONTINUE.STOP, ETC.CHART FOR 16F3•PHASE22••LIKLUAIII8hr• CHART FO 24 •.••••PHASE6REAL CONSTANTCHART FOR OB•....PHASE1C2 5SUBSCRIPTOPTIMIZE CHARTFOR 17G3•PHASE23•■■■■ ....... .■■■•• LIST SYMBOLIC▪ CHART FOR 25•• •••••.PHASE7• DEFINE FILE ••CALL LINK, EXIT.• CHART FOR 09 •X•▪ PHASE16 ••SCAN CHART FOR *18 • •H3•PHASE24CONSTANTS:LaIRVVNS•.....•PHASEB• VARIABLE AND ••STMT. FUNCTIONS.• CHART FOR 10 •Flowchart FOR01. FORTRAN Compiler, General Flow244


• •• A4 •• •XF0000 F1500 F1005A l A2 *. A4.•...LOAD SYSTEM .. .... .4. ..• INPUT. PRINT • .•SSUBRS, .:•SWITEVIDSET •:. Y.!!.X: F4 : ... SWIPMEI NT .....Y!.INITIALIZE : .. .. • • .. 01• IL504 TABLE • .. .. •••• Or.▪ • NO •.NO ••••• • CI • •MOXF0 050 F1501 F1006F1016B1 02.X.... . 83 B4 .. 05 ..GET MACHINE .• • • •• .• TOO •.SIZE AND .. E ND .. YES.. .. YES ... MANY .. YESINITIALIZE .. STANT READ •• X:SET END SWITCH • ...CONTINUATION .. X...CONTINUATION .....• PHASE •... ... ... ST MT .. .. STMTS .... ..•• .. .. ...• • •Cl• •*F1000 ok* 0• • NOF/510 xC2• READ INPUT •F1500 002A2READ INPUT •RECORD• RECORD • • •'7,10F/009•C4•STATEMENTNUMBER••e AD••••• •: DI •.XFI001▪ ••• K FI512 F1017 x F1054D1 x04 D5F/500 002A2 ..••I:72 • * ••PACK STATEMENT . REPLACEREAD INPUT • RETURN • AND PLACE ON •STATEMENT WITH• RECORD • • • •STRING ERROR• • •ElCONVERT STANTTO EBCDIC CODE•••X••••: .4..0.• F4 •• •01 •• •***le..X. DI. •xROL XEl .•. .. F2F4... .. • ... CONTROL .. YES • ANALYZE AND •SET UP TO LOAD ... RECORD X• STORE CONTROL NEXT PHASE ... ... •RECORD DATA .. .. • • • •F1004 GI • G4• rS11 141MiErg •• REQUIRED •• GET PHASE ID •FROM BIT• SWITCHES1 xHI ...H4... H5*. ... .. DUMP STRING CONTROL *. YES.. EQUAL ... YES • AREA, SYMBOL •.. RECORD •.•.... .. TO ID THIS .. X•TABLE AREA, AND.PHASE.. .. • FCOM•i ... .....• . NO fe4,0• NO. • . .CIA • •4.410 .04.0• A4 •RL010 XJ4•LOAD NEXT PHASE• •• •....K4• EXIT TO NEXT •PHASE •• •Flowchart FOR02. FORTRAN Compiler, Phase 1Flowcharts 245


STARTAlINITIALIZE •• PHASE. MOVE•STRING NEXT TO• SYMBOL TABLECOCT BI• SET UP•INITIALIZATION•CALLS 70 SEW•SOF10, AND UFIOern•CI *Of• •ivs. xZAIB sMOVE NOVELCI .i. C2 C30 . flo • • 00.4.. FORMAT •.. YESOR ERROR .. X:M°10SWOLINT x:421NMEMEO :....X: CI :•.STATEMENT.. • STRING • •.w o. • • • .000• NO▪DI'ARITHMETIC...STATEMENT..• NOYESZA6D2•S. STUNGIENINY•ZA5El.:ST17141tAlf$PE• SUBROUTINEMAKE E2COMPRESS REST• OF STATEMENT.•MOVE TO OUTPUTSTRING•.046..• F3 •• •6.0.GETIOFlSEARCH• FOR •TYPE• •GI. END NOSTATEMENT •YES•1DSV2 ..F2• POUMP 41• CALL• YESG2• •PUT POUMP CALL ON STRING ••NOCALLC F3• ••REINITIALIZE TO.SCAN STRING AGAIN • ••• •••• G3 •.X.0.0..ENDO GR... WAIT...•GA• ENO YES R:EXITR ZSRBIE•STROUTINE• ATEMENTNOZAIAIDAHO .•. ZZYZHO HI. .. H4 .. H5.0 4.. 0. NAME .. • 0. YES ..1OgYITUNENTCH-R . ..YES •• CONVERT TO 5 •.... STMENT.. .•X•CHARACTER NAME.•"..?ViP476 ...•CLOSE UP STRING... .. .. .. • •... o••10 • NO04.0• P3 •MOVIEJ3x7Y:fEMPNIE14INPUT STRING •• ••••.▪ • •..X• G3 •xFlowchart FOR03. FORTRAN Compiler, Phase 2246


STARTST1CKRLAl•"INITIALIZE PASSONE• • ....• NO•El 0..0 REAL,▪ INTEOER ,.YES..EXTERNAL OR• NOTAG3Fl...COMMON *.OR • YE SEQUIVALENC .....*.STATEMENTẸ0JACKXE2.....STATEMENT NO"... UDE;4. .0• YES?. REPLX ACE•STATEMENT WITH+ERROR. CLOSE UP• STRING•• YES• .00.•• C4 •LOOKCLUEE4ES.. .. .... STATEMENT •. YES • PUT ERROR ON.0. NUMBER IN .. X. STUNGSYMBOL .....TABLE.. •PUTIN• •• 94 ..... . a... . •• • ....• B1 i.X. • 83 .......... % ..a.. %.•. INIT R81...0.SET82 B3 I..... . . SORE • .0 .•B4• •..SUBROUTINE ... YES • POSITIVE FOR • ... .. YES •INITIlle PASS.. OR FUNCTION .. X. FUNCTION, .. STATEMENT ....... • ••.STATEMENT.• •• NEGATIVE FOR • .. NUMBER .. 0. .0 • SUBROUTINE •.. .. • •.. .• . 110• NO OM •• • . .... .• G2 • • • .. • • • C4 0.X..... • * .%TENT. . RMOV1 % ENDSr" .:.Cl ... .. C2 0. C3 C4 ... .. .. .... • REMOVE ••.. ....CS.. DEFINE .. YES .. • .. NO 'STATEMENT FROM • .. END .... YES "EXIT TO THE ROL.FILE .. X.. • STATEMENT ..... .STRING. MOVE TO. .. STATEMENT .. X. ROUTINE •...STATEMENT.. x 0. NUMBER ... .NEXT STATEMENT • .. ..• •.. ... ..•.0 .. .0• NO .YES• • • •..X• Bl • • 05 ....•• •%.... Z.. ..0.MOVS.. xD 1 .. 02....414. 05.•04..•0. •• STATEMENṪ STATEMENT .......X STATEMENT : ... STATEMENT ..........X• STATEMENT.. .41 NUMBER.. NUMBER ..:. YES REMOVE .0. .. NO • MOVE TO NEXT.. .0 ... .0 •• NOmi. .• • .X• G2 •.X.TAGS ...GI .. •• G2.■ YES• •..MTIOFAT..."...:MOILIFMMTi• NONOF4 ......• •• PUT NUMBER IN •• SYMBOL TABLE •• •• •G4 ..m.•• PUT SYMBOL •: TAshe smass •.. • .%• NO 0... •• • . ..... . ....• • B3 •• • • ..X• B1 • ..X• D5 •OM% %w.f. ......EFFMOVESHI .. HZ*.▪ .. YES MOVE TOTRANSFERx▪IF.......0• NO•.STATEMENT.••iXJl.....••••ENO.YES •STATEMENT .0....X• 84 •••• NO 00.0• • •81 •• •..X• 05 •• •Flowchart FOR04. FORTRAN Compiler, Phase 3Flowcharts 247


PHAIINITIALIZE PHASE • ••.0•0%.• B1 •.X:RI.**0.0 END 0. YES. STATEMENT .41. •.006.• NO • Al.FIXICI u 20••COMMON .. YES • INITIALIZE TO▪ • STATEMENT .. X. SCAN COMMON.. STATEMENT.. •• NO....•• DI •.X. D2 ..X• •••••„11..• XMV x PTB • .0. 002DI.DT 03 ... D4• THIS ... .. 0.••...WORD STMT •. NO .0 • LEGAL .. NO x: PUT ERRORONMILIVIZI T :O. TERMINATOR .0 X0. •NAME0. ... 0. 0. • 0. .0 • •I,. ..• YES • YES...X. B/ • • ..X. 01 •.0..... iRMOVE X ZORROE2 E3 0.• ..• REMOVE .0 NAME IN •0. YES•STATEMENT FROM • 0. SYMBOL .0• STRING 0. TABLE ..• ..1 4.a....PIO. • • •005• ...X. 01 • • F3 •.X...la'6, 0•40 iPLACEF3 000000 1.4PUT NAME IN• SYMBOL TABLEG3......0 • NAME 0. NOO. DIMENSIONED .0...0 . .6• YESPRTECONVERTCONSTANTS TOBINARYNEXJ3 •• ••PLACE CONSTANTS••IN SYMBOL TABLE.• •003K3• ••GO TO NEXT ITEM•IN STATEMENT• ••..X. 02 •Flowchart FOR05. FORTRAN Compiler, Phase 4248


•OOP•%AI*•NXTPOAlINIUNZE•••••• A4 •• •A4• ••SUBPROPH NAME•IN SYM OL TABLE•STAR1003 ... xal',52 .... .. • PUPSYM TBL..FUNCTION OA.. NCTION YES ...FU OR•. NO•..ADDR OF SUBPROG. ..5418gINE.."..N/R9VALU..-*--:•. .COMMUNRATIONS.. .. .. .. • AREA NAME/.. . .. .. R•. NO • YES ....•El •..X• E2 • • •• • .0.*OS.*TRYCIEPLAC1• .•YES•:04 NOA$ C4 ATIRRO,•IN ,04/81.. TABLE••• NO8.0.1•• D4 •.X• •i▪v."XSLOP XDI .. 4. . . •• INTEGER . .. •YES: FabiN EIN : • MOgaraEXT.. FUNCTION X. COMMUNICATION •.. .. •. .. • • • •NO4... ..... ...v....• •• El •.X E2 •.X E3 .....• • • ••••• ••••• X ern. x002 x DTB ... FLOP e5....E2 *. E3 64 ......El• • . . .. ...EXIT TO THE ROL• .. 0• LEGAL •... NO . PUT ERROR ON • ROUTINEit. NAME X* STRING .:*-44AIUM '- NO 5.:* PALMER '.. NO .... ... . • *. NAME ..... .. • . .. .. *. .4... )1•. :ES• YES me.• : •••• • •63•. .0• E/ . . • •....A ••. %.01. RMV x /ARK/ ...F2 .. F4 F5 ....• .• ..PARAM. .... NAME IN .. .. YES • REMOVE .. NAME IN .. YES.. SYMBOL TBL... •STATEMENT FROM • .. SYMBOL ........OR COM.. •• STRING • .. TABLE ..•.. .. 7,.13 • NO ...... mit . •. • • • E1*ic..X• El • . . •..... - au..•• . ..A4 •PIECE R• • 05me....•PUT NAME INSYMBOL TABLE•• • • •..X• Di •Flowchart FOR06. FORTRAN Compiler, Phase 4Flowcharts 249


PHASAl• •••••• 81 :.X.XB1.• END.YESSTATEMENT0. .0• NO••• 008•• Al•• •;MIXCI •0 0.YES •INITIALIZE TOgo. DIMENSION•X•SCAtT2ILIVA/ON...STATEMENT.*•• •• 01 ...X.• • ••••• .• NO01 .00 *MOVE TO NEXTSTATEMENT.. ▪ I* BI •SIP• D2••• XD2 0. to..:0YES. •411. .•• NO••••• •• 03D3• •• REMOVEX.STATEMENT FROM •• STRING • •..00. • •e.X . DI •PADS▪E2LEGAL •0 . NONAME0. ..... .01 X• YES 010.0• •:G3 • • •ZORRO.... PREY ... SUBNF2 0. F3 ... F40 0. • SPREAD SYMBOL... NAME IN ... YES .... SUBPROG. •. NOSYMBOL ... X•.NAME OR PREY * I. DIMENSION0. TABLE .•.. .DIMENS. .. • IN ORMA N ••. 0... ..• NO • YESPLACE X ERG2▪ •G3 *.X• •04410•▪ PUT NAME IN • PUTM la ON• SYMBOL TABLEg•1160.1.0• *• 03 •• •041.046ON1 X ...H2• coNUIVSTTO•BINARY. PUT IN• SYMBOL TABLEXH3OREPLACE STATEMENT WITH •ERROR. CLOSE UP.STRING • .4.0C...X. 131 •• •MOVE TO xNEX ••.•j2 ••..X• D2 •• •Flowchart FOR07. FORTRAN Compiler, Phase S250


•008.• AI.• •BEGIN1A• •• B4 •• •131• • ẋDAP.*. SOSBI• END o .YES 4;1;40 THE ROL•I. STATEMENTX: ROUTINE •.o.B4o* NO • •" :• NO• YES•. •.AALAPKINCC.. C2C4. . • o .. .*. STIMENT .. YE S x:sal i ilkli449 : ....Ecluri. .Frx ".. Y”. •... .. . .. 0." . ..AD • NO ••01 ••••• .• •.., • • . E3 •• 02 :.X.• •• **Of1.••• IAJAP BOB TIGER .•.DC .% 02..... 0304 ..•. • • • ..•...." sINE g Eg.T ":•:!!.x4 . 14XAMMX ". YES x:sTATBW E FRom :.... ...EQURMFLO:T.!!!.• ST NG ... .4. ... .. .. ... • • • 4.. 0.... o. X O. .11;(• . NO •.;10 .....* • NO *.O*•••• • * ••••• •• * • Fl • • E3 . E3 ...... • . • E4 *.X • •• • . 000l. * • ....A A"It..... CLESr. A LAPS XEl .. E2 •I. E3E4.1. ... .. o. • • • •.•.. YESo, YES xi puying ON •: *SET APPROPRIATE.... EXTERNAL ... *. SW3A ON ..• INDICATORS IN •...STATEMENT.. *.X • • SYMBOL TABLE •... .. .. “' • . .• NO ..NO. ...I.. :***0 . . 11....0 • . • •• Fl ..X. • F2 •.X , . ..X• Fl •• • .••••. .••• R•••••x ZAR...SISFl F2 ... F4. • •... ... .. •. .3E1. tLA ON TO •• MOVE TO NEXT :.. LEGAL .. NO... NAME m. NOSTATEMENT • .. NAME... DIMENSIONED... ...... .1V. illiART•X TERMINATOR MUST:•01• YES• ...*• YES. • ..X• 01 • .•• ••••• %ZOR..... PLACE 03 SUBS AG2 ....1 I. P * 2OLLECT •.o NAME IN •. NOPLACE NAME •Xi*... SYMBOL ..• • iBikgROTIYNo. .. • • • SYMBOL TABLE •FUN...*. .o.• YES11.A▪ • •64 • YELPH2 ••.• o 4...COMMON • .....* Mil • •.. OR v. NO • .. PREVIOUSLY .•....X• B4 :POIDERST0102XT:. OIMEIOD .. • • • ELEMENT •• • YES. 0.4.0. • •..X. 02 •E3••••• •J4YES▪ COMMA ..Y...• NO•64:p012YIRSION2xi:• ELEMENT •. • •...X. F2 •* •Flowchart FOR08. FORTRAN Compiler, Phase 5Flowcharts 25L


STARTAlINITIALIZEPHASE.•••••81 •.X• •CAP GUTBl.0.6'82ENOYES • EXIT TO ROLSTATEMENT •X. ROUTINE•NOern•• C2 .....me X.• 23 .•.%CI .•C2 0. Z C3.. .• . .., .... 0.1. YES ... 0. NO.▪ ARITHMETIC ... X•. OPERATOR ..X: M"ILTEgAi"•.STATEMENT.e X.. ... .. ... •• NO • YE••••• •....X: C2•IP • o. YESSTATEMENTRCX.0 STATEMENT•YES.•TERMINATORCLSUP03X: IF P WERNAV G•• NO•XEl.CALL YES0.. • STATEMENT .0...0(210. DECIMALNO • * 00 4.•......X. C3• •• NOYESF] ▪• READ YESSTATEMENT• NOX21 .... J812F2 .. P3 ...... oe... • . 0. NO • REPLACE• ••CONSTANT .. X•STATEMENT WITH0. .0 • ERROR MESSAGE.. ..• YES•• -• •• El.:* STATEMENTZ33G2COMMTTO• NOHI.0 • FIND YESSTATEMENT0. .0RCZ1 H2••TMOSTIK TABLENJ1....... • DATA 0.. YESSTATEMENT"*."NoRC22 J2PUIpinikINT• SYMBOL TABLEADDRESS ON• STRINGMOVE XK1MOVE TO NEXT•: 01.00• • •..X. 81 • •••••NUMMK2•rfiKNWIEWIT•04041•• C3Flowchart FOR09. FORTRAN Compiler, Phase 6252


Esz SDIETT0AA0T3L asvtid (aaudutop NITILL1103 'onma IratiomoI3••••• •• 19 ..X••• • • • :• 1N3N31515 •• AXON 01 3509 :•19TASOIX:•• 1N3d0 31vad0tdON •• 3511008 Of 1N3W3/515 **. 100 3H1 01 11X3• 53A ** 093 *.Sim.. .. ••.....IAT03319Y4 109WA501 NOI/VW804N1•3111 00tl:1,3••••• Eda)3.ON•**••193931515••.": Ad10014 ON5 •X AN11XV1NAS 833H3 • S3A 1151• Z3 ....13*113491591R88s : NO aMfAiSlad•aaEa8Z8X X Z/83.:HD1e4411-11i0014:5•za133ON••IN3W3151S.•1IX3 *.S3A 1153 *./a •ON • ON.. -. .. ......•.I.N3W31515••8470V4 9 Ex0037 **X.01/VA 8 d /433H3• S3A *.. 4005 *.S3A ... 341i10 I.:.• • .• a. .. ..ND .....E3** /3 •SAO • Ida1N3W31515 953501 3111511191•1 8X IND4141.4• X** TO •• •.16.11355933111511IN/101SHd


•%• •• A3411.1.4ORG INAlPHASEA3O ff*•• PINNAT G2NUMBER ..O de*4011121• •BI ..X• •• 83 •.X:1..00EV1CV5ACV5B818384INITIALIZE TOSCAN BODY OF • OPERATORYES STATEMENT *. NOX*. TERMINATOR 01STATEMENT• • C2 • • NO • YES. ......... • •. .C4 ..X• •ixCV11k CVO ....CCC . .. C2 C3 ..C4 X V6 C5..• ... DATA, .. •REMOVE POSSIBLE*DEFINE ••. YES Xi MOVE TO.. NO.. NO.• FILE.F. L *.•VARIABLE O..... ilINGTIVilf :LINK. FORMAT. .. NAME ... .STMT IS TAT ."...bniTASO4 ... .. .OR .FRR .STAT • •• ... • FUNC •..i.0• YES ..* 1. ....•YES•• . . • F4 •1* 01 •% .....1.. %... CV50 x01 .• .. 03 .. 04 D5. .. • • •. YES 417790 THE ROL. ..... LEGAL .. NO •CLOSE UP STRING. •REMOVE CONSTANT...•• STATEMENT STATEMENṪ .. X. ROUTINE IF NECESSARY : • OPERATOR •.. .. • • . ... ..• • • •• NOi•-,41 • YES ....• • : . I.". •• G3 •..X• J2 •%a...1*.% .....CV/3 xEl ..E3. * ADJUST SHAPE OF• .,.5 C2.. YES. NA ME IF"-..AK M T..-" ... :: REHMENIN• FUNCTION...•..10000010.0C4 • •• • • F4 ...•. ..... • . .••••• XCV2 ;CV17CV22 ...CVIOFlF3 F4 ...F5• •SET SWITCHES • •••FINE OR PUT .. LEGAL .. NO : OPMYTFITTO• FOR IF, . •NAME 1118UMBOL 1.... • FONN T AABLE :X..•REAO. OR WRITE •• . ....catiM ..."--:• 0400•.. ..%• G2 • .).(....• YES ...it ...Of.• • . .........• HI : • G3 •• G3 .... ..X. J2 •.... OMCV3 0725A CV12..Gl ... .. Of....G3 B COOT G4X...* LEGAL *.9 0 .. STATEMENT .. NO• PUT ERROR ON •COLLECT 1NIEGER•..••STATEMENT .:.YES X.. NUMBER IN .. X. STRINGCONSTANTSYMBOL ..••.TABLE.•• • ••• • • ilo• YES.... .• •• HI •.X . . .;'..• ..* X• •EV5 ... YYZO i • C2 • JOCHA .. HOH4•. ...ro e..;RITEIDIF.. • ... NOPUT SYMBOL •FIND OR PUTOR GOTO...... • TABLE ADDRESSCONSTANT IN• * STATEMENT.* * ON STRING• SYMBOL TABLE .. ..a.. .. i• •YES ....• • ..... .• .:. 83 • • • .%• • * J2 ...X. . .X• J2 •me 410.4. • • .• •• MO . •4..• A3 • CV7 XJ2MOVESTRINGMIIITIAA: •••••...X• HI •• •.40.Flowchart FOR11. FORTRAN Compiler, Phase 8254


SSZ sprIpmoid6 asviTcl gaalPlum0 NVILL1103 • znioa aretramoTa.0....• 40 :...f.. .4.4..004000.• 10 .X°:• 23 *X*.••••. • •:•.... :••00•3.40:•! • 53,t•.... •01 •.••• •• 143431015 • .. •31991 • ••xi: 143181118 :X: 80104/4831.g7iWiligign : 3 ON • 140431915 .• S3A5539040 .. NO Tal giS 100 0 0 ON '. NriNg .:.0"• ••.. ..0X•• • •5 EX .ZX*0 1501403OLIN993 E41XNfX.. . • •OPN1 . ...4. .. 6.• • • • . 6031FAIX3' . ....6: ,0,34'4 U644084:1X3431.14101 •1 S3A .0 sn IA3411 0•.. ....MrZr** If! TH515• ! 4030X....:03 M.• • • ....• Ze 0. 4 : * *. • •.* 5144 3340108 .. ...•15403 ..•: V344 X9OM• .•:41 14815400 Ind*°N*•..•MN ...•hH .INHS ISx0..0)s•• /a • ... 53A •!.. a.4.. .. r.. .. 6.; ,*j : .039404i343. :. • 0344 XVOM NI.090M 830838 ine•• .. 40 •10• Zr 6 . 6 ZHSIS 4019•••••53! ••901300 •NO110311000 •X143439030 • ONSi4104.•a315vi4x3••1401S401hi• 64104•14915403 310301 • •40 /M RBri g S IZdX X. • 0398 X9OM 41 • • ** 901304 *0100 101935905•401143/300 • X NO110311400 '..allne 3 V S3A •6.• • •43 Z3 .. 13 •ONION 6.. 31334xS3t . ... 6 6. . 6 .4. •"... 1012135805 ..•14415403 310301:ON6 . o..4. •*0..40 0. X TO30410.40.•• 19. +X** X. TO :.•.• : ......:30 •/6 .0• • • ..V390 N9OM .143431015 ...• NI 331N100 100: • 14119.1066 •3 ON *. 4100 0*. 4. .43 XZ3'. 13! .....1334 -.-f---. Z/ • .000.' •ON• • .6 6.118 3841030 pS • • 0 04 1 81 •0* *.14343/4 5 • 931410d 31901• . 3411009 *X•X108WAS 011 9 •*109 3H1 01 11X3o 553304 3 0. S3A.:. 14316 VIS .:.• • Es•..• • • 0 .49 Z9 ■ * . 1 9..x 84194 11103 1103 •.. 00410! 04..• X •: 10 :: ....• .•• ZX •• S3A' 3181 • • 3181*.-190403 **14015403 **ON *. • 040 **.• aim 3V44134.11.0• •• h0•3di;72.4.41038


STARTAlINWALIZE E.1104 :• BI •.X.oleive %END 6. YES .;;Trio THE ROL•• STATEMENT • X: ROUTINE :o. .0%C8EL.e. DECO, BAKER %CI .. 02...0.3 ****** faii.•••FORMAT 0. YES ..... NO • PUT ERROR ON• STATEMENT .. X.• STATEMENT .4. X: STRING▪ NUMBER ..0. ..• ...*•• NO • YES4.1.•. . • •. ..X• ElNOVEM % INDIC %••••01D2•mOIVATV.MI T•• :sPATIVAIRE47.0.0• •..X• 81 • • E2 •.X• ••••• ••••E2END OF• STATEMENTYESO...• •• C3 •.•••NO•* •• BI •* •.000• ••SCAN FOR VALID ••FORMAT TYPE AND.• SYNTAX •• •TSTG2.0 0. ••••SYNTAX 0. NO o. • AND TYPE ...4..X. C3 • VALID .0 • •.0 ••••0. o.• YESHAN1H2•PuT OUT FORMAT•SPECIFICATIONS• •J2•MOVE TO•" X* E2 • •Flowchart FOR13. FORTRAN Compiler, Phase 10256


• A3 ••• • •STARTAlINITIALIZEABELLA3GgaRANNION• B1 •.X.••••• • X.1, CK6 x8 1 e.83.. v.. END .. YES •;;;;9 0 THE ROL* CALCULATE 0STATEMENT .. X. ROUTINE • VALUES.. ... •v. .. ••XCI.°•:* STAMPNT •. YES.•• 01,01.•0• NO•X• ..*. 41.• FORMAT YESSTATEMENT.*. .0• NO404.• •• C2• •ZZZZC2C3• • •STORE 0 VALUES• IN STRINGX:NEWI TO • FOLLOWED BY• SPECIAL• • • OPERATOR4..X• 81 •••••X'L AD3MOVE TO NEXTELEMENT•..X• H/ •El.•YES• CONTINUE•o.STATEMENT..0. .0• NO•Fl.*.o.• HO,DEFINE YES. . . •• NOGI•INITIALIZE TO•SCAN STATEMENT•same• •• HI •.X.• XTESTIHI 4...0 ▪ STATEMENT.YES*. TERMINATOR .....0 . .0• NO••XJI.•.• *.DIMENSION NO▪ LEVEL I, 2, •OR 3YES•ABELK I .. K2. . • . *. YES • REPLACE •STATEMENT.•.FUNCTION .•x :MINIVATART:.. •• • •• NOX. .1161.0...X. C2 •*v.*• • me.• A3 •• •••••Flowchart FOR14. FORTRAN Compiler, Phase 11Flowcharts 257


STARTAl*INITIALIZE00..• 01 •.X..4. OVERFB1....02END .. YES •EXIT TO THE ROL•STATEMENTROUTINEX:• 84 ...:X54•PUT IF OPERATOR:• ON STRING •XY20Fl.F2'..•VALID...YES STATEMENT NOSTATEMENT ..... X*. FUNCTION..FUNCTION .0•NAME• GI ••X4. NO• •• C2 *...X• .XXY5ARITH •xCI.. C2C4..... .. • MODIFY • .. .... .. YES••.,.ARITHMETIC .• X.EXORENTSNIP....PARRICHESIS...Y!....STATEMENT.. • SCAN PROCESS • .. .*• •it . ...... .... X. NO ''01.10 0.... .... • •. • C2 ..x• E3 • • •• • •4.. ..40..XY23 D o . o X013I ... (12. .•• 03 •..1. .••.4. :.IF m. YES .0 *. YES .. STATEMENT '•. YES•. STATEMENT .•....X•. TERMINATOR .•...... .. ....nfIVVEIAi..*. .• *. .♦ .. ..XX.... • NO .ENO ••••• •••• . • ••••B4 • CI • • •• • E3 ••X. • • • Ey ....•.0• • • , •••• • • ,I M. . •••• xX025 LIST x .0ES .. E2 E3 E4 ... ... • • • •.... • CALL ... YES •*CHECK STATEMENT* •• PUT ERROR ON : .. • LEGAL .. NO•. STATEMENT .•.... •NUMBER LIST FOR. • STRING •. NAME.. .* • VALIDITY • .. .. • w • • ..IX...110 ••••• YES .....0 • , .000 : .4.0 • •. E4 E3 •• • ..X• G/ • ..X• GI : • ..... 0...M. .440• YES. .F4•••••IN SYlaykyTABLE••.•••XGI 2MOVE TO• PUT STATEMENT •FUNCTION:OPERATOR ON ••• STRING. COUNT •• • ARGUMENTS •XY30G4PUT CALL• "PrINC ON..X. 81 ••••10029xH2 .• *. H4 ..... . .. ... LESS .. NO .. STATEMENT ... NO• THAN 15 ...... •......TERMINATOR.. .. .. .. ... ... ..X.. ... XYES 0.40• YES me. .... • • . .0.0 • . • • • E3 • . . • 0 E3 •..X. C2 • • • ..X. GI • • •. • .0.0 • • • • • •••• • .0..Flowchart FOR15. FORTRAN Compiler, Phase 12258


STARTAl••• INITIALIZE TO •*SCAN STATEMENT STRING••• • .. B1 •.X.amXY2 ..RI •.• . ••••13▪.. • END .. YES *EXIT,ITNE S ROL•*. TATEMENT ..xXY3... ...*. ..• •... ..• NO••XCI *.▪ • READ.YESSTATEMENT• ND• •• A4 •• •4. 0. 4h•XY6A4 AS ..A.. .. •.. 10CS •.. NO• PUT ERROR ON..X•. INDICATORS x •... .• •• .. • •• YES: • • • ••..X* GI • •AXV6AB3.......*.LEFT NO.1. PARENTHESIS..• YESPUTC3•• PUT OUT I/O •• OPERATOR •• •••••xy4DIWRITE •. YESSTATEMENT •.•• ND3 *...A g AD/WRITi . .. NOSTATEMENNUMBER• YES••.:* STWERENT •* YES.•. .. .XE3.....41.VARIABLE NO*. LIST.. FOLLOWS..;ESXY24 ... XY27 XY14A XF/F2F3.. . • •.. GOTO .. .•YES .. S .CHECK LIST FOR..' STATEMENT .. I:0E6'0MR: +VALID VARIABLE.. .. VALIDITY • NAMES.. ... • •••••01.• NO• • . . .x• GI ..X. .• • X..... .. ẋ 10.15 XGI03.•*. G4• • ...• ... .MOVE TO NEXT •STATEMENT.. STATEMENT •. NO •. :.:*. OPMER *:." X•. TERMINATOR X A4 .. .. ... • •• .. .. ••••• YES: .• • • •..X. 81 • ..X. GI •••••XY16H3.•0N—DIMEN:... NO ******INTEGER A4 ••..VARIABLE • •••••• YESPUT AJ3WERTOR"XY21• REARRANGE ••STICDPS D FOR •• S AN• •• • 45 •• •..X. GI •Flowchart FOR16. FORTRAN Compiler, Phase 13Flowcharts 259


STARTAL*4.4• •• A4% •••• XA3 .. A4••. INITIALIZE .. NU•PHASE.. CONTINUE 06... ... ILEF %.n..• ••.1E**X • •• YES •.:ES Iwo.. • 85 .OM :• •. . • C5 • .....• FIT ..X. .'......ABEL ••. ..LIZPUT k81 .. 83 • 84'....• •PLAVE UNO .. END ..NO .. •. .. a. YES •IN STRINGG TEST OVER •....•. STATEMENT .•..... ID OK .. •. CONTINUE ...... CON4NUE *.STATEMENT.. • STATEMENT •..• YES • YES • NO ....•• • . ..X . B5 • • •• • • C5 ..X**Of • •% %41.40DOTALBAKERMOVECS .. .....C2 C3 ..4CS.. •. DO .. NO .* STATEMENT •. NO • CIPT S ;5 1 14T •• MOVE TO. TABLE EMPTY •. X: OUTPUT ERROR: .. HAVE: IN D FORE NEX •I.. NUMBER ..• STATEMENT •• YES• ▪ EXIT TO ROL .• ROUTINE •• •D3• • PUT ERROR ON..X• STRING••• YES• •. • • C5 •..X• A4 . •• • .0**. • • • •.•X. C5 • BEC5 •X .4......4. FULLEl ...• E2 .. E3 E4 E5 ... • ••••• .. YES .. LEGAL •. YES • PUT OUT DO •.. YESSTATEMENT .. VO 0:4Mprw-an':.. X. INIT. MOVE TO • X•. .• STATEMENT ....... .. •.STATEMENT.• •• • •NEXT STATEMENT • .. NUMBER ..... .• • • .. ...FL It.4.. BACKSPACE..STATEMENT... •• NO • NO. ••••• NO• NOXHI ..YES• END.YESFILES • ......X...STATEMENT..• NO•..0• H3 •F2.. F3 .. F4F5.... •• PAUSE .. YES • •••s. YES *OUTPUT Z SYMBOL• : GENERATE AX. • DR STOP X.. SEMI—COLON .. X. TABLE POINTER • • LABELFOLLOWS .. ... .. • •• NO ....AO. ..o. . 0.... • ••.X• J2 • ..X: J2 •Z •••• •••••SHUTSTNO xG2 GI ....G5•PUT STMT NUMBER•• REWIND ••• YESINTEGER .. YES OR GENERATED• STATEMENT ••••••X • • CONSTANT ...... • LABEL IN WO 2J1• STOPYESa. • STATEMENT.. . • OF DO TBL.. .0. .. R• NO ...F. .• •O.• K2 • • 0. • • •"H3••.... ..X.A.C5 •.... • • .SHOE CLOS;rn H3%H2 ..• INTEGER *.. ▪ CONSTANTNO........ 4.11.411.0*• YES.•••••••••. • •• j2 • • X ..X. C5 •• •J2••PUT IN SYR TEL,•• PUT SYR TBL ••ADOR ON STRINGXPUT ERROR ONSTRING••••••• NOKI• NO•• PAUSEYESSTATEMENT• ▪ •K2 •.X• •4.140XK2PUT OUT •APPROPRIATE• CALL •• NO••••• •Al • •..o...X• C5 •Flowchart FOR17. FORTRAN Compiler, Phase 14260


XSTARTAlA4•• I NIT I ALIZESUBSC .. YES• PHASE EXPRESSION•.IN TABLE•NU• BI •.X.%to. XTESTUUTBI...*B2. • END • YES . EXIT TO ROL• STATEMENT X. ROUTINESTST5134• PUT IN • •• SUBSCRIPT .. EXPRESSION ••• TABLE. •45TAG NAME• NO.....• •• 02 ....X •••• XCI ..T5T5AC2 • .. C3 .. C4 C5. .. •.• FORMAT .. STATEMENT .•.... •. YES •. .•• CALL, STMT R/W IF.. .. NOX.• DO . YESTAG NAME • :EXPRWSTON R...OR A ITH... •• STATEMENT FROM•..... .••••X•X• NO .... 'X.. ..:ES • • NO I....• • • will.. • •ja 4. . . J4 • •• •• ,4.• .••••• * 05 ..: .... • • it... .• • • • :X OPENPUREDI ..xD2 X03 ....04•• • * . •PUT SUBSC. • • DEFINE , YES. PURGE INDEX •CLEAR SUBSCRIPT. GENERATED•.A••FRUM SUBSCRIPT •FILE •S NEXPRESSION • TEMPORARY UN • • EXPRESSION •..•.• /ABLE STRING • * TABLEic• • •• NO • .... ....• • . ••• • •• • •• •• J4 • • • •• • • 1-4.......X* C2 • 05. • •... ... •X X ..... .,... XAVARTESTIEl .. E2 • E4 EN • .... • .0 ..CALLING .. YES .. DEFINE .. NO • MOVE STRING•. EXIT •• •. .. NOFILE.POINTER TO END .. REFERENCED .•...•• OF SUBSCRIPT •..STATEMENT..• NO .... XX• YES• • • YES .........• .• J4 • •. CI.• F4 :.X. • •• •••••.. •••*...0••TER XF2V4 E5*PUT ASSOCIATED *•• .. YES•• VARIABLES IN • MOVE STRINGDATA•CLEAR SUBSCRIPT.•BOUND VARIABLE • • POINTER • EXPRESSION.. ••. TABLE* TABLEX• • • •• NO 4...• • ...... * 4 . X. • •• • • G2 •.X. . . ...X .• C2 •I •••• X '.....GI .. G2•• G4 ... .• STMT *. YES .* U0 .. YES .•. STATEMENT . •. NO•. HAVE NUMBER .•.... •. OPERATOR .• •. TERMINATOR .,..... . •XX.... . ..• X• NO v... • NO ow. . YES ..• • • • • •e5 . . 05 • • G2 *• ••••••••••• •X••••XTEST2JAY XH/ .. H2 • .. 14•BOUND ..• VARIABLE *. YES 04BSCRIPTI*. NO • CLOSE UP.. TABLE....0, I. 2, ...•...:••••••STATEMENT IFEMPTY .. •• • NECESSARYX X• NO •••• • YES 4 •••• • • • ••••••. C2 • E4 • • • . • • • J4 •.X. fie.. • ....X TS! X•••• a XJI J2 J4PURGE BOUNDGET SUBSCRIPT MOVE TO NEXTVARIABLES EXPRESSIONSTATEMENT. ...•..X• C2 •• •• •• A4 •• .X• el •• •Flowchart FOR18. FORTRAN Compiler, Phase 15Flowcharts 261


EDESCANTAlA2. . • •• INITIALIZE • :INITIALIZE FOR •• PHASE ..X:SCAN STATEMENT• • • ....• •• 83 ••• •• 131 •.X.• •••• xSETUPBt.• ARITH* ASP CALL *. YESGOOD IF RI.-STMTS• NOBZPLACE X.B3 ......•....*• • • PERFORM ALL ••RESET GENERATED. • FUNCTIONS OF •• TEMPORARIES • 4 INTERPRET/AI• . • PACKAGE •• .CA *.END NU• STATEMENT• YESCENMCTNORM.NoLESS THAN 4•• YES• •EXIT TO ROE• ROUT/NE •P -TPUL x NAMEXX02 03 ..• • •• CALCULATE .. BOTH .• 40•STATEmENT NORM • ... SYMBOL .....• * ..OPERATORS..• • ..**M..• YESADv•04• ROVE STRING •.. X* POINTER•X FORCE...••.2 E3 ....• FE NECESSARY' N0 .. 40. OVEN OR CLOSE .. OPERATORS ..• STRING • .. FORCE ... . a.• YESCRYNm ;F2•X....• •83 . •. CORRECT .••••STATEMENT NORM•MOVE0...........•PLACE POLISH ••TABLE ON STRING.•NEXTSH2•• MOVE TO NEXT • STATEMENT •J2• LAST. SORT A *. YESSTATEMENT •.•. NO• • ...X• BI •. •j3 .....REINITIALIIE •X. FUR SCAN ••..X• Ea • •Flowchart. FOR19. FORTRAN Compiler, Phase 16262


ENEAlINITIALIZE PHASE • ••START81• MOVE STRING•NEXT TO SYMBOL• TABLE.INITIALIZE•41444• •CI ••(• • X01021• XCI•INITIALIZE TO• SCAN NEXTSTATEMENT•D1 .... .... STMT ' .. YESFUNCTION ' •.. SORT :0... ..• NO•E1 ... .... ARITH ... ' CALL OR IFSTMT .... ...• NO•YES..Fl0000 a. YES▪ • STATEMENT •.•0105102•• MOVE DUMMY •X* VARIABLE TO •• OUTPUT STRING • 01061 xE2•mOVE TO OUTPUT •. STRING •X• PROCESSING ..... SUBSCRIPT •• OPERATORS •P2011F2X: PRIMiiM2gT°• NO•P105301G2READ. YES • PROCESS READ• WRITE. FIND X• WRITE. FIND• STMT • STATEMENT41.....NOHI'RETURN'YES• STATEMENTNOP2031H24 4«PROCESS RETURN •X. STATEMENT•0/04121•MOVE STATEMENT •• UNALTERED TO •• OUTPUT STRINGKC...... .. •••••2▪.. LAST ... YES • EXIT TO ROL •• STMT END .. X. ROUTINES• SORT ...1. ....NO..0• CIFlowchart FOR20. FORTRAN Compiler, Phase 17Flowcharts 263


ENTAlINITIALIZEPHASESTARTEl• MOVE STRING•NEXT TO SYMBOL• TABLE• INITIALIZE•••••••• ........••Cl ...X.• •PIO21 XCl• INITIALIZE TOSCAN NEXT• STATEMENTf •fli1441P1051ADI .. D2 03.. ...• •MOvE TO OUTPUT .. YES . MOVE DUMMY •• STRING TILL ••. STATEMENT ,•X. VARIABLE TO • NEXT •...FUNCTION ... OUTPUT STRING :'.. ***** X . NON-PROCESSED .. .. • • • OPERATOR •.. . Ṅ.XD4 .....END OFSTATEMENT YESX•. TERMINATORFlE2 •READ..YES I/O NO• • • hITITE, OR O. X.. UNITFIND .. INTEGER• NO • YES•.XXFl./.ARITH. YES • •.▪ CALL, OR IF .•....X• E3 ••STATEMENT.• • •. NOP1041 AG1• ••+MOVE STATEMENTUNALTERED 10 •• OUTPUT STRING..... p.,••L3X. OUTPUT ERROR•• NO•..X. CI • •*mi.*▪• CI •• • •P5011E4 .. 15.. .. •CALL ... YES •MOVE 2NO CALLS •• OPERATOR ...' X•W/ARG TO OUTPUT....... • STRING ••...•F4.■ *.•IF YES•. OPERATOR .•• NU•P20134•• MOVE OPERATORAND NAMES TOOUTPUT STRING•,•••HIff..WAS.NO • • LAST STMT ......X. C1 •STMT • •. YES%• •• 03 •P3011 F5• ••MOVE OPER.NAMES•X• TO OUTPUT •...STRING • •.%EXIT TO ROL• ROUTINE •Flowchart FOR21. FORTRAN Compiler, Phase 18264


6T as'otici ‘aaudurop NV/U.1103 • ZZ110.1 azEllomoLdliens •• 10N 01 11X3• •• •• 3011 0310111d/40.• ANN indino• •IH• •• S311T13I1VA •• 1090101 1S11• ONV 3<strong>1130</strong>01113 ••19•• 0311113I1VA• 1 0 0 0 1011• am, 01000110• 14OZO1WSINWIS30031VAI003.SS300NdXT3•• • •N11111311 • •003(1100 31v00110•?O•. • •10X 0101W01W10• /1 1003 0011 •Nani g N 301/00 ININd•101SAS NO Z3ININd.3211VIIINI •X 1 0910dI• ONION3H •101U ONV• 39Vd 30OI5311 •• • ha.03110 10111d 0101. • 30014d 1199011111 ••ST1313V3VH0 XlVd* mn HOJ alms •• ININd SAS ()v01.E9 ZO /BX 11/dM30ININdawls • wins •• BdM3N N3103• • 101Nd 113103 •EV....z•••••OSVHd37111/11/01IV930


ENTAlINITIALIZEPHASE ANDPRINTERMOVST XB1• DELETE EQUIV ••STMTS. IF ERROR.• NOTED INSERT •ERROR ID•A/011CI• LIST •UNREFERENCED• STATEMENTS •A102/ XDIMUST UNDEFINED •VARIABLES• •ern• •E/ ..X• *.... XE1011E2011R1011El .. E2 o. E3,.•..•..•••••... .. .. • REARRANGE •.. END OF .. YES .. COMM ... NO..X... STRING .• X0. AREA ERRORX: DATA, 11,40, 814.. -. •.WD IND ON.• • DEFINE FILE, •.. .. .. .STMT EUNCT AT LOW STR AOR. NO YES•E1024.•. E2020 I▪FE .. F2PRINT MESSAGE ....•F1.••..•..•..•• ERROR .. YES • 'OUTPUT HAS • • EXIT TO ROL •IDBEEN X. ROUTINE.. .. • SUPPRESSED' •• • . ***** ...MOM'. NOO4OOOM: G3 : • •• G3 ....MOiE1051 M •. XGR .. 02'.. G3..... ******... ... .. LIST ERROR ANDDATA ... YES .. ANY .. YES •STMT REFERENCE.••• STMT .. X•. COMMON .. DELETE FROM•..VARIABLE .. • STRING •.. .. .. ..• NO• NO ••E1031 Hi• ••MOVE STATEMENT •• UNALTERED TO• OUTPUT STRING• •MO• El •Flowchart FOR23. FORTRAN Compiler, Phase 20266


ENTAl• MOVE STRINGNEXT TO SYRT8L.INITIATE• FOR STMT SCAN*O... •••• 82••.4.4•A.m1021M1051 81......ST MTF ORMAT.. NO • "NT...STATEMENT ORR. STATEMENT•.CALL I/0*.FUNCTION.... -.. NO• YES • YESXM1071C• MOVE I STMT TO • C2 . •INSERT3 REL ADDR• OUTPUT STRING • • INSERT ••... INSERTING : •ALLOCATION INTO• :STg7T1STALLOCATION • OUTPUT STRING AREA• • • • •x52 D3 ..OUTPUT CALL .. .SUBIN W/0 ARG • .. IS .. NOAND STMT BODY • .. SUBPROGRAM ....•TRKSW IS 0 IN .. ..SURE • .. ..•YES• •• 82 •.111111...xF3• OUTPUT CALL •• SUBIN W. ARG •TRAKSR TS I IN •SUER • •M1081XM10 2F3OUTPM4VING.thLOCgRIMMEXIT XG3• STORE PROGRAMLENGTH IN• COMMUNICATION• AREA....H3• exIT TO ROL•ROUTINE •Flowchart FOR24 • FORTRAN Compiler, Phase 21Flowcharts 267


ENT•▪ INITIALIZE• POINTERS FOR •+SCAN OF STRING •• •.44.4.: 01 ..x.O444. ;4MI000•.. NEXT▪ STMT HAVE YES• STMTNUMBER• NOCI ..NO * IS NEXT ..STATEMENT•.FUNCTION• YES:XALOCLISTINGNOREQUESTED• YESEl•PRINT STATEMENTNAME AND• ALLOCATION •XFl•INSERT ALLOC IN•SYM TEM.,. DELETE•LABEL ALLOC OF• 1TMt• •GIMOVE STMTUNALTERED TO •OUTPUT STRING •. .HI ... LAST NO• SIMI WAS ......ENDX• YES 6444• 014444..j1• EXIT TO ROL •• ROUTINE •Flowchart FOR25. FORTRAN Compiler, Phase 22268


••ENT 12012Al A2 ..• ••INITIALIZE THE . . END OF •.. YESPHASE ..X•.. STRING .*• •• NO81• LIST FEATURES •SUPPORTED•L2041B2 B3 ..• • .•SCAN STATEMENT • .. LISTING .... NO+STRING FOR ONE • .. REQUESTER .....• WORD CALLS • .... ..• YESK1051CI• •NOEXTENDED•..PRECISION..• YESC3.TAG CALLEDR.• NAMES IN • •LIST SUER NAMESSUBROUT/NE OUT • WHICH HAVE BEEN• TABLE •• TAGGED •••D/ALTER SUBR NAMETABLE TO •REFLECT •EXTENDED •PRECISION •D2• ••MOVE POINTER TO....•NEXT STATEMENTS.....Q• EXIT TO ROL •• ROUTINE• •XEl• TAG NAMES IN ••SUBROUTINE OUT•+TABLE INDICATED.•10 IOCS WORD IN .• COMM AREA •11035▪FlLISTING*NOREQUESTED•.;ES01LIST SUBPROGR•NAMES THAT ARE •IN SYMBOL• TABLE •L2011 H1• INITIALIZE *STRING POINTER • •Flowchart FOR26. FORTRAN Compiler, Phase 23Flowcharts 269


ENTAlINITIAL/2EPHASE ANDPRINTERL4C1181•••;SYR TOL .. NO• LISTING•..REQUESTED..•*YES•NOCl• YESDI•MODIFY FOR EXT• PREC. INSERT•PARAMETERS FOR• CONY.L4021El• LIST REAL •CONSTANTS• •iiFl• COMPUTE •LOCATIONS AS• ENCOUNTERED. ••SyM TIE PASS SW.• IS 0GI• "21APILM •HI• COMPETE •• LUCATIONS AS •• ENCOUNTERED. ••SYM T8L PASS SW.IS I::xCOREDJ1X• LIST COREREQUIREMENTSJ2 *.• MAXIMUM •. NOX•. COME SIZE• YES••.j3• EXIT TO ROL •X. ROUTINE • •1.4;K2••SET ERROR CODE •••Flowchart FOR27. FORTRAN Compiler, Phase 24270


ENTAlINITIALIZEPHASE• B/ •.X.• • .•••• AB1.* • FILE DEFINE• STMTYES•.• NO510/1 83X•Fifir MUMS:FIO21•CIC2C3• • •• DATAYES • OUTPUT DATA • • OUTPUT DEFINE •STMT X. STATEMENT• FILE TABLE •NO•▪ 01 •.X• •DI•• SCAN SYMBOL•TABLE FORCONSTANTSF101503•• MOVE TO NEXT • STATEMENT •0102201032El .. E2.. •01031• OUTPUT IN •X* ABSOLUTE MODE •.:' CONSTANT ...YES... FOUND .. X • ... .. • •Fl• NO•REAL YES• • • CONSTANT •FOUND ..0/033 xF2. • PLACE ••ALLOCATION INTO.• SYMBOL TABLE..X• 131 •• •• NO• • COUTAINTS.AYES• 01••••H2• EXIT TO ROL •• ROUTINE •• •Flowchart FOR28. FORTRAN Compiler, Phase 25Flowcharts 271


Ala..* .....INIITAWIZE111.4. EXTENDED *. *. NOPRECISION......REQUESTED..• YESCD.*** ......•ALTER SUER NAME.* TABLE TO •* REFLECT •• EXTENDED •• PRECISION •011•••• .......OUTPUT STRING•°MOWN •• OBJECT •PROGRAM.........•• EXIT TO FEEL• ROUTINE ••Flowchart FOR29. FORTRAN Compiler, Phase 26272


RC000A2:REVAIHLPHISE•B2• LOAD SYSTEM •PRINT• SUBROUTINE •C2'....2 RECOVeRY *. 0• TYPE CODE .•*. EQUALS 0.• 1RC600 RC500 x RC100DI 02 D3 .•04... •SET NO DUP. NO • .• ERROR *. • SET NODUP. • XEQ SWITCHES. •... IN *. NO • UPDATE SYSTEM•N0XE0 SWITCHES • •SET TO PRINT WS ... COMPILATION X CARTRIDGE DCOMEXCEEDED MSG *. ... • • • *. ... •• YES•ElPRINT MON CTL• RECORD •ENCOUNTEREDMNT• SG •iRC300...E3 0E4• E5• • .* *. • •.. M.S. ON .. NO •UPDATE DCOM ON •:NOW1 MAES •• '...cM4V8GE.. ----- x: NON—SYSTEM =•-.. ..--YESX RC200 0FlF4PRINT• COMPILATION • SET TO PRINT DISCONTINUED• END OF •• MSG ••COMPILATION MSG•• •X XGIG4• •• •:IMESUE470°:PRINT MSG• I/P BUFFER • • ••••CALL EXIT TO •• CALL 114 EX/T TO SUPERVISOR • • SUPERVISOR •• •••Flowchart FOR30. FORTRAN Compiler, Phase 27Flowcharts 273


CAREDDISKZ•• READ SLET •B1• •FETCH IOAR HOB• FOR PRINCIPAL• DEVICE RTNS•CI•FETCH .10• RECORD. SET UPFROM — TO TABLE••0/D1SKZA• READ DCOM •▪ El •.X.• •XElE2.•*. E3 tomDISKZ D1. NO or CART •• YES •••CAIVIDGE X.. ON SELECTED X READ ID FROM...PROCESSED.. DRIVE • SELECTED.•YES • NO••••FD1SKZlWRITE UPDATED• DOOM •***** 404...0460• • •• GI •.MGI• PRINT FROM — TO •TABLE• •• ▪ EXIT TO SEXIT •• IN SKELETON •• SUPERVISOR •F3'....• CART . 0..1D I5 DCOM•N)e.ID FROM THI!DRIVE .0a. .0▪ •YESG3 0.• LAST.•FROM—TO NO... NOIN TABLE...PROCESSED..0. .0• YES4 •* GI • G4 .. G5.. I.. *PROCESS CHANGE.•CART ID .. YES • UPDATE SCUM. X* . .IS TABLE ID .. X• ADD ONE TO •.. .. • TABLE POINTER 0 . .....•.0• NO..... .• • oH4 •.X. 0• •.i.••••H4H5• INCR XRi FOR DISKZ• NEXT DC M ID • •X• AMIREAVE WRITE CART. 10• ON SELECTED •• • CART.:.X • El ••....•..X• H4 •Flowchart U11.01, <strong>System</strong> Library, ID274


FSLEN•Al:FSICUEStitiCeDD•SYSTEM ROUTINE•111•FETCH PHASE 10•JWINICRECl•FETCH SLET FROMSYSTEM ODOM• •Di• SEARCH FOR• PHASE KO. .El m.. E2•.. .• PHASE ... NO • PLAGUE140 I IN.. ID N ODOM 0:.. .... .. •• YESFl• FETCH HOE:•SECTOR ADDRESSilm••01•CALIFMRLUY/NE•...••H1•• ENTRY FSYSU •02000•••••••FETCH REQUESTED• *ROUTINE FROM •DISKK1• • ...••K2• VagNIIPPY• X•RETURN TO USER ••POINT IN A-REG ••Flowchart UTL02. <strong>System</strong> Library, FSLEN/FSYSUFlowcharts 275


9/.2sivalav ‘11..re1qvi tunsAS • £011,11•1103••IH•••••!'1 8?"18a3047 :M•NO inilt1101ONV 1V,010413X/44111t3nlaONX11 . • 33001103 .'"'• 4, 030 o. 53A8 AO 339NON 301)35 13314337Ni •111 •X3911101S •VIM awn'V •10800


DISCAl•CALIO •• ••READ ID RECORD • •1.•••• B2 •• •••••B1 82.....ALPR 007A1 .. ..-• .• ANY *. NOPRINT .10 ... DISK ERRORS .....RECORD *. ...• .. ..• •.:ESEBCBI •CONVERT .10RECORD TO BINARY •C2REWRITE AND.REREAD PATTERN •THAT FAILED 50• TIMES •X . .DI D2 .... . .•READ MOM FROM • .. ANY .. NOMASTER .. DISK ERROR .....• CARTRIDGE • .. .... ..• YESxEl E2SET FLAG TO •• PREVENT • FLUFEVINEER•INITIALIZATION• OF LOGICAL 0 • •XF/ F2*.INITIALIZE ND ALL *.• DEFECTIVE ..... *. CYLINDERS .••CYLINDER TABLES WRITTEN• YESGI G2 • *.SEEK ROM • S• CARTRIDGESE TO • .:**CYthDER •. YESBE .....• INITIALIZED • ..DEPECYIVE.*••• NOx•x ...m. 2WRITEI AND READ .. MORE . .. •CALRRH3 007A1•BACK 3 PATTERNS• .. THAN 3 ••. YES X ..-TO ALL *. DEFECTIVE.. X. PRINT M1SSAGE •• CARTRIDGES • ...CYLINDERS.. CARTE DGE . .. • CART E •.. ..• NO004i• •• e2 •J2•DISKZ•• INITIALIZE •• W1'8601,42• ExIT•Flowchart UTL04. <strong>System</strong> Library, DISCFlowcharts 277


RDREC Al•FSLEN 002A1••• FETCH AND •• CONVERT . 10 •• RE ORDNI•••;• VALID •• NO••ID RECORD• YES•ClPACK EBCDIC •STOWT taR.S•PRINT TABLE•DI •CONVERT ID NUMBERS TO •BINARY AND •STORE IN USERS.TABLE •ElNUMBERS.. NO••••E2•PRINT ERRORMESSAGE •F/•• ▪ STORE C ENT FOR • • •GI• PLACE ENTRY ••POINT OF SYSTEM.*ROUTINES IN THE•• A-REG •• •HI•PRINT .10 •RECORD •••• RETURN TO ••CALLING ROUTINE.• •Flowchart UTLOS. <strong>System</strong> Library, RDREC278


IDENTAl•CALPR 007A1•.---------------•• ••PRINT HEADINGS • •ElDISKZ• -*• READ OCOM •CI*FETCH CARTRIDGE.*.10 AND PHYSICAL• DRIVE NUMBER •• FROM DCOM •• •XDl•CALPR 007A1•• -*• PRINT ID AND •••PHYSICAL DRIVE• NUMBER •. .El.* END OF • NO11. TABLE• YES• .*F1 •• EXITTO •• SUPERVISOR •Flowchart UTL06. <strong>System</strong> Library, IDENTFlowcharts 279


CALPRAl: STORE LIME• COUNT•Bl: STORE PRINT• LINE ADDRESSCI• PRINT *•*. YES*. ROUTINE IN.4.. MEMORY• HOD I •D2 •D3•FSLEN002A14—•LINE*. YES •PRINT HEADING, •FETCH SLET • ..X.. COUNT ZERO ..... SPACE ONE PHASE IQ LINE •• HEADERS •NOEl E2•FSYSU •*GET WORD COUNT• FETCH SYSTEM • SETpgwFrOR•SUBROUTINE FOR •• PRINTER • •F2PRINT••406MH2••DECREMENT LINECOUNT BY ONE•.LINE *. NO*. COUNT ZERO .*...• YES**.••1(3EXIT•Flowchart UTL07. <strong>System</strong> Library, CALPR280


swIrommaAc103 tAreaqn tuaiskS • 801.1..11 lavtlomoid11%3•IA. ..0••• IVLOO bd/V313: SNQI1V 1NV ]0°• 01-NONA •• 311P13A;TO• S3A •• .- ..• SNOLIVN19•103 .0.319011000.4.• igaigiip'' X300101003 '..• ulmRfiR4 VOi: ON '. 03Id133dS .'01-deld - ININd • :upon Sudo/ °Yid. '. 110 o'93.•..•• 3 ^. 0330010 •103ANO3••000330 01. N5131 •••10000 3390N.19• ••smilnoa 331030•• W31SAS 0313A •.10000 33009.TVAdO3


DICIRAl•ROREC 005AI• FETCH SYSTEM e•DEVICE ROUTINES.• •El+RDREC DOSAI•••FETCH, CONVERT •• ID RECORD •• •CR .. C2. *.•. SPECIFIED .. NO • PRINT ERROR +.. CARTRIDGE .• x . MESSAGE ....AVAILABLE..*. ..YESD2 +.1(• •0•0.DELETE: CIB,MOVE• USER • • •. AREA WORMING EXIT ••STORAGE DOWN • • ••••E/•FETCH DCOM FROMSYSTEM• CARTRIDGE •........ElALTER SECTORADDRESSES OFCIO, UERAREA,MORSKINGSTORAGE IN DCOM• WRITE DCON ON •CARTRIDGE •HI• ALTER FILE ••PROTECT ADDRESS+• IN RESIDENT •:spUTIN8 FART :JI• WRITE DCOM ON •SPECIFIED• CARTRIDGE •• PRINT NEW UA •• AND MS •• ADDRESSES OF •• SPECIFIED •• CARTRIDGE •• • • •..X• D2 •Flowchart UTL09. <strong>System</strong> Library, DLCIB282


EEZ sUrqamoil.LaIsa (Areaqm uia4sA5 aavtiomou• •• 1113 ••53A•' • 031313d •'S3N11ON -• Ot 11V14 •3311 V 1N13.111,100 3d1V313S3131N3 •131S t 40 •3N1/ V 1VWVO4 •TONOD •1N1341 ONV 30Vd•M3N 01 d1MS • •1V100 3d1V3.13•• naavanil 13S• 19• 3303 01NT •.-------------__.•319,1 1310 MU.•TV13/S0


fxSZalum 'Amnia ulalsAS • I van Ireliamou• 09• ••• 3510 0084 •• i1i14 1 31sA732 •IN06000••553I009 191 135••1r09000X• 831409 •01 0030 0938• 01093 0000 0038.S O0E900••. 1V • •. 110.)(• •.1V • ens. •.010.o' 's3dA) .•3513 830930• C0•OZSOWSS38009 •./411 d303 18413 5S3A ". 0E11•ZH •.....10 • OLOOWON0)1•ON..•0411i 1 131 •ix 53A NI 1032*. .•ZO •". 1009000ONS 30033 :X4i••••' 1031'ON 13091 *.51A ". 300003 o'Ed••X••001 1'd01 •• -vans •NOIMAND1 •• /131.3dId05000• 13 440•••• 10003 •.031Vd 123033330• •5353A4 00333 •043....ON•• 3010ON 13031 '•53A 30/0043...'". E3 ...21500• X'. E3 • ••••••1 80303 •03.•..DN •ON-----S3A•9d ....13• 51000330930• 011VA •ON •• sa •4NnopH310d 301,5ONV 1399103£0..h;*530•• 20▪ -mtris •321030 0/1•1Vd130111/1 03134•10•ON •53t..° 08033040 1031003 o''' •• X: 1 00383 •0 •30 '...8011000.' 53A'11 VTR" .:*43.... • 's•• 53". E3oo.• swamlaNI •Wfingin403Z300100• •-yens A30 10134•lVd13013d H313•13ON •• •• .3142 9 3 1430 •53a" 4..' 080338•X: 9 30333 4:8• SU•*. 108)00349...• o•ES• ND-0015 S 1018d •09• •xsla.0039 1315 W3134.1900009ON •R... INnooS g A 3319d o''11"59•• Nit° 0"E w005DMS V ONI •/104 iINSON: V• N 1593A 39 05 •ZO• 32113:1Alaii3:• oolV00000•.5t, • •.110.••09 • •


.012•• Al.• •M0530•%Al•• SffitITA78• NUMBER • •.A4•. P L ACE PATCH•187/9FP4SK. .81 0. 82• • ••B;. NO •OBTAIN DISK AND. O. ABSOLUTE •• ERROR 9 •PATCH .•x:MEstErEilRiH:• ••• YESB4• WRITE DISK• SKITAR2RCIOBTAIN DISK ANDCORE ADDRESSFROM HEADERJ.DI D4 ..OBTAIN NUMBER .0 ...AND FORMAT OF • .. HEX ... YESPATCH DATA 0. PATCH .0....RECORDS 0. ..0. ..• NO ••••M0568 ..El ..•011•.A5•. Fl • •Xi ••••E4........ .0 0. ....E5HEX 0. NO .. BINARY • ...NO •PATCH .0 0. PATCH . X• ERROR /•... .0• .M06/0C4ALL •• P A TCH L0. YESLpp gg•*• •*YES • YES• NO•F40.••E2• • • SEMpARY• ERROR 3• • ••GICONVERT STORE RECORDAND[[BINARY BUFFERM0590 XG4RY• MEHBIATV••• RECORD •M0599HIALHKAR 815KSECTORS TO BEPATCHEDH4 ...0 . 44..•.H5.• .1. YESERROR ..... .0•-0CHECKSUM • X: ERROR 2• •. .j2.4. PATCH • •. YES • •• TOO BIG X. ERROR A •• •• NOK1X• READ DISK •• sEiNg0• V• A4 •Flowchart UTL12. <strong>System</strong> Library, MODIFFlowcharts 285


•013.• Al.ERODE 7(Al0..••A2 ....A3114.16...o...UPDATE ..MDFI • • • AND .. MDF2 IN 1.---------0 ERROR I •ENTER FROM DUP •OCOM • • • •• •SR020RY000El 83••WRITE DN IDIF ON • • FETCH °CCM. •PRINCIPAL PRINT 1DEV. SUER •XCIC3 It.••FETCHDlig FROM •.• •MFD2•NO•EQUAL 0 X.C4WAITYES.e.03...WA4...., 0. ....1•D4EXIT TO OUP .• =MDFI • .1. NO• • o. EQUAL 0 .. 0. ERROR 80. .• •*. .•• YES•013• .• E3••••RY/00 • E3 • .00••E4• /Y AbIED .:." X: ERROR 8.1. CARD .• •YESxF3UPDATE DCDH,MOD LEVEL ANDVERSION NUMBERS83 ..... 4p."hfit2x78RIFH3 .....• PRINT •TERMINATION• MESSAGE •••••j3: SKELETON• SUPERVISOR •Flowchart UTL13. <strong>System</strong> Library, MODIF286


*****. YES *010.Er000 .FC015 * 02*******A1*********** AZ *. * .. .. ..*SECTOR SECDNO * .. INPUT *.SEC T OR OF SLET X..X*. DEVICE BUSY .*Xa. *.*.. ..************* *. .**;** * NO. *A2 . * * •****X•****A4***********•** *CONVT ** * ** A4 5....X* CONVERT INPUT ** EEC SIZE TO ***** * BINARY ******* ********** ******R1********** B2 t. B4 *.* * .* *. ****B1********* ..:SFp lil LU v FOR: .* MONITOR A. YESEXIT TO *NO .* INPUTi tg N. CONTROL .*, x* SUPERVISOR *. RFC SIZE .*SUBRNT ENTRIES * N. RECORD .* * * *. VALID .** 5. .. ****it* *****R** *. .•***************** *. .t* N3 • YESC1*********:KK:DETWOERRIN5Cool...a.**ol*****.**.,*# ******D2*L ▪ ********.. -•XR. 5 C2 *• :tliAW***** **** :*. ****c3*********YES ** t. CARD X: SUPERVISOR*CONVERT OUTPUT **.*. ON .*.* * REC SIZE TO *************** BNARY *#***************** NO••••.04 S.** FETCH INPUT *SUBROUTINE READ ONE CARDNO .5 OUTPUT '5.* *. RE5 A ffiE .•.*......******* **************. .* *****•YESES.****•*****E1********** E2 ..* .N SET INTERRUPT * .* DATA *. YES*VECTORS C ILSOI* N. CARD .** ,i0RD FOR IRT * *. .* 4N. .* *****....************* *010** NJ * 04** *XFEN.* X*****ES* ********** DETERMINE •* COMPUTE INPUT ** PRECISION OF ** REAL NUMBERS . * REC Si2M, PFR t■FCO50 X******F1*********** ******E2***.*******. FETCH INPUT * * *DATA CONVER PRINT CARO. SUPRTN * * ** **4444444*** ***************•EN* DETERMINE * *SFARC* PRECISION OF • * ** FORTRAN * *LET/FLET SEARCH** INTEGERS * *FOR OUTPUT FILE** * * ******* ********** 5X*****GI.********: G7•*. ...* *..* FILE .. ND: DUR7 1 .1AN N : N. DESCRIPTION .**. CARD .* x* ****** S.*. .* *0/1 *011** YES * A1** *•*FCI40 ***G4 ********** 5.**********COMPUTE OUTPUT *:IMMPOIRDNUT:* RFC COUNT PER •• DISK * SECTOR• *******H1****************H2*•*********C ONVT ** FETCH PRINTSUBRTN * CONVER T /EC **COUNT TO BINARY***********•** *****************x***** H444444 ***** *****HK***** ****** * •* DETERMINE OBJ * *CALC FILE SIZES*WARNING MSG .OPTION 1 CHECK ** * * **********•*•*****•*444*,..Y* 47 *isx*****J1********** J2 *. .*****J1** ***** **** J4 *.* . .* S.* SET INTERRUPT * .*•* RECORD * *. NO * PRINT * .5 CARD S.• VECTOR . S. COUNT VALID .5 X DIAGNOSTIC MSG S. INPUT .**. .. * F01 * *. .** * N. .4 ..******************************* YES: 5***. * * ..X . A7 * k •4 * ******** ••* A4 . Cc* * x**** ****1********* K *SEARC ** EkIT TO 5 5 *SUPERVISOR . *LET/FLET SEARCH** * *FOR INPUT FILE **************•* * *•Flowchart DCN 10. CHART A. <strong>System</strong> Library D,s1( Data File Conversion <strong>Program</strong> (DFCNV)Flowcharts 286.1


;•Ff 1 10Al *. A2 *. A3 *. .*****A4***********.* .. .. .. .. *..* CSP Al *. No .* FIELD .. NO .* END - .. NO * PRINT WARNING *A. TRANSLATION .* X..SPECIFICATION.. X*. OF - FILE .8 X MSG F06*. TABLE .* *. CARO .4 *. CARD .* * X...* a. .* 4. .4 * * * * *A. .■ ************* *010** YES * YFS * YES * A7.* *% *013*% FC0I6 * Al******31********** 42 B. * *.■ *. ** LOAD Al TABLE .* A. NO*WITH DATA FROM *.t EMBEDDED .4.4.—. CARD * * .. .**ix***4,*.i.***t."*4k*4.. * ;,s !:0i:•••I Atfr?in******c2*********.*Cl *.PRINTDIAGNOSTIC MSG * *.* *•.. REPEAT B. YES8. OPTION .*•*.SPECIFIED..t************* NO****D3 ...X.*****FC2Il43 *. *.8:8COLCPAYNTFP4: *YES*. . 71 .**• *. .** ** NO•C4 S. ****.C5**********.8 *. *CONVT.4 REPEAT *. NDa .X*. COUNTER SET .8 ***** ...X* FETCH REPEAT B.• .* * COUNTER **410** AA** *• YESi**.i.**404M.****X'•FC212 *****05*********** DECEMENT R*REP EAT COUNTER *:******** ** ****E3 *..* *.E5 *... ...* CARD *. YES*• TERMINATOR •* *:. COUNT 0 8:*':!?.*.DETECTED •* x *. .****• .. ..*010* .• ..t X* NO * A7* * NO ft**** * • t D3*. . *XEl S. ******F4*********** *****Fs**********.8 * ..* SPECIFIC *. B . NO * PRINT* SFT CARD COL *.. TERMIN .*. X DIAGNOSTIC MSG *POINTEP TO PREY*...DETECTED .* * F04 * * SPECIE **. .************** ****************** YES. xX; ****FC213 •*. x G3 *G3 F. *****G4********** * .**** .4 .. *4,4,4,* .8 CARO 8. YES POINT TO NEXT * CARD COL *G3:. ...".*.DICEMD .4 .5.... *..**.....* . *X ****************** NO ******010* : ****• * A2. . * *• * * ..X. D3 ** * *X ****.***A****47***********CONVT* FETCH BYPASS *...•o 'man COUNT * ****03 * ******Flowchart DCN 11. CHART B. <strong>System</strong> Library Disk Data File Conversion <strong>Program</strong> (DFCNV)286. 2


.0/2** A3** *)7(*****A3***********CONVT * a* FETCH RPG EEC *COL *•*****B3***********DETERMINE FIELD*TYPE• **********************T3 ****** *****• FETCH FIELD .*TYPE CONVERSION** SUPRTN ADM*****************••*****D2***********CONVT*--------- ------ *• FETCH INPUT *X* PRECISION ** ----- ****** *****03 .*.YES ...;PiCiVica-a.aS. NEEDED ...aP. .*• NO•*****E2 ***** ***********E4** ********** .*FjNPU;.*.* FETStl AnPUT *XS::NMIHRE.*:*" X*DIAGNTYI 45G**a S. VALID .. a 04 *.** ********************* ********* YES: •*****T3 ********* **CONVT ** FETCH OUTPUT ** PRECISION ****** ******* *****•*****R1**********le• FETCH OUTPUT *SCALE**************• •X******H I *********** H2 *. Ill *. ******H4 ***********.*s.*OUTPUT 5.• PR/NT * YES .* *. YES .*PR/ION .EC E.. NODI5ONOSTIC MSG xX*DIAONglir MSG s *TO7 * * *IMSIAIR N .* **** *.USng ../.5* F045. .•********************* ***at*a.***1;*a. 7(2*********:J3 s..* *.:SET PAR OPTION* YES .* PACK 5.:X S. OPTION ..1(S.SPECIFIED.**. 0,.** NO•°Flowchart DCN 12. CHART C. <strong>System</strong> Library Disk Data File Conversion <strong>Program</strong> (DFCNV)Flowcharts 286. 3


FCO26 FCNOO.A/ 5 A. •.•A. RP.W20 * :.YES x:WCSVB TNHC-V. /*CARD .. • ** NO•%FC 00 ...FC310 .#,......siK2 *. R1 A..A TOTAL S..SyEs* PRINT * .* RPG .. NO....Ks*. ***** **DIAGNOSTIC MSG...*ORFP.***..6..PRECISION RPG.*YES EXIT To * 106 A ..REC SIZE _.#X*. TERMINAL .6X*...X. SUPERVISOR .4114E ..'*TES XA. *..t.6 ERRORS .• •*************S. .■.6*.A.ITS• NO *...:10• : ••... •XXXFC360X...KA** ******* A C4 A...* A..: SUPERVISOR:* DIAGNOSTIC MSG. .-*DIAGNOSTIC MSS * A. HAT A : .T?..* F09 A • F05 A.........•.****A. ..*.... *******.... A..............X▪A YES .5*.* * *II *....011. * DI *r* * . 04 ..X A •**A.A • ****•******D1***********COO SK..***0 **X********** READ A SECTOR *OF INPUT DATA*ROVE EXTRA DATA**WORDS TO START * OF INPUT SFR •************* ********** • • • :* Ft *.X* ****FC320.CUNVERT A FIELD*C INSERT INTO ** OUTPUT REC*READmINAUATA.* A "••%FC380 SF I A.NO .. •5 END - ..• A...A. OF - RECORD .6 *CONVERT DATA TO.r.. •. DISK DATA *A.•.•FORMAT ; A. .5. A*55* * YES. Fl .: ******•.. ....x• El •* *XFC330....ELKS()GI.6. G2 ... A.Gl A.A. ..•.* OUTPUT S. No 5..5.* FILE S. NOS. SFR FILLED .5.. INPUT A. NOS. Us... 05-,aMtil?.".5-*5. ...coNORsui..• 6...:. s. . s. ..S. ... YES . 'IFS. VES •4t••.•. *• . . • • . El •.:..X. DI • * . *• ....*4.. .Xa.... *•****H2•*** *• wPITE OUTPUT • * WRITE OUTPUT *OFR UN 555 REX UN DISK* * *•••••* ! ******* A.SPRINT OPERATION*COMPLETE MSG•***** ........•X..••K2•**** EXIT TO A SUPERVISOR A•Flowchart DCN 13. CHART D. <strong>System</strong> Library Disk Data File Conve:sion <strong>Program</strong> (DFCNV)286.4


ICNVT****A1*** ***** *ENTER I - * CONVERSION *JCNVT****A2*********ENTER J - * CONVERSION *DC NVT****A3*********ENTER 0 - * CONVERSION *ECNVT****A***** *****ENTER E - CONVERSION ** •*************** *************** *************** ***************. *****B3 5.0:* *****%*****En********** *****B2********** *****B3********** ***** B4** ***** **** * .** FETCH OUTPUT ** C OMPUTE INPU *:FILMNFIFtREA :rittEJSIS,WN07.1T: ON TDPA gi ::WEiticZKNO*:*FIELD - INTEGER* INPUT FIELD * RACKED OGTSI ** ** ** ****************** **** *********** ** ***************** *****************•*****ci***********FILL WORD AREA ** WITH /F0 *.********** ***** **.C O *. C3 * **.*****C4*** ******5.* *.NO .** RETRIEVE *Perti kat S :*NO .. INTEGER t....*. NEGATIVE .*YES*. .*YES4.** ***** 4,* ***** 4.0DI *..* *.A..n*: * NEGATIVE*.* YES*****02 ***** *****COMPLEMENT ****** *****X*****03********** *****D4 ***********COAMERMT SOF * : DOTSRPM° **LOW ORDER WORD * AREA********* ********xx*****F1********** *****E2********** *****E3* *a TAKE TWO'S * * DETERMINE . *FILL WORK AREA * * FETCH SAVE *COMPLEMENT • . WITH /FD *FINAL D -: In86111018A :*ALREAD Y 4 UNPCKED** * *...Am.** *****************. ****X *. .0* R3 * **********E1***************F3***********CONVERT INTEGER* * CONVERT LOW * * FIELD MARK ** TO 5 DEC OCT'S * :ORDERDITFCIMAL: ARM ADDING :..*************** *****************. .. .. :r L 00*****************•7 x x x*****G1********** ***** G2*********. *****63***********INSRT 016AI* ACCOUNT FOR *INSRT 01641*. . RANGE WITH * ** INSERT FIELD * * ADJUSTMENT **INTO RPG RECORD* VALUE :1001PGFIRORD:* * *:** *************: *****************.****H1********** RETURN TO ** MAINLINE ******************x*****H2 ********** x****H3** ******** CONVERT HIGH * *RETURN TO .*ORDER 1 DECIMAL* * MAINLINE *DO TS* *****************+ *+**** *** ***** ******J2***********INSRT 01641**-:IMENGIFE8R4*****************••****K2********** RETURN TO ** MAINLINE* ********* *****•Flowchart DCN 14. CHART E. <strong>System</strong> Library Disk Data File Conversion <strong>Program</strong> (DFCNV)Flowcharts 286. 5


FCNVT RCNVT R0060* ***** ***.A, ********* *FREW •• ENTER R - •------------- *:• CONVERSION : : CONVERSION : GENERATE4.0•• 4, necimm. EXP 6 /*• * DEC °GT **;•*• •: A3 :•***•****5111** ********•:Dx60.11t346,1 **FLDIELD •5- 5*I LOAD PAC WITH** REAL NUMBER *• *** *B3 .•. •.... *.NO .* •...... EXPONENT .•*.TOO LARGE..5. .55. .•• YES*****CI 800:2***C2 * : *** ****** NORM•* FETCH FIELD *.- ***FILL WORK AREA **LENGTH IN WORDS** NORMALIZE •* WITH /F9 *NUMBER IN FAC • * •*..*************** *********** ******** •**•*•••*** ** 01 4.0■ D3 •.X*•* * * ***********xD1* ********* ****•02******•*••* •COMPUTE TABLE **FILL WORK AREA *• PRINT WARNING •* DISPLACEMENT •WITH /FO MSG Flo IF*FOR FIRST CHAR *•* * DESIRED •%*****E1**** ****** E2 •.* FETCH FIRST * YES .*.• ..5.*CHAP FROM TABLE* . MANTISSA .•AL. ZERO .•* r .. .****km ********** % .. .*•*•* * NU•* .11 •*• * :•* 5 .X.•....**F1***** ***** F. S... COMPUTE TABLE • NO .•.5•.B.* DISPLACEMENT • ...*. MANTISSA .5. FUR SEC CHAR • . *.NEGATIVE .•* * B. ..% *. .5•*•• B YES*• A3+* * .*5*•1.••%*D1 ***** G2*••***••••4 * **FETCH SEC CHAR * * TAKE TWO'S • FROM TABLE * • COMPLEMENT OF •MANTISSA . • • •***•**..•.HI*• COMPUTE TABLE ** DISPLACEMENT ** FOP 3R0 CHAR •*****•******JI*FETCH 3RD CHAR •* FROM TABLE•********** *******. • •..X* A3 •• *55**0070***•. •..X• J3 ** *5** *F3 A..• *..• •S. YES..X*. EXPONENT .4....• (*-I0 .*•S. .•B.••10 ••*►** 03*•••••• *•*G•MPY. •▪* GENERATE *• DECIMAL DIGIT *. •XH3 .5. •..5 B.NO .* DIGIT B...*..•*•*•••* J1 ..X• *••*•80050./NSR4 016041•*DECREMENT FIELD* * RETURN TO *..X*LENGTH IN WORDS* • INSERT FIELD * X* MAINLINE *• • *INTO RPG RECORD*• • • •***ea ******* **a**.....KI•INSRT OTAAI*• IN SUI RECORD : •.494*** **********••.K2 •S. r. ••*•*Kr ******* •.* FIELD S. YES •* RESTORE •* •• RETURN TOx; MAINLINEx: COMPRESSION S•Flowchart DCN :15. CHART F. <strong>System</strong> Library Disk Data File Conversion <strong>Program</strong> (DFCNV)286. 6


INSRT .4. .4.Al *. 44 *. *****As **************Al* ***** ****44* .* *. .4. *. ** * • * .4 OUTPUT P. YES .4. •. YES * SET NEGATIVE 0* ENTER INSRT A3 *....X*. PRECISION .4 x*. NEGATIVE .* X*VONE FOR FIELD *** * *. ZERO .44. FIELD .4 * •** ***** ************ 4. .4 *. .4 • *•. * *. **• NO *ENOX15070 .*. !NORDX*****BI****►*****B1 P.* .*RETRIEVE OUTPUT*:INITIALIZE ALL ►*PRECISION E SET*PREC SWITCH ::1?*::;:PVIEEDI4C.::** SW E N ALLOW .• 0R TE N TRY* *S. * **. .4 .4* L. * YES* •CI 4. * ..* A, YES4. ALPHABETIC .*.*. FIELD .**. .**. .*• NO.....01SET PACK:*****C2***** *4*4*:WORDS/TN-SET:A: tWAg8* SWITCH******* **********X*****02**********•SET DUMMY ZONE X*INTO WORK REA **FOR PACK OPATION* •************ **********E2 *.X..* * .**** XINO31 .* .*•**•Fl**********.4E2 *.*• RETRIEVE 2 • YES .* PACK 5.*.* DIGITS IN *x *. OPTION ON .*. PACKED FORMAT * 4.. .4 . ** • * .******•**********•. .•* NO*****C3*! ********* WORD/ENTRY G :* REMAINING • CHAR/WORDS * SWITCHES *: ***•. * *..X* EP * ****•X****C4** **** *RETURN TO ** CALLER******** ************E2**********VUIWA4* ***•*************►•X.IN050 .*.*****G1 ********4, * 4.4 02 4. **. PLACE CHAR IN * YES. 4. *LF ET H A ND OF *X. ..LEEWND .4.**O TP T Winn *****•*•*********•.417•.4.**H1***** ****** *SET SWITCH FOR *RLSHTHANO CHAR *NEXT***** ******** ****•IN°H***H2 * *** ******• PLACE CHAR IN ** RIGHTHAND OF ** UTPT WORD.xIN051 XX▪***** JI********** *****j2************ DECREMENT * *SET SWITCH FOR •• OUTPUT *.... ...: LEFTHANU CHAR ** PRECISION • .NEXT* ************ ***** ** x***** • A3 * *****•••Flowchart DCN 16. CHART G. <strong>System</strong> Library Disk Data File Conversion <strong>Program</strong> (DFCNV)Flowcharts 286.7


$E A T2CPLOG*****A1********** ***A4 ****** ***** * • * ***•AB **********SAVE PEGS, XR2 * DUMMY ROUTINE * * RETURN TO ** IS BASE Arm *CAN BE REPLACED* X*CALLING ROUTINE*. IS f * * BY USER * * ** * * ****************** ****** * ***** *****.*. IOLOGRI 5. *****R2* ********* *****R* ****** ****.* *. * * **** * ****85 ***** * ***.5 *. YES *TEST FOR BUSY 1* * • * DUMMY ROUTINE *5. FUNCTION 0 .* X* SET U . EXIT S....0* K4 *CAN BE REPLACED*X:CALtitTIMININE: **. /TEST) .•. * * BY USER • * **. .► . * **** * ** **** ***** ******* ****** ************ NO•NTFSTCI . C2. S. *****C3 ******** **.* *. .* S. * *.5 *. YES .* ERROR *. YES *GIVE USER ERROR**. FUNCTION R .5 X*. STATISTICS .* X*STATS TEL ADOR A, .**. .***. .* * *5. *. .* **NO* NO.•X• ***** *X 4 K4 ******03 ***** ***** *****D2 * **CPLOG 00IA4* * * **** *•*** SET BIT * * *LOG CALL * SWITCHES FOR *....X* K4 * PARAMETER * * OPTIONS * * *• * * • ********************* ********•***•*•*•El S..* *..* *. YESS. FUNCTIONS .**. I-3 .**. .****.Z0XẊTEST.*. AUTOAFl*. ***F2************ F3**.*.. •.*YES .* ROUTINE *. *. * * 3 .5 *. *. 1...*. BUSY .* RESET SCA X * FUNCTIONS .*X * DIEU D E A1970 *s. .* * * •.5, 2, 3, .5 * ANSWER •*. .* •S. .*A. .* *********** ****** •. .* * ******** ********* NO * 2X***•* *X ALARM X * K4 ******D1*** ***** ** *****C2* •* SET FUNCTION * * *****1 COON) RCV IS * * CLEAR * TURN ALARM ON *-, ENO IS O. * • INDICATORS * OR OFFXMIT TS . * ** • • ****************** ************ ***** **** ****************HT****** ******* PUTEI" ************ *••****i M**** ***** * * •* K4 s ** K* • **••* ****....*****n*** ****** * J3 S. gJ4 S.* .s 5. .* *.s SAVE PARA SET * * START SCA * .* RECEIVE *. TES* START PROGRAM •* RCV OR %MIT * X. OPERATION . X*. INITIAL .* X*:* iGRIM *:*YES X TIMER* INDICS 5. .* S. T MER .• • *S. .• *. .*:***************: *. .5 5. .*• NO • NO•.x •• * ****K4*•••***** *5**• * * •*SET INDICATORS *X* EXIT *X....* K4 • * * ** * ****Flowchart SCAM. <strong>System</strong> Library, SCAT2 Call Processing• Flowcharts 287


INT2 ..*A1***** *******• SENSE & RESET *DSW*****************AI *. 92 *. B3 5..4 .• .*84 *. 85.***.5. .* *. .4 *. .. ...• AUTO *. No .4 4. YES .• READ *. NO.* TIME *. NON. ANSWER .* E.. READY .4... ..... X*. RESPONSE .• X*.. RESPONSE..4 .*" o•. OUT• * r .. *. • 5. . * • . .4 4,•• • •.4 ..• a. .4 5. .4 4. .4*. .5 S. .* X* YES ***10 4.*.:E'S * YES * YES •••**J4** *ANSI x NTROY X READI X X***C1************ *****cx********** ***** c3 ***** ***** ***** C4 ***** *****x*****C5*********** • * * *IOLOG*00104*SFT INDIC * ERROR /9000. * * COUNT WRITE . *nISABLE AUTO * RESET C CONI • CHECK *• ANSWER .: CHECK ERR IF **CLOSE OR RETRY OSW BIT 2 ON •4, LOG TIME OUT * * A * *.**** ********** *. ***************** ****** ****** o**** .****** ****** ****•****X****;,. • *, H4 * . H4 • x .4.* . . . ***03**Arrrx ***** D4 *.**** ..** .* ..* READ CHAR • OMIT .* FUNCTION *. ENDINTO SFR...*. CODE ..* • . *. IFCODE)*. •*.* *****x% *004** RCV03** 004* 04 .• *• A1* *5* ;**004** 01******E1 ********* •*1OLOG 001114**• LOG CHARACTER * ****** *************•**XF3 *.F5.*....4 .* *.END .• FUNCTION *. RCVXMIT .* FUNCTION 8. END* CODE .* * CODE4. IFCODE) .5 x x *. IFCODEI .****** ***** H. .4..00 7* 5.5. .4.5 *003* .005* r. ..X• G2* • OMIT * AI* * 84* . RCV• • * 4) • *• * :087:; ; * *. •X *003* *005*FN umDISCO % • 43* * 81•11 .. .**G2** ***** ***** r • * *.. . **. YES A) RESET SCA *OLE EOT .*... ***** X RESET 1NoR5.5 * **. .********** ****** *4. * . rj*002*0 * H4**•** **** * *• . 8, . 9 *. -X* H4 * H4 *.... ** . * * .X *****••• XINTO .5.HI 0. *****H2********** H4 9. *****H5* *********.. r. • .* a. r .* .. IFS * EDT TO USER .* ROUTINE 5. NO * EXIT TO USER 5. EOT .* X* AREA CLEAR 5. BUSY .* X* RTN IF EXIT .. .• * RTEISY 5. .**.* OPTION SPEC .* * S. .5*** ********* *****a *•. .** NO * YES****•*55*. * . *002*.•..X* N4 * J4 4.0 .* * * * X;x**** ****J1 *.*i**.. 5. ..* *. YES * FNC TO USER ** J4 **. ENO .5 X* AREA CLEAR EXIT ▪ * •.* * RIBS* •* ****0. • *4, Nn;▪•• * ••NINO X▪ H4 •*****ol* ********* ** * ***. ****ERROR /0200 • r •• RESET & CONT 4. ...X* H4 *CLOSE OR RETRY * * *Flowchart SCA02. <strong>System</strong> Library, SCAT2 Interrupt Processing.288


******003** Ai*; XRCVRDVITRO.* 41.***. ***A2 ***** * ******9. ....44.* * S.***** As***********. .9 A3 * .5 .**.5 CORRECT S. YES 5. YES * 49 . * ENO 5. 4 "SX START SYNC .... S. ACK .4 X*. ES X* CLEAR ATBSY •9. .4 * . 4. .54. .9 5. .5 5. .4 ::***************** ;* NO ***** * NO 8. 0410**** *002** * H4* .02 *... * 5 .* * *X ****X.ROEOT XX x31 4,*****B2**********.* -*43.4.9. *. ***B4***** *******9. * • •.* .* 9. YES *. YES * * * ALTERNATE *. EDT .4 X: UlPa Te6U0 K iS :.... *. NAK .5 START SYNC X* ACKNOWL *.* * 0, RTBSY OFF * . 9. .• * ► 54. .4 9. .4 * ****** * * ********* * X ***was ******* **4. 40 ...NO* go,* *007** • * H4** C2 4... 4 *X* .**002*.! . DISCO*** ;X**1*4.*****c2***************E4*** *******.4 .4 CI * **•*9.4. YES * USER COUNT = *ERR 0400 COUNT *4. OLE ROT .9 X* FFFF RESET 8.9 .9 C3j.4.9.*:*.n. ROT * ERR ACCEPT *. .** INORS9. .* *CLOSE OR RETRY •*. ** 9. .* * 4** ****** **** ***** 5. .4 X ******** ********** NO* NO *55*:• B2 * * X: *A.**X 4:X *002** G7* .5. * 34*O1 4. 4 * D3 *.5 *.* 9. * .**.. START 9. NO9'4. YES*. [OAR RCV01 .5 OLE EOT .4.....44. 9. .5 .4S. .5.5X* YES * NO *5*5* * C2 *• 4. r*55*RENTS' x*****E1 *****E2 ********** El.***. E4 *.* * * .5 5. .9 9. * *STORE DATA IN *ERR /2000 COUN .* *. y ES .5 4. YES1/0 AREA INCR * ERROR ACCEPT T* 5. ENO .* X*. MASTER .9 x:Ettsi 4ORW T:1NDRS *CLOSE OR RESET 5. .5 5. .5 8* * * * 5. .8 9. .5 * •***************** ***************** 5. .*. * NO 5'440.:X .R***** .*002* 5002*CKENn * H4* % % * H4******Fl* **Mt** . * *****F3 ********** *****F4 ********** * ** * *INVAL SEQ COUNT* * ERR /4000 * 5* BCC WHEN *ERR ERR 0200 R* 5:SLINfisRlitx . ►CA NECESSARY5 AC CE PT CLO1SE O* RETRY CLOSE * ■ * * * ******************•X*****5007* *002*H4* . .i H4*GI 4.* t * *.* *..* ENO *. NO*. CHAR RCM .9*. .4 x9. .* *****9. .4 *002** YES * 34** 4*•HI S. *****H2 **********.* 5. .5 4. YES * ERR /1000 **. OVERFLOW . X*ACCEPT CLOSE OR*4. . * RETRY x*. .■ 5 * *****5. .* *********s **4**** *0025* NO * H4t* *X.5.JI S. *****J2***** *****.5 RC C 4. .*RCV0 - BCC 5. YES * ALT ACES USER **. ACCUMULATED .5 X:COUNR9sylgipTH.:*. .5 x4. .5 * **002** NO* H4** 5X***sou* *********ERROR 0000 * COUNT ERR **ACCEPT CLOSE OR*RETRY* * 44****►*************** *002*. H4** *Flowchart SCA03. <strong>System</strong> Library, SCAT2 Interrupt Processing• Flowcharts 289


XMTNTAt .. *.4:00* ******** .1,1. ***** A3********** ***A4************.t *. *l LOG 00184... xMIT - *. yES * NRITN4NO. * * **• ENO ON .* x0* X START REAC.* * * LOG CHARACTER * * x• .. * . ****** *********** ****** *002*. NO * J4** * *.*.81 '. 82 r. ***83 ********* ***.* *... OMIT A. NO .* TRANS *. NO * WRITE BCC, *N. MESSAGE •* X*. ENO CHAR .* x PAD START*. .. S. NEEDED .5 5 READ . xA. ... *. .* ******002*YES* YES * J4*- * ►*•x**.cL**** * ***c2**** ****** 5** WRITE CATA * * WRITE DIE *FROM AREA ETB, PAD OR* * * DIE ETX, PAD *********************** ***************** *004** D3** * *•*****014*** ******* UPDATE *. POINTERS, ** COUNTS, ** INDICATORS *...**************ENOWT .*.D3 *. ***D45 5... SUB - *. NO * WRITE CLE **. FUNCTION .. X* EDT. PAD*. EDT .5 *.. .******** **********s'.: * ESXX*****F1************►E3************ t**** E4**********.10LOG 00184* *IDLOG 00184** --- *• WRITE EDT. * * -* *LOG CHARACTER X * t, LOG CHARACTER * * *5*** * ********** ***** *** *002* *** ****** ******** ****************■* J4** r.****** F3.**********IOLOG 00184**002** 02** 5*▪ LOG CHARACTER***** i*004* **►►************** G1*XXSTOATRnTSTG1 S. ***Gs *********** * G3 *. ***G4 ******** ****.5 5. .* ...* KNIT - *. YES x ► WRITMAX, * .:. Rca 5...*YES **. NAK ON .*X START REAC*. .5 * * *.RESPONSE .**. .5******* ** ******* 5'5. .*. 4 *****************s. * . NO * NO .*002*•;X* J4****H1************ *****N2**** ***** * *****H3 4**** * **IDLOG 00184* * ** WRITE CURRENT * -* OLE ACK. PAO CLEAR RTBSY * * I LOG CHARACTER * * * ****************** ** ****** ******** ******* MM.**X******002** H4****J2* ********* .* 5 ** INITIALIZE *INDICATORS* START READ ******* ****** *MtX5*****0025* J4►*Flowchart SCA04. <strong>System</strong> Library, SCAT2 Interrupt Processing•290


'*005** Rt** *RCVT XMTTM .*.*****.t********** B4 0..8 0,* COUNT SLAVE * TIME OUT *0:0 niNS S:*YES*. .5*. .8NOXGI * * S. *****G2 ***************C4**** ******.8 TIME .. *, *.. OUT EXIT, *. YES * ERR /0020 * COUNT MASTER 0. INIT, NO . X*ACCEPT CLOSE OR* TIME OUT ENO .* RETRY .* * **** ***** ** ***** * * * * * * ***** * * * * * * ** NO***PS ********** *•* START PROS *X TIMER INSERT****** * * *** *****. * ..X* E2 * *********+O1** ****#***02' .0. **►03************ *****04*5*********' .* *. * * ERROR 12000 * .* USE Of *. YES * START PROGRAM * * ERROR 0200 **ACCEPT CLOSE OR* 0. PROGRAM .* x* TIMER *ACCEPT CLOSE OR*RETRY *. TIMER .** RETRY * * s. .* * ***********►***** 5, . * * * * * * * * * * * * * * *NO. 0*** : .*).( E2 5.0 : %* * x * * r * **002* .*** *002** 54* * N4*O * x . ** ***,E2********* *EXIT * *►*****005** Gl**•ENOTMCI R. ***** G2***********..* ROT L *. NOCLOSE .* X* CLEAR RTBSV .* .* * ******************* YES***** ******002. *002** 02* * 04** *Flowchart SCAO5. <strong>System</strong> Library, SCAT2 Interrupt Processing• Flowcharts 291


SCAT3 s****A1************SAVE RUGS. XP2 *s IS RASE. ACCR •IS T ******************PI *. ******2**********A. * *S . YES *TEST FOR RUST 8*FUNCTION 0 .* X* SET UP EXIT :...:. (TEST/ .*A. .* * t .*s*************** X* NO xi**• • •• * KT *LATEST• • ••• • •;CI S. *****C7***********. * *.. A. YES * GIVE USER ERR •*. FUNCTION 8 .* X* STAT TOL ADOR .* S. .* **** ******** * ******. .Z DX*****01***********CPLOG 00/A4*A •* PARAMETER ******************: ***** •..** K3 • *****XCLOSEEl S. E2 S. ***E3**** ***** 4**.* A. S..* *. YES .* *. 3 * END SCA **. FUNCTIONS 2.* Y*• FUNCTIONS .0 Xt OPERATION*. — 8 .* *. .* *5.. ..*** *110 .*.2. •. •x .XTEST ALARM ;Fl .** *. ••*E2************ *****F3********k*.* *. •YES .5 ROUTINE S. * TURN ALARM ON • CLEAR *BUSY . * OR OFF • INDICATORS SA. .* •*. .•. i *•. S *** ***** *I...kn.*** ***** ****** *qt.**** NO. **** : .*****. * • k.. X* K3 ..X. K3 • * . ***** *it*X*****G1*********** SFT FUNCTION *SIFCOOE) TO — IF**PCV. n IF MNTR * k IF XMIT * ********************ml************s PUT SYN IN *IDLE REG**********************jk ****** ***:***jp*****************j3*************SAVE PAEAN SET sSTART*• RCV /W IT OR *... ***** X CATORS*X*SET INDI** MNTR !NOES ***:***************:: ***** ****** **** :***** *K3 *.X* ****EXIT*****K3S ***55**,EXIT•** *go**Flowchart SCA06. <strong>System</strong> Library, SCAT3 Call Processing•292


INTL ***A/************* SENSE C RESET *OSW*007*8 85*• ** ••.. .8.Ell **. El* 8. B3 8. B4 *. i* .i, *. .* 8. .* 8. ****85 *********. YES .* READ 8. NO .. WRITE *. NO .* TIME 8. NO * *READY X*. RESPONSE .* X*. RESPONSE .8 X*. OUT .* X: EXIT 8S. 8. .8 *. .8 8. .. *8. .8. .* 8. .88. .* 8. .8NO 5.8* *: ES .*YES * YESR E A D!*****cl********** *****c2********** *****C3* fit******* ***** C4 * x ***** *8**. * ♦IOLOG 00184*• ERROR /8000 * *CCUNT READ CHK 8 COUNT WRITE • * -**RESET & CONT OR* *ORR IF DSW BIT * CHECK ERR IF * MONITOR 2 CN • DSW BIT 2 ON * LOG TIME OUT * * * * ***************** ***************** ***************** ** ********* ******•***02************03•8**..8 P.* READ CHAR * OMIT .88. RCAINTO BFRFUNCTION* ...*. . 8 CODE .8 .8X.8 ********************** X 8.8. .8 *008****** * MNTR • F4**009* . * ** AI* *8 r X* *****:1At n2**********XVT:* *.8 E4.8**.00184* * **** 8.*• * * OMIT .8 FUNCTION 8. *NU♦ HI *X....*. CODE .8LOG CHARACTER ***************** * * ******8.81 : 711!:"5*009*• G5** *RCVTF2 *..8 *. RCV .8 FUNCTION *. MNTR COUNT SLAVE ** CODE .8 * TIME OUT •X 8. IFCODEI .* x ** *** t. . .8.** **008**009******** ******** *** AI* 8 r XMIT * E3** 4 . 8 ** *X******008** A3*x* ******0 ***********8ERR /2000 •MONITOR OR RETRY *8** * *********** *******HI * .* 8*8**X****% * *XMTTM 85 HI *. *****H2********** * *.* 8. * 8 ....5: f,0 NT *8: 51n4s 5:5"*. .******** **** *****YES*• Flowcharts 293X***JI** ****** **** *****J2* ** ******* START FROG * * ERR /0200 TIMER INSERT *ACCEPT MONITOR ** DEW SON * • OR RETRY ■* ******* *********** *****************XZ**** ***** * 05 * * 95 8 ***** ****Flowchart SCA07. <strong>System</strong> Library, SCAT3 Interrupt Processing


%.• • * • **▪ 208* *0013*AL*A AA* Al** •% %RrA/R0AmTR0Al*. ***A2**** **** t Al 5. A4 *. *****A5 **********.5 *. .. .* 4. *. YES 8 .* CORRECT *. YES .* •. YES * *fNQ .* A START SNYC.... *. ACK .3 X*. RESPONSE TO .*.*X* CLEAR RTBSY .* • *. .3 5. MESSAGE .* * .* *. .* • **, .* ***************** ;* NO ***** * NO**** *007*. • * 135*• * R7 .... . * .• *% **•* . %XiII 3. *****R7********** 03 *. ***B4•*****•***** **•**85.********** r. *. YES * USER COUNT IS * 5. YES * • * ALTERNATE f q T .4........ X* ZFRD START 4.... NAK A.* START SYNC A* ACKNOwL.. * MONITORING *.* * . .r * ****************** X ***************** ***** ********** *** A NC ***** rt NO*009•* J1** •.*****x i *007*R CVTM % * 05*CI *. ***** c2***** ***** (3 S. *****c.****•***** • *•2 5. . ERROR /2000 .3 *. * ERROR /0400 * •.• START .. NO * MOUNT ERROR * ..* *. YES4, CHAR Rovo .4.... ***** x* MONITOR OR *.... 5. EOT :AcEBTANR .* RETRY .. .. * OR RETRY *. .. * * . 4. I .i *********•******** A *** ********* ****** YES ***** * NO *••**005* *007* * •* 85* 87 .* • • * X**** ******007*A • 05***01********** *****03********** • *ST / 0 OATS IN * ERROR /0700 * I/0 I. * *ACCEPT MONITOR **INCREMENT IN. TO ** OR RETRY *****************• •.****************•X•*****007*• 85******E1**********• ** CALCULATE RCC **WHEN NECESSARY* * ********************** *008** F4*• *•%RCVWT01 .. F4 4. ***E5***** *******.. *. .. *..4 END*. NO .5 SECT - *. YES x * WRITE TOT, •.. CHAR REVD .. 3.*. .*EOT ON .4x 4. * *2. .. ***t* 4. .*007** YES * B5. 3.*.Z0* • *•:I *****02..******** G4 4. ***G5***** *******. 3 *. YES * ERROR /11100 .* XMIT - *. YES * WRITE NAK, •.. OW ..... ***** OVERFLx*AccEPT MONITOR 4. NAK ON .4*.x.4 * OR RETRY * A 4. .* • *3. .4 . ***** *. .4** ***** * ****** *** *007**** ******** ******* NO * 85* 6.**NO. • •• X. .%% XHI A. ****•H2********** ***144 ******** ****.5 BCC *. *ALTERNATE ACKS *10100 00184*.*RCVC . ECC *. YES LSER COUNT - * WRITE CLRRENT • * **. ACCUmULATEn .4.... **** * LENGTH Rtfis y * OLE ACK, PAD X. •*. .* OAF . * * * LOG CHARACTER ** *************** ***************** ****************** NO . .******007*% * R5*****.ii********** xr * ***J5*** *********ERROR /0300 * COUNT ERROR MONITOR * NOMA. *ACC . DR RETRY * * START READ ******************. .X %*4*** **•**42 07* *007*• 85* . 85*A ** •* •Flowchart SCA08. <strong>System</strong> Library, SCAT3 Interrupt Processing• Flowcharts 293. 1


******009** AI** 5AI 5. ***AR ***** * ***** *.* EMIT - *. YES * WRIT; 40T, *5 . COT ON .5 X..**. .******************** * . NO **** *J3* *■***RI A..* *•.5 EMIT - *. YES*. NAK ON .5...... .4.*. .*X* NC ****• •• 94•* ** * • *XCI A. ***c2************* .* *.. x p I T - *.YESA S WRITE ENO t *S. CND ON .* . PAD START .....* READ * .********** ****** * I* NO ****GI • * ***********007*85******* H3***********CONTROL MODE ON***********************009* .x* J3 *.X.• * .0****RESYN X***J3 ****** * ****** END OP START *READ* **ii*ii** *************** K3 5.0**5******K3*********• EXITMOUNTA4 5..5 5..* %MIT - *. NOS. NAK .5*. .5*. .** YES*****84 *.X* *****X***EA* ****** *A.*** ***85* WRITE EDT. ** 11; Es7at *PAREgART* REAL*****55** *****s**C4* **#*******IOLOG 00184**--- ■* LOG CHARACTER ***•***•**•*•**•******. ..0* K3 * *■***01 5. 02 *. ***03****** ***** *. • * . . * * ... EMIT S. NO .. TRANS *. NO * WRITE BCC I *a. MESSAGE •* x*. END CHARS .* X. PAD START .....5 5. NEEDED .* READ * .5. •*5. .* ***************** X* YES * YES ****4*** . *009* GI • * E3 *... * *. • *. ******** XX MONRD .5.***EI******* ***** ***E2 E3 *. E4 *..■ *. .* 5. ** WRITE DATA * * WRITE OLE * .5 CONTROL *. YES .5 SOH OR 5. YES *FROM AREA FTR, PAO OR *. MODE .5 x*. STX .. X*CONTR. MODE OFF:* * * LE ETX,PAD 4 S. .* *. .5O*. .* .* * ****************** * • * * * * * ****** * * * ** NO * NO: **a* : 14**. * * . . * •„X* GI . ..X* K3 * *.X ).,* *****X*********FI*********:F3 5. F4 5..* *. .* •S.*uPDATI POINTERS*NO*:* TURN - S. NO .5 POLL CR S.COUNTS ...*. AROUND . * SELECT RIND .4.* INDICATORS *. *. S. .*S. .** *:***************:X 5. .5 5. .5*009***** * YES * YES• 05***** * •*K3 G1 5.9* * . * **** .****XMONTM*****G1**********G3.*. *. ***G4 * i **** * ******IOLOG 001B4..* S..* *. NOS. EOT .5... * sii4T"NiiE **CONTROL MODE OF** LOG CHARACTER *.5 * *. .********************* ********** **a* YES•* *****..X• K3 *****w ****H s *********** COMENIATOR* ******* ***********Flowchart SCA09. <strong>System</strong> Library, SCAT3 Interrupt Processing• 293.2


SEAL...•.A1ENTRYARK)•• ENTRY••SART....•43•ENTRYA4• CLEAR I/U ••BUFFER IF WRITE.OPERATION ••• •• 84 •.X• B5 *...• ••• SET TO SYPASS•Sf10 ON 4ESTART•CISAVE ADDRESS OFLIVE CALLS FORSuRSECFANTENTRIES0/SAVE TRACEDEVICE ANDPRECIS101INITIALIZE FORREAD02.•YES . • NEW •.• OVERLAYB3 B4 ..• ...•INITIALIZE FUR .. EXIT TU . .. YESWRITE .. CONTINUE .... ..• .. ..• NOB5RESET READINDICATOR AND •X BUFFER FULLINDICATOR • ;81.C5 •.X•SFOEV•C2C5• SETO •..••C4.. EVER*. NO • DISPLAY ERROR • • RESET BUFFER... INITIALIZED X F000 • RETURN POINTER.. .. • • . ... . •.. ..• YES•001•• D4•002•5E3615 X • El•D4....D3•EXIT TO LEXIT •SET UP DISPLAY •IN SKELETON • FOON AND WAIT• SUPERVISOR• NO• ••5/. 1)10 X• ..*E2INITIAL NO• ENTRY ..• YESRETURN TOPAINLINEGI••••• SET igaRVOR •x••• •X• JI •• SAVE FORMAT• STMT LOC AND• GET DEVICE• NURSER•E2XNO UNIT NOVALID .•• YESX02 .*. ..NO VALID • •• FOR READ ORWRITEHI• YESSET UP BUFFERSIZE AND ZEROCOUNT1111,*. , •: '4 :-..... i••••J/••. J2.• ...1T UP ERROR : NO .. DEVICE •*.F001 •X • SURE LOADED ..... ... .. ..• YES..R• D4K2CLEAR I/OCUFF ER5E390E3 • .. E4 ... E5. . .... IS THIS . .. YES .. • ERROR • *. YES.0•. A WRITE ...... .. FOOL. F008 .• X•SET F001 SWITCH:.. ... .... .. .. • •.. X• NO •••• ....NO.... . • •001• •• 115 F3 0.X. • •• . . ........X.!.F3F4 .. F5SET EXIT .. • •ADDRESS TO ERROR .. NO *CLEAR BUFFER IF.CONTINUE AFTER • F002 READ • I/0 .. . ... .. • •• YES•001• .• G3 •.X.• • .SFD40 XG3•••••••••STORE EXIT• ADDRESSK3.X........•• CLEAR I/O•BuFFER IF READ• OPERATION•G4• UPDATE FORMAT ...• POINTER •••003••.1(!•4•GOTO I/O DEVICE..........k SUBROUTINE•••G5••EXIT TO CALLER • xXF110H3H4 .. H5 . ..SET COUNT OF. • ERROR • *. NO ... ERROR • .. YESCHARACTERS TI] .. F003,5,6,7 .. X.. r009READ OR WRITE.. .. .. .... .. *. .... .■ X• YES • NO•003•..C3.XXJ3 ..J9.•. • F001 .. YES • UPDATE BUFFER •• ERROR SW .... POINTER X•SET FAC TO ZERO:SET 0. • .NO ...•B4.003.•Flowchart FI001. <strong>System</strong> Library, FORTRAN Non-disk I/O294


.002. .002w• 04* %AY.•SIDIX SIOF SIOAI 5E125 ii SF122 %...••04 5....A/ ....AZ .H•A3 • • •• ENTRY • • • NON • . • SET BUFFER •• SUBSCRIPTED • • SUBSCRIPTION • • ARRAY . BUFFER : •POINTER START-1.• VARIABLE • • VARIABLE • • • COUNT SPECIFIED. • •• •....• ••B4 ..X• • .....1.Xit." • •X x A4 01 82 a3 84 • •• SET UP • SET UP • •SET UP ADDRESS . • "II.• DISPLACEMENT • •DISPLACEMENT OF• ••OF FIRST ELT, • • INCREMENT •ARRAY• AurAns: A UT : : TY4 n't Y : . SET UP•FORMAT• SIZE •POINTER • .• ARRAY SIzE TO 1. • • • • • • ẋ•••••••• • •.002. El4. C4 • •X • • .CI•ADD BASE •ADDRESS5E170 ▪•....C4• INCREMENT.FORMAT POINTER• •••••••• 03••••••••X • ••••• .002*02 :..: • 04..X..... % 4101.0X SF150SF175DI 02 03 *.. D4SET UP . . .. •STORE ADDRESS, • • NON-D/GIT • .. FORMAT .. • [NCR REPEATARRAY SIZE, COUNT. 1 . 2, • .. TYPE .. • COUNTER BY 1EXIT ADDRESS F.3, E • 7 .. ...• • .. .. •NY•El •.X003 A4SF100..•003 A4El . .... E2 .. E4 .• ..o. .0. .1. ....I 003 A3 .. ...• REDO *. YES .. TYPE E •.. NO.. ALL .. YESo. INDICATOR ...... •. OR F ....A 003 RI •. REPEATS .•....SET .. .. .. .. DONE ... .. .• . .• ....X 002 A4 .. .•XX• NO ....YES ....H 003 Al • NO .....•001•• F3. ....7 002 A5 : 04• •....SLSH 002 G4%so..X ....G.R 002 C4Fl F2 F4• • . ....F.R...002 04 • :• STORE DECIMAL • • BACKSPACE ••CLEAR WORK AREA. WIDTH IOW ....RE00..002 H4 ...•FORMAT POINTER •• •• .•X ••......* .....X• El •002.• • G4 4....• •XSEIM•• XGI G2 G4•• GET WORD FROM • • STORE TOTAL • SET REDO• FORMAT • • FIELD WIDTH • INDICATOR• STATEMENT . . •IWO/x xHI 4.. H2 .4. . ..FORMAT .. ......, TYPE .. NO .. TYPE .. NO * *E.F. OR I ...... .. E.F,I,A. OR ......X. D3 ... .. X .. • •.. .. .. .. 11.00*.. .. X• YES *m.o. • YES• •. 02 •%it...*DO02.H.H4RESET FORMATPOINTER• 0 0 1 •• C5.• •Jl•• ARRAYw. NO• COUNT IS 0J•REW2 BUFFER •• ihMRY8R :• YES ••••• •D2 •40.0.. .K2 4.. K3 K4 ....-*•.K1• • .* 4...aka• .. BUFFER .. YES • SET UP ERROR . .. ARRAY .. YES•RETURN TO M.L. • •. OVERFLOW .• X. F002 * *. COUNT ZEROX•RETURN TO M.L.• . • 4.. ..• NO• NO• . .001.• D3 • • 04*• • • • •.001•• C5.• •Flowchart FI002. <strong>System</strong> Library, FORTRAN Non-disk I/OFlowcharts 295


•003*• A/o• •.0*.*•003•.003•• A3. • 44.* • ••SF140AI•••*•5E1 DATA PT AS• NEXT FORMAT• LOCATION•••••00l•Bl...X5E1730 •• X PI...* .....• SET UP CHARS'PER win FROM ATYPE. SPECIFICATIONSF205A3 *.YES INTEGER...*. DATANOXX03.•SET UP ERROR •E0090▪ 03•5E210A4NO REAL ..•001.•• 04.X.•• YLS5E185CIWRITE • 0. YES• FUNCTION• NOSF220 ...••C2••NOVE DATA FROM ••..X•STORAGE TO I/C *•• BUFFER•▪X5E3505F430C3 C 4•READ NU 'CONVERT NUMBER..X.. FUNCTIONX. FOR OUTPUTYESDI...*• •••••lvE DATA FROM •• 1/0 BUFFER TO •. STORAGE •'El 0.••M . NUFORMAT M3 •• YES.002.• EL.• •5E355 X5E590D3D4 *. D5INPUT AND .• •CONVERT WW• DATA *. YES • PACK BUFFER CHARS FROM . .. EXCEED .. X• FIELD WITH •BUFFER *. SPECS. . 0 ASTERISKS • •. .E3 .. E4. • . •ERROR .. YES • OUTPUT NUMBER ••,. • F003.5.6. ...... • TO BUFFEROR 7 .. ... •• NO 11-11...•11.4. "001.0003" • 04•. F3 • * 0 ..X. K3 •• •.•..•5E320. ••.X SCOMPF3. ... .•F4"STORE NUMBER IN.FAG •WRITE COMPLETE•NO• • • •..X• K3 •• ***...001.• 04.• •. .03 ... G4 ..0.YES .* ERROR .. .. • REDO .. YES• FOD4 .. IND ON .... .. X.. .. .*.. .0 0. .. •001.• NO • NO .G3*• •FIX DATA03YES *. IS DATA• INTEGERX• NOH4 *.• LAST *.FORMAT NO•.SPECIFICATION.•• SLASHYES•001.•..G••STORE DATA IN • •LIST ELEMENT • •RETURN TO M.L. ••• • •003•K3 •.XJ3 * .....• • • •SF3X K3DECREMENT LIST .ADDRESS BY DATA.TYPE. LOWERARRAY COUNT I ••002•• El•• •Flowchart FI003. <strong>System</strong> Library, FORTRAN Non-disk I/O296


.Y.4• A2 • • A3 •CAROZX C1270 XC126;•••A2A3A....A1SET PREVIOUS •• ••ENTRY VIA LIBF •SET UP FOROPERATION ••WAIT AT LOC /8E•CARD/WRITE IOCCINDICATOR TOX.WITH A DISPLAY •CURRENTOF /1000 OPERATION •• ••11.4.•• •82 *.X• •X1CZ200C2240 XX..B1.•..... B2.... .....83INITIALIZEYES .• • READ •. READ/WRITE• START READER •PREVIOUSYES..... OPERATION .• IDCC, CLEARPUNCH•• OPERATION • .•....•LAST INDICATORREAD■•••XNONO....• •• .• C2•• C2 ..XC2260 ••• xCIC 2 C3'....C5 ..•HOLEZ 013AI.•• .. OPERATION •. NUNOERROR ..• CONVERT EBC * • SENSE DEVICE •.. COMPLETE....SWITCH SET•CARDS TO . • • ..INTERRUPT..• HOLERITH • ..• YES• YES•••.x.. .DI .. 02 .. D3 .. 0405 ..•01 *... PREVIOUS .. YES .. NO .. .. YES • SET ERRORCOLUMN YESOPERATION ....... READY ...... .. ERRORSWITCH▪ READWRITE. .. ..•XXNO •. .... •. YES .11"• • NO• NO.... • .• •• ṃ . GI • Fl • .X .. C2.El .X • • . .• • .... ....••••••... C( T(C221 0 [1 XE2*. E4E5• 03• SET UP FOR• .. YES .. LAST .. YES • SET (LAST wRITE IOCC .. ERROR ...... .. CARD .. X. INDICATOR •FEED CARD.. ..• •.. .. • •NO• NOA5 •..X. 02 • X • •..0: C2 :*ow. .0• X ....• A3 .C2330Fl ......• ... .....F4. • . F3.•WAIT AT LOC I2A. •.. //BLANK .... YES • CLEAR //BLANK •.WITH DISPLAY OF.X..... TEST SWITCH .. X• TEST SWITCH •• /1000 . .. SET ..•..•.. ....11... . NC.... • •• • FL .GI .... • • .• • .4... 0•••X• • • •CZ220 xGI G3 .. G4 • .... .....•G5• SET // BLANK .* READ .. YES •• FIRST .. YES . •TEST SWITCH .. OPERATION X.. .• THREE CHAR •• X. CALL EERIE •*. .. //BLANK .• • ••• .1,•NO• NO• A5CZ230El..X • SENSE DEVICE...H3• RETURN TO • .. READ .. NO. CALLER • OPERATION•X. .JI .. 14... ... •HOLEZ 013AI. • • LAST • . NU • • •CARD......X. A2 • CONVERT ROLL. •*. .... • • TO EBCDIC •A...•. o o.• YESYESXEl••• •01• FEED LAST CARD •X...K4• RETURN TO •CALLER•Flowchart FI004. <strong>System</strong> Library, CARDZFlowcharts 297


..Al....A; .... ao•• COLUMN • • OP-COMPLETE ••INTERRUPT ILS00••INTERRUPT ILSO4.• • • •CZ400 81 .. B2.. .. • SET TO RE •CZ/I0 B3 ........ //BLANK . . YES • FIRST THREE •. TEST SWITCH ..........X• . CARD COLUMNS •.RiENEIPRREPT.SET .. • INTO SPECIAL • • AND SAVE •*. .. • BUFFER ••• NOCI•• INCREMENT I/O •BUFFER ADDRESS • •C; ...... 04.0• SET OPERATION• COMPLETE• INTERRUPT• SWITCH•I • •01 •m a n******• SENSE DSW TO • •RESET INTERRUPT• ••RETURN TO ILSO4••El• READ OR PUNCH •ONE COLUMN• •• ••RETURN TO ILS00.• •Flowchart FI005. <strong>System</strong> Library, CARDZ •298


F4• •A4 :..:PRNTZ % Al240••• %AZ300 ••• ZA2 A3A4....A••ENTRY I VIA LIBF • . SET SPACE • • • •PRNTZ COUNT.' FOR START PRINTER •START CARRIAGE• • SINGLE SPACE • • • ••• A3A5CLEAR PRINT •SCAN BRIEFER •AZ200 X x AZ245 xB1 2 B3 14• •. .••INITIALIZE SCAN. •START CARRIAGE ••CLEAR INTERRUPT.CLEAR CHANNEL•CT=49.10LECT • 18 SPACE• SWITCH •x• 12 SNITCH• •• ••. ••:B5DECREMENT SCAN COUNTER •AZ210XCI .C2..... .• • .. DOUBLE .. NOSENSE DEVICE *. SPACE .....• • .. REQUEST ..X XXAZ250• YESC3YES•CHANNEL *.1 FOUND•• NO....c*INTERR 4 UPT FROM •• ILSO1 •• •• •C5• SCAN •COUNT .CT.0• YESXD1FORMS NOCHECK• YESAZ270 El• ••NAIT AT LOC /2A•...•wITH DISPLAY OF./6000 • •AZ220D2INCREMENT SPACECOUNT BY 1• •• E2 •.X• .EPSHARBUI ND3IDL.. SCANS •NO••.COMPLETE.....E3• YES• EXIT TO CALLER •AZ100D4• SENSE DEVICE •WITH RESET AND• SAVE DSW •YESSKIP..... RESPONSE• •• H3 •F3XXFI61 Z0114;*.• XFl F2 ..E3• LD CONTROL .. CHARACTER . ... . '.....•. YESCHARACTER • .. COUNT ...... .. .., •• SPA CE DECR CTR.... ....• NO YES ...... .. RESPONS• SPACE ..•.. .GT.1 .•.. CT :=0yEs.,,•. . . ••. • . •%V• NO .... ..... • NO.A3 F3 .• • . • •....XZAZ230Z AZ130G/ .•. •. G2 G3 G4• OR CHANNEL 12... E JEC• PGET • .. YES • SENSE DEVICE ••AX.. SPACE PRINTER • x: CHANNEL 12*. REQUEST .. • • • • • SWITCHZ• NO MO• •..• A4 • •• • 4.H3..14*••••X•••• X*.H1 .. H2 .••.••*. H3 ... H4 ...... ..• .*.. SUPPRESS •• .. YES .. .. YES .. CHANNEL .. NO .. EMITTER • .. YESSPACE ...... .. CARRIAGE ....X I .. INTERRUPT ....... REQUEST . . .. ... BUSY .. .. .. • .. ...Z .. .. ••• .. .• NO .... • NO• YES. .ENO.•: E2 :....X ZJI .. J2 . J3.• CHANNEL ... YES .. • SPACE *. NO • •12 SWITCH ...... .. COUNT.0 .....STOP CARRIAGE... SET 0. .. ..• •.. .. ..■%• .110 ••••• YES• •• A4 •Z ..... ....XAZ195K3:EXIT TO CALLER •* NOAZ/5005•READ EMITTER •• •XS•SCAN E BUFFER FOR:EMITTED CHAR, SET BITS IN PRINT SCAN •• BUFFER••.•F5• •:RETURN TO ILSOI.• •G5••DECREMENT IDLECOUNTER• H5. .NO.IDLECOUNT ZERO..:ESJ5• STOP PRINTER •• •XK5•••••K4 SET INTERRUPT • SET INTERRUPT • SWITCH TO • x•RETURN TO ILSOI•X •SWITCH TO IDLE CHANNEL 1 FOUND .:SCANS COMPLETE •• •Flowchart F1006. <strong>System</strong> Library, PRNTZFlowcharts 299


RAPT!..•.AI+ENTRY VIA LIEF• PAPT2..x • START READER •• Az • •• •62 ..X•••••XX62200 . . BZ220SI •. 82YESWRITEFUNCTION▪ A4x62400 •A2 Ai A4•SET UP FOR: . • PUNCH •• NOUPPER CASE •. READY .•..•.• CONVERSIONX• •• YES .•••• •• .• • • Fl •21 133• •• •• • •••••INTERRUPT • NOSWITCHSET83 84SET UP FOR.• NL NOLOWER CASE SWITCH SETCONVERSION ••.FOR EXIT ••Nn• YES• •••••• • YFS4 • • Ft •• C3 •...• ••SET CHAR COUNT . •CLEAR INTERRUPT.•TO MAXIMUM FOR • • SWITCHREAD • • •1 C21.0/0-0C3•• CONVERT •• ACCORDING•cASE• STORE IN •• REEFER••••C4• RETURN TOCALLER•• 01. •02•INCRENENT CHAR YES . •. • • . .WRITE •.'COUNT BY 1 FOR • ..... FUNCTIONNL CHAR • . •• • .• ........... ........ X.... • NO• •• A4 •• •....03 ...... 441.•• INCREMENT• BUFFER ADR..DECREmENT CHARCOUNT•04 • .•• CASE*. YES• SWITCH SETNOEl••SET NL NO EXIT• OUTPUT CASE• SHIFT•• SENSE DEVICEEzCHARACTERF2•• UPPER YESCASE CHAR 'E3CHAR NOXYES• . •. • • • FL •..x. K2 •• • •••••• ••E4* •• DECREMENT •• CHARACTER COUNT.• •• •F4YES .0 • CHAR ..••••. COUNT 0 ..Fl• NO••••X• xGI .. G2.. G3G4• • • ••PTTC/A AND SAVE•• •WRITE •./. YES .. LOWER .. YES SET NL SWITCH ••.•CONVERT CHAR TO.FUNCTION .•.... •. CASE CHAR .•...• • FOR EXIT .x.... ..x .. .. X• Nn .... • NO ....• •• A4 • • K1 •. • •%••••%HI .. H2.. . H3..• H4READER .. YES .. DELETE .. YES . SET UP TO YES .. CAS...READY .... CHAR •ouTPUT NL CHAR • • CHANGE .... .*..REDUIRED .0X..X.••.•. •• .• A2 •• El •.• Jl •.x. 4 • ..X• K4•00.. .... • •X.1....• NU •••• •.NO .... . NO•: X ••••AZ350 mi. X 62450 61430 x...• •.11 22...... J3.•'WAIT AT LOC /20. .. NO • SET TO OUTPUT...•WITH DISPLAY OF. CLEAR CASENL CHAR ...... • PROPER CASE •0.. • SWITCH LOAD• /3000 CHAR • • CHARACTER• •• • •bZ300X• YES ........ . 4 • . M.. •. K4• C3 • • •• K2 ..X. x • ..X• K4.•• •.X••••• ••••••• %• ••••• ••••Kz....K4*•KI• YES//BLANK NO • • •LOLL REMIT 10( • RECORD READ ..X• RETURN•• PUNCH CHARACTERNO..X• 82 •Flowchart F1007. <strong>System</strong> Library, PAPTZ300


READ/ R/060"...Al.,..•A3•ENTRY VIA LIBF • •INTERRUPT FROM •READZ • . ILSO4• • •XRZ100O1SENSE DEVICE*..•.B3• •• SET INTERRUPT •• SWITCH ••CI ..DEVICE •.. NOREADY ..* YESC2C3••WAIT AT LOC /2A. • SENSE DEVICE •X•WITH DISPLAY OF* WITH RESET/4000 •••XDID4• SET UP IOCC. • • SET ILSO4 •• PLACE WORD • .. YES * INTERRUP EXIT .+COUNT IN FRONT • ERROR X. TO RETURN TO •• OF I/O BUFFER • RZ100• • •NCElREAD CARD•RI090E4•••WAIT AT LOC /BE*+WITH DISPLAY OF*/4000• •02110▪01XINTERRUPT NOSWITCHSET• .••YESRZ070•/ETURN TO ILSO4•XGI• •.RESET INTERRUPT.• SWITCH ••.Hi ..* .. ...•I-12//BLANK .. YES • •CONTROLX. CALL $EX1T •..READ CARD.• •.. ..• ..• NOXJl•HOLEZ 01301•• CONVERT •HOLLERITH• RAPPER TO BBCX.*.K1• RETURN TO •CALLER ••Flowchart FI008. <strong>System</strong> Library, READZFlowcharts 301


• A2 •12300 X 12100 72400•••••02••••AL••• ...... *...A3 ••••A4•ENTRY VIA LIRE • . CONVERT EBC • •INTERRUPT FROM • • TEST DEVICE •wRTY2 • • CHAR TO • • ILSO4 • READY •• . •TyPEwRITER CODE. • • • •T1.200 X TI330 X XHI •• .•••132 83 84•T2400 00904••000E CHARACTER • • SENSE DEVICE •CHECK X OR CONTROL WITH RESET •• SENSE DEVICE . TYPEWRITER • • • • • •• READY •XXCL.STORE CHARACTER• COUNT- LOAD ••CARRIER RETURNCHAR •12340C2NO .• INTERRUPTSWITCHSET ..C3XSET INTERRUPTSWITCHG4•• DEVICE .. NO • WAIT AT /2AREADY X• DISPLAY /2000 •• YESYES.....02 X• ...D3 ..•.04•CLEAR INTERRUP • .•• SWITCH •RETURN TO ILSO4• • RETURN • ••....E2T2400 00904•itCHECKTYPEWRITERREADY. .F? ..... . ,....• ALL .. ND • .• CHARACTERS .•. . . . X. A2 •OUTPUT .. 0 41-.. .. ...... ..• YES...G2• RETURN TO •• CALLERFlowchart F1009. <strong>System</strong> Library, WRTYZ302


EINZMSId `A.reaqn uta3sAs • OI 011 3retromot3• •• Ev :x • • • • •831N1bd 31VdS2 3•70511 01 001<strong>1130</strong>•• 7H...•IION ••ASEIG 6.• • 39010800•530-• orX . 0107M•••••••11,45.1.• EV •* 10 • . • •1.... 501 • ••••IX. I530008 -. •0111.0 • "°.' 11VdS '. I 1NH3 01 dIXS •••• 01 N811138 • ON '. 011000EH....+0 . •• ZH /H••••••O.• EH•••••••53A•00311'•001IMS ".alaidwoa•11000000000313.". 8d3SNVH1 DN+070 •.....00ON •03831000003▪ *****01 53A'.13NNV111+0 •01 20•ON •ON •Asne•000101100 .•"• S3A• 10XX03110021 1301101 135.• 3811 1N18d•030 153E1038.' 31IASS3A•5S3110305111111151 11013 1AS13:9in3 nif,111R3r51S3A •+0 03831010g N/1:•1ON^N•6.13NNVH.'73•ON ••.001105 3131080D•• 83350081 135 •• •£3.O .. •M 135 • 3000 81d 0071 •1. • 0011MS • I '0" . 01 110003 WD04.1000000 0 511, 833000 1830N01•...70 • 0001170 X 50E7M• . •• • EH *• • •If )....ON • S%,.... .4..e •'... 31310005' ..• I ". •83300081 '.53A '. .'*:. Iii.51;14NS 0.:* (1; *▪•X00E7MONis3floam39Vd• 113E3 ••• 530▪••• 8110010011081NO3 nvol•0053000031131<strong>1130</strong> "" • ON• ZO•X. MS 03811N003N321 1010 00110•1300070• •• 0000/ •X . 00 AVldSIG 011M•.02/ 301 10 1100.• •130617M• • •13538 01100310140 30005 • M50 3SN3S , **• 301030 30835 • • ••• 70511 •• 11080 Larmaainn•78 EG 0900170.610.411• •EV •ON ..!.xsne0 • 30018001 'OC" 71180 •S3A 1811 VIA A8103.• EV •XX: ": EVX0007000000 758d


PACES PNCHZ P2080••••Al ....82 ...DA4.INTERRUPT FROM • •ENTRY VIA LIBF • •INTERRUPT FROM •ILSOD • PNCHZ • . ILSO4• • • • • •P1100xB1 B2 H4.HOLEZ 013A1..SENSE DSM METH .SENSE DOW WITH •RESET •CONVERT BUFFER :RESET• • +EBCDIC TO HOLL • • •........ 441.1.1.P2200P2120CI..•* ....... C2 X•• • LOAD STARTINGPUNCH A COLUMN •BuFFER ADDRESS X........C4 44.• 4, YESERROR•• NOPZ090C 5•• SETUP ILSOI •..X•RETURN TU PZ120.16:441• 11• C5 •01.41.4 ....INCREMENT TONEXT BUFFERLOCATIONXD2• SET ROUTINE.BUSY IND CLEAR• LAST CAROSWITCH•0 5WAIT AT RE •DISPLAY /1000•4....E1.... .....+RETURN TO 1E000••XE2SENSE DSW •Es.. •• LAST .. YES • SET LAST CARD.... CARD .. + SWITCH...+. ..• NOFl.... ....... F2YES •LAST• FEED LAST CARD •% CARD.66,•R•11.6P••46.•XX• NOF4 *.FEED *. YES • •• CHECK C5 •6 . • •. 6 6.• NU•G2SENSE DOWG4•CLEAR BUSY• INDICATOR•X02 . 44. 3. • . •DEVICE *. NO • WAIT AT 2A •... READY X. DISPLAY /1000 .. .■ ... .* • •• YES1.4...•I14X•RETURN TU ILSO4•• START PUNCH •OPER.X.K24.4.44A3YES .• ROUTINE NO •BUSY IND .4. X• RETURNSET .44•Flowchart FI011. <strong>System</strong> Library, PNCHZ304


TYPEZ*82220A2•KZ4003KZ100.... • A1 .. ....ENTRY VIA LW ....A4.• READ *. YES• INTERRUPT FROM TYPEZ • ..x.. FUNCTIONX.SELECT KEYBOARD .• •ILSO4••..,.. .. .....•• • NO• A2 • .• • 82 :.X •KZ200 82230••• X xEl B2 B4• • . •INITIALIZE • •CONVERT ONE E8C•• COUNT BUFFER .• SET INTERRUPT •• TO TYPEWRITER • •0CGURRED SWITCH.. SETUP RESTART • CODE •. . • •X 80260C.....C2K2600I 012E4*TYPE ONE •TEST DEVICE • ••.. X • CHARACTER ORREADY• CONTROL •C4•SENSE INTERRUPT.WITH RESET SAVE• •80210 001SET BUFFER •ADD WD CNT. •ENTER CAR.• RETURNXKZ300• •• 02 •• •D2XXNO.• •INTERRUPT • .•X....• 02 •YETYES.....D4 •*RETURN TO ILSO4••E2••• CLEAR INTERRUPT.*OCCURED SWITCH •KI500E3•K2600 012E4••. " :TEST I/ DEVICE :•K2600...••E4• TEST READYX XF2F3F4•NODECREMENTCHARACTER COUNT.SENSE OSW• • •• KEYBOARD .......RESPONSE•• YESXG2 G3.•... 04°... . .•READ CHARACTER • NO .•• ALL .. YES .. DEVICE •• • •INTO BUFFER ..... CHARACTERS .. ..... READY ..x...... G4 •• • . ..PROCESSED.. • •••••I 1.... • YES •••• • NOX• •A2 . • J4 ••.... •......X• XH4...w3YES ...•RESTART.... • • RETURN TO • • WAIT AT 2AREQUEST .. • CALLER • DISPLAY /2000.. •X •• NO 11,1••. •. G4 . .• • J4 ....• •X....JI J2'.... R•HOLEZ 013A1.NO . .. ....J4• END OF .4*.CONVERTS :X LINE RETURNCHARACTERS IN ••..CHARACTER..• BUFFER TO E8C • •. ....X. 82 •• YES•. K2• ....83.14011E BLANK INTO. • RETURN TO •BUFFER X. CALLER• •.x•Flowchart F1012. <strong>System</strong> Library, TYPEZFlowcharts 305


HOLE/'ENTRY VIA LEAF •HOLEZ• ••.STORE. CHARACTERCOUNT•EA•SETUP HOLLERITH• TO EBCDICDID2•. READ NO • SETUP CONVERT• FUNCTION .. X. ADC TO HOLL• • YESHZ100El•• CONVERT AND..X* RESTORE INTO• BUFFERXFl• INCREMENT •• BUFFER*DECREMENT COUNT..GINC .• ALLCHARACTERS..CONVERTED,• YES• • •HIvEsREAD•FUNCTION• NO•PUB PUNCH STOP'LAST CHARACTER•• It CTURN TO• CALLERFlowchart FI013. <strong>System</strong> Library, HOLEZ306


**** ***** * * * *not*E2 . A3 . A5** * * * **** * .'pm *As* * * •. A4 ‘.... •.* * X**** .PNCHO % C420... CA25P X CA36 %PUNCH*****A2********** A3 *. ***** A4********** *****A5**************A1********* * * .* S. * * *• ENTER LIME A . INCREMENT XR1 * .5 BRANCH A. *INCREMENT STOCT* *CONSTRUCT PUNCH*RNCHO * BY I A. TO I/0 .* * MONITOR I/0 * A COLUMN TOCC ■* * . *.FUNCTION .* COUNTER •******* ***** *** • * *. .* * • * ****************** *****************. •X**** 001 E5* ** F4 ....7 001 AS x*****R1 ***** ***** • ****** B4** ****** ** *****B5*********** * **** ....1 ***** 001 El * * *A A SET THIS * *OFT WORD COUNT •* SAVE SRI • ....4 ***** 001 F5 *SUBROUTINE BUST* *FROM FIRST WORD*. * INDIC ON OF I/O AREA * . * * * ****************** *******•**************Cl *...* * .****X CA14.*. CA24 X*****c1********** C7 *. *****c3**********• LOA() %c/1 FROM * .* I/O *. *GET 6 SAVE I/O ** THIS TV WITH A .. FUNCTION *. NO A AREA ADDRIN A* Arm OF * ..X..LFGAL, (4 OR .*.... *MCC 5 RSTRT + **ARGUMENT Annss A A. LESSI .* . 1 •* * . *. .* * A***************** X *** ***** * ***** ****;** * YFS ***** .: C2 * F5 * ***** ****NT1****Qv*********A COLUMN **INTERRUPT LEVEL** n *•* * * * * * . * * * * * * *IT*****07******* *****n3**********CONSTRUCT * * * MD% TO 1/0 A A INCREMENT ORE AXCAP6.*. A.C4 A. CL AA..* A. .* WIRD S.YES •.* ERROR A. YES ..COUNT ZERO A....A. INDICATOR .ow ...*. JA .**. ON .• . *.NEGATIVE .•A. .* *. .*X5.40**** • NO* •A F5 A* *********** D4****** *****/NITIATE* CALCULATED ADESIRES *FUNCTION BRANCH* * BY I/0 I *...TABLE * A FUNCTION ** * * ******* ***** *** ***********************************011*; . El *.X***** * ******D5 ***********SAVE WORD COUNT*A IN COLUMN *COUNTER ** RESTART A*107* ***** (.4* CA15 BEEFS CA27 X• * *****E2* ***** 4 r******E1*********** E5 S.* A .* WORD A.* CONSTRUCT C A *SENSE 1442 DSW * * * .* COUNT *. NOA INSTR TO CALE. * WITHOUT RESET FEED A CARD *,GREATER THAN .4.....* DFS/RED IOCC * A * * A *. BO .** * A. .5************** ******•****** •************ X* YES ****■*•* •*•* . A A* A x *001*. * C3** F4 *.X * F5 S.X. * *x * * * ♦ 4 ******** ****TNT , CA15. . .5. CA2B X CA40 XFP *. El A. *****F4********** *****F5 **********.***R1********* .* A. .* *. * * A* nP COMPLETE A XIS .. IS THIS A. NO .* LAST S. * INCREMENT %RI **TNTERRHAT LEVEL. ...*.*SUBROUTINE .* ...*. CARD 9IT ON .* BY 1 :Amount, ** 4 * *. RUST .* .1, * A *CALL eRROR CODE**************** *. .* A. .* . A * *. X. ********** *******NO *u•* YES **•** * . * AA4 ** F4 *X * * 4. * K***** **** *****000* X *002** FIR CAI7 X .S. x • Cl** . ******59*********** G1 A. *****54********** * A*A * A*SENSE 144? DSW * .*.. I/O S. *. NO * *WITHOUT RESET X... A. FUNCTION ...... * RESTORE ACC ** A . *. FEED (11 .* *. .* * * SS*************** 5. .* 71 ******•*** ***** *It • *w7*** * YES *A** * G2 ** * A * **** • A52 A A4 *001* ***** * : * * 5 H4 *.X x**** . **** * 4,**•*T A10 X X CA29 X CA42.X, ▪ YFS*****HI********** H7. .A. ******H3*********** *****H4**** ***** * H5 S.* • • . •.* SAVE 'ter, . .*.* NOT • •. YES A FEED TO EJECT * * SET UP RETURN * .*.■ IS *.STA T US. xa 7 * A. READY BIT .*.... LAST CARD BOOR FROM XR1 ..55. DEVICE BUSY A.5A *. ON •A * * . *. BIT* * 5.05 .•.5 * *******************. .5X ************* ****************** NO **** . T4** * NO* * * *H5 * H5* • % * •**** ***** ****X *002* Xre 1 R X* BI* 0A.,0 XJI A. ***** J7*** **4**** * * ***** j4********** J5 A..5 A. * • A t * .* *... 1/0 A. NO * CALCULATE RESTORE XRI. * .• IS 5. NOS. FUNCTION .*.... *nesiREn INTIAL KR?, STATUS A S. ERROR CHECK .5......TEST (01 .. inrr A. BIT ON .sA. .5 * * * *S. . X ***************** ***** ************ i* YFS **** * YES•**002*. * cl * • Bl*. • • % . * •**** **** •% * * %Al CA34 ...Kt *. * * x K5 5..* A. **** ****K4********* .. A..5 IS THIS N. YFS * RETURN TO * .. I/0 *. NDA. SUBRoUTINE ...... *MAINLINE !MAYBE* S. FUNCTION .*....*. ROSY .* * VIA sPRET) * *.FEED 131 .**. .* ********* ****** *. OF% %.GNU ***** YES* * . *007*P4 * Bl*; * * % * 4.**** **** ***** •* * *002*A A2 • Al** * * ***** *Flowchart FI01 4. <strong>System</strong> Library, PNCHO• Flowcharts 306. 1


Z'90£ •OHDNdBacirl tualsAS 'S TOLI liEtiomoLdNU *'A*13031 130803181** 801871001 *** 4003 N801311 *531 801183 •'**** ****** ***Op..**• SVM *IN57 r* ***►*•ON a** 'a♦° 1331 '*• sNwnloo •*53A •♦ 14140111004.'ANN a"'a 41.*** ***** *44*• 801148300 0/1*0301530 1881538*.1*********NOM,**********Ir******1341 1408831 01** M 213 8811 138 ********** SH.***ZZ1N*a 1 AB *8318007 880103*• 1N3838330 aa* 18138 403 8004*0/I 2 18003 ** 0408 3801534 a*******►**LH***** FAINa'HANO3 '* '5x • * . 80113114 °*8•SSA 'a SI 5•'5 . .38I I IN081•1* 34 * * •**** ON *** "4""*' Nu 110 0840538 ** 1581'* IN(1011NX31188 0/1 •* Poinum 31033%3*a 0 13031 a11538 8114• ASO 2441 30N31***as*** ** • ** **** ttIN*•*** *tY ** *****•ON *a' No* 119 0.33117SdA ** d07,11Hi 10•a*r 3301Poin103 NI 8008*0/I IN38387N1 a *BUN* •*40 *•000••.13031 13 4 0883181*** 8084 N80138 ********** E4****x0841 1541 13313 "'***********Zi******•*•***A.*****4 14041 4N1AK* *SO 2441 3SN3S******•*****I011010••*SAA •*h4 ******** ***********‘00*a*.*****10118 0808I4180* * 80883 40 — * •' 108110 'a* 30 1 — 8008 —* 1503 803 35040* 0847 0434NO1171404 II800V 3301 *e UN* 103 H3N0d135 * * 4153$************ 3*****.* Z3 * *x•;• 1 0.1 N*014 **100•****X*a**531 a * Z3 ******************.tens NI 3085 *a 4•**a*'43808 01 107 3007 a' NO 'r* 1X3N 40 4140 a* 80883 A9438 * •• 8010310N1 •s...I * Bads *NI 01 118 N3Nnd•*ION Z4V1 0001'a 80883 *• ON* 01 1BX 145 ** dOIS NI .80. a* HIM 334 U401/ ** "A,******** **50**** ". E0********4.10*****301 18UN *********54 ***** **'** 7301 NI *a" NO * N *13818*. 118 10438 'A, *13031 1.018831N1**N1 38015 3 1 AB.:4008183(1111421(31:531, 'a ION 5' * 8043 880138 * * 180 IN38321331a*. ******* **c3****ass ******* 57*****'a E7 x **********1:)*****9118 x t4,73 ****X . * * I3 ***•• X.*400*• a* * ** 53 *• •St•.• *dI3S 0143 33803*a 0 13031 * * 31081 * *3007 808/J3 1083*•01 NO 801831041•13S38 8114 *A500 3N1111089115*■108 3001.00(111*80883 131 •* 1150 0441 35835* 5131 13536 •* HI1M 0401 *•* ****** ***** te *****ZG***•* **** ******10 *****X53:.*.*'flor" 110143 'a5' NI 8018310N1•*'* 33383 ON0333 A.•BEIIN*a**• 44 **5*** uaiNnw* 0/1 80111408 **13018 183838330***********CV*****30118.(*a*** Z4 ***►*•* *.4(A)**•a**


It.** M.*. ••.. .....* • * 4. •003*A2 4. a Al * A4 • A5** a * * • * * **••* **** ***A. a. .XPNCH1 % Ch20 CA2511 % CA16 %*****A7** ***** *** Al 5. *****A4** ************A1********* .* a. * .* ENTER LIRE * INCREMENT XRI a .* BRANCH a. *INCREMENT STOCT. *CONSTRUCT PUNCH*PhICH1 BY I *. TO I/O .* a MONITOR I/0 a COL TOCC ** a •.FUNCTION .* * COUNTER 4, •******* ****** * S. .* * a:*********** **** : *. .* :* ********* *****:•X**a* ..../ ***** 003 F5. F4 * ....7 003 A5x:****91* *******: * a:***414*: ***** *******.....3 001 El a* SET THIS * *GET WORD COUNT aSAVE 1(111 ....A 003 F5 *SUBROUTINE BUSY* *FROM FIRST WORO** a INDIC ON a • OF I/0 AREA •:***************:*****c(*********** LOAD XRI FROM a THIS TV WITH * ADM OF **ARGUMENT ADDRSCA14 CA24 CA76 .5.c/ 5. 4.***.c5♦*•******* CA a. C5 a..5 1/0 5. * GET AND SAVE a .a 4.. .a WORD *.,5 FUNCTION a. NO a //0 AREA ADDR * .* ERROR *. YES .*COUNT ZERO a. YES..X*. LEGAL (4 OR .*.... *IN IOCC L. RSTRT*X... a. INDICATOR ...... 5. ORB . LESS) .* .a a I a a. ON .4. ..NEGATIVE .a* * . a. .4. a. .*X ********* ****** **. X a. .5 X*fi4.* YES **** **** a NO **•* a NO A.***a 4. a * * a- r *a 177 FS * a C3 a * E4 a • F5** ' * a 4= a 4. * aa*** **** **** ***• *********D2***433*********::***•**D4*********** *****D5**** **********D*1 ********* COLUMN * 5; * HU NT01 **a INCREMENT ORE . * a INITIATE CALL * *SAVE WORD COUNT**INTERRUPT LEVEL* *FUNCTION BRANCH* BY I DESIRED 1/0 ... SIN COL COUNTER :0 TABLE *a * FUNCTION *•**************** a * a***** ****** *** ******** ***** **** ****** ***** **.********.X:"E31**.X* E4 *...** ***a aa a*004*4.******* .a FlaCA25 XFEED CA27 X* * *****E7************E1********** ******E4 ************ a.* WO:D *.* CONSTRUCT C * a INCREMENT XRI * ** .: .:Ca5 .80U:N. TayaE1 5s. :. NOBY 1 a a FEED A CARD...GREATER THAN .*....a On TI&EITIRe:** a 4.a*************** * ***************** *** ***** *******!***** ■a * X: F4 :.XFii**.X:X ..a •. *C*14.1********TNT/CAI5XCAF7 B. *•***F3*************** F4**** ***** : CA43****E5 * 1 ******* :****F1*********•a OP COMPLETE a YES .* THIS a. *SAVE USER ERROR* * INCREMENT XR/ a LOAD ACC WITH **INTERRUPT LEVEL* ...*. SUBROUTINE .a *SUBROUTINE ADDS* ..X* BY 1 * 4 4,S. BUSY .5 a :RePERale 2A6:***************a. .4.a . *aa**,1,144,4,4,********* . *****************NOaa**a * F4 *Xa a**********004**004*. F2*CA17X. *.*****7****,014,.... ******Gi***** ****** ***GA*** ****** :a **SENSE 1442 nsw * *SENSE 1442 OSH aWITHOUT RESET X... WITHOUT RESET *00::STORE ACC a * . * * a• * ***** ***** ******* ************* ::::***** ********4.44.4,** G2 ** •4. aG2 *:*** a * H4 *.X**** 4. aXC<strong>All</strong> % • • CAA** * X CA42YES*****H1********** H? *. *****H4********** H5 S.* B. a .* S.a... .* NOT 5. YES ....*HLA:T::s *. NO SET UP RETURN a .4. IS a.STATUS, : 5. READY BIT ...... a. CARD BIT ON .5.... a ADDR FROM XRI 4. ..X*. DEVICE BUSY .** *a. ON .4, a.• . 4.. * 1.1. 1T ON.*.*aa. .*a. .* .*a a***************** X X *****************a NO ****** ****** 44.** * NO: a a4, H9 ,I, . A4 4, • H5 • * * * : a ***** **** ****X %CI AOx CA30 % .5.JI • * .*****J?********** J3 • *. ***** J4 ***** *****.* I.* .. S. • .* j5.a I/0 *. NO 4, TALC DESIRED a ... I/0 a. NO RESTORE XR1, a .• IS! ::: . a. NOa. FUNCTION .*.... . INITIAL IOCC * a. FUNCTION .5.... * XR7. STATUS * S. ERROR CHECK .*......TEST (n) .* 4..FEED (31 .4 4.a. BIT ON .*S..* a a a... . a •S. ...a; ********* ********A* YES **** . * YES *55*•. 4,. E7 .. A4 * . 814.a * X * a : . *Sass **** :X * %a Al aK1 B.* * ******x3*!********* **** K5 5..4.4.4.4.4. ****CA34****K4*: ******* .*.* IS THIS \. YES * * a FEED TO EJECT *a. SUBROUTINE .*....X* F4 4, LAST CARD:MAAETUN IMAYBE: a: * FUNCTION .*::::.4.**. BUSY .5 * * ** a VIA SPREE) a •.FEED (3) .4... .* sass****** ********* a. .aa .*.0************* %*004X % %**** ******004** A7 ** 31* :nt:** * * * 5**** a *Flowchart FI016. <strong>System</strong> Library, PNCHO• Flowcharts 306. 3


******504*• Al.*****A1***•**•***RIFT ERROR INDIC*▪* ON EVEN TO **FORTE CARD SKIP** *...***** ******* ****** ***** * * *A2 Al * * ** 5 * **'I.***;;••***A7*•*** ***** A3 5.. SET PUNCH COL • .4. A.* MCC ATOP TO .5 IS P. NO• A p OR - I OF * 5. FUNCTION .....*DATA WORD WITH . P. PUNCH .5• 17 BIT * 5. .5******* *********** YES* LOAD ACC WITH •5/000/ FEED OR *A PUNkl CHECK *• ERROR CODE **** ********** *A**CR71A CRIB *****132****•*****X*****B1**********•a84 *****•** *. INCREMENT I/0 * • CONVERT PUNCH • BRANCH TO •Ann,/ IN COL • * IOCC TO FEED *• USER'S ERROR •* /orr* !MCA SUBR.:►** ***** ***************004*. CI *.X****CA44 *****cl***■******* DECREMENT IRS *•.*RY l L STORE IN*• $PRET**.m.***. * *AA*****•.X.•. CR22*****D1**********CR62 ***** 03.*********CR73E X... * n7* *******D4 5..• 5. • • SST 001 TO ** *RETURN FROM *NO .5 • SPRFT I *IS *.*INTERRUPT LEVEL*■SET ERROR 'NOM**'MOM.••*• FUNCTION0*.5 *ON ODD TO FORCE******** ********• *. PUNCH .5 CARD SKIP' *:*************S.*** • .* * ***********X;******003*. H4■******0(14** El •* *rR54 ******Fi*.*SENSE 1447 DSw *WITH RESET• LEVEL n ********************c2**** ****** **FXFC/JU I (41. I/0*******E3***■******EJECT LAST CARO •A****• r X* 03 *.X*E3 a..* a... WAS •S. YES *SENSE 1442 DSW a*. ERROR IIC ND .5....WITHOUT RESET*.ON E ODD5•***.5 . *A.*.**004* *. .5. i* F2*****5 * *55* *. NO * *** E4* Fl :.X:.* it • .**** ****** a• CS *...**A* iCR738 .5.C4 A. C5.5P.P. .* READ *..• USER •S. YES .* STATION •S. YES* SET ACC TO .•.... 5. FEEDS. ZERO .A . *. CHECK .**. .* 5. .•X •. .*• NO A*** * NO* a. • F3 • .*44* * YES** CS * ** * E4 •.X X* Xt*5*CR77 XCR60 ; CR64"" •******F2** ****** ***CR75*****F3 ****** X* *ft* f4*. .A .* S.*SENSE 1442 11544 ** LOAD ACC WITH •* RESET THIS • .5 NOT 5. YESWITH RESET *SUBROUTINE BUSY*•. READY BIT .5* LEVEL 4 5X:1122t040124":. IN **. ON .** A S. .* * ********* ******** *5**S. *O .N•X*****G1**********G7 5. G 04****.• •.* S. • 5 .5 A.■ DECREMENT COL **SPST4 A.5 FAROE P. YES * DECREMENT *• COUNTER By I ■ 5.NO .* ERROR *. 5------------•CHECK SIT . 4,.... *S IOCT. MONITOR . ...*. INDICATORP..5 ON .* A *PAUSE FOR POST *...I/0 COUNTER * . a.S. .* ON .5 • - OP ERROR A* r5.*****************.a *;*;* NO A.*• • **** * YESa .* Ill * j4 *• • * ..**** .1 *•*••1(CR61 CR66MI A.;H2 5. ;.** *.a. ****H3 ****** * * *.* ANY P. YES.* LAST P. No RETURN FROM * *•*ADDITIONAL .*S. CARD BIT ON .5....INTERRUPT LEVEL* X....*.COL LEFT .*FEED A CARD •4.. .** 4 A *P. .* ****** **M.!**XYES . NO**•** * *•*.• 03 * a A* A***a• J4 *. ... a5,(FRI6 X X*****JI•********* *****J2 **********CR73 ****. . *a a* INCREMENT COL * * SET ACC TO **RESTORE COUNT E•• I/O ADDS IN A • / 0000 LAST •*• Torr. *I/0 ADDR FOR **CARD ERROR COORS* * RETRY *. * .************.****• .***** ******** ***A...** *X3 *...* *5 * *4 .CR6IAcp70 x*****R1********** **K2******* *****B1* *********. .0R • IN STOP * * * * •*PUNCH MT 12 TN* . *RANCH TO a *SAVE FEED CHECK** DATA OF NEXT * . USER'S ERROR * * BIT INDIC ** cot /1 PUNCH * SUSR * * * A• SAYE IN SUFIS * * .***************** • • * • • ****** * ******* 4******•*. .X X**** • *** ****4 * * • * •12 * Al . * A4 ** * • • ••*** **** *A** •* REINITIATE *DESIREO I/0• FUNCTION •Flowchart FIO1 7. <strong>System</strong> Library, PNCH1X306.4


'90£ slartlamoII •TINrdd 'AreaqT1 malsAs 'mu 4retiomou**49 a*900**5********* 40 a a**••. .***************** ******** ******** * a * **01344 991 4111 * *11131A 9935 2E11**NI 409 N ail****N1 0409 9441193**118 1N143 34015* 0110d131 *119 19143 3401S*a *• ****a*********** 9*****a ***********IN********4X*****X * 44 a: X 91493a ***** 11. •***** *** ***** *a**• * *a a * * a* 1331 a iwnop 0409 a 13438 * I - INno pum 4E*a N431103 14185 * HIIM Za% 0901 • NI III 3dU1S * a - 15110 13534 a* ** aa ************ f** ****r***** ***** ***** /I'x X x x44**4 * Z3 ** a*****• 301VA 09114015 * :.:* 01 19003 UM* 31111903N 14534* •******** * 53****:01 4009501313I* NV3S 13134 **AU 4319003 NVDS** 84 1931434330 *******************a*• 19003a 01314 1015 • a a * * ȧ * 339 5a 0409 31114039 * *19144 ZEll 0431* *Au x330 '144E11* * NI 943110* 113** a Z .1 ZE • * AO 4009 3119 a 19143 A311501" a - 14003 14181 a a 40313* a 141 3401534 a * *********** ZH***** **********18*****x):• 3**** X . ** •.• a*..).,►*SA* ************ ****** ***************** ***** **** ****** **•* * • a' ' a ** a *OM 390 NI 140143* 30Q5 40443 * s' '5.a 091 0191 4VH3 * a 1193 2903111 a 0 '.: . 1531813534 : I a 0311183 alunoo* ZE I 10091 . ON .* - 11310 a'* * * 811M DVI 0901 a '5 *.:* ******* i I 45***Tinr **Z5***** ********'a 111 ****9133: 10111•*'x*S•* a aa X** ED *•* 13 * * a *a 4 ***** 453/ . *.. •••*•40 *).' *SOU**** ********* ******.*• 0830.* * a a *.* ' 4010910N1 0400 34d 5I1E a*• MON Amnon '**" 314 354 * .4 91 19503 01 *'i 040M a' ON a c) Nani *4 A11 15310 +luau*. * *. • *a'4, tA ****•***** E3***** I3***** *xa **13 * :*::*:*100* * aS3A a****:*********** ************ ********* **s• •• * • * a I * • a• •* a 3005 40443 a ' a 511E 091 **18 Z40 NI ituoin* ..••*. 0 . 110 'a* 31 1103 a: 33353 "* X040M 39119949 UN '4. a' 14 04/ •*1/U1 4 19143943 13135*a 11431434jNI * '. al. * 81111 5:19 0901 a * a.* 13 ***** *****Z3 *****li*•***X '*" • 4/33'$. Z1011 5314 .,• •a* •*43 .***** *********** *a500*103 0135 }3405i * • HO 1 3103133 N 8933 *4V33 0N4 41 * *0311193 34031403*a * ** ****** **E0*******IV*900**•*** a ZO * ************** ****** ** ' *•*************•* •********▪ ********* 90 91 418 * : a : : 01313 9935 :a 103 131 3805 a ZZ 01 4319003 * ''.0* JO 040M 1191 *1.4411 30 4009*4983 151 41 * NV3S 84 135 a *NI 110 31313905* * 8115 lox 0901a a N935 131 a* ****** ****3 ***** * **** *** *E3****: * ******* **Z5***** 15*****9433*****ED *aa*aa 531 .*.*********** ****** 'J' .1,' 'oxa* 4313949H3 a 5" • NO •'a*6311183 0310000* --** 401V3IONI 'a* 8119 3493903 * ON 'a 313381N a'a a .* 4. **********►*►* 98*****"a 10 * ax* 40 a)1 4, *****t•x:******* *******:a lax 3195 *:*********I4 ******* ***** ******** *************•* * a ***** ** *******a 1340 a 13339 * 1 A3 01313 * •*0/1 5.4359 3043* a 0191 4311183 * a N935 NI OM * 11.443 *040M 1%3N 130 * a ZE1I 0934 a 134015 01 4000 a 3311 VIA 43193*a a a * * 193834391 a *********10********* ************ *******49*****9935 3 1183 X 11943• • •****. •****a * * * * aAV 4 *EV * 49 a a *500* a ***** ***** *a**


as*** **•• *555 *****0065 *006* * * * * * *A Al* • 42* A3 • • A4 * A5 * * * * * * * • ** ***■*•*** **•*•.•iKin x STXTT X .*.FC20 .*CONTROL*****AI A3 .. A4 5. 115 *..• *. .. IDLE *..* WORD 5. YES NO .* SCAN 5.* SAVE EXt AonR * • SET UP RETURN • YES . * -*41; SA"...* OF LIAF+I FOR * ADDS FROM XRI * 5. COUNT WAS .5.... ...*.COUNTER .LE. .** ERROR EXIT * ...*.*. CHANNEL... 55. .GT. 60 .5 . 5. 0 .5* * *.BITS .* C. .* S. .*:************•**: X. 5. .5 S. .5 %**** • NO NO •• *** S.*.t,ES* * *005** K7 • 5 G25* * * 5*a** ****•*111..********* SAVE )012, ** STATUS, Arc + *EXT *:*************•*:FC58* IBTETM *t*** SET NUMERIC **MODE IND/CATOT: 5• ON/OF F FRO •* SAVED ACC M •*******FC16B*****B4*** *******:15D1i/AFOTEAM** SAVE R SCAN *:***************:FC704*SENSE 1132 DSW •..X WITHOUT RESET* ********* *****EXIT******C1****************C1* : ****** ■******C4 **********C5 *.****C7********** SET 48 SCAN *.5 5.*SENSE II17 nSW ** RETURN TO ** INCREMENT XR/ •*COUNTER TO 46. * YES .5WITHOUT RESET• MAINLINEAY 1 •*2 [IDLE COUNTER**...*. CARRIAGE BUSY BIT *..5TO 12*. ON .5*. •****•********.** ** ****.** * *******•I,5. .5* NO.nl *. *****03* ***** *****D4 **********.8 4• SAVE XR1 * ►CLEAR **. 8 NOT *. Es YES* ADOR OF ADDS * *- * * *•. REAn y RIT .* *OF I/0 AREA IN • *ZERO 1112 SCAN * *SET STOPC TO 12*.. ON .. X * FC16 ► FIELD 5 •S. .4. ***** • * * * * **005* *•************• NO * F2•. k *• FCI3xIL •x*. ***** E2********** *****E3**** ***** • ***•*5**** ******* ***** E5**********.* *. * * * SET SCAN • * *.. 1/0 •. NO • SAVE I/O •5 INCREMENT XR1 : *COMPLETE SIT 14* • GET CONTROL **. FUNCTION .* ..0* CONTROL WORD 55 LAST MORO OF * • DIGIT 2 FROM *4.1E51 IT) .. • SCAN FIELD EXT AND SAVE 5. .* * * * * * * *••************•** ******** ********* *********** Wig**S IFS• ••%XX X x .5.******F/*********** F7 5. *•***F1*•******** ***ME/. ***** * ***** F5 5..* •. SAVE XR1 ADDR .* 5.*SENSE 1117 DST * .8, I/O *. YES * OF BOOR OF * * START 1137 * NO .5 DIGIT 2 *.WITHOUT RESET *. FUNCTION .5.... USER'S ERROR . PRINTER ...I, IS 0 .5. * *. .LE. I .. * SURE * * S. .5*• ************* i *****************• NO ******005* **** ****. * 02* *0065 «nos** * 51 4,x • G4 5.0* * * * *X X **** X *4*5FETAL CNTUP X XG1 *** *. G2 5. G3 5. G4 ****** ****.4451 0514*. .5 I/O *.*. . * * *YrS .5 AIN ON *. .5 FUNCTION C. YES .5 I/O *. YES *INCREMENT STOUT• * GET CONTROL *.. . I. FXCF*T .* 5. CONTROL .5.... *. FUNCTION .*.... * MONITOR I/O * * OIGIT 3 FROM *5. CHANNEL .* 5. 111 .5 5. .GT. 4 .* * COUNTER BY 1 * . EXT 5*.SITS .5 5. ..*S. .** *NDR. X% **** ******** ****** NO *5*5 NO *555* . .• * *005* .* 05 . G2*• * * 5 ;( ▪•**** * *55** .X 7( FC16 x * K1 .*****441.*********.*.*****442***** ***** *****1-73*•**•*** I,* • S H5 *.* * • * * **•* .* 5.* INCREMENT XR1 S * SAVE /Arc AS • :GFallISITWORD T M:.5 DIGIT 3 *. YES* MY I . NUMERIC MODE *5. IS 0 .5....* * S INDICATOR * • * 5. .•* * * * 5*** ** 5. .** ***************** X• NO. . *005*• x. * G2*• * 4.. •XX*****J1** ******* * *****J7********** J1. 5•FC25S.*****J5 *X********** * * 5 .. 5. * ** INCREMENT XR/ * * ** *. AY I ZERO EXIT * 5. NEGATIVE 5. * NO * SUBTRACT 12 * 5. .s* «x* •« *S. . * ***** * 5*•***********►*** ***** ************ *005*• YES * 575**** **** * •*006* * • ** KI 5.8 K2 8.X .** * *X•**** *5** *007*X FCIAX X X * Al******K1********** * ***** K7***** ****** ***** Ki********** * ** * * ** RESTORE ACC + * *SENSE 1717 DSW * SAVE MINUS WORD*ENT WITHOUT RESET COUNT * * * * • * ************* ***** *. • • •Z i i*4** **•* tit*• . * AS AA Al 5 44 5. * * * * ***** **** ****5.. 5* YESFlowchart P1019. <strong>System</strong> Library, PRNT1• 306. 6


*.L'9OE suegomou •Idmid 'Asuacul ulalsAS laBgomou*9** ** * 4 * * •* 50 • **9 9 *i9 ** * *900* *900*4*4* ***** *****weiTAtniti*********su****** 9*10 *4900*xt '1•-•. 538 *****•********* * 4* •*94 01 93190E13 * 430d5 350/9503 *•* 3131 14 13S * Zt11 1/1015 * '* d31NOU3 *• ON* '* 4'**********4N******S3A **• •*** "9** M50 *** 03805 NI NO '4ON "9 110 N3383 *•** NV3S *•**tr4************ZN****** **...1NX 330dS*****************• * ** 1 AN 931N000 * .* WI 9011909 * * I AN 9319903 **1301$ 1N4439330* *33015 1934410330** * * * ***********tr•**** * * **********1r*****x 4531 *49 ***** *900** * ** * **X** Er * ***9**** ****** ***** *►*********** ****************** ** * * I AN d1NS dIAS 30018603 * 40* 0344393Ni * 304)11194)3 d01S * * ZEII 19015 * * 1000 *ON 8'***" 9* "9 **• 1 A9 9319003 :X * 53101 14 .4 '** 3101 /V N330 * 53A '4 99100 *"■ '9 *•* 4** 4H* ****** **;* H ****** ******•*•*•4H•***************IH*****1933 '**EXx****. * 40 . *SiA *sax * **** UN4 • •4 * 4"*. 9' '9 9" .*4' ND 119 * * * 9' ND OONI ** ** 10 43301 '4330,15/ dIN5** 0Ni4' 30Vd5YdIN5 '4 '"*** 14NNVH3 '4,X.- 0174 *: * 8inf .:4* ONV 5S0d 90313*•* NI 9'538 ** SIH1 **** ** *0 119 4' '*U1 31N5**& "4 99 **********k9***** '4 45 '* 19•*• x9E34x* * Xx* r*IN **900* •SAA * 53A ****9***, ******9** 4* •* )!****************** *. •. 9' '9 * ** *1019315w* ' 9' 1081903 ** * I AN **X ***** "*** 3YdS/dINS "9 *".*• 3xviu3mxil '* 4. cdx IN39393N1 : 044 0191 MiV./10. ON '* H31 4' •ON '9 *• E 00V * '9 9' '* *" * ***********43***** • **. .Z4 **********14 *****X 0931*9*49*4*X • 43 4* * Z0 .*9** * 9• *99* ON ****************** ****************** * * * :4• 's* * * NO U 111 * * NIIAV 9* 135 098 5119 ** 4031 1001900 * *"**" ** 6 139N0H3 ** '.* gr11814 9 10, 11 3 * *149908031.1051** 410103991 Z * S3A '4 01 3135 *a* * 911010 UiAVS 139* '4 9'*********** 43****** **********t3***** **********43***** .9.5.1ax x***** *9 kr * *S3A * 4*** S3A9* ** '4 * ***** ******* *****". 9' ** * * * *9' 9' NU 114 • 9 • 901031091 • 4 *• 1331 535495 •**••**•*• 3514E41549 '8 430d5/dINs * * *•* 340N ** ON •ON ** dINS 9' NI 38015 •• Z90 11S UI E 000*.* 9' * * * *'8 - * *a 9' '.. . 1.0 ********•*40***** •*********i0*****'90, 4433*. ***** * *9*8X • ai * * * CV •*** * *• **** ON ************** ******** ********• ** 4 * M 5' •* * * * M50 1895 * * dINS * **.*Zux 31101038 *X" a 1 Al muiNnov * 090 13138 HIIM * 310310N1 01 *""*• Z/ 11N901-11 '9* **33035 1N31439330** MSO ZE1I 4SN3S* * 0 114 NI .90/ •S3A '* 01 dINS 9•* * • * •9 4'****** *****3***** ********** 53***** ***********13****** ****** ****Z3***** '9, 13in0X xx**** *X** * 53 **100*****•***** ********** ** *,**********G****•:90 1118 31 13403* 5S4d ** N931 13S * * 01N1 4450 .90. *******•***49*•***X***************** ************•**** *********** ***** * * * 4)30 * * ** 29X 3805 * * 01 5/1109033V * 4 0 01 411X 13S *1911 131HS * * * * • * ****** ***** 2u***** **********It*****x 0511 xx**** *It.■* * * *4 Z0 '* * * *S3A . **** .**** ' S3A *X*** *********** *** X• * 4• •4 . 4• .•• 01313 NVOS * *• NO 119 • 4 • * * * * *• ***iNlad e111 0032* *• 35NOdS39 ****• * 10511 VIA *""*. N011063,10'*a * *8 33VdS 9' ON *A8193 1909b3lN1* 911119n10001 ON '4 31M 9'* 10313* •* 9' *********kV**** * * '. *.********** 50***** **.. 40 ****•*****44****• **.10. .*9534 11N1 t ....6k34x• * * **** Z4 * •**** * . ***** * 9SV *IV ** * *100****•


**•**anon*41** *****•*.4 4 * 4...• * .if****FC70ECRI xAl t4... .. .* 48 •. NO * CECREMENT 16 **. PRINT SCAN .•.... •ISLE COUNTER BY**.comPTFTEn.* . • *. .* * *;• YES .•••**nos** .41** *et***a** * 43 ** 44 *• w**** ***** ***** A34*********FC86*START sM getIAGE • *START CARRIAGE *SKIP** * ****** *****#***********CEAR• ENTpRqE Y TO *FI •* SUBROUTINE *UP7 X*****R1********** 42 *. *****133**** **CLEAR .5 *.** * .4 MORE 4. YES. 7Foll 1112 PR INT. IDLES * TO GO .o.... : INzucut Iv':* SCAN FIELD S. .5 . * COUNTER BY I * S.*********** ******.■ *; ************.***** NO ***** .• *007** CS*. • * ;* *****; .007** CS*:****CI C2.4.4. * *.* *.. SFT SCAN * NO .5 *.* * *./NOR . / ..5 . .*YES•X***t*BS********t 4o.:ZERO ACC + EXT ** **COmPETE BIT ON * ...*. SKIP/SPACE .7, • SET XR2 TO -8 ::***************: :***** ******* ***:Di A.NO .* 16..*. IOLFS DONE •.4*. •**. .****• YFS. •* 47* *FCB2 SERE.*****0 4 ********* *CL2X***01********** ***** 05 *********** • LOAD ACC WITH *GET I/O CONTROL* * /0004 1/17 * *ZERO TWO WORDS * *ORO DIGIT 3 5xs CHANN6. 12 ..X. IN PRINT SCAN ** ERROR CODE***FIELD * •:**** * ****. ** ********* ****** **********************F1********** *****E7 ***** ***** ZERO PASS * *SET SKIAC 4•ICLEARS CHANNEL** MDR TOP/ SP I IF E •*of17*arc* INCREMENT RR2 ** 0 0 IF err*BY 2* INDICATORSI •* 1 • ■• * *:*******: ****** **:XFry/STR E3*•***F1********** .****F7 ********** ***** Elm** FS ....Loan ACC WITH .* 8.• DECREMENT 2 *STORE ACC IN :* /0103. 1132 *NO .4 *.*IDLE COUNTER BY*..X*CHANNEL D ERROR*....*.4.*082 . 0 .CODE *•8. .********** **************************5. .♦* YESXni *. (12. **. *****DB*******.* R. .* t. * * ****G5.* COUNTER 4. NO .. CHANNEL S. YES BRANCH TO *4.. n RETURN FROM **. 12 BIT ON .4... USER'S ERROR 4 *.INTERNAL •.. *. IN PASS .. SUBROUTINE *.. .** SUBROUTINE **. .* * *; **** ***** *****s YES ***** * NO*1107** r.S.* 5 .. *;; ...******H1*********** H2 *. HI r..• *. .4 *.* * .4 CHANNEL B. YES YES .8 USER *.STOP PR/NTEo 4. .2NIT ON IN . 5 ... ...*. SET ACC To .4* * *. PASS .* *. ZERO .*S. .* *. .***************NO .NO. .. . ..X. xY ECR4 .•.:****J1*********: J2 *. ***r* J3* ********.* 8. **DECREMENT AIOCT* .*SPACE/SKIP •S. YES: «IINIToR un * 5. INDICATOR . .4.... :4704NCOVIS E :COUNTER BY 1 • 4. .. . *CHANNEL 1 SKIP o* * 5*** ***** • ****** *** X sr.*** ***** * **** *NO *****. *007*, . * C5** • X***•* * ***** no* i 4,4, rs *.*, 44 * 4 K7 4. * .s .4 4. **** ****.*SoACE/SK1 p 8. YES 5 **. INDICATOR ......X* Ay * *4. .. ...** NO****• *5 Al* *.***Flowchart F1021. <strong>System</strong> Library, PRNT1• 306. 8


6 '90£ naUtIOM01,3 •ON *e NO 11840Vau ION .8• 034 ** 831Niad e•* .*-0 3aralith maasAS • zoid siaelp.mou*♦** .*** ****• r * * *1* * kV LW 4 *CV *010* *4** * * * * * ** * *44* *58* *84*► ► 53 *X-*08 * * **010* • ****034 * •******** ********* *************.* • • * 4• e. 434"•••• <strong>1130</strong>038 83810 0/1 8083 * I .8 43938 * 3.01 3801538 *11530 inchttmON 1808831811 *' * 831330/H3 0901* 4 01 180 131 * * M10 150/ 35835.'4** SN ** ***** ***C.). ***** **********03 ***** ***********13******998* X 5103*44*► 3*4*X** SY 4•* ** tr .****■ * •a*** ON •***************** ****** ** ********• 1.811* 3S11313*t *. ••inSla u p) * *• 4• Asne •*30 8013* ix3N "3 0830* . 1380$0 Au *--V 03A 3NtAnotlens •** MS0 04495 0001* * 01 80/031UNINI isx abOiS * * 180 18138383Ni** 5181 51 *•* 114018 13888 * * .* •* *•****** ****ir ***** **********41 ***** **X59amIx 9488 EltIM•******* * **** ** •* * *4** v •* sr X . * Zr * * * )0* Ir ** *. ********* * * • ******** 53A ****************** ***** * * * * * * * * t• * * **10( 31108•*831338383 1 AG 800/ 9389* 1 45 0310808HD ""** NOIlJNOA *** v i811/0 * * 0/1 18138 U3N1 * I48 I813838330 * V 15193 * (IN -* 0/1 *** * ** ************* CH****** **********18***** ********* *2H****** ** Inhh8M 4(08• * **010*ON * ON .*e •* * '*s' NO 118 * •*• *• 18018•—e 409311 ION •** 031338383 ',8x-53A 831Ni8d e Sa4 -* 1x38 e.8•.*50•i h7((911**5***Sr *X-* * •***** 13138 18011118** *SO E501 3SN3S** * **X0440* ****** ********** ****** ***************** *****************1000 031800) 5** 00'803 Ay738 * * 0/1 0U118.03 *1 AV*ION 1501 8000/* *1)018 1N38383N1*• * 10% 180830030 *HIIM 33V 0901 ********** *09***** **********Z0***** **********10*********‘"M• * 4*5*•••* ED * ** *cf•***** * •**** 034 *4 ****** ***********333(1* 4 . 4. inalno Asne •*0008 1N0 U1 •• ON 3N111100605 •*9309 0/1 8081 * ON •* 5181 SI *** b3131110H3 3808* •******** ***43***** ****** ****01***** • .8 13* 8318003 ** 0/1 8011NOW **13018 IN3838330*ON 8,*• •*e 1814.1 Di•*e 583i-491083•* 3803 *• S34•* *•'.8.*.43*4**• . La ** *4********** *********3003 80084 1113 * ** ***** **********1119i0 010-13 *. •IX35 31 .003041993111 1000/*X•01 001331301 * 8118 339 0901 *01043 1.11Dis * 3211VIiiNi ***********La***** ***** ***** 23*****058*518.*..'*III 1511•*NO113808 •*•••0/I e ON*** 13538 inolum** MS0 050/ 3SN3S*9h9/18* 838809 *• *1031110 NUOM 380*-"X* NI 0313083143 **031311101* 1331 3801.5******* ***53*****4988****x•0053 **600*****• 239 AO 183101 131811 ONV v381, 0// ** 80888313V8VH3 0301*1331 *• 8383 1138 '31 *X"el 01 401921081• 189 .18 ids ** I 48 8318,1n05 ** 8310999013 ** 181383833a ****** ***** 50*********53 * *13 0 .* ****'*e e N -**• 118 3SONOdS3a•*•••• 4 3314031 *• ON-.8831N1ade'* ha-********* ******* MS0 34VS *aNv 13038 H118MSU 0501 351935*h0****** osam**************** 40111 8083 *1388831N/ 0501**** ****** 410************ *********• I t V310 U/I *• 30 8008 avas 8***** *****20***********************• 339 `SO1415 ** 00A 1095 ***********10***** 0108* *********** *4,4** ********** ***** *****************801831081 A505*• 03009 1111910009*31111NIVW010 0318003 10 bUUV H118 * 01 80013a* 0383 sc. 0* ** A01N3 01 5101 *********03*****18003 (4808 3AVS*913111 1111 0901 ***********40***** ***** *****I0*****9183M811••ON *•***********************************• •**• 3811901N•** 80 0830 180103•** 100 1870S34 • 4 08011 3384 e* 0/1 e**********03 ***** '* GS**********I0*****008m UZ0M****LD *•* **** ON ************ ******•*e***************• e NO 118 '*110 8033 3009 *"e A0339 ION44100 ** N00130 an 131 * 034 •* 0318110d e**********01******* 43 *• * 1011 VIA 03181**********1v****2931* IINI 800m 08108**** ****• kV /V ** **********


**AI******** BRANCH TO** INTERRuPT r* REQUEST ** SUBROUTINE *• VIA 105E9 ****************solos:4* ********pu**********RETURN TO ILSO4.*****************WA66A *****01*** ****** LOAD ACC WITH *5/ 10 1 0, 1051 NOT** READY FARO,/ *CODE**********************FI**1*EPST4*PAUSF FOP. POST •* - OP ERROR ***** * ***** *****5****000** C5*Flowchart FIO23. <strong>System</strong> Library, WRTYO+306.10


Ti TOT****A/********** MONITOR ENTRY ****************0/000.5*INTERRUPT ENTRY*x*****R1********** R7 *. *****BB**********• .. ** INDICATE A * .*•5 DISK 4,. YES *SET RETURN EXIT*. MONITOR ENTRY *. BUSY x* TO LTDE*B * HAS BEEN MARE .. ** *.** gm*** ***** ***** :**** ****** * **** :NO* RECORD RETURN ** ADDRESS ** *XCI *. :****C.. S. **FS .. READ *• *SET RETURN EXIT*..... REQUESTER .* * TO LW.* • }.FUNCTION .* S. .* *X 5. .. *********** ********** * NO. RI ** .**** XX x*****01********** *****D7*********** **CONSTROcT DUMMY* RESTORE — *WITTE LIEF CALL* REGISTER . * * * ****************** *********************** El *...• . .*********E1********** x* *****E2*cONSTRUCT DUMMY******c4 ***********RESTORE 2 SAVED*BUFFER WORDS * ******D4 ********** •*SENSE DSW WITH •*RESET ENS SAVE 4.*RESAT SODSW ** *x x .. *.E4 *.** .5 DATA 5. YESR EAD LIRE CALL * *RETURN TO USER * *. ERROR .5**. .* x* a ***************** *. .***** ***** ********5.«11050/4** B4*a *ROBSY .5* *I/000.4***•G/********** LI RE ENTRY ******* !*f* *********G4 **********RETURN TO RESET** PROCESSING *X*****H/**********4, RECORD RETURN *ADDRESS ********* ******** ******J/***********SAVE REGISTERS ****** ******** ****. .El *.* *..* TEST *. NO-.0*. FUNCTION •5. *•REQUFETEO.* x*. .* *****. * YES * RI** . * **RH* ** K1* 7(***** ****. R2 * *****Flowchart FIO24. <strong>System</strong> Library, DISKI• Flowcharts '306. 11


**•* ****• * r *• 143 5 * A4 *■ • .**** *5**01740*117.* 91** * * *.;.YES11 •H.015K P.ROSY* NOX****•c1.*********seVE TRANSFER •. VECTOR LINK .woRn ADDRESS ********** ****** **X*****D1**********.SAVE REQUESTED *5 FUNCTION CODE .****************5X 7(***** A8*********** * * **SAVE RESULT AS * * CLEAR **WORKING SECTOR * * INTERMEDIATE • ADDRESS • * WORD COUNT * * * * ow*5012* ***************** ***************** *017*. R7* * 95** * * 5• * •x*i x XD1250 X DI320 .*.*****R2 ***** *5*** B3 7. 84****. 95 S.* * .* IS S. .4. S. .5 *.* TURN ON DISK . .. REQUESTED •S. NO .5 SEEK S. NO .. ARM AT S. YES*BUSY INDICATOR,* *. DRIVE ON .*.... S. OPTION .*... -X*. REQUESTED .*....SDBSY 7 S. SYSTEM .• . *. REQUESTED.* 4 *.CYLINDER .** * *. .5 .. .* 5. .******* ******* ***A. ; ,X0 YES * YES *.;** ***10*008* **** * • *013** F4* 5112* * 85 * * G2*• • . C4 *.X • • * 5* * * ***•****; D1280 X X*****C2 ****** 5*** *****C3********** *****G4 ****** ***.* SAVE MORD * * • ** COUNT, SECTOR * * CONSTRUCT 2ND * : iCIRRIMPTOD •: * SENSE ESN AND . ADDR P ROM I/O * * WORD OF READ * • NEXT CYLINDER * * SAVE AT SODSw **AREA IOCC ADDS * * * * * * * ************ ****** *** ***** *** ****** ********* ******** ************ *****X*****02•*******•* *****D3• ********* * * *.ISOLATE LOGICAL* * CONSTRUCT 2Nn ** DRIVE CODE * *WORD SENSE WITH** * * RESET TOCC ** . . **5* ***** ********5•***.012*5 04 *.X*****n1255 *•***04*********** SUBTRACT NEXT .. DEFECTIVE •X* CYLINDER *X... ADDRESS * •******** * * * * * * • ******DS*****•****:CONSTMEJ SEEK ** ******* ****************El**********ISOLATE AND ** SAVE SEEKOPTIO* pARAMETN ERt***************:Fx *. *****F1**********.* s. • *.4. LEGAL •P. NO * CONSTRUCT 2140 *P. DRIVE .5.... *WORD REQUESTED **.SPECIFIED.* *READ/WRITE 'MC*S. .* • •X **********•******• YES *****.011** F4** *XE4 S.NO .*** 5. S.***: * YESE: INTERMEDIATE ** SECTOR ,i8Ons* ******F1**** ****** ISOLATE AND .SAVEDISPLACFMENT A5 PARAMETER***** *9,4* ******X**•**F2***•****** ****•F1***•******* . * ** SET UP FILE * * SENSE OSW 5Nn ** PROTECT ADDS * * SAVE III SOOSW **FOR THIS DRIVE * * .* * * ****************** *** * *** **********• INCREMENT • *D1220 014845:ADDIFIRVEMEXT:* CYLINDER * ■ INITIATE SEEK ••X•...*G/*****•***** SAVE ADnP OF* 1/0 PUFFER aX...**,-u***********SET UP ADOR oF. USERS ERROR ** ROUTINE ******** !}}}t##}#******31 ********* ** SET UP EXIT ** ADDRESS*******************•**K1*********** INCREMENT I/0 **COUNTER, -sforT,.BY 1****************.x*****,,.•. X 53 *. 54 5. GS.. *.* * .* POWER *. .* *.* FETCH SECTOR .5 UNSAFE OR 5. YES NO .* LOOPEC P. YES .5 SEEK •P.• ADDRESS 5. WRITE ...... ...*. 3 TIMES .5* *5. SELECT .7 *. .5 *'*.REQUESTED.** * *. .. *. .5******** * ***** ** X X* NO * YES *•** • NO*0/45 * ** 87* KS * 5 * ** * * *H1 P. H4 5... D1S- S. .5 .5 5..* PLACEMENT H. NO .. DTSK P. NO .5 SCTR P. YESA. OPTION .5... 5. READY .*.... P. min TOO .5....*.S P ECIFIED.* 5. P. LARGE .5*. .. 5. •ix% x*SET UP IOCC TO ** READ ST WORD •* OF 1ST SECTOR •YES • YES ***** ***NO ******013♦50135:* 04** BE** * * **X .*.*****J,********•* J1 5. J4 5.* ADD FILE * .5 LEGAL *.*. •01220 01484•*PROTECT ArmilEss* .. I/0 S. NO .5 .5 SCTR 5. NO * TO SECETORnDR sS * *. FUNCTION .*.... 5. ADDS LOP .••....* INITIATE ** AS. CODE .*.5P. REPAO ...*READ-AFTER-SEEK** *•.S. .*** ***** ********** S. . % P. .* X :* ****** *.******:* YES • * it * * * YES *****011* * • ****x . * F4* . 85 *. * .1,. * * * K5 5.x.**** * * .; ; *55* i.....K7*•******** KI *. K4 *. •:****K5 ***** ****:*.5 •.. S.* DRIVE . .*' REQUESTED S. NO .. REQUESTED S. YES * UPDATE SCYLN *REMOVE* CODE * P. FUNCTION . P. FUNCTION .•.... * WITH CYLINDER *SEEK .* 5. WRITE .5 * ADDRESS •* . .. p. .p.*S. .* ********* ***** ****• YES ***** * NO*013* *013* : ***** Ai* * E4• . * *; ; * * % 5 * ..X* B5 **** **** **** r * ** * * * * **•■. Al * * A4 * 95 *. . * r •..•. **** ***aFlowchart F1025. <strong>System</strong> Library, DISK1• 306.12


.ET '90£ ' 21-8 49M°I.4 •tuolsAS 'WOE 3305PMOId***• ***** Ea * * I* Za * • *00* ****0 0. •:***************: :***************:V30,2:N3303-04-0 030: 0/1 0101 10003** 13001500J * * OSOM 3001S s:*********2m****: ********* *Ix*****X* * **10 ** 10*'41'2t2PS3A •2' .**•r • x3303 '**• -0000 '0ON •* -0032 N11M*•** 31100 *•or•* • • UBEIO• 30 31333 •OdOM 03133 ********1r****:********* ***** *** *****************4001 00303 *30110•3403/fd 0<strong>1130</strong>55300309 00 33541 .* 01 HONVOU *440111500 000 ONV iNno*SONOM 9N1N1VN39**--1030003 00313 ObON M N 3005 * 230000 3104003*• Z15cli/1304$ ** ** ******* ****40 ***** ******* ***20***** * ********* 10*****X 4911053A 2,531****4* .*• * NOIS031X3 *,•031SnvHx3•**• 5533000*0 * •••• x* O. 0000 00133S*X-*• 10003 0000 •*•• '"*. 01 00133S •** * 3003 30100 *•*, 31,01030 *. ON ON ** 1501 ******-531NA*.***** *****49*****.* 29**.*.1.9011100101u****A •***' * * * X . * 00 **LIU*• ***♦********** *********** ***************** ***** **** ****** *0* 300 Al 0000 * 04Emoirinwnoav 1103V 00 **alas 101103003S*AU 1000J OVUM * oi 1005 * * basn or N00130** 1030 1<strong>1130</strong>363Ni*3/V1030931Ni *********ta***** 1N3W30330 ***********1d*****0 •* *(2:110**2:110• ' * * • * * * '5** 43 *'V* £3 **00 *:• *E10*11,Ii:gn: ON *********:****:::: ************* ***r *.*I.• 1101'5.** 34 AS 1,0111113101 :•.' "..*** 0011000 V .2, .01301$ 0310003*000162335LIV30:*0333110 30 SUOUM*310003 S3A .2, 5101. SI *. r 0/1 10aWan330 * 31 31031001 * ♦ 001 1001A 300S** *•* r. s *** 43 ******** **3********♦******23*****00016 x!** *V3 *• •*010**43 *ON * ******010*•***** * ** AS001 *X* 0010310N1 *x.•Au 'O N 300 *' •* "4001335 * 5*. *. NO •*•••'♦ SO M44 /3S :* AS0$1 102313 *3101 /N3030301*•* A0313 *. S3A• 4* ****** * * '4, *•******** **E0**** **********20***** •* 10*5 • 00110x 00010* *X****! ** 4• *0q **010* **** ********* **** ** ********** ****** ***** • * *1%3* * 3301 031530035* •000013 an 135 ** k 130d$ SS3SO 31011101* 5535009 00133S** * 01 11%3 130 * * * 1030 dn /OS *10410 00110* **411410 50210* ** ****** ***V3***************23***** ***•******13*****xXx X**** ** ** *3 *40 *a **010*ON * ******** 03A **. .2, 00' • *•*• ••*. 1103 '4, ' * * * ' *• 00110N113.**" V 901310035 **"'• solvinwnaa y • 3301 ls30030* ..*. 31,21113WW1 .*.* .1, SaA * 01 0005 * Sad5n oa In l3S ON .* 3111Im *.•* ** SS ** • * * . ****** *****40*****Id *.•2.01110 0 0001•0*••* 0•* * * * 43 * •• * * * * **GU **00 **010*:n10:*000************** : 4.:'*"* **** S 3A'*0•*X 0' 03103303** 0340 0/1 0101 * *,' '**. 03303 -0300 . 0, SSidOOV 001335* ""*" 112031 10003 .2,ON "10 -003$ *' 153N 3001S ON •* 0000 *•'* *• * *•* 4.•2, EV **** ****** 02***** •0, Iv0040100 0• • ••*** ♦*** ** 4EV 20 *Tv ** * * * ■sio*•**• **** ***•*


*5****0/4** B,** * **014** 84** *0122001190 01160*****R1********** 134.*.*.•.* S.SET UP ERROR * CLEAR CURRENT *NO .* HAVE 16 *.* cOnE FOR USER * *ARM ROS. SOCYLN*.*. RETRIES .•CALL*.BEEN MADE.**.********* ********* YESGE *..* *..* LIEF *. yFS*. CALL*. „**. .** NO• ■• /5007 TO ACC ***am*** ****** **x*****4 ***********91180 01481**SET UP AND CALL** USERS ERROR EXIT *********** ************01**********OFT UP F4001, GOOF FOR ** MONITOT CALL . ** ****** ***********011** G4**O4 *..* 5..* IGNORE *. YES*. ERROR .**. .85'4410*013** D3*• •***** Fi***********FRROR*BRANCH TO USERS** ERROR ROUTINE *•****************** IN/TIATE *CURRENT IOCC*013** Fl*y * *****F1**********RETURN THROUGH **mten***************Flowchart F1027. <strong>System</strong> Library, DISK!• 306.14


*8*** *• A3 *...**** ;.*..*. .*..*..* **A7 A4 *. 45 5.****41**********ENTRY VIA LIRE *IS *.8. *. YFS .. .. Al IS 5.5.*. YES 5.:* .* ugo *. *:.YES ; .* .* IS 5.OMPR1 S.8. VESiPROGRAM .s.... 8. FUNCTION .5 X*. MPR64 . 0 .8....* 8. BUSY***** * ****.* *. READ .5 8. .8******5. .*.*8. .4, *.i 5. .* *. ... 5 5.*. .8.5* NO *••****** NO***** NO • NO* • X/ RI •.Y R2 *.X * *• * r * * ****• •**** x **•* % XX %.5..8.01 8. Al i. B4.5.5. 85 5.****97 ****** *** .* S. .5 or..5 .5 IS S.*. YES *EXIT TO LIRE ♦ * YES .* IS FEED S. YES .5 .5 IS 5.8. .5 IS IT •S. YES*. FUNCTION .81 ...*. GIVEN .* i. MASTERMARK .•...5. TEST .55 * • 8..5 .8 ...*... PROGRAM .8.5*.DOCUMENT .5*. *.5. .s*. .• 5. .*% 5. .88. .58. .** NO **** * NO* NO* NO* *• E3 5. * *•****%C1 .5. 5. *****C2 ********* **MPR411C3.1:***. S. YES *****C4 * : ******* :.* IS *. .8.* FUNCTION .. YES * .5 ISSET UP READ i ** :7T5:: •+, TIMING MARK .* X* LOOP ON FEED *:::411*... P:SUAM 5 . * MCC SAVE I/O S. TEST .5ROSY5 ADDRESS * * "IDVIIES "D :R. .5 ** 8.* *8 .* NO.54* NO• X. :% %.5. %D1 *. 02.5.*. ***** 04**********.5 5. .8 IS 8. r s*.* IS IT S. NO .*TIMING MARK*. NOS. * LEGAL L CALL .5 *. CHECK .5 :INDiETATUERPR68: ** t 1: sET.TPA Mc' * * CHARACTER.55.5. BUSY .5 . * A * ... *BUSY /NCR SIOCT* •.8 5.%S. .5 .5****************** * .* YES * YES *5**. **** * **** : ***•. * B2 * * * *..X* Kt * * * E3 5... F4 *.X5 * **** * * . . * ***** **** **** xẊ .5.***** F1** ****** ** *****E3 ********** E4 *.* *MP1175 * . .5 5. •SET MPR62 n FOR* . * FYIT TO SPRET * r.-- •NO .5 IS 5. UPDATE I/O •FEED -2 FIR ...X* WITH DISPLAY *X... - ...t. DEVICE* DDRESS CLEAR *READ 5 A001 * . DISCONNECT *.--. DiNg A .5 .8 • MPR68* * * *. * *. .5 * **a** ***** ******** ******* ***** ***** . ************ ********* * YES5555* : E7 X:.. * 13/ . * ** * •*******%Fl.* I 4*.YFS .5 FUNCTION *. *****E2*** ******* *****F3********** * ***** F4****** ******MPR25 *.* * EXIT TO SPREE *..*. FEED OR .* ..X* S WITH DISPLAY * START FEED*. READ .5DISCONNECT * 4000 * *5. .8* * • *%5. .***** ***** ********. 8 5 * * NO**55* ▪ ****. Al** *..X* KI **** * *****41 5..5 IS *..* FUNCTION *. YESS. DISCONNECT .5*. .*5. .** NO•▪ X* E4 ** *********G4 *********** CLEAR MPR69 **STACKER SELECT ** SWITCH ******** **********II.5.HI *. H4 S..8 15 5. .* 5..* FUNCTION S. NO YES .• IS *.*. STACKER .5.... ...*. FUNCTION .5*. SELECT .8 . 8. FEED .*8. .5 *. .•; % *. .*YES *555**** • NO• E2 KI ** * * •**** •*** x**•**n********•■*MPR16 **STACKER SELECT * •**********************• K1 *.X* *..*****•K/**********FYIT TO LIRE 7 * ***************** *MPR36 i SET UP USERS * •ERROR ROUTINE ..X* *STACKER SELECT •* ** ****** * .* K5 5.X.3 * .****K4 .•. S..* 5.**K5 *******.5 IS STK *. YES *EX/T TO LIRE *. SEL .54 **.REOUIREDS. .58. .5 * NOFlowchart F1028. <strong>System</strong> Library, OMPRI. -CALL• Flowcharts 306. 15


**•**• A4 B...* ***** XX.*.A? *. A3 *.A4.5.*.....A/5* ***** **.5 B. .5 5..* B. *MPREIA•* r.• IS •S. YES .• IS S. NO.:5*ES*ENTRY VIA /LSO4*■. PROGRAM • .5 ** , X*. MPR67 SET • ..... *:5SEISBnICON .s S X*TO • USERS ERROR * *S. BUSY .* .. .*B. • ROUTINE WITH ******** *******B. . 5 •S. .**. .* * 0004 *5. ..B.110 • * YES* NO: ►**►► ..X• GA * ******SENSE ANn RESET*05W*************.CI *. *..* IS IT *. YES*. FEED CHECK .1....* NO•* EXTT TO SPST4 • A• WITH DISPLAY • DISCONNECT.002 * •XCZ 5..5 5.NO .5 IS S....5. DEVICE •.5B. READY .•5. .5•. .5* YESBA •..* IS OP ** . •.17T 1. 84 E .• ....N.O.:. .*. .* X* YES ****X ...........• K/ *. * •****ic*****C30•*♦**•*** C4 *. CS S.# t IS IT *. .• B.■ EXIT TO SPST4 s.* IS •. NOWITH DISPLAY • *:"81IDTV;In B. X*. HOPPER .5...* A003 n B. MARK .. *. EMPTY .•♦ . *.1RRO:.* •B. .5. * .* YES* YESX01 B..* B. • •NO•.* TS IT *. ...*. READ SET MPR65 ..RESPONSE .5 .* •S. .* * *.*** . YES****AC . • ** *..X* KI ►***** *•4•** SET MR1167***** ************•rt*F/ S..5 •.NO TS IT S ...*. MASTER MARK 5• *. onc .*X. YES* HI * ...*G I . . *.1. *..*. IS *. NOS. MPR66 SET .B...*. .*.. ..****. YES. .D3 B..5 S.NO .* 1 ♦B. YES...*.*. EA .•.°.. .*MPRBA ****E3*** ******* * ENTRY VIA RSI X*TO USERS ERROR 0 • MPRB4 *ROUTINE WITH * * 5* 0001 5 .XXG2 '** *. *****03* ******** ..• •S. **YES .* 5....*. ACC . 0 .5 * PIXR1081iti :5. .5 5r. .• * *****5 ********** .HI *.X.* * .X**** XXHI .** *.x.* S. *SET UP NEW i/n ****113 *********.. IS •B. YES AREA AND SAVE **. MPR66 SET .• * IN MRRAO SET RETURNB. .5 • MPR66 *5. .5 5 ***** ******* ******. NO• *•••. . ..X* HI *• •***•READ ONF *..X * CHARACTER0 4 ** S..5 B..* I B. YESS. *. 18bB 4M ..5...B. .** • SET BUSY INCR AIOCT * • *X**a*** ************mPRBA-*•*TO USERS ERROR * ROUTINE WITH *• 0002**►*•• 54 0.1■ *****.GA B..*.•IS. ASC • B. YES•• .•*. ••.•*10*MPRB4 ** •*TO USERS ERROR ** ROUTINE50003 WITH *•X* *mgEt: ARP* DECR SIOC S****• • •..X • KI *******.XX.•. .H4 *..* B. * . 1. IS ♦ B. NO *ExiT TO RESTA x* WITH DISPLAY **•*. Taig .. .5A000 S. .• * ••* .0• *********** ******* YESXRESTORE I/0 •*•BOOR RESET *MPR69• •***.*K7* *********** * **UPDATE I/0 AREA*START FEEDw * •.**** ***** ** ***** **•**. * ..X5 K1 * *Sim*Flowchart F1029. <strong>System</strong> Library, OMPR1 -INTERRUPT• 306.16


•90£ siretiamou •nmvszo ` Aluactri tuaisAs 4autiomou• N211113O• *********4.5. ********** ******* *NtiO13d ********:*10****X69bd11 13S•:*********ki****:*89ddl. 501.310NI*• 0334 dV31):*********13.***:NVO1311 *•********* S3****X****►********173136 b3N3V1S***********E3***•**.133NNUSIU******* ****I3* *****SOddil 110313 •S3A **. •**• •**. 173135 •**• 01 NO "*....* 11 SI *• ON.* r."*.*.£0********** ****** ***Asnu0333 NO d001 * * OrOdO***********I0*****ON *••;;:*•. atsTi .•*X********** *******: Asnu0333 NO d001 *—** tOddN***********X0******** *********** ****: 1J01$ .• 11530 LO daN *ONV Asnu 110317.* **********17*****xON • ON * S3A •*. •*.** .*t•*** • •*•*. .*** Asnu **135 SOOdil "*".•. • /0 • ASS 6955ri •* ** W.d0013d •••* SI SiS3A536 .. SI *. ON. SI *'►••* *.* *•.*.*.SO ** EO . 4 .*.15** * ************ ***************•* *4559EddO S. 358 •.ISO VIA AM1N3 * * ISO VIA Ald1N3 * * ISO VIA Ad1N3 ********** OV**** ****** *011100***


ST .90E•OCILIVD 'Axemui tualsAs 'HOU limpAkoLl* 1138d$ VIA **391081 381111108** 01 N80139 ********** sx****X19glialb**********5/ *****X 0E03•* 330 3901538 ****** *****80 *****• 0883 V 0333******* ****53******LZVO'" * 0/l 0141530 ** 3103 310111N1 *85832•4715429.*** t1::**1*Z2:! *****4*** 0 •* 40 **810*****ON ** 4° '*dr' NO 31081 .4.....80884 4. 531".*4'.* 53133135 "*.920083N3V1S X ***** X • * 53 **910****** NO 3108) *.0989 3N/Inolons.* SIMI 135 * ■*• 83118003 4* 0/I 801I801 **13011 1634.38361*1! 95203*08.1 1501* 13303 01 0333 ******* ***** ***** ******* ....*******0908 VA4V 1 V30UV3 0/1 *• mIIM 09X 0001 •********** Olt.*** 6013•* 0395 0/1 •* 80310 01 8000 *03110 0/1 aAVS * •********** Er*********. •kV * ********************** ** 3..)01 10111611 ■• 039I530 3103 ***********Or******• •X *IA ..10•*A10►*610****** ON***** ON**** ********** **.*• •**• •*S.•• *• UR •*NO •*18 ►-**' ▪ 119 AUVAd '**• lax 183838330 * 'i;;*:*881,28i"n:* S3A ",* ION *'* OdOM *•.* 8°►*********SH*****LH•*.*.OH•S3: * ************ ******•s' 171 0039•*• IVVISAV •"'." 801198031 8318003 *ON •*13536 160H118 *0/I *** 103 NI I ♦ •••* *'MS0 2001 ASNAS*410909 u•om 3151*"8 40****4*****E0*****•4•••031 *ON **•******• •*•.4** 16 110 11*4 000.•'ASA0 •*"*" 0331 11Q 0039'** 01141 0501 1103 r *' 3N11008115 '*".ON •* N01138813 • *-*18003 0908 3100*** 0/1▪ S1H1 SI e 03*0* *••* Si**********63*****•* 03'.051113* *.1A**610*S3A * * ***** ONA.**• •. 'x •• ..° * **• AAIIVSAN•i*NO 119 09034•*9501 0391530*0 •**ON •*313 Ul 81581 1101 *• • 53A •* Ob32 1Nn03**4* 1311815003 *4•0. 0808 s'"*. .S3•* 43*******Z4 ************** ***** *****************•* 03130 0/1 30 ** 31951*U608 15b14 8003**HONVdil 60113801** iNn03 0808 135** 0/I 01 0014* 13nbASNO3 *****.*****E0 ******►*****00*****X 31653► *44** **13 . VA *610* * **4*** SAA **►*******************•* * **' •ISS31 *1 AS ••*3301 08311 30 AW*""** 00 41 10031 * 180 18138383N1 •*0"• 1001 3301 3103** **ON •* NO1138103 **•* Oil *•***►******43****► **********C3.**** '. 03X0009 A 10.3"4,0103****• * "'* 63 **1110******4 190159 3 0301. 43 810NI 8000 0390* 0/1 3105 S 130* 40 810 *********►**** 98*****X 4.03 IV 610***** . 3 810 1".:X** 40 **GIG***********44814***** .......* *:*** ********* *****(1,89*• NO110140A*** ANO3 0A3dS *0/I 01 **I AO*OA 30011 10001*H18.90 .•*• 100 1838383Ni **01 V 40 0/1 135******* ****40***** •* CV********** AV.....£003 **'•ON **• •*• • e x0119 4,* SA *V . " .*• 310119.100110.• S3A '. SIMI SI *0**** °. *• . 1.3****• •23 * ***** SAA▪ ** eV****** (01 1031'."'"*, NOLIAMA .*ON U/I4 ". IF 4'*****************g L%: S ,Tg t S **********.IH*****x 01.36151****************4*5900. INJWOD/1.*AO 4000 H118 Al S1111 * W001 lox U8111 ******* ***41:/************ *********00603 .* 3811 431NA *****►****1.****uut,93


***** **** **•**010* 4 ** AI* A 7 * A5 B* * * * ***► • ***** * ****A3 ..... . * * **** . XCA36 X PUNCH X NT/OE XNTIII.*.5.*.***A/*********. *****A7********** *****A1*********** ** a .8 8.*CONSTRUCT PUNCH* *$ET ERROR mom *DECREMENT SIOCT* NO .* FEED S.* COL /nu.* ON TO FORCE "X* MONITOR I /O S .• CHECK INDIC .4CARD SKIP COUNTER 8.15CARRY .** * * * S. .8******* ***** ****:*.** YES**** . *****019*. *87. *.x. il4 *.X* * . * *****. ****CA41 y xNT12X NT13E X:****91*********: *****B2** ***** *** *B3********** ******Br ************ LOAD ACC WITH S r •*GET WORD COUNT • */1 FA 1447 No** * RESET /1415 * *SENSE 1442 DSW * *SET ERROR INDIC**FROm FIRST WORD* ..x* READY ERROR *SUBROUTINE BUSY* X WITH RESET X...X....* ON TO FORCE ** OE I/O AREA * CODE INDIC X * LEVEL 0 * . CARD SKIP* * * * * •:***** **********: . ********** ******* ******* ****** **** **********•****** *;5* 44**R7 14 84 * * * * * ***** **** **** *4*** *CA44. . 95 *V.1 **. *****r2.*********14 B. * T..4 wnRn B. * ****c3********* .* B. ****YES .*COUNT ZERO *. 4 DUREMENT YR/ ** RETURN FROM 4 .4 NOT S. YES...t. OP•.X*R y / I. STORE 18**INTERRUPT LEVEL* B. READY BIT .*.4 **. SPRET ** 4 * B. ON .*• .. .* * •*********•***** *. .T.Z B. .*. *****************'km * NO ***** NO* * A.FT B . r2 * . * ***** •***XNT13F x*****D1*********: *****n2**********D4*****D5***** ****** •.5 4• *. * LOAD ACC WITH ** says WORD COLINT• * SET XR1 TO NO .4 ERROR *. 5/1000, 1442 N*SIN COL COUNTER . SpRET r 1 ...*. INDICATOR .* READY ERROR OT* 5 PFSTRT * **. ON .* CODE *5. .4 * *:************** *************B. .* ****** ***** ******YES*****XB*01 9* NO.4. * H5* NTIOX.*.El B. 5 * F3 5..* WORD B. * **** .* *.. 4 COUNT B. NO * .* IS B.*.GREATFP THAN .* El B....X.. FUNCTION .4*. en .B y * * B. PUNCH .4B. .4 ***** ***** **** 5. .*4. .4 *o18* *019* B. .*YES * 94* * Fp* YES**** * . * **019* *E1 *.X* .****ACA40 X*****Ft********** ***4:13*1********* ******F9************ LOAD ACC WITH* *SENSE 1442 OSW **/Inol, ILLEGAL*....w/TH RESET▪ .. EJECT LAST CARO* rm. '. ERROR COI1F4 * LEVEL Sr * • ******************* x ***********•* X ******************5*** ** r7 Al * ** *********Xr7 * +•#. ***na**********.. B. * *.5 ERROR C. YES *SAVE FEED CHECK*4. CHECK BIT .5... ***** X. BTT IN CARRY B. ON .4 INDIC **♦** 5. .* * **019* B. .4 .****************• Hi* * NO* *. .X X X******E4************SPST4 * * • * FEED A CARD * . ...*PAUSE * - OP ERROR FOR POST •* **************8*****.94 *019** • F5 *...***** * .**** NT14 X*****E5****F4 ******** * •* RETURN ROM **INTERRUPT F LEVEL* 122I1Ewn7n4 * RESET MCC ********* *************65 ******* *****":16H Ini E?" ** LEVEL •.5. NT/08.s. xHI 4. H2 *. H3****. ****"*H140*!*** ***** *****H5 **********• 44. B. .4. * •.. IS *. YES .5 •* LAST 5. YES .* TS *.5. YESRESTORE WORD DECREMENT COL *. 5nryi .4.lfiE ... n pl ROSY 5 .5.... con HIT O*. FUNCTION .*... * COUNT 5 I/0 * COUNTER BY 1 B.N.. B. PUNCH .5 *ADDR FOR RETRY 5 5. .* B. .4 B. .* * * * *. . X 4. ..5 X 4. .4 ****** ******* **** ***** ***** ******** NO5 NO 5 ****5* NO:M.:.▪ . r7* El . * * ** ****.XX▪ xxJ1 S. *****J7**********J3 B. ******J4 ***** * ***** J5****.B. . .B B. .* 4..4 •* IS *. NO ZERO ERROR YES.5 ANY B. YES*. F g ROQ CHECK ...... * INDICATOR B::.EuVR&ON .5 .4.... *RV)PNEkiTION" 4. ADDITIONAL ......B . BIT ON .. . . * **.i01. LEFT .#• *. .; *****************X *************S. .*. YES **** B. *NO ***** * NO* .*020*S7 • * A5 • * * . • * X * ***** ***aXX*020*... . . * A1*K1 4. K7 B. 53****. * *.* I/O B. B. B. .# A****K4 * **** ****.5 FUNCTION *. No .4 WAS B. YES .*LEAST 1 COL*. NO * RETURN FROM **.READ OP FEED .5.... *. ERROR INDIC .*.....4.... *INTERRUPT LEVEL*. .(1 OP 11 .. S.• ON ..* B. READ .4 * 4 *B. .44. **** ******* ****X X B. .*** X* YES **** • NO ***** . ** 87 . 84 • :*::*:X . * X * * X * ** * * * **** **** *4****** ****. * • 47 • Al 94 ** * * * * •******** ****Flowchart FI032. <strong>System</strong> Library, CARDO• Flowcharts 306.19


XA l *. *.* *.NO . READ .....**. RESPONSE .**. au ON ..*. .*5.* YES•••X*****R1**********. INCREMENT COL *• COUNTER IV 1 *•****** ***** * *****•NTI6 X*****C1*********** INCREMENT COL *• 1/1 AMR IN *IOCC********************** n i *• .0P . IN STOP •*PUNCH ITT 12 IN** DATA OF NEXT *S rOL TO PUNCH. *▪ SAVE IN SURE ******** ****** ****X*****Fl***********SET PUNCH MCC *RATIOS TO Anna -* I OF nArA WORD *• WITH 10 BIT **▪ *********************02n*▪ Fl *.Y* *****NT1R X*****F1**********•• INCREMENT I/0 * Anna IN COL *IOCC* ****************NT20 x******,/i,***********EXECUTE COL I/0.READOIRITE•*************XNT''****N/P********. RETURN FROM **INTERRUPT LEVEL******* ***** ****Flowchart F1033. <strong>System</strong> Library, CARDO• 306. 20


TZ '90£ slimiomold •URIVO 'Anima tua/sAs 17£01.3 2701p/AciL1•*** 4.'5**• * 99 * * 09 • ** * 5 * * ***.i.°I . **1 0 **200*••**** ON ************# *5***'1,e ..3003• e Asnu ••*.* 80883 A99311 ** 3701 OAAA 4541* ""*• 3811004805 .5*109 0491 0001/*• 8118 353 0001 S3A '. S1H1 SI *•***** H118 338 0801 ** *•'* **• • **** ****** EN***** **********Z0 ***** '. IN*19 * SV lx83X 4415*200* * ********** **•*x X .: *• • 20 ***** *SAA * •************* *******1891048 *. 0*83191100 3181SSOd dINS 0890 * 0 101 1511•.* 0/1 8011NON * 893 3090 0019 ** 3030i 01 NO *40115903 •*••.10011 193838181* 1 *9 1N1103 •*31091 30483 13S*'a . Oil . .** ON* * 0808 193938191*•* *'5 11*13 **020************ ****** **** *********** **• * (190S *ANg) 03330 904*: 14X 11143:18091 :* 010911 1000/ ►• *01 9389 0/1 130***********9H*****x x V2113• S3A * S3A ** 0 0 * *• .** * 4,' •* *•18091 ASne bens* *• 111 0038 0 * 5• NO ilv • 5 * 13833 •*S1H11 8009 aens*x *• 80110903 •*"**• N3380 80884 •* ."x*N1 3801S 2 I Au*40883 8355 3/010* ON •* 0/1 *• ON •. Si *• * lax 181938130 * •* *• •* .• *** .*. 09 •. tO *********►49*****! 9687 '4.• x 8181x x• *55****► xu *• * •* S5 ON * ****• * *• •* !* ****** * ***** ******** * *. ** ** *NO 114 •* • *3003 80881 1191*'5 189 • *• 39011 311,140 •••. 1993111 1001/.lax 193838191 * •• 0151*• S3A 9118 119 0901 **** * ,E• * *'. EA ***** ***** 4A****** EN * x •*° 0E07* • X****•X•*1 AG * 18X 193838030 • *s'0▪ 838 •**• 80110903 °Jr-"* 0/1 *• ON•* *••* 00•*•038.*.*.* •* •**• 0333 •*—* au 093809 ** 90111904 *°•* 0/1 *•"* EH*1491038 •1 3101 103 81 5 10 4408005 0/1 3990 ** 98 120 E"':X 4,7 100**** 40 120 1•••'03 * *11 • *. •* 5 5 **• •* *• '4,* 0 08 •* 0 *• 80111803.*•• 9081 8310309*s • 8 •*• 0/1 01 ".1'* 19003 *• S3A •* H38849 .••• 0808 * 0 0* *••* 90 .* sO.. 0 908/X !1 1AdS 01 140 1 1AS ****** ****CH****:%Vs*• * X's 4A *x *• ****ON ** *s' 04A2***" 11910 ....*0 * 10815101 SaA' * 014 0•.• 23•08 ** .5° A004 **.• 3811004900 0..0•••* 51101 SI *• 038**•* GU'5° 4113X'X* :qv . snivis ** 040 JAYS ******•****1H***** 01/1* 4*EA **0014*4***********▪ ********141131 130043101•• 4131d105 dU •*********IA***•4181* • **EV **800****************E*131131 1d04411N1*940103 **********10****1191ON *S3A **• •*** •* **************•***• * 0100090 ISO1 • 31810180083 . 0 •**• NO 0**' ISSil **50003 1039008E•8 04 2** *• 118 00938 "*... ""*. 10 *) 18031'.30 8009 * 103r3 01 0333 * * 831N1103 103 91*•* AUN *• S3A ON '4, N011540) .•0119 Al S101 *19003 0808 3A9S.. * 0/1 *.* 44033 111X U001 ****** *****,0****** E3.8 85 ****•*•***13*****X IX**•*SO 49 * * . * *S3Al.*„. 4*5*0,7.*.. -************* ******* ***** *** **1* **********•******.1. ° •* *• •45' *• 1A1i09314 •. * * 3301 : : w • NO 119 0493 • i ••-** 80 •* 13538 1008118 * * 1181 01 11910 *x •• 18x 4A09 •4 1591 *• ON •* 0837 101103*' S3A * mS0 4991 35930* * NO113804 . .5 *• •* 0809 *. * 0/1 SAYS * * *. * ... Sii .4.9.49 ***** ****** iii***Itd3 ***•***49***** ***** *****I.X0180 XX **•* *4*** *• *X •. E9 * • **120:0":•***• **** ••***** * ****** ***** •****************• S • ***•***********• * 4315 0/1 30 * 0.1301 * * * 13038 11105118 *0808 1S813 8043* 101 7 1011181 . . 1 AU 10893 * ASO 2941 30940* Anol 0808 139* 0301030 0191 * lax 1838383Ni * * Adil 41193 ** * * ***••****194.5************ SV****** ***** ***** 90 ***** **********EV*****03341. 9E183 H5N04/04310 0E05:0045 10881• .• •* * ********* * * * • 5*07 * *40 *Ea eV *120* *100** ** *5*9* 5*5*


ZZ '90E •TUHYD 1 .A.re/qci utalsAs •SEOLI lantpmotl4*** ....• . .* SV 94. * * ***** **** 4***: x . * . tj ** .• SdA .0 ********r ****4* *• •**.* !* N0113N114 ** 8181S* *• 85Nnd •.OV 0381530* 2101,1113 s.d3sn * •• ND113NO3 •..••* 10111N1311 * * 01 97NVii9 . '*.* SI +v• UN* * • .. *** **•********* SN*****•******* #X** •.. . 1,N x* b. * *•3**x•** ******** ******** 3003 . r* *0983 X3390 * . 3N11n08uns * 118 21 ** 80333 5.8350 .* H119 utiUK *190*: ET195Y9101T) . 01 8:15989 * *30 NOUN 01 *039** 911* 339 0 1801 * . * * 3301 1-1N0d 135*C **•****Er••***** ***** *******• • * * * dens NI imrs . ****** *********•• "1-13110301 *v003 *0493 UtlY5* 103 * <strong>1130</strong>d3 VIA *0803 V 0333 ••••x * NUNI 118 *. 1XON 30 51511 • *330981 3NI1NIVN**33383 0330 3AVS* : 1 0 91 1 33ril : *N1 21 11* HjWIld. * 01 N3111321 .* * * * 801S hi .80. * ********.lH**********,***LH***** ********•*Z8***•* A)1,f 0183 x x11x3****■**** .sr 43 ** *• .S3t.*.N ****53A * A.***..• •. x*****•**•*********•*• ** .*. .*• . ••*• •4,. ♦ D301 *NO 31041 *13831 1408831N1**. NO 1111 0903 .*••• NI *GOV Oil *•* 80883* 5h1V1S '200 .•• ON * W084 *811138 *.* 15.1 *. ON•* t' 107 1N3N383NI . 'lax 3*01538 ***** ****48****•* .x• * .'1 ,•,513* *.5 EU ******•***2***** **********1:1*****9943: 0593 X 2403•X* **10 *•*En*ON ** • r . •* .********** *********.r° NO .* * 931NOOD*. NO .*•1/8 00038 .* ►* 119 NOiND **• 030 • LON *• Nalno:* I. AB dainnua S30 '4 90943 *•1113 1N3N343N1 *•* *• * *". *.••• SA **•*******hi***•*•* E3** ********•• •* • *13503 10011115 * 310NI xsne .* MS0 2771 30430* *dens S181 13S38** *** ********* S3****** *********43******f 2133x 7 983**** *v.** ' • * **** • * * •X•* SO * • X • * ad *18 • .220* * Si . **EEO* • **** ► * • • .A. •***** S3A * *5*• ON *! ! N.*. •**.. ** .* .* •*. .1.• 0038 •► *• NO ..1..".** 0093919 1Q3 ". X....*• 31041 80981 •*ON •* 3N0 11031 *. 530 •* SVK 4••* IV r . •.1. .••.1. SO •* 40".10..*.**IV **520*ON **• •**• 0333 •*N13113404 •*SaA •* SI *..* *..*.N.S3•**Y.,•**• i#4**•********••**•*• •* •►********••**** •601V310,11 *X•• *13031 1drIbb3IN1*8.•* 80883 0832 * • 8088 N*1113* *•********tD*••***** ****** 43 ********•5**•***••4 a 13831 *13S38 1111M• MS0 2441 3SN0S•*********:*temt•**X Z9b3 9883****X .* 43 ** ****.************SJA • '.*•*• NO /lb35NUdS39av3d *• ON".* s'.*.*.ed********** ******** 3D4 3911038 *• •**********L1 *****ON ***** ****** .4.44.*..• .* * *• ii31 103 • * .•• II.. 1VN0111U1V •* 1 AB 53A •* ANN *' lax 1N3W393N1 •* *• * *.„. * 20 **********1U*****A 8453....* *A • * 1U a.46U.****4* ********** ***** ***** *******.. * NO 34) 3 41 08 8314003 Jil 0341s30102 1N3W3b330 * 31ViliN1 .* **** ***** **Z3***** ***********ID******X! Ltai•**** *****".. 13 * .5 * 10 *****• *Dti ****************** f5• ** 1.131408 *** 0 13031 ** * •NOI13NOA ..*". 0803 1581 13313•I3538 811*••0803 0 9Jii ".* MS0 2441 SI * . S 3A 3SN3S* *0/11i1.1 61g3h** *.4.* S9*.******* ****S8****** ******* ****10:1****** ********* * Lai ***** * ***** ****** IN********.X Xx•*►*****• •43 * 13 *• * *• •11. * .* •***SJ A • ****): ***************** *********••********w ..* * * 5* *• ND •*.*-01 339 1301 * 3301 033i• '3301 * • * 103 NI 3301 8000 ** 3301 evti x." 31091 80883 .*...•* kosn .• 03A 1.15Nrld 1330NO3 5 0/1 IN38381N1 *• 351430 38131138 * SI 4, UN•* *•** *4'.* .N. S11 ****Ev*********** **CV ***** tV75830583 4353010* • 90031331 3 55'X*• •*Ea *.22b.**b..**** *•** 4*** SV 40 v0 * * * * * ***** **** *****l0**.220."4**


******023** Al** *CR738.8.AI *..8 READ 8.. 8 STATION * *. YES8. FEET .88 . CHECK .8S.******077** NO * E5*8*** **071* .*BI *.X.* ***** CR7 7 E %*****81***********SET ERROR 'runic*• ON TO FORCE * CARD SKIP **8****0,7** 05** *******073** DI** *CR75*****0/*** ****** LOAD ACC, WITH *1100, 1447 NOT** READY ERROR CODE ***********************F1*SPST4*RA USE FOR POST ** - OP ERROR *:***************:Flowchart FIO26. <strong>System</strong> Library, CARD1• Flowcharts 306.23


'90E•oavau `icluacin tua 3sAs 'LEDO 71et131A01.1• •* 30883 40 - *. 1504 VOA asnIrd*4150►*• 3003 .41111482749NO./:* 14119 559 0905 •****•**** SH*****)1 S 9E38•0438 0893* IOSZ 1891533 ***** **••. * .44 * 69 . **::* ** * 4 * * *4*** *•*► *44*)1 )1' ON .....***** ******** .. ..4• .4* 4 * 3000 * • .1• ASo. 6.*13A31 Id/18831Ni* * 30883 39938 4 0938 •• apainuuans ..---* £083 (41(0138 * *100 1050 0004/* *02193 IOSZ 1(1915(*********4M****•4 5161 S1 *' Si.• 141114 339 0901 •.4 .•X **********Ex ***** ****** *** : * 4M****.*'s 1h8 4E33)1.**49384.1**** •X . * *44444 %58 '• * . ET ►*•*• • * .ON * **!*. . * • • * . 4 . * ***** ************** *+1.° NO 116 • •* *';31.: 419531's*- Asnw 3 IA30 **X".. NO113N04 **X"LenNTAAAMati:.* S 4' : t2d474119? : 'a 0/1 *.• * ** *•* yal pinoa *:13B. 1N3438)30************ H****▪ Eris$33 • **** *--x. 4V ** ******W. ****• ** 49 E0 .• * * •ON * *•** *•sr.... 6* X** '.. * * ' 3 1(83 * •X"* •►• 11(1 n31.13"'°*. ""* i 300 m ?T 80 *v:) , :X" r 1301 0933 r531 '4.. 40883 4•*.*NI 8009 838 135** HJIM 338 8901 *** . 45 ***(******5 8 3****•* X 4E6 1 3413i3/1 HI1M* *SO OSZ 3SN3S*X 9EEI8Zr* 11311100.1* 0/I 3011NOW **13011 163938061**4►►* *64 *• ****►******C1:7361*ON •***** •* EL) ** *****• * *1 A9lux IN3N33:1u1:*********15****:*14*• •3 69 • •*•5 ON 4*. **rt s' 15061 A9 4 3N11nub9OS4• IVX 1N314310141 * S3A 51 4.0 * 4•-4.4.(3X 8013*ON **• °44.4 . NO •**. 119 10433 .*••' * 10N •• S3A•• 53 8••*.• * ■ **13A31 AdntivaANI. • 31911619W •* 3131(419 40 * * 01 N8A133 ********** 3**** *** ****** i3****94038 x 08138ON **•** 8B84X ••• * • N9141 8369385:*53A •► 100 tin 110M*u* baJAn.- ZAS3A *(01 1531•*• NO113113•* oil ON*.• 4 Li09E38•*:44138ON *4 •••*• 3311953N•*• IN003 0809S3A daiAna *--* *••* 00• L'Tfivi3s• *•0,7.*..** •***********••***4 ..• •• * **• 0336 -4 . ... S11009 iN31411589*I8X W083 wa y * *• IN003 40/4 a. 4 30 6009 ** nuniad do 135 * '4, 833408** 53A * H11" Al 5161 4• • •4 *• . 4083 18% 40901 ►***** *****3***** .4 ********4*1X 1E138-!. XX ****'.:* .* Er • •***• ON ** - •* ***** ****** ******* 4° '4 • 4 ..• NO '. ** 339 3801638 *""•• Ile A0938 '* Lax 3A9S 4S3A '* ION ••* * •► **• *• •.•. Z8 **********I8 ******4*4****)1* *. .* 44 ** cv ** *• • •**►►**!* -• 4 * • . ****** ********** 13831 * • * ** •4 I 89 * "'X * 15311 100H11M *00433 *:602411(38b69:X"18* 1NAI1383141 • m 0*OSZ 3SN3S** 3911 911 84163*• * ******* **:.1/****** ***Vim*03. rt.** *X (4133.X 96038 00933• * *• .•.1. EY • •*8** r * *4**• 4 *44*49 • * Z4 ** ***** *4**


7*** **** ****. A2 * A3 A4 * 3 * * * ****• **** *4**• • •READ/ RE096 X ii RE216 XRES60******A7•**** * *sit* ******A3****►****** ***** A ****** ********5 ***********A1*********** BRANCH TO 4.*ENTER VIA LIRE *START 250/ CARD**USER'S ERROR *READ/ *TM/74M *X...READ..X:BViREMEVORVIN: X*SUBROUTINE WITH** * * * ** ACC /0001 ******* ***sass** . . **** ***** ****** ****************** *******4.** 54**• . * A2 * A4 * ***** ****XXRE/70x*****A1********* 97 • 3. *****B3********** *****B4**********85 *. *.* .* S. ► * .* *•YES .* NOT *. * INCREMENT XR1 * SET XR1 TO TES.,.*ETIFII TO * ...* SAVE XRI • .••.• READY BIT .* ..X* BY 1 * SPRET . I *S. *. ON *.* .*..*. ZERO .•*: ! * *. .****** ************ X . ******* ******* *** ********* ******** X 5. .****• * NO *****•*• * NO•JI 83 H4 * * . * * * ***** **** ***•;x .5. xRE362 x***** C1********** C7 • ►S. *****CS ******* ***Lou) XRI FROM .4 *. THIS TV WITH * YES .. BUFFER 4. *SENSE 2501 DSW ** ADDS OF 3 ...*. WORD COUNT .. * RESTORE ACC * •.X WITHOUT RESET*ARGUMENT ADORS B. ZERO .* . * ** * .******************* NO *:;**. X C5 * *•***Xxornon x.*. RE132 0E049*****D1********** D2 *. *****03********** D5 3.* **. * ****04 ****** *** .. S.* SAVE * .* .* PUFFER *. YES SET UP RETURN * OP COMPLETE * .5 NOT *. YES*ACC,STATUS, 7017* *. WORD COUNT .* * BOOR FROM SRI *INTERRUPT LEVEL* S. READY BIT .5...*.NEGATIVE .4, 5 4 * 3. ON .** * *. .5 * * *************** t. .5**************•**S. * .5 NO ********* ******** *• 10X.:•RES-16 x xFI S. F2 *. ***** E3********** ******E4***** ****** ******E5 ***********.3 *. .•AUFFER S. * *NO .3 1/0 3. .*WORD COUNT 5. YES*SENSE 7501 55W 3 * RESTART 2501 •..... FUNCTION .3 *.GREATER THAN .*....X ► IM R ;TATUi :WITH RESET CARD READ*.TEST (0/ .* 3. AO .5* • *3. .* 5. .5 :*•S. .3 **** ***** ******** ***** ********* YES * NO . .xilX***•Z REI08 x RETRO * K4 *El *. x F4.*.*. . .*. *MET ********* .3 *. **•*.* .* /S THIS *. YES * INCREMENT XR/ * RETURN TO .3 ERROR S. YES*. SUBROUTINE .3.... BY 2 • MAINLINE * 5. CHECK 91T .....5 . BUSY .• * * 3. ON .5•, .t* ***a•** **33**** 3. .3.3 .* ; **** ****** **** NO *33* * NO****RS *▪ * * A4 *X..• **** * ***** . XX x RE192RE370*****cl********** *****07***** ***** *****03*;******** 04 *. **G5 ******** * * * LOAD ACC WITH •*. * 9RANCH TO •INCREMENT XRI * *SFT BUFFER *ono* * /4001, 2501 .* .* LAST 4. YES *USER'S ERROR *AY 1 *.... * IN READ TOCC X..X* ILLEGAL CALL 5. CARD BIT ON .5 X*SUBROUTINE WITH*. * ERROR CODE * *. .* * ACC - /0000 ** . * * * *. ** ***** *********** X ******** ********* . *********** ****** 5.5. .3***** **** * NO. * 5***53 GS •* * * * H4 *.X*3** **** * ■ X****xRE340 K RE375*****H2***************H4*********** * * * * LOAD ACC WITH 3*SAVE USER ERROR**DECREMENT SIOCT* 3/4000. 2501 NOT.*SUBROUTINE AMR*MONITOR 1/0 READY ERROR 5X..* * COUNTER COOS *3** • • **** * * * ******** ********** . ***** ****** ******n* 42 * * * ***** ****xX.;.NO.p .YESRF077X RE704XJ1*. ***** J2** ***** *** J3 *. *****J4 ***** *****.3 3. * * .* 5. * * *SPST4 *. 5 I/O •. *INCREMENT STOCT* .* IS *.* -*..X*. FUNCTION .5 * MONITOR T/0 5 :*X*..DEXIiE0ZUS!..* :SUMIWIVIBOSY: ...*PAUSE FOR POST *.LEGAL. (II.• . COUNTER INDICATOR *. * - OP ERROR •S. .* * * . S. .5 * * . * *****••***********.****** ****** **** X* YES 34** *.illn **v.*. **** •* Jl * C5 K4 • X * *X •**** . * *****x *•**9E084... XRE348K1 *. *****K7********** *****K1***•••••** x•* *. * LOAD ACC WITH * ****K4 *********YES .3 IS THIS 5. * SET THIS * 5/4000. 2501 NOT* * RETURN FROM *...*. SUBROUTINE .5 :SUBNIMINBUSY: READY ERROR *INTERRUPT LEVEL**. RUST .* * CODE * 4 **. .3 * * 5 **. .3 ******* ***** ***** **** ******* ******* NO. .; X Xsr** **** ***•. 02 * Al • A4 * * • * * ***** **** ****Flowchart FI038. <strong>System</strong> Library, READ1• Flowcharts 306.25


pLOTI****A/********* •*ENTER VIA LIEF . * RESTORE XRT, PLUTI * • STATUS * • .************** * *********** *******a*** ****r A4 • A5 * * * ***** **AP*. .xW.*. RTA3 5. *****A *********** % %• * *YES .* .5 IS THIS *. 5*. USER*'GET & SAVE...*. SURROUTINF .. :uTIMInsi9O4n:}FR * ERROR *S . BUSY .5OF I/0 AREA *SUBROUTINE RODE**. .* * * * ****** ****** ******* NOPET****•B1•********* x****B7** *******SAVE X*1 LOAD * RETURN TO *XR1 WITH Ann* +CALLER OF PLOTI** OE LIRE + 1 * .. *1.4 ***** ***STAR x4.****E1*********** SAVE STATUS, ** ACC S Err *.........****XRI *. 84.5.5..* *. .5• * SET THIS SUER *.r *:' RiffiEn . 2.42*:* n5194. 5• s:55 BUSY INDIC &a. . *.POSITIVE .5 * FIRST INDR *. .5 R. .. • *X .. .*4. YES **** * YESs *• F2 •* a %**►**007******C3*****►**** *****c4 * x ********* • *x5** • *ZERO DEVICE . * S* woRn 5. •SAVE WORD COUNT*• 4. * . * ******** ******* *** ********* *************DT*********•• •*GET DIGIT 4 OF,**FIRST ARGUMENT*****************X X*****D4*** ******** * *LOAD ACC WITH . 5 GET I/0 AREA 5* /7RO0, 1627 4.*ADM SAVE ADDR S• AREA CODE . 5 1 * . * ********** ****** . ****** ***** ******NERDY*****D5***** ***a** LOAD ACC WITH *5/7000. PLOTTER •..X*NOT READY ERROR*CODE ■YES.*. LEGAL.*. Al ;E1 *. E7 *. .****E1** *** * ** **.5 *. .* S. * STORE DEVICE a.. I/0 .. ND .* 1,0 *. *DIGIT IN BITS 4.14. FoNETION .* x*. FUNCTION .► * - 7 OF DEVICE 5*.TEST In) .5 *.WRITE 111.* . WORD 4'*. .4. *. .* *************t****a* YES a-*-4o** F2 *.x****ERRE.- I X*****E7 **********F35.YES .5 IS THIS *. * LORE ALL WITH • NO .* WAS 5....*. SUBROUTINE ./7001, ILLEGAL *X * DEVICES. IOSY .5 *CALL EPROR conE* S. DIGIT I .5 •5*... ...*•S.***************5.* NO•• * •* YES.5*54.076. *GI *.x 02 *.X• . * ***** ****1F5FT-2 x ERRFT X*****,1•********* *****G7**************►G1*********** *INCREMENT SRI * DECREMENT SRI •* LOAD ACC WITH* Rx I *TY I & STORE IN*5 /0000,5 SPRET * a • ****** ************ **********•****** *****. ***** ***********F4***►*******MOVE FIRST WORD** OF 1/0 AREA a*DATA TO SUFFER * ►ROY X******F4**** ****** **SENSE 1677 DSW 5..x WITHOUT RESET.s.G4 S..* *..* NOT S. YES*. READY BTT .**. ON .*S. .*s' .•***** ES***** *****• S 4 131.1 1 DEVICE **0/0/0 INTO BITS** 4-7 OF ACC *x %x x ART.*.•****H1*********• *****H2 ***** ***** H3 S.•*.H4 a.. 5 .S !NETT SRI : SE/ XXI TO ** SPRFT • 1 . YES .5.• .. 5.YES .* .5 DEVICE *mot.* * ACC - 0 .* ••.5. BUSY BIT ON .*..*5...S. .*.** *..5 .***************** i. .** ND • NO•RESET X*****J1*********** RESTOPEACE • *ExT***** J3**********• CANS WRITE &S SENSE /OCC . S *:* ***** *****.***:*****.I ***********V N5WITPOI NO":* COUNTER BY 1 •RESET+I X*****1(1.*•*******. SET UP' RETURN ** Ann?, FROM .R1 *:********k#A#AAA:•:****K3 ***** ****: *****R ********* is* SET HEX 01010 ** INCREMENT ORE ►*IN imp COUNTER*BY 1 *TO 5:***************:• •**** *•** •*►*** ►• 02 * * 44 A5 • * * ****. ****Flowchart FI039. <strong>System</strong> Library, PLOT1• 306. 26


****A? ** • *****5*8*A3 * **6****•** ** 44 *****/NTI****A1*** ***** **INTERRUPT ENTRY** VIA 11003 ******************IPRG*****Ri*********** RESTORE SENSE ** OSW IOCC *:******************cl ******* *****SE NCH 1WFV 54 **************51 • S. *.NO .* • R ARITY *....*. FPROR BIT .*. *. ON .**.X**** YFS* HI ***********F1*********LOAD ACC WITH ,0001 (OR( E a INTO DE VTCE * OIGIT IN BITS 4-7 *************■****FRR**11******** ** BRANCH To *6 USER'S ERROR ** 51)65001 IRE. .GE ..NO .*▪ USER *...*. SET ACC TO .6**** * YES*6*6*• JA * •HI 60(***** ***** PLT X*****“1*********** DECREMENTOUP 6 COUNTER AY 1 ******************•J1 *..6 6.NO .6 COUNTER 6..*. .LE. 0 .6*. .*6. .6X *. .*+A.** * YES****J l *077* .X* * XI *.X.********* • ALPHA X*****K!**********F R O OUPLICATE * COUNTFR ******************•****A7 * ******ALPHA.? X*****A2********GET 02745*..X* *GET NEXT DIGIT *********** *******.!.. 5 82 ** *.YES .6 IS 8....*. DIGIT 13, E. .*5. 08 F .•5. .•***10•12 *..6 6..6 IS *. NO*.DIGIT * A, S. .6...OR C .**• .**. .6 * YES*.0,-.6 *.NO .5 /S *..6. DIGIT A .6.*6. .60 *.**** YES* •* J2 *. •*********E7* ****** ****GET 02715*•*OFT NEXT OIGIT * *******************46+*F7 5.0* ***** AL-5 X*****F?** ******* * *STORE IN nUP COUNTER * ******************G2 6. S.YES .* ▪ OUP *6, COUNTER = .. *.**. •** ND***•J2 6...* .**** XAC .*.J2 6. *.. • IS 6• YESDTGTT C .5.....5.*X• NO ****Fl * **********K2***********GET 02745•*GET NEXT DIGIT ********************** AI * *****C-5 %*****A3*********** SHIFT LEFT 4 *..X*BITS G STORE IN** OUP COUNTER **** ***** *mt.********ss* ******* ***GET 02745**GET NEXT DIGIT •******* ***************C3 **********'OR, DUP * COUNTER INTO *ACC****************** *****..XF2 * **4***6*6* ** El *...* * .**** C X*****ES* ***** *****GET 02745** **GET NEXT DIGIT ** ***********************FS ******* *6*** SHIFT LEFT 4 **BITS C STORE IN** DUE COUNTER ***********************GA***********GET 02745** **GET NEXT DIGIT ******************LOOK*****H3*********** ADO 010/T IN **WORK TO AnDR OF** PLOTTER CNTRL **woRns, STORE IN*!MC ******************XXPLOTC X******J3************SENSE 1627 0514 *WITHOUT RESET X...***********•**(4** *ji •* *****K3 • •6..5 *. ****.5 BUSY OR • 6. YES*. NOT READY .5..•.1* E4 BITS ON .* * *5. .* ***** NO•****44 * *****.*. GETAi R.6 6..* • FIRST *. YES*. DIGIT INDIC .5....NVVIIVALIUBR I:6. ON .6•6 . .6;* NO ****6 6• H4 * **•*******B4************ WRITE 1627 ■PLOTTER COMMAND* *••EXIT :****C4 *X********* RETURN FROM •* INTERRUPT *X..***************NR****4 *********** LOAD ACC WITH */7000, PLOTTER *..X*NOTY ERROR*. DE ROD•**************•**•***E4 * **********F4**** *******SPST3*PAUSE FOR POST ** - OP ERROR ******* ****** **a***•*•H4 6...* * .*6•*FST*****H4**********ZERO FIRST * DIGIT INDIC 4 *******************PAWN COMMAND'• •****** ********026** GI***• DECREMENT HEX •• DIGIT IN WORD •■ COUNTER WY 1 • •XC5•***..6 6..* COUNTER 4. NO•. .•*. .64. • 4, XYES6020*• CS*• *X***** Ds ***** ***** ■• RESET COUNTER • TO 4 BY *6. INCREMENTING •••*DECREMENT WORD ** COUNT BY 1 *F5 • ••..8.* • COUNTER *• 6. NO5. .LE. 0 .6....4. •66 .6. .••*%* YES*028■• Al*6i nTATMIT t38":* COUNTER BY I •W• $ T ,,INP f84:J5 • 5..6NO .* FIRST *. *S.• DIGIT INDIC • .66. ON .66. .•• * YES***S.*026** Gl•* *Flowchart FI040. <strong>System</strong> Library, PLOT1• Flowcharts 306.27


8Z '90£LT,Old `Ireami tualsAs TtOL4 Izetromoil***************1:14115 1VNb3INI* WObiNbOl3b *• *******1:4********************JJ â*• 01XbOA 4083 * 11910 ibu1S3* ***********130****X*****************N4UMNI 134 3bOIS 2 33V 0141 * 4118 131HS ***********10*****X*****************jjv 5.0432 143 NI SAG** WUbl 0804 130 * •Mis### ## 8 131HS* JO* 13 **V20*********** ***********4./139 01 V31V 011*NI 01 031N10/1 ** ION UbUM 3AON 5**********Ib*************** ******** 1 ** ASV389 Oil 30**SUUUV ININ3b3141.*1V *****X 4nuol


6Z •90£ slretionnota •DISIG `Areacin tualsAS 'ZVOL3 lautpmou**** ▪ EV * ** * ****** ********* **** *• bolvinwaa pv oi*.400S 3003 83Vdd.***** *****EN ********* ********* ***** NOISN3183 01 ** SSAVUOV 80113S.******►***zr *****• **la * S*8 **000*** ***• 50111 **a' 91 0318130 •*ON .* 3A5H 8.* * EH•*• ASb04***** ***►******•a OUZO VIA ** basn 01 101<strong>1130</strong>*►►**►****43*►**Xi2tix 13x 3t01s3ai * 01020 01A *X*ZNSIO 01 14013b**********E3#***00120 09000***** *X . ► 43 4.6E0*****ON:* ********** ****** 1o0d83INI *alovt4:*********1****SJA *S .• •**• •.0**808113 •*91.0 *.* •01020• 15 00020 wubJ 11015 1801121 ** st3sn 13S .**********13***►* 0E010**** *X • . Id* ****** 505 38* 1/J89 0/1 JAYS'4 83 * **** ****** 1J********************** :********.********** 3301 1133053*•315111<strong>1130</strong>01 NO113NflA ** -. * tINVUMSe3nn •* 0315100dd 3AVS*OIX* ***********EU****► **********I0************** ***** **** ************ *• 08120 15 SS37100* * • *flax} SS 33005 *5355 . 011. 001zu •* 0380 0/I 3A5S ■ IN3ann5 0108 * *10 Ed% 140 3805*► * **** * lax 3301038 • *********** 43***** ***** *****E3***** **********I3**•**X 11 x UWIZU X* ****************►*****•▪ 090I0 01070NO111S0d* • • IV S33,300 : NtAli VIAH 3695 ** WVV 09313 * * 1110138 SASS *•**►►*******8***** **********te***** **•*►*** *eu*****ON **.*. SS3W30b8.*NI •*S34 •* NOI1Vddd0 *.** XS I0 *.* lbxAS404***** ***** *******d101_801183 * •44••44* •******3A11Vd3d0150. • * * t * N01150330 01 0314.00 8 *AdIN3 IdO3U31NI* AdiN3 1011111 *... 31,1111N1 * * * ► 5 * *.8 ******** 4.**** ► EiSdS* ********t 25a*** *********IV****OLOZG X 06110 01020 000/1)


0X.*.2*•A5 *.•.* LAST 5.REMOVE DarvF **CONSTRUCT READNO .* SECTOR TO *..*rnnE AND SECTOR* . CHECK [DLL *...*. READ/WRITE *NUMBER*44** •*.•.•* * **** *. ..**010******* ******** *** ** * *. RI**. 84 *-*.YES• •****•07710 *****R1 ****** *4**X*****52********** ***** B3********** *****B4**** ***********85 **********•* * **INCREMENT SIOCT. : ST; 21m IN **CONSTRUCT SENSE. SOLACE SEEK IOCC**COUNTER B y ONE **WITH RESET IOCC* *IN CURRENT IOCC* :REAMIUMNgilDs:* * * *•* ****Mk.** ***** ** .***•**010*cl ..Y* •*v.,07235 *****cf**** *4**** *****tx* **************C1 ****** **** %*****c.**•************c5 ******* ***suaTaArt NEXT *01070 (129A4* •. SET XR1 WITHDEFECTIVE INTERMEDIATE * *• ORIGINAL I/O *.CYLINDER FETCH WORD * SCTR Anna TO *4 NREA AnnaEss A•* ADDRESS * .* COUNT OF 371 *EXTENSION s * INITIATE SEEK ******************• .:******* ****** ***************** :**** ******* ****: ******************I.***030*X01 *.x* *X5********ni*********•00340 Xn7 *.*****D3********** *****04***** ***** •*****D5 * *********•*SAVE WD rAINNT, NO .* MDR 6 *.*SCTR SENSE DNA AND *AnoR FR * PLACE IOCC TO .*. OTR THAN .**SET WORD COUNT 1/0 A.Fh ** SAVE AT SODSw • *READ 1 WORD IN INTO I/O AREA *..BAD ADDS .** CURRENT IOCC * •*. .*******************. ,* ***•*******•**.** ******* ********: :*** ********** **:YES*********E1********** ***** F/.......*** *****E4** *************E5 *********INITIALIZE •INCREMENT *.. WRITE *.INTERMEDIATE *D2070 029A4*DESIRE SET /OCC FOR .*HAS SELECT .. YES * WOCNT, SCTR--* **REQUESTED ** CYLINDER S. OR ROWER .5.... INITIATE READ *REAO/WRITE INTO**AnOR WITH THESE**ADDRESS BY ONE .*A. UNSAFE .* OF SECTOR *VALUES. CURRENT IOCC **S. .** ADDRESS ,*r*•••••.•********* ***************** X ******* ****** ********* NO*DAD**031** * 01*F1 ..x MAIN . • ** 1000* * *07,40 *****F1*********.F,• •F3 S. *****F4********** *****F5********•.* *-..*FrTCH AND SAVE **ESTE ORDECODE *.. LOOPED A. NO. * DISKI *. *. NO DR CODE FETCH SECTORF ROM* Ir. 1 TIMES *R NO.....„IN SECTO TO R S. READY ...... *I/0 A X ES *ADDRESS AND ** .*ADDRESS IN I/O •..***, .*. *PLACE IN 5C yLIN. AREAS. .****************.* * *X ***.** ************ YES • YE.S $*****011*x CONSTRUCT * C4*'ND MO OF . *IOCCS .*****.1**********••• SEEK*****G1********** G4 .. ERROR *****G5** ***** • * ***usE nRIVE CODE 4..*IS THIS*. *00070 029A4*FETCH DESIRED HTO CO4PUTF.* THE F. NO * *:FETCH AREA CDOE: CYLINDER ADM/ It 4.ADDRESSES OE:REQUESTER .*.... • INITIATE FROM I/O AREA A*S. Anna*.* *REQUESTED READ,** S.******************* ********** *****.• *WRITE FUNCTION *X* YES **R***0pq.. G2*. * *•****H/**********00400*****H7** ******* 5 *****H3 ***** *4*** H4 5. *****H5* *********• CONSTRUCT ** SACRA• SUBTRACT .*INTER— *. ** POSITIVE . CURRENT ARM A *.* MEDIATE•*. YES *SET READ/CHECK **DIRECTION SEEK * POSITION,—X*. WORD COUNT .5.... IOCC 5 *. IOCC INTOtCyLIN ** **.EXHAUSTED.* . * CURRENT IOCC *....**********. ..********* ******** ********* ********.*„ .* X ***** ** ***** ****** NO ******03/** 02** * X* mt.*.•,•01/******J1*****•****•*****J7********** AI*J3 *.* •c.• INI T IALIZE **CONSTRUCT READSEEK *. Nn*coLLOWING LOP •* DECREMENT **fOcC WITH SCTR* *.* FOR 1 pNECESSARY ..*INTERMEDIATE RD•ASSES • * NUMBER • *, ,** CNT By 120*,•********.********.******** ******* *** ***** ************4. YESX.****K1********•* ***** A2**********x•****R4*********** Fil&SH WWI K :* FETCH SECTOR*roNVERT A WRITE*. ADDRESS FROM lord IF WRITE *INCREMENT *DIRECTION AND •* INTERMEDIATE •* I/O DuErER * * REQUESTED NO. OF *SCTR SODA 1Y I •****************** CYLINDERS ** ***** *********** *********** ***** .**** ****** **Am..*. .; 7(* * * *'R.**. ** * 14 • A5 ** * .**** ..**Flowchart 21043. <strong>System</strong> Library, DISKZco 306.30


;Al *..* WAS *.YES .* REIOESTED *....*. FUNCTION ..S. 11E40 •**. .** NOx*****B1***********ronrn 02954** ** INITIATE REM', ** CHECK ** ***********♦*********** *031** C4** *xx D7220 ;*****ci*************** c**********. . **RESTORE 2 SAVED* * FETCH 5000 TO *BUFFER WORDS * ACCUMULATOR * * ***** ****************** *n11* *011* ******* ***** ****** 02* * n3*4 * * ** *07210 ; 07215 X X01 *. *****D2********** *****n3********** *****D4**********.. *. * * * • *SPRET .. INTMO *. TES * CLEAR BUSY . * FETCH 5002 TO * **. Wolin CNT .* x*INDICATOR SOPS y * * ACCUMULATOR * * BRANCH TO *..FxHAUSTEn.. * * * * PREOPERATIVE *• .* * * * * * ERROR TRAP ****************** ***************** ****************** NO•; ;***** ******029* *010** Al* * 01******F1 ****** **** *****F7********** * * * ** * * * * ** POINT **1 170 *DECREMENT IOC. **WOROS AHEAD TO * * COUNTER SIOCT *NEW lin AREA BY / * * * **.************** ********** ****** *;******049** 04******F1********** * .* * ** SAVE FIRST 2** WORDS OF THIS ..* AREA .* ******************.****01**********SET ** INTERMEDIATF **wDRO FOUNT ScyR**0000 INTO THISAREA ********** *****Flowchart F1044. <strong>System</strong> Library, DISKZ• Flowcharts 306. 31


APPENDIX A. EXAMPLES OF FORTRAN OBJECT CODINGThis appendix shows, by example, <strong>the</strong> Assembler by <strong>the</strong> FORTRAN Compiler. A typical cross-sectionLanguage equivalent for <strong>the</strong> object coding generated of FORTRAN statements is shown.Source CodingObject CodingObject CodingWith Trace*Arithmetic Statements - real, integer, and mixed modesI=JLD L JSTO L ILIBF SIARDCA =BLIBF FLDDCLIBF FSTODC ALIEF SFARA=ILD L ILIBF FLOATLIBF FSTODC ALIBF SFARI=ALIBF FLDDC ALIBF IFIXSTO L ILIBF SIARDCI=K-MLD L KS L MSTO L ILIBF SIARDCA=I-BLD L ILIBF FLOATLIBF FSUBDCLIBF FSTODC ALIBF SFAR* The period in this column indicates that <strong>the</strong> generated coding is <strong>the</strong> same as in <strong>the</strong> Object Coding column. Trace refers to Arithmeticor Transfer Trace, whichever is applicable.Appendix A. Examples of FORTRAN Object Coding 307


Object CodingSource Coding Object Coding With TraceA =B-ILD L ILIEF FLOATLIEF FSBRDCLIBF FS TOLIBF SFARDC AA =B+I -JOr(A =I+13-f)LD L ILIBF FLOATLIBF FADDDCLIBF FS'TODC GT1LD L JLIBF FLOATLIBF FS BRDC GT1LIBF FS TOLIEF SFARDC AI=J*KLD L JM L KSLT 16STO L ILIBF SIARDCA -43* CLIBF FLDDCLIBF FMPYDCLIBF FS'TOLIBF SFARDC AA =B*ILD L ILIBF FLOATLIBF FMPYDCLIBF FSTOLIBF SFARDC A308


Object CodingSource Coding Object Coding With TraceI=J / KLD L JSRT 16D L KSTO L ILIBF SIARDCA=B / CLIBF FLDDCLIBF FDIVDCLIBF FSTODC ALIBF SFARI=J / (K+M)LD L KA L MSTO 3 +126LD L JSRT 16D 3 +126STO L ILIBF SIARDC1=A / JLD L JLIEF FLOATLIBF FDVRDC ALIEF IFIXSTO L ILIBF SIARDCI=J**KLD L JLIEF FIXIDCSTO L ILIEF SIARDCAppendix A. Examples of FORTRAN Object Coding 309


Object CodingSource Coding Object Coding With TraceA =B**ILIBF FLDDCLIBF FAX"DCLIBF FSTC)DC ALIBF SFARA =B**CLIBF FLDDCCALL FAXBDCLIBF FSTODC ALIBF SFARA=i**BLD LLIBF FLOATCALL FAXBDCLIBF FSTC,DC ALIBF SFARA=B**(I+J)LD L IA L JSTO L GT1LIBF FLDDCLIBF TAXIDC GT1LIBF FSTODC ALIBF SFARA=B**(C+D)LIBF FLDDC CLIBF FADDDCLIBF FSTODC GT1LIBF FLDDC310


Object CodingSource Coding Object Coding With TraceCALL FAXBDC GT1LIBF FSTOLIEF SFARDC AA =B+C -(2**D*E -F)/GLIBF FLDDCLIBF FADDDCLIBF FSTODC GT1LD L ADR1LIBF FLOATCALL FAXBDCLIBF FMPYDCLIBF FSUBDCLIBF FDIVDCLIBF FSBRDC GT1LIBF FSTOLIBF SFARDC AADR1 DC 2Arithmetic Statements - Subscripted ExpressionsA(I)=B(I,J)+C(I,j)LIBF SUBSCDC SGT1DC value D4 for array ADCDC value D 1 for array A (see Note 1)LIBF SUBSCDC SGT2DC value D4 for arrays B and CDCAppendix A. Examples of FORTRAN Object Coding 311


Source Codin .g. Object CodingObject CodingWith TraceDC value D , for arrays B and CDCDC value D 1 for arrays B and C (see Note 1)LIBF FLDXDCLIBF FADDXDCLDX II SGT1LIBF FSTOXDC ALIBF SFARXJ, K) LIBF SUBSCDC SGT1DC value D I for array LDCDC value D 3 for array LDCDC value D array LDCDC value D for array L (see Note 1)LD Li LSTO L MLIBF SIARDC MM( I)=M( I+1 ) +M(J) LIBF SUBSCDC SGT1DC value D I for array MDCDC value D for array M (see Note 1)LIBF SUBSCDC SGT2DC value D for array MDCDC valise D 1 for array M (see Note I)LIBF SUBSCDC SGT3DC value D 1 for array MDCDC value D 1 for array M (see Note 1)312


Source CodingObject CodingObject CodingWith TraceLDX Il SGT2LD Ll MLDX I1 SGT3A L1 MLDX Ii SGT1STO Ll MLIBF SIARXDCM(1 )=M(2)+M(3)LDX Ll value D for literal subscript 24LD Ll MLDX Ll value D for literal subscript 34A Ll MLDX Ll value D for literal subscript 14STO Ll MLIBF SIARXDC MM(1)=N(1)+M(1)LDX Li value D for literal subscript 14LD Li NA Li MSTO Ll MLIBF SIARXDCStatement Function StatementsA =JOE(B+C , D)+ELIBF FLDDCLIBF FADDDCLIEF FSTODC GT1CALL JOEDC GT1DCLIBF FLOATLIBF FADDDCLIEF FSTODC ALIBF SFARAppendix A. Examples of FORTRAN Object Coding 313


Object CodingSource Coding Object Coding With TraceA(B, .5)+E CALLDCDC ADR I.LIBF FADE)DCLIBF FS TODC ALIBF SFARADR1 DC .5Call StatementsCALL XYCALL XYCALL YZ (A(2), A(I), B, C*D)LIBF SUBSCDC SGT1DC value D 4for array ADCDC value D for array A (see Note 1)1LIBF FEDDCLIBF FMPYDC DLIBF FSTODC C;T1LDX Ll value D4 for literal subscript 2MDX Ll ANOPSTX Ll ADR:.LDX I1 SGT1MDX Ll ANOPSTX Ll ADR2CALL YZADR1 DC 0ADR2 DC 0DCDC GT1314


Object CodingSource Coding Object Coding With TraceCALL YZ (A(I), B, C*D)LIBF SUBSCDC SGT1DC value D for array A4DCDC value D for array A (see Note 1)ILIBF FLDDCLIBF FMPYDCLIBF FSTODC GT1LDX I1 SGTIMDX LI ANOPSTX Ll ADR1CALL YZADR1 DC 0DCDC GT1DO and CONTINUE StatementsDO 10 I=J,K10 CONTINUELD L JSTO L IADR1 (next sequential instruction)DO 10 I=J,K,M10 CONTINUEADRIMDX L I, 1MDX *LD L IS L KBSC L ADR1 , +LD L JSTO L I(next sequential instruction)Appendix A. Examples of FORTRAN Object Coding 315


Object CodingSource Coding Object Coding. With TraceLD L IA L MSTO L ISLBSC L ADR1,+GO TO StatementGO TO 111BSC L ADR1ADR1 (coding generated from statement 111)Computed GO TO StatementGO TO (111,112,113),ILDX Il ILOC 1 BSC Il LOCI +1DC ADR1DC ADR2DC ADR3LIBF SGOTOADR1 (coding generated from statement 111)ADR2 (coding generated from statement 112)ADR3 (coding generated from statement 113)IF StatementsIF (I) 111,112,113LD L IBSC L ADR1BSC L ADR2,+-BSC L ADR3, -ZADR1 (coding generated from statement 111)LIBF SIIFBSC L ADR1, +ZBSC L ADR2, +-BSC L ADR3, -ZADR2 (coding generated from. statement 112)ADR3 (coding generated from statement 113)316


Source CodingObject CodingObject CodingWith TraceIF (A) 111,100,113 LIBF FLD100 CONTINUE DC ALD 3 +126LIBF SFIFBSC L ADR1,+ZBSC L ADR2, -ZADR1 (coding generated from statement 111)ADR2 (coding generated from statement 113)IF (A+I) 100,111,100 LD L I100 CONTINUE LIBF FLOATLIBF FADDDC ALD 3 +126LIBF SFIFBSC L ADR1,+-ADR1 (coding generated from statement 111)IF (I) 111,111,112LD L IBSC L ADR1,+BSC L ADR2, -ZLIBF SIIFBSC L ADR1,+BSC L ADR2, -ZADR1 (coding generated from statement 111)ADR2 (coding generated from statement 112)PAUSE StatementPAUSE 11LIBF PAUSEDC ADR1ADR1 DC /11STOP StatementSTOP 21LIBF STOPDC ADR1ADR1 DC /21Appendix A. Examples of FORTRAN Object Coding 317


Source CodingObject CodingRETURN Statementsfor (REAL) FUNCTION subprogram LIBF FLDwhere <strong>the</strong> subprogram name is COMP DC COMPBSC I address of subprogram linkword in transfer vectorfor (INTEGER) FUNCTION subprogram LD L ICOMPwhere <strong>the</strong> subprogram name is ICOMP BSC I address of subprogram linkword in transfer vectorfor SUBROUTINE subprogram BSC I address of subprogram linkword in transfer vectorEND StatementThe END statement produces no object coding.I/O Initialization CallsThe following coding for <strong>the</strong> initialization of <strong>the</strong> FORTRAN I/O subroutines at execution time is generated and inserted into <strong>the</strong> programby <strong>the</strong> compiler.LIBF UFIO ,(see Note 2)DC /000XLIEF SDFIC (see Note 3)DC /000XLIBF MO (see Note 4)DC /00YXDC /0016LIBF TYPEZ or LIBF WRTYZ (see Note 5)DC 0LIBF CARDZ (see Note 6)DC 0LIEF PRNTZDC 0LIBF PAPTZDC 0LIBF PRNZDC 0LIBF TYPEZ (see Note 5)DC 0LIEF WCHRIDC 0LIBF READ ZDC 0LIEF PNCHZ (see Note 6)DC 0LIBF F1,13 (or ELD)LIBF FSTO (or ESTO)318


Source CodingObject CodingNon-Disk I/O StatementsREAD (N, 101)A,ILIBF SREDDCDC 101LIBF SIOFDC ALIBF SIOIDCLIBF SCOMPREAD (N, 101) Xwhere X is dimensionedLIBF SREDDCDC 101LIBF SIOAFDC XDC number of elements in array XLIEF SCOMPREAD (N, 101)(X(I), 1=1,5)LIBF SREDDCDC 101LD L ADR1STO L IADR3 LIBF SUBSCDC SGT1DCDCvalue D 4for array XDC value D 1for array X (see Note 1)LIBF SIOFXDC XMDX L 1,1LD L IS L ADR2BSC L ADR3,+LIBF SCOMPADR1 DC 1ADR2 DC 5Appendix A. Examples of FORTRAN Object Coding 319


Source CodingObject CodingWRITE (N,101)A,ILIBF SWRTDCDC 101LIBF SIOFDC ALIEF SIOIDCLIBF SCOMF'Unformatted I/O StatementsREAD (N) A ,LIBF UREDDCLIBF UIOFDC ALIBF URNDCLIBF UCOMI'READ (N)LIBF UREDDCWRITE (N) A , ILIBF UCOMI'LIBF UWRTDCLIEF UIOFDC ALIBF UK)IDCLIBF UCOMF'Disk I/O StatementsREAD (I'K) A, ILIBF SDREDDCDCLIBF SDF'DC ALIBF SDIDCLIBF SDCOM320


Source CodingObject CodingWRITE (2'IBASE+IDISP (K)) A ,B,X LIBF SUBSCwhere A, B, and X are dimensioned DC SGT1DC value D4 for array IDISPDCDC value D 1 for array IDISP (see Note 1)LD L IBA SEA LI IDISPFIND (J, K)STO GT1LIBF SDWRTDC TWODC GT1LIBF SDAFDC ADC number of elements in array ALIBF SDAFDCDC number of elements in array BLIBF SDAFDC XDC number of elements in array XLIBF SDCOMLIBF SDFNDDCDCManipulative I/O StatementsBACKSPACE I LIBF BCKSPDCREWIND 10LIBF REWNDDC ADR1ADR1 DC 10END FILE 10 LIBF EOFDC ADR1ADR1 DC 10Appendix A. Examples of FORTRAN Object Coding 321


NOTES:1. Tagged to indicate <strong>the</strong> end of <strong>the</strong> subscript argument list.2. The LIBF UFIO and its parameter are inserted only if unformatted I/0 statements are encountered in <strong>the</strong> program. X is <strong>the</strong> integer sizeand precision indicator.3. The LIBF SDFIO and its parameter are inserted only if <strong>the</strong> Disk indicator (bit 8) in <strong>the</strong> IOCS word is on. X is <strong>the</strong> integer size andprecision indicator.4. The LIBF SFIO, its parameters, and <strong>the</strong> LIBF table are inserted only if indicators o<strong>the</strong>r than <strong>the</strong> Disk indicator in <strong>the</strong> IOCS word are on.Y is <strong>the</strong> trace device indicator. X is <strong>the</strong> integer size and precision indicator. The DC /0016 provides <strong>the</strong> number of words from <strong>the</strong>LIBF SFIO to <strong>the</strong> first word following <strong>the</strong> LIBF table, inclusive.A LIBF to a FORTRAN I/O device subroutine is present in <strong>the</strong> LIBF table for each device indicated by a bit in <strong>the</strong> IOCS word. If a deviceis not ind:icated by a bit in <strong>the</strong> IOCS word, <strong>the</strong> LIBF is replaced by a DC 0.S. If "KEYBOARD" is specified, <strong>the</strong> LIBF TYPEZ is inserted; if "TYPEWRITER" is specified, <strong>the</strong> LIBF WRTYZ is inserted.6. If "CARD" is specified, <strong>the</strong> LIBF PNCHZ is not inserted; if "1442 PUNCH" is specified, <strong>the</strong> LIBF CARDZ is not inserted.322


APPENDIX B. LISTINGSThis appendix contains 1) assembly listings of <strong>the</strong>Resident Monitor, including DISKZ, and <strong>the</strong> ColdStart <strong>Program</strong>, 2) listings describing <strong>the</strong> contents ofDCOM and <strong>the</strong> Resident Image, 3) <strong>the</strong> equivalencesused throughout <strong>the</strong> monitor system programs, and4) a cross-reference listing of all <strong>the</strong> symbols usedin <strong>the</strong> above items.The contents of this appendix are not to beconstrued as an external specification, i. e. , <strong>the</strong>locations in <strong>the</strong>se listings may be changed. $PRET,$OREQ, $EXIT, $LINK, and $DUMP are <strong>the</strong> onlyguaranteed locations.Note that in <strong>the</strong> listings <strong>the</strong> character isprinted as ', and <strong>the</strong> character is printed as =.ADDR REL OBJECT ST.NO. LABEL OPCD FT OPERANDS 10/SEQNO0001 RLTV ADDR* SYMBOL* DESCRIPTION PMN000100002 * * * PMN000200003 * 0-3 * * RESERVED FOR EVEN BOUNDARIES PMN000300004 * 4-5 * )NAME * NAME OF PROGRAM/CORE LOAD PMN000400005 * 6 * NDBCT * BLOCK COUNT OF PROG/CORE LOAD PMN0005000 06 7 * NECNT * *FILES SWITCH--ZERO MEANS NO PMN000600007 * * FILES HAVE BEEN EQUATED PMN000700008 * 8 * NSYSC * SYS/NON-SYS CARTRIDGE INDR PMN000800009 9 * AJBSW * JOBT SWITCH-- NON-ZERO MEANS PMN000900010 * * TEMPORARY MODE PMN001000011 10 * NCBSW * CLB-RETURN-TO-DUP SWITCH-- PMN001100012 * * * ZERO=CLB RETURN TO SUPV PMN001200013 * 11 * NLCNT * NO. OF LOCALS PMN001300014 * 1? * NMPSW * CORE MAP SWITCH--ZERO MEANS PMN001400015 * * DO NOT PRINT A CORE MAP PMN001500016 * 13 * 1MDF1 * NO. OUP CTRL RECDS IMODIF) PMN001600017 * 14 * #MDF? * AMR OF MODIF BUFFER PMN001700018 * IS * *NCNT * NO. OF NOCALS PMN001800019 * 16 * NENTY * RLTV ENTRY ADDS Of PROGRAM PMN001900070 * 17 * ORP67 * 1442-5 SW 1011442-5 ON SYSTEM PMN002000021 * 18 * NTODR * 'TO' WORKING STG DRIVE CODE PMN002100022 * 19 * NFRDR * 'FROM' WORKING STG DRIVE CODE PMN002200023 * 20 * NEHOL * ADM OF LARGEST HOLE IN FXA PMN0021000 24 * 71 * NESZE * BLK CNT Of LARGEST HOLE IN FXA PMN002400025 * 77 * OUHOL * ADDR OF LARGEST HOLE IN UA PMN002500026 * 21 * OUSZE * BLK CNT OF LARGEST HOLE IN UA PMN002600027 * ?4 4005W DUP CALL SW--NON-ZERONDUP CALL PMN0027000?8 * 75 * *plop * PRINCIPAL I/0 DEVICE INDICATOR PMN002800029 * 76 * NPPTR * PRINC. PRINT DEVICE INDICATOR PMN002900010 * 27 * *CIAO * RLTV ADDR IN . STRT OF CIL ADDR PMN003000031 * 78 * NACIN * AVAILABLE CARTRIDGE INDICAT2-2 PMN00310003 2 * 79 * OGRPH * 2250 INDICATOR 2G2 PMN003200033 * 10 * OGCNT * NO. G2250 RECORDS 2G2 PmN003300014 * 31 * ILOSW * LOCAL-CANNOT-CALL-LOCAL SW 2-2 PPIN003400015 * 3? * 1X1SW * SPECIAL ILS SWITCH 2-2 PMN003500036 * 11 * NECNT * NO. OF *SQUAT RCDS 2-4 PMN003550017 * 33-34 * RESERVED FOR FUTURE USE 2-2 PMN003600038 * 35 * NANDU * 1+BLOCK ADDR OF END OF USER PMN003700019 * * AREA (ADJUSTED) LOGICAL DR 0 PMN0038000 40 * 36 * * 1+8LOCK ADDR OF ENO Of USER PMN003900041 * * AREA (ADJUSTED) LOGICAL DR 1 PMN004000042 37 * * 14. BLOCK ADDR OF END OF USER PMN004100043 * * * AREA (ADJUSTED) LOGICAL OR 2 PMN004200044 * 18 * * 1+8LOCK ADDR OF END OF USER PMN0043000 45 * * AREA (ADJUSTED) LOGICAL DR 3 PMN004400046 * 39 * * 1+BLOCK ADDS Of END OF USER PMN004500047 * * * AREA (ADJUSTED) LOGICAL DR 4 PMN004600048 40 * UBNDU * 1+BLOCK ADOR OF END OF USER PMN004700049 * * * AREA (RASE) LOGICAL DRIVE 0 PMN004800050 * 41 * * 14-BLOCK ADDR OF END OF USER PMN004900051 * * AREA (BASE) LOGICAL DRIVE I PMN005000052 42 * * 14-BLOCK ADDR OF END OF USER PmN005100053 * * * AREA (BASE) LOGICAL DRIVE 2 PMN005200054 * 43 * * 1*BLOCK ADDS OF END OF USER PMN005300055 * * * AREA (BASE) LOGICAL DRIVE 3 PMN005400056 * 44 * * 1+BLOCK ADDS OF END OF USER PMN005500057 * * AREA (BASE) LOGICAL DRIVE 4 PMN005600058 * 45 * NFPAD * FILE PROTECT ADDR, LOGICAL PMN005700059 * * DRIVE 0 (BASE) PMN005800060 * 46 * * FILE PROTECT ADDR, LOGICAL PMN005900061 * * * DRIVE 1 (BASE) PMN006000067 * 47 * * FILE PROTECT ADDR, LOGICAL PMN006100063 * * * DRIVE 2 (BASE) PMN006200064 * 48 * * FILE PROTECT ADDR, LOGICAL PMN006300065 * * DRIVE 3 (BASE) PMN006400066 49 * * FILE PROTECT ADDR,LOGICAL PMN006500067 * * * DRIVE 4 (BASE) PMN006600068 * 50 * APCID * CARTRIDGE ID, PHYSICAL DRIVE 0 PMN006700069 * 51 * * CARTRIDGE ID, PHYSICAL DRIVE 1 PMN006800070 * 52 * * CARTRIDGE ID, PHYSICAL DRIVE 2 PMN006900071 * 53 * * CARTRIDGE ID, PHYSICAL DRIVE 3 PMN007000072 * 54 * * CARTRIDGE ID, PHYSICAL DRIVE 4 PMNOOTIO0073 * 55 * NCIDN * CARTRIDGE ID, LOGICAL DRIVE 0 PMN007200074 * 56 * * CARTRIDGE ID, LOGICAL DRIVE 1 PMN00730Appendix B. Listings 323


ADDR REL OBJECT ST.NO. LABEL OPCD FT OPERANDS10/SEQN00075 * 57 * * CARTRIDGE ID, LOGICAL DRIVE 2 pMN007400076 * 58 * * CARTRIDGE ID, LOGICAL DRIVE 3 PMN007500077 * 59 * * CARTRIDGE ID, LOGICAL DRIVE 4 PMN007600078 * 60 * OCIBA * SCTR ADOR OF CIB, LOGICAL DR 0 PMN007700079 * 61 * * SCTR ADDR OF C113, LOGICAL DR 1 PMN007800080 * 62 * * SCTR ADDR OF CIB, LOGICAL DR 2 PMN007900081 * 63 * * SCTR ADOR OF CIB, LOGICAL DR 3 PmN008000082 * 64 * * SCTR ADDR OF CIB, LOGICAL DR 4 pMN008100083 * 65 * #SCRA * SCRA, LOGICAL DRIVE 0 PMN008200084 * 66 * * SCRA, LOGICAL DRIVE 1 PMN008300085 * 67 * * SCRA, LOGICAL DRIVE 2 PON008400086 * 68 * * SCRA, LOGICAL DRIVE 3 PONC08500087 * 69 * * SCRA, LOGICAL DRIVE 4 PMN008600088 * 70 * AFMAT * FORMAT OF PROG IN WS, DRIVE 0 PMN00870C089 * 71 * * FORMAT OF PROG IN WS, DRIVE 1 PMN008800090 * 72 * * FORMAT OF pROG IN WS, DRIVE 2 pMN008900091 * 73 * * FORMAT OF PROG IN WS, DRIVE 3 PMN009000092 * 74 * * FORMAT OF PROG IN WS, DRIVE 4 PMN00910C093 * 75 * OFLET * FLET SCTR ADDR, LOGICAL DR 0 PMN00920C094 * 76 * * FLET SCTR ADDR, LOGICAL OR 1 PMN009300095 * 77 * * FLET SCTR ADDR, LOGICAL OR 2 PMN009400096 * 78 * * FLET SCTR ADDR, LOGICAL DR 3 PMN009500097 * 79 * * fLET SCTR ADDR. LOGICAL DR 4 PMN009600098 * 80 * OWLET * LET SCTR ADDR, LOGICAL DR 0 PmN0097O0099 * 81 * * LET SCTR ADDR, LOGICAL DR 1 PMN009800100 * 82 * * LET SCTR ADDR, LOGICAL DR 2 PMN009900101 * 83 * * LET SCTR ADDS, LOGICAL DR 3 PMN010000102 * 84 * * LET SCTR ADDR, LOGICAL DR 4 PMN010100103 * 85 1, IWSCT * BLK CNT OF PROG IN WS, DRIVE 0 PMN010200104 * 86 * * BLK CNT OF PROG IN WS, DRIVE 1 PMN010300105 * 87 * * BLK CNT OF PROG IN WS, DRIVE 2 PMN010400106 * 88 * * BLK CNT OF PROG IN WS, DRIVE 3 PMN010500107 * 89 * * BLK CNT OF PROG IN WS, DRIVE 4 PMN010600108 * 90 * OCSHN * SCTR CNT CUSHION,LOGICAL DR 0 PMN010700109 * 91 * * SCTR CNT CUSHION,LOGICAL DR 1 PmN010800110 * 92 * * SCTR CNT CUSHION,LOGICAL DR 2 pmN010900111 * 93 * * SUER CNT CUSHION,LOGICAL OR 3 PMN011000117 * 94 * * SCTR CNT CUSHION,LOGICAL OR 4 PMN011100113 * 95-319 * * RESERVED FOR FUTURE USE PMN01120RESIDENT MONITORArm/ REL OBJECT ST.NO. LABEL OPCD FT OPERANDSIo/SEQNO0115 ************ *********** *** ***** *******************: =rim0116 *0117 *STATUS-VERSION 2, MODIFICATION 4 * PMN011600118 * PMN011700119 *FUNCTION/OPERATION- * PMN0118 00170 * THIS SECTION ALWAYS REMAINS IN CORE. IT * PMN011900121 * IS COMPRISED OF THE COMMUNICATIONS * PMN012000122 * AREA (COMMA), THE SKELETON SUPERVISOR, AND * 144012100123 * A DISK 4/0 SUBROUTINE, NOMINALLY DISKZ. (THE * PMN012200124 * FIRST TWO OF THESE SECTIONS ARE INTERMIXED.) * PMN012300175 * COMMA CONTAINS THE SYSTEM PARAMETERS REQUIR- * PMN012400126 * ED TO FETCH A CORE LOAD IN CORE IMAGE FOR-0127 * MAT. THE SKELETON SUPERVISOR PROVIDES IN- P=1;:g0128 * STRUCTIONS FOR INITIATING A CALL EXIT, A * PMN012700129 * CALL LINK, A DUMP-TO-PRINTER OR A CALL TO THE * PMN012800130 * AUXILIARY SUPERVISOR. IN ADDITION, THE SKELE-* PMN012900131 * TON SUPERVISOR CONTAINS SEVERAL TRAPS FOR CER-* PMN013000132 * TAIN I/O FUNCTIONS/CONDITIONS. THE DISK I/O * PMN013100133 * SECTION CONSISTS OF A SUBROUTINE FOR READING * 4411011200134 * FROM OR WRITING ON A DISK CARTRIDGE ON A * PMN013300135 * GIVEN LOGICAL DISK DRIVE. * FmN013400136** PMN013500137 *ENTRY POINTS- * PMN0 13600138 * * SPRET-A TRAP FOR PREOPERATIVE 1/0 ERRORS. * PMN013700139 *THE CALLING SEQUENCE IS * PMN013800140 *BSI L SPRET * PMN013900141 * * SPSTX-A POSTOPERATIVE ERROR TRAP FOR I/O * PMNO14000142 * DEVICES ON LEVEL X (X101,2,3,OR 4). * PMN014100143 * THE CALLING SEQUENCE IS * p mN01.4 200144 * BSI L SPSTX * PMN014300145 * * SSTOP-THE PROGRAM STOP KEY TRAP. * PMN014400146 * * SEXIT--THE ENTRY POINT FOR THE EXIT/CALL * PMN014500147 * EXIT STATEMENT. THE CALLING SEQUENCE IS* PMN014600148 * LDX 0 SEXIT * PMN014700149 * * SLINK-THE ENTRY POINT FOR THE LINK/CALL * PMN014800150 LINK STATEMENT. THE CALLING SEQUENCE IS* PMN014900151* BSI L SLINKPMN015000152 * * SOUMP--THE ENTRY POINT FOR THE DUMP/POMP * PMN015100153 STATEMENT. THE CALLING SEQUENCE IS * P1414015200154 * BSI L SCIUMP * PMN015300155 * DC FORMATLIMIT10156 * OC* PMN01540* PMN015500157 DC LIMIT2 * PMN015600158 * WHERE LIMITI AND LimIT2 ARE THE LIMITS * pmN015700159 * BETWEEN WHICH THE DUMP IS TO OCCUR, AND* PMNOI5800160 FORMAT IS A CODE INDICATING THE FORMAT * PMN015900161 OF THE DUMP. IF FORMAT IS NEGATIVE, * PMN016000162 * THE AUXILIARY SUPERVISOR IS FETCHED * = ilng0163 * AND CONTROL PASSED TO IT.324


ADOR REL OBJECT ST.NO. LABEL OPCD FT OPERANDSID/SEQNO0164 * * 01000-ENTERED WHEN THE CALLER WISHES TO * PMN016300165 * PERFORM A DISK 1/0 OPERATION. THE * 8811016400166 * CALLING SEQUENCE . VARIES WITH THE * PMN016500167 VERSION OF THE DISK I/O SUBROUTINE. * PMN016600168 * * $1200/$1400-ENTERED WHEN THE OPERATION- * PMN016700169*COMPLETE INTERRUPT OCCURS ON * PMN016800170LEVEL 2/4.* PMN01690** PMN017000172 *INPUT-N/A * PMN017100173 * * PMN017200174 *OUTPUT-WORDS 6-4090 SAVED ON THE GIB ON A CALL * PMN017100175 * DUMP * PMN017400176 * * PMN017500177 *EXTERNAL REFERENCES-N/A * PMN017600178 * PMN017700179 *EXITS- * PMN0178 00180 * * NORMAL * PMN017900181 *THE EXITS FROM THE SUBROUTINES AT SPREE * PMN018000182 * SPSTI, $PST2, SP5T3, SPST4, AND SSTOP * PMN018100183 * ARE BRANCH INSTRUCTIONS FOLLOWING A * PMN018200184 * WAIT INSTRUCTION. SSTOP TURNS OFF IN- * PMN0183 00185 * TERRUPT LEVEL 5 AFTER THE START KEY IS * PMN018400186 * DEPRESSED. * PMN018500187 * *THE EXITS FROM SEXIT,SLINK,AND SDUMP ARE * PMN01860C188 * TO THE CORE IMAGE LOADER, PHASE 1, * PMN018700189 *AFTER THAT PHASE HAS BEEN FETCHED. * PMN018800190 * *THE EXIT FROM 01000 IS BACK TO THE * PMN018900191 CALLER AFTER THE REQUESTED DISK OPERA- * :=1,9901g192 TION HAS BEEN INITIATED.00193 * *THE EXITS FROM $1200/$1400 ARE BACK TO * PAN019200194 * THE ADDRESSES FROM WHICH THE DISK OP- * PMN019300195 * ERAT1ON COMPLETE INTERRUPT OCCURED * PMN019400196 * AFTER THE INTERRUPT HAS BEEN SERVICED * :=111=0197 BV THE APPROPRIATE ISS.0198 *• * ERROR-N/A0199 *:=1;78g0200 *TABLES/WORK AREAS- * PMN019900201* * * SACOE PMNO2000020? * * SCH12 * PMNO20100203 * * SCILA * PMNO20200204 * * SCLSW * PMNO20100205 * * $COMN * PMNO20400206 * * SCORE * PMNO20500207 * * SCTSW * PMNO20600208 * * SCXR1 * 8811020700209 * * SCYLN * PMNO20800210 * * SDAOR * PMNO21000211 * * SDBSY * PMNO2.1 100212 * * SOCYL * 8811021200213 * * $DMPF * PMNO21300214 * * $DREQ0215 * * $FPAO:=1:00216 * * SGCOM 2G2 * PMNO21600217 * * $GRIN 2G2 * PMNO21700218 * * SHASH * PMNO21800210 * * 3IBT2 * PMNO21900220 * * 1IBT4 * PMNO22000221 * * $IBSY* PMNO22100222 * * SIOCT * PMN072200223 * * SKCSW * PMNO22300224 * * SLAST * 8811022400725 * * $NOUP * PMNO22500226 * * SNXEQ * 8811022600227 * * SPBSY * PM11022700228 * * $PGCT * PMNO2280022 0 * * SPHSE * PMNO22900230 * * SRMSW * PMNO23000231 * * $SCAT2-4 * 8811023050232 * SSNLT* PMNO23100233 * * SUE10 * PMNO23200234 * * SULET * PMNO23100235 * * $WRO1 * PMNO23400236 * * SWSOR * PMNO23500237• * $XR3X 2-2 * PMNO23600238** PMNO23700239 *ATTRIBUTES-REUSABLE * PMNO2380* PMNO2390g72. '1: 11) :NOTES-* PMNO24000242 * THERE ARE WAIT INSTRUCTIONS AT SPRET+1, * PMNO24100243 * SSTOP+1, AND SPSTX1-1. DEPRESSING THE START * PMNO24200244 * KEY WILL RETURN CONTROL TO THE CALLER IN ALL * 8811024300245 * CASES. * PMNO24400246 *************************************************** PMNO2450Appendix B. Listings 325


ADDR REL OBJECT ST.NO. LABEL OPCD FT OPERANDS ID/SEQNO0248 * PROVIDE PARAMETERS FOR SYSTEM LOADER PMNO24700749 PMNO24800250 ABS PMNO24900280 0251 ORG 4 PMNO25000004 0 OFFA 0257 DC 4095—* WD CNT FOR WRITING CORE ON CIB PMNO25100005 0 0000 0253 $C1BA DC *—* SCTR ADDR OF THE CIB PMNO25200006 0 0000 0254 SCH12 DC s—s ADDR OF CHANNEL 12 INDICATOR PMNO25300007 0 0000 0255 SCORN DC *—* LENGTH OF COMMON (IN WORDSI PMNO25400256 PMNO25500257 ULTIMATE RESIDENCE OF THE INTERRUPT TV PMNO25600258 * PMNO25700008 0 0000 0259 $LEVO DC *—* LEVEL 0 BRANCH ADDRESS PMNO25800009 0 0000 0260 $LEV1 OC *—s LEVEL 1 BRANCH ADDRESS PMNO2590000A 0 GOBI 0261 $LEV2 DC 11200 LEVEL 2 BRANCH ADOR PMNO26000008 0 0000 0262 $LEV1 DC s—s LEVEL 3 BRANCH ADDRESS PMNO2610000C 0 00C4 0263 SLEV4 DC $1400 LEVEL 4 BRANCH ADDR PMNO2620000D 0 0091 0264 $LEV5 DC $STOP LEVEL 5 BRANCH ADDR PMN076300265 * PMNO26400766 PMNO2650000F 0 0000 0267 SCORE DC *—* SIZE OF CORE, E.G.. 4096=4K PMNO2660000F 0 0000 0268 $CTSW DC *—* CONTROL RECORD TRAP SWITCH PMNO26700010 n 0000 0269 $DADR DC s—s SCTR ADDR OE PROG TO BE LOADED PMNO26800011 0 0000 0270 $SCAT DC *—* NON ZERC=SCA INTRPT PNONG 2-4 PMNO26900012 0 0000 0771 $DREQ DC *—* IND. FOR REQUESTED VERSION DKI/0 PMNO270000130014 0 0000,0272 SIBSY DC *—* NON— ZERO IF CD/PAP TP DEV. BUSY PMNO2710000C0273 SMASH BSS E 12 WORK AREAPMNO27200274 * PMNO27300275 PMNO27400020 0008 0276 $SCAN 1155 8 1132 SCAN AREA 32 PMNO27500277 PMNO27600778 PMNO27700279 * PMNO27800780 TRAP FOR PREOPERATIVE 1/C ERRORS PMNO27900281 * PMNO28000028 0 0000 0282 SPREE DC s—s ENTRY POINT PMNO28100029 0 3000 0283 WAIT WAIT TEL START KEY PUSHED PMNO28700028 on 50500028 0284 BSC I $PRET RETURN TO CALLER PMNO28300285 * PM64028400286 * PMNO28500020 0 0000 0787 SIRED CC *—* ADDR OF INT REQUEST SUBROUTINE PMNO2860non) 0 0000 0288 SULET DC *—* ADDR OF LET, LOGICAL DR 0 PMNO2870002E 0 0000 0289 DC AcDR OF LET, LOGICAL DR I PMN07880002F 0 0000 0290 DC *—* AMR OF LET, LOGICAL DR 2 PMNO28900030 0 0000 0291 DC *—* ADDR OF LET. LOGICAL DR 3 PMNO29000011 0 0000 0292 DC *—* AODR OF LET, LOGICAL DR 4 PMNO29100032 0 0000 0293 $10CT DC *—* ZERO IF NO I/O IN PROGRESS 50 PMNO29200011 0 0000 0294 SLAST DC *—* NON— ZERO WHEN LAST CARD SENSED PMN079300034 0 0000 0295 SNDUP DC *—* DO NOT DUP IF NON— ZERO PMNO29400035 0 0000 0296 $11XED OC *—* DO NOT EXECUTE IF NON— ZERO PMNO29500016 0 0000 0297 $PBSY DC *—* NON—ZERO WHEN PRINTER BUSY PMNO29600037 0 0000 029 8 $PGCT OC *—* PAGE NO. FOR HEADINGS PMNO29700299 PMNO29800100 * CALL ExIt ENTRY POINT TO SKELETON SUPERVISOR PMNO29900301 PMNO30000018 0 7019 0102 SEXIT MDX $5000 BR TO FETCH CIL, PHASE 1 56 PMNO30100303 PMNO30200304 *** CALL LINK ENTRY POINT PMNO30300305 PMNO30400019 0 0000 0106 SLINK CC *—* ENTRY POINT 57 PMNO3050001A 0 1810 0307 SRA 16 PMN010600018 0 7017 0308 MDX $5100 BR TO FETCH CIL, PHASE 1 PMNO3070001C 0000 0309 BSS E 0 PMN01080001C 0 0001 0310 $5900 DC 1 DISK PARAMETERS FOR SAVING CORE PMNO30900030 0 0004 0311 DC $CIBA-1 *IN CONNECTION WITH DUMP PMN01100003E 0 FEEE 0317 $5910 DC —I CALL EXIT INDICATOR PMNO31100313 PMNO31200314 *** SAVE 1ST 4K OF CORE ON THE CiB PMNO31300315 PMNO3140001F 0 0000 0116 $DUMP OC 5—* ENTRY POINT 63 PMNO3150(1040 0 D809 0317 STD SACEX SAVE ACCUMULATOR, EXTENSION PMNO31800041 0 4009 0318 BSI $5250 CHK PNDNG INTRPT 2-4 PMNO31850042 0 6904 0319 STX I SCXR1 SAVE XR1 PMN011900053 00 C410003E 0320 LO I $DUMP PMNO37000045 0 0003 0121 STO $DMPF SAVE DUMP FORMAT CODE PMN012100046 0 C8E5 0322 LDD $5900 PMNO32100047 00 440000F2 0323 BSI L DZ000 SAVE WOS 6-4095 ON CIB PMN012100049 0 C0E2 0324 LD $5900 PMNO32400046 0 7008 0325 MDX $5100 BR TO FETCH CIL, PHASE I PMNO32500126 * PMN012510177 *** SURR TO CHECK IF ANY INTRPT IS PENDING PMNO32520328 POINCO253326


ADDR RFL OBJECT ST.NO. LABEL OPCD FT OPERANDS ID/SEQNO004B 0 0000 03 29 $S750 DC *—* ENTRY POINT PMNO3254004C 0 C0E5 0330 $S300 LD SIOCT IS THERE INTRPT PNDNG PMNO32550040 0 E8C1 0331 OR $SCAT *OR SCA INTRPT PNDNG PMNO3256004E 00 4C20004C 0332 BSC L $5100,2 *THEN BR, IF ALL INTRPT PMNO32570050 00 4C800046 03330335RSC I $5250 *IS SERVICED—RETURN pmN0175RPMNO32700336 *** FETCH CORE IMAGE LOADER, PHASE 1 PMNO32800337 PMNO32900052 0 COEB 0338 $5000 ID $5910 PMNO33000053 0 D0C2 0339 $5100 STD SRMSW SAVE EXIT — LINK — DUMP SWITCH PMNO33100054 00 65900039 0340 LOX 11 SLINK LINK AMR TO XR1 PMNO33500056 0 C101 0341 LD 1 1 FETCH 2ND WD OF LINK NAME PMN013600057 0 1800 0342 RTE 16 PMNO33700058 4) 0100 0343 LD 1 0 FETCH 1ST ND OF LINK NAME PMNO33800344 * $5150.1 CONTAINS ADDR LAST WD OF DISK I/0 MINUS 3 PMNO34000059 00 65000000 0345 $S150 LOX LI *—* ADDR END OF OKI/0-1 TO XR1 PMNO34100058 0 0888 0346 STD SLKNM SAVE LINK NAME PMNO3415005C 0 40EE 0347 BSI $S250 CHK ANY PNONG INTRPT 2-4 PMNO34170050 0 COFC 0348 LO SCILA PMNO3470005E 0 1890 0349 $5200 SRT 16 PMNO3430005F 00 44000012 0350 BSI L DZ000 FETCH CI LOADER, PHASE 1 PMNO34400061 0 40E9 0351 BSI $S250 CHK DISK OP FINISHED 2-4 PMNO34600062 0 4102 0352 BSI 1 2 BR TO CI LOADER, PHASE 1 PMNO34700353 PMNO34800063 0 0000 0354 SGCOM DC *—* GRAPHIC SUBR PACKAGE INDR 2G2 PMNO34900064 0 0000 0155 $GR1N DC *—* GRAPHIC INITIZN PROGRAM INDR 2G2 PMNO35000356 262 PMNO35100065 0003 0357 855 3 RESERVED FOR 2250 202 PMNO35200068 0009 0358 BSS 9 PATCH AREA PMNO35300359 PMNO35400071 n 0000 03 60 SEISM OC *—* FLUSH—TO— NEXT —JOB SWITCH 1/FLUSH pMNO35500072 0000 0361 BSS E 0 PMNO35600072 0 0000 0362 SCWCT DC *—* WORD COUNT AND SECTOR ADDRESS PMNO35700073 0 0000 0363 DC *—* *FOR SAVING/RESTORING COMMON PMN015800074 0 0000 0364 SCCAD DC *—* ADDR FOR SAVING/RESTORING COMMON PMNO35900075 0 0000 0365 usto DC *—* SCTR ADOR OF 1ST LOCAL/SOCAL PMNO36000076 0 0000 0366 $DZ1N DC *—* DISKZ/1/N INDICATOR ( - 1,0,51) PMN016100077 0 0000 03 67 $DCOE DC *—* LOGICAL DRIVE CODE FOR PROGRAM PMNO36200078 0 0000 0368 SPHSE DC *—* NO. OF PHASE NOW IN CORE PMNO36300079 0 0000 0369 SUFIO DC *—* UNFORMATTED I/O RECORD NO. PMN01640007A 0 0000 0370 $WSOR DC 4,-4, WORKING STORAGE DRIVE CODE PmNO36500078 0 0000 0371 $WRD1 DC 4,-4, LOADING ADOR OF THE CORE LOAD PmNO3660007C 0 0000 0172 $KCSW DC 4,-4, 1 IF KB,CP BOTH UTILIZED PmNO36700070 0 0000 0373 $UFDR DC '0—* UNFORMATTED I/O DRIVE CODE PMNO3680007E 0 0000 0374 $CPTR DC S—*, CHANNEL 12 INDICATOR FOR CP PMNO3690007F 0 0000 0175 $1132 DC *—* CHANNEL 12 INDICATOR FOR 1112 pMN017000080 0 0000 0376 $1403 DC *—* CHANNEL 12 INDICATOR FOR 1403 PMN017100378 * TRAP FOR POSTOPERATIVE I/O ERRORS ON LEVEL 1 pMNO37300379 * PmN017400081 0 0000 0380 $PST1 DC *—* ENTRY POINT PMNO37500082 0 3000 0381 WAIT pmN017600083 on 40800081 0382 BSC I $PST1 RETURN TO DEVICE SUBROUTINE PMNO37700383 * pmNO37800384 * TRAP FOR POSTOPERATIVE I/O ERRORS ON LEVEL 2 pmNO37900385 * PmNO38000085 0 0000 0186 $PST2 DC *—* ENTRY POINT pMNO38100086 0 3000 0387 WAIT PMNO38200087 no 40800085 0388 BSC I SPST2 RETURN TO DEVICE SUBROUTINE PmNO38300389 * PMNO38400390 * TRAP FOR POSTOPERATIVE I/O ERRORS ON LEVEL 3 PMNO38500391 PMNO38600089 0 0000 019? $PST3 DC *—* ENTRY POINT PMNO3870008A 0 1000 0393 WAIT PMNO38800088 no 40800089 0194 RSC I SPST3 RETURN TO DEVICE SUBROUTINE PMNO38900395 PMNO39000396 * TRAP FOR POSTOPERATIVE I/O ERRORS ON LEVEL 4 PMNO39100397 PMNO39200080 0 0000 0398 $PST4 OC *—* ENTRY POINT PMNO39300081 0 3000 0399 WAIT PMNO39400081 00 40800080 0400 BSC I $PST4 RETURN TO DEVICE SUBROUTINE PMNO39500401 * PMNO39600402 PMNO39700403 * PROGRAM STOP KEY TRAP PMNO39800404 PMNO39900091 0 0000 0405 $STOP OC ENTRY POINT PMN040000092 0 3000 0406 WAIT WAIT T/L START KEY PUSHED PMN040100093 00 40000091 0407 ROSC I $STOP RETURN TO CALLER PMN04020Appendix B. Listings 327


ADDR RFL OBJECT SI.NO. LABEL OPCD FT OPERANDS ID/SEQNO0409 * PMN040400410 * PARAMETERS USED BY THE DISK I/O SUBROUTINES. THE PMN040500411 * LOGICAL DRIVE CODE IS FOUND IN BITS 1-3 FOR ALL PMN040600412 * BUT THE AREA CODE. BIT 0 WILL ALWAYS BE ZERO. PMN040700412 PMN040800414 PMN040900415 *** DISK1 AND DISKN WILL NO1 WRITE BELOW THE PMN041000416 *** FOLLOWING SCTR ADDRESSES (EXCEPT WRITE IMMED1. PMN041100417 PMN041200095 0 0000 C418 SFPAD DC *-* FILE PROTECT ADM, LOGICAL OR 0 PMN041300096 0 0000 0419 DC s-* FILE PROTECT ADDR, LOGICAL DR I PMN041400097 0 0000 0420 DC *-* FILE PROTECT ADDR, LOGICAL DR 2 PMN041500098 0 0000. 0421 DC 4.-4. FILE PROTECT ADDR, LOGICAL OR 3 PMN041600099 0 0000 0422 OC *-* FILE PROTECT ADDR, LOGICAL DR 4 PMN041700423 PMN041800424 *** THE ARM POSITION IS UPDATED WHENEVER A SEEK PMN041900425 *** OCCURS. PMN042000426 PMN04210009A 0 0000 04 27 SCYLN DC 0 ARM POSITION FOR LOGICAL DRIVE 0 PMN04220009B 0 0000 0428 DC 0 ARM POSITION FOR LOGICAL DRIVE I PMN042300090 0 0000 0429 DC 0 ARM POSITION FOR LOGICAL DRIVE 2 PMN042400090 0 0000 0430 OC 0 ARM POSITION FOR LOGICAL DRIVE 3 PMN04250009F 0 0000 0411 DC 0 ARM POSITION FOR LOGICAL DRIVE 4 PMN042600432 PMN042700433 *** BELCH ARE THE DISK AREA CODES. A ZERO PMN0428004 34 *** INDICATES THE CORRESPONDING DRIVE IS NOT PMN042900435 *** ON THE SYSTEM PMN043000416 PMN04310009E 0 0000 0437 SACDF DC *-* AREA CODE FOR LOGICAL DRIVE 0 PMN043200060 0 0000 04 38 DC *-* AREA CODE FOR LOGICAL DRIVE L PMN043300061 0 noon 0439 DC *-* AREA CODE FOR LOGICAL DRIVE 2 PMN0434000A? 0 0000 0440 OC *-* AREA CODE FOR LOGICAL DRIVE 3 PMN043500061 0 0000 0441 OC *-* AREA CODE FOR LOGICAL DRIVE 4 PMN043600442 PMN043700443 *** THE AOR OF THE CYLINDER IN WHICH A DEFECT OC- PMN043800444 *** CURS, IF ANY, IS STORED IN THE 1ST, 2ND, OR 3RD PMN043900445 *** WORD BELOW, DEPENDING ON WHITHER IT IS THE 1ST, PMN044000446 *** 2ND, CR 3RD DEFECT ON THE CARTRIDGE.PMN044100447 PMN044200064 0 0000 0448 SDCYL DC *-* DEFECTIVE CYLINDER ADDRESSES 1 PMN044300065 0 0000 0449 DC *-* *FOR LOGICAL DRIVE 0 2 PMN044400066 0 0000 0450 DC 3 PMN044500047 0 0000 0451 OC *-* DEFECTIVE CYLINDER ADDRESSES I PMN044600068 0 0000 045? DC *-* *FOR LOGICAL DRIVE I 2 PMN044700069 0 0000 0453 DC 3 PMN044800066 0 000D 0454 DC 4,-4, DEFECTIVE CYLINDER ADDRESSES I PMN044900068 0 0000 0455 DC 5—* *FOR LOGICAL DRIVE 2 2 PMN0450000AC 0 0000 0456 DC *-* 3 PMN0451000AD 0 0000 0457 DC S-* DEFECTIVE CYLINDER ADDRESSES 1 PMN0452000AE 0 0000 0458 DC *-* *FOR LOGICAL DRIVE 3 2 PMN04530OOAF 0 0001 0459 DC 3 PMN045400080 0 0000 0460 DC S-* OFFECTIVE CYLINDER ADDRESSES 1 PMN045500081 0 0000 0461 DC *-* *FOR LOGICAL DRIVE 4 2 PMN045600082 0 0000 0462 DC *-* 3 PMN045700464 * PMN045900465 * IL502--IHIS SUBROUTINE SAVES XR1, XR2, STATUS, PMN046000466ANO THE ACCUMULATOR AND ITS EXTENSION. PMN046100467 THE ADDRESS OF THE INTERRUPT SERVICE ROU- PMN04620C468 TINE IS STORED IN $1205 BY PHASE 2 OF PMN046300469 THE CORE IMAGE LOADER. WORD 10 ALWAYS PMN0464004 70 CONTAINS THE ADDRESS Of SI200. PMN046500471 PMN046600477 PMN046700473PMN04680nn p i 0 000004 74 $1200 DC *-* ENTRY PI (LEVEL 2 INTRUPT1 PMN046900084 0 6906 0475 STX 1 $1210+1 SAVE XR1 PMN047000085 0 6607 0476 STX 2 5I210+3 SAVE XR2 PMN047100086 0 2807 0477 STS 5I210+4 STORE STATUS PMN047200087 0 080A 0478 STO $1290 SAVE ACCUMULATOR,EXTENSION PMN047100479 * 31205+1 CONTAINS ADDR INTERRUPT ENTRY PT TO 01(1/0 PMN047400088 00 44000000 0480 $1205 BSI L *-* BR TO SERVICE THE INTERRUPT PMN04750008A 00 65000000 0481 $1210 LOX LI *-* RESTORE XR1 PMN0476000BC 00 66000000 0482 LOX L2 *-* RESTORE XR2 PMN04770008F 0 2000 0483 LOS 0 RESTORE STATUS PMN04780008F 0 C802 04 84 LOD $1290 RESTORE ACCUMULATOR,EXT PMN047900000 00 4000083 0485 BOSC I $1200 RETURN FROM INTERRUPT PMN0480000C2 0000 0486 $1290 BSS I 0 PMN0481000C2 0 0000 0487 DC *-* CONTENTS OF ACCUMULATOR AND PMN048100001 0 0000 0488 DC *-* *EXTENT/ON PMN04830328


ADOR REL OBJECT ST.NO. LABEL OPCD FT OPERANDS IC/SEQN00490 * PMN0485004910492* ILSO4--THIS SUBROUTINE SAVES XR1, XR2, STATUS,AND THE ACCUMULATOR AND ITS EXTENSION.PMN04860PMN048700493 IF THE INTERRUPT IS FOR A KEYBOARD REG- * PMN048800494 DEST,AND IF A MONITOR PROGRAM IS IN CON- * PMN048900495 TROL, CONTROL IS PASSED TO pump. OTHER- * PMN049000496 WISE, CONTROL IS PASSED TO THE KEYBOARD/ * PMN049100497 CONSOLE PRINTER SUBROUTINE. WORD 12 AL- * PMN049200498 WAYS CONTAINS THE ADDRESS OF $1400. * PMN049300499 PMN049400500 * THE TABLE BELOW CONTAINS THE ADDRESSES OF THE PMN049500501 * INTERRUPT SERVICE ROUTINES FOR ALL THE DEVICES PMN049600502 * ON LEVEL 4. PMN049700503 PMN049800504 PMN049900505 * PMN0500000C4 0 0000 0506 $1400 DC *-* ENTRY POINT PMN050100005 0 0818 0507 STD $1490 SAVE ACCUMULATOR, EXTENSION PMN050200006 0 280E 0508 S1S $1410 SAVE STATUS PMN050100007 0 690F 0509 SIX 1 $1410+2 SAVE XR1 PMN050400008 0 6A10 0510 STX 2 $1410*4 SAVE XR2 PMN0505000C9 0 0816 0511 XIO $1492 SENSE DSW PMN05060OOCA 0 1002 0512 SLA 2 IS THIS INTERRUPT REQUEST PMN05070oncs 00 4C100000 0513 BSC L $1403,- BR IF NOT INTERRUPT REQUEST PMN05080oncn 00 4480002C 0514 BSI I $IREQ BR If INTERRUPT REQUEST PMN0509000CF 0 FFFE 0515 DC -2 ERROR CODE PMN051000000 0 6109 0516 $1403 LDX 1 9 NO. DEVICES ON LEVEL TO XR1 PMN051100001 0 0810 0517 X10 $1494 SENSE ILSW PMN051200002 0 1140 0518 SLCA 1 FIND CAUSE Of INTERRUPT PMN051300519 * $1405+1 CONTAINS ADDR OF LEVEL 4 IBT MINUS L PMN051400003 00 45800000 0520 $1405 BSI 11 *-* BR TO SERVICE THE INTERRUPT PMN051500005 0 2000 0521 $1410 LOS 0 RESTORE STATUS PMN051600006 00 65000000 0522 LOX LI *-* RESTORE XR1 PMN051700008 00 66000000 0523 LOX L2 *-* RESTORE XR2 PMN05180OODA 0 0803 0524 LCD $1490 RESTORE ACCUMULATOR, EXT. PMN05190OODEI 00 4CC000C4 0525 BOSC I $1400 RETURN PMN0520005 26 PMN052100527 * CONSTANTS ANC WORK AREAS PMN052200528 * EVEN-NUMBERED LABELS ARE ON EVEN BOUNDARIES PMN052300529 PMN05240000D 0 0000 0530 $DDSW DC *-* DSW FOR THE DISK PMN05250OODE 0002 0531 $1490 BSS E 2 CONTENTS OF ACCUMULATOR, EXT. PMN0526000E0 0 0000 0532 $1492 DC *-* PMN052700080 0 0533 $SYSC ECU *-1 VERSION AND MOD NO. PMN0528000E1 0 0800 0534 DC , /0E00 IOCC FOR SENSE IOCC FOR KB/CP PMN0579000E7 0001 0535 $1494 BSS 1 PATCH AREA PMN0530000E3 0 0300 05360538DC /0300 IOCC FOR SENSING ILSW042-2PMN05110PMN051300539 PATCH AREA 2-2 PMN053400540 FIX FOR APAR N5044 2-2 PMN053500541 2-2 PMN053600084 n 0000 0542 $1496 DC *-* XR3 SETTING DURING XE0 2-2 PMN0537000E5 0 OF01 0543 DC /0E01 SENSE KEY BOARD W RESET2-2 PMN053800544 * 2-2 PMN0539000E6 0 0000 0545 $1420 DC *-* ENTRY POINT FLUSH JOB 2-2 PMN0540000E7 0 08FC 0546 X10 $1496 SENSE KEY BOARD W RESET2-2 PMN0541000E8 00 4C40008A 0547 BOSC L $1425 TURN OF INTERRUPT 2-2 PMN0542000FA 00 44000038 0548 $1425 BSI L $DUMP BRANCH TO WAIT OUT PEND2-2 PMN0541000EC 0 FFEE 0549 DC -2 *INTER AND GET AUX SUP 2-2 PMN054400550 * 2-2 PMN0545000ED 0001 0551 BSS 1 PATCH AREA 2-2 PMN0546000E8 0 0000 055? $011SY DC *-* NON-ZERO WHEN DISK I/O BUSY PMN05470D1SKZADDR REL OBJECT ST.NO. LABEL OPCD FT OPERANDS I0/SEQN00554 *************************************************** PMN054900555 * * PMN055000556 *STATUS-VERSION 2, MODIFICATION IL PMN055100557 * * PMN055200558 *PROGRAM NAME- * PMN055300559 * *FULL NAME-FORTRAN/SYSTEM DISK I/0 SUBROUTINE * PMN055400560 *CALLING SEQUENCE- * pmN055500561 * ion PARAM * PMN055600562 * BSI L 02000 * PMN055700563 * WHERE PARAM IS THE LABEL OF A DOUBLE-WORD * PMN055800564 * CELL CONTAINING THE FUNCTION CODE AND THE * PMN055900565 * AIM OF THE I/O BUFFER,1.E., ADDR OF WD CNT. * PMN056000566 * SFE 'CAPABILITIES' FOR DISCUSSION OF PARAM- * PMN056100567 FTERS. * PMN056200568 * PMN05630Appendix B. Listings 329


AODR REL OBJECT ST.NO. LABEL OpC0 TT OPERANDS ID/SEQN00569 *PURPOSE- * PMN056400570 * TO PROVIDE A SUBROUTINE TO PERFORM DISK OPERA-* PMN056500571 * TIONS. THIS SUBROUTINE IS INTENDED FOR USE BY * PMN056600572 * MONITOR PROGRAMS AND USER PROGRAMS WRITTEN IN * pMN056700573 * FORTRAN. THUS,IT IS INTENDED FOR USE IN AN * pMN056800574 * ERROR-FREE ENVIRONMENT. * PMN056900575 * pmN057000576 *METHOD- * PMN057100577 * DISKZ REQUIRES A BuFFER,THE LENGTH OF WHICH IS* pmN05720057P * 7 GREATER THAN THE NO. WORDS TO BE READ/WRIT- * PMN057300579 * TEN. * PmN0574005 80 * PMN057500581 *CAPABILITIES AND LIMITATIONS- * PMN057600582 * THE WC CNT,AS WELL AS DZ000,MUST BE ON AN EVEN* PMN057700583 * BOUNDARY,MuST BE TN THE RANGE 0-32767. THE * pMN057800584 * DRIVE CODE MUST BE IN BITS 1-3 OF THE SECTOR * PMN057900585 * ADDR,WHICH FOLLOWS THE WD CNT. THE FUNCTION * PmN058000586 * INDICATOR MUST RE XX00 FOR A READ OR XX01 FOR * PMN058100587 * A WRITE,WHERE 'XX' MEANS ANY 2 HEXADECIMAL * PMN058200588 * CHARACTERS. A WD CNT OF ZERO INDICATES A SEEK.* pMN058300589 * (READ OR WRITE MAY BE INDICATED.) AUTOMATIC * PMN058400590 * SEEKING IS PROVIDED AS A PART OF READ/WRITE. * PmN058500591 * A WRITE IS ALWAYS WITH A READ-BACK-CHECK. * PMN058600597 * DISKZ MAKES NO PREOPERATIVE PARAMETER CHECKS. * PMN058700593 * PMN058800594 *SPECIAL FEATURES- * PMN058900595 * ntSKZ PROVIDES ONLY THOSE FUNCTIONS MENTIONED * PMN059000596 * ABOVE. DISKZ ANO DISKN OFFER THIS BASIC SET OF* PMN059100597 * FUNCTIONS PLUS OTHERS. * pMN059200598 * pmN059300599 ************************************** ****** ******* pMN059400601 * PROVIDE PARAMETERS FOR SYSTEM LOADER PMN059600602 PMN0597010E0 0000 0603 RSS r 0 pmN0598000F0 0 OOEF 0604 DC *ZEND-* DISKZ WORD COUNT PMN0599000F1 0 FF6A 0605 CC -.0ZID PHASE ID PmN0600010f2 0 10E8 0606 CC SZEND-6-*+1 AODR Of SIFT EXTRACT pmN0601000F1 0 0001 0607 DC 1 NO. ENTRIES IN SLET EXTRACT PMN0607000F4 0608 ORG *-7 pMN0603000F2 0 0000 0610 01000 DC *-* ENTRY POINT PMN06050OOF3 00 740000EE 0611 MDX L SDBSV,0 LOOP UNTIL OPERATION IN pmN0606000F5 0 70F0 0612 MDX *-3 *PROGRESS IS COMPLETE PmN0607000F6 0 7002 0613 MOx 07020 BR AROUND INT ENTRY POINT PMN060800614 PMN060900615 * INTERRUPT ENTRY POINT PmN061000616 PMN0611000F7 0 0000 0617 nZ010 DC *-* INTERRUPT ADDRESS PmN0612000F8 0 7015 0618 MDX OZ 180 BR TO SERVICE INTERRUPT PMN06130noF9 0 690F 0619 D7020 STX 1 D7100+1 SAVE XRI pMN0614000FA 0 6610 0670 SIX 7 DZI00+3 SAVE XR7 PmN0615000FR 0 1008 0621 SLA 8 SHIFT INDICATOR 8 BITS pmN06160OOFC 0 003C 0622 ST0 07945 SAVE FUNCTION INDICATOR PMN06170OnFn 0 1800 0623 RTF 16 PMN0618000FF 0 0056 06 24 STO OZ235+1 SAVE ODOR OF THE I/O AREA PMN06190()OFF 0 6711 0625 DZ010 LOX (TCNT TURN ROSY INDICATOR ON AND pmN062000100 0 6AE1) 0626 STx 2 SOBS), *SET RETRY COUNT pmN062100101 0 COF0 06 27 LO 07000 PmN062200102 0 00F4 06 28 STD 07010 PMN062300103 0 704E 06 29 MDx 07230 BR TO CONTINUE PMN062400104 00 4C000000 0610 DZ060 BSC L *-* BR TO SERVICE THE INTERRUPT PMN062500631 pMN062600632 * START ALL DISK OPERATIONS PMN062700633 * PMN062800106 0 6908 0614 DZ070 STX 1 DZI80*1 SAVE ADDR Of THE I/O AREA PMN062900107 0 OR1E 0615 XIO DZ904 START AN OPERATION pMN061000636 PMN063100637 * RETURN TO USER pmN063200638 * PmN0633001C8 00 65000000 0639 DZ100 LOX LI *-* RESTORE XR1 PMN063400108 00 66000000 0640 LOX 17 5-5 RESTORE XR2 PMN061500100 00 4CB000F7 0641 BSC I DZ010 RETURN PMN063600642 * PmN063700643 * SERVICE ALL INTERRUPTS PMN063800644 * PmN06390010F 00 65000000 0645 DZ180 LOX LI *-* AMR OF I/O AREA TO XR1 pMN064000110 00 660000E2 0646 Lox L2 01000 ADDR OF DZ000 TO XR2 pMN064100112 0 0819 0647 x10 01910 SENSE THE DSid PMN064700113 0 00C9 0648 STO SODSW SAVE THE DSW PMN064300114 0 4850 0649 BOSC -SKIP IF ERROR BIT SET PMN064400115 0 70FE 0650 MDX 07060 BRANCH IF ERROR BIT NOT SET PMN064500116 0 C800 0651 D7185 LCD 01902 RESTORE WORD COUNT PMN064600117 0 0900 0657 STO 1 0 *AND SECTOR ADDRESS PMN06470330


ADDR REL OBJECT ST.NO. LABEL OPCD FT OPERANDS IC/SEQNO0118 00 74FF00EE 0653 MDX L SD8SY,-1 SKIP IF 16 RETRIES DONE pMN06480011A 0 7039 0654 MDX 07235 BRANCH IF LESS THAN 16 PMN064900655 pmN065000656 * TRAP OUT TO POSTOPERATIVE TRAP pmN065100657 pmN065200118 0 0812 0658 ICC 02912 1+SCTR ADDR TO EXTENSION PMN065300110 0 c014 0659 LD 079I5 PMN065400110 0 4793 0660 02190 BSI 2 SPST2-X2 BR TO POSTOPERATIVE ER TRAP PMN06550011F 0 1810 0661 SRA 16 CLEAR PMN06560011.F 00 04800191 0662 STO I D2350+1 *ARM POSITION PMN065700121 0 7000 0663 MDX 02030 RETRY OPERATION PMN065800664 * PMN065900665 * CONSTANTS AND WORK AREAS pMN066000666 PMN066100127 0000 0667 BSS F 0 PMN066200668 * EVEN-NUMBERED LABELS ARE ON EVEN BOUNDARIES PMN066300122 0 0001 0669 02900 DC I CONSTANT,READ-AFTER-SEEK WD CNT PMN066400123 0 0000 0670 02401 DC 0 CURRENT ARM POSITION pMN066500174 0 0000 0671 01902 DC *-* LAST TWO WORDS OF SECTOR PMN066600175 0 0000 0672 DC *-* *PREVIOUSLY READ PMN066700126 C 0000 0673 02904 DC *-* foCC FOR OPERATION CURRENTLY PMN066800177 0 0000 0674 n2905 DC *-* *BEING PERFORMED PMN066900128 0 0000 0675 02906 DC *-* SAVE AREA FOR IOCC FOR pmN067000179 0 0000 0676 D2907 DC *-* *USER-REQUESTED OPERATION PMN067100026 0 0127 0677 07908 DC D2900 TOCC FOR READ PMN067200128 0 0000 0678 D2909 DC *-* *AFTER SEEK PMN067300I20 0 0000 0679 02910 DC *-* 2ND WORD OF SEEK IOCC PMN067400120 0 0000 0680 D2911 DC *-* SENSE IOCC pmN06750012E C 0000 0681 02912 DC *-* INTERMEDIATE WORD COUNT pmN067600128 0 0000 0682 02913 DC *-* ADDR OF NEXT SEQUENTIAL SECTOR PMN067700130 0 5002 0683 07914 DC /5002 WRITE SELECT/POWER UNSAFE INOR PMN067800131 0 5004 0684 0Z915 DC /5004 READ/WRITE/SEEK ERROR INDICATOR PMN067900132 0 FECO 0685 D2916 DC -320 TO BE USED TO SIMULTANEOUSLY pMN068000133 0 0001 0686 DC 1 *DECR WD CNT, INCR SCTR ADDR pmN068100114 0 0080 0687 02920 DC /0080 REAC CHECK BIT FOR 10Cc PmN068200135 0 0600 0688 02925 DC /0600 2ND WD OF READ IOCC W/0 AREA CC PMN068300116 0 0008 0689 02910 pc 8 NO. SECTORS PER CYLINDER pMN068400137 0 5000 0690 02935 DC /5000 NOT READY DISPLAY CODE pmN068500138 0 OFF8 0691 D2940 DC /OFF8 'AND' OUT DR CODE, SCTR ADDR PMN068600119 0 0000 0692 02 945 DC *-* FuNt INDICATOR (00READ,1NWRITE) pMN06870011A 0 0701 0693 07950 CC /0701 SENSE IOCC W/O AREA CODE PMN068800138 0 0007 0694 D2955 DC /0007 'AND' OUT ALL BUT SCTR NO. pMN06890011C 0 0004 0695 02960 DC $DCYL-$CYLN BASE DEFECTIVE CYL ADDR pMN069000110 0 009F 0696 D2965 DC $ACDE BASE AREA CODE ADDR pmN06910011E 0 FFFB 0697 02970 DC SCYLN-SACDE BASE ARM POSITION ADDR PMN06920013F 0 0000 0698 02975 DC *-* 2ND WORD OF READ CHECK IOCC pMN069300140 0 0400 0699 D2980 DC /0400 2ND WO OF SEEK IOCC W/0 AREA CD PMN069400141 0 0141 0700 02985 DC 321 No. WORDS PER SECTOR 114/ ADDRI pMN069500147 0 0000 0701 02990 DC *-* CURRENT SECTOR NO. PMN069600143 0 FFFF 0702 D2995 DC -1 MASK FOR COMPLEMENTING PMN069700703 pMN069800704 * RESERVED FOR SAVING CORE ON A DUMP ENTRY TO SKEL PmN069900705 pMN0700001440082 00007 07000707BSS 7 THIS AREA MUST BE AT SCIBA+319X2 ECUD2000PMN07010pMN070200708 PmN070300709 PMN07040n710pMN070500146 00147 01810004607110712D2210 SRA 16STOCLEAR $D8Sy BUSY INDICATORPMN07060pmN070700148 00 74FF0032 0713 MDX L SIOCT,-1 DECREMENT IOCS COUNTER PMNOTOBO014A 00148 01000708007140715NOPMDX 02100TO EXITPMN07090pmN071000716 pMN071100717 * PREPARE TO TRAP OUT ON 'POWER UNSAFE' CONDITION PMN071200718 pMN07130014C 0 C0E3 0719 n2215 LO 02914 PMN071400140 0 700F 0720 MDX 02190 BR TO TPAR OUT pmN071500721 PMN071600727 * PREPARE TO TRAP OUT ON 'NOT READY' CONDITION PMN071700723 pmN07180014E 0 C0E8 0724 02220 LD 0Z935 FETCH ERROR CODE pMN07190014F 00 44000028 0725 BSI L SPRET 8R TO PREOPERATIVE ERR TRAP PMN072000151 0 7036 0726 MDX D2340 RETRY THE OPERATION pMN072100727 PMN072200728 STATEMENTS MOVED 2-1 PMN072300729 PMN072400157 00 74010032 0730 D2230 MDX L $100T,1 INCREMENT TOCS COUNTER PMN072500154 00 65000000 0731 D2215 LOX LI *-* ADDR 1/0 AREA TO XR1 pMN072600156 0 c900 0732 LDD 1 0 PMN072700157 00158 0MCC080507330714STD 02902 SAVE WORD COUNT, SCTR ADDRSTD 07917PMN07280pmN07290Appendix R Listings 331


ADDR REL OBJECT ST.NO. LABEL OPCD FT OPERANDS IC/SEONO0159 0 1810 0735 07240 SRA 16 pMN073000I54 0 1084 0736 SLT 4 DRIVE CODE IN BITS 12-15 PmN073100155 n 000E 0737 STO n7280+1 PMN073200150 0 80E0 0738 A 07965 COMPUTE AND STORE THE PIN073300150 0 DOIC 0719 STO D7110+1 *ADDR OF THE AREA CODE PMN07340115E 0 800F 0740 A DZ970 COMPUTE AND STORE THE PMN07350015F n 0031 0741 STO 0Z350+1 *ADDR OF THE ARM POSITION PMN071600160 0 8008 0742 A D7960 ADO IN BASE DT ADDR pmN073700161 0 8008 0743 A 07280+1 ADD IN THE DRIVE pMN073800162 0 8007 0744 A 07280+1 *CODE TWICE MORE PMN073900163 0 D006 0745 STO 07280+1 PMN074000164 0 62F0 0746 LOX 2 —3 INITIALIZE COUNTER FOR LOOP PMN074100165 0 6902 0747 STx 1 0Z906 PMN074200166 0 C101 0748 LO 1 1 FETCH OESIRED SECTOR ADDR PMN074300167 0 EODO 0749 AND 07940 'AND' OUT SECTOR NO. PMN074400168 0 0101 0750 07250 STO 1 1 *AND DRIVE CODE PMN074500169 00 94000000 0751 07280 S L *—* SUB DEFECTIVE CYLINDER ADDR PMN074600168 0 4828 0752 8SC 7+ SKIP IF BAD CYLINDER PmN074700160 0 7007 0753 MDX 07300 BR 10 CONTINUE PROCESSING PMN074800160 0 C101 0754 LO I 1 PMN07490016F 0 8007 0755 A 02930 INCREMENT SCTR ADDR BY 8 pmN07500016F 00 74010164 0756 MDX L 01280+1.1 POINT TO NEXT DEFECTIVE CYL PMN075100171 0 7201 0757 MDX 2 1 SKIP AFTER 3RD PASS PMN075200172 0 70F5 0758 MDX 07250 COMPARE w/ NEXT DEF CYL ADR Pmt375300173 0 0101 075 9 STO 1 1 SCTR ADDR WITH 3 DEF CYL2-4 PMN075350760 PMN075400761 * CONSTRUC THE 2ND WORD OF ALL IOCC . S PMN075500762 * PMN075600174 00 660000F2 0763 02300 LOX 12 07000 ADDR OF 07000 TO XR2 PMN075700176 0 C730 0764 Lo 2 07913— x2 FETCH SECTOR ADDRESS pMN075800177 0 E249 0765 AND 2 02955—x2 'AND' OUT ALL BUT SECTOR NO PMN075900178 0 D250 0766 STO 2 0Z990—X2 SAVE SECTOR NO. pMN076000179 00 04100000 0767 0Z131) L *—* FETCH AREA CODE PMN076100179 0 EA4F 0768 OR 2 01980-12 'OR' IN SEEK FUNCTION CODE PMN076200170 n 0714 0769 STO 2 07910 — X2 SEEK TOCC MINUS DIRECTION PMN076300170 0 FA41 0770 0R 2 07925—X2 'OR' IN READ FUNCTION CODE PM007640017F 0 D239 n771 STD 2 07909— x2 TOCC FOR READ— AFTER — SEEK EMN07650017F 0 EA50 0772 OR 2 D7990—X2 'OR' IN SECTOR NO. PMN076600180 0 9247 0773 2 07945—x2 COMPLETE READ/WRITE CODE pMN076700181 0 0237 0774 STO 2 01907—X2 2ND WD OF READ/WRITE IOCC PmN076800117 0 E442 0775 OR 2 01920—x? 'OR' IN READ CHECK BIT PMN076900183 0 8747 0776 A 2 07945— X2 pMN077000184 0 0240 0777 STO 2 0Z975—X2 2ND WD OF READ CHECK IOCC PMN077100185 0 8448 0778 OR 2 07951—x2 'OR' IN SENSE IOCC BITS PMN077200186 0 0238 0779 STO 2 07911—X2 COMPLETED SENSE IOCC PMN077300137 0 CA3C 0780 LOD 7 DZ91?— x7 1+SCTR ADDR TO EXTENSION PMN077400188 0 0418 0781 D1340 x10 2 07910—x2 SENSE FOR DISK READY pMN077500189 0 07E8 0782 STO 2 cDDSW—X2 SAVE THE DSW PMN07760018A 0 4828 0783 BSC 7+ SKIP UNLESS POWER UNSAFE OR PMN077700188 D 7000 0784 MDX 02215 *WRITE SELECT, RR OTHERWISE PMN077800180 0 100? 0785 SLA 2 BR TO PREOPERATIVE ERR TRAP PMN077900I80 0 41128 0786 BSC 2+ *IF DISK NOT READY, SKIP PMN07800018F 0 708E 0787 MDX 07220 *OTHERWISE pMN078100788 * STATEMENTS REMOVED 2-1 PMN07820018F 0 0101 0789 LO 1 I FETCH DESIRED CYLINDER ADDR PMNO7R300190 00 94000000 0790 D7350 5 L *—* SUBTRACT ARM POSITION PMN0784001970193004818701807910792BSCMDX+-0Z400SKIP IF SEEK NECESSARYRANCH TO PERFORM OPERATIONPMN07850pMN078600793 PMN078700794 * SEEK PmN078800795 PMN078900194 0 1893 0796 SRT 19 PUT NO. CYLINDERS IN EXT PMN079000195 0 I800 0797 sRA 15 + OR — SIGN TO BIT 15 pMN079100196 0 1002 0798 SLA 2 SHIFT SIGN TO BIT 13 pMN079200197 1 E434 0799 OR 2 01910—x2 IN REMAINDER Of IOCC PMN079300198 0 1800 0800 RTF 16 pmN079400199 0 4810 0801 8SC SKIP IF SEEK TOWARD HOME PMN07950019A 0 7002 0802 MDX 07380 BRANCH 1E SEEK TOWARD CENTR PMN079600198 0 F25I 0803 FOR 7 DZ995—X7 COMPLEMENT NO. CYLS TO BE PMN079700190 0 8230 0804 A 2 07900— x2 *SOUGHT TO GET POSITIVE NO. PMN079800190 0 0434 0805 07380 STD 2 07904-12 PmN079900198 0 07E8 0806 In 2 SODSw—x2 FETCH THE DSW 2-1 PMN08000019F 0 1000 0807 SLA 13 2-1 PMN080100140 0 4810 0808 8SC 2-1 PMN080200181 0 7001 0809 MDX 0Z390 2-1 PMN080100182 0 0101 0810 02385 LD 1 1 FETCH SECTOR ADDR 2-1 pMN080400143 0 1803 0811 SRA CONVERT TO CYLINDER ADDR2-1 PMN080500144 0 0234 0817 STO 2 D7904—X2 *AND STORE IN IOCC 2-1 pMN080600145 0 4213 0813 07390 BSI 2 02070-1—x2 START SEEK 2-1 PMN08070332


ADDR REL OBJECT ST.NO. LABEL OPCD FT OPERANDS ID/SEQN00814 PMN080800815 * SEEK COMPLETE INTERRUPT PROCESSING PMN080900816 pmN0810001A6 0 C438 0817 LOD 2 D2908-X2 SET UP MCC FOR pmN0811001A7 0 DA34 0818 STD 2 02904-X2 *READ AFTER SEEK PmN081200148 0 4213 0819 85I 2 0207 0-1-X2 START READ-AFTER-SEEK pmN081300820 * pmN081400821 * READ-AFTER-SEEK COMPLETE INTERRUPT PROCESSING PmN08t500822 pMN0816001A9 0 0231. 0823 ID 2 02901-x2 FETCH ADR OF SCTR JUST READ pmN081700144 00 04800191 0824 STO I 02350+1 UPDATE ARM POSITION pmN0818001Ac 0 9101 0825 S 1 1 SUB DESIRED SCTR ADDR pMN0819001AD 00 4C200116 0826 BSC L 07185,2 BR IF SEEK UNSUCCESSFUL pMN082000877 * pMN082100828 pmN082200829 * READ/WRITE pmNn82100830 PMN0824001AF 0 CA3C 0831 02400 LOC 2 02912-X7 FETCH INTERMEDIATE WD CNT PMN08250OIRO n 4808 0832 BSC SKIP, WD CNT NOT EXHAUSTED PMN082600191 0 7094 0833 07410 MDX 02210 BRANCH IF READ/WRITE DONE PMN082700182 0 8440 0834 AD 2 02916-x7 DECREMENT WORD COUNT AND pmN082800193 0 033C n835 STD 2 0Z917-X2 *INCREMENT SECTOR ADDRESS PMN082900184 0 4830 0836 BSC Z- SKIP IF THIS IS LAST SECTOR PMN083000185 0 1810 0837 SRA 16 CLEAR ACCUMULATOR pMN083100186 0 824F 0838 A 2 02985-x2 ADD BACK 321 TO WO CNT pmN083200157 0 0100 0819 STO 1 0 STORE RESULT IN I/O AREA pmN083100188 0 CA36 0840 100 2 02906-X2 RESTORE TOCC FOR ORIGINALLY PMN083400189 0 DA34 0841 STD 2 02904-x? *REQUESTED OPERATION pmN083500184 0 C101 0842 LO 1 1 ADD SECTOR NO. TO SECTOR PMN083600198 0 EA50 0843 OR 2 02990-x2 *ADDRESS PmN08370018C 0 01.01. C844 STO 1 1 PMN083800180 0 4213 0845 BSI 2 02070-1-X2 START READ/WRITE OPERATION PMN083900846 pMN084000847 * READ/WRITE COMPLETE INTERRUPT PROCESSING pMN084100848 pmN08420018E 0 0740 0849 LO 2 02975-X2 SET UP FOR READ CHECK PMN0843001RF 0 n235 0850 STO 2 02905-x2 PMN08440OICO 0 C247 0851 LO 2 02945-X2 FETCH FUNCTION INDICATOR PMN084500101 0 4820 0852 BSC SKIP IF READ REQUESTED pMN084600102 0 4211 0853 BSI 2 02070-1-x2 START READ CHECK OPERATION PMN084700103 0 CAl? 0854 LOD 2 D1902-X2 RESTORE LAST 2 WDS OF SEC- PMN084800104 0 D900 0855 STD I 0 *TOR PREVIOUSLY READ pmN084900105 0 C21C 0856 LD 2 02912-x2 FETCH INTERMEDIATE WD CNT PmN085000106 0 4808 0857 BSC SKIP IF MORE READING/WRTING PMN085160107 0 70E9 0858 MDX 02410 BRANCH IF FINISHED pmN0852001C8 00 75000140 08 59 MDX LI 320 POINT XR1 TO NEW I/O AREA PMN08530O1CA 0 0900 0860 LDD 1 0 SAVE LAST 2 WDS OF SECTOR PMN085400108 0 0432 0 86 1 sT0 2 D1902-X2 *JUST READ/WRITTEN PMN0855001CC 0 CA3C 0867 LCD 2 02912-x2 WD CNT, SCTR ADDR NEXT OP pMN085601100 0 9900 0863 STD 1 0 STORE BOTH IN NEW I/O AREA pMN08570OICF 0 708A 0864 MDX 02240 BACK TO SET UP NEXT OPERATN PMN085800865 * pmN085900866 * pmN0860001CF 0008 0867 ASS PATCH AREA 2-4 PMN086100868 pMN086200869 * pmN086300104 n 0040 0870 DC I CILI ID NO. OF CORE IMAGE LDR,P1 PMN086400108 0 0000 0871 SCUM OC *-* CORE ADDR/C10 NO. PMN08650010C 0 0000 0872 DC WORD COUNT PmN086600t nn 0 0000 0873 00 *-* SCTR ADDR PMN08670010E 0002 0874 BSS 2 WO CNT, SCTR ADDR CORE LDS PMN0868001E0 0 0875 szEND ECM 1 1- END OF DISKZ PMNOB690Appendix B. Listings 333


EQUIVALENCESADOR REL OBJECT ST.NO. LABEL OPCD FT OPERANDS ID/SEQNO.0877 * PmN087100878 * EQUIVALENCES FOR DOOM PARAMETERS PMN087200879 * PMN087301004 0 0880 /INANE EQU 4 NAME OF PROGRAM/GORE LOAD PMN087400006 0 08(11 (MKT ECU 6 BLOCK CT OF PROGRAM/CORE LOAD PPIN087500007 0 0882 fFCNT ECU 7 FILES SWITCH PMN087600008 1 0883 NSYSC EQU 8 SYSTEM/NON-SYSTEM CARTRIDGE INOR PMN087700009 0 0884 NJBSW ECU 9 JOBT SWITCH PMN087800008 0 0885 ((COSH EQU 10 CLB-RETURN SWITCH PMN087900008 0 0886 NLCNT ECU 11 NO. OF LOCALS PMN088000000 0 0887 NMPSW EQU 12 CORE MAP SWITCH PMN08810000(1 0 0888 IPMDF1 EQU 13 NO. DuP CTRL RECORDS (MODIF) PMNO8B2Q000E 0 0889 NMDF2 EQU 14 ACDR OF moOlF BUFFER PMN08810000F 0 0890 NNCNT EQU 15 NO. OF NOCALS PMN088400010 0 0891 NENTY ECU 16 RLTV ENTRY ADDR OF PROGRAM PMN088501011 0 0892 ORP67 EQU 17 1442-5 SWITCH PMN088600017 0 0893 4TOOR EQU 18 OBJECT WORK STORAGE DRIVE CODE PMN088700014 0 0894 NEHOL EQU 70 AMR LARGEST HOLE IN FIXED AREA PMN088800015 0 0895 NESZE EQU 71 BLK CNT LARGEST HOLE IN FXA PMN088900016 0 0896 OUHOL EQU 22 A00IR LARGEST HOLE IN USER AREA PMN089000017 0 0897 NUSZE ECU 73 BLK CNT LARGEST HOLE IN UA. PMN089100018 0 0898 NOCSW EQU 24 OUP CALL SWITCH PmN089200019 0 0899 NPIOD ECU 25 PRINCIPAL I/0 DEVICE INDICATOR PMN08910001A 0 0900 NPPIR EQU 26 PRINCIPAL PRINT DEVICE INDICATOR PMN089400018 0 0901 NCIAD ECU 77 RLTV ADDR IN 'STRT OF CIL ADDR PMN08950001C 0 0902 NACIN ECU 28 AVAILABLE CARTRIDGE INDICATOR PMN089600010 n 0903 41GRPH ECU 29 2750 INDICATOR 2G2 PMN08970001E 0 0904 NGCNT ECU 10 ND. G7750 RECORDS 2G2 PMN08980001E 0 0905 NLOSW EQU 11 LOCAL-CALLS-LOCAL SWITCH 2-2 PMN089900020 0 0906 NxiSW EQU 37 SPECIAL ILS SWITCH 2-2 PMN090000071 0 0907 NECNT ECU 33 NO. OF *EQUAT RCOS 2-4 PMN090050021 0 0908 NANDU ECU 35 1+BLK ADM FIND OF UA (ADJUSTED) PMN090100071 0 0909 NONDU ECU 40 1+BLK ADDR END OF UA (BASE) PmN090200020 0 0910 NFPAD EQU 45 FILE PROTECT ADDS PMN090300032 0 0911 NPCID EQU 50 CARTRIDGE ID, PHYSICAL DRIVE PmN090400017 0 0917 ILION EQU 55 CARTRIDGE ID, LOGICAL DRIVE PMN090500010 0 0913 4018A ECU 60 SCTR ADDS OF 018 PMN090600041 (1 0914 FISCRA EQU 65 SCTR ADDR Of SCRA PMN090700046 0 0915 NFMAT EQU 70 FORMAT OF PPOG IN WORKING STG PMN090800048 0 0916 NFLET ECU 75 SCTR ADOR 1ST SCTR Of FLET PMN090900050 0 0917 NULET EQU 80 SCTR ADDR 1ST SCTR OF LET PMN091001055 0 0918 NWSCT EQU 85 BLK CNT OF FROG IN WORKING STG PMN09110005A 0 0919 NCSHN ECU 90 NO. SCTRS IN CUSHION AREA P811091200970 * PMN091300921 * EQUIVALENCES FOR PHASE ID NUMBERS pMN091400922 * PMN09150106E 0 0923 'MCRA EQU 110 PHASE ID FOR MCRA PMN091600073 0 0924 eSUP6 ECU 115 PHASE ID FOR DUMP PROG 2-4 PMN09170n074 0 0925 'SUPT ECU 116 PHASE ID FOR AUX SURV 2-4 PMN091800078 0 0926 ,C180 ECU 120 PHASE ID FOR CLB, PHASE 0/1 PMN09190on8C 0 0927 '1403 EQU 140 PHASE ID FUR SYS 1403 SUER pMN092000080 0 0928 '1132 EQU 141 PHASE ID FOR SYS 1132 SUBR pMN09210008E (1 0929 .012TR ECU 142 PHASE ID FOR SYS CP SUBS pMN09220008E 0 0930 '2501 EQU 143 PHASE ID FOR SYS 2501 SUBR PMN092300090 0 0931 '1442 ECU 144 PHASE ID FOR SYS 1442 SUBS p8N09240n091 n 0932 '1134 EQU 145 PHASE ID FOR SYS 1134 SUBS pMN092500092 0 0933 .KBCP EQU 146 PHASE ID FOR SYS KB/CP SUBR pMN092600093 0 0934 'CDCV ECU 147 PHASE 10 FOR SYS CD CONY pMN092700094 0 0935 .1710CV EQU 148 PHASE 10 FOR SYS 1134 CONV pMN092800095 1 0936 'KBCV ECU 149 PHASE TO FOR SYS KB CONV pMN092900096 n 0937 .DZID EQU 150 PHASE ID FOR DISKZ pMN093000097 n 0938 10110 EQU 151 PHASE ID FOR DISK) pMN093100098 0 0939 'ONID ECU 152 PHASE ID FOR DISKN pmN093200040 0 0940 .0111 ECU 160 PHASE 10 FOR CI LOADER,PH 1 pMN093300041 0 0941 1C112 ECU 161 PHASE ID FOR CI LOADER,PH 2 pmN093400942 * pMN093500943 * EQUIVALENCES FOR RESIDENT MONITOR PMN093600944 * PMN093700014 0 0945 $LKNM EMI SMASH SAVE AREA FOR NAME OF LINK pMN093800016 0 0946 ORMSW MI $HASH+2 EXIT-LINK-DUMP Sw(-1,001) pMN091900017 0 0947 $CXR1 EQU $HASH+3 SAVE AREA FOR XR1 PMN094000011 0 0948 $CLSW EQU $HASH+4 SW FOR CORE IMAGE LOR,PH 2 PMN094100019 0 0949 $DMPF EQU SHASH+5 DUMP FORMAT CODE pMN0942000LA 1 0950 $ACEX EQU $HASH+6 ACC AND EXT WHEN ENTER DUMP PMN09430005A 0 0951 SCILA ECU 55150+1 AMR OF END OF DK I/O - 3 PMN0944000139 0 0952 51872 EQU 51705+1 ADR OF SERVICE PART OF DKI0 pMN094500104 1 0953 $1874 EQU $1405+1 ADS. OF THE IBT PmN09460DOFF 0 0954 ssNLT ECU $DBSy+1 SENSE LIGHT INDICATOR pMN0947000E0 0 0955 SPAUS ECU 131000-2 PAUSE,14TERRUPT INDICATOR PMN094800081 0 0956 $RWCZ ECU 07000-1 READ/WRITE SWITCH (CARDZ) PMN0949000E4 0 0957 SXR3X EQU $1496 x83 SETTING DURING XEQ 2-2 R101095000958 * PMN095103:34


AMA REL OBJECT ST.NO. LABEL OPCD FT OPERANDS ID/SEQNO0959 * EQUIVALENCES FOR ABSOLUTE SECTOR ADDRESSES PMN095200960 PMN095300000 0 0961 'LOAD EQU 0 ADOR OF SCTR WITH ID,DEF CYL AOR PMN095400001 0 0962 'OCOM EQU 1 ADDR OF SCTR CONTAINING OCOM PMN095500002 0 0963 'RIAD EQU 2 ADDROOF SCTR CONTAINING RES IMGE PMN095600003 0 0964 'SLET EQU 3 ADOR OF SCTR CONTAINING SLET PMN095700006 0 0965 'P181 EQU 6 AMR Of SCTR CONTAINING RELD TBL PMN095800007 0 0966 'HONG EQU 7 ADDR OF SCTR CONTAINING PAGE MDR PMN095900000 0 0967 15TRT EQU 0 ADDR OF SCTR W/ COLD START PROG PMN096000968 PMN096100969 * EQUIVALENCES FOR THE CORE IMAGE HEADER PMN096200970 * PMN096300000 0 0971 eXEQA EQU 0 PITY AMR OF CORE LOAD EXEC ADOR PMN096400001 0 0972 'CMON EQU I 1/LTV ADDR Of WO CNT OF COMMON PMN096500002 0 0973 'DREQ EQU 2 RLTV ADDR OF DISK I/0 INDICATOR PMN096600003 0 0974 'FILE EQU 3 RLTV ADOR OF NO. FILES DEFINED PMN096700004 0 0975 "MKT EQU 4 PITY ADDR OF WD CNT OF CI HEADER PMN096800005 0 0976 'LSCT EQU 5 SCTR CNT OF FILES IN MK STORAGE PMN09690n006 0 0977 'LOAD EQU 6 PITY ADDR OF LOAD AMR CORE LOAD PMN097000007 0 0978 'XCTL EQU 7 RLTV ADDR OISKI/DISKN EXIT CTRL PMN097100008 0 0979 'TVWC EQU 8 RLTV ADDR OF WO CNT OF TV PMN097200009 0 0980 'WONT EQU 9 RLTV AMR OF WO CNT OF CORE LOAD PMN09730000A 0 0981 'XR3X EQU 10 RLTV ADOR OF EXEC SETTING OF XR3 PMN09740ODOR 0 0982 'TTVX EQU 11 RLTV ADDR OF 1ST WD OF ITV PMN097500011 0 0983 'TLS4 EQU 17 RLTV ADM OF 1ST WD OF IBT4 PMN09760nnIA 0 0984 'OVSW EQU 26 RLTV ADDR OF LOCAL/SOCAL SWITCH PMN097700010 0 0985 'CORE EQU 28 CORE SIZE OF BUILDING SYSTEM PMN097800010 0 0986 'MONO EQU 29 RLTV ADDR OF LAST WD OF CI HDR PMN097900987 * PMN098000988 * EQUIVALENCES FOR LET/FLET PMN098100005 00989 *0990 'LEH° EQU OF LET/FLET HEADER 5 WORD COUNTPMN09820PMN098300003 n eLFEN OF PER LET/FLET ENTRY PMN098400000 0 0992 'SCTN EQU 0 RITY ADDR OF LET/FLET SCTR NO. PMN09850EQU 3 NO WDS 09910001 0 0993 'UAFX EQU 1 RLTV ADOR OF SCTR ADDR OF UA/FXA PMN098600003 0 0994 'WDSA EQU 3 RLTV ADDR OF NOS AVAIL IN SCTR PMN098700004 0 0995 'NEXT EQU 4 RLTV ADOR OF ADDR NEXT SCTR PMN098800000 0 0996 1LFNM EQU 0 PITY ADDR OF LET/FLET ENTRY NAME PMN098900002 0 0997 1BLCT EQU 2 PITY ADDR OF LET/FLET ENTRY OBCT PMN099000998 * PMN099100999 * MISCELLANEOUS EQUIVALENCES PMN099200033 01000 *1001 "ISTV EQU FACTOR 2-1 51 ISS NO. ADJUSTMENTPMN09930PMN099400005 0 1002 1MXDR EQU SUPPORTED 5 MAX NO. DRIVES PMN099500380 0 LIMIT FOR DISKZ PMN099600400 0 1004 'COMI EQU 1216 LOW COMMON LIMIT FOR DISKI PMN099700600 0 1005 'COM2 EQU 1536 LOW COMMON LIMIT OF DISKN PMN099801003 'COMZ EQU 896 LOW COMMON0011 n 1006 'TCNT EQU 17 NO. TRIES BEFORE DISK ERROR PMN0999000F9 0 1007 'OKEP MI 02000+7 LIEF ENTRY TO DISKI/N PMN100000087 0 1008 'DKIP EQU 02000+5 DISK I/O INTERRUPT ENTRY PT PMNI00100010 0 1009 'SCIB EQU 16 CIB SECTOR COUNT 2-2 PMNI00200003 0 1010 'HCTB EQU 3 HIGH COMMON SECTOR COUNT 2-2 PMN100301000 0 1011 'MCOR EQU 4096 SIZE OF MINIMUM CORE 2-2 pMNI00400078 0 1012 Y EQU 127 PMN100501013 * PMN100600004 0 1014 1CION EQU 4 RLTV ADM CARTRIDGE ID 2-2 PMN100700005 0 1015 'COPY EQU 5 RLTV ADDR COPY INDICATOR 2-2 PMN100800001 0 1016 'OCTB EQU 1 ;MTV ADDR DEFECTIV CYL TBL 2-2 PMN100900008 0 1017 'DTYP EQU 8 RLTV ADDR DISK TYPE INOR 2-2 PMN10100Appendix B. Listings 335


COLD START PROGRAMADDR REL CPRJECT ST.NO. LABEL OPCO FT OPERANDS ID/SUNO1019 ***** * ****** ************************* ********* ***** pmN101201020 * PMN101301021 *STATUS - VERSION 2, monifICATION LEVEL 5. * pMN101401022 * pmN101501021 *FUNCTION/OPERATION - * PMN101601024 * THIS PROGRAM IS READ INTO CORE FROM SECTOR 0 * PmE)101701025 * OF THE SYSTEM CARTRIDGE AND TRANSFERRED TO BY * pMN101801026 * THE COLD START CARD. DEFECTIVE CYLINDER * PMN101901027 * ADDRESSES, CARTRIDGE ID AND DISK? ARE ALSO ON * pmN102001028 * SECTOR 0 AND ARE READ IN AT THE SAME TIME. * pMN102101029 * ALL THAT REMAINS FOR THE COLD START PROGRAM IS* PMN102201030 * TO READ IN THE RESIDENT IMAGE, SAVE THE * PMN102301031 * CARTRIDGE ID AND TRANSFER TO THE AUXILIARY * PMN102401032 * SUPERVISOR THROUGH SOUMP IN THE RESIDENT * pmN102501033 * MONITOR. * PMN102601034 • pMNIO2701035 *ENTRY - CR010-2 * pmN102801036 * ENTER PROGRAM BY TRANSFER FROM COLD START CARD* PMN102901037 * pMN103001038 *INPUT - * pMN103101039 * THE CARTRIDGE ID OF LOGICAL DRIVE ZERO (THE * PMN103201040 * SYSTEM CARTRIDGE) IS READ IN FROM SECTOR 0 * PMNI03301041 * WITH THE COLD START PROGRAM. * pmNI01401042 * pmN103501043 *OUTPUT - * pmNI03601044 * * THE RESIDENT IMAGE IS READ INTO CORE FROM * PMN103701045 THE DISK. * PMN103801046 * * IN COMMA- * PMN103901047 SACDE * pmN104001048 sCIBA-I * pmN104101049 SCION * pMN104201050 SCYLN * pMN104301051 SOBSY * pMN104401052 SIOCT * PMN10450L053* PMN104601054 *EXTERNAL REFERENCES - * pmN104701055 * OZ000 SUBROUTINE TO PERFORM DISK I/0. * pmNI04801056 * pmNI04901057 *EXITS - * pMN105001058 * THE ONLY EXIT IS TO THE AUXILIARY SUPERVISOR * PMN105101059 * AS FOLLOWS- * pmNI05201060 BSI SouMP * pms1105301061 DC -1 * PmNI05401062 * * pmN105501063 *TABLES/WORK AREAS - N/A * pmNI05601064 * pMN105701065 *ATTRIBUTES - * pMN105801066 * THIS PROGRAM IS NOT NATURALLY RELOCATABLE. * PmN105901067 * * PmN106001068 *NOTES - * pmN106101069 * DISK ERRORS RESULT IN A WAIT AT S p ST2. * PmN106201070 *** **** *****•**** ********* *********** ************ ** pmN106301072 PMN106501073 * READ THE RESIDENT IMAGE INTO CORE PmN106601074 PMN1067001E0 0 6I7F 1075 LOX 1 Y PMN1068001E1 0 087E 1076 Lon CR920 SET UP WORD COUNT AND SCTR PMNI069001E2 00 00000004 1077 CR010 STD L scIBA-1 *ADDR OE RESIDENT IMAGE PmN1070001E4 0 0125 107s STO 1 SOCYL- y *INITIALIZE DEF CYL NO. 1 PMNI071001E5 0 0184 1079 Lo 1 3-y FETCH LOG DRIVE 0 AREA CODE PMN1.072001F6 0 0120 1080 STO 1 SACDE-Y *AND STORE IT IN COMMA pmN1073001E7 0 0029 1081 sTO CR920+1 SAVE THE AREA CODE PmN1074001E9 0 0156 1082 LD I 02000-2-27-Y FETCH AND SAVE THE PmNI075001E 9 0 DOE1 1083 STO SCION *CARTRIDGE ID pmN10760(ILEA 0 COER 1084 LO CR010+1 FETCH CORE ADDR OF RESIDENT PMN1077001E9 0 1890 1085 SRT 16 *IMAGE AND PUT IN EXTENSION PMN1078001 EC 0 016E 1086 STO 1 soBSY-Y CLEAR DISK BUSY INDICATOR PmN10790DIED 0 0118 1087 STO 1 SCYLN-Y INITIALIZE ARM POSITION pMN10800OlEE 0 4173 1088 BSI 1 01000- y FETCH RESIDENT IMAGE PMN10810OIEF 0 1000 1089 WAIT WAIT Our THE INTERRUPT pmN108201090 PmNi09101091 * INITIALIZE ITEMS IN COMMA pmp4108401092 pmN1085001E0 0 1810 1093 SRA 16 PmN1086001E1 0 0193 1094 STO 1 slOCT-Y CLEAR IOCS COUNTER PmNI087001E2 0 C81B 1095 Lon CR910 pmNI088001E1 0 0985 1096 STD 1 SCIBA-I-Y *FOR SAVING CORE ON THE CIB PMN1089001F4 0 COIC 1097 LO CR920+1 FETCH AREA CODE PMNI090001E5 0 01 20 1098 STo 1 SACDE-Y RESET AREA CODE PmN1091001F6 0 C016 1099 LO CR905 INITIALIZE WO ZERO TO BR TO PMN1092001E7 0 0181 1100 STO 1 0-Y *DUMP ENTRY POINT PLUS 1 Pms1109301101 PMN109401102 * TRANSFER TO THE AUXILIARY SUPERVISOR pMN10950336


ADDR REL OBJECT ST.NO. LABEL OPCD FT OPERANDS ID/SEQN01103 TO COMPLETE11041 *INITIALIZATION PMNI0960PMNI097001F8 0 4100 1105 BSI 1 (DUMP—Y BR TO AUXILLIARY SUPERVISOR PMN1098001F9 0 FFF 11061107 *DC —1 *FOR JOB PROCESSING PMN10990PMN1100001FA no13 110811091*855 19 PATCH AREA PMN11010PMN11020CONSTANTS AND WORK AREAS PMN110301111 * PMNII04011100700 0 703F 1112 CR905 MD% X $DUMP+1-1 TO BE STORED IN LOCN ZERO PMN11050070E 0 0000 1113 CR910 DC 0 WC CNT,SCTR ADDR OF 2-5 PMNI1060020F 0 000 1114 DC 'HONG *HARMLESS WRITE TO DISK PMN110700210 0 00F8 1115 CR920 DC fi4fg—$CH12 WD CNT AND SCTR PMN110800211 0 0002 1116 DC*ADDR OF RESIDENT IMAGE PMN110900212 021 1117 END * PMN11100CROSS—REFERENCESYMBOLCR010CR905CR910CR97007000010100Z020010300106001117001100D118007185D2190012100121501220D1730nz,150124001250077800710007110073400135007110011850139007400D741007900019010190201904079050790601907079080790907910D19110191201913D2914079150791601970019750191001915079400194502950019550196001965VALUE01F20700020E021000F200F700F9()0FF010401060108010E0116011001460I4C014E015201540159016801690174017901880190019D01420165OlAF01010122017101740126012701780129017A0128012C0170012F017E013001110132013401150176013701380139011A01<strong>1130</strong>1300130REL DEEM0 1077000000 1112111311150610061706190 062500 061006340 06390 06450 06510 06600 07110 07190 07240 07100 07710 07350 07500 07510 07630 07670 07810 07900 080500 081008I10 08310 08330 06690 06700 06710 06730 06740 06750 06760 06770 06780 06790 06800 06810 06820 06830 06840 06850 06870 0688000 0689069006910 06920000 0693069406950696REFERENCES1084109910951076 1081 10970323 0350 0627 06460628 06410613066306500813 0819 0845 08530619 0670 07150618 06340826077008330784078706290674 0654086407580737 0743 0744 07450757071907260662 0741 082408020809079208580677 080408230651 0713 0854 08610635 C805 0812 081808500747 C8400774081707710647 0769 0781 079907790658 0734 0780 08310764071906590834077507700755072407490622 0773 0776 08510778076507420718070707560841083507630856095508620956 1007 1008 1082 1088Appendix B. Listings 337


SYMBOL VALUE REL DEFN REFERENCES01970 011E 0 0697 074001975 013F 0 0698 0777 C84902980 0140 0 0699 076801985 0141 0 0700 083807990 0142 0 0701 0766 0772 084302995 0141 0 0702 0803SAME 009F 0 0437 0646 0697 1080 1098SACEX 00IA 0 0950 0317SCCAD 0074 0 0164SCH12 0006 0 0254 1115SCILA 0005 0 0253 0311 1077 1096SCION 0108 0 0871 1083SCILA 005A 0 0951 0348SCLSW 0018 0 0948SCOMN 0007 0 0255SCORE 000E 0 0267SCPTR 007F 0 0374SCTSW 000F 0 0268SCWCT 0072 0 0162SCXR1 0017 0 0947 0319SCYLN 009A 0 0427 0695 0697 1087SOADR 0010 0 0269SOBSY 00EF 0 0552 0611 0626 0653 0712 0954 1086SDCDE 0077 0 0367SDCYL 00A4 0 0448 0695 1078SODSW 000D 0 0530 0648 078? 0806SOMPF 0019 0 0949 0321SDREQ 0012 0 0271(DUMP 003F 0 0316 0120 0548 1105 1112SDZ1N 0076 0 0366(EXIT 0038 0 0302$FLSH 0071 0 0360SEPAO 0095 0 0418SGCOM 0063 0 0354(GRIN 0064 0 0355(HASH 0014 0 0273 0945 0946 0947 0948 0949 0950SPBSY 0013 0 0272SI8T2 0089 0 0952SI8T4 0004 0 0953SIOCT 0032 0 0293 0330 0713 0710 1094SIREQ 002C 0 0287 0514SI200 0083 0 0474 0261 048511205 0088 0 0480 0952$1210 008A 0 0481 0475 0476 047751290 00C2 0 0486 0478 0484(1400 00C4 0 0506 0263 0525$1403 0000 0 05(6 0513$1405 0003 0 0520 0953$1410 0005 0 0521 0508 0509 0510$1420 00E6 0 0545$1425 00F4 0 0548 054711490 000E 0 0531 0507 0524$1492 00E0 0 0532 0511$1494 00E2 0 0535 051711496 00E4 0 0542 0546 0957SKCSW 007C 0 0372(LAST 0033 0 0294SLFVO 0008 0 0259(LEVI 0009 0 0260SLEV2 000A 0 0261SLEV3 000B 0 0262SLFV4 nooC 0 0263SLEV5 000D 0 0264SLINK 0039 0 0306 0340SLKNM 0014 0 0945 0346SLSAD 0075 0 0365SNOUP 0034 0 0295SNXEQ 0035 0 0296SPAUS 00F0 0 0955SPBSY 0036 0 0297(FOCI 0037 0 0298SPHSF 0078 0 0368SPRET 0028 0 0282 0284 0725$P511 0081 0 0380 0382SPIT? 0085 0 0386 0388 0660$P513 0089 0 0392 0394$P314 0080 0 0398 0400SRMSW 0016 0 0946 0339$RWCZ 00E1 0 09561115338


SYMROL VALUE REL DEFN REFERENCESSSCAN 0020 0 0276$SCAT 0011 0 0270 0331$SNLT 00EF 0 0954$STOP 0091 0 0405 0264 0407$SYSC 00E0 0 0533$5000 0052 0 0338 0302$S100 0053 0 0339 0308 0325$5150 0059 0 0345 0951$5200 005E 0 0349$5250 0048 0 0329 0318 0333 0147 0.351$5300 004C 0 0330 0332$5900 0030 0 0310 0322 0324$S910 003E 0 0312 0338$UFDR 0070 0 0373suF10 0079 0 0369SULET 002D 0 0288$WR01 007B 0 0371$WSDR 007A 0 0370$XR3X 00F4 0 0957VEND 01E0 0 0875 0604 0606$1132 007E 0 0375$1403 0080 0 0376X2 00F2 0 0707 0660 0764 0765 0766 0768 0769 0770 0771 0772 0773 0774 0775 0776 0777 07780779 C780 0781 0782 0799 0803 0804 0805 0806 0812 0813 0817 0818 0819 08230831 0834 0835 0838 0840 0841 0843 0845 0849 0850 0851 0853 0854 0856 08610862007F 0 1012 1075 1078 1079 1080 1082 1086 1087 1088 1094 1096 1098 1100 1105NACIN 001E 0 0902NANDU 0023 0 0908N8NDU 0078 0 0909NCBSW 000A 0 0885SCIAD 0018 0 0901NCIBA 001C 0 0913NCIDN 0037 0 0912NCSHN 005A 0 0919NDFICT 0016 0 0881NOCSW 0018 0 0898NECNT 0021 0 0907/FENT ,/ 0010 0 0891NECNT 0007 0 0882#FHOL 0014 0 0894IFLET 0048 0 0916#FMAT 0046 0 0915NFPAD 0070 0 0910NEWE 0015 0 0895#GCNT 001E 0 0904NGRPH 0010 0 0901NJBSW 0009 0 0884#LCNT 0008 0 0886OLOSw 00IF 0 0905NMDF1 000D 0 08884m0F2 000E 0 0889NmPSW 000C 0 0887#NAME 0004 0 0880NNCNT 000F 0 0890OPCID 0037 0 0911NPIOD 0019 0 0899NPPTR 00IA 0 0900#RP67 0011 0 0892NSCRA 0041 0 0914#SYSC 0008 0 08834TODR 0012 0 0893NUHOL 0016 0 0896NULET 0050 0 0917fuszE 0017 0 0897NWSCT 0055 C 0918NX1Sw 0020 0 09061 13LCT 0002 0 0997'CDCV 0093 0 0934. cInN 0004 0 10141 C1L1 00A0 0 0940 0870'CIL? 00A1 0 09411 CLR0 0078 0 09261 CMON 0001 0 0972I Ccm7 0380 0 10031 COM1 0400 0 1004'COM2 0600 0 1005'COPY 0005 0 1015• Appendix B 338. 1


SYMBOL VALUE REL DEFN REFERENCES'CORE 0010 0 0985'CPTR 008E 0 0929'OCOM 0001 0 0962'OCT8 0001 0 1016"DKEP 00F9 0 1007'OUP 0177 0 1008"ONTO 0098 0 0939'DREG? 0002 0 0973'07YP 0008 0 1017. nzin 0096 0 0937 0605'DUD 0097 0 0938'FILE 0003 0 0974'HC19 0003 0 1010'HONG 0007 0 0966 1114'MEND 001D 0 0986'HWCT 0004 0 C975' - LOAD 0000 0 0961'TIS4 0011 0 0983"157V 0033 0 1001'ITVX 000B 0 0982'KBCP 0092 0 0933'KICV 0095 0 0936'1040 0006 0 0977'LEEN 0003 0 0991"LEND 0005 C 0990'LFNM 0000 0 0996°1507 0005 0 0976'HCOR 1000 0 1011'MCRA 006E 0 0923'MXDR 0005 0 1002'NEXT 0004 0 0995'OVSW 001A 0 0984• RTCV 0094 0 0935'RIAD 0002 0 0963 1116'RT51 0006 0 0965'5C19 0010 0 1009'SCTN 0000 0 0992'SIFT 0003 0 0964'STRT 0000 0 0967'5UP6 0073 0 0924'SUET 0074 0 0925'TCNT 0011 0 1006 0625"TVWC 0008 0 0979'UAFX 0001 0 0993'WONT 0109 0 0980s wnss 0003 0 0994'XCTL 0007 0 0978'XEOA 0000 0 0971'XR3X 0004 0 0981'1132 onsn 0 0928'1134 0091 0 0932'1403 ow 0 0927'1442 0090 0 0931'2501 008F 0 0930338.2•


APPENDIX C. ABBREVIATIONSBelow is a list of <strong>the</strong> abbreviations used in <strong>the</strong> Abbreviation Meaninglistings of <strong>the</strong> <strong>1130</strong> Disk Monitor <strong>System</strong>, Version2. Included in this list are <strong>the</strong> abbreviations used CC Card Columnin current <strong>1130</strong> and 1800 systems. CD CardCDE CodeAbbreviation Mea nilai CHAN ChannelCHAR CharacterABS AbsoluteCHK CheckACC Accumulator, Accumulate CHG ChangeACCT AccountCHKPT CheckpointACT ActualCIB Core Image BufferADDL Additional CIL Core Image LoaderADDR AddressCLB Core Load BuilderADJ AdjustCLD Core LoadADV AdvanceCLR ClearAI Analog Input CLS CloseALG Algebraic CMN COMMONALLOC <strong>All</strong>ocateCMP CompareALLOCN <strong>All</strong>ocation CMPL ComplementALPHA Alphabetic COMMA Communication AreaALT Alternate, Alteration COMP ComputeAO Analog Output CNSL ConsoleAPPDGE Appendage CNT CountAPPROX Approximate COL ColumnARITH Arithmetic COMM CommunicationASDNG Ascending CON ConstantASM Assembler COND ConditionASMBL Assemble CONT ContinueASGN AssignCORR CorrectionAUX Auxiliary CP Console Printer, Control ParameterAVAIL Availability CPLD CoupledAVG AverageCPTN ComputationCTR CounterBEGNG Beginning CTRL ControlBFR BufferCURB CurrentBKSP Backspace CVRT ConvertBLK BlockCYL CylinderBLKCNT Block CountBLNK BlankDAO Digital-Analog OutputBR BranchDB Disk BlockBM Buffer Mark DC Data ChannelDCMT DocumentCAD Core Address DEC DecisionCALC Calculate, Calculator DECML DecimalCAR Channel Address Register DECR DecrementCARR Carriage DEF DefectiveCART Cartridge DEFN DefineCAT CatalogDEL DeleteCATLGD Cataloged DESCG DescendingAppendix C. Abbreviations 339


Abbreviation Meaning Abbreviation MeaningDE TM Determine FREQ FrequencyDEVC Device FUNC FunctionDGT Digit FWD ForwardDI Digital Input FXA Fixed AreaDICT Dictionary FXD FixedDIM DimensionDIRCTY Directory GEN GeneratorDISP Displacement GENL GeneralDISPCHG Dispatching GM Group MarkDK Disk GT Greater ThanDLMTER Delimeter GTE Greater Than or Equal ToDPC Direct <strong>Program</strong> ControlDR Drive HDLER HandlerDSW Device Status Word HDR HeaderDT Defective Track HEX HexadecimalDUP Disk Utility <strong>Program</strong> HI HighDUPCTN Duplication HLT HaltHSK HousekeepingEBC EBCDIC HYPER HypertapeE LIM EliminateELT Element TAR Instruction Address RegisterENT Entry IC Instruction CounterEOF End Of File ID IdentificationE OJ End Of Job IDX IndexEOR End Of Reel ILS Interrupt Level SubroutineEP Extended Precision ILSW Interrupt Level Status WordEQ Equal, Equate INCR IncrementEQU Equate IND IndicateERP Error Parameter INDN IndicationERR Error INDR IndicatorES Electronic Switch INFO InformationETV Executive Transfer Vector INITLZ InitializeEVAL Evaluate INQ InquireEXCH Exchange INT InitialEXEC Execute INTFCE InterfaceEXP Exponent INTLD InterludeEXPR Expression INTM InterimEXTYP Exit Type INTMD IntermediateEXTR Extract INTNL InternalINTRPT InterruptFAC Floating Accumulator I/O Input/OutputFOR FORTRAN IOAP I/O Area ParameterFIO FORTRAN I/O IOCC I/0 Control CommandFLD Field IOCR I/0 Control RoutineFLDL Field Length INST InstructionFIG Figure INTERP InterpretFLET The Location Equivalence Table INVAL Invalidfor <strong>the</strong> Fixed Area ISS Interrupt Service SubroutineFLT Floating ITER Iterate, IterationFMT Format ITG IntegerFR From I/P Input340


Abbreviation Meaning Abbreviation MeaningKB Keyboard OPN OpenKP Keypunch OPND OperandOPTN OptionLBL Label OPTR OperatorLCT List Control Table ORG OriginLD Load OVFLO OverflowLET Location Equivalence Table for OVLP OverlapUser Area OVLY OverlayLFT LeftLH Left-Hand, Leftmost PAPT Paper TapeLINKB Link/Busy Word PARAM ParameterLIT Literal PARTL PartialLN Line PERF Perforate, Perforated, PerforationLNG Length PERPHL PeripheralLO Low PFM PerformLOC Location PG PageLOCAL Load-on-Call Subroutine PGLIN Page and LineLT Less Than PH PhaseLTE Less Than or Equal To PHYS PhysicalLTR Letter PK PackLVL Level PKD PackedPNCH PunchMACH Machine PNDG PendingMAGT Magnetic Tape POS PositionMAINT Maintain, Maintenance PR PrintMAL F Malfunction PRE C PrecisionMAX Maximum 'PRE V PreviousMEM Memory PRGE PurgeMIN Minimum PRI PriorityMISC Miscellaneous PRINC PrincipalML Mainline PROC ProcessMN Mnemonic PROG <strong>Program</strong>MOD Modification PROT ProtectMON Monitor PRTN PartitionMPXR Multiplexor PRVNT PreventMPY Multiply PT Pointer, PointMRGE Merge PTR PrinterMSG Message PTV PositiveMSTR MasterQUALFD QualifiedNEC Necessary QUANT QuantityNEG Negative QUE QueueNO. NumberNORM Normalize, Normalized RAND RandomNUM Numeric R + S Reset and StartNXT Next R/W Read/WriteRCD RecordOBJ Object RCV ReceiveOP Operation RD Read0/P Output RDY ReadyAppendix C. Abbreviations 341


Abbreviation Meaning Abbreviation MeaningREF Reference SUB SubtractREG Register SUBP SubprogramREL Release SUBR SubroutineRELOC Relocate, Relocatable SUBSC SubscriptREQ Request, Require SUMM SummarizeRET Return SUP SuppressRH Right-Hand, Rightmost SUP SupervisorRI Read in SYNC Synchronize, SynchronizerRLS Reels SYM SymbolRLTV Relative SYSRx <strong>System</strong> Reserved Word (x is a digit)RM Record Mark SYST <strong>System</strong>RO Read Out SW SwitchRPT ReportRSLT Result TBL TableRST Reset TECHNQE TechniqueRSTRT Restart TEMP TemporaryRT Right TERM Terminal, TerminateRTE Route TM TapemarkRTN Routine TMN TransmissionRWD Rewind TMT TransmitTOT TotalSAD Sector Address TP TapeSAT Satellite TR TransferSAR <strong>System</strong> Action Required TRK TrackSCHEI) Schedule, Scheduler TRLR TrailerSCN Scan TRUNC Truncate, TruncationSCTR Sector TST TestSECT Section TU Tape UnitSEL Select TV Transfer VectorSEN Sense TW TypewriterSEQ SequenceSEQNO Sequence Number UA User AreaSER Serial UAR User Action RequiredSEG Segment UFLO UnderflowSIG Signal UNC UnconditionalSIM Simulator UNLD UnloadSK Skeleton UNPKD UnpackedSLET <strong>System</strong> Location Equivalence Table UTIL UtilitySMStorage MaskSNGL Single V VersionSOCAL <strong>System</strong> Load-On-Call Subroutine VAL ValueSP Space VAR VariableSRCH Search VIOL ViolationSPEC Specification, Specify VOL VolumeSTStoreSTA Station WD WordSTD Standard WM Word MarkSTG Storage, Storing WR WriteSTMNT Statement WRK WorkSTP Standard Precision WS Working Storage342


Abbreviation Meaning Abbreviation MeaningW/ With 1st FirstW/O Without 2nd Second3rd ThirdXPL Explain, Explanation 4th FourthXR1 Index Register 1 5th FifthXR2 Index Register 2 6th SixthXR3 Index Register 3 7th SeventhXTR Extra 8th Eighth9thNinthZZeroZNZoneAppendix C. Abbreviations 343


APPENDIX D. MICROFICHE REFERENCE TABLEDisk Monitor Microfiche Disk Monitor Microfiche<strong>System</strong> Component Identification <strong>System</strong> Component Identification<strong>System</strong> Loader Phase 17 KAA. 017.00(Paper Tape) Phase 18 KAA. 018.00Bootstrap BAA. 001.00 Phase 19 KAA. 019.00Phase 1 BAA. 002.00 Phase 20 KAA. 020.00Phase 2 BAA. 003.00 Phase 21 KAA. 021.00Phase 22 KAA. 022.00<strong>System</strong> Loader (Card) Phase 23 KAA. 023.00Bootstrap BAA. 004.00 Phase 24 KAA. 024.00Core Image Loader BAA. 005.00 Phase 25 KAA. 025.00Phase 1 BAA. 006.00 Phase 26 KAA. 026.00Phase 2 BAA. 007.00 Phase 27 KAA. 027.00Disk Utility <strong>Program</strong>Assembler <strong>Program</strong>DUPCO JAA. 001.00 Phase 0 MAA. 001.00DCTL JAA. 002.00 Phase 1 MAA. 007.00STORE JAA. 003.00 Phase 1A MAA. 008.00FILEQ JAA. 004.00 Phase 2 MAA. 012.00DDUMP JAA. 005.00 Phase 2A MAA. 013.00DMPLT JAA. 006.00 Phase 3 MAA. 010.00DE LET JAA. 007.00 Phase 4 MAA. 011.00DFINE JAA. 008.00 Phase 5 MAA. 015.00DEXIT JAA. 009.00 Phase 6 MAA. 016.00CDFAC JAA. 010.00 Phase 7 MAA. 017.00KBFAC JAA. 011.00 Phase 7A MAA. 018.00PTFAC JAA. 012.00 Phase 8 MAA. 019.00PRE CI JAA. 013.00 Phase 8A MAA. 020.00Phase 9 MAA. 014.00FORTRAN Compiler Phase 10 MAA. 003.00Phase 1 KAA. 001.00 Phase 10A MAA. 009.00Phase 2 KAA. 002.00 Phase 11 MAA. 004.00Phase 3 KAA. 003.00 Phase 12 MAA. 005.00Phase 4 KAA. 004.00 Error Message Phase MAA. 006.00Phase 5 KAA. 005.00 Punch ConversionPhase 6 KAA. 006.00 Phase MAA. 021.00Phase 7 KAA. 007.00 Read Conversion Phase MAA. 002.00Phase 8 KAA. 008.00Phase 9 KAA. 009.00 SupervisorPhase 10 KAA. 010.00 Monitor Control RecordPhase 11 KAA. 011.00 Analyzer NAA. 001.00Phase 12 KAA. 012.00 <strong>System</strong> Core DumpPhase 13 KAA. 013.00 <strong>Program</strong> NAA. 002.00Phase 14 KAA. 014.00 Auxiliary Supervisor NAA. 003.00Phase 15 KAA. 015.00Phase 16 KAA. 016.00 Core Load Builder OAA. 001.00Appendix D. Microfiche Reference Table 345


Disk Monitor Microfiche Disk Monitor Microfiche<strong>System</strong> Component Identification <strong>System</strong> Component Identification<strong>System</strong> Device Subroutines PAA. 001.00 FIXI SAA. 005.00FLOAT SAA. 005.00Standard Precision IFIX SAA. 005.00Arithmetic and Function NORM SAA. 005.00Subroutines SNR SAA. 005.00FADI) RAA. 001.00 XDD SAA. 006.00FAXI RAA. 001.00 XMD SAA. 006.00FDIV RAA. 001.00 XMDS SAA. 006.00FDVII. RAA. 001.00FGETP RAA. 001.00 FORTRAN CommonFLD RAA. 002.00 Subroutines (NoFMPY RAA. 002.00 Precision)FSBR RAA. 002.00 FBTD TAA. 001.00FABS RAA. 002.00 IABS TAA. 001.00FATN RAA. 002.00 XSQR TAA. 001.00FAXB RAA. 003.00 PAUSE TAA. 001.00FEXP RAA. 003.00 STOP TAA, 002.00FLN RAA. 003.00 SUBIN TAA. 002.00FSIGN RAA. 003.00 SUBSC TAA. 002.00FS1N RAA. 003.00 TTEST TAA. 002.00FSQR RAA. 004.00 DATSW TAA. 002.00FTANH RAA. 004.00 DVCHK TAA. 003.00SEAR RAA. 004.00 FCTST TAA. 003.00SFIF RAA. 004.00 ISIGN TAA. 003.00OVERF TAA. 003.00Extended Precision PDUMP TAA. 003.00Arithmetic and Function SLITE TAA. 004.00Subroutines TSTOP TAA. 004.00EADD SAA. 001.00 TSTRT TAA. 004.00EAXI SAA. 001.00EDIV SAA. 001.00 FORTRAN TraceEDVR SAA. 001.00 SubroutinesEGETP SAA, 001.00 SGOTO TAA. 009.00ELD SAA. 002.00 STAR TAA. 009.00EMPY SAA. 002.00 SIIF TAA. 009.00ESBR SAA. 002.00EABS SAA. 002.00 FORTRAN ConversionEATN SAA. 002.00 Subroutines and TablesEAXB SAA. 003.00 EBCTB TAA. 006.00EEXP SAA. 003.00 GETAD TAA. 006.00ELN SAA. 003.00 HOLEZ TAA. 007.00ESIGN SAA. 003.00 HOLTB TAA. 007.00ESIN SAA. 003.00ESQR SAA. 004.00 FORTRAN I/O SubroutinesETANH SAA. 004.00 SDFIO TAA. 004.00SEAR SAA. 004.00 SDFND TAA. 005.00SEIF SAA. 004.00 SFIO TAA. 005.00FARO' SAA. 004.00 UFIO TAA. 006.00346


Disk Monitor Microfiche Disk Monitor Microfiche<strong>System</strong> Component Identification <strong>System</strong> Component IdentificationFORTRAN Device ZIPCO UAA. 007.00Subroutines BIDE C UAA. 007.00CARDZ TAA. 006.00 BIND C UAA. 007.00PAPTZ TAA. 007.00 BINHX UAA. 007.00PNCHZ TAA. 007.00 CPE BC UAA. 008.00PRNTZ TAA. 008.00 CPHOL UAA. 008.00PRNZ TAA. 008.00 CPPT3 UAA. 008.00READZ TAA. 008.00 DCBIN UAA. 008.00TYPE Z TAA. 008.00 DE CBI UAA. 008.00WRTYZ TAA. 008.00 EBCCP UAA. 009.00EBHOL UAA. 009.00Interrupt Level EBPA UAA. 009.00Subroutines (ILS s) EBPT3 UAA. 009.00ILSOO UAA. 001.00 HLE BC UAA. 009.00ILSO1 UAA. 001.00 HLPT3 UAA. 010.00ILSO2 UAA. 001.00 HOLCP UAA. 010.00ILSO3 UAA. 001.00 HOLL UAA. 010.00ILSO4 UAA. 001.00 PR TY UAA. 010.00PT3CP UAA. 010.00Interrupt Service PT3EB UAA. 011.00Subroutines (ISSs) PTHOL UAA. 011.00CARDO UAA. 002.00CARD1 UAA. 002.00 Utility Dump SubroutinesOMPR1 UAA. 002.00 DMP80 UAA. 011.00PAPT1 UAA. 002.00 DMTDO UAA. 011.00PAPTN UAA. 002.00 DMPD1 UAA. 012.00PAPTX UAA. 003.00PLOT1 UAA. 003.00 <strong>System</strong> SubroutinesPNCHO UAA. 003.00 SYSUP UAA. 013.00PNCH1 UAA. 003.00 FLIPR UAA. 012.00PRNT1 UAA. 004.00PRNT3 UAA. 004.00 Mainline <strong>Program</strong>sREADO UAA. 004.00 ADRWS UAA. 014.00READ1 UAA. 004.00 COPY UAA. 014.00TYPE 0 UAA. 005.00 DISC UAA. 015.00WRTYO UAA. 005.00 DLCIB UAA. 016.00DSLE T UAA. 016.00Conversion Subroutines IDENT UAA. 017.00and Tables ID UAA. 017.00EBPRT UAA. 005.00 MODIF UAA. 018.00HOLE B UAA. 005.00 PTUTL UAA. 019.00HOLPR UAA. 006.00 CALPR UAA. 019.00HXBIN UAA. 006.00 FSLEN UAA. 019.00PAPEB UAA. 006.00 RDREC UAA. 020.00PAPHL UAA. 006.00PAPPR UAA. 006.00 Plotter SubroutinesSPEED UAA. 007.00 E CHAR VAA. 001.00Appendix D. Microfiche Reference Table 347


Disk Monitor Microfiche Disk Monitor Microfiche<strong>System</strong> Component Identification <strong>System</strong> Component IdentificationECHRX VAA. 001.00 PRNT2 WAA. 002.00EGRID VAA. 001.00 SCAT1 WAA. 003.00EPLOT VAA. 001.00 STRTB WAA. 004.00ERULE VAA. 002.00FCHAR VAA. 002.00 Stand-alone <strong>Program</strong>sFCHRX VAA. 002.00 Cold Start Card ZAA. 001.00FGRID VAA. 002.00 Console PrinterFPL OT VAA. 003.00 Core DumpFRULE VAA. 003.00 (Paper Tape) ZAA. 003.00PLOTI VAA. 003.00 Console PrinterPLOTX VAA. 003.00 Core DumpPOINT VAA. 003.00 (Card) ZAA. 002.00SCALE VAA. 004.00 DCIP ZAA. 004.00SCALE VAA. 004.00 1132/1403 PrinterXYPLT VAA. 004.00 Core Dump(Paper Tape)SCA Interrupt Service Phase 1 ZAA. 007.00Subroutines (ISSs),Conversion Subroutines,and Conversion TablesPhase 21132/1403 PrinterCore Dump (Card)ZAA. 008.00EBC48 WAA. 001.00 Phase 1 ZAA. 005.00110L48 WAA. 001.00 Phase 2 ZAA. 006.00HOLCA WAA, 001.00 PTREP ZAA. 009.00HXCV WAA. 001.00 UCART ZAA. 010.00:348


APPENDIX E: DISK DATA FORMATSFORTRAN Integer Data:A FORTRAN integer can always be contained in oneword (16 bits) regardless of <strong>the</strong> amount of disk storageallocated for <strong>the</strong> integer. If <strong>the</strong> *ONE WORDINTEGERS control card is used in <strong>the</strong> job whichcreates <strong>the</strong> FORTRAN disk data file, one data wordis allocated for each integer; o<strong>the</strong>rwise, disk storageallocation for each integer is that specified forreal variables (2 or 3 words).Example: The integer field +32767 appears on adisk file beginning * at record word n as describedbelow.With one word integers and standard or extendedprecision specified:RecordWord:Content: /7FFFWith standard precision only specified:RecordWord: n-1Content: /7FFF /XXXXwhere /XXXX represents a fill word (meaninglessdata).With extended precision only specified:RecordWord: n-2Content: /7FFFn-1/XXXX /XXXXwhere /XXXX represents a fill word.*FORTRAN disk file build proceeds backwards from<strong>the</strong> 320th word of each disk sector.Two Word Integer Data:A two-word integer is an integer which can be representedin two or less words (32 bits). Two words ofdisk storage are allocated for each two-word integer.One word integers may appear in <strong>the</strong> same disk datafile as two-word integers, but extended precisionreal variables may not be used in a file which containstwo-word integers.Example: Thetwo-word integer field +500 appearson a disk file beginning at record word n asRecordWord: n-1Content: /0000 /01 F4FORTRAN REAL DATA:A complete description of FORTRAN real data appearsin <strong>the</strong> <strong>IBM</strong> <strong>1130</strong> Subroutine Library, FormC26-5929.FORTRAN A-FORMATTED DATA (integer and real):This data format is described in <strong>the</strong> <strong>IBM</strong> <strong>1130</strong>/1800Basic FORTRAN IV Language, Form C26-3715.Commercial Subroutine Package (CSP) Al FORMAT:CSP Al format consists of 1 character per 16-bitword, left-justified:D character I blankbits I7The righthand 8 bit always contain <strong>the</strong> blank character/40. This blank is inserted by <strong>the</strong> CSP subroutines.CSP A2 FORMAT:CSP A2 format consists of two characters per word:character 1 characterbits 78CSP A3 FORMATCSP A3 format represents 3 characters as a one-wordinteger. The user supplies a 40 character translationtable and <strong>the</strong> A3 integer is formed from <strong>the</strong> relative(to card column 40) positions of each character in thistable.A3 integer = (N1-20)*1600+(N2*40)+N3where N1, N2 and N3 are <strong>the</strong> relative translationtable positions of <strong>the</strong> first, second and third chara-15• APPENDIX E. 349


cters respectively.CSP D1 FORMAT:CSP Dl format consists of one digit per word, rightjustified,representation as described below:00000000 0000 digitbits 0 78 15Example: The six-digit field 001968 appears ona disk file beginning at record word n as follows:RecordWord: n-5 n-4 n-3 n-2 n-1 nContent: /0008 /0006 /0009 /0001 /0000 /0000The sign of <strong>the</strong> field is reflected in <strong>the</strong> low order(digit) word of <strong>the</strong> field, this word being <strong>the</strong> ones'complement of <strong>the</strong> digit if <strong>the</strong> field is negative.Example: The six-digit field -001968 appears ona disk file beginning at record word n as follows:RecordWord: n-5Content: /FFF7n-4 n-3 n-2 n-1/0006 /0009 /0001 /0000 /0000CSP D4 FORMAT:CSP D4 format consists in general of four decimaldigits per word, with each digit occupying four bitsof <strong>the</strong> word. However, since <strong>the</strong> low order digitcarries <strong>the</strong> sign of <strong>the</strong> field, it is handled separately,and is placed by itself in <strong>the</strong> last word of <strong>the</strong> D4field. Any 4-bit blocks not used in <strong>the</strong> field arefilled with /F. This format is best illustrated wi<strong>the</strong>xamples.Example 1: The five-digit field +12345 appears ona disk file beginning at record word n as follows:RecordWords n-1Content: /0005 /1234Example 2: The six-digit field +123456 appears ona disk file beginning at record word n as follows:RecordWord: n-2Content: /0006RecordWord: n-2Contents /FFF8n-1/5FFF /1234Example 3: The seven-digit field -1234567 appearson a disk file beginning at record word n as follows:n-1/56FF /1234349. 1 •


APPENDIX F: DIAGNOSTIC CAPABILITIES<strong>All</strong> DFCNV error messages and <strong>the</strong>ir identifying conversion begins. Any diagnostic except warningnumbers (listed below) are printed on <strong>the</strong> principal messages (indicated below) causes program terprinter.<strong>All</strong> diagnostics are printed before data mination.No. Message CauseF01INVALID DESCRIP-TION CARD FIELD-COL, XX1) 1.Numeric field at card column XX outside11 allowable field range.' 2. Unrecognizable character in field atcard column XX.F02 FILE NAME NOT 1) 1. LET/FLET entry not found for file namedIN LET/FLET-Y „ on File Description card." 2. File name given on File Description cardinvalid.Y=1, input file error=0, output file errorF03FILE SIZE INVALID- 1) File size calculated from File DescriptionYdata exceeds actual file size.4)F04 INVALID FIELD SPE- 1. Numeric field of specification startingCIFICATION SYN- at card column XX outside allowable fieldTAX-COL. XXrange.2. Unrecognizable Character in field of3) specification starting at card column XX.Embedded s or intervening blanks onField Specification card.4. J-field type specification detectedstarting at card column XX when extendedprecision was specified.F05 CSP A3 TABLE No A (col 72) card precedes/■ card whenMISSINGF-field specified.F06 INVALID CARD 2) 1. Unrecognizable card precedes /*cardS EQUENCE il (column 72 not D, S, or A).;( 2. Multiple File Description cards read.p 3. File Description card out of order." 4. No Field S ecification card precedes/• card.No. Message Cause,5) F07 TRUNCATIONOCCURS AT COL.XXX.2)High order truncation occurs in output fieldat column XXX.1)F08 CARD INPUT Card input is specified when principal inputINVALIDdevice is console keyboard.F09 OUTPUT RECORD Sum of individual field lengths exceedsLENGTH INVALID specified record length for output.F10FIELD OUT OFRANGE AT COL.XXX OF RECORbYYYYY2)RPG real number field starting at columnXXX has been set to zeroes or nines inrecord YYYYY.1) <strong>Program</strong> termination immediate.2) Warning only.3) No columns indication.4) It is noted that certain invalid field specification formats and/or invalidcontinuation marks (comma or blank allowable) which produce <strong>the</strong> F04error message offset <strong>the</strong> "next" specification checked for validity. Thatis, <strong>the</strong> field specification immediately following is performed and no compressionis built.Example: The Field Specification cardCol. 1 726-16,I-15,X4produces <strong>the</strong> following error message. F04 INVALID FIELD SPECIFICA-TION SYNTAX - COL. 01.The invalid specification 1-15 will not be diagnosed until <strong>the</strong> specification6-16 is corrected to read 6-16.0.5) Extraneous truncation warnings may result from certain invalid fieldspecifications.• APPENDIX F. 349. 2


APPENDIX G: FIELD TYPE COMPRESSIONSCompression for I-, J- and R-field type:Compression for X-field type:Word Contents1 Address of I-, J- or R-conversion subroutine. Word Contents2 The displacement in characters to <strong>the</strong> start of <strong>the</strong> 1 Address of X-conversion subroutine3 bit 0-7bit 8bits 9-15RPG output field in binary (equivalent to <strong>the</strong>specified RPG column -1),Precision (field length) of output field in binary1 if output field is to be packed, 0 if not.Scale of output field in binary2 Number of words to be bypassedCompression for B- and C-field type:Word Contents123 bits 0-7bits 8-9bits 10-15Address of B (C) - conversion subroutineThe displacement in characters to <strong>the</strong> start of <strong>the</strong>RPG output field in binary (equivalent to <strong>the</strong> specifiedRPG column -1).Precision of output field in binary.Number of words per entry.Number of characters per entry.Compression for D- and E-field type:Word Contents123 bits 0-7bit 8bits 9-154 bits 0-7bits 8-15Address of D- or E-conversion subroutineThe displacement in characters to <strong>the</strong> start of <strong>the</strong>RPG output field in binary (equivalent to <strong>the</strong> specifiedRPG column -1).Precision of output field in binary1 if output field is to be packed, 0 if notScale of output field in binaryCSP precision in binaryCSP scale in binaryCompression for F-field type:Word Contents1 Address of F-conversion subroutine2 The displacement in characters to <strong>the</strong> start of <strong>the</strong>RPG output field in binary (equivalent to <strong>the</strong> specifiedRPG column -1)3 Hexadecimal constant /03414 Number of characters to be converted349.3.


INDEXAssembler program 65Communications area 66Core layout 71Double-buffering 67Error message phase 71Flowcharts 220General 65Intermediate I/O 67Introduction 2Overlay area 66Phase 0 67Phase 1 67Phase lA 67Phase 2 68Phase 2A 68Phase 3 68Phase 4 68Phase 5 68Phase 6 69Phase 7 69Phase 7A 69Phase 8 69Phase 8A 69Phase 9 69Phase 10 70Phase 10A 71Phase 11 71Phase 12 71Phase 13 71<strong>Program</strong> operation 65Punch conversion phase 71Read conversion phase 71Symbol table 66Auxiliary supervisor 23Cartridge-dependent parametersCOMMA 3DCOM 3CIB (see core image buffer)Cold start loader 15Cold start program 15Cold start programs 15Cold start loader 15Cold start program 15Core layout 15Flowcharts 191Introduction 1COMMA (in-core communication area) 3(see also resident monitor)Communications areas 3Cartridge-dependent parameters 3Disk-resident (DCOM) 3Drive-dependent parameters 3Introduction 1In-core (COMMA) 3Core image buffer (CIB)Core load builder 34Core image loader 27Core layout 28Debugging/analysis aids 30Flowcharts 203Introduction 1Phase 1 27Phase 2 27Special techniques 27, 28Core load builder 33Core image buffer (CIB) 34Core layout 33Debugging/analysis aids 42DEFINE FILE table 39Disk buffers 34FILES information 35Flowcharts 205General comments 33G2250 information 35Interrupt branch table (IBT) 35Interrupt level subroutines (ILSs) 37Introduction 2ISS table 35Linkage to LOCALs 37Linkage to SOCALs 38Load table 35LOCAL information 35LOCALs 37NOCAL information 35Overlay scheme 33Pass 1 36Pass 2 36Phase 0 40Phase 1 40Phase 2 40Phase 3 41Phase 4 41Phase 5 41Phase 6 42Phase 7 42Phase 8 42Phase 9 42Phase 10 42Phase 11 42Phase 12 42Phase 13 42SOCALs 37Transfer vector (TV) 37DCIP 111DCOM 3DEFINE FILE table (DFT)Core load builder 39DFT (see DEFINE FILE table)Disk cartridge initialization program (DCIP) 111Index 350


Disk I/O subroutineResident monitor 17Subroutine data charts 125<strong>System</strong> library 102Disk utility program (DUP) 43CFACE phase 59Communications area (CATCO) 45Control records 44Core layout 43DCTL phase 51DDUMP phase 55DEFINE phase 57DELETE phase 57Delete Temporary LET 21DEXIT phase 58Diagnostic aids 63DUMPLET/DUMPFLET phase 56DUPCO phase 49FILEQ phase 54Fixed location equivalence table (FLET) 44Flowcharts 207Introduction 2KFACE phase 60Location equivalance table (LET) 44PFACE phase 60PRECI phase 62STORE phase 52Disk-resident communications area (DCOM) 3Drive-dependent parametersCOMMA 3DCOM 3DUP (see disk utility program)FILES control record processingDisk utility program 54Supervisor 22FILES information in SCRADisk utility program 55Supervisor 22Fixed location equivalence table (FLET) 44FLET 44Flowcharts 185Assembler program 220Cold start programs 191Core image loader 203Core load builder 205Disk utility program 207FORTRAN compiler 244Supervisor 193<strong>System</strong> library 274<strong>System</strong> loader 186FORTRAN compiler 73Communications area 76Compilation errors 81Compiler I/O 81Core layout 75Flowcharts 244General 73Introduction 2Phase area 77Phase objectives 73Phase 1 82Phase 2 82Phase 3 83Phase 4 83Phase 5 84Phase 6 84Phase 7 85Phase 8 85Phase 9 86Phase 10 86Phase 11 87Phase 12 88Phase 13 89Phase 14 89Phase 15 90Phase 16 91Phase 17 92Phase 18 93Phase 19 94Phase 20 94Phase 21 95Phase 22 95Phase 23 95Phase 24 96Phase 25 96Phase 26 96Phase 27 96Statement string 80String area 77Symbol table 78GraphicsAssembler program 69,71G2250 control record processingDisk utility program 55Supervisor 22G2250 information in SCRADisk utility program 55Supervisor 22IBT (see interrupt branch table)ILSs (see interrupt level subroutines)Interrupt branch table (IBT)Core load builder 35Interrupt level subroutines (ILSs)Core load builder 37Skeleton supervisor 17<strong>System</strong> library 105Interrupt service subroutines (ISSs)Subroutine data charts 152<strong>System</strong> library 102Introduction 1ISSs (see interrupt service subroutines)Job Control Record Processing 20LET 44LOCAL control record processingDisk utility program 54Supervisor 22LOCAL information in SCRADisk utility program 55Supervisor 22LOCAL linkage in TV 37LOCALs 37Location equivalence table (LET) 44351


Master cartridge updating 97MCRA (see monitor control record analyzer)Monitor control record analyzer (MCRA) 19JOB control record processing 19O<strong>the</strong>r control record processing 20<strong>System</strong> update program 20NOCAL control record processingDisk utility program 54Supervisor 22NOCAI, information in SCRADisk utility program 55Supervisor 22ProceduresCore dump 115Core location 115Generalized subroutine maintenance/analysis 120Identification of <strong>the</strong> failing component or function 113<strong>Program</strong> analysis 113Subroutine looping 120Trace back 120<strong>Program</strong> analysis procedures 113Core block diagrams 115Core dump procedures 115Core Location procedures 115Generalized subroutine maintenance/analysis procedure 120Identification of <strong>the</strong> failing component or function 113Introduction 113Subroutine data charts 125Subroutine error number list 115Subroutine error stop list 115Subroutine looping capabilities 120Summary 113Trace back procedure 120Reload table<strong>System</strong> loader 14Resident monitor 17COMMA 17Disk I/O subroutine 17Flowcharts 193Introduction 1Skeleton supervisor 17SCRA (see supervisor control record area)Skeleton supervisor 17CALL LINK, CALL EXIT, CALL DUMP processor 17Error traps 17ILSs 17SLET<strong>System</strong> loader 13SOCAL linkage in TV 38SOCALs 37Stand-alone utilities 111DCIP 111Introduction 2UCART 112Subroutine data charts 125CARDZ 140CARDO 152CARD1 154DISKN 180DISKZ 138DISK1 177OMPR1 174PAPTN 170PAPTZ 150PAPT1 168PLOT1 172PNCHZ 142PNCHO 158PNCHI 160PRNTZ 148PRNT1 164PRNT3 166PRNZ 147READZ 144READO 156READ1 157<strong>System</strong> device subroutine for console printer 130<strong>System</strong> device subroutine for disk 138<strong>System</strong> device subroutine for keyboard/console printer 125<strong>System</strong> device subroutine for 1132 132<strong>System</strong> device subroutine for 1134/1055 136<strong>System</strong> device subroutine for 1403 134<strong>System</strong> device subroutine for 1442/1442 126<strong>System</strong> device subroutine for 2501/1442 128TYPEZ 145TYPEO 162WRTYZ 146WRTYO 176Subroutine error numbers 115Subroutine error stops 115Supervisor 19Job Control Record Processing 20<strong>System</strong> update <strong>Program</strong> 20Delete Temporary LET 21Auxiliary supervisor 23Core layout 24Introduction 1Monitor control record analyzer (MCRA) 19XEQ control record processor 21<strong>System</strong> core dump program 23Supervisor control record area (SCRA)Disk utility program 55Supervisor 22Supervisor control record processingDisk utility program 54Supervisor 22Symbol tableAssembler program 66FORTRAN compiler 78<strong>System</strong> core dump program 23<strong>System</strong> device subroutines 109Introduction 2Subroutine data charts 125<strong>System</strong> library 99Arithmetic and function subroutines, common 100, 102Index 352


Arithmetic and function subroutines, extended precision 99, 101Arithmetic and function subroutines, standard precision 100, 101Conversion subroutines 103Conversion tables 103Disk Data File Conversion <strong>Program</strong> 107.1Flowcharts 107. 1General program description 1 07.1Part 1. Entry Point 107. 2Internal Subroutines-part 1 1 07.1Part 2. Entry Point 107.1Internal Subroutine-part 2 1 07.1Part 3. Entry Point 107. 2Internal Subroutine-part 3 107. 2Part 4. Entry Point 107.2Internal Subroutines-part 4 107. 3External Subroutines-part 4 107. 3Flowcharts 274FORTRAN common 99, 101FORTRAN conversion 101FORTRAN I/O 100FORTRAN sign transfer 99FORTRAN trace 100Interrupt level subroutines (ILSs) 104, 105Interrupt service subroutines (ISSs) 102Introduction 2Mainline programs 104, 105Plotter subroutines 104SCA subroutines 103SCAT 1 108SCAT 2 108. 5SCAT 3 108.12Utility subroutines 99<strong>System</strong> Loader 9Cartridge identification sector 13Core layout 12Flowcharts 186Introduction 1Phase 1 9Phase 2 10Reload table 14<strong>System</strong> location equivalence table (SLET) 13<strong>System</strong> location equivalence table (SLET)<strong>System</strong> loader 13I <strong>System</strong> update <strong>Program</strong> 20Transfer vector (TV)Core load builder 37TV (see transfer vector)XEQ control record processor 21Supervisor control record area (SCRA) 22Supervisor control record processing 22XEQ control record processing 21353


Y26-3714-2■-•cu0rt.a.N.c5 nInternational Business Machines CorporationData Processing Division112 East Post Road, White Plains, N.Y. 10601[USA Only]<strong>IBM</strong> World Trade CorporationB21 United Nations Plaza, New York, New York10 017[International]


READER'S COMMENT FORM<strong>IBM</strong> <strong>1130</strong> Disk Monitor <strong>System</strong> Version 2,<strong>Program</strong> <strong>Logic</strong> <strong>Manual</strong>Form Y26-3714-2• How did you use this publication?As a reference sourceAs a classroom textAs a self-study text• Based on your own experience, rate this publication . . .As a reference source:Very Good Fair Poor VeryGood PoorAs a text:Very Good Fair Poor VeryGood Poor• What is your occupation?• We would appreciate your o<strong>the</strong>r comments; please give specific page and line referenceswhere appropriate. If you wish a reply, be sure to include your name and address.• Thank you for your cooperation. No postage necessary if mailed in <strong>the</strong> U.S.A.


Y26-3714-2YOUR COMMENTS, PLEASE .. .This SRL manual is part of a library that serves as a reference source for systems analysts,programmers and operators of <strong>IBM</strong> systems. Your answers to <strong>the</strong> questions on <strong>the</strong> back of thisform, toge<strong>the</strong>r with your comments, will help us produce better publications for your use. Eachreply will be carefully reviewed by <strong>the</strong> persons responsible for writing and publishing thismaterial. <strong>All</strong> comments and suggestions become <strong>the</strong> property of <strong>IBM</strong>.Please note: Requests for copies of publications and for assistance in utilizing your <strong>IBM</strong> systemshould be directed to your <strong>IBM</strong> representative or to <strong>the</strong> <strong>IBM</strong> sales office serving yourlocality.FoldFoldFIRST CLASSPERMIT NO. 1359WHITE PLAINS, N. Y.M=1111111111=11BUSINESS REPLY MAILMini1111MNO POSTAGE STAMP NECESSARY IF MAILED IN THE UNITED STATESPOSTAGE WILL BE PAID BY ...11■111=11<strong>IBM</strong> Corporation112 East Post RoadWhite Plains, N. Y 10601Attention: Department 813 Lbdw O4,FoldFoldMMInternational Business Machines CorporationData Processing Division112 East Post Road, White Plains, N.Y.10601(USA Only)<strong>IBM</strong> World Trade CorporationB21 United Nations Plaza, New York, New York 10 017(International )

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!