cdc:nos2.source:opl871:packer
Table of Contents
PACKER
Table Of Contents
- [00013] PACKER - INDIRECT ACCESS PERMANENT FILE HOLE PACKER.
- [00014] INDIRECT ACCESS PERMANENT FILE HOLE PACKER.
- [00590] COMMON DECKS.
- [00605] MACRO DEFINITIONS.
- [00607] ABSREAD - READ ABSOLUTE CENTRAL MEMORY.
- [00736] RJT - DEFINE ROUTINES TO BE TRACED VIA RJ TRACE.
- [00748] SCIOF - SET *CIO* FUNCTION IN FET.
- [00789] DATA AND CONSTANTS.
- [00959] MANAGED TABLES.
- [00961] TRJH - RETURN JUMP HISTORY (DEBUG USE).
- [00979] TCAT - TABLE OF CATALOG TRACKS.
- [00991] TTRT - IMAGE OF DEVICE TRT
- [01001] TTLT - TRACK LINK TABLE.
- [01014] TAPE - TABLE OF AVAILABLE PFC ENTRIES.
- [01030] TFRI - TABLE OF FILE RANDOM INDEXES.
- [01046] TFHL - TABLE OF FILE AND HOLE LENGTHS FROM THE PFC.
- [01059] *K* DISPLAY.
- [01124] MAIN PROGRAM.
- [01234] ERROR TERMINATION PROCESSORS.
- [01242] RPV - PROCESS REPRIEVE.
- [01309] ERR - PROCESS ERROR.
- [01349] TEMS - TABLE OF ERROR MESSAGES.
- [01439] RJ TRACE PROCESSORS.
- [01447] RJT - RETURN JUMP TRACE.
- [01874] SUBROUTINES.
- [01876] AFM - ATTEMPT FILL MOVE.
- [02004] ASM - ATTEMPT SLIDE MOVE.
- [02115] ATD - ATTEMPT PRE-MOVE TRACK DELINK.
- [02181] CDF - COPY DATA FOR FILE.
- [02308] CEO - CHECK ENTRY OVERLAP.
- [02404] CFL - CHECK FILE LENGTH.
- [02479] CIP - CLEAR IRRELEVANT PFC INFORMATION.
- [02511] CIT - CLEAR INTERLOCKS.
- [02536] CRA - CONVERT RANDOM ADDRESS.
- [02582] CTC - CHECK TERMINATION CONDITIONS.
- [02620] CTE - CREATE AND INSERT TABLE ENTRY.
- [02720] DLK - DELINK TRACKS IN MIDDLE OF TRACK CHAIN.
- [02828] DRP - DROP TRACKS AT END OF TRACK CHAIN.
- [02894] DTE - DELETE TABLE ENTRY.
- [02970] FLT - FIND LAST TRACK OF HOLE.
- [03038] FPI - FORMAT PFC INFORMATION.
- [03101] FRM - FORMAT HOLES RELEASED STATISTICAL MESSAGE.
- [03146] FSM - FORMAT STATISTICAL MESSAGE.
- [03180] IOM - ISSUE OVERLAP MESSAGE.
- [03225] IRS - ISSUE RESOURCE SUMMARY MESSAGES TO DAYFILE.
- [03276] ISD - ISSUE STATISTICS TO DAYFILE.
- [03341] ISM - ISSUE STATISTICAL MESSAGE.
- [03358] MSG - ISSUE MESSAGE.
- [03409] PCH - PURGE CONTIGUOUS HOLES.
- [03471] RCE - READ CATALOG ENTRY.
- [03553] RJA - RETURN JUMP TRACE ACTIVATION/DEACTIVATION.
- [03609] RLS - RECLAIM LOST SPACE.
- [03726] RSS - REMOVE *SSST* STATUS FROM DUMP FILES.
- [03764] TOV - TABLE OVERFLOW PROCESSOR.
- [03833] UFE - UPDATE FILE ENTRY.
- [03898] UFF - UPDATE AFTER FILL FILE MOVE.
- [04022] UHE - UPDATE HOLE ENTRY.
- [04130] UKD - UPDATE *K* DISPLAY.
- [04231] USS - UPDATE SYSTEM SECTOR.
- [04266] VHS - VERIFY THAT HOLE SIZE IS ADEQUATE FOR DELINK.
- [04307] WCE - WRITE CATALOG ENTRY.
- [04340] ZWT - ZERO WORD TERMINATE *TFRI* TABLE.
- [04390] PRESET.
- [04392] PRS - PRESET.
- [04438] PRESET SUBROUTINES.
- [04440] CST - CONVERT AND SORT TABLES.
- [04534] CTT - CONVERT TRACK TABLE.
- [04607] FDN - FIND DEVICE NUMBER.
- [04717] ICF - INITIALIZE CATALOG FILE.
- [04824] KDP - *K* DISPLAY PRESET.
- [04911] PAG - PROCESS COMMAND ARGUMENTS.
- [05017] SCT - SCAN CATALOG TRACKS.
- [05201] SRA - SET RANDOM ADDRESS.
- [05254] SST - SHELL SORT TABLE.
Source Code
- PACKER.txt
- IDENT PACKER,DATA
- ABS
- ENTRY PACKER
- ENTRY RFL=
- ENTRY SSJ=
- SST
- SYSCOM B1
- ORG 110B
- SPACE 4,10
- *COMMENT PACKER - IAPF HOLE PACKER.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- SPACE 4,10
- TITLE PACKER - INDIRECT ACCESS PERMANENT FILE HOLE PACKER.
- *** PACKER - INDIRECT ACCESS PERMANENT FILE HOLE PACKER.
- *
- * C. A. LACEY. 75/12/18.
- * D. F. LINTON. 75/12/18.
- * R. R. VEACH. 78/01/08.
- * W. J. STURGIS. 78/03/07.
- * D. G. BEAUSANG. 80/08/24.
- * A. J. NATHANSON. 83/10/25.
- * K. R. DELAY. 84/03/26.
- * B. G. ALBRECHT. 85/03/22.
- * D. G. BEAUSANG. 87/01/06.
- * P. C. SMITH. 87/12/01.
- SPACE 4,15
- *** *PACKER* PERFORMS PERIODIC MAINTENANCE ON THE INDIRECT
- * ACCESS PERMANENT FILE (IAPF) CHAIN. THE PROCESS OF IAPF
- * HOLE FRAGMENTATION, OCCURRING DURING NORMAL IAPF ACTIVITY,
- * IS COUNTERED BY THE PERIODIC EXECUTION OF *PACKER*. ADJACENT
- * HOLES ARE COLLAPSED TOGETHER, FILES ARE MOVED TO MAXIMIZE
- * THE SIZE OF HOLES, AND LOST SPACE IS RECLAIMED IF POSSIBLE.
- * THE SPACE OCCUPIED BY THE ENLARGED HOLES IS RETURNED TO THE
- * OPERATING SYSTEM IF POSSIBLE. THE HOLES WHICH MAY REMAIN AT
- * THE END OF *PACKER* EXECUTION ARE LARGER AND MORE USEFUL TO
- * IAPF OPERATIONS.
- *
- * THE OPERATION OF *PACKER* NEVER LEAVES A DISK VULNERABLE.
- * *PACKER* DUPLICATES ANY FILE IT MOVES, AND CHANGES THE FILE
- * ADDRESS IN THE PFC WITH A SINGLE SECTOR REWRITE. IF A
- * MACHINE OR ENVIRONMENT FAILURE OCCURS, ALL IAPF FILES ARE
- * INTACT.
- SPACE 4,10
- *** *PACKER* MAY BE RUN IN AN ACTIVE SYSTEM ENVIRONMENT.
- * USER ACCESS TO THE DEVICE IS PREVENTED WHILE *PACKER* IS
- * RUNNING BY SETTING THE PF UTILITY ACTIVE INTERLOCK IN THE
- * MASS STORAGE TABLE. SINCE *PACKER* CAN BE RUN IN AN ACTIVE
- * SYSTEM, IT CAN BE USEFUL FOR DEALING WITH EMERGENCY
- * SITUATIONS WHERE A DEVICE IS GETTING FULL DURING
- * PRODUCTION. CONTIGUOUS HOLES CAN BE COMBINED QUICKLY BY
- * ENTERING
- *
- * PACKER(FM=NNNNNNN,DN=XX,NM)
- *
- * IF ANY HOLES MADE BY COALESCING CONTIGUOUS HOLES ARE LARGE
- * ENOUGH, TRACKS WILL BE MADE AVAILABLE THROUGH DELINKING.
- * THE REMAINING HOLES SHOULD BE MORE USEFUL DUE TO THEIR
- * INCREASED SIZE.
- *
- * FOR NORMAL PERIODIC MAINTENANCE, *PACKER* CAN BE RUN AT
- * A TIME WHEN THE PRODUCTION LOAD IS LIGHT AND/OR PRIMARILY
- * NOT INTERACTIVE. FOR EXAMPLE, A SITE MAY CHOOSE TO RUN
- * *PACKER* VIA THE FOLLOWING COMMAND AT 0230 LOCAL TIME EVERY
- * MORNING.
- *
- * PACKER(FM=NNNNNNN,DN=XX)
- *
- * IF A SITE DETERMINES THAT THIS IS TOO MUCH OF AN IMPACT ON
- * PRODUCTION, THEY MAY DECIDE TO RUN *PACKER* WITH THE ABOVE
- * COMMAND ONLY ON SUNDAY MORNINGS AND THE REST OF THE WEEK
- * THEY MAY NOT RUN *PACKER* AT ALL OR THEY MAY ONLY COMBINE
- * HOLES VIA THE FOLLOWING COMMAND.
- *
- * PACKER(FM=NNNNNNN,DN=XX,NM)
- *
- * HOW FREQUENTLY *PACKER* NEEDS TO BE RUN IS SITE
- * DEPENDENT. SITES WHICH ARE EXTREMELY LIMITED ON DISK SPACE
- * MAY NEED TO RUN *PACKER* MUCH MORE OFTEN THAN SITES WHICH
- * RUN *PACKER* ONLY TO PROVIDE DYNAMIC SPACE MANAGEMENT OF
- * THE IAPF CHAIN. THE DYNAMIC SPACE MANAGEMENT OF THE IAPF
- * CHAIN WHICH *PACKER* PROVIDES FREES A SITE FROM SPACE
- * MANAGEMENT VIA *PFDUMP* AND *PFLOAD*.
- *
- * A SINGLE CALL TO *PACKER* ONLY ACCESSES A SINGLE
- * DEVICE, BUT MULTIPLE COPIES OF *PACKER* MAY BE ACTIVE AT
- * THE SAME TIME IF EACH IS OPERATING ON A DIFFERENT DEVICE.
- *
- * TURNING ON SENSE SWITCH 1 WILL STOP *PACKER* IN A
- * CONTROLLED MANNER. AN OPERATOR DROP OR IDLE DOWN REQUEST
- * WILL ALSO TERMINATE *PACKER* IN A CONTROLLED MANNER. A
- * SECOND OPERATOR DROP OR IDLE DOWN REQUEST WILL TERMINATE
- * *PACKER* IMMEDIATELY.
- SPACE 4,10
- *** COMMAND FORMAT.
- SPACE 4,10
- *** PACKER (P1=F1,P2=F2,...,PN=FN)
- *
- * WHERE P1, P2, ... PN CAN BE THE FOLLOWING -
- *
- * DN = DEVICE NUMBER OF THE DEVICE TO BE PACKED. REQUIRED
- * UNLESS THE DEVICE IS AN AUXILIARY PACK.
- *
- * FM = FAMILY NAME OF THE DEVICE TO BE PACKED. REQUIRED
- * UNLESS THE DEVICE IS AN AUXILIARY PACK.
- * DEFAULT - SYSTEM DEFAULT FAMILY NAME.
- *
- * NM = NO MOVES. IF SPECIFIED, *PACKER* WILL NOT MOVE ANY
- * FILES. THE WORK PERFORMED IS LIMITED TO THE
- * COALESCING OF CONTIGUOUS HOLES AND THE RECLAMATION
- * OF LOST SPACE.
- * THIS PARAMETER MAY NOT BE EQUIVALENCED.
- *
- * PN = PACKNAME OF THE AUXILIARY PACK TO BE PACKED.
- * REQUIRED IF THE DEVICE TO BE PACKED IS AN AUXILIARY
- * PACK.
- *
- * TL = TIME LIMIT. THE MAXIMUM REAL TIME TO RUN IN
- * SECONDS. THE VALUE IS ASSUMED TO BE OCTAL. AN 8, 9
- * OR POST RADIX OF D WILL FORCE DECIMAL. A POST RADIX
- * OF B WILL FORCE OCTAL.
- * DEFAULT - NO LIMIT.
- * ALTERNATE DEFAULT - 300D.
- *
- * THE FOLLOWING COMMAND PARAMETERS ARE ESOTERIC AND NEED NOT BE
- * CONSIDERED FOR NORMAL OPERATION.
- *
- * EF = EXACT FIT. IF SPECIFIED, AN EXACT FIT IS REQUIRED
- * FOR FILL MOVES. USE OF THIS PARAMETER MAY INCREASE
- * THE NUMBER OF FILES MOVED VIA THE SLIDE TECHNIQUE
- * WHICH CAN RESULT IN MORE SPACE BEING RELEASED TO THE
- * OPERATING SYSTEM AT THE EXPENSE OF MOVING AN
- * INCREASED NUMBER OF FILES.
- * THIS PARAMETER MAY NOT BE EQUIVALENCED.
- *
- * IX = INDEX. THE STARTING INDEX INTO THE SORTED PFC
- * TABLE. THIS PARAMETER CAN BE USED TO SKIP THE
- * SPECIFIED NUMBER OF PFC ENTRIES BEFORE BEGINNING
- * OPERATION. IN SOME SITUATIONS THIS PROVIDES A
- * USEFUL METHOD OF SHORTENING THE EXECUTION TIME OF
- * *PACKER*. THE USE OF THIS PARAMETER IMPACTS THE END
- * OF RUN STATISTICS AS THEY DO NOT REFLECT THE PORTION
- * SKIPPED. THE VALUE IS ASSUMED TO BE OCTAL. AN 8, 9
- * OR POST RADIX OF D WILL FORCE DECIMAL. A POST RADIX
- * OF B WILL FORCE OCTAL.
- * DEFAULT - 0.
- *
- * MR = MOVE RATIO. THIS IS THE MAXIMUM RATIO ALLOWED OF
- * TOTAL DATA TO MOVE TO HOLE SIZE FOR A SLIDE MOVE.
- * BEFORE MOVING A FILE WITH THE SLIDE TECHNIQUE, THE
- * TOTAL AMOUNT OF DATA TO BE MOVED (THE SUM OF ALL THE
- * FILE LENGTHS UP TO THE NEXT HOLE IN THE IAPF CHAIN)
- * AND THE HOLE SIZE (THE HOLE THE FILE IS TO BE SLID
- * ACROSS) ARE COMPARED (THE TOTAL DATA IS DIVIDED BY
- * THE HOLE SIZE). IF THIS RATIO IS GREATER THAN OR
- * EQUAL TO THE *MOVE RATIO*, THEN THE FILE IS NOT
- * MOVED. A VALUE OF 0 WILL PREVENT ALL FILES FROM
- * BEING MOVED VIA THE SLIDE TECHNIQUE; HOWEVER,
- * IT IS RECOMMENDED THAT THE *NS* PARAMETER BE
- * USED RATHER THAN SPECIFYING *MR=0*. THE VALUE IS
- * ASSUMED TO BE OCTAL. AN 8, 9 OR POST RADIX OF D
- * WILL FORCE DECIMAL. A POST RADIX OF B WILL FORCE
- * OCTAL.
- * DEFAULT - 100B.
- * ALTERNATE DEFAULT - 377777B.
- *
- * NC = NO CHANGES. IF SPECIFIED, *PACKER* WILL NOT MAKE
- * ANY CHANGES TO THE DEVICE. THIS ALLOWS MULTIPLE
- * SCENARIOS TO BE RUN TO DETERMINE THE BEST
- * COMBINATION OF OPTIONS TO OBTAIN THE DESIRED
- * RESULTS. MOST DEVICE READS ARE PERFORMED EXCEPT
- * THOSE CONCERNING FILE COPIES. NO DEVICE WRITES ARE
- * PERFORMED.
- * THIS PARAMETER MAY NOT BE EQUIVALENCED.
- *
- * NF = NO FILL MOVES. IF SPECIFIED, *PACKER* WILL NOT MOVE
- * ANY FILES USING THE FILL MOVE TECHNIQUE. USE OF
- * THIS PARAMETER FORCES ALL FILES TO BE MOVED VIA THE
- * SLIDE TECHNIQUE. THIS CAN RESULT IN MORE SPACE
- * BEING RELEASED TO THE OPERATING SYSTEM AT THE
- * EXPENSE OF MOVING AN INCREASED NUMBER OF FILES.
- * THIS PARAMETER MAY NOT BE EQUIVALENCED.
- *
- * NP = NO PRE-MOVE DELINKS. IF SPECIFIED, *PACKER* WILL NOT
- * DELINK TRACKS PRIOR TO ATTEMPTING TO MOVE FILES.
- * DELINKING TRACKS PRIOR TO MOVING FILES LIMITS THE
- * SIZE TO WHICH THE COLLECTION HOLE IS ALLOWED TO
- * GROW. THIS LIMITS THE AMOUNT OF DATA (FILES) MOVED
- * BY *PACKER* IN ITS ATTEMPTS TO FILL THE COLLECTION
- * HOLE. THESE DELINKS MAY SHORTEN THE TIME *PACKER*
- * EXECUTES AT THE EXPENSE OF POSSIBLY LEAVING SMALL
- * HOLES AT THE POINT WHERE TRACK(S) WERE DELINKED.
- * THIS PARAMETER DOES NOT AFFECT THE DELINKING OF
- * TRACKS FROM HOLES WHICH REMAIN AFTER *PACKER* HAS
- * COMPLETED ITS WORK.
- * THIS PARAMETER MAY NOT BE EQUIVALENCED.
- *
- * NS = NO SLIDE MOVES. IF SPECIFIED, *PACKER* WILL NOT
- * MOVE ANY FILES USING SLIDE MOVE TECHNIQUE. THIS MAY
- * INCREASE THE SPEED OF *PACKER* EXECUTION BY LEAVING
- * MORE HOLES UNFILLED. IT IS USUALLY BETTER TO USE
- * THE *MR* PARAMETER TO CONTROL THE SLIDE MOVE. THE
- * ONLY EXCEPTION IS THAT IT IS BETTER TO SPECIFY *NS*
- * THAN *MR=0* AS (FOR VERY ESOTERIC REASONS) *MR=0*
- * MAY ALSO DISABLE A TYPE OF LOST SPACE RECLAMATION.
- * THIS PARAMETER MAY NOT BE EQUIVALENCED.
- SPACE 4,10
- ** DEBUGGING COMMAND OPTIONS.
- *
- * THE FOLLOWING OPTIONS ARE PROVIDED FOR DEBUGGING PURPOSES
- * ONLY.
- *
- * DEBUG = OCTAL VALUE, EACH BIT SPECIFYING A DEBUGGING OPTION
- * TO BE ACTIVATED.
- * BIT - OPTION
- * 0 - CALL *CEO* IN THE MAIN LOOP.
- * 1 - ACTIVATE RJ TRACE.
- * DEFAULT - 0 (ALL DEBUG OPTIONS OFF).
- * ALTERNATE DEFAULT - 377777B (ALL DEBUG OPTIONS ON).
- SPACE 4,10
- *** OPERATIONAL OVERVIEW.
- *
- * *PACKER* SCANS THE DEVICE-S CATALOG TRACKS AND BUILDS A
- * SET OF TABLES WHICH ALLOWS IT TO OPERATE ON THE IAPF CHAIN
- * IN SEQUENTIAL ORDER. AS *PACKER* SCANS THE IAPF CHAIN IT
- * PERFORMS FUNCTIONS DEPENDING ON THE ITEMS ENCOUNTERED.
- *
- * LOST SPACE IS A CONDITION WHERE SPACE EXISTS ON THE
- * IAPF CHAIN WHICH IS NOT POINTED TO BY A PFC ENTRY. WITHOUT
- * A PFC ENTRY *PFM* IS UNAWARE OF THE SPACE; THUS THE NAME,
- * LOST SPACE. IF THE LOST SPACE IS PRECEDED OR FOLLOWED BY A
- * HOLE, *PACKER* WILL MERGE THE LOST SPACE WITH ONE OF THE
- * HOLES. IF THE LOST SPACE IS PRECEDED BY A FILE AND NOT
- * FOLLOWED BY A HOLE, *PACKER* WILL CREATE A NEW PFC ENTRY
- * FOR THE LOST SPACE, TRANSFORMING IT INTO A NORMAL IAPF
- * HOLE. IF THE LOST SPACE IS SMALLER THAN THE ABSOLUTE
- * MINIMUM IAPF HOLE SIZE OF THREE PRU-S, THE LOST SPACE CAN
- * NOT BE RECLAIMED AND IS LEFT AS LOST SPACE.
- *
- * A FILE IS CHECKED TO SEE IF IT HAS THE CORRECT LENGTH.
- *
- * A HOLE STARTS A SEQUENCE OF EVENTS. THE HOLE IS TURNED
- * INTO THE COLLECTION HOLE. THE COLLECTION HOLE IS THE FOCAL
- * POINT OF THE MAJOR OPERATIONS OF COMBINING HOLES AND MOVING
- * FILES. THE PFC POINTING TO THE COLLECTION HOLE IS CHANGED
- * INTO A PURGED DIRECT ACCESS PERMANENT FILE (DAPF) PFC.
- * THIS PFC WILL BE CHANGED BACK INTO AN IAPF PFC POINTING TO
- * THE HOLE WHEN THE COLLECTION HOLE IS CHANGED BACK INTO A
- * NORMAL HOLE. UNTIL THAT OCCURS, THE COLLECTION HOLE IS
- * LOST SPACE. *PACKER* USES THIS TO PROVIDE FOR A SYSTEM
- * FAILURE DURING *PACKER* OPERATION. THE SYSTEM WILL BE
- * UNAWARE OF THE CHANGES *PACKER* WAS MAKING, ALL FILES WILL
- * BE INTACT, AND THE LOST SPACE WILL BE RECOVERED THE NEXT
- * TIME *PACKER* IS RUN. THE FOLLOWING SEQUENCE WILL BE
- * REPEATED UNTIL THE COLLECTION HOLE IS CLOSED.
- *
- * ANY HOLES FOLLOWING THE COLLECTION HOLE HAVE THEIR PFC-S
- * CHANGED INTO PURGED DAPF PFC-S AND THEIR SPACE IS ADDED TO
- * THE COLLECTION HOLE. THIS COLLAPSING OF CONTIGUOUS HOLES IS
- * CONTINUED UNTIL A FILE IS ENCOUNTERED.
- *
- * WHEN A FILE IS ENCOUNTERED A CHECK IS MADE TO SEE IF THE
- * COLLECTION HOLE IS BIG ENOUGH FOR TRACKS TO BE DELINKED FROM
- * IT. IF SO, TRACKS ARE DELINKED AND RETURNED TO THE SYSTEM.
- * AN IMPORTANT EFFECT OF THIS PREMOVE DELINKING IS THAT IT
- * LIMITS THE AMOUNT OF DATA (FILES) THAT ARE MOVED BY LIMITING
- * THE SIZE OF THE COLLECTION HOLE.
- *
- * NEXT A SCAN IS MADE STARTING FROM THE END OF THE IAPF
- * CHAIN TO THE CURRENT POSITION, LOOKING FOR THE LARGEST FILE
- * WHICH WILL FIT INTO THE COLLECTION HOLE. IF SUCH A FILE IS
- * FOUND IT WILL BE COPIED TO THE BEGINNING OF THE COLLECTION
- * HOLE AND ITS PFC WILL BE UPDATED TO POINT TO THE NEW
- * POSITION. THEN THE COLLECTION HOLE-S STARTING ADDRESS AND
- * LENGTH IS UPDATED. THIS IS THE JUMP FILL MOVE TECHNIQUE. IF
- * THE COLLECTION HOLE WAS COMPETELY FILLED, IT IS CONSIDERED
- * CLOSED AND THE SCAN STARTS OVER. IF THE MOVE WAS SUCCESSFUL,
- * IT IS REPEATED UNTIL NO FURTHER FILES CAN BE MOVED VIA THE
- * FILL TECHNIQUE.
- *
- * NEXT, THE FILE ADJACENT TO THE COLLECTION HOLE (WHICH WAS
- * EXCLUDED FROM THE FILL SEARCH) IS EXAMINED TO SEE IF IT CAN
- * BE SLID ACROSS THE COLLECTION HOLE. THE FILE MUST COMPLETELY
- * FIT WITHIN THE COLLECTION HOLE, FOR THE FILE WOULD BE
- * DESTROYED IF THE FILE WAS COPIED ON TOP OF ITSELF AND THE
- * SYSTEM FAILED DURING THE COPY. THE SIZES OF ALL THE FILES
- * UNTIL THE NEXT HOLE ARE EXAMINED TO ENSURE THEY ALL WILL
- * FIT IN THE COLLECTION HOLE (IF ANY DO NOT FIT THE EFFECT OF
- * THE MOVES WOULD ONLY BE TO MOVE THE POSITION OF THE HOLE,
- * WHICH IN ITSELF IS OF NO BENEFIT). IF ALL THE FILES FIT,
- * THEY ARE COPIED, ONE BY ONE, ACROSS THE COLLECTION HOLE, AND
- * THE ADDRESS OF THE COLLECTION HOLE IS UPDATED. THIS IS THE
- * SLIDE MOVE TECHNIQUE. THE SCAN THEN CONTINUES WITH THE
- * COLLAPSING OF THE NEWLY ADJACENT HOLE. IF THE FILES DO NOT
- * FIT, THE COLLECTION HOLE IS CLOSED AND SCAN CONTINUES.
- *
- * WHEN THE END OF THE IAPF CHAIN IS ENCOUNTERED THE SCAN
- * TERMINATES. IF THE COLLECTION HOLE IS OPEN, IT IS DROPPED
- * OFF THE THE END OF THE IAPF CHAIN BY ADJUSTING THE EOI.
- SPACE 4,10
- ** THE PP HELPER PROGRAM *MPF* IS CALLED TO DO
- * THE FOLLOWING -
- * 1. DROP TRACKS FROM IAPF CHAIN.
- * 2. REWRITE END OF INFORMATION FOR FILE COPY.
- * 3. DELINK TRACKS FROM IAPF CHAIN.
- * 4. READ SYSTEM SECTOR.
- * 5. WRITE SYSTEM SECTOR.
- * 6. RETURN FST FOR OVERFLOW CATALOG TRACK.
- * 7. REWRITE CATALOG TRACK SECTOR.
- SPACE 4,10
- ** THE PF UTILITY PP ROUTINE *PFU* IS CALLED TO DO
- * THE FOLLOWING -
- * 1. SET PF UTILITY DEVICE INTERLOCK.
- * 2. CLEAR PF UTILITY INTERLOCK.
- * 3. REWIND CATALOG FILE.
- * 4. OPEN CATALOG / DATA FILE.
- * 5. ADVANCE CATALOG TRACK.
- SPACE 4,10
- *** TERMINATION DAYFILE MESSAGES (SYSTEM AND LOCAL DAYFILE).
- *
- * * PACKER COMPLETE.*
- * *PACKER* TERMINATED NORMALLY.
- *
- * * PACKER ABORTED.*
- * *PACKER* TERMINATED ABNORMALLY.
- *
- * * REAL TIME DURATION TERMINATION.*
- * THE MAXIMUN REAL TIME ALLOWED FOR *PACKER* TO EXECUTE
- * HAS BEEN EXCEEDED.
- *
- * * SENSE SWITCH ONE TERMINATION.*
- * *PACKER* HAS DETECTED A TERMINATION REQUEST VIA
- * SENCE SWITCH ONE.
- SPACE 4,10
- *** STATISTICAL DAYFILE MESSAGES (SYSTEM AND LOCAL DAYFILE).
- *
- * *PACKER* STATISTICS (BELOW) REFLECT THE CONDITION OF THE
- * PORTION OF THE IAPF CHAIN WHICH *PACKER* HAS PROCESSED.
- *
- * * ONSET FILES NNNNNN, SSSSSS PRUS.*
- * *PACKER* STATISTICS.
- * NNNNNN - NUMBER OF FILES AT *PACKER* ONSET.
- * SSSSSS - TOTAL SECTORS OCCUPIED BY FILES AT *PACKER*
- * ONSET.
- *
- * * ONSET HOLES NNNNNN, SSSSSS PRUS.*
- * *PACKER* STATISTICS.
- * NNNNNN - NUMBER OF HOLES AT *PACKER* ONSET.
- * SSSSSS - TOTAL SECTORS OCCUPIED BY HOLES AT *PACKER*
- * ONSET.
- *
- * * FILL MOVES NNNNNN, SSSSSS PRUS.*
- * *PACKER* STATISTICS.
- * NNNNNN - NUMBER OF FILES JUMP FILLED INTO HOLES.
- * SSSSSS - TOTAL SECTORS JUMP MOVED.
- *
- * * SLIDE MOVES NNNNNN, SSSSSS PRUS.*
- * *PACKER* STATISTICS.
- * NNNNNN - NUMBER OF FILES SLID INTO HOLES.
- * SSSSSS - TOTAL SECTORS SLID.
- *
- * * FILES MOVED NNNNNN, SSSSSS PRUS.*
- * *PACKER* STATISTICS.
- * NNNNNN - NUMBER OF FILES MOVED.
- * SSSSSS - TOTAL SECTORS MOVED.
- *
- * * LOST SPACE NNNNNN, SSSSSS PRUS.*
- * *PACKER* STATISTICS.
- * NNNNNN - NUMBER OF HOLES WITHOUT CATALOG ENTRIES.
- * SSSSSS - TOTAL SECTORS W/O CATALOG HOLE ENTRIES.
- * THIS MESSAGE INDICATES THE AMOUNT OF LOST
- * SPACE WHICH *PACKER* WAS UNABLE TO RECLAIM.
- * IT REMAINS UNKNOWN TO *PFM*. IT MAY BE
- * RECLAIMED ON A FUTURE *PACKER* RUN AFTER
- * PRODUCTION HAS CHANGED THE MAKEUP OF THE
- * IAPF CHAIN. (SYSTEM AND EOI SECTORS ARE
- * NOT REMOVED FROM THIS TOTAL, SINCE LOST SPACE
- * CAN BE LESS THAN THREE SECTORS).
- *
- * * HOLES LEFT NNNNNN, SSSSSS PRUS.*
- * *PACKER* STATISTICS.
- * NNNNNN - NUMBER OF HOLES WITH CATALOG ENTRIES.
- * SSSSSS - TOTAL SECTORS WITH CATALOG HOLE ENTRIES.
- *
- * * HOLES FREED NNNNNN, SSSSSS PRUS.*
- * *PACKER* STATISTICS.
- * NNNNNN - NUMBER OF CATALOG ENTRIES FREED.
- * SSSSSS - SECTORS REMOVED FROM THE IAPF CHAIN. THIS
- * IS THE NUMBER OF SECTORS GAINED WHEN VIEWING
- * THE IAPF CHAIN AS A SEQUENCE OF SECTORS,
- * IGNORING THE EFFECTS OF TRACK BOUNDARIES.
- *
- * * TRACKS FREED NNNNNN, SSSSSS PRUS.*
- * *PACKER* STATISTICS.
- * NNNNNN - NUMBER OF TRACKS DELINKED OR DROPPED.
- * SSSSSS - SECTORS RETURNED TO THE SYSTEM VIA TRACK
- * DELINKS OR TRACK DROPS.
- *
- * * FLAW SPACE NNNNNN, SSSSSS PRUS.*
- * *PACKER* STATISTICS.
- * NNNNNN - NUMBER OF IAPF FLAW FILES ENCOUNTERED.
- * SSSSSS - SECTORS OCCUPIED BY IAPF FLAW FILES.
- * IAPF FLAWS ARE FILES WITH UI=IFUI. THEY MAY
- * RESIDE ON ANY IAPF DEVICE REGARDLESS OF THE
- * DEVICE MASK.
- *
- * *PACKER* RESOURCE UTILIZATION SUMMARY (BELOW) REFLECTS THE
- * RESOURCES USED BY *PACKER*.
- *
- * * SRUS 23456.890 UNTS.*
- * * CPU SECONDS 23456.890 SECS.*
- * * MAXIMUM CM FL 234567890 SCM.*
- * * MANAGED TABLE MOVES 234567890 UNTS.*
- SPACE 4,10
- *** EXTERNAL ABORT DAYFILE MESSAGES (SYSTEM AND LOCAL DAYFILE).
- *
- * *REPRIEVE PROCESSING BEGUN.*
- * *PACKER* HAS BEGUN REPRIEVE PROCESSING.
- *
- * *REPRIEVE PROCESSING COMPLETE.*
- * *PACKER* HAS COMPLETED REPRIEVE PROCESSING.
- *
- * *STATISTICS MAY NOT BE ACCURATE.*
- * *PACKER* IS ISSUING STATISTICAL MESSAGES DURING
- * REPRIEVE OR ERROR RECOVERY PROCESSING. SINCE NORMAL
- * PROCESSING HAS BEEN INTERRUPTED, THE INFORMATION MAY
- * NOT BE ACCURATE.
- *
- * WHEN AN ERROR FLAG IS SET AT *PACKER*-S CONTROL POINT, THE
- * CORRESPONDING MESSAGE (BELOW) IS ISSUED AND REPRIEVE
- * PROCESSING IS BEGUN.
- *
- * *USER BREAK ONE.*
- * *USER BREAK TWO.*
- * *ARITHMETIC ERROR.*
- * *SCP INVALID TRANSFER ADDRESS.*
- * *PROGRAM STOP ERROR.*
- * *PPU ABORT.*
- * *CPU ABORT.*
- * *PPU CALL ERROR.*
- * *COMMAND LIMIT.*
- * *MESSAGE LIMIT.*
- * *TIME LIMIT ERROR.*
- * *FILE LIMIT ERROR.*
- * *TRACK LIMIT ERROR.*
- * *SRU LIMIT ERROR.*
- * *FORCED ERROR.*
- * *JOB HUNG IN AUTORECALL.*
- * *OPERATOR DROP.*
- * *IDLE DOWN.*
- * *SUSPENSION TIMEOUT.*
- * *ECS PARITY ERROR.*
- * *SUBSYSTEM RECOVERED DURING LEVEL 3 DEADSTART.*
- * *SUBSYSTEM ABORTED.*
- * *OPERATOR RERUN.*
- * *OPERATOR KILL.*
- * *DEADSTART RERUN.*
- * *RECOVERY ABORT.*
- * *JOB STEP ABORT.*
- * *SECURITY VIOLATION.*
- * *SYSTEM ABORT.*
- * *CPU OR CM PARITY ERROR.*
- * *SOFTWARE ERROR ABORT.*
- * *OVERRIDE OF ERROR CONDITION.*
- SPACE 4,10
- *** ERROR MESSAGES (SYSTEM AND LOCAL DAYFILE).
- *
- * * CATALOG FST CURRENT SECTOR .NE. ZERO.*
- * OVERFLOW PROCESSING REQUIRES CATALOG TRACKS TO
- * CONTAIN THE FULL NUMBER OF SECTORS PER TRACK.
- *
- * * DISK ADDRESS NOT ON CHAIN.*
- * THE TRACK AND SECTOR SPECIFIED IN THE CATALOG ENTRY
- * WAS NOT ON THE IAPF CHAIN. ABORT WITH DUMP.
- *
- * * ENTRY OVERLAP TTTT/SSSS/O, TTTT/SSSS/O.*
- * *PACKER* HAS DETECTED AN IAPF CHAIN OVERLAP BETWEEN
- * THE TWO ENTRIES WHOSE PFC LOCATIONS ARE GIVEN
- * (TRACK/SECTOR/ PFC ORDINAL).
- * NOTE - A VALUE OF 0000/0000/0 IN THE MESSAGE
- * INDICATES THE IAPF CHAIN EOI.
- *
- * * FAMILY NOT FOUND.*
- * THE FAMILY DEVICE REQUESTED WAS AN AUXILIARY DEVICE.
- * ABORT WITH DUMP.
- *
- * * FILE OVERLAP TTTT/SSSS/O, TTTT/SSSS/O.*
- * THE FILE LENGTH FROM THE CATALOG ENTRY OVERLAPS THE
- * NEXT FILE/HOLE. ABORT WITH DUMP. THE TWO PFC
- * LOCATIONS ARE GIVEN (TRACK/SECTOR/PFC ORDINAL).
- *
- * * FILE LENGTH ERROR TTTT/SSSS/O.*
- * DURING A FILE COPY, THE AMOUNT OF DATA READ DOES NOT
- * MATCH THE FILE LENGTH IN THE PFC. ABORT WITH DUMP.
- * TTTT/SSSS/O IS THE TRACK/SECTOR/PFC ORDINAL OF THE
- * FILE-S PFC ENTRY.
- *
- * * IAPF CHAIN OVERLAP.*
- * *PACKER* HAS DETECTED ENTRY OVERLAPS ON THE IAPF
- * CHAIN BEFORE ANY CHANGES HAVE BEEN MADE. *PACKER*
- * WILL NOT ATTEMPT TO PACK A CORRUPT IAPF CHAIN.
- *
- * * INCORRECT ARGUMENT.*
- * ERROR IN COMMAND PARAMETER.
- *
- * * INCORRECT DEVICE/FAMILY.*
- * THE DEVICE SPECIFIED BY THE *DN* AND THE *FM*/*PN*
- * PARAMETERS COULD NOT BE FOUND OR WAS OFF, UNLOADED
- * OR PF UTILITY ACTIVE. ABORT WITH DUMP.
- *
- * * INTERNAL ERROR, ...*
- * *PACKER* HAS ENCOUNTERED A CONDITION WHICH IT CANNOT
- * HANDLE. THIS MAY BE DUE TO AN INTERNAL ERROR OR TO
- * EXTERNAL PROBLEMS. *PACKER* ABORTS, WITH ITS
- * REASONS, TO PREVENT CAUSING PROBLEMS OR MAKING A BAD
- * SITUATION WORSE.
- *
- * * NOT A MASTER DEVICE.*
- * THE DEVICE REQUESTED DID NOT CONTAIN PF CATALOGS
- * (DEVICE MASK = 0). ABORT WITH DUMP.
- *
- * * PACKNAME NOT FOUND.*
- * THE PACK REQUESTED WAS A FAMILY DEVICE.
- * ABORT WITH DUMP.
- *
- * * PARAMETER XX ARGUMENT ERROR.*
- * ERROR IN THE SPECIFICATION OF PARAMETER XX.
- *
- * * RSA NOT ON CHAIN.*
- * THE RANDOM ADDRESS IN A CATALOG ENTRY IS NOT IN THE
- * IAPF CHAIN. ABORT WITH DUMP.
- *
- * * TABLE OVERFLOW, UNABLE TO OBTAIN REQUIRED MEMORY.*
- * THE TABLE OVERFLOW PROCESSOR WAS UNABLE TO OBTAIN
- * ENOUGH MEMORY TO BUILD THE REQUIRED TABLES. MAKE SURE
- * THAT THE JOB HAS UNLIMITED CM VALIDATION.
- *
- * * TFHL TABLE DEACTIVATED.*
- * THE *TFHL* TABLE WAS DEACTIVATED DUE TO MEMORY
- * CONSTRAINTS. THE FILL MOVE TECHNIQUE IS NOT USED
- * WHEN THE *TFHL* TABLE IS INACTIVE. THE PROCESSING
- * TIME OF *PACKER* MAY INCREASE WHEN THE *TFHL* TABLE IS
- * INACTIVE.
- *
- * * TOO MANY OVERFLOW CATALOG TRACKS.*
- * THE FIELD WIDTH ALLOTTED FOR THE CATALOG TRACK INDEX
- * IN THE *TFRI* TABLE ENTRIES HAS BEEN EXCEEDED.
- * *PACKER* IS UNABLE TO PROCESS THE DEVICE.
- SPACE 4,10
- *** B DISPLAY MESSAGES.
- *
- * *CHECKING ENTRY OVERLAP.*
- * INFORMATIVE STATUS MESSAGE.
- *
- * *COGITATING.*
- * INFORMATIVE STATUS MESSAGE.
- *
- * *CREATING CATALOG TRACK TABLES.*
- * INFORMATIVE STATUS MESSAGE.
- *
- * *CREATING RANDOM ADDRESSES.*
- * INFORMATIVE STATUS MESSAGE.
- *
- * *CREATING TRACK RESERVATION TABLE.*
- * INFORMATIVE STATUS MESSAGE.
- *
- * *INTERCHANGING HOLE-FILE*
- * INFORMATIVE STATUS MESSAGE.
- *
- * *PURGING CONTIGUOUS HOLES.*
- * INFORMATIVE STATUS MESSAGE.
- SPACE 4,10
- *** *K* DISPLAY.
- *
- * AN INFORMATIVE *K* DISPLAY IS AVAILABLE. IT IS PROVIDED
- * TO ALLOW AN ANALYST TO OBSERVE *PACKER*-S STATE DURING
- * EXCEPTIONAL CIRCUMSTANCES. ACTIVATION OF THE *K* DISPLAY IS
- * BY SIMPLY ASSIGNING THE *K* DISPLAY DURING EXECUTION.
- SPACE 4,10
- *** FILES USED.
- *
- * C CATALOG TRACK FILE.
- *
- * I IAPF CHAIN INPUT FILE.
- *
- * O IAPF CHAIN OUTPUT FILE.
- *
- * OUTPUT ENSURE DUMPS ARE NOT LOST VIA *SSST* ID.
- *
- * ZZZZDMB ENSURE DUMPS ARE NOT LOST VIA *SSST* ID.
- TITLE COMMON DECKS.
- SPACE 4,10
- * COMMON DECKS.
- *CALL COMCMAC
- *CALL COMCCMD
- *CALL COMCDCM
- *CALL COMCMTM
- *CALL COMSLFD
- *CALL COMSPFM
- *CALL COMSPFU
- *CALL COMSRPV
- *CALL COMSSSD
- *CALL COMSSSJ
- TITLE MACRO DEFINITIONS.
- ABSREAD SPACE 4,10
- ** ABSREAD - READ ABSOLUTE CENTRAL MEMORY.
- *
- * ABSREAD FWA,BUF,N
- *
- * FWA = FIRST WORD ADDRESS TO READ.
- * BUF = ADDRESS OF BUFFER TO READ TO.
- * N = NUMBER OF WORDS TO READ (DEFAULT IS 1).
- *
- * IF *BUF* IS NOT SPECIFIED, ONE WORD IS READ TO (X6).
- *
- * USES X - 1, 6.
- * A - 1, 6.
- *
- * MACROS SYSTEM.
- *
- * NOTE THIS MACRO DEFINES AND USES THE LOCATIONS
- * *ABSBUF* AND *ABSPAR*.
- PURGMAC ABSREAD
- ABSREAD MACRO FWA,BUF,N
- MX6 12
- IFC EQ,$BUF$$,1
- R= A6,=SABSBUF
- IFC NE,$BUF$$,1
- R= A6,BUF
- R= X1,FWA
- LX1 18
- SX6 A6
- BX6 X6+X1
- IFC EQ,$N$$,1
- R= X1,1
- IFC NE,$N$$,1
- R= X1,N
- IFC EQ,$BUF$$,1
- R= X1,1
- LX1 36
- BX6 X6+X1
- SX1 =SABSPAR
- SA6 X1
- SYSTEM RSB,R,X1
- IFC EQ,$BUF$$,2
- SA1 =SABSBUF
- BX6 X1
- ABSREAD ENDM
- RJ SPACE 4,10
- ** REDEFINE THE RJ INSTRUCTION TO PROVIDE RJ TRACE CAPABILITY.
- *
- * IF RJ TRACING IS REQUESTED FOR ROUTINE SUB, THEN THE RJ
- * INSTRUCTION
- * RJ SUB CALL SUBROUTINE SUB
- * WILL GENERATE CODE OF THE FORM
- * + RJ SUB
- * - RJ RJT
- * WHERE *SUB* IS THE SUBROUTINE SPECIFIED ON THE RJ INSTRUCTION
- * AND *RJT* IS THE RJ TRACE SUBROUTINE. IF RJ TRACE IS ENABLED
- * INSTRUCTION MODIFICATION REVERSES THE ORDER OF THE RJ-S,
- * CALLING THE RJ TRACE SUBROUTINE WHICH IN TURN CALLS THE
- * SUBROUTINE SPECIFIED ON THE RJ INSTRUCTION. SJ (SUBROUTINE
- * JUMP) IS DEFINED TO PROVIDE A NORMAL RJ INSTRUCTION.
- *
- * CODE WITH THE QUAL *RPV* IS EXCLUDED FROM THE RJ TRACE SINCE
- * IT COULD INVALIDATE REPRIEVE INTERRUPT RESUMPTION. CODE WITH
- * THE QUAL *RJT* IS EXCLUDED SINCE THAT WOULD BE RECURSIVE.
- * CODE WITH THE QUAL *PRS* IS EXCLUDED SINCE NO PROVISION
- * EXISTS TO REMOVE ENTRIES FROM THE TABLE WHICH DO NOT EXIST
- * AFTER PRESET. CALLS TO *RJT* ARE EXCLUDED SINCE THEY WOULD
- * BE RECURSIVE.
- SJQ CPSYN RJQ
- PURGDEF RJQ
- PURGMAC RJ
- RJQ OPDEF W
- LOCAL T,LA,LB,LC,LD,LF,LG
- LA MICRO 1,, W
- LB MICRO 1,1, "LA"
- LC MICCNT LA
- * REMOVE /QUAL/
- RJTA IFC EQ, "LB" /
- LG SET 1
- RJTB DUP LC-1
- LG SET LG+1
- LF MICRO LG,1, "LA"
- IFC EQ, "LF" / ,1
- STOPDUP
- RJTB ENDD
- RJTC IFC EQ, "LF" /
- LG SET LG+1
- RJTC IFLT LG,LC
- LA MICRO LG,, "LA"
- LB MICRO 1,1, "LA"
- LC MICCNT LA
- RJTC ENDIF
- RJTA ENDIF
- * REMOVE =S, =X, =Y
- LD MICRO 1,2, "LA"
- RJTA IFC NE, "LD" =S
- RJTA IFC NE, "LD" =X
- RJTA IFC NE, "LD" =Y
- RJTA ELSE
- LA MICRO 3,, "LA"
- LB MICRO 1,1, "LA"
- LC MICCNT LA
- RJTA ENDIF
- * CHECK LENGTH, VALID SYMBOL, DEF AND EXCEPTIONS
- RJT IFLE LC,7
- RJT IFC GE, "LB" A
- RJT IFC LE, "LB" 9
- RJT IF DEF,"LA"_.
- RJT IFC NE, "QUAL" PRS
- RJT IFC NE, "QUAL" RJT
- RJT IFC NE, "QUAL" RPV
- RJT IFC NE, "LA" RJT
- MACREF "LA"_.
- + SJ W
- - SJ RJT
- T EQU *-1
- RJAT RMT
- + VFD 42/0L"LA",18/T W
- RJAT RMT
- RJT ELSE
- SJ W
- RJT ENDIF
- RJQ ENDM
- RJT SPACE 4,10
- ** RJT - DEFINE ROUTINES TO BE TRACED VIA RJ TRACE.
- *
- * RJT SUB RJ TRACE ROUTINE SUB
- * RJT ETC RJ TRACE ROUTINE ETC
- PURGMAC RJT
- RJT MACRO W
- W_. EQU 0
- RJT ENDM
- SCIOF SPACE 4,10
- ** SCIOF - SET *CIO* FUNCTION IN FET.
- *
- * SCIOF FILE,C
- *
- * *SCIOF* SETS UP A CALL TO *CIO=* WITH THE *CIO* FUNCTION
- * CODE *C* ON THE FET *FILE*, AND REQUESTS THAT *CIO=* NOT
- * CALL *CIO*. THE CALLER MUST ENSURE THAT THE FET IS
- * COMPLETE BEFORE CALLING *SCIOF*.
- * THE RESULT IS INSERTING A *CIO* FUNCTION CODE IN THE
- * FET WITHOUT CALLING *CIO*. THIS IS THE SAME AS THE
- * * OPTION ON SOME *CIO* MACROS EXCEPT THAT THE FET
- * COMPLETE BIT IS NOT SET.
- PURGMAC SCIOF
- SCIOF MACRO F,C
- MACREF SCIOF
- R= X2,F
- MX7 1
- BX2 X7+X2
- SX7 C
- RJ =XCIO=
- SCIOF ENDM
- VOID SPACE 4,10
- *** VOID - VOID THE STACK MACRO.
- *
- * THIS MACRO WILL CAUSE AN UNCONDITIONAL VOIDING OF THE
- * STACK TO OCCUR. IT IS PLACED AFTER ALL LOCATIONS WHICH
- * CONTAIN INSTRUCTIONS THAT PLUG CODE AND WHICH ARE NOT
- * NATURALLY FOLLOWED BY A RETURN JUMP.
- PURGMAC VOID
- VOID MACRO
- MACREF VOID
- RJ *+1
- + EQ *+1S17
- - VFD 30/0LVOID.
- VOID ENDM
- TITLE DATA AND CONSTANTS.
- * ASSEMBLY CONSTANTS.
- DBUFL EQU 6001B FILE TRANSFER BUFFER LENGTH
- CBUFL EQU 1001B CATALOG TRACK BUFFER LENGTH
- SBUFL EQU 1 SCRATCH FET BUFFER LENGTH
- MXCT EQU 377B MAXIMUM CATALOG TRACKS + 1 (*TFRI* LIMIT)
- CTSS EQU 10B ADDRESS OF PFC COPY IN SYSTEM SECTOR
- TRJHL EQU 1001B LENGTH OF RJ HISTORY TABLE
- ERRNG TRJHL-10D *TRJH* TABLE TOO SMALL
- PAKVER MICRO 1,, 4.0 *PACKER* VERSION
- PAKLVL EQU "NOSLVL" *PACKER* RELEASE LEVEL
- PAKLVL DECMIC PAKLVL *PACKER* RELEASE LEVEL
- SPACE 4,10
- * RJ TRACE DEFINITIONS.
- RJT AFM ATTEMPT FILL MOVE
- RJT ASM ATTEMPT SLIDE MOVE
- RJT ATD ATTEMPT TRACK DELINK
- RJT CEO CHECK ENTRY OVERLAP
- RJT CDF COPY DATA FOR FILE
- RJT CFL CHECK FILE LENGTH
- RJT CIP CLEAR IRRELEVANT PFC INFORMATION
- RJT CIT CLEAR INTERLOCKS
- RJT CRA CONVERT RANDOM ADDRESS
- RJT CTC CHECK TERMINATION CONDITIONS
- RJT CTE CREATE AND INSERT TABLE ENTRY
- RJT DLK DELINK TRACKS
- RJT DRP DROP TRACKS
- RJT DTE DELETE TABLE ENTRY
- RJT FLT FIND LAST TRACK
- RJT FPI FORMAT PFC INFORMATION
- RJT FRM FORMAT HOLES REMOVED STATISTIC MESSAGE
- RJT FSM FORMAT STATISTIC MESSAGE
- RJT MSG MESSAGE TO B DISPLAY (LINE ONE)
- RJT IOM ISSUE OVERLAP MESSAGE
- RJT IRS ISSUE RESOURCE SUMMARY TO DAYFILE
- RJT ISD ISSUE STATISTICS TO DAYFILE
- RJT ISM ISSUE STATISTIC MESSAGE
- RJT PCH PURGE CONTIGUOUS HOLES
- RJT RCE READ CATALOG ENTRY
- RJT RJA RJ TRACE ACTIVATION/DEACTIVATION
- RJT RLS RECLAIM LOST SPACE
- RJT RSS READ SYSTEM SECTOR
- RJT UFE UPDATE FILE ENTRY
- RJT UFF UPDATE FILL FILE ENTRY
- RJT UHE UPDATE HOLE ENTRY
- RJT UKD UPDATE *K* DISPLAY
- RJT USS UPDATE SYSTEM SECTOR
- RJT VHS VERIFY HOLE SIZE ADEQUATE FOR DELINK
- RJT WCE WRITE CATALOG ENTRY
- RJT ZWT ZERO WORD TERMINATE *TFRI* TABLE
- RJT ADW ADD WORD TO MANAGED TABLE
- RJT AMU ACCUMULATE MEMORY USED
- RJT ATS ALLOCATE TABLE SPACE
- RJT CDD CONSTANT TO DECIMAL DISPLAY CONVERSION
- RJT CFD CONSTANT TO F10.3 CONVERSION
- RJT CIO= I/O FUNCTION PROCESSOR
- RJT COD CONSTANT TO OCTAL DISPLAY CODE CONVERSION
- RJT EQS EQUALITY SEARCH TABLE
- RJT LFM= LOCAL FILE MANAGER PROCESSOR
- RJT MES MASKED EQUALITY SEARCH TABLE
- RJT MSG= SEND MESSAGE
- RJT MTD MOVE TABLES DOWN
- RJT MTU MOVE TABLES UP
- RJT MVE= MOVE BLOCK OF DATA
- RJT MTD MOVE TABLES DOWN
- RJT PFU PERMANENT FILE UTILITY FUNCTION PROCESSOR
- RJT RSR RESTORE REGISTERS
- RJT SNM SET NAME IN MESSAGE
- RJT SVR SAVE ALL REGISTERS
- RJT SYS= PROCESS SYSTEM REQUEST
- RJT WNB= WAIT NOT BUSY
- RJT ZTB ZEROS TO BLANKS
- POINTER SPACE 4,10
- ** POINTER TABLE.
- *
- * THE POINTER TABLE MUST BE LOCATED AT FWA. THIS
- * PLACES IT IMMEDIATELY AFTER THE 5100 LOADER TABLE
- * WHICH ALLOWS IT TO BE LOCATED BY A DMB INTERPRETER.
- ****
- DATA BSS 0 POINTER TABLE
- VFD 42/0LPOINTER,18/DATA
- VFD 42/0LRPVBLK,18/RPVA
- VFD 42/0LFTAB,18/FTAB
- VFD 42/0LFETS,18/C
- VFD 42/0LGLOBALS,18/PV
- CON 0 END OF TABLE
- ****
- SPACE 4,10
- * FETS AND STORAGE.
- C RFILEB CBUF,CBUFL,FET=16D,RTP
- I RFILEB DBUF,DBUFL,FET=16D,RTP
- O RFILEB DBUF,DBUFL,FET=16D,RTP
- S BSS 0 SCRATCH FET
- FILEB SBUF,SBUFL,FET=10B,EPR
- SSJ= BSS 0
- VFD 12/0,24/77777777B,12/60B,12/IRSI
- BSSZ SSJL-*+SSJ=
- PV VFD 42/0LPAKVER,18/0L"PAKVER" *PACKER* VERSION
- VFD 42/0LPAKLVL,18/0L"PAKLVL" *PACKER* RELEASE LEVEL
- VFD 42/0LNOSLVL,18/0L"NOSLVL" NOS RELEASE LEVEL
- VFD 60/10L"DATE" DATE *PACKER* ASSEMBLED
- VFD 60/10L"TIME" TIME *PACKER* ASSEMBLED
- PD CON 0 PACKED DATE AND TIME
- DN CON 0 DEVICE NUMBER
- FM CON 0 FAMILY NAME
- PN CON 0 PACKNAME
- EQ CON -1 EST ORDINAL
- CC CON 0 CATALOG TRACK COUNT
- CN CON -1 CATALOG TRACK NUMBER
- HE CON 0 COLLECTION HOLE *TFRI* TABLE ENTRY (COPY)
- FE CON 0 SLIDE FILE *TFRI* TABLE ENTRY (COPY)
- IX CON 0 INDEX TO *TFRI* TABLE
- IF CON 0 PF UTILITY INTERLOCK FLAG
- FT CON 0 FIRST TRACK OF IAPF CHAIN
- SL CON 0 SECTORS/TRACK
- TL CON 0 TIME LIMIT
- CT CON 0 CURRENT TRACK
- ERRNZ CT-TL-1 LOCATIONS MUST BE CONTIGUOUS
- EI CON 0 RSA OF IAPF CHAIN EOI
- MR CON 0L100B MOVE RATIO
- DS CON 0 DROPPED TRACK STATISTICS
- HS CON 0 HOLES SKIPPED STATISTICS
- LS CON 0 LOST SPACE STATISTICS
- BF CON 0 COUNT OF TIMES BUFFER FILLED IN *CPY*
- HL CON 0 LENGTH OF HOLE
- FB CON 0 BEGINNING RSA OF FILE
- FS CON 0 FILE SIZE FROM CATALOG ENTRY + 1 FOR SS
- DM CON 0 DATA MOVED
- HR CON 0 HOLES REMOVED
- DF CON 0 DUMP REQUIRED FLAG
- RP CON 0 REPRIEVE ACTIVATED
- PC CON 0 PRESET COMPLETED
- LT CON 0 LENGTH TABLE ACTIVE
- HD CON 0 HOLES DELETED SINCE FL REDUCTION
- BD CON 0 HOLE SIZE BEFORE DELINK (FOR STATISTICS)
- AD CON 0 HOLE SIZE AFTER DELINK (FOR STATISTICS)
- CTIH CON 0 CURRENT TRACK IN HOLE
- HSIT CON 0 HOLE SIZE IN CURRENT TRACK
- LTIH CON 0 LAST TRACK IN HOLE
- NTIH CON 0 NUMBER OF TRACKS IN HOLE
- PTIH CON 0 PREVIOUS TRACK IN HOLE
- FW CON 0 IAPF FLAW SPACE STATISTICS
- ID CON 0 OPERATOR IDLE DOWN REQUEST
- FF CON 0 FILL FILL *TFRI* TABLE ENTRY (COPY)
- FX CON 0 FILL FILE INDEX TO *TFRI* TABLE
- EF CON 0 EXACT FIT REQUIRED ON FILL FILE MOVE
- NC CON 0 NO CHANGES ARE TO BE MADE TO THE DEVICE
- NM CON 0 NO DATA MOVE (NEITHER FILL NOR SLIDE)
- NF CON 0 NO FILL FILE DATA MOVE
- NS CON 0 NO SLIDE FILE DATA MOVE
- NP CON 0 NO PRE-MOVE TRACK DELINKS
- JM CON 0 JUMP FILL MOVES OF FILES (FOR STATISTICS)
- SM CON 0 SLIDE MOVES OF FILES (FOR STATISTICS)
- ES CON 0 END SRU-S
- SS CON 0 START SRU-S
- ET CON 0 END CPU TIME
- ST CON 0 START CPU TIME
- DB CON 0 DEBUG OPTIONS
- IS CON 0 INCOMPLETE/INACCURATE STATISTICS
- OF CON 0 FILES AT THE ONSET
- OH CON 0 HOLES AT THE ONSET
- HC CON 0 HOLES CREATED BY JUMP MOVE
- TITLE MANAGED TABLES.
- SPACE 4,10
- ** TRJH - RETURN JUMP HISTORY (DEBUG USE).
- *
- * *TRJH* CONTAINS A ONE WAY *CIO* BUFFER INTO WHICH RJ TRACE
- * VALUES ARE STORED. THE POINTERS *FIRST*, *IN*, *OUT*,
- * AND *LIMIT* ARE OFFSETS RELATIVE TO *F.TRJH*.
- *
- * *FIRST* IS 1.
- * *IN* IS STORED AT F.TRJH+0.
- * *OUT* DOES NOT EXIST (AS IT IS NOT USED).
- * *LIMIT* IS L.TRJH.
- *
- * THE TRACE GROUPS ARE COMPOSED OF THE FOLLOWING ENTRIES.
- *
- *T 30/ RJ CALLEE,30/ EQ CALLER
- TRJH TABLE
- SPACE 4,10
- ** TCAT - TABLE OF CATALOG TRACKS.
- *
- * FST ENTRIES FOR *PFU* OPEN FILE.
- *
- *T 12/ EQ ,12/ TRACK ,12/ TRACK ,12/,12/ 5
- *
- * EQ EST ORDINAL OF CATALOG TRACK.
- * TRACK LOGICAL TRACK NUMBER.
- TCAT TABLE
- SPACE 4,10
- ** TTRT - IMAGE OF DEVICE TRT
- *
- *T 60/ EXACT IMAGE OF DEVICE TRACK RESERVATION TABLE
- *
- * NOTE - THIS TABLE IS USED ONLY TO BUILD *TTLT*, AND IS
- * NOT USED AFTER PRESET.
- TTRT TABLE
- SPACE 4,10
- ** TTLT - TRACK LINK TABLE.
- *
- *T 48/ CALCULATED RSA,12/ TRACK LINK
- *
- * THE TABLE IS INDEXED BY TRACK NUMBER. THE RSA MAY NOT
- * EXIST FOR ALL ENTRIES AS IT IS CALCULATED ONLY IF NEEDED.
- *
- * NOTE - THE RSA IS VALID ONLY DURING PRESET. IT IS NOT
- * ADJUSTED WHEN TRACKS ARE DELINKED FROM THE IAPF CHAIN.
- TTLT TABLE
- TAPE SPACE 4,10
- ** TAPE - TABLE OF AVAILABLE PFC ENTRIES.
- *
- *T 1/H,1/1,8/,8/ CT,15/ PRU,3/ P,24/
- *
- * H ALWAYS SET.
- * 1 REQUIRED TO MAKE ALL VALID ENTRIES NON-ZERO.
- * CT CATALOG TRACK NUMBER.
- * PRU SECTOR WITHIN CATALOG TRACK.
- * P 8-WORD PARCEL IN SECTOR.
- *
- * THESE ENTRIES INDICATE PFC-S WHICH MAY BE USED FOR HOLES
- * CREATED BY FILL MOVES.
- TAPE TABLE
- SPACE 4,10
- ** TFRI - TABLE OF FILE RANDOM INDEXES.
- *
- *T 1/H,1/1,1/I,7/,8/ CT,15/ PRU,3/ P,12/ TK,12/ SC
- *
- * H SET IF ENTRY IS FOR A HOLE.
- * 1 REQUIRED TO MAKE ALL VALID ENTRIES NON-ZERO.
- * I IMMOVABLE FILE UNDER ALL CIRCUMSTANCES.
- * CT CATALOG TRACK NUMBER.
- * PRU SECTOR WITHIN CATALOG TRACK.
- * P 8-WORD PARCEL IN SECTOR.
- * TK FILE/HOLE TRACK (OR RSA).
- * SC FILE/HOLE SECTOR (OR RSA).
- TFRI TABLE
- SPACE 4,13
- ** TFHL - TABLE OF FILE AND HOLE LENGTHS FROM THE PFC.
- *
- * THIS TABLE HAS EXACTLY A ONE TO ONE CORRESPONDENCE WITH
- * THE *TFRI* TABLE AT ALL TIMES, UNLESS IT DOES NOT EXIST.
- *
- *T 24/ LENGTH,12/0,24/ RSA
- *
- * LENGTH FILE OR HOLE LENGTH FROM THE PFC.
- * RSA RANDOM SECTOR ADDRESS OF FILE OR HOLE ON IAPF CHAIN.
- *E
- TFHL TABLE
- TITLE *K* DISPLAY.
- KDS SPACE 4,10
- * *K* DISPLAY.
- KDS VFD 24/KDI,18/KDRS,18/KDLS *K* DISPLAY CONTROL WORD
- KDI SPACE 4,10
- * *K* DISPLAY INPUT BUFFER.
- KDI BSSZ 8 *K* DISPLAY INPUT BUFFER.
- KDLS SPACE 4,10
- * KDLS - *K* DISPLAY LEFT SCREEN BUFFER.
- KDLS BSS 0 *K* DISPLAY LEFT SCREEN
- VFD 10/0,1/0,1/1,47/0,1/1 LEFT DISPLAY CONTROL WORD
- KDLSA DATA C*PACKER "PAKVER"-"PAKLVL"("NOSLVL").*
- KDLSB DATA C* *
- KDLSC DATA C* PERCENT PROCESSED*
- KDLSD DATA C* TFRI LENGTH*
- KDLSE DATA C* IX PRIMARY TFRI INDEX*
- KDLSF DATA C* FX FILL FILE TFRI INDEX*
- KDLSG DATA C* *
- KDLSH DATA C* LT LENGTH TABLE ACTIVE*
- KDLSI DATA C* ID IDLE DOWN REQUESTED*
- KDLSJ DATA C* RP REPRIEVE ACTIVE*
- KDLSK DATA C* *
- KDLSL DATA C* EQ*
- KDLSM DATA C* FM*
- KDLSN DATA C* PN*
- KDLSO DATA C* DN*
- KDLSP DATA C* *
- KDLSQ DATA C* DB*
- KDLSR DATA C* MR*
- KDLSS DATA C* NO EF*
- KDLST DATA C* NO NC*
- KDLSU DATA C* NO NM*
- KDLSV DATA C* NO NF*
- KDLSW DATA C* NO NS*
- KDLSX DATA C* NO NP*
- KDLSY DATA C* *
- KDLSZ DATA C* ONSET FILES , PRUS.*
- KDLS0 DATA C* ONSET HOLES , PRUS.*
- KDLS1 DATA C* FILL MOVES , PRUS.*
- KDLS2 DATA C* SLIDE MOVES , PRUS.*
- KDLS3 DATA C* FILES MOVED , PRUS.*
- KDLS4 DATA C* LOST SPACE , PRUS.*
- KDLS5 DATA C* HOLES LEFT , PRUS.*
- KDLS6 DATA C* HOLES FREED , PRUS.*
- KDLS7 DATA C* TRACKS FREED , PRUS.*
- KDLS8 DATA C* FLAW SPACE , PRUS.*
- KDLS9 DATA C* *
- KDLS$ DATA C* *
- KDLS= DATA 50C CURRENT *B* DISPLAY MESSAGE 012345678901234567890
- CON 0
- ERRNG 512-*+KDLS *K* DISPLAY LEFT SCREEN TOO LONG
- KDRS SPACE 4,10
- * KDRS - *K* DISPLAY RIGHT SCREEN BUFFER.
- KDRS EQU KDLS RIGHT SCREEN IS THE SAME AS THE LEFT
- TITLE MAIN PROGRAM.
- ** MAIN PROGRAM.
- PACKER BSS 0 ENTRY
- SB1 1
- RJ PRS PRESET
- RJ CEO CHECK ENTRY OVERLAP
- SX6 1
- SA6 CEOA ENABLE *CEO* CHECK FOR INTERNAL ERRORS
- EQ PAC2 ENTER LOOP
- * LOOK FOR HOLE AND CHECK FOR OVERLAP OF INTERVENING FILES.
- PAC1 RJ CTC CHECK TERMINATION CONDITIONS
- NZ X1,PAC8 IF TIME TO QUIT
- PAC2 SA1 DB FETCH DEBUG FLAGS
- LX1 59-0
- PL X1,PAC3 IF *CEO* DEBUG AID NOT REQUESTED
- RJ CEO CHECK ENTRY OVERLAP
- PAC3 SA1 KDLS
- LX1 59-0
- PL X1,PAC4 IF SCREEN NOT ASSIGNED
- RJ UKD UPDATE *K* DISPLAY
- PAC4 SX0 =C/ COGITATING./
- RJ MSG
- SA4 F.TFRI
- SA1 IX
- SA3 L.TFRI
- IX3 X1-X3
- PL X3,PAC10 IF PAST END OF TABLE
- SB2 X1
- SX6 X1+B1
- SA6 A1 INCREMENT INDEX
- SA2 X4+B2
- NG X2,PAC5 IF HOLE FOUND
- ZR X2,PAC10 IF END OF TABLE
- RJ CTC CHECK TERMINATION CONDITIONS
- NZ X1,PAC10 IF TIME TO QUIT
- RJ CFL CHECK FILE LENGTH
- ZR X7,PAC2 IF NO LOST SPACE
- RJ RLS RECLAIM LOST SPACE
- EQ PAC2 KEEP LOOKING FOR HOLE
- * HOLE FOUND, PURGE ALL THE CONTIGUOUS HOLES.
- PAC5 SA1 A2 HOLE ENTRY
- SA2 A2+B1 NEXT ENTRY
- BX6 X1
- SA6 HE REMEMBER ORIGINAL HOLE (COLLECTION HOLE)
- RJ PCH PURGE CONTIGUOUS HOLES
- ZR X2,PAC9 IF END OF TABLE
- * FILE ENCOUNTERED, PREPARE FOR POTENTIAL MOVE.
- BX6 X1 HOLE ENTRY
- BX7 X2 FILE ENTRY
- SA6 HE COLLECTION HOLE ENTRY
- SA7 FE SLIDE FILE ENTRY
- MX4 -24
- BX6 -X4*X6
- BX7 -X4*X7
- IX6 X7-X6 HOLE LENGTH
- SA6 HL
- RJ ATD ATTEMPT PRE-MOVE TRACK DELINK
- PL X1,PAC6 IF NO TRACK DELINKED
- EQ PAC2 COLLECTION HOLE IS CLOSED
- PAC6 RJ AFM ATTEMPT FILL MOVE
- NG X1,PAC2 IF EXACT FIT, COLLECTION HOLE IS CLOSED
- ZR X1,PAC7 IF UNSUCCESSFUL FILL MOVE
- EQ PAC1 TRY ANOTHER MOVE, COLLECTION HOLE IS OPEN
- PAC7 RJ ASM ATTEMPT SLIDE MOVE
- NG X1,PAC2 IF UNSUCCESSFUL, COLLECTION HOLE IS CLOSED
- EQ PAC1 SUCCESSFUL MOVE, COLLECTION HOLE IS OPEN
- * TERMINATION. UPDATE ACTIVE COLLECTION HOLE.
- PAC8 SA4 F.TFRI
- SA1 IX
- IX2 X1+X4
- SA5 X2 HOLE ENTRY
- SX6 X1+B1 UPDATE (IX) FOR *UHE*
- SA6 A1
- BX6 X5
- SA6 HE REMEMBER COLLECTION HOLE ENTRY
- RJ UHE UPDATE HOLE CATALOG ENTRY
- EQ PAC10 CLEAR INTERLOCK AND TERMINATE
- * TERMINATION. UPDATE ACTIVE COLLECTION HOLE AT END OF CHAIN.
- PAC9 SA1 HE COLLECTION HOLE ENTRY
- MX0 -24
- BX1 -X0*X1
- SA2 EI CALCULATE HOLE LENGTH
- IX6 X2-X1
- SA6 HL
- RJ UHE UPDATE HOLE ENTRY
- * CLEAR THE UTILITY INTERLOCK AND ISSUE STATISTICS.
- PAC10 RJ CIT CLEAR INTERLOCKS
- SX6 =0
- SA6 MSGA CLEAR LAST *B* DISPLAY MESSAGE ADDRESS
- RJ UKD UPDATE *K* DISPLAY
- BX0 X0-X0 SET NORMAL TERMINATION FLAG
- RJ ISD ISSUE STATISTICS TO DAYFILE
- MESSAGE (=C/ PACKER COMPLETE./),,R
- ENDRUN
- TITLE ERROR TERMINATION PROCESSORS.
- SPACE 4,10
- ** ERROR PROCESSORS.
- QUAL RPV
- * NOTE - QUALIFICATION PREVENTS RJ TRACE ACTION.
- RPV SPACE 4,15
- ** RPV - PROCESS REPRIEVE.
- *
- * ENTRY FROM *RPV*.
- *
- * EXIT ERROR CONDITION RESET.
- *
- * USES X - 0, 1, 6, 7.
- * A - 1, 6, 7.
- * B - 1.
- *
- * CALLS CIT, ISD, RSS.
- *
- * MACROS ABORT, MESSAGE, REPRIEVE, RPVBLK, SYSTEM.
- RPV BSS 0 ENTRY FROM *RPV*
- SB1 1
- SX6 B1
- SA6 RP SET REPRIEVE ACTIVATED
- SA1 RPVA+7
- MX0 -12
- BX0 -X0*X1 ERROR FLAG FROM REPRIEVE BLOCK
- SA1 TEMS+X0 ADDRESS OF CORRESPONDING MESSAGE
- ZR X1,RPV1 IF NO MESSAGE
- MESSAGE X1,,R ISSUE MESSAGE TO DAYFILE
- RPV1 SX1 X0-ODET CHECK ERROR FLAG
- ZR X1,RPV2 IF OPERATOR DROP
- SX1 X0-IDET
- ZR X1,RPV2 IF IDLE DOWN
- EQ RPV3 PROCESS OTHER ERRORS
- RPV2 SA1 ID
- NZ X1,RPV3 IF PREVIOUS IDLE DOWN REQUESTED
- SX6 B1
- SA6 A1 SET IDLE DOWN REQUESTED FLAG
- MESSAGE (=C/ IDLE DOWN BEGUN./),,R
- SX6 B0+
- SA6 RP CLEAR REPRIEVE ACTIVATED FLAG
- REPRIEVE RPVA,RESUME,RPVC RESUME PROGRAM EXECUTION
- RPV3 MESSAGE (=C/ REPRIEVE PROCESSING BEGUN./),,R
- SYSTEM DMB,R GENERATE BINARY DUMP FILE
- SYSTEM DMP,R,0,0 DUMP EXCHANGE PACKAGE
- SYSTEM DMD,R,377777B DUMP FIELD LENGTH
- RJ RSS REMOVE *SSST* STATUS FROM DUMP FILES
- SX6 B1+
- SA1 C COMPLETE FETS SO *CIT* WON-T HANG
- BX7 X1+X6
- SA7 A1
- SA1 I
- BX7 X6+X1
- SA7 A1
- SA1 O
- BX7 X1+X6
- SA7 A1
- RJ CIT CLEAR INTERLOCKS
- SX0 B1 SET ABNORMAL TERMINATION FLAG
- RJ ISD ISSUE STATISTICS TO DAYFILE
- MESSAGE (=C/ REPRIEVE PROCESSING COMPLETE./),,R
- MESSAGE (=C/ PACKER ABORTED./),,R
- REPRIEVE RPVA,RESET,0 RESET ERROR
- RPVA RPVBLK RPV,RPVB REPRIEVE BLOCK
- RPVC EQU /COMSRPV/EEMS+/COMSRPV/PCMS+/COMSRPV/SRMS+/COMSRPV/OTMS
- ,+/COMSRPV/PPMS+/COMSRPV/CPMS+/COMSRPV/TIMS ERROR MASK
- ERR SPACE 4,15
- ** ERR - PROCESS ERROR.
- *
- * *ERR* PROCESSES AN INTERNAL ERROR BY CLEARING THE INTERLOCKS,
- * ISSUING AN ERROR MESSAGE, GENERATING A DUMP, ISSUING THE
- * STATISTICS, AND ABORTING.
- *
- * ENTRY (X0) = ADDRESS OF MESSAGE.
- *
- * USES X - 0, 1.
- * A - 1.
- * B - 1.
- *
- * CALLS CIT, ISD, RSS.
- *
- * MACROS ABORT, MESSAGE, REPRIEVE, SYSTEM.
- ERR BSS 0 ENTRY
- SB1 1
- ZR X0,ERR1 IF NO MESSAGE
- MESSAGE X0,,R ISSUE MESSAGE TO DAYFILE
- * GENERATE DUMPS.
- ERR1 SA1 DF
- ZR X1,ERR2 IF NO DUMP REQUIRED
- SYSTEM DMB,R GENERATE BINARY DUMP FILE
- SYSTEM DMP,R,0,0 DUMP EXCHANGE PACKAGE
- SYSTEM DMD,R,377777B DUMP FIELD LENGTH
- RJ RSS REMOVE *SSST* STATUS FROM DUMP FILES
- * CLEAR INTERLOCKS AND TERMINATE.
- ERR2 RJ CIT CLEAR INTERLOCKS
- SX0 B1 SET ABNORMAL TERMINATION FLAG
- RJ ISD ISSUE STATISTICS TO DAYFILE
- MESSAGE (=C/ PACKER ABORTED./),,R
- REPRIEVE RPVA,SETUP,0B CLEAR REPRIEVE PROCESSING
- ABORT
- SPACE 4,10
- ** TEMS - TABLE OF ERROR MESSAGES.
- *
- * INDEXED BY VALUE OF SYSTEM ERROR FLAG.
- *
- * THESE ERROR FLAGS ARE LISTED IN THE PRIORITY ORDER SCHEME.
- * THE TABLE GENERATED IS INDEPENDENT OF THE ACTUAL VALUES.
- MACRO .1,A,B,M
- .3 IFC NE,$A$$
- A BSS 0
- .2 SET A
- IFC EQ,$B$$,1
- ERR MAX+1 VALUE NOT SPECIFIED
- IF -DEF,B,1
- ERR B (MAX+1 VALUE) NOT DEFINED
- BSSZ B
- .3 ELSE
- IF -DEF,B,1
- .3 SKIP
- ORG .2+B
- IFC NE,$M$$,2
- LOC B
- CON =C/_M_/
- BSS 0
- .3 ENDIF
- .1 ENDM
- TEMS .1 MXET START TABLE AND ZERO MAX WORDS
- * ERROR FLAGS AND MESSAGES.
- .1 TIET,( USER BREAK ONE.)
- .1 TAET,( USER BREAK TWO.)
- .1 ARET,( ARITHMETIC ERROR.)
- .1 ITET,( SCP INVALID TRANSFER ADDRESS.)
- .1 PSET,( PROGRAM STOP ERROR.)
- .1 PPET,( PPU ABORT.)
- .1 CPET,( CPU ABORT.)
- .1 PCET,( PPU CALL ERROR.)
- .1 CLET,( COMMAND LIMIT.)
- .1 MLET,( MESSAGE LIMIT.)
- .1 TLET,( TIME LIMIT ERROR.)
- .1 FLET,( FILE LIMIT ERROR.)
- .1 TKET,( TRACK LIMIT ERROR.)
- .1 SRET,( SRU LIMIT ERROR.)
- .1 FSET,( FORCED ERROR.)
- .1 RCET,( JOB HUNG IN AUTORECALL.)
- .1 ODET,( OPERATOR DROP.)
- .1 IDET,( IDLE DOWN.)
- * SPET - BEGINING OF SPECIAL ERRORS.
- .1 STET,( SUSPENSION TIMEOUT.)
- .1 ECET,( ECS PARITY ERROR.)
- .1 RSET,( SUBSYSTEM RECOVERED DURING LEVEL 3 DEADSTART.)
- .1 SSET,( SUBSYSTEM ABORTED.)
- .1 RRET,( OPERATOR RERUN.)
- .1 OKET,( OPERATOR KILL.)
- * NRET - BEGINNING OF NON-REPRIEVABLE ERRORS.
- .1 DRET,( DEADSTART RERUN.)
- .1 RAET,( RECOVERY ABORT.)
- .1 JSET,( JOB STEP ABORT.)
- .1 SVET,( SECURITY VIOLATION.)
- .1 SYET,( SYSTEM ABORT.)
- .1 PEET,( CPU OR CM PARITY ERROR.)
- .1 SWET,( SOFTWARE ERROR ABORT.)
- .1 ORET,( OVERRIDE OF ERROR CONDITION.)
- * MXET - MAXIMUM NUMBER OF ERROR FLAGS.
- .1 MXET REALIGN ORG
- PURGMAC .1
- SPACE 4,10
- * UNQUALIFIED COMMON DECKS FOR *RPV* AND *ERR* USE.
- QUAL$ EQU 0 FORCE UNQUALIFIED COMMON DECKS
- *CALL COMCSYS
- SPACE 4,10
- QUAL *
- ERR EQU /RPV/ERR
- RPV EQU /RPV/RPV
- RPVA EQU /RPV/RPVA
- RPVB EQU /RPV/RPVB
- RPVC EQU /RPV/RPVC
- TITLE RJ TRACE PROCESSORS.
- ** RJ TRACE PROCESSORS.
- QUAL RJT
- * NOTE - QUALIFICATION PREVENTS RJ TRACE ACTION.
- RJT SPACE 4,25
- ** RJT - RETURN JUMP TRACE.
- *
- * THIS ROUTINE PLACES DEBUG INFORMATION IN A ONE WAY *CIO*
- * BUFFER. THIS INFORMATION IS IN BLOCKS BEGINNING WITH
- * 30/RJ CALLEE,30/EQ CALLER.
- *
- * ENTRY CALLED VIA + RJ RJT
- * - RJ SUB
- * WHERE SUB IS THE TARGET SUBROUTINE.
- *
- * EXIT TO *SUB*+1 WITH (SUB) SET TO PROPER RETURN ADDRESS,
- * STACK VOIDED.
- *
- * USES ALL.
- *
- * RESTORES ALL.
- *
- * CALLS RSR, SVR.
- *
- * MACROS VOID.
- RJT SUBR ENTRY ONLY
- RJ SVR SAVE ALL REGISTERS
- SB1 1
- SA1 RJTX FETCH RETURN INSTRUCTION
- BX6 X1
- LX1 30
- SA1 X1-1 FETCH CALLING INSTRUCTION
- SA6 X1 STORE RETURN IN TARGET SUBROUTINE
- MX2 -30
- BX6 X2*X6 30/EQ INSTRUCTION, 30/0
- BX1 -X2*X1 30/0, 30/RJ INSTRUCTION
- BX7 X6+X1
- LX7 30 FIRST WORD FOR DEBUG BUFFER
- MX2 -18
- SX1 X1+B1 FWA OF EXECUTABLE CODE IN SUBROUTINE
- LX2 30
- LX1 30
- BX6 X2*X6
- BX1 -X2*X1
- BX6 X6+X1
- SA6 RJTA SET INSTRUCTION TO CALL SUBROUTINE
- VOID VOID ALL TYPES OF INSTRUCTION STACKS
- SA1 F.TRJH INSERT INTO ONE WAY CIO BUFFER
- SA2 L.TRJH
- SX3 X2-10D
- NG X3,RJT2 IF TABLE IS TOO SMALL
- SA3 X1 GET *IN*
- SB2 X3
- SA7 X1+B2 STORE AT *IN*
- SX6 X3+B1 NEXT *IN*
- IX3 X3-X2 *IN* - *LIMIT*
- NG X3,RJT1 IF NOT AT *LIMIT*
- SX6 B1 RESET *IN* TO *FIRST*
- RJT1 SA6 A3 STORE *IN*
- RJT2 RJ RSR RESTORE ALL REGISTERS
- RJTA EQ * EXIT TO TARGET SUBROUTINE
- RJTB BSSZ 3*8 REGISTER SAVE AREA
- SPACE 4,10
- * UNQUALIFIED PSEUDO COMMON DECKS FOR *RJT* USE.
- QUAL$ EQU 0 FORCE UNQUALIFIED COMMON DECKS
- RSR$ EQU RJTB REGISTER SAVE AREA FOR RSR
- RSR CTEXT COMCRSR - RESTORE REGISTERS. *MODIFIED FOR PACKER*
- RSR SPACE 4,10
- IF -DEF,QUAL$,1
- QUAL COMCRSR
- BASE D
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- RSR SPACE 4,10
- *** RSR - RESTORE ALL REGISTERS.
- *
- * AUTHOR UNKNOWN. CIRCA 1971.
- * P. C. TAM 77/07/05.
- *
- * RSR RESTORES B, A, AND X REGISTERS FROM A SAVE AREA.
- RSR SPACE 4,10
- *** RSR RESTORES B, A, AND X REGISTERS FROM A SPECIFIED REGISTER
- * SAVE AREA. THE FORMAT OF THE REGISTERS IN THE SAVE AREA IS -
- * B0, B1, ..., B7, A0, A1, ..., A7, X0, X1, ..., X7.
- * EACH REGISTER OCCUPIES A FULL WORD WITH B AND A REGISTER
- * VALUES IN BITS 17-0.
- *
- * ENTRY (X1) = ADDRESS OF REGISTER SAVE AREA.
- * IF RSR$ IS DEFINED THEN ITS VALUE IS THE FWA OF A
- * PERMANENT REGISTER SAVE AREA AND IT IS USED INSTEAD.
- *
- * EXIT ALL REGISTERS SET TO THE CONTENT OF THE REGISTER
- * SAVE AREA.
- *
- * USES X - 0, 1, 2, 3, 4, 5, 6, 7.
- * B - 1, 2, 3, 4, 5, 6, 7.
- * A - 0, 1, 2, 3, 4, 5, 6, 7.
- *
- * CALLS NONE.
- SAVEB EQU 0
- SAVEA EQU 8
- SAVEX EQU 16
- RSR SPACE 4,10
- RSR SUBR ENTRY/EXIT
- IF -DEF,B1=1,1
- SB1 1
- * SET UP FINAL -B- REGISTERS RESTORE AT (RSR4) ET SEQ.
- RSR. IF DEF,RSR$
- SB7 RSR$ (B7) = FWA OF REGISTER SAVE AREA
- RSR. ELSE
- SB7 X1+ (B7) = FWA OF REGISTER SAVE AREA
- RSR. ENDIF
- MX4 -18
- SA1 B7+SAVEB+7 (X1) = SAVED (B7)
- BX5 X4
- LX4 30
- SB4 4
- BX0 X4*X5 (X0) = 77770000007777000000B
- * SET UP RESTORE B REGISTER INSTRUCTIONS.
- RSR2 SA2 A1-B1 (X2) = SAVED (B.N-1)
- SA3 RSR4+B4-1
- BX1 -X5*X1
- SB4 B4-B1
- BX2 -X5*X2
- LX1 30
- BX3 X0*X3
- IX6 X1+X2
- BX7 X6+X3 (X7) = 30/SB.N B6+K, 30/SB.N-1 B6+K
- SA7 A3
- SA1 A2-B1 (X1) = SAVED (B.N)
- NZ B4,RSR2 IF STILL MORE B REGISTERS TO GO
- * THE MOST LIKELY CANDIDATE FOR THE DANGER DISCUSSED IN THE
- * NEXT PARAGRAPH IS THE SYSTEM COMMUNICATION CELL (RA.MTR).
- * ACCORDINGLY, WE WAIT FOR IT TO CLEAR BEFORE PROCEEDING.
- SA2 B7+SAVEA+6 (X2) = SAVED (A6)
- RSR3 SA1 RA.MTR
- NZ X1,RSR3 IF (RA.MTR) NOT CLEAR
- * A BIT OF CARE IS SPENT ON RESTORATION OF (A6) AND (A7).
- * WE WISH TO AVOID HAVING THE CONTENTS OF THE WORD THAT THE
- * STORE REGISTER IS POINTING TO GET CHANGED (I.E. BY A PP)
- * WHILE WE ARE RESTORING (A6) OR (A7). ABOUT THE ONLY THING
- * THAT CAN BE DONE TO MINIMIZE THIS POSSIBILITY IS TO GET THE
- * LOAD AND THE STORE AS CLOSE TOGETHER AS POSSIBLE. BY KEEPING
- * THEM IN THE SAME WORD, WE HAVE AT LEAST ENSURED THAT WE WILL
- * NOT BE EXCHANGED AFTER THE LOAD BUT BEFORE THE STORE.
- * BARRING DELAYS IN THE HOPPER, THIS SHOULD REDUCE THE DANGER
- * PERIOD TO A FEW MINOR CYCLES.
- SA3 A2+B1 (X3) = SAVED (A7)
- + SA4 X2-0
- BX6 X4
- SA6 A4-B0 RESTORE (A6)
- + SA5 X3-0
- BX7 X5
- SA7 A5-B0 RESTORE (A7)
- * RESTORE (X6), (X7).
- SA1 B7+SAVEX+6
- SA4 A1+B1
- BX6 X1 RESTORE (X6)
- LX7 X4 RESTORE (X7)
- BX0 -X0-X0
- SB6 X0-0 (B6) = -0
- * RESTORE (A0),(X0).
- SA4 B7+SAVEA+0
- SA5 B7+SAVEX+0
- SA0 X4+B6
- BX0 X5
- * RESTORE (A) - 1,2,3,4.
- * (X) - 1,2,3,4.
- ECHO 4,N=(1,2,3,4)
- SA4 A4+B1 (X4) = SAVED (A.N)
- SA5 A5+B1 (X5) = SAVED (X.N)
- SA.N X4+B6
- BX.N X5
- * RESTORE (A5),(X5)-- THE ORIGINAL (X5) ARE BROKEN APART INTO
- * (B1) THRU (B5) AS DISPLAYED BELOW. THIS ALLOWS US TO RESTORE
- * (A5).
- * DISASSEMBLY IS FROM LEFT TO RIGHT, TOP TO BOTTOM.
- * REASSEMBLY IS FROM RIGHT TO LEFT, BOTTOM TO TOP.
- * 5 4 3 2 1 55
- * 9 8 7 6 5 098
- * ..............................................................
- * ++++++++++++
- * (B1) ++++++++++++
- * (B2) ++++++++++++
- * (B3) ++++++++++++
- * (B4) ++++++++++++++++++
- * ++ (B5)
- SA5 A5+B1 (X5) = SAVED (X5)
- ECHO 2,N=(1,2,3)
- UX5,B.N X5
- LX5 11
- UX5,B4 X5
- LX5 11+18
- SB5 X5+B6
- SA5 B7+SAVEA+5 (X5) = SAVED (A5)
- SA5 X5+B6 RESTORE (A5)
- * REASSEMBLE (X5).
- SX5 B5+B6
- LX5 60-11-18
- PX5 X5,B4
- ECHO 2,N=(3,2,1)
- LX5 -11
- PX5 X5,B.N
- * RESTORE (B) - 0,1,2,3,4,5,6,7.
- RSR4 BSS 0
- ECHO 2,U=(1,3,5,7),L=(0,2,4,6)
- SB.U B6+*
- SB.L B6+*
- EQ RSRX RETURN
- RSR SPACE 4,10
- BASE *
- QUAL$ IF -DEF,QUAL$
- QUAL *
- RSR EQU /COMCRSR/RSR
- RSR= EQU /COMCRSR/RSR
- QUAL$ ENDIF
- RSR ENDX
- SVR$ EQU RJTB REGISTER SAVE AREA FOR SVR
- SVR CTEXT COMCSVR - SAVE ALL REGISTERS. *MODIFIED FOR PACKER*
- SVR SPACE 4,10
- IF -DEF,QUAL$,1
- QUAL COMCSVR
- BASE D
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- SVR SPACE 4,10
- *** SVR - SAVE ALL REGISTERS.
- *
- * AUTHOR UNKNOWN. CIRCA 1971.
- * P. C. TAM. 77/06/18.
- *
- * SVR SAVES ALL REGISTERS IN A SPECIFIED REGISTER SAVE AREA.
- SVR SPACE 4,10
- *** SVR SAVES ALL REGISTERS IN A SPECIFIED REGISTER SAVE AREA.
- * THE REGISTERS ARE SAVED IN THE FOLLOWING ORDER -
- * B0, B1, ..., B7, A0, A1, ..., A7, X0, X1, ..., X7.
- * EACH REGISTER OCCUPIES A FULL WORD WITH B AND A REGISTER
- * VALUES IN BITS 17-0. B AND A REGISTERS ARE SIGN EXTENDED.
- * MINUS ZERO (-0) IS PRESERVED IN ALL REGISTERS.
- *
- * ENTRY BITS 17-0 OF THE WORD FROM WHICH SVR= WAS CALLED
- * CONTAIN THE ADDRESS OF THE REGISTER SAVE AREA.
- * IF SVR$ IS DEFINED THEN ITS VALUE IS THE FWA OF A
- * PERMANENT REGISTER SAVE AREA AND IT IS USED INSTEAD.
- *
- * EXIT (SAVE - SAVE+7) = B REGISTERS.
- * (SAVE+8 - SAVE+15) = A REGISTERS.
- * (SAVE+16 - SAVE+23) = X REGISTERS.
- *
- * USES A - 0, 1, 2, 3, 4, 5, 6, 7.
- * B - 1, 2, 3, 4, 5, 6, 7.
- * X - 0, 1, 2, 3, 4, 5, 6, 7.
- *
- * CALLS NONE.
- SAVEB EQU 0
- SAVEA EQU 8
- SAVEX EQU 16
- SVR SUBR ENTRY/EXIT
- * CHECK FOR (B1) = 1. IF NOT, SAVE (B1) THE HARD WAY BY
- * EXECUTING THE RJ SEQUENCE AT *SVR2*. IF BIT
- * 2**N WAS ON IN (B1), THEN THE *RJ* AT (SVR2+2*N+1) WILL BE
- * EXECUTED, RESULTING IN AN /EQ SVR2+2*N+1/. IF BIT 2**N WAS
- * NOT ON IN (B1), THEN THE *RJ* WILL NOT BE EXECUTED. BY
- * QUERYING (SVR2+2*N+1), ONE CAN DETERMINE WHETHER OR NOT THE
- * BIT 2**N WAS ON IN (B1) BY THE PRESENCE OF AN *EQ* OR AN *RJ*
- * INSTRUCTION.
- NG B1,SVR2 IF (B1) .LE. 0 (PRESERVE -0)
- SB1 B1-1
- ZR B1,SVR4 IF (B1) = 1
- SB1 B1+1 RESTORE (B1)
- * *RJ* SEQUENCE FOR SAVING (B1).
- SVR2 PL B1,*+2
- + RJ *
- B.NE.1 DUP 17
- + SB1 B1+B1
- NO
- PL B1,*+2
- + RJ *
- B.NE.1 ENDD
- * FILLER BECAUSE RJ-S MUST BE 2 WORDS APART FOR RESTORE.
- + SB0 B0+
- SVR3 RJ * (B1) = 1/(B1) .NE. 1 FLAG
- * SAVE (A) - 4,5,6,7.
- * (X) - 4,5,6,7.
- SVR4 SB1 A7-B0 SAVE (A7) TEMPORARILY.
- SA7 SVRA SAVE (X7) TEMPORARILY
- SX7 A5-B0
- SA7 SVRB SAVE (A5) TEMPORARILY
- BX7 X5
- SA7 SVRC SAVE (X5) TEMPORARILY
- SVR. IF DEF,SVR$
- SX5 SVR$ (X5) = FWA OF RSA
- SVR. ELSE
- SA5 SVRX (X5) = 30/EQ CALLER+1, 30/0
- LX5 30
- SA5 X5-1 (X5) = 30/RJ SVR=, 30/FWA OF RSA
- SVR. ENDIF
- SX7 B1-B0
- SB1 1
- SA7 X5+SAVEA+7 (A7) TO SAVE AREA
- SX7 A6-B0
- SA6 X5+SAVEX+6 (X6) TO SAVE AREA
- SA7 A7-B1 (A6) TO SAVE AREA
- BX6 X4
- SX7 A4-B0
- SA6 A6-2 (X4) TO SAVE AREA
- SA7 A7-2 (A4) TO SAVE AREA
- * SAVE (A) - 0,1,2,3.
- * (X) - 0,1,2,3.
- SV=AX ECHO ,N=(3,2,1,0)
- BX6 X.N
- SX7 A.N-B0
- SA6 A6-B1 (X.N) TO SAVE AREA
- SA7 A7-B1 (A.N) TO SAVE AREA
- SV=AX ENDD
- * SAVE (X7), (A5), (X5) FINALLY.
- SA2 SVRA (X2) = SAVED (X7)
- SA3 SVRB (X3) = SAVED (A5)
- SA4 SVRC (X4) = SAVED (X5)
- BX6 X2
- LX7 X3
- SA6 X5+SAVEX+7 (X7) TO SAVE AREA
- SA7 X5+SAVEA+5 (A5) TO SAVE AREA
- BX6 X4
- SA6 X5+SAVEX+5 (X5) TO SAVE AREA
- * SAVE (B) - 0,1,2,3,4,5,6,7.
- BX6 X6-X6
- SA6 X5+SAVEB+0 (B0) = 0 TO SAVE AREA
- SX7 B1
- SA7 A6+B1
- SV=B ECHO ,U=(2,4,6),L=(3,5,7)
- SX6 B.U-B0
- SX7 B.L-B0
- SA6 A7+B1
- SA7 A6+B1
- SV=B ENDD
- * SAVE (B1).
- SA5 SVR3 (X5) = (B1) = 1/(B1) .NE. 1 FLAG
- SX4 0100B (X4) = *RJ* OP CODE
- SX3 B1
- LX3 42-0-1 BIT FOR RECONSTRUCTION OF B1
- SX6 A5
- LX4 29-11
- BX6 X4+X6 (X6) = 30/0, 30/RJ *
- LX6 59-29
- SA6 A5 RESTORE RJ *
- LX5 59-56
- BX7 X7-X7
- PL X5,SVRX IF (B1) = 1
- SB2 B1+B1
- * ASSEMBLE ORIGINAL (B1) INTO (X7).
- SVR5 SA5 A5-B2
- IX3 X3+X3
- SX6 A5
- LX5 59-56
- BX6 X4+X6 (X6) = 30/0, 30/RJ *
- PL X5,SVR6 IF BIT WAS CLEAR
- BX7 X7+X3
- SVR6 LX6 59-29 RESTORE RJ *
- SA6 A5
- PL X3,SVR5 IF MORE BITS TO ASSEMBLE
- * FINALLY SAVE (B1).
- AX7 42 SIGN EXTEND
- SA7 A7-7+1 (B1) TO SAVE AREA
- EQ SVRX RETURN
- * TEMPORARY SAVE AREAS.
- SVRA BSS 1 SAVE FOR (X7)
- SVRB BSS 1 SAVE FOR (A5)
- SVRC BSS 1 SAVE FOR (X5)
- SVR SPACE 4,10
- BASE *
- QUAL$ IF -DEF,QUAL$
- QUAL *
- SVR EQU /COMCSVR/SVR
- SVR= EQU /COMCSVR/SVR
- QUAL$ ENDIF
- SVR ENDX
- QUAL *
- RJT EQU /RJT/RJT
- TITLE SUBROUTINES.
- AFM SPACE 4,25
- ** AFM - ATTEMPT FILL MOVE.
- *
- * ENTRY (HL) = COLLECTION HOLE LENGTH.
- * (HE) = COLLECTION HOLE ENTRY.
- * (FE) = SLIDE FILE ENTRY.
- * (IX) = INDEX OF SLIDE FILE.
- * (IX)-1 = INDEX OF COLLECTION HOLE.
- *
- * EXIT (X1) = 0, IF NO FILL MOVE WAS POSSIBLE.
- * (X1) .LT. 0, IF AN EXACT FIT OCCURRED.
- * THE COLLECTION HOLE IS CLOSED.
- * (X1) .GE. 0, IF EITHER NO FILL MOVE WAS POSSIBLE, OR
- * THE FILL MOVE DID NOT EXACTLY FILL THE
- * COLLECTION HOLE.
- * THE COLLECTION HOLE IS OPEN.
- * (HE) = UPDATED.
- * (HL) = UPDATED.
- *
- * USES X - ALL.
- * A - 1, 2, 3, 4, 5, 6, 7.
- * B - 2, 3.
- *
- * CALLS CDF, RCE, UFF.
- AFM6 SX1 B0+ INDICATE NO MOVE POSSIBLE
- AFM SUBR ENTRY/EXIT
- SA1 NF
- SA2 LT
- NZ X1,AFM6 IF FILL MOVE TECHNIQUE IS NOT TO BE USED
- NZ X2,AFM6 IF *TFHL* TABLE IS NOT ACTIVE
- SX6 B1
- LX6 24-0 LARGEST FILE SIZE + 1
- SA6 AFMA CLEAR BEST CANDIDATE SIZE
- SX6 -1
- SA6 FX CLEAR BEST CANDIDATE INDEX
- * SEARCH FOR FILE TO JUMP FILL INTO COLLECTION HOLE.
- SA1 F.TFRI
- SA2 L.TFRI
- SA3 F.TFHL
- SA4 IX SLIDE FILE INDEX
- SB2 X2 SEARCH INDEX + 1 (LENGTH)
- SB3 X4
- SA5 HL HOLE LENGTH
- AFM1 SB2 B2-B1
- LE B2,B3,AFM3 IF SEARCH COMPLETE (SEARCH .LE. SLIDE)
- SA2 X1+B2 ENTRY
- NG X2,AFM1 IF HOLE
- SA4 X3+B2 CHECK LENGTH
- LX2 59-57
- NG X2,AFM1 IF IMMOVABLE FILE
- MX2 -24
- LX4 24
- BX4 -X2*X4
- SX2 B1+B1
- IX6 X4+X2 ADD SYSTEM AND EOI SECTORS
- IX2 X5-X6
- ZR X2,AFM2 IF EXACT FIT
- NG X2,AFM1 IF FILE TOO LARGE
- SA4 AFMA BEST CANDIDATE THUS FAR
- IX4 X6-X4
- PL X4,AFM1 IF NOT SMALLER FILE
- AFM2 SX7 B2
- SA6 AFMA NEW BEST CANDIDATE LENGTH
- SA7 FX NEW BEST CANDIDATE INDEX
- NZ X2,AFM1 IF NOT EXACT FIT, CONTINUE SEARCH
- AFM3 SA2 AFMA BEST CANDIDATE LENGTH
- SX4 MNHS
- ERRNG MNHS-3 MUST CONTAIN SYSTEM AND EOI SECTORS
- IX6 X5-X2 HOLE-FILE-SS-EOI
- SA6 AFMB POTENTIAL NEW COLLECTION HOLE LENGTH
- ZR X6,AFM4 IF EXACT FIT
- IX4 X6-X4 HOLE-FILE-SS-EOI-MNHS
- NG X4,AFM6 IF BEST NOT GOOD ENOUGH
- SA2 EF
- NZ X2,AFM6 IF EXACT FIT REQUIRED
- SA2 L.TAPE
- ZR X2,AFM6 IF NO PFC AVAILABLE AND NOT EXACT FIT
- * COPY THE FILL FILE INTO THE COLLECTION HOLE.
- AFM4 SA2 FX FILL FILE INDEX
- NG X2,AFM6 IF NEVER FOUND A VALID CANDIDATE
- SX0 =C/ INTERNAL ERROR, HOLE LENGTH NEGATIVE IN AFM./
- NG X6,ERR IF HOLE LENGTH NEGATIVE
- SB3 X2
- SA2 X1+B3 BASE + OFFSET
- BX6 X2
- SA6 FF FILL FILE ENTRY
- SA1 HE COLLECTION HOLE ENTRY
- MX4 -24
- BX6 -X4*X1
- SA6 O+6 OUTPUT I/O SETUP
- BX7 -X4*X2
- SA7 I+6 INPUT I/O SETUP
- SA7 FB RSA OF FILE DATA
- SA1 AFMA FILE LENGTH + SS + EOI
- SX7 B1
- IX6 X1-X7 REMOVE EOI FROM LENGTH
- SA6 FS FILE SIZE + SS
- SA1 FF
- RJ RCE SET (A0) FOR *CDF*
- SA1 FF FILE *TFRI* ENTRY
- RJ CDF COPY DATA FOR FILE
- RJ UFF UPDATE AFTER FILL FILE MOVE
- SA3 FS FILES SIZE + SYSTEM SECTOR
- SA4 JM JUMP FILL MOVE STATISTICS
- SX7 B1
- IX3 X3-X7 REMOVE SYSTEM SECTOR FROM FILE SIZE
- IX4 X4+X7 INCREMENT COUNT
- LX3 30
- IX7 X3+X4
- SA7 A4 UPDATE STATISTICS
- SA1 AFMB
- NZ X1,AFM5 IF NOT AN EXACT FIT
- SX1 -B1 INDICATE COLLECTION HOLE CLOSED
- EQ AFMX RETURN
- AFM5 SX1 B1 INDICATE COLLECTION HOLE OPEN
- EQ AFMX RETURN
- AFMA CON 0 BEST CANDIDATE LENGTH
- AFMB CON 0 ZERO IF EXACT FIT (HOLE - FILE - SS - EOI)
- ASM SPACE 4,10
- ** ASM - ATTEMPT SLIDE MOVE.
- *
- * ENTRY (HL) = COLLECTION HOLE LENGTH.
- * (HE) = COLLECTION HOLE ENTRY.
- * (FE) = SLIDE FILE ENTRY.
- * (IX) = INDEX OF SLIDE FILE.
- * (IX)-1 = INDEX OF COLLECTION HOLE.
- *
- * EXIT (X1) .GE. 0, IF THE FILE WAS MOVED.
- * THE COLLECTION HOLE IS OPEN.
- * (X1) .LT. 0, IF THE FILE WAS NOT MOVED.
- * THE COLLECTION HOLE IS CLOSED.
- *
- * USES X - 1, 2, 3, 4, 5, 6, 7.
- * A - 1, 2, 3, 4, 5, 6, 7.
- * B - 2.
- *
- * CALLS CDF, CFL, RCE, UFE, UHE.
- ASM SUBR ENTRY/EXIT
- * SET UP I/O FOR POTENTIAL MOVE.
- SA1 HE COLLECTION HOLE ENTRY
- SA2 FE SLIDE FILE ENTRY
- MX4 -24
- BX6 -X4*X1
- SA6 O+6 OUTPUT I/O SET UP
- BX7 -X4*X2
- SA7 I+6 INPUT I/O SET UP
- SA7 FB REMEMBER WHERE FILE STARTED
- * CHECK IF THE FILE FITS IN THE COLLECTION HOLE.
- SA1 F.TFRI
- SA2 IX
- SB2 X2
- SA2 X1+B2 (A2), (X2) ENTRY CONDITIONS FOR *CFL*
- RJ CFL GET FILE LENGTH
- SX5 B1 ADD SYSTEM SECTOR
- IX6 X6+X5
- SA6 FS
- SA5 HL
- IX3 X5-X6
- ZR X3,ASM4 IF HOLE TOO SMALL
- NG X3,ASM4 IF HOLE TOO SMALL
- * DETERMINE IF THE MOVE IS PRACTICAL.
- SA1 NS
- NZ X1,ASM4 IF SLIDE MOVE TECHNIQUE IS NOT TO BE USED
- SA1 F.TFRI
- SA2 IX
- SA3 LT *TFHL TABLE ACTIVE* FLAG
- SB2 X2-1
- SA2 X1+B2 ENTRY MINUS ONE
- ASM1 SA2 A2+B1 GET NEXT ENTRY
- NG X2,ASM3 IF HOLE
- NZ X2,ASM2 IF NOT EOI
- SA2 EI RSA OF EOI
- EQ ASM3 CHECK SIZE OF MOVE
- ASM2 BX1 X2
- LX1 59-57 CHECK IF IMMOVABLE FILE
- NG X1,ASM4 IF FILE MAY NOT BE MOVED
- NZ X3,ASM1 IF *TFHL* TABLE IS NOT ACTIVE
- RJ CFL GET FILE LENGTH
- SX5 B1 + SS + EOI - 1
- IX6 X6+X5
- SA5 HL
- IX3 X5-X6
- ZR X3,ASM4 IF HOLE TOO SMALL
- NG X3,ASM4 IF HOLE TOO SMALL
- SA3 LT REFETCH *TFHL TABLE ACTIVE* FLAG
- EQ ASM1 GET NEXT ENTRY
- ASM3 SA3 FB RSA OF START TO MOVE
- MX4 -24
- BX1 -X4*X2 RSA OF END OF MOVE
- IX4 X1-X3 TOTAL SECTORS TO MOVE
- IX5 X4/X5 DATA/HOLE SIZE
- SA4 MR
- IX4 X4-X5
- ZR X4,ASM4 IF NOT WARRANTED
- PL X4,ASM5 IF MOVE WARRANTED
- * SKIP HOLE.
- ASM4 RJ UHE UPDATE HOLE CATALOG ENTRY
- SX1 -B1 INDICATE COLLECTION HOLE CLOSED
- EQ ASMX RETURN
- * MOVE ONE FILE.
- ASM5 SA1 FE
- RJ RCE SET (A0) FOR *CDF*
- SA1 FE FILE *TFRI* ENTRY
- RJ CDF COPY FILE INTO HOLE
- RJ UFE UPDATE CATALOG ENTRY FOR FILE
- SA3 FS FILE SIZE + SYSTEM SECTOR
- SA4 SM JUMP FILL MOVE STATISTICS
- SX7 B1
- IX3 X3-X7 REMOVE SYSTEM SECTOR FROM FILE SIZE
- IX4 X4+X7 INCREMENT COUNT
- LX3 30
- IX7 X3+X4
- SA7 A4 UPDATE STATISTICS
- SX1 B1+ INDICATE COLLECTION HOLE OPEN
- EQ ASMX RETURN
- ATD SPACE 4,25
- ** ATD - ATTEMPT PRE-MOVE TRACK DELINK.
- *
- * ENTRY (HL) = COLLECTION HOLE LENGTH.
- * (HE) = COLLECTION HOLE ENTRY.
- * (IX)-1 = INDEX OF COLLECTION HOLE.
- *
- * EXIT (X1) .LT. 0, IF A TRACK OR TRACKS HAVE BEEN DELINKED.
- * THE COLLECTION HOLE IS CLOSED.
- * (X1) .GE. 0, IF NO TRACKS WERE DELINKED.
- * THE COLLECTION HOLE IS OPEN.
- * (IX) = UPDATED IF NEEDED TO REPROCESS CLOSED
- * COLLECTION HOLE ENTRY.
- *
- * USES X - 1, 2, 3, 5, 6, 7.
- * A - 1, 2, 3, 5, 6, 7.
- *
- * CALLS CRA, FLT, UHE, VHS.
- ATD2 SX1 B0+ INDICATE NO TRACKS DELINKED
- ATD SUBR ENTRY/EXIT
- SA1 NP
- NZ X1,ATD2 IF NO PRE-MOVE TRACK DELINK IS TO BE DONE
- SA5 HE GET HOLE ENTRY
- RJ CRA CONVERT RANDOM ADDRESS
- RJ FLT FIND LAST TRACK
- ZR X6,ATD2 IF TRACK AT END OF IAPF CHAIN
- RJ VHS VERIFY HOLE SIZE
- NG X7,ATD2 IF NO TRACKS CAN BE DELINKED
- SA1 HS
- SA2 DS
- BX6 X1
- BX7 X2
- SA1 L.TFRI
- SA6 ATDA SAVE HOLE STATISTICS PRIOR TO *UHE*
- SA7 ATDB SAVE TRACK STATISTICS PRIOR TO *UHE*
- BX6 X1
- SA6 ATDC SAVE *TFRI* LENGTH PRIOR TO *UHE*
- RJ UHE UPDATE HOLE ENTRY
- SA1 ATDA HOLE STATISTICS PRIOR TO *UHE*
- SA2 DS TRACKS DROPPED AFTER *UHE*
- SA5 ATDB TRACKS DROPPED STATISTICS
- BX6 X1
- IX7 X2-X5 CHANGES MADE BY *UHE*
- SA6 HS RESTORE HOLE STATISTICS
- SA1 HR HOLES REMOVED
- MX2 30
- BX7 X2*X7
- IX7 X1+X7 ADD SPACE DELINKED
- SA7 A1
- SA2 L.TFRI *TFRI* LENGTH AFTER *UHE*
- SA3 ATDC *TFRI* LENGTH BEFORE *UHE*
- IX6 X2-X3
- NG X6,ATD1 IF THE HOLE ENTRY WAS DELETED FROM *TFRI*
- SA2 IX
- SX6 X2-1
- SA6 A2 DECREMENT *IX* TO REPROCESS HOLE
- ATD1 SX1 -B1 INDICATE COLLECTION HOLE CLOSED
- EQ ATDX RETURN
- ATDA CON 0 STORAGE FOR HOLES LEFT STATISTICS
- ATDB CON 0 STORAGE FOR TRACKS DROPPED STATISTICS
- ATDC CON 0 STORAGE FOR *TFRI* LENGTH
- CDF SPACE 4,20
- ** CDF - COPY DATA FOR FILE.
- *
- * ENTRY (I+6) = RSA OF FILE DATA.
- * (O+6) = RSA OF TARGET.
- * (FB) = RSA OF FILE DATA.
- * (FS) = FILE SIZE FROM PFC ( + 1 FOR SS).
- * (A0) = ADDRESS OF PFC OR ZERO FOR NO PFC UPDATE IN SS.
- * (X1) = FILE *TFRI* ENTRY.
- *
- * EXIT DATA COPIED TO TARGET.
- * PFC IN SYSTEM SECTOR UPDATED IF REQUESTED.
- * TO *ERR* IF ERROR.
- *
- * USES X - ALL.
- * A - 1, 2, 3, 4, 5, 6, 7.
- * B - 5, 7.
- *
- * CALLS CRA, FPI, MSG, USS.
- *
- * MACROS BKSPRU, READ, REWRITE, REWRITEF, REWRITER, SYSTEM.
- CDF9 SA1 DM UPDATE STATISTICS FOR *NO CHANGE* OPTION
- SA2 FS
- SX6 B1
- IX2 X2-X6 REMOVE SYSTEM SECTOR FROM FILE SIZE
- LX2 30
- IX6 X2+X6 COUNT FILE
- IX6 X1+X6
- SA6 A1+
- CDF SUBR ENTRY/EXIT
- BX6 X1 FILE *TFRI* ENTRY
- SA6 CDFB
- SX0 =C/ INTERCHANGING HOLE-FILE./
- RJ MSG
- SA1 NC
- NZ X1,CDF9 IF NO CHANGES ARE TO BE MADE TO THE DEVICE
- SYSTEM MPF,R,I,4S6 READ SYSTEM SECTOR
- SA5 O+6
- RJ CRA
- SA1 I+1
- RJ USS UPDATE SYSTEM SECTOR
- SYSTEM MPF,R,O,5S6 WRITE SYSTEM SECTOR
- SX6 1
- SA6 CDFA SET NO EOR FLAG INITIALLY
- CDF1 SA1 O+2 IN
- SA3 A1+B1 OUT
- BX6 X1
- BX7 X3
- SA6 I+2
- SA7 A6+B1
- READ I,R
- SA1 I+2 IN
- SA3 A1+B1
- BX6 X1
- BX7 X3
- SA6 O+2
- SA7 A6+B1
- SA1 X2
- LX1 59-9
- NG X1,CDF6 IF EOI
- LX1 9-4
- LX2 X1,B1
- NG X1,CDF2 IF EOR OR EOF
- REWRITE O,R
- SA1 BF INCREMENT BUFFER FULL COUNT
- SX6 X1+B1
- SA6 A1
- SA6 CDFA SET NO EOR FLAG
- EQ CDF1 LOOP
- CDF2 NG X2,CDF3 IF EOF
- REWRITER O,R
- SX6 B0+
- SA6 CDFA CLEAR NO EOR FLAG
- EQ CDF1 LOOP
- CDF3 SA1 O+2 CHECK FOR DATA WITH EOF
- SA2 A1+B1
- IX2 X1-X2
- NZ X2,CDF4 IF DATA IN BUFFER
- SA1 CDFA
- ZR X1,CDF5 IF EOR/EOF WRITTEN
- CDF4 REWRITER O,R
- BKSPRU O,1,R BACK OVER EMPTY PRU
- CDF5 REWRITEF O,R WRITE EOF
- SX6 B0+
- SA6 CDFA CLEAR NO EOR FLAG
- EQ CDF1 LOOP
- CDF6 SA1 I+6 CHECK DATA COPIED
- SA2 FB
- SA3 FS
- SA4 DM
- SX7 B1
- AX1 30
- IX2 X2+X3
- BX6 X1-X2
- IX3 X3-X7 REMOVE SYSTEM SECTOR FROM FILE SIZE
- LX3 30
- IX3 X3+X7 INCREMENT FILE COUNT
- IX7 X4+X3
- SA7 A4
- NZ X6,CDF8 IF NOT CORRECT LENGTH
- SA3 O+2
- SA4 A3+B1
- BX6 X3-X4
- ZR X6,CDF7 IF NO DATA IN BUFFER
- REWRITE O,R
- CDF7 REWRITER O,R FORCE FST UPDATE FOR *MPF*
- BKSPRU X2,1,R
- SYSTEM MPF,R,O,1S6 REWRITE EOI
- EQ CDFX RETURN
- CDF8 SA1 CDFB FILE *TFRI* ENTRY
- SB7 1R(
- SB5 CDFC
- RJ FPI FORMAT PFC INFORMATION
- SX0 CDFC * FILE LENGTH ERROR TTTT/SSSS/O.*
- EQ ERR ABORT
- CDFA CON 0 NO EOR/EOF WRITTEN FLAG
- CDFB CON 0 FILE *TFRI* ENTRY
- CDFC DATA C* FILE LENGTH ERROR ((((/))))/$.*
- CEO SPACE 4,15
- ** CEO - CHECK ENTRY OVERLAP.
- *
- * EXIT TO *ERR* IF OVERLAP.
- *
- * USES X - 0, 1, 2, 3, 4, 6, 7.
- * A - 1, 2, 3, 4, 6, 7.
- * B - 2, 3.
- *
- * CALLS IOM, MSG.
- CEO SUBR ENTRY/EXIT
- SA1 LT
- NZ X1,CEOX IF *TFHL* TABLE IS NOT ACTIVE
- SX0 =C/ CHECKING ENTRY OVERLAP./
- RJ MSG
- BX6 X6-X6
- SX7 -B1
- SA6 CEOC CLEAR PREVIOUS EOI+1
- SA7 CEOD PRESET INDEX
- SA3 L.TFRI
- SA4 L.TFHL
- BX6 X3-X4
- SX0 =C* INTERNAL ERROR, TFRI/TFHL LENGTH MISMATCH IN CEO.*
- NZ X6,ERR IF *TFRI*/*TFHL* LENGTH MISMATCH
- SB2 X3
- SA3 F.TFRI
- SA4 F.TFHL
- SA1 X3+B2
- SA2 X4+B2
- BX6 X1+X2
- SX0 =C* INTERNAL ERROR, MISSING TABLE TERMINATOR IN CEO.*
- NZ X6,ERR IF NO ZERO WORD FOLLOWING TABLES
- * TABLE SCAN LOOP.
- CEO1 SA1 CEOC PREVIOUS EOI + 1
- SA2 CEOD INDEX
- SA3 L.TFRI
- SB2 X2
- SB3 X3
- BX7 X1
- MX0 -24
- SA3 F.TFRI
- SA4 F.TFHL
- CEO2 SB2 B2+B1
- GT B2,B3,CEO5 IF NO MORE ENTRIES TO EXAMINE
- EQ B2,B3,CEO3 IF AT EOI
- SA1 X3+B2 *TFRI* ENTRY
- SA2 X4+B2 *TFHL* ENTRY
- BX6 X1-X2
- BX6 -X0*X6
- SX0 =C* INTERNAL ERROR, TRFI/TFHL MISMATCH IN CEO.*
- NZ X6,ERR IF *TFRI*/*TFHL* TABLE MISMATCH
- MX0 -24
- BX6 -X0*X2 RSA
- IX1 X6-X7 RSA - (RSA OF PREVIOUS EOI+1)
- SX7 B1+B1
- LX2 24
- BX2 -X0*X2 LENGTH
- IX7 X2+X7 LENGTH + SS + EOI
- IX7 X6+X7 NEW PREVIOUS EOI + 1
- PL X1,CEO2 IF NO OVERLAP
- EQ CEO4 PROCESS ERROR
- CEO3 SA1 EI
- IX1 X1-X7
- PL X1,CEO2 IF NO OVERLAP WITH IAPF CHAIN EOI
- * ISSUE ENTRY OVERLAP MESSAGE.
- CEO4 SA7 CEOC SAVE PREVIOUS EOI + 1
- SX6 B2
- SX7 B1
- SA6 CEOD SAVE INDEX
- SA7 CEOB SET ERROR ENCOUNTERED
- SB2 B2-1
- RJ IOM ISSUE OVERLAP MESSAGE
- EQ CEO1 LOOP
- * TERMINATE.
- CEO5 SA1 CEOB
- ZR X1,CEOX IF NO ERRORS ENCOUNTERED
- SX0 =C/ IAPF CHAIN OVERLAP./
- SA1 CEOA
- ZR X1,ERR IF EXTERNAL ERROR
- SX0 =C/ INTERNAL ERROR, CEO DETECTED ERRORS./
- EQ ERR INTERNAL ERROR
- CEOA CON 0 INTERNAL/EXTERNAL ERROR MESSAGE FLAG
- CEOB CON 0 ERRORS ENCOUNTERED FLAG
- CEOC CON 0 PREVIOUS EOI + 1
- CEOD CON 0 INDEX
- CFL SPACE 4,15
- ** CFL - CHECK FILE LENGTH.
- *
- * ENTRY (A2,X2) = *TFRI* TABLE ENTRY OF FILE.
- *
- * EXIT (X6) = FILE LENGTH (FROM THE PFC).
- * (X7) = LOST SPACE AFTER FILE.
- * TO *ERR* IF ERROR.
- *
- * USES X - 0, 1, 3, 4, 5, 6, 7.
- * A - 3, 5.
- * A - 5, 7.
- *
- * CALLS FPI, RCE.
- CFL SUBR ENTRY/EXIT
- SA3 A2+B1 GET NEXT ENTRY
- SA5 MR
- MX4 -24
- NZ X3,CFL1 IF NOT AT EOI
- SA3 EI
- CFL1 BX6 -X4*X2 GET IMPLIED LENGTH
- BX3 -X4*X3
- IX6 X3-X6
- SX7 B1+B1 ADD SYSTEM AND EOI SECTORS
- IX6 X6-X7
- BX7 X7-X7
- NG X6,CFL4 IF NOT ENOUGH ROOM FOR FILE
- SA3 LT
- NZ X3,CFL2 IF *TFHL* IS NOT ACTIVE
- BX5 X6
- SA3 F.TFRI FWA OF TABLE
- SX1 A2 ENTRY ADDRESS
- IX1 X1-X3 OFFSET IN TABLE
- SA3 F.TFHL
- IX3 X3+X1
- SA3 X3 FETCH FILE LENGTH
- MX4 -24
- BX1 X2-X3 COMPARE RSA-S FROM *TFRI* AND *TFHL*
- BX4 -X4*X1
- NZ X4,CFL5 IF TABLES DO NOT MATCH
- EQ CFL3 CHECK LENGTH
- CFL2 ZR X5,CFLX IF *MR=0*, DO NOT READ CATALOG
- SA3 IX
- BX5 X6
- BX1 X2
- SX4 X3-2
- SX3 B0+ ANCHOR ENTRY DATA LENGTH
- NG X4,CFL3 IF ANCHOR ENTRY, IT DOES NOT HAVE A PFC
- RJ RCE READ CATALOG ENTRY
- SA3 A0+FCLF GET LENGTH FROM CATALOG
- CFL3 MX4 -24
- LX3 24
- BX6 -X4*X3
- IX7 X5-X6
- PL X7,CFLX IF IMPLIED .GE. CATALOG LENGTH
- CFL4 BX1 X2 *TFRI* ENTRY
- SB7 1R(
- SB5 CFLA
- RJ FPI FORMAT PFC INFORMATION
- SA3 A2+B1 NEXT *TFRI* ENTRY
- BX1 X3
- SB7 1R[
- SB5 CFLA
- RJ FPI FORMAT PFC INFORMATION
- SX0 CFLA * FILE OVERLAP TTTT/SSSS/O, TTTT/SSSS/O.*
- EQ ERR ABORT
- CFL5 SX0 =C* INTERNAL ERROR, TFRI/TFHL MISMATCH IN CFL.*
- EQ ERR ABORT
- CFLA DATA C* FILE OVERLAP ((((/))))/$, [[[[/]]]]/%.*
- CIP SPACE 4,20
- ** CIP - CLEAR IRRELEVANT PFC INFORMATION.
- *
- * THIS ROUTINE CLEARS ALL WORDS OF THE PFC EXCEPT FOR PFC+1.
- * THE CURRENT PACKED DATE AND TIME IS PLACED INTO THE CREATION
- * DATE AND TIME FIELD. THIS IS DONE TO SIMPLIFY DISK RECOVERY
- * VIA *DDF* SINCE THE INFORMATION CLEARED NO LONGER RELATES TO
- * WHERE THE PFC NOW POINTS.
- *
- * ENTRY (A0) = ADDRESS OF THE PFC.
- *
- * EXIT (A0) = UNCHANGED.
- *
- * USES X - 1, 6.
- * A - 1, 6.
- * B - 6, 7.
- CIP SUBR ENTRY/EXIT
- BX6 X6-X6
- SA6 A0 CLEAR WORD 0
- SB7 17B LAST WORD OFFSET TO CLEAR
- SB6 B1 SKIP WORD 1
- ERRNZ 1-FCBT CODE DEPENDS ON THE VALUE OF *FCBT*
- ERRNZ 1-FCLF CODE DEPENDS ON THE VALUE OF *FCLF*
- CIP1 SB6 B6+B1
- SA6 A0+B6 CLEAR WORDS 2 TO 17B
- LT B6,B7,CIP1 IF FINAL WORD NOT CLEARED
- SA1 PD PACKED DATE AND TIME
- BX6 X1
- SA6 A0+FCCD SET CREATION DATE AND TIME
- EQ CIPX RETURN
- CIT SPACE 4,15
- ** CIT - CLEAR INTERLOCKS.
- *
- * ENTRY (IF) = INTERLOCK REQUEST.
- *
- * EXIT FILES RETURNED, ETC.
- *
- * USES X - 1, 7.
- * A - 1, 7.
- *
- * MACROS CALLPFU, RETURN.
- CIT SUBR ENTRY/EXIT
- RETURN C,R
- RETURN I,R
- RETURN O,R
- SA1 EQ
- NG X1,CITX IF NEVER INTERLOCKED
- SX7 IF
- LX1 48
- BX7 X7+X1 SET EST ORDINAL AND INTERLOCK FLAG
- SA7 C+FTPM
- CALLPFU C,CTCU,R CLEAR UTILITY INTERLOCK
- EQ CITX RETURN
- CRA SPACE 4,20
- ** CRA - CONVERT RANDOM ADDRESS.
- *
- * ENTRY (X5) = 36/ ,24/RSA.
- *
- * EXIT (X5) = 36/ 0,12/ TK,12/ SECTOR.
- * (X4) = 36/ 0,12/ TK,12/ 0.
- * (X3) = (SL).
- * (X0) = -7777B.
- * (B6) = (F.TTLT)-1S11.
- * TO *ERR* IF ERROR.
- *
- * USES X - 0, 1, 3, 4, 5, 6.
- * A - 1, 3.
- * B - 6, 7.
- CRA4 BX6 -X0*X1 LINK OR EOI SECTOR
- IX5 X5+X3 SECTOR ON TRACK
- LX4 12
- IX6 X6-X5
- NG X6,CRA3 IF BEYOND EOI
- BX5 X5+X4
- CRA SUBR ENTRY/EXIT
- MX0 -24
- BX5 -X0*X5
- SA1 F.TTLT
- SB7 59-11 SHIFT COUNT FOR TRACK BIT
- SB6 X1-1S11
- SA1 FT FIRST TRACK OF IAPF CHAIN
- SA3 SL SECTORS/TRACK
- MX0 -12
- BX6 -X6+X6 (X6) = -0
- EQ CRA2 ENTER LOOP
- CRA1 IX5 X5-X3
- NG X5,CRA4 IF RSA ON THIS TRACK
- LX6 X1,B7
- CRA2 PL X6,CRA3 IF EOI
- BX4 -X0*X1 NEXT TRACK
- SA1 X4+B6
- EQ CRA1 LOOP
- CRA3 SX0 =C/ RSA NOT ON CHAIN./
- EQ ERR ABORT
- CTC SPACE 4,15
- ** CTC - CHECK TERMINATION CONDITIONS.
- *
- * EXIT (X1) .NE. 0, IF TERMINATION CONDITIONS MET.
- *
- * USES X - 1, 5, 6.
- * A - 1, 5, 6.
- *
- * PRESERVES A2, X2.
- *
- * MACROS MESSAGE, RTIME.
- CTC2 MESSAGE (=C/ REAL TIME DURATION TERMINATION./)
- EQ CTC4 SET RETURN STATUS
- CTC3 MESSAGE (=C/ SENSE SWITCH ONE TERMINATION./)
- CTC4 SX1 B1 INDICATE TERMINATION CONDITIONS MET
- SX6 B1
- SA6 IS SET INCOMPLETE/INACCURATE STATISTICS
- CTC SUBR ENTRY/EXIT
- SA1 ID CHECK IDLE DOWN FLAG
- NZ X1,CTC4 IF OPERATOR IDLE DOWN REQUESTED
- SA1 B0
- LX1 59-6 CHECK SENSE SWITCH ONE
- NG X1,CTC3 IF SENSE SWITCH ONE IS SET
- SA5 TL
- ZR X5,CTC1 IF NO TIME LIMIT
- RTIME CTCB
- SA1 CTCB
- IX1 X5-X1
- NG X1,CTC2 IF TIME TO QUIT
- CTC1 BX1 X1-X1 INDICATE TERMINATION CONDITIONS NOT MET
- EQ CTCX RETURN
- CTCB CON 0 CURRENT TIME STORAGE
- CTE SPACE 4,25
- ** CTE - CREATE AND INSERT TABLE ENTRY.
- *
- * ENTRY (X1) = INDEX OF ENTRY BEFORE WHICH TO INSERT THE
- * NEW ENTRY.
- * (X2) = RSA OF THE SPACE ON THE CHAIN.
- * (X6) = LENGTH OF THE SPACE (AS IN PFC, W/O SS EOI).
- *
- * EXIT NEW ENTRY CREATED, INSERTED INTO *TFRI*/*TFHL* TABLES.
- * (X6) = ENTRY INSERTED.
- * (HD) = UPDATED.
- * (LT) = UPDATED (*TFHL* TABLE MAY BECOME INACTIVE).
- * TO *ERR* IF ERROR.
- *
- * USES X - 0, 1, 2, 3, 4, 6, 7.
- * A - 1, 2, 3, 4, 6, 7.
- * B - 7.
- *
- * CALLS ZWT.
- *
- * MACROS ADDWRD, MOVE.
- CTE4 SX0 =C/ INTERNAL ERROR, TAPE TABLE EMPTY IN CTE./
- EQ ERR ABORT
- CTE SUBR ENTRY/EXIT
- SA3 F.TAPE
- SA4 L.TAPE
- ZR X4,CTE4 IF *TAPE* TABLE EMPTY
- NG X4,CTE4 IF *TAPE* TABLE EMPTY
- SX7 B1
- IX7 X4-X7
- SA7 A4 NEW LENGTH OF TABLE
- SB7 X7
- SA3 X3+B7 FETCH ENTRY
- MX0 -24
- BX2 -X0*X2 RSA
- BX7 X0*X3 *TFRI* ENTRY W/O RSA
- BX7 X7+X2
- SA7 CTEA NEW *TFRI* ENTRY
- BX6 -X0*X6 LENGTH
- LX6 -24
- BX6 X2+X6
- SA6 CTEB *TFHL* ENTRY
- BX6 X1
- SA6 CTEC INDEX
- BX1 X1-X1
- ADDWRD TFRI,X1 MAKE ROOM
- SA1 L.TFRI
- SA2 F.TFRI
- SA3 CTEC INDEX
- IX1 X1-X3 LENGTH - OFFSET = WORDS TO MOVE
- IX3 X2+X3 FROM
- MOVE X1,X3,X3+B1
- SA1 F.TFRI
- SA2 CTEC INDEX
- SA3 CTEA *TFRI* ENTRY
- SB7 X2
- BX6 X3
- SA6 X1+B7 INSERT ENTRY
- SA1 HD
- SX6 X1-1
- NG X6,CTE1 IF LESS THAN ZERO
- SA6 A1
- CTE1 SA1 LT
- NZ X1,CTE3 IF *TFHL* TABLE IS NOT ACTIVE
- BX1 X1-X1
- ADDWRD TFHL,X1 MAKE ROOM
- SA1 LT
- ZR X1,CTE2 IF *TFHL* TABLE IS STILL ACTIVE
- BX6 X6-X6
- SA6 L.TFHL CLEAR LENGTH
- EQ CTE3 ZERO WORD TERMINATE *TFRI* TABLE
- CTE2 SA1 L.TFHL
- SA2 F.TFHL
- SA3 CTEC INDEX
- IX1 X1-X3 LENGTH - OFFSET = WORDS TO MOVE
- IX3 X2+X3 FROM
- MOVE X1,X3,X3+B1
- SA1 F.TFHL
- SA2 CTEC INDEX
- SA3 CTEB *TFHL* ENTRY
- SB7 X2
- BX6 X3
- SA6 X1+B7 INSERT ENTRY
- SA1 HD
- SX6 X1-1
- NG X6,CTE3 IF LESS THAN ZERO
- SA6 A1
- CTE3 RJ ZWT ZERO WORD TERMINATE *TFRI* TABLE
- SA1 CTEA
- BX6 X1 EXIT CONDITION
- EQ CTEX RETURN
- CTEA CON 0 NEW *TFRI* ENTRY
- CTEB CON 0 NEW *TFHL* ENTRY
- CTEC CON 0 INDEX BEFORE WHICH TO INSERT THE NEW ENTRY
- DLK SPACE 4,25
- ** DLK - DELINK TRACKS IN MIDDLE OF TRACK CHAIN.
- *
- * ENTRY (X3) = SECTOR LIMIT.
- * (X4) = 36/0, 12/TRACK, 12/0 (OF HOLE).
- * (X4) = 36/0, 12/TRACK, 12/SECTOR (OF HOLE).
- * (B7) = 48.
- * (HE) = COLLECTION HOLE *TFRI* TABLE ENTRY.
- *
- * EXIT TRACKS DELINKED.
- * *HL*, *EI* ADJUSTED BY NUMBER OF SECTORS DELINKED.
- * RANDOM INDEXES OF REMAINING FILES AND HOLES
- * ADJUSTED BY NUMBER OF SECTORS DELINKED.
- * TO *ERR* IF ERROR.
- *
- * CALLS CRA.
- *
- * USES X - ALL.
- * A - 1, 2, 3, 5, 6.
- * B - 2, 6, 7.
- *
- * MACROS SYSTEM.
- DLK SUBR ENTRY/EXIT
- BX6 X4-X5
- NZ X6,DLK1 IF FIRST TRACK OF HOLE NOT TO BE DELINKED
- SA5 HE FIND TRACK BEFORE HOLE
- SX7 B1
- IX5 X5-X7
- RJ CRA CONVERT RANDOM ADDRESS
- DLK1 SA1 EQ
- LX2 X4,B7 FIRST TRACK
- LX1 36
- SX6 X2-4000B CLEAR TRACK BIT
- LX6 24
- BX6 X1+X6
- SA1 CTIH CURRENT TRACK IN HOLE
- SA2 LTIH LAST TRACK IN HOLE
- LX1 12
- BX6 X2+X6
- BX6 X1+X6
- SA6 DLKA 12/,12/EQ,12/FT,12/NT,12/LT
- SA1 NC
- NZ X1,DLK2 IF NO CHANGES ARE TO BE MADE TO THE DEVICE
- SYSTEM MPF,R,DLKA,2S6 DELINK TRACKS
- DLK2 SA1 CTIH DELINK TRACKS IN TRT TABLE
- LX2 X4,B7 FIRST TRACK
- BX6 X1
- SA6 X2+B6 LINK FIRST TRACK TO LAST TRACK
- SA1 NTIH NUMBER OF TRACKS IN HOLE
- SA2 DS GET TRACKS DROPPED STATISTICS
- SX1 X1-1 ACTUAL TRACKS DELINKED
- IX7 X1*X3 SECTORS DELINKED
- LX7 30
- IX6 X1+X7 MERGE TRACK COUNT WITH SECTOR COUNT
- IX6 X2+X6
- SA6 A2+
- LX7 -30
- * CORRECT RANDOM INDEXES DUE TO HOLE DELINK.
- MX0 -24
- SA1 EI ADJUST EOI RANDOM INDEX
- IX6 X1-X7
- SA6 A1
- SA1 HL ADJUST HOLE LENGTH
- IX6 X1-X7
- SA6 A1
- SA3 LT *TFHL ACTIVE* FLAG
- SA1 L.TFRI ADJUST ENTRIES IN FILE RANDOM INDEX TABLE
- SA2 F.TFRI
- SB6 X1-1
- SB7 X2+
- SA1 HE RANDOM INDEX OF HOLE ENTRY
- BX1 -X0*X1
- BX4 X3
- NZ X4,DLK3 IF *TFHL* TABLE NOT ACTIVE
- SA2 L.TFHL TABLE MISMATCH CHECK
- SB2 X2-1
- SB2 B2-B6
- NZ B2,DLK6 IF *TFRI*/*TFHL* TABLE LENGTHS MISMATCH
- SA2 F.TFHL SET UP FOR THE *TFHL* TABLE
- SB2 X2+ FWA *TFHL*
- DLK3 SA2 B6+B7 GET NEXT RANDOM INDEX TO ADJUST
- BX6 -X0*X2
- IX6 X1-X6
- PL X6,DLK5 IF ALL INDEXES ADJUSTED
- IX6 X2-X7
- SA6 A2
- NZ X4,DLK4 IF *TFHL* NOT ACTIVE
- SA3 B6+B2 GET NEXT RANDOM INDEX FROM *TFHL*
- IX6 X3-X7
- SA6 A3+
- BX6 X2-X3 COMPARE ORIGINAL RSA-S
- BX6 -X0*X6
- NZ X6,DLK6 IF *TFRI*/*TFHL* TABLES MISMATCH
- DLK4 SB6 B6-1 DECREMENT INDEX
- GT B6,DLK3 IF MORE FILES TO ADJUST
- DLK5 SA5 HE RESET HOLE ADDRESS
- RJ CRA CONVERT RANDOM ADDRESS
- EQ DLKX RETURN
- DLK6 SX0 =C* INTERNAL ERROR, TFRI/TFHL MISMATCH IN DLK.*
- EQ ERR ABORT
- DLKA CON 0 *MPF* PARAMETER WORD
- DRP SPACE 4,15
- ** DRP - DROP TRACKS AT END OF TRACK CHAIN.
- *
- * ENTRY (HE) = HOLE ENTRY AT END OF CHAIN.
- * (X3) = SECTOR LIMIT.
- * (X5) = 36/ 0, 12/ FIRST TRACK, 12/ SECTOR.
- *
- * EXIT TRACKS DROPPED.
- * (HL) = 0.
- *
- * USES X - 0, 1, 2, 4, 6, 7.
- * A - 1, 4, 6, 7.
- *
- * MACROS SYSTEM.
- DRP SUBR ENTRY/EXIT
- SA1 HE ENTRY OF HOLE AT END OF CHAIN
- MX0 -24
- BX1 -X0*X1 RSA OF HOLE
- SA4 EQ
- SX2 B1
- MX0 -12
- IX7 X1-X2 RSA HOLE - 1 = FILE EOI = EOI OF CHAIN
- BX4 -X0*X4
- LX4 -12
- BX6 X4+X7
- SA6 DRPA 12/EQ, 24/, 24/EOI
- SA1 EI OLD EOI
- IX1 X1-X2 (EI WAS REALLY EOI+1)
- IX6 X1-X7 OLD RSA - NEW RSA = SECTORS DROPPED
- IX7 X7+X2 (EI REMAINS EOI+1)
- SA7 A1 NEW EOI
- SX7 B1
- BX1 X1-X1 FULL TRACKS DROPPED
- BX2 X6 SECTORS DROPPED
- BX4 -X0*X5 ISOLATE FIRST SECTOR OF HOLE
- ZR X4,DRP1 IF FIRST TRACK DROPPED IS A FULL TRACK
- IX4 X3-X4
- IX2 X2-X4 REMOVE INCOMPLETE TRACK FROM SECTOR COUNT
- DRP1 ZR X2,DRP2 IF NO TRACKS REMAINING
- NG X2,DRP2 IF NOT A COMPLETE TRACK REMAINING
- IX1 X1+X7 INCREMENT FULL TRACKS DROPPED COUNT
- IX2 X2-X3 DEBIT A TRACK OF SECTORS
- EQ DRP1 LOOP
- DRP2 IX7 X1*X3 SECTORS DROPPED (FULL TRACKS)
- LX7 30
- IX7 X7+X1
- SA1 DS ADD TO DROPPED TRACK STATISTICS
- IX7 X7+X1
- SA7 A1
- LX6 30 SECTORS RELEASED FROM THE IAPF CHAIN
- SA1 HR HOLES RELEASED
- IX6 X1+X6
- SA6 A1
- SX4 0S6 DROP TRACKS
- SA1 NC
- NZ X1,DRP3 IF NO CHANGES ARE TO BE MADE TO THE DEVICE
- SYSTEM MPF,R,DRPA,X4
- DRP3 SX6 B0+ RESET HOLE LENGTH
- SA6 HL
- EQ DRPX RETURN
- DRPA CON 0 *MPF* PARAMETER WORD
- DTE SPACE 4,20
- ** DTE - DELETE TABLE ENTRY.
- *
- * ENTRY (X4) = INDEX OF ENTRY TO BE DELEATED FROM
- * *TFRI* AND *TFHL* TABLES.
- *
- * EXIT ENTRY DELETED FROM TABLES.
- *
- * USES X - 1, 3, 4, 6.
- * A - 1, 3, 4, 6.
- * B - 7.
- *
- * CALLS MTD, ZWT.
- *
- * MACROS ADDWRD, MEMORY, MOVE.
- DTE SUBR ENTRY/EXIT
- SA3 F.TFRI DELETE TABLE ENTRY OF SECOND HOLE
- BX6 X4
- SB7 X4
- SA6 DTEA SAVE INDEX
- SA1 X3+B7
- BX6 X1
- SA6 DTEB SAVE ENTRY TO BE DELETED
- SA1 L.TFRI
- SX6 X1-1
- IX3 X3+X4
- SA6 A1 DECREMENT TABLE LENGTH
- IX1 X1-X4 NUMBER OF WORDS TO MOVE
- MOVE X1,X3+B1,X3
- SA3 HD HOLES DELETED SINCE FL REDUCTION
- SX6 X3+B1
- SA6 A3
- SA3 LT
- NZ X3,DTE1 IF *TFHL* IS NOT ACTIVE
- SA3 F.TFHL DELETE TABLE ENTRY OF SECOND HOLE
- SA4 DTEA
- SA1 L.TFHL
- SX6 X1-1
- IX3 X3+X4
- SA6 A1 DECREMENT TABLE LENGTH
- IX1 X1-X4 NUMBER OF WORDS TO MOVE
- MOVE X1,X3+B1,X3
- SA3 HD HOLES DELETED SINCE FL REDUCTION
- SX6 X3+B1
- SA6 A3
- SA1 DTEB
- MX3 -24
- BX6 X3*X1 REMOVE RSA
- MX1 10D
- BX6 -X1*X6 REMOVE FLAGS
- MX1 2
- BX1 X1+X6 SET HOLE AND NON-ZERO BIT
- ADDWRD TAPE,X1 TABLE OF AVAILABLE PFC ENTRIES
- SA3 HD
- SX6 X3-1
- SA6 A3
- DTE1 SX6 X6-1000B
- NG X6,DTE2 IF NOT ENOUGH TO WARRANT FL REDUCTION
- RJ MTD MOVE TABLES DOWN
- SA1 F.TFHL
- SA3 L.TFHL
- IX6 X1+X3
- SX6 X6+B1
- SA6 F.TEND
- SX6 X3+10B MORE FL THAN TELLING
- MEMORY CM,,R,X6 REDUCE FL
- BX6 X6-X6
- SA6 HD CLEAR HOLES DELETED SINCE FL REDUCTION
- DTE2 RJ ZWT ZERO WORD TERMINATE *TFRI* TABLE
- EQ DTEX RETURN
- DTEA CON 0 INDEX OF ENTRY TO REMOVE FROM TABLES
- DTEB CON 0 ENTRY TO BE DELETED
- FLT SPACE 4,15
- ** FLT - FIND LAST TRACK OF HOLE.
- *
- * ENTRY (X0) = -7777B.
- * (X3) = SECTOR LIMIT.
- * (X4) = 36/0, 12/TRACK, 12/0 (OF HOLE).
- * (X5) = 36/0, 12/TRACK, 12/SECTOR (OF HOLE).
- * (B7) = 48.
- *
- * EXIT (X6) = 0 IF HOLE IS AT END OF TRACK CHAIN.
- *
- * USES X - 1, 2, 6, 7.
- * A - 1, 2, 6, 7.
- FLT SUBR ENTRY/EXIT
- SA1 HL HOLE LENGTH
- IX6 X5-X4 FIRST SECTOR OF HOLE
- BX7 X1
- SA6 FLTA FIRST SECTOR
- SA7 HSIT HOLE SIZE
- MX7 0 NUMBER OF TRACKS
- NZ X6,FLT1 IF HOLE DOES NOT START IN FIRST SECTOR
- SX7 B1 SET 1 POSSIBLE TRACK TO DELINK/DROP
- FLT1 LX6 X4,B7 STARTING TRACK
- SA7 NTIH
- SA6 CTIH
- * FIND LAST TRACK OF HOLE.
- FLT2 SA1 CTIH CURRENT TRACK
- SA2 X1+B6 NEXT TRACK
- LX6 X2,B7
- NG X6,FLT3 IF NOT END OF TRACK CHAIN
- SA1 FLTA FIRST SECTOR OF HOLE IN CURRENT TRACK
- BX2 -X0*X2 CLEAR TAG
- IX6 X2-X1
- SA1 HSIT HOLE SIZE IN TRACK
- IX6 X1-X6 CALCULATE HOLE
- SX6 X6-1 (X6) = 0 IF EOI IS AT END OF HOLE
- EQ FLTX RETURN
- * CHECK FOR LAST TRACK OF HOLE.
- FLT3 SA1 FLTA FIRST SECTOR OF THIS TRACK
- SA2 HSIT LENGTH OF HOLE REMAINING
- IX7 X3-X1 NUMBER OF SECTORS OF HOLE IN THIS TRACK
- IX6 X2-X7
- NG X6,FLTX IF END OF HOLE
- MX7 0
- SA6 A2 LENGTH MINUS SECTOR THIS TRACK
- SA7 A1+ FIRST SECTOR OF HOLE IN NEXT TRACK
- SA1 NTIH TRACK COUNT
- SA2 LTIH LAST TRACK
- SX6 X1+B1
- BX7 X2
- SA6 A1+ NEW TRACK COUNT
- SA7 PTIH PREVIOUS LAST TRACK
- SA1 CTIH CURRENT TRACK
- SA2 X1+B6 NEXT TRACK
- LX6 X1
- BX7 -X0*X2
- SA7 A1 NEW CURRENT TRACK
- SA6 LTIH NEW LAST TRACK
- EQ FLT2 FIND END OF HOLE
- FLTA CON 0 FIRST SECTOR OF HOLE IN CURRENT TRACK
- FPI SPACE 4,20
- ** FPI - FORMAT PFC INFORMATION.
- *
- * *FPI* WILL FORMAT FOR OUTPUT THE INFORMATION DESCRIBING
- * THE LOCATION OF A PARTICULAR PFC ENTRY.
- *
- * ENTRY (X1) = *TFRI* TABLE ENTRY.
- * (B7) = FIRST CHARACTER OF SEQUENCE FOR *SNM*.
- * (B5) = ADDRESS OF MESSAGE FOR *SNM*.
- *
- * EXIT MESSAGE FORMATTED.
- *
- * USES X - 1, 2, 5, 6.
- * A - 1.
- * B - 2, 7.
- *
- * CALLS COD, SNM.
- FPI SUBR ENTRY/EXIT
- BX5 X1
- LX1 -42
- MX2 -8
- BX1 -X2*X1
- SB2 X1 CATALOG TRACK INDEX
- SA1 F.TCAT
- SA1 X1+B2 FSE FOR CATALOG TRACK
- LX1 -36
- MX2 -12
- BX1 -X2*X1 TRACK
- RJ COD CONVERT TRACK
- MX1 4*6
- LX6 6*6
- BX1 X1*X6
- SB2 B7
- RJ SNM SET TRACK IN MESSAGE
- SB7 B7+B1
- BX1 X5
- LX1 -27
- MX2 -12
- BX1 -X2*X1 SECTOR
- SX2 B1
- LX2 13
- BX1 X1+X2 PROVIDE LEADING ZEROS
- RJ COD CONVERT SECTOR
- MX1 4*6
- LX6 6*6
- BX1 X1*X6
- SB2 B7
- RJ SNM SET SECTOR IN MESSAGE
- SB7 B7+B1
- BX1 X5
- LX1 -24
- MX2 -3
- BX1 -X2*X1 PFC ORDINAL IN EIGHT WORD PARCELS
- AX1 1 PFC ORDINAL IN SIXTEEN WORD PARCELS
- RJ COD CONVERT ORDINAL
- MX1 1*6
- LX6 9*6
- BX1 X1*X6
- SB2 B7
- RJ SNM SET ORDINAL IN MESSAGE
- EQ FPIX RETURN
- FRM SPACE 4,15
- ** FRM - FORMAT HOLES RELEASED STATISTICAL MESSAGE.
- *
- * ENTRY (A0) = ADDRESS OF MESSAGE.
- *
- * EXIT MESSAGE FORMATTED.
- *
- * USES X - 0, 1, 2, 3, 5, 6.
- * A - 1, 2, 6.
- *
- * CALLS CDD.
- FRM SUBR ENTRY/EXIT
- SA1 HR HOLES FREED
- SX5 1R POSITIVE VALUE SIGN
- SA2 HC HOLES CREATED
- BX0 X1 SAVE SECTOR COUNT
- MX6 -30
- BX1 -X6*X1 NUMBER
- IX1 X1-X2 FREED MINUS CREATED
- PL X1,FRM1 IF POSITIVE VALUE
- SX5 1R- NEGATIVE VALUE SIGN
- BX1 -X1 COMPLEMENT
- FRM1 RJ CDD
- SA1 A0+B1 MMBXXXXXXX
- MX3 18
- BX1 X3*X1 MMB.......
- BX6 -X3*X6 ...NNNNNNN
- BX6 X6+X1 MMBNNNNNNN
- MX1 -6
- LX1 B2 POSITION MASK
- LX5 B2 POSITION SIGN
- BX6 X1*X6 REMOVE CHARACTER
- IX6 X6+X5 INSERT SIGN
- SA6 A1
- MX6 -30
- LX0 30
- BX1 -X6*X0 NUMBER OF SECTORS
- RJ CDD
- SX1 1R,-1R
- LX1 -6
- IX6 X6+X1
- SA6 A6+B1
- EQ FRMX RETURN
- FSM SPACE 4,15
- ** FSM - FORMAT STATISTICAL MESSAGE.
- *
- * ENTRY (A0) = ADDRESS OF MESSAGE.
- * (X1) = 30/ SECTORS,30/ N.
- *
- * EXIT MESSAGE FORMATTED.
- *
- * USES X - 0, 1, 3, 6.
- * A - 1, 6.
- *
- * CALLS CDD.
- FSM SUBR ENTRY/EXIT
- BX0 X1 SAVE SECTOR COUNT
- MX6 -30
- BX1 -X6*X1 NUMBER
- RJ CDD
- SA1 A0+B1 MMBXXXXXXX
- MX3 18
- BX1 X3*X1 MMB.......
- BX6 -X3*X6 ...NNNNNNN
- BX6 X6+X1 MMBNNNNNNN
- SA6 A1
- MX6 -30
- LX0 30
- BX1 -X6*X0 NUMBER OF SECTORS
- RJ CDD
- SX1 1R,-1R
- LX1 -6
- IX6 X6+X1
- SA6 A6+B1
- EQ FSMX RETURN
- IOM SPACE 4,20
- ** IOM - ISSUE OVERLAP MESSAGE.
- *
- * *IOM* WILL ISSUE A MESSAGE INFORMING THE USER THAT
- * AN OVERLAP HAS BEEN DETECTED.
- *
- * ENTRY (B2) = INDEX OF THE FIRST ENTRY WHICH OVERLAPS.
- *
- * EXIT MESSAGE ISSUED.
- *
- * USES X - 1, 2, 3, 6, 7.
- * A - 1, 2, 3, 6, 7.
- * B - 5, 7.
- *
- * CALLS FPI.
- *
- * MACROS MESSAGE, MOVE.
- IOM SUBR ENTRY/EXIT
- SA1 F.TFRI
- SA2 X1+B2
- SA3 A2+B1
- BX6 X2
- BX7 X3
- SA6 IOMA
- SA7 IOMB
- MOVE IOMCL,IOMC,IOMD
- SA1 IOMA
- SB7 1R(
- SB5 IOMD
- RJ FPI
- SA1 IOMB
- SB7 1R[
- SB5 IOMD
- RJ FPI
- MESSAGE IOMD
- EQ IOMX RETURN
- IOMA DATA 0
- IOMB DATA 0
- IOMC DATA C* ENTRY OVERLAP ((((/))))/$, [[[[/]]]]/%.*
- IOMCL EQU *-IOMC
- IOMD BSS IOMCL
- IRS SPACE 4,15
- ** IRS - ISSUE RESOURCE SUMMARY MESSAGES TO DAYFILE.
- *
- * USES X - 0, 1, 2, 3, 6.
- * A - 1, 2, 6.
- *
- * CALLS CDD, CFD, COD.
- *
- * MACROS MESSAGE, STIME, TIME.
- IRS SUBR ENTRY/EXIT
- STIME ES
- TIME ET
- SA1 ES END SRU-S
- SA2 SS START SRU-S
- IX6 X1-X2
- MX0 -36
- BX1 -X0*X6
- RJ CFD CONVERT TO F10.3 FORMAT
- SA6 IRSA+2 SET SRU-S CONSUMED
- SA1 ET END CPU TIME
- SA2 ST START CPU TIME
- IX6 X1-X2
- MX0 -12
- BX1 -X0*X6 MILLISECONDS
- SX3 1000D
- LX6 -12
- MX0 -24
- BX2 -X0*X6 SECONDS
- IX6 X2*X3 SECONDS*1000
- IX1 X6+X1 (SECONDS*1000)+MILLISECONDS
- RJ CFD CONVERT TO F10.3 FORMAT
- SA6 IRSB+2 SET CPU TIME USED
- SA1 TOVC
- RJ COD CONVERT TO OCTAL DISPLAY
- SA6 IRSC+2 SET MAXIMUM CM FL USED
- SA1 /COMCMTP/ATSA
- RJ CDD CONVERT TO DECIMAL DISPLAY
- SA6 IRSD+2 SET MANAGED TABLE MOVES
- MESSAGE IRSA * SRUS 23456.890 UNTS.*
- MESSAGE IRSB * CPU SECONDS 23456.890 SECS.*
- MESSAGE IRSC * MAXIMUM CM FL 234567890 SCM.*
- MESSAGE IRSD * MANAGED TABLE MOVES 234567890 UNTS.*
- EQ IRSX RETURN
- IRSA DATA 36C SRUS 23456.890 UNTS.
- IRSB DATA 36C CPU SECONDS 23456.890 SECS.
- IRSC DATA 36C MAXIMUM CM FL 23456.890 SCM.
- IRSD DATA 36C MANAGED TABLE MOVES 23456.890 UNTS.
- ISD SPACE 4,15
- ** ISD - ISSUE STATISTICS TO DAYFILE.
- *
- * ENTRY (X0) = 0 IF NORMAL TERMINATION.
- * (X0) = 1 IF ABNORMAL TERMINATION.
- *
- * USES X - 1.
- * A - 0, 1.
- *
- * CALLS FRM, IRS, ISM.
- *
- * MACROS MESSAGE.
- ISD SUBR ENTRY/EXIT
- SA1 PC CHECK IF PRESET COMPLETE
- ZR X1,ISDX IF PRESET NEVER COMPLETED
- SA1 IS INCOMPLETE/INACCURATE STATISTICS FLAG
- BX0 X0+X1
- ZR X0,ISD1 IF NORMAL TERMINATION
- MESSAGE (=C/ STATISTICS MAY NOT BE ACCURATE./),,R
- ISD1 SA1 OF ONSET FILES
- SA0 ISDI
- RJ ISM
- SA1 OH ONSET HOLES
- SA0 ISDJ
- RJ ISM
- SA1 JM FILES MOVED VIA THE FILL TECHNIQUE
- SA0 ISDA
- RJ ISM
- SA1 SM FILES MOVED VIA THE SLIDE TECHNIQUE
- SA0 ISDB
- RJ ISM
- SA1 DM FILES MOVED
- SA0 ISDC
- RJ ISM
- SA1 LS LOST SPACE
- SA0 ISDD
- RJ ISM
- SA1 HS HOLES REMAINING
- SA0 ISDE
- RJ ISM
- SA0 ISDF
- RJ FRM FORMAT HOLES REMOVED MESSAGE
- MESSAGE A0
- SA1 DS DROPPED TRACKS SPACE
- SA0 ISDG
- RJ ISM
- SA1 FW FLAW FILES ENCOUNTERED
- SA0 ISDH
- RJ ISM
- RJ IRS ISSUE RESOURCE SUMMARY
- EQ ISDX RETURN
- ISDI DATA 36C ONSET FILES , PRUS.
- ISDJ DATA 36C ONSET HOLES , PRUS.
- ISDA DATA 36C FILL MOVES , PRUS.
- ISDB DATA 36C SLIDE MOVES , PRUS.
- ISDC DATA 36C FILES MOVED , PRUS.
- ISDD DATA 36C LOST SPACE , PRUS.
- ISDE DATA 36C HOLES LEFT , PRUS.
- ISDF DATA 36C HOLES FREED , PRUS.
- ISDG DATA 36C TRACKS FREED , PRUS.
- ISDH DATA 36C FLAW SPACE , PRUS.
- ISM SPACE 4,15
- ** ISM - ISSUE STATISTICAL MESSAGE.
- *
- * ENTRY (A0) = ADDRESS OF MESSAGE.
- * (X1) = 30/ SECTORS,30/ N.
- *
- * EXIT MESSAGE ISSUED.
- *
- * CALLS FSM.
- *
- * MACROS MESSAGE.
- ISM SUBR ENTRY/EXIT
- RJ FSM FORMAT STATISTIC MESSAGE
- MESSAGE A0
- EQ ISMX RETURN
- MSG SPACE 4,20
- ** MSG - ISSUE MESSAGE.
- *
- * ENTRY (X0) = ADDRESS OF MESSAGE.
- * MUST BE TERMINATED WITH A ZERO BYTE IN BITS 11-0.
- *
- * EXIT MESSAGE TO B DISPLAY (LINE ONE).
- * *B* DISPLAY MESSAGE IN *K* DISPLAY UPDATED.
- *
- * USES X - 0, 1, 3, 4, 6.
- * A - 1, 4, 6.
- * B - 2, 3, 4.
- *
- * PRESERVES A0, X2.
- *
- * CALLS ZTB.
- *
- * MACROS MESSAGE.
- MSG SUBR ENTRY/EXIT
- SA1 MSGA
- BX3 X1-X0
- BX6 X0
- ZR X3,MSGX IF SAME MESSAGE
- SA6 A1
- MESSAGE X0,1
- * MOVE CURRENT *B* DISPLAY MESSAGE TO THE *K* DISPLAY.
- SB4 B0 ZERO BYTE FLAG
- SB3 5 MAXIMUM WORDS TO TRANSFER TO *K* DISPLAY
- SB2 B0 ADDRESS OFFSET
- MX4 -12
- SA1 MSGA ADDRESS OF CURRENT MESSAGE
- SX0 X1 SOURCE BASE ADDRESS
- MSG1 SA1 X0+B2
- BX6 -X4*X1
- NZ X6,MSG2 IF NOT ZERO BYTE
- SB4 B1+ SET ZERO BYTE ENCOUNTERED FLAG
- SA4 =10H
- MSG2 RJ ZTB
- MSG3 SA6 KDLS=+B2 STORE WORD IN *K* DISPLAY BUFFER
- SB2 B2+B1
- GE B2,B3,MSGX IF ALL WORDS PROCESSED
- EQ B4,B0,MSG1 IF NO ZERO BYTE ENCOUNTERED
- BX6 X4 BLANKS
- EQ MSG3 BLANK FILL
- MSGA CON =0 INITIALLY THE ADDRESS OF A ZERO WORD
- PCH SPACE 4,20
- ** PCH - PURGE CONTIGUOUS HOLES.
- *
- * ENTRY (A1,X1) = HOLE ENTRY.
- * (A2,X2) = NEXT CONTIGUOUS ENTRY.
- * (PCHA) = -1 IFF THE COLLECTION HOLE IS CLOSED.
- *
- * EXIT (A1,X1) = ORIGINAL HOLE ENTRY.
- * (A2,X2) = ENTRY AFTER LAST CONTIGUOUS HOLES.
- * CONTIGUOUS HOLES PURGED FROM CATALOG.
- * ALL BUT FIRST HOLE REMOVED FROM TABLE.
- *
- * USES X - 0, 1, 2, 3, 4, 5, 6.
- * A - 1, 2, 3, 4, 6.
- * B - 2.
- *
- * CALLS CIP, DTE, MSG, RCE, WCE.
- PCH SUBR ENTRY/EXIT
- SA3 PCHA CHECK IF FIRST HOLE ALREADY SEEN
- MX4 -24
- BX3 X1-X3
- BX3 X4*X3
- ZR X3,PCH1 IF ALREADY PROCESSED
- BX6 X1
- SA6 PCHA REMEMBER THIS ONE
- SX5 A1+ SAVE (A1)
- RJ RCE PURGE FIRST HOLE
- SA1 A0+FCBS
- SX6 1S11
- BX6 X6+X1 SET DAPF BIT
- SA6 A1+
- RJ WCE
- SA1 X5+ RESTORE (A1) AND (X1)
- SA2 X5+B1 RESTORE (A2) AND (X2)
- PCH1 PL X2,PCHX IF NOT CONTIGUOUS HOLE
- SA1 HR
- SX6 B1
- IX6 X6+X1
- SA6 A1+
- SX0 =C/ PURGING CONTIGUOUS HOLES./
- RJ MSG
- BX1 X2 PURGE NEXT HOLE
- RJ RCE
- SA1 A0+FCBS
- SX6 1S11
- BX6 X1+X6
- SA6 A1+
- RJ CIP CLEAR IRRELEVANT INFORMATION
- RJ WCE
- SA4 IX ESTABLISH (IX) AS ENTRY TO DELETE
- RJ DTE DELETE TABLE ENTRY
- SA4 IX RE-ESTABLISH LOCATION IN TABLE
- SB2 X4
- SA3 F.TFRI
- SA2 X3+B2 NEXT HOLE/FILE ENTRY
- SA1 A2-B1 OLD HOLE ENTRY
- EQ PCH1 LOOP FOR NEXT ENTRY
- PCHA CON -1 FIRST HOLE FROM LAST CALL
- RCE SPACE 4,15
- ** RCE - READ CATALOG ENTRY.
- *
- * ENTRY (X1) = *TFRI* ENTRY OF CATALOG ENTRY.
- *
- * EXIT (A0) = ADDRESS OF CATALOG ENTRY.
- *
- * USES X - 0, 1, 2, 3, 4, 6, 7.
- * A - 0, 1, 2, 6, 7.
- * B - 2.
- *
- * MACROS CALLPFU, RECALL, RETURN, RPHR.
- RCE SUBR ENTRY/EXIT
- BX0 X1
- SA2 RCEB
- BX4 X2-X1
- RECALL C
- MX3 15+8
- LX3 -1-1-8
- BX4 X3*X4
- NZ X4,RCE1 IF DIFFERENT PRU
- SA1 C+1
- SA2 RCEC
- IX6 X1+X2
- SX6 X6
- SX7 X1
- SA6 A1+B1 INCREMENT IN
- SA7 A6+B1 RESET OUT
- LX0 36
- EQ RCE4 SET CATALOG ENTRY ADDRESS
- RCE1 BX6 X0
- SA6 RCEB
- LX0 5-47
- MX3 8
- LX3 -1-1-8
- BX4 X3*X4
- ZR X4,RCE2 IF SAME CATALOG TRACK
- RETURN C,R
- SA1 F.TCAT
- MX2 -8
- BX3 -X2*X0 CATALOG TRACK NUMBER
- SB2 X3
- SX3 X3-MXCT
- PL X3,RCE5 IF ANCHOR ENTRY REFERENCE
- SA1 X1+B2 FST FOR THIS CATALOG TRACK
- BX7 X1
- SA7 C+FTPM
- CALLPFU C,CTOP,R OPEN CATALOG TRACK
- RCE2 LX0 47-5-27
- MX4 -15
- BX6 -X4*X0 CATALOG ENTRY PRU
- SA6 C+6
- SA6 RCEA SAVE CURRENT ADDRESS
- NZ X6,RCE3 IF NOT PRU 0
- CALLPFU C,CTRC,R REWIND CATALOG FILE
- RCE3 SA1 C+1
- SX6 X1
- SA6 A1+B1 SET IN = OUT = FIRST
- SA6 A6+B1
- RPHR A1-B1,R
- SA1 C+3
- SA2 A1-1
- IX6 X2-X1 WORDS IN PRU READ
- SA6 RCEC
- LX0 3
- RCE4 MX4 -3
- BX3 -X4*X0
- LX3 3
- IX3 X3+X1
- SA0 X3 SET CATALOG ENTRY ADDRESS
- EQ RCEX RETURN
- RCE5 SX0 =C/ INTERNAL ERROR, ANCHOR ENTRY REFERENCE IN RCE./
- EQ ERR ABORT
- RCEA CON 0 CURRENT PRU RSA
- RCEB CON -1 LAST CALL TO *RCE*
- RCEC CON 0 NUMBER OF WORDS IN PRU
- RJA SPACE 4,20
- ** RJA - RETURN JUMP TRACE ACTIVATION/DEACTIVATION.
- *
- * THIS ROUTINE ACTIVATES OR DEACTIVATES THE RETURN JUMP
- * TRACE INSTRUCTIONS. THIS IS ACCOMPLISHED BY SHIFTING
- * EACH RJ INSTRUCTION WORD BY 30 BITS.
- * 30/RJ SUB, 30/RJ RJT TO/FROM 30/RJ RJT, 30/RJ SUB
- *
- * ENTRY (X1) = 0, DEACTIVATE RJ TRACE.
- * (X1) = 1, ACTIVATE RJ TRACE.
- *
- * EXIT INSTRUCTIONS MODIFIED, STACK VOIDED.
- *
- * USES X - 1, 2, 6.
- * A - 1, 2, 6.
- * B - 2, 3.
- *
- * MACROS ALLOC, VOID.
- RJA6 VOID VOID ALL TYPES OF INSTRUCTION STACKS
- RJA SUBR ENTRY/EXIT
- SA2 RJAA
- ZR X1,RJA3 IF DEACTIVATE REQUEST
- NZ X2,RJA6 IF RJ TRACE ALREADY ACTIVE
- SA1 L.TRJH LENGTH
- NZ X1,RJA1 IF TABLE ALREADY ALLOCATED
- ALLOC TRJH,TRJHL ALLOCATE RJ TRACE BUFFER
- RJA1 SA1 F.TRJH CLEAR RJ HISTORY BUFFER
- SA2 L.TRJH
- SX6 B1 INITIAL *IN*
- SA6 X1
- SB3 X2
- BX6 X6-X6
- SB2 B1 SKIP *IN* POINTER STORAGE
- RJA2 SA6 X1+B2
- SB2 B2+B1
- LT B2,B3,RJA2 IF MORE ADDRESSES IN BUFFER
- SX6 B1
- EQ RJA4 SET NEW RJ TRACE STATE
- RJA3 ZR X2,RJA6 IF RJ TRACE ALREADY INACTIVE
- SX6 B0
- RJA4 SA6 RJAA SET NEW RJ TRACE STATE
- SB2 30
- SA1 RJAT-1 PRESET (A1)
- RJA5 SA1 A1+B1 NEXT ENTRY
- ZR X1,RJA6 IF END OF TABLE
- SA2 X1 FETCH INSTRUCTION WORD
- LX6 X2,B2 REVERSE RJ INSTRUCTIONS
- SA6 A2
- EQ RJA5 LOOP
- RJAA CON 0 RJ TRACE STATE, 0=INACTIVE, 1=ACTIVE
- RLS SPACE 4,20
- ** RLS - RECLAIM LOST SPACE.
- *
- * IF (IX) POINTS TO A HOLE ENTRY THEN THE LOST SPACE IS MERGED
- * WITH THAT HOLE, ELSE A NEW HOLE IS CREATED IF THE LOST SPACE
- * IS AT LEAST THREE PRUS (SS+DATA+EOI), OTHERWISE THE LOST
- * SPACE IS LEFT AS LOST SPACE.
- *
- * ENTRY (IX) = INDEX OF NEXT ENTRY.
- * (IX)-1 = FILE INDEX.
- * (X6) = FILE LENGTH.
- * (X7) = LOST SPACE FOLLOWING THE FILE.
- *
- * EXIT (LS) = UPDATED.
- *
- * USES X - ALL.
- * A - 1, 2, 3, 4, 5, 6, 7.
- * B - 2.
- *
- * CALLS CIP, CRA, CTE, RCE, WCE.
- * UPDATE STATISTICS.
- RLS3 SA1 LS LOST SPACE
- SA2 RLSA SPACE
- SX6 B1
- LX2 30
- IX6 X6+X2
- IX6 X6+X1
- SA6 A1 UPDATE LOST SPACE
- RLS SUBR ENTRY/EXIT
- SA7 RLSA LOST SPACE FOLLOWING FILE
- SA4 F.TFRI
- SA1 IX
- SA3 L.TFRI
- SB2 X1+
- IX3 X1-X3
- SA2 X4+B2
- PL X3,RLS2 IF PAST END OF TABLE
- PL X2,RLS2 IF FILE OR EOI FOLLOWS LOST SPACE
- * MERGE THE LOST SPACE WITH THE HOLE FOLLOWING IT.
- MX0 -24
- BX7 -X0*X7
- IX6 X2-X7 BACK UP THE RSA OF THE HOLE
- SA6 A2 REWRITE *TFRI* ENTRY
- SA3 LT
- NZ X3,RLS1 IF *TFHL* TABLE IS NOT ACTIVE
- SA3 F.TFHL
- SA3 X3+B2
- IX6 X3-X7 BACK UP THE RSA OF THE HOLE
- LX7 -24
- IX6 X6+X7 INCREASE THE LENGTH
- LX7 24
- SA6 A3 REWRITE THE *TFHL* ENTRY
- RLS1 SA5 A2 *TFRI* ENTRY
- RJ CRA CONVERT RANDOM ADDRESS
- SA1 A2
- RJ RCE READ CATALOG ENTRY
- SA1 A0+FCLF
- SA4 RLSA LOST SPACE LENGTH
- LX4 -24
- IX6 X1+X4 INCREASE THE HOLE SIZE
- SA6 A1
- SA1 A0+FCBT
- MX0 36
- BX6 X0*X1
- BX5 -X0*X5
- BX6 X6+X5 SET NEW ADDRESS OF HOLE
- SA6 A1
- RJ WCE WRITE CATALOG ENTRY
- EQ RLSX RETURN
- * CREATE AN ENTRY FOR THE LOST SPACE.
- RLS2 SX4 B1+B1
- IX3 X4-X7
- PL X3,RLS3 IF SMALLER THAN ABSOLUTE MINIMUM
- SA3 L.TAPE
- ZR X3,RLS3 IF *TAPE* TABLE EMPTY
- NG X3,RLS3 IF *TAPE* TABLE EMPTY
- SA2 A2-B1 ENTRY OF FILE PRECEDING LOST SPACE
- IX2 X2+X6 FILE RSA + FILE LENGTH
- IX2 X2+X4 FILE RSA + FILE LENGTH + SS + EOI
- IX6 X7-X4 LENGTH OF THE HOLE (LOST SPACE - SS - EOI)
- RJ CTE CREATE TABLE ENTRY
- SA6 RLSB SAVE *TFRI* ENTRY
- BX5 X6
- RJ CRA CONVERT RANDOM ADDRESS
- SA1 RLSB
- RJ RCE READ CATALOG ENTRY
- SA1 A0+FCBT
- MX0 36
- BX6 X0*X1
- BX5 -X0*X5
- BX7 X6+X5
- SA7 A1 SET THE ADDRESS OF THE HOLE
- SA1 A0+FCLF
- SA4 RLSA LOST SPACE
- SX0 B1+B1
- IX4 X4-X0 LOST SPACE - SS - EOI
- MX0 24
- LX4 -24
- BX4 X0*X4
- BX6 -X0*X1
- BX6 X6+X4
- SA6 A1 SET LENGTH OF HOLE
- RJ CIP CLEAR IRRELEVANT INFORMATION
- RJ WCE WRITE CATALOG ENTRY
- EQ RLSX RETURN
- RLSA CON 0 LOST SPACE FOLLOWING FILE
- RLSB CON 0 *TFRI* ENTRY RETURNED FROM *CTE*
- RSS SPACE 4,15
- ** RSS - REMOVE *SSST* STATUS FROM DUMP FILES.
- *
- * EXIT *SSST* STATUS REMOVED FROM SPECIFIED FILES.
- *
- * USES X - 1, 2, 6.
- * A - 1, 2, 6.
- * B - 7.
- *
- * MACROS RECALL, SETFS, STATUS.
- RSS SUBR ENTRY/EXIT
- SB7 RSSA-1 FILE LIST MINUS ONE
- RSS1 RECALL S
- SB7 B7+B1
- SA1 B7 42/0LLFN,18/3
- ZR X1,RSS2 IF END OF FILE NAME LIST
- BX6 X1
- SA6 S SET SCRATCH FET+0
- STATUS S,P
- SA2 S+5 GET FNT
- MX1 -6
- BX2 -X1*X2 GET FILE STATUS
- SX1 X2-SSST
- NZ X1,RSS1 IF PRIOR OUTPUT ID
- SETFS S,0 CLEAR FILE STATUS
- EQ RSS1 LOOP
- RSS2 RECALL S
- SX6 3
- SA6 S CLEAR SCRATCH FET
- EQ RSSX RETURN
- RSSA VFD 42/0LOUTPUT,18/3
- VFD 42/0LZZZZDMB,18/3
- CON 0
- TOV SPACE 4,15
- ** TOV - TABLE OVERFLOW PROCESSOR.
- *
- * ENTRY (B5) = -AMOUNT OF MEMORY NEEDED.
- * (B6) = RETURN ADDRESS.
- *
- * EXIT TO *ERR* IF UNABLE TO OBTAIN MEMORY.
- *
- * USES X - 0, 1, 2, 6.
- * A - 1, 2, 6.
- *
- * MACROS MEMORY, MESSAGE.
- TOV BSS 0 ENTRY
- SX6 -B5
- SA1 F.TEND
- IX6 X6+X1 CM REQUIRED TO SATISFY TABLES
- SX1 10B INSURANCE
- IX6 X6+X1 REQUIRED + INSURANCE
- SA2 TOVD MAXIMUM CM FOR CURRENT JOB STEP
- IX1 X6-X2
- PL X1,TOV3 IF JOB MAXIMUM IS INSUFFICIENT
- SX1 3000B DESIRED CM INCREMENT ABOVE REQUIREMENT
- IX6 X6+X1 REQUIRED + INSURANCE + INCREMENT
- IX1 X6-X2
- NG X1,TOV1 IF JOB MAXIMUM IS SUFFICIENT
- BX6 X2 REQUEST THE MAXIMUM CM ALLOWED
- TOV1 SA6 TOVA CM FL REQUESTED
- LX6 30
- SA6 TOVB *STAT* FOR MEMORY MACRO
- MEMORY CM,TOVB,R,,NA
- SA1 TOVB FL OBTAINED
- BX6 X1
- SA1 TOVC PREVIOUS MAXIMUM FL
- AX6 30
- IX1 X1-X6 OLD - NEW
- PL X1,TOV2 IF NOT NEW MAXIMUM
- SA6 A1
- TOV2 SA1 TOVA REQUESTED FL
- IX1 X6-X1
- NG X1,TOV3 IF CM FL NOT OBTAINED
- SX6 X6-10B CM FL MINUS INSURANCE
- SA6 F.TEND NEW END OF MANAGED TABLES
- JP B6 RE-ENTER PROCESSOR
- TOV3 SA1 L.TAPE CHECK THE *TAPE* TABLE SIZE
- ZR X1,TOV4 IF NO SPACE TO RELEASE
- BX6 X6-X6
- SA6 A1 SET *TAPE* TABLE SIZE TO ZERO
- JP B6 RE-ENTER PROCESSOR
- TOV4 SA1 LT CHECK IF *TFHL* TABLE IS ACTIVE
- NZ X1,TOV5 IF *TFHL* IS NOT ACTIVE
- SX6 1
- SA6 LT SET *TFHL* NOT ACTIVE
- MESSAGE (=C* TFHL TABLE DEACTIVATED.*)
- SX6 B0+
- SA6 L.TFHL SET LENGTH OF *TFHL* TABLE TO ZERO
- JP B6 RE-ENTER PROCESSOR
- TOV5 SX0 =C* TABLE OVERFLOW, UNABLE TO OBTAIN REQUIRED MEMORY.*
- EQ ERR ABORT
- TOVA CON 0 MEMORY REQUESTED
- TOVB CON 0 MEMORY MACRO STAT WORD
- TOVC CON 0 MAXIMUM FIELD LENGTH OBTAINED
- TOVD CON 0 MAXIMUM CM FOR CURRENT JOB STEP
- UFE SPACE 4,10
- ** UFE - UPDATE FILE ENTRY.
- *
- * ENTRY (HE) = HOLE *TFRI* TABLE ENTRY.
- * (FE) = FILE *TFRI* TABLE ENTRY.
- * (FS) = FILE SIZE FROM PFC ( + 1 FOR SS).
- *
- * EXIT FILE CATALOG ENTRY UPDATED.
- * TABLE ENTRIES UPDATED AND EXCHANGED.
- * TO *ERR* IF ERROR.
- *
- * USES X - ALL.
- * A - 1, 2, 3, 4, 5, 6, 7.
- *
- * CALLS CRA, RCE, WCE.
- UFE SUBR ENTRY/EXIT
- SA5 HE HOLE ENTRY
- RJ CRA GET FILE ADDRESS
- SA1 FE FILE ENTRY
- RJ RCE READ FILE CATALOG ENTRY
- SA1 A0+FCBT
- MX0 36
- BX6 X0*X1
- BX5 -X0*X5
- BX7 X6+X5 SET NEW ADDRESS OF FILE
- SA7 A1
- RJ WCE
- SA1 F.TFRI
- SA2 IX
- IX1 X2+X1
- SA2 X1
- SA1 A2-1
- SA3 FS
- MX4 -24
- BX5 X4*X2
- BX7 -X4*X1
- BX7 X5+X7
- SX6 B1
- IX6 X3+X6
- IX6 X1+X6
- SA6 A2 NEW HOLE ENTRY
- SA7 A1 NEW FILE ENTRY
- SA3 LT
- NZ X3,UFEX IF *TFHL* IS NOT ACTIVE
- SA3 F.TFHL EXCHANGE RSA-S IN *TFHL*
- SA4 IX
- IX3 X4+X3
- SA4 X3 IX ENTRY
- SA3 A4-B1 IX-1 ENTRY
- BX1 X7-X3 CHECK IF *TFRI*/*TFHL* MATCH (NEW F OLD H)
- MX2 -24
- BX1 -X2*X1
- SX0 =C* INTERNAL ERROR, TFRI/TFHL MISMATCH IN UFE.*
- NZ X1,ERR IF *TFRI*/*TFHL* MISMATCH
- BX3 X2*X3 REMOVE OLD RSA
- BX4 X2*X4
- BX6 -X2*X6 ISOLATE NEW RSA
- BX7 -X2*X7
- BX6 X3+X6 INSERT NEW RSA
- BX7 X4+X7
- SA6 A4 STORE ENTRY WITH EXCHANGED RSA
- SA7 A3
- EQ UFEX RETURN
- UFF SPACE 4,30
- ** UFF - UPDATE AFTER FILL FILE MOVE.
- *
- * ENTRY (HE) = COLLECTION HOLE *TFRI* TABLE ENTRY.
- * (FE) = SLIDE FILE *TFRI* TABLE ENTRY.
- * (FF) = FILL FILE *TFRI* TABLE ENTRY.
- * (FS) = FILL FILE SIZE + SYSTEM SECTOR.
- * (HL) = COLLECTION HOLE LENGTH.
- * (FX) = FILL FILE INDEX.
- * (IX) = SLIDE FILE INDEX.
- * (IX)-1 = COLLECTION HOLE INDEX.
- *
- * EXIT FILL FILE PFC ENTRY UPDATED.
- * PFC CREATED FOR NEW HOLE AT (FX).
- * *TFRI*, *TFHL* AND *TAPE* TABLES UPDATED.
- * (HE) = UPDATED.
- * (HL) = UPDATED.
- * (LT) = UPDATED (*TFHL* TABLE MAY BECOME INACTIVE).
- * (PCHA) = -1 IFF THE COLLECTION HOLE IS CLOSED.
- *
- * USES X - ALL.
- * A - 1, 2, 3, 4, 5, 6, 7.
- * B - 2, 3.
- *
- * CALLS CIP, CTE, CRA, RCE, WCE.
- UFF SUBR ENTRY/EXIT
- * UPDATE THE FILL FILE PFC.
- SA5 HE COLLECTION HOLE ENTRY
- RJ CRA CONVERT RANDOM ADDRESS
- SA1 FF FILL FILE ENTRY
- RJ RCE READ CATALOG ENTRY
- SA1 A0+FCBT
- MX0 36
- BX6 X0*X1
- BX5 -X0*X5
- BX7 X6+X5
- SA7 A1+ SET NEW ADDRESS OF FILE
- RJ WCE WRITE CATALOG ENTRY
- * CHANGE THE COLLECTION HOLE PFC TO POINT TO THE NEW HOLE.
- SA5 FF FILL FILE ENTRY
- RJ CRA CONVERT RANDOM ADDRESS
- SA1 HE COLLECTION HOLE ENTRY
- RJ RCE READ CATALOG ENTRY
- SA1 A0+FCBT
- MX0 36
- BX6 X0*X1
- BX5 -X0*X5
- BX7 X6+X5
- SA2 FS FILE SIZE + SS
- SX6 B1
- IX6 X2-X6 NEW HOLE LENGTH
- MX0 24
- LX6 36-0
- BX7 -X0*X7
- BX6 X0*X6
- BX7 X7+X6 INSERT NEW LENGTH
- SA7 A1 SET LENGTH AND NEW ADDRESS OF HOLE
- RJ CIP CLEAR IRRELEVANT INFORMATION
- RJ WCE WRITE CATALOG ENTRY
- * UPDATE THE *TFRI*/*TFHL* ENTRIES EXCEPT FOR COLLECTION HOLE.
- SA1 F.TFRI
- SA2 IX SLIDE FILE INDEX
- SA3 FX FILL FILE INDEX
- SB3 X3
- SB2 X2-1 COLLECTION HOLE INDEX
- SA4 X1+B3 FILL FILE ENTRY
- SA1 X1+B2 COLLECTION HOLE ENTRY
- MX0 -24
- BX6 -X0*X1 NEW RSA OF FILL FILE
- BX7 -X0*X4 RSA OF NEW HOLE
- BX1 X0*X1 PFC ADDRESS, ET CETERA, OF NEW HOLE
- BX4 X0*X4 PFC ADDRESS, ET CETERA, OF FILL FILE
- BX6 X6+X4 FILE ENTRY
- BX7 X7+X1 NEW HOLE ENTRY
- SA6 A1 FILE ENTRY GOES WHERE COLLECTION HOLE WAS
- SA7 A4 HOLE ENTRY GOES WHERE FILL FILE WAS
- SA1 F.TFHL
- SA4 X1+B3 FILL FILE LENGTH ENTRY
- SA1 X1+B2 COLLECTION HOLE LENGTH ENTRY
- BX6 -X0*X6 RSA OF FILL FILE ENTRY
- BX7 -X0*X7 RSA OF HOLE ENTRY
- BX4 X0*X4 LENGTH OF FILL FILE
- BX6 X6+X4 FILL FILE ENTRY
- BX7 X7+X4 HOLE ENTRY
- SA6 A1 FILE ENTRY GOES WHERE COLLECTION HOLE WAS
- SA7 A4 HOLE ENTRY GOES WHERE FILL FILE WAS
- * UPDATE THE COLLECTION HOLE STATUS.
- SA1 HL COLLECTION HOLE LENGTH
- LX7 24
- SX4 B1+B1
- BX2 -X0*X7 NEW HOLE LENGTH
- IX7 X2+X4 FILE LENGTH + SS + EOI
- IX6 X1-X7
- SA6 A1 NEW COLLECTION HOLE LENGTH
- SX0 =C/ INTERNAL ERROR, HOLE LENGTH NEGATIVE IN UFF./
- NG X6,ERR IF HOLE LENGTH NEGATIVE ABORT
- NZ X6,UFF1 IF NOT EXACT FIT
- BX7 -X6
- SX6 -B1
- SA7 HE NEW COLLECTION HOLE ENTRY (NONE)
- SA6 PCHA INDICATE COLLECTION HOLE CLOSED
- EQ UFFX RETURN
- UFF1 SA1 HE OLD RSA OF COLLECTION HOLE
- IX2 X2+X4 SS AND EOI OF FILE
- IX2 X1+X2 NEW RSA OF COLLECTION HOLE
- IX6 X6-X4 HOLE LENGTH FOR PFC (W/O SS EOI)
- SA1 IX INDEX BEFORE WHICH TO INSERT THE ENTRY
- RJ CTE CREATE AND INSERT TABLE ENTRY
- SA1 HC HOLES CREATED
- SX6 B1
- IX6 X1+X6
- SA6 A1
- EQ UFFX RETURN
- UHE SPACE 4,20
- ** UHE - UPDATE HOLE ENTRY.
- *
- * ENTRY (HE) = HOLE *TFRI* TABLE ENTRY.
- * (HL) = HOLE LENGTH.
- * (IX)-1 = HOLE ENTRY INDEX.
- *
- * EXIT CATALOG UPDATED.
- * (HS) = UPDATED.
- * (HL) = 0.
- * (PCHA) = -1.
- * TO *ERR* IF ERROR.
- *
- * USES X - 0, 1, 2, 3, 4, 5, 6.
- * A - 1, 2, 3, 4, 5, 6.
- *
- * CALLS CIP, CRA, DLK, DRP, DTE, FLT, RCE, VHS, WCE.
- UHE6 SX6 -B1
- SA6 PCHA SET COLLECTION HOLE CLOSED
- BX6 X6-X6
- SA6 HL REPLACE THEN FALL TO RETURN
- UHE SUBR ENTRY/EXIT
- SA5 HE GET HOLE ADDRESS
- RJ CRA
- RJ FLT FIND LAST TRACK OF HOLE
- NZ X6,UHE1 IF NOT AT END OF TRACK CHAIN
- RJ DRP DROP TRACKS AT END OF CHAIN
- EQ UHE2 REWRITE HOLE ENTRY
- UHE1 RJ VHS VERIFY HOLE SIZE
- NG X7,UHE2 IF NO TRACKS TO DELINK
- RJ DLK DELINK TRACKS
- UHE2 SA1 HE
- RJ RCE UPDATE CATALOG ENTRY FOR HOLE
- SA1 A0+FCLF
- SA2 HL
- SX6 X2-3 MAKE SURE HOLE IS .GE. REAL MINIMUM SIZE
- NG X6,UHE4 IF HOLE TOO SMALL
- SX2 X2-2 ADJUST FOR SYSTEM AND EOI SECTORS
- MX4 12
- LX4 -24
- BX1 X4*X1
- LX2 36
- BX6 X1+X2 PUT IN NEW LENGTH
- MX4 -24
- BX5 -X4*X5
- BX6 X6+X5 PUT IN ADDRESS
- SA6 A1
- SA1 IX
- SA3 LT
- NZ X3,UHE3 IF *TFHL* TABLE IS NOT ACTIVE
- SA3 F.TFHL
- SX1 X1-1 INDEX TO HOLE ENTRY
- IX3 X3+X1
- SA3 X3 ENTRY
- LX4 -24
- BX6 X4*X3 REMOVE OLD LENGTH
- BX2 -X4*X2
- BX6 X6+X2 INSERT NEW LENGTH
- SA6 A3
- LX4 24
- SA1 HE
- BX6 X6-X1
- BX6 -X4*X6
- SX0 =C* INTERNAL ERROR, TFRI/TFHL MISMATCH IN UHE.*
- NZ X6,ERR IF TABLE MISMATCH
- UHE3 RJ CIP CLEAR IRRELEVANT PFC INFORMATION
- RJ WCE WRITE CATALOG ENTRY
- SA3 HL UPDATE HOLE STATISTICS
- SX6 B1
- IX3 X3-X6 ADJUST FOR SYSTEM AND EOI SECTORS
- IX3 X3-X6
- LX3 30
- IX6 X3+X6
- SA3 HS
- IX6 X6+X3
- SA6 A3
- EQ UHE6 CLEAR HOLE SIZE
- UHE4 SA1 A0+FCBS PURGE HOLE SMALLER THAN MINIMUM HOLE SIZE
- SX6 1S11
- BX6 X6+X1 SET DAPF BIT
- SA6 A1
- RJ CIP CLEAR IRRELEVANT INFORMATION
- RJ WCE UPDATE CATALOG ENTRY
- SA4 IX
- SX4 X4-1 ESTABLISH (IX)-1 AS THE ENTRY TO DELETE
- RJ DTE DELETE TABLE ENTRY
- SA1 IX ADJUST (IX) SINCE PRIOR ENTRY WAS DELETED
- SX6 X1-1
- SA6 A1
- SA1 LS UPDATE LOST SPACE
- SA2 HL HOLE LENGTH
- LX2 30
- BX6 X2
- ZR X6,UHE5 IF CATALOG ENTRY PURGED
- SX6 B1 ONE HOLE LOST
- UHE5 IX6 X6+X2 LENGTH
- IX6 X6+X1 COUNT
- SA6 A1 REPLACE
- SA1 HR CATALOG ENTRY RELEASED
- SX6 B1
- IX6 X6+X1
- SA6 A1 REPLACE
- EQ UHE6 CLEAR HOLE LENGTH
- UKD SPACE 4,15
- ** UKD - UPDATE *K* DISPLAY.
- *
- * ENTRY *K* DISPLAY SCREEN PRESET WITH STATIC VALUES.
- *
- * EXIT LEFT SCREEN CONTROL WORD SCREEN DISPLAY BIT CLEARED.
- * DYNAMIC VALUES UPDATED.
- *
- * USES X - 0, 1, 2, 3, 6, 7.
- * A - 0, 1, 2, 3, 6.
- * B - 2, 3, 4.
- *
- * CALLS CFD, COD, FRM, FSM, ZTB.
- UKD SUBR ENTRY/EXIT
- SA1 KDLS LEFT SCREEN CONTROL WORD
- MX0 -1
- BX6 X0*X1 CLEAR SCREEN DISPLAYED BIT
- SA6 A1
- SA2 L.TFRI CURRENT LENGTH OF *TFRI*
- SA1 IX CURRENT POSITION IN *TFRI*
- PX0 X2
- PX7 X1
- NX6 X0
- NX0 X7
- FX7 X0/X6
- SA1 =100000. 100.*1000.
- RX0 X1*X7
- UX7,B2 X0
- LX6 B2,X7 PERCENT PROCESSED * 1000.
- BX1 X6
- RJ CFD CONVERT TO FLOATING POINT FORMAT
- SA6 KDLSC
- SA1 L.TFRI
- RJ COD CONVERT TO OCTAL DISPLAY
- SA6 KDLSD
- SA1 IX
- RJ COD CONVERT TO OCTAL DISPLAY
- SA6 KDLSE
- SA1 FX
- RJ COD CONVERT TO OCTAL DISPLAY
- SA6 KDLSF
- SA2 =H* YES*
- SA3 =H* NO*
- SA1 LT
- BX6 X2 YES
- ZR X1,UKD1 IF TABLE ACTIVE
- BX6 X3 NO
- UKD1 SA6 KDLSH
- SA1 ID
- BX6 X2 YES
- NZ X1,UKD2 IF IDLE DOWN REQUESTED
- BX6 X3 NO
- UKD2 SA6 KDLSI
- SA1 RP
- BX6 X2 YES
- NZ X1,UKD3 IF REPRIEVE ACTIVE
- BX6 X3 NO
- UKD3 SA6 KDLSJ
- SA1 JM FILES MOVED VIA THE FILL TECHNIQUE
- SA0 KDLS1
- RJ FSM
- SA1 SM FILES MOVED VIA THE SLIDE TECHNIQUE
- SA0 KDLS2
- RJ FSM
- SA1 DM FILES MOVED
- SA0 KDLS3
- RJ FSM
- SA1 LS LOST SPACE
- SA0 KDLS4
- RJ FSM
- SA1 HS HOLES REMAINING
- SA0 KDLS5
- RJ FSM
- SA0 KDLS6
- RJ FRM FORMAT HOLES REMOVED MESSAGE
- SA1 DS DROPPED TRACKS SPACE
- SA0 KDLS7
- RJ FSM
- * MOVE CURRENT *B* DISPLAY MESSAGE TO THE *K* DISPLAY.
- SB4 B0 ZERO BYTE FLAG
- SB3 5 MAXIMUM WORDS TO TRANSFER TO *K* DISPLAY
- SB2 B0 ADDRESS OFFSET
- MX2 -12
- SA1 MSGA ADDRESS OF CURRENT MESSAGE
- SX0 X1 SOURCE BASE ADDRESS
- UKD4 SA1 X0+B2
- BX6 -X2*X1
- NZ X6,UKD5 IF NOT ZERO BYTE
- SB4 B1+ SET ZERO BYTE ENCOUNTERED FLAG
- SA2 =10H
- UKD5 RJ ZTB
- UKD6 SA6 KDLS=+B2 STORE WORD IN *K* DISPLAY BUFFER
- SB2 B2+B1
- GE B2,B3,UKDX IF ALL WORDS PROCESSED
- EQ B4,B0,UKD4 IF NO ZERO BYTE ENCOUNTERED
- BX6 X2 BLANKS
- EQ UKD6 BLANK FILL
- USS SPACE 4,20
- ** USS - UPDATE SYSTEM SECTOR.
- *
- * ENTRY (A0) = ADDRESS OF PFC OR ZERO FOR NO PFC UPDATE IN SS.
- * (X1) = ADDRESS OF SYSTEM SECTOR (INCLUDING THE EXTRA
- * WORD WITH THE LINKAGE BYTES).
- * (X5) = TK/SC ADDRESS OF TARGET LOCATION.
- *
- * EXIT SYSTEM SECTOR UPDATED.
- * PFC IN SYSTEM SECTOR UPDATED IF REQUESTED.
- *
- * USES X - 1, 5, 6.
- * A - 1, 6.
- *
- * MACROS MOVE.
- USS SUBR ENTRY/EXIT
- SX6 X1
- SA6 USSA SAVE TARGET ADDRESS
- SX6 A0
- ZR X6,USSX IF PFC UPDATE NOT REQUESTED
- SX6 X1
- MOVE NWCE,A0,X6+CTSS+1
- SA1 USSA UPDATE TRACK AND SECTOR IN PFC
- SA1 X1+CTSS+FCBT+1
- MX6 -24
- BX1 X6*X1
- BX5 -X6*X5
- BX6 X1+X5
- SA6 A1
- EQ USSX RETURN
- USSA CON 0 STORAGE FOR TARGET ADDRESS
- VHS SPACE 4,15
- ** VHS - VERIFY THAT HOLE SIZE IS ADEQUATE FOR DELINK.
- *
- * ENTRY (X3) = SECTOR LIMIT.
- * (X4) = 36/0, 12/TRACK, 12/0 (OF HOLE).
- * (X5) = 36/0, 12/TRACK, 12/SECTOR (OF HOLE).
- *
- * EXIT (X7) .LT. 0 IF HOLE IS TOO SMALL FOR DELINK.
- *
- * USES X - 1, 2, 6, 7.
- * A - 1, 2, 6, 7.
- VHS SUBR ENTRY/EXIT
- VHS1 SA1 NTIH CHECK TRACK COUNT
- SX7 X1-2
- NG X7,VHSX IF HOLE TOO SMALL
- * ENSURE HOLE AFTER DELINK IS LARGE ENOUGH.
- SA1 HSIT HOLE SIZE IN TRACK
- BX6 X5-X4 FIRST SECTOR OF FIRST TRACK
- ZR X6,VHS2 IF FIRST TRACK TO BE DELINKED
- IX6 X3-X6 HOLE SIZE IN FIRST TRACK
- VHS2 IX6 X1+X6 HOLE SIZE IN FIRST AND LAST TRACK
- SX6 X6-MNHS
- PL X6,VHSX IF HOLE SIZE ADEQUATE
- * INCREASE HOLE SIZE BY ADDING TRACK.
- IX6 X1+X3 ADD SECTORS FOR ONE TRACK TO HOLE LENGTH
- SX7 X7+B1 (TRACK COUNT - 1) = (TRACK COUNT - 2) + 1
- SA6 A1+ SECTORS REMAINING IN HOLE
- SA7 NTIH NUMBER OF TRACKS
- SA1 PTIH PREVIOUS LAST TRACK
- SA2 LTIH LAST TRACK IN HOLE
- BX6 X1
- LX7 X2
- SA6 A2+ NEW LAST TRACK
- SA7 CTIH NEW CURRENT TRACK
- EQ VHS1 MAKE SURE HOLE SPANS AT LEAST ONE TRACK
- WCE SPACE 4,15
- ** WCE - WRITE CATALOG ENTRY.
- *
- * ENTRY (RCEA) = CURRENT PRU RSA.
- * (RCEC) = CURRENT PRU LENGTH.
- * (CBUF) = PRU TO WRITE.
- *
- * USES X - 1, 3, 6.
- * A - 1, 6.
- *
- * MACROS CALLPFU, RECALL, SCIOF, SYSTEM.
- WCE SUBR ENTRY/EXIT
- SA1 NC
- NZ X1,WCEX IF NO CHANGES ARE TO BE MADE TO THE DEVICE
- RECALL C
- SA1 RCEA
- NZ X1,WCE1 IF NOT PRU 0
- CALLPFU C,CTRC,R REWIND CATALOG FILE
- SA1 RCEA
- WCE1 BX6 X1
- SA6 C+6 SET RANDOM ADDRESS
- SA1 RCEC
- SX3 X1-100B
- ZR X3,WCE2 IF FULL PRU
- SCIOF C,224B SET *CIO* *REWRITER* FUNCTION IN FET
- SYSTEM MPF,R,C,7S6 REWRITE SECTOR VIA *MPF*
- EQ WCEX RETURN
- WCE2 SCIOF C,214B SET *CIO* *REWRITE* FUNCTION IN FET
- SYSTEM MPF,R,C,7S6 REWRITE SECTOR VIA *MPF*
- EQ WCEX RETURN
- ZWT SPACE 4,10
- ** ZWT - ZERO WORD TERMINATE *TFRI* TABLE.
- *
- * EXIT ZERO WORD SET AT END OF *TFRI* TABLE.
- *
- * USES X - 1, 6.
- * A - 1, 6.
- * B - 7.
- ZWT SUBR ENTRY/EXIT
- SA1 L.TFRI
- SB7 X1
- BX6 X6-X6
- SA1 F.TFRI
- SA6 X1+B7
- EQ ZWTX RETURN
- SPACE 4,10
- * RJAT - RJ ADDRESS TABLE (FOR RJ TRACE).
- RJAT BSS 0
- RJAT HERE DUMP RJ ADDRESS TABLE HERE
- CON 0 TERMINATE TABLE
- SPACE 4,10
- * COMMON DECKS.
- *CALL COMCCDD
- *CALL COMCCIO
- *CALL COMCCFD
- *CALL COMCCOD
- *CALL COMCLFM
- *CALL COMCMTP
- *CALL COMCMVE
- *CALL COMCPFU
- *CALL COMCSNM
- *CALL COMCSYS
- *CALL COMCZTB
- SPACE 4,10
- SEG
- USE BUFFERS
- DBUF BSS DBUFL FILE TRANSFER BUFFER
- WBUF BSS NWCE PFC BUFFER
- CBUF BSS CBUFL CATALOG TRACK BUFFER
- SBUF BSS SBUFL SCRATCH FET BUFFER
- MSTBUF BSS MSTL MST BUFFER
- MEML BSS 700B MANAGED TABLE BUFFER
- RFL= BSS 0 INITIAL FIELD LENGTH
- TITLE PRESET.
- PRS SPACE 4,10
- ** PRS - PRESET.
- *
- * ENTRY (B1) = 1.
- *
- * EXIT COMMAND PARAMETERS PROCESSED.
- * DEVICE UTILITY INTERLOCK SET.
- * ERROR EXIT ADDRESS SET.
- * TABLE *TCAT* CREATED.
- * TABLE *TFRI* CREATED AND SORTED.
- * TABLE *TTLT* CREATED.
- *
- * USES X - 1, 6, 7.
- * A - 1, 6, 7.
- *
- * CALLS CST, ICF, PAG, SCT.
- *
- * MACROS GETFLC, PDATE, STIME, SYSTEM, TIME.
- ORG DBUF
- QUAL PRS
- PRS SUBR ENTRY/EXIT
- SX6 A0+
- SX7 A0-10B
- SA6 TOVC INITIAL FL
- SA7 F.TEND SET TABLE END AS FL-10B
- TIME ST START CPU TIME
- STIME SS START SRU-S
- PDATE PD GET PACKED DATE AND TIME
- GETFLC TOVD
- SA1 TOVD
- MX6 12
- BX6 X6*X1 ISOLATE MAXIMUM CM FOR CURRENT JOB STEP
- LX6 17-59 POSITION AS 18 BIT ADDRESS
- SA6 A1
- SYSTEM CPM,R,,10100B ABORT IF NO SYSTEM ORIGIN/PRIVILEGES
- RJ PAG PROCESS COMMAND ARGUMENTS
- RJ ICF FIND DEVICE AND INTERLOCK FILE
- RJ SCT SCAN CATALOG TRACKS
- RJ CST CONVERT AND SORT TABLES
- RJ KDP *K* DISPLAY PRESET
- SX6 B1+
- SA6 PC SET PRESET COMPLETE
- EQ PRSX RETURN
- TITLE PRESET SUBROUTINES.
- CST SPACE 4,15
- ** CST - CONVERT AND SORT TABLES.
- *
- * EXIT TABLES BUILT AND SORTED.
- *
- * USES X - 0, 1, 2, 5, 6, 7.
- * A - 1, 2, 5, 6, 7.
- * B - 6, 7.
- *
- * CALLS CTT, MSG, MTD, SRA, SST, ZWT.
- *
- * MACROS MEMORY.
- CST SUBR ENTRY/EXIT
- SX0 CSTA * CREATING TRACK RESERVATION TABLE.*
- RJ MSG
- SA5 EQ
- RJ CTT CONVERT TRACK TABLE
- SA1 L.TFRI
- SB6 X1
- BX7 X7-X7
- SA5 LT
- NZ X5,CST1 IF *TFHL* IS NOT ACTIVE
- SA5 L.TFHL
- BX5 X1-X5
- SX0 CSTB * INTERNAL ERROR, TFRI/TFHL MISMATCH ...*
- NZ X5,ERR IF *TFRI*/*TFHL* LENGTH MISMATCH
- SA1 F.TFHL
- SA7 X1+B6 CLEAR EXPANSION WORD FOLLOWING TABLE
- CST1 SA1 F.TFRI
- SA7 X1+B6 CLEAR EXPANSION WORD FOLLOWING TABLE
- SX0 CSTC * CONVERTING RANDOM ADDRESSES.*
- RJ MSG
- SA5 F.TFRI
- SA5 X5-1
- SA2 F.TFHL
- SA2 X2-1
- CST2 SA5 A5+1
- SA1 LT
- NZ X1,CST3 IF *TFHL* IS NOT ACTIVE
- SA2 A2+1
- MX0 -24
- BX2 -X0*X2
- BX6 -X0*X5
- BX2 X2-X6
- SX0 CSTD * INTERNAL ERROR, TFRI/TFHL MISMATCH ...*
- NZ X2,ERR IF *TFRI*/*TFHL* MISMATCH
- CST3 ZR X5,CST4 IF END OF TABLE
- RJ SRA SET RANDOM ADDRESS
- MX0 36
- SA5 A5
- BX5 X0*X5
- BX6 X5+X6
- SA6 A5
- SA1 LT
- NZ X1,CST2 IF *TFHL* IS NOT ACTIVE
- SA2 A2
- BX2 X0*X2
- BX6 -X0*X6
- BX6 X2+X6
- SA6 A2
- EQ CST2 LOOP
- CST4 SX0 CSTE * SORTING TABLE.*
- RJ MSG
- SA2 F.TFRI
- SA1 L.TFRI
- SB7 X2
- RJ SST SHELL-SORT TABLE
- SA1 LT
- NZ X1,CST5 IF *TFHL* IS NOT ACTIVE
- SA2 F.TFHL
- SA1 L.TFHL
- SB7 X2
- RJ SST SHELL-SORT TABLE
- CST5 RJ MTD MOVE TABLES DOWN
- RJ ZWT ZERO WORD TERMINATE *TFRI* TABLE
- SA1 F.TFHL
- SA2 L.TFHL
- IX6 X1+X2
- SX6 X6+B1
- SA6 F.TEND
- BX5 X6
- SX2 X5+10B MORE FL THAN TELLING
- MEMORY CM,,R,X2 REDUCE MEMORY
- EQ CSTX RETURN
- CSTA DATA C/ CREATING TRACK RESERVATION TABLE./
- CSTB DATA C* INTERNAL ERROR, TFRI/TFHL MISMATCH IN CST.*
- CSTC DATA C/ CONVERTING RANDOM ADDRESSES./
- CSTD DATA C* INTERNAL ERROR, TFRI/TFHL MISMATCH IN CST2.*
- CSTE DATA C/ SORTING TABLE./
- CTT SPACE 4,10
- ** CTT - CONVERT TRACK TABLE.
- *
- * ENTRY (X5) = EST ORDINAL.
- *
- * EXIT *TTLT* BUILT.
- *
- * USES X - ALL.
- * A - 1, 2, 4, 6, 7.
- * B - 2, 3, 4, 5, 6.
- *
- * CALLS MTD.
- *
- * MACROS ABSREAD, ALLOC.
- CTT SUBR ENTRY/EXIT
- ABSREAD ESTP
- MX0 -18
- LX6 24
- BX6 -X0*X6
- SX2 ESTE
- IX5 X5*X2
- IX5 X5+X6
- ABSREAD X5 READ EST ENTRY
- MX0 -12
- BX5 -X0*X6 FWA/10 OF MST
- LX5 3
- SX5 X5+TDGL
- ABSREAD X5
- AX6 24
- BX0 -X0*X6 LENGTH OF TRT
- ALLOC TTRT,X0
- SX5 X5+TRLL-TDGL
- ABSREAD X5
- MX1 -18
- BX5 -X1*X6 FWA TRT
- SA4 F.TTRT
- SX2 X0
- SX3 100B
- CTT1 IX2 X2-X3
- PL X2,CTT2 IF FULL BLOCK OF DATA
- IX3 X2+X3 LAST BLOCK SIZE
- SX2 B0
- CTT2 ABSREAD X5,X4,X3
- IX5 X5+X3 ADVANCE TRT ADDRESS
- IX4 X4+X3 ADVANCE DATA ADDRESS
- NZ X2,CTT1 IF MORE DATA TO READ
- LX0 2 LENGTH OF LINK TABLE
- ALLOC TTLT,X0
- AX0 2
- SB2 -B1
- SA1 F.TTRT
- SA2 F.TTLT
- SB3 X1 FWA *TTRT*
- SB4 X2 FWA *TTLT*
- SB5 0 WORD INDEX
- SX7 7777B
- CTT3 SA1 B3+B5 ADVANCE WORD
- SB6 4
- CTT4 SB2 B2+B1 INCREMENT TRACK
- LX1 12
- BX6 X7*X1
- SA6 B4+B2
- SB6 B6-B1
- NZ B6,CTT4 IF FULL WORD NOT PROCESSED
- SB5 B5+B1
- SX0 X0-1
- NZ X0,CTT3 IF MORE TRT WORDS
- SX7 0
- SA7 L.TTRT RELEASE *TTRT*
- RJ MTD PACK TABLES
- EQ CTTX RETURN
- FDN SPACE 4,15
- ** FDN - FIND DEVICE NUMBER.
- *
- * ENTRY (X1) = 42/ FAMILY NAME,6/ DEVICE NUMBER,12/ 0.
- *
- * EXIT (X1) = 0, IF DEVICE FOUND.
- * (X1) = 1, IF DEVICE NOT FOUND.
- * (X6) = EST ORDINAL.
- *
- * USES X - 1, 2, 3, 5, 6, 7.
- * A - 1, 2, 6, 7.
- * B - 2.
- *
- * MACROS ABSREAD.
- FDN5 SX6 B1+
- SA6 DF SET DUMP REQUIRED FLAG
- FDN6 SX1 B1 INDICATE DEVICE NOT FOUND
- FDN SUBR ENTRY/EXIT
- BX6 X1
- SA6 FDNA
- ABSREAD ESTP
- LX1 24
- MX6 -18
- BX2 -X6*X1 FWA EST
- MX6 -12
- LX1 24
- SX3 ESTE
- BX7 -X6*X1 LAST MS ORDINAL + 1
- IX7 X7*X3
- SA7 FDNC SAVE LAST MS ORDINAL + 1
- SX5 FDNB SET BUFFER TO READ INTO
- SX3 100B NUMBER OF WORDS TO READ
- FDN1 IX7 X7-X3
- PL X7,FDN2 IF NEXT WILL NOT BE LAST READ
- IX3 X7+X3
- SX7 B0
- FDN2 ABSREAD X2,X5,X3
- IX2 X2+X3
- IX5 X5+X3
- NZ X7,FDN1 IF MORE TO READ
- SA1 FDNA
- MX6 42
- BX1 X6*X1
- NZ X1,FDN3 IF FAMILY/PACK SPECIFIED
- ABSREAD PFNL GET SYSTEM DEFAULT NAME
- AX6 12
- MX2 -12
- BX1 -X2*X6
- SX2 ESTE
- IX1 X1*X2 FOR EST MULTI WORD ENTRIES
- SA2 FDNB+X1 PICK UP FIRST WORD OF EST ENTRY
- PL X2,FDN6 IF NOT MASS STORAGE DEVICE
- MX1 -12
- BX1 -X1*X2
- LX1 3 MST FOR DEFAULT FAMILY
- ABSREAD X1,MSTBUF,MSTL
- SA1 MSTBUF+PFGL
- SA2 FDNA
- MX6 42
- BX1 X6*X1
- BX2 -X6*X2
- BX6 X1+X2
- SA6 FDNA STORE FAMILY NAME AND DEVICE NUMBER
- FDN3 SA1 FDNC PICK UP LARGEST MS EST ORDINAL
- SB2 X1
- FDN4 SB2 B2-ESTE
- NG B2,FDN6 IF END OF EST
- SA1 B2+FDNB
- MX6 -12
- BX2 -X6*X1 MST ADDRESS/10B
- LX2 3
- PL X1,FDN4 IF NOT MASS STORAGE DEVICE
- LX1 59-54
- NG X1,FDN4 IF DEVICE *UNAVAILABLE*
- LX1 54-23
- NG X1,FDN4 IF DEVICE *OFF*
- ABSREAD X2,MSTBUF,MSTL
- SA1 MSTBUF+STLL
- SX2 7752B
- LX1 -48
- BX2 X1*X2
- NZ X2,FDN4 IF *INITIALIZE* OR *UNLOAD* STATUS
- MX6 48
- SA1 MSTBUF+PFGL
- SA2 FDNA
- BX1 X1-X2
- BX1 X6*X1
- NZ X1,FDN4 IF NOT SPECIFIED DEVICE
- SA2 MSTBUF+ACGL
- SX6 20B
- BX6 X6*X2
- NZ X6,FDN5 IF *ERROR IDLE*
- SA2 MSTBUF+DALL
- SX6 3
- LX6 56-0
- BX6 X6*X2
- NZ X6,FDN5 IF DEVICE STATE IS NOT *ON*
- SX6 B2 SET EST ORDINAL
- SX2 ESTE
- IX6 X6/X2
- EQ FDNX RETURN
- FDNA CON 0 SPECIFIED FAMILY/DEVICE NUMBER
- FDNB BSS ESMX*ESTE BUFFER FOR EST
- FDNC CON 0 LAST MS ORDINAL + 1
- ICF SPACE 4,20
- ** ICF - INITIALIZE CATALOG FILE.
- *
- * ENTRY (DN) = DEVICE NUMBER.
- * (FM) = FAMILY OR PACKNAME.
- *
- * EXIT (EI) = RSA OF IAPF CHAIN EOI.
- * (EQ) = EST ORDINAL.
- * (CC) = NUMBER OF CATALOG TRACKS.
- * PF UTILITY INTERLOCK SET.
- * CATALOG AND DATA FILES OPENED.
- * TO *ERR* IF ERROR.
- *
- * USES X - ALL.
- * A - 1, 2, 3, 6, 7.
- *
- * CALLS FDN.
- *
- * MACROS CALLPFU, REPRIEVE, RETURN, SKIPEI.
- ICF SUBR ENTRY/EXIT
- RETURN C,R
- RETURN I,R
- RETURN O,R
- SA1 DN
- SA2 FM
- LX1 12
- BX1 X1+X2
- RJ FDN READ MST FOR DEVICE
- SX0 ICFA * INCORRECT DEVICE/FAMILY.*
- NZ X1,ERR IF ERROR
- SA2 MSTBUF+PUGL
- SA1 MSTBUF+MDGL
- LX1 59-58
- SA3 PN
- ZR X3,ICF1 IF NO PACKNAME SPECIFIED
- NG X1,ICF3 IF AN AUXILIARY DEVICE
- SX0 ICFB * PACKNAME NOT FOUND.*
- EQ ERR ABORT
- ICF1 PL X1,ICF2 IF FAMILY DEVICE
- SX0 ICFC * FAMILY NOT FOUND.*
- EQ ERR ABORT
- ICF2 MX0 -8
- BX2 -X0*X2
- NZ X2,ICF3 IF A MASTER DEVICE
- SX0 ICFD * NOT A MASTER DEVICE.*
- EQ ERR ABORT
- ICF3 SA6 EQ SAVE EST ORDINAL
- SX7 IF
- LX6 48
- BX7 X6+X7
- SA7 C+FTPM
- SX6 1
- SA6 DF FORCE FL DUMP
- REPRIEVE RPVA,SETUP,RPVC SET REPRIEVE PROCESSING
- CALLPFU C,CTSU,R SET UTILITY INTERLOCK
- SA1 MSTBUF+ALGL
- AX1 12
- MX0 -12
- BX6 -X0*X1 CATALOG TRACK COUNT
- SA6 CC
- AX1 24
- BX1 -X0*X1
- BX6 X1
- LX6 12
- BX6 X6+X1 BUILD FST FOR CATALOG CHAIN
- LX6 24
- SX1 5
- BX6 X6+X1
- SA1 EQ
- LX1 48
- BX6 X6+X1
- SA6 C+FTPM
- CALLPFU C,CTOP,R OPEN CATALOG FILE
- SA1 MSTBUF+ALGL
- MX0 12
- BX6 X0*X1 BUILD FST FOR IAPF CHAIN
- LX6 -12
- BX4 X6
- LX4 -12
- BX6 X4+X6
- SA1 EQ
- LX1 48
- BX6 X1+X6
- SX3 5
- BX5 X3+X6
- SA6 I+FTPM
- SA6 O+FTPM
- CALLPFU I,CTOP,R OPEN INPUT FILE
- CALLPFU O,CTOP,R OPEN OUTPUT FILE
- SKIPEI O,R
- SA1 O+6
- AX1 30
- SX6 B1
- IX6 X6+X1
- SA6 EI SET IAPF CHAIN EOI RSA
- EQ ICFX RETURN
- ICFA DATA C* INCORRECT DEVICE/FAMILY.*
- ICFB DATA C* PACKNAME NOT FOUND.*
- ICFC DATA C* FAMILY NOT FOUND.*
- ICFD DATA C* NOT A MASTER DEVICE.*
- KDP SPACE 4,15
- ** KDP - *K* DISPLAY PRESET.
- *
- * EXIT DISPLAY PRESET WITH STATIC VALUES.
- *
- * USES A - 0, 1, 2, 6.
- * X - 0, 1, 2, 6.
- *
- * CALLS COD, FSM, ZTB.
- *
- * MACROS CONSOLE, MESSAGE.
- KDP SUBR ENTRY/EXIT
- SA1 EQ
- RJ COD
- SA6 KDLSL
- SA1 FM
- ZR X1,KDP3 IF NO FAMILY NAME
- RJ ZTB
- MX0 -6
- KDP1 BX2 -X0*X1
- NZ X2,KDP2 IF NAME RIGHT JUSTIFIED
- LX1 -6
- LX6 -6
- EQ KDP1 LOOP
- KDP2 SA6 KDLSM
- KDP3 SA1 PN
- ZR X1,KDP6 IF NO PACKNAME
- RJ ZTB
- MX0 -6
- KDP4 BX2 -X0*X1
- NZ X2,KDP5 IF NAME RIGHT JUSTIFIED
- LX1 -6
- LX6 -6
- EQ KDP4 LOOP
- KDP5 SA6 KDLSN
- SA2 KDPB BLANK WORD
- BX6 X2
- SA6 KDLSM CLEAR FM IF AUXILIARY PACK
- KDP6 SA1 DN
- RJ COD
- SA6 KDLSO
- SA1 DB
- RJ COD
- SA6 KDLSQ
- SA1 MR
- RJ COD
- SA6 KDLSR
- SA2 =H* YES*
- BX6 X2
- SA1 EF
- ZR X1,KDP7 IF EXACT FIT NOT REQUIRED
- SA6 KDLSS
- KDP7 SA1 NC
- ZR X1,KDP8 IF NO CHANGE NOT REQUESTED
- SA6 KDLST
- KDP8 SA1 NM
- ZR X1,KDP9 IF NO MOVE NOT REQUESTED
- SA6 KDLSU
- KDP9 SA1 NF
- ZR X1,KDP10 IF NO FILL MOVE NOT REQUESTED
- SA6 KDLSV
- KDP10 SA1 NS
- ZR X1,KDP11 IF NO SLIDE MOVE NOT REQUESTED
- SA6 KDLSW
- KDP11 SA1 NP
- ZR X1,KDP12 IF NO PREMOVE DELINK NOT REQUESTED
- SA6 KDLSX
- KDP12 SA1 OF ONSET FILES
- SA0 KDLSZ
- RJ FSM
- SA1 OH ONSET HOLES
- SA0 KDLS0
- RJ FSM
- SA1 FW FLAW FILES ENCOUNTERED
- SA0 KDLS8
- RJ FSM
- CONSOLE KDS REQUEST *K* DISPLAY
- MESSAGE KDPA,2,R CLEAR MESSAGE
- EQ KDPX RETURN
- KDPA DATA 0 BLANK MESSAGE
- KDPB DATA H* * BLANK WORD
- PAG SPACE 4,15
- ** PAG - PROCESS COMMAND ARGUMENTS.
- *
- * EXIT TO *ERR* IF ERROR.
- *
- * USES X - 0, 1, 2, 4, 5, 6.
- * A - 1, 2, 4, 5, 6.
- * B - 4, 5, 7.
- *
- * CALLS ARG, DXB, RJA.
- *
- * MACROS RTIME.
- PAG SUBR ENTRY/EXIT
- SB5 TARG TABLE OF COMMAND ARGUMENTS
- SA1 ACTR
- SB4 X1
- SA4 ARGR
- RJ ARG PROCESS ARGUMENTS
- SX0 PAGA * INCORRECT ARGUMENT.*
- NZ X1,ERR IF ARG ERRORS
- SA5 DN
- SB7 B0 ASSUME OCTAL CONVERSION
- RJ DXB
- SX0 PAGB * PARAMETER DN ARGUMENT ERROR.*
- NZ X4,ERR IF CONVERSION ERRORS
- SA6 DN
- SA5 IX
- SB7 B0 ASSUME OCTAL CONVERSION
- RJ DXB
- SX0 PAGC * PARAMETER IX ARGUMENT ERROR.*
- NZ X4,ERR IF CONVERSION ERRORS
- SA6 IX
- SA5 TL
- ZR X5,PAG1 IF NO TIME LIMIT SPECIFIED
- SB7 1 ASSUME DECIMAL CONVERSION
- RJ DXB
- SX0 PAGD * PARAMETER TL ARGUMENT ERROR.*
- NZ X4,ERR IF CONVERSION ERRORS
- BX5 X6
- LX5 36
- RTIME TL
- SA2 TL
- IX6 X2+X5
- SA6 A2 SET TIME TO QUIT
- PAG1 SA5 MR
- SB7 B0 ASSUME OCTAL CONVERSION
- RJ DXB
- SX0 PAGE * PARAMETER MR ARGUMENT ERROR.*
- NZ X4,ERR IF CONVERSION ERRORS
- SA6 A5
- SA1 PN
- ZR X1,PAG2 IF NO PACKNAME
- BX6 X1
- SA6 FM SET FAMILY = PACKNAME
- PAG2 SA1 NM
- ZR X1,PAG3 IF NO MOVE NOT REQUESTED
- SX6 B1+
- SA6 NF FORCE NO FILL
- SA6 NS FORCE NO SLIDE
- PAG3 SA5 DB
- ZR X5,PAG4 IF DEBUG NOT SPECIFIED
- SB7 B0 ASSUME OCTAL CONVERSION
- RJ DXB
- SX0 PAGF * PARAMETER DEBUG ARGUMENT ERROR.*
- NZ X4,ERR IF CONVERSION ERRORS
- SA6 DB
- LX6 59-1
- PL X6,PAG4 IF RJ TRACE NOT SPECIFIED
- SX1 B1
- RJ RJA ACTIVATE RJ TRACE
- PAG4 EQ PAGX RETURN
- PAGA DATA C* INCORRECT ARGUMENT.*
- PAGB DATA C* PARAMETER DN ARGUMENT ERROR.*
- PAGC DATA C* PARAMETER IX ARGUMENT ERROR.*
- PAGD DATA C* PARAMETER TL ARGUMENT ERROR.*
- PAGE DATA C* PARAMETER MR ARGUMENT ERROR.*
- PAGF DATA C* PARAMETER DEBUG ARGUMENT ERROR.*
- * TARG - TABLE OF COMMAND ARGUMENTS.
- TARG BSS 0
- DEBUG ARG TARC,DB
- DN ARG DN,DN
- EF ARG -TARA,EF
- FM ARG FM,FM
- IX ARG IX,IX
- MR ARG TARC,MR
- NC ARG -TARA,NC
- NF ARG -TARA,NF
- NM ARG -TARA,NM
- NP ARG -TARA,NP
- NS ARG -TARA,NS
- PN ARG PN,PN
- TL ARG TARB,TL
- CON 0
- * ASSUMED VALUES FOR COMMAND ARGUMENTS.
- TARA DATA 1
- TARB DATA 0L300D
- TARC DATA 0L377777B
- SCT SPACE 4,15
- ** SCT - SCAN CATALOG TRACKS.
- *
- * EXIT TO *ERR* IF ERROR.
- *
- * USES X - ALL.
- * A - 1, 2, 3, 4, 6, 7.
- *
- * CALLS MSG.
- *
- * MACROS ADDWRD, CALLPFU, READ, READW, STATUS, SYSTEM.
- SCT SUBR ENTRY/EXIT
- SA1 MSTBUF+MDGL
- SA2 MSTBUF+ALGL
- MX0 -12
- LX2 12
- BX7 -X0*X1 SECTOR LIMIT
- BX6 -X0*X2 FIRST TRACK OF IAPF CHAIN
- SA7 SL SET SECTORS/TRACK
- SA6 FT SET FIRST TRACK OF IAPF CHAIN
- SX0 64D/NWCE*NWCE/8 PFC-S PER SECTOR (8 WORD PARCELS)
- ERRNZ NWCE/8*8-NWCE *NWCE* NOT EVENLY DIVISIBLE BY EIGHT
- IX7 X0*X7
- SA7 SCTA CATALOG ENTRIES PER TRACK (8 WORD PARCELS)
- SX0 SCTC * CREATING CATALOG TRACK TABLES.*
- RJ MSG
- SA1 FT FIRST TRACK OF THE IAPF CHAIN
- MX2 2 FLAGS FOR THE IAPF CHAIN ANCHOR ENTRY
- LX2 59-60
- LX1 12
- BX0 X1 (X0) IS UNCHANGED BY ADDWRD
- BX1 X2+X1
- SX6 MXCT MAXIMUM CATALOG TRACK + 1
- LX6 24+18
- BX1 X1+X6 *TFRI* ANCHOR ENTRY
- ADDWRD TFRI,X1
- SA1 LT
- NZ X1,SCT1 IF *TFHL* TABLE IS NOT ACTIVE
- BX1 X0 ANCHOR LENGTH IS ZERO (JUST SS AND EOI)
- ADDWRD TFHL,X1
- SCT1 SA1 CN
- SA2 CC
- SX6 X1+B1
- IX2 X2-X6
- ZR X2,SCTX IF NO MORE TRACKS
- SA6 A1
- CALLPFU C,CTAC,R ADVANCE CATALOG TRACK
- STATUS C,P BUILD FST ENTRY FOR THIS TRACK
- * NOTE - OVERFLOW PROCESSING ASSUMES THAT CATALOG TRACKS
- * HAVE FULL SECTORS.
- SA1 C+6
- LX1 36
- AX1 48
- SX0 SCTD * CATALOG FST CURRENT SECTOR .NE. ZERO.*
- NZ X1,ERR IF NOT ZERO
- SA1 A1 REFETCH FST FROM FET
- SX7 5
- MX6 48
- BX1 X1*X6
- BX1 X1+X7
- BX7 X1
- SA7 SCTB BASE CATALOG TRACK ENTRY (FOR OVERFLOW)
- ADDWRD TCAT,X1
- SX7 B0+ CLEAR FET+6
- SA7 C+6
- SA7 SCTB+1 CLEAR OVERFLOW TRACK NUMBER
- SX5 -NWCE/8 (CATALOG ENTRY IN 8 WORD PARCELS)
- READ C
- SCT2 READW C,WBUF,NWCE
- SX5 X5+NWCE/8 (CATALOG ENTRY IN 8 WORD PARCELS)
- NZ X1,SCT1 IF EOI ON TRACK
- SA1 SCTA CATALOG ENTRIES PER TRACK (8 WORD PARCELS)
- IX1 X5-X1
- NG X1,SCT3 IF STILL ON SAME TRACK
- SA1 SCTB+1 INCREMENT OVERFLOW TRACK NUMBER
- SX6 X1+B1
- SA6 A1
- SYSTEM MPF,R,SCTB,6S6 GET OVERFLOW TRACK FST
- SA1 SCTB+2
- SX5 B0 RESET TO FIRST ENTRY ON TRACK
- ADDWRD TCAT,X1
- SA1 CN INCREMENT CURRENT TRACK NUMBER
- SA2 CC INCREMENT NUMBER OF CATALOG TRACKS
- SX6 X1+B1
- SX7 X2+B1
- SA6 A1
- SX1 X6-MXCT
- SX0 SCTE * TOO MANY OVERFLOW CATALOG TRACKS.*
- PL X1,ERR IF TOO MANY TRACKS FOR THE FIELD SIZE
- SA7 A2
- SCT3 SA1 WBUF+FCUI
- SA4 A1+B1
- ERRNZ 1-FCUI-FCBS CODE DEPENDS ON *FCUI*, *FCBS* VALUES
- ERRNZ FCBT-FCBS CODE DEPENDS ON *FCBT*, *FCBS* VALUES
- ERRNZ FCBT-FCLF CODE DEPENDS ON *FCBT*, *FCLF* VALUES
- LX4 59-11
- NG X4,SCT7 IF DIRECT ACCESS FILE
- MX2 -12 CHECK FOR ZERO TRACK
- BX2 -X2*X4
- ZR X2,SCT2 IF DISK SPACE RELEASED
- SA2 CN
- LX2 24+18
- SX7 X5+
- LX7 24
- PX7 X7
- BX7 X7+X2
- MX3 -18
- BX3 -X3*X1 USER INDEX
- NZ X3,SCT4 IF FILE (NOT HOLE)
- MX3 1 SET HOLE FLAG
- BX7 X7+X3
- EQ SCT5 ISOLATE HOLE FLAG
- SCT4 SX3 X3-IFUI CHECK IF CATALOGED UNDER *IFUI*
- NZ X3,SCT5 IF NOT A FLAWED SECTOR CHAIN
- SX3 B1 SET IMMOVABLE FILE FLAG
- LX3 57-0
- BX7 X7+X3
- SA3 WBUF+FCLF GET LENGTH
- MX6 -24
- LX3 24
- BX6 -X6*X3 FLAW LENGTH
- SX3 B1
- LX6 30
- IX6 X6+X3 30/ LENGTH,30/ COUNT
- SA3 FW
- IX6 X6+X3
- SA6 A3
- SCT5 LX4 11-59
- MX3 -24
- BX0 -X3*X4 (X0 IS UNCHANGED BY ADDWORD)
- BX1 X0+X7
- MX3 1
- BX3 X3*X7 ISOLATE HOLE FLAG
- BX0 X0+X3 SAVE HOLE FLAG
- ADDWRD TFRI,X1
- SA2 OF ONSET FILES
- PL X0,SCT6 IF FILE
- SA2 OH ONSET HOLES
- SCT6 MX3 1
- BX0 -X3*X0 REMOVE HOLE FLAG
- SA1 WBUF+FCLF
- MX3 24
- BX1 X3*X1
- BX1 X0+X1 24/ LENGTH,12/ 0,12/ TK,12/ SC
- BX6 X1*X3 LENGTH
- LX6 30-36+60
- SX3 B1
- IX6 X6+X3 30/ LENGTH,30/ COUNT
- IX6 X6+X2
- SA6 A2 UPDATE (OF) OR (OH)
- SA2 LT CHECK IF *TFHL* TABLE IS ACTIVE
- NZ X2,SCT2 IF *TFHL* IS NOT ACTIVE
- ADDWRD TFHL,X1
- EQ SCT2 LOOP
- SCT7 MX3 -18
- BX3 -X3*X1
- NZ X3,SCT2 IF DIRECT ACCESS FILE IN USE
- SA2 CN
- MX3 1
- LX2 24+18
- SX1 X5+
- LX1 24
- PX1
- BX1 X1+X2
- BX1 X1+X3 SET HOLE BIT
- ADDWRD TAPE,X1 TABLE OF AVAILABLE PFC ENTRIES
- EQ SCT2 LOOP
- SCTA CON 0 CATALOG ENTRIES PER TRACK (8 WORD PARCELS)
- SCTB BSS 0 *MPF* PARAMETER BLOCK (FN=6)
- CON 0 BASE CATALOG TRACK FST
- CON 0 NUMBER OF OVERFLOW TRACK WHOSE FST IS DESIRED
- CON 0 OVERFLOW TRACK FST (RETURNED)
- * (12/EQ,12/FT,12/FT,12/0,12/5)
- SCTC DATA C/ CREATING CATALOG TRACK TABLES./
- SCTD DATA C/ CATALOG FST CURRENT SECTOR .NE. ZERO./
- SCTE DATA C* TOO MANY OVERFLOW CATALOG TRACKS.*
- SRA SPACE 4,15
- ** SRA - SET RANDOM ADDRESS.
- *
- * ENTRY (X5) = 36/ ,12/ TK, 12/ SC.
- *
- * EXIT (X6) = RANDOM SECTOR ADDRESS.
- * TO *ERR* IF ERROR.
- *
- * USES X - ALL.
- * A - 1, 3, 4, 7.
- * B - 6, 7.
- SRA3 BX4 -X0*X1
- IX6 X4-X2
- NG X6,SRA2 IF NOT ON CHAIN
- IX6 X7+X2
- LX7 12
- BX7 X7+X4
- SA7 A1 PRESET LENGTH
- SRA SUBR ENTRY/EXIT
- MX0 -12
- BX2 -X0*X5 SECTOR
- AX5 12
- BX5 -X0*X5 TRACK
- SB7 59-11 SHIFT FOR TRACK BIT
- SA1 F.TTLT
- SB6 X1-1S11 FWA - 4000B
- SA4 FT FIRST TRACK OF IAPF CHAIN
- SA3 SL SECTORS/TRACK
- BX7 X7-X7
- SA1 B6+X5
- BX6 X0*X1
- ZR X6,SRA1 IF LENGTH NOT PREDETERMINED
- BX7 X6 PRECALCULATED LENGTH
- AX7 12
- EQ SRA3 SET RSA AND EXIT
- SRA1 SA1 B6+X4
- BX6 X4-X5
- ZR X6,SRA3 IF TRACK LOCATED
- IX7 X7+X3
- LX6 X1,B7
- PL X6,SRA2 IF END OF CHAIN
- BX4 -X0*X1
- EQ SRA1 LOOP
- SRA2 SX0 SRAA * DISK ADDRESS NOT ON CHAIN.*
- EQ ERR ABORT
- SRAA DATA C* DISK ADDRESS NOT ON CHAIN.*
- SST SPACE 4,30
- ** SST - SHELL SORT TABLE.
- *
- * *SST* SORTS A TABLE USING A SHELL SORTING TECHNIQUE.
- * THE TABLE IS SORTED IN PLACE INTO ASCENDING ORDER.
- * ALL ELEMENTS SHOULD BE OF THE SAME SIGN.
- *
- * ORIGIN OF TECHNIQUE IS CACM VOL 6 NUMBER 5 MAY 1963, P209.
- * FIRST CODED BY R. HOTCHKISS IN *SORT1*.
- * REVISED BU L. A. LIDDIARD.
- * MODIFIED TO PERFORM MASKED SORT BY D. F. LINTON
- * AND C. A. LACEY, 1975.
- *
- * ENTRY (B7) = ADDRESS OF TABLE TO BE SORTED.
- * (X1) = NUMBER OF ELEMENTS IN ARRAY.
- *
- * EXIT TABLE SORTED.
- *
- * USES X - 0, 1, 2, 3, 4, 6, 7.
- * B - 2, 3, 4, 5.
- * A - 1, 2, 6, 7.
- SST1 SA7 B5-B4 T(J+K) = S
- SB2 B2+B1 I = I+1
- EQ B2,B3,SST4 IF END OF TABLE
- SST2 SA2 B2+ S = T(I)
- SB5 B2+B4 J = I-K
- BX7 X2
- SST3 SA1 B5+
- BX2 -X0*X2
- BX6 X1
- BX1 -X0*X1
- IX3 X2-X1 COMPARE S AND T(J)
- PL X3,SST1 IF ELEMENTS IN ORDER
- SB5 B5+B4 J = J-K
- SA6 A1-B4
- GE B5,B7,SST3 IF J .NE. FIRST
- EQ SST1 CONTINUE
- SST4 AX4 1 K = K/2
- SB4 X4+ (B4) = -K
- SB2 B7-B4 I = FIRST+K
- NZ X4,SST2 IF K .NE. 0
- SST SUBR ENTRY/EXIT
- MX0 -24
- MX4 12 K = 2**(ENTIER(LOG2(COUNT)+1)
- SB3 B7+X1 (B3) = LAST+1
- NX6,B2 X1
- AX4 X4,B2
- EQ SST4 BEGIN SORTING
- SPACE 4,10
- * PRESET COMMON DECKS.
- *CALL COMCARG
- *CALL COMCCPM
- *CALL COMCDXB
- *CALL COMCRDW
- SPACE 4,10
- QUAL *
- PRS EQU /PRS/PRS
- SPACE 4,10
- ERRNG RFL=-* INITIAL FIELD LENGTH TOO SHORT
- SPACE 4
- END
cdc/nos2.source/opl871/packer.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator