.
. COMPLETION PROCESSING
.
.
. (C) Copyright 1972-1978 John Walker
.
. This software is in the public domain
.
AXR$
DEFUNCT$
FANG
PURE CODE
.
COMPLETE* LX X5,CDIMG,X8 LOAD ADDRESS OF ATTACHED IMAGE BUFFER
SZ SHADUP CLEAR OUTPUT SUPPRESSED
JNOL 'E',NOIBP PRINT COMMAND COMPLETIONS ?
R$DIT . YES. SET UP EDITOR
JNDEM BATEM EDIT BATCH FORMAT MESSAGE ?
LMJ X6,ESN EDIT STATEMENT NUMBER
E$CHAR 'E' EDIT ENDING FLAG
E$SKIP 1 SKIP A SPACE
YIBBER E$COPY 80,IMIMG,X5,U COPY IMAGE TO LINE
R$PRTX 1 PRINT AND TERMINATE EDITING
NOIBP BRELP X5 RELEASE IMAGE BUFFER
LA,U A6 CLEAR A6 TO FREE CODE
LA A7,CDBACT,X8 LOAD COMMAND ENTRY POINT
TNZ CDBACT,X8 DID AN ERROR OCCUR DURING PROCESSING ?
LA,U A6,2 YES. LOAD ROADBLOCKED CODE
LA A0,CDOPTS,X8 LOAD OPTION BITS
TEP A0,(OPTION('C')) IS 'C' OPTION ON ?
LA,U A6 YES. DON'T ROADBLOCK FILES
LX X10,CDBPC,X8 LOAD HEAD OF PARAMETER CHAIN
PARDEX TNZ X10 END OF PARAMETER CHAIN ?
J PAROOP YES. GO TO NEXT COMPLETE PHASE
LA A2,PBTYPE,X10 LOAD TYPE OF THIS PARAMETER
TNE,U A2,BLOCK IS IT A BLOCK BUFFER ?
J PRDX2 YES. IT NEEDS TO BE CLEARED ALSO
TE,U A2,FILE SPECIAL FILE PROCESSING REQUIRED ?
J PRDX1 NO. GO AND RELEASE PARAMETER
PRDX2 P FISTAT INVOKE FILE STATUS PROTECTION
LA A0,PBVAL,X10 LOAD FDT POINTER
LA A3,A6 LOAD COMPLETION STATUS FOR COMMAND
TNE,U A2,BLOCK IS PARAMETER A BLOCK ?
LA,U A3 YES. NEVER ROADBLOCK A BLOCK
LA A1,FDREADC,A0 LOAD READ IN-PROGRESS COUNT
JZ A1,PRDX3 IF ZERO, OPERATION WAS A WRITE-TYPE
ANA,U A1,1 DECREMENT READ IN-PROGRESS COUNT
SA A1,FDREADC,A0 UPDATE READ COUNT IN FDT
ON DEBUG
TZ FDWRITE,A0 IS WRITE LOCK SET ?
IERR . YES. READ AND WRITE SET AT ONCE
OFF DEBUG
JZ A1,PRDX4 IF NOW ZERO, FDT IS AVAILABLE FOR
. WRITE CLASS OPERATIONS. CLEAR BUSY.
TZ A3 DID COMMAND ERROR ?
SA A3,FDLOCK,A0 YES. ROADBLOCK EVEN IF OTHER READS
. ARE CURRENTLY OUTSTANDING.
J PRDX5 PROCESS NEXT PARAMETER IN CHAIN
.
PRDX3 .
ON DEBUG
LA A1,FDLOCK,A0 LOAD STATUS OF FILE
TE,U A1,1 BUSY OR ROADBLOCKED ?
J PRDX6 ROADBLOCKED. IT IS PERMISSIBLE THAT
. NEITHER THE READ NOR THE WRITE COUNTS
. BE UP ON A FILE IF IS ROADBLOCKED BEFORE
. GETTING HERE, AS THE DISPATCHER ROUTES
. COMMANDS TO BE SKIPPED TO ROADBLOCK
. WITHOUT INCREMENTING EITHER COUNT.
. NOTE THAT THIS TEST ALSO HANDLES THE
. CASE OF A FILE WHICH IS USED MORE THAN
. ONCE IN A COMMAND AND IS AVAILABLE WHEN
. WE GET HERE BECAUSE COMPLETE HAS ALREADY
. DECREMENTED THE COUNTS.
TNZ FDWRITE,A0 IS WRITE LOCK UP ?
IERR . NO. NEITHER READ NOR WRITE SET AT
. COMMAND COMPLETION TIME.
PRDX6 .
OFF DEBUG
SZ FDWRITE,A0 CLEAR WRITE LOCK
PRDX4 LA A1,FDLOCK,A0 LOAD CURRENT FDT STATUS
TE,U A7,COMPLETE WAS THIS THE 'CLEAR' COMMAND ?
TE,U A1,2 IS FILE CURRENTLY ROADBLOCKED ?
SA A3,FDLOCK,A0 NO. SET TERMINATION STATUS FOR THIS
. COMMAND IN THE FDT
PRDX5 V FISTAT CLEAR THE FACILITY STATUS LOCK
PRDX1 LA,U A0,,X10 LOAD ADDRESS OF THIS PARAMETER
LX X10,PBLINK,X10 LINK TO NEXT PARAMETER
BRELP A0 RELEASE THE LAST PARAMETER
J PARDEX EXAMINE THE NEW PARAMETER
PAROOP P CMDLOCK LOCK COMMAND TABLES
. UNLINK FROM IN PROCESS QUEUE
LA A0,QFL,X8 LOAD LINK TO NEXT IN-PROCESS COMMAND
LA A1,QHL,X8 LOAD LINK TO PREVIOUS COMMAND
SA A0,QFL,A1 CHAIN NEXT TO PREVIOUS
SA A1,QHL,A0 CHAIN PREVIOUS TO NEXT
LA A0,OUTSTANDING LOAD OUTSTANDING COUNT
ANA,U A0,1 COUNT IT DOWN
SA A0,OUTSTANDING PUT IT BACK
V CMDLOCK CLEAR COMMAND TABLE LOCK
LA A0,CDPATCH,X8 LOAD PATCH BUFFER POINTER
JZ A0,RELMB ANY PATCH BUFFER TO RELEASE ?
BRELP A0 YES. RELEASE THE PATCH BUFFER
RELMB LA A0,CDMASK,X8 LOAD THE MASK BUFFER ADDRESS
JZ A0,RELCB ANY MASK BUFFER ALLOCATED ?
BRELP A0 YES. RELEASE IT
RELCB BRELP X8 RELEASE COMMAND BUFFER
ON DYNMEM
ON INTERSITE
TNZ LINEACTV ANY COMMUNICATIONS LINE ACTIVE ?
OFF INTERSITE
BRELC . RELEASE UNUSED MEMORY VIA LCORE$
OFF DYNMEM
TZ CLOSING ARE WE IN TERMINATION MODE ?
J CLOSEX YES. INFORM THE VULTURE
CLOSER V HAPPEN CYCLE THE DISPATCHER
V CONCUR DECREMENT CONCURRENCY LOCK
EXIT . ALL DONE WITH THIS COMMAND
.
CLOSEX V COMPLETED INFORM OF COMPLETION
J CLOSER JOIN CLOSE PROCESSING
.
BATEM E$MSG COMPEM EDIT 'COMPLETED'
LMJ X6,ESN EDIT STATEMENT NUMBER
E$COL TXCOL TAB TO TEXT COLUMN
J YIBBER ENTER COPY AND PRINT CODE
.
PURE DATA
COMPEM 'COMPLETED !'
END