IDENT CATALOG,FETS
ABS
ENTRY CATALOG
ENTRY RFL=
ENTRY SSM=
SST
SYSCOM B1 DEFINE (B1) = 1
TITLE CATALOG - CATALOG FILE.
*COMMENT CATALOG - CATALOG FILE.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SPACE 4
*** CATALOG - CATALOG FILES.
* G. R. MANSFIELD. 70/12/20.
SPACE 4
*** CATALOG LISTS PERTINENT INFORMATION ABOUT EACH RECORD
* OF A BINARY MEDIUM.
*
* THIS INFORMATION INCLUDES -
*
* 1) THE RECORD NUMBER COUNTING FROM THE BEGINNING OF THE FILE.
* 2) THE NAME FROM THE FIRST WORD OF THE RECORD OR THE SECOND
* WORD OF THE *77* TABLE IF IT IS PRESENT.
* 3) THE RECORD TYPE.
* 4) LENGTH OF THE PARTICULAR RECORD ( EXCLUDING THE *77*
* TABLE ).
* 5) CHECKSUM OF THE RECORD, EXCLUDING *77* TABLE, IF PRESENT.
* 6) CONTENTS OF THE *77* TABLE, IF ANY.
* 7) OTHER PERTINENT INFORMATION, ACCORDING TO RECORD TYPE.
*
*
* THE FOLLOWING RECORD TYPES ARE RECOGNIZED.
*
* TYPE DESCRIPTION
*
* TEXT UNIDENTIFIED AS ANY OTHER TYPE.
* PP 6000, CYBER 72/73/74, CYBER 170 PP PROGRAM.
* REL RELOCATABLE CENTRAL PROGRAM.
* OVL ABSOLUTE OVERLAY PROGRAM, NO ENTRY POINTS DEFINED.
* ULIB USER LIBRARY TYPE RECORD.
* OPL MODIFY PROGRAM LIBRARY DECK RECORD.
* OPLC MODIFY PROGRAM LIBRARY COMMON DECK RECORD.
* OPLD MODIFY PROGRAM LIBRARY DIRECTORY.
* ABS ABSOULTE OVERLAY PROGRAM, WITH ENTRY POINTS DEFINED.
* PPU 7600, CYBER 76 TYPE PPU PROGRAM.
* CAP FAST DYNAMIC LOAD CAPSULE.
* PROC PROCEDURE TYPE RECORD.
* PPL 16-BIT PP PROGRAM.
*
*
* A RECORD OF *REL* FORMAT WILL HAVE THE ENTRY POINTS LISTED.
*
* A RECORD OF *TEXT* FORMAT WILL BE LISTED IN ITS ENTIRETY IF
* THE *T* OPTION IS ENABLED AND IT IS A DEADSTART RECORD
* (APRDECK, CMRDECK, EQPDECK, IPRDECK, OR LIBDECK).
*
* A RECORD OF *TEXT* FORMAT WILL HAVE ITS FIRST LINE LISTED IF
* ITS NAME IS *OVERLAY*, REGARDLESS OF THE *T* OPTION.
*
* A RECORD OF *OPL* OR *OPLC* FORMAT WILL HAVE THE MODIFIERS
* AND THEIR *YANK* STATUS LISTED. IF SELECTED THE
* CHARACTER SET OF THE INDIVIDUAL OPL/OPLC WILL BE
* LISTED IMMEDIATELY FOLLOWING THE RECORD TYPE.
*
* A RECORD OF *ULIB* FORMAT WILL SUPPRESS LISTING OF FOLLOWING
* RECORDS IN *REL* FORMAT UNLESS -U- OPTION IS USED.
SPACE 4
*** CONTROL CARD CALL.
*
*
* CATALOG (FNAME,P1,P2,...,PN)
*
* FNAME NAME OF FILE TO BE CATALOGED.
*
* *PN* ONE OF THE FOLLOWING -
*
* N CATALOG TO EOI.
* N=0 CATALOG TO EMPTY FILE.
* N=X CATALOG *X* FILES.
*
* L=LFN LIST OUTPUT ON FILE *LFN*.
*
* T SELECT DETAILED *TEXT* RECORD LIST.
*
* U SELECT DETAILED USER LIBRARY LIST.
*
* D DESELECT DETAILED LIST. THE DETAILED LIST IS
* AUTOMATICALLY DESELECTED IF THE OUTPUT FILE IS
* ASSIGNED TO A TERMINAL.
*
* R REWIND *FNAME* FILE BEFORE AND AFTER CATALOG.
*
* CS DE-SELECT CHARACTER SET LIST FOR OPL/OPLC RECORDS.
*
*
* ASSUMED OPTIONS -
*
* OPT VALUE
*
* FNAME FILE.
* N 1.
* L OUTPUT.
* T *NOT SELECTED*.
* U *NOT SELECTED*.
* D *NOT SELECTED*.
* R *NOT SELECTED*.
* CS *SELECTED*.
SPACE 4,10
*** DAYFILE MESSAGES.
*
*
* * CATALOG ARGUMENT ERROR.* - THE CONTROL STATEMENT IS
* SYNTACTICALLY INCORRECT.
*
* * CATALOG COMPLETE.* - INFORMATIVE MESSAGE INDICATING THAT
* CATALOGING IS COMPLETE.
*
* * CATALOG FILE NAME CONFLICT.* - THE NAME OF THE FILE TO BE
* CATALOGED AND THE NAME OF THE FILE TO RECEIVE OUTPUT ARE
* THE SAME.
SPACE 4
**** ASSEMBLY CONSTANTS.
FETODL EQU 16
FBUFL EQU 30061B FILE BUFFER LENGTH
OBUFL EQU 2001B OUTPUT BUFFER LENGTH
****
SPACE 4,10
** SPECIAL ENTRY POINT.
SSM= EQU 0 SUPPRESS DUMPS OF FIELD LENGTH
READW SPACE 4
** READW - REDEFINE READ WORDS MACRO TO USE CONTROL WORDS.
PURGMAC READW
READW MACRO F,S,N
R= B6,S
R= B7,N
R= X2,F
RJ RDA
ENDM
SPACE 4
*CALL COMCCMD
*CALL COMCMAC
*CALL COMSSRT
TITLE STORAGE ASSIGNMENT.
** FETS.
ORG 110B
FETS BSS 0
O BSS 0
OUTPUT FILEC OBUF,OBUFL,FET=7,EPR
CON 0 WORDS REMAINING IN BLOCK (F)
CON 0 EOR FLAG
F BSS 0
FILE FILEB FBUF,FBUFL,(FET=10)
FETOD BSSZ FETODL
SPACE 4
* COMMON DATA.
RW CON 0 REWIND FLAG
CW CON 0 CONTROL WORD FLAG (1 = CONTROL WORDS)
FC CON 0L1 FILE COUNT
EF CON 0 EMPTY FILE FLAG
NSFF CON 0 NONSTANDARD FILE FLAG
RN CON 0 RECORD NUMBER
FN CON 1 FILE NUMBER
CS CON 0 CHECKSUM
RL CON 0 RECORD LENGTH
CON 0 ZERO RECORD SUBTOTAL
CON 0 FILE LENGTH
NM CON 0 RECORD NAME
TY CON 0 RECORD TYPE
UL CON 0 USER LIBRARY LIST FLAG
LN CON 1 LIBRARY NUMBER
* LIST DATA.
SL CON 0 SHORT LIST FLAG
LC CON 99999,0 LINE COUNT
LL EQU LC+1 LINE LIMIT
PD CON 0 PRINT DENSITY FORMAT CONTROL
PN CON 1 PAGE NUMBER
CSM CON 1 OPL CHARACTER SET LIST FLAG
TF CON 0 TERMINAL FLAG
PGEJ DATA 1L1 PAGE EJECT
TITL DATA 1H1
DATA 10HCATALOG OF
DATA 1H
DATA 4AFILE
DATA 6A1
DATA 10H
TITLA DATA 10H
DATE DATA 1H
TIME DATA 1H
DATA 4APAGE
PAGE DATA 8L
TITLL EQU *-TITL
SBTL DATA 6AREC
DATA 4HNAME
DATA 5HTYPE
DATA 6ALENGTH
DATA 7ACKSUM
DATA 7ADATE
SBTLA DATA 8ACOMMENTS
DATA 0
DATA 2L
SBTLL EQU *-SBTL
FLS CON 3 AUTO-FLUSH TABLE
CON 0
CON 0
TITLE MAIN PROGRAM.
CATALOG SPACE 4
** CATALOG - MAIN PROGRAM.
CATALOG SB1 1 (B1) = 1
RJ PRS PRESET PROGRAM
WRITE O,* PRESET *CIO* FUNCTION
SA3 TF
WRITEW O,PD,X3 CONDITIONALLY WRITE FORMAT EFFECTOR
SA1 RW
ZR X1,CAT0.1 IF NO REWIND
REWIND F
CAT0.1 SA1 CW
ZR X1,CAT1.1 IF NOT CONTROL WORDS
MX6 1 SET FIRST READ FLAG
SA6 F-2
READCW F,17B
JP CAT1.2
CAT1 SA1 CW
NZ X1,CAT1.2 IF CONTROL WORDS
CAT1.1 READ F
CAT1.2 BSS 0
SA1 RN ADVANCE RECORD NUMBER
SX6 X1+B1
MX7 0 CLEAR LENGTH
SA6 A1
SA7 RL
SA7 CS CLEAR CHECKSUM
RJ RDR READ RECORD
SA4 RL ADVANCE SUBTOTAL
NZ X4,CAT1.3 IF NONZERO RECORD
NG X1,CAT3 IF EOF
CAT1.3 SA2 A4+B1
SA3 A2+B1 ADVANCE FILE TOTAL
IX6 X2+X4
SA6 A2
IX7 X3+X4
SA7 A3+
BX6 X6-X6
SA2 TY CHECK TYPE
SB2 X2-ODRT
SA1 ULBA
NZ B2,CAT1.4 IF NOT *OPLD*
SA6 ULBB CLEAR *SEARCHING FOR OPLD* FLAG
ZR X1,CAT2 IF LISTING USER LIBRARY
SA6 A1+ CLEAR USER LIBRARY FLAG
EQ CAT1 READ NEXT RECORD
CAT1.4 NZ X1,CAT1 IF NO LIST OF USER LIBRARY SET
CAT2 RJ LRS LIST RECORD STATUS
SA1 TY PROCESS OTHER LIST
MX7 0 CLEAR EOF FLAG
SB7 X1
SA7 EF
JP CATB+B7
CAT3 SX1 X1+B1
BX5 -X1 PROCESS END OF FILE
RJ EOF
NZ X5,CAT5 IF EOI
SA1 FC CHECK FILE COUNT
NZ X1,CAT4 IF NOT EMPTY FILE REQUEST
SA2 EF CHECK EOF
NZ X2,CAT5 IF EMPTY FILE
SX6 X2+B1 SET EOF FLAG
SA6 A2
JP CAT0.1
CAT4 SX2 1 DECREMENT FILE COUNT
IX6 X1-X2
SA6 A1
NZ X6,CAT0.1 IF MORE FILES REQUESTED
CAT5 SA1 PN CHECK PAGE NUMBER
LX1 59
NG X1,CAT6 IF PAGE NUMBER EVEN
WRITEC O,PGEJ PAGE EJECT
CAT6 WRITER O
SA1 RW
ZR X1,CAT7 IF NO REWIND
REWIND F
CAT7 MESSAGE (=C* CATALOG COMPLETE.*)
ENDRUN
CATA DATA 10HCATALOGING
DATA 0
CATB BSS 0
LOC 0
EQ TXT TEXT
EQ CAT1 PP
EQ TXT UNDEFINED RECORD TYPE
EQ REL REL
EQ CAT1 OVL
EQ ULB ULIB
EQ OPL OPL
EQ OPL OPLC
EQ CAT1 OPLD
EQ ABS ABS
EQ CAT1 PPU
EQ TXT UNDEFINED RECORD TYPE
EQ TXT UNDEFINED RECORD TYPE
EQ TXT UNDEFINED RECORD TYPE
EQ CAP CAP
EQ TXT UNDEFINED RECORD TYPE
EQ TXT PROC
EQ TXT UNDEFINED RECORD TYPE
EQ TXT UNDEFINED RECORD TYPE
EQ TXT UNDEFINED RECORD TYPE
EQ CAT1 PPL
LOC *O
EOF SPACE 4
** EOF - PROCESS END OF FILE.
EOF PS ENTRY/EXIT
SA2 ULBB
ZR X2,EOF0 IF *OPLD* FOUND
BX6 X6-X6
SA6 A2 CLEAR *SEARCHING FOR OPLD* FLAG
SX1 EOFC LIST *OPLD MISSING* MESSAGE
SA6 ULBA CLEAR USER LIBRARY FLAG
RJ WOF
EOF0 SA2 NSFF CHECK FOR NONSTANDARD FILE
ZR X2,EOF0.1 IF NOT NONSTANDARD FILE
BX6 X6-X6
SX1 EOFB LIST *EOR MISSING* MESSAGE
SA6 A2
RJ WOF
EOF0.1 SX1 =C* * LIST BLANK LINE
RJ WOF
ZR X5,EOF1 IF EOF
SA1 =10H
BX6 X1
EQ EOF2
EOF1 SA1 RN CONVERT RECORD NUMBER
RJ CDD
EOF2 LX6 18
SA6 SBUF
SA1 X5+EOFA
SA2 =6ASUM =
BX6 X1
LX7 X2
SA6 A6+B1
SA7 A6+B1
SA1 RL+2 CONVERT TOTAL LENGTH
RJ COD
MX7 0
SA6 A7+B1
SA7 A6+B1
SX1 SBUF
RJ WOF
SA1 FN ADVANCE FILE NUMBER
SX6 99999 FORCE PAGE EJECT
SX7 X1+B1
SA6 LC
SA7 A1
SX1 X1+B1 CONVERT NUMBER
RJ CDD
LX6 5*6
SX7 B0 CLEAR LENGTHS
SA6 TITL+4
SA7 RL+1
SA7 A7+B1
SX6 B1 RESET LIBRARY NUMBER
SA7 RN CLEAR RECORD NUMBER
SA6 LN
EQ EOF RETURN
EOFA DATA 10H* EOF *
DATA 10H* EOI *
EOFB DATA C+ *EOR MISSING*+
EOFC DATA C+ *OPLD MISSING*+
LRS SPACE 4,20
** LRS - LIST RECORD STATUS.
*
* ENTRY (BUF) = FIRST BLOCK OF RECORD.
* (NM) = RECORD NAME.
* (TY) = RECORD TYPE.
* (RN) = RECORD NUMBER.
* (RL) = RECORD LENGTH.
* (CS) = CHECK SUM.
* (LN) = LIBRARY NUMBER.
*
* EXIT (LN) = (LN)+1 IF ZERO LENGTH RECORD ENCOUNTERED.
*
* USES X - ALL.
* A - 1, 2, 3, 4, 5, 6, 7.
* B - 3, 6, 7.
*
* CALLS CDD, COD, CPT, WOF, ZTB.
LRS PS ENTRY/EXIT
SA1 RN CONVERT RECORD NUMBER
RJ CDD
LX6 18
SA6 SBUF
SA1 RL CHECK RECORD LENGTH
NZ X1,LRS1 IF NOT ZERO RECORD
* PROCESS ZERO LENGTH RECORD.
SA1 =4H(00) ENTER ZERO RECORD
SA2 =6ASUM =
BX6 X1
LX7 X2
SA6 A6+B1
SA7 A6+B1
SA1 RL+1 ENTER SUBTOTAL
RJ COD
SA6 A7+B1
MX7 0 CLEAR SUBTOTAL
SA7 A1
SA2 =9ALIBRARY =
SA1 LN INCREMENT LIBRARY NUMBER
BX6 X2
SX7 X1+B1
SA6 A6+B1
SA7 A1
RJ CDD DISPLAY LIBRARY NUMBER
LX6 6
SA6 A6+B1
BX7 X7-X7 TERMINATE LINE
SA7 A6+B1
SX1 SBUF
RJ WOF
SX1 =C* *
RJ WOF
EQ LRS RETURN
LRS1 SA1 NM SPACE FILL NAME
RJ ZTB
SA6 A6+B1
SA1 TY SET TYPE
SB7 X1
SA2 LRSA+X1
BX6 X2
SA6 A6+B1
SA1 RL CONVERT LENGTH
RJ COD
SA6 A6+B1
* PROCESS CHECKSUM.
SA2 CS FOLD CHECKSUM
MX3 -12
BX1 -X3*X2
AX2 12
BX6 -X3*X2
IX1 X1+X6
AX2 12
BX6 -X3*X2
IX1 X1+X6
AX2 12
BX6 -X3*X2
IX1 X1+X6
AX2 12
BX6 -X3*X2
IX1 X1+X6
IX7 X1+X3
BX4 -X3*X7
SX1 X4+10000B
RJ COD
SX2 1R -1R1
LX2 24
IX6 X6+X2
LX6 12
SA6 A6+B1
* COPY 7700 TABLE.
SA1 BUF
RJ CPT
JP B7+LRSB PROCESS TYPE
LRS4 SA1 SL CHECK SHORT LIST FLAG
ZR X1,LRS5 IF NOT SET
SX6 B0+ TERMINATE LIST
SA6 SBUF+6
EQ LRS5.1 WRITE OUTPUT LINE
LRS5 SA2 SBUF+13 INSURE END OF LINE
MX0 2*6
BX6 X0*X2
SA6 A2+
LRS5.1 SX1 SBUF
RJ WOF
EQ LRS RETURN
* PROCESS *OPL* AND *OPLC* RECORDS.
LRS5.2 SA1 CSM CHARACTER SET LIST MODE FLAG
SA2 B7+LRSA SET RECORD TYPE
SA4 =5R PRESET LIST
ZR X1,LRS5.4 IF NO CHARACTER SET LIST SET
SA3 BUF+16B CHECK OPL/OPLC CHARACTER SET
MX7 -6
BX4 -X7*X3 LOWER 6 BITS OF HEADER+16B
SB3 X4-63B CHECK PL CHARACTER SET
EQ B3,B1,LRS5.3 IF 64 CHARACTER SET
SB3 0 SET 63 CHARACTER SET ORDINAL
LRS5.3 AX3 5 EXTRACT ASCII FLAG * 2
MX4 -6
LX4 1
BX3 -X4*X3
SX3 X3+B3
SA4 X3+LRSCS LIST RECORD STATUS (CHARACTER SET)
LRS5.4 BX6 X2+X4
SA6 SBUF+2 SET IN OUTPUT LINE
* EQ LRS6
LRS6 SA1 LC CHECK LINE COUNT
SX1 X1+2
SA2 A1+B1 GET LINE LIMIT
IX7 X1-X2
NG X7,LRS4 IF ROOM FOR TWO LINES
SX6 99999 FORCE EJECT
SA6 A1
EQ LRS4
* PROCESS PP LOAD ADDRESS.
LRS7 SA2 BUF+B3 FIRST WORD OF PROGRAM
SX3 10000B
AX2 24 SET LOAD ADDRESS
SX4 X2
SA5 LRSA+B7
ZR X4,LRS8 IF LOCATION FREE
SX4 X4+5
LRS8 IX1 X4+X3 CONVERT LOAD ADDRESS
MX0 -24
RJ COD
BX3 -X0*X6 MERGE WITH TYPE
LX3 12
BX6 X5+X3
SA6 SBUF+2
EQ LRS4 LIST LINE
* PROCESS OVERLAY LEVEL NUMBERS.
LRS9 SA2 BUF+B3 EXTRACT LEVEL NUMBERS FROM 5000 TABLE
LX2 24
MX0 -12
SX1 X2+10000B CONVERT LEVEL NUMBERS
RJ COD
SA1 LRSA+B7 MERGE LEVEL AND TYPE
BX2 -X0*X6
LX2 6
IX1 X1+X2
AX6 12
BX2 -X0*X6
LX2 24
IX6 X1+X2
SA6 SBUF+2
EQ LRS4 LIST LINE
* PROCESS PPU NUMBER.
LRS11 SA2 BUF+B3 FIRST WORD OF PROGRAM
LX2 24
SB6 X2-100B
SA5 LRSA+B7
NG B6,LRS12 IF PPU @ 77
SA5 LRSC
LRS12 SX1 X2+10000B CONVERT PPU NUMBER
RJ COD
LX6 6
PL B6,LRS13 IF PPU > 77
LX6 12
LRS13 IX6 X6+X5
SA6 SBUF+2
EQ LRS4 LIST LINE
* PROCESS USER LIBRARY.
LRS14 SA1 UL
ZR X1,LRS4 IF NO USER LIBRARY LIST
SX6 99999 FORCE PAGE EJECT
SA6 LC
EQ LRS4 LIST LINE
* PROCESS PPL LOAD ADDRESS.
LRS15 SA2 BUF+B3 FIRST WORD OF PROGRAM
SX3 B1+
LX3 3*5
MX4 -16
AX2 16 SET LOAD ADDRESS
BX4 -X4*X2
SA5 LRSA+B7
IX1 X4+X3 CONVERT LOAD ADDRESS
MX0 -6*5
RJ COD
SA1 SBUF+3 GET LENGTH
BX3 -X0*X6 MERGE WITH TYPE
BX6 X5+X3
SX3 1R)&1R INSERT RIGHT PAREN
SA6 A1-B1
LX3 -6
BX6 X1-X3
SA6 A1
EQ LRS4 LIST LINE
LRSA BSS 0
LOC 0
CON 10HTEXT
VFD 24/4LPP (,24/0,12/2L)
CON 10H
CON 10HREL
VFD 24/4LOVL ,12/0,6/1L,,12/0,6/1L
CON 10HULIB
CON 5LOPL
CON 5LOPLC
CON 10HOPLD
CON 10HABS
CON 8HPPU ( )-8A100
CON 10H
CON 10H
CON 10H
CON 10HCAP
CON 10H
CON 10HPROC
CON 10H
CON 10H
CON 10H
CON 5LPPL (
LOC *O
LRSB BSS 0
LOC 0
EQ LRS4 TEXT
EQ LRS7 PP
EQ LRS4 UNDEFINED RECORD TYPE
EQ LRS6 REL
EQ LRS9 OVL
EQ LRS14 ULIB
EQ LRS5.2 OPL
EQ LRS5.2 OPLC
EQ LRS4 OPLD
EQ LRS6 ABS
EQ LRS11 PPU
EQ LRS4 UNDEFINED RECORD TYPE
EQ LRS4 UNDEFINED RECORD TYPE
EQ LRS4 UNDEFINED RECORD TYPE
EQ LRS6 CAP
EQ LRS4 UNDEFINED RECORD TYPE
EQ LRS4 PROC
EQ LRS4 UNDEFINED RECORD TYPE
EQ LRS4 UNDEFINED RECORD TYPE
EQ LRS4 UNDEFINED RECORD TYPE
EQ LRS15 PPL
LOC *O
LRSC CON 10HPPU ( )-6A1
LRSCS CON 5R(63) DISPLAY CODE 63 CHARACTER SET
CON 5R(64) DISPLAY CODE 64 CHARACTER SET
CON 5R(A63) 6/12 ASCII CODE 63 CHARACTER SET
CON 5R(A64) 6/12 ASCII CODE 64 CHARACTER SET
LRSD CON 0
DATA C* MORE ENTRY POINTS NOT LISTED*
ABS SPACE 4,10
** ABS - PROCESS ABS ENTRY POINTS.
*
* ENTRY (BUF) = FIRST BLOCK OF RECORD.
*
* USES X - 0, 1, 2, 3, 5, 6, 7.
* A - 1, 2, 5, 6, 7.
* B - 2, 7.
*
* CALLS CDD, COD, WOF, ZTB.
ABS SA1 BUF CHECK FIRST WORD
LX1 18
MX2 -12
SX6 X1-770000B
NZ X6,CAT1 RETURN IF NO 7700 TABLE
LX1 6 SKIP 7700 TABLE
SB2 X1+B1
SA1 A1+B2
LX1 12
BX3 -X2*X1
SX6 X3-5100B
LX1 -12
SB7 B1+ SET INDEX TO ENTRY POINTS
ZR X6,ABS1 IF 5100 TABLE
SX6 X3-5300B
BX1 -X1
ZR X6,ABS1 IF 5300 TABLE
BX1 -X1
SX6 X3-5400B
SB7 8
NZ X6,CAT1 IF NOT 5400 TABLE
ABS1 SX0 X1 SET ENTRY COUNT
ZR X0,CAT1 IF NO ENTRIES
SA5 A1+B7 FIRST ENTRY POINT NAME
SA2 =1H CLEAR SCRATCH BUFFER
BX6 X2
MX7 0
SA6 SBUF
SA7 SBUF+3
SX2 BUF+BUFL CALCULATE MAXIMUM ENTRY POINT COUNT
SX3 A5
IX3 X2-X3
IX2 X0-X3
NG X2,ABS2 IF NO EXCESS ENTRY POINTS
BX0 X3 SET MAXIMUM ENTRY POINT COUNT
BX1 X2 ADD UNLISTED ENTRY POINT COUNT TO MESSAGE
RJ CDD
SA6 LRSD
ABS2 MX2 42 SPACE FILL NAME
BX1 X2*X5
RJ ZTB
LX6 -6
BX1 -X2*X5
SA6 SBUF+1
RJ COD CONVERT ENTRY POINT ADDRESS
LX6 18
SA6 SBUF+2
SX1 SBUF LIST ENTRY
RJ WOF
SA5 A5+B1 NEXT ENTRY
SX0 X0-1
NZ X0,ABS2 IF NOT END OF ENTRIES
SA1 LRSD
ZR X1,CAT1 IF NO EXCESS ENTRY POINTS
SX1 LRSD ISSUE EXCESS ENTRY POINT MESSAGE
RJ WOF
SX6 B0+
SA6 LRSD
EQ CAT1 RETURN
CAP SPACE 4,10
** CAP - PROCESS CAPSULE GROUP NAMES.
*
* ENTRY (BUF) = FIRST BLOCK OF RECORD.
*
* USES X - 0, 1, 2, 6.
* A - 1, 6.
* B - 2.
*
* CALLS WOF, ZTB.
CAP SA1 BUF CHECK FIRST WORD
LX1 18
MX2 -12
SX6 X1-770000B
NZ X6,CAT1 IF NO 7700 TABLE
LX1 6 SKIP 7700 TABLE
SB2 X1+2
MX0 42
SA1 A1+B2
BX1 X0*X1
RJ ZTB SPACE FILL NAME
LX6 -6
SA6 CAPA+1
SX1 CAPA LIST GROUP NAME
RJ WOF
EQ CAT1 RETURN
CAPA DIS 2,
DATA C* (GROUP NAME)*
OPL SPACE 4,10
** OPL - PROCESS OPL LIST.
*
* ENTRY (BUF) = FIRST BLOCK OF RECORD.
* (TF) = TERMINAL FLAG.
*
* USES X - ALL.
* A - 0, 1, 2, 3, 4, 6.
* B - 2, 6, 7.
*
* CALLS WOF, ZTB.
OPL SA1 BUF CHECK FIRST WORD
LX1 18
SB7 B0
SB2 X1-770000B
NZ B2,CAT1 RETURN IF NO 7700 TABLE
LX1 6 SKIP 7700 TABLE
SB2 X1+B1
SA1 A1+B2
SX5 X1
ZR X5,CAT1 RETURN IF NO MODIFIERS
SB6 BUFL
SB5 X5+20B
LE B5,B6,OPL1 IF BUFFER NOT FULL
SX5 BUFL-20B SET NUMBER OF MODIFIERS TO MAXIMUM
SX7 B1+ SET BUFFER FULL FLAG
SA7 OPLB
OPL1 SA3 TF CHECK FOR TERMINAL
NZ X3,OPL2 IF NOT TERMINAL FILE
SB7 -6 CHANGE LINE LENGTH FOR TERMINAL FILE
OPL2 SA2 =1H CLEAR SCRATCH BUFFER
SA0 A1+B1 FIRST MODIFIER
BX6 X2
SA6 SBUF
MX0 42
OPL3 SB6 -12
ZR X5,OPL7 IF END OF MODIFIERS
OPL4 ZR X5,OPL6 IF END OF TABLE
SA4 A0 SPACE FILL NAME
BX1 X0*X4
RJ ZTB
LX4 59-16 CHECK YANK BIT
SA0 A0+B1
PL X4,OPL5 IF NOT SET
SA1 OPLA ADD ()
IX6 X6+X1
OPL5 LX6 -6 STORE NAME
SA6 SBUF+13+B6
SB6 B6+B1
SX5 X5-1 ADVANCE TABLE
NE B6,B7,OPL4 IF NOT END OF LINE
MX6 0 LIST LINE
SA6 A6+B1
SX1 SBUF
RJ WOF
EQ OPL3 LOOP
OPL6 MX6 0 LIST PARTIAL LINE
SA6 A6+B1
SX1 SBUF
RJ WOF
OPL7 SA3 OPLB
ZR X3,OPL8 IF BUFFER NOT FULL
SX1 =C* *
RJ WOF
SX1 OPLC * ADDITIONAL MODIFIERS NOT LISTED *
RJ WOF
SX7 B0+ CLEAR BUFFER FULL FLAG
SA7 OPLB
OPL8 SA1 LC CHECK LINE COUNT
SA3 A1+B1
IX7 X1-X3
PL X7,CAT1 IF BOTTOM OF PAGE REACHED
SX1 =2L
RJ WOF
EQ CAT1 RETURN
OPLA VFD 60/3A) (-1H
OPLB CON 0 FULL BUFFER FLAG
OPLC DATA 5H
DATA C$*** ADDITIONAL MODIFIERS NOT LISTED ***$
RDA SPACE 4
** RDA - READ DATA.
* PROCESSES CALLS TO READ WORDS (RDW=).
* DEBLOCKS DATA IF CONTROL WORD READS.
* ENTRY/EXIT CONDITIONS ARE IDENTICAL WITH THOSE FOR COMCRDW.
RDA5 SX6 B5-B7 UPDATE WORDS REMAINING
SA6 A1
RDA6 RJ RDW= READ WORDS
RDA PS ENTRY/EXIT
SA1 CW CHECK IF CONTROL WORDS LEGAL
ZR X1,RDA6 IF CONTROL WORD READS NOT LEGAL
SA0 B6
RDA1 SA1 X2-2 GET NUMBER OF WORDS BEFORE CONTROL WORD
SB5 X1+
PL X1,RDA2 IF NOT FIRST READ
SX7 B7+ SET WORDS NEEDED
SA7 RDAA
JP RDA4
RDA2 GE B5,B7,RDA5 IF ENOUGH DATA TO FILL BUFFER
SA3 X2-1 CHECK EOR FLAG
PL X3,RDA3 IF NOT EOR ON FILE
MX6 1 SET NEW READ FLAG
SB7 B5+B1 SET WORDS TO READ
SA6 A3
SA6 A1
RJ RDW= READ WORDS
SA1 B6-B1 CHECK CONTROL WORD
AX1 48
SX6 X1-17B
MX1 -1
SB6 B6-B1 BACK UP LAST WORD ADDRESS
ZR X6,RDA IF *EOF* CONTROL WORD
SX1 B6 SET *EOR* INDICATION
JP RDA RETURN
RDA3 SX6 B7-B5 SAVE ADDITIONAL WORDS NEEDED
SA6 RDAA
SB7 B5+B1 SET WORDS TO TRANSFER
RJ RDW= READ WORDS
SB7 A0-B6
ZR B7,RDA IF EOR, RETURN
SB6 B6-1 BACK UP OVER LAST CONTROL WORD
RDA4 SB7 B1 READ CONTROL WORD
RJ RDW=
NG X1,RDA IF EOF/EOI
SB6 B6-B1 BACK UP WORKING BUFFER
SA1 B6 CONTROL WORD
SX7 5
SX4 X1+4 ROUND UP
AX1 36 EXTRACT BLOCK SIZE
SX3 X1
IX7 X4/X7 WORDS IN BLOCK
IX6 X7-X3 SAVE EOR FLAG
SA7 X2-2 STORE WORD COUNT
SA6 X2-1 EOR FLAG
SA1 RDAA RESET WORDS NEEDED
SB7 X1
JP RDA1 LOOP
RDAA CON 0
RDR SPACE 4
** RDR - READ RECORD.
*
* EXIT (X1) = -1 IF EOF.
* (RL) = RECORD LENGTH.
* (CS) = CHECK SUM.
* (TY) = RECORD TYPE.
* (NM) = RECORD NAME.
* (NSFF) .NE. 0, IF NONSTANDARD RECORD ENCOUNTERED
* (DATA WITH NO EOR).
*
* USES A - 1, 2, 3, 4, 6, 7.
* B - 2, 3, 4.
* X - 1, 2, 3, 4, 6, 7.
*
* CALLS SRT.
*
* MACROS MESSAGE, READW.
RDR PS ENTRY/EXIT
READW F,BUF,BUFL
BX6 X1 SAVE STATUS
SA6 RDRA
SB2 B6-BUF
SX1 B6 LWA+1 OF DATA FOR SRT CALL
NZ B2,RDR0 IF DATA TRANSFERRED
PL X6,RDR0 IF NOT EOF/EOI
SX1 BUF
RDR0 SX2 BUF
RJ SRT
SA6 TY SET TYPE
SA7 NM SET NAME
LX7 -6 ENTER NAME N MESSAGE
SX3 1R ENTER NAME IN MESSAGE
LX3 59-5
BX7 X3+X7
SA7 RDRB+1
MESSAGE A7-B1,1 ISSUE CONSOLE MESSAGE
SA1 RDRA
SB2 BUFL
SB3 BUF
ZR X1,RDR1 IF NOT EOR/EOF
SB2 B6-BUF
ZR B2,RDR RETURN IF ZERO LENGTH RECORD
PL X1,RDR1 IF NOT NONSTANDARD RECORD
SX6 B1+ SET NONSTANDARD FILE FLAG
SA6 NSFF
RDR1 SA2 TY EXCLUDE RECORD TYPES WITHOUT 7700 TABLE
SX2 X2
ERRNZ TXRT CODE ASSUMES VALUE
ZR X2,RDR2 IF RECORD TYPE *TEXT*
SA2 B3 CHECK FIRST WORD
LX2 18
SX6 X2-770000B
NZ X6,RDR2 IF NO 7700 TABLE
LX2 6 SKIP 7700 TABLE
SB4 X2+B1
SB3 B3+B4
SB2 B2-B4
LE B2,RDR IF 77 TABLE ONLY OR ERROR IN LENGTH
RDR2 SA2 RL ADVANCE RECORD LENGTH
SA3 CS ADVANCE CHECKSUM
SX7 B2
SA4 B3
BX6 X3
IX7 X2+X7
RDR3 BX6 X6-X4
SB2 B2-B1
SA4 A4+B1
LX6 1
NZ B2,RDR3
SA6 A3
SA7 A2
NZ X1,RDR RETURN IF EOR/EOF
READW F,SBUF,SBUFL
SB2 SBUFL
SB3 SBUF
ZR X1,RDR2 IF NOT EOR/EOF
SB2 B6-SBUF
PL X1,RDR4 IF NOT NONSTANDARD RECORD
SX6 B1+ SET NONSTANDARD FILE FLAG
SA6 NSFF
RDR4 NZ B2,RDR2 IF NOT EMPTY BUFFER
EQ RDR RETURN
RDRA DATA 0
RDRB DATA 10HCATALOGING
DATA 0
REL SPACE 4,10
** REL - PROCESS RELOCATABLE LIST.
*
* ENTRY (BUF) = FIRST BLOCK OF RECORD.
*
* USES X - 0, 1, 2, 5, 6, 7.
* A - 1, 2, 5, 6, 7.
* B - 2.
*
* CALLS CDD, WOF, ZTB.
REL SA1 BUF CHECK FIRST WORD
LX1 18
SB2 X1-770000B
NZ B2,CAT1 RETURN IF NO 7700 TABLE
LX1 6 SKIP 7700 TABLE
SB2 X1+B1
SA1 A1+B2
LX1 12
SB2 X1-7000B
NZ B2,REL1 IF NOT 7000 TABLE
LX1 12 SKIP 7000 TABLE
SB2 X1+B1
SA1 A1+B2
LX1 12
REL1 SB2 X1-3400B
NZ B2,CAT1 RETURN IF NO 3400 TABLE
LX1 12 SKIP 3400 TABLE
SB2 X1+B1
SA1 A1+B2
LX1 12
SB2 X1-3600B
NZ B2,CAT1 RETURN IF NO 3600 TABLE
LX1 12
SX0 X1-1
SA5 A1+B1 FIRST ENTRY POINT
SA2 =1H CLEAR SCRATCH BUFFER
BX6 X2
MX7 0
SA6 SBUF
SA7 SBUF+2
SX2 BUF+BUFL CALCULATE MAXIMUM ENTRY POINT COUNT
SX7 A5
IX7 X2-X7
IX2 X0-X7
NG X2,REL2 IF NO EXCESS ENTRY POINTS
SX0 X7-1 SET MAXIMUM ENTRY POINT COUNT
SX1 X2+1 ADD UNLISTED ENTRY POINT COUNT TO MESSAGE
LX1 -1
RJ CDD
SA6 LRSD
REL2 BX1 X5 SPACE FILL NAME
RJ ZTB
LX6 -6
SA6 SBUF+1
SX1 SBUF LIST ENTRY POINT
RJ WOF
SA5 A5+2 NEXT ENTRY POINT
SX0 X0-2
PL X0,REL2 LOOP FOR ALL ENTRY POINTS
SA1 LRSD
ZR X1,CAT1 IF NO EXCESS ENTRY POINTS
SX1 LRSD ISSUE EXCESS ENTRY POINT MESSAGE
RJ WOF
SX6 B0+
SA6 LRSD
EQ CAT1 RETURN
TXT SPACE 4
** TXT - PROCESS TEXT LIST.
TXT SA1 NM READ NAME
SA2 TXTB SET TABLE ADDRESS FOR *OVERLAY* ONLY
SA3 TXTD
ZR X3,TXT0 IF NOT LISTING *TEXT* RECORDS
SA2 TXTA SET TABLE ADDRESS FOR ALL TEXT RECORDS
TXT0 MX4 1
SB2 X2
MX0 42
BX6 X0*X2
TXT1 AX3 X4,B2 SET MASK
BX7 X1-X6
BX6 X3*X7
SA2 A2+B1
ZR X6,TXT2 IF MATCH ON NAME
ZR X2,CAT1 IF END OF TABLE
SB2 X2
BX6 X0*X2
EQ TXT1 LOOP
TXT2 SA0 BUF
SX6 A2-TXTB-1 SET *OVERLAY* FLAG
SA6 TXTC
SA1 =1H
BX6 X1
SB2 B0
SA6 SBUF
MX0 -12
SA6 A6+B1
SA5 RL
SX7 X5-BUFL
SA7 TXTE
MI X7,TXT3 IF LESS THAN FULL BUFFER OF TEXT
SX5 BUFL RESET LENGTH OF RECORD
TXT3 SX5 X5-1
NG X5,TXT4 IF END OF COPY
SA1 A0 MOVE WORD
LX6 X1
SA6 SBUF+2+B2
SA0 A0+B1
BX7 -X0*X1
SB2 B2+B1
NZ X7,TXT3 LOOP TO END OF LINE
SX1 SBUF LIST LINE
RJ WOF
SA2 TXTC
ZR X2,CAT1 IF *OVERLAY* RECORD
SB2 B0
EQ TXT3 LOOP
TXT4 SA1 TXTE
NG X1,TXT5 IF NOT FULL BUFFER
SX1 =C* *
RJ WOF
SX1 TXTF * ADDITIONAL TEXT NOT LISTED *
RJ WOF
TXT5 SX1 =C* *
RJ WOF
EQ CAT1 RETURN
**** TABLE OF SPECIAL *TEXT* RECORD NAMES.
*
* IF THE *T* OPTION IS SELECTED, THE ENTIRE TABLE WILL BE
* SEARCHED. OTHERWISE, ONLY *OVERLAY* WILL BE RECOGNIZED.
*
* ENTRY FORMAT -
*
*T 42/ SPECIAL RECORD NAME SKELETON, 18/ BITS-1 IN MASK
*
* TABLE IS TERMINATED BY A ZERO WORD.
TXTA BSS 0
* PATTERNS SEARCHED IF *T* OPTION ENABLED.
VFD 42/0LAPRD,18/24-1 *APRDECK* PATTERNS
VFD 42/0LAPR0,18/24-1
VFD 42/0LCMRD,18/24-1 *CMRDECK* PATTERN
VFD 42/0LEQPD,18/24-1 *EQPDECK* PATTERN
VFD 42/0LIPRD,18/24-1 *IPRDECK* PATTERN
VFD 42/0LLIBD,18/24-1 *LIBDECK* PATTERN
* UNCONDITIONALLY SEARCHED PATTERNS.
TXTB VFD 42/0LOVERLAY,18/42-1 *OVERLAY* PATTERN
CON 0 END OF TABLE
****
TXTC CON 0 *OVERLAY* RECORD FLAG
TXTD CON 0 LIST *TEXT* RECORDS FLAG
TXTE CON 0 BUFFER FULL FLAG
TXTF DATA 20H
DATA C$*** ADDITIONAL TEXT NOT LISTED ***$
ULB SPACE 4
** ULB - PROCESS USER LIBRARY.
ULB SA1 UL
SX6 B1+
SA6 ULBB SET *SEARCHING FOR OPLD* FLAG
NZ X1,CAT1 IF USER LIBRARY LIST REQUESTED
SA6 ULBA SET NO LIST
EQ CAT1 RETURN
ULBA CON 0 *USER LIBRARY FOUND AND NO ULIB LIST* FLAG
ULBB CON 0 *SEARCHING FOR OPLD* FLAG
TITLE SUBROUTINES.
WOF SPACE 4
** 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.
WOF PS ENTRY/EXIT
SA3 LC ADVANCE LINE COUNT
SX6 X3+B1
SA6 A3
SA2 A3+B1 GET LINE LIMIT
IX7 X6-X2
NG X7,WOF1 IF BOTTOM OF PAGE NOT REACHED
SX6 3 RESET LINE COUNT
BX7 X1 SAVE REQUEST
SA6 A3
SA1 PN ADVANCE PAGE NUMBER
SA7 WOFA
SX6 X1+B1
SA6 A1
RJ CDD CONVERT PAGE NUMBER
MX1 48
LX6 18 STORE PAGE NUMBER
BX6 X1*X6
SA6 PAGE
WRITEC O,TITL
WRITEC X2,SBTL
WRITEC X2,(=C* *)
SA1 WOFA RESTORE REQUEST
WOF1 WRITEC O,X1
SA1 SL CHECK LIST FLAG
ZR X1,WOF RETURN IF NOT SHORT LIST
MX6 0 CLEAR LINE COUNT
SA6 LC
EQ WOF RETURN
WOFA CON 0
SPACE 4
* COMMON DECKS.
*CALL COMCCDD
*CALL COMCCOD
*CALL COMCCPT
*CALL COMCSRT
*CALL COMCRDW
*CALL COMCWTC
*CALL COMCWTW
*CALL COMCCIO
*CALL COMCSYS
*CALL COMCZTB
BUFFERS SPACE 4
** BUFFERS.
USE //
SEG
BUFL EQU 10002B WORKING BUFFER
SBUFL EQU 100B SCRATCH BUFFER
BUF BSS BUFL
SBUF BSS SBUFL
FBUF BSS FBUFL
OBUF BSS OBUFL
RFL= BSS 0
PRS SPACE 4,10
** PRS - PRESET PROGRAM.
*
* USES X - ALL.
* A - 1, 2, 4, 5, 6, 7.
* B - 1, 4, 5, 7.
*
* CALLS ARG, CDT, DXB, STF, ZTB.
*
* MACROS ABORT, CLOCK, DATE, GETPP, MESSAGE, OPEN, SETLOF.
ORG BUF
PRS PS ENTRY/EXIT
SB1 1
DATE DATE
GETPP OBUF,LL,PD GET PAGE SIZE PARAMETERS
CLOCK TIME
SA1 ACTR CHECK ARGUMENT COUNT
SB4 X1
MX0 42
ZR B4,PRS2 IF NO ARGUMENTS
SA4 ARGR SET FILE NAME
BX6 X0*X4
ZR X6,PRS1 IF FILE NAME BLANK
SX2 3
IX6 X6+X2
SA6 F
PRS1 SB4 B4-B1
ZR B4,PRS2 IF END OF ARGUMENTS
SA4 A4+B1 PROCESS SPECIAL ARGUMENTS
SB5 PRSA
RJ ARG
NZ X1,PRS4 IF ARGUMENT ERROR
PRS2 SA5 FC CHECK FILE COUNT
ZR X5,PRS3 IF NO CONVERSION REQUIRED
SB7 B1
RJ DXB
SA6 FC
NZ X4,PRS4 IF CONVERSION ERROR
PRS3 SA1 F ENTER FILE NAME IN TITLE
MX0 42
BX1 X0*X1
RJ ZTB
LX6 -6
SA6 TITL+2
MX1 1 SET FLUSH BIT IN FET
SA2 O SET UP AUTO-FLUSH TABLE
LX1 36-59
SA4 A2+B1
SX3 O
BX7 X4+X1
SA7 A4
BX2 X0*X2
BX6 X2+X3
SA6 FLS+1
SETLOF PRSG
SA1 O CHECK FILE NAMES
SA2 F
BX6 X1-X2
BX7 X0*X6
ZR X7,PRS5 IF SAME NAME
SX2 O CHECK IF TERMINAL FILE
RJ STF
SA6 TF
NZ X6,PRS3.1 IF NOT TERMINAL FILE
SX6 B1 SET SHORT LIST FLAG
SA6 SL
SA2 =1H DELETE EJECT
BX7 X7-X7
BX6 X2
SA7 TITLA
SA7 SBTLA
SA7 PGEJ
SA6 TITL
PRS3.1 SX2 F ADDRESS OF FET
SA3 PRSH ADDRESS OF OD FET EXTENSION AND LENGTH
RJ SOE SET FET EXTENSION IF OPTICAL DISK FILE
OPEN X2,READNR,R CHECK IF CONTROL WORDS MAY BE USED
SA1 F+1
RJ CDT CHECK DEVICE TYPE
ZR X7,PRS IF CONTROL WORDS NOT ALLOWABLE
SX7 1 SET CONTROL WORDS LEGAL
SA7 CW SET CONTROL WORD FLAG
EQ PRS RETURN
PRS4 MESSAGE PRSB
ABORT
PRS5 MESSAGE PRSC
ABORT
*CALL COMCSOE
PRSA BSS 0
L ARG O,O OUTPUT FILE NAME
N ARG PRSD,FC NUMBER OF FILE TO CATALOG
T ARG -*,TXTD LIST *TEXT* RECORDS OPTION
U ARG -*,UL LIST *ULIB* OPTION
D ARG PRSF,SL DE-SELECT DETAILED LIST OPTION
R ARG -*,RW REWIND BEFORE AND AFTER
CS ARG -=0,CSM LIST CHARACTER SET FOR *OPL* AND *OPLC*
ARG
PRSB DATA C* CATALOG ARGUMENT ERROR.*
PRSC DATA C* CATALOG FILE NAME CONFLICT.*
PRSD CON 0L999999
PRSF CON 0L0
PRSG VFD 12/0,18/FLS,29/0,1/1 AUTO-FLUSH TABLE POINTER
PRSH VFD 36/,6/FETODL,18/FETOD POINTER TO EXTENSION BUFFER
CDT SPACE 4,15
** CDT - CHECK DEVICE TYPE.
*
* ENTRY (X1) = (FET+1).
*
* EXIT (X7)= 0 IF CONTROL WORD READ/WRITE NOT SUPPORTED ON
* DEVICE.
*
* USES B - NONE.
* A - 2.
* X - 0,1,2,6,7.
*
* CALLS NONE.
CDT2 LX1 12 CHECK *TT*
BX6 -X0*X1
SX7 X6-2RTT
CDT PS ENTRY/EXIT
MX0 -12
PL X1,CDT2 IF ALLOCATABLE
LX1 12
SA2 CDTA SEARCH DEVICE TABLE
SX7 0 ASSUME NO FIND
CDT1 ZR X2,CDT RETURN - IF NOT FOUND
BX6 X1-X2
AX2 12
BX6 X2*X6
SA2 A2+B1
NZ X6,CDT1 IF NOT MATCH
SX7 1 INDICATE CONTROL WORD POSSIBLE
JP CDT RETURN
CDTA VFD 36/,12/7703B,12/4002B
VFD 36/,12/7703B,12/4102B
VFD 36/,12/7777B,12/2RMT+4000B
VFD 36/,12/7777B,12/2RNT+4000B
VFD 36/,12/7777B,12/2RCT+4000B
VFD 36/,12/7777B,12/2RAT+4000B
CON 0
SPACE 4
* COMMON DECKS.
*CALL COMCARG
*CALL COMCCPM
*CALL COMCDXB
*CALL COMCLFM
*CALL COMCSTF
SPACE 4
END