cdc:nos2.source:opl871:vfylib
Table of Contents
VFYLIB
Table Of Contents
- [00011] VERIFY LIBRARY FILES.
- [00067] TABLE STRUCTURE.
- [00101] MACRO DEFINITIONS.
- [00102] CALL - SUBROUTINE CALL.
- [00131] TABLE - DEFINE MANAGED TABLE POINTERS.
- [00157] SEARCH - SEARCH FOR ENTRY IN MANAGED TABLE.
- [00180] READW - REDEFINE READ WORDS MACRO TO USE CONTROL WORDS.
- [00191] FETS AND TEMPORARY STORAGE.
- [00231] MAIN PROGRAM.
- [00232] VERIFY LIBRARY FILES.
- [00302] SUBROUTINES.
- [00303] ABT - ABORT JOB.
- [00322] ADD - ADD WORD(S) TO MANAGED TABLE.
- [00408] ARG - PROCESS ARGUMENTS ON CONTROL CARD.
- [00494] CCM - COPY COMMENT.
- [00537] CCS - CALCULATE CHECKSUM.
- [00570] CDP - CHECK FOR DELETED OR INSERTED PROGRAMS.
- [00607] CRC - CHECK RESIDENCE CHANGE.
- [00656] CRP - CHECK REPLACED PROGRAMS.
- [00726] C6S - CONVERT 6 DIGITS WITH LEADING ZERO SUPPRESSION.
- [00759] - LIST ONE LINE.
- [00784] OPN - OUTPUT PROGRAM NAME.
- [00883] RDF - READ FILES.
- [01119] RDA - READ DATA.
- [01184] CDT - CHECK DEVICE TYPE.
- [01222] IDT - ISSUE UNKNOWN DEVICE MESSAGE.
- [01264] WPH - WRITE PAGE HEADER.
- [01305] SMT - SEARCH MANAGED TABLE.
- [01377] PRS - PRESET VFYLIB.
Source Code
- VFYLIB.txt
- IDENT VFYLIB,FETS,VFYLIB
- ABS
- ENTRY VFYLIB
- ENTRY MFL=
- ENTRY SSM=
- SYSCOM B1
- VFYLIB TITLE VFYLIB - VERIFY LIBRARY FILES.
- *COMMENT VFYLIB - VERIFY LIBRARY FILES.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- VFYLIB SPACE 4,10
- *** VFYLIB - VERIFY LIBRARY FILES.
- * D. A. CAHLANDER. 69/02/16.
- * P. D. HAAS. 73/10/10.
- * A. D. FORET. 75/02/10.
- SPACE 4
- *** VFYLIB COMPARES TWO LIBRARY FILES. REPLACEMENTS, DELETIONS,
- * INSERTIONS, AND CHANGES IN RESIDENCE ARE RECORDED ON FILE
- * *OUTPUT*.
- SPACE 4
- *** COMMAND.
- *
- * VFYLIB(OLD,NEW,OUTPUT,NR)
- *
- * OLD = OLD LIBRARY FILE (*OLD* ASSUMED).
- * NEW = NEW LIBRARY FILE (*NEW* ASSUMED).
- * OUTPUT = OUTPUT FILE (*OUTPUT* ASSUMED).
- * NR, IF SPECIFIED, OLD AND NEW ARE NOT REWOUND.
- SPACE 4,20
- *** DAYFILE MESSAGES.
- *
- * * FWA/LWA ERROR IN VFYLIB. * - FWA OF PROGRAM TEXT
- * IS LESS THAN THE LWA + 1 OF PROGRAM TEXT.
- *
- * * UNKNOWN DEVICE TYPE -- LFN = XX. * - DISPLAYS UNKNOWN
- * DEVICE TYPE.
- *
- * * TABLE OVERFLOW. JOB ABORTED. * - INSUFFICIENT FIELD LENGTH.
- *
- * * VERIFY GOOD. * - THE TWO FILES VERIFIED GOOD.
- *
- * * VFYLIB COMPLETE. * - NORMAL TERMINATION MESSAGE. THE
- * DIFFERENCES BETWEEN *OLD* AND *NEW* FILES ARE LISTED
- * ON THE OUTPUT FILE SPECIFIED.
- *
- * * XXXXXX FIELD LENGTH REQUIRED. * - FIELD LENGTH REQUIRED.
- SPACE 4
- **** ASSEMBLY CONSTANTS.
- OLDL EQU 30061B *OLD* BUFFER LENGTH
- NEWL EQU 30061B *NEW* BUFFER LENGTH
- ENTL EQU 5 NUMBER OF WORDS/ENTRY IN *OPT* AND *NPT*
- OUTL EQU 2010B *OUTPUT* BUFFER LENGTH
- MINBL EQU 4000B MINIMUM BUFFER LENGTH
- MINC EQU 1000B MEMORY REQUEST INCREMENT
- ODEBL EQU 16 LENGTH OF OD FET EXTENSION
- ****
- * SPECIAL ENTRY POINT.
- SSM= EQU 0 SUPPRESS DUMPS OF FIELD LENGTH
- SPACE 4,10
- *CALL COMCMAC
- *CALL COMCCMD
- *CALL COMSSRT
- TITLE TABLE STRUCTURE.
- ** TABLE STRUCTURE.
- * ALL TABLES ARE VARIABLE LENGTH MANAGED TABLES. POINTERS
- * TO TABLE ABC ARE:
- * P.ABC = FWA OF TABLE ABC.
- * L.ABC = LENGTH OF TABLE ABC.
- * N.ABC = NUMBER OF WORDS/ENTRY.
- * D.ABC = NUMBER OF WORDS THE LENGTH OF TABLE IS
- * INCREASED IF TABLE IS FULL.
- *
- * OPT - OLD PROGRAM TABLE.
- *
- * 42/PROGRAM,12/LIB,6/TYPE
- * 12/CHECKSUM,18/0,30/INDEX
- * 60/ULIB
- * 60/DATE
- * 1. PROGRAM = PROGRAM NAME LEFT JUSTIFIED.
- * 2. LIB = LIBRARY NUMBER.
- * 3. TYPE = PROGRAM TYPE FROM *COMCSRT*.
- * 4. CHECKSUM = CHECKSUM OF PROGRAM TEXT.
- * 5. INDEX = INDEX TO COMMENT TABLE.
- * 6. ULIB = ULIB NAME.
- * 7. DATE = DATE FROM 7700 TABLE.
- *
- * NPT - NEW PROGRAM TABLE.
- *
- * FORMAT THE SAME AS OLD PROGRAM TABLE.
- *
- * CMT - COMMENT TABLE.
- *
- * 60/COMMENT TEXT
- * 60/COMMENT TEXT
- * ..
- * 48/COMMENT TEXT,12/0
- TITLE MACRO DEFINITIONS.
- ** CALL - SUBROUTINE CALL.
- *
- * THIS MACRO SETS UP A STANDARD CALLING SEQUENCE.
- *
- * CALL SUB,P1,P2,P3,P4,P5,P6
- *
- * ENTRY SUB = SUBROUTINE NAME.
- * PI = ADDRESS OF I-TH PARAMETER.
- * PARAMETER ADDRESSES ARE PASSED IN B-REGISTERS (AS IN FORTRAN)
- * WITH THE FIRST PARAMETER ADDRESS IN B2, SECOND IN B3, ETC.
- CALL MACRO SUB,P1,P2,P3,P4,P5,P6
- IFC NE,$P1$$,1
- R= B2,P1
- IFC NE,$P2$$,1
- R= B3,P2
- IFC NE,$P3$$,1
- R= B4,P3
- IFC NE,$P4$$,1
- R= B5,P4
- IFC NE,$P5$$,1
- R= B6,P5
- IFC NE,$P6$$,1
- R= B7,P6
- ENDIF
- RJ SUB
- ENDM
- SPACE 4
- ** TABLE - DEFINE MANAGED TABLE POINTERS.
- *
- * MANAGED TABLES HAVE 4 POINTERS ASSOCIATED WITH THEM:
- * (P.NAME) = FWA OF MANAGED TABLE.
- * (L.NAME) = LENGTH OF MANAGED TABLE.
- * (N.NAME) = NUMBER OF WORDS IN AN ENTRY.
- * (D.NAME) = NUMBER OF WORDS THE LENGTH OF TABLE IS
- * INCREASED IF TABLE IS FULL.
- *
- * TABLE NAME,WORD,DELTA
- *
- * ENTRY NAME = NAME OF TABLE.
- * WORD = NUMBER OF WORDS/ENTRY.
- * DELTA = SIZE OF TABLE INCREASE (NUMBER OF ENTRIES).
- TABLE MACRO NAME,WORD,DELTA
- LOCAL NW,DW
- NW SET WORD 1
- DW SET DELTA 4
- P.NAME VFD 42D/0L_NAME,18D/BUF
- L.NAME VFD 60D/0
- N.NAME VFD 60D/NW
- D.NAME VFD 60D/NW*DW
- ENDM
- SPACE 4
- ** SEARCH - SEARCH FOR ENTRY IN MANAGED TABLE.
- *
- * THIS MACRO SETS UP A CALL TO SEARCH FOR AN ENTRY
- * IN A MANAGED TABLE.
- *
- * SEARCH TABLE,ENTRY,MASK,INDEX,RETURN
- *
- * ENTRY TABLE = NAME OF MANAGED TABLE.
- * ENTRY = ADDRESS OF ENTRY.
- * MASK = ADDRESS OF SEARCH MASK.
- * INDEX = INDEX INTO TABLE.
- * RETURN = ADDRESS OF RETURN PARAMETER.
- SEARCH MACRO TABLE,ENTRY,MASK,INDEX,RETURN
- SB2 P.TABLE
- SB3 ENTRY
- SB4 MASK =77777777777777777777B
- SB5 INDEX B0
- SB6 RETURN SMTA
- RJ SMT
- ENDM
- 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
- TITLE FETS AND TEMPORARY STORAGE.
- FETS SPACE 4,10
- ** FETS.
- ORG 104B
- FETS BSS 0
- CON -0
- CON 0
- OLD FILEB OLDB,OLDL,(FET=10)
- ORG OLD+11B
- VFD 36/,6/ODEBL,18/OODEB POINTER TO *OD* EXT. BUFFER
- ORG OLD+10
- CON -0
- CON 0
- NEW FILEB NEWB,NEWL,(FET=10)
- ORG NEW+11B
- VFD 36/,6/ODEBL,18/NODEB POINTER TO *OD* EXT. BUFFER
- ORG NEW+10
- O BSS 0
- OUTPUT FILEC OUTB,OUTL,(FET=8)
- TEMP SPACE 4,10
- * OPTICAL DISK EXTENSION BUFFERS.
- OODEB BSSZ ODEBL *OLD*
- NODEB BSSZ ODEBL *NEW*
- ** TEMPORARY STORAGE.
- CREW CON 0 CLEAR REWIND FLAG
- LINE CON 99999,0 LINE NUMBER COUNT
- LL EQU LINE+1 LINE LIMIT - PAGE SIZE
- PD CON 0,0 PRINT DENSITY FORMAT CONTROL
- TF EQU PD+1 TERMINAL FILE FLAG
- PNUM CON 0 PAGE NUMBER
- CFL CON 0 CURRENT FIELD LENGTH
- MFL VFD 30/-0,30/0 MAXIMUM FIELD LENGTH
- TITLE MAIN PROGRAM.
- ** VFYLIB - VERIFY LIBRARY FILES.
- *
- * ENTRY (ACTR) - ARGUMENT COUNT.
- * 1. FILE *OLD* AND *NEW* ARE READ TO CREATE DICTIONARY.
- * 2. REPLACEMENTS AND COPIES ARE CHECKED.
- * 3. RESIDENCE CHANGES ARE FOUND.
- * 4. DELETIONS ARE FOUND.
- * 5. INSERTIONS ARE FOUND.
- *
- * USES A - 1, 2, 6.
- * B - 6.
- * X - 0, 1, 2, 3, 6.
- *
- * CALLS ARG, CDP, COD, CRC, CRP, PRS, RDF.
- *
- * MACROS CALL, ENDRUN, MESSAGE, REWIND, WRITER.
- VFYLIB BSS 0 ENTRY
- SB1 1 (B1) = 1
- RJ PRS PRESET PROGRAM
- RJ ARG PROCESS ARGUMENTS
- RJ RDF READ FILES
- SX6 VFYA
- SA6 OPND
- RJ CRP CHECK REPLACED PROGRAMS
- SX6 VFYB
- SA6 OPND
- RJ CRC CHECK RESIDENCE CHANGES
- SX6 VFYC
- SA6 OPND
- CALL CDP,(P.OPT) CHECK DELETED PROGRAMS
- SX6 VFYD
- SA6 OPND
- CALL CDP,(P.NPT) CHECK INSERTED PROGRAMS
- * END PROGRAM.
- SA1 P.BUF ISSUE F.L. MESSAGE
- MX0 -18
- BX1 -X0*X1
- RJ COD
- SA2 VFYE
- MX1 6*6 BUILD FL REQUIRED MESSAGE
- BX3 X1*X4
- BX6 -X1*X2
- BX6 X6+X3
- SA6 A2
- MESSAGE A6,3 FL REQUIRED
- SA1 PNUM CHECK FOR PAGE NUMBER
- SX0 =C* VERIFY GOOD.*
- ZR X1,VFY2 IF NO PAGE NUMBER DETECTED
- SX0 =C* VFYLIB COMPLETE.*
- WRITER OUTPUT
- VFY2 SA1 CREW
- NZ X1,VFY3 IF NO REWIND FLAG SET
- REWIND OLD
- REWIND NEW
- VFY3 MESSAGE X0+
- ENDRUN
- VFYA DATA C* RECORDS REPLACED.*
- VFYB DATA C* CHANGES IN RESIDENCE.*
- VFYC DATA C* DELETED RECORDS.*
- VFYD DATA C* INSERTED RECORDS.*
- VFYE DATA C*NNNNNN FIELD LENGTH REQUIRED.*
- TITLE SUBROUTINES.
- ** ABT - ABORT JOB.
- *
- * ENTRY (X1) = ADDRESS OF MESSAGE.
- *
- * USES A - 1, 2.
- * X - 1, 2, 6.
- *
- * MACROS ABORT, MESSAGE, WRITER.
- ABT SUBR ENTRY/EXIT
- MESSAGE X1 ISSUE ERROR MESSAGE
- SA1 OUTPUT+2 CLOSE OUT FILE *OUTPUT*
- SA2 A1+B1
- BX6 X1-X2
- ZR X6,ABT1 IF NO OUTPUT
- WRITER OUTPUT
- ABT1 ABORT
- SPACE 4
- ** ADD - ADD WORD(S) TO MANAGED TABLE.
- *
- * ENTRY (B2) = ADDRESS OF TABLE POINTER.
- * (B3) = FWA OF ENTRY.
- *
- * USES A - 1, 2, 3, 4, 5, 7.
- * B - 4, 5, 6, 7.
- * X - 1, 2, 3, 4, 5, 6, 7.
- *
- * CALLS ABT.
- *
- * MACROS MEMORY.
- ADD SUBR ENTRY/EXIT
- ADD1 SA1 B2 SET TABLE ADDRESS
- SA2 B2+B1
- SA3 A2+B1
- SA4 A3+B1
- SA5 A4+B1
- IX7 X2+X3
- IX7 X7-X5
- SB6 X1
- SX6 B6+X7
- PL X6,ADD3 IF NO ROOM FOR ENTRY
- SA1 B3 STORE ENTRY
- ADD2 BX7 X1
- SA7 B6+X2
- SX2 X2+B1
- SA1 A1+B1
- SX3 X3-1
- NZ X3,ADD2 LOOP FOR ENTIRE ENTRY
- BX7 X2
- SA7 A2
- EQ ADDX RETURN
- * NO ROOM FOR ENTRY. MOVE OTHER TABLES UP TO MAKE ROOM FOR
- * ENTRY.
- ADD3 SA1 P.BUF
- SA2 L.BUF
- IX6 X2-X4
- PL X6,ADD4 IF ENOUGH FL
- SA1 CFL INCREMENT CURRENT FIELD LENGTH
- SA3 MFL FIELD LENGTH LIMIT
- SX6 X1+MINC NEW FIELD LENGTH
- SX7 X2+MINC NEW LENGTH
- AX3 30
- SA6 A1
- SA7 A2+
- IX3 X3-X6
- NG X3,ADD8 IF INSUFFICIENT FIELD LENGTH
- BX1 X6
- MEMORY CM,,R,X1
- EQ ADD1 RESTART ALLOCATION
- ADD4 SB5 X1 (B5) = LWA OF MOVE
- SB6 X5 (B6) = FWA OF MOVE
- SA6 A2
- SB4 A1
- ADD5 SA1 B4 INCREMENT TABLE POINTERS
- SB4 B4-4
- IX7 X1+X4
- SA7 A1
- NE B4,B2,ADD5 LOOP
- SA2 B5
- EQ B5,B6,ADD1 JUMP IF NO DATA TO MOVE
- SB7 X4+
- ADD6 SA1 A2-B1 MOVE TABLES
- SA2 A1-B1
- SB5 B5-2
- BX6 X1
- LX7 X2
- SA6 A1+B7
- SA7 A2+B7
- NE B5,B6,ADD6
- SX7 B0 CLEAR NEW AREA
- SB7 B6+B7
- ADD7 SA7 B6
- SB6 B6+B1
- NE B6,B7,ADD7 IF NOT END OF CLEAR
- EQ ADD1 MAKE ENTRY
- ADD8 SX1 =C*TABLE OVERFLOW. JOB ABORTED.*
- RJ ABT ABORT
- SPACE 4
- ** ARG - PROCESS ARGUMENTS ON CONTROL CARD.
- *
- * USES A - 1, 2, 3, 4, 6.
- * B - 6, 7.
- * X - 0, 1, 2, 3, 4, 6.
- *
- * CALLS CDT, SFN, STF.
- *
- * MACROS CALL, OPEN, READCW, RECALL, REWIND, WRITEW.
- ARG SUBR ENTRY/EXIT
- SA1 ACTR SET ARGUMENT COUNT
- MX0 42
- SB7 X1
- SA1 ARGR
- SA2 ARGA SET LIST OF OPTIONS
- ARG1 ZR B7,ARG3 IF END OF ARGUMENTS
- BX6 X0*X1
- SA3 X2
- SB7 B7-B1
- BX3 -X0*X3
- ZR X6,ARG2 IF NO FILE NAME
- BX6 X6+X3
- SA6 X2
- ARG2 SA1 A1+B1 READ NEXT PARAMETER
- SA2 A2+B1
- NZ X2,ARG1 LOOP FOR NEXT PARAMETER
- * SET TERMINAL FLAG.
- ARG3 SX2 O
- RJ STF SET TERMINAL FILE
- SA6 TF
- WRITEW O,A6-B1,X6 CONDITIONALLY WRITE FORMAT EFFECTOR
- * STORE FET POINTERS STARTING AT RA+2.
- SA1 ARGA SET FET LIST
- SB6 ARGR
- ARG4 SA2 X1
- BX6 X0*X2
- BX6 X6+X1
- SA6 B6
- SB6 B6+B1
- SA1 A1+B1
- NZ X1,ARG4 LOOP FOR ALL FILES
- SX6 B0 TERMINATE LIST
- SA6 B6
- * SET FILE NAMES IN TITLE.
- SA2 OLD
- BX1 X0*X2
- RJ SFN SPACE FILL NAME
- SX1 1RN&1R
- SA2 NEW
- BX6 X6-X1
- SA6 WPHB+3
- BX1 X0*X2
- SA4 CREW
- RJ SFN
- SA6 WPHB+5
- NZ X4,ARG5 IF NO REWIND FLAG SET
- OPEN OLD,READ,R
- OPEN NEW,READ,R
- EQ ARG6 CONTINUE
- ARG5 OPEN OLD,READNR,R
- OPEN NEW,READNR,R
- ARG6 SA1 OLD+1 CHECK DEVICE TYPE
- RJ CDT
- ZR X7,IDT IF UNKNOWN DEVICE
- READCW OLD,17B
- SA1 NEW+1 CHECK DEVICE TYPE
- RJ CDT
- ZR X7,IDT IF UNKNOWN DEVICE
- READCW NEW,17B
- EQ ARGX RETURN
- ARGA CON OLD TABLE OF DEFAULT OPTIONS
- CON NEW
- CON OUTPUT
- CON CREW
- CON 0
- SPACE 4
- ** CCM - COPY COMMENT.
- *
- * ENTRY (B2) = ADDRESS OF FILE PARAMETER AREA.
- * (B4) = ADDRESS OF WORKING STORAGE.
- *
- * EXIT (B3) = FWA OF PROGRAM TEXT.
- *
- * USES A - 1, 4, 6.
- * B - 3, 6.
- * X - 1, 3, 4, 6, 7.
- *
- * CALLS CPT.
- CCM SUBR ENTRY/EXIT
- SA4 B2+.TL
- SA1 B2+B1 INSERT LIBRARY NUMBER
- LX4 6
- BX6 X1+X4
- SA6 A1
- MX3 .CL-.RL CLEAR FILE PARAMETER AREA
- BX6 X6-X6
- SB6 B2+ENTL+1
- SA6 A4-B1 CLEAR FILE PARAMETER AREA
- SX7 X1 SAVE RECORD TYPE
- CCM1 LX3 1
- SA6 A6-B1
- NG X3,CCM1 IF NOT END OF CLEAR
- SA1 B4
- SB3 B0
- SA4 A6 RESET (A6) FOR CPT
- LX6 X4
- SA6 A4
- ZR X7,CCM2 IF TYPE TEXT SKIP PREFIX TABLE COMMENTS
- RJ CPT
- ZR X6,CCM2 IF LAST WORD EMPTY
- SB6 B6-1
- CCM2 SX6 A6-B6 SET COMMENT LENGTH
- SB3 A1+B3
- NG X6,CCMX IF NO COMMENTS
- SA6 B2+.CL STORE COMMENT LENGTH
- EQ CCMX RETURN
- SPACE 4
- ** CCS - CALCULATE CHECKSUM.
- *
- * CHECKSUM PROGRAM TEXT FROM (B3) TO (B4).
- *
- * ENTRY (B2) = ADDRESS OF FILE PARAMETER AREA.
- * (B3) = FIRST WORD ADDRESS OF PROGRAM TEXT.
- * (B4) = LAST WORD ADDRESS + 1 OF PROGRAM TEXT.
- *
- * USES A - 1, 4, 6.
- * B - 3.
- * X - 1, 4, 6.
- *
- * CALLS ABT.
- CCS1 SA1 B3
- SB3 B3+B1
- BX4 X4-X1
- LX4 1
- NE B3,B4,CCS1 LOOP TO DETERMINE CHECKSUM
- BX6 X4
- SA6 A4
- CCS SUBR ENTRY/EXIT
- SA4 B2+.CS GET CURRENT CHECKSUM
- SA1 B2+.RL ADVANCE RECORD LENGTH
- SX6 B4-B3
- IX6 X1+X6
- SA6 A1+
- LT B3,B4,CCS1 IF FWA .LT. LWA+1
- SX1 =C* FWA/LWA ERROR IN VFYLIB.*
- RJ ABT ABORT
- SPACE 4
- ** CDP - CHECK FOR DELETED OR INSERTED PROGRAMS.
- *
- * ENTRY (B2) = ADDRESS OF PROGRAM NAME TABLE POINTER.
- *
- * USES A - 1, 2, 3, 6, 7.
- * B - 2, 6, 7.
- * X - 0, 1, 2, 3, 6, 7.
- *
- * CALLS OPN.
- *
- * MACROS CALL.
- CDP SUBR ENTRY/EXIT
- SX6 B2
- SX7 B0 SET TABLE INDEX
- SA6 CDPA
- SA7 CDPB
- CDP1 SA1 CDPA
- SA1 X1
- SA2 A1+B1
- SA3 CDPB
- SB6 X1
- SB7 B6+X2
- SB2 B6+X3
- EQ B2,B7,CDPX IF END OF PROGRAM NAME TABLE - RETURN
- SA1 B2
- SX6 X3+ENTL
- MX0 30
- SA6 A3
- ZR X1,CDP1 IF ENTRY IS BLANK
- CALL OPN,B2 OUTPUT PROGRAM NAME
- EQ CDP1 LOOP
- CDPA DATA 0 ADDRESS OF PROGRAM NAME TABLE POINTER
- CDPB DATA 0 TABLE INDEX
- SPACE 4
- ** CRC - CHECK RESIDENCE CHANGE.
- *
- * USES A - 1, 2, 3, 6, 7.
- * B - 6, 7.
- * X - 1, 2, 3, 6, 7.
- *
- * CALLS OPN.
- *
- * MACROS CALL, SEARCH.
- CRC SUBR ENTRY/EXIT
- SX7 B0 SET INDEX IN OPT
- SA7 CRCA
- CRC1 SA1 P.OPT CHECK RESIDENCE CHANGE
- SA2 L.OPT
- SA3 CRCA
- SB6 X1
- SB7 B6+X2
- SB6 B6+X3
- SA1 B6
- EQ B6,B7,CRCX IF END OF OPT - RETURN
- ZR X1,CRC3 IF ENTRY IS BLANK
- SEARCH NPT,B6
- SA6 CRCC
- SA1 P.OPT
- SA3 CRCA
- IX1 X1+X3
- NZ X6,CRC2 IF PROGRAM IN SAME LIBRARY
- SEARCH NPT,X1,CRCB
- ZR X6,CRC3 IF PROGRAM NOT FOUND
- SA6 CRCC
- CALL OPN,X6 OUTPUT PROGRAM NAME
- CRC2 SA1 P.OPT CLEAR ENTRIES
- SA2 CRCC
- SA3 CRCA
- IX1 X1+X3
- MX7 0
- SA7 X1
- SA7 X2
- CRC3 SA1 CRCA ADVANCE INDEX
- SX6 X1+ENTL
- SA6 A1
- EQ CRC1 LOOP
- CRCA DATA 0 INDEX INTO OLD PROGRAM TABLE
- CRCB DATA 77777777777777000077B
- CRCC CON 0 NPT ADDRESS
- SPACE 4
- ** CRP - CHECK REPLACED PROGRAMS.
- *
- * USES A - 1, 2, 3, 4, 6, 7.
- * B - 6, 7.
- * X - 0, 1, 2, 3, 4, 6, 7.
- *
- * CALLS OPN.
- *
- * MACROS CALL, SEARCH.
- CRP SUBR ENTRY/EXIT
- SX7 B0 SET INDEX IN OPT
- SA7 CRPA
- CRP1 SA1 P.OPT DO LOOP FOR CHECKING FOR REPLACED PROGRAMS
- SA2 L.OPT
- SA3 CRPA
- SB6 X1
- SB7 B6+X2
- SB6 B6+X3
- SA1 B6
- EQ B6,B7,CRPX IF END OF OPT - RETURN
- ZR X1,CRP4 IF ENTRY IS BLANK
- SEARCH NPT,B6
- SA1 P.OPT COMPARE CHECKSUMS
- SA3 CRPA
- IX1 X1+X3
- ZR X6,CRP2 IF PROGRAM IS NOT IN SAME LIBRARY
- MX0 30
- SA3 X1+B1
- SA4 X6+B1
- BX7 X3-X4
- BX7 X0*X7
- NZ X7,CRP3 IF CHECKSUM CHANGE
- SA3 A3+.RL-.CS
- SA4 A4+.RL-.CS
- IX7 X4-X3
- NZ X7,CRP3 IF LENGTH CHANGE
- SA7 A3+.PD-.RL CLEAR PROGRAM NAME AND TYPE
- SA7 A4+.PD-.RL
- EQ CRP4 PROCESS NEXT RECORD
- * RECORD NOT IN SAME LIBRARY.
- CRP2 SEARCH NPT,X1,CRPB
- ZR X6,CRP4 IF PROGRAM NOT FOUND
- MX0 30
- SA1 P.OPT COMPARE CHECKSUMS
- SA3 CRPA
- IX1 X1+X3
- SA3 X1+B1
- SA4 X6+B1
- BX7 X3-X4
- BX7 X0*X7
- NZ X7,CRP3 IF CHECKSUM CHANGE
- SA3 A3+.RL-.CS
- SA4 A4+.RL-.CS
- IX7 X4-X3
- ZR X7,CRP4 IF NO LENGTH CHANGE
- CRP3 CALL OPN,X6 OUTPUT PROGRAM NAME
- CRP4 SA1 CRPA ADVANCE INDEX
- SX6 X1+ENTL
- MX0 30
- SA6 A1
- EQ CRP1 LOOP
- CRPA DATA 0 INDEX INTO OLD PROGRAM TABLE
- CRPB DATA 77777777777777000077B
- CRPC DATA 0 RESIDENCE FLAG
- SPACE 4
- ** C6S - CONVERT 6 DIGITS WITH LEADING ZERO SUPPRESSION.
- *
- * ENTRY (B2) = ADDRESS OF RIGHT JUSTIFIED NUMBER.
- * (B3) = ADDRESS TO STORE RESULT.
- *
- * USES A - 1, 2, 3, 4, 6.
- * B - 2, 5, 6, 7.
- * X - 0, 1, 2, 3, 4, 5, 6.
- C6S SUBR ENTRY/EXIT
- SA2 =0.1000000001P48
- SA3 =10.0P0
- SA4 =1H
- SB6 6
- SB5 1R0-1R
- SA1 B2
- SB2 18
- PX1 X1
- BX6 X4
- C6S1 DX4 X1*X2
- FX1 X1*X2
- SB7 X1
- LX6 54
- SB2 B2+B6
- FX5 X4*X3 CALCULATE REMAINDER DIGIT
- SX0 X5+B5
- IX6 X0+X6
- NZ B7,C6S1 IF NOT ENTIRE NUMBER
- LX6 X6,B2 POSITION NUMBER
- SA6 B3
- EQ C6SX RETURN
- SPACE 4
- ** LOL - LIST ONE LINE.
- *
- * USES A - 1, 6.
- * X - 1, 2, 6.
- *
- * CALLS WPH.
- *
- * MACROS WRITEC.
- LOL SUBR ENTRY/EXIT
- SA1 LINE CHECK LINE NUMBER
- SX6 X1+B1
- SA6 A1
- SA1 A1+B1 GET LINE LIMIT
- IX6 X6-X1
- SX2 O
- NG X6,LOL1 IF NOT END OF PAGE
- RJ WPH
- SX6 X6+2 ADVANCE LINE COUNT
- SA6 LINE
- WRITEC X2,(=1L )
- LOL1 WRITEC X2,OUTPUTB
- EQ LOLX RETURN
- SPACE 4
- ** OPN - OUTPUT PROGRAM NAME.
- *
- * ENTRY (B2) = ADDRESS OF PROGRAM NAME TABLE ENTRY.
- *
- * USES A - 1, 2, 3, 4, 6, 7.
- * B - 6.
- * X - 0, 1, 2, 3, 4, 6, 7.
- *
- * CALLS C6S, LOL, SFN, WPH.
- *
- * MACROS CALL, WRITEC.
- OPN SUBR ENTRY/EXIT
- SX6 B2
- SA6 OPNA
- SA1 OPND
- ZR X1,OPN2 IF HEADER WRITTEN
- SA2 LINE CHECK LINE POSITION
- SX2 X2+4
- SA1 A2+B1 GET LINE LIMIT
- IX6 X2-X1
- NG X6,OPN1 IF NOT END OF PAGE
- RJ WPH
- OPN1 WRITEC O,(=1L )
- SA4 OPND GET HEADER MESSAGE ADDRESS
- SA3 LINE
- BX7 X7-X7
- SX6 X3+3 UPDATE LINE COUNT
- SA7 A4
- SA6 A3
- WRITEC X2,X4 WRITE HEADER MESSAGE
- WRITEC X2,(=1L )
- * LIST PROGRAM NAME.
- OPN2 SA1 OPNA OUTPUT PROGRAM NAME
- SA4 X1
- MX0 42
- BX1 X0*X4
- RJ SFN SPACE FILL NAME
- SA3 A3
- SA6 OUTPUTB+1
- MX0 -6
- LX7 X3
- BX2 -X0*X4
- SA1 OPNB+X2 OUTPUT PROGRAM TYPE
- SA7 A6-B1
- BX6 X1
- AX4 6
- SA6 A6+B1
- MX0 7*6 OUTPUT ULIB NAME
- SA1 OPNA
- SA5 X1+.UN-.PD
- BX1 X0*X5
- RJ SFN SPACE FILL ULIB NAME
- SA6 A6+B1
- MX0 -12
- BX7 -X0*X4 OUTPUT LIBRARY NUMBER
- SX7 X7+
- SA7 OPNC
- CALL C6S,A7,A6+B1
- SA1 OPNA OUTPUT DATE AND COMMENT
- SA1 X1+.CS-.PD X1 = COMMENT INDEX
- SA2 A1+.DT-.CS
- MX0 -30
- LX6 X2
- BX4 -X0*X1
- SA6 A6+B1
- SA2 P.CMT
- IX6 X2+X4
- AX4 18
- SB6 X4
- ZR X4,OPN4 IF NO COMMENTS
- SA1 X6
- OPN3 BX6 X1 MOVE COMMENTS
- SB6 B6-B1
- SA1 A1+B1
- SA6 A6+B1
- OPN4 NZ B6,OPN3 LOOP
- BX6 X6-X6
- SA6 A6+B1
- CALL LOL
- EQ OPNX RETURN
- OPNA DATA 0 ADDRESS OF ENTRY
- OPNB BSS 0
- .E ECHO ,RT=("RTMIC")
- .A IFC NE,/RT//
- DATA H/RT/
- .A ELSE
- DATA 0 UNDEFINED RECORD TYPE
- .A ENDIF
- .E ENDD
- OPNC DATA 0 GROUP NUMBER
- OPND CON 0 HEADER MESSAGE ADDRESS
- SPACE 4
- ** RDF - READ FILES.
- *
- * BOTH FILES ARE READ SIMULTAINIOUSLY. COMMON ROUTINES
- * ARE USED BETWEEN THE TWO READS. IN THESE ROUTINES
- * (RDFB) = POINTER TO DATA AREA.
- *
- * USES A - 1, 2, 3, 4, 5, 6, 7.
- * B - 2, 3, 4, 5, 6, 7.
- * X - ALL.
- *
- * CALLS ADD, CCM, CCS, SFN.
- *
- * MACROS CALL, MESSAGE, READW.
- RDF SUBR ENTRY/EXIT
- RDF1 EQ RDF3
- SA1 RDFA TOGGLE BETWEEN FILE *OLD* AND *NEW*
- SA2 A1+B1
- SA3 A2+B1
- SA4 RDF1
- AX3 30
- BX7 X4
- SB5 X3
- SA7 A3
- BX6 X1
- LX7 X2
- SA6 A2
- SA7 A1
- SA2 X7
- SA5 A1
- JP B5
- RDF2 SA1 X5+.TL ADVANCE LIBRARY NUMBER
- SX6 X1+B1
- SA6 A1
- RDF3 RJ RDF1 START READ
- READW X2,WSA,WSAL
- NG X1,RDF16 IF EOF
- SA5 RDFA SET EOR INDICATOR
- BX6 X1
- SA6 RDFC
- SB7 WSA
- EQ B6,B7,RDF2 IF ZERO LENGTH RECORD
- * CHECK PROGRAM TYPE AND MAKE ENTRY INTO THE PROGRAM NAME TABLE.
- SX1 B6 LWA+1 OF DATA READ
- SX2 B7 FWA OF BUFFER (WSA)
- RJ SRT SET RECORD TYPE
- SA6 X5+B1
- BX1 X7
- BX7 X7-X7 CLEAR CHECKSUM WORD
- SA7 A6+B1
- MX0 -6 CHECK RECORD TYPE
- BX4 -X0*X6
- SB4 X4
- SB2 ODRT TYPE = OPLD
- SA4 X5+.TU
- ZR X4,RDF5 IF ULIB .EQ. 0
- EQ B4,B2,RDF4 IF REC TYPE .EQ. OPLD
- BX7 X4 SET UP ULIB IN TABLE ENTRY
- SA7 A7+B1
- EQ RDF6 CONTINUE PROCESSING THE ENTRY
- RDF4 BX7 X7-X7 ZERO OUT ULIB
- SA7 A7+B1
- SA7 X5+.TU
- EQ RDF6 CONTINUE PROCESSING THE ENTRY
- RDF5 SB2 ULRT CHECK RECORD TYPE
- NE B4,B2,RDF6 IF REC TYPE .NE. ULIB
- MX0 7*6 SAVE ULIB
- BX7 X0*X6
- SA7 A7+B1 SET ULIB IN TABLE ENTRY
- SA7 X5+.TU
- RDF6 RJ SFN SPACE FILL NAME
- AX5 54
- SB5 X5
- SA6 RDFF+X5
- MESSAGE A6-B5,B1
- SA5 A5
- CALL CCM,X5,,WSA
- SA5 RDFA
- SA1 RDFC
- NZ X1,RDF7 IF EOR READ
- SX1 WSA+WSAL
- RDF7 CALL CCS,X5,B3,X1
- SA1 RDFC
- NZ X1,RDF11 IF EOR READ
- * READ REST OF RECORD.
- RDF8 RJ RDF1
- READW X2,WSA,WSAL
- BX6 X1 SET INDICATOR
- SA6 RDFC
- SX4 B6-WSA
- ZR X4,RDF11 IF NO DATA
- PL X1,RDF9 IF NO EOF
- SX1 B6+ SET LWA+1
- RDF9 NZ X1,RDF10 IF EOR OR EOF READ
- SX1 WSA+WSAL
- RDF10 CALL CCS,X5,WSA,X1
- SA1 RDFC
- ZR X1,RDF8 IF NOT EOR READ
- * ADD ENTRY TO PROGRAM NAME TABLE.
- RDF11 SA5 RDFA
- SB2 P.CMT
- SB3 X5+ENTL+1
- SA1 X5+.CL CHECK COMMENT LENGTH
- MX7 0
- BX6 X1
- ZR X1,RDF15 IF NO COMMENTS
- SA4 N.CMT
- SA2 B2+B1
- BX7 X6-X4 CHECK LENGTH OF PREVIOUS ENTRY
- SA6 A4
- NZ X7,RDF13
- SA3 B2
- SB4 B0
- IX1 X2-X4 (L.CMT) - (N.CMT)
- SB6 X4
- IX7 X3+X1
- RDF12 EQ B4,B6,RDF14 IF SAME COMMENTS
- SA3 B3+B4
- SA4 X7+B4
- BX1 X3-X4 COMPARE COMMENTS
- SB4 B4+B1
- ZR X1,RDF12 IF MATCH
- RDF13 LX6 2
- SA6 A6+B1
- CALL ADD,B2,B3
- RDF14 SA1 A2+B1 SAVE COMMENT TABLE INDEX
- IX7 X2-X1
- LX1 18 INSERT COMMENT LENGTH
- BX7 X1+X7
- RDF15 SB3 B3-ENTL
- SA5 B3+B1 FOLD CHECKSUM
- MX0 -12
- BX1 -X0*X5
- AX5 12
- BX6 -X0*X5
- IX1 X1+X6
- AX5 12
- BX6 -X0*X5
- IX1 X1+X6
- AX5 12
- BX6 -X0*X5
- IX1 X1+X6
- AX5 12
- BX6 -X0*X5
- IX1 X1+X6
- IX6 X1+X0
- BX6 -X0*X6
- LX6 48
- BX6 X6+X7 MERGE FOLDED CHECKSUM AND COMMENT LENGTH
- SA6 A5
- SA5 RDFA
- AX5 30
- CALL ADD,X5,B3
- EQ RDF3 LOOP TO EOF
- * WAIT FOR EOF ON BOTH FILES.
- RDF16 SA1 RDFB
- NZ X1,RDFX IF BOTH FILES FINISHED - RETURN
- SX6 B1 SET EOF FLAG
- SA6 A1
- SA5 RDFA
- AX5 54
- SA1 =H*END FILE.*
- BX6 X1
- SA6 RDFF+X5
- MESSAGE RDFF,1
- RDF17 RJ RDF1 WAIT FOR 2ND FILE TO COMPLETE
- EQ RDF17
- RDFA VFD 6/1,24/P.OPT,30/RDFD
- VFD 6/2,24/P.NPT,30/RDFE
- EQ RDF3
- RDFB DATA 0 EOF INDICATOR
- RDFC DATA 0 EOR INDICATOR
- * FILE PARAMETER AREA.
- RDFD BSS 0 OLD FILE PARAMETER LIST
- LOC 0
- .PN CON OLD OLD FILE FET FET ADDRESS
- .PD VFD 42/,12/,6/ 42/PROGRAM,12/LIB,6/TYPE
- .CS CON 0 30/CHECKSUM,30/COMMENT INDEX
- .UN CON 0 USER LIBRARY NAME
- .RL CON 0 RECORD LENGTH
- .DT CON 0 DATE
- ERRNZ *-ENTL-1 NPT/OPT TABLE LENGTH ERROR
- .CM BSSZ 13 COMMENT TEXT
- .CL CON 0 COMMENT LENGTH
- .TL CON 1 CURRENT LIBRARY NUMBER OF FILE
- .TU CON 0 SAVE AREA FOR CURRENT ULIB
- FPAL BSS 0 FILE PARAMETER LENGTH
- LOC *O
- RDFE BSS 0 NEW FILE PARAMETER LIST
- LOC 0
- .PN CON NEW NEW FILE FET ADDRESS
- .PD VFD 42/,12/,6/ 42/PROGRAM,12/LIB,6/TYPE
- .CS CON 0 30/CHECKSUM,30/COMMENT INDEX
- .UN CON 0 USER LIBRARY NAME
- .RL CON 0 RECORD LENGTH
- .DT CON 0 DATE
- ERRNZ *-ENTL-1 NPT/OPT TABLE LENGTH ERROR
- .CM BSSZ 13 COMMENT TEXT
- .CL CON 0 COMMENT LENGTH
- .TL CON 1 CURRENT LIBRARY NUMBER OF FILE
- .TU CON 0 SAVE AREA FOR CURRENT ULIB
- FPAL BSS 0 FILE PARAMETER LENGTH
- LOC *O
- * DISPLAY MESSAGE.
- RDFF DATA H*READING *
- DATA 10H
- DATA 10H
- DATA 0
- RDA SPACE 4
- ** RDA - READ DATA.
- *
- * PROCESSES CALLS TO READ WORDS (RDW=).
- * DEBLOCKS DATA IF CONTROL WORD READS.
- *
- * USES A - 1, 3, 6, 7.
- * B - 5, 6, 7.
- * X - 1, 3, 4, 6, 7.
- *
- * CALLS RDW=.
- RDA5 SX6 B5-B7 UPDATE WORDS REMAINING
- SA6 A1
- RJ RDW= READ WORDS
- RDA SUBR ENTRY/EXIT
- 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
- EQ RDAX RETURN
- RDA3 SX6 B7-B5 SAVE ADDITIONAL WORDS NEEDED
- SA6 RDAA
- SB7 B5+B1 SET WORDS TO TRANSFER
- RJ RDW= READ WORDS
- 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
- CDT SPACE 4
- ** CDT - CHECK DEVICE TYPE.
- *
- * ENTRY (X1) = (FET+1).
- *
- * EXIT (X7) = 0, IF CONTROL WORD READ/WRITE NOT SUPPORTED
- * ON DEVICE.
- *
- * USES A - 2.
- * X - 0, 1, 2, 6, 7.
- CDT2 LX1 12 CHECK *TT*
- BX6 -X0*X1
- SX7 X6-2RTT
- CDT SUBR ENTRY/EXIT
- MX0 -12
- PL X1,CDT2 IF ALLOCATABLE
- LX1 12
- SA2 CDTA SEARCH DEVICE TABLE
- SX7 0 ASSUME NO FIND
- CDT1 ZR X2,CDTX IF NOT FOUND - RETURN
- BX6 X1-X2
- AX2 12
- BX6 X2*X6
- SA2 A2+B1
- NZ X6,CDT1 IF NOT MATCH
- SX7 1 INDICATE CONTROL WORD POSSIBLE
- EQ CDTX 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
- IDT SPACE 4
- ** IDT - ISSUE UNKNOWN DEVICE MESSAGE.
- *
- * ENTRY (A1) = FET ADDRESS + 1.
- * (X7) = 0.
- *
- * EXIT TO ABT.
- *
- * USES A - 1, 7.
- * B - 4.
- * X - 0, 1, 2, 3, 4, 6, 7.
- *
- * CALLS MSG=.
- IDT MX0 42
- SA1 A1-B1 READ FILE NAME
- MX3 26+10
- BX6 X0*X1
- MX2 6
- LX3 59 POSITION LEGAL CHARACTER MASK
- BX1 X1-X1
- MX0 -6
- IDT1 LX7 6
- BX7 X7+X1 ASSEMBLE FILE NAME
- LX6 6
- BX1 -X0*X6
- SB4 X1 FIND END OF FILE NAME
- LX4 B4,X3
- NG X4,IDT1 IF NOT END OF NAME
- LX7 6
- SX1 1R. ADD *.* TO FILE NAME
- BX7 X7+X1
- + LX7 6 LEFT JUSTIFY ASSEMBLY
- BX6 X2*X7
- ZR X6,* IF NOT LEFT JUSTIFIED
- SA7 IDTB
- MESSAGE IDTA
- CALL ABT
- IDTA DATA 30H UNKNOWN DEVICE TYPE -- LFN =
- IDTB CON 0
- WPH SPACE 4
- ** WPH - WRITE PAGE HEADER.
- *
- * EXIT PAGE HEADER WRITTEN.
- *
- * USES A - 1, 2, 6, 7.
- * X - 0, 1, 2, 6, 7.
- *
- * CALLS C6S, WTW=.
- WPH SUBR ENTRY/EXIT
- SA2 PNUM
- SX6 X2+B1 ADVANCE PAGE NUMBER
- SA6 A2
- CALL C6S,A2,WPHA
- LX6 36
- MX0 -24
- SA1 WPHA+1
- BX6 -X0*X6 INSERT PAGE NUMBER
- IX7 X1+X6
- SA7 CRPG
- WRITEW O,WPHB,WPHD
- SX6 3 SET LINE COUNT
- SA6 LINE
- EQ WPHX RETURN
- WPHA BSS 1 CONVERTED PAGE NUMBER
- CON 6LPAGE
- WPHB DATA H*1 VFYLIB. OLD FILE = XXXXXXX N*
- DATA H*EW FILE = XXXXXXX *
- CRDT CON 0 CURRENT DATE
- CRTM CON 0 CURRENT TIME
- DATA 10H
- CRPG CON 0 CURRENT PAGE
- CON 0
- WPHC DATA H*0 RECORD TYPE ULIB LIB*
- DATA C* DATE COMMENT*
- WPHD EQU *-WPHB
- SPACE 4
- ** SMT - SEARCH MANAGED TABLE.
- *
- * ENTRY (B2) = ADDRESS OF TABLE POINTER.
- * (B3) = ADDRESS OF ENTRY.
- * (B4) = ADDRESS OF MASK.
- * (B5) = INDEX INTO TABLE.
- *
- * EXIT (B6) = ADDRESS OF ADDRESS OF ENTRY IF FOUND.
- * (B6) = ADDRESS OF 0 IF NOT FOUND.
- * (X6) = ADDRESS OF ENTRY, IF FOUND.
- * = 0, IF NOT FOUND.
- *
- * USES A - 1, 2, 3, 4, 5, 6.
- * B - 2, 3, 4, 7.
- * X - ALL.
- SMT SUBR ENTRY/EXIT
- SA1 B2 SET TABLE POINTER
- SA2 A1+B1 SET TABLE LENGTH
- SA3 A2+B1 SET NUMBER OF WORDS/ENTRY
- SA4 B3 (X4) = ENTRY
- SB2 X1 (B2) = FWA TABLE
- SB7 X2+B2 (B7) = LWA TABLE
- SB3 X3 (B3) = WORDS/ENTRY
- SA5 B4 (X5) = MASK
- MX0 7*6
- SMT1 EQ B2,B7,SMT2 IF END OF TABLE
- SA1 B2+B5
- BX6 X4-X1
- BX6 X5*X6
- SB2 B2+B3
- NZ X6,SMT1 IF NOT FOUND
- SA2 A4+2 CHECK ULIB
- SB4 B2-B3
- SA3 B4+2
- BX7 X2-X3
- BX7 X0*X7
- NZ X7,SMT1 IF DIFFERENT ULIB
- SX6 B4
- SA6 B6
- EQ SMTX RETURN
- SMT2 SX6 B0 SET NOT FOUND
- SA6 B6
- EQ SMTX RETURN
- SMTA CON 0
- SPACE 4
- ** TABLE POINTERS.
- TABLE TABLE OPT,ENTL
- TABLE NPT,ENTL
- TABLE CMT,7
- TABLE BUF UNUSED STORAGE TABLE
- COMMON TITLE COMMON DECKS AND STORAGE ALLOCATION.
- SPACE 4
- ** COMMON DECKS.
- *CALL COMCCIO
- *CALL COMCCOD
- *CALL COMCCPT
- *CALL COMCRDW
- *CALL COMCSFN
- *CALL COMCSRT
- *CALL COMCSYS
- *CALL COMCWTC
- *CALL COMCWTW
- PRESET TITLE VFYLIB PRESET.
- PRS SPACE 4,20
- ** PRS - PRESET VFYLIB.
- *
- * ENTRY (A0) - FL.
- *
- * EXIT (LL) = LINE LIMIT.
- * (PD) = PRINT DENSITY.
- * (CFL) = CURRENT FIELD LENGTH.
- * (MFL) = MAXIMUM FIELD LENGTH.
- * (CRDT) - CURRENT DATE.
- * (CRTM) - CURRENT TIME.
- *
- * USES A - 6, 7.
- * B - 6, 7.
- * X - 6, 7.
- *
- * MACROS CLOCK, DATE, GETPP, MEMORY.
- USE // FORCE LITERALS
- PRS SUBR ENTRY/EXIT
- MEMORY CM,MFL,R MAXIMUM FIELD LENGTH
- DATE CRDT SET DATE
- CLOCK CRTM SET TIME
- GETPP BUF,LL,PD GET PAGE SIZE PARAMETERS
- SX7 A0-BUF SET LENGTH OF TABLES
- SX6 A0 CURRENT FIELD LENGTH
- SA7 L.BUF
- SA6 CFL
- EQ PRSX RETURN
- SPACE 4,10
- * COMMON DECKS.
- *CALL COMCCPM
- *CALL COMCSTF
- ERRPL *-OUTB OVERFLOW INTO OUTPUT BUFFER
- BUFFERS SPACE 4,10
- ** BUFFER ALLOCATION.
- OUTPUTB EQU PRS OUTPUT WORKING BUFFER
- OUTPUTL EQU 14
- WSA EQU OUTPUTB+OUTPUTL WORKING BUFFER
- WSAL EQU 1000B LENGTH OF WORKING STORAGE
- OUTB EQU WSA+WSAL OUTPUT BUFFER
- OLDB EQU OUTB+OUTL OLD BUFFER
- NEWB EQU OLDB+OLDL NEW BUFFER
- BUF EQU NEWB+NEWL START OF MANAGED TABLES
- MFL= EQU BUF+MINBL+200000B
- END SPACE 4,10
- END
cdc/nos2.source/opl871/vfylib.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator