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