IDENT KRONREF,FETS,KRONREF
ABS
ENTRY KRONREF
ENTRY MFL=
SYSCOM B1 DEFINE (B1) = 1
*COMMENT KRONREF - SYSTEM CROSS REFERENCE PROGRAM.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
TITLE KRONREF - KRONOS SYSTEM CROSS REFERENCE PROCESSOR.
SPACE 4
***** *KRONREF* - KRONOS SYSTEM CROSS REFERENCE PROCESSOR.
* G. R. MANSFIELD. 70/10/26.
* A. D. FORET. 75/04/18.
SPACE 4
*** *KRONREF* GENERATES A CROSS REFERENCE OF SYSTEM
* SYMBOLS USED BY DECKS ON A MODIFY OPL.
SPACE 4
*** CONTROL CARD CALL.
*
*
* KRONREF(P1,P2,P3)
* PN MAY BE OF THE FOLLOWING FORMS.
* PN
* PN=NAME
*
* OPTIONS.
*
* P OPL INPUT FROM FILE *OPL*.
* P=FNAME OPL INPUT FROM FILE *FNAME*.
*
* L LIST OUTPUT ON FILE *OUTPUT*.
* L=FNAME LIST OUTPUT ON FILE *FNAME*.
*
* S SYSTEMS TEXT FROM OVERLAY *NOSTEXT*.
* S=NAME SYSTEMS TEXT FROM OVERLAY *NAME*.
*
* G SYSTEMS TEXT FROM FILE *TEXT*.
* G=FNAME SYSTEMS TEXT FROM FILE *FNAME*.
* OVERRIDES ANY *S* SELECTION.
SPACE 4
*** DAYFILE MESSAGES.
*
* * ERROR IN KRONREF ARGUMENTS. * - AN ILLEGAL CONTROL CARD
* WAS SELECTED.
*
* * ERROR IN SYSTEM TEXT. * - DESIGNATED SYSTEM TEXT IS IN THE
* WRONG FORMAT.
*
* * KRONREF COMPLETE.* - NORMAL COMPLETION MESSAGE.
*
* * MEMORY OVERFLOW. * - NOT ENOUGH STORAGE AVAILABLE TO STORE
* TABLES.
*
* * NO REFERENCES LISTED.* - OPL FILE DID NOT REFERENCE ANY
* SYSTEM TEXT SYMBOLS. CHECK FOR
* EMPTY OR INVALID OPL FILE OR BAD
* SYSTEM TEXT.
*
* * PL ERROR IN DECK (NAME). * - BAD OPL/OPLC DECK.
SPACE 4,10
*** OPERATOR MESSAGES.
*
* * SCANNING DECKNAME * - WHERE DECKNAME IS CURRENTLY BEING
* PROCESSED.
SPACE 4
**** ASSEMBLY CONSTANTS.
BUFL EQU 100B SCRATCH BUFFER LENGTH
PBUFL EQU 4001B OPL FILE BUFFER LENGTH
MXCCL EQU 37B MAXIMUM LENGTH OF ONE COMPRESSED CARD
MTBSL EQU 26000B NOMINAL TABLE LENGTH
MINC EQU 1000B MEMORY INCREMENT FOR *TOV*
LCFE EQU 99999 LINE COUNT TO FORCE EJECT
****
TITLE MACRO DEFINITIONS.
ADDWRD SPACE 4
** COMMON DECKS.
*CALL COMCMAC
*CALL COMCCMD
SPACE 4
** ADDWRD - ADD WORD TO MANAGED TABLE.
*
* ADDWRD TNAM,WORD
*
* ENTRY *TNAM* = TABLE NAME.
* *WORD* = -X- REGISTER CONTAINING WORD.
* *WORD* = BOOLEAN -X- REGISTER EXPRESSION.
*
* USES A0, X1.
*
* CALLS ADW.
PURGMAC ADDWRD
ADDWRD MACRO TNAM,WORD
IFC NE,$X1$WORD$,1
BX1 WORD
R= A0,TNAM
RJ ADW
ADDWRD ENDM
ALLOC SPACE 4,10
** ALLOC - ALLOCATE TABLE SPACE.
*
* ALLOC TNAM,N
*
* ENTRY *TNAM* = TABLE NAME.
* *N* = NUMBER OF WORDS TO ADD.
*
* USES A0, X1.
*
* CALLS ATS.
PURGMAC ALLOC
ALLOC MACRO TNAM,N
R= X1,N
R= A0,TNAM
RJ ATS
ALLOC ENDM
OPC SPACE 4,10
** OPC - OPCODE TABLE ENTRY.
*
* OPC OPCODE,ADDRESS
*
* ENTRY *OPCODE* = OPERATION CODE.
* *ADDRESS* = ADDRESS OF PROCESSOR.
PURGMAC OPC
OPC MACRO OPCODE,ADDR
VFD 60/0R;A
IFC NE,*ADDR**
VFD 60/ADDR
ELSE 1
CON OPCX
OPC ENDM
TABLE SPACE 4,10
** TABLE - GENERATE MANAGED TABLE POINTERS.
*
* TABLE TNAM
*
* ENTRY *TNAM* = TABLE NAME.
*
* EXIT *F.TNAM* = ADDRESS OF TABLE FWA POINTER.
* *L.TNAM* = ADDRESS OF TABLE LENGTH POINTER.
PURGMAC TABLE
MACRO TABLE,TNAM,N
TNAM EQU *
VFD 60/MTBS
F.TNAM EQU FTAB+TNAM
RMT
L.TNAM EQU LTAB+TNAM
ORG L.TNAM
DATA 0
ORG NTAB+TNAM
VFD 60/N
RMT
TABLE ENDM
TITLE FETS AND STORAGE ASSIGNMENTS.
FETS SPACE 4,10
** FETS.
ORG 103B
FETS BSS 0
O BSS 0
OUTPUT FILEC PBUF,PBUFL,(FET=6)
P BSS 0
OPL RFILEB PBUF,PBUFL,(FET=8),EPR
FTAB SPACE 4,10
** MANAGED TABLES ARE REFERENCED BY THE TABLE NUMBER *TNAM*.
* THE FWA OF A TABLE IS CONTAINED IN *F.TNAM*.
* THE LENGTH OF A TABLE IS CONTAINED IN *L.TNAM*.
* THESE SYMBOLS ARE GENERATED BY THE *TABLE* MACRO.
FTAB BSS 0
LOC 0
TNME SPACE 4,10
** TNME - TABLE OF REFERENCED NAMES.
* ENTRY = 1 WORD.
*
*T 12/,48/ *NAME*
* NAME NAME RIGHT JUSTIFIED
TNME TABLE 10 NAMES
TREF SPACE 4,10
** TREF - TABLE OF REFERENCES.
* ENTRY = 1 WORD.
*
*T 42/ *DECK*,18/ IN
* DECK DECK NAME
* IN INDEX IN *TNME*
TREF TABLE 200
* REMAINDER OF MANAGED TABLE VALUES.
FTABL BSS 0
LOC *O
VFD 60/MTBS LWA+1 ALL TABLES
LTAB BSS 0
NTAB EQU LTAB+FTABL
HERE
TITLE STORAGE ASSIGNMENTS.
DATA SPACE 4,10
* COMMON DATA.
T1 DATA 0 TEMPORARY STORAGE
T2 DATA 0
FL DATA 0 FIELD LENGTH
SL DATA 0 SYSTEM SYMBOL LENGTH
RF DATA 0 REFERENCE FLAG
PP DATA 0 PP CODE
DN DATA 0 DECK NAME
CH DATA 0 NEXT CHARACTER
CP DATA 0 CHARACTER POINTER
LIST SPACE 4,10
* LIST CONTROLS.
LC CON LCFE LINE COUNT
LL CON 0 LINE LIMIT
PD CON 0 PRINT DENSITY
PN CON 1 PAGE NUMBER
ST CON 0,LSRA ADDRESS OF SUBTITLE LINES
TX CON 0 SYSTEXT PRESENT FLAG
SPACE 4
* PROGRAM LIBRARY STATISTICS.
BLANK CON 0 BLANK STATEMENTS
CALL CON 0 *CALL STATEMENTS
CODE CON 0 LINES OF CODE NOT OTHERWISE COUNTED
COMNT CON 0 * TYPE COMMENT STATEMENTS
INACT CON 0 INACTIVE STATEMENTS
BLOCK SPACE 4
* BLOCK STORAGE.
USE BUFFERS
* TITLE LINE.
TITL DATA 30H1 CROSS REFERENCE OF OPL.
DATA 10H OPL FILE=
PLNM DATA 10H
DATA 10HSYS. TEXT=
TXNM DATA 10H *NONE*
DATA 10H
DATA 10H
DATE DATA 1H
TIME DATA 1H
DATA 4APAGE
PAGE DATA 1H
TITLL EQU *-TITL
CDTX BSS MXCCL CARD TEXT
USE *
TITLE MAIN PROGRAM.
KRONREF SPACE 4,10
** KRONREF - MAIN PROGRAM.
*
* USES X - 1, 6.
* A - 1, 6.
* B - 1.
*
* CALLS LCL, LNK, LOC, LSR, LSS, OPC, PRS, RMT, SCA.
*
* MACROS ENDRUN, MESSAGE, RECALL, WRITEC, WRITER.
KRONREF SB1 1 (B1) = 1
RJ PRS PRESET PROGRAM
RJ LSS LOAD SYSTEMS SYMBOLS
* BEGIN NEW DECK.
REF1 RJ RMT READ MODIFIER TABLE
NZ X1,REF4 IF EOR
* SCAN DECK CARDS.
REF2 RJ RPF READ CARD
NZ X1,REF1 IF EOR
SA1 CDTX CHECK FIRST CHARACTER
NZ X1,REF3 IF NOT BLANK STATEMENT
SA1 BLANK COUNT BLANK STATEMENT
SX6 B1
IX6 X6+X1
SA6 A1
EQ REF2 LOOP FOR NEXT STATEMENT
REF3 RJ LOC PROCESS LOCATION FIELD
ZR X6,REF2 IF NO PROCESSING
SA1 TX
ZR X1,REF2 IF NO SYSTEXT
RJ OPC PROCESS OPCODE
NZ X1,REF2 IF NOT INTERESTING
SA2 RF
ZR X2,REF2 IF REFERENCE FLAG OFF
RJ SCA SCAN ADDRESS
EQ REF2 CONTINUE SCAN
* LIST REFERENCE TABLE.
REF4 SA1 L.TREF
ZR X1,REF6 IF NO REFERENCES
RJ LNK LINK TABLES
RECALL P
SA1 TX
ZR X1,REF4.1 IF NO SYSTEXT
RJ LSR LIST SYMBOL REFERENCES
REF4.1 RJ LCL LIST SPECIAL CALLS
RJ PLS ISSUE PROGRAM LIBRARY STATISTICS MESSAGES
SA1 PN
LX1 59
NG X1,REF5 IF PAGE COUNT EVEN
WRITEC O,(=2L1 )
REF5 WRITER O,R
MESSAGE (=C* KRONREF COMPLETE.*)
ENDRUN
REF6 MESSAGE (=C* NO REFERENCES LISTED.*)
ENDRUN
TITLE DECK SCANNING.
LOC SPACE 4,10
** LOC - PROCESS LOCATION FIELD.
*
* EXIT (X6) = NEXT CHARACTER OR 0 IF NO NEXT CHARACTER.
*
* USES X - 1, 2, 5, 6, 7.
* A - 1, 2, 6.
*
* CALLS ASN, ESR, SNC.
LOC4 SA1 COMNT COUNT * TYPE COMMENT STATEMENTS
SX6 B1
IX6 X6+X1
SA6 A1+
SX6 B0+ CLEAR NEXT CHARACTER
* EQ LOCX RETURN
LOC SUBR ENTRY/EXIT
SX1 B0 SET CHARACTER POINTER
PX6 X1,B0
SA6 CP
RJ SNC SET NEXT CHARACTER
SA2 CDTX
AX2 54
ZR X2,LOC1 IF NO LOCATION FIELD
SX7 X6-1R*
ZR X7,LOC2 IF FIRST CHARACTER = (*)
RJ SNC SET NEXT CHARACTER
RJ ASN ASSEMBLE NAME
LOC1 RJ SNC SET NEXT CHARACTER
SA1 CODE COUNT LINE OF CODE
SX6 B1
IX6 X6+X1
SA6 A1
EQ LOCX RETURN
LOC2 RJ SNC SET NEXT CHARACTER
RJ ASN ASSEMBLE NAME
SA1 =4RCALL
BX2 X1-X6
ZR X2,LOC2.1 IF CALL FOUND
SA1 =5RCALLC
BX2 X1-X6 CHECK CALLC
ZR X2,LOC2.1 IF *CALLC
SA1 =6RIFCALL
BX2 X1-X6 CHECK IFCALL
ZR X2,LOC2.0 IF *IFCALL
SA1 =7RNIFCALL
BX2 X1-X6 CHECK IFCALL
NZ X2,LOC4 IF NOT *IFCALL
LOC2.0 RJ SNC SET NEXT CHARACTER
RJ ASN ASSEMBLE NAME
LOC2.1 SA1 CALL COUNT *CALL, *CALLC, *IF/NIFCALL
SX6 B1
IX6 X6+X1
SA6 A1
RJ SNC SET NEXT CHARACTER
SX2 X6-1R
NG X2,LOC3 IF NEXT " SEPARATOR
RJ SNC SET NEXT CHARACTER
LOC3 RJ ASN ASSEMBLE NAME
SX5 B0 ENTER COMMON DECK REFERENCE
RJ ESR ENTER SPECIAL REFERENCE
SX6 B0
EQ LOCX RETURN
OPC SPACE 4,10
** OPC - CHECK OP CODE.
*
* ENTRY (CP) = CHARACTER POINTER,
* (X0) = SEPARATOR MASK.
*
* EXIT (X1) = 0 IF ADDRESS FIELD TO BE PROCESSED.
*
* USES X - 1, 2, 6.
* A - 1, 2, 6.
* B - 2.
*
* CALLS ASN.
OPC4 SA6 RF
SX1 B1
OPC SUBR ENTRY/EXIT
RJ ASN ASSEMBLE NAME
SA1 TOPC CHECK OPCODE TABLE
SB2 B1+B1
OPC1 ZR X1,OPCX IF END OF TABLE - RETURN
BX2 X6-X1
SA1 A1+B2
NZ X2,OPC1 LOOP IF NO MATCH FOUND
SA2 A1-B1 EXIT TO PROCESSOR
SB2 X2
JP B2 GO TO PROCESSOR
OPC2 SX6 1
EQ OPC4 SET REFERENCE FLAG
OPC3 SX6 0 CLEAR REFERENCE FLAG
SA6 PP CLEAR PP CODE
EQ OPC4 SET REFERENCE FLAG
TOPC SPACE 4,10
** TOPC - TABLE OF OPCODES.
*
* ALL THOSE WITHOUT A SECOND ARGUMENT WILL NOT HAVE THE
* ADDRESS FIELD EVALUATED.
TOPC BSS 0
OPC IDENT
OPC SST,OPC2
OPC END,OPC3
OPC TITLE
OPC EJECT
OPC SPACE
OPC PERIPH,PERIPH
OPC EXECUTE,EXECUTE
OPC SYSTEM,SYSTEM
OPC ABS
OPC STEXT
OPC BASE
OPC LIST
OPC ENDM
OPC ENDIF
OPC ENDD
OPC ENTRY,ENTRY
OPC DIS
OPC MICRO
OPC IFC
OPC XTEXT
OPC NOLABEL
OPC LIT
OPC ERR
OPC DATA
OPC STEXT
OPC COMMENT
OPC MACRO
OPC OPDEF
OPC USE
DATA 0
TITLE DECK SCANNING.
ENTRY SPACE 4,10
** ENTRY - PROCESS ENTRY FOR SPECIAL ENTRY POINTS.
*
* ENTRY (CP) = CHARACTER POINTER.
*
* EXIT (X1) = 0, IF ADDRESS FIELD TO BE PROCESSED.
*
* USES X - 1, 5.
* A - 1.
*
* CALLS ASN, ESR, SNC.
ENTRY BSS 0 ENTRY
SA1 PP
NZ X1,OPCX IF PP CODE
RJ SNC SET NEXT CHARACTER
RJ ASN ASSEMBLE NAME
SA1 ETRA-1 CHECK FOR SPECIAL ENTRY POINTS
ETR1 SA1 A1+B1
ZR X1,OPCX IF END OF TABLE - SET NOT INTERESTING
BX1 X6-X1
NZ X1,ETR1 IF NO MATCH
SX5 B1+B1
RJ ESR ENTER SPECIAL REFERENCE
SX1 B1
EQ OPCX RETURN
* TABLE OF SPECIAL ENTRY POINTS.
ETRA BSS 0
CON 4RARG= SUPPRESS ARGUMENT CRACKING
CON 4RCLB= COMMAND LINE BUFFER FET
CON 4RDMP= DUMP CONTROL
CON 4RDPA= *DMP=* PROGRAM WITH ARGUMENTS
CON 4RLDR= ALLOW EXECUTE-ONLY READ (LOADER)
CON 4RLIB= ALLOW EXECUTE-ONLY READ (OTHER)
CON 4RMFL= SET MINIMUM FIELD LENGTH
CON 4RNPC= NOS PARAMETER CRACKING FORMAT FLAG
CON 4RRFL= SET FIELD LENGTH
CON 4RSDM= SUPPRESS DAYFILE MESSAGE
CON 4RSSJ= SPECIAL SYSTEM JOB
CON 4RSSM= SECURE SYSTEM MEMORY
CON 4RUTL= PF UTILITY
CON 4RVAL= VALIDATION JOB
CON 0
EXECUTE SPACE 4,10
** EXECUTE - PROCESS EXECUTE MACRO.
*
* ENTRY (CP) = CHARACTER POINTER.
*
* EXIT (X1) = 0, IF ADDRESS FIELD TO BE PROCESSED.
*
* USES X - 1.
* A - 1.
*
* CALLS ASN, ESR, SNC.
EXECUTE BSS 0 ENTRY
SA1 PP
ZR X1,OPC IF NOT PP CODE
RJ SNC ASSEMBLE CALLED PACKAGE
RJ ASN ASSEMBLE NAME
SX5 B1 ENTER PP CALL
RJ ESR
SX1 B1 ADDRESS FIELD NOT TO BE PROCESSED
EQ OPCX EXIT
PERIPH SPACE 4,10
** PERIPH - PROCESS PERIPH.
*
* ENTRY (CP) = CHARACTER POINTER.
*
* EXIT (X1) = 0, IF ADDRESS FIELD TO BE PROCESSED.
*
* USES X - 1, 5.
* A - 1.
*
* CALLS ASN, ESR, SNC.
PERIPH BSS 0 ENTRY
SX6 B1 SET PP FLAG
SA6 PP
SX5 B1
RJ ENT ENTER PP NAME
EQ OPCX EXIT
SYSTEM SPACE 4,10
** SYSTEM - PROCESS SYSTEM.
*
* ENTRY (CP) = CHARACTER POINTER.
*
* EXIT (X1) = 0, IF ADDRESS FIELD TO BE PROCESSED.
*
* USES X - 1, 5.
* A - 1.
*
* CALLS ASN, ESR, SNC.
SYSTEM BSS 0 ENTRY
SA1 PP
NZ X1,OPCX IF PP CODE
RJ SNC SET NEXT CHARACTER
RJ ASN ASSEMBLE NAME
MX5 42 ONLY ENTER 3 CHARACTER NAME
BX5 X5*X6
NZ X5,SYS1 IF MORE THAN 3 CHARACTERS IN NAME
SX5 3
RJ ESR ENTER SPECIAL REFERENCE
SX1 B1 SET INTERESTING FLAG
EQ OPCX RETURN
SYS1 SX1 B0+ SET NOT INTERESTING FLAG
EQ OPCX RETURN
SCA SPACE 4,10
** SCA - SCAN ADDRESS.
*
* ENTRY (X0) = SEPARATOR MASK.
*
* USES X - 1, 2, 6, 7.
* A - 1, 2, 6.
* B - 2, 3, 4.
*
* CALLS ADW, ASN, SNC.
*
* MACRO ADDWRD.
SCA SUBR ENTRY/EXIT
SCA1 RJ SNC SET NEXT CHARACTER
SCA2 SB2 X6-1R
ZR B2,SCAX IF END OF FIELD - RETURN
SB3 X6
LX7 X0,B3
NG X7,SCA1 SKIP SEPARATOR
SB2 X6-1R0
NG B2,SCA4 IF ALPHA
SB3 X6-1R+
NG B3,SCA3 IF NUMERIC
SB2 X6-1R$
ZR B2,SCA IF *$* - RETURN
EQ B2,B1,SCAX IF *$* - RETURN
EQ SCA4 OTHER THAN *$*
SCA3 RJ SNC NEXT CHARACTER
SB3 X6
LX7 X0,B3
PL X7,SCA3 IF END OF ELEMENT
EQ SCA2 PROCESS CHARACTER
SCA4 RJ ASN ASSEMBLE NAME
SA1 SL
SA2 F.TNME
SB2 B1+B1
SB3 X1
SA1 X2
SB4 X2
SCA5 BX7 X1-X6
SB3 B3-B2
ZR X7,SCA6 IF FOUND
SA1 A1+B2
NZ B3,SCA5 LOOP TO END OF TABLE
SA1 CH
BX6 X1
EQ SCA2 PROCESS CHARACTER
SCA6 MX4 1 SET REFERENCE FLAG
SA2 DN
BX6 X1+X4
SX3 A1-B4
SA6 A1
ADDWRD TREF,X2+X3 ENTER REFERENCE
SA1 CH
BX6 X1
EQ SCA2 PROCESS CHARACTER
TITLE LIST PROCESSORS.
LCL SPACE 4,10
** LCL - LIST SPECIAL CALLS.
*
* USES X - ALL.
* A - ALL.
*
* CALLS LRC, SFN, SSR.
LCL SUBR ENTRY/EXIT
SA1 TX
NZ X1,LCL0 IF SYSTEXT PRESENT
MX6 0 ZERO TITLES
SA6 LCLD
SA6 A6+B1
LCL0 SA1 =1H
SA1 =1H
SX6 LCLA SET SUBTITLE
BX7 X1
SA6 ST+1
SA7 BUF+1
RJ SSR SORT SPECIAL REFERENCES
LCL1 SA1 LCLC ADVANCE POINTER
SX6 X1+2
SA2 X6
SA6 A1
ZR X2,LCLX IF END OF TABLE - RETURN
SA4 A2+B1 TYPE CODE
SX6 X2 SET SUBTITLE
SX7 LCFE FORCE EJECT
SA6 ST
SA7 LC
SA1 F.TNME (X1) = FWA
SA2 SL (X2) = LENGTH
IX1 X1+X2
SA3 L.TNME
IX2 X3-X2
LCL2 ZR X2,LCL1 IF END OF REFERENCE TABLE
SA3 X1+B1 NEXT ENTRY
BX6 X3-X4
ZR X6,LCL4 IF REQUESTED TYPE
LCL3 SX1 X1+2 ADVANCE TABLE
SX2 X2-2
EQ LCL2 LOOP
LCL4 SX6 X1 SAVE POSITION
SX7 X2
SA6 T1
SA7 A6+B1
MX0 42 SPACE FILL NAME
SA5 A3-B1
BX1 X0*X5
RJ SFN SPACE FILL NAME
LX6 -3*6
SA6 BUF
RJ LRC LIST REFERENCE CHAIN
SA1 T1 RESET POSITION
SA2 A1+B1
SA3 LCLC RESET TYPE
SA4 X3+B1
EQ LCL3 LOOP
LCLA DATA 10H DECK
DATA 10H
DATA C*DECK REFERENCES.*
LCLB BSS 0
CON =C* COMMON DECK CALLS.*
CON 0
LCLD BSS 0
CON =C* PP PACKAGES CALLED.*
CON 1
CON =C* SPECIAL ENTRY POINTS.*
CON 2
CON =C* SYSTEM MACRO REQUEST REFERENCES.*
CON 3
CON 0
LCLC CON LCLB-2
LNK SPACE 4,10
** LNK - LINK TABLES.
*
* USES X - ALL.
* A - 1, 2, 3, 6, 7.
* B - 2, 3, 4.
LNK SUBR ENTRY/EXIT
SA1 L.TNME LEFT JUSTIFY NAMES
SA2 F.TNME
MX0 6
SB2 B1+B1
SB3 X1
SA1 X2
LNK1 LX1 6
BX2 X0*X1
ZR X2,LNK1 IF CHARACTER NOT LEFT JUSTIFIED
BX6 X1
SA6 A1
SB3 B3-B2
SA1 A1+B2
NZ B3,LNK1 IF NOT THE LAST NAME
SA1 L.TREF LINK REFERENCES
SA2 F.TREF
MX0 42
SB2 X1
SA3 F.TNME
SB2 B2-B1
SA2 X2+B2
SB4 X3
BX5 X0*X2
LNK2 SA1 B4+X2
SX3 A2
BX4 X0*X1
SB2 B2-B1
SA2 A2-B1
BX7 -X0*X1
IX6 X4+X3
BX7 X5+X7
SA6 A1
SA7 A2+B1
BX5 X0*X2
PL B2,LNK2 IF MORE REFERENCES
EQ LNKX RETURN
LRC SPACE 4,10
** LRC - LIST REFERENCE CHAIN.
*
* ENTRY (X5) = FIRST CHAIN ENTRY.
*
* USES X - 0, 1, 2, 3, 5, 6, 7.
* A - 1, 2, 3, 6, 7.
* B - 2, 6.
*
* CALLS SFN, WOF.
LRC6 MX6 0
SA6 A6+B1
SX1 BUF
RJ WOF WRITE LINE TO OUTPUT
LRC SUBR ENTRY/EXIT
SA1 LC CHECK LINE COUNT
SA2 LL GET LINE LIMIT
SX6 X1+B1
IX2 X6-X2
PL X2,LRC2 IF NOT ROOM FOR FIRST LINE
SA3 BUF+1 COMPARE CURRENT VALUE WITH LAST
SA2 =10H
BX7 X2-X3
ZR X7,LRC1 IF NO VALUE
SA2 LRCB
BX7 X3
SA7 A2
BX2 X3-X2
BX6 X1 RESTORE *LC*
ZR X2,LRC2 IF NO VALUE CHANGE
LRC1 SX1 =C* *
RJ WOF WRITE LINE TO OUTPUT
SA1 LC
BX6 X1
LRC2 SA6 A1
SX5 X5
NZ X5,LRC3 IF ANY REFERENCES
SA1 =10H **NONE**
MX6 0
BX7 X1
SA7 BUF+2
SA6 A7+B1
SX1 BUF
RJ WOF WRITE LINE TO OUTPUT
EQ LRCX RETURN
LRC3 SA1 BUF SAVE FIRST 2 WORDS OF BUFFER
SA2 A1+B1
BX6 X1
LX7 X2
MX0 42
SA6 LRCA
SA7 A6+B1
LRC4 SB6 -11
ZR X5,LRCX IF END OF LIST - RETURN
LRC5 ZR X5,LRC6 IF END OF LIST
SA2 X5 NEXT ENTRY
BX1 X0*X2 SPACE FILL NAME
SX5 X2 SET NEXT ADDRESS
RJ SFN SPACE FILL NAME
LX6 60-6
SA6 BUF+13+B6
SB6 B6+B1
NG B6,LRC5 IF NOT END OF LINE
MX6 0
SA6 A6+B1
SX1 BUF
RJ WOF WRITE LINE TO OUTPUT
SA1 =1H CLEAR BUFFER
BX6 X1
LX7 X1
SA6 BUF
SA7 A6+B1
EQ LRC4 LOOP
LRCA DATA 0,0
LRCB DATA 0 LAST VALUE
LSR SPACE 4,10
** LSR - LIST SYSTEM SYMBOL REFERENCES.
*
* USES X - ALL.
* A - 1, 2, 3, 4, 5, 6, 7.
*
* CALLS COD, LRC, SFN, WOF.
LSR SUBR ENTRY/EXIT
SX3 B1+ SET NOT END OF REFERENCES
LSR1 SA1 LSRC ADVANCE SYMBOL CHECK
SX6 X1+3
SA2 X6 SUBTITLE LINE ADDRESS
SA6 A1
ZR X3,LSRX IF END OF SYMBOL LIST
ZR X2,LSR2 IF NO SUBTITLE
SX7 X2 SET SUBTITLE
SX6 LCFE FORCE EJECT
SA7 ST
SA6 LC
EQ LSR3 SKIP LINE CHECK
LSR2 SA1 LC CHECK LINE COUNT
SA3 LL GET LINE LIMIT
SX1 X1+2
IX7 X1-X3
PL X7,LSR3 IF NO ROOM FOR LINE
SX1 =C* * LIST BLANK LINE
RJ WOF WRITE LINE TO OUTPUT
LSR3 SA1 LSRC SET MASK
SA3 X1+B1 MASK
SA4 A3+B1 CHARACTER MATCH
SA1 F.TNME (X1) = FWA
SA2 SL (X2) = LENGTH
LSR4 SA5 X1 NEXT ENTRY
BX6 X5*X3
IX7 X6-X4
ZR X7,LSR6 IF MATCH FOUND
SX1 X1+2 ADVANCE TABLE
LSR5 SX2 X2-2
NZ X2,LSR4 IF NOT END OF TABLE
EQ LSR1 PROCESS NEXT SYMBOL TYPE
LSR6 SX6 X1 SAVE POSITION
SX7 X2
SA6 T1
SA7 A6+B1
MX0 42 SPACE FILL NAME
BX1 X0*X5
RJ SFN
LX6 -3*6
SA6 BUF
SA1 A5+B1 CONVERT VALUE
RJ COD
LX6 3*6
SA6 A6+B1
MX7 -0 CLEAR ENTRY
SA7 A5
RJ LRC LIST REFERENCE CHAIN
SA1 T1 ADVANCE SYMBOL CHAIN
SA2 A1+B1
SX1 X1+2
SA3 LSRC RESET MASK AND CHARACTER
SA3 X3+B1
SA4 A3+B1
EQ LSR5 LOOP TO NEXT REFERENCE
LSRA DATA 10H SYMBOL
DATA 10H VALUE
DATA C*DECK REFERENCES.*
LSRB BSS 0
CON =C* DIRECT LOCATIONS.*
VFD 12/0,30/7777777777B,18/0
CON 0
CON =C* PP RESIDENT ENTRY POINTS.*
VFD 18/0,24/77777777B,18/0
CON 0
CON 0
VFD 6/77B,18/0,18/777777B,18/0
VFD 6/1L.,54/0
CON 0
VFD 42/77777777777777B,18/0
CON 0LPPFW
CON =C* MONITOR FUNCTIONS.*
VFD 18/0,6/77B,36/0
VFD 18/0,6/1RM,36/0
CON =C* MASS STORAGE TABLE WORDS.*
VFD 12/0,18/777777B,30/0
VFD 12/0,18/2LGL,30/0
CON 0
VFD 12/0,18/777777B,30/0
VFD 12/0,18/2LLL,30/0
CON =C* GLOBAL/LOCAL FNT WORDS, ORDINALS.*
VFD 12/0,18/777777B,30/0
VFD 12/0,18/2LTG,30/0
CON 0
VFD 12/0,18/777777B,30/0
VFD 12/0,18/2LTL,30/0
CON 0
VFD 12/0,18/777777B,30/0
VFD 12/0,18/2LFO,30/0
CON =C* CENTRAL MEMORY POINTERS.*
VFD 18/0,12/7777B,30/0
VFD 18/0,6/1RP,36/0
CON =C* CENTRAL MEMORY LOCATIONS.*
VFD 18/0,12/7777B,30/0
VFD 18/0,12/1LL,30/0
CON 0
VFD 18/0,12/7777B,30/0
VFD 18/0,12/2RLL,30/0
CON =C* CONTROL POINT AREA WORDS.*
VFD 18/0,12/7777B,30/0
VFD 18/0,12/1LW,30/0
CON 0
VFD 18/0,12/7777B,30/0
VFD 18/0,12/2RWE,30/0
CON 0
VFD 18/0,12/7777B,30/0
VFD 18/0,12/2RWL,30/0
CON =C* EJT, EST, QFT RELATED.*
VFD 18/0,12/7777B,30/0
VFD 18/0,12/1LE,30/0
CON 0
VFD 18/0,12/7777B,30/0
VFD 18/0,12/1LQ,30/0
CON =C* NFL SYMBOLS, AND DAYFILE MESSAGE OPTIONS.*
VFD 18/0,6/77B,36/0
VFD 18/0,6/1RN,36/0
CON =C* FILE TYPES, AND MASS STORAGE CONSTANTS.*
VFD 12/0,12/7777B,36/0
VFD 12/0,12/2RFT,36/0
CON 0
VFD 12/0,12/7777B,36/0
VFD 12/0,12/2RMS,36/0
CON 0
VFD 12/0,18/777777B,30/0
VFD 12/0,18/2LSF,30/0
CON 0
VFD 12/0,12/7777B,36/0
VFD 12/0,12/2RSS,36/0
CON 0
VFD 12/0,12/7777B,36/0
VFD 12/0,12/2RTS,36/0
CON =C* ORIGIN TYPES AND QUEUE TYPES.*
VFD 12/0,12/7777B,36/0
VFD 12/0,12/2ROT,36/0
CON 0
VFD 12/0,12/7777B,36/0
VFD 12/0,12/2RQT,36/0
CON =C* ERROR FLAGS.*
VFD 12/0,12/7777B,36/0
VFD 12/0,12/2RET,36/0
CON =C* MISCELLANEOUS.*
VFD 36/0,6/77B,18/0
CON 0
CON 0,0
LSRC CON LSRB-3
TITLE SUBROUTINES.
ABT SPACE 4,10
** ABT - ABORT JOB.
*
* ENTRY (A0) = FWA OF MESSAGE.
*
* MACROS ABORT, MESSAGE.
ABT MESSAGE A0,,R OUTPUT MESSAGE
ABORT
ADW SPACE 4,10
** ADW - ADD ENTRY TO A TABLE.
*
* ENTRY (A0) = TABLE POINTER ADDRESS.
* (X1) = ENTRY.
*
* EXIT (X6) = ENTRY.
* (A6) = ADDRESS OF ENTRY.
* (X3) = INDEX OF ENTRY.
*
* USES X - 1, 2, 3, 4, 6, 7.
* A - 1, 2, 3, 4, 6, 7.
* B - 2.
*
* CALLS ATS.
*
* MACROS ALLOC.
ADW1 BX6 X1 ENTER WORD
SX7 X3+B1 ADVANCE LENGTH
SA6 X2+B2
SA7 A3
ADW SUBR ENTRY/EXIT
SA2 FTAB+A0 CHECK TABLE ROOM
SA3 LTAB+A0
SA4 A2+B1
IX6 X2+X3
SB2 X3
IX7 X4-X6
NZ X7,ADW1 IF ROOM FOR WORD
SA2 NTAB+A0 ALLOCATE TABLE
BX6 X1 SAVE WORD
SA6 ADWA
ALLOC A0,X2
SA4 NTAB+A0 RESET LAST LENGTH
SA1 ADWA RESTORE WORD
IX3 X3-X4
SB2 X3
EQ ADW1 ENTER WORD
ADWA DATA 0
ASN SPACE 4,10
** ASN - ASSEMBLE NAME.
*
* ENTRY (CP) = CHARACTER POINTER.
* (X0) = SEPARATOR MASK.
*
* EXIT (X6) = NAME RIGHT JUSTIFIED, ZERO FILLED.
* (X6) = 0 IF FIRST CHARACTER = * *, OR MORE THAN
* 7 CHARACTERS ASSEMBLED.
*
* USES X - 1, 2, 5, 6.
* A - 1.
* B - 2.
*
* CALLS SNC.
ASN SUBR ENTRY/EXIT
SA1 CH FIRST CHARACTER
SB2 X1
LX6 X0,B2
MI X6,ASNX IF SEPARATOR - RETURN
SX5 B0 CLEAR ASSEMBLY
BX6 X1
ASN1 LX5 6 SHIFT ASSEMBLY
BX5 X6+X5 MERGE NEW CHARACTER
RJ SNC SET NEXT CHARACTER
SB2 X6
LX2 X0,B2
PL X2,ASN1 IF NOT A SEPARATOR
BX6 X5
EQ ASNX RETURN
ATS SPACE 4,10
** ATS - ALLOCATE TABLE SPACE.
*
* ENTRY (A0) = TABLE NUMBER.
* (X1) = NUMBER OF WORDS.
*
* EXIT (X2) = TABLE FWA.
* (X3) = TABLE LENGTH.
*
* USES X - 1, 2, 3, 4, 6, 7.
* A - 1, 2, 3, 4, 6, 7.
* B - 2, 3.
*
* CALLS TOV.
ATS5 SA2 FTAB+A0 SET RESPONSE
SA3 LTAB+A0
ATS SUBR ENTRY/EXIT
SA2 FTAB+A0 CHECK TABLE SPACE
SA3 LTAB+A0
IX7 X3+X1 ADVANCE LENGTH
SA4 A2+B1
IX6 X2+X7
SA7 A3
IX4 X4-X6
NG X4,ATS1 IF NO ROOM FOR CHANGE
BX3 X7
EQ ATSX RETURN
* CHECK AVAILABLE STORAGE.
ATS1 SA2 FTAB+FTABL CHECK STORAGE
SA3 FL
IX6 X2+X1
IX7 X3-X6
NG X7,ATS4 IF NO ROOM FOR INCREASE
SA6 A2 UPDATE LWA+1 OF ALL TABLES
SB2 A0+B1
SB3 FTABL
BX4 X2
EQ B2,B3,ATS5 IF LAST TABLE - RETURN
* MOVE HIGHER TABLE UP.
ATS2 SA2 A2-B1 ADVANCE FWA OF HIGHER TABLES
IX6 X2+X1
SA6 A2
SB2 B2+B1
NE B2,B3,ATS2
IX3 X4-X2 (B2) = WORD COUNT
SB3 X1 (B3) = MOVE INCREMENT
ZR X3,ATS5 IF NO MOVE NEEDED
SB2 X3
SA1 X4-1 BEGIN AT LWA
ATS3 BX6 X1 MOVE TABLE UP
SA6 A1+B3
SB2 B2-B1
SA1 A1-B1
NZ B2,ATS3 IF END OF MOVE
EQ ATS5 RETURN
* TABLE OVERFLOW.
ATS4 SX6 A0 SAVE (A0)
SA6 ATSA
BX6 X1 SAVE (X1)
SA6 ATSA+1
RJ TOV PROCESS TABLE OVERFLOW
SA1 ATSA RESTORE (A0)
SA0 X1
SA1 A1+B1 RESTORE (X1)
EQ ATS1 RE-COMPUTE WITH NEW MEMORY
ATSA BSSZ 2 (A0) AND (X1) STORAGE
ENT SPACE 4,10
** ENT - ENTER NAME TABLE.
*
* ENTRY (X5) = REFERENCE TYPE.
*
* USES X - 1, 2, 3, 6, 7.
* A - 1, 2.
* B - 2, 3.
*
* CALLS ADW.
*
* MACROS ADDWRD.
ENT SUBR ENTRY/EXIT
SA1 DN RIGHT JUSTIFY DECK NAME
MX2 -6
BX6 X1
ENT1 LX6 -6
BX7 -X2*X6
ZR X7,ENT1 IF NOT A CHARACTER
SA1 L.TNME
SA2 F.TNME
SB2 B1+B1
SB3 X1
SA1 X2
MX2 1
ZR B3,ENT3 IF EMPTY TABLE
ENT2 BX3 -X2*X1 SCAN NAME TABLE
IX7 X3-X6
SB3 B3-B2
ZR X7,ENTX IF FOUND - RETURN
SA1 A1+B2
NZ B3,ENT2 IF NOT THE END OF THE TABLE
ENT3 ADDWRD TNME,X6
ADDWRD A0,X5
EQ ENTX RETURN
ESR SPACE 4,10
** ESR - ENTER SPECIAL REFERENCE.
*
* ENTRY (X5) = REFERENCE TYPE.
* (X6) = NAME RIGHT JUSTIFIED.
*
* USES X - 1, 2, 3, 6, 7.
* A - 1, 2, 6.
* B - 2, 3, 4.
*
* CALLS ADW.
*
* MACROS ADDWRD.
ESR SUBR ENTRY/EXIT
MX1 6*3 TRUNCATE NAME TO 7 CHARACTERS
BX6 -X1*X6
SA1 L.TNME
SA2 F.TNME
SB2 B1+B1
SB3 X1
SA1 X2
SB4 X2
MX2 1
ZR B3,ESR1.1 IF EMPTY TABLE
ESR1 BX3 -X2*X1 SCAN NAME TABLE
IX7 X3-X6
SB3 B3-B2
ZR X7,ESR2 IF FOUND
SA1 A1+B2
NZ B3,ESR1 IF THE END OF THE TABLE
ESR1.1 ADDWRD TNME,X6
ADDWRD A0,X5
SA1 A6-B1
MX2 1
ESR2 MI X1,ESRX IF SYMBOL REFERENCED - EXIT
BX6 X1+X2 INDICATE REFERENCE
SA6 A1
SX3 A1-B4
SA2 DN
ADDWRD TREF,X2+X3 ENTER REFERENCE
EQ ESRX RETURN
PLE SPACE 4,10
** PLE - PROCESS LIBRARY ERROR.
*
* ISSUE DAYFILE MESSAGE *PL ERROR IN DECK*.
* ABORT JOB.
*
* USES X - 1, 6.
* A - 0, 1, 6.
*
* CALLS ABT.
PLE SA1 DN SET DECK NAME IN MESSAGE
BX6 X1
SA6 PLEB
SA0 PLEA
EQ ABT ABORT JOB
PLEA DATA 20H PL ERROR IN DECK
PLEB DATA 0
PLS SPACE 4,20
** PLS - ISSUE PROGRAM LIBRARY STATISTICS MESSAGES.
*
* ENTRY (BLANK) = ACTIVE BLANK STATEMENTS.
* (CALL) = ACTIVE *CALL STATEMENTS.
* (CODE) = ACTIVE NON-COMMENT, NON-BLANK STATEMENTS.
* (COMNT) = ACTIVE * TYPE COMMENT STATEMENTS.
* (INACT) = INACTIVE STATEMENTS.
*
* EXIT ALL DAYFILE MESSAGES ISSUED.
*
* USES X - 1, 2, 3, 4, 5, 6, 7.
* A - 1, 2, 3, 4, 6.
*
* CALLS CDD, WOF.
PLS SUBR ENTRY/EXIT
SA1 BLANK CONVERT NUMBER OF BLANK STATEMENTS
RJ CDD
SA6 PLSB+1
SA1 CALL CONVERT NUMBER OF *CALL STATEMENTS
RJ CDD
SA6 PLSC+1
SA1 CODE CONVERT NUMBER OF LINES OF CODE
RJ CDD
SA6 PLSD+1
SA1 COMNT CONVERT NUMBER OF COMMENT STATEMENTS
RJ CDD
SA6 PLSE+1
SA1 INACT CONVERT NUMBER OF INACTIVE STATEMENTS
RJ CDD
SA6 PLSF+1
SA1 BLANK COMPUTE TOTAL NUMBER OF ACTIVE STATEMENTS
SA2 CALL
SA3 CODE
SA4 COMNT
IX5 X1+X2
IX7 X3+X4
IX1 X5+X7
RJ CDD CONVERT TOTAL ACTIVE STATEMENTS
SA6 PLSG+1
SX7 LCFE FORCE EJECT
SX6 PLSA SET SUBTITLE LINE
SA7 LC
SA6 ST
SX7 =C* * SET SUB-SUB TITLE LINE
SX1 PLSB BLANK STATEMENTS
SA7 A6+1
RJ WOF WRITE OUTPUT FILE
SX1 PLSC *CALL STATEMENTS
RJ WOF WRITE OUTPUT FILE
SX1 PLSD LINES OF CODE
RJ WOF WRITE OUTPUT FILE
SX1 PLSE * TYPE COMMENTS
RJ WOF WRITE OUTPUT FILE
SX1 PLSF INACTIVE STATEMENTS
RJ WOF WRITE OUTPUT FILE
SX1 PLSG ACTIVE STATEMENTS
RJ WOF WRITE OUTPUT FILE
EQ PLSX RETURN
PLSA DATA C/ PROGRAM LIBRARY STATISTICS./
PLSB DATA 10H0
DATA C/ BLANK STATEMENTS./
PLSC DATA 10H0
DATA C/ *CALL STATEMENTS./
PLSD DATA 10H0
DATA C/ LINES OF CODE./
PLSE DATA 10H0
DATA C/ * TYPE COMMENT STATEMENTS./
PLSF DATA 10H0
DATA C/ TOTAL INACTIVE STATEMENTS./
PLSG DATA 10H0
DATA C/ TOTAL ACTIVE STATEMENTS./
RMT SPACE 4,10
** RMT - READ MODIFIER TABLE.
*
* ENTRY (DN) = DECK NAME.
* (MA) = MODIFICATION TABLE ADDRESS.
*
* EXIT (X0) = TERMINATOR CHARACTOR MASK.
*
* USES X - ALL.
* A - 1, 2, 3, 6.
* B - 2, 3.
*
* CALLS ENT.
*
* MACROS MESSAGE, READ, READW.
RMT SUBR ENTRY/EXIT
SA1 L.TNME CLEAR REFERENCE INDICATORS
SA2 F.TNME
MX4 1
SB3 X1
SA1 X2
SB2 B1+B1
ZR B3,RMT2 IF EMPTY TABLE
RMT1 BX6 -X4*X1
SA6 A1
SB3 B3-B2
SA1 A1+B2
NZ B3,RMT1 IF MORE REFERENCES
RMT2 READ P
READW P,BUF,17B READ IDENT TABLE
MI X1,RMTX IF EOF - RETURN
SA1 BUF
LX1 12
SB2 X1-7700B
NZ B2,RMT7 IF NO IDENT TABLE
SA1 BUF+1 SET DECK NAME
BX6 X1
SA6 DN
SA6 RMTA+1
READW P,T1,1 READ MODIFIER TABLE LENGTH
NZ X1,PLE IF EOR
SA1 T1 CHECK TABLE
LX1 18
SX6 B0
SB2 X1-700100B
SB3 X1-700200B
NZ B2,RMT3 IF NOT NORMAL DECK
SA3 =0LCMDFILE CHECK FOR *CMDFILE* - *HELP* TEXT
BX7 X3-X2
ZR X7,RMT7 IF *CMDFILE* SKIP ENTIRE DECK
EQ RMT4 PROCESS NORMAL DECK
* CHECK FOR A COMMON DECK.
RMT3 NZ B3,RMT7 IF NOT A COMMON DECK
SX5 B0 ENTER NAME TABLE
RJ ENT
SA1 T1
LX1 18
SX6 B1 SET REFERENCE FLAG
MX4 4*6
SA6 RF
SA6 PP SET PP
SA2 DN GET DECK NAME
SA3 =0LCOMP
BX2 X4*X2
IX7 X2-X3
ZR X7,RMT4 IF -COMPXXX-
SA3 =0LCOMD
IX7 X2-X3
SX6 B0
ZR X7,RMT4 IF -COMDXXX-
SA6 PP
RMT4 LX1 60-18
SX5 X1
ZR X5,RMT6 IF NO MODIFIERS
RMT5 READW P,T1,1 READ OUT MODIFIERS
SX5 X5-1
NZ X5,RMT5 IF NOT THE LAST WORD
RMT6 MESSAGE RMTA,1
SA2 =36060020B MASK FOR BL , + - * /
SX1 B0 RETURN WITH NO EOR
BX0 X2
EQ RMTX RETURN
RMT7 READW P,BUF,BUFL READ TO EOR
ZR X1,RMT7 IF NOT AN EOR
EQ RMT2 BEGIN NEXT RECORD
RMTA DATA 10H SCANNING
DATA 0
RPF SPACE 4,10
** RPF - READ CARD FROM PROGRAM LIBRARY.
*
* ENTRY (A0) = ADDRESS OF BUFFER.
*
* EXIT (X1) .NE. 0 IF EOR READ.
* (CDTX) = TEXT OF COMPRESSED CARD.
*
* USES X - 1, 6.
* A - 1, 6.
*
* MACROS READC.
RPF SUBR ENTRY/EXIT
RPF1 READC P,BUF,BUFL READ CARD HISTORY
NZ X1,RPF IF EOR - RETURN
READC P,CDTX,MXCCL READ COMPRESSED CARD
NZ X1,RPF IF EOR - RETURN
EQ B6,B7,PLE IF OVERFLOW
SA1 BUF
MI X1,RPF2 IF CARD ACTIVE
SA1 INACT COUNT INACTIVE CARD
SX6 B1
IX6 X6+X1
SA6 A1
EQ RPF1 LOOP FOR NEXT CARD
RPF2 BX1 X1-X1 SET NOT EOR FLAG
EQ RPFX RETURN
SNC SPACE 4,10
** SNC - SET NEXT CHARACTER.
*
* ENTRY (CP) = CHARACTER POINTER.
*
* EXIT (X6) = (CH) = CHARACTER.
* (CP) UPDATED.
* CHARACTER = * * IF END OF CARD REACHED.
*
* USES X - 1, 2, 3, 4, 6, 7.
* A - 1, 2, 6, 7.
* B - 2, 3, 4, 5.
SNC3 SX4 X1+ SET POSITION
MI B4,SNC4 IF NOT SPACE COUNT
SX6 1R SUPPLY * *
EQ SNC6 SPACE FILL
SNC4 SX7 X6-1R CHECK FOR CURRENT CHARACTER BLANK
ZR X7,SNC4.1 IF BLANK
SX7 X6-76B CHECK ESCAPE CODE
NZ X7,SNC6 IF NOT ESCAPE CODE
SNC4.1 SB5 B2+6
NE B5,B3,SNC5 IF NOT AT END OF WORD
SB5 6 RESET POSITION
SX4 X4+B1 ADVANCE TO NEXT WORD
SA2 A2+B1 GET NEXT WORD OF CARD
SNC5 LX7 X2,B5 POSITION CHARACTER
BX7 -X3*X7 CHECK FOR SECOND CONSECUTIVE BLANK
SX2 X7-1R
ZR X2,SNC5.1 IF BLANK
ZR X7,SNC6 IF *00* FOLLOWS 76B
SX2 X6-76B
NZ X2,SNC6 IF NOT CONVERTING TO UPPER CASE
SX2 X7-33B
PL X2,SNC6 IF NOT LOWER CASE ALPHABETIC CHARACTER
BX6 X7
SNC5.1 SB2 B5
SX1 X4
SNC6 PX7 X1,B2 PACK POSITION
SA6 CH SET CHARACTER
SA7 A1
SNC SUBR ENTRY/EXIT
SA1 CP UNPACK POINTER
SA2 X1+CDTX LOAD WORD FROM CARD
MX3 54
SB3 66
UX1,B2 X1
SB4 -B1
SX4 1R PRESET * *
SNC1 SB2 B2+6 ADVANCE CHARACTER INDEX
NE B2,B3,SNC2 IF NOT LAST CHARACTER OF WORD
SB2 6 RESET CHARACTER
SX1 X1+B1 ADVANCE WORD
SA2 A2+B1
SNC2 LX7 X2,B2 SHIFT TO CHARACTER
BX6 -X3*X7
NZ X6,SNC3 IF NOT 00 CHARACTER
SB4 B4+B1
NE B4,B1,SNC1 IF NOT THE LAST SPACE
BX6 X4
SA6 CH
EQ SNCX RETURN
SSR SPACE 4,10
** SSR - SORT SPECIAL REFERENCES.
*
* USES X - 1, 2, 3, 4, 6, 7.
* A - 0, 1, 2, 3, 4, 5, 6, 7.
* B - 2, 3, 4, 5, 6, 7.
SSR SUBR ENTRY/EXIT
SA1 F.TNME (A0) = FWA - 2
SA2 SL
IX6 X1+X2
SA3 L.TNME
IX7 X3-X2
SA0 X6-2
SB7 X7 N = LENGTH
SB6 B7 M = N
SSR1 SX6 B6 M = M/2
AX6 2
LX6 1
SB6 X6
SB3 B1+B1 J = 1
ZR B6,SSRX IF M = 0 - RETURN
SB4 B7-B6 K = N-M
SB2 B3
SSR2 SB5 B2+B6 L = I+M
SA1 A0+B2 A(I)
SA2 A0+B5 A(L)
IX6 X2-X1
PL X6,SSR3 IF A(L) .GE. A(I)
SA3 A1+B1 INTERCHANGE A(L) AND A(I)
SA4 A2+B1
BX6 X1
LX7 X2
SA6 A2
SA7 A1
BX6 X3
BX7 X4
SA6 A4
SA7 A3
SB2 B2-B6 I = I-M
GT B2,SSR2 IF I .GT. 0
SSR3 SB3 B3+2 J = J+1
SB2 B3
LE B3,B4,SSR2 IF J .LE. K
EQ SSR1 LOOP
TOV SPACE 4,10
** TOV - TABLE OVERFLOW PROCESSOR.
*
* ENTRY (FL) = CURRENT FIELD LENGTH.
*
* EXIT (FL) = NEW FIELD LENGTH.
*
* USES A - 1, 6.
* X - 1, 6.
*
* CALLS ABT.
*
* MACROS MEMORY.
TOV SUBR ENTRY/EXIT
SA1 FL INCREMENT FIELD LENGTH
SX6 X1+MINC
SA6 A1
LX6 30 POSITION FOR *MEM* CALL
SA6 TOVA
SA1 A6+B1 CHECK MEMORY LIMIT
IX1 X1-X6
NG X1,TOV1 IF LIMIT REACHED.
MEMORY CM,TOVA,R
EQ TOVX RETURN
TOV1 SA0 =C* MEMORY OVERFLOW.*
EQ ABT ABORT
TOVA CON 0 MEMORY CALL WORD
TOVB VFD 30/-0,30/0 MAXIMUM MEMORY LIMIT
WOF SPACE 4,10
** WOF - WRITE LINE TO OUTPUT.
*
* ENTRY (X1) = FWA LINE.
*
* USES X - 1, 2, 3, 6, 7.
* A - 1, 2, 3, 6, 7.
*
* CALLS CDD.
*
* MACROS WRITEC, WRITEW.
WOF SUBR ENTRY/EXIT
SA3 LC ADVANCE LINE COUNT
SX6 X3+B1
SA6 A3
SA2 LL
IX2 X6-X2
NG X2,WOF1 IF BOTTOM OF PAGE NOT REACHED
BX6 X1 SAVE REQUEST
SA6 WOFA
SA1 PN ADVANCE PAGE NUMBER
SX6 4 RESET LINE COUNT
SX7 X1+B1
SA6 A3
SA7 A1
RJ CDD CONVERT PAGE NUMBER
MX1 60-12
LX6 4*6 STORE PAGE NUMBER
BX6 X1*X6
SA6 PAGE
SA1 PD
ZR X1,WOF0 IF NO FORMAT EFFECTOR
WRITEW O,A1,1 WRITE FORMAT EFFECTOR
BX6 X6-X6
SA6 PD
WOF0 WRITEW O,TITL,TITLL
SA1 ST
WRITEC X2,X1
SA1 ST+1
WRITEC X2,X1
WRITEC X2,(=C* *)
SA1 WOFA RESTORE REQUEST
WOF1 WRITEC O,X1
EQ WOFX RETURN
WOFA DATA 0
SPACE 4,10
** COMMON DECKS.
*CALL COMCRDC
*CALL COMCRDW
*CALL COMCWTC
*CALL COMCWTW
*CALL COMCCIO
*CALL COMCSYS
*CALL COMCCDD
*CALL COMCCOD
*CALL COMCSFN
SPACE 4,10
IDENT FORCE LITERALS
PRESET TITLE KRONREF PRESET.
PRS SPACE 4,10
** PRS - PRESET KRONREF.
*
* ENTRY (A0) = FL.
*
* EXIT (FL) = FL - 10B.
*
* USES X - 1, 3, 4, 6.
* A - 0, 1, 4, 6.
* B - 4, 5.
*
* CALLS ARG, SFN.
*
* MACROS CLOCK, DATE, REWIND.
PRS SUBR ENTRY/EXIT
SX6 A0-10B
SA6 FL
MEMORY CM,TOVB,R GET CURRENT FL/MAXIMUM FL
CLOCK TIME REQUEST TIME
DATE DATE REQUEST DATE
SA1 ACTR SET ARGUMENT COUNT
SB4 X1
ZR B4,PRS1 IF NO ARGUMENTS
SB5 PRSA
SA4 ARGR
RJ ARG PROCESS ARGUMENTS
SA0 =C* ERROR IN KRONREF ARGUMENTS.*
NZ X1,ABT IF ARGUMENT ERRORS
PRS1 REWIND P,R
SA1 P
MX3 42
BX1 X3*X1
RJ SFN SPACE FILL FILE NAME
SA6 PLNM
RJ IPP INITALIZE PAGE PARAMETERS
EQ PRSX RETURN
PRSA SPACE 4,10
** PRSA - CONTROL CARD ARGUMENT VALUES.
PRSA BSS 0
L ARG O,O OUTPUT FILE
P ARG P,P OPL FILE NAME
S ARG =0LNOSTEXT,LSSA
G ARG =0LTEXT,LSSB USER SUPPLIED TEXT FILE
ARG END OF THE TABLE
IPP SPACE 4,15
** IPP - INITIALIZE PAGE PARAMETERS.
*
* EXIT (LL) = LINE LIMIT.
* (PD) = PRINT DENSITY IF NOT TERMINAL OUTPUT FILE.
* = 0 IF TERMINAL OUTPUT FILE.
*
* USES X - 2, 6.
* A - 6.
*
* CALLS STF.
*
* MACROS GETPP.
IPP SUBR ENTRY/EXIT
GETPP IPPA,LL,PD
SX2 O OUTPUT FILE FET ADDRESS
RJ STF SET TERMINAL FILE
NZ X6,IPPX IF NOT TERMINAL FILE
SA6 PD
EQ IPPX RETURN
IPPA BSS 2 *GETPP* RESPONSE BLOCK
LSS SPACE 4,10
** LSS - LOAD SYSTEMS SYMBOLS.
*
* USES X - 0, 1, 2, 3, 4, 6, 7.
* A - 0, 1, 2, 3, 4, 6, 7.
* B - 2, 3, 4, 5, 6, 7.
*
* CALLS ATS, SFN.
*
* MACROS ALLOC, OVERLAY, VERSION.
LSS SUBR ENTRY/EXIT
SA1 LSSB CHECK TEXT FROM LOCAL FILE
ZR X1,LSS1 IF TEXT FROM SYSTEM
RJ SFN SET TEXT NAME
SA6 TX SET SYSTEXT PRESENT
SA6 TXNM
OVERLAY LSSB,101B,,MTBS LOAD TEXT
JP LSS2 NO SYSTEM TEXT
LSS1 SA1 LSSA SET TEXT NAME
ZR X1,LSSX IF S=0
RJ SFN
SA6 TX SET SYSTEXT PRESENT
SA6 TXNM
VERSION LSSC
OVERLAY LSSA,101B,SYSTEM,MTBS LOAD TEXT
LSS2 MX0 42
SA0 =C* ERROR IN SYSTEM TEXT.*
SA1 MTBS+1 CHECK FIRST WORD OF TEXT
BX6 X0*X1
NZ X6,ABT
SA1 65B SET TEMPORARY LENGTH OF TREF
SA2 FTAB+FTABL
SX6 X1
IX7 X2+X6
SA6 L.TREF
SA7 A2
SA1 MTBS+1 ALLOCATE NAME TABLE
ALLOC TNME,X1
SA0 =C* ERROR IN SYSTEM TEXT.*
ZR X3,ABT ABORT IF NO SYMBOLS
SX6 0 CLEAR REFERENCE LENGTH
SA6 L.TREF
* SORT SYMBOLS BY VALUE.
SA1 F.TREF (A0) = FWA - 1
SB7 X3 N = LENGTH
SA0 X1+1
SB6 B7 M = N
LSS3 SX6 B6 M = M/2
AX6 2
LX6 1
SB6 X6
SB3 B1+B1 J = 1
ZR B6,LSS6 IF M = 0
SB4 B7-B6 K = N-M
SB2 B3
LSS4 SB5 B2+B6 L = I + M
SA1 A0+B2 A(I)
SA2 A0+B5 A(L)
IX6 X2-X1
PL X6,LSS5 IF A(L) .GE. A(I)
SA3 A1-B1 INTERCHANGE A(L) AND A(I)
SA4 A2-B1
BX6 X1
LX7 X2
SA6 A2
SA7 A1
BX6 X3
BX7 X4
SA6 A4
SA7 A3
SB2 B2-B6 I = I-M
GT B2,LSS4 IF I .GT. 0
LSS5 SB3 B3+2 J = J + 1
SB2 B3
LE B3,B4,LSS4 IF J = K
EQ LSS3 LOOP
LSS6 SA1 F.TREF COPY SYMBOLS
SA2 F.TNME
SX7 B7 SET SYSTEM SYMBOLS LENGTH
SA3 X1+2
SA4 A3+B1
SA7 SL
BX6 X3
LX7 X4
SA6 X2
SA7 A6+B1
SB2 B1+B1
LSS7 SA3 A3+B2
SA4 A4+B2
BX6 X3
LX7 X4
SB7 B7-B2
SA6 A6+B2
SA7 A7+B2
NZ B7,LSS7 IF MOVE NOT COMPLETE
EQ LSSX RETURN
LSSA CON 0LNOSTEXT
LSSB CON 0
LSSC VFD 12/12B,12/0,12/0,24/TXNM+1
SPACE 4,10
** COMMON DECKS.
*CALL COMCARG
*CALL COMCCPM
*CALL COMCLFM
*CALL COMCOVL
*CALL COMCSTF
SPACE 4,10
* MEMORY ALLOCATION.
BUF EQU PRS
PBUF EQU BUF+BUFL OPL BUFFER
MTBS EQU PBUF+PBUFL FWA TABLES
MFL= EQU MTBS+MTBSL+200000B NOMINAL RUNNING FL
SPACE 4
END KRONREF KRONOS SYSTEM CROSS REFERENCE PROCESSOR