. . 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